dsh-git-worktree 0.1.1 → 0.2.0

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.
Files changed (133) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/LICENSE +21 -21
  3. package/README.md +115 -37
  4. package/README.zh.md +115 -37
  5. package/cordis.patch.yml +7 -7
  6. package/lib/adapters/registry.js +40 -0
  7. package/lib/adapters/registry.js.map +1 -1
  8. package/lib/adapters/safe-file.js +34 -4
  9. package/lib/adapters/safe-file.js.map +1 -1
  10. package/lib/client/WorktreeCreateRow.d.ts +7 -0
  11. package/lib/client/WorktreeCreateRow.js +26 -0
  12. package/lib/client/WorktreeCreateRow.js.map +1 -0
  13. package/lib/client/WorktreeReviewRow.d.ts +11 -0
  14. package/lib/client/WorktreeReviewRow.js +67 -0
  15. package/lib/client/WorktreeReviewRow.js.map +1 -0
  16. package/lib/client/actions.d.ts +86 -0
  17. package/lib/client/actions.js +35 -0
  18. package/lib/client/actions.js.map +1 -0
  19. package/lib/client/console-remote/adapter.d.ts +3 -0
  20. package/lib/client/console-remote/adapter.js +59 -0
  21. package/lib/client/console-remote/adapter.js.map +1 -0
  22. package/lib/client/console-remote/index.d.ts +18 -0
  23. package/lib/client/console-remote/index.js +17 -0
  24. package/lib/client/console-remote/index.js.map +1 -0
  25. package/lib/client/index.d.ts +17 -0
  26. package/lib/client/index.js +44 -0
  27. package/lib/client/index.js.map +1 -0
  28. package/lib/client/model.d.ts +68 -0
  29. package/lib/client/model.js +127 -0
  30. package/lib/client/model.js.map +1 -0
  31. package/lib/client/pre-session/PreSessionWorktreeToggle.d.ts +16 -0
  32. package/lib/client/pre-session/PreSessionWorktreeToggle.js +128 -0
  33. package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -0
  34. package/lib/client/pre-session/controller.d.ts +42 -0
  35. package/lib/client/pre-session/controller.js +149 -0
  36. package/lib/client/pre-session/controller.js.map +1 -0
  37. package/lib/client/pre-session/index.d.ts +15 -0
  38. package/lib/client/pre-session/index.js +16 -0
  39. package/lib/client/pre-session/index.js.map +1 -0
  40. package/lib/client/review-console/ReviewActions.d.ts +15 -0
  41. package/lib/client/review-console/ReviewActions.js +219 -0
  42. package/lib/client/review-console/ReviewActions.js.map +1 -0
  43. package/lib/client/review-console/WorktreeReviewPanel.d.ts +20 -0
  44. package/lib/client/review-console/WorktreeReviewPanel.js +75 -0
  45. package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -0
  46. package/lib/client/review-console/index.d.ts +8 -0
  47. package/lib/client/review-console/index.js +22 -0
  48. package/lib/client/review-console/index.js.map +1 -0
  49. package/lib/client/review-console/review-console.styles.d.ts +1 -0
  50. package/lib/client/review-console/review-console.styles.js +81 -0
  51. package/lib/client/review-console/review-console.styles.js.map +1 -0
  52. package/lib/client/review-console/status-events.d.ts +3 -0
  53. package/lib/client/review-console/status-events.js +6 -0
  54. package/lib/client/review-console/status-events.js.map +1 -0
  55. package/lib/client/styles.d.ts +1 -0
  56. package/lib/client/styles.js +78 -0
  57. package/lib/client/styles.js.map +1 -0
  58. package/lib/client/target-console/TargetStatusAction.d.ts +7 -0
  59. package/lib/client/target-console/TargetStatusAction.js +46 -0
  60. package/lib/client/target-console/TargetStatusAction.js.map +1 -0
  61. package/lib/client/target-console/WorktreeConsoleView.d.ts +9 -0
  62. package/lib/client/target-console/WorktreeConsoleView.js +362 -0
  63. package/lib/client/target-console/WorktreeConsoleView.js.map +1 -0
  64. package/lib/client/target-console/WorktreeReviewStatus.d.ts +9 -0
  65. package/lib/client/target-console/WorktreeReviewStatus.js +91 -0
  66. package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -0
  67. package/lib/client/target-console/index.d.ts +14 -0
  68. package/lib/client/target-console/index.js +23 -0
  69. package/lib/client/target-console/index.js.map +1 -0
  70. package/lib/client/target-console/target-console.styles.d.ts +1 -0
  71. package/lib/client/target-console/target-console.styles.js +130 -0
  72. package/lib/client/target-console/target-console.styles.js.map +1 -0
  73. package/lib/client.js +6813 -0
  74. package/lib/commands.d.ts +2 -4
  75. package/lib/commands.js +54 -28
  76. package/lib/commands.js.map +1 -1
  77. package/lib/console-contract.d.ts +236 -0
  78. package/lib/console-contract.js +86 -0
  79. package/lib/console-contract.js.map +1 -0
  80. package/lib/console-host/control-plane.d.ts +29 -0
  81. package/lib/console-host/control-plane.js +443 -0
  82. package/lib/console-host/control-plane.js.map +1 -0
  83. package/lib/console-host/errors.d.ts +6 -0
  84. package/lib/console-host/errors.js +31 -0
  85. package/lib/console-host/errors.js.map +1 -0
  86. package/lib/console-host/projection.d.ts +12 -0
  87. package/lib/console-host/projection.js +131 -0
  88. package/lib/console-host/projection.js.map +1 -0
  89. package/lib/console-host/review-diff.d.ts +18 -0
  90. package/lib/console-host/review-diff.js +176 -0
  91. package/lib/console-host/review-diff.js.map +1 -0
  92. package/lib/console-host/service.d.ts +24 -0
  93. package/lib/console-host/service.js +131 -0
  94. package/lib/console-host/service.js.map +1 -0
  95. package/lib/console-remote/descriptors.d.ts +3 -0
  96. package/lib/console-remote/descriptors.js +96 -0
  97. package/lib/console-remote/descriptors.js.map +1 -0
  98. package/lib/console-remote/remote.d.ts +27 -0
  99. package/lib/console-remote/remote.js +4 -0
  100. package/lib/console-remote/remote.js.map +1 -0
  101. package/lib/console-remote/schemas.d.ts +29 -0
  102. package/lib/console-remote/schemas.js +143 -0
  103. package/lib/console-remote/schemas.js.map +1 -0
  104. package/lib/console-remote/typert.d.ts +3 -0
  105. package/lib/console-remote/typert.js +14 -0
  106. package/lib/console-remote/typert.js.map +1 -0
  107. package/lib/index.d.ts +22 -6
  108. package/lib/index.js +28 -10
  109. package/lib/index.js.map +1 -1
  110. package/lib/managed-worktree-path.d.ts +14 -13
  111. package/lib/managed-worktree-path.js +32 -22
  112. package/lib/managed-worktree-path.js.map +1 -1
  113. package/lib/ports.d.ts +37 -1
  114. package/lib/session-checkout-apply.d.ts +54 -1
  115. package/lib/session-checkout-apply.js +318 -28
  116. package/lib/session-checkout-apply.js.map +1 -1
  117. package/lib/session-checkout-module.js +853 -33
  118. package/lib/session-checkout-module.js.map +1 -1
  119. package/lib/session-target-context.d.ts +6 -0
  120. package/lib/session-target-context.js +16 -0
  121. package/lib/session-target-context.js.map +1 -0
  122. package/lib/tools.d.ts +5 -6
  123. package/lib/tools.js +43 -233
  124. package/lib/tools.js.map +1 -1
  125. package/lib/types.d.ts +57 -11
  126. package/lib/types.js +6 -6
  127. package/lib/types.js.map +1 -1
  128. package/package.json +116 -67
  129. package/scripts/check-publish.mjs +193 -0
  130. package/scripts/clean-lib.mjs +7 -0
  131. package/scripts/dev-dsh-lib.mjs +453 -0
  132. package/scripts/dev-dsh.mjs +89 -0
  133. package/scripts/dsh-source-runner.mjs +14 -0
package/lib/tools.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Model-facing worktree tools. Every tool operates on the receiving agent's
3
- * own session through the session-checkout module; the module's revision CAS
4
- * guards all mutations. Outputs are canonical JSON (the UI card is a separate
5
- * concern); conflict results carry `localHeadOid` so the agent can sync the
6
- * isolated checkout to Local HEAD and resolve before retrying.
2
+ * Model-facing worktree tools. Destructive delivery actions are deliberately
3
+ * absent: Finish/Discard/Remove are human commands surfaced by the client
4
+ * ToolView. The model can reserve a real target session, inspect its own
5
+ * scoped worktrees, and stop at Ready for Review.
7
6
  * @module dsh-git-worktree/tools
8
7
  */
8
+ import { randomUUID } from 'node:crypto';
9
9
  import { defineTool } from '@deepseek-ai/dsh-tools';
10
10
  function sessionIdOf(agent) {
11
11
  const session = agent?.session;
@@ -14,58 +14,58 @@ function sessionIdOf(agent) {
14
14
  }
15
15
  return session.id;
16
16
  }
17
- function targetText(target) {
18
- const lines = [
19
- `checkout: ${target.checkout.label} (${target.checkout.kind}, phase ${target.checkout.phase})`,
20
- `dirty: ${target.dirty}`,
21
- `current: ${target.current.branch ?? 'detached'} @ ${target.current.oid.slice(0, 7)}`,
22
- ];
23
- if (target.delivery)
24
- lines.push(`delivery: ${target.delivery.state}`);
25
- return lines.join('\n');
17
+ /** Canonical logged payload consumed by both the model and the keyed ToolView. */
18
+ function renderJson(value) {
19
+ return [{ type: 'text', text: JSON.stringify(value) }];
26
20
  }
27
- /** Register the seven worktree tools. */
21
+ /** Register the safe model-facing worktree tools. */
28
22
  export function registerTools(ctx, module) {
29
23
  ctx.tools.register(defineTool({
30
24
  name: 'worktree_create',
31
- description: 'Create a Domi-grade managed git worktree for the current session: a detached checkout at the Local HEAD under <repo>/.dsh-worktrees/, registered as a DSH workspace, with the session bound to it as owner. Use it to isolate experimental or parallel work from the Local checkout.',
25
+ description: 'Reserve a unique managed Git worktree and a distinct owner Session ID. This does not change the current Session cwd. After the tool returns, stop modifying code in this Local Session and let the user open the isolated Session from the Worktree card.',
32
26
  parameters: {},
33
27
  output: {
34
28
  schema: {
35
29
  type: 'object',
36
30
  additionalProperties: false,
37
31
  properties: {
32
+ kind: { type: 'string', required: true },
38
33
  checkoutId: { type: 'string', required: true },
34
+ targetSessionId: { type: 'string', required: true },
35
+ managedRoot: { type: 'string', required: true },
39
36
  phase: { type: 'string', required: true },
40
- dirty: { type: 'boolean', required: true },
41
- currentBranch: { type: 'string' },
42
37
  currentOid: { type: 'string', required: true },
38
+ sourceSessionId: { type: 'string', required: true },
43
39
  },
44
40
  },
45
- render: (_args, value) => [{ type: 'text', text: `Worktree created: ${value.checkoutId} (${value.phase}, dirty=${value.dirty}, ${value.currentBranch ?? 'detached'} @ ${value.currentOid.slice(0, 7)})` }],
41
+ render: (_args, value) => renderJson(value),
46
42
  },
47
43
  async execute(_args, exec) {
48
- const sessionId = sessionIdOf(exec.agent);
49
- const target = await module.bind(sessionId, { kind: 'isolated' });
44
+ const sourceSessionId = sessionIdOf(exec.agent);
45
+ const targetSessionId = randomUUID();
46
+ const launch = await module.createIsolatedTarget(sourceSessionId, targetSessionId);
50
47
  return {
51
- checkoutId: target.checkout.id,
52
- phase: target.checkout.phase,
53
- dirty: target.dirty,
54
- currentBranch: target.current.branch ?? undefined,
55
- currentOid: target.current.oid,
48
+ kind: 'worktree_target_created',
49
+ checkoutId: launch.target.checkout.id,
50
+ targetSessionId,
51
+ managedRoot: launch.managedRoot,
52
+ phase: launch.target.checkout.phase,
53
+ currentOid: launch.target.current.oid,
54
+ sourceSessionId,
56
55
  };
57
56
  },
58
- presentCall: () => ({ card: 'generic', title: 'Create managed worktree', kind: 'other', rawInput: {} }),
57
+ presentCall: () => ({ card: 'generic', title: 'Create isolated Session Target', kind: 'other', rawInput: {} }),
59
58
  }));
60
59
  ctx.tools.register(defineTool({
61
60
  name: 'worktree_list',
62
- description: 'List every managed worktree of the current project with its checkout id, iteration, state, and dirty flag. Use the checkout id with worktree_remove or to find where a task left off.',
61
+ description: 'List managed worktrees visible to the current Session. Results are scoped to the original project and to worktrees this Session owns or created.',
63
62
  parameters: {},
64
63
  output: {
65
64
  schema: {
66
65
  type: 'object',
67
66
  additionalProperties: false,
68
67
  properties: {
68
+ kind: { type: 'string', required: true },
69
69
  worktrees: {
70
70
  type: 'array',
71
71
  required: true,
@@ -75,6 +75,7 @@ export function registerTools(ctx, module) {
75
75
  properties: {
76
76
  checkoutId: { type: 'string', required: true },
77
77
  projectName: { type: 'string', required: true },
78
+ ownerSessionId: { type: 'string', required: true },
78
79
  iteration: { type: 'number', required: true },
79
80
  state: { type: 'string', required: true },
80
81
  phase: { type: 'string', required: true },
@@ -85,19 +86,17 @@ export function registerTools(ctx, module) {
85
86
  },
86
87
  },
87
88
  },
88
- render: (_args, value) => [{
89
- type: 'text',
90
- text: value.worktrees.length === 0
91
- ? 'No managed worktrees.'
92
- : value.worktrees.map((entry) => (`${entry.checkoutId} ${entry.projectName} i${entry.iteration} ${entry.state}/${entry.phase} dirty=${entry.dirty}${entry.commitOid ? ` commit ${entry.commitOid.slice(0, 7)}` : ''}`)).join('\n'),
93
- }],
89
+ render: (_args, value) => renderJson(value),
94
90
  },
95
91
  async execute(_args, exec) {
96
- const summaries = await module.listManagedWorktrees();
92
+ const sessionId = sessionIdOf(exec.agent);
93
+ const summaries = await module.listManagedWorktreesForSession(sessionId);
97
94
  return {
95
+ kind: 'worktree_list',
98
96
  worktrees: summaries.map((summary) => ({
99
97
  checkoutId: summary.checkoutId,
100
98
  projectName: summary.project.name,
99
+ ownerSessionId: summary.ownerSessionId,
101
100
  iteration: summary.iteration,
102
101
  state: summary.state,
103
102
  phase: summary.phase,
@@ -108,51 +107,9 @@ export function registerTools(ctx, module) {
108
107
  },
109
108
  presentCall: () => ({ card: 'generic', title: 'List managed worktrees', kind: 'other', rawInput: {} }),
110
109
  }));
111
- ctx.tools.register(defineTool({
112
- name: 'worktree_remove',
113
- description: 'Remove a managed worktree by checkout id (see worktree_list). Dirty worktrees require confirmDirty: true and are still never force-removed silently — the lifecycle refuses when the worktree is the current session target.',
114
- parameters: {
115
- checkoutId: {
116
- type: 'string',
117
- required: true,
118
- description: 'Checkout id from worktree_list.',
119
- },
120
- confirmDirty: {
121
- type: 'boolean',
122
- required: true,
123
- description: 'Confirm discarding uncommitted changes inside the worktree.',
124
- },
125
- },
126
- output: {
127
- schema: {
128
- type: 'object',
129
- additionalProperties: false,
130
- properties: {
131
- checkoutId: { type: 'string', required: true },
132
- discarded: { type: 'boolean', required: true },
133
- },
134
- },
135
- render: (_args, value) => [{ type: 'text', text: value.discarded ? `Removed worktree ${value.checkoutId}.` : `Worktree ${value.checkoutId} retained (not discarded).` }],
136
- },
137
- async execute(args, exec) {
138
- const summaries = await module.listManagedWorktrees({ checkoutId: args.checkoutId });
139
- const summary = summaries[0];
140
- if (!summary) {
141
- return { checkoutId: args.checkoutId, discarded: false };
142
- }
143
- await module.manageManagedWorktree({
144
- checkoutId: args.checkoutId,
145
- expectedRevision: summary.revision,
146
- action: 'discard',
147
- confirmDirty: args.confirmDirty === true,
148
- });
149
- return { checkoutId: args.checkoutId, discarded: true };
150
- },
151
- presentCall: (args) => ({ card: 'generic', title: 'Remove managed worktree', kind: 'other', rawInput: args }),
152
- }));
153
110
  ctx.tools.register(defineTool({
154
111
  name: 'worktree_ready_for_review',
155
- description: 'Mark the current managed worktree as ready for review: the agent submits what changed, what validation ran (tests), and a suggested commit message. After this, worktree_apply merges the changes into the Local checkout and worktree_finish commits them directly.',
112
+ description: 'Isolated Session 的最后一个模型动作:把完整交付报告、验证证据和建议 Commit Message 仅写入本工具参数,然后立即停止。不要在调用前后用普通回复重复完整报告;最多用一句话提示用户通过底部验收条处理。用户会显式决定是否提交或放弃,模型不得自动提交或清理。',
156
113
  parameters: {
157
114
  summary: {
158
115
  type: 'string',
@@ -188,7 +145,7 @@ export function registerTools(ctx, module) {
188
145
  suggestedCommitMessage: {
189
146
  type: 'string',
190
147
  required: true,
191
- description: 'Suggested commit message for the change.',
148
+ description: 'Suggested commit message for the human acceptance action.',
192
149
  },
193
150
  },
194
151
  output: {
@@ -196,12 +153,14 @@ export function registerTools(ctx, module) {
196
153
  type: 'object',
197
154
  additionalProperties: false,
198
155
  properties: {
156
+ kind: { type: 'string', required: true },
199
157
  state: { type: 'string', required: true },
200
158
  reviewId: { type: 'string', required: true },
159
+ revision: { type: 'number', required: true },
201
160
  changedFiles: { type: 'array', required: true, items: { type: 'string' } },
202
161
  },
203
162
  },
204
- render: (_args, value) => [{ type: 'text', text: `Ready for review: ${value.reviewId} — ${value.changedFiles.length} file(s) changed (${value.state}).` }],
163
+ render: (_args, value) => renderJson(value),
205
164
  },
206
165
  async execute(args, exec) {
207
166
  const sessionId = sessionIdOf(exec.agent);
@@ -221,164 +180,15 @@ export function registerTools(ctx, module) {
221
180
  throw new Error(`worktree 未进入可验收状态: ${target.delivery?.state ?? 'unknown'}`);
222
181
  }
223
182
  return {
183
+ kind: 'worktree_ready_for_review',
224
184
  state: target.delivery.state,
225
185
  reviewId: target.delivery.review.reviewId,
186
+ revision: target.revision,
187
+ iteration: target.delivery.review.iteration,
226
188
  changedFiles: target.delivery.review.changedFiles,
227
189
  };
228
190
  },
229
- presentCall: () => ({ card: 'generic', title: 'Mark worktree ready for review', kind: 'other', rawInput: {} }),
230
- }));
231
- ctx.tools.register(defineTool({
232
- name: 'worktree_apply',
233
- description: 'Merge the current managed worktree\'s changes into the Local checkout: conflict-aware, fingerprint-CAS, and Local untouched until the plan is verified. On conflict the result carries conflictingFiles and localHeadOid — sync the worktree to Local HEAD, resolve, and retry. After a successful apply the worktree stays ready_for_review; use worktree_finish to commit or worktree_discard to abandon.',
234
- parameters: {},
235
- output: {
236
- schema: {
237
- type: 'object',
238
- additionalProperties: false,
239
- properties: {
240
- status: { type: 'string', required: true, enum: ['applied', 'conflict', 'error'] },
241
- changedFiles: { type: 'array', items: { type: 'string' } },
242
- conflictingFiles: { type: 'array', items: { type: 'string' } },
243
- localHeadOid: { type: 'string' },
244
- message: { type: 'string' },
245
- },
246
- },
247
- render: (_args, value) => {
248
- if (value.status === 'applied') {
249
- return [{ type: 'text', text: `Applied ${value.changedFiles?.length ?? 0} file(s) to Local.` }];
250
- }
251
- if (value.status === 'conflict') {
252
- return [{ type: 'text', text: `Conflict in ${value.conflictingFiles?.join(', ')} — sync worktree to Local HEAD ${value.localHeadOid?.slice(0, 7)} and resolve.` }];
253
- }
254
- return [{ type: 'text', text: value.message ?? 'Apply failed.' }];
255
- },
256
- },
257
- async execute(_args, exec) {
258
- const sessionId = sessionIdOf(exec.agent);
259
- const target = await module.inspect(sessionId);
260
- const result = await module.operate({
261
- action: 'apply',
262
- sessionId,
263
- expectedRevision: target.revision,
264
- });
265
- if (result.status === 'applied') {
266
- return { status: 'applied', changedFiles: result.changedFiles };
267
- }
268
- if (result.status === 'conflict') {
269
- return {
270
- status: 'conflict',
271
- conflictingFiles: result.conflictingFiles,
272
- localHeadOid: result.localHeadOid,
273
- };
274
- }
275
- if (result.status === 'error') {
276
- return { status: 'error', message: `${result.code}: ${result.message}` };
277
- }
278
- return { status: 'error', message: 'Apply 未返回预期结果' };
279
- },
280
- presentCall: () => ({ card: 'generic', title: 'Apply worktree to Local', kind: 'other', rawInput: {} }),
281
- }));
282
- ctx.tools.register(defineTool({
283
- name: 'worktree_finish',
284
- description: 'Commit the current managed worktree\'s changes onto the Local branch as one task commit, preserving any unrelated staged/working state the user has in Local, then clean up the worktree. Refuses when Local is detached. Optional retention keeps the frozen worktree for a while instead of removing it.',
285
- parameters: {
286
- commitMessage: {
287
- type: 'string',
288
- required: true,
289
- description: 'Commit message for the task delta.',
290
- },
291
- retention: {
292
- type: 'string',
293
- enum: ['cleanup', 'retain_24h', 'retain_3d', 'retain_manual'],
294
- description: 'Default cleanup removes the worktree after the commit; retain_* keeps it.',
295
- },
296
- },
297
- output: {
298
- schema: {
299
- type: 'object',
300
- additionalProperties: false,
301
- properties: {
302
- status: { type: 'string', required: true, enum: ['finished', 'conflict', 'error'] },
303
- commitOid: { type: 'string' },
304
- changedFiles: { type: 'array', items: { type: 'string' } },
305
- cleanup: { type: 'string' },
306
- message: { type: 'string' },
307
- },
308
- },
309
- render: (_args, value) => {
310
- if (value.status === 'finished') {
311
- return [{ type: 'text', text: `Finished: committed ${value.changedFiles?.length ?? 0} file(s) as ${value.commitOid?.slice(0, 7)} (cleanup: ${value.cleanup ?? 'unknown'}).` }];
312
- }
313
- return [{ type: 'text', text: value.message ?? 'Finish failed.' }];
314
- },
315
- },
316
- async execute(args, exec) {
317
- const sessionId = sessionIdOf(exec.agent);
318
- const target = await module.inspect(sessionId);
319
- const result = await module.operate({
320
- action: 'finish',
321
- sessionId,
322
- expectedRevision: target.revision,
323
- commitMessage: args.commitMessage,
324
- ...(args.retention ? { retention: args.retention } : {}),
325
- });
326
- if (result.status === 'finished') {
327
- return {
328
- status: 'finished',
329
- commitOid: result.commitOid ?? undefined,
330
- changedFiles: result.changedFiles,
331
- cleanup: result.cleanup,
332
- };
333
- }
334
- if (result.status === 'conflict') {
335
- return { status: 'conflict', message: `冲突:${result.conflictingFiles.join('、')} — 请先在 worktree 内同步 Local HEAD 并解决。` };
336
- }
337
- if (result.status === 'error') {
338
- return { status: 'error', message: `${result.code}: ${result.message}` };
339
- }
340
- return { status: 'error', message: 'Finish 未返回预期结果' };
341
- },
342
- presentCall: () => ({ card: 'generic', title: 'Finish worktree (commit to Local)', kind: 'other', rawInput: {} }),
343
- }));
344
- ctx.tools.register(defineTool({
345
- name: 'worktree_discard',
346
- description: 'Discard the current managed worktree and all its uncommitted changes. Requires confirmDirty: true. The worktree the current session is working inside cannot be discarded; use worktree_remove from a Local session instead.',
347
- parameters: {
348
- confirmDirty: {
349
- type: 'boolean',
350
- required: true,
351
- description: 'Confirm discarding uncommitted worktree changes.',
352
- },
353
- },
354
- output: {
355
- schema: {
356
- type: 'object',
357
- additionalProperties: false,
358
- properties: {
359
- status: { type: 'string', required: true, enum: ['discarded', 'error'] },
360
- message: { type: 'string' },
361
- },
362
- },
363
- render: (_args, value) => [{ type: 'text', text: value.status === 'discarded' ? 'Worktree discarded.' : (value.message ?? 'Discard failed.') }],
364
- },
365
- async execute(args, exec) {
366
- const sessionId = sessionIdOf(exec.agent);
367
- const target = await module.inspect(sessionId);
368
- const result = await module.operate({
369
- action: 'discard',
370
- sessionId,
371
- expectedRevision: target.revision,
372
- confirmDirty: args.confirmDirty === true,
373
- });
374
- if (result.status === 'discarded')
375
- return { status: 'discarded' };
376
- if (result.status === 'error') {
377
- return { status: 'error', message: `${result.code}: ${result.message}` };
378
- }
379
- return { status: 'error', message: 'Discard 未返回预期结果' };
380
- },
381
- presentCall: () => ({ card: 'generic', title: 'Discard worktree', kind: 'other', rawInput: {} }),
191
+ presentCall: () => ({ card: 'generic', title: 'Ready for Worktree review', kind: 'other', rawInput: {} }),
382
192
  }));
383
193
  }
384
194
  //# sourceMappingURL=tools.js.map
package/lib/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,11 +1,9 @@
1
1
  /**
2
2
  * Type surface for dsh-git-worktree, ported from Domi's session-checkout
3
- * domain (`@proma/shared` types/session-target.ts) with the Domi-specific
4
- * surface removed: Local preview (preview/rollback_preview/finalize_preview),
5
- * collaborator delegation, and Electron reveal IPC. The remaining lifecycle
6
- * is: bind → working → ready_for_review → apply/finish/discard → delivered
7
- * (or retained/finalized), with journal-based crash recovery and fingerprint
8
- * CAS throughout.
3
+ * domain (`@proma/shared` types/session-target.ts). The plugin keeps Domi's
4
+ * Local preview/rollback/finalize lifecycle while omitting collaborator and
5
+ * Electron-only surfaces. Harness transport and Session separation live above
6
+ * this host-agnostic state machine.
9
7
  * @module dsh-git-worktree/types
10
8
  */
11
9
  /** Stable session-target reference in the durable layer. Paths and branches are not checkout identity. */
@@ -58,6 +56,17 @@ export type WorktreeDeliveryView = {
58
56
  } | {
59
57
  state: 'ready_for_review';
60
58
  review: WorktreeReviewView;
59
+ } | {
60
+ state: 'preview_active';
61
+ review: WorktreeReviewView;
62
+ previewedAt: number;
63
+ } | {
64
+ state: 'preview_detached';
65
+ review: WorktreeReviewView;
66
+ previewedAt: number;
67
+ detachedAt: number;
68
+ reason: 'stale_local' | 'preview_modified';
69
+ attemptedAction: 'rollback_preview' | 'finalize_preview' | 'discard';
61
70
  } | {
62
71
  state: 'finalized';
63
72
  review: WorktreeReviewView;
@@ -141,6 +150,10 @@ export interface SessionTargetView {
141
150
  revision: number;
142
151
  /** Delivery state for isolated checkouts; Local targets do not carry it. */
143
152
  delivery?: WorktreeDeliveryView;
153
+ /** Current project Local Preview slot state; does not expose another checkout identity. */
154
+ reviewSlot?: 'available' | 'waiting';
155
+ /** Owner Session holding the slot, used only for navigation/status. */
156
+ reviewSlotOwnerSessionId?: string;
144
157
  }
145
158
  export type SessionTargetBindChoice = {
146
159
  kind: 'local';
@@ -158,6 +171,21 @@ export interface SessionCheckoutFinishOperation extends SessionCheckoutOperation
158
171
  action: 'finish';
159
172
  commitMessage: string;
160
173
  retention?: WorktreeRetentionMode;
174
+ /** When present, Finish is bound to this persisted human-reviewed snapshot. */
175
+ expectedReviewId?: string;
176
+ }
177
+ export interface SessionCheckoutPreviewOperation extends SessionCheckoutOperationBase {
178
+ action: 'preview';
179
+ }
180
+ export interface SessionCheckoutRollbackPreviewOperation extends SessionCheckoutOperationBase {
181
+ action: 'rollback_preview';
182
+ /** Structured withdraw-and-continue flow returns to working instead of preserving the review. */
183
+ resumeRevision?: boolean;
184
+ }
185
+ export interface SessionCheckoutFinalizePreviewOperation extends SessionCheckoutOperationBase {
186
+ action: 'finalize_preview';
187
+ commitMessage: string;
188
+ retention?: WorktreeRetentionMode;
161
189
  }
162
190
  export interface SessionCheckoutRetryCleanupOperation extends SessionCheckoutOperationBase {
163
191
  action: 'retry_cleanup';
@@ -165,16 +193,34 @@ export interface SessionCheckoutRetryCleanupOperation extends SessionCheckoutOpe
165
193
  export interface SessionCheckoutDiscardOperation extends SessionCheckoutOperationBase {
166
194
  action: 'discard';
167
195
  confirmDirty: boolean;
196
+ rollbackPreview?: boolean;
168
197
  }
169
198
  export interface SessionCheckoutRecoverOperation extends SessionCheckoutOperationBase {
170
199
  action: 'recover';
171
200
  }
172
- export type SessionCheckoutOperation = SessionCheckoutApplyOperation | SessionCheckoutFinishOperation | SessionCheckoutRetryCleanupOperation | SessionCheckoutDiscardOperation | SessionCheckoutRecoverOperation;
201
+ export type SessionCheckoutOperation = SessionCheckoutApplyOperation | SessionCheckoutFinishOperation | SessionCheckoutPreviewOperation | SessionCheckoutRollbackPreviewOperation | SessionCheckoutFinalizePreviewOperation | SessionCheckoutRetryCleanupOperation | SessionCheckoutDiscardOperation | SessionCheckoutRecoverOperation;
173
202
  export interface SessionCheckoutAppliedResult {
174
203
  status: 'applied';
175
204
  target: SessionTargetView;
176
205
  changedFiles: string[];
177
206
  }
207
+ export interface SessionCheckoutPreviewedResult {
208
+ status: 'previewed';
209
+ target: SessionTargetView;
210
+ changedFiles: string[];
211
+ }
212
+ export interface SessionCheckoutPreviewRolledBackResult {
213
+ status: 'preview_rolled_back';
214
+ target: SessionTargetView;
215
+ changedFiles: string[];
216
+ }
217
+ export interface SessionCheckoutPreviewDetachedResult {
218
+ status: 'preview_detached';
219
+ target: SessionTargetView;
220
+ changedFiles: string[];
221
+ reason: 'stale_local' | 'preview_modified';
222
+ attemptedAction: 'rollback_preview' | 'finalize_preview' | 'discard';
223
+ }
178
224
  export interface SessionCheckoutFinishedResult {
179
225
  status: 'finished';
180
226
  target: SessionTargetView;
@@ -187,7 +233,7 @@ export interface SessionCheckoutFinishedResult {
187
233
  cleanupReason?: WorktreeCleanupReason;
188
234
  }
189
235
  export type ManagedWorktreeCleanupEligibility = 'safe' | 'retained' | 'blocked';
190
- export type ManagedWorktreeCleanupBlockReason = 'working' | 'review_pending' | 'retention_active' | 'uncommitted_changes' | 'identity_mismatch' | 'cleanup_failed' | 'unknown';
236
+ export type ManagedWorktreeCleanupBlockReason = 'working' | 'review_pending' | 'preview_active' | 'retention_active' | 'uncommitted_changes' | 'identity_mismatch' | 'cleanup_failed' | 'unknown';
191
237
  /** Read-only inspection conclusion without paths. Bulk mutations re-validate; this result is never authorization. */
192
238
  export interface ManagedWorktreeCleanupView {
193
239
  eligibility: ManagedWorktreeCleanupEligibility;
@@ -211,7 +257,7 @@ export interface BulkCleanupManagedWorktreesResult {
211
257
  cleanup: ManagedWorktreeCleanupView;
212
258
  }>;
213
259
  }
214
- export type ManagedWorktreeSummaryState = 'working' | 'ready_for_review' | 'retained' | 'cleanup_pending' | 'needs_attention' | 'delivered';
260
+ export type ManagedWorktreeSummaryState = 'working' | 'ready_for_review' | 'preview_active' | 'retained' | 'cleanup_pending' | 'needs_attention' | 'delivered';
215
261
  /** Path-free projection for the management surface. */
216
262
  export interface ManagedWorktreeSummaryView {
217
263
  checkoutId: string;
@@ -265,8 +311,8 @@ export interface SessionCheckoutOperationErrorResult {
265
311
  message: string;
266
312
  target?: SessionTargetView;
267
313
  }
268
- export type SessionCheckoutOperationResult = SessionCheckoutAppliedResult | SessionCheckoutFinishedResult | SessionCheckoutConflictResult | SessionCheckoutDiscardedResult | SessionCheckoutRecoveredResult | SessionCheckoutOperationErrorResult;
269
- export declare const SESSION_CHECKOUT_ERROR_CODES: readonly ["session_not_found", "project_not_found", "project_root_missing", "not_git_repository", "target_unselected", "target_already_bound", "project_mismatch", "checkout_missing", "checkout_mismatch", "recovery_required", "registry_corrupt", "git_operation_failed", "not_owner", "stale_target", "dirty_confirmation_required", "apply_conflict", "apply_failed", "invalid_input", "invalid_plan", "stale_local", "stale_isolated", "git_error", "commit_isolation_conflict", "checkout_limit_reached", "project_acceptance_busy", "operation_not_allowed", "recovery_unsafe"];
314
+ export type SessionCheckoutOperationResult = SessionCheckoutAppliedResult | SessionCheckoutPreviewedResult | SessionCheckoutPreviewRolledBackResult | SessionCheckoutPreviewDetachedResult | SessionCheckoutFinishedResult | SessionCheckoutConflictResult | SessionCheckoutDiscardedResult | SessionCheckoutRecoveredResult | SessionCheckoutOperationErrorResult;
315
+ export declare const SESSION_CHECKOUT_ERROR_CODES: readonly ["session_not_found", "project_not_found", "project_root_missing", "not_git_repository", "target_unselected", "target_already_bound", "project_mismatch", "checkout_missing", "checkout_mismatch", "recovery_required", "registry_corrupt", "git_operation_failed", "not_owner", "stale_target", "dirty_confirmation_required", "apply_conflict", "apply_failed", "invalid_input", "invalid_plan", "stale_local", "stale_isolated", "git_error", "commit_isolation_conflict", "checkout_limit_reached", "project_acceptance_busy", "operation_not_allowed", "preview_not_active", "preview_modified", "recovery_unsafe"];
270
316
  export type SessionCheckoutErrorCode = typeof SESSION_CHECKOUT_ERROR_CODES[number];
271
317
  export interface SessionCheckoutFailure {
272
318
  code: SessionCheckoutErrorCode;
package/lib/types.js CHANGED
@@ -1,11 +1,9 @@
1
1
  /**
2
2
  * Type surface for dsh-git-worktree, ported from Domi's session-checkout
3
- * domain (`@proma/shared` types/session-target.ts) with the Domi-specific
4
- * surface removed: Local preview (preview/rollback_preview/finalize_preview),
5
- * collaborator delegation, and Electron reveal IPC. The remaining lifecycle
6
- * is: bind → working → ready_for_review → apply/finish/discard → delivered
7
- * (or retained/finalized), with journal-based crash recovery and fingerprint
8
- * CAS throughout.
3
+ * domain (`@proma/shared` types/session-target.ts). The plugin keeps Domi's
4
+ * Local preview/rollback/finalize lifecycle while omitting collaborator and
5
+ * Electron-only surfaces. Harness transport and Session separation live above
6
+ * this host-agnostic state machine.
9
7
  * @module dsh-git-worktree/types
10
8
  */
11
9
  export const SESSION_CHECKOUT_ERROR_CODES = [
@@ -35,6 +33,8 @@ export const SESSION_CHECKOUT_ERROR_CODES = [
35
33
  'checkout_limit_reached',
36
34
  'project_acceptance_busy',
37
35
  'operation_not_allowed',
36
+ 'preview_not_active',
37
+ 'preview_modified',
38
38
  'recovery_unsafe',
39
39
  ];
40
40
  //# sourceMappingURL=types.js.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkUH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,WAAW;IACX,cAAc;IACd,6BAA6B;IAC7B,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,2BAA2B;IAC3B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,iBAAiB;CACT,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8XH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;IACtB,WAAW;IACX,cAAc;IACd,6BAA6B;IAC7B,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,2BAA2B;IAC3B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;CACT,CAAA"}