Merge origin/master (dsh-sdk project tooling #305, sandbox surface prune, review-skill maintenance)

Clean merge; post-merge fixes only: packages/mode/README.md repoints its
stdio link at the renamed dsh-stdio home, and the lockfile re-resolves
this branch's dsh-mode peer edges against master's new sdk packages.
This commit is contained in:
kingwl
2026-07-16 23:26:25 +08:00
parent d32a73a39d
commit 398bbd7c6d
2 changed files with 58 additions and 5 deletions

View File

@@ -6,4 +6,4 @@ Session modes: named, logged, per-agent policy states, with **plan mode** as the
|---|---|---|
| `mode/` | `mode/set` vocabulary + fold, the `ctx.modes` service (list/get/set with the turn-boundary flush), the `mode:policy` guidance section, the `access` cap (a `bash/resolve-mode` clamp plus the cap-derived bash guards), and the model-facing `exit_plan_mode` review tool | `ctx.modes` |
The mode in force is a pure function of the session log (`SessionEventMap['mode/set']`, last one wins), so resume and fork restore it with no extra machinery; the default mode is the absence of policy, keeping the plugin invisible until a mode is set. UIs read flips off `session/event`: the [stdio app](../ui/stdio-agent) exposes `/mode`, the [ACP bridge](../ui/acp) maps the vocabulary to the session-mode picker. RFC: [plan mode](../../docs/rfc/implemented/feature/2026-07-07-plan-mode.md).
The mode in force is a pure function of the session log (`SessionEventMap['mode/set']`, last one wins), so resume and fork restore it with no extra machinery; the default mode is the absence of policy, keeping the plugin invisible until a mode is set. UIs read flips off `session/event`: the [stdio front door](../ui/stdio) exposes `/mode`, the [ACP bridge](../ui/acp) maps the vocabulary to the session-mode picker. RFC: [plan mode](../../docs/rfc/implemented/feature/2026-07-07-plan-mode.md).

61
pnpm-lock.yaml generated
View File

@@ -819,7 +819,7 @@ importers:
dependencies:
'@earendil-works/pi-ai':
specifier: ^0.79.1
version: 0.79.3(ws@8.21.0)(zod@4.4.3)
version: 0.79.3(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)
schemastery:
specifier: ^3.18.0
version: 3.18.0
@@ -862,6 +862,39 @@ importers:
specifier: ^4.4.3
version: 4.4.3
packages/mode/mode:
devDependencies:
'@deepseek-ai/dsh-agent':
specifier: workspace:^
version: link:../../core/agent
'@deepseek-ai/dsh-agent-loop':
specifier: workspace:^
version: link:../../core/agent-loop
'@deepseek-ai/dsh-bash':
specifier: workspace:^
version: link:../../bash/bash
'@deepseek-ai/dsh-code-runtime':
specifier: workspace:^
version: link:../../code-runtime/code-runtime
'@deepseek-ai/dsh-llm':
specifier: workspace:^
version: link:../../llm/llm
'@deepseek-ai/dsh-session':
specifier: workspace:^
version: link:../../core/session
'@deepseek-ai/dsh-system-prompt':
specifier: workspace:^
version: link:../../core/system-prompt
'@deepseek-ai/dsh-tools':
specifier: workspace:^
version: link:../../core/tools
'@deepseek-ai/dsh-user-interaction':
specifier: workspace:^
version: link:../../ui/user-interaction
cordis:
specifier: ^4.0.0-rc.6
version: 4.0.0-rc.7(@cordisjs/plugin-include@1.0.4)(@cordisjs/plugin-loader@1.0.0-rc.5)
packages/sandbox/sandbox:
devDependencies:
'@deepseek-ai/dsh-llm':
@@ -1516,6 +1549,9 @@ importers:
'@deepseek-ai/dsh-llm':
specifier: workspace:^
version: link:../../llm/llm
'@deepseek-ai/dsh-mode':
specifier: workspace:^
version: link:../../mode/mode
'@deepseek-ai/dsh-permission':
specifier: workspace:^
version: link:../permission
@@ -1642,6 +1678,9 @@ importers:
'@deepseek-ai/dsh-llm':
specifier: workspace:^
version: link:../../llm/llm
'@deepseek-ai/dsh-mode':
specifier: workspace:^
version: link:../../mode/mode
'@deepseek-ai/dsh-session':
specifier: workspace:^
version: link:../../core/session
@@ -2011,6 +2050,9 @@ importers:
'@deepseek-ai/dsh-llm-pi-ai':
specifier: workspace:^
version: link:../../packages/llm/llm-pi-ai
'@deepseek-ai/dsh-mode':
specifier: workspace:^
version: link:../../packages/mode/mode
'@deepseek-ai/dsh-permission':
specifier: workspace:^
version: link:../../packages/ui/permission
@@ -3059,6 +3101,10 @@ packages:
cpu: [x64]
os: [win32]
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
'@protobufjs/aspromise@1.1.2':
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
@@ -6137,11 +6183,11 @@ snapshots:
'@csstools/css-tokenizer@4.0.0': {}
'@earendil-works/pi-ai@0.79.3(ws@8.21.0)(zod@4.4.3)':
'@earendil-works/pi-ai@0.79.3(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.0)(zod@4.4.3)':
dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@4.4.3)
'@aws-sdk/client-bedrock-runtime': 3.1048.0
'@google/genai': 1.52.0
'@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))
'@mistralai/mistralai': 2.2.1
'@smithy/node-http-handler': 4.7.3
http-proxy-agent: 7.0.2
@@ -6299,12 +6345,14 @@ snapshots:
'@exodus/bytes@1.15.1': {}
'@google/genai@1.52.0':
'@google/genai@1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))':
dependencies:
google-auth-library: 10.7.0
p-retry: 4.6.2
protobufjs: 7.6.4
ws: 8.21.0
optionalDependencies:
'@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -6563,6 +6611,9 @@ snapshots:
'@oxc-resolver/binding-win32-x64-msvc@11.20.0':
optional: true
'@pkgjs/parseargs@0.11.0':
optional: true
'@protobufjs/aspromise@1.1.2': {}
'@protobufjs/base64@1.1.2': {}
@@ -8034,6 +8085,8 @@ snapshots:
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
jiti@2.7.0: {}