Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: agentclientprotocol/java-sdk
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.14.0
Choose a base ref
...
head repository: agentclientprotocol/java-sdk
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.15.0
Choose a head ref
  • 12 commits
  • 20 files changed
  • 3 contributors

Commits on Jun 11, 2026

  1. Configuration menu
    Copy the full SHA
    6b98ab7 View commit details
    Browse the repository at this point in the history

Commits on Aug 21, 2026

  1. 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.
    ljiro authored and markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    39d10b0 View commit details
    Browse the repository at this point in the history
  2. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    3bba292 View commit details
    Browse the repository at this point in the history
  3. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    7c06f24 View commit details
    Browse the repository at this point in the history
  4. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    fe19131 View commit details
    Browse the repository at this point in the history
  5. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    a3f7009 View commit details
    Browse the repository at this point in the history
  6. Run the integration tests

    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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    2c1ebed View commit details
    Browse the repository at this point in the history
  7. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    92ad7b5 View commit details
    Browse the repository at this point in the history
  8. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    75ebbe7 View commit details
    Browse the repository at this point in the history
  9. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    3bdc366 View commit details
    Browse the repository at this point in the history
  10. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    35d66d2 View commit details
    Browse the repository at this point in the history
  11. 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.
    markpollack committed Aug 21, 2026
    Configuration menu
    Copy the full SHA
    07408d6 View commit details
    Browse the repository at this point in the history
Loading