Represent tool results as tool-role messages and migrate released wrappers without losing outer own JSON fields, call identity, error state, or writer field order. Refuse nested or wrapper-only information that has no lossless current representation before successor publication. Validate current event relationships directly instead of projecting V4 data back into V3. Keep lifecycle, PTC, title/command, compaction, system-field and retired-syntax checks on catalog restoration and ordinary JSONL opens. The Worker JSON equality helper must inspect own keys so it cannot admit PTC arguments that Node rejects. Keep the source role change, required native admission and consumer fixture updates in one complete review layer. Explain shared-type changes in the persistence record and the native reader rationale in its existing note. Use checked branded fixture identities and discriminant narrowing instead of unknown double casts; fixture values and assertions remain intact. This recomposes the original tool-role work by _Kerman with the independently validated migration and admission repairs by Tianyi Cui. Frozen generations and snapshot input version selection are retained. Co-authored-by: Tianyi Cui <[email protected]>
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.