@ran-sh/dsh-crew 2.2.16 → 2.2.18

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": "2.2.16",
3
+ "version": "2.2.18",
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@ran-sh/dsh-crew",
3
- "version": "2.2.16",
3
+ "version": "2.2.18",
4
4
  "type": "module",
5
5
  "main": "./src/hub/entry.mjs",
6
6
  "bin": {
@@ -49,6 +49,7 @@
49
49
  "@deepseek-ai/dsh": "^0.1.0 || ^0.2.0-rc.1",
50
50
  "@deepseek-ai/dsh-agent": "^0.1.0 || ^0.2.0-rc.1",
51
51
  "@deepseek-ai/dsh-agent-loop": "^0.1.0 || ^0.2.0-rc.1",
52
+ "@deepseek-ai/dsh-agent-preset-registry": "^0.1.0 || ^0.2.0-rc.1",
52
53
  "@deepseek-ai/dsh-bash-local": "^0.1.0 || ^0.2.0-rc.1",
53
54
  "@deepseek-ai/dsh-client-locale": "^0.1.0 || ^0.2.0-rc.1",
54
55
  "@deepseek-ai/dsh-client-ui-renderer": "^0.1.0 || ^0.2.0-rc.1",
@@ -82,6 +83,9 @@
82
83
  "@deepseek-ai/dsh-agent-loop": {
83
84
  "optional": true
84
85
  },
86
+ "@deepseek-ai/dsh-agent-preset-registry": {
87
+ "optional": true
88
+ },
85
89
  "@deepseek-ai/dsh-bash-local": {
86
90
  "optional": true
87
91
  },
@@ -150,30 +154,30 @@
150
154
  }
151
155
  },
152
156
  "devDependencies": {
153
- "@deepseek-ai/dsh": "0.1.6-alpha.1",
154
- "@deepseek-ai/dsh-agent": "0.1.6-alpha.1",
155
- "@deepseek-ai/dsh-agent-loop": "0.1.6-alpha.1",
156
- "@deepseek-ai/dsh-agent-presets": "0.1.6-alpha.1",
157
- "@deepseek-ai/dsh-bash-local": "0.1.6-alpha.1",
158
- "@deepseek-ai/dsh-client-locale": "0.1.6-alpha.1",
159
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.6-alpha.1",
160
- "@deepseek-ai/dsh-client-ui-settings": "0.1.6-alpha.1",
161
- "@deepseek-ai/dsh-compaction-basic": "0.1.6-alpha.1",
162
- "@deepseek-ai/dsh-fs-local": "0.1.6-alpha.1",
163
- "@deepseek-ai/dsh-fs-observation-policy": "0.1.6-alpha.1",
164
- "@deepseek-ai/dsh-llm": "0.1.6-alpha.1",
165
- "@deepseek-ai/dsh-llm-deepseek": "0.1.6-alpha.1",
166
- "@deepseek-ai/dsh-sandbox-local": "0.1.6-alpha.1",
167
- "@deepseek-ai/dsh-sandbox-policy": "0.1.6-alpha.1",
168
- "@deepseek-ai/dsh-sdk-client": "0.1.6-alpha.1",
169
- "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.1.6-alpha.1",
170
- "@deepseek-ai/dsh-sdk-minimal": "0.1.6-alpha.1",
171
- "@deepseek-ai/dsh-session": "0.1.6-alpha.1",
172
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.6-alpha.1",
173
- "@deepseek-ai/dsh-subprocess-local": "0.1.6-alpha.1",
174
- "@deepseek-ai/dsh-token-meter": "0.1.6-alpha.1",
175
- "@deepseek-ai/dsh-tool-fs": "0.1.6-alpha.1",
176
- "@deepseek-ai/dsh-tool-todo": "0.1.6-alpha.1",
157
+ "@deepseek-ai/dsh": "0.2.0-rc.2",
158
+ "@deepseek-ai/dsh-agent": "0.2.0-rc.2",
159
+ "@deepseek-ai/dsh-agent-loop": "0.2.0-rc.2",
160
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.0-rc.2",
161
+ "@deepseek-ai/dsh-bash-local": "0.2.0-rc.2",
162
+ "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
163
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
164
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
165
+ "@deepseek-ai/dsh-compaction-basic": "0.2.0-rc.2",
166
+ "@deepseek-ai/dsh-fs-local": "0.2.0-rc.2",
167
+ "@deepseek-ai/dsh-fs-observation-policy": "0.2.0-rc.2",
168
+ "@deepseek-ai/dsh-llm": "0.2.0-rc.2",
169
+ "@deepseek-ai/dsh-llm-deepseek": "0.2.0-rc.2",
170
+ "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2",
171
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
172
+ "@deepseek-ai/dsh-sdk-client": "0.2.0-rc.2",
173
+ "@deepseek-ai/dsh-sdk-jsonrpc-server": "0.2.0-rc.2",
174
+ "@deepseek-ai/dsh-sdk-minimal": "0.2.0-rc.2",
175
+ "@deepseek-ai/dsh-session": "0.2.0-rc.2",
176
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2",
177
+ "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2",
178
+ "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2",
179
+ "@deepseek-ai/dsh-tool-fs": "0.2.0-rc.2",
180
+ "@deepseek-ai/dsh-tool-todo": "0.2.0-rc.2",
177
181
  "@types/react": "^18.3.0",
178
182
  "react": "^18.3.1",
179
183
  "react-dom": "^18.3.1",
@@ -198,6 +198,23 @@ export function runResolvedDsh(cli, args = [], {
198
198
  };
199
199
  }
200
200
 
201
+ /**
202
+ * Environment for a package-manager child that installs Crew's own runtime.
203
+ *
204
+ * `--prefix`/`--dir` already pin the destination and scripts are disabled, so the
205
+ * child cannot be redirected by a variable — but it must not be *told* about the
206
+ * official Harness home either. Crew's installer is routinely run from inside a
207
+ * DSH session, whose ambient `DSH_HOME` is `~/.dsh`, and the contract these two
208
+ * installers carry is "installs only under the Crew home". Dropping the variable
209
+ * keeps that true by construction instead of by caller discipline, which is what
210
+ * the unit contract asserts and what an operator shell can silently break.
211
+ */
212
+ function packageManagerEnv(env) {
213
+ const child = { ...env };
214
+ delete child.DSH_HOME;
215
+ return child;
216
+ }
217
+
201
218
  /**
202
219
  * Install a reusable DSH CLI into Crew-owned state. This is the only helper
203
220
  * that may invoke a package manager, and callers must explicitly opt into it.
@@ -266,11 +283,12 @@ export function ensureCrewDshRuntime({
266
283
  ? ['add', '--dir', runtimeRoot, '--ignore-scripts', packageSpec]
267
284
  : ['install', '--prefix', runtimeRoot, '--no-package-lock', '--ignore-scripts', '--omit=dev', packageSpec];
268
285
  const invocation = buildDshInvocation(packageManager, packageArgs, { platform, comspec });
286
+ const installEnv = packageManagerEnv(env);
269
287
  const runInstall = () => runner(invocation.command, invocation.args, {
270
288
  encoding: 'utf8',
271
289
  stdio: ['ignore', 'pipe', 'pipe'],
272
290
  shell: invocation.shell,
273
- env: { ...env },
291
+ env: installEnv,
274
292
  });
275
293
  const result = runInstall();
276
294
  const cli = resolveDshCli({ home, env, platform, exists, findCommand, includeCompatibility: false, read });
@@ -457,11 +475,12 @@ export function installDshInto({
457
475
  ? ['add', '--dir', root, '--ignore-scripts', packageSpec]
458
476
  : ['install', '--prefix', root, '--no-package-lock', '--ignore-scripts', '--omit=dev', packageSpec];
459
477
  const invocation = buildDshInvocation(packageManager, packageArgs, { platform, comspec });
478
+ const installEnv = packageManagerEnv(env);
460
479
  const runInstall = () => runner(invocation.command, invocation.args, {
461
480
  encoding: 'utf8',
462
481
  stdio: ['ignore', 'pipe', 'pipe'],
463
482
  shell: invocation.shell,
464
- env: { ...env },
483
+ env: installEnv,
465
484
  });
466
485
  const result = runInstall();
467
486
  if (result.status !== 0) {
@@ -4,7 +4,7 @@
4
4
  // resolve to this exact version. All other modules re-export from here so a
5
5
  // cohort bump touches exactly one file (plus package.json's 48 DSH pins).
6
6
  export const DSH_CLI_PACKAGE = '@deepseek-ai/dsh';
7
- export const TARGET_DSH_VERSION = '0.1.6-alpha.1';
7
+ export const TARGET_DSH_VERSION = '0.2.0-rc.2';
8
8
  export const TARGET_DSH_SPEC = `${DSH_CLI_PACKAGE}@${TARGET_DSH_VERSION}`;
9
9
 
10
10
  export const DSH_SCOPE = '@deepseek-ai/';
@@ -31,12 +31,12 @@ export function isDshCohortPackage(name) {
31
31
  // named by CREW_PROFILE_DEFAULT_BUNDLES in src/dsh-cli-runtime.mjs. They
32
32
  // belong to the runtime tree the profile composes, not to this plugin's
33
33
  // peer set, so they are correctly absent here. A payload never vendors them.
34
- // * @deepseek-ai/dsh-agent-presets is listed but currently inert: nothing in
35
- // package.json declares it, and only a declared name is pinned. It stays
36
- // because it is the 0.1.6-alpha.1 provider of the `agentPresets` service this
37
- // plugin resolves, and because its name dies at 0.1.7 — a host that needs the
38
- // provider must not get it from the peer block, so the only way it can ever
39
- // be pinned to the runtime cohort is from this list.
34
+ // * @deepseek-ai/dsh-agent-preset-registry is the provider of the
35
+ // `agentPresets` service this plugin resolves, and it is declared, so it is
36
+ // both pinned here and carried as a peer. Its predecessor
37
+ // `@deepseek-ai/dsh-agent-presets` stopped publishing at 0.1.6-alpha.2 and is
38
+ // named nowhere — a cohort that still listed it would be describing a package
39
+ // no registry can serve.
40
40
  //
41
41
  // The list is authoritative wherever a member is declared: a peer range and an
42
42
  // explicit dependency both resolve to TARGET_DSH_VERSION in the staged payload.
@@ -47,7 +47,7 @@ export const DSH_COHORT_PACKAGES = Object.freeze([
47
47
  DSH_CLI_PACKAGE,
48
48
  '@deepseek-ai/dsh-agent',
49
49
  '@deepseek-ai/dsh-agent-loop',
50
- '@deepseek-ai/dsh-agent-presets',
50
+ '@deepseek-ai/dsh-agent-preset-registry',
51
51
  '@deepseek-ai/dsh-bash-local',
52
52
  '@deepseek-ai/dsh-client-locale',
53
53
  '@deepseek-ai/dsh-client-ui-renderer',
@@ -9,7 +9,7 @@
9
9
  //
10
10
  // Two hazards shape the rules:
11
11
  // 1. The desktop app runs a DIFFERENT cohort than Crew pins (0.1.7-rc.2 vs
12
- // 0.1.6-alpha.1), so an entry may name a package Crew's runtime does not
12
+ // 0.2.0-rc.2), so an entry may name a package Crew's runtime does not
13
13
  // have. The Harness installs patches fail-loud, so such an entry would break
14
14
  // the hub: it is skipped and reported instead.
15
15
  // 2. Crew's own managed blocks (the desktop bridge insert) are not user
@@ -5,7 +5,7 @@
5
5
  // - HUB_PROTOCOL_VERSION changes only when Hub <-> MCP wire semantics become
6
6
  // incompatible.
7
7
  //
8
- // The Harness/DSH cohort version (e.g. 0.1.6-alpha.1) is a THIRD, independent
8
+ // The Harness/DSH cohort version (e.g. 0.2.0-rc.2) is a THIRD, independent
9
9
  // domain: it identifies the installed @deepseek-ai/dsh package generation,
10
10
  // never the Crew release. Verifiers must compare the cohort against
11
11
  // dsh_version, never against runtime_version.
@@ -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 = '2.2.16';
39
+ export const RUNTIME_VERSION = '2.2.18';
40
40
  export const HUB_PROTOCOL_VERSION = 1;
41
41
 
42
42
  export const HUB_CAPABILITIES = Object.freeze([