mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
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.
65 lines
2.4 KiB
JSON
65 lines
2.4 KiB
JSON
{
|
|
"compilerOptions": {
|
|
"target": "es2024",
|
|
"module": "esnext",
|
|
"moduleResolution": "bundler",
|
|
"declaration": true,
|
|
"sourceMap": true,
|
|
"declarationMap": true,
|
|
"composite": true,
|
|
"incremental": true,
|
|
"skipLibCheck": true,
|
|
"esModuleInterop": true,
|
|
"allowImportingTsExtensions": true,
|
|
"rewriteRelativeImportExtensions": true,
|
|
"verbatimModuleSyntax": false,
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"exactOptionalPropertyTypes": true,
|
|
"noImplicitOverride": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"types": ["node"],
|
|
// Source-level resolution for every repo-local graph. Project references,
|
|
// not declaration path aliases, keep each package/vendor source compiled
|
|
// under its own tsconfig boundary.
|
|
"paths": {
|
|
"cordis": ["./vendor/cordis/src"],
|
|
"cosmokit": ["./vendor/cosmokit/src"],
|
|
"schemastery": ["./vendor/schemastery/src"],
|
|
"@cordisjs/plugin-loader": ["./vendor/loader/src"],
|
|
"@cordisjs/plugin-include": ["./vendor/include/src"],
|
|
"@cordisjs/plugin-group": ["./vendor/group/src"],
|
|
"@cordisjs/plugin-timer": ["./vendor/timer/src"],
|
|
"@cordisjs/plugin-hmr": ["./vendor/hmr/src"],
|
|
"@cordisjs/plugin-logger-console": ["./vendor/logger-console/src"],
|
|
// One wildcard maps every @deepseek-ai/dsh-<name> to its source. Package
|
|
// dir names are unique across groups, so first-on-disk-wins resolution is
|
|
// unambiguous; adding a package under an existing group needs no edit
|
|
// here. The build graph's project references (tsconfig.build.json) stay
|
|
// explicit — TS project references have no wildcard form.
|
|
"@deepseek-ai/dsh-*": [
|
|
"./packages/core/*/src",
|
|
"./packages/llm/*/src",
|
|
"./packages/bash/*/src",
|
|
"./packages/code-runtime/*/src",
|
|
"./packages/fs/*/src",
|
|
"./packages/compact/*/src",
|
|
"./packages/guard/*/src",
|
|
"./packages/mode/*/src",
|
|
"./packages/subagent/*/src",
|
|
"./packages/web/*/src",
|
|
"./packages/timeout/*/src",
|
|
"./packages/todo/*/src",
|
|
"./packages/cordis/*/src",
|
|
"./packages/hooks/*/src",
|
|
"./packages/session-persistence/*/src",
|
|
"./packages/ui/*/src",
|
|
"./packages/util/*/src",
|
|
"./packages/support/*/src"
|
|
]
|
|
}
|
|
}
|
|
}
|