# @deepseek-ai/dsh-acp-demo ACP automation server app: the default agent spine, client-created agents through [`@deepseek-ai/dsh-acp`](../../acp/acp/README.md), JSONL persistence, and semantic checkpointing behind one JSON-RPC stdio bin. Programmatic clients create fresh sessions; this package mounts no human UI. ## Composition | Plugin | Role | |---|---| | `@deepseek-ai/dsh-agent-spine-demo` | Providerless agent spine with no pre-created agents; `session/new` creates each agent. | | `@deepseek-ai/dsh-session-persistence-jsonl` | Durable session logs used by checkpointing, observability, and snapshot replay. | | `@deepseek-ai/dsh-session-checkpoint-policy` | Durability barriers before model calls and top-level tool effects, plus completed-step checkpoints. | | `@deepseek-ai/dsh-acp` | Automation-only ACP transport over stdin/stdout. | The app does not install commands, user interaction, session navigation, configuration pickers, or a stdout logger. It owns the four plugins through one ordered effect so ACP sessions quiesce before checkpointing and persistence detach. Leaf configurations supply LLM, executor, sandbox, approval, filesystem, and model-facing tool plugins. ## Config | Key | Default | Routed to | |---|---|---| | `provider` | required | Provider route for each ACP-created agent. | | `model` | required | Model for each ACP-created agent. | | `maxParallelToolCalls` | agent-loop default | Positive-integer tool-call concurrency cap; `1` is serial. | | `persona` | — | Deployment persona template for `dsh-system-prompt`. | | `toolOrder` | lexicographic | Explicit model-facing tool order for `dsh-system-prompt`. | | `tools` | `{ mode: 'native' }` | Native, Code Mode, or combined model tool transport. | | `dshHome` | `$DSH_HOME` or `~/.dsh` | Harness home shared by bash and local skill discovery. | | `sessionTitle` | spine example limits | Durable fallback-title limits; titles remain off the ACP wire. | | `persistenceRoot` | `./.sessions` | JSONL backend root. | | `packChunks` | `false` | Pack consecutive delta-chunk events in storage. | | `persistenceCompression` | `zstd` | Checksummed Zstandard frames or raw `none`. | | `workspaceContext` | required | Workspace-instruction byte budget/config, or `false`. | | `skills` | owner defaults | Skill registry, local provider, and model-facing skill tool. | | `toolBash` | owner defaults | Model-facing bash tool config. | | `toolTasks` | owner defaults | Generic background-task control config, or `false`. | | `goals` | owner defaults | Persisted same-session goal domain and model tools, or `false`. | | `llmRetry` | owner defaults | Bounded transient model-request retry policy. | The shipped [`examples/acp-agent/cordis.yml`](../../../examples/acp-agent/cordis.yml) adds the DeepSeek adapter, sandboxed bash and filesystem providers, one-shot approval policy, compaction, subagents, workflows, hooks, and model-facing tools. Snapshot overlays replace only nondeterministic providers or policy values. ## Bin `dsh-acp-demo [--config path-to-cordis.yml]` (short form `-c`; default `./cordis.yml`) loads the gitignored `.env`, except in replay mode; `DSH_SNAPSHOT=replay` selects the sibling `cordis.snapshot.yml`; stdin EOF disposes the context and flushes sessions before exit. Loader's installed optional `node-addon-require-builtin` peer resolves bare plugin specifiers for the built bin under plain Node. Diagnostics use stderr because stdout is the ACP wire. ## Model Experience Indirectly, through `dsh-agent-spine-demo` and the leaf's model-facing plugins. ACP prompt text becomes the ordinary logged user message; protocol metadata and permission choices do not enter the model request. #### KV Cache effect Append-only per session; the app adds no request-prefix content itself. ## Known Limitations and Deferred Work - **JSONL persistence is fixed** — a different backend requires another composition. - **Sibling plugins can corrupt stdout** — the app cannot prevent another entry from writing non-protocol bytes. - **Fresh automation sessions only** — resume and human interaction belong to other front doors.