Skip to content

Sync upstream agentclientprotocol/codex-acp main - #21

Merged
lodystage[bot] merged 23 commits into
mainfrom
sync-agentclientprotocol-main
Aug 20, 2026
Merged

Sync upstream agentclientprotocol/codex-acp main#21
lodystage[bot] merged 23 commits into
mainfrom
sync-agentclientprotocol-main

Conversation

@lodystage

@lodystage lodystage Bot commented Aug 20, 2026

Copy link
Copy Markdown

Summary

  • Merge agentclientprotocol/codex-acp main through ae048a6.
  • Update Codex app-server integration and generated types for Codex 0.148.0.
  • Sync the Lody package release version to upstream 1.6.2 while retaining the acp-extension-codex package and binary names.
  • Add upstream typed session failures and the opt-in AIR per-turn agent file-change report.
  • Add context-compaction metadata and provider listing/switching support.
  • Preserve Lody-specific steer, fork-at-turn, structured warning/error, MCP startup, process lifecycle, and available-command behavior while resolving conflicts.

Compatibility decisions

  • Keep Lody package and binary names, while synchronizing the release version with upstream.
  • Keep Lody release workflows.
  • Do not import upstream release-please configuration, generated changelog, or upstream release workflow.
  • Keep provider warnings and terminal errors as structured ACP metadata rather than assistant text.

Validation

  • npm run typecheck
  • npm test — 51 passed / 6 skipped files; 461 passed / 29 skipped tests
  • npm run build

Test environment note

The local Codex 0.148.0 optional native package was malformed and could not launch. Process-based tests therefore used the locally installed Codex 0.145 binary; generated-schema, protocol, mock, typecheck, and build coverage use the merged 0.148.0 integration.

dependabot Bot and others added 23 commits August 9, 2026 18:14
…ry (agentclientprotocol#380)

Bumps the npm_and_yarn group with 1 update in the / directory: [hono](https://github.com/honojs/hono).


Updates `hono` from 4.12.31 to 4.13.1
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](honojs/hono@v4.12.31...v4.13.1)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.13.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat: expose typed session failures for AIR

Negotiate safe typed session failures while preserving legacy ACP behavior for other clients.

Use PromptResponse metadata for terminal turn failures and session updates for asynchronous failures, with restart-safe identities and deterministic recovery revisions.

* fix: make Codex error classification exhaustive

Tie session-failure categories to the generated CodexErrorInfo union so schema changes fail typecheck instead of silently falling through. Preserve a safe runtime fallback for newer app-server variants and extract HTTP status codes structurally.

* refactor: centralize AIR extension metadata keys
* ci: enforce conventional commit PR titles

* ci: release-please flow
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
)

Expose compaction through the shared provider-neutral ACP tool lifecycle so
clients can recognize it without relying on adapter-specific text.
…ocol#393)

* 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 agentclientprotocol#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>
…#404)

* 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>
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
* fix: update codex to 0.148.0

* fix: repair types and tests after Codex update

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
Co-authored-by: acp-release-bot[bot] <246668977+acp-release-bot[bot]@users.noreply.github.com>
# Conflicts:
#	.github/workflows/codex-update.yml
#	.github/workflows/e2e.yml
#	.github/workflows/publish.yml
#	package-lock.json
#	package.json
#	src/CodexAcpServer.ts
#	src/CodexAppServerClient.ts
#	src/CodexCommands.ts
#	src/CodexEventHandler.ts
#	src/index.ts
@lodystage
lodystage Bot merged commit 742a3ec into main Aug 20, 2026
1 check passed
@lodystage
lodystage Bot deleted the sync-agentclientprotocol-main branch August 20, 2026 14:12
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.

5 participants