Repository navigation
Comparing changes
Open a pull request
base repository: agentclientprotocol/java-sdk
base: v0.14.0
head repository: agentclientprotocol/java-sdk
compare: v0.15.0
- 12 commits
- 20 files changed
- 3 contributors
Commits on Jun 11, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 6b98ab7 - Browse repository at this point
Copy the full SHA 6b98ab7View commit details
Commits on Aug 21, 2026
-
Fix non-deterministic notification ordering in AcpClientSession
Incoming JSONRPCNotifications were processed via independent .subscribe() calls, allowing async handlers to complete out of arrival order. Route notifications through a Sinks.Many drained by concatMap so each handler Mono must complete before the next notification is picked up. Adds testNotificationOrderPreservedWithAsyncHandler to verify that five rapid notifications with staggered async delays still arrive in order.
Configuration menu - View commit details
-
Copy full SHA for 39d10b0 - Browse repository at this point
Copy the full SHA 39d10b0View commit details -
Drain queued notifications before disposing on graceful close
closeGracefully() completed the notification sink and disposed the concatMap subscription in the same synchronous block, so notifications still queued were discarded. Sync session update consumers are always async - SyncSpec wraps them with subscribeOn(SYNC_HANDLER_SCHEDULER) - so a rapid burst was lost on close. Before the sink was introduced each notification was an independent subscription that outlived the session, so nothing was dropped. Await drain termination before teardown, bounded by requestTimeout so a handler that never completes cannot hang graceful close.
Configuration menu - View commit details
-
Copy full SHA for 3bba292 - Browse repository at this point
Copy the full SHA 3bba292View commit details -
Distinguish expected from anomalous notification-sink emission failures
A notification arriving after the sink completes is dropped, which is correct: a graceful shutdown stops accepting new work while draining what is queued, and JSON-RPC notifications carry no delivery guarantee. But that expected case was logged at WARN alongside overflow, zero-subscriber and non-serialized emission, which lose traffic on a live session. Log the shutdown cases at DEBUG and the anomalies at ERROR, and name the method in both.
Configuration menu - View commit details
-
Copy full SHA for 7c06f24 - Browse repository at this point
Copy the full SHA 7c06f24View commit details -
Use the verbatim Apache License 2.0, and ship LICENSE/NOTICE in artif…
…acts The LICENSE file was a paraphrase of Apache-2.0, not the license. It omitted section 6 (Trademarks) entirely and renumbered 7-9 down to 6-8, rewrote the section 2 copyright grant, narrowed the "Licensor" and "Work" definitions, and dropped the appendix. GitHub therefore classified the repository as NOASSERTION while every published POM declared Apache-2.0. Replace it with the verbatim text from apache.org, add a NOTICE file, and publish both under META-INF in every module artifact as Apache-2.0 section 4 expects. Also drop the redundant <repositories> block: Maven Central is implicit, enabling snapshots on it is meaningless, and inheriting a repository definition from a published parent POM is discouraged.
Configuration menu - View commit details
-
Copy full SHA for fe19131 - Browse repository at this point
Copy the full SHA fe19131View commit details -
Bump Jackson to 2.21.5 and Jetty to 12.0.37 to clear known CVEs
A CycloneDX 1.6 SBOM scan of the published closure reported 17 known vulnerabilities (5 HIGH, 11 MEDIUM, 1 LOW): 11 in jackson-databind and jackson-core 2.21.2, 6 in Jetty 12.0.14. Both reach every consumer as compile-scope transitives of acp-core and acp-websocket-jetty. Rescanning after the bump reports zero.
Configuration menu - View commit details
-
Copy full SHA for a3f7009 - Browse repository at this point
Copy the full SHA a3f7009View commit details -
Three *IT classes existed but never executed: Surefire's default includes do not match *IT, and no Failsafe plugin was configured, so `mvn verify` - which is what CI runs - silently skipped them. Wire Failsafe. CleanShutdownIT's 4 tests now run and pass; GeminiCliIT's 5 correctly self-skip via @EnabledIfEnvironmentVariable without GEMINI_API_KEY.
Configuration menu - View commit details
-
Copy full SHA for 2c1ebed - Browse repository at this point
Copy the full SHA 2c1ebedView commit details -
Pin GitHub Actions to commit SHAs
All 8 action references used floating tags. release.yml runs with contents: write and holds the Maven Central credentials and the GPG signing key, so a retagged or compromised action would execute with publish rights. Pin each to the commit SHA the tag currently resolves to, keeping the version in a trailing comment.
Configuration menu - View commit details
-
Copy full SHA for 92ad7b5 - Browse repository at this point
Copy the full SHA 92ad7b5View commit details -
Point the READMEs at the current documentation site
The READMEs linked to springaicommunity.mintlify.app, which has retired this project - its own nav files acp-java-sdk under "Moved to markpollack" - and which still documents 0.11.0, three releases behind. The maintained copy is lab.pollack.ai/docs/acp-java-sdk. All six linked routes verified.
Configuration menu - View commit details
-
Copy full SHA for 75ebbe7 - Browse repository at this point
Copy the full SHA 75ebbe7View commit details -
Stop HandlerExceptionTest racing the async dispatch
Both tests slept a fixed 500ms and then asserted the response had been sent. The handler runs asynchronously, so on a loaded machine the sleep expires first: the test failed 4 of 5 local runs at the previous commit and twice in a row on CI. Poll for the expected message to a 10s deadline instead. 10 consecutive local runs pass, and the happy path is faster than the old fixed sleep.
Configuration menu - View commit details
-
Copy full SHA for 3bdc366 - Browse repository at this point
Copy the full SHA 3bdc366View commit details -
Add the 0.15.0 changelog entry
Correctness and supply-chain hygiene: notification ordering and the graceful-close drain, Jackson/Jetty CVE remediation, the verbatim Apache-2.0 license and packaged LICENSE/NOTICE, and the build fixes. No protocol or public API changes - verified: one main-source file changed since v0.14.0, with no public or protected signature changes.
Configuration menu - View commit details
-
Copy full SHA for 35d66d2 - Browse repository at this point
Copy the full SHA 35d66d2View commit details -
Bound workflow jobs to 30 minutes
No job declared timeout-minutes, so a wedged runner would hold the job for the 6-hour default before giving up - which is exactly what happened twice on main, at a step that completes in about a minute locally.
Configuration menu - View commit details
-
Copy full SHA for 07408d6 - Browse repository at this point
Copy the full SHA 07408d6View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.14.0...v0.15.0