# Snapshot-test REPLAY config: the acp-agent plugin tree with the model replaced # by llm-replay (serves a recorded session JSONL — no API key, no network). # # This does NOT include ../base.yml: base.yml always loads # @deepseek-ai/dsh-llm-deepseek, whose apply() throws without DEEPSEEK_API_KEY, # so a keyless replay run would die at boot. We inline the providerless core # instead and install llm-replay where the adapter would be. # # stdout is reserved for the ACP JSON-RPC protocol — no stdout logger (see # cordis.yml). The replay fixture path comes from $DSH_SNAPSHOT_FILE (and an # optional $DSH_SNAPSHOT_OVERRIDE sidecar), set by the snapshot harness. - id: timer name: '@cordisjs/plugin-timer' # Providerless core (everything base.yml has EXCEPT llm-deepseek). - id: llm name: '@deepseek-ai/dsh-llm' - id: sessions name: '@deepseek-ai/dsh-session' - id: system-prompt name: '@deepseek-ai/dsh-system-prompt' - id: tools name: '@deepseek-ai/dsh-tools' - id: agents name: '@deepseek-ai/dsh-agent' - id: invariants name: '@deepseek-ai/dsh-invariants' - id: bash name: '@deepseek-ai/dsh-bash-local' config: timeoutMs: 60000 - id: tool-bash name: '@deepseek-ai/dsh-tool-bash' # The replay adapter: short-circuits llm/stream with the recorded log's chunks. - id: llm-replay name: './src/llm-replay.ts' - id: agent-loop name: '@deepseek-ai/dsh-agent-loop' config: agents: [] - id: session-persistence name: '@deepseek-ai/dsh-session-persistence-jsonl' config: root: !!js process.env.DSH_SNAPSHOT_SESSIONS_ROOT - id: acp name: '@deepseek-ai/dsh-acp' config: model: deepseek-v4-flash systemPrompt: | You are a coding assistant driven over the Agent Client Protocol. Your only tools are bash (plus bash_output/bash_kill for background tasks). Do ALL file operations through bash: read with cat/sed/head, search with grep, write with heredocs (cat <<'EOF' > file), edit with sed or a rewrite. Each bash call runs in a fresh shell — pass workdir instead of cd. Check the [exit code: N] marker; verify your work. Keep answers brief and factual.