From cd7ad2a581f72d27f48451a2d7eb8d873801271c Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 14:16:09 +0800 Subject: [PATCH 1/8] Sync typespec-java core to PR 11286 and drop liftr-base/openai peer & dev deps - Update core-commit.json to microsoft/typespec#11286 head commit - Sync emitter test specs (adds multiple-clients-same-version.tsp) - Remove @azure-tools/typespec-liftr-base and @azure-tools/openai-typespec from peerDependencies and devDependencies Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- packages/typespec-java/core-commit.json | 2 +- .../tsp/multiple-clients-same-version.tsp | 53 +++++++++++++++++++ packages/typespec-java/package.json | 4 -- 3 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 packages/typespec-java/emitter-tests/tsp/multiple-clients-same-version.tsp diff --git a/packages/typespec-java/core-commit.json b/packages/typespec-java/core-commit.json index e46798ef43..aa878c8fdb 100644 --- a/packages/typespec-java/core-commit.json +++ b/packages/typespec-java/core-commit.json @@ -1 +1 @@ -{ "sha": "42927da57e230b59a93e3a36d787c4ede5e50051" } +{ "sha": "ab340d8c6ca7a304987ea124bf0f3f95243cc609" } diff --git a/packages/typespec-java/emitter-tests/tsp/multiple-clients-same-version.tsp b/packages/typespec-java/emitter-tests/tsp/multiple-clients-same-version.tsp new file mode 100644 index 0000000000..eafb648073 --- /dev/null +++ b/packages/typespec-java/emitter-tests/tsp/multiple-clients-same-version.tsp @@ -0,0 +1,53 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-client-generator-core"; + +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.ClientGenerator.Core; + +// A single versioned service that is split into two clients (AlphaClient, BetaClient). Both +// clients therefore share the same set of api-versions. In this case the emitter must generate a +// SINGLE shared `MultipleClientsSameVersionServiceVersion` enum (named after the service), NOT a +// separate `ServiceVersion` per client. +// +// Regression test for the api-version comparison in code-model-builder.ts (getServiceVersion +// postprocess): comparing ApiVersion object references (with `===`) instead of the version +// strings incorrectly produced one ServiceVersion enum per client here, because each client +// builds its own ApiVersion instances. +@service(#{ title: "MultipleClientsSameVersion" }) +@versioned(ServiceApiVersions) +namespace TspTest.MultipleClientsSameVersion; + +enum ServiceApiVersions { + v2023_01_01: "2023-01-01", + v2023_06_01: "2023-06-01", +} + +model Resource { + @visibility(Lifecycle.Read) + id: string; + + name: string; +} + +@client({ + service: TspTest.MultipleClientsSameVersion, + name: "AlphaClient", +}) +@route("/alpha") +interface AlphaClient { + @get + getAlpha(@path id: string): Resource; +} + +@client({ + service: TspTest.MultipleClientsSameVersion, + name: "BetaClient", +}) +@route("/beta") +interface BetaClient { + @get + getBeta(@path id: string): Resource; +} diff --git a/packages/typespec-java/package.json b/packages/typespec-java/package.json index f045286c88..fe5d5151ea 100644 --- a/packages/typespec-java/package.json +++ b/packages/typespec-java/package.json @@ -49,8 +49,6 @@ "@azure-tools/typespec-azure-resource-manager": "workspace:^", "@azure-tools/typespec-azure-rulesets": "workspace:^", "@azure-tools/typespec-client-generator-core": "workspace:^", - "@azure-tools/typespec-liftr-base": "catalog:", - "@azure-tools/openai-typespec": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", "@typespec/http": "workspace:^", @@ -72,8 +70,6 @@ "@azure-tools/typespec-azure-resource-manager": "workspace:^", "@azure-tools/typespec-azure-rulesets": "workspace:^", "@azure-tools/typespec-client-generator-core": "workspace:^", - "@azure-tools/typespec-liftr-base": "catalog:", - "@azure-tools/openai-typespec": "catalog:", "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", From 877fa404cd579f1d24b9afce27c5c3f68eb7e14d Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 14:24:30 +0800 Subject: [PATCH 2/8] Regenerate pnpm-lock.yaml after removing liftr-base/openai deps Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- pnpm-lock.yaml | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 08892186d0..8968d11d52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,12 +48,6 @@ catalogs: '@azure-tools/codegen': specifier: ~2.10.1 version: 2.10.1 - '@azure-tools/openai-typespec': - specifier: 1.21.0 - version: 1.21.0 - '@azure-tools/typespec-liftr-base': - specifier: '>=0.14.0 <1.0.0' - version: 0.14.0 '@azure/abort-controller': specifier: ^2.1.2 version: 2.1.2 @@ -3690,9 +3684,6 @@ importers: specifier: 'catalog:' version: 2.9.0 devDependencies: - '@azure-tools/openai-typespec': - specifier: 'catalog:' - version: 1.21.0(@typespec/http@core+packages+http)(@typespec/openapi@core+packages+openapi) '@azure-tools/typespec-autorest': specifier: workspace:^ version: link:../typespec-autorest @@ -3708,9 +3699,6 @@ importers: '@azure-tools/typespec-client-generator-core': specifier: workspace:^ version: link:../typespec-client-generator-core - '@azure-tools/typespec-liftr-base': - specifier: 'catalog:' - version: 0.14.0 '@types/node': specifier: 'catalog:' version: 26.0.0 @@ -4366,19 +4354,10 @@ packages: resolution: {integrity: sha512-fZfREKjQnBTscjObgK4LuyZNFaofoCNQDNz0jl1i8fYNwCM5EOF9BXwtEtobuEyCpPUNDxQ/KKO65eWzirqk4w==} engines: {node: '>=12.0.0'} - '@azure-tools/openai-typespec@1.21.0': - resolution: {integrity: sha512-wKHNsyXii+/ZJn/mqKC/ey+/Y+RoW7XGBQD5yNRhGKA3VRibLNIhn/0PGLEIZhWWsFp3okTvifhPDs/b0DmOTA==} - peerDependencies: - '@typespec/http': ^1.13.0 - '@typespec/openapi': ^1.13.0 - '@azure-tools/tasks@3.0.255': resolution: {integrity: sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==} engines: {node: '>=10.12.0'} - '@azure-tools/typespec-liftr-base@0.14.0': - resolution: {integrity: sha512-q9pEaOiIaE2VF+BsnaDG98zrj0sZ7/8AD8aBrwXtHbzH+id3sWprl8rRF0qagDSVchslfrHcGFhXs2bM6Hie0g==} - '@azure/abort-controller@2.1.2': resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} engines: {node: '>=18.0.0'} @@ -15152,15 +15131,8 @@ snapshots: js-yaml: 4.1.1 semver: 7.8.5 - '@azure-tools/openai-typespec@1.21.0(@typespec/http@core+packages+http)(@typespec/openapi@core+packages+openapi)': - dependencies: - '@typespec/http': link:core/packages/http - '@typespec/openapi': link:core/packages/openapi - '@azure-tools/tasks@3.0.255': {} - '@azure-tools/typespec-liftr-base@0.14.0': {} - '@azure/abort-controller@2.1.2': dependencies: tslib: 2.8.1 From 80df5d85d801c1b4fa16919c4eb6c5f3860cf7b4 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 14:30:50 +0800 Subject: [PATCH 3/8] Add changelog for removing liftr-base/openai deps Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- ...pec-java-remove-liftr-openai-deps-2026-07-17-14-29-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/typespec-java-remove-liftr-openai-deps-2026-07-17-14-29-0.md diff --git a/.chronus/changes/typespec-java-remove-liftr-openai-deps-2026-07-17-14-29-0.md b/.chronus/changes/typespec-java-remove-liftr-openai-deps-2026-07-17-14-29-0.md new file mode 100644 index 0000000000..ed0a845989 --- /dev/null +++ b/.chronus/changes/typespec-java-remove-liftr-openai-deps-2026-07-17-14-29-0.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@azure-tools/typespec-java" +--- + +Remove `@azure-tools/typespec-liftr-base` and `@azure-tools/openai-typespec` from the peer and dev dependencies. From 061d6582e6bb7d931c4ec4ed38f9a8347a557e42 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 14:32:49 +0800 Subject: [PATCH 4/8] Add changelog for per-client ServiceVersion regression fix (core PR 11286) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- ...ava-fix-per-client-serviceversion-2026-07-17-14-32-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md diff --git a/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md b/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md new file mode 100644 index 0000000000..b344d32c25 --- /dev/null +++ b/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@azure-tools/typespec-java" +--- + +Fix per-client `ServiceVersion` regression: multi-client packages whose clients share the same api-versions now generate a single shared `ServiceVersion` enum again, instead of a separate `ServiceVersion` per client. Per-client enums are still emitted when the api-versions genuinely differ. From 0d320b3dc96f221e5a8f2803968d6beb93af1333 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 14:34:18 +0800 Subject: [PATCH 5/8] Simplify per-client ServiceVersion changelog message Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- ...pec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md b/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md index b344d32c25..4857e4b37b 100644 --- a/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md +++ b/.chronus/changes/typespec-java-fix-per-client-serviceversion-2026-07-17-14-32-0.md @@ -4,4 +4,4 @@ packages: - "@azure-tools/typespec-java" --- -Fix per-client `ServiceVersion` regression: multi-client packages whose clients share the same api-versions now generate a single shared `ServiceVersion` enum again, instead of a separate `ServiceVersion` per client. Per-client enums are still emitted when the api-versions genuinely differ. +Fix per-client `ServiceVersion` regression after migrating from js-yaml and lodash. From 3e5917398e6a69c94107706636497642bc38dc56 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 17:21:04 +0800 Subject: [PATCH 6/8] Sync core-commit.json to latest core main (8cef6d9) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- packages/typespec-java/core-commit.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/typespec-java/core-commit.json b/packages/typespec-java/core-commit.json index aa878c8fdb..0af764b51c 100644 --- a/packages/typespec-java/core-commit.json +++ b/packages/typespec-java/core-commit.json @@ -1 +1 @@ -{ "sha": "ab340d8c6ca7a304987ea124bf0f3f95243cc609" } +{ "sha": "8cef6d928a2ac3237d5eacb69b4ac671a54bcf92" } From 907726dbafe07e3ff016ea2d6667271d84c71800 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Fri, 17 Jul 2026 17:22:40 +0800 Subject: [PATCH 7/8] Add changelog for clientApiVersions support (core PR 11290) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- ...-java-support-client-api-versions-2026-07-17-17-22-0.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/typespec-java-support-client-api-versions-2026-07-17-17-22-0.md diff --git a/.chronus/changes/typespec-java-support-client-api-versions-2026-07-17-17-22-0.md b/.chronus/changes/typespec-java-support-client-api-versions-2026-07-17-17-22-0.md new file mode 100644 index 0000000000..549c9a865a --- /dev/null +++ b/.chronus/changes/typespec-java-support-client-api-versions-2026-07-17-17-22-0.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@azure-tools/typespec-java" +--- + +Support `clientApiVersions`. From 27cb879723d6dd0163e9c0132a87d052baf74915 Mon Sep 17 00:00:00 2001 From: "Xiaofei Cao (from Dev Box)" Date: Mon, 20 Jul 2026 11:02:46 +0800 Subject: [PATCH 8/8] Sync emitter-tests version to typespec-java emitter version in SyncTests.ps1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: fc029ab7-e689-4a6f-838e-f9ad61afd541 --- packages/typespec-java/emitter-tests/SyncTests.ps1 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/typespec-java/emitter-tests/SyncTests.ps1 b/packages/typespec-java/emitter-tests/SyncTests.ps1 index e234479c1a..2ff63eaefb 100644 --- a/packages/typespec-java/emitter-tests/SyncTests.ps1 +++ b/packages/typespec-java/emitter-tests/SyncTests.ps1 @@ -72,13 +72,14 @@ finally { # Point the local @azure-tools/typespec-java dependency at the .tgz produced by # this repo's emitter (Build-TypeSpec.ps1 runs `npm pack`, which names the file -# azure-tools-typespec-java-.tgz). Keep that version in sync with -# packages/typespec-java/package.json so a version bump there propagates here. -# This depends only on the local repo, not on core, so it runs outside the -# core-commit checkout as its own read-modify-write. +# azure-tools-typespec-java-.tgz). Keep both this test project's own +# version and that dependency in sync with packages/typespec-java/package.json so +# a version bump there propagates here. This depends only on the local repo, not +# on core, so it runs outside the core-commit checkout as its own read-modify-write. $localPackageJsonPath = Join-Path $scriptRoot "package.json" $emitterVersion = (Get-Content (Join-Path $packageRoot "package.json") -Raw | ConvertFrom-Json).version $localPackage = Get-Content $localPackageJsonPath -Raw | ConvertFrom-Json +$localPackage.version = $emitterVersion if ($localPackage.dependencies.PSObject.Properties.Name -contains "@azure-tools/typespec-java") { $localPackage.dependencies.'@azure-tools/typespec-java' = "file:../azure-tools-typespec-java-$emitterVersion.tgz" }