dsh-git-worktree 0.7.2 → 0.7.4
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 +33 -0
- package/NOTICE +1 -1
- package/README.en.md +51 -41
- package/README.md +51 -41
- package/lib/client/console-remote/index.d.ts +7 -2
- package/lib/client/console-remote/index.js +16 -2
- package/lib/client/console-remote/index.js.map +1 -1
- package/lib/client/index.d.ts +1 -1
- package/lib/client/index.js +0 -2
- package/lib/client/index.js.map +1 -1
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client.js +478 -198
- package/package.json +32 -28
- package/scripts/check-publish.mjs +8 -9
- package/scripts/workspace-sidebar-upstream.mjs +13 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-git-worktree",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
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",
|
|
@@ -43,7 +43,8 @@
|
|
|
43
43
|
},
|
|
44
44
|
"client": {
|
|
45
45
|
"inject": [
|
|
46
|
-
"@deepseek-ai/dsh-
|
|
46
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
47
|
+
"@deepseek-ai/dsh-api-workspace-controller",
|
|
47
48
|
"@deepseek-ai/dsh-client-connection",
|
|
48
49
|
"@deepseek-ai/dsh-client-locale",
|
|
49
50
|
"@deepseek-ai/dsh-client-ui-conversation",
|
|
@@ -79,38 +80,41 @@
|
|
|
79
80
|
"prepublishOnly": "pnpm run check:sidebar-version && pnpm run build && pnpm run check:publish:release && pnpm run test"
|
|
80
81
|
},
|
|
81
82
|
"dependencies": {
|
|
82
|
-
"@deepseek-ai/schemastery": "3.18.
|
|
83
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
83
84
|
"zod": "4.4.3"
|
|
84
85
|
},
|
|
85
86
|
"peerDependencies": {
|
|
86
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
87
|
-
"@deepseek-ai/dsh-agent": "^0.1.
|
|
88
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
89
|
-
"@deepseek-ai/dsh-commands": "^0.1.
|
|
90
|
-
"@deepseek-ai/dsh-session": "^0.1.
|
|
91
|
-
"@deepseek-ai/dsh-subprocess": "^0.1.
|
|
92
|
-
"@deepseek-ai/dsh-system-prompt": "^0.1.
|
|
93
|
-
"@deepseek-ai/dsh-tools": "^0.1.
|
|
94
|
-
"@deepseek-ai/dsh-typert-protocol": "^0.1.
|
|
95
|
-
"@deepseek-ai/dsh-typert-registry": "^0.1.
|
|
87
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
88
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-commands": "^0.1.2-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-session": "^0.1.2-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-subprocess": "^0.1.2-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.2-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-tools": "^0.1.2-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.2-rc.1",
|
|
96
|
+
"@deepseek-ai/dsh-typert-registry": "^0.1.2-rc.1",
|
|
96
97
|
"react": "^18.2.0"
|
|
97
98
|
},
|
|
98
99
|
"devDependencies": {
|
|
99
|
-
"@deepseek-ai/cordis": "4.0.
|
|
100
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
101
|
-
"@deepseek-ai/dsh-api-gateway": "0.1.
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-client-
|
|
105
|
-
"@deepseek-ai/dsh-client-
|
|
106
|
-
"@deepseek-ai/dsh-
|
|
107
|
-
"@deepseek-ai/dsh-
|
|
108
|
-
"@deepseek-ai/dsh-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
100
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
101
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-api-gateway": "0.1.2-rc.1",
|
|
103
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-rc.1",
|
|
104
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.2-rc.1",
|
|
105
|
+
"@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
|
|
106
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
|
|
107
|
+
"@deepseek-ai/dsh-client-store": "0.1.2-rc.1",
|
|
108
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1",
|
|
109
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.2-rc.1",
|
|
110
|
+
"@deepseek-ai/dsh-commands": "0.1.2-rc.1",
|
|
111
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-subprocess": "0.1.2-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-tools": "0.1.2-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-typert-loader": "0.1.2-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1",
|
|
114
118
|
"@testing-library/react": "^16.3.2",
|
|
115
119
|
"@types/node": "^22.0.0",
|
|
116
120
|
"@types/react": "~18.3.31",
|
|
@@ -155,7 +155,8 @@ if (!client || client.platform !== 'web' || !Array.isArray(client.inject) || cli
|
|
|
155
155
|
fail('package.json must declare dsh.client { platform: "web", inject: [...] }')
|
|
156
156
|
}
|
|
157
157
|
const requiredClientPackages = [
|
|
158
|
-
'@deepseek-ai/dsh-
|
|
158
|
+
'@deepseek-ai/dsh-api-session-controller',
|
|
159
|
+
'@deepseek-ai/dsh-api-workspace-controller',
|
|
159
160
|
'@deepseek-ai/dsh-client-ui-conversation',
|
|
160
161
|
'@deepseek-ai/dsh-api-gateway',
|
|
161
162
|
]
|
|
@@ -171,7 +172,8 @@ const allowedBrowserRequires = new Set([
|
|
|
171
172
|
'react',
|
|
172
173
|
'react/jsx-runtime',
|
|
173
174
|
'@deepseek-ai/dsh-client-ui-primitives',
|
|
174
|
-
'@deepseek-ai/
|
|
175
|
+
'@deepseek-ai/cordis',
|
|
176
|
+
'@deepseek-ai/dsh-client-store',
|
|
175
177
|
])
|
|
176
178
|
const unsupportedBrowserRequires = browserRequires.filter(specifier => !allowedBrowserRequires.has(specifier))
|
|
177
179
|
if (unsupportedBrowserRequires.length > 0) {
|
|
@@ -197,11 +199,6 @@ if (!handoff || handoff.id !== manifest.name || typeof handoff.factory !== 'func
|
|
|
197
199
|
}
|
|
198
200
|
const browserRequire = (specifier) => {
|
|
199
201
|
if (specifier === '@deepseek-ai/dsh-client-ui-primitives') return { Modal: () => null, Menu: () => null }
|
|
200
|
-
if (specifier === '@deepseek-ai/dsh-client-runtime/client') return {
|
|
201
|
-
defineStore: spec => ({ spec, create: () => ({ actions: {} }) }),
|
|
202
|
-
indexSubagentDescendants: () => new Map(),
|
|
203
|
-
abbreviateHomePath: path => path,
|
|
204
|
-
}
|
|
205
202
|
return require(specifier)
|
|
206
203
|
}
|
|
207
204
|
let clientExports
|
|
@@ -214,8 +211,10 @@ if (!clientExports || typeof clientExports.apply !== 'function' || !Array.isArra
|
|
|
214
211
|
fail('client bundle factory did not return apply + inject')
|
|
215
212
|
}
|
|
216
213
|
if (!clientExports.inject.includes('remote')) fail('client bundle must inject the official Remote service before $mount')
|
|
217
|
-
if (!clientExports.inject.includes('
|
|
218
|
-
|
|
214
|
+
if (!clientExports.inject.includes('remote.directoryPicker')) fail('client bundle must wait for the official directory-picker Remote before restoring uiWorkspace')
|
|
215
|
+
if (clientExports.inject.includes('conversation')) fail('client bundle root must not wait for conversation: uiConversation depends on the uiWorkspace restored by this plugin')
|
|
216
|
+
if (clientExports.inject.includes('connection')) fail('client bundle root must keep connection-dependent Worktree views in the deferred child fiber')
|
|
217
|
+
ok(`${clientRel} registers ${manifest.name} through the browser ModuleLoader contract without a uiWorkspace/uiConversation boot cycle`)
|
|
219
218
|
|
|
220
219
|
// 7. Release CI and npm's prepublish lifecycle require committed source identity;
|
|
221
220
|
// local review builds intentionally run against a dirty managed Worktree.
|
|
@@ -2,9 +2,9 @@ import { createHash } from 'node:crypto'
|
|
|
2
2
|
import { readFileSync } from 'node:fs'
|
|
3
3
|
import { createRequire } from 'node:module'
|
|
4
4
|
|
|
5
|
-
export const WORKSPACE_UI_VERSION = '0.1.
|
|
6
|
-
export const WORKSPACE_LOCALE_VERSION = '0.1.
|
|
7
|
-
export const WORKSPACE_CLIENT_SHA256 = '
|
|
5
|
+
export const WORKSPACE_UI_VERSION = '0.1.2-rc.1'
|
|
6
|
+
export const WORKSPACE_LOCALE_VERSION = '0.1.2-rc.1'
|
|
7
|
+
export const WORKSPACE_CLIENT_SHA256 = '53c40660195c42cde709b802e239f473dd721f45bc329684af31c01fdb73282a'
|
|
8
8
|
export const OFFICIAL_WORKSPACE_VIRTUAL_ID = 'virtual:dsh-official-workspace-client'
|
|
9
9
|
export const RESOLVED_OFFICIAL_WORKSPACE_VIRTUAL_ID = `\0${OFFICIAL_WORKSPACE_VIRTUAL_ID}`
|
|
10
10
|
|
|
@@ -53,12 +53,12 @@ export function decorateOfficialWorkspaceClient(source) {
|
|
|
53
53
|
'\t\t\t\tconst group = buildGroup(workspace.workspaceId, workspace.workspaceId, workspace.path, Date.parse(workspace.createdAt), workspace.title, members, "account");\n\t\t\t\tif (workspace.__dshGitWorktreeProtected === true) group.__dshGitWorktreeProtected = true;\n\t\t\t\tgroups.push(group);',
|
|
54
54
|
'Managed workspace metadata')
|
|
55
55
|
derived = replaceExactlyOnce(derived,
|
|
56
|
-
'\t\t\t\tupdatedAt: s.updatedAt,\n\t\t\t\t...
|
|
57
|
-
'\t\t\t\tupdatedAt: s.updatedAt,\n\t\t\t\t...s.__dshGitWorktree === void 0 ? {} : { __dshGitWorktree: s.__dshGitWorktree },\n\t\t\t\t...
|
|
56
|
+
'\t\t\t\tupdatedAt: s.updatedAt,\n\t\t\t\t...pendingInteraction === void 0 ? {} : { pendingInteraction }',
|
|
57
|
+
'\t\t\t\tupdatedAt: s.updatedAt,\n\t\t\t\t...s.__dshGitWorktree === void 0 ? {} : { __dshGitWorktree: s.__dshGitWorktree },\n\t\t\t\t...pendingInteraction === void 0 ? {} : { pendingInteraction }',
|
|
58
58
|
'session node metadata')
|
|
59
59
|
derived = replaceExactlyOnce(derived,
|
|
60
|
-
'\t\t\t\t\t\trunningSubagentCount: descendants.get(summary.id)?.runningCount ?? 0,\n\t\t\t\t\t\t...
|
|
61
|
-
'\t\t\t\t\t\trunningSubagentCount: descendants.get(summary.id)?.runningCount ?? 0,\n\t\t\t\t\t\t...summary.__dshGitWorktree === void 0 ? {} : { __dshGitWorktree: summary.__dshGitWorktree },\n\t\t\t\t\t\t...
|
|
60
|
+
'\t\t\t\t\t\trunningSubagentCount: descendants.get(summary.id)?.runningCount ?? 0,\n\t\t\t\t\t\t...pendingInteraction === void 0 ? {} : { pendingInteraction },',
|
|
61
|
+
'\t\t\t\t\t\trunningSubagentCount: descendants.get(summary.id)?.runningCount ?? 0,\n\t\t\t\t\t\t...summary.__dshGitWorktree === void 0 ? {} : { __dshGitWorktree: summary.__dshGitWorktree },\n\t\t\t\t\t\t...pendingInteraction === void 0 ? {} : { pendingInteraction },',
|
|
62
62
|
'search result metadata')
|
|
63
63
|
derived = replaceExactlyOnce(derived,
|
|
64
64
|
'\t\t\t\t\tlabel: g.label,\n\t\t\t\t\tsessionCount: g.sessions.length,',
|
|
@@ -81,8 +81,8 @@ export function decorateOfficialWorkspaceClient(source) {
|
|
|
81
81
|
'\t\t\tconst primaryStatus = statuses[0];\n\t\t\tconst worktreeDecoration = managedWorktreeDecoration(result, t);\n\t\t\treturn (0, react_jsx_runtime.jsxs)("button", {\n\t\t\t\ttype: "button",\n\t\t\t\tclassName: clsx(Rows_module_css_default.searchResultRow, selected && Rows_module_css_default.selected),\n\t\t\t\t...worktreeDecoration === void 0 ? {} : { "aria-label": worktreeDecoration.ariaLabel, "data-managed-worktree": "true" },',
|
|
82
82
|
'search Worktree identity')
|
|
83
83
|
derived = replaceExactlyOnce(derived,
|
|
84
|
-
'\t\t\t\t\t\tchildren: (primaryStatus.state !== "done" || result.completed) && (0, react_jsx_runtime.jsx)(SessionStatusDots, { statuses })\n\t\t\t\t\t})
|
|
85
|
-
'\t\t\t\t\t\tchildren: (primaryStatus.state !== "done" || result.completed) && (0, react_jsx_runtime.jsx)(SessionStatusDots, { statuses })\n\t\t\t\t\t})
|
|
84
|
+
'\t\t\t\t\t\t\tchildren: (primaryStatus.state !== "done" || result.completed) && (0, react_jsx_runtime.jsx)(SessionStatusDots, { statuses })\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t(0, react_jsx_runtime.jsx)("span", {\n\t\t\t\t\t\t\tclassName: Rows_module_css_default.searchResultTitle,',
|
|
85
|
+
'\t\t\t\t\t\t\tchildren: (primaryStatus.state !== "done" || result.completed) && (0, react_jsx_runtime.jsx)(SessionStatusDots, { statuses })\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tworktreeDecoration !== void 0 && (0, react_jsx_runtime.jsx)(ManagedWorktreeIdentity, { decoration: worktreeDecoration }),\n\t\t\t\t\t\t(0, react_jsx_runtime.jsx)("span", {\n\t\t\t\t\t\t\tclassName: Rows_module_css_default.searchResultTitle,',
|
|
86
86
|
'search Worktree decoration')
|
|
87
87
|
derived = replaceExactlyOnce(derived,
|
|
88
88
|
'\t\t\tconst label = row.workspaceId === void 0 ? t("group.ungrouped") : row.label;\n\t\t\tconst active = group.expanded && group.containsCurrent;',
|
|
@@ -138,12 +138,14 @@ export function materializeOfficialWorkspaceClientModule() {
|
|
|
138
138
|
}
|
|
139
139
|
const body = source.slice(start + factoryToken.length, end)
|
|
140
140
|
return `
|
|
141
|
-
import * as
|
|
141
|
+
import * as cordis from '@deepseek-ai/cordis'
|
|
142
|
+
import * as store from '@deepseek-ai/dsh-client-store'
|
|
142
143
|
import * as jsxRuntime from 'react/jsx-runtime'
|
|
143
144
|
import * as react from 'react'
|
|
144
145
|
import * as primitives from '@deepseek-ai/dsh-client-ui-primitives'
|
|
145
146
|
const modules = {
|
|
146
|
-
'@deepseek-ai/
|
|
147
|
+
'@deepseek-ai/cordis': cordis,
|
|
148
|
+
'@deepseek-ai/dsh-client-store': store,
|
|
147
149
|
'react/jsx-runtime': jsxRuntime,
|
|
148
150
|
'react': react,
|
|
149
151
|
'@deepseek-ai/dsh-client-ui-primitives': primitives,
|