# The coding-agent plugin tree, loaded via @cordisjs/plugin-include. # Infra (logger/timer/hmr) first, then the shared provider/tool core (nested # include of ../base.yml), then this example's agent-loop config + UI. # # Requires DEEPSEEK_API_KEY (and optionally DEEPSEEK_BASE_URL) in the # environment — start.ts loads the gitignored repo-root .env first. - id: logger name: '@cordisjs/plugin-logger-console' - id: timer name: '@cordisjs/plugin-timer' - id: hmr name: '@cordisjs/plugin-hmr' config: root: ['.'] # Shared provider/tool core (llm, sessions, system-prompt, tools, agents, # invariants, llm-deepseek, bash-local, tool-bash). Nested include: the path is # resolved relative to THIS file's directory. - id: base name: '@cordisjs/plugin-include' config: path: '../base.yml' # agent-loop is per-example (NOT in base.yml): coding-agent pre-creates a `main` # agent its stdio-chat drives via ctx.agents.get('main'). - id: agent-loop name: '@deepseek-ai/dsh-agent-loop' config: agents: - id: main model: deepseek-v4-flash # Set RESUME_SESSION_ID to continue a prior persisted session (the ids # live under ./.sessions); unset starts a fresh session each run. resumeSessionId: !!js process.env.RESUME_SESSION_ID systemPrompt: | You are coding-agent, a CLI coding assistant. 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, and never rely on shell state between calls. Check the [exit code: N] marker on every command; investigate failures before moving on. Verify your work by running the code or tests. Keep answers brief and factual. - id: session-persistence name: '@deepseek-ai/dsh-session-persistence-jsonl' config: root: './.sessions' - id: stdio-chat name: '@deepseek-ai/dsh-ui-stdio' config: welcome: 'coding-agent ready. Give it a coding task (bash is its only tool).'