The coding spine (DeepSeek V4 + local bash on dsh-stdio-agent) plus @deepseek-ai/dsh-tool-cordis loaded by package name, run via demo:cordis. Ships the keyless Loader smoke (the export-shape / package-name-resolution guard) and the with-key smoke: a real model mounts a listener whose tagged console line actually fires, builds and calls its own reverse_text tool, and composes two mounts via provide/inject — all world-verified against the registry and session events.
65 lines
2.8 KiB
YAML
65 lines
2.8 KiB
YAML
# The cordis-agent plugin tree: the SELF-REFERENTIAL harness demo. Same spine
|
|
# as coding-agent (DeepSeek V4 + local bash on @deepseek-ai/dsh-stdio-agent),
|
|
# plus @deepseek-ai/dsh-tool-cordis, which gives the model three tools over the
|
|
# live cordis runtime it is running inside: cordis_inspect (services / plugin
|
|
# tree / tools / dynamic mounts / api / events), cordis_mount (evaluate
|
|
# model-written code in a vm sandbox and mount the returned plugin under the
|
|
# `cordis-dynamic` group), and cordis_unmount (dispose one mount by id).
|
|
# Requires DEEPSEEK_API_KEY (and optionally DEEPSEEK_BASE_URL) — the
|
|
# dsh-stdio-agent bin loads the gitignored repo-root .env first.
|
|
#
|
|
# Trust stance (docs/rfc/implemented/feature/2026-07-08-self-referential-cordis-toolset.md):
|
|
# the mounted code gets the REAL ctx — the
|
|
# vm sandbox only prevents accidental global pollution. Load the toolset as
|
|
# deliberately as you would grant a bash tool.
|
|
|
|
# Hot-module reload for the dev/demo loop (needs `node --expose-internals`).
|
|
- id: hmr
|
|
name: '@cordisjs/plugin-hmr'
|
|
config:
|
|
root: ['.']
|
|
|
|
# The DeepSeek adapter.
|
|
- id: llm-deepseek
|
|
name: '@deepseek-ai/dsh-llm-deepseek'
|
|
config:
|
|
apiKey: !!js process.env.DEEPSEEK_API_KEY
|
|
baseURL: !!js process.env.DEEPSEEK_BASE_URL
|
|
models:
|
|
- deepseek-v4-pro
|
|
- deepseek-v4-flash
|
|
|
|
# Local bash executor for agent-core's tool-bash schema — gives the agent an
|
|
# ordinary tool whose calls make the mounted listeners observably fire.
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
# The stdio chat app: the whole spine + front-door cluster, configured for the
|
|
# self-referential demo driving a pre-created `main` agent.
|
|
- id: stdio-agent
|
|
name: '@deepseek-ai/dsh-stdio-agent'
|
|
config:
|
|
model: deepseek-v4-flash
|
|
resumeSessionId: !!js process.env.RESUME_SESSION_ID
|
|
persistenceRoot: './.sessions'
|
|
welcome: 'cordis-agent ready. Ask it to inspect its runtime, mount a listener, or invent a 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 add a plugin (an event
|
|
listener, a brand-new tool for yourself, or a service other mounts
|
|
inject), cordis_unmount to clean one up. 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'
|