@cerbur/clutch-dsh-worktree 0.1.3 → 0.1.4

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 (73) hide show
  1. package/README.md +247 -107
  2. package/README.zh.md +297 -0
  3. package/lib/client/WorktreeSurface.d.ts +2 -30
  4. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  5. package/lib/client/WorktreeSurface.js +31 -318
  6. package/lib/client/WorktreeSurface.js.map +1 -1
  7. package/lib/client/worktree-surface-dialogs.d.ts +7 -0
  8. package/lib/client/worktree-surface-dialogs.d.ts.map +1 -0
  9. package/lib/client/worktree-surface-dialogs.js +86 -0
  10. package/lib/client/worktree-surface-dialogs.js.map +1 -0
  11. package/lib/client/worktree-surface-rows.d.ts +9 -0
  12. package/lib/client/worktree-surface-rows.d.ts.map +1 -0
  13. package/lib/client/worktree-surface-rows.js +223 -0
  14. package/lib/client/worktree-surface-rows.js.map +1 -0
  15. package/lib/client/worktree-surface-selectors.d.ts +9 -0
  16. package/lib/client/worktree-surface-selectors.d.ts.map +1 -0
  17. package/lib/client/worktree-surface-selectors.js +28 -0
  18. package/lib/client/worktree-surface-selectors.js.map +1 -0
  19. package/lib/client/worktree-surface-types.d.ts +233 -0
  20. package/lib/client/worktree-surface-types.d.ts.map +1 -0
  21. package/lib/client/worktree-surface-types.js +2 -0
  22. package/lib/client/worktree-surface-types.js.map +1 -0
  23. package/lib/client/worktree-view-actions.d.ts +34 -0
  24. package/lib/client/worktree-view-actions.d.ts.map +1 -0
  25. package/lib/client/worktree-view-actions.js +69 -0
  26. package/lib/client/worktree-view-actions.js.map +1 -0
  27. package/lib/client/worktree-view-errors.d.ts +20 -0
  28. package/lib/client/worktree-view-errors.d.ts.map +1 -0
  29. package/lib/client/worktree-view-errors.js +65 -0
  30. package/lib/client/worktree-view-errors.js.map +1 -0
  31. package/lib/client/worktree-view-read.d.ts +48 -0
  32. package/lib/client/worktree-view-read.d.ts.map +1 -0
  33. package/lib/client/worktree-view-read.js +134 -0
  34. package/lib/client/worktree-view-read.js.map +1 -0
  35. package/lib/client/worktree-view.d.ts +4 -97
  36. package/lib/client/worktree-view.d.ts.map +1 -1
  37. package/lib/client/worktree-view.js +4 -263
  38. package/lib/client/worktree-view.js.map +1 -1
  39. package/lib/client.js +404 -324
  40. package/lib/client.js.map +1 -1
  41. package/lib/manage/manager-context.d.ts +11 -0
  42. package/lib/manage/manager-context.d.ts.map +1 -0
  43. package/lib/manage/manager-context.js +2 -0
  44. package/lib/manage/manager-context.js.map +1 -0
  45. package/lib/manage/manager-sessions.d.ts +18 -0
  46. package/lib/manage/manager-sessions.d.ts.map +1 -0
  47. package/lib/manage/manager-sessions.js +91 -0
  48. package/lib/manage/manager-sessions.js.map +1 -0
  49. package/lib/manage/manager-support.d.ts +18 -0
  50. package/lib/manage/manager-support.d.ts.map +1 -0
  51. package/lib/manage/manager-support.js +174 -0
  52. package/lib/manage/manager-support.js.map +1 -0
  53. package/lib/manage/manager-worktrees.d.ts +27 -0
  54. package/lib/manage/manager-worktrees.d.ts.map +1 -0
  55. package/lib/manage/manager-worktrees.js +259 -0
  56. package/lib/manage/manager-worktrees.js.map +1 -0
  57. package/lib/manage/manager.d.ts +23 -65
  58. package/lib/manage/manager.d.ts.map +1 -1
  59. package/lib/manage/manager.js +32 -565
  60. package/lib/manage/manager.js.map +1 -1
  61. package/lib/provider/sidecar-persistence.d.ts +18 -0
  62. package/lib/provider/sidecar-persistence.d.ts.map +1 -0
  63. package/lib/provider/sidecar-persistence.js +162 -0
  64. package/lib/provider/sidecar-persistence.js.map +1 -0
  65. package/lib/provider/sidecar-schema.d.ts +6 -0
  66. package/lib/provider/sidecar-schema.d.ts.map +1 -0
  67. package/lib/provider/sidecar-schema.js +123 -0
  68. package/lib/provider/sidecar-schema.js.map +1 -0
  69. package/lib/provider/sidecar.d.ts +10 -67
  70. package/lib/provider/sidecar.d.ts.map +1 -1
  71. package/lib/provider/sidecar.js +21 -346
  72. package/lib/provider/sidecar.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,134 @@
1
+ import { toWorktreeViewError } from './worktree-view-errors.js';
2
+ /** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */
3
+ export function stableWorkspaceIds(previous, next) {
4
+ if (previous.length !== next.length)
5
+ return next;
6
+ for (let index = 0; index < previous.length; index += 1) {
7
+ if (previous[index] !== next[index])
8
+ return next;
9
+ }
10
+ return previous;
11
+ }
12
+ /** Keep only the most recently started Worktree surface refresh authoritative. */
13
+ export function createWorktreeRefreshGuard() {
14
+ let latestGeneration = 0;
15
+ const begin = () => {
16
+ latestGeneration += 1;
17
+ return latestGeneration;
18
+ };
19
+ const isCurrent = (generation) => generation === latestGeneration;
20
+ const invalidate = () => {
21
+ latestGeneration += 1;
22
+ };
23
+ return {
24
+ begin,
25
+ isCurrent,
26
+ invalidate,
27
+ async run(load, onSuccess, onError) {
28
+ const generation = begin();
29
+ let value;
30
+ try {
31
+ value = await load();
32
+ }
33
+ catch (error) {
34
+ if (!isCurrent(generation))
35
+ return;
36
+ onError(error);
37
+ return;
38
+ }
39
+ if (!isCurrent(generation))
40
+ return;
41
+ onSuccess(value);
42
+ },
43
+ };
44
+ }
45
+ /** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */
46
+ export function selectDefaultBaseBranch(branches) {
47
+ return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';
48
+ }
49
+ /** Keep a valid user choice across branch-list refreshes, otherwise choose the current branch. */
50
+ export function reconcileBaseBranchSelection(selectedBranch, branches) {
51
+ if (branches.some((branch) => branch.name === selectedBranch))
52
+ return selectedBranch;
53
+ return selectDefaultBaseBranch(branches);
54
+ }
55
+ /** Return copyable, read-only setup commands for a Git readiness state. */
56
+ export function worktreeSetupCommands(status) {
57
+ switch (status) {
58
+ case 'noRepository':
59
+ return [
60
+ 'git init',
61
+ 'printf "# README\\n" > README.md',
62
+ 'git add README.md',
63
+ 'git commit -m "Initial commit"',
64
+ ];
65
+ case 'noInitialCommit':
66
+ return [
67
+ 'printf "# README\\n" > README.md',
68
+ 'git add README.md',
69
+ 'git commit -m "Initial commit"',
70
+ ];
71
+ case 'noLocalBranch':
72
+ return ['git switch -c main'];
73
+ case 'ready':
74
+ return [];
75
+ }
76
+ }
77
+ function readinessFromBranchError(error) {
78
+ const viewError = toWorktreeViewError(error);
79
+ if (viewError.code === 'WORKSPACE_NOT_GIT_REPOSITORY') {
80
+ return { status: 'noRepository', error: viewError };
81
+ }
82
+ if (viewError.code === 'WORKTREE_REQUIRES_INITIAL_COMMIT') {
83
+ return { status: 'noInitialCommit', error: viewError };
84
+ }
85
+ return undefined;
86
+ }
87
+ /** Read all three Worktree projections needed by the surface in one refresh. */
88
+ export async function loadWorktreeView(manager, workspaceId) {
89
+ const [worktreesResult, branchesResult, bindingsResult] = await Promise.allSettled([
90
+ manager.listWorktrees({ workspaceId }),
91
+ manager.listBranches({ workspaceId }),
92
+ manager.listBindings({ workspaceId }),
93
+ ]);
94
+ if (worktreesResult.status === 'rejected')
95
+ throw worktreesResult.reason;
96
+ if (bindingsResult.status === 'rejected')
97
+ throw bindingsResult.reason;
98
+ if (branchesResult.status === 'rejected') {
99
+ const readiness = readinessFromBranchError(branchesResult.reason);
100
+ if (readiness !== undefined) {
101
+ return {
102
+ worktrees: worktreesResult.value,
103
+ branches: [],
104
+ bindings: bindingsResult.value,
105
+ readiness,
106
+ };
107
+ }
108
+ throw branchesResult.reason;
109
+ }
110
+ return {
111
+ worktrees: worktreesResult.value,
112
+ branches: branchesResult.value,
113
+ bindings: bindingsResult.value,
114
+ readiness: branchesResult.value.length > 0
115
+ ? { status: 'ready' }
116
+ : { status: 'noLocalBranch' },
117
+ };
118
+ }
119
+ /** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */
120
+ export async function loadWorktreeViews(manager, workspaceIds, options = {}) {
121
+ const views = await Promise.all(workspaceIds.map(async (workspaceId) => ({
122
+ workspaceId,
123
+ ...(await loadWorktreeView(manager, workspaceId)),
124
+ })));
125
+ if (options.invalidateContext !== false) {
126
+ await options.invalidateWorktreeContext?.();
127
+ }
128
+ return views;
129
+ }
130
+ /** Hide DSH-archived Sessions from the browser-local Worktree projection. */
131
+ export function filterArchivedSessionIds(sessionIds, archivedSessionIds) {
132
+ return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));
133
+ }
134
+ //# sourceMappingURL=worktree-view-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-view-read.js","sourceRoot":"","sources":["../../src/client/worktree-view-read.ts"],"names":[],"mappings":"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"}
@@ -1,98 +1,5 @@
1
- import type { BranchRecord, SessionBinding, WorktreeManager, WorktreeRecord } from '../contract/index.js';
2
- /** A DSH Session exists even when the external Worktree binding needs repair. */
3
- export declare class WorktreeSessionBindingError extends Error {
4
- readonly code: string;
5
- readonly retryable: boolean;
6
- readonly details: Readonly<Record<string, unknown>>;
7
- readonly sessionId: string;
8
- readonly cause: unknown;
9
- constructor(sessionId: string, cause: unknown);
10
- }
11
- export type WorktreeGitReadiness = {
12
- readonly status: 'ready';
13
- } | {
14
- readonly status: 'noRepository';
15
- readonly error: WorktreeViewError;
16
- } | {
17
- readonly status: 'noInitialCommit';
18
- readonly error: WorktreeViewError;
19
- } | {
20
- readonly status: 'noLocalBranch';
21
- };
22
- export interface WorktreeViewData {
23
- readonly worktrees: readonly WorktreeRecord[];
24
- readonly branches: readonly BranchRecord[];
25
- readonly bindings: readonly SessionBinding[];
26
- readonly readiness: WorktreeGitReadiness;
27
- }
28
- export interface WorktreeWorkspaceView extends WorktreeViewData {
29
- readonly workspaceId: string;
30
- }
31
- export interface LoadWorktreeViewsOptions {
32
- readonly invalidateContext?: boolean;
33
- readonly invalidateWorktreeContext?: () => Promise<void>;
34
- }
35
- /** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */
36
- export declare function stableWorkspaceIds(previous: readonly string[], next: readonly string[]): readonly string[];
37
- /** Keep only the most recently started Worktree surface refresh authoritative. */
38
- export declare function createWorktreeRefreshGuard(): {
39
- begin: () => number;
40
- isCurrent: (generation: number) => boolean;
41
- invalidate: () => void;
42
- run<T>(load: () => Promise<T>, onSuccess: (value: T) => void, onError: (error: unknown) => void): Promise<void>;
43
- };
44
- /** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */
45
- export declare function selectDefaultBaseBranch(branches: readonly BranchRecord[]): string;
46
- /** Keep a valid user choice across branch-list refreshes, otherwise choose the current branch. */
47
- export declare function reconcileBaseBranchSelection(selectedBranch: string, branches: readonly BranchRecord[]): string;
48
- /** Return copyable, read-only setup commands for a Git readiness state. */
49
- export declare function worktreeSetupCommands(status: WorktreeGitReadiness['status']): readonly string[];
50
- /** Generate a short, editable default branch name without colliding with known local names. */
51
- export declare function createDefaultWorktreeName(existingNames: Iterable<string>, randomUuid?: () => string): string;
52
- export interface CreateSessionForWorktreeInput {
53
- readonly workspaceId: string;
54
- readonly worktreeId: string;
55
- readonly cwd: string;
56
- }
57
- export interface WorktreeViewError {
58
- readonly code: string;
59
- readonly message: string;
60
- readonly retryable: boolean;
61
- readonly details?: Readonly<Record<string, unknown>>;
62
- }
63
- /** Hide DSH-archived Sessions from the browser-local Worktree projection. */
64
- export declare function filterArchivedSessionIds(sessionIds: readonly string[], archivedSessionIds: readonly string[]): readonly string[];
65
- export type WorktreeViewAction = {
66
- readonly type: 'createWorktree';
67
- readonly input: Parameters<WorktreeManager['createWorktree']>[0];
68
- } | {
69
- readonly type: 'removeWorktree';
70
- readonly input: Parameters<WorktreeManager['removeWorktree']>[0];
71
- };
72
- /** Read all three Worktree projections needed by the surface in one refresh. */
73
- export declare function loadWorktreeView(manager: WorktreeManager, workspaceId: string): Promise<WorktreeViewData>;
74
- /** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */
75
- export declare function loadWorktreeViews(manager: WorktreeManager, workspaceIds: readonly string[], options?: LoadWorktreeViewsOptions): Promise<readonly WorktreeWorkspaceView[]>;
76
- /** Resolve a row-half drop target to native-style optional before-anchor semantics. */
77
- export declare function resolveWorktreeMove(worktreeIds: readonly string[], sourceWorktreeId: string, targetWorktreeId: string, half: 'before' | 'after'): {
78
- readonly beforeWorktreeId?: string;
79
- } | undefined;
80
- /** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */
81
- export declare function executeWorktreeAction(manager: WorktreeManager, action: WorktreeViewAction): Promise<WorktreeRecord | void>;
82
- /**
83
- * Create a normal DSH Session at a Worktree cwd, then add the external binding.
84
- * A binding failure deliberately leaves the DSH-created Session intact.
85
- */
86
- export declare function createSessionForWorktree(input: CreateSessionForWorktreeInput & {
87
- readonly createSession: (input: {
88
- cwd: string;
89
- }) => Promise<string>;
90
- readonly manager: Pick<WorktreeManager, 'bindSession'>;
91
- readonly beforeOpen?: (sessionId: string) => void;
92
- readonly openSession: (sessionId: string) => void;
93
- }): Promise<string>;
94
- /** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */
95
- export declare function toWorktreeViewError(error: unknown): WorktreeViewError;
96
- /** Keep ordering mutation/refresh failures reachable from the surface Retry control. */
97
- export declare function toRetryableWorktreeOrderError(error: unknown): WorktreeViewError;
1
+ /** Compatibility barrel for the existing browser Worktree view helper imports. */
2
+ export * from './worktree-view-actions.js';
3
+ export * from './worktree-view-errors.js';
4
+ export * from './worktree-view-read.js';
98
5
  //# sourceMappingURL=worktree-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-view.d.ts","sourceRoot":"","sources":["../../src/client/worktree-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-view.d.ts","sourceRoot":"","sources":["../../src/client/worktree-view.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
@@ -1,264 +1,5 @@
1
- /** A DSH Session exists even when the external Worktree binding needs repair. */
2
- export class WorktreeSessionBindingError extends Error {
3
- code;
4
- retryable;
5
- details;
6
- sessionId;
7
- cause;
8
- constructor(sessionId, cause) {
9
- const candidate = typeof cause === 'object' && cause !== null
10
- ? cause
11
- : undefined;
12
- const reason = cause instanceof Error
13
- ? cause.message
14
- : typeof candidate?.message === 'string'
15
- ? candidate.message
16
- : String(cause);
17
- super(reason);
18
- this.name = 'WorktreeSessionBindingError';
19
- const conflict = candidate?.code === 'SESSION_ALREADY_BOUND';
20
- this.code = conflict ? 'SESSION_ALREADY_BOUND' : 'SESSION_BINDING_FAILED';
21
- this.retryable = conflict ? false : candidate?.retryable !== false;
22
- this.details = typeof candidate?.details === 'object' && candidate.details !== null
23
- && !Array.isArray(candidate.details)
24
- ? candidate.details
25
- : {};
26
- this.sessionId = sessionId;
27
- this.cause = cause;
28
- }
29
- }
30
- /** Reuse the previous ID snapshot when DSH republishes equivalent Workspace items. */
31
- export function stableWorkspaceIds(previous, next) {
32
- if (previous.length !== next.length)
33
- return next;
34
- for (let index = 0; index < previous.length; index += 1) {
35
- if (previous[index] !== next[index])
36
- return next;
37
- }
38
- return previous;
39
- }
40
- /** Keep only the most recently started Worktree surface refresh authoritative. */
41
- export function createWorktreeRefreshGuard() {
42
- let latestGeneration = 0;
43
- const begin = () => {
44
- latestGeneration += 1;
45
- return latestGeneration;
46
- };
47
- const isCurrent = (generation) => generation === latestGeneration;
48
- const invalidate = () => {
49
- latestGeneration += 1;
50
- };
51
- return {
52
- begin,
53
- isCurrent,
54
- invalidate,
55
- async run(load, onSuccess, onError) {
56
- const generation = begin();
57
- let value;
58
- try {
59
- value = await load();
60
- }
61
- catch (error) {
62
- if (!isCurrent(generation))
63
- return;
64
- onError(error);
65
- return;
66
- }
67
- if (!isCurrent(generation))
68
- return;
69
- onSuccess(value);
70
- },
71
- };
72
- }
73
- /** Prefer the branch checked out by the DSH Workspace, then fall back to any local branch. */
74
- export function selectDefaultBaseBranch(branches) {
75
- return branches.find((branch) => branch.isCurrent)?.name ?? branches[0]?.name ?? '';
76
- }
77
- /** Keep a valid user choice across branch-list refreshes, otherwise choose the current branch. */
78
- export function reconcileBaseBranchSelection(selectedBranch, branches) {
79
- if (branches.some((branch) => branch.name === selectedBranch))
80
- return selectedBranch;
81
- return selectDefaultBaseBranch(branches);
82
- }
83
- /** Return copyable, read-only setup commands for a Git readiness state. */
84
- export function worktreeSetupCommands(status) {
85
- switch (status) {
86
- case 'noRepository':
87
- return [
88
- 'git init',
89
- 'printf "# README\\n" > README.md',
90
- 'git add README.md',
91
- 'git commit -m "Initial commit"',
92
- ];
93
- case 'noInitialCommit':
94
- return [
95
- 'printf "# README\\n" > README.md',
96
- 'git add README.md',
97
- 'git commit -m "Initial commit"',
98
- ];
99
- case 'noLocalBranch':
100
- return ['git switch -c main'];
101
- case 'ready':
102
- return [];
103
- }
104
- }
105
- function browserRandomUuid() {
106
- const randomUUID = globalThis.crypto?.randomUUID;
107
- if (typeof randomUUID === 'function')
108
- return randomUUID.call(globalThis.crypto);
109
- return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}`;
110
- }
111
- /** Generate a short, editable default branch name without colliding with known local names. */
112
- export function createDefaultWorktreeName(existingNames, randomUuid = browserRandomUuid) {
113
- const usedNames = new Set([...existingNames].map((name) => name.trim()));
114
- for (let attempt = 0; attempt < 100; attempt += 1) {
115
- const suffix = randomUuid().replace(/[^a-z0-9]/gi, '').slice(0, 8).toLowerCase();
116
- if (suffix.length < 8)
117
- continue;
118
- const candidate = `dsh/${suffix}`;
119
- if (!usedNames.has(candidate))
120
- return candidate;
121
- }
122
- throw new Error('Unable to generate an available default Worktree name.');
123
- }
124
- /** Hide DSH-archived Sessions from the browser-local Worktree projection. */
125
- export function filterArchivedSessionIds(sessionIds, archivedSessionIds) {
126
- return sessionIds.filter((sessionId) => !archivedSessionIds.includes(sessionId));
127
- }
128
- function readinessFromBranchError(error) {
129
- const viewError = toWorktreeViewError(error);
130
- if (viewError.code === 'WORKSPACE_NOT_GIT_REPOSITORY') {
131
- return { status: 'noRepository', error: viewError };
132
- }
133
- if (viewError.code === 'WORKTREE_REQUIRES_INITIAL_COMMIT') {
134
- return { status: 'noInitialCommit', error: viewError };
135
- }
136
- return undefined;
137
- }
138
- /** Read all three Worktree projections needed by the surface in one refresh. */
139
- export async function loadWorktreeView(manager, workspaceId) {
140
- const [worktreesResult, branchesResult, bindingsResult] = await Promise.allSettled([
141
- manager.listWorktrees({ workspaceId }),
142
- manager.listBranches({ workspaceId }),
143
- manager.listBindings({ workspaceId }),
144
- ]);
145
- if (worktreesResult.status === 'rejected')
146
- throw worktreesResult.reason;
147
- if (bindingsResult.status === 'rejected')
148
- throw bindingsResult.reason;
149
- if (branchesResult.status === 'rejected') {
150
- const readiness = readinessFromBranchError(branchesResult.reason);
151
- if (readiness !== undefined) {
152
- return {
153
- worktrees: worktreesResult.value,
154
- branches: [],
155
- bindings: bindingsResult.value,
156
- readiness,
157
- };
158
- }
159
- throw branchesResult.reason;
160
- }
161
- return {
162
- worktrees: worktreesResult.value,
163
- branches: branchesResult.value,
164
- bindings: bindingsResult.value,
165
- readiness: branchesResult.value.length > 0
166
- ? { status: 'ready' }
167
- : { status: 'noLocalBranch' },
168
- };
169
- }
170
- /** Load one independent projection per DSH Workspace for the flat sidebar hierarchy. */
171
- export async function loadWorktreeViews(manager, workspaceIds, options = {}) {
172
- const views = await Promise.all(workspaceIds.map(async (workspaceId) => ({
173
- workspaceId,
174
- ...(await loadWorktreeView(manager, workspaceId)),
175
- })));
176
- if (options.invalidateContext !== false) {
177
- await options.invalidateWorktreeContext?.();
178
- }
179
- return views;
180
- }
181
- /** Resolve a row-half drop target to native-style optional before-anchor semantics. */
182
- export function resolveWorktreeMove(worktreeIds, sourceWorktreeId, targetWorktreeId, half) {
183
- const sourceIndex = worktreeIds.indexOf(sourceWorktreeId);
184
- const targetIndex = worktreeIds.indexOf(targetWorktreeId);
185
- if (sourceIndex === -1 || targetIndex === -1)
186
- return undefined;
187
- const beforeWorktreeId = half === 'before'
188
- ? targetWorktreeId
189
- : worktreeIds[targetIndex + 1];
190
- if (beforeWorktreeId === sourceWorktreeId)
191
- return undefined;
192
- const anchorIndex = beforeWorktreeId === undefined
193
- ? worktreeIds.length
194
- : worktreeIds.indexOf(beforeWorktreeId);
195
- if (anchorIndex === sourceIndex || anchorIndex === sourceIndex + 1)
196
- return undefined;
197
- return beforeWorktreeId === undefined ? {} : { beforeWorktreeId };
198
- }
199
- /** Keep mutation routing in the browser Consumer while leaving wire details to the adapter. */
200
- export async function executeWorktreeAction(manager, action) {
201
- if (action.type === 'createWorktree') {
202
- return manager.createWorktree(action.input);
203
- }
204
- if (action.type === 'removeWorktree') {
205
- await manager.removeWorktree(action.input);
206
- return;
207
- }
208
- }
209
- /**
210
- * Create a normal DSH Session at a Worktree cwd, then add the external binding.
211
- * A binding failure deliberately leaves the DSH-created Session intact.
212
- */
213
- export async function createSessionForWorktree(input) {
214
- const sessionId = await input.createSession({ cwd: input.cwd });
215
- try {
216
- await input.manager.bindSession({
217
- workspaceId: input.workspaceId,
218
- worktreeId: input.worktreeId,
219
- sessionId,
220
- });
221
- }
222
- catch (error) {
223
- throw new WorktreeSessionBindingError(sessionId, error);
224
- }
225
- input.beforeOpen?.(sessionId);
226
- input.openSession(sessionId);
227
- return sessionId;
228
- }
229
- function recordDetails(value) {
230
- if (typeof value !== 'object' || value === null || Array.isArray(value))
231
- return undefined;
232
- const details = value.details;
233
- if (typeof details !== 'object' || details === null || Array.isArray(details))
234
- return undefined;
235
- return details;
236
- }
237
- /** Convert any adapter/Gateway failure into renderable, retry-aware UI data. */
238
- export function toWorktreeViewError(error) {
239
- if (typeof error === 'object' && error !== null) {
240
- const candidate = error;
241
- const details = error instanceof WorktreeSessionBindingError
242
- ? { ...(recordDetails(error) ?? {}), sessionId: error.sessionId }
243
- : recordDetails(error);
244
- return {
245
- code: typeof candidate.code === 'string' ? candidate.code : 'WORKTREE_VIEW_FAILED',
246
- message: typeof candidate.message === 'string' ? candidate.message : '',
247
- retryable: candidate.retryable !== false,
248
- ...(details === undefined ? {} : { details }),
249
- };
250
- }
251
- return {
252
- code: 'WORKTREE_VIEW_FAILED',
253
- message: '',
254
- retryable: true,
255
- };
256
- }
257
- /** Keep ordering mutation/refresh failures reachable from the surface Retry control. */
258
- export function toRetryableWorktreeOrderError(error) {
259
- return {
260
- ...toWorktreeViewError(error),
261
- retryable: true,
262
- };
263
- }
1
+ /** Compatibility barrel for the existing browser Worktree view helper imports. */
2
+ export * from './worktree-view-actions.js';
3
+ export * from './worktree-view-errors.js';
4
+ export * from './worktree-view-read.js';
264
5
  //# sourceMappingURL=worktree-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-view.js","sourceRoot":"","sources":["../../src/client/worktree-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-view.js","sourceRoot":"","sources":["../../src/client/worktree-view.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}