dsh-git-worktree 0.7.1 → 0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-git-worktree",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Experimental Git worktree Session Targets for DeepSeek Harness with isolated sessions, review checkpoints, human-confirmed delivery, and safe recovery.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -79,29 +79,38 @@
79
79
  "prepublishOnly": "pnpm run check:sidebar-version && pnpm run build && pnpm run check:publish:release && pnpm run test"
80
80
  },
81
81
  "dependencies": {
82
- "@deepseek-ai/cordis": "4.0.1",
83
- "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
84
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
85
- "@deepseek-ai/dsh-session": "0.1.1-rc.2",
86
- "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
87
- "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
88
- "@deepseek-ai/dsh-tools": "0.1.1-rc.2",
89
- "@deepseek-ai/dsh-typert-protocol": "0.1.1-rc.2",
90
- "@deepseek-ai/dsh-typert-registry": "0.1.1-rc.2",
91
82
  "@deepseek-ai/schemastery": "3.18.1",
92
83
  "zod": "4.4.3"
93
84
  },
94
85
  "peerDependencies": {
86
+ "@deepseek-ai/cordis": "^4.0.1",
87
+ "@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
95
88
  "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
89
+ "@deepseek-ai/dsh-commands": "^0.1.1-rc.2",
90
+ "@deepseek-ai/dsh-session": "^0.1.1-rc.2",
91
+ "@deepseek-ai/dsh-subprocess": "^0.1.1-rc.2",
92
+ "@deepseek-ai/dsh-system-prompt": "^0.1.1-rc.2",
93
+ "@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
94
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2",
95
+ "@deepseek-ai/dsh-typert-registry": "^0.1.1-rc.2",
96
96
  "react": "^18.2.0"
97
97
  },
98
98
  "devDependencies": {
99
+ "@deepseek-ai/cordis": "4.0.1",
100
+ "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
99
101
  "@deepseek-ai/dsh-api-gateway": "0.1.1-rc.2",
100
102
  "@deepseek-ai/dsh-client-connection": "0.1.1-rc.2",
101
103
  "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
102
104
  "@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
103
105
  "@deepseek-ai/dsh-client-ui-workspace": "0.1.1-rc.2",
106
+ "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
107
+ "@deepseek-ai/dsh-session": "0.1.1-rc.2",
108
+ "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
109
+ "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
110
+ "@deepseek-ai/dsh-tools": "0.1.1-rc.2",
104
111
  "@deepseek-ai/dsh-typert-loader": "0.1.1-rc.2",
112
+ "@deepseek-ai/dsh-typert-protocol": "0.1.1-rc.2",
113
+ "@deepseek-ai/dsh-typert-registry": "0.1.1-rc.2",
105
114
  "@testing-library/react": "^16.3.2",
106
115
  "@types/node": "^22.0.0",
107
116
  "@types/react": "~18.3.31",
@@ -35,7 +35,32 @@ function includedByFiles(target) {
35
35
  })
36
36
  }
37
37
 
38
- // 1. Host bundle declaration and patch.
38
+ // 1. Host singleton packages must resolve from DSH instead of a plugin-private dependency tree.
39
+ const hostSingletonPackages = [
40
+ '@deepseek-ai/cordis',
41
+ '@deepseek-ai/dsh-agent',
42
+ '@deepseek-ai/dsh-commands',
43
+ '@deepseek-ai/dsh-session',
44
+ '@deepseek-ai/dsh-subprocess',
45
+ '@deepseek-ai/dsh-system-prompt',
46
+ '@deepseek-ai/dsh-tools',
47
+ '@deepseek-ai/dsh-typert-protocol',
48
+ '@deepseek-ai/dsh-typert-registry',
49
+ ]
50
+ for (const packageName of hostSingletonPackages) {
51
+ if (manifest.dependencies?.[packageName] !== undefined) {
52
+ fail(`${packageName} must be a peerDependency; a private copy breaks Host service identity`)
53
+ }
54
+ if (typeof manifest.peerDependencies?.[packageName] !== 'string') {
55
+ fail(`${packageName} is missing from peerDependencies`)
56
+ }
57
+ if (typeof manifest.devDependencies?.[packageName] !== 'string') {
58
+ fail(`${packageName} is missing from devDependencies`)
59
+ }
60
+ }
61
+ ok(`${hostSingletonPackages.length} Host singleton packages are peer-provided and locally testable`)
62
+
63
+ // 2. Host bundle declaration and patch.
39
64
  const patchRel = manifest.dsh?.bundle?.patch
40
65
  if (typeof patchRel !== 'string' || patchRel.length === 0) {
41
66
  fail('package.json lacks "dsh".bundle.patch — dsh plugin add would install a plain dependency without mounting it')
@@ -58,7 +83,7 @@ if (!manifest.files?.includes('NOTICE') || !existsSync(resolve(root, 'NOTICE')))
58
83
  }
59
84
  ok(`Host mount patch ${patchRel} replaces official ui-workspace with one gated derivative`)
60
85
 
61
- // 2. Every package export must exist and be included in the tarball.
86
+ // 3. Every package export must exist and be included in the tarball.
62
87
  const exportsMap = manifest.exports
63
88
  if (!exportsMap || typeof exportsMap !== 'object' || Array.isArray(exportsMap)) fail('package.json lacks an exports map')
64
89
  let exportCount = 0
@@ -83,7 +108,7 @@ for (const stale of [
83
108
  }
84
109
  ok('removed Diff UI has no stale publish artifact')
85
110
 
86
- // 3. Manual strict Typert artifacts: one descriptor identity feeds Host Loader and Client mount.
111
+ // 4. Manual strict Typert artifacts: one descriptor identity feeds Host Loader and Client mount.
87
112
  if (manifest.dependencies?.['@deepseek-ai/dsh-typert-generator'] || manifest.devDependencies?.['@deepseek-ai/dsh-typert-generator']) {
88
113
  fail('manual contribution package must not depend on @deepseek-ai/dsh-typert-generator')
89
114
  }
@@ -116,7 +141,7 @@ for (const descriptor of hostContribution.invocations) {
116
141
  }
117
142
  ok(`manual strict ./typert + ./remote contribution (${expectedRemoteMethods.length} methods)`)
118
143
 
119
- // 4. Host entry metadata required by the Cordis loader.
144
+ // 5. Host entry metadata required by the Cordis loader.
120
145
  const entryRel = exportsMap['.']?.default ?? manifest.main
121
146
  if (typeof entryRel !== 'string') fail('exports["."].default is not a path')
122
147
  const entry = readFileSync(resolve(root, entryRel), 'utf8')
@@ -124,7 +149,7 @@ if (!/export\s+function\s+apply\b/.test(entry)) fail(`${entryRel} does not expor
124
149
  if (!/export\s+const\s+inject\b/.test(entry)) fail(`${entryRel} does not export const inject`)
125
150
  ok(`${entryRel} exports Host apply + inject`)
126
151
 
127
- // 5. Browser ToolView declaration and executable ModuleLoader closure.
152
+ // 6. Browser ToolView declaration and executable ModuleLoader closure.
128
153
  const client = manifest.dsh?.client
129
154
  if (!client || client.platform !== 'web' || !Array.isArray(client.inject) || client.inject.length === 0) {
130
155
  fail('package.json must declare dsh.client { platform: "web", inject: [...] }')
@@ -192,7 +217,7 @@ if (!clientExports.inject.includes('remote')) fail('client bundle must inject th
192
217
  if (!clientExports.inject.includes('conversation')) fail('client bundle must inject the public conversation service for pre-session draft transfer')
193
218
  ok(`${clientRel} registers ${manifest.name} through the browser ModuleLoader contract`)
194
219
 
195
- // 6. Release CI and npm's prepublish lifecycle require committed source identity;
220
+ // 7. Release CI and npm's prepublish lifecycle require committed source identity;
196
221
  // local review builds intentionally run against a dirty managed Worktree.
197
222
  const requireClean = process.env.CHECK_PUBLISH_REQUIRE_CLEAN === '1'
198
223
  || process.argv.includes('--require-clean')