dsh-git-worktree 0.1.2 → 0.3.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 +93 -0
- package/LICENSE +21 -21
- package/README.md +187 -43
- package/README.zh.md +187 -41
- package/cordis.patch.yml +7 -7
- package/lib/adapters/lookup.d.ts +4 -2
- package/lib/adapters/lookup.js +31 -3
- package/lib/adapters/lookup.js.map +1 -1
- package/lib/adapters/registry.js +41 -0
- package/lib/adapters/registry.js.map +1 -1
- package/lib/adapters/safe-file.js +34 -4
- package/lib/adapters/safe-file.js.map +1 -1
- package/lib/client/WorktreeCreateRow.d.ts +7 -0
- package/lib/client/WorktreeCreateRow.js +26 -0
- package/lib/client/WorktreeCreateRow.js.map +1 -0
- package/lib/client/WorktreeReviewRow.d.ts +11 -0
- package/lib/client/WorktreeReviewRow.js +67 -0
- package/lib/client/WorktreeReviewRow.js.map +1 -0
- package/lib/client/actions.d.ts +86 -0
- package/lib/client/actions.js +35 -0
- package/lib/client/actions.js.map +1 -0
- package/lib/client/console-remote/adapter.d.ts +3 -0
- package/lib/client/console-remote/adapter.js +61 -0
- package/lib/client/console-remote/adapter.js.map +1 -0
- package/lib/client/console-remote/index.d.ts +18 -0
- package/lib/client/console-remote/index.js +17 -0
- package/lib/client/console-remote/index.js.map +1 -0
- package/lib/client/index.d.ts +17 -0
- package/lib/client/index.js +44 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client/model.d.ts +68 -0
- package/lib/client/model.js +127 -0
- package/lib/client/model.js.map +1 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.d.ts +16 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +128 -0
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -0
- package/lib/client/pre-session/controller.d.ts +42 -0
- package/lib/client/pre-session/controller.js +149 -0
- package/lib/client/pre-session/controller.js.map +1 -0
- package/lib/client/pre-session/index.d.ts +15 -0
- package/lib/client/pre-session/index.js +16 -0
- package/lib/client/pre-session/index.js.map +1 -0
- package/lib/client/review-console/ReviewActions.d.ts +15 -0
- package/lib/client/review-console/ReviewActions.js +234 -0
- package/lib/client/review-console/ReviewActions.js.map +1 -0
- package/lib/client/review-console/WorktreeReviewPanel.d.ts +20 -0
- package/lib/client/review-console/WorktreeReviewPanel.js +75 -0
- package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -0
- package/lib/client/review-console/index.d.ts +8 -0
- package/lib/client/review-console/index.js +22 -0
- package/lib/client/review-console/index.js.map +1 -0
- package/lib/client/review-console/review-console.styles.d.ts +1 -0
- package/lib/client/review-console/review-console.styles.js +81 -0
- package/lib/client/review-console/review-console.styles.js.map +1 -0
- package/lib/client/review-console/status-events.d.ts +3 -0
- package/lib/client/review-console/status-events.js +6 -0
- package/lib/client/review-console/status-events.js.map +1 -0
- package/lib/client/styles.d.ts +1 -0
- package/lib/client/styles.js +78 -0
- package/lib/client/styles.js.map +1 -0
- package/lib/client/target-console/TargetStatusAction.d.ts +7 -0
- package/lib/client/target-console/TargetStatusAction.js +46 -0
- package/lib/client/target-console/TargetStatusAction.js.map +1 -0
- package/lib/client/target-console/WorktreeConsoleView.d.ts +9 -0
- package/lib/client/target-console/WorktreeConsoleView.js +362 -0
- package/lib/client/target-console/WorktreeConsoleView.js.map +1 -0
- package/lib/client/target-console/WorktreeReviewStatus.d.ts +9 -0
- package/lib/client/target-console/WorktreeReviewStatus.js +125 -0
- package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -0
- package/lib/client/target-console/index.d.ts +14 -0
- package/lib/client/target-console/index.js +23 -0
- package/lib/client/target-console/index.js.map +1 -0
- package/lib/client/target-console/target-console.styles.d.ts +1 -0
- package/lib/client/target-console/target-console.styles.js +130 -0
- package/lib/client/target-console/target-console.styles.js.map +1 -0
- package/lib/client.js +6902 -0
- package/lib/commands.d.ts +2 -4
- package/lib/commands.js +69 -28
- package/lib/commands.js.map +1 -1
- package/lib/console-contract.d.ts +253 -0
- package/lib/console-contract.js +86 -0
- package/lib/console-contract.js.map +1 -0
- package/lib/console-host/control-plane.d.ts +31 -0
- package/lib/console-host/control-plane.js +502 -0
- package/lib/console-host/control-plane.js.map +1 -0
- package/lib/console-host/errors.d.ts +6 -0
- package/lib/console-host/errors.js +31 -0
- package/lib/console-host/errors.js.map +1 -0
- package/lib/console-host/projection.d.ts +12 -0
- package/lib/console-host/projection.js +136 -0
- package/lib/console-host/projection.js.map +1 -0
- package/lib/console-host/review-diff.d.ts +18 -0
- package/lib/console-host/review-diff.js +176 -0
- package/lib/console-host/review-diff.js.map +1 -0
- package/lib/console-host/service.d.ts +26 -0
- package/lib/console-host/service.js +143 -0
- package/lib/console-host/service.js.map +1 -0
- package/lib/console-remote/descriptors.d.ts +3 -0
- package/lib/console-remote/descriptors.js +105 -0
- package/lib/console-remote/descriptors.js.map +1 -0
- package/lib/console-remote/remote.d.ts +29 -0
- package/lib/console-remote/remote.js +4 -0
- package/lib/console-remote/remote.js.map +1 -0
- package/lib/console-remote/schemas.d.ts +29 -0
- package/lib/console-remote/schemas.js +145 -0
- package/lib/console-remote/schemas.js.map +1 -0
- package/lib/console-remote/typert.d.ts +3 -0
- package/lib/console-remote/typert.js +14 -0
- package/lib/console-remote/typert.js.map +1 -0
- package/lib/index.d.ts +26 -8
- package/lib/index.js +28 -10
- package/lib/index.js.map +1 -1
- package/lib/managed-worktree-path.d.ts +14 -13
- package/lib/managed-worktree-path.js +32 -22
- package/lib/managed-worktree-path.js.map +1 -1
- package/lib/ports.d.ts +39 -1
- package/lib/session-checkout-apply.d.ts +54 -1
- package/lib/session-checkout-apply.js +318 -28
- package/lib/session-checkout-apply.js.map +1 -1
- package/lib/session-checkout-module.js +1098 -36
- package/lib/session-checkout-module.js.map +1 -1
- package/lib/session-target-context.d.ts +6 -0
- package/lib/session-target-context.js +16 -0
- package/lib/session-target-context.js.map +1 -0
- package/lib/tools.d.ts +6 -6
- package/lib/tools.js +107 -218
- package/lib/tools.js.map +1 -1
- package/lib/types.d.ts +57 -11
- package/lib/types.js +6 -6
- package/lib/types.js.map +1 -1
- package/package.json +116 -69
- package/scripts/check-publish.mjs +193 -0
- package/scripts/clean-lib.mjs +7 -0
- package/scripts/dev-dsh-lib.mjs +509 -0
- package/scripts/dev-dsh.mjs +95 -0
- package/scripts/dsh-source-runner.mjs +14 -0
package/lib/adapters/lookup.js
CHANGED
|
@@ -2,24 +2,43 @@
|
|
|
2
2
|
* DSH lookup adapter: maps sessions and projects onto the harness's
|
|
3
3
|
* `workspaceRegistry` service (retrieved dynamically, like the ecosystem's
|
|
4
4
|
* plugins, because the published package version lags the rc.6 runtime). A
|
|
5
|
-
* session's project is found by scanning workspace session accounts; a
|
|
5
|
+
* session's project is found by scanning workspace session accounts; when a
|
|
6
|
+
* cleaned immutable cwd makes Harness filter a still-live Session from that
|
|
7
|
+
* projection, the immutable live header may restore the exact mapping. A
|
|
6
8
|
* project record maps to a workspace's `id`/`title`/`path`. Missing service or
|
|
7
9
|
* records degrade to `undefined`, which the state machine treats as
|
|
8
10
|
* recovery/orphan facts rather than failures.
|
|
9
11
|
* @module dsh-git-worktree/adapters/lookup
|
|
10
12
|
*/
|
|
13
|
+
import { resolve } from 'node:path';
|
|
11
14
|
function isWorkspaceRegistryLike(value) {
|
|
12
15
|
return Boolean(value)
|
|
13
16
|
&& typeof value === 'object'
|
|
14
17
|
&& typeof value.list === 'function'
|
|
15
18
|
&& typeof value.get === 'function';
|
|
16
19
|
}
|
|
17
|
-
|
|
20
|
+
function isSessionStoreLike(value) {
|
|
21
|
+
return Boolean(value)
|
|
22
|
+
&& typeof value === 'object'
|
|
23
|
+
&& typeof value.get === 'function';
|
|
24
|
+
}
|
|
25
|
+
function sameResolvedPath(left, right) {
|
|
26
|
+
const normalizedLeft = resolve(left);
|
|
27
|
+
const normalizedRight = resolve(right);
|
|
28
|
+
return process.platform === 'win32'
|
|
29
|
+
? normalizedLeft.toLowerCase() === normalizedRight.toLowerCase()
|
|
30
|
+
: normalizedLeft === normalizedRight;
|
|
31
|
+
}
|
|
32
|
+
/** Build the lookup port over Harness workspace and live-session projections. */
|
|
18
33
|
export function createDshLookupPort(ctx) {
|
|
19
34
|
const registry = () => {
|
|
20
35
|
const candidate = ctx.get('workspaceRegistry');
|
|
21
36
|
return isWorkspaceRegistryLike(candidate) ? candidate : undefined;
|
|
22
37
|
};
|
|
38
|
+
const sessions = () => {
|
|
39
|
+
const candidate = ctx.get('sessions');
|
|
40
|
+
return isSessionStoreLike(candidate) ? candidate : undefined;
|
|
41
|
+
};
|
|
23
42
|
return {
|
|
24
43
|
getSession: (sessionId) => {
|
|
25
44
|
const workspaces = registry()?.list() ?? [];
|
|
@@ -28,7 +47,16 @@ export function createDshLookupPort(ctx) {
|
|
|
28
47
|
return { id: sessionId, projectId: workspace.id };
|
|
29
48
|
}
|
|
30
49
|
}
|
|
31
|
-
|
|
50
|
+
// Harness filters Workspace.sessionIds when an immutable cwd no longer
|
|
51
|
+
// resolves. A cleaned delivered Session can still be live and retain that
|
|
52
|
+
// exact cwd in its header, so recover only this authenticated live case.
|
|
53
|
+
const liveCwd = sessions()?.get(sessionId)?.header?.cwd;
|
|
54
|
+
if (typeof liveCwd !== 'string')
|
|
55
|
+
return undefined;
|
|
56
|
+
const matches = workspaces.filter(workspace => sameResolvedPath(workspace.path, liveCwd));
|
|
57
|
+
return matches.length === 1
|
|
58
|
+
? { id: sessionId, projectId: matches[0].id }
|
|
59
|
+
: undefined;
|
|
32
60
|
},
|
|
33
61
|
getProject: (projectId) => {
|
|
34
62
|
const workspace = registry()?.get(projectId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/adapters/lookup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/adapters/lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BnC,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,OAAO,CAAC,KAAK,CAAC;WAChB,OAAO,KAAK,KAAK,QAAQ;WACzB,OAAQ,KAA+B,CAAC,IAAI,KAAK,UAAU;WAC3D,OAAQ,KAA+B,CAAC,GAAG,KAAK,UAAU,CAAA;AACjE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC;WAChB,OAAO,KAAK,KAAK,QAAQ;WACzB,OAAQ,KAA0B,CAAC,GAAG,KAAK,UAAU,CAAA;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAa;IACnD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACtC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,WAAW,EAAE;QAChE,CAAC,CAAC,cAAc,KAAK,eAAe,CAAA;AACxC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,QAAQ,GAAG,GAAsC,EAAE;QACvD,MAAM,SAAS,GAAY,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QACvD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IACnE,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,GAAiC,EAAE;QAClD,MAAM,SAAS,GAAY,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC9C,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9D,CAAC,CAAA;IAED,OAAO;QACL,UAAU,EAAE,CAAC,SAAS,EAA4C,EAAE;YAClE,MAAM,UAAU,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAA;gBACnD,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,0EAA0E;YAC1E,yEAAyE;YACzE,MAAM,OAAO,GAAG,QAAQ,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAA;YACvD,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YACjD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;YACzF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;gBACzB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE;gBAC9C,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;QACD,UAAU,EAAE,CAAC,SAAS,EAA4C,EAAE;YAClE,MAAM,SAAS,GAAG,QAAQ,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;YAC5C,OAAO,SAAS;gBACd,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;gBACnE,CAAC,CAAC,SAAS,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/lib/adapters/registry.js
CHANGED
|
@@ -60,6 +60,27 @@ function isReview(value) {
|
|
|
60
60
|
&& typeof value.isolatedFingerprint === 'string'
|
|
61
61
|
&& typeof value.isolatedHeadOid === 'string';
|
|
62
62
|
}
|
|
63
|
+
function isPreviewReceipt(value) {
|
|
64
|
+
return isRecord(value)
|
|
65
|
+
&& typeof value.previewId === 'string'
|
|
66
|
+
&& typeof value.reviewId === 'string'
|
|
67
|
+
&& typeof value.iteration === 'number'
|
|
68
|
+
&& typeof value.previewedAt === 'number'
|
|
69
|
+
&& typeof value.configuredBaseOid === 'string'
|
|
70
|
+
&& typeof value.effectiveBaseOid === 'string'
|
|
71
|
+
&& (value.baseStrategy === 'recorded_base' || value.baseStrategy === 'isolated_contains_local_head' || value.baseStrategy === 'local_contains_isolated_head')
|
|
72
|
+
&& typeof value.localHeadOid === 'string'
|
|
73
|
+
&& (value.localHeadRef === null || typeof value.localHeadRef === 'string')
|
|
74
|
+
&& typeof value.localFingerprintBefore === 'string'
|
|
75
|
+
&& typeof value.localFingerprintPreview === 'string'
|
|
76
|
+
&& typeof value.localWorkingTreeOid === 'string'
|
|
77
|
+
&& typeof value.localIndexTreeOid === 'string'
|
|
78
|
+
&& typeof value.previewWorkingTreeOid === 'string'
|
|
79
|
+
&& typeof value.isolatedHeadOid === 'string'
|
|
80
|
+
&& typeof value.isolatedFingerprint === 'string'
|
|
81
|
+
&& typeof value.isolatedSnapshotOid === 'string'
|
|
82
|
+
&& isStringArray(value.changedFiles);
|
|
83
|
+
}
|
|
63
84
|
function isDeliveryProof(value) {
|
|
64
85
|
return isRecord(value)
|
|
65
86
|
&& (value.localBranch === null || typeof value.localBranch === 'string')
|
|
@@ -74,6 +95,15 @@ function isDelivery(value) {
|
|
|
74
95
|
return typeof value.iteration === 'number';
|
|
75
96
|
if (value.state === 'ready_for_review')
|
|
76
97
|
return isReview(value.review);
|
|
98
|
+
if (value.state === 'preview_active')
|
|
99
|
+
return isReview(value.review) && isPreviewReceipt(value.preview);
|
|
100
|
+
if (value.state === 'preview_detached') {
|
|
101
|
+
return isReview(value.review)
|
|
102
|
+
&& isPreviewReceipt(value.preview)
|
|
103
|
+
&& typeof value.detachedAt === 'number'
|
|
104
|
+
&& (value.reason === 'stale_local' || value.reason === 'preview_modified')
|
|
105
|
+
&& (value.attemptedAction === 'rollback_preview' || value.attemptedAction === 'finalize_preview' || value.attemptedAction === 'discard');
|
|
106
|
+
}
|
|
77
107
|
if (value.state === 'finalized') {
|
|
78
108
|
return isReview(value.review)
|
|
79
109
|
&& (value.commitOid === null || typeof value.commitOid === 'string')
|
|
@@ -113,15 +143,23 @@ function isJournal(value) {
|
|
|
113
143
|
if (value.operation === 'create')
|
|
114
144
|
return value.step === 'creating_worktree';
|
|
115
145
|
const validOperation = value.operation === 'apply'
|
|
146
|
+
|| value.operation === 'preview'
|
|
147
|
+
|| value.operation === 'rollback_preview'
|
|
116
148
|
|| value.operation === 'finish'
|
|
149
|
+
|| value.operation === 'finalize_preview'
|
|
117
150
|
|| value.operation === 'cleanup';
|
|
118
151
|
const validStep = value.step === 'planning'
|
|
152
|
+
|| value.step === 'artifacts_retained'
|
|
119
153
|
|| value.step === 'writing_local'
|
|
154
|
+
|| value.step === 'updating_ref'
|
|
155
|
+
|| value.step === 'replacing_index'
|
|
120
156
|
|| value.step === 'removing_worktree';
|
|
121
157
|
return validOperation
|
|
122
158
|
&& validStep
|
|
123
159
|
&& (value.baseOid === undefined || typeof value.baseOid === 'string')
|
|
124
160
|
&& (value.planRevision === undefined || typeof value.planRevision === 'string')
|
|
161
|
+
&& (value.previewId === undefined || typeof value.previewId === 'string')
|
|
162
|
+
&& (value.reviewId === undefined || typeof value.reviewId === 'string')
|
|
125
163
|
&& (value.localFingerprint === undefined || typeof value.localFingerprint === 'string')
|
|
126
164
|
&& (value.isolatedFingerprint === undefined || typeof value.isolatedFingerprint === 'string')
|
|
127
165
|
&& (value.effectiveBaseOid === undefined || typeof value.effectiveBaseOid === 'string')
|
|
@@ -130,14 +168,17 @@ function isJournal(value) {
|
|
|
130
168
|
&& (value.isolatedHeadOid === undefined || typeof value.isolatedHeadOid === 'string')
|
|
131
169
|
&& (value.commitOid === undefined || typeof value.commitOid === 'string')
|
|
132
170
|
&& (value.retention === undefined || value.retention === 'cleanup' || value.retention === 'retain_24h' || value.retention === 'retain_3d' || value.retention === 'retain_manual')
|
|
171
|
+
&& (value.resumeRevision === undefined || typeof value.resumeRevision === 'boolean')
|
|
133
172
|
&& (value.changedFiles === undefined || isStringArray(value.changedFiles));
|
|
134
173
|
}
|
|
135
174
|
function isManagedCheckout(value) {
|
|
136
175
|
return isRecord(value)
|
|
137
176
|
&& typeof value.checkoutId === 'string'
|
|
177
|
+
&& (value.predecessorCheckoutId === undefined || typeof value.predecessorCheckoutId === 'string')
|
|
138
178
|
&& typeof value.projectId === 'string'
|
|
139
179
|
&& typeof value.projectName === 'string'
|
|
140
180
|
&& typeof value.ownerSessionId === 'string'
|
|
181
|
+
&& (value.sourceSessionId === undefined || typeof value.sourceSessionId === 'string')
|
|
141
182
|
&& typeof value.localRoot === 'string'
|
|
142
183
|
&& typeof value.managedRoot === 'string'
|
|
143
184
|
&& typeof value.managedGitRoot === 'string'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,36 @@
|
|
|
6
6
|
* - 读取:主文件 → .tmp 残留 → .bak 回退,多层容错
|
|
7
7
|
*/
|
|
8
8
|
import { writeFileSync, renameSync, existsSync, copyFileSync, readFileSync, unlinkSync } from 'node:fs';
|
|
9
|
+
const RETRYABLE_RENAME_CODES = new Set(process.platform === 'win32'
|
|
10
|
+
? ['EBUSY', 'EPERM', 'EACCES', 'ENOTEMPTY']
|
|
11
|
+
: ['EBUSY', 'ENOTEMPTY']);
|
|
12
|
+
function sleepSync(milliseconds) {
|
|
13
|
+
try {
|
|
14
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, milliseconds);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
const startedAt = Date.now();
|
|
18
|
+
while (Date.now() - startedAt < milliseconds) { /* fallback for runtimes without SharedArrayBuffer */ }
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Preserve atomic rename semantics while tolerating transient Windows file-handle races. */
|
|
22
|
+
function renameAtomicWithRetry(source, target, maxAttempts = 5) {
|
|
23
|
+
let lastError;
|
|
24
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
25
|
+
try {
|
|
26
|
+
renameSync(source, target);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
lastError = error;
|
|
31
|
+
const code = error.code;
|
|
32
|
+
if (!code || !RETRYABLE_RENAME_CODES.has(code) || attempt === maxAttempts)
|
|
33
|
+
break;
|
|
34
|
+
sleepSync(20 * 2 ** (attempt - 1));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
throw lastError;
|
|
38
|
+
}
|
|
9
39
|
/**
|
|
10
40
|
* 原子写入 JSON 文件:write-to-temp → rename
|
|
11
41
|
* 写入前自动保留 .bak 备份
|
|
@@ -24,14 +54,14 @@ export function writeJsonFileAtomic(filePath, data, skipBackup = false) {
|
|
|
24
54
|
}
|
|
25
55
|
// 写入临时文件
|
|
26
56
|
writeFileSync(tmpPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
27
|
-
//
|
|
28
|
-
|
|
57
|
+
// 原子重命名;Windows 短暂文件句柄占用时保持原子语义并有限重试。
|
|
58
|
+
renameAtomicWithRetry(tmpPath, filePath);
|
|
29
59
|
}
|
|
30
60
|
/** 原子重写文本文件(用于 JSONL 会话等非单个 JSON 文档)。 */
|
|
31
61
|
export function writeTextFileAtomic(filePath, content) {
|
|
32
62
|
const tmpPath = filePath + '.tmp';
|
|
33
63
|
writeFileSync(tmpPath, content, 'utf-8');
|
|
34
|
-
|
|
64
|
+
renameAtomicWithRetry(tmpPath, filePath);
|
|
35
65
|
}
|
|
36
66
|
/**
|
|
37
67
|
* 安全读取 JSON 索引文件
|
|
@@ -59,7 +89,7 @@ export function readJsonFileSafe(filePath) {
|
|
|
59
89
|
if (raw.trim().length > 0) {
|
|
60
90
|
const parsed = JSON.parse(raw);
|
|
61
91
|
// .tmp 有效 → 提升为主文件
|
|
62
|
-
|
|
92
|
+
renameAtomicWithRetry(tmpPath, filePath);
|
|
63
93
|
console.log(`[数据恢复] 从 .tmp 文件恢复: ${filePath}`);
|
|
64
94
|
return parsed;
|
|
65
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-file.js","sourceRoot":"","sources":["../../src/adapters/safe-file.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvG;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,IAAY,EAAE,UAAU,GAAG,KAAK;IACpF,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IACjC,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAEjC,kBAAkB;IAClB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED,SAAS;IACT,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAE9D,
|
|
1
|
+
{"version":3,"file":"safe-file.js","sourceRoot":"","sources":["../../src/adapters/safe-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type WorktreeClientServices } from './actions.js';
|
|
2
|
+
import { type ToolCallViewPropsLike } from './model.js';
|
|
3
|
+
interface Props extends ToolCallViewPropsLike {
|
|
4
|
+
services: WorktreeClientServices;
|
|
5
|
+
}
|
|
6
|
+
export declare function WorktreeCreateRow({ block, services }: Props): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { openIsolatedTarget } from './actions.js';
|
|
4
|
+
import { parseCreateTool } from './model.js';
|
|
5
|
+
export function WorktreeCreateRow({ block, services }) {
|
|
6
|
+
const model = parseCreateTool(block);
|
|
7
|
+
const [openState, setOpenState] = useState('idle');
|
|
8
|
+
const [openError, setOpenError] = useState(null);
|
|
9
|
+
const payload = model.payload;
|
|
10
|
+
const state = model.lifecycle === 'running' ? 'running' : model.lifecycle === 'ok' ? 'ok' : 'error';
|
|
11
|
+
const openTarget = async () => {
|
|
12
|
+
if (!payload || openState === 'opening')
|
|
13
|
+
return;
|
|
14
|
+
setOpenState('opening');
|
|
15
|
+
setOpenError(null);
|
|
16
|
+
try {
|
|
17
|
+
await openIsolatedTarget(services, payload);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
setOpenState('error');
|
|
21
|
+
setOpenError(error instanceof Error ? error.message : String(error));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return (_jsxs("section", { className: "dsh-wt-card", "data-tool": "worktree_create", "data-state": state, "aria-label": "\u9694\u79BB Session Target", children: [_jsxs("header", { className: "dsh-wt-head", children: [_jsx("span", { className: "dsh-wt-mark", "aria-hidden": true }), _jsx("strong", { className: "dsh-wt-title", children: "\u9694\u79BB Session Target" }), _jsx("span", { className: "dsh-wt-subtitle", children: model.lifecycle === 'running' ? '正在创建唯一 Worktree…' : payload ? '已就绪,等待打开' : '创建失败' })] }), payload ? (_jsxs("div", { className: "dsh-wt-body", children: [_jsxs("div", { className: "dsh-wt-grid", children: [_jsx("span", { className: "dsh-wt-label", children: "Checkout" }), _jsx("span", { className: "dsh-wt-value dsh-wt-code", children: payload.checkoutId }), _jsx("span", { className: "dsh-wt-label", children: "\u57FA\u7EBF" }), _jsx("span", { className: "dsh-wt-value dsh-wt-code", children: payload.currentOid.slice(0, 12) }), _jsx("span", { className: "dsh-wt-label", children: "\u5DE5\u4F5C\u533A" }), _jsx("button", { type: "button", className: "dsh-wt-value dsh-wt-code dsh-wt-path", onClick: () => void services.workspaces.openPath(payload.managedRoot), children: payload.managedRoot })] }), _jsxs("div", { className: "dsh-wt-actions", children: [_jsx("button", { type: "button", className: "dsh-wt-button dsh-wt-primary", disabled: openState === 'opening', onClick: () => void openTarget(), children: openState === 'opening' ? '正在打开…' : openState === 'error' ? '重试打开隔离会话' : '打开隔离会话' }), _jsx("span", { className: "dsh-wt-status", children: "\u5F53\u524D Local Session \u4E0D\u4F1A\u6539\u7ED1 cwd\u3002" })] }), openError ? _jsx("div", { className: "dsh-wt-error", role: "alert", children: openError }) : null] })) : model.error ? (_jsx("div", { className: "dsh-wt-body", children: _jsx("div", { className: "dsh-wt-error", role: "alert", children: model.error }) })) : null] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=WorktreeCreateRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorktreeCreateRow.js","sourceRoot":"","sources":["../../src/client/WorktreeCreateRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorktreeConsoleAdapter } from '../console-contract.js';
|
|
2
|
+
import type { WorktreeClientServices } from './actions.js';
|
|
3
|
+
import { type ToolCallViewPropsLike } from './model.js';
|
|
4
|
+
interface Props extends ToolCallViewPropsLike {
|
|
5
|
+
/** Kept for the current Client registrar and historical ToolView compatibility. */
|
|
6
|
+
services: WorktreeClientServices;
|
|
7
|
+
/** Optional live Remote seam; logged evidence remains replayable without it. */
|
|
8
|
+
adapter?: WorktreeConsoleAdapter;
|
|
9
|
+
}
|
|
10
|
+
export declare function WorktreeReviewRow({ block, sessionId, adapter }: Props): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { parseReviewTool } from './model.js';
|
|
4
|
+
import { requestWorktreeReviewRefresh } from './review-console/status-events.js';
|
|
5
|
+
import { WorktreeReviewPanel, } from './review-console/WorktreeReviewPanel.js';
|
|
6
|
+
export function WorktreeReviewRow({ block, sessionId, adapter }) {
|
|
7
|
+
const model = parseReviewTool(block);
|
|
8
|
+
const payload = model.payload;
|
|
9
|
+
const args = model.args;
|
|
10
|
+
const state = model.lifecycle === 'running' ? 'running' : model.lifecycle === 'ok' ? 'ok' : 'error';
|
|
11
|
+
const [liveTarget, setLiveTarget] = useState();
|
|
12
|
+
const [liveError, setLiveError] = useState(null);
|
|
13
|
+
const [refreshNonce, setRefreshNonce] = useState(0);
|
|
14
|
+
const review = payload && args ? {
|
|
15
|
+
reviewId: payload.reviewId,
|
|
16
|
+
revision: payload.revision,
|
|
17
|
+
iteration: payload.iteration,
|
|
18
|
+
preparedAt: 0,
|
|
19
|
+
summary: args.summary,
|
|
20
|
+
validationStatus: args.validationStatus,
|
|
21
|
+
...(args.validationSummary ? { validationSummary: args.validationSummary } : {}),
|
|
22
|
+
tests: args.tests,
|
|
23
|
+
changedFiles: payload.changedFiles,
|
|
24
|
+
suggestedCommitMessage: args.suggestedCommitMessage,
|
|
25
|
+
...(args.details ? { detailsMarkdown: args.details } : {}),
|
|
26
|
+
} : null;
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (payload && sessionId)
|
|
29
|
+
requestWorktreeReviewRefresh(sessionId);
|
|
30
|
+
}, [payload?.reviewId, payload?.revision, sessionId]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
setLiveTarget(undefined);
|
|
33
|
+
setLiveError(null);
|
|
34
|
+
if (!adapter || !sessionId || !payload)
|
|
35
|
+
return;
|
|
36
|
+
let active = true;
|
|
37
|
+
void adapter.current({ sessionId }).then(outcome => {
|
|
38
|
+
if (!active)
|
|
39
|
+
return;
|
|
40
|
+
if (outcome.ok)
|
|
41
|
+
setLiveTarget(outcome.value.target);
|
|
42
|
+
else
|
|
43
|
+
setLiveError(`${outcome.error.code}: ${outcome.error.message}`);
|
|
44
|
+
}, reason => {
|
|
45
|
+
if (active)
|
|
46
|
+
setLiveError(reason instanceof Error ? reason.message : String(reason));
|
|
47
|
+
});
|
|
48
|
+
return () => { active = false; };
|
|
49
|
+
}, [adapter, payload?.reviewId, payload?.revision, refreshNonce, sessionId]);
|
|
50
|
+
const identity = payload
|
|
51
|
+
&& sessionId
|
|
52
|
+
&& liveTarget?.checkoutId
|
|
53
|
+
? {
|
|
54
|
+
sessionId,
|
|
55
|
+
checkoutId: liveTarget.checkoutId,
|
|
56
|
+
expectedRevision: liveTarget.review?.reviewId === payload.reviewId ? liveTarget.revision : payload.revision,
|
|
57
|
+
expectedReviewId: payload.reviewId,
|
|
58
|
+
}
|
|
59
|
+
: undefined;
|
|
60
|
+
const unavailableMessage = liveError
|
|
61
|
+
? `实时 Worktree Console 不可用:${liveError}`
|
|
62
|
+
: adapter && sessionId
|
|
63
|
+
? '正在连接实时 Worktree Console;历史验收证据仍可查看。'
|
|
64
|
+
: '实时 Worktree Console 未连接;连接后即可执行验收操作。';
|
|
65
|
+
return (_jsxs("section", { className: "dsh-wt-card", "data-tool": "worktree_ready_for_review", "data-state": state, "aria-label": "Worktree \u5F85\u9A8C\u6536", children: [review ? (_jsx(WorktreeReviewPanel, { review: review, adapter: adapter, 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: "Worktree \u5F85\u9A8C\u6536" }), _jsx("span", { className: "dsh-wt-subtitle", children: model.lifecycle === 'running' ? '正在冻结验收快照…' : '验收信息不可用' })] })), model.error ? _jsx("div", { className: "dsh-wt-body", children: _jsx("div", { className: "dsh-wt-error", role: "alert", children: model.error }) }) : null] }));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=WorktreeReviewRow.js.map
|
|
@@ -0,0 +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,MAAM,mCAAmC,CAAA;AAChF,OAAO,EACL,mBAAmB,GAGpB,MAAM,yCAAyC,CAAA;AAShD,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAS;IACpE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;IACnG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,EAA4C,CAAA;IACxF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC/D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,MAAM,GAAkC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;QAC9D,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC,CAAC,CAAC,IAAI,CAAA;IAER,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,SAAS;YAAE,4BAA4B,CAAC,SAAS,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;YAAE,OAAM;QAC9C,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,CAAC,MAAM;gBAAE,OAAM;YACnB,IAAI,OAAO,CAAC,EAAE;gBAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;;gBAC9C,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC,EAAE,MAAM,CAAC,EAAE;YACV,IAAI,MAAM;gBAAE,YAAY,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,EAAE,GAAG,MAAM,GAAG,KAAK,CAAA,CAAC,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;IAE5E,MAAM,QAAQ,GAAuC,OAAO;WACvD,SAAS;WACT,UAAU,EAAE,UAAU;QACzB,CAAC,CAAC;YACE,SAAS;YACT,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,gBAAgB,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;YAC3G,gBAAgB,EAAE,OAAO,CAAC,QAAQ;SACnC;QACH,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,kBAAkB,GAAG,SAAS;QAClC,CAAC,CAAC,2BAA2B,SAAS,EAAE;QACxC,CAAC,CAAC,OAAO,IAAI,SAAS;YACpB,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,sCAAsC,CAAA;IAE5C,OAAO,CACL,mBAAS,SAAS,EAAC,aAAa,eAAW,2BAA2B,gBAAa,KAAK,gBAAa,6BAAc,aAChH,MAAM,CAAC,CAAC,CAAC,CACR,KAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU,EAClB,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EACpD,cAAc,EAAE,aAAa,GAC7B,CACH,CAAC,CAAC,CAAC,CACF,kBAAQ,SAAS,EAAC,aAAa,aAC7B,eAAM,SAAS,EAAC,aAAa,wBAAe,EAC5C,iBAAQ,SAAS,EAAC,cAAc,4CAAsB,EACtD,eAAM,SAAS,EAAC,iBAAiB,YAC9B,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GACnD,IACA,CACV,EACA,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,aAAa,YAAC,cAAK,SAAS,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,YAAE,KAAK,CAAC,KAAK,GAAO,GAAM,CAAC,CAAC,CAAC,IAAI,IAC/G,CACX,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/** Browser-side orchestration over Harness Workspace and Session runtime faces. */
|
|
2
|
+
export interface IsolatedTargetLocation {
|
|
3
|
+
managedRoot: string;
|
|
4
|
+
targetSessionId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SnapshotStore<T> {
|
|
7
|
+
getSnapshot(): T;
|
|
8
|
+
subscribe(listener: () => void): () => void;
|
|
9
|
+
}
|
|
10
|
+
export interface ClientSessionBinding {
|
|
11
|
+
/** Agent-scoped Client Context; present on real Harness bindings. */
|
|
12
|
+
ctx?: unknown;
|
|
13
|
+
session: {
|
|
14
|
+
command(line: string): Promise<{
|
|
15
|
+
ok: true;
|
|
16
|
+
value: {
|
|
17
|
+
matched: boolean;
|
|
18
|
+
};
|
|
19
|
+
} | {
|
|
20
|
+
ok: false;
|
|
21
|
+
error: {
|
|
22
|
+
code: string;
|
|
23
|
+
message: string;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface ClientSessions {
|
|
29
|
+
list: SnapshotStore<{
|
|
30
|
+
current?: string;
|
|
31
|
+
ids: string[];
|
|
32
|
+
byId: Record<string, unknown>;
|
|
33
|
+
}>;
|
|
34
|
+
/** Harness resolves only after the new Session is projected into list/binding. */
|
|
35
|
+
create(input: {
|
|
36
|
+
workspaceId: string;
|
|
37
|
+
sessionId: string;
|
|
38
|
+
}): Promise<string>;
|
|
39
|
+
open(sessionId: string): void;
|
|
40
|
+
binding(sessionId: string): ClientSessionBinding | undefined;
|
|
41
|
+
}
|
|
42
|
+
export interface ClientWorkspaces {
|
|
43
|
+
create(input: {
|
|
44
|
+
path: string;
|
|
45
|
+
}): Promise<{
|
|
46
|
+
workspaceId: string;
|
|
47
|
+
path: string;
|
|
48
|
+
}>;
|
|
49
|
+
openPath(path: string): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
export interface WorktreeClientServices {
|
|
52
|
+
sessions: ClientSessions;
|
|
53
|
+
workspaces: ClientWorkspaces;
|
|
54
|
+
}
|
|
55
|
+
export interface PreSessionInput {
|
|
56
|
+
setDraft(text: string): void;
|
|
57
|
+
addImages(ids: readonly string[]): boolean;
|
|
58
|
+
removeImage(id: string): void;
|
|
59
|
+
}
|
|
60
|
+
/** Additional public Harness faces used only by the blank-session preparation flow. */
|
|
61
|
+
export interface PreSessionWorktreeServices extends WorktreeClientServices {
|
|
62
|
+
sessions: ClientSessions;
|
|
63
|
+
workspaces: ClientWorkspaces & {
|
|
64
|
+
archiveSession(sessionId: string): Promise<void>;
|
|
65
|
+
delete(workspaceId: string): Promise<void>;
|
|
66
|
+
};
|
|
67
|
+
conversation: {
|
|
68
|
+
blocks: {
|
|
69
|
+
set(sessionId: string, block: {
|
|
70
|
+
reason: string;
|
|
71
|
+
} | undefined): void;
|
|
72
|
+
storeFor(sessionId: string): {
|
|
73
|
+
getSnapshot(): {
|
|
74
|
+
reason: string;
|
|
75
|
+
} | undefined;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
input: {
|
|
79
|
+
for(ctx: unknown): PreSessionInput;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Idempotently register the managed root, create the preallocated Session, and navigate. */
|
|
84
|
+
export declare function openIsolatedTarget(services: WorktreeClientServices, payload: IsolatedTargetLocation, isActive?: () => boolean): Promise<void>;
|
|
85
|
+
/** Submit an exact review-card acceptance as an explicit user command. */
|
|
86
|
+
export declare function finalizeCurrentSession(services: Pick<WorktreeClientServices, 'sessions'>, reviewId: string, revision: number, retention: 'cleanup' | 'retain_24h' | 'retain_3d' | 'retain_manual'): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Browser-side orchestration over Harness Workspace and Session runtime faces. */
|
|
2
|
+
/** Idempotently register the managed root, create the preallocated Session, and navigate. */
|
|
3
|
+
export async function openIsolatedTarget(services, payload, isActive = () => true) {
|
|
4
|
+
const workspace = await services.workspaces.create({ path: payload.managedRoot });
|
|
5
|
+
if (!isActive())
|
|
6
|
+
return;
|
|
7
|
+
if (workspace.path !== payload.managedRoot) {
|
|
8
|
+
throw new Error(`Harness 注册的工作目录与 Host 记录不一致:${workspace.path}`);
|
|
9
|
+
}
|
|
10
|
+
const sessionId = await services.sessions.create({
|
|
11
|
+
workspaceId: workspace.workspaceId,
|
|
12
|
+
sessionId: payload.targetSessionId,
|
|
13
|
+
});
|
|
14
|
+
if (sessionId !== payload.targetSessionId) {
|
|
15
|
+
throw new Error(`Harness 创建了非预期 Session ${sessionId};应为 ${payload.targetSessionId}`);
|
|
16
|
+
}
|
|
17
|
+
if (!isActive())
|
|
18
|
+
return;
|
|
19
|
+
services.sessions.open(sessionId);
|
|
20
|
+
}
|
|
21
|
+
/** Submit an exact review-card acceptance as an explicit user command. */
|
|
22
|
+
export async function finalizeCurrentSession(services, reviewId, revision, retention) {
|
|
23
|
+
const sessionId = services.sessions.list.getSnapshot().current;
|
|
24
|
+
if (!sessionId)
|
|
25
|
+
throw new Error('当前没有选中的 Session。');
|
|
26
|
+
const binding = services.sessions.binding(sessionId);
|
|
27
|
+
if (!binding)
|
|
28
|
+
throw new Error('当前 Session 尚未就绪。');
|
|
29
|
+
const result = await binding.session.command(`/worktree finalize ${reviewId} ${revision} ${retention}`);
|
|
30
|
+
if (!result.ok)
|
|
31
|
+
throw new Error(`Finalize command failed: ${result.error.code}: ${result.error.message}`);
|
|
32
|
+
if (!result.value.matched)
|
|
33
|
+
throw new Error('Host 未识别 /worktree 命令。');
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAqEnF,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgC,EAChC,OAA+B,EAC/B,WAA0B,GAAG,EAAE,CAAC,IAAI;IAEpC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACjF,IAAI,CAAC,QAAQ,EAAE;QAAE,OAAM;IACvB,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAClE,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/C,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,SAAS,EAAE,OAAO,CAAC,eAAe;KACnC,CAAC,CAAA;IACF,IAAI,SAAS,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,OAAO,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE;QAAE,OAAM;IACvB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACnC,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAkD,EAClD,QAAgB,EAChB,QAAgB,EAChB,SAAmE;IAEnE,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAA;IAC9D,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,QAAQ,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAA;IACvG,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACzG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { WORKTREE_CONSOLE_DESCRIPTORS } from '../../console-remote/descriptors.js';
|
|
2
|
+
function transport(message) {
|
|
3
|
+
return { ok: false, error: { code: 'transport_unavailable', message } };
|
|
4
|
+
}
|
|
5
|
+
function malformed(method) {
|
|
6
|
+
return { ok: false, error: { code: 'malformed_response', message: `Remote ${method} 返回了不符合 strict contract 的 payload` } };
|
|
7
|
+
}
|
|
8
|
+
function messageOf(value) {
|
|
9
|
+
if (value instanceof Error)
|
|
10
|
+
return value.message;
|
|
11
|
+
if (typeof value === 'object' && value !== null && 'message' in value)
|
|
12
|
+
return String(value.message);
|
|
13
|
+
return String(value);
|
|
14
|
+
}
|
|
15
|
+
function isCodecRejection(value) {
|
|
16
|
+
const message = messageOf(value);
|
|
17
|
+
return message.includes('rejected "') || message.includes('返回了不符合 strict contract');
|
|
18
|
+
}
|
|
19
|
+
export function createWorktreeConsoleRemoteAdapter(remote) {
|
|
20
|
+
const descriptors = new Map(WORKTREE_CONSOLE_DESCRIPTORS.map(descriptor => [descriptor.method, descriptor]));
|
|
21
|
+
async function invoke(method, call) {
|
|
22
|
+
let carrier;
|
|
23
|
+
try {
|
|
24
|
+
carrier = await call();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
return isCodecRejection(error) ? malformed(method) : transport(messageOf(error));
|
|
28
|
+
}
|
|
29
|
+
if (typeof carrier !== 'object' || carrier === null || typeof carrier.ok !== 'boolean')
|
|
30
|
+
return malformed(method);
|
|
31
|
+
if (!carrier.ok)
|
|
32
|
+
return isCodecRejection(carrier.error) ? malformed(method) : transport(carrier.error.message);
|
|
33
|
+
const descriptor = descriptors.get(method);
|
|
34
|
+
if (descriptor?.result.mode !== 'strict')
|
|
35
|
+
return malformed(method);
|
|
36
|
+
try {
|
|
37
|
+
return descriptor.result.schema.parse(carrier.value);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return malformed(method);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
current: request => invoke('current', () => remote.current(request.sessionId)),
|
|
45
|
+
list: request => invoke('list', () => remote.list(request.sessionId, request.needsAttention, request.includeDelivered)),
|
|
46
|
+
create: request => invoke('create', () => remote.create(request.sourceSessionId)),
|
|
47
|
+
inspect: request => invoke('inspect', () => remote.inspect(request.sessionId, request.checkoutId)),
|
|
48
|
+
reviewDiff: request => invoke('reviewDiff', () => remote.reviewDiff(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId)),
|
|
49
|
+
preflight: request => invoke('preflight', () => remote.preflight(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId)),
|
|
50
|
+
preview: request => invoke('preview', () => remote.preview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId)),
|
|
51
|
+
resumeRevision: request => invoke('resumeRevision', () => remote.resumeRevision(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId)),
|
|
52
|
+
rollbackPreview: request => invoke('rollbackPreview', () => remote.rollbackPreview(request.sessionId, request.checkoutId, request.expectedRevision, request.resumeRevision)),
|
|
53
|
+
discard: request => invoke('discard', () => remote.discard(request.sessionId, request.checkoutId, request.expectedRevision, request.confirmDirty, request.rollbackPreview)),
|
|
54
|
+
finalize: request => invoke('finalize', () => remote.finalize(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention)),
|
|
55
|
+
finalizePreview: request => invoke('finalizePreview', () => remote.finalizePreview(request.sessionId, request.checkoutId, request.expectedRevision, request.expectedReviewId, request.commitMessage, request.retention)),
|
|
56
|
+
setRetention: request => invoke('setRetention', () => remote.setRetention(request.sessionId, request.checkoutId, request.expectedRevision, request.retention)),
|
|
57
|
+
retryCleanup: request => invoke('retryCleanup', () => remote.retryCleanup(request.sessionId, request.checkoutId, request.expectedRevision)),
|
|
58
|
+
beginNextIteration: request => invoke('beginNextIteration', () => remote.beginNextIteration(request.sessionId, request.checkoutId, request.expectedRevision)),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=adapter.js.map
|