Port copilot-sdk-java PR #232: reference-impl-sync with EMPTY mode fixes#1473
Merged
Conversation
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
Contributor
There was a problem hiding this comment.
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 withpostToolUseFailure+ 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
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Copy non-pom changes from github/copilot-sdk-java PR #232:
See github/copilot-sdk-java#232 .