The snapshot replay config duplicated most of base.yml + the acp tail just to swap llm-deepseek → llm-replay. Factor the shared pieces: - examples/base-core.yml: the providerless provider/tool core (llm, sessions, system-prompt, tools, agents, invariants, bash-local, tool-bash). base.yml is now base-core + the llm-deepseek adapter; the snapshot replay config is base-core + llm-replay. The replay config no longer hand-copies the core. - examples/acp-agent/acp-tail.yml: agent-loop (no pre-created agents) + persistence + the ACP bridge/system-prompt, shared by cordis.yml and the replay config so the three acp-agent configs can't drift. Its persistence root is `$DSH_SNAPSHOT_SESSIONS_ROOT ?? ./.sessions`. - Deleted cordis.snapshot-record.yml: recording now reuses the normal cordis.yml (real adapter), with the harness redirecting the persistence root via env. start.ts maps DSH_SNAPSHOT=record → cordis.yml. Verified: snapshot replay 8/8 keyless; record path works through cordis.yml; ACP e2e no-key boot green through the doubly-nested include (cordis.yml → base.yml → base-core.yml); coding-agent boots clean; all gates pass.
33 lines
1.3 KiB
YAML
33 lines
1.3 KiB
YAML
# 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).
|
|
#
|
|
# 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
|
|
# optional $DSH_SNAPSHOT_OVERRIDE sidecar), set by the snapshot harness.
|
|
|
|
- id: timer
|
|
name: '@cordisjs/plugin-timer'
|
|
|
|
# Providerless core (everything base.yml has EXCEPT the llm-deepseek adapter).
|
|
- id: base-core
|
|
name: '@cordisjs/plugin-include'
|
|
config:
|
|
path: '../base-core.yml'
|
|
|
|
# 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'
|
|
|
|
# agent-loop + persistence + the ACP bridge — shared with cordis.yml.
|
|
- id: acp-tail
|
|
name: '@cordisjs/plugin-include'
|
|
config:
|
|
path: './acp-tail.yml'
|