Skip to content

chore(acp-deps): pi 0.84.2, claude-agent-acp 0.69.0 + sdk-0.3.234 override, codex-acp upstream sync 47b57da - #371

Merged
VikashLoomba merged 11 commits into
mainfrom
chore/acp-deps-2026-08-17
Aug 17, 2026
Merged

chore(acp-deps): pi 0.84.2, claude-agent-acp 0.69.0 + sdk-0.3.234 override, codex-acp upstream sync 47b57da#371
VikashLoomba merged 11 commits into
mainfrom
chore/acp-deps-2026-08-17

Conversation

@VikashLoomba

Copy link
Copy Markdown
Collaborator

ACP dependency maintenance per the CONTRIBUTING runbook ("When the dependency gate blocks").

What

  • codex-acp upstream sync — non-squash subtree merge of upstream agentclientprotocol/codex-acp main 47b57da (v1.3.0 + v1.4.0, 6 commits); upstream tip recorded in scripts/attribution-foreign-heads.json. Surface-changed: upstream #393 reshaped the negotiated jetbrains.air.sessionFailure wire (11 categories → 6; actions → retry/login/new_session; retryable/phase/safeMessage/turnId dropped; severity/title/details added; no explicit cleared frame). The consuming acp-agents client is adapted in the same PR — typed-failures.ts parser/types, mapTypedSessionFailure classification (access→AUTH_REQUIRED; limit→PROVIDER_USAGE_LIMIT except context/budget ceilings flagged new_session which fail fast; request→non-recoverable; else recoverable = actions.includes("retry")), warning records never enter the failure latch.
  • pi runtime 0.84.1 → 0.84.2 (exact pins: pi-ai, pi-coding-agent, pi-agent-core) — mechanical; provider-error-strings.ts fixture re-verified byte-identically against the installed 0.84.2 dists, pin-contract tests updated.
  • claude-agent-acp 0.67.0 → 0.69.0 — mechanical for us: both minors add AIR features gated behind a client capability our claude backend does not advertise. Docs-drift citations moved.
  • claude-agent-sdk → 0.3.234 via re-added root pnpm.overrides (0.69.0 still exact-pins 0.3.232; 0.3.233/234 are additive). Drop the override once the adapter catches up.

Verification

Dependency gate fully green (all tracked deps == latest, upstream contained, wrapped runtime current). Attribution gate green (6 foreign commits exempt). Build, typecheck, workspace tests green; codex-acp fork vitest 457 pass. Changesets: patch for acp-agents, codex-acp, pi-acp.

⚠️ Merge with a merge commit (not squash) — the branch contains the non-squash subtree merge; squashing would break the dependency gate's upstream-ancestry invariant on main.

serjic and others added 11 commits August 14, 2026 12:13
Co-authored-by: Junie <junie@jetbrains.com>
* feat: expose warning-severity advisories for AIR (IJAI-993)

Codex reports non-fatal advisories as dedicated app-server notifications, but
codex-acp flattened them into assistant text: `warning` became
`Warning: <message>` and `configWarning` became `Config warning: <summary>`,
both as an untagged `agent_message_chunk`. The client could not tell them from
the model's own words, so a compaction hint rendered as if the agent had said it.

Extend the typed session-failure extension from #383 rather than adding a
parallel notice concept: a record now carries an optional `severity` of `error`
or `warning`, plus an `advisory` category whose wording comes from the
app-server. Clients that negotiated the `sessionFailure` capability receive the
structured record; everyone else keeps the existing text, unchanged.

Advisories live in their own `sessionNotice` slot under a `:notice` id, so they
never disturb the revision bookkeeping of an in-flight terminal failure — the
two records coexist and the client decides which to show.

`severity` is optional on the wire and absent means `error`, so an AIR build
that predates this change keeps treating every record it receives as a failure.

Scoped out deliberately: `thread/compacted` keeps its italic transcript line
(informational, not a warning), and `guardianWarning` / `deprecationNotice`
remain dropped as before.

* feat: route deprecationNotice through the advisory banner too

deprecationNotice carries the same {summary, details} shape as configWarning,
so treating the two differently was inertia, not design: it was simply already
being dropped.

Unlike warning and configWarning it has no legacy text rendering to preserve,
so it is emitted only to clients that negotiated typed records. A client that
did not must keep seeing exactly what it sees today, which is nothing.

Extracts joinSummaryAndDetails so the two notifications share one formatting
rule rather than repeating it.

* feat: align session failure metadata with AIR protocol

* fix: preserve Codex error messages in AIR metadata

* fix: preserve typed failure incident lifecycle

Keep reconnect retries on one revisioned record until Codex resumes output,
then allocate a new incident for later failures. Preserve turn attribution for
late notifications and avoid suggesting a new session for account quota.
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
* feat: report changed files to AIR

Standard ACP diffs miss paths changed through opaque commands, Git operations, and generators.
When AIR negotiates the extension, run a bounded read-only ephemeral Codex audit and publish one correlated terminal report.

Keep report delivery fail-open so audit timeout, cancellation, or provider failure never blocks the user prompt.

* fix: resolve filesystem aliases in file change reports

macOS agents can report /private/tmp paths while the session cwd uses /tmp.
Canonicalize the nearest existing ancestors before containment checks, while
leaving the path leaf unresolved for deleted files and changed symlink nodes.
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
* fix: switch providers for loaded sessions

Co-authored-by: Junie <junie@jetbrains.com>

* refactor: inline codex restart callback type

* Move Codex restart lifecycle into server

Co-authored-by: Junie <junie@jetbrains.com>

* fix: preserve synchronous session lifecycle

Co-authored-by: Junie <junie@jetbrains.com>

---------

Co-authored-by: Junie <junie@jetbrains.com>
…7b57da) into packages/codex-acp

# Conflicts:
#	packages/codex-acp/CHANGELOG.md
#	packages/codex-acp/package-lock.json
#	packages/codex-acp/package.json
#	packages/codex-acp/src/CodexAcpServer.ts
#	packages/codex-acp/src/__tests__/acp-test-utils.ts
…AIR wire reshape

The codex-acp upstream sync (47b57da, PR #393) reshaped the negotiated
jetbrains.air.sessionFailure record our CodexBackend advertises and consumes: 11 categories
collapsed to six (connection/access/limit/request/service/unknown), actions to
retry/login/new_session, and phase/source/safeMessage/retryable/turnId gave way to
severity/title/details. The extension version stayed 1, so the server keeps sending us the
new shape — our old parser would have dropped it and a walled turn would look like an empty
successful one (a defect CI cannot see).

- readTypedSessionFailure parses the new shape; severity absent => error; details optional.
- mapTypedSessionFailure: access => AUTH_REQUIRED; limit => PROVIDER_USAGE_LIMIT unless a
  context/budget ceiling flagged with new_session (fail fast, preserving the old split);
  request => non-recoverable; else AGENT_EXECUTION_ERROR with recoverable = actions.includes(retry)
  (the stand-in for the removed retryable).
- acp-client latches only error records; advisory warnings never fail a turn; clearing is now
  by absence + the per-turn baseline (the server no longer emits a cleared frame).
- Unit + integration suites rewritten to the new wire; full acp-agents suite green.
Mechanical patch bump of the pi runtime family (pi-ai, pi-coding-agent, pi-agent-core) 0.84.1
-> 0.84.2, exact pins in @automatalabs/pi-acp. 0.84.2 ships no breaking changes; its entries are
additive features and TUI/provider-stream/usage-streaming fixes, none touching the pi-acp
integration surface. Classifier fixtures re-verified byte-identical against the installed 0.84.2
dists (auth-guidance / agent-session prose and pi-ai's error-classification util dists unchanged),
so only the pin fixtures move: FIXTURE_PI_PIN and the packaging.test.ts exact-pin map.
…-sdk 0.3.234 override

Bump @agentclientprotocol/claude-agent-acp 0.67.0 -> 0.69.0 (exact) in @automatalabs/acp-agents,
and re-add the root pnpm.overrides pin lifting the wrapped @anthropic-ai/claude-agent-sdk to 0.3.234
(0.69.0 still exact-pins 0.3.232, below npm latest). Both adapter minors add only the AIR extension
(typed session failures #992, changed files #1001), gated behind a capability the claude backend
does not advertise, so they are inert for us; the wrapped SDK is never imported directly and
0.3.233/0.3.234 changed no terminal/error/usage semantics we depend on. Protocol-coverage dist
probes still match the 0.69.0 dist; docs citations moved 0.67.0 -> 0.69.0 (docs-drift).
@VikashLoomba
VikashLoomba enabled auto-merge August 17, 2026 22:59
@VikashLoomba
VikashLoomba merged commit d49c9f7 into main Aug 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants