Skip to content

[AutoPR @azure-arm-relationships]-generated-from-SDK Generation - JS-6103938#37954

Open
azure-sdk wants to merge 1 commit intomainfrom
sdkauto/@azure-arm-relationships-6103938
Open

[AutoPR @azure-arm-relationships]-generated-from-SDK Generation - JS-6103938#37954
azure-sdk wants to merge 1 commit intomainfrom
sdkauto/@azure-arm-relationships-6103938

Conversation

@azure-sdk
Copy link
Copy Markdown
Collaborator

@azure-sdk azure-sdk commented Apr 3, 2026

Configurations: 'specification/relationships/Relationships.Management/tspconfig.yaml', API Version: 2023-09-01-preview, SDK Release Type: beta, and CommitSHA: '843ab81f0fb6e0d22bca64e1c73ffe64d1681ca9' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6103938 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. Release plan link: https://web.powerapps.com/apps/821ab569-ae60-420d-8264-d7b5d5ef734c?release-plan-id=3d3b63e5-bc2c-f111-88b4-000d3a597585 Submitted by: meghanagupta@microsoft.com

Release Plan Details

…/tspconfig.yaml', API Version: 2023-09-01-preview, SDK Release Type: beta, and CommitSHA: '843ab81f0fb6e0d22bca64e1c73ffe64d1681ca9' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6103938 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release.
@github-actions github-actions bot added the Mgmt This issue is related to a management-plane library. label Apr 3, 2026
@meghanagupta95 meghanagupta95 marked this pull request as ready for review April 3, 2026 06:13
Copilot AI review requested due to automatic review settings April 3, 2026 06:13
@meghanagupta95 meghanagupta95 requested review from a team and JialinHuang803 as code owners April 3, 2026 06:13
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 3, 2026

API Change Check

APIView identified API level changes in this PR and created the following API reviews

@azure/arm-relationships

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new TypeSpec-generated ARM management package @azure/arm-relationships (beta) for the Microsoft.Relationships resource provider (api-version 2023-09-01-preview), along with CI wiring, samples, API reports, and repo metadata updates needed for integration in the monorepo.

Changes:

  • Introduces the new sdk/relationships/arm-relationships package (client, models, static helpers, tests, samples, API reports, and build config).
  • Adds service-directory CI pipeline definition for relationships.
  • Updates repo-wide metadata (lockfile, link ignore list, CODEOWNERS) to include the new package.

Reviewed changes

Copilot reviewed 85 out of 86 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
sdk/relationships/ci.mgmt.yml Adds CI pipeline for relationships
sdk/relationships/arm-relationships/warp.config.yml Warp build/export configuration
sdk/relationships/arm-relationships/vitest.esm.config.ts Vitest ESM config
sdk/relationships/arm-relationships/vitest.config.ts Vitest base config
sdk/relationships/arm-relationships/vitest.browser.config.ts Vitest browser config
sdk/relationships/arm-relationships/tsp-location.yaml Tracks TypeSpec source location
sdk/relationships/arm-relationships/tsconfig.test.node.json Node test TS config
sdk/relationships/arm-relationships/tsconfig.test.json Test references config
sdk/relationships/arm-relationships/tsconfig.src.json Source TS config
sdk/relationships/arm-relationships/tsconfig.snippets.json Snippets TS config
sdk/relationships/arm-relationships/tsconfig.samples.json Samples TS config
sdk/relationships/arm-relationships/tsconfig.json TS project references
sdk/relationships/arm-relationships/tsconfig.browser.config.json Browser typings path mapping
sdk/relationships/arm-relationships/test/snippets.spec.ts Snippet source for docs
sdk/relationships/arm-relationships/test/public/utils/recordedClient.ts Test-recorder helper
sdk/relationships/arm-relationships/test/public/sampleTest.spec.ts Basic public test scaffold
sdk/relationships/arm-relationships/src/static-helpers/urlTemplate.ts RFC6570 URL template helper
sdk/relationships/arm-relationships/src/static-helpers/pollingHelpers.ts LRO poller helper
sdk/relationships/arm-relationships/src/static-helpers/pagingHelpers.ts Paging iterator helper
sdk/relationships/arm-relationships/src/static-helpers/cloudSettingHelpers.ts Cloud endpoint selection helper
sdk/relationships/arm-relationships/src/restorePollerHelpers.ts Restore LRO poller helper
sdk/relationships/arm-relationships/src/relationshipsClient.ts Public client wrapper
sdk/relationships/arm-relationships/src/models/models.ts Generated models + ser/de
sdk/relationships/arm-relationships/src/models/index.ts Models barrel exports
sdk/relationships/arm-relationships/src/logger.ts Package logger
sdk/relationships/arm-relationships/src/index.ts Package entrypoint exports
sdk/relationships/arm-relationships/src/classic/serviceGroupMemberRelationships/index.ts Classic op-group wrapper
sdk/relationships/arm-relationships/src/classic/operations/index.ts Classic op-group wrapper
sdk/relationships/arm-relationships/src/classic/index.ts Classic barrel exports
sdk/relationships/arm-relationships/src/classic/dependencyOfRelationships/index.ts Classic op-group wrapper
sdk/relationships/arm-relationships/src/api/serviceGroupMemberRelationships/options.ts Options types (serviceGroupMember)
sdk/relationships/arm-relationships/src/api/serviceGroupMemberRelationships/operations.ts REST ops (serviceGroupMember)
sdk/relationships/arm-relationships/src/api/serviceGroupMemberRelationships/index.ts REST op-group exports
sdk/relationships/arm-relationships/src/api/relationshipsContext.ts REST client context factory
sdk/relationships/arm-relationships/src/api/operations/options.ts Options types (operations list)
sdk/relationships/arm-relationships/src/api/operations/operations.ts REST ops (operations list)
sdk/relationships/arm-relationships/src/api/operations/index.ts REST op-group exports
sdk/relationships/arm-relationships/src/api/index.ts REST API barrel exports
sdk/relationships/arm-relationships/src/api/dependencyOfRelationships/options.ts Options types (dependencyOf)
sdk/relationships/arm-relationships/src/api/dependencyOfRelationships/operations.ts REST ops (dependencyOf)
sdk/relationships/arm-relationships/src/api/dependencyOfRelationships/index.ts REST op-group exports
sdk/relationships/arm-relationships/samples/v1-beta/typescript/tsconfig.json TS samples project config
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/serviceGroupMemberRelationshipsGetSample.ts TS sample: get serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/serviceGroupMemberRelationshipsDeleteSample.ts TS sample: delete serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/serviceGroupMemberRelationshipsCreateOrUpdateSample.ts TS sample: createOrUpdate serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/operationsListSample.ts TS sample: list operations
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/dependencyOfRelationshipsGetSample.ts TS sample: get dependencyOf
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/dependencyOfRelationshipsDeleteSample.ts TS sample: delete dependencyOf
sdk/relationships/arm-relationships/samples/v1-beta/typescript/src/dependencyOfRelationshipsCreateOrUpdateSample.ts TS sample: createOrUpdate dependencyOf
sdk/relationships/arm-relationships/samples/v1-beta/typescript/sample.env TS sample env template
sdk/relationships/arm-relationships/samples/v1-beta/typescript/README.md TS samples README
sdk/relationships/arm-relationships/samples/v1-beta/typescript/package.json TS samples package manifest
sdk/relationships/arm-relationships/samples/v1-beta/javascript/serviceGroupMemberRelationshipsGetSample.js JS sample: get serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/javascript/serviceGroupMemberRelationshipsDeleteSample.js JS sample: delete serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/javascript/serviceGroupMemberRelationshipsCreateOrUpdateSample.js JS sample: createOrUpdate serviceGroupMember
sdk/relationships/arm-relationships/samples/v1-beta/javascript/sample.env JS sample env template
sdk/relationships/arm-relationships/samples/v1-beta/javascript/README.md JS samples README
sdk/relationships/arm-relationships/samples/v1-beta/javascript/package.json JS samples package manifest
sdk/relationships/arm-relationships/samples/v1-beta/javascript/operationsListSample.js JS sample: list operations
sdk/relationships/arm-relationships/samples/v1-beta/javascript/dependencyOfRelationshipsGetSample.js JS sample: get dependencyOf
sdk/relationships/arm-relationships/samples/v1-beta/javascript/dependencyOfRelationshipsDeleteSample.js JS sample: delete dependencyOf
sdk/relationships/arm-relationships/samples/v1-beta/javascript/dependencyOfRelationshipsCreateOrUpdateSample.js JS sample: createOrUpdate dependencyOf
sdk/relationships/arm-relationships/samples-dev/serviceGroupMemberRelationshipsGetSample.ts Dev sample: get serviceGroupMember
sdk/relationships/arm-relationships/samples-dev/serviceGroupMemberRelationshipsDeleteSample.ts Dev sample: delete serviceGroupMember
sdk/relationships/arm-relationships/samples-dev/serviceGroupMemberRelationshipsCreateOrUpdateSample.ts Dev sample: createOrUpdate serviceGroupMember
sdk/relationships/arm-relationships/samples-dev/operationsListSample.ts Dev sample: list operations
sdk/relationships/arm-relationships/samples-dev/dependencyOfRelationshipsGetSample.ts Dev sample: get dependencyOf
sdk/relationships/arm-relationships/samples-dev/dependencyOfRelationshipsDeleteSample.ts Dev sample: delete dependencyOf
sdk/relationships/arm-relationships/samples-dev/dependencyOfRelationshipsCreateOrUpdateSample.ts Dev sample: createOrUpdate dependencyOf
sdk/relationships/arm-relationships/sample.env Package sample env template
sdk/relationships/arm-relationships/review/arm-relationships-node.api.md API Extractor report (root)
sdk/relationships/arm-relationships/review/arm-relationships-models-node.api.md API Extractor report (models)
sdk/relationships/arm-relationships/review/arm-relationships-api-serviceGroupMemberRelationships-node.api.md API report (serviceGroupMember API)
sdk/relationships/arm-relationships/review/arm-relationships-api-operations-node.api.md API report (operations API)
sdk/relationships/arm-relationships/review/arm-relationships-api-node.api.md API report (api/index)
sdk/relationships/arm-relationships/review/arm-relationships-api-dependencyOfRelationships-node.api.md API report (dependencyOf API)
sdk/relationships/arm-relationships/README.md Package README
sdk/relationships/arm-relationships/package.json Package manifest/scripts/exports
sdk/relationships/arm-relationships/metadata.json Package metadata mappings
sdk/relationships/arm-relationships/LICENSE License file
sdk/relationships/arm-relationships/eslint.config.mjs Package eslint config
sdk/relationships/arm-relationships/CHANGELOG.md Changelog entry for beta.1
sdk/relationships/arm-relationships/api-extractor.json API Extractor config
pnpm-lock.yaml Adds new workspace importer
eng/ignore-links.txt Ignores docs/npm links for package
.github/CODEOWNERS Adds CODEOWNERS entry
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Comment on lines +113 to +120
if (named && varName) {
vals.push(encodeComponent(varName, reserved, op));
if (value === "") {
if (!ifEmpty) {
vals.push(ifEmpty);
}
return !vals.join("") ? undefined : `${first}${vals.join("")}`;
}
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In getNonExpandedValue, the if (value === "") handling uses if (!ifEmpty) { vals.push(ifEmpty); }, which is inverted. For ?/& expansions ifEmpty is "=", so the current logic omits the trailing "=" and produces ?name instead of ?name= for empty values. Flip the condition so the ifEmpty suffix is appended when it’s non-empty.

Copilot uses AI. Check for mistakes.
Comment on lines +214 to +223
/**
* Normalize an expanded URI by decoding percent-encoded unreserved characters.
* RFC 3986 unreserved: "-" / "." / "~"
*/
function normalizeUnreserved(uri: string): string {
return uri.replace(/%([0-9A-Fa-f]{2})/g, (match, hex) => {
const char = String.fromCharCode(parseInt(hex, 16));
// Decode only if it's unreserved
if (/[.~-]/.test(char)) {
return char;
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment above normalizeUnreserved states RFC 3986 unreserved: "-" / "." / "~", but RFC 3986 unreserved also includes alphanumerics and _. Either update the comment to reflect the full unreserved set, or clarify that this function intentionally only normalizes a subset (since encodeURIComponent won’t encode most unreserved characters anyway).

Copilot uses AI. Check for mistakes.
Comment on lines +20 to +24
/**
* @fixme delete is a reserved word that cannot be used as an operation name.
* Please add @clientName("clientName") or @clientName("<JS-Specific-Name>", "javascript")
* to the operation to override the generated name.
*/
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The @fixme JSDoc block about delete being a reserved word is generator placeholder text that will surface in public docs/typings. Consider addressing this at the TypeSpec level (e.g., @clientName) so the generated SDK doesn’t ship with @fixme comments.

Copilot uses AI. Check for mistakes.
Comment on lines +58 to +62
/**
* @fixme delete is a reserved word that cannot be used as an operation name.
* Please add @clientName("clientName") or @clientName("<JS-Specific-Name>", "javascript")
* to the operation to override the generated name.
*/
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The operation JSDoc includes an @fixme block about delete being reserved. This placeholder text will appear in generated docs and API reports. Prefer resolving naming via TypeSpec (@clientName) so the generated SDK doesn’t ship with @fixme comments.

Copilot uses AI. Check for mistakes.
Comment on lines +24 to +28
/**
* @fixme delete is a reserved word that cannot be used as an operation name.
* Please add @clientName("clientName") or @clientName("<JS-Specific-Name>", "javascript")
* to the operation to override the generated name.
*/
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The @fixme JSDoc block about delete being a reserved word is generator placeholder text that will surface in public docs/typings. Consider addressing this at the TypeSpec level (e.g., @clientName) so the generated SDK doesn’t ship with @fixme comments.

Copilot uses AI. Check for mistakes.
Comment on lines +58 to +62
/**
* @fixme delete is a reserved word that cannot be used as an operation name.
* Please add @clientName("clientName") or @clientName("<JS-Specific-Name>", "javascript")
* to the operation to override the generated name.
*/
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The operation JSDoc includes an @fixme block about delete being reserved. This placeholder text will appear in generated docs and API reports. Prefer resolving naming via TypeSpec (@clientName) so the generated SDK doesn’t ship with @fixme comments.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 3, 2026

Next Steps to Merge

Only failed checks and required actions are listed below.

  • 🔄 CI checks pending: The checkenforcer is still waiting for required checks to pass. The main ADO js - pullrequest pipeline (Build / Analyze / UnitTest) has not yet reported results. Please monitor the ADO pipeline and re-check once all CI runs complete.

Copy link
Copy Markdown

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 spec issue found (advisory). The overall API surface for this first release of @azure/arm-relationships@1.0.0-beta.1 looks clean: version consistency checks pass, no _N/AutoGenerated/_ naming issues, correct beta versioning for the preview API 2023-09-01-preview, and all public symbols are properly exported. The only finding is that both delete operations use a JavaScript reserved keyword as the method name — the generation tool itself flags these with @fixme comments. This should be fixed in the spec with @clientName.

📊 Structured Report
{"agent":"mgmt-reviewer","pr":37954,"summary":"issues_found","findings":[{"file":"sdk/relationships/arm-relationships/review/arm-relationships-node.api.md","line":80,"issueType":"design","category":"naming","description":"DependencyOfRelationshipsOperations.delete uses reserved keyword 'delete'; generator emits `@fixme`; internal submodule uses $delete workaround. Fix: add `@clientName` in client.tsp."},{"file":"sdk/relationships/arm-relationships/review/arm-relationships-node.api.md","line":287,"issueType":"design","category":"naming","description":"ServiceGroupMemberRelationshipsOperations.delete uses reserved keyword 'delete'; same fix needed."}]}

Benchmarked by Management Release Assistant

// @public
export interface ServiceGroupMemberRelationshipsOperations {
createOrUpdate: (resourceUri: string, name: string, resource: ServiceGroupMemberRelationshipCreateOrUpdate, options?: ServiceGroupMemberRelationshipsCreateOrUpdateOptionalParams) => PollerLike<OperationState<ServiceGroupMemberRelationship>, ServiceGroupMemberRelationship>;
delete: (resourceUri: string, name: string, options?: ServiceGroupMemberRelationshipsDeleteOptionalParams) => PollerLike<OperationState<void>, void>;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Spec IssueServiceGroupMemberRelationshipsOperations.delete
Same issue as in DependencyOfRelationshipsOperations: delete is a JavaScript reserved keyword. The generation tool flags this in src/classic/serviceGroupMemberRelationships/index.ts, and $delete is used internally.

Fix: Apply the same @clientName decorator in client.tsp to rename this delete operation before regenerating.

// @public
export interface DependencyOfRelationshipsOperations {
createOrUpdate: (resourceUri: string, name: string, resource: DependencyOfRelationshipCreateOrUpdate, options?: DependencyOfRelationshipsCreateOrUpdateOptionalParams) => PollerLike<OperationState<DependencyOfRelationship>, DependencyOfRelationship>;
delete: (resourceUri: string, name: string, options?: DependencyOfRelationshipsDeleteOptionalParams) => PollerLike<OperationState<void>, void>;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Spec IssueDependencyOfRelationshipsOperations.delete
delete: (resourceUri: string, name: string, options?: ...) => PollerLike<...>.

The operation name delete is a JavaScript reserved keyword. The generation tool itself flags this with a @fixme comment in src/classic/dependencyOfRelationships/index.ts, and the internal submodule function is named $delete as a workaround.

Fix: In the spec's client.tsp, add a @clientName decorator to rename both delete operations (here and in ServiceGroupMemberRelationshipsOperations) to a non-reserved name (e.g., @clientName("remove", "javascript")), then trigger SDK regeneration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Mgmt This issue is related to a management-plane library. mgmt-review-needed Self-Service Release PR for self-service release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants