Files
deepseek-harness/packages/examples
Tianyi Cui fc566119a7 refactor(subprocess): rename the process seam to subprocess and address review
Review feedback (tianyicui): 'process' is a poor service name. The family is
now packages/subprocess/ — @deepseek-ai/dsh-subprocess (ctx.subprocess,
abstract SubprocessService, Subprocess* vocabulary) and
@deepseek-ai/dsh-subprocess-local (LocalSubprocessService) — renamed
throughout code, compositions, docs (en+zh, pairs re-recorded), catalogs,
and gates. 'subprocess' is the precise term for managed OS children (the
Python-stdlib sense), avoids colliding with Node's global process object,
and reads as one system beside dsh-subagent-subprocess.

ds-review-bot findings addressed:
- kill() on a settled handle is now a no-op (no signal to a possibly-reused
  pgid, no referenced grace timer delaying exit); pinned by a spy test.
- The moved DshEnvironmentKey/DshEnvironment/CollectedOutput types get
  drift-checked type-equiv blocks on the new subprocess.md page, restoring
  their manifest registration.
- subprocess.md is registered in the core.md sub-page index (en+zh).
2026-07-26 12:43:59 +08:00
..

examples/ — ready-to-run demo bundles

Pre-composed plugin bundles a thin leaf cordis.yml loads instead of assembling the spine and a front door by hand. These are demo / reference packages — the -demo npm suffix marks each one as non-product surface, readable straight off the package name. The runnable leaves under the repo-root examples/ and the Python SDK runtime are the consumers; each is just its swappable backends plus one bundle entry.

Package npm name Role
agent-spine-demo/ @deepseek-ai/dsh-agent-spine-demo The executor-less/UI-less agent spine as one bundle plugin, with fallback session titles and an opt-in persisted-goal stack
tui-demo/ @deepseek-ai/dsh-tui-demo Full-screen terminal app bundle: the spine + persisted goals + /goal command + JSONL persistence + dsh-tui + a pre-created main agent; no bin, booted by the dsh CLI
cli-demo/ @deepseek-ai/dsh-cli-demo Headless one-shot app: the spine + JSONL persistence + a pre-created main agent, with text and DSH-native JSON output
acp-demo/ @deepseek-ai/dsh-acp-demo ACP automation server app: the spine + persisted goals + JSONL persistence + the acp bridge (no stdout logger), with a boot bin
jsonrpc-demo/ @deepseek-ai/dsh-jsonrpc-demo Bin-only runtime that boots an external cordis.yml for the stdio JSON-RPC SDK client

agent-spine-demo is the shared bundle; tui-demo, cli-demo, and acp-demo compose it with full-screen terminal, headless one-shot, and ACP automation front doors. cli-demo and acp-demo own their boot bins; tui-demo ships only the bundle plugin, and the product dsh CLI is its terminal front door. jsonrpc-demo mounts no composition of its own — it boots whatever tree the deployment's cordis.yml names, and is what the Python SDK runtime launches.

These are not product API. The spine pieces they bundle live in core/, human/SDK channels and boot glue in ui/, the automation transport in acp/, and swappable backends in their capability groups; a demo bundle just picks one concrete composition of them. Swap or fork one freely.

Do not confuse this group with the repo-root examples/: that directory holds the runnable cordis.yml leaves; this group holds the bundles those leaves load.

The jsonrpc bin/exe names are legacy

jsonrpc-demo renamed like its siblings, but its bin is still dsh-jsonrpc-agent and the single-file executable is still dsh-jsonrpc-agent-pkg (referenced across the Python distribution). Those names are the SDK's runtime-startup surface; they are reconciled when the SDK unifies that startup flow, not by this move.