@ran-sh/dsh-crew 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-crew",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Dispatch subtasks to DeepSeek Harness (DSH) agents as native subagents with live progress",
5
5
  "author": {
6
6
  "name": "ZSeven-W"
package/package.json CHANGED
@@ -1,232 +1,233 @@
1
- {
2
- "name": "@ran-sh/dsh-crew",
3
- "version": "1.7.0",
4
- "type": "module",
5
- "main": "./src/hub/entry.mjs",
6
- "bin": {
7
- "dsh-crew": "bin/dsh-crew.mjs"
8
- },
9
- "description": "DeepSeek Harness plugin: dispatch work to DSH agents from Claude Code / Codex, as native subagents with live progress",
10
- "dshCrew": {
11
- "payloadSchema": 2,
12
- "windowsSupervisorHandoff": 1
13
- },
14
- "dsh": {
15
- "bundle": {
16
- "patch": "./cordis.patch.yml"
17
- },
18
- "client": {
19
- "inject": [
20
- "@deepseek-ai/dsh-client-ui-renderer",
21
- "@deepseek-ai/dsh-client-locale",
22
- "@deepseek-ai/dsh-client-ui-settings"
23
- ],
24
- "platform": "web"
25
- }
26
- },
27
- "scripts": {
28
- "mcp": "node src/server.mjs",
29
- "build:client": "tsdown src/client/entry.tsx --format cjs --platform browser --target es2022 --tsconfig tsconfig.client.json --deps.never-bundle react --deps.never-bundle react/jsx-runtime --deps.never-bundle react-dom --deps.never-bundle react-dom/client --out-dir .client-build --clean --logLevel warn && tsdown src/client/quick-entry.tsx --format cjs --platform browser --target es2022 --tsconfig tsconfig.client.json --deps.never-bundle react --deps.never-bundle react/jsx-runtime --deps.never-bundle react-dom --deps.never-bundle react-dom/client --out-dir .client-build --no-clean --logLevel warn && node scripts/build-client.mjs",
30
- "verify:npm-install": "node scripts/verify-npm-install.mjs",
31
- "verify:npm-install:official": "node scripts/verify-npm-install.mjs --with-official-dsh",
32
- "verify:official-bridge": "node scripts/verify-official-bridge-e2e.mjs --diagnostic-only"
33
- },
34
- "dependencies": {
35
- "@modelcontextprotocol/sdk": "^1.25.4",
36
- "zod": "^3.24.0"
37
- },
38
- "exports": {
39
- ".": "./src/hub/entry.mjs",
40
- "./client": "./lib/client.js",
41
- "./package.json": "./package.json"
42
- },
43
- "peerDependencies": {
44
- "@deepseek-ai/dsh": "0.1.5-rc.2",
45
- "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
46
- "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.2",
47
- "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
48
- "@deepseek-ai/dsh-bash-local": "0.1.5-rc.2",
49
- "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
50
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
51
- "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
52
- "@deepseek-ai/dsh-compaction-basic": "0.1.5-rc.2",
53
- "@deepseek-ai/dsh-fs-local": "0.1.5-rc.2",
54
- "@deepseek-ai/dsh-fs-observation-policy": "0.1.5-rc.2",
55
- "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
56
- "@deepseek-ai/dsh-llm-deepseek": "0.1.5-rc.2",
57
- "@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2",
58
- "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
59
- "@deepseek-ai/dsh-sdk-client": "0.1.5-rc.2",
60
- "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.5-rc.2",
61
- "@deepseek-ai/dsh-sdk-minimal": "0.1.5-rc.2",
62
- "@deepseek-ai/dsh-session": "0.1.5-rc.2",
63
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
64
- "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
65
- "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
66
- "@deepseek-ai/dsh-tool-fs": "0.1.5-rc.2",
67
- "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.2",
68
- "react": "^18.0.0",
69
- "react-dom": "^18.0.0"
70
- },
71
- "peerDependenciesMeta": {
72
- "@deepseek-ai/dsh": {
73
- "optional": true
74
- },
75
- "@deepseek-ai/dsh-agent": {
76
- "optional": true
77
- },
78
- "@deepseek-ai/dsh-agent-loop": {
79
- "optional": true
80
- },
81
- "@deepseek-ai/dsh-agent-presets": {
82
- "optional": true
83
- },
84
- "@deepseek-ai/dsh-bash-local": {
85
- "optional": true
86
- },
87
- "@deepseek-ai/dsh-client-locale": {
88
- "optional": true
89
- },
90
- "@deepseek-ai/dsh-client-ui-renderer": {
91
- "optional": true
92
- },
93
- "@deepseek-ai/dsh-client-ui-settings": {
94
- "optional": true
95
- },
96
- "@deepseek-ai/dsh-compaction-basic": {
97
- "optional": true
98
- },
99
- "@deepseek-ai/dsh-fs-local": {
100
- "optional": true
101
- },
102
- "@deepseek-ai/dsh-fs-observation-policy": {
103
- "optional": true
104
- },
105
- "@deepseek-ai/dsh-llm": {
106
- "optional": true
107
- },
108
- "@deepseek-ai/dsh-llm-deepseek": {
109
- "optional": true
110
- },
111
- "@deepseek-ai/dsh-sandbox-local": {
112
- "optional": true
113
- },
114
- "@deepseek-ai/dsh-sandbox-policy": {
115
- "optional": true
116
- },
117
- "@deepseek-ai/dsh-sdk-client": {
118
- "optional": true
119
- },
120
- "@deepseek-ai/dsh-sdk-jsonrpc-server": {
121
- "optional": true
122
- },
123
- "@deepseek-ai/dsh-sdk-minimal": {
124
- "optional": true
125
- },
126
- "@deepseek-ai/dsh-session": {
127
- "optional": true
128
- },
129
- "@deepseek-ai/dsh-session-persistence-jsonl": {
130
- "optional": true
131
- },
132
- "@deepseek-ai/dsh-subprocess-local": {
133
- "optional": true
134
- },
135
- "@deepseek-ai/dsh-token-meter": {
136
- "optional": true
137
- },
138
- "@deepseek-ai/dsh-tool-fs": {
139
- "optional": true
140
- },
141
- "@deepseek-ai/dsh-tool-todo": {
142
- "optional": true
143
- },
144
- "react": {
145
- "optional": true
146
- },
147
- "react-dom": {
148
- "optional": true
149
- }
150
- },
151
- "devDependencies": {
152
- "@deepseek-ai/dsh": "0.1.5-rc.2",
153
- "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
154
- "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.2",
155
- "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
156
- "@deepseek-ai/dsh-bash-local": "0.1.5-rc.2",
157
- "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
158
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
159
- "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
160
- "@deepseek-ai/dsh-compaction-basic": "0.1.5-rc.2",
161
- "@deepseek-ai/dsh-fs-local": "0.1.5-rc.2",
162
- "@deepseek-ai/dsh-fs-observation-policy": "0.1.5-rc.2",
163
- "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
164
- "@deepseek-ai/dsh-llm-deepseek": "0.1.5-rc.2",
165
- "@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2",
166
- "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
167
- "@deepseek-ai/dsh-sdk-client": "0.1.5-rc.2",
168
- "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.5-rc.2",
169
- "@deepseek-ai/dsh-sdk-minimal": "0.1.5-rc.2",
170
- "@deepseek-ai/dsh-session": "0.1.5-rc.2",
171
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
172
- "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
173
- "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
174
- "@deepseek-ai/dsh-tool-fs": "0.1.5-rc.2",
175
- "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.2",
176
- "@types/react": "^18.3.0",
177
- "react": "^18.3.1",
178
- "react-dom": "^18.3.1",
179
- "tsdown": "0.22.14",
180
- "typescript": "^5.6.0"
181
- },
182
- "license": "MIT",
183
- "repository": {
184
- "type": "git",
185
- "url": "git+https://github.com/Ran-sh/dsh-crew.git"
186
- },
187
- "homepage": "https://github.com/Ran-sh/dsh-crew",
188
- "bugs": {
189
- "url": "https://github.com/Ran-sh/dsh-crew/issues"
190
- },
191
- "keywords": [
192
- "dsh",
193
- "deepseek",
194
- "claude-code",
195
- "codex",
196
- "zcode",
197
- "windows",
198
- "subagent",
199
- "worker",
200
- "multimodal",
201
- "plugin",
202
- "agent"
203
- ],
204
- "files": [
205
- "bin",
206
- "lib",
207
- "src",
208
- "scripts",
209
- "agents",
210
- "commands",
211
- "codex",
212
- "zcode",
213
- "statusline",
214
- "official-web-bridge",
215
- "windows",
216
- "cordis.patch.yml",
217
- "worker.cordis.yml",
218
- ".claude-plugin",
219
- "README.md",
220
- "README.*.md",
221
- "docs/job-contracts.md",
222
- "docs/readiness-matrix.md",
223
- "docs/gpt-relay-extension.md",
224
- "docs/ui-surfaces.md",
225
- "docs/installation.md",
226
- "docs/images/dsh-crew-logo.png",
227
- "docs/images/dsh-crew-overview.png",
228
- "docs/images/dsh-crew-host.png",
229
- "docs/images/dsh-crew-jobs.png",
230
- "LICENSE"
231
- ]
232
- }
1
+ {
2
+ "name": "@ran-sh/dsh-crew",
3
+ "version": "1.7.2",
4
+ "type": "module",
5
+ "main": "./src/hub/entry.mjs",
6
+ "bin": {
7
+ "dsh-crew": "bin/dsh-crew.mjs"
8
+ },
9
+ "description": "DeepSeek Harness plugin: dispatch work to DSH agents from Claude Code / Codex, as native subagents with live progress",
10
+ "dshCrew": {
11
+ "payloadSchema": 2,
12
+ "windowsSupervisorHandoff": 1
13
+ },
14
+ "dsh": {
15
+ "bundle": {
16
+ "patch": "./cordis.patch.yml"
17
+ },
18
+ "client": {
19
+ "inject": [
20
+ "@deepseek-ai/dsh-client-ui-renderer",
21
+ "@deepseek-ai/dsh-client-locale",
22
+ "@deepseek-ai/dsh-client-ui-settings"
23
+ ],
24
+ "platform": "web"
25
+ }
26
+ },
27
+ "scripts": {
28
+ "mcp": "node src/server.mjs",
29
+ "build:client": "tsdown src/client/entry.tsx --format cjs --platform browser --target es2022 --tsconfig tsconfig.client.json --deps.never-bundle react --deps.never-bundle react/jsx-runtime --deps.never-bundle react-dom --deps.never-bundle react-dom/client --out-dir .client-build --clean --logLevel warn && tsdown src/client/quick-entry.tsx --format cjs --platform browser --target es2022 --tsconfig tsconfig.client.json --deps.never-bundle react --deps.never-bundle react/jsx-runtime --deps.never-bundle react-dom --deps.never-bundle react-dom/client --out-dir .client-build --no-clean --logLevel warn && node scripts/build-client.mjs",
30
+ "verify:npm-install": "node scripts/verify-npm-install.mjs",
31
+ "verify:npm-install:official": "node scripts/verify-npm-install.mjs --with-official-dsh",
32
+ "verify:official-bridge": "node scripts/verify-official-bridge-e2e.mjs --diagnostic-only"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.25.4",
36
+ "zod": "^3.24.0"
37
+ },
38
+ "exports": {
39
+ ".": "./src/hub/entry.mjs",
40
+ "./client": "./lib/client.js",
41
+ "./package.json": "./package.json"
42
+ },
43
+ "peerDependencies": {
44
+ "@deepseek-ai/dsh": "0.1.5-rc.2",
45
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
46
+ "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.2",
47
+ "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
48
+ "@deepseek-ai/dsh-bash-local": "0.1.5-rc.2",
49
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
50
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
51
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
52
+ "@deepseek-ai/dsh-compaction-basic": "0.1.5-rc.2",
53
+ "@deepseek-ai/dsh-fs-local": "0.1.5-rc.2",
54
+ "@deepseek-ai/dsh-fs-observation-policy": "0.1.5-rc.2",
55
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
56
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.5-rc.2",
57
+ "@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2",
58
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
59
+ "@deepseek-ai/dsh-sdk-client": "0.1.5-rc.2",
60
+ "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.5-rc.2",
61
+ "@deepseek-ai/dsh-sdk-minimal": "0.1.5-rc.2",
62
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
63
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
64
+ "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
65
+ "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
66
+ "@deepseek-ai/dsh-tool-fs": "0.1.5-rc.2",
67
+ "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.2",
68
+ "react": "^18.0.0",
69
+ "react-dom": "^18.0.0"
70
+ },
71
+ "peerDependenciesMeta": {
72
+ "@deepseek-ai/dsh": {
73
+ "optional": true
74
+ },
75
+ "@deepseek-ai/dsh-agent": {
76
+ "optional": true
77
+ },
78
+ "@deepseek-ai/dsh-agent-loop": {
79
+ "optional": true
80
+ },
81
+ "@deepseek-ai/dsh-agent-presets": {
82
+ "optional": true
83
+ },
84
+ "@deepseek-ai/dsh-bash-local": {
85
+ "optional": true
86
+ },
87
+ "@deepseek-ai/dsh-client-locale": {
88
+ "optional": true
89
+ },
90
+ "@deepseek-ai/dsh-client-ui-renderer": {
91
+ "optional": true
92
+ },
93
+ "@deepseek-ai/dsh-client-ui-settings": {
94
+ "optional": true
95
+ },
96
+ "@deepseek-ai/dsh-compaction-basic": {
97
+ "optional": true
98
+ },
99
+ "@deepseek-ai/dsh-fs-local": {
100
+ "optional": true
101
+ },
102
+ "@deepseek-ai/dsh-fs-observation-policy": {
103
+ "optional": true
104
+ },
105
+ "@deepseek-ai/dsh-llm": {
106
+ "optional": true
107
+ },
108
+ "@deepseek-ai/dsh-llm-deepseek": {
109
+ "optional": true
110
+ },
111
+ "@deepseek-ai/dsh-sandbox-local": {
112
+ "optional": true
113
+ },
114
+ "@deepseek-ai/dsh-sandbox-policy": {
115
+ "optional": true
116
+ },
117
+ "@deepseek-ai/dsh-sdk-client": {
118
+ "optional": true
119
+ },
120
+ "@deepseek-ai/dsh-sdk-jsonrpc-server": {
121
+ "optional": true
122
+ },
123
+ "@deepseek-ai/dsh-sdk-minimal": {
124
+ "optional": true
125
+ },
126
+ "@deepseek-ai/dsh-session": {
127
+ "optional": true
128
+ },
129
+ "@deepseek-ai/dsh-session-persistence-jsonl": {
130
+ "optional": true
131
+ },
132
+ "@deepseek-ai/dsh-subprocess-local": {
133
+ "optional": true
134
+ },
135
+ "@deepseek-ai/dsh-token-meter": {
136
+ "optional": true
137
+ },
138
+ "@deepseek-ai/dsh-tool-fs": {
139
+ "optional": true
140
+ },
141
+ "@deepseek-ai/dsh-tool-todo": {
142
+ "optional": true
143
+ },
144
+ "react": {
145
+ "optional": true
146
+ },
147
+ "react-dom": {
148
+ "optional": true
149
+ }
150
+ },
151
+ "devDependencies": {
152
+ "@deepseek-ai/dsh": "0.1.5-rc.2",
153
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
154
+ "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.2",
155
+ "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.2",
156
+ "@deepseek-ai/dsh-bash-local": "0.1.5-rc.2",
157
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
158
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
159
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
160
+ "@deepseek-ai/dsh-compaction-basic": "0.1.5-rc.2",
161
+ "@deepseek-ai/dsh-fs-local": "0.1.5-rc.2",
162
+ "@deepseek-ai/dsh-fs-observation-policy": "0.1.5-rc.2",
163
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
164
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.5-rc.2",
165
+ "@deepseek-ai/dsh-sandbox-local": "0.1.5-rc.2",
166
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.2",
167
+ "@deepseek-ai/dsh-sdk-client": "0.1.5-rc.2",
168
+ "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.5-rc.2",
169
+ "@deepseek-ai/dsh-sdk-minimal": "0.1.5-rc.2",
170
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
171
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
172
+ "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
173
+ "@deepseek-ai/dsh-token-meter": "0.1.5-rc.2",
174
+ "@deepseek-ai/dsh-tool-fs": "0.1.5-rc.2",
175
+ "@deepseek-ai/dsh-tool-todo": "0.1.5-rc.2",
176
+ "@types/react": "^18.3.0",
177
+ "react": "^18.3.1",
178
+ "react-dom": "^18.3.1",
179
+ "tsdown": "0.22.14",
180
+ "typescript": "^5.6.0"
181
+ },
182
+ "license": "MIT",
183
+ "repository": {
184
+ "type": "git",
185
+ "url": "git+https://github.com/Ran-sh/dsh-crew.git"
186
+ },
187
+ "homepage": "https://github.com/Ran-sh/dsh-crew",
188
+ "bugs": {
189
+ "url": "https://github.com/Ran-sh/dsh-crew/issues"
190
+ },
191
+ "keywords": [
192
+ "dsh",
193
+ "deepseek",
194
+ "claude-code",
195
+ "codex",
196
+ "zcode",
197
+ "windows",
198
+ "subagent",
199
+ "worker",
200
+ "multimodal",
201
+ "plugin",
202
+ "agent"
203
+ ],
204
+ "files": [
205
+ "bin",
206
+ "lib",
207
+ "src",
208
+ "scripts",
209
+ "agents",
210
+ "commands",
211
+ "codex",
212
+ "zcode",
213
+ "skills",
214
+ "statusline",
215
+ "official-web-bridge",
216
+ "windows",
217
+ "cordis.patch.yml",
218
+ "worker.cordis.yml",
219
+ ".claude-plugin",
220
+ "README.md",
221
+ "README.*.md",
222
+ "docs/job-contracts.md",
223
+ "docs/readiness-matrix.md",
224
+ "docs/gpt-relay-extension.md",
225
+ "docs/ui-surfaces.md",
226
+ "docs/installation.md",
227
+ "docs/images/dsh-crew-logo.png",
228
+ "docs/images/dsh-crew-overview.png",
229
+ "docs/images/dsh-crew-host.png",
230
+ "docs/images/dsh-crew-jobs.png",
231
+ "LICENSE"
232
+ ]
233
+ }
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: dsh-crew
3
+ description: "DSH Crew worker/reviewer dispatch (dsh-crew MCP tools): dispatch coding work, configure models and review gates, and maintain session history. Load only when the operator asks to use dsh-crew."
4
+ ---
5
+
6
+ # DSH Crew
7
+
8
+ **On demand only.** Do not dispatch Crew work because it might help — dispatch
9
+ because the operator asked for it in this turn ("use dsh-crew", "call dsh-crew",
10
+ "派给 crew", and the like). Crew is a capability the operator chooses, not a
11
+ standing policy, so nothing here should shape how you work until it is invoked.
12
+ That is the whole point of it living in a skill rather than in a global
13
+ instruction file: the host's own way of working stays untouched.
14
+
15
+ Once invoked, this is the operating guide.
16
+
17
+ ## What it is
18
+
19
+ A plugin on the official DeepSeek Harness. A hub on 3210 dispatches jobs to
20
+ worker/reviewer models, optionally in an isolated git worktree, and returns a
21
+ compact structured result. Codex, ZCode and Claude Code all reach it through the
22
+ same `dsh-crew` MCP server, so the behaviour below is identical from any host.
23
+
24
+ ## Tools
25
+
26
+ | Tool | Use |
27
+ |---|---|
28
+ | `dsh_run_worker` | dispatch one unit and wait for the result |
29
+ | `dsh_spawn_worker` | dispatch and return a workflow id immediately |
30
+ | `dsh_worker_status` | list workflows with phase, role, model, tokens |
31
+ | `dsh_worker_result` | fetch or wait for one workflow (`wait_seconds`) |
32
+ | `dsh_worker_cancel` | cancel a workflow |
33
+ | `dsh_worker_config` | read/update session settings: enable dispatch, tier, effort, timeout, presets, policy |
34
+
35
+ `dsh_worker_config` with no arguments is the cheapest way to answer "what is
36
+ Crew set to right now". Its settings last for the session only; persisted
37
+ changes belong in the 3210 panel.
38
+
39
+ ## Choosing what to dispatch
40
+
41
+ Delegate a bounded, independently verifiable unit when isolation,
42
+ specialization, parallel work or independent review earns its cost. Give each
43
+ unit its objective, owned files, workspace, constraints and acceptance
44
+ evidence. Keep ambiguity, integration, external effects and final communication
45
+ yourself. Trivial work stays local.
46
+
47
+ Continue authorized work after a successful subtask; a returned workflow is a
48
+ checkpoint, not the end of the task. If a worker's result is incomplete or its
49
+ review asks for changes, that is a task result to act on — not approval.
50
+
51
+ ## Configuration
52
+
53
+ Two surfaces, and they are not equivalent:
54
+
55
+ - **3210** — the full control plane: workflow, model priority, routing, provider
56
+ lifecycle, history, and the peak/off-peak schedule.
57
+ - **3080** — the quick surface (sub-agent switch, model priority order). It
58
+ writes through the same config via a restricted key allowlist.
59
+
60
+ Everything lands in `~/.config/dsh-crew/config.json`. Prefer the panel over hand
61
+ editing: the write path validates, and a hand edit can be silently dropped by
62
+ the loader.
63
+
64
+ ## Model routing
65
+
66
+ Worker and reviewer each walk an ordered `{provider, model}` priority list and
67
+ take the first admissible candidate; an empty list falls through to Harness
68
+ Default. Candidates are skipped when the provider is unhealthy, tombstoned, or
69
+ inside a peak window it is blocked for. A `warn` rule keeps the model selectable
70
+ and records the advisory in the selection trace.
71
+
72
+ The **peak/off-peak schedule** (panel → 波峰波谷调度) restricts chosen models by
73
+ local wall clock: `block` skips the model during peak so the next candidate
74
+ serves the job, `warn` uses it and flags the choice, and an unlisted model is
75
+ unrestricted. Defaults mirror DeepSeek's published peak hours.
76
+
77
+ ## Work
78
+
79
+ `isolation: worktree` is the default: a coding worker runs in a per-job git
80
+ worktree and the primary tree is untouched. Non-git workspaces fail with
81
+ `NOT_GIT_REPOSITORY` rather than silently sharing the tree; use `shared`
82
+ explicitly if that is what you want. Concurrent jobs are capped by
83
+ `max_parallel`.
84
+
85
+ The reviewer gate is `required` by default: an unreviewed change fails. Review
86
+ findings and failing tests are results to address, never a reason to bypass the
87
+ gate.
88
+
89
+ ## History
90
+
91
+ Session storage is shared between 3080 and 3210 — clearing one clears both.
92
+ Cleanup is scoped by provenance, and the default scope is **Crew-created only**,
93
+ so the operator's own conversations survive. `all` removes theirs too; use it
94
+ deliberately. Archived batches are restorable from the panel.
95
+
96
+ ## When Crew is unavailable
97
+
98
+ If a capability needed by a work unit you already dispatched becomes unavailable
99
+ or non-callable, **stop and ask**. Do not implement further on that unit, do not
100
+ repair or reconfigure Crew, do not silently fall back to doing it yourself.
101
+ Perform bounded read-only diagnosis, report the evidence and what already
102
+ completed, and wait for the operator to choose: repair Crew and continue through
103
+ it, or leave Crew alone and continue with the host agent.
104
+
105
+ A nonterminal wait is not an outage — keep polling the same workflow rather than
106
+ dispatching a duplicate. This gate applies only once Crew has been selected for
107
+ a work unit; it does not apply when planning chose local work.
108
+
109
+ ## Host boundaries
110
+
111
+ - Never install, update, register, unlink, repair or mutate anything under
112
+ `~/.dsh`. Crew's runtime lives in its own `DSH_HOME`.
113
+ - Runtime upgrades go through the Crew-owned installer (`dsh-crew update`), never
114
+ through direct pnpm/npm/dsh plugin operations.
115
+ - Preparing an upgrade must not restart 3080 or 3210.
116
+ - The legacy 3080 bridge must never be used for 3210 lifecycle or rollback.
117
+ - Delegation grants no new authority: pushing, publishing, messaging, changing
118
+ credentials or deleting data still need their own authorization.
@@ -7,7 +7,7 @@ import { createHash } from 'node:crypto';
7
7
  import { dirname, join, resolve, relative } from 'node:path';
8
8
  import { fileURLToPath } from 'node:url';
9
9
  import { homedir } from 'node:os';
10
- import { normalizeModelPriority } from '../model-routing.mjs';
10
+ import { normalizeModelPriority } from '../model-routing.mjs';
11
11
  import { crewSkillFiles, installCrewSkill, readCrewSkill, removeCrewSkill } from './crew-skill.mjs';
12
12
  import { zcodeStatus } from './zcode.mjs';
13
13
 
@@ -70,17 +70,10 @@ function renderedCodexRole(root, file) {
70
70
  return source.replace(/args = \[.*server\.mjs"\]/, `args = ["${renderedPath}"]`);
71
71
  }
72
72
 
73
- function managedPolicyBlock(root) {
74
- const policy = readText(join(root, 'codex', 'AGENTS.md'))?.trim();
75
- if (!policy) return null;
76
- return `${POLICY_START}\n${policy}\n${POLICY_END}`;
77
- }
78
-
79
73
  export function codexLegacyPolicyDigest(text) {
80
74
  const canonical = typeof text === 'string' ? text.replace(/\r\n/g, '\n').trim() : '';
81
75
  return canonical ? createHash('sha256').update(canonical, 'utf8').digest('hex') : null;
82
76
  }
83
-
84
77
  export function stripKnownLegacyCodexPolicy(text, { knownHashes = CODEX_LEGACY_POLICY_HASHES } = {}) {
85
78
  if (typeof text !== 'string') return text;
86
79
  const start = POLICY_START.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -36,7 +36,7 @@ export {
36
36
  // included in the identity contract.
37
37
  const RUNTIME_ID = randomUUID();
38
38
 
39
- export const RUNTIME_VERSION = '1.7.0';
39
+ export const RUNTIME_VERSION = '1.7.2';
40
40
  export const HUB_PROTOCOL_VERSION = 1;
41
41
 
42
42
  export const HUB_CAPABILITIES = Object.freeze([
package/codex/AGENTS.md DELETED
@@ -1,53 +0,0 @@
1
- # Global capability-aware delegation policy
2
-
3
- The main Codex agent owns the task through final delivery. DSH Crew is an optional
4
- execution/review capability, not an automatic replacement for the main agent.
5
-
6
- ## Discover and choose
7
-
8
- Before substantial delegation, read the live Crew configuration, capability and
9
- readiness contracts. Discover roles, models, modes and constraints dynamically;
10
- installed, configured, enabled and callable are different states. Refresh the
11
- snapshot after relevant configuration or availability changes, not every small step.
12
-
13
- Delegate bounded, independently verifiable units when isolation, specialization,
14
- parallel work or independent review provides a benefit. Give each unit its objective,
15
- owned files, workspace, constraints and acceptance evidence. Respect concurrency
16
- limits and manual/disabled capabilities. Keep ambiguity, integration, external
17
- effects and final communication in the main agent. Trivial work stays local.
18
-
19
- ## Operator decision gate when DSH Crew is unavailable
20
-
21
- Once Crew is selected for a work unit, any required capability becoming unavailable
22
- or non-callable is a mandatory pause, regardless of cause. Do not implement further,
23
- repair/reconfigure Crew, silently fall back or switch execution paths. Perform only
24
- bounded read-only diagnosis, report the evidence and completed work, and wait for
25
- new operator direction: **repair Crew and continue through Crew**, or **do not repair
26
- Crew and continue with the main agent**. After repair, verify live readiness again;
27
- after local authorization, disclose that the affected work is not independently delegated.
28
-
29
- This gate does not apply when initial planning chooses local work without selecting
30
- Crew. A nonterminal wait is not an outage; continue the same workflow without duplicate
31
- dispatch. Review findings and failing code tests are task results to address, not by
32
- themselves evidence that Crew is unavailable.
33
-
34
- ## Verify and finish
35
-
36
- Consume compact structured results and canonical events. Check changed scope,
37
- delivery completeness, tests, risks and the actual review verdict. Use independent
38
- review for non-trivial code when available and its invocation policy allows it;
39
- never bypass manual/disabled review. Requested changes or missing evidence are not
40
- approval. If selected review cannot run, use the operator gate above.
41
-
42
- Continue authorized work after a successful subtask; do not stop at its checkpoint.
43
- Delegation grants no new authority to push, publish, message, change credentials or
44
- delete data. Do not forward credentials, raw provider payloads or unbounded transcripts.
45
-
46
- ## Harness upgrade redlines
47
-
48
- - Never install, update, register, unlink, repair, or mutate anything under ~/.dsh.
49
- - DSH Crew runtime upgrades must go through the Crew-owned installer and DSH_HOME.
50
- - Never use direct pnpm/npm/dsh plugin operations against the official web profile.
51
- - Preparing a Harness upgrade must not restart 3080 or 3210.
52
- - Standalone workers launch through the official DSH SDK profile contract; dsh-sdk-jsonrpc-demo is obsolete.
53
- - Legacy 3080 bridge must never be used for 3210 lifecycle/restart/rollback.
package/zcode/AGENTS.md DELETED
@@ -1,38 +0,0 @@
1
- # Global capability-aware delegation policy for ZCode
2
-
3
- ZCode is a host adapter for DSH Crew. Use the `dsh-crew` MCP server for Crew
4
- work only after its live capability and readiness surfaces have been checked.
5
-
6
- - Discover the current Crew configuration, capabilities, activation state and
7
- readiness before delegating substantial work. Installed, configured, enabled
8
- and callable are different states; do not infer one from another.
9
- - Match a bounded work unit to an available Crew role/model and preserve the
10
- repository/worktree and Result Contract boundaries. Keep planning, ambiguous
11
- requirements, integration, external side effects and final communication in
12
- the host agent.
13
- - Dispatch selected work asynchronously with `dsh_spawn_worker`, save its
14
- workflow ID, and poll that same workflow with `dsh_worker_result` using
15
- `wait_seconds: 10`. A bounded wait that returns a nonterminal state is not a
16
- failure when `dsh_worker_status` confirms that workflow is still running;
17
- continue polling it and never start a duplicate workflow.
18
- - If Crew is selected and any required capability is unavailable, non-callable,
19
- or returns an unknown/runtime/configuration/credential/routing/timeout error,
20
- pause. Report the evidence and wait for the operator to choose repair Crew or
21
- continue locally; do not repair/reconfigure, silently fall back or retry blindly
22
- before that decision. A nonterminal bounded wait is not a transport timeout.
23
- - Validate returned evidence, changed scope, tests and completion state before
24
- accepting delegated work. Do not expose credentials or raw provider payloads.
25
- - Continue the authorized task after a successful subtask; do not stop at its
26
- checkpoint. Missing evidence or requested review changes are not approval.
27
-
28
- ## Harness upgrade redlines
29
-
30
- - Never install, update, register, unlink, repair, or mutate anything under ~/.dsh.
31
- - DSH Crew runtime upgrades must go through the Crew-owned installer and DSH_HOME.
32
- - Never use direct pnpm/npm/dsh plugin operations against the official web profile.
33
- - Preparing a Harness upgrade must not restart 3080 or 3210.
34
- - Standalone workers launch through the official DSH SDK profile contract; dsh-sdk-jsonrpc-demo is obsolete.
35
- - Legacy 3080 bridge must never be used for 3210 lifecycle/restart/rollback.
36
-
37
- This file is installed as a managed block in `~/.zcode/AGENTS.md`; user-authored
38
- instructions outside the block are preserved.