Repository navigation
acpx 0.16.0
Highlights: Embedding hosts gain session-specific tools, turn-owned approvals, model controls, and agent discovery. Session, filesystem, queue, and process hardening improves reliability; Devin, fx, and Junie join the built-in agents.
Changes
-
Runtime/embedding: surface normalized ACP plan entries on status events and explicit empty snapshots that clear stale plans. Thanks @gadzan.
-
Dependencies: update Zod, React and its types, Vite, and lint-staged; retain the 48-hour release-age policy.
-
Dependencies: refresh Node types, Oxfmt, and Oxlint; align source builds and CI with pnpm 11.26.0. Thanks @dependabot.
-
Source builds: document Node 22.22.1 as the minimum Node 22 development version required by lint-staged; published CLI installs still support Node 22.13 and newer.
-
Dependencies: refresh Zod, tsx, React Flow, Oxlint, the Pi and Claude adapters, and transitive tooling dependencies while retaining the 48-hour release-age policy.
-
Runtime/embedding: support session-specific tool servers, turn-owned permission callbacks, session handle lookup, and shutdown that waits for owned connections and cleanup.
-
Runtime/model selection: expose a model setter that uses the adapter's advertised control and preserves the selected model across reconnects.
-
Runtime/discovery: expose installed agent entrypoints and native model display names through the existing registry and session status, with durable local fresh-session preparation for embedding hosts.
-
Dependencies: update Zod validation to 4.6.4. Thanks @dependabot.
-
Agents/built-ins: add the
devinshortcut for the installed Devin CLI ACP server, preserving its scoped compatibility behavior and standard model selection. Thanks @wtfsayo. -
Agents/built-ins: add the
fxshortcut for the installed fx ACP server. Thanks @wtfsayo. -
Agents/built-ins: add the
junieshortcut for JetBrains Junie using its registry-standard--acp=truelaunch argument. Thanks @junie-agent.
Fixes
-
Model selection: prefer the actual model control when an adapter also groups provider controls under the model category, while retaining custom model controls and legacy fallback. Thanks @wtfsayo.
-
Replay viewer: preserve user-message identities across repeated transcript projection so idle polling does not emit spurious patches.
-
Tooling: prevent malformed TOML configuration from hanging documentation lint by overriding the vulnerable
smol-tomlpin with 1.7.2 (GHSA-7w5x-hrqm-74c2). -
ACP/cancellation: coalesce repeated prompt cancellation, allow explicit retries after failed sends, and preserve successor prompt ownership when abort callbacks reenter the client.
-
Sessions/export: preserve large event segments without exceeding the JavaScript argument limit.
-
Sessions/hardening: keep session records and indexes private across atomic rewrites, including embedded file stores.
-
ACP/filesystem: return the standard resource-not-found error for missing files so agents can distinguish new files from failed reads.
-
Filesystem/hardening: use fs-safe roots for ACP file operations and replay-viewer reads, rejecting outside symlinks and special files while preserving contained aliases, normal file modes, and large reads.
-
Viewer/startup: release server resources when the HTTP port is unavailable and avoid opening an unused Vite WebSocket listener.
-
Storage/hardening: share private atomic writes across sessions, flow bundles, imports, and exports; keep history and new config files private while preserving output-directory permissions and append ordering.
-
Queue/hardening: deliver detached-owner startup options through stdin instead of temporary credential-bearing files, preserving large payloads and startup diagnostics.
-
Queue/ownership: keep lease records private and complete during heartbeat updates, drain pending writes before shutdown, and preserve replacement owners during stale recovery.
-
Sessions: preserve both completions when flows and CLI prompts share a session; keep live writers protected and cancel waiting turns without starting delayed prompts.
-
Replay viewer: reject malformed HTTP/WebSocket input and corrupt bundle metadata without terminating the server; recover live updates after transient read failures.
-
CLI/hardening: preserve Unicode across piped prompt chunks and keep optional performance captures private without blocking on special-file targets.
-
Conformance runner: reject successful operations when a case expects an error, and clear shutdown timers after the adapter exits.
-
Sessions: retain metadata updates received during saved-model replay and keep the adapter's later configuration acknowledgement authoritative.
-
Flows: settle pending ACP capture writes before reporting a prompt result, surface bundle write failures without crashing, and preserve visible adapter errors.
-
Replay viewer: keep existing clients synchronized when another viewer subscribes or reconnects, and serialize snapshot/poll publication to preserve patch version order.
-
Runtime/sessions: serialize turns per session record and finish cancellation and local finalization before acknowledging fresh-session preparation, preserving the reset across late writes and surfacing cleanup failures. Thanks @vincentkoc.
-
Codex/permissions: prefer offered one-time refusals that let the turn continue, and explain when safe cancellation can end the turn. Thanks @odrobnik.
-
ACP/processes: clean up witnessed POSIX descendants after bridge shutdown, startup failure, and observed exit, preserving signal inheritance and isolating late exits from replacement launches. Thanks @MertBasar0, @ma-pony, and @superWorldSavior.
Full changelog: v0.15.1...v0.16.0
Verification
- Published package: acpx@0.16.0, available on the
latestdist-tag. - Release workflow passed metadata/tag validation, lint, typecheck, build, and trusted npm publishing.
- Signed provenance matches source commit 497a37d and the published tarball digest.
- A clean
npm install acpx@0.16.0succeeded. The published package passed CLI version/help, public runtime handle serialization/shutdown, a compute-only flow, and built-in registry checks. npm audit signaturesverified all 42 installed package signatures and 18 attestations.- SHA-512 integrity:
sha512-HvCmlNc9JHUbAZfnk/m46RXV6WNLBM6zGZYWsHpcFaHFT4tShFbsb8qoh7J+nGc8aAYDqHiJEZggCRGIeXYUvQ==.