The native adapter's route was named deepseek, colliding with pi-ai's catalog provider of the same name, so the two DeepSeek paths could never be mounted side by side. The web settings page needs both configurable at once. Compositions, fixtures, goldens, scaffolding defaults, and docs all move together (pre-release, no shim); TUI/session-query-spill/ missing-credential goldens re-recorded through their keyless refresh modes because provider-name length shifts box padding and spill truncation points.
89 lines
3.8 KiB
YAML
89 lines
3.8 KiB
YAML
# Self-referential TUI demo: the coding spine plus tools to inspect the live
|
|
# service/plugin/tool/temporary/API/event state, mount a model-written temporary
|
|
# Plugin, and quiescently unmount it. The app bin loads the gitignored
|
|
# root `.env` before reading the required DeepSeek key and optional base URL.
|
|
# Trust stance: the vm and context façade limit accidental global/framework
|
|
# access but are not a security boundary; temporary Plugin code reaches live capabilities
|
|
# such as `ctx.bash`. Grant this toolset like bash access. See
|
|
# ../../.agents/notes/implemented/feature/2026-07-08-self-referential-cordis-toolset.md.
|
|
|
|
# Development-only hot reload; production assemblies omit it.
|
|
- id: hmr
|
|
name: '@cordisjs/plugin-hmr'
|
|
config:
|
|
root: ['.']
|
|
|
|
# The DeepSeek adapter. Shipped default: full thinking at max effort on every
|
|
# request (wire-only defaults; they never enter the request header).
|
|
- id: llm-deepseek
|
|
name: '@deepseek-ai/dsh-llm-deepseek'
|
|
config:
|
|
apiKey: !!js process.env.DEEPSEEK_API_KEY
|
|
baseURL: !!js process.env.DEEPSEEK_BASE_URL
|
|
thinking: enabled
|
|
reasoningEffort: max
|
|
|
|
# Local bash executor for agent-spine-demo's tool-bash schema — gives the agent an
|
|
# ordinary tool whose calls make the mounted listeners observably fire.
|
|
# Managed child-process groups for the bash executor (spawn/kill/output plumbing).
|
|
- id: subprocess
|
|
name: '@deepseek-ai/dsh-subprocess-local'
|
|
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
# Filesystem service for mounted plugins (ctx.fs) — the local provider only.
|
|
# The model-facing read/write/edit tools stay unmounted on purpose: this demo
|
|
# is about the agent building its own tools over the services.
|
|
- id: fs-local
|
|
name: '@deepseek-ai/dsh-fs-local'
|
|
config:
|
|
cwd: !!js process.cwd()
|
|
|
|
# Web service for mounted plugins (ctx.web): the seam plus the anonymous local
|
|
# fetch provider (keyless). No search provider is loaded — ctx.web search
|
|
# calls fail loud until a deployment adds one.
|
|
- id: web
|
|
name: '@deepseek-ai/dsh-web'
|
|
|
|
- id: web-fetch-local
|
|
name: '@deepseek-ai/dsh-web-fetch-local'
|
|
|
|
- id: token-meter
|
|
name: '@deepseek-ai/dsh-token-meter'
|
|
|
|
# The app bundle pre-creates the self-referential demo's `main` agent.
|
|
- id: tui-agent
|
|
name: '@deepseek-ai/dsh-tui-demo'
|
|
config:
|
|
provider: deepseek-official
|
|
model: deepseek-v4-pro
|
|
resumeSessionId: !!js "typeof resumeSessionId === 'string' ? resumeSessionId : undefined"
|
|
persistenceRoot: './.sessions'
|
|
workspaceContext:
|
|
maxBytes: 65536
|
|
welcome: 'cordis-agent ready. Ask it to inspect its runtime, mount a temporary listener, or invent a temporary tool for itself.'
|
|
persona: |
|
|
You are cordis-agent, a self-referential harness demo powered by the
|
|
{{model}} model.
|
|
|
|
You run INSIDE a cordis plugin runtime, and your cordis_* tools operate
|
|
on that live runtime: cordis_inspect to look around (its `api` and
|
|
`events` sections document the service methods, type shapes, and events
|
|
your Plugin code can use), cordis_mount to mount an in-memory temporary
|
|
Plugin (an event listener, a brand-new tool for yourself, or a service
|
|
another temporary Plugin injects), cordis_unmount to clean one up. These
|
|
Plugins remain across turns but disappear on unmount, toolset unload, or
|
|
DSH restart and may affect other sessions in this process. In Plugin code, NEVER use Node
|
|
built-ins (require/setTimeout/fetch) — use the runtime's cordis services
|
|
via inject: fs, web, bash, and timer (ctx.setTimeout). Prefer small
|
|
single-purpose plugins, prefer plain notification events over waterfall
|
|
events unless you intend to intercept, and unmount what you no longer
|
|
need. Report results briefly.
|
|
|
|
# The self-referential cordis toolset (loaded after the app so ctx.tools exists).
|
|
- id: tool-cordis
|
|
name: '@deepseek-ai/dsh-tool-cordis'
|