|
|
@@ -1,10 +1,11 @@
|
|
|
# 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.
|
|
|
+# It reuses ../base-core.yml (the providerless core) + ./acp-tail.yml (agent-
|
|
|
+# loop + persistence + the ACP bridge), the SAME pieces cordis.yml shares — only
|
|
|
+# the LLM adapter differs: llm-replay here, llm-deepseek there. It can't reuse
|
|
|
+# ../base.yml because that loads llm-deepseek, whose apply() throws without
|
|
|
+# DEEPSEEK_API_KEY, killing a keyless replay run at boot.
|
|
|
#
|
|
|
# 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
|
|
|
@@ -13,57 +14,19 @@
|
|
|
- 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'
|
|
|
+# Providerless core (everything base.yml has EXCEPT the llm-deepseek adapter).
|
|
|
+- id: base-core
|
|
|
+ name: '@cordisjs/plugin-include'
|
|
|
config:
|
|
|
- timeoutMs: 60000
|
|
|
+ path: '../base-core.yml'
|
|
|
|
|
|
-- id: tool-bash
|
|
|
- name: '@deepseek-ai/dsh-tool-bash'
|
|
|
-
|
|
|
-# The replay adapter: short-circuits llm/stream with the recorded log's chunks.
|
|
|
+# The replay adapter: short-circuits llm/stream with the recorded log's chunks,
|
|
|
+# in place of llm-deepseek.
|
|
|
- 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'
|
|
|
+# agent-loop + persistence + the ACP bridge — shared with cordis.yml.
|
|
|
+- id: acp-tail
|
|
|
+ name: '@cordisjs/plugin-include'
|
|
|
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.
|
|
|
+ path: './acp-tail.yml'
|