Files
deepseek-harness/packages/pty
Chinesezjc e56afd718d test(pty-local): keep the raw-mode send active until python3 prints its marker
The darwin-parity job failed intermittently on the SIGINT test with the
operation buffer holding only the echoed command line, never RAW_READY. The
harness sets idleSilenceMs to 250, so when a cold python3 start stays silent
past that bound the send settles as inferred_idle; PtySendOperation.append then
drops all later output, and the marker reaches only the scrollback.

Give the harness per-test idleSilenceMs/timeoutMs overrides and let this
scenario raise both above interpreter startup latency, so the readiness marker
lands inside the send it belongs to. waitForOutput's own deadline and the test
timeout grow to match the new bounds.

The product timings are unchanged; the pty Agent Note records why a test that
waits on an operation must outlast the child's startup.
2026-07-27 13:45:04 +08:00
..
2026-07-26 05:06:39 +08:00
2026-07-26 05:06:39 +08:00
2026-07-26 05:06:39 +08:00

pty/ — persistent PTY capability family

English | 中文

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.