Repository navigation
Conversation
Mabolla
force-pushed
the
feat/acp-subagent-updates
branch
from
October 15, 2026 16:05
2163ec4 to
7e94d5f
Compare
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.
What does this PR do?
Opted-in ACP clients receive ID-addressed subagent lifecycle and progress updates, with stable child IDs and immediate-parent associations. Parent controls remain available; announced child sessions advertise no mutations and reject child-directed control requests before any gateway lookup.
Fixes #137069. Implements the merged ACP subagents RFD #1992.
Gateway migration
Rebased onto main
7520c4e8b3791f081b2c26d5ea9a0c07b0363401. NormalHermesACPAgent()construction selects GatewayACPAgent. TurnRunner now publishes the bounded lifecycle fields through its generation-fenced canonical stream, and the ACP event pump projects those events. In particular, subagent completion is published before the pre-existing completion-notice branch returns.The explicitly injected SessionManager adapter remains covered too. Nested delegate relays preserve child and parent identity instead of relabelling nested events.
The pinned SDK 0.9.0 predates this variant. Public initialization observer and sender-factory hooks retain the raw capability and queue the additive update through the same ordered sender. Only object-valued
clientCapabilities.subagents(including{}) opts in; absent/null/boolean values do not. No dependency bump, schema monkeypatch or new private SDK access.Scope
Lifecycle/progress only, no child transcript or reasoning. The wire update uses the immediate parent as outer sessionId, a stable child sessionId inside subagent_update, and state running/idle/unknown. Completed/interrupted children report end_turn/cancelled; timed-out workers remain unknown.
Main currently disables delegation in managed workers. This PR does not enable an unsupported execution path; it projects delegation where the existing execution owner already supports it.
Validation
Linux, Python 3.14.7, ACP SDK 0.9.0:
Use a fresh PM dev/test environment with
--extra acpand run the relevant files throughscripts/run_tests.sh.Live GUI/model-backed delegation, paid provider calls and native Windows/macOS validation remain unclaimed.
Native Linux cloud validation
GitHub Actions job checked out exact PR head
7e94d5f8403c56396e3b24a4c37d7efbd420a204on ubuntu-latest, Python 3.14.7. Unix socket support was verified before running the full ACP suite plus managed-worker construction/tool-event and local-viewer event/status regressions throughscripts/run_tests.shwith file retries disabled.374 tests passed, 0 failed, 1 Windows-only test skipped, across 80 files. Real daemon/Unix-control-socket and ACP stdio integration cases passed. Full logs are attached to the run as
acp-daemon-137380.