Name the runnable leaf for the line-oriented front door it owns, matching the existing tui-agent and acp-agent organization. Move the complete config, Code Mode overlay, tests, metadata, and generated composition graph together, then update every loader path and repository reference. Keep the shared model identity independent of its terminal front door by phrasing the persona as a coding-agent role rather than retaining the retired leaf name. Regenerate graph and tool catalogs and re-record each affected bilingual pair so derived documentation cannot point at the removed path.
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 (timer + llm + sessions + system-prompt + tools + skills + agents + invariants + tool-bash + workspace-context + tool-skill + agent-loop) |
stdio-demo/ |
@deepseek-ai/dsh-stdio-demo |
Terminal chat app: the spine + JSONL persistence + TTY-selected dsh-tui/dsh-stdio front door + a pre-created main agent, with a boot bin |
acp-demo/ |
@deepseek-ai/dsh-acp-demo |
ACP server app: the spine + 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; stdio-demo and acp-demo compose it with terminal and ACP front-door clusters and own their boot bins. 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/, the bridges/channels/boot-glue in ui/, and the swappable backends (LLM adapter, bash executor) 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.