Review finding (Codex round 1): abstract erases at runtime and @deepseek-ai/dsh-tasks used to be the mountable registry, so a stale composition row would register a ctx.tasks with no method implementations and fail far from the misconfiguration. The seam constructor now rejects direct mounts with a load-time pointer at dsh-tasks-local; the seam suite pins the fence, the Agent Note cost paragraph records the actual behavior, and the stale tool-pty README requirement line names the implementation package.
pty/ — persistent PTY capability family
PTY stands for Pseudo-Terminal(伪终端). This capability provides persistent, owner-scoped terminal sessions for workflows that require state across tool calls or interactive stdin. PTY complements the one-shot bash and filesystem tools; it does not replace their stronger per-operation contracts.
| Package | Role | ctx key |
|---|---|---|
pty (@deepseek-ai/dsh-pty) |
Backend registry, branded ids, exact-Agent ownership, session operations, and awaited cleanup | ctx.pty |
pty-local (@deepseek-ai/dsh-pty-local) |
Local node-pty backend, readiness detection, bounded terminal state, sandboxing, and process-session supervision |
registers on ctx.pty |
tool-pty (@deepseek-ai/dsh-tool-pty) |
Six model-facing tools and generic task integration for background sends | registers on ctx.tools |
The design and deferred boundaries live in the persistent PTY Agent Note.