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/CHANGELOG.md +11 -0
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/lib/adapters/registry.js +29 -0
- package/lib/adapters/registry.js.map +1 -1
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +27 -11
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -1
- package/lib/client.js +22 -7
- package/lib/console-host/projection.js +1 -1
- package/lib/console-host/projection.js.map +1 -1
- package/lib/session-checkout-module.js +4 -1
- package/lib/session-checkout-module.js.map +1 -1
- package/package.json +19 -10
- package/scripts/check-publish.mjs +31 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-git-worktree",
|
|
3
|
-
"version": "0.7.
|
|
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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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')
|