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.
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