Repository navigation
Graduate extension telemetry and current Azure principal gRPC APIs to v1 (azd 1.36.0) - #10439
Conversation
Preserve deprecated beta wire routes and migrate Telemetry() to stable with an explicitly approved SDK source break. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b95f462d-d9e2-4fb6-b3c0-0b1cfc4aebb9
Retain explicit deprecated-client regression coverage and synchronize generated adapters with current main. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b95f462d-d9e2-4fb6-b3c0-0b1cfc4aebb9
🔗 Linked Issue RequiredThanks for the contribution! Please link a GitHub issue to this PR by adding |
|
Azure Pipelines: Successfully started running 2 pipeline(s). 23 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🔵 Needs a closer look
The broad public gRPC and SDK compatibility change warrants final human validation despite comprehensive coverage.
0 open findings
What changed in this PR
Graduates extension telemetry and current-principal gRPC APIs from beta to stable v1 while preserving legacy and beta wire compatibility.
Changes:
- Adds stable contracts, SDK aliases, clients, and server implementations.
- Routes retained beta and unversioned telemetry APIs through stable behavior.
- Updates tests, demo integration, lifecycle guidance, and SDK documentation.
| File | Description |
|---|---|
docs/reference/feature-status.md |
Records graduated contract status. |
docs/guides/creating-an-extension.md |
Documents stable principal lookup. |
docs/architecture/extension-framework.md |
Updates available stable services. |
cli/azd/pkg/foundry/telemetry/reporter.go |
Migrates reporter to v1 types. |
cli/azd/pkg/foundry/telemetry/reporter_test.go |
Migrates reporter tests. |
cli/azd/pkg/azdext/contracts/versioning_test.go |
Verifies graduation and deprecation. |
cli/azd/pkg/azdext/contracts/v1beta/telemetry.pb.go |
Regenerates deprecated beta messages. |
cli/azd/pkg/azdext/contracts/v1beta/telemetry_grpc.pb.go |
Regenerates deprecated beta service. |
cli/azd/pkg/azdext/contracts/v1beta/account.pb.go |
Deprecates beta principal types. |
cli/azd/pkg/azdext/contracts/v1beta/account_grpc.pb.go |
Deprecates beta principal RPC. |
cli/azd/pkg/azdext/contracts/v1/telemetry.pb.go |
Adds stable telemetry messages. |
cli/azd/pkg/azdext/contracts/v1/telemetry_grpc.pb.go |
Adds stable telemetry service. |
cli/azd/pkg/azdext/contracts/v1/account.pb.go |
Adds stable principal types. |
cli/azd/pkg/azdext/contracts/v1/account_grpc.pb.go |
Adds stable principal RPC. |
cli/azd/pkg/azdext/contracts_v1_aliases.go |
Exposes new stable facade symbols. |
cli/azd/pkg/azdext/azd_client.go |
Returns stable telemetry and account clients. |
cli/azd/pkg/azdext/azd_client_test.go |
Verifies stable telemetry client type. |
cli/azd/internal/grpcserver/versioned_services.go |
Registers stable telemetry. |
cli/azd/internal/grpcserver/versioned_services_test.go |
Verifies beta adapter registration. |
cli/azd/internal/grpcserver/versioned_services_generated.go |
Adds generated beta-to-stable adapters. |
cli/azd/internal/grpcserver/telemetry_service.go |
Moves telemetry logic to v1. |
cli/azd/internal/grpcserver/telemetry_service_test.go |
Migrates telemetry service tests. |
cli/azd/internal/grpcserver/server.go |
Uses stable service interfaces. |
cli/azd/internal/grpcserver/server_test.go |
Tests stable, beta, and legacy routes. |
cli/azd/internal/grpcserver/prompt_service_test.go |
Updates server fixture type. |
cli/azd/internal/grpcserver/legacybridge/bridge.go |
Keeps frozen telemetry route on stable logic. |
cli/azd/internal/grpcserver/legacy_services.go |
Registers stable telemetry implementation. |
cli/azd/internal/grpcserver/beta_event_service_test.go |
Updates server fixture type. |
cli/azd/internal/grpcserver/account_service.go |
Moves principal lookup to v1. |
cli/azd/internal/grpcserver/account_service_test.go |
Covers stable and retained beta lookup. |
cli/azd/internal/cmd/service_event_messages_graph_test.go |
Updates server fixture type. |
cli/azd/grpc/README.md |
Documents graduated contracts. |
cli/azd/grpc/proto/azd/extensions/v1beta/telemetry.proto |
Deprecates beta telemetry surface. |
cli/azd/grpc/proto/azd/extensions/v1beta/account.proto |
Deprecates beta principal surface. |
cli/azd/grpc/proto/azd/extensions/v1/telemetry.proto |
Defines stable telemetry contract. |
cli/azd/grpc/proto/azd/extensions/v1/account.proto |
Defines stable principal contract. |
cli/azd/extensions/microsoft.azd.demo/README.md |
Documents stable telemetry requirement. |
cli/azd/extensions/microsoft.azd.demo/internal/cmd/telemetry.go |
Migrates demo telemetry request. |
cli/azd/extensions/microsoft.azd.demo/extension.yaml |
Raises minimum host version. |
cli/azd/docs/extensions/extension-telemetry.md |
Updates telemetry migration guidance. |
cli/azd/docs/extensions/extension-sdk-reference.md |
Documents stable SDK APIs. |
cli/azd/docs/extensions/extension-framework.md |
Updates extension contract guidance. |
cli/azd/docs/extensions/contract-versioning.md |
Records graduation policy and history. |
cli/azd/cmd/middleware/extensions_start_test.go |
Updates server fixture type. |
cli/azd/cmd/extension_action_test.go |
Updates server fixture type. |
.github/skills/azd-grpc-contracts/references/inspect-and-validate.md |
Refreshes beta-only inventory. |
.github/skills/azd-grpc-contracts/references/graduate-to-v1.md |
Adds graduation audit workflow. |
Files not reviewed (1)
- cli/azd/internal/grpcserver/versioned_services_generated.go: Generated file
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Preserve ProjectBeta documentation alongside the graduated stable APIs and update the incoming Project integration test to use stable telemetry. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b95f462d-d9e2-4fb6-b3c0-0b1cfc4aebb9
There was a problem hiding this comment.
🔵 Needs a closer look
The public gRPC graduation and intentional SDK source break warrant final human compatibility review despite comprehensive coverage.
0 open findings
Files not reviewed (1)
- cli/azd/internal/grpcserver/versioned_services_generated.go: Generated file
🧠 Review effort: Balanced
Azure Dev CLI Install InstructionsInstall scriptsMacOS/Linux
bash: pwsh: WindowsPowerShell install MSI install Standalone Binary
MSI
Documentationlearn.microsoft.com documentationtitle: Azure Developer CLI reference
|
microsoft.azd.demo PR buildNote This is an unsigned development build. Install it only if you trust this PR. Install the extension: azd ext install "https://azuresdkartifacts.z5.web.core.windows.net/azd/extensions/pr/10439/microsoft-azd-demo.zip"
|
Summary
First-ever extension gRPC v1beta-to-v1 graduation, targeting azd 1.36.0 / October 2026.
Adds the complete stable shapes for Extension usage telemetry (
TelemetryService.ReportUsage) and Current Azure principal (AccountService.GetCurrentPrincipal, messages,PrincipalType). Moves their default business logic into stable services, registers stable telemetry, removes the automatic principal beta override, and regenerates Go contracts, stable facade aliases, and beta adapters through the pinned toolchain.Graduated beta symbols are protobuf-deprecated with exact stable replacements and availability version. Existing beta routes continue delegating to stable implementations. The frozen unversioned telemetry route remains available; principal lookup is not added to the frozen unversioned Account route. Other preview capabilities remain beta-only.
Explicitly approved SDK source migration
AzdClient.Telemetry()now returns the stable client. NoTelemetryBeta()accessor is added. SDK accessor names are not needed to retain host wire routes.Already-released extension binaries using beta or frozen unversioned telemetry continue working after an azd host upgrade. Old source passing beta telemetry request types, or implementing beta-typed shared reporter clients/mocks, must migrate when adopting the new SDK. Independently versioned extensions pinned to old SDKs do not break merely because the core change is committed. The shared
pkg/foundry/telemetry.Clientinterface becomes stable-typed.Account()gains principal lookup;AccountBeta()remains source-compatible but deprecated.The demo extension shares the core Go module, so this PR includes its compile-required stable telemetry migration and
requiredAzdVersion: ">=1.36.0"bump. Other first-party extension migrations/releases are separate follow-ups. Migrated consumers must pin the published azd SDK to v1.36.0 or later and require an azd host >=1.36.0; no local SDKreplacedirectives are introduced.Audit and follow-ups
azure.ai.agents,azure.ai.dataset,azure.ai.evaluations,azure.ai.inspector, and demo release).azure.ai.projects).Beta route removal has no scheduled date and requires a separately approved migration policy. The audit record distinguishes the target version from actual merge/release completion.
Updates contract lifecycle, SDK and telemetry docs, core contributor/architecture references, feature status, and the
/azd-grpc-contractsgraduation workflow with audit/follow-up requirements.Validation
go tool mage generateProtos, with repeat-generation determinism checked.make proto-lint,make proto-version-compatibility, andmake proto-breakingagainst fetched currentmain.go build ./...and affected command-package compile checks.go fix, affected-packagegolangci-lint, spell checks, andgit diff --check.Coverage verifies stable and deprecated beta principal lookup for users, guest users, and service principals; retained frozen Account exclusions; stable/beta/legacy telemetry behavior, authentication, request validation, trace/identity attributes, and a shared 100-event invocation budget. Deprecated-route tests use narrowly scoped lint suppressions to keep exercising old generated types.
Telemetry/privacy: no events, attribute keys, classifications, purposes, hashing, registry eligibility, payload bounds, or identity semantics are introduced or changed. This graduates existing contract routing, not a new telemetry collection surface.
No release version bump or unrelated changelog entry is included. azd 1.36.0 publication and extension releases remain pending.