Integrate the observed master checkpoint 7ab215e23e5d977aae7eb5d4fb91782d39969dbb without rewriting the earlier published checkpoints. Master adds current-directory events, directory-aware consumers, and retained Git worktrees; its old subagent startup paths overlapped the unified activation implementation. Resolve directory selection within managed startup after acquiring parent ownership. Preserve the original Session origin while setting each new local child directory, retain persisted directory state on cold resume, and pass a required absolute cwd to external providers. Keep unified local/external ownership, full completion notices, parked-input host completion, SDK wait/error/shutdown behavior, and ACP cancellation semantics. Retain removal of the old in-process driver and continuation managers. Combine SDK wait with the new directory requests, preserve the new master directory/worktree fixtures, regenerate derived catalogs from the combined sources, and refresh only the four stale prompt/schema sidecars. Preserve every protected historical schema, archived note, catalog-v2 acknowledgement, and recorded predecessor input. Validation: full build; 59 CI static gates; 855 subagent tests with 100% coverage on changed core/external sources; affected consumer suites including 119 repaired-fixture tests; SDK 11 and headless 16 recorded scenarios; two local headless expected cases; six built nested SDK/ACP cases; lint, strict cast inventory, workspace constraints, and whitespace checks. Native Windows worker diagnostics remain additive and require the next CI run to classify the original crash.
description, kind
| description | kind |
|---|---|
| Package map for the SDK family: JSON-RPC protocol plus the TypeScript client and server used by out-of-process SDKs. | package-group |
sdk/ — drive a Harness runtime from another process
English | 中文
Summary
The SDK family lets another process drive a complete DeepSeek Harness runtime over newline-delimited JSON-RPC. Its protocol package defines the public messages, the TypeScript client launches dsh with a named profile and ordered patches, and the server accepts SDK requests over stdio. Clients can open sessions, send prompts, and observe session events, agent status changes, and subagent completions. The TypeScript client and Python SDK use the same protocol, and these packages do not create developer projects or define another application.
Table of Contents
Packages
Each package README describes what you can do with its part of the stack.
| Package | Role |
|---|---|
protocol/ |
Wire protocol: the newline-delimited JSON-RPC transport and the named request, result, and notification types |
client/ |
TypeScript client that spawns a runtime subprocess and drives agent turns through the high-level and protocol-level APIs |
server/ |
jsonrpc plugin that serves out-of-process SDK clients over stdio |
Related documentation
Start with the Python SDK (the sibling implementation of the client contract), then the runnable application and the decision records behind the group's boundary.
- Python SDK — the Python counterpart that speaks the same protocol and ships a bundled runtime.
- SDK application bundle — the
dsh --profile sdkapplication that boots the JSON-RPC server. - Architecture — why the packaged Python client launches the same named profiles.
- SDK project toolchain removal — why this group never creates, configures, or builds developer projects.
- SDK subagent provider — a harness-internal consumer of the TypeScript client.
Dev Note
None.