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.
Files changed (136) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/LICENSE +21 -21
  3. package/README.md +187 -43
  4. package/README.zh.md +187 -41
  5. package/cordis.patch.yml +7 -7
  6. package/lib/adapters/lookup.d.ts +4 -2
  7. package/lib/adapters/lookup.js +31 -3
  8. package/lib/adapters/lookup.js.map +1 -1
  9. package/lib/adapters/registry.js +41 -0
  10. package/lib/adapters/registry.js.map +1 -1
  11. package/lib/adapters/safe-file.js +34 -4
  12. package/lib/adapters/safe-file.js.map +1 -1
  13. package/lib/client/WorktreeCreateRow.d.ts +7 -0
  14. package/lib/client/WorktreeCreateRow.js +26 -0
  15. package/lib/client/WorktreeCreateRow.js.map +1 -0
  16. package/lib/client/WorktreeReviewRow.d.ts +11 -0
  17. package/lib/client/WorktreeReviewRow.js +67 -0
  18. package/lib/client/WorktreeReviewRow.js.map +1 -0
  19. package/lib/client/actions.d.ts +86 -0
  20. package/lib/client/actions.js +35 -0
  21. package/lib/client/actions.js.map +1 -0
  22. package/lib/client/console-remote/adapter.d.ts +3 -0
  23. package/lib/client/console-remote/adapter.js +61 -0
  24. package/lib/client/console-remote/adapter.js.map +1 -0
  25. package/lib/client/console-remote/index.d.ts +18 -0
  26. package/lib/client/console-remote/index.js +17 -0
  27. package/lib/client/console-remote/index.js.map +1 -0
  28. package/lib/client/index.d.ts +17 -0
  29. package/lib/client/index.js +44 -0
  30. package/lib/client/index.js.map +1 -0
  31. package/lib/client/model.d.ts +68 -0
  32. package/lib/client/model.js +127 -0
  33. package/lib/client/model.js.map +1 -0
  34. package/lib/client/pre-session/PreSessionWorktreeToggle.d.ts +16 -0
  35. package/lib/client/pre-session/PreSessionWorktreeToggle.js +128 -0
  36. package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -0
  37. package/lib/client/pre-session/controller.d.ts +42 -0
  38. package/lib/client/pre-session/controller.js +149 -0
  39. package/lib/client/pre-session/controller.js.map +1 -0
  40. package/lib/client/pre-session/index.d.ts +15 -0
  41. package/lib/client/pre-session/index.js +16 -0
  42. package/lib/client/pre-session/index.js.map +1 -0
  43. package/lib/client/review-console/ReviewActions.d.ts +15 -0
  44. package/lib/client/review-console/ReviewActions.js +234 -0
  45. package/lib/client/review-console/ReviewActions.js.map +1 -0
  46. package/lib/client/review-console/WorktreeReviewPanel.d.ts +20 -0
  47. package/lib/client/review-console/WorktreeReviewPanel.js +75 -0
  48. package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -0
  49. package/lib/client/review-console/index.d.ts +8 -0
  50. package/lib/client/review-console/index.js +22 -0
  51. package/lib/client/review-console/index.js.map +1 -0
  52. package/lib/client/review-console/review-console.styles.d.ts +1 -0
  53. package/lib/client/review-console/review-console.styles.js +81 -0
  54. package/lib/client/review-console/review-console.styles.js.map +1 -0
  55. package/lib/client/review-console/status-events.d.ts +3 -0
  56. package/lib/client/review-console/status-events.js +6 -0
  57. package/lib/client/review-console/status-events.js.map +1 -0
  58. package/lib/client/styles.d.ts +1 -0
  59. package/lib/client/styles.js +78 -0
  60. package/lib/client/styles.js.map +1 -0
  61. package/lib/client/target-console/TargetStatusAction.d.ts +7 -0
  62. package/lib/client/target-console/TargetStatusAction.js +46 -0
  63. package/lib/client/target-console/TargetStatusAction.js.map +1 -0
  64. package/lib/client/target-console/WorktreeConsoleView.d.ts +9 -0
  65. package/lib/client/target-console/WorktreeConsoleView.js +362 -0
  66. package/lib/client/target-console/WorktreeConsoleView.js.map +1 -0
  67. package/lib/client/target-console/WorktreeReviewStatus.d.ts +9 -0
  68. package/lib/client/target-console/WorktreeReviewStatus.js +125 -0
  69. package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -0
  70. package/lib/client/target-console/index.d.ts +14 -0
  71. package/lib/client/target-console/index.js +23 -0
  72. package/lib/client/target-console/index.js.map +1 -0
  73. package/lib/client/target-console/target-console.styles.d.ts +1 -0
  74. package/lib/client/target-console/target-console.styles.js +130 -0
  75. package/lib/client/target-console/target-console.styles.js.map +1 -0
  76. package/lib/client.js +6902 -0
  77. package/lib/commands.d.ts +2 -4
  78. package/lib/commands.js +69 -28
  79. package/lib/commands.js.map +1 -1
  80. package/lib/console-contract.d.ts +253 -0
  81. package/lib/console-contract.js +86 -0
  82. package/lib/console-contract.js.map +1 -0
  83. package/lib/console-host/control-plane.d.ts +31 -0
  84. package/lib/console-host/control-plane.js +502 -0
  85. package/lib/console-host/control-plane.js.map +1 -0
  86. package/lib/console-host/errors.d.ts +6 -0
  87. package/lib/console-host/errors.js +31 -0
  88. package/lib/console-host/errors.js.map +1 -0
  89. package/lib/console-host/projection.d.ts +12 -0
  90. package/lib/console-host/projection.js +136 -0
  91. package/lib/console-host/projection.js.map +1 -0
  92. package/lib/console-host/review-diff.d.ts +18 -0
  93. package/lib/console-host/review-diff.js +176 -0
  94. package/lib/console-host/review-diff.js.map +1 -0
  95. package/lib/console-host/service.d.ts +26 -0
  96. package/lib/console-host/service.js +143 -0
  97. package/lib/console-host/service.js.map +1 -0
  98. package/lib/console-remote/descriptors.d.ts +3 -0
  99. package/lib/console-remote/descriptors.js +105 -0
  100. package/lib/console-remote/descriptors.js.map +1 -0
  101. package/lib/console-remote/remote.d.ts +29 -0
  102. package/lib/console-remote/remote.js +4 -0
  103. package/lib/console-remote/remote.js.map +1 -0
  104. package/lib/console-remote/schemas.d.ts +29 -0
  105. package/lib/console-remote/schemas.js +145 -0
  106. package/lib/console-remote/schemas.js.map +1 -0
  107. package/lib/console-remote/typert.d.ts +3 -0
  108. package/lib/console-remote/typert.js +14 -0
  109. package/lib/console-remote/typert.js.map +1 -0
  110. package/lib/index.d.ts +26 -8
  111. package/lib/index.js +28 -10
  112. package/lib/index.js.map +1 -1
  113. package/lib/managed-worktree-path.d.ts +14 -13
  114. package/lib/managed-worktree-path.js +32 -22
  115. package/lib/managed-worktree-path.js.map +1 -1
  116. package/lib/ports.d.ts +39 -1
  117. package/lib/session-checkout-apply.d.ts +54 -1
  118. package/lib/session-checkout-apply.js +318 -28
  119. package/lib/session-checkout-apply.js.map +1 -1
  120. package/lib/session-checkout-module.js +1098 -36
  121. package/lib/session-checkout-module.js.map +1 -1
  122. package/lib/session-target-context.d.ts +6 -0
  123. package/lib/session-target-context.js +16 -0
  124. package/lib/session-target-context.js.map +1 -0
  125. package/lib/tools.d.ts +6 -6
  126. package/lib/tools.js +107 -218
  127. package/lib/tools.js.map +1 -1
  128. package/lib/types.d.ts +57 -11
  129. package/lib/types.js +6 -6
  130. package/lib/types.js.map +1 -1
  131. package/package.json +116 -69
  132. package/scripts/check-publish.mjs +193 -0
  133. package/scripts/clean-lib.mjs +7 -0
  134. package/scripts/dev-dsh-lib.mjs +509 -0
  135. package/scripts/dev-dsh.mjs +95 -0
  136. package/scripts/dsh-source-runner.mjs +14 -0
@@ -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
- /** Build the lookup port over the harness workspace registry (absent → all lookups miss). */
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
- return undefined;
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;;;;;;;;;GASG;AAqBH,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,6FAA6F;AAC7F,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;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;YACD,OAAO,SAAS,CAAA;QAClB,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"}
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/adapters/lookup.ts"],"names":[],"mappings":"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"}
@@ -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
- // 原子重命名(POSIX rename 是原子操作)
28
- renameSync(tmpPath, filePath);
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
- renameSync(tmpPath, filePath);
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
- renameSync(tmpPath, filePath);
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":"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"}
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,3 @@
1
+ import type { WorktreeConsoleAdapter } from '../../console-contract.js';
2
+ import type { GitWorktreeRemote } from '../../console-remote/remote.js';
3
+ export declare function createWorktreeConsoleRemoteAdapter(remote: GitWorktreeRemote): WorktreeConsoleAdapter;
@@ -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