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.
- package/CHANGELOG.md +59 -0
- package/LICENSE +21 -21
- package/README.md +115 -37
- package/README.zh.md +115 -37
- package/cordis.patch.yml +7 -7
- package/lib/adapters/registry.js +40 -0
- package/lib/adapters/registry.js.map +1 -1
- package/lib/adapters/safe-file.js +34 -4
- package/lib/adapters/safe-file.js.map +1 -1
- package/lib/client/WorktreeCreateRow.d.ts +7 -0
- package/lib/client/WorktreeCreateRow.js +26 -0
- package/lib/client/WorktreeCreateRow.js.map +1 -0
- package/lib/client/WorktreeReviewRow.d.ts +11 -0
- package/lib/client/WorktreeReviewRow.js +67 -0
- package/lib/client/WorktreeReviewRow.js.map +1 -0
- package/lib/client/actions.d.ts +86 -0
- package/lib/client/actions.js +35 -0
- package/lib/client/actions.js.map +1 -0
- package/lib/client/console-remote/adapter.d.ts +3 -0
- package/lib/client/console-remote/adapter.js +59 -0
- package/lib/client/console-remote/adapter.js.map +1 -0
- package/lib/client/console-remote/index.d.ts +18 -0
- package/lib/client/console-remote/index.js +17 -0
- package/lib/client/console-remote/index.js.map +1 -0
- package/lib/client/index.d.ts +17 -0
- package/lib/client/index.js +44 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client/model.d.ts +68 -0
- package/lib/client/model.js +127 -0
- package/lib/client/model.js.map +1 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.d.ts +16 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +128 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -0
- package/lib/client/pre-session/controller.d.ts +42 -0
- package/lib/client/pre-session/controller.js +149 -0
- package/lib/client/pre-session/controller.js.map +1 -0
- package/lib/client/pre-session/index.d.ts +15 -0
- package/lib/client/pre-session/index.js +16 -0
- package/lib/client/pre-session/index.js.map +1 -0
- package/lib/client/review-console/ReviewActions.d.ts +15 -0
- package/lib/client/review-console/ReviewActions.js +219 -0
- package/lib/client/review-console/ReviewActions.js.map +1 -0
- package/lib/client/review-console/WorktreeReviewPanel.d.ts +20 -0
- package/lib/client/review-console/WorktreeReviewPanel.js +75 -0
- package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -0
- package/lib/client/review-console/index.d.ts +8 -0
- package/lib/client/review-console/index.js +22 -0
- package/lib/client/review-console/index.js.map +1 -0
- package/lib/client/review-console/review-console.styles.d.ts +1 -0
- package/lib/client/review-console/review-console.styles.js +81 -0
- package/lib/client/review-console/review-console.styles.js.map +1 -0
- package/lib/client/review-console/status-events.d.ts +3 -0
- package/lib/client/review-console/status-events.js +6 -0
- package/lib/client/review-console/status-events.js.map +1 -0
- package/lib/client/styles.d.ts +1 -0
- package/lib/client/styles.js +78 -0
- package/lib/client/styles.js.map +1 -0
- package/lib/client/target-console/TargetStatusAction.d.ts +7 -0
- package/lib/client/target-console/TargetStatusAction.js +46 -0
- package/lib/client/target-console/TargetStatusAction.js.map +1 -0
- package/lib/client/target-console/WorktreeConsoleView.d.ts +9 -0
- package/lib/client/target-console/WorktreeConsoleView.js +362 -0
- package/lib/client/target-console/WorktreeConsoleView.js.map +1 -0
- package/lib/client/target-console/WorktreeReviewStatus.d.ts +9 -0
- package/lib/client/target-console/WorktreeReviewStatus.js +91 -0
- package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -0
- package/lib/client/target-console/index.d.ts +14 -0
- package/lib/client/target-console/index.js +23 -0
- package/lib/client/target-console/index.js.map +1 -0
- package/lib/client/target-console/target-console.styles.d.ts +1 -0
- package/lib/client/target-console/target-console.styles.js +130 -0
- package/lib/client/target-console/target-console.styles.js.map +1 -0
- package/lib/client.js +6813 -0
- package/lib/commands.d.ts +2 -4
- package/lib/commands.js +54 -28
- package/lib/commands.js.map +1 -1
- package/lib/console-contract.d.ts +236 -0
- package/lib/console-contract.js +86 -0
- package/lib/console-contract.js.map +1 -0
- package/lib/console-host/control-plane.d.ts +29 -0
- package/lib/console-host/control-plane.js +443 -0
- package/lib/console-host/control-plane.js.map +1 -0
- package/lib/console-host/errors.d.ts +6 -0
- package/lib/console-host/errors.js +31 -0
- package/lib/console-host/errors.js.map +1 -0
- package/lib/console-host/projection.d.ts +12 -0
- package/lib/console-host/projection.js +131 -0
- package/lib/console-host/projection.js.map +1 -0
- package/lib/console-host/review-diff.d.ts +18 -0
- package/lib/console-host/review-diff.js +176 -0
- package/lib/console-host/review-diff.js.map +1 -0
- package/lib/console-host/service.d.ts +24 -0
- package/lib/console-host/service.js +131 -0
- package/lib/console-host/service.js.map +1 -0
- package/lib/console-remote/descriptors.d.ts +3 -0
- package/lib/console-remote/descriptors.js +96 -0
- package/lib/console-remote/descriptors.js.map +1 -0
- package/lib/console-remote/remote.d.ts +27 -0
- package/lib/console-remote/remote.js +4 -0
- package/lib/console-remote/remote.js.map +1 -0
- package/lib/console-remote/schemas.d.ts +29 -0
- package/lib/console-remote/schemas.js +143 -0
- package/lib/console-remote/schemas.js.map +1 -0
- package/lib/console-remote/typert.d.ts +3 -0
- package/lib/console-remote/typert.js +14 -0
- package/lib/console-remote/typert.js.map +1 -0
- package/lib/index.d.ts +22 -6
- package/lib/index.js +28 -10
- package/lib/index.js.map +1 -1
- package/lib/managed-worktree-path.d.ts +14 -13
- package/lib/managed-worktree-path.js +32 -22
- package/lib/managed-worktree-path.js.map +1 -1
- package/lib/ports.d.ts +37 -1
- package/lib/session-checkout-apply.d.ts +54 -1
- package/lib/session-checkout-apply.js +318 -28
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +853 -33
- package/lib/session-checkout-module.js.map +1 -1
- package/lib/session-target-context.d.ts +6 -0
- package/lib/session-target-context.js +16 -0
- package/lib/session-target-context.js.map +1 -0
- package/lib/tools.d.ts +5 -6
- package/lib/tools.js +43 -233
- package/lib/tools.js.map +1 -1
- package/lib/types.d.ts +57 -11
- package/lib/types.js +6 -6
- package/lib/types.js.map +1 -1
- package/package.json +116 -67
- package/scripts/check-publish.mjs +193 -0
- package/scripts/clean-lib.mjs +7 -0
- package/scripts/dev-dsh-lib.mjs +453 -0
- package/scripts/dev-dsh.mjs +89 -0
- package/scripts/dsh-source-runner.mjs +14 -0
package/lib/tools.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Model-facing worktree tools.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
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: '
|
|
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) =>
|
|
41
|
+
render: (_args, value) => renderJson(value),
|
|
46
42
|
},
|
|
47
43
|
async execute(_args, exec) {
|
|
48
|
-
const
|
|
49
|
-
const
|
|
44
|
+
const sourceSessionId = sessionIdOf(exec.agent);
|
|
45
|
+
const targetSessionId = randomUUID();
|
|
46
|
+
const launch = await module.createIsolatedTarget(sourceSessionId, targetSessionId);
|
|
50
47
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
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
|
|
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
|
|
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: '
|
|
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
|
|
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) =>
|
|
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: '
|
|
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":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,OAAO,GAAI,KAAmD,EAAE,OAAO,CAAA;IAC7E,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,OAAO,CAAC,EAAE,CAAA;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,MAAM,KAAK,GAAG;QACZ,aAAa,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG;QAC9F,UAAU,MAAM,CAAC,KAAK,EAAE;QACxB,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;KACtF,CAAA;IACD,IAAI,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,MAA6B;IACvE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sRAAsR;QACnS,UAAU,EAAE,EAAE;QACd,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC9C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC1C,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC/C;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,aAAa,IAAI,UAAU,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;SAC3M;QACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI;YACvB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;YACjE,OAAO;gBACL,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC9B,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;gBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS;gBACjD,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;aAC/B,CAAA;QACH,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACxG,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uLAAuL;QACpM,UAAU,EAAE,EAAE;QACd,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,oBAAoB,EAAE,KAAK;4BAC3B,UAAU,EAAE;gCACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCAC9C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCAC/C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCACzC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gCACzC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;gCAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC9B;yBACF;qBACF;iBACF;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;wBAChC,CAAC,CAAC,uBAAuB;wBACzB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7B,GAAG,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,WAAW,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACzL,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClB,CAAC;SACH;QACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI;YACvB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAA;YACrD,OAAO;gBACL,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACrC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;oBACjC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;iBAC1C,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACvG,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8NAA8N;QAC3O,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,6DAA6D;aAC3E;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC9C,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC/C;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,UAAU,4BAA4B,EAAE,CAAC;SACzK;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACtB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;YACpF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;YAC1D,CAAC;YACD,MAAM,MAAM,CAAC,qBAAqB,CAAC;gBACjC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,gBAAgB,EAAE,OAAO,CAAC,QAAQ;gBAClC,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI;aACzC,CAAC,CAAA;YACF,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QACzD,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAC9G,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,sQAAsQ;QACnR,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iDAAiD;aAC/D;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;aACjD;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,UAAU,EAAE;wBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;wBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;wBACjF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC5B;iBACF;aACF;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,0CAA0C;aACxD;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAC5C,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;iBAC3E;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,qBAAqB,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;SAC3J;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE;gBACxD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,eAAe,EAAE,IAAI,CAAC,OAAO;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAA4C;gBACnE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACvC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAyC;oBACtD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD,CAAC,CAAC;gBACH,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;aACpD,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAA;YAC9E,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;gBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;gBACzC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY;aAClD,CAAA;QACH,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gCAAgC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KAC/G,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,6YAA6Y;QAC1Z,UAAU,EAAE,EAAE;QACd,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;oBAClF,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC1D,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC9D,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAChC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;gBACjG,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;gBACpK,CAAC;gBACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAA;YACnE,CAAC;SACF;QACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI;YACvB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAClC,MAAM,EAAE,OAAO;gBACf,SAAS;gBACT,gBAAgB,EAAE,MAAM,CAAC,QAAQ;aAClC,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,EAAE,MAAM,EAAE,SAAkB,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAA;YAC1E,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,MAAM,EAAE,UAAmB;oBAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAA;YACH,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;YACnF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAA;QAC/D,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACxG,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4SAA4S;QACzT,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC;gBAC7D,WAAW,EAAE,2EAA2E;aACzF;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;oBACnF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC7B,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC1D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,KAAK,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,eAAe,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,IAAI,SAAS,IAAI,EAAE,CAAC,CAAA;gBAChL,CAAC;gBACD,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC,CAAA;YACpE,CAAC;SACF;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAClC,MAAM,EAAE,QAAQ;gBAChB,SAAS;gBACT,gBAAgB,EAAE,MAAM,CAAC,QAAQ;gBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAqE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrH,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,MAAM,EAAE,UAAmB;oBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS;oBACxC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAA;YACH,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,EAAE,MAAM,EAAE,UAAmB,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,CAAA;YAC/H,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;YACnF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;QAChE,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KAClH,CAAC,CAAC,CAAA;IAEH,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8NAA8N;QAC3O,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,kDAAkD;aAChE;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;oBACxE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5B;aACF;YACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,iBAAiB,CAAC,EAAE,CAAC;SAChJ;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAClC,MAAM,EAAE,SAAS;gBACjB,SAAS;gBACT,gBAAgB,EAAE,MAAM,CAAC,QAAQ;gBACjC,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI;aACzC,CAAC,CAAA;YACF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,EAAE,MAAM,EAAE,WAAoB,EAAE,CAAA;YAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;YACnF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,OAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAA;QACjE,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACjG,CAAC,CAAC,CAAA;AACL,CAAC"}
|
|
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)
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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)
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
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"}
|