All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Protocol currency: catching up to ACP spec v0.13.6 (June 2026). Supersedes the never-published 0.13.0 (its content ships here).
logoutmethod (AcpAsyncClient/AcpSyncClient.logout,@Logout, agent handler) — clears stored credentials.session/deletemethod (deleteSession,@DeleteSession, agent handler) — permanently deletes a stored session; gated on thesessionCapabilities.deletecapability.additionalDirectoriesonsession/new,session/load,session/resume,session/forkrequests and onSessionInfo— extra workspace roots beyondcwd.- Per-chunk
messageIdonAgentMessageChunk,AgentThoughtChunk,UserMessageChunk, plussendMessage(text, messageId)/sendThought(text, messageId)convenience overloads onPromptContextandSyncPromptContext. - Provider configuration methods (
providers/list,providers/set,providers/disable), marked@UnstableAcpApi: client methodslistProviders/setProvider/disableProvider, agent handlers +@ListProviders/@SetProvider/@DisableProvider, theProviderInfo/ProviderCurrentConfig/ProvidersCapabilitiestypes, and aproviderscapability onAgentCapabilitiessurfaced viaNegotiatedCapabilities.supportsProviders(). sessionCapabilities.deleteandsessionCapabilities.additionalDirectories, surfaced viaNegotiatedCapabilities(supports*/require*).
- Promoted the session config-option API to stable: removed
@UnstableAcpApifromSetSessionConfigOptionRequest/SetSessionConfigOptionResponse,SessionConfigOption,SessionConfigSelect,SessionConfigSelectOption,ConfigOptionUpdate, and@SetSessionConfigOption—session/set_config_optionandsession/set_modeare now in the stable ACP schema. Thebooleanconfig-option variant (SessionConfigBoolean) remains an unstable SDK extension. - Aligned Jackson to 2.21.2 (matches the agentworks-bom managed set / Spring Boot's jackson-bom).
- WebSocket transport maximum message size increased to 4 MB.
- The session-model API —
session/set_model(setSessionModel,@SetSessionModel, handler),SetSessionModelRequest/SetSessionModelResponse,SessionModelState,ModelInfo, and themodelsfield on the new/load/resume/fork session responses — is deprecated for removal. The spec removed it (June 2026, v0.13.5); expose model selection throughsession/set_config_optionwith a config option whosecategoryis"model"instead. Scheduled for removal in a future release.
- WebSocket client transport no longer echoes agent requests back to the agent.
0.9.0 - 2026-02-XX
- Pure Java implementation of Agent Client Protocol (ACP) specification
AcpSchema— complete protocol type definitions (sealed interfaces and records)AcpSyncClient— synchronous blocking clientAcpAsyncClient— reactive async client with Project ReactorAcpClientSession— low-level client session implementationStdioAcpClientTransport— stdio transport for launching agents as subprocessesWebSocketAcpClientTransport— JDK-native WebSocket client transport (no extra dependencies)AgentParameters— process configuration builder for agent launch
AcpSyncAgent— synchronous agent with blocking handlersAcpAsyncAgent— reactive agent withMono-returning handlersStdioAcpAgentTransport— stdio transport for agentsSyncPromptContext— convenience API for sending messages, reading files, requesting permissions- All handler types: initialize, newSession, loadSession, prompt, setSessionMode, setSessionModel, cancel
@AcpAgent— class-level agent annotation with name/version@Initialize,@NewSession,@LoadSession,@Prompt,@Cancel— handler annotations@SetSessionMode,@SetSessionModel— session configuration annotations@SessionId,@SessionState— parameter annotationsAcpAgentSupport— bootstrap and builder for annotation-based agents- Flexible method signatures with automatic parameter resolution
- Auto-conversion of return values (
String→PromptResponse,void→endTurn()) - Interceptor support for cross-cutting concerns
- Custom argument resolvers and return value handlers
NegotiatedCapabilities— capability negotiation between client and agent- Client capabilities: file read/write, terminal execution, permission requests
- Agent capabilities: load session, image content, slash commands
require*()methods that throwAcpCapabilityExceptionif unsupported
AcpProtocolException— structured JSON-RPC errors with codesAcpCapabilityException— capability not supportedAcpConnectionException— transport-level failures- Standard error codes via
AcpErrorCodes
- Stdio transport (client and agent)
- WebSocket client transport (JDK-native)
- WebSocket agent transport (Jetty-based,
acp-websocket-jettymodule) - In-memory transport pair for testing (
acp-testmodule)
InMemoryTransportPair— bidirectional in-memory transport for unit testsMockAcpClient— mock client builder with file content fixtures- Fast, deterministic testing without subprocess I/O
- Full SessionUpdate types: AgentMessageChunk, AgentThoughtChunk, ToolCall, ToolCallUpdateNotification, Plan, AvailableCommandsUpdate, CurrentModeUpdate
- MCP server configuration in session requests
_metaextensibility on all protocol messages- All StopReason values: END_TURN, MAX_TOKENS, REFUSAL, CANCELLED
- Maven Central Portal publishing configuration
- CI workflow with GitHub Actions
- 258 unit tests
- Integration tests with Gemini CLI
- Java 17 (LTS)
- Project Reactor 2023.0.12
- Jackson 2.18.2
- MCP JSON utilities 0.15.0-SNAPSHOT
- SLF4J 2.0.16