dsh-git-worktree 0.7.5 → 0.9.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 +51 -0
- package/README.en.md +11 -5
- package/README.md +11 -5
- 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 +92 -18
- package/lib/adapters/git.js.map +1 -1
- package/lib/adapters/initial-commit.d.ts +16 -0
- package/lib/adapters/initial-commit.js +112 -0
- package/lib/adapters/initial-commit.js.map +1 -0
- package/lib/adapters/lookup.js +21 -0
- package/lib/adapters/lookup.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 +5 -2
- package/lib/client/WorktreeCreateRow.js.map +1 -1
- package/lib/client/WorktreeReviewRow.d.ts +1 -1
- package/lib/client/WorktreeReviewRow.js +11 -9
- package/lib/client/WorktreeReviewRow.js.map +1 -1
- package/lib/client/actions.d.ts +4 -7
- 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 +37 -32
- package/lib/client/console-remote/adapter.js.map +1 -1
- package/lib/client/console-remote/index.js +6 -2
- 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.d.ts +2 -2
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +95 -80
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -1
- package/lib/client/pre-session/controller.d.ts +3 -0
- package/lib/client/pre-session/controller.js +27 -13
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/pre-session/harness-input.d.ts +13 -0
- package/lib/client/pre-session/harness-input.js +18 -0
- package/lib/client/pre-session/harness-input.js.map +1 -0
- package/lib/client/pre-session/index.d.ts +13 -2
- package/lib/client/pre-session/index.js +11 -2
- 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 +15 -8
- package/lib/client/review-console/PreflightStatus.js.map +1 -1
- package/lib/client/review-console/ReviewActions.d.ts +4 -1
- package/lib/client/review-console/ReviewActions.js +139 -114
- package/lib/client/review-console/ReviewActions.js.map +1 -1
- package/lib/client/review-console/ReviewDetailsModal.d.ts +12 -0
- package/lib/client/review-console/ReviewDetailsModal.js +56 -0
- package/lib/client/review-console/ReviewDetailsModal.js.map +1 -0
- package/lib/client/review-console/ReviewIcon.d.ts +35 -0
- package/lib/client/review-console/ReviewIcon.js +14 -0
- package/lib/client/review-console/ReviewIcon.js.map +1 -0
- package/lib/client/review-console/WorktreeReviewPanel.d.ts +3 -7
- package/lib/client/review-console/WorktreeReviewPanel.js +20 -82
- 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/review-console/review-console.styles.js +101 -23
- package/lib/client/review-console/review-console.styles.js.map +1 -1
- package/lib/client/styles.js +13 -10
- package/lib/client/styles.js.map +1 -1
- package/lib/client/target-console/TargetStatusAction.js +87 -65
- package/lib/client/target-console/TargetStatusAction.js.map +1 -1
- package/lib/client/target-console/WorktreeConsoleView.d.ts +2 -1
- package/lib/client/target-console/WorktreeConsoleView.js +42 -37
- 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 +45 -88
- package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -1
- package/lib/client/target-console/current-polling.d.ts +11 -0
- package/lib/client/target-console/current-polling.js +104 -0
- package/lib/client/target-console/current-polling.js.map +1 -0
- package/lib/client/target-console/target-console.styles.js +8 -0
- package/lib/client/target-console/target-console.styles.js.map +1 -1
- package/lib/client/workspace-sidebar/index.js +8 -3
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client/workspace-sidebar/model.d.ts +5 -1
- package/lib/client/workspace-sidebar/model.js +97 -23
- package/lib/client/workspace-sidebar/model.js.map +1 -1
- package/lib/client.js +12228 -8928
- package/lib/commands.js +32 -35
- package/lib/commands.js.map +1 -1
- package/lib/console-contract.d.ts +20 -0
- package/lib/console-contract.js.map +1 -1
- package/lib/console-host/control-plane.d.ts +3 -1
- package/lib/console-host/control-plane.js +186 -95
- 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 +27 -23
- package/lib/console-host/service.js +66 -51
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +4 -2
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/remote.d.ts +25 -22
- package/lib/console-remote/remote.js.map +1 -1
- package/lib/console-remote/schemas.d.ts +14 -2
- package/lib/console-remote/schemas.js +8 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/i18n/client-messages.d.ts +1671 -0
- package/lib/i18n/client-messages.js +1468 -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 +1495 -0
- package/lib/i18n/host-messages.js +1485 -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/ports.d.ts +15 -0
- package/lib/session-checkout-apply.js +93 -92
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +234 -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/package.json +3 -1
- package/scripts/check-publish.mjs +1 -1
- package/scripts/dev-dsh-lib.mjs +1 -1
- package/scripts/workspace-sidebar-upstream.mjs +1 -1
package/lib/client/actions.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { translatorForServices } from './i18n.js';
|
|
2
2
|
function samePath(left, right) {
|
|
3
3
|
const normalize = (value) => value.replace(/[\\/]+$/u, '').replaceAll('\\', '/');
|
|
4
4
|
const normalizedLeft = normalize(left);
|
|
@@ -16,6 +16,7 @@ export function openExistingSession(services, sessionId, expectedCwd) {
|
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
18
|
async function waitForProjectedSessionPath(services, sessionId, expectedCwd, isActive) {
|
|
19
|
+
const t = translatorForServices(services);
|
|
19
20
|
return new Promise((resolvePromise, rejectPromise) => {
|
|
20
21
|
let settled = false;
|
|
21
22
|
let unsubscribe = () => { };
|
|
@@ -39,13 +40,13 @@ async function waitForProjectedSessionPath(services, sessionId, expectedCwd, isA
|
|
|
39
40
|
if (summary?.cwd === undefined)
|
|
40
41
|
return;
|
|
41
42
|
if (!samePath(summary.cwd, expectedCwd)) {
|
|
42
|
-
settle(false, new Error(
|
|
43
|
+
settle(false, new Error(t("the.cwd.of.new.harness.session.does.not", { p0: sessionId })));
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
45
46
|
settle(true);
|
|
46
47
|
};
|
|
47
48
|
const timer = globalThis.setTimeout(() => {
|
|
48
|
-
settle(false, new Error(
|
|
49
|
+
settle(false, new Error(t("harness.has.not.projected.a.trusted.cwd.for", { p0: sessionId })));
|
|
49
50
|
}, 2_000);
|
|
50
51
|
const dispose = services.sessions.list.subscribe(inspect);
|
|
51
52
|
unsubscribe = dispose;
|
|
@@ -57,6 +58,7 @@ async function waitForProjectedSessionPath(services, sessionId, expectedCwd, isA
|
|
|
57
58
|
}
|
|
58
59
|
/** Idempotently register the managed root, create the preallocated Session, and navigate. */
|
|
59
60
|
export async function openIsolatedTarget(services, payload, isActive = () => true) {
|
|
61
|
+
const t = translatorForServices(services);
|
|
60
62
|
if (!isActive())
|
|
61
63
|
return;
|
|
62
64
|
const existing = services.sessions.list.getSnapshot().byId[payload.targetSessionId];
|
|
@@ -64,7 +66,7 @@ export async function openIsolatedTarget(services, payload, isActive = () => tru
|
|
|
64
66
|
if (!isActive())
|
|
65
67
|
return;
|
|
66
68
|
if (!openExistingSession(services, payload.targetSessionId, payload.managedRoot)) {
|
|
67
|
-
throw new Error(
|
|
69
|
+
throw new Error(t("the.cwd.of.existing.harness.session.does.not", { p0: payload.targetSessionId }));
|
|
68
70
|
}
|
|
69
71
|
return;
|
|
70
72
|
}
|
|
@@ -72,14 +74,14 @@ export async function openIsolatedTarget(services, payload, isActive = () => tru
|
|
|
72
74
|
if (!isActive())
|
|
73
75
|
return;
|
|
74
76
|
if (workspace.path !== payload.managedRoot) {
|
|
75
|
-
throw new Error(
|
|
77
|
+
throw new Error(t("the.working.directory.registered.by.harness.does.not", { p0: workspace.path }));
|
|
76
78
|
}
|
|
77
79
|
const sessionId = await services.sessions.create({
|
|
78
80
|
workspaceId: workspace.workspaceId,
|
|
79
81
|
sessionId: payload.targetSessionId,
|
|
80
82
|
});
|
|
81
83
|
if (sessionId !== payload.targetSessionId) {
|
|
82
|
-
throw new Error(
|
|
84
|
+
throw new Error(t("harness.created.unexpected.session.expected", { p0: sessionId, p1: payload.targetSessionId }));
|
|
83
85
|
}
|
|
84
86
|
if (!await waitForProjectedSessionPath(services, sessionId, payload.managedRoot, isActive))
|
|
85
87
|
return;
|
|
@@ -92,6 +94,7 @@ export async function openIsolatedTarget(services, payload, isActive = () => tru
|
|
|
92
94
|
* then reuse the cwd-validated Session navigation path.
|
|
93
95
|
*/
|
|
94
96
|
export async function openAuthorizedWorktreeTarget(adapter, services, callerSessionId, expected, isActive = () => true) {
|
|
97
|
+
const t = translatorForServices(services);
|
|
95
98
|
const outcome = await adapter.inspect({ sessionId: callerSessionId, checkoutId: expected.checkoutId });
|
|
96
99
|
if (!isActive())
|
|
97
100
|
return;
|
|
@@ -99,14 +102,14 @@ export async function openAuthorizedWorktreeTarget(adapter, services, callerSess
|
|
|
99
102
|
throw new Error(`${outcome.error.code}: ${outcome.error.message}`);
|
|
100
103
|
const target = outcome.value.target;
|
|
101
104
|
if (!target.capabilities.inspect || !target.capabilities.open) {
|
|
102
|
-
throw new Error(
|
|
105
|
+
throw new Error(t("the.latest.host.state.no.longer.permits.opening"));
|
|
103
106
|
}
|
|
104
107
|
if (target.checkoutId !== expected.checkoutId
|
|
105
108
|
|| target.ownerSessionId !== expected.ownerSessionId
|
|
106
109
|
|| target.targetSessionId !== expected.ownerSessionId)
|
|
107
|
-
throw new Error(
|
|
110
|
+
throw new Error(t("the.worktree.identity.returned.by.host.inspection.does"));
|
|
108
111
|
if (target.managedRoot === null)
|
|
109
|
-
throw new Error(
|
|
112
|
+
throw new Error(t("host.did.not.provide.a.verifiable.worktree.path"));
|
|
110
113
|
if (!isActive())
|
|
111
114
|
return;
|
|
112
115
|
await openIsolatedTarget(services, {
|
|
@@ -124,16 +127,17 @@ export function prefillSessionDraft(services, sessionId, text) {
|
|
|
124
127
|
}
|
|
125
128
|
/** Submit an exact review-card acceptance as an explicit user command. */
|
|
126
129
|
export async function finalizeCurrentSession(services, reviewId, revision, retention) {
|
|
130
|
+
const t = translatorForServices(services);
|
|
127
131
|
const sessionId = services.sessions.list.getSnapshot().current;
|
|
128
132
|
if (!sessionId)
|
|
129
|
-
throw new Error(
|
|
133
|
+
throw new Error(t("no.session.is.currently.selected"));
|
|
130
134
|
const binding = services.sessions.binding(sessionId);
|
|
131
135
|
if (!binding)
|
|
132
|
-
throw new Error(
|
|
136
|
+
throw new Error(t("the.current.session.is.not.ready"));
|
|
133
137
|
const result = await binding.session.command(`/worktree finalize ${reviewId} ${revision} ${retention}`);
|
|
134
138
|
if (!result.ok)
|
|
135
|
-
throw new Error(
|
|
139
|
+
throw new Error(t("finalize.command.failed", { p0: result.error.code, p1: result.error.message }));
|
|
136
140
|
if (!result.value.matched)
|
|
137
|
-
throw new Error(
|
|
141
|
+
throw new Error(t("host.did.not.recognize.the.worktree.command"));
|
|
138
142
|
}
|
|
139
143
|
//# sourceMappingURL=actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Language } from '../../i18n/core.js';
|
|
1
2
|
import type { WorktreeConsoleAdapter } from '../../console-contract.js';
|
|
2
3
|
import type { GitWorktreeRemote } from '../../console-remote/remote.js';
|
|
3
|
-
export declare function createWorktreeConsoleRemoteAdapter(remote: GitWorktreeRemote): WorktreeConsoleAdapter;
|
|
4
|
+
export declare function createWorktreeConsoleRemoteAdapter(remote: GitWorktreeRemote, getLanguage?: () => Language): WorktreeConsoleAdapter;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { createTranslator, normalizeLanguage } from '../../i18n/core.js';
|
|
2
|
+
import { transportMessages } from '../../i18n/transport-messages.js';
|
|
1
3
|
import { WORKTREE_CONSOLE_DESCRIPTORS } from '../../console-remote/descriptors.js';
|
|
2
4
|
function transport(message) {
|
|
3
5
|
return { ok: false, error: { code: 'transport_unavailable', message } };
|
|
4
6
|
}
|
|
5
|
-
function malformed(method) {
|
|
6
|
-
return { ok: false, error: { code: 'malformed_response', message:
|
|
7
|
+
function malformed(method, locale) {
|
|
8
|
+
return { ok: false, error: { code: 'malformed_response', message: createTranslator(transportMessages, locale)('malformed', { method }) } };
|
|
7
9
|
}
|
|
8
10
|
function messageOf(value) {
|
|
9
11
|
if (value instanceof Error)
|
|
@@ -16,54 +18,57 @@ function isCodecRejection(value) {
|
|
|
16
18
|
const message = messageOf(value);
|
|
17
19
|
return message.includes('rejected "') || message.includes('返回了不符合 strict contract');
|
|
18
20
|
}
|
|
19
|
-
export function createWorktreeConsoleRemoteAdapter(remote) {
|
|
21
|
+
export function createWorktreeConsoleRemoteAdapter(remote, getLanguage = () => 'zh') {
|
|
20
22
|
const descriptors = new Map(WORKTREE_CONSOLE_DESCRIPTORS.map(descriptor => [descriptor.method, descriptor]));
|
|
21
23
|
async function invoke(method, call) {
|
|
24
|
+
const locale = normalizeLanguage(getLanguage());
|
|
22
25
|
let carrier;
|
|
23
26
|
try {
|
|
24
|
-
carrier = await call();
|
|
27
|
+
carrier = await call(locale);
|
|
25
28
|
}
|
|
26
29
|
catch (error) {
|
|
27
|
-
return isCodecRejection(error) ? malformed(method) : transport(messageOf(error));
|
|
30
|
+
return isCodecRejection(error) ? malformed(method, locale) : transport(messageOf(error));
|
|
28
31
|
}
|
|
29
32
|
if (typeof carrier !== 'object' || carrier === null || typeof carrier.ok !== 'boolean')
|
|
30
|
-
return malformed(method);
|
|
33
|
+
return malformed(method, locale);
|
|
31
34
|
if (!carrier.ok)
|
|
32
|
-
return isCodecRejection(carrier.error) ? malformed(method) : transport(carrier.error.message);
|
|
35
|
+
return isCodecRejection(carrier.error) ? malformed(method, locale) : transport(carrier.error.message);
|
|
33
36
|
const descriptor = descriptors.get(method);
|
|
34
37
|
if (descriptor?.result.mode !== 'strict')
|
|
35
|
-
return malformed(method);
|
|
38
|
+
return malformed(method, locale);
|
|
36
39
|
try {
|
|
37
40
|
return descriptor.result.schema.parse(carrier.value);
|
|
38
41
|
}
|
|
39
42
|
catch {
|
|
40
|
-
return malformed(method);
|
|
43
|
+
return malformed(method, locale);
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
return {
|
|
44
|
-
sidebarTopology: () => invoke('sidebarTopology',
|
|
45
|
-
current: request => invoke('current',
|
|
46
|
-
list: request => invoke('list',
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
47
|
+
sidebarTopology: () => invoke('sidebarTopology', locale => remote.sidebarTopology(locale)),
|
|
48
|
+
current: request => invoke('current', locale => remote.current(request.sessionId, locale)),
|
|
49
|
+
list: request => invoke('list', locale => remote.list(request.sessionId, request.needsAttention, request.includeDelivered, locale)),
|
|
50
|
+
preflightCreate: request => invoke('preflightCreate', locale => remote.preflightCreate(request.sourceSessionId, locale)),
|
|
51
|
+
createWithInitialCommit: request => invoke('createWithInitialCommit', locale => remote.createWithInitialCommit(request.sourceSessionId, request.confirmationToken, locale)),
|
|
52
|
+
create: request => invoke('create', locale => remote.create(request.sourceSessionId, locale)),
|
|
53
|
+
inspect: request => invoke('inspect', locale => remote.inspect(request.sessionId, request.checkoutId, locale)),
|
|
54
|
+
reviewDiff: request => invoke('reviewDiff', locale => remote.reviewDiff(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
55
|
+
preflight: request => invoke('preflight', locale => remote.preflight(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
56
|
+
previewRecoveryPreflight: request => invoke('previewRecoveryPreflight', locale => remote.previewRecoveryPreflight(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, locale)),
|
|
57
|
+
preparePreviewRecoveryAnalysis: request => invoke('preparePreviewRecoveryAnalysis', locale => remote.preparePreviewRecoveryAnalysis(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, request.recoveryProof, locale)),
|
|
58
|
+
createPreviewRecoveryHandoff: request => invoke('createPreviewRecoveryHandoff', locale => remote.createPreviewRecoveryHandoff(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, request.recoveryProof, locale)),
|
|
59
|
+
preview: request => invoke('preview', locale => remote.preview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
60
|
+
checkpoint: request => invoke('checkpoint', locale => remote.checkpoint(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedGeneration, request.requestId, request.commitMessage, locale)),
|
|
61
|
+
resumeRevision: request => invoke('resumeRevision', locale => request.conflictContinuation
|
|
62
|
+
? remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.conflictContinuation, locale)
|
|
63
|
+
: remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, undefined, locale)),
|
|
64
|
+
prepareReviewRegeneration: request => invoke('prepareReviewRegeneration', locale => remote.prepareReviewRegeneration(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
65
|
+
rollbackPreview: request => invoke('rollbackPreview', locale => remote.rollbackPreview(request.sessionId, request.checkoutId, request.expectedRevision, request.resumeRevision, request.recoveryProof, locale)),
|
|
66
|
+
discard: request => invoke('discard', locale => remote.discard(request.sessionId, request.checkoutId, request.expectedRevision, request.confirmDirty, request.rollbackPreview, locale)),
|
|
67
|
+
finalize: request => invoke('finalize', locale => remote.finalize(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention, locale)),
|
|
68
|
+
finalizePreview: request => invoke('finalizePreview', locale => remote.finalizePreview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention, request.recoveryProof, locale)),
|
|
69
|
+
setRetention: request => invoke('setRetention', locale => remote.setRetention(request.sessionId, request.checkoutId, request.expectedRevision, request.retention, locale)),
|
|
70
|
+
retryCleanup: request => invoke('retryCleanup', locale => remote.retryCleanup(request.sessionId, request.checkoutId, request.expectedRevision, locale)),
|
|
71
|
+
beginNextIteration: request => invoke('beginNextIteration', locale => remote.beginNextIteration(request.sessionId, request.checkoutId, request.expectedRevision, locale)),
|
|
67
72
|
};
|
|
68
73
|
}
|
|
69
74
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/client/console-remote/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/client/console-remote/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { readClientLanguage } from '../i18n.js';
|
|
2
|
+
import { createTranslator } from '../../i18n/core.js';
|
|
3
|
+
import { transportMessages } from '../../i18n/transport-messages.js';
|
|
1
4
|
import contribution from '../../console-remote/remote.js';
|
|
2
5
|
import { apply as applyToolViews, inject as toolViewInject } from '../index.js';
|
|
3
6
|
import { registerManagedWorkspaceSidebar } from '../workspace-sidebar/index.js';
|
|
@@ -15,9 +18,10 @@ export async function apply(ctx) {
|
|
|
15
18
|
const disposeRemote = await ctx.remote.$mount(contribution);
|
|
16
19
|
ctx.effect(() => disposeRemote);
|
|
17
20
|
const remote = ctx.get('remote.gitWorktree');
|
|
21
|
+
const getLanguage = () => readClientLanguage(ctx.get('locale'));
|
|
18
22
|
if (remote === undefined)
|
|
19
|
-
throw new Error(
|
|
20
|
-
const adapter = createWorktreeConsoleRemoteAdapter(remote);
|
|
23
|
+
throw new Error(createTranslator(transportMessages, getLanguage())('mountFailed'));
|
|
24
|
+
const adapter = createWorktreeConsoleRemoteAdapter(remote, getLanguage);
|
|
21
25
|
ctx.provide('worktreeConsole', adapter);
|
|
22
26
|
// Host lifecycle selects this replacement only while the plugin is active.
|
|
23
27
|
// Provide Workspace before uiConversation to avoid a Client boot cycle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/console-remote/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/console-remote/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAIpE,OAAO,YAAwC,MAAM,gCAAgC,CAAA;AACrF,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AACzF,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AAEjE,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAA;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAA;AAYlD,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAyB;IACnD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAkC,CAAA;IAC7E,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/D,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;IAC5G,MAAM,OAAO,GAAG,kCAAkC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACvE,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAEvC,2EAA2E;IAC3E,wEAAwE;IACxE,+BAA+B,CAC7B,GAAuE,EACvE,OAAO,CACR,CAAA;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;QACjC,cAAc,CAAC,KAAwD,EAAE,OAAO,CAAC,CAAA;IACnF,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type Language, type Translator } from '../i18n/core.js';
|
|
3
|
+
import { clientMessages } from '../i18n/client-messages.js';
|
|
4
|
+
export type ClientTranslator = Translator<typeof clientMessages>;
|
|
5
|
+
export interface ClientLocaleSource {
|
|
6
|
+
getSnapshot(): {
|
|
7
|
+
active?: unknown;
|
|
8
|
+
};
|
|
9
|
+
subscribe(listener: () => void): () => void;
|
|
10
|
+
}
|
|
11
|
+
/** DSH LocaleFace resolves preference/browser fallback into snapshot.active. */
|
|
12
|
+
export declare function readClientLanguage(locale: unknown): Language;
|
|
13
|
+
export declare function clientTranslator(language?: Language): ClientTranslator;
|
|
14
|
+
export declare const defaultClientTranslator: ClientTranslator;
|
|
15
|
+
export declare function ClientI18nProvider({ locale, language, children }: {
|
|
16
|
+
locale?: unknown;
|
|
17
|
+
language?: Language;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}): import("react").JSX.Element;
|
|
20
|
+
export declare function useClientLanguage(): Language;
|
|
21
|
+
export declare function useClientTranslator(): ClientTranslator;
|
|
22
|
+
/** Imperative services resolve language at invocation time, not at module load. */
|
|
23
|
+
export declare function translatorForServices(services: {
|
|
24
|
+
locale?: unknown;
|
|
25
|
+
}): ClientTranslator;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo, useSyncExternalStore } from 'react';
|
|
3
|
+
import { createTranslator, normalizeLanguage } from '../i18n/core.js';
|
|
4
|
+
import { clientMessages } from '../i18n/client-messages.js';
|
|
5
|
+
function localeSource(locale) {
|
|
6
|
+
if (typeof locale !== 'object' || locale === null)
|
|
7
|
+
return undefined;
|
|
8
|
+
const source = locale;
|
|
9
|
+
return typeof source.getSnapshot === 'function' && typeof source.subscribe === 'function'
|
|
10
|
+
? source : undefined;
|
|
11
|
+
}
|
|
12
|
+
/** DSH LocaleFace resolves preference/browser fallback into snapshot.active. */
|
|
13
|
+
export function readClientLanguage(locale) {
|
|
14
|
+
try {
|
|
15
|
+
return normalizeLanguage(localeSource(locale)?.getSnapshot().active);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return 'zh';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function clientTranslator(language = 'zh') {
|
|
22
|
+
return createTranslator(clientMessages, language);
|
|
23
|
+
}
|
|
24
|
+
export const defaultClientTranslator = clientTranslator();
|
|
25
|
+
const ClientLanguageContext = createContext('zh');
|
|
26
|
+
export function ClientI18nProvider({ locale, language, children }) {
|
|
27
|
+
const store = useMemo(() => ({
|
|
28
|
+
subscribe: (listener) => localeSource(locale)?.subscribe(listener) ?? (() => { }),
|
|
29
|
+
getSnapshot: () => language ?? readClientLanguage(locale),
|
|
30
|
+
}), [locale, language]);
|
|
31
|
+
const active = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
|
|
32
|
+
return _jsx(ClientLanguageContext.Provider, { value: active, children: children });
|
|
33
|
+
}
|
|
34
|
+
export function useClientLanguage() { return useContext(ClientLanguageContext); }
|
|
35
|
+
export function useClientTranslator() {
|
|
36
|
+
const language = useClientLanguage();
|
|
37
|
+
return useMemo(() => clientTranslator(language), [language]);
|
|
38
|
+
}
|
|
39
|
+
/** Imperative services resolve language at invocation time, not at module load. */
|
|
40
|
+
export function translatorForServices(services) {
|
|
41
|
+
return clientTranslator(readClientLanguage(services.locale));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/client/i18n.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AAChG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAkC,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAQ3D,SAAS,YAAY,CAAC,MAAe;IACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IACnE,MAAM,MAAM,GAAG,MAAqC,CAAA;IACpD,OAAO,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU;QACvF,CAAC,CAAC,MAA4B,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,IAAI,CAAC;QAAC,OAAO,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAqB,IAAI;IACxD,OAAO,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AACnD,CAAC;AACD,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,EAAE,CAAA;AACzD,MAAM,qBAAqB,GAAG,aAAa,CAAW,IAAI,CAAC,CAAA;AAE3D,MAAM,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAI9D;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,SAAS,EAAE,CAAC,QAAoB,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;QAC5F,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC;KAC1D,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;IAC1F,OAAO,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAAG,QAAQ,GAAkC,CAAA;AACnG,CAAC;AAED,MAAM,UAAU,iBAAiB,KAAe,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAA,CAAC,CAAC;AAC1F,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IACpC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CAAC,QAA8B;IAClE,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9D,CAAC"}
|
package/lib/client/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Browser entry: dedicated ToolViews for Worktree target handoff and review. */
|
|
2
|
-
import type
|
|
2
|
+
import { type ComponentType } from 'react';
|
|
3
3
|
import type { WorktreeConsoleAdapter } from '../console-contract.js';
|
|
4
4
|
export { registerTargetConsole } from './target-console/index.js';
|
|
5
5
|
export declare const WORKTREE_CONSOLE_ADAPTER_SERVICE = "worktreeConsole";
|
package/lib/client/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Browser entry: dedicated ToolViews for Worktree target handoff and review. */
|
|
3
|
+
import { createElement } from 'react';
|
|
4
|
+
import { ClientI18nProvider } from './i18n.js';
|
|
2
5
|
import { WorktreeCreateRow } from './WorktreeCreateRow.js';
|
|
3
6
|
import { WorktreeReviewRow } from './WorktreeReviewRow.js';
|
|
4
7
|
import { WORKTREE_STYLES } from './styles.js';
|
|
@@ -11,6 +14,7 @@ export const WORKTREE_CONSOLE_ADAPTER_SERVICE = 'worktreeConsole';
|
|
|
11
14
|
export const inject = ['slots', 'workspaces', 'sessions', 'conversation', 'connection', 'locale'];
|
|
12
15
|
function servicesOf(ctx) {
|
|
13
16
|
return {
|
|
17
|
+
locale: ctx.get('locale'),
|
|
14
18
|
workspaces: ctx.get('workspaces'),
|
|
15
19
|
sessions: ctx.get('sessions'),
|
|
16
20
|
conversation: ctx.get('conversation'),
|
|
@@ -19,6 +23,15 @@ function servicesOf(ctx) {
|
|
|
19
23
|
/** Register replay-stable keyed rows and one scoped stylesheet. */
|
|
20
24
|
export function apply(ctx, adapterOverride) {
|
|
21
25
|
const services = servicesOf(ctx);
|
|
26
|
+
const locale = services.locale;
|
|
27
|
+
// Wrap only this plugin's registrations, keeping each DSH Client instance isolated.
|
|
28
|
+
const localizedSlots = new Proxy(ctx.slots, {
|
|
29
|
+
get(target, key, receiver) {
|
|
30
|
+
if (key === 'register')
|
|
31
|
+
return (descriptor, Component) => target.register(descriptor, (props) => createElement(ClientI18nProvider, { locale, children: createElement(Component, props) }));
|
|
32
|
+
return Reflect.get(target, key, receiver);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
22
35
|
// A service provided by this same plugin fiber is not visible through ctx.get
|
|
23
36
|
// until the provider effect settles. The package-owned Remote entry passes
|
|
24
37
|
// the just-created adapter explicitly; direct consumers may still inject it.
|
|
@@ -33,12 +46,12 @@ export function apply(ctx, adapterOverride) {
|
|
|
33
46
|
}, 'dsh-git-worktree: styles');
|
|
34
47
|
const CreateRow = (props) => _jsx(WorktreeCreateRow, { ...props, services: services });
|
|
35
48
|
const ReviewRow = (props) => _jsx(WorktreeReviewRow, { ...props, services: services, adapter: adapter });
|
|
36
|
-
ctx.slots.inject('tool.call.toolview', () =>
|
|
37
|
-
ctx.slots.inject('tool.call.toolview', () =>
|
|
49
|
+
ctx.slots.inject('tool.call.toolview', () => localizedSlots.register({ name: 'tool.call.toolview', key: 'worktree_create' }, CreateRow));
|
|
50
|
+
ctx.slots.inject('tool.call.toolview', () => localizedSlots.register({ name: 'tool.call.toolview', key: 'worktree_ready_for_review' }, ReviewRow));
|
|
38
51
|
// Backend integration provides this optional normalized adapter service.
|
|
39
52
|
if (adapter !== undefined) {
|
|
40
|
-
registerTargetConsole({ slots:
|
|
41
|
-
registerPreSessionWorktree({ slots:
|
|
53
|
+
registerTargetConsole({ slots: localizedSlots }, adapter, services);
|
|
54
|
+
registerPreSessionWorktree({ slots: localizedSlots }, adapter, services);
|
|
42
55
|
}
|
|
43
56
|
}
|
|
44
57
|
//# sourceMappingURL=index.js.map
|
package/lib/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/client/model.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ClientTranslator } from './i18n.js';
|
|
1
2
|
/** Pure replay-stable ToolView models derived only from logged call/result slices. */
|
|
2
3
|
export interface ToolContentBlock {
|
|
3
4
|
type: string;
|
|
@@ -64,5 +65,5 @@ export interface ParsedTool<TPayload, TArgs = Record<string, never>> {
|
|
|
64
65
|
args: TArgs | null;
|
|
65
66
|
error: string | null;
|
|
66
67
|
}
|
|
67
|
-
export declare function parseCreateTool(block: ToolCallBlockLike): ParsedTool<WorktreeCreatePayload>;
|
|
68
|
-
export declare function parseReviewTool(block: ToolCallBlockLike): ParsedTool<WorktreeReviewPayload, ReviewArgs>;
|
|
68
|
+
export declare function parseCreateTool(block: ToolCallBlockLike, t?: ClientTranslator): ParsedTool<WorktreeCreatePayload>;
|
|
69
|
+
export declare function parseReviewTool(block: ToolCallBlockLike, t?: ClientTranslator): ParsedTool<WorktreeReviewPayload, ReviewArgs>;
|
package/lib/client/model.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { defaultClientTranslator } from './i18n.js';
|
|
2
2
|
function textContent(block) {
|
|
3
3
|
if (!block.kind)
|
|
4
4
|
return null;
|
|
@@ -32,14 +32,14 @@ function isRecord(value) {
|
|
|
32
32
|
function stringField(record, key) {
|
|
33
33
|
return typeof record[key] === 'string' && record[key] !== '' ? record[key] : null;
|
|
34
34
|
}
|
|
35
|
-
export function parseCreateTool(block) {
|
|
35
|
+
export function parseCreateTool(block, t = defaultClientTranslator) {
|
|
36
36
|
const state = lifecycle(block);
|
|
37
37
|
const raw = textContent(block);
|
|
38
38
|
const parsed = parseJson(raw ?? undefined);
|
|
39
39
|
if (state === 'running')
|
|
40
40
|
return { lifecycle: state, payload: null, args: null, error: null };
|
|
41
41
|
if (state !== 'ok')
|
|
42
|
-
return { lifecycle: state, payload: null, args: null, error: raw ??
|
|
42
|
+
return { lifecycle: state, payload: null, args: null, error: raw ?? t("worktree.creation.failed") };
|
|
43
43
|
if (!isRecord(parsed)
|
|
44
44
|
|| parsed.kind !== 'worktree_target_created'
|
|
45
45
|
|| !stringField(parsed, 'checkoutId')
|
|
@@ -48,7 +48,7 @@ export function parseCreateTool(block) {
|
|
|
48
48
|
|| !stringField(parsed, 'phase')
|
|
49
49
|
|| !stringField(parsed, 'currentOid')
|
|
50
50
|
|| !stringField(parsed, 'sourceSessionId')) {
|
|
51
|
-
return { lifecycle: 'error', payload: null, args: null, error:
|
|
51
|
+
return { lifecycle: 'error', payload: null, args: null, error: t("malformed.worktree.create.result") };
|
|
52
52
|
}
|
|
53
53
|
return { lifecycle: state, payload: parsed, args: null, error: null };
|
|
54
54
|
}
|
|
@@ -88,7 +88,7 @@ function reviewArgs(value) {
|
|
|
88
88
|
...(typeof value.validationSummary === 'string' && value.validationSummary !== '' ? { validationSummary: value.validationSummary } : {}),
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
|
-
export function parseReviewTool(block) {
|
|
91
|
+
export function parseReviewTool(block, t = defaultClientTranslator) {
|
|
92
92
|
const state = lifecycle(block);
|
|
93
93
|
const raw = textContent(block);
|
|
94
94
|
const parsed = parseJson(raw ?? undefined);
|
|
@@ -97,7 +97,7 @@ export function parseReviewTool(block) {
|
|
|
97
97
|
if (state === 'running')
|
|
98
98
|
return { lifecycle: state, payload: null, args: parsedArgs, error: null };
|
|
99
99
|
if (state !== 'ok')
|
|
100
|
-
return { lifecycle: state, payload: null, args: parsedArgs, error: raw ??
|
|
100
|
+
return { lifecycle: state, payload: null, args: parsedArgs, error: raw ?? t("ready.for.review.failed") };
|
|
101
101
|
if (!isRecord(parsed)
|
|
102
102
|
|| parsed.kind !== 'worktree_ready_for_review'
|
|
103
103
|
|| parsed.state !== 'ready_for_review'
|
|
@@ -105,10 +105,10 @@ export function parseReviewTool(block) {
|
|
|
105
105
|
|| typeof parsed.revision !== 'number'
|
|
106
106
|
|| !Array.isArray(parsed.changedFiles)
|
|
107
107
|
|| parsed.changedFiles.some((item) => typeof item !== 'string')) {
|
|
108
|
-
return { lifecycle: 'error', payload: null, args: null, error:
|
|
108
|
+
return { lifecycle: 'error', payload: null, args: null, error: t("malformed.ready.for.review.result") };
|
|
109
109
|
}
|
|
110
110
|
if (!parsedArgs) {
|
|
111
|
-
return { lifecycle: 'error', payload: null, args: null, error:
|
|
111
|
+
return { lifecycle: 'error', payload: null, args: null, error: t("malformed.ready.for.review.arguments") };
|
|
112
112
|
}
|
|
113
113
|
return {
|
|
114
114
|
lifecycle: state,
|
package/lib/client/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/client/model.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/client/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,5 +12,5 @@ export interface PreSessionWorktreeToggleProps {
|
|
|
12
12
|
prepare(request: PreparePreSessionWorktreeRequest): Promise<WorktreeConsoleTargetDetails>;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
/** Blank-session
|
|
16
|
-
export declare function PreSessionWorktreeToggle({ sessionId, session, input, inputActions, adapter, controller
|
|
15
|
+
/** Blank-session directory menu mounted in Harness's public composer tool row. */
|
|
16
|
+
export declare function PreSessionWorktreeToggle({ sessionId, session, input, inputActions, adapter, controller }: PreSessionWorktreeToggleProps): import("react").JSX.Element | null;
|