Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implement the first coherent slice of the unstable standard ACP subagent contract, independently of AIR's existing private contract.
Review corrections
Second review: lifecycle corrections
26 permanent lifecycle regressions cover these paths on both protocol versions, plus real-Codex terminal-lifetime tests. Existing AIR golden transcripts are unchanged. The terminal fixture uses full-access mode only for its fixed local script in an isolated workspace, avoiding CI hosts that cannot create sandbox network namespaces; production sandbox policy is unchanged.
CodeQL correction
Unexpected mock response-handler exceptions are logged server-side and return only a fixed HTTP 500 message. Regression tests cover synchronous exceptions, rejected stack-trace strings, and recovery on the next request. No production adapter behavior is changed.
Deliberate limits / next package
session_message/ directed-message reporting remains follow-up work; ordinary runtime operation reports remain available.Validation
npm run typechecknpm test: 1,946 passed, 39 skippednpm run buildnpm run test:integration: 15 passed, including actual Codex 0.160.1 active-child replay, fork identity isolation, cancellation, close, and child terminal completion across independent parent prompts through both ACP versions with a local mock modelnpm run bundle:all: all six targets compilenpm run codex-test: live-model no-tool smoke test completed withend_turngit diff --checkIncludes 75 focused selection/wire/lifecycle tests (72 run; 3 v2-batch cases skipped on v1), four response-delivery tests, and a foreground-state regression, with golden transcripts for both protocol versions. Existing AIR snapshots are unchanged.
The parallel validation run also reproduced a test-discovery bug: Codex downloaded plugins containing tests into an integration fixture under
tmp/. Vitest now discovers only the repository-ownedsrc/__tests__/andscripts/suites, using its default filename patterns, instead of collecting generated third-party fixtures.References checked
b4f0b13d76b24c936862d35adfa2ca54d80b0897: unstable subagent association and routing design, replay freshness, and restricted operations.c2b1a8633745dd859a2732b4e17d5ed61e869bb6: runtime response/cancellation behavior, alongside published SDK models and real wire decoding in the tests. The specification checkout is the protocol source of truth; the SDK is implementation evidence.