dsh-git-worktree 0.7.4 → 0.8.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 +26 -0
- package/README.en.md +7 -3
- package/README.md +7 -3
- package/cordis.patch.yml +4 -4
- package/docs/i18n.md +63 -0
- package/lib/adapters/files.d.ts +0 -7
- package/lib/adapters/files.js +4 -3
- package/lib/adapters/files.js.map +1 -1
- package/lib/adapters/git.d.ts +0 -10
- package/lib/adapters/git.js +6 -5
- package/lib/adapters/git.js.map +1 -1
- package/lib/adapters/registry.d.ts +0 -7
- package/lib/adapters/registry.js +2 -1
- package/lib/adapters/registry.js.map +1 -1
- package/lib/adapters/safe-file.d.ts +0 -7
- package/lib/adapters/safe-file.js +5 -4
- package/lib/adapters/safe-file.js.map +1 -1
- package/lib/client/WorktreeCreateRow.js +4 -2
- package/lib/client/WorktreeCreateRow.js.map +1 -1
- package/lib/client/WorktreeReviewRow.js +10 -8
- package/lib/client/WorktreeReviewRow.js.map +1 -1
- package/lib/client/actions.d.ts +3 -2
- package/lib/client/actions.js +17 -13
- package/lib/client/actions.js.map +1 -1
- package/lib/client/console-remote/adapter.d.ts +2 -1
- package/lib/client/console-remote/adapter.js +35 -32
- package/lib/client/console-remote/adapter.js.map +1 -1
- package/lib/client/console-remote/index.js +8 -4
- package/lib/client/console-remote/index.js.map +1 -1
- package/lib/client/i18n.d.ts +25 -0
- package/lib/client/i18n.js +43 -0
- package/lib/client/i18n.js.map +1 -0
- package/lib/client/index.d.ts +1 -1
- package/lib/client/index.js +17 -4
- package/lib/client/index.js.map +1 -1
- package/lib/client/model.d.ts +3 -2
- package/lib/client/model.js +8 -8
- package/lib/client/model.js.map +1 -1
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +14 -12
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -1
- package/lib/client/pre-session/controller.js +11 -9
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/pre-session/index.d.ts +12 -1
- package/lib/client/pre-session/index.js +9 -1
- package/lib/client/pre-session/index.js.map +1 -1
- package/lib/client/review-console/DeliveryProof.js +15 -12
- package/lib/client/review-console/DeliveryProof.js.map +1 -1
- package/lib/client/review-console/PreflightStatus.js +14 -8
- package/lib/client/review-console/PreflightStatus.js.map +1 -1
- package/lib/client/review-console/ReviewActions.js +97 -92
- package/lib/client/review-console/ReviewActions.js.map +1 -1
- package/lib/client/review-console/WorktreeReviewPanel.d.ts +1 -1
- package/lib/client/review-console/WorktreeReviewPanel.js +19 -16
- package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -1
- package/lib/client/review-console/recovery-continuation.d.ts +2 -1
- package/lib/client/review-console/recovery-continuation.js +12 -8
- package/lib/client/review-console/recovery-continuation.js.map +1 -1
- package/lib/client/target-console/TargetStatusAction.js +28 -25
- package/lib/client/target-console/TargetStatusAction.js.map +1 -1
- package/lib/client/target-console/WorktreeConsoleView.js +40 -36
- package/lib/client/target-console/WorktreeConsoleView.js.map +1 -1
- package/lib/client/target-console/WorktreeManagerModal.js +3 -1
- package/lib/client/target-console/WorktreeManagerModal.js.map +1 -1
- package/lib/client/target-console/WorktreeReviewStatus.js +14 -12
- package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -1
- package/lib/client/workspace-sidebar/index.js +4 -2
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client/workspace-sidebar/model.d.ts +2 -1
- package/lib/client/workspace-sidebar/model.js +14 -13
- package/lib/client/workspace-sidebar/model.js.map +1 -1
- package/lib/client.js +2173 -477
- package/lib/commands.js +32 -35
- package/lib/commands.js.map +1 -1
- package/lib/console-host/control-plane.js +82 -81
- package/lib/console-host/control-plane.js.map +1 -1
- package/lib/console-host/errors.js +2 -1
- package/lib/console-host/errors.js.map +1 -1
- package/lib/console-host/projection.js +3 -1
- package/lib/console-host/projection.js.map +1 -1
- package/lib/console-host/review-diff.js +6 -5
- package/lib/console-host/review-diff.js.map +1 -1
- package/lib/console-host/service.d.ts +24 -22
- package/lib/console-host/service.js +54 -51
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +2 -2
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/remote.d.ts +22 -21
- package/lib/console-remote/remote.js.map +1 -1
- package/lib/console-remote/schemas.d.ts +4 -0
- package/lib/console-remote/schemas.js +1 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/i18n/client-messages.d.ts +1523 -0
- package/lib/i18n/client-messages.js +1431 -0
- package/lib/i18n/client-messages.js.map +1 -0
- package/lib/i18n/core.d.ts +12 -0
- package/lib/i18n/core.js +10 -0
- package/lib/i18n/core.js.map +1 -0
- package/lib/i18n/host-messages.d.ts +1463 -0
- package/lib/i18n/host-messages.js +1474 -0
- package/lib/i18n/host-messages.js.map +1 -0
- package/lib/i18n/host.d.ts +9 -0
- package/lib/i18n/host.js +34 -0
- package/lib/i18n/host.js.map +1 -0
- package/lib/i18n/transport-messages.d.ts +10 -0
- package/lib/i18n/transport-messages.js +11 -0
- package/lib/i18n/transport-messages.js.map +1 -0
- package/lib/index.d.ts +9 -2
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/session-checkout-apply.js +93 -92
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +232 -229
- package/lib/session-checkout-module.js.map +1 -1
- package/lib/session-target-context.js +2 -1
- package/lib/session-target-context.js.map +1 -1
- package/lib/tools.d.ts +0 -8
- package/lib/tools.js +108 -96
- package/lib/tools.js.map +1 -1
- package/lib/workspace-provider-lifecycle.d.ts +15 -0
- package/lib/workspace-provider-lifecycle.js +65 -0
- package/lib/workspace-provider-lifecycle.js.map +1 -0
- package/package.json +6 -1
- package/scripts/check-publish.mjs +6 -3
- package/scripts/dev-dsh-lib.mjs +1 -1
- package/scripts/workspace-sidebar-upstream.mjs +1 -1
package/lib/commands.js
CHANGED
|
@@ -1,37 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* user-initiated; model tools stop at Ready for Review.
|
|
4
|
-
* @module dsh-git-worktree/commands
|
|
5
|
-
*/
|
|
1
|
+
import { hostMessage, withHostLanguage, languageForInvocation } from './i18n/host.js';
|
|
2
|
+
import { hostRegistrationMessage } from './i18n/host-messages.js';
|
|
6
3
|
import '@deepseek-ai/dsh-commands';
|
|
7
4
|
function targetText(target) {
|
|
8
5
|
const lines = [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
hostMessage('checkoutPhase', { p0: target.checkout.label, p1: target.checkout.kind, p2: target.checkout.phase }),
|
|
7
|
+
hostMessage('commandDirty', { value: String(target.dirty) }),
|
|
8
|
+
hostMessage('commandCurrent', { branch: target.current.branch ?? hostMessage('commandDetached'), oid: target.current.oid.slice(0, 7) }),
|
|
12
9
|
];
|
|
13
10
|
if (target.delivery)
|
|
14
|
-
lines.push(
|
|
11
|
+
lines.push(hostMessage('commandDelivery', { state: target.delivery.state }));
|
|
15
12
|
return lines.join('\n');
|
|
16
13
|
}
|
|
17
14
|
function sessionIdOf(agent) {
|
|
18
15
|
const session = agent?.session;
|
|
19
16
|
if (!session || typeof session.id !== 'string')
|
|
20
|
-
throw new Error('
|
|
17
|
+
throw new Error(hostMessage('worktreeCanOnlyBeUsedInADSHAgent'));
|
|
21
18
|
return session.id;
|
|
22
19
|
}
|
|
23
20
|
const RETENTIONS = new Set(['cleanup', 'retain_24h', 'retain_3d', 'retain_manual']);
|
|
24
|
-
const
|
|
21
|
+
const usage = () => hostMessage('usageWorktreeStatusListContinueNextFinalizeReviewIdRevision');
|
|
25
22
|
function finishedText(result) {
|
|
26
|
-
return
|
|
23
|
+
return hostMessage('finishedCommittedFileSAsCleanup', { p0: result.changedFiles.length, p1: result.commitOid?.slice(0, 7) ?? hostMessage('commandNoOp'), p2: result.cleanup });
|
|
27
24
|
}
|
|
28
25
|
/** Register the `/worktree` command. */
|
|
29
26
|
export function registerWorktreeCommand(ctx, module) {
|
|
30
27
|
ctx.commands.register({
|
|
31
28
|
name: 'worktree',
|
|
32
|
-
description: '
|
|
33
|
-
input: { hint: '
|
|
34
|
-
handler: async (invocation) => {
|
|
29
|
+
description: hostRegistrationMessage('inspectAndExplicitlyAcceptManagedWorktreeDelivery'),
|
|
30
|
+
input: { hint: hostRegistrationMessage('statusListContinueNextFinalizeRetentionFinishMessageDiscard') },
|
|
31
|
+
handler: async (invocation) => withHostLanguage(languageForInvocation(invocation.agent, ctx), async () => {
|
|
35
32
|
const rawInput = invocation.rawInput.trim();
|
|
36
33
|
const tokens = rawInput.split(/\s+/u).filter(Boolean);
|
|
37
34
|
const verb = tokens[0] ?? 'status';
|
|
@@ -44,26 +41,26 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
44
41
|
case 'list': {
|
|
45
42
|
const summaries = await module.listManagedWorktreesForSession(sessionId);
|
|
46
43
|
if (summaries.length === 0)
|
|
47
|
-
return { kind: 'success', text: '
|
|
44
|
+
return { kind: 'success', text: hostMessage('noManagedWorktreesVisibleToThisSession') };
|
|
48
45
|
return {
|
|
49
46
|
kind: 'success',
|
|
50
|
-
text: summaries.map((summary) => (`${summary.checkoutId} ${summary.project.name} i${summary.iteration} ${summary.state}/${summary.phase}
|
|
47
|
+
text: summaries.map((summary) => (`${summary.checkoutId} ${summary.project.name} i${summary.iteration} ${summary.state}/${summary.phase} ${hostMessage('commandDirty', { value: String(summary.dirty) })}`)).join('\n'),
|
|
51
48
|
};
|
|
52
49
|
}
|
|
53
50
|
case 'continue': {
|
|
54
51
|
const current = await module.inspect(sessionId);
|
|
55
52
|
if (current.delivery?.state !== 'ready_for_review') {
|
|
56
|
-
return { kind: 'error', text: '
|
|
53
|
+
return { kind: 'error', text: hostMessage('theCurrentWorktreeHasNoUnsyncedReadyForReview') };
|
|
57
54
|
}
|
|
58
55
|
const target = await module.resumeRevision(sessionId, current.revision, current.delivery.review.reviewId);
|
|
59
56
|
const iteration = target.delivery?.state === 'working' ? target.delivery.iteration : 0;
|
|
60
|
-
return { kind: 'success', text:
|
|
57
|
+
return { kind: 'success', text: hostMessage('resumedWorktreeIterationLocalWasNotModified', { p0: iteration }) };
|
|
61
58
|
}
|
|
62
59
|
case 'next': {
|
|
63
60
|
const current = await module.inspect(sessionId);
|
|
64
61
|
const target = await module.beginNextIteration(sessionId, current.revision);
|
|
65
62
|
const iteration = target.delivery?.state === 'working' ? target.delivery.iteration : 0;
|
|
66
|
-
return { kind: 'success', text:
|
|
63
|
+
return { kind: 'success', text: hostMessage('startedWorktreeIterationInTheCurrentSession', { p0: iteration }) };
|
|
67
64
|
}
|
|
68
65
|
case 'finalize': {
|
|
69
66
|
const hasReviewIdentity = tokens[1] !== undefined && !RETENTIONS.has(tokens[1]);
|
|
@@ -71,15 +68,15 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
71
68
|
const parsedRevision = hasReviewIdentity ? Number(tokens[2]) : undefined;
|
|
72
69
|
const retention = (hasReviewIdentity ? tokens[3] : tokens[1] ?? 'cleanup');
|
|
73
70
|
if (!RETENTIONS.has(retention) || (hasReviewIdentity && (!expectedReviewId || !Number.isSafeInteger(parsedRevision)))) {
|
|
74
|
-
return { kind: 'error', text:
|
|
71
|
+
return { kind: 'error', text: usage() };
|
|
75
72
|
}
|
|
76
73
|
const target = await module.inspect(sessionId);
|
|
77
74
|
if (target.delivery?.state !== 'ready_for_review') {
|
|
78
|
-
return { kind: 'error', text: '
|
|
75
|
+
return { kind: 'error', text: hostMessage('theCurrentWorktreeIsNotReadyForReviewAnd') };
|
|
79
76
|
}
|
|
80
77
|
if (expectedReviewId && (target.delivery.review.reviewId !== expectedReviewId
|
|
81
78
|
|| target.revision !== parsedRevision)) {
|
|
82
|
-
return { kind: 'error', text: '
|
|
79
|
+
return { kind: 'error', text: hostMessage('thisReviewCardHasExpiredConfirmTheLatestReady') };
|
|
83
80
|
}
|
|
84
81
|
const result = await module.operate({
|
|
85
82
|
action: 'finish',
|
|
@@ -92,16 +89,16 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
92
89
|
if (result.status === 'finished')
|
|
93
90
|
return { kind: 'success', text: finishedText(result) };
|
|
94
91
|
if (result.status === 'conflict') {
|
|
95
|
-
return { kind: 'error', text:
|
|
92
|
+
return { kind: 'error', text: hostMessage('conflictNLocalHEADSyncAndResolveConflictsInWorktree', { p0: result.conflictingFiles.join('、'), p1: result.localHeadOid.slice(0, 7) }) };
|
|
96
93
|
}
|
|
97
94
|
if (result.status === 'error')
|
|
98
95
|
return { kind: 'error', text: `${result.code}: ${result.message}` };
|
|
99
|
-
return { kind: 'error', text: '
|
|
96
|
+
return { kind: 'error', text: hostMessage('finalizeDidNotReturnTheExpectedResult') };
|
|
100
97
|
}
|
|
101
98
|
case 'finish': {
|
|
102
99
|
const commitMessage = rawInput.slice(verb.length).trim();
|
|
103
100
|
if (!commitMessage)
|
|
104
|
-
return { kind: 'error', text:
|
|
101
|
+
return { kind: 'error', text: usage() };
|
|
105
102
|
const target = await module.inspect(sessionId);
|
|
106
103
|
const result = await module.operate({
|
|
107
104
|
action: 'finish',
|
|
@@ -112,10 +109,10 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
112
109
|
if (result.status === 'finished')
|
|
113
110
|
return { kind: 'success', text: finishedText(result) };
|
|
114
111
|
if (result.status === 'conflict')
|
|
115
|
-
return { kind: 'error', text:
|
|
112
|
+
return { kind: 'error', text: hostMessage('commandConflict', { files: result.conflictingFiles.join('、') }) };
|
|
116
113
|
if (result.status === 'error')
|
|
117
114
|
return { kind: 'error', text: `${result.code}: ${result.message}` };
|
|
118
|
-
return { kind: 'error', text: '
|
|
115
|
+
return { kind: 'error', text: hostMessage('finishDidNotReturnTheExpectedResult') };
|
|
119
116
|
}
|
|
120
117
|
case 'discard': {
|
|
121
118
|
const target = await module.inspect(sessionId);
|
|
@@ -127,19 +124,19 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
127
124
|
...(target.delivery?.state === 'preview_active' ? { rollbackPreview: true } : {}),
|
|
128
125
|
});
|
|
129
126
|
return result.status === 'discarded'
|
|
130
|
-
? { kind: 'success', text: '
|
|
127
|
+
? { kind: 'success', text: hostMessage('worktreeDiscardedThisSessionTargetIsNoLongerAvailable') }
|
|
131
128
|
: result.status === 'error'
|
|
132
129
|
? { kind: 'error', text: `${result.code}: ${result.message}` }
|
|
133
|
-
: { kind: 'error', text: '
|
|
130
|
+
: { kind: 'error', text: hostMessage('discardDidNotReturnTheExpectedResult') };
|
|
134
131
|
}
|
|
135
132
|
case 'remove': {
|
|
136
133
|
const checkoutId = tokens[1];
|
|
137
134
|
if (!checkoutId)
|
|
138
|
-
return { kind: 'error', text:
|
|
135
|
+
return { kind: 'error', text: usage() };
|
|
139
136
|
const summaries = await module.listManagedWorktreesForSession(sessionId, { checkoutId });
|
|
140
137
|
const summary = summaries[0];
|
|
141
138
|
if (!summary)
|
|
142
|
-
return { kind: 'error', text:
|
|
139
|
+
return { kind: 'error', text: hostMessage('noManagedWorktreeVisibleToThisSession', { p0: checkoutId }) };
|
|
143
140
|
await module.manageManagedWorktreeForSession(sessionId, {
|
|
144
141
|
checkoutId,
|
|
145
142
|
expectedRevision: summary.revision,
|
|
@@ -147,16 +144,16 @@ export function registerWorktreeCommand(ctx, module) {
|
|
|
147
144
|
confirmDirty: true,
|
|
148
145
|
...(summary.state === 'preview_active' ? { rollbackPreview: true } : {}),
|
|
149
146
|
});
|
|
150
|
-
return { kind: 'success', text:
|
|
147
|
+
return { kind: 'success', text: hostMessage('removedWorktree', { p0: checkoutId }) };
|
|
151
148
|
}
|
|
152
149
|
default:
|
|
153
|
-
return { kind: 'error', text:
|
|
150
|
+
return { kind: 'error', text: hostMessage('unknownVerb', { p0: JSON.stringify(verb), p1: usage() }) };
|
|
154
151
|
}
|
|
155
152
|
}
|
|
156
153
|
catch (error) {
|
|
157
154
|
return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
|
|
158
155
|
}
|
|
159
|
-
},
|
|
156
|
+
}),
|
|
160
157
|
});
|
|
161
158
|
}
|
|
162
159
|
//# sourceMappingURL=commands.js.map
|
package/lib/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|