Preserve typed catalogue unions in SDK codegen - #2486
Conversation
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Go can still expose raw catalogue fields, Rust gains a source-breaking public field, and Java’s update profile can undo the exact schema pin.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Balanced
Findings: 2
New issues introduced by this change (2)
| Severity | Finding |
|---|---|
go/rpc/catalogue_conformance_test.go — This assertion only exercises the two known candidate variants, which decode into typed structs and… |
|
java/scripts/codegen/package.json — The documented Java schema-update profile does not preserve this exact pin:… |
What changed in this PR
Adds schema-pinned, typed catalog.search bindings across all SDKs, including union generation, raw-card filtering, and conformance tests.
Changes:
- Pins code generation to
@github/copilot@1.0.83-2. - Generates catalogue APIs and nested candidate/result types for six languages.
- Adds cross-language conformance coverage and regenerates newer schema surfaces.
| File | Description |
|---|---|
.github/workflows/update-copilot-dependency.yml |
Updates codegen dependencies exactly. |
dotnet/src/Generated/Rpc.cs |
Generates catalogue and newer RPC types. |
dotnet/src/Generated/SessionEvents.cs |
Regenerates session events. |
dotnet/test/Unit/CatalogueConformanceTests.cs |
Tests catalogue model conformance. |
go/rpc/catalogue_conformance_test.go |
Tests catalogue decoding and leakage. |
go/rpc/zrpc.go |
Generates catalogue and newer RPC APIs. |
go/rpc/zsession_encoding.go |
Encodes added session events. |
go/rpc/zsession_events.go |
Generates session-event models. |
go/zsession_events.go |
Exports added event types. |
java/scripts/codegen/java.ts |
Supports nested discriminated unions. |
java/scripts/codegen/package-lock.json |
Locks the schema package. |
java/scripts/codegen/package.json |
Pins the Java schema dependency. |
java/sdk/src/generated/java/com/github/copilot/generated/AgentModelPolicy.java |
Adds generated model policy. |
java/sdk/src/generated/java/com/github/copilot/generated/AssistantFusionPhaseActivityEvent.java |
Adds Fusion activity event. |
java/sdk/src/generated/java/com/github/copilot/generated/CompletionReceiptEventRange.java |
Adds receipt range type. |
java/sdk/src/generated/java/com/github/copilot/generated/CompletionReceiptFinalTool.java |
Adds receipt tool type. |
java/sdk/src/generated/java/com/github/copilot/generated/CompletionReceiptStopReason.java |
Adds receipt stop reasons. |
java/sdk/src/generated/java/com/github/copilot/generated/CompletionReceiptToolStatus.java |
Adds receipt tool statuses. |
java/sdk/src/generated/java/com/github/copilot/generated/CustomAgentsUpdatedAgent.java |
Regenerates agent event data. |
java/sdk/src/generated/java/com/github/copilot/generated/FusionPhaseActivityKind.java |
Adds Fusion activity kinds. |
java/sdk/src/generated/java/com/github/copilot/generated/FusionPhasePlanStep.java |
Adds Fusion plan steps. |
java/sdk/src/generated/java/com/github/copilot/generated/PermissionRequestedEvent.java |
Regenerates permission events. |
java/sdk/src/generated/java/com/github/copilot/generated/SessionCompletionReceiptEvent.java |
Adds completion receipt event. |
java/sdk/src/generated/java/com/github/copilot/generated/SessionEvent.java |
Registers added event variants. |
java/sdk/src/generated/java/com/github/copilot/generated/SessionFusionResolvedEvent.java |
Regenerates Fusion event data. |
java/sdk/src/generated/java/com/github/copilot/generated/SubagentCompletedEvent.java |
Regenerates completion data. |
java/sdk/src/generated/java/com/github/copilot/generated/SubagentFailedEvent.java |
Regenerates failure data. |
java/sdk/src/generated/java/com/github/copilot/generated/UserMessageEvent.java |
Regenerates message event data. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/AgentInfo.java |
Adds model policy metadata. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/AgentModelPolicy.java |
Adds RPC model policy. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogAiSkillCandidate.java |
Models AI skill candidates. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogAiSkillCandidateProvenance.java |
Models skill provenance. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidate.java |
Adds candidate union base. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSource.java |
Adds source union base. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSourceEmbedded.java |
Models embedded sources. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSourceUrl.java |
Models URL sources. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerCandidate.java |
Models MCP candidates. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerCandidateProvenance.java |
Models MCP provenance. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerInstallability.java |
Models installation status. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogSearchSucceeded.java |
Models successful searches. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/DiscoveredHook.java |
Adds hook discovery type. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/HookOrigin.java |
Adds hook origins. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/HookType.java |
Regenerates hook types. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/HooksDiscoverParams.java |
Adds hook discovery input. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/HooksDiscoverResult.java |
Adds hook discovery output. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/QueuePendingItems.java |
Adds queued-message identity. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SandboxConfigUserPolicyNetwork.java |
Updates network documentation. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SandboxConfigUserPolicyNetworkProxy.java |
Updates proxy constraints. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/ServerHooksApi.java |
Adds hook discovery API. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/ServerRpc.java |
Exposes generated namespaces. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/ServerSessionsApi.java |
Adds persisted-event reads. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionModelSwitchToParams.java |
Updates model-switch semantics. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionsReadPersistedEventsParams.java |
Adds persisted-event parameters. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SessionsReadPersistedEventsResult.java |
Adds persisted-event results. |
java/sdk/src/generated/java/com/github/copilot/generated/rpc/SubagentSettingsEntry.java |
Adds subagent model policy. |
java/sdk/src/test/java/com/github/copilot/RpcSessionStateExtrasE2ETest.java |
Updates session-state fixtures. |
java/sdk/src/test/java/com/github/copilot/generated/CatalogConformanceTest.java |
Tests Java catalogue semantics. |
java/sdk/src/test/java/com/github/copilot/generated/rpc/GeneratedRpcRecordsCoverageTest.java |
Updates generated-record coverage. |
nodejs/src/generated/rpc.ts |
Adds typed catalogue RPC and filtering. |
nodejs/src/generated/session-events.ts |
Regenerates session-event types. |
nodejs/test/catalogue-conformance.test.ts |
Tests TypeScript catalogue behavior. |
nodejs/test/e2e/disabled_mcp_servers.e2e.test.ts |
Updates E2E configuration. |
nodejs/test/e2e/session_config.e2e.test.ts |
Updates E2E configuration. |
python/copilot/generated/rpc.py |
Generates catalogue and newer RPC types. |
python/copilot/generated/session_events.py |
Regenerates session events. |
python/test_rpc_generated.py |
Tests generated catalogue behavior. |
rust/src/generated/api_types.rs |
Generates catalogue and newer API types. |
rust/src/generated/rpc.rs |
Adds typed catalogue RPC access. |
rust/src/generated/session_events.rs |
Regenerates session events. |
rust/tests/catalogue_conformance_test.rs |
Tests Rust catalogue semantics. |
rust/tests/e2e/rpc_session_state_extras.rs |
Updates subagent settings fixture. |
scripts/codegen/catalogue-conformance.ts |
Validates catalogue schema invariants. |
scripts/codegen/package-lock.json |
Locks codegen schema dependencies. |
scripts/codegen/package.json |
Adds schema pin and conformance command. |
scripts/codegen/python.ts |
Normalizes the AI acronym. |
scripts/codegen/typescript.ts |
Generates catalogue response sanitization. |
scripts/codegen/utils.ts |
Uses dedicated codegen dependencies. |
Files not reviewed (5)
- go/rpc/zsession_encoding.go: Generated file
- go/rpc/zsession_events.go: Generated file
- go/zsession_events.go: Generated file
- java/scripts/codegen/package-lock.json: Generated file
- scripts/codegen/package-lock.json: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
bc93c27 to
de78eae
Compare
Cross-SDK Consistency Review — PR #2486Reviewed the authoritative diff ( Findings: no consistency issues. This PR achieves full parity across all six SDKs:
No API naming/shape drift, no single-language-only feature additions. Nice work keeping this in sync — nothing further to flag.
|
b2ac890 to
0cc1b2c
Compare
de78eae to
c0813e4
Compare

Summary
List<Object>Part of #2106.
Unique files
Generator and build sources
scripts/codegen/catalogue-conformance.tsscripts/codegen/go.tsscripts/codegen/package.jsonscripts/codegen/python.tsscripts/codegen/typescript.tsjava/scripts/codegen/java.tsjava/scripts/codegen/package.jsonjava/scripts/codegen/package-lock.jsonjava/sdk/pom.xmlDirectly generated output
go/rpc/zrpc.gogo/rpc/zrpc_encoding.gonodejs/src/generated/rpc.tspython/copilot/generated/rpc.pyjava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogAiSkillCandidate.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogAiSkillCandidateProvenance.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidate.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSource.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSourceEmbedded.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogCandidateSourceUrl.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerCandidate.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerCandidateProvenance.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogMcpServerInstallability.javajava/sdk/src/generated/java/com/github/copilot/generated/rpc/CatalogSearchSucceeded.javaConformance tests
nodejs/test/catalogue-conformance.test.tspython/test_rpc_generated.pygo/rpc/catalogue_conformance_test.godotnet/test/Unit/CatalogueConformanceTests.csrust/tests/catalogue_conformance_test.rsjava/sdk/src/test/java/com/github/copilot/generated/CatalogConformanceTest.javaNo generated session-event files, runtime pins, downloaders, materialisation policy, planning, or apply logic are included.
Validation
@github/copilot1.0.83-3