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
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useClientTranslator, defaultClientTranslator } from './i18n.js';
|
|
2
3
|
import { useEffect, useState } from 'react';
|
|
3
4
|
import { parseReviewTool } from './model.js';
|
|
4
5
|
import { requestWorktreeReviewRefresh, WORKTREE_REVIEW_REFRESH_EVENT } from './review-console/status-events.js';
|
|
5
6
|
import { WorktreeReviewPanel, } from './review-console/WorktreeReviewPanel.js';
|
|
6
|
-
function isLocalTargetUnselected(error) {
|
|
7
|
+
function isLocalTargetUnselected(error, t = defaultClientTranslator) {
|
|
7
8
|
if (error === null)
|
|
8
9
|
return false;
|
|
9
10
|
return /(?:^|\b)target_unselected(?:\b|$)/iu.test(error)
|
|
10
|
-
|| error.includes(
|
|
11
|
+
|| error.includes(t("no.session.target.has.been.selected"));
|
|
11
12
|
}
|
|
12
13
|
export function WorktreeReviewRow({ block, sessionId, adapter, services }) {
|
|
13
|
-
const
|
|
14
|
+
const t = useClientTranslator();
|
|
15
|
+
const model = parseReviewTool(block, t);
|
|
14
16
|
const payload = model.payload;
|
|
15
17
|
const args = model.args;
|
|
16
18
|
const state = model.lifecycle === 'running' ? 'running' : model.lifecycle === 'ok' ? 'ok' : 'error';
|
|
@@ -73,7 +75,7 @@ export function WorktreeReviewRow({ block, sessionId, adapter, services }) {
|
|
|
73
75
|
});
|
|
74
76
|
return () => { active = false; };
|
|
75
77
|
}, [adapter, payload?.reviewId, payload?.revision, refreshNonce, sessionId]);
|
|
76
|
-
if (model.lifecycle === 'error' && isLocalTargetUnselected(model.error))
|
|
78
|
+
if (model.lifecycle === 'error' && isLocalTargetUnselected(model.error, t))
|
|
77
79
|
return null;
|
|
78
80
|
const identity = payload
|
|
79
81
|
&& sessionId
|
|
@@ -86,10 +88,10 @@ export function WorktreeReviewRow({ block, sessionId, adapter, services }) {
|
|
|
86
88
|
}
|
|
87
89
|
: undefined;
|
|
88
90
|
const unavailableMessage = liveError
|
|
89
|
-
?
|
|
91
|
+
? t("live.worktree.console.unavailable", { p0: liveError })
|
|
90
92
|
: adapter && sessionId
|
|
91
|
-
?
|
|
92
|
-
:
|
|
93
|
-
return (_jsxs("section", { className: "dsh-wt-card", "data-tool": "worktree_ready_for_review", "data-state": state, "aria-label": "
|
|
93
|
+
? t("connecting.to.live.worktree.console.historical.review.evidence")
|
|
94
|
+
: t("live.worktree.console.is.disconnected.review.actions.will");
|
|
95
|
+
return (_jsxs("section", { className: "dsh-wt-card", "data-tool": "worktree_ready_for_review", "data-state": state, "aria-label": t("worktree.ready.for.review"), children: [review ? (_jsx(WorktreeReviewPanel, { review: review, adapter: adapter, services: services, identity: identity, target: liveTarget, unavailableMessage: unavailableMessage, onRefresh: () => setRefreshNonce(value => value + 1), onTargetChange: setLiveTarget })) : (_jsxs("header", { className: "dsh-wt-head", children: [_jsx("span", { className: "dsh-wt-mark", "aria-hidden": true }), _jsx("strong", { className: "dsh-wt-title", children: t("worktree.ready.for.review") }), _jsx("span", { className: "dsh-wt-subtitle", children: model.lifecycle === 'running' ? t("freezing.the.review.snapshot") : t("review.information.unavailable") })] })), model.error ? _jsx("div", { className: "dsh-wt-body", children: _jsx("div", { className: "dsh-wt-error", role: "alert", children: model.error }) }) : null] }));
|
|
94
96
|
}
|
|
95
97
|
//# sourceMappingURL=WorktreeReviewRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeReviewRow.js","sourceRoot":"","sources":["../../src/client/WorktreeReviewRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG3C,OAAO,EAAE,eAAe,EAA8B,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAA;AAC/G,OAAO,EACL,mBAAmB,GAGpB,MAAM,yCAAyC,CAAA;AAShD,SAAS,uBAAuB,CAAC,KAAoB;
|
|
1
|
+
{"version":3,"file":"WorktreeReviewRow.js","sourceRoot":"","sources":["../../src/client/WorktreeReviewRow.tsx"],"names":[],"mappings":"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"}
|
package/lib/client/actions.d.ts
CHANGED
|
@@ -76,6 +76,7 @@ export interface ClientWorkspaces {
|
|
|
76
76
|
openPath(path: string): Promise<void>;
|
|
77
77
|
}
|
|
78
78
|
export interface WorktreeClientServices {
|
|
79
|
+
locale?: unknown;
|
|
79
80
|
sessions: ClientSessions;
|
|
80
81
|
workspaces: ClientWorkspaces;
|
|
81
82
|
/** Optional public composer face used only by manual draft-prefill actions. */
|
|
@@ -114,7 +115,7 @@ export interface PreSessionWorktreeServices extends WorktreeClientServices {
|
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
/** Open a Session only when the Harness list proves both its identity and cwd. */
|
|
117
|
-
export declare function openExistingSession(services: Pick<WorktreeClientServices, 'sessions'>, sessionId: string, expectedCwd: string): boolean;
|
|
118
|
+
export declare function openExistingSession(services: Pick<WorktreeClientServices, 'sessions' | 'locale'>, sessionId: string, expectedCwd: string): boolean;
|
|
118
119
|
/** Idempotently register the managed root, create the preallocated Session, and navigate. */
|
|
119
120
|
export declare function openIsolatedTarget(services: WorktreeClientServices, payload: IsolatedTargetLocation, isActive?: () => boolean): Promise<void>;
|
|
120
121
|
/**
|
|
@@ -128,4 +129,4 @@ export declare function openAuthorizedWorktreeTarget(adapter: Pick<WorktreeConso
|
|
|
128
129
|
/** Prefill a visible recovery request. This never invokes command/send/followup. */
|
|
129
130
|
export declare function prefillSessionDraft(services: WorktreeClientServices, sessionId: string, text: string): boolean;
|
|
130
131
|
/** Submit an exact review-card acceptance as an explicit user command. */
|
|
131
|
-
export declare function finalizeCurrentSession(services: Pick<WorktreeClientServices, 'sessions'>, reviewId: string, revision: number, retention: 'cleanup' | 'retain_24h' | 'retain_3d' | 'retain_manual'): Promise<void>;
|
|
132
|
+
export declare function finalizeCurrentSession(services: Pick<WorktreeClientServices, 'sessions' | 'locale'>, reviewId: string, revision: number, retention: 'cleanup' | 'retain_24h' | 'retain_3d' | 'retain_manual'): Promise<void>;
|
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,55 @@ 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
|
-
create: request => invoke('create',
|
|
48
|
-
inspect: request => invoke('inspect',
|
|
49
|
-
reviewDiff: request => invoke('reviewDiff',
|
|
50
|
-
preflight: request => invoke('preflight',
|
|
51
|
-
previewRecoveryPreflight: request => invoke('previewRecoveryPreflight',
|
|
52
|
-
preparePreviewRecoveryAnalysis: request => invoke('preparePreviewRecoveryAnalysis',
|
|
53
|
-
createPreviewRecoveryHandoff: request => invoke('createPreviewRecoveryHandoff',
|
|
54
|
-
preview: request => invoke('preview',
|
|
55
|
-
checkpoint: request => invoke('checkpoint',
|
|
56
|
-
resumeRevision: request => invoke('resumeRevision',
|
|
57
|
-
? remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.conflictContinuation)
|
|
58
|
-
: remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId)),
|
|
59
|
-
prepareReviewRegeneration: request => invoke('prepareReviewRegeneration',
|
|
60
|
-
rollbackPreview: request => invoke('rollbackPreview',
|
|
61
|
-
discard: request => invoke('discard',
|
|
62
|
-
finalize: request => invoke('finalize',
|
|
63
|
-
finalizePreview: request => invoke('finalizePreview',
|
|
64
|
-
setRetention: request => invoke('setRetention',
|
|
65
|
-
retryCleanup: request => invoke('retryCleanup',
|
|
66
|
-
beginNextIteration: request => invoke('beginNextIteration',
|
|
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
|
+
create: request => invoke('create', locale => remote.create(request.sourceSessionId, locale)),
|
|
51
|
+
inspect: request => invoke('inspect', locale => remote.inspect(request.sessionId, request.checkoutId, locale)),
|
|
52
|
+
reviewDiff: request => invoke('reviewDiff', locale => remote.reviewDiff(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
53
|
+
preflight: request => invoke('preflight', locale => remote.preflight(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
54
|
+
previewRecoveryPreflight: request => invoke('previewRecoveryPreflight', locale => remote.previewRecoveryPreflight(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, locale)),
|
|
55
|
+
preparePreviewRecoveryAnalysis: request => invoke('preparePreviewRecoveryAnalysis', locale => remote.preparePreviewRecoveryAnalysis(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, request.recoveryProof, locale)),
|
|
56
|
+
createPreviewRecoveryHandoff: request => invoke('createPreviewRecoveryHandoff', locale => remote.createPreviewRecoveryHandoff(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedPreviewId, request.recoveryProof, locale)),
|
|
57
|
+
preview: request => invoke('preview', locale => remote.preview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
58
|
+
checkpoint: request => invoke('checkpoint', locale => remote.checkpoint(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.expectedGeneration, request.requestId, request.commitMessage, locale)),
|
|
59
|
+
resumeRevision: request => invoke('resumeRevision', locale => request.conflictContinuation
|
|
60
|
+
? remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.conflictContinuation, locale)
|
|
61
|
+
: remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, undefined, locale)),
|
|
62
|
+
prepareReviewRegeneration: request => invoke('prepareReviewRegeneration', locale => remote.prepareReviewRegeneration(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, locale)),
|
|
63
|
+
rollbackPreview: request => invoke('rollbackPreview', locale => remote.rollbackPreview(request.sessionId, request.checkoutId, request.expectedRevision, request.resumeRevision, request.recoveryProof, locale)),
|
|
64
|
+
discard: request => invoke('discard', locale => remote.discard(request.sessionId, request.checkoutId, request.expectedRevision, request.confirmDirty, request.rollbackPreview, locale)),
|
|
65
|
+
finalize: request => invoke('finalize', locale => remote.finalize(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention, locale)),
|
|
66
|
+
finalizePreview: request => invoke('finalizePreview', locale => remote.finalizePreview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention, request.recoveryProof, locale)),
|
|
67
|
+
setRetention: request => invoke('setRetention', locale => remote.setRetention(request.sessionId, request.checkoutId, request.expectedRevision, request.retention, locale)),
|
|
68
|
+
retryCleanup: request => invoke('retryCleanup', locale => remote.retryCleanup(request.sessionId, request.checkoutId, request.expectedRevision, locale)),
|
|
69
|
+
beginNextIteration: request => invoke('beginNextIteration', locale => remote.beginNextIteration(request.sessionId, request.checkoutId, request.expectedRevision, locale)),
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
72
|
//# 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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAiB,MAAM,oBAAoB,CAAA;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAiBpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAA;AAElF,SAAS,SAAS,CAAI,OAAe;IACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,EAAE,CAAA;AACzE,CAAC;AAED,SAAS,SAAS,CAAI,MAAc,EAAE,MAAgB;IACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAA;AAC5I,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAA;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACnG,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAChC,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAAyB,EAAE,cAA8B,GAAG,EAAE,CAAC,IAAI;IACpH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,4BAA4B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAE5G,KAAK,UAAU,MAAM,CAAI,MAAc,EAAE,IAA4E;QACnH,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAA;QAC/C,IAAI,OAAgD,CAAA;QACpD,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1F,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxH,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACtH,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC1E,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAA8B,CAAA;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,OAAO;QACL,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAkC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3H,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAiC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1H,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAA8B,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAChK,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAgC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC5H,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAiC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9I,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAoC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9M,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAmC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC1M,wBAAwB,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkD,0BAA0B,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACjS,8BAA8B,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,gCAAgC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1T,4BAA4B,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAsD,8BAA8B,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACxU,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACnM,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAClR,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB;YACzH,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;YACxJ,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxI,yBAAyB,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,2BAA2B,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzP,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAChP,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxN,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChP,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5R,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3M,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACxL,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAkC,oBAAoB,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KAC3M,CAAA;AACH,CAAC"}
|
|
@@ -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,12 +18,13 @@ 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
|
-
//
|
|
23
|
-
//
|
|
26
|
+
// Host lifecycle selects this replacement only while the plugin is active.
|
|
27
|
+
// Provide Workspace before uiConversation to avoid a Client boot cycle.
|
|
24
28
|
registerManagedWorkspaceSidebar(ctx, adapter);
|
|
25
29
|
// The remaining Worktree views consume conversation/connection. Keeping
|
|
26
30
|
// them in a child fiber prevents those services from blocking uiWorkspace.
|
|
@@ -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>;
|