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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-git-worktree",
3
- "version": "0.7.2",
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-client-runtime",
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.1",
83
+ "@deepseek-ai/schemastery": "3.18.2",
83
84
  "zod": "4.4.3"
84
85
  },
85
86
  "peerDependencies": {
86
- "@deepseek-ai/cordis": "^4.0.1",
87
- "@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
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",
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.1",
100
- "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
101
- "@deepseek-ai/dsh-api-gateway": "0.1.1-rc.2",
102
- "@deepseek-ai/dsh-client-connection": "0.1.1-rc.2",
103
- "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
104
- "@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
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",
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",
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-client-runtime',
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/dsh-client-runtime/client',
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('conversation')) fail('client bundle must inject the public conversation service for pre-session draft transfer')
218
- ok(`${clientRel} registers ${manifest.name} through the browser ModuleLoader contract`)
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.1-rc.2'
6
- export const WORKSPACE_LOCALE_VERSION = '0.1.1-rc.2'
7
- export const WORKSPACE_CLIENT_SHA256 = '75d8a09a43a820e0ff8470e7b9c87b6dced523764ee650a8382317f6ef7a314b'
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...s.pendingInteraction === void 0 ? {} : { pendingInteraction: s.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...s.pendingInteraction === void 0 ? {} : { pendingInteraction: s.pendingInteraction }',
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...summary.pendingInteraction === void 0 ? {} : { pendingInteraction: summary.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...summary.pendingInteraction === void 0 ? {} : { pendingInteraction: summary.pendingInteraction },',
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}), (0, react_jsx_runtime.jsx)("span", {\n\t\t\t\t\t\tclassName: Rows_module_css_default.searchResultTitle,',
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}), worktreeDecoration !== void 0 && (0, react_jsx_runtime.jsx)(ManagedWorktreeIdentity, { decoration: worktreeDecoration }), (0, react_jsx_runtime.jsx)("span", {\n\t\t\t\t\t\tclassName: Rows_module_css_default.searchResultTitle,',
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 runtime from '@deepseek-ai/dsh-client-runtime/client'
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/dsh-client-runtime/client': runtime,
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,