Files
deepseek-harness/packages/acp
Tianyi Cui ac88b6e4c7 fix(acp): retain nested teardown diagnostics
ACP waits for every owned Agent disposal and throws one AggregateError when any Session teardown fails. The aggregate message embedded each rejected value with String(failure) because the connection-close logger itself renders only the outer error message. String preserves only an Error name and message, so causes and AggregateError members disappeared from the operational warning.

Render each per-session rejection with the existing errorChain diagnostic helper before joining it into the outer message. The original rejected values remain in AggregateError.errors for programmatic inspection, while the message now carries cause chains and nested aggregate members through the String-based logger.

Exercise a disposal failure containing both AggregateError members and a nested cause, while retaining the existing barrier that proves the second Session finishes disposal before any warning is emitted. All 10 ACP disposal tests pass and the ACP TypeScript project builds cleanly.
2026-08-02 20:14:46 +08:00
..
2026-07-26 05:06:39 +08:00

acp/ — Agent Client Protocol automation

English | 中文

The ACP group exposes harness agents to programmatic clients. It is an interoperability transport, not a presentation or human-interaction layer.

Package Role
acp/ Automation-only ACP server: fresh text sessions, committed assistant output, machine permission policy, cancellation, and connection-owned teardown.

The matching out-of-process subagent client remains in subagent/subagent-acp because it implements the subagent provider interface; arbitrary ACP clients may drive the same server contract.