Repository navigation
Release 0.18.0
Remote agents: the Streamable HTTP and WebSocket transport from the ACP RFD, contributed by @kamikaz1k (#7), on plain http:// (HTTP/2 over cleartext) and https://, with a new acp-streamable-http-jetty module for the agent side. Plus a choice of Jackson 2 or Jackson 3 (#12), and the fixes found reviewing, interop-testing and load-testing the transport.
Upgrading: three changes need attention
acp-coreno longer contains a JSON implementation (#12). If you depend onacp-corealone, add one JSON module;acp-agent-support,acp-test,acp-websocket-jettyandacp-streamable-http-jettyalready bringacp-json-jackson2.<dependency> <groupId>com.agentclientprotocol</groupId> <artifactId>acp-json-jackson2</artifactId> <!-- or acp-json-jackson3 --> <version>0.18.0</version> </dependency>
- A second client on an already-connected transport now fails at construction. This fixes the Spring Boot "unicast" failure, where an
AcpAsyncClientand anAcpSyncClientbean built from one transport left the second client waiting out its request timeout. - Unknown-field handling moved to the mapper (#10). A
JacksonAcpJsonMapperbuilt from a barenew ObjectMapper()is now strict about unknown fields; start fromJacksonAcpJsonMapper.defaultObjectMapper()to keep the lenient default.
Highlights
- Streamable HTTP transport. Client:
StreamableHttpAcpClientTransportinacp-core(JDKHttpClient, no new dependency), with SSE stream reconnect and HTTP/2 over cleartext. Agent:StreamableHttpAcpAgentTransport(Jetty 12.1) serves HTTP/SSE and a WebSocket upgrade on one path, one agent per remote connection.StreamableHttpAcpServletmounts in any Servlet 6 container. - JSON modules.
acp-json-jackson2(Jackson 2) andacp-json-jackson3(Jackson 3.1.5,tools.jackson) write identical bytes on the wire. Mapper selection is deterministic byAcpJsonMapperSupplier.priority(), and the system propertyacp.json.mapper.supplieroverrides it. - Single-turn enforcement is per session, not per connection, so many sessions share one HTTP connection.
- Fixed: the multi-prompt wedge under CPU contention (#14), reported by @krickert. CI now runs the contention tests pinned to one CPU.
- Deprecated for removal:
WebSocketAcpAgentTransport(acp-websocket-jetty). Useacp-streamable-http-jetty, which serves the same WebSocket clients.
Tested
- 890 tests in the full build.
- A cross-SDK suite against the TypeScript, Rust and Python SDKs in both directions, plus load scenarios up to 1,000 connections and 5,000 prompts with 0 errors:
integration-testing/scripts/run-all.sh, 11/11 passing.
The complete list is in CHANGELOG.md.
Maven Central
com.agentclientprotocol:*:0.18.0: acp-core, acp-json-jackson2, acp-json-jackson3, acp-annotations, acp-agent-support, acp-test, acp-streamable-http-jetty, acp-websocket-jetty (deprecated).
Full Changelog: v0.17.0...v0.18.0