Plan mode's stage 1 (RFC 2026-07-07-plan-mode): a new packages/mode/ group
with one product package owning the mode/set SessionEventMap vocabulary
(log-only, non-surface, whole-value replace), the pure foldMode, and the
ctx.modes service (list/get/set). User flips are pending intents flushed
at turn/start / step/end — turn enclosure makes an idle append illegal —
with one coalesced context/message notice when the flushed mode differs
from what the last logged request header told the model; a folded mode
the config no longer defines reads as default plus one boundary notice.
Enforcement is two covering layers: a system-prompt/assemble wrapper
filters the RETURNED assembly's tools to the mode's allowlist (and shows
exit_plan_mode IFF the folded mode is plan) beside the mode:policy
section at order 50, and a tools/pre-execute gate denies deny-by-default
against the same allowlist, judging by the logged mode only. The default
mode is the absence of policy — assemblies stay byte-identical to a
no-dsh-mode deployment.
AgentOptions.mode (declaration-merged) seeds a child's initial mode
through the same flush on agent/created; the stdio app gains /mode
(print/switch, never sent to the model) over an opportunistic
ctx.get('modes'). Config is an explicit resolve step: the built-in plan
definition (read-only allowlist; bash/subagent excluded until the
sandbox family lands) merges unless overridden, 'default' as a key
throws at load, unknown names throw at set() time.
68 lines
2.2 KiB
JSON
68 lines
2.2 KiB
JSON
{
|
|
"name": "@deepseek-ai/dsh-stdio-agent",
|
|
"description": "Terminal stdio chat app: the agent-core spine + console logger + readline UI + a pre-created main agent, with a bin to boot a leaf cordis.yml",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"types": "lib/types/index.d.ts",
|
|
"bin": {
|
|
"dsh-stdio-agent": "lib/bin.js"
|
|
},
|
|
"exports": {
|
|
".": {
|
|
"types": "./lib/types/index.d.ts",
|
|
"default": "./lib/index.js"
|
|
},
|
|
"./bin": {
|
|
"types": "./lib/types/bin.d.ts",
|
|
"default": "./lib/bin.js"
|
|
},
|
|
"./src/*": "./src/*",
|
|
"./package.json": "./package.json"
|
|
},
|
|
"files": [
|
|
"lib/index.js",
|
|
"lib/bin.js",
|
|
"lib/types/**/*.d.ts",
|
|
"lib/types/**/*.d.ts.map",
|
|
"src"
|
|
],
|
|
"license": "BSD-3-Clause",
|
|
"peerDependencies": {
|
|
"@cordisjs/plugin-include": "^1.0.4",
|
|
"@cordisjs/plugin-loader": "^1.0.0-rc.4",
|
|
"@deepseek-ai/dsh-app-boot": "^0.0.1",
|
|
"@cordisjs/plugin-logger-console": "^1.0.0",
|
|
"@deepseek-ai/dsh-agent": "^0.0.1",
|
|
"@deepseek-ai/dsh-llm": "^0.0.1",
|
|
"@deepseek-ai/dsh-agent-core": "^0.0.1",
|
|
"@deepseek-ai/dsh-mode": "^0.0.1",
|
|
"@deepseek-ai/dsh-session": "^0.0.1",
|
|
"@deepseek-ai/dsh-tools": "^0.0.1",
|
|
"@deepseek-ai/dsh-session-persistence-jsonl": "^0.0.1",
|
|
"@deepseek-ai/dsh-tool-ask-user": "^0.0.1",
|
|
"@deepseek-ai/dsh-user-interaction": "^0.0.1",
|
|
"cordis": "^4.0.0-rc.6",
|
|
"schemastery": "^3.17.0"
|
|
},
|
|
"devDependencies": {
|
|
"@cordisjs/plugin-include": "workspace:^",
|
|
"@cordisjs/plugin-loader": "workspace:^",
|
|
"@deepseek-ai/dsh-app-boot": "workspace:^",
|
|
"@cordisjs/plugin-logger-console": "workspace:^",
|
|
"@deepseek-ai/dsh-agent": "workspace:^",
|
|
"@deepseek-ai/dsh-llm": "workspace:^",
|
|
"@deepseek-ai/dsh-agent-core": "workspace:^",
|
|
"@deepseek-ai/dsh-mode": "workspace:^",
|
|
"@deepseek-ai/dsh-system-prompt": "workspace:^",
|
|
"@deepseek-ai/dsh-session": "workspace:^",
|
|
"@deepseek-ai/dsh-tools": "workspace:^",
|
|
"@deepseek-ai/dsh-session-persistence-jsonl": "workspace:^",
|
|
"@deepseek-ai/dsh-tool-ask-user": "workspace:^",
|
|
"@deepseek-ai/dsh-user-interaction": "workspace:^",
|
|
"cordis": "^4.0.0-rc.6",
|
|
"schemastery": "^3.17.0"
|
|
}
|
|
}
|