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
package/lib/commands.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  /**
2
- * `/worktree` human command surface: create, list, apply, finish, discard,
3
- * remove. Commands run against the receiving agent's session like the tools,
4
- * but are user-initiated, so destructive verbs carry their own confirmation
5
- * semantics (dirty discard is the user's own command).
2
+ * `/worktree` human command surface. Destructive verbs are intentionally
3
+ * user-initiated; model tools stop at Ready for Review.
6
4
  * @module dsh-git-worktree/commands
7
5
  */
8
6
  import type { Context } from '@deepseek-ai/cordis';
package/lib/commands.js CHANGED
@@ -1,8 +1,6 @@
1
1
  /**
2
- * `/worktree` human command surface: create, list, apply, finish, discard,
3
- * remove. Commands run against the receiving agent's session like the tools,
4
- * but are user-initiated, so destructive verbs carry their own confirmation
5
- * semantics (dirty discard is the user's own command).
2
+ * `/worktree` human command surface. Destructive verbs are intentionally
3
+ * user-initiated; model tools stop at Ready for Review.
6
4
  * @module dsh-git-worktree/commands
7
5
  */
8
6
  import '@deepseek-ai/dsh-commands';
@@ -22,46 +20,86 @@ function sessionIdOf(agent) {
22
20
  throw new Error('`/worktree` 只能在 DSH Agent 会话中使用');
23
21
  return session.id;
24
22
  }
25
- const USAGE = 'Usage: /worktree create | list | apply | finish <message> | discard | remove <checkoutId>';
23
+ const RETENTIONS = new Set(['cleanup', 'retain_24h', 'retain_3d', 'retain_manual']);
24
+ const USAGE = 'Usage: /worktree status | list | continue | next | finalize [<reviewId> <revision>] [cleanup|retain_24h|retain_3d|retain_manual] | finish <message> | discard | remove <checkoutId>';
25
+ function finishedText(result) {
26
+ return `Finished: committed ${result.changedFiles.length} file(s) as ${result.commitOid?.slice(0, 7) ?? 'no-op'} (cleanup: ${result.cleanup}).`;
27
+ }
26
28
  /** Register the `/worktree` command. */
27
29
  export function registerWorktreeCommand(ctx, module) {
28
30
  ctx.commands.register({
29
31
  name: 'worktree',
30
- description: 'manage Domi-grade git worktrees (create / list / apply / finish / discard / remove)',
31
- input: { hint: 'create | list | apply | finish <message> | discard | remove <checkoutId>' },
32
+ description: 'inspect and explicitly accept managed worktree delivery',
33
+ input: { hint: 'status | list | continue | next | finalize [retention] | finish <message> | discard | remove <checkoutId>' },
32
34
  handler: async (invocation) => {
33
- const tokens = invocation.rawInput.trim().split(/\s+/u).filter(Boolean);
34
- const verb = tokens[0] ?? 'list';
35
+ const rawInput = invocation.rawInput.trim();
36
+ const tokens = rawInput.split(/\s+/u).filter(Boolean);
37
+ const verb = tokens[0] ?? 'status';
35
38
  const sessionId = sessionIdOf(invocation.agent);
36
39
  try {
37
40
  switch (verb) {
38
- case 'create': {
39
- const target = await module.bind(sessionId, { kind: 'isolated' });
40
- return { kind: 'success', text: `Worktree created:\n${targetText(target)}\n打开新会话并选择该工作区以在其中工作。` };
41
+ case 'status': {
42
+ return { kind: 'success', text: targetText(await module.inspect(sessionId)) };
41
43
  }
42
44
  case 'list': {
43
- const summaries = await module.listManagedWorktrees();
45
+ const summaries = await module.listManagedWorktreesForSession(sessionId);
44
46
  if (summaries.length === 0)
45
- return { kind: 'success', text: 'No managed worktrees.' };
47
+ return { kind: 'success', text: 'No managed worktrees visible to this Session.' };
46
48
  return {
47
49
  kind: 'success',
48
50
  text: summaries.map((summary) => (`${summary.checkoutId} ${summary.project.name} i${summary.iteration} ${summary.state}/${summary.phase} dirty=${summary.dirty}`)).join('\n'),
49
51
  };
50
52
  }
51
- case 'apply': {
53
+ case 'continue': {
54
+ const current = await module.inspect(sessionId);
55
+ if (current.delivery?.state !== 'ready_for_review') {
56
+ return { kind: 'error', text: '当前 Worktree 没有尚未同步的 Ready for Review 验收稿。' };
57
+ }
58
+ const target = await module.resumeRevision(sessionId, current.revision, current.delivery.review.reviewId);
59
+ const iteration = target.delivery?.state === 'working' ? target.delivery.iteration : 0;
60
+ return { kind: 'success', text: `Resumed Worktree iteration ${iteration}; Local was not modified.` };
61
+ }
62
+ case 'next': {
63
+ const current = await module.inspect(sessionId);
64
+ const target = await module.beginNextIteration(sessionId, current.revision);
65
+ const iteration = target.delivery?.state === 'working' ? target.delivery.iteration : 0;
66
+ return { kind: 'success', text: `Started Worktree iteration ${iteration} in the current Session.` };
67
+ }
68
+ case 'finalize': {
69
+ const hasReviewIdentity = tokens[1] !== undefined && !RETENTIONS.has(tokens[1]);
70
+ const expectedReviewId = hasReviewIdentity ? tokens[1] : undefined;
71
+ const parsedRevision = hasReviewIdentity ? Number(tokens[2]) : undefined;
72
+ const retention = (hasReviewIdentity ? tokens[3] : tokens[1] ?? 'cleanup');
73
+ if (!RETENTIONS.has(retention) || (hasReviewIdentity && (!expectedReviewId || !Number.isSafeInteger(parsedRevision)))) {
74
+ return { kind: 'error', text: USAGE };
75
+ }
52
76
  const target = await module.inspect(sessionId);
53
- const result = await module.operate({ action: 'apply', sessionId, expectedRevision: target.revision });
54
- if (result.status === 'applied')
55
- return { kind: 'success', text: `Applied ${result.changedFiles.length} file(s) to Local.` };
77
+ if (target.delivery?.state !== 'ready_for_review') {
78
+ return { kind: 'error', text: '当前 Worktree 尚未 Ready for Review,不能 finalize。' };
79
+ }
80
+ if (expectedReviewId && (target.delivery.review.reviewId !== expectedReviewId
81
+ || target.revision !== parsedRevision)) {
82
+ return { kind: 'error', text: '该验收卡已过期;请确认会话中的最新 Ready for Review 卡片。' };
83
+ }
84
+ const result = await module.operate({
85
+ action: 'finish',
86
+ sessionId,
87
+ expectedRevision: parsedRevision ?? target.revision,
88
+ commitMessage: target.delivery.review.suggestedCommitMessage,
89
+ retention,
90
+ ...(expectedReviewId ? { expectedReviewId } : {}),
91
+ });
92
+ if (result.status === 'finished')
93
+ return { kind: 'success', text: finishedText(result) };
56
94
  if (result.status === 'conflict') {
57
- return { kind: 'error', text: `Conflict: ${result.conflictingFiles.join('、')}\nLocal HEAD: ${result.localHeadOid.slice(0, 7)} — 在 worktree 内同步并解决后重试。` };
95
+ return { kind: 'error', text: `Conflict: ${result.conflictingFiles.join('、')}\nLocal HEAD: ${result.localHeadOid.slice(0, 7)} — 在 Worktree 内同步并解决后重新 Ready。` };
58
96
  }
59
97
  if (result.status === 'error')
60
98
  return { kind: 'error', text: `${result.code}: ${result.message}` };
61
- return { kind: 'error', text: 'Apply 未返回预期结果' };
99
+ return { kind: 'error', text: 'Finalize 未返回预期结果' };
62
100
  }
63
101
  case 'finish': {
64
- const commitMessage = tokens.slice(1).join(' ').trim();
102
+ const commitMessage = rawInput.slice(verb.length).trim();
65
103
  if (!commitMessage)
66
104
  return { kind: 'error', text: USAGE };
67
105
  const target = await module.inspect(sessionId);
@@ -71,9 +109,10 @@ export function registerWorktreeCommand(ctx, module) {
71
109
  expectedRevision: target.revision,
72
110
  commitMessage,
73
111
  });
74
- if (result.status === 'finished') {
75
- return { kind: 'success', text: `Finished: committed ${result.changedFiles.length} file(s) as ${result.commitOid?.slice(0, 7) ?? 'no-op'} (cleanup: ${result.cleanup}).` };
76
- }
112
+ if (result.status === 'finished')
113
+ return { kind: 'success', text: finishedText(result) };
114
+ if (result.status === 'conflict')
115
+ return { kind: 'error', text: `Conflict: ${result.conflictingFiles.join('、')}` };
77
116
  if (result.status === 'error')
78
117
  return { kind: 'error', text: `${result.code}: ${result.message}` };
79
118
  return { kind: 'error', text: 'Finish 未返回预期结果' };
@@ -85,9 +124,10 @@ export function registerWorktreeCommand(ctx, module) {
85
124
  sessionId,
86
125
  expectedRevision: target.revision,
87
126
  confirmDirty: true,
127
+ ...(target.delivery?.state === 'preview_active' ? { rollbackPreview: true } : {}),
88
128
  });
89
129
  return result.status === 'discarded'
90
- ? { kind: 'success', text: 'Worktree discarded.' }
130
+ ? { kind: 'success', text: 'Worktree discarded. This Session target is no longer available.' }
91
131
  : result.status === 'error'
92
132
  ? { kind: 'error', text: `${result.code}: ${result.message}` }
93
133
  : { kind: 'error', text: 'Discard 未返回预期结果' };
@@ -96,15 +136,16 @@ export function registerWorktreeCommand(ctx, module) {
96
136
  const checkoutId = tokens[1];
97
137
  if (!checkoutId)
98
138
  return { kind: 'error', text: USAGE };
99
- const summaries = await module.listManagedWorktrees({ checkoutId });
139
+ const summaries = await module.listManagedWorktreesForSession(sessionId, { checkoutId });
100
140
  const summary = summaries[0];
101
141
  if (!summary)
102
- return { kind: 'error', text: `No managed worktree ${checkoutId}.` };
103
- await module.manageManagedWorktree({
142
+ return { kind: 'error', text: `No managed worktree ${checkoutId} visible to this Session.` };
143
+ await module.manageManagedWorktreeForSession(sessionId, {
104
144
  checkoutId,
105
145
  expectedRevision: summary.revision,
106
146
  action: 'discard',
107
147
  confirmDirty: true,
148
+ ...(summary.state === 'preview_active' ? { rollbackPreview: true } : {}),
108
149
  });
109
150
  return { kind: 'success', text: `Removed worktree ${checkoutId}.` };
110
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * JSON-only shared contract for the future Harness-native Worktree Console.
3
+ *
4
+ * This module deliberately contains no Cordis, React, Remote or filesystem
5
+ * implementation. Host and Client tracks share these DTOs while preserving one
6
+ * authority rule: every Host operation resolves an exact caller Session and
7
+ * re-validates project, owner, cwd, revision and review identity at execution.
8
+ * @module dsh-git-worktree/console-contract
9
+ */
10
+ import { type SessionCheckoutErrorCode, type SessionCheckoutPhase, type WorktreeRetentionMode, type WorktreeApplyPreflightView, type WorktreeValidationItem, type WorktreeValidationStatus } from './types.js';
11
+ export declare const WORKTREE_CONSOLE_TARGET_STATES: readonly ["local", "creating", "working", "ready_for_review", "preview_active", "preview_detached", "retained", "cleanup_pending", "recovery_required", "delivered"];
12
+ export type WorktreeConsoleTargetState = typeof WORKTREE_CONSOLE_TARGET_STATES[number];
13
+ export type WorktreeConsoleDeliveryState = 'working' | 'ready_for_review' | 'preview_active' | 'preview_detached' | 'finalized' | 'retained' | 'delivered';
14
+ /** Minimal domain facts required to project a stable, UI-facing state. */
15
+ export interface WorktreeConsoleProjectionSource {
16
+ kind: 'local' | 'isolated';
17
+ phase: SessionCheckoutPhase;
18
+ deliveryState?: WorktreeConsoleDeliveryState;
19
+ }
20
+ /** Recovery and mutation phases take precedence over a stale delivery label. */
21
+ export declare function consoleStateFromDomain(source: WorktreeConsoleProjectionSource): WorktreeConsoleTargetState;
22
+ export interface WorktreeConsoleProject {
23
+ id: string;
24
+ name: string;
25
+ }
26
+ export interface WorktreeConsoleCapabilities {
27
+ create: boolean;
28
+ open: boolean;
29
+ inspect: boolean;
30
+ discard: boolean;
31
+ preflight: boolean;
32
+ preview: boolean;
33
+ /** Invalidate an unsynced review and resume the same iteration without touching Local. */
34
+ resumeRevision: boolean;
35
+ rollbackPreview: boolean;
36
+ /** Direct Ready → Commit path that skips Local Preview. */
37
+ finalize: boolean;
38
+ finalizePreview: boolean;
39
+ setRetention: boolean;
40
+ retryCleanup: boolean;
41
+ /** Recreate a cleaned delivered owner's immutable cwd for iteration + 1. */
42
+ beginNextIteration: boolean;
43
+ }
44
+ export interface WorktreeConsolePreviewRecovery {
45
+ reason: 'stale_local' | 'preview_modified';
46
+ attemptedAction: 'rollback_preview' | 'finalize_preview' | 'discard';
47
+ }
48
+ export interface WorktreeConsoleReviewSummary {
49
+ reviewId: string;
50
+ revision: number;
51
+ iteration: number;
52
+ preparedAt: number;
53
+ summary: string;
54
+ validationStatus: WorktreeValidationStatus;
55
+ validationSummary?: string;
56
+ tests: WorktreeValidationItem[];
57
+ changedFiles: string[];
58
+ suggestedCommitMessage: string;
59
+ }
60
+ /** Path-free row safe for project lists and header status chips. */
61
+ export interface WorktreeConsoleTargetSummary {
62
+ project: WorktreeConsoleProject;
63
+ checkoutId: string | null;
64
+ sourceSessionId: string;
65
+ ownerSessionId: string;
66
+ targetSessionId: string | null;
67
+ iteration: number;
68
+ revision: number;
69
+ state: WorktreeConsoleTargetState;
70
+ phase: SessionCheckoutPhase | 'local';
71
+ dirty: boolean;
72
+ currentOid: string;
73
+ commitOid: string | null;
74
+ retention?: Exclude<WorktreeRetentionMode, 'cleanup'>;
75
+ retainedAt?: number;
76
+ expiresAt?: number | null;
77
+ cleanupMessage?: string;
78
+ review?: WorktreeConsoleReviewSummary;
79
+ reviewSlot?: 'available' | 'waiting';
80
+ reviewSlotOwnerSessionId?: string;
81
+ previewRecovery?: WorktreeConsolePreviewRecovery;
82
+ capabilities: WorktreeConsoleCapabilities;
83
+ }
84
+ /** Identity-validated detail used only when the caller may open this target. */
85
+ export interface WorktreeConsoleTargetDetails extends WorktreeConsoleTargetSummary {
86
+ managedRoot: string | null;
87
+ sourceOid: string;
88
+ currentBranch: string | null;
89
+ }
90
+ export interface WorktreeConsoleCurrentRequest {
91
+ sessionId: string;
92
+ }
93
+ export interface WorktreeConsoleCurrentResponse {
94
+ target: WorktreeConsoleTargetDetails;
95
+ }
96
+ export interface WorktreeConsoleListRequest {
97
+ sessionId: string;
98
+ needsAttention?: boolean;
99
+ includeDelivered?: boolean;
100
+ }
101
+ export interface WorktreeConsoleListResponse {
102
+ project: WorktreeConsoleProject;
103
+ worktrees: WorktreeConsoleTargetSummary[];
104
+ }
105
+ /** targetSessionId is allocated on the Host; the browser never chooses ownership identity. */
106
+ export interface WorktreeConsoleCreateRequest {
107
+ sourceSessionId: string;
108
+ }
109
+ export interface WorktreeConsoleCreateResponse {
110
+ target: WorktreeConsoleTargetDetails;
111
+ targetSessionId: string;
112
+ managedRoot: string;
113
+ }
114
+ export interface WorktreeConsoleInspectRequest {
115
+ sessionId: string;
116
+ checkoutId: string;
117
+ }
118
+ export interface WorktreeConsoleInspectResponse {
119
+ target: WorktreeConsoleTargetDetails;
120
+ }
121
+ export interface WorktreeConsoleDiscardRequest {
122
+ sessionId: string;
123
+ checkoutId: string;
124
+ expectedRevision: number;
125
+ confirmDirty: boolean;
126
+ rollbackPreview?: boolean;
127
+ }
128
+ export interface WorktreeConsolePreflightRequest {
129
+ sessionId: string;
130
+ checkoutId: string;
131
+ expectedRevision: number;
132
+ expectedReviewId: string;
133
+ }
134
+ export interface WorktreeConsolePreflightResponse {
135
+ preflight: WorktreeApplyPreflightView;
136
+ }
137
+ export interface WorktreeConsolePreviewRequest {
138
+ sessionId: string;
139
+ checkoutId: string;
140
+ expectedRevision: number;
141
+ expectedReviewId: string;
142
+ }
143
+ export interface WorktreeConsoleResumeRevisionRequest {
144
+ sessionId: string;
145
+ checkoutId: string;
146
+ expectedRevision: number;
147
+ expectedReviewId: string;
148
+ }
149
+ export interface WorktreeConsoleRollbackPreviewRequest {
150
+ sessionId: string;
151
+ checkoutId: string;
152
+ expectedRevision: number;
153
+ resumeRevision?: boolean;
154
+ }
155
+ export interface WorktreeConsoleFinalizeRequest {
156
+ sessionId: string;
157
+ checkoutId: string;
158
+ expectedRevision: number;
159
+ expectedReviewId: string;
160
+ /** Explicit user-confirmed message; Host revalidates the bounded value. */
161
+ commitMessage: string;
162
+ retention: WorktreeRetentionMode;
163
+ }
164
+ export interface WorktreeConsoleFinalizePreviewRequest {
165
+ sessionId: string;
166
+ checkoutId: string;
167
+ expectedRevision: number;
168
+ expectedReviewId: string;
169
+ commitMessage: string;
170
+ retention: WorktreeRetentionMode;
171
+ }
172
+ export interface WorktreeConsoleSetRetentionRequest {
173
+ sessionId: string;
174
+ checkoutId: string;
175
+ expectedRevision: number;
176
+ retention: Exclude<WorktreeRetentionMode, 'cleanup'>;
177
+ }
178
+ export interface WorktreeConsoleRetryCleanupRequest {
179
+ sessionId: string;
180
+ checkoutId: string;
181
+ expectedRevision: number;
182
+ }
183
+ export interface WorktreeConsoleBeginNextIterationRequest {
184
+ sessionId: string;
185
+ checkoutId: string;
186
+ expectedRevision: number;
187
+ }
188
+ export interface WorktreeConsoleMutationResponse {
189
+ target: WorktreeConsoleTargetSummary;
190
+ changedFiles?: string[];
191
+ commitOid?: string | null;
192
+ }
193
+ export type WorktreeConsoleFileStatus = 'added' | 'modified' | 'deleted' | 'renamed' | 'binary';
194
+ export interface WorktreeConsoleDiffFile {
195
+ path: string;
196
+ previousPath?: string;
197
+ status: WorktreeConsoleFileStatus;
198
+ patch: string | null;
199
+ truncated: boolean;
200
+ }
201
+ /** Review reads are bound to the same immutable identity required by Finalize. */
202
+ export interface WorktreeConsoleReviewDiffRequest {
203
+ sessionId: string;
204
+ checkoutId: string;
205
+ expectedRevision: number;
206
+ expectedReviewId: string;
207
+ }
208
+ export interface WorktreeConsoleReviewDiffResponse {
209
+ reviewId: string;
210
+ revision: number;
211
+ files: WorktreeConsoleDiffFile[];
212
+ truncated: boolean;
213
+ }
214
+ export declare const WORKTREE_CONSOLE_ERROR_CODES: readonly ["session_not_found", "project_not_found", "project_root_missing", "not_git_repository", "target_unselected", "target_already_bound", "project_mismatch", "checkout_missing", "checkout_mismatch", "recovery_required", "registry_corrupt", "git_operation_failed", "not_owner", "stale_target", "dirty_confirmation_required", "apply_conflict", "apply_failed", "invalid_input", "invalid_plan", "stale_local", "stale_isolated", "git_error", "commit_isolation_conflict", "checkout_limit_reached", "project_acceptance_busy", "operation_not_allowed", "preview_not_active", "preview_modified", "recovery_unsafe", "transport_unavailable", "malformed_response"];
215
+ export type WorktreeConsoleErrorCode = SessionCheckoutErrorCode | 'transport_unavailable' | 'malformed_response';
216
+ export type WorktreeConsoleErrorCategory = 'permission' | 'stale' | 'confirmation' | 'recovery' | 'conflict' | 'unavailable' | 'invalid' | 'internal';
217
+ export type WorktreeConsoleRecovery = 'none' | 'refresh' | 'confirm_dirty' | 'open_recovery' | 'retry';
218
+ export interface WorktreeConsoleError {
219
+ code: WorktreeConsoleErrorCode;
220
+ message: string;
221
+ details?: Record<string, string | number | boolean | null>;
222
+ }
223
+ export type WorktreeConsoleOutcome<T> = {
224
+ ok: true;
225
+ value: T;
226
+ } | {
227
+ ok: false;
228
+ error: WorktreeConsoleError;
229
+ };
230
+ export interface WorktreeConsoleErrorMeta {
231
+ category: WorktreeConsoleErrorCategory;
232
+ recovery: WorktreeConsoleRecovery;
233
+ retryable: boolean;
234
+ }
235
+ export declare function worktreeConsoleErrorMeta(code: WorktreeConsoleErrorCode): WorktreeConsoleErrorMeta;
236
+ /** Normalized Client seam; Remote transport details stay behind one adapter. */
237
+ export interface WorktreeConsoleAdapter {
238
+ current(request: WorktreeConsoleCurrentRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleCurrentResponse>>;
239
+ list(request: WorktreeConsoleListRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleListResponse>>;
240
+ create(request: WorktreeConsoleCreateRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleCreateResponse>>;
241
+ inspect(request: WorktreeConsoleInspectRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleInspectResponse>>;
242
+ reviewDiff(request: WorktreeConsoleReviewDiffRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleReviewDiffResponse>>;
243
+ preflight(request: WorktreeConsolePreflightRequest): Promise<WorktreeConsoleOutcome<WorktreeConsolePreflightResponse>>;
244
+ preview(request: WorktreeConsolePreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
245
+ resumeRevision(request: WorktreeConsoleResumeRevisionRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
246
+ rollbackPreview(request: WorktreeConsoleRollbackPreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
247
+ discard(request: WorktreeConsoleDiscardRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
248
+ finalize(request: WorktreeConsoleFinalizeRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
249
+ finalizePreview(request: WorktreeConsoleFinalizePreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
250
+ setRetention(request: WorktreeConsoleSetRetentionRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
251
+ retryCleanup(request: WorktreeConsoleRetryCleanupRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
252
+ beginNextIteration(request: WorktreeConsoleBeginNextIterationRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
253
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * JSON-only shared contract for the future Harness-native Worktree Console.
3
+ *
4
+ * This module deliberately contains no Cordis, React, Remote or filesystem
5
+ * implementation. Host and Client tracks share these DTOs while preserving one
6
+ * authority rule: every Host operation resolves an exact caller Session and
7
+ * re-validates project, owner, cwd, revision and review identity at execution.
8
+ * @module dsh-git-worktree/console-contract
9
+ */
10
+ import { SESSION_CHECKOUT_ERROR_CODES, } from './types.js';
11
+ export const WORKTREE_CONSOLE_TARGET_STATES = [
12
+ 'local',
13
+ 'creating',
14
+ 'working',
15
+ 'ready_for_review',
16
+ 'preview_active',
17
+ 'preview_detached',
18
+ 'retained',
19
+ 'cleanup_pending',
20
+ 'recovery_required',
21
+ 'delivered',
22
+ ];
23
+ /** Recovery and mutation phases take precedence over a stale delivery label. */
24
+ export function consoleStateFromDomain(source) {
25
+ if (source.kind === 'local')
26
+ return 'local';
27
+ if (source.phase === 'recovery_required')
28
+ return 'recovery_required';
29
+ if (source.phase === 'preparing')
30
+ return 'creating';
31
+ if (source.deliveryState === 'retained' || source.phase === 'retained')
32
+ return 'retained';
33
+ if (source.deliveryState === 'finalized' || source.phase === 'finalized')
34
+ return 'cleanup_pending';
35
+ if (source.deliveryState === 'delivered' || source.phase === 'discarded')
36
+ return 'delivered';
37
+ if (source.deliveryState === 'preview_detached')
38
+ return 'preview_detached';
39
+ if (source.deliveryState === 'preview_active')
40
+ return 'preview_active';
41
+ if (source.deliveryState === 'ready_for_review')
42
+ return 'ready_for_review';
43
+ return 'working';
44
+ }
45
+ export const WORKTREE_CONSOLE_ERROR_CODES = [
46
+ ...SESSION_CHECKOUT_ERROR_CODES,
47
+ 'transport_unavailable',
48
+ 'malformed_response',
49
+ ];
50
+ const ERROR_META = {
51
+ session_not_found: { category: 'unavailable', recovery: 'refresh', retryable: true },
52
+ project_not_found: { category: 'unavailable', recovery: 'refresh', retryable: true },
53
+ project_root_missing: { category: 'unavailable', recovery: 'open_recovery', retryable: false },
54
+ not_git_repository: { category: 'invalid', recovery: 'none', retryable: false },
55
+ target_unselected: { category: 'unavailable', recovery: 'refresh', retryable: true },
56
+ target_already_bound: { category: 'invalid', recovery: 'refresh', retryable: true },
57
+ project_mismatch: { category: 'permission', recovery: 'none', retryable: false },
58
+ checkout_missing: { category: 'unavailable', recovery: 'refresh', retryable: true },
59
+ checkout_mismatch: { category: 'permission', recovery: 'open_recovery', retryable: false },
60
+ recovery_required: { category: 'recovery', recovery: 'open_recovery', retryable: false },
61
+ registry_corrupt: { category: 'recovery', recovery: 'open_recovery', retryable: false },
62
+ git_operation_failed: { category: 'internal', recovery: 'retry', retryable: true },
63
+ not_owner: { category: 'permission', recovery: 'none', retryable: false },
64
+ stale_target: { category: 'stale', recovery: 'refresh', retryable: true },
65
+ dirty_confirmation_required: { category: 'confirmation', recovery: 'confirm_dirty', retryable: true },
66
+ apply_conflict: { category: 'conflict', recovery: 'open_recovery', retryable: false },
67
+ apply_failed: { category: 'internal', recovery: 'retry', retryable: true },
68
+ invalid_input: { category: 'invalid', recovery: 'none', retryable: false },
69
+ invalid_plan: { category: 'invalid', recovery: 'refresh', retryable: true },
70
+ stale_local: { category: 'stale', recovery: 'refresh', retryable: true },
71
+ stale_isolated: { category: 'stale', recovery: 'refresh', retryable: true },
72
+ git_error: { category: 'internal', recovery: 'retry', retryable: true },
73
+ commit_isolation_conflict: { category: 'conflict', recovery: 'open_recovery', retryable: false },
74
+ checkout_limit_reached: { category: 'invalid', recovery: 'none', retryable: false },
75
+ project_acceptance_busy: { category: 'conflict', recovery: 'retry', retryable: true },
76
+ operation_not_allowed: { category: 'invalid', recovery: 'refresh', retryable: true },
77
+ preview_not_active: { category: 'invalid', recovery: 'refresh', retryable: true },
78
+ preview_modified: { category: 'stale', recovery: 'open_recovery', retryable: false },
79
+ recovery_unsafe: { category: 'recovery', recovery: 'open_recovery', retryable: false },
80
+ transport_unavailable: { category: 'unavailable', recovery: 'retry', retryable: true },
81
+ malformed_response: { category: 'internal', recovery: 'none', retryable: false },
82
+ };
83
+ export function worktreeConsoleErrorMeta(code) {
84
+ return ERROR_META[code];
85
+ }
86
+ //# sourceMappingURL=console-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-contract.js","sourceRoot":"","sources":["../src/console-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,4BAA4B,GAO7B,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO;IACP,UAAU;IACV,SAAS;IACT,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;CACH,CAAA;AAoBV,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,MAAuC;IAC5E,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,mBAAmB;QAAE,OAAO,mBAAmB,CAAA;IACpE,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,UAAU,CAAA;IACnD,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,UAAU,CAAA;IACzF,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,iBAAiB,CAAA;IAClG,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,WAAW,CAAA;IAC5F,IAAI,MAAM,CAAC,aAAa,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAA;IAC1E,IAAI,MAAM,CAAC,aAAa,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAA;IACtE,IAAI,MAAM,CAAC,aAAa,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAA;IAC1E,OAAO,SAAS,CAAA;AAClB,CAAC;AAgOD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,GAAG,4BAA4B;IAC/B,uBAAuB;IACvB,oBAAoB;CACZ,CAAA;AA8BV,MAAM,UAAU,GAAG;IACjB,iBAAiB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACpF,iBAAiB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACpF,oBAAoB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IAC9F,kBAAkB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IAC/E,iBAAiB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACpF,oBAAoB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACnF,gBAAgB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IAChF,gBAAgB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACnF,iBAAiB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IAC1F,iBAAiB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IACxF,gBAAgB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IACvF,oBAAoB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAClF,SAAS,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IACzE,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACzE,2BAA2B,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE;IACrG,cAAc,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IACrF,YAAY,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1E,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IAC1E,YAAY,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3E,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACxE,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3E,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IACvE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IAChG,sBAAsB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;IACnF,uBAAuB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IACrF,qBAAqB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACpF,kBAAkB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IACjF,gBAAgB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IACpF,eAAe,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE;IACtF,qBAAqB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IACtF,kBAAkB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;CACH,CAAA;AAE/E,MAAM,UAAU,wBAAwB,CAAC,IAA8B;IACrE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { WorktreeConsoleBeginNextIterationRequest, WorktreeConsoleCreateResponse, WorktreeConsoleCurrentResponse, WorktreeConsoleDiscardRequest, WorktreeConsoleFinalizePreviewRequest, WorktreeConsoleFinalizeRequest, WorktreeConsoleInspectResponse, WorktreeConsoleListRequest, WorktreeConsoleListResponse, WorktreeConsoleMutationResponse, WorktreeConsoleOutcome, WorktreeConsolePreflightRequest, WorktreeConsolePreflightResponse, WorktreeConsolePreviewRequest, WorktreeConsoleResumeRevisionRequest, WorktreeConsoleRollbackPreviewRequest, WorktreeConsoleRetryCleanupRequest, WorktreeConsoleReviewDiffRequest, WorktreeConsoleReviewDiffResponse, WorktreeConsoleSetRetentionRequest } from '../console-contract.js';
2
+ import type { SessionCheckoutFilesPort, SessionCheckoutGitPort, SessionCheckoutLookupPort, SessionCheckoutRegistryPort } from '../ports.js';
3
+ import type { SessionCheckoutModule } from '../index.js';
4
+ import { type WorktreeReviewDiffReader } from './review-diff.js';
5
+ export interface WorktreeConsoleControlPlaneOptions {
6
+ module: SessionCheckoutModule;
7
+ lookup: SessionCheckoutLookupPort;
8
+ files: SessionCheckoutFilesPort;
9
+ registry: SessionCheckoutRegistryPort;
10
+ git: SessionCheckoutGitPort;
11
+ reviewDiff: WorktreeReviewDiffReader;
12
+ createTargetSessionId?: () => string;
13
+ }
14
+ export interface WorktreeConsoleControlPlane {
15
+ current(sessionId: string): Promise<WorktreeConsoleOutcome<WorktreeConsoleCurrentResponse>>;
16
+ list(request: WorktreeConsoleListRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleListResponse>>;
17
+ create(sourceSessionId: string): Promise<WorktreeConsoleOutcome<WorktreeConsoleCreateResponse>>;
18
+ inspect(sessionId: string, checkoutId: string): Promise<WorktreeConsoleOutcome<WorktreeConsoleInspectResponse>>;
19
+ reviewDiff(request: WorktreeConsoleReviewDiffRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleReviewDiffResponse>>;
20
+ preflight(request: WorktreeConsolePreflightRequest): Promise<WorktreeConsoleOutcome<WorktreeConsolePreflightResponse>>;
21
+ preview(request: WorktreeConsolePreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
22
+ resumeRevision(request: WorktreeConsoleResumeRevisionRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
23
+ rollbackPreview(request: WorktreeConsoleRollbackPreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
24
+ discard(request: WorktreeConsoleDiscardRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
25
+ finalize(request: WorktreeConsoleFinalizeRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
26
+ finalizePreview(request: WorktreeConsoleFinalizePreviewRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
27
+ setRetention(request: WorktreeConsoleSetRetentionRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
28
+ retryCleanup(request: WorktreeConsoleRetryCleanupRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
29
+ beginNextIteration(request: WorktreeConsoleBeginNextIterationRequest): Promise<WorktreeConsoleOutcome<WorktreeConsoleMutationResponse>>;
30
+ }
31
+ export declare function createWorktreeConsoleControlPlane(options: WorktreeConsoleControlPlaneOptions): WorktreeConsoleControlPlane;