Skip to content

Port copilot-sdk-java PR #232: reference-impl-sync with EMPTY mode fixes#1473

Merged
edburns merged 2 commits into
mainfrom
edburns/copy-copilot-sdk-java-pr-232
May 27, 2026
Merged

Port copilot-sdk-java PR #232: reference-impl-sync with EMPTY mode fixes#1473
edburns merged 2 commits into
mainfrom
edburns/copy-copilot-sdk-java-pr-232

Conversation

@edburns
Copy link
Copy Markdown
Collaborator

@edburns edburns commented May 27, 2026

Copy non-pom changes from github/copilot-sdk-java PR #232:

  • EMPTY mode validation in CopilotClient (CopilotHome/CliUrl check)
  • resumeSession() validates availableTools in EMPTY mode
  • Null-safe hook handler dispatch (prevents NPE on null futures)
  • SessionConfig/ResumeSessionConfig Javadoc corrections
  • CopilotClientMode enum and BuiltInTools/ToolSet helpers
  • PostToolUseFailure hook handler types
  • AgentMode updates
  • Updated generated files to schema ^1.0.55-5
  • Updated .lastmerge to 6010405
  • Updated codegen package.json/package-lock.json
  • Updated CLI version property to ^1.0.55-5

See github/copilot-sdk-java#232 .

Copy non-pom changes from github/copilot-sdk-java PR #232:
- EMPTY mode validation in CopilotClient (CopilotHome/CliUrl check)
- resumeSession() validates availableTools in EMPTY mode
- Null-safe hook handler dispatch (prevents NPE on null futures)
- SessionConfig/ResumeSessionConfig Javadoc corrections
- CopilotClientMode enum and BuiltInTools/ToolSet helpers
- PostToolUseFailure hook handler types
- AgentMode updates
- Updated generated files to schema ^1.0.55-5
- Updated .lastmerge to 6010405
- Updated codegen package.json/package-lock.json
- Updated CLI version property to ^1.0.55-5
Copilot AI review requested due to automatic review settings May 27, 2026 22:47
@edburns edburns requested a review from a team as a code owner May 27, 2026 22:47
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

Ports reference implementation updates from copilot-sdk-java to the Java SDK in this mono-repo, primarily introducing EMPTY mode semantics/validation and aligning generated types with schema ^1.0.55-5.

Changes:

  • Add CopilotClientMode (EMPTY vs COPILOT_CLI) and enforce EMPTY-mode validation/defaulting for session creation/resume (tool allowlist required; excluded-wins precedence; safe post-create options patch).
  • Add tool filtering helpers (ToolSet, BuiltInTools) and extend hooks with postToolUseFailure + null-safe hook dispatch.
  • Regenerate Java RPC + session-event types and bump Java codegen dependency / CLI schema version to ^1.0.55-5.
Show a summary per file
File Description
java/src/test/java/com/github/copilot/UpdateSessionOptionsForModeTest.java New unit tests for post-create/resume session.options.update behavior by mode.
java/src/test/java/com/github/copilot/ToolSetTest.java Tests for ToolSet and BuiltInTools helpers.
java/src/test/java/com/github/copilot/SessionEventHandlingTest.java Updates test data construction to match regenerated event shapes.
java/src/test/java/com/github/copilot/SessionEventDeserializationTest.java Updates round-trip test data to match regenerated event shapes.
java/src/test/java/com/github/copilot/PermissionRequestResultTest.java Tests for new PermissionRequestResult factories + feedback serialization.
java/src/test/java/com/github/copilot/CopilotClientModeTest.java Tests for default mode and EMPTY-mode constructor validation.
java/src/main/java/com/github/copilot/rpc/ToolSet.java New builder for composing tool filters (builtin/custom/mcp) safely.
java/src/main/java/com/github/copilot/rpc/SystemPromptSections.java Adds RUNTIME_INSTRUCTIONS system prompt section constant.
java/src/main/java/com/github/copilot/rpc/SessionHooks.java Adds PostToolUseFailureHandler support + includes it in hasHooks().
java/src/main/java/com/github/copilot/rpc/SessionConfig.java Adds optional post-create session option fields (skip instructions, local-only agents, coauthor, manage_schedule).
java/src/main/java/com/github/copilot/rpc/ResumeSessionRequest.java Adds toolFilterPrecedence field for resume RPC payload.
java/src/main/java/com/github/copilot/rpc/ResumeSessionConfig.java Adds optional post-resume session option fields mirroring SessionConfig.
java/src/main/java/com/github/copilot/rpc/PostToolUseFailureHookOutput.java New output type for post-tool-use-failure hook.
java/src/main/java/com/github/copilot/rpc/PostToolUseFailureHookInput.java New input type for post-tool-use-failure hook.
java/src/main/java/com/github/copilot/rpc/PostToolUseFailureHandler.java New functional interface for failure hook handling.
java/src/main/java/com/github/copilot/rpc/PermissionRequestResult.java Adds feedback field + factory helpers (approveOnce, reject, etc.).
java/src/main/java/com/github/copilot/rpc/CreateSessionRequest.java Adds toolFilterPrecedence field for create RPC payload.
java/src/main/java/com/github/copilot/rpc/CopilotClientOptions.java Adds mode option with default COPILOT_CLI.
java/src/main/java/com/github/copilot/rpc/CopilotClientMode.java New enum defining EMPTY vs COPILOT_CLI defaulting strategy.
java/src/main/java/com/github/copilot/rpc/BuiltInTools.java New curated built-in tool allowlist set(s) for safer defaults.
java/src/main/java/com/github/copilot/CopilotSession.java Null-safe hook dispatch + adds postToolUseFailure hook type.
java/src/main/java/com/github/copilot/CopilotClient.java EMPTY-mode validation/defaulting + post-create/resume options patching.
java/src/generated/java/com/github/copilot/generated/ToolExecutionStartEvent.java Generated session-events schema update.
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUIPermissionsMicrophone.java Generated session-events schema update (UI permissions types).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUIPermissionsGeolocation.java Generated session-events schema update (UI permissions types).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUIPermissionsClipboardWrite.java Generated session-events schema update (UI permissions types).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUIPermissionsCamera.java Generated session-events schema update (UI permissions types).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUIPermissions.java Generated session-events schema update (UI permissions aggregation).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUICsp.java Generated session-events schema update (UI CSP metadata).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMetaUI.java Generated session-events schema update (UI metadata).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResourceMeta.java Generated session-events schema update (UI metadata wrapper).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteUIResource.java Generated session-events schema update (UI resource payload).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteToolDescriptionMetaUIVisibility.java Generated session-events schema update (tool UI visibility enum).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteToolDescriptionMetaUI.java Generated session-events schema update (tool UI metadata).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteToolDescriptionMeta.java Generated session-events schema update (tool description meta wrapper).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteToolDescription.java Generated session-events schema update (tool description).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteResult.java Generated session-events schema update (adds uiResource).
java/src/generated/java/com/github/copilot/generated/ToolExecutionCompleteEvent.java Generated session-events schema update (adds toolDescription).
java/src/generated/java/com/github/copilot/generated/SkillInvokedTrigger.java Generated session-events schema update (new enum).
java/src/generated/java/com/github/copilot/generated/SkillInvokedEvent.java Generated session-events schema update (adds source/trigger).
java/src/generated/java/com/github/copilot/generated/SessionPermissionsChangedEvent.java Generated session-events schema update (new event).
java/src/generated/java/com/github/copilot/generated/SessionModelChangeEvent.java Generated session-events schema update (adds contextTier).
java/src/generated/java/com/github/copilot/generated/SessionMcpServerStatusChangedEvent.java Generated session-events schema update (adds error field).
java/src/generated/java/com/github/copilot/generated/SessionEvent.java Generated session-events schema update (new subtype registrations).
java/src/generated/java/com/github/copilot/generated/SessionErrorEvent.java Generated session-events schema update (adds serviceRequestId).
java/src/generated/java/com/github/copilot/generated/SessionCompactionCompleteEvent.java Generated session-events schema update (adds serviceRequestId).
java/src/generated/java/com/github/copilot/generated/SessionCanvasRegistryChangedEvent.java Generated session-events schema update (new event).
java/src/generated/java/com/github/copilot/generated/SessionCanvasOpenedEvent.java Generated session-events schema update (new event).
java/src/generated/java/com/github/copilot/generated/SessionAutopilotObjectiveChangedEvent.java Generated session-events schema update (new event).
java/src/generated/java/com/github/copilot/generated/rpc/WorkspaceDiffMode.java Generated RPC schema update (workspace diff).
java/src/generated/java/com/github/copilot/generated/rpc/WorkspaceDiffFileChangeType.java Generated RPC schema update (workspace diff).
java/src/generated/java/com/github/copilot/generated/rpc/WorkspaceDiffFileChange.java Generated RPC schema update (workspace diff).
java/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesGetWorkspaceResult.java Generated RPC schema update (adds client_name).
java/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesDiffResult.java Generated RPC schema update (workspace diff result).
java/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesDiffParams.java Generated RPC schema update (workspace diff params).
java/src/generated/java/com/github/copilot/generated/rpc/SessionWorkspacesApi.java Generated RPC schema update (adds diff).
java/src/generated/java/com/github/copilot/generated/rpc/SessionsEnrichMetadataResult.java Generated RPC schema update (doc tweaks).
java/src/generated/java/com/github/copilot/generated/rpc/SessionRpc.java Generated RPC schema update (adds canvas API).
java/src/generated/java/com/github/copilot/generated/rpc/SessionPermissionsSetAllowAllResult.java Generated RPC schema update (allow-all permissions).
java/src/generated/java/com/github/copilot/generated/rpc/SessionPermissionsSetAllowAllParams.java Generated RPC schema update (allow-all permissions).
java/src/generated/java/com/github/copilot/generated/rpc/SessionPermissionsGetAllowAllResult.java Generated RPC schema update (allow-all permissions).
java/src/generated/java/com/github/copilot/generated/rpc/SessionPermissionsGetAllowAllParams.java Generated RPC schema update (allow-all permissions).
java/src/generated/java/com/github/copilot/generated/rpc/SessionPermissionsApi.java Generated RPC schema update (allow-all get/set methods).
java/src/generated/java/com/github/copilot/generated/rpc/SessionOptionsUpdateParams.java Generated RPC schema update (adds toolFilterPrecedence).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMetadataSnapshotResult.java Generated RPC schema update (adds clientName).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMetadata.java Generated RPC schema update (adds clientName/isDetached).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsSetHostContextParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsReadResourceResult.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsReadResourceParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsListToolsResult.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsListToolsParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsGetHostContextResult.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsGetHostContextParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsDiagnoseResult.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsDiagnoseParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsCallToolParams.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpAppsApi.java Generated RPC schema update (new MCP Apps namespace).
java/src/generated/java/com/github/copilot/generated/rpc/SessionMcpApi.java Generated RPC schema update (adds apps sub-namespace).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasOpenResult.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasOpenParams.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasListResult.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasListParams.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasListOpenResult.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasListOpenParams.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasInvokeActionResult.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasInvokeActionParams.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasCloseParams.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/SessionCanvasApi.java Generated RPC schema update (new canvas namespace).
java/src/generated/java/com/github/copilot/generated/rpc/ServerSessionsApi.java Generated RPC schema update (doc tweak).
java/src/generated/java/com/github/copilot/generated/rpc/ServerRpc.java Generated RPC schema update (adds agentRegistry API).
java/src/generated/java/com/github/copilot/generated/rpc/ServerAgentRegistryApi.java Generated RPC schema update (new agentRegistry namespace).
java/src/generated/java/com/github/copilot/generated/rpc/OptionsUpdateToolFilterPrecedence.java Generated RPC schema update (new enum).
java/src/generated/java/com/github/copilot/generated/rpc/OpenCanvasInstance.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/ModelBillingTokenPricesLongContext.java Generated RPC schema update (billing).
java/src/generated/java/com/github/copilot/generated/rpc/ModelBillingTokenPrices.java Generated RPC schema update (billing types/fields).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsSetHostContextDetailsTheme.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsSetHostContextDetailsPlatform.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsSetHostContextDetailsDisplayMode.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsSetHostContextDetailsAvailableDisplayMode.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsSetHostContextDetails.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsResourceContent.java Generated RPC schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsHostContextDetailsTheme.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsHostContextDetailsPlatform.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsHostContextDetailsDisplayMode.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsHostContextDetailsAvailableDisplayMode.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsHostContextDetails.java Generated RPC schema update (MCP Apps host context).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsDiagnoseServer.java Generated RPC schema update (MCP Apps diagnostics).
java/src/generated/java/com/github/copilot/generated/rpc/McpAppsDiagnoseCapability.java Generated RPC schema update (MCP Apps diagnostics).
java/src/generated/java/com/github/copilot/generated/rpc/DiscoveredMcpServerType.java Generated RPC schema update (doc tweak).
java/src/generated/java/com/github/copilot/generated/rpc/DiscoveredMcpServer.java Generated RPC schema update (doc tweak).
java/src/generated/java/com/github/copilot/generated/rpc/DiscoveredCanvas.java Generated RPC schema update (canvas discovery).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasSessionContext.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasOpenResult.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasOpenParams.java Generated RPC schema update (canvas provider params).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasInvokeActionParams.java Generated RPC schema update (canvas provider params).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasInstanceAvailability.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasHostContextCapabilities.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasHostContext.java Generated RPC schema update (canvas).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasCloseParams.java Generated RPC schema update (canvas provider params).
java/src/generated/java/com/github/copilot/generated/rpc/CanvasAction.java Generated RPC schema update (canvas actions).
java/src/generated/java/com/github/copilot/generated/rpc/AgentRegistrySpawnPermissionMode.java Generated RPC schema update (agent registry).
java/src/generated/java/com/github/copilot/generated/rpc/AgentRegistrySpawnParams.java Generated RPC schema update (agent registry).
java/src/generated/java/com/github/copilot/generated/ModelCallFailureEvent.java Generated session-events schema update (adds serviceRequestId).
java/src/generated/java/com/github/copilot/generated/McpServerTransport.java Generated session-events schema update (new enum).
java/src/generated/java/com/github/copilot/generated/McpServersLoadedServer.java Generated session-events schema update (adds transport/plugin fields).
java/src/generated/java/com/github/copilot/generated/McpAppToolCallCompleteToolMetaUI.java Generated session-events schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/McpAppToolCallCompleteToolMeta.java Generated session-events schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/McpAppToolCallCompleteEvent.java Generated session-events schema update (new event).
java/src/generated/java/com/github/copilot/generated/McpAppToolCallCompleteError.java Generated session-events schema update (MCP Apps).
java/src/generated/java/com/github/copilot/generated/HookProgressEvent.java Generated session-events schema update (new hook event).
java/src/generated/java/com/github/copilot/generated/ExternalToolRequestedEvent.java Generated session-events schema update (adds workingDirectory).
java/src/generated/java/com/github/copilot/generated/CapabilitiesChangedUI.java Generated session-events schema update (adds mcpApps/canvases flags).
java/src/generated/java/com/github/copilot/generated/CanvasRegistryChangedCanvasAction.java Generated session-events schema update (canvas registry payload).
java/src/generated/java/com/github/copilot/generated/CanvasRegistryChangedCanvas.java Generated session-events schema update (canvas registry payload).
java/src/generated/java/com/github/copilot/generated/CanvasOpenedAvailability.java Generated session-events schema update (new enum).
java/src/generated/java/com/github/copilot/generated/AutopilotObjectiveChangedStatus.java Generated session-events schema update (new enum).
java/src/generated/java/com/github/copilot/generated/AutopilotObjectiveChangedOperation.java Generated session-events schema update (new enum).
java/src/generated/java/com/github/copilot/generated/AssistantUsageEvent.java Generated session-events schema update (adds serviceRequestId).
java/src/generated/java/com/github/copilot/generated/AssistantMessageEvent.java Generated session-events schema update (adds serviceRequestId).
java/scripts/codegen/package.json Bumps @github/copilot schema dependency to ^1.0.55-5.
java/scripts/codegen/package-lock.json Lockfile update for @github/copilot 1.0.55-5 artifacts.
java/pom.xml Updates reference-impl version property to ^1.0.55-5.
java/.lastmerge Records last merged reference-impl SHA.

Copilot's findings

Files not reviewed (1)
  • java/scripts/codegen/package-lock.json: Language not supported
  • Files reviewed: 25/143 changed files
  • Comments generated: 6

Comment thread java/src/main/java/com/github/copilot/CopilotClient.java
Comment thread java/src/main/java/com/github/copilot/CopilotClient.java
Comment thread java/src/main/java/com/github/copilot/CopilotClient.java
Comment thread java/src/main/java/com/github/copilot/rpc/CopilotClientOptions.java
Comment thread java/src/main/java/com/github/copilot/rpc/SessionConfig.java
Comment thread java/src/main/java/com/github/copilot/rpc/ResumeSessionConfig.java
When the server returns a different sessionId and a subsequent step
(e.g. updateSessionOptionsForMode) fails, the exceptionally blocks
only removed the original sessionId from the sessions map, leaving
the re-keyed entry behind as a stale/closed session.

Fix: remove both the original and the active (possibly re-keyed)
session ID in createSession/resumeSession exceptionally blocks, and
unregister the session from the registry in updateSessionOptionsForMode
before closing it.

Addresses review comments on PR #1473.
@edburns edburns merged commit 23f0951 into main May 27, 2026
20 checks passed
@edburns edburns deleted the edburns/copy-copilot-sdk-java-pr-232 branch May 27, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants