Files
deepseek-harness/packages/subagent
Tianyi Cui 8723186398 Honor an already-aborted signal in the subagent tool bridge (review feedback)
addEventListener('abort') does not fire for a signal already aborted before the
listener is added, so a parent step cancelled before the subagent tool ran
would never reach the child — the tool leaned on each provider re-checking
request.signal itself, leaving the bridge's own claim incomplete for any
provider that relies on run.cancel(). Re-check exec.signal.aborted right after
registering and cancel explicitly. Regression test uses a spy provider that
only reacts to cancel() (never inspects the signal); proven to hang without the
fix (result never settles) and settle aborted with it.
2026-06-22 16:32:10 +08:00
..

subagent/ — subagent capability family

The subagent seam: an agent delegating work to a child agent. Like the bash and llm families this is a capability seam (see capability seams) — but with one defining difference: multiple provider implementations coexist in one context, registered by name, rather than the single-implementation bash shape. The registry mirrors the LLM adapter registry.

Package Role ctx key
subagent/ Abstract subagent seam: named-provider registry + vocabulary ctx.subagents
tool-subagent/ Model-facing subagent delegation tool over ctx.subagents (registers on ctx.tools)

The interface lives at subagent/subagent/. Provider implementations live in their own packages — the in-process dsh-subagent-spawn / dsh-subagent-fork and the out-of-process dsh-subagent-acp — plus the test-only dsh-subagent-mock in support. All product packages except the mock.

The proposal and design rationale: docs/rfc/proposed/feature/2026-06-21-subagent-capability-seam.md.