The first OUT-OF-PROCESS subagent backend, proving the seam generalizes past the in-process backends. @deepseek-ai/dsh-subagent-acp runs each child agent in a spawned subprocess, driven over the Agent Client Protocol as the CLIENT — the direction-inverted twin of the dsh-acp server bridge. Point the configured command at the acp-agent example and the harness talks to its own process. - Fresh process per run: start spawns, runs one ACP session (initialize → newSession → prompt), dispose kills the subprocess and awaits its exit. - Minimal client stub: advertises no fs/terminal; accumulates agent_message_chunk text as the result output; auto-answers session/request_permission by a configured policy (reject default / allow). No start-time capabilities (an out-of-process child can't enforce the parent's depth/tool-filter); ignores request.parent; injects only `subagents`. - StopReason mapping (end_turn→completed, cancelled→aborted, …); result resolves error/aborted on a child failure, never rejects (seam contract). - Security: credential-shaped ambient env vars are scrubbed; the child's own key is forwarded only via explicit config.env. A spawn-level error (ENOENT) is captured and raced against the ACP drive so a bad command settles error rather than crashing the parent. Testing designed at every tier: keyless integration drives a scripted mock ACP server subprocess (cancellation incl. the pre-newSession race and a torn-pipe-after-cancel, permission auto-answer, non-message updates, spawn failure, HMR, export shape) at 100% coverage; a with-key e2e drives the REAL acp-agent example process (PONG + real file write, verified on disk) — the harness driving itself. Snapshot coverage of an ACP child is deferred as TODO(acp-subagent-replay) (each child is its own process with its own replay). Stayed on @agentclientprotocol/sdk 0.25.1: the proposed 0.28.x bump only deprecates the stable ClientSideConnection/AgentSideConnection API this layer uses (33 sites incl. the server bridge), turning no-deprecated red across code this PR shouldn't rewrite — that fluent-API migration is its own follow-up. The backend needs nothing 0.28.x adds. This completes the subagent seam stack (PR1 interface → PR2 in-process → PR2.5 snapshot infra → PR3 ACP); the seam RFC moves to implemented/, amended.
43 lines
1.7 KiB
JSON
43 lines
1.7 KiB
JSON
{
|
|
"files": [],
|
|
"references": [
|
|
{ "path": "./vendor/cosmokit" },
|
|
{ "path": "./vendor/schemastery" },
|
|
{ "path": "./vendor/cordis" },
|
|
{ "path": "./vendor/loader" },
|
|
{ "path": "./vendor/include" },
|
|
{ "path": "./vendor/group" },
|
|
{ "path": "./vendor/timer" },
|
|
{ "path": "./vendor/hmr" },
|
|
{ "path": "./vendor/logger-console" },
|
|
{ "path": "./packages/util/brand" },
|
|
{ "path": "./packages/llm/llm" },
|
|
{ "path": "./packages/core/session" },
|
|
{ "path": "./packages/session-persistence/session-persistence" },
|
|
{ "path": "./packages/session-persistence/session-persistence-jsonl" },
|
|
{ "path": "./packages/session-persistence/session-persistence-sqlite" },
|
|
{ "path": "./packages/core/system-prompt" },
|
|
{ "path": "./packages/core/agent" },
|
|
{ "path": "./packages/core/tools" },
|
|
{ "path": "./packages/core/agent-loop" },
|
|
{ "path": "./packages/core/agent-core" },
|
|
{ "path": "./packages/bash/bash" },
|
|
{ "path": "./packages/llm/llm-deepseek" },
|
|
{ "path": "./packages/llm/llm-pi-ai" },
|
|
{ "path": "./packages/bash/bash-local" },
|
|
{ "path": "./packages/bash/tool-bash" },
|
|
{ "path": "./packages/support/invariants" },
|
|
{ "path": "./packages/ui/acp" },
|
|
{ "path": "./packages/ui/acp-agent" },
|
|
{ "path": "./packages/ui/stdio-agent" },
|
|
{ "path": "./packages/support/ui-stdio" },
|
|
{ "path": "./packages/support/llm-replay" },
|
|
{ "path": "./packages/subagent/subagent" },
|
|
{ "path": "./packages/support/subagent-mock" },
|
|
{ "path": "./packages/subagent/tool-subagent" },
|
|
{ "path": "./packages/subagent/subagent-spawn" },
|
|
{ "path": "./packages/subagent/subagent-fork" },
|
|
{ "path": "./packages/subagent/subagent-acp" }
|
|
]
|
|
}
|