@cerbur/clutch-dsh-worktree 0.1.2 → 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.
- package/README.md +247 -92
- package/README.zh.md +297 -0
- package/lib/client/WorktreeContext.d.ts +15 -0
- package/lib/client/WorktreeContext.d.ts.map +1 -0
- package/lib/client/WorktreeContext.js +19 -0
- package/lib/client/WorktreeContext.js.map +1 -0
- package/lib/client/WorktreeHeroContext.d.ts +10 -0
- package/lib/client/WorktreeHeroContext.d.ts.map +1 -0
- package/lib/client/WorktreeHeroContext.js +128 -0
- package/lib/client/WorktreeHeroContext.js.map +1 -0
- package/lib/client/WorktreeOverlay.d.ts +6 -0
- package/lib/client/WorktreeOverlay.d.ts.map +1 -0
- package/lib/client/WorktreeOverlay.js +8 -0
- package/lib/client/WorktreeOverlay.js.map +1 -0
- package/lib/client/WorktreeSurface.d.ts +3 -29
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +170 -314
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/entry.d.ts +1 -1
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +41 -14
- package/lib/client/entry.js.map +1 -1
- package/lib/client/locales.d.ts +30 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +32 -2
- package/lib/client/locales.js.map +1 -1
- package/lib/client/session-view.d.ts +21 -0
- package/lib/client/session-view.d.ts.map +1 -0
- package/lib/client/session-view.js +26 -0
- package/lib/client/session-view.js.map +1 -0
- package/lib/client/sidebar-overlay-geometry.d.ts +1 -0
- package/lib/client/sidebar-overlay-geometry.d.ts.map +1 -1
- package/lib/client/sidebar-overlay-geometry.js +28 -17
- package/lib/client/sidebar-overlay-geometry.js.map +1 -1
- package/lib/client/virtual-workspace-membership.d.ts.map +1 -1
- package/lib/client/virtual-workspace-membership.js +17 -6
- package/lib/client/virtual-workspace-membership.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +1 -0
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +4 -0
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client/worktree-context-store.d.ts +45 -0
- package/lib/client/worktree-context-store.d.ts.map +1 -0
- package/lib/client/worktree-context-store.js +199 -0
- package/lib/client/worktree-context-store.js.map +1 -0
- package/lib/client/worktree-context.d.ts +32 -0
- package/lib/client/worktree-context.d.ts.map +1 -0
- package/lib/client/worktree-context.js +51 -0
- package/lib/client/worktree-context.js.map +1 -0
- package/lib/client/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/worktree-error-copy.js +14 -0
- package/lib/client/worktree-error-copy.js.map +1 -1
- package/lib/client/worktree-session.d.ts +83 -0
- package/lib/client/worktree-session.d.ts.map +1 -0
- package/lib/client/worktree-session.js +185 -0
- package/lib/client/worktree-session.js.map +1 -0
- package/lib/client/worktree-surface-dialogs.d.ts +7 -0
- package/lib/client/worktree-surface-dialogs.d.ts.map +1 -0
- package/lib/client/worktree-surface-dialogs.js +86 -0
- package/lib/client/worktree-surface-dialogs.js.map +1 -0
- package/lib/client/worktree-surface-rows.d.ts +9 -0
- package/lib/client/worktree-surface-rows.d.ts.map +1 -0
- package/lib/client/worktree-surface-rows.js +223 -0
- package/lib/client/worktree-surface-rows.js.map +1 -0
- package/lib/client/worktree-surface-selectors.d.ts +9 -0
- package/lib/client/worktree-surface-selectors.d.ts.map +1 -0
- package/lib/client/worktree-surface-selectors.js +28 -0
- package/lib/client/worktree-surface-selectors.js.map +1 -0
- package/lib/client/worktree-surface-types.d.ts +233 -0
- package/lib/client/worktree-surface-types.d.ts.map +1 -0
- package/lib/client/worktree-surface-types.js +2 -0
- package/lib/client/worktree-surface-types.js.map +1 -0
- package/lib/client/worktree-view-actions.d.ts +34 -0
- package/lib/client/worktree-view-actions.d.ts.map +1 -0
- package/lib/client/worktree-view-actions.js +69 -0
- package/lib/client/worktree-view-actions.js.map +1 -0
- package/lib/client/worktree-view-errors.d.ts +20 -0
- package/lib/client/worktree-view-errors.d.ts.map +1 -0
- package/lib/client/worktree-view-errors.js +65 -0
- package/lib/client/worktree-view-errors.js.map +1 -0
- package/lib/client/worktree-view-read.d.ts +48 -0
- package/lib/client/worktree-view-read.d.ts.map +1 -0
- package/lib/client/worktree-view-read.js +134 -0
- package/lib/client/worktree-view-read.js.map +1 -0
- package/lib/client/worktree-view.d.ts +4 -63
- package/lib/client/worktree-view.d.ts.map +1 -1
- package/lib/client/worktree-view.js +4 -125
- package/lib/client/worktree-view.js.map +1 -1
- package/lib/client.js +1313 -363
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +2 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +17 -2
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +2 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +1 -0
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +6 -1
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +6 -0
- package/lib/host/service.js.map +1 -1
- package/lib/manage/manager-context.d.ts +11 -0
- package/lib/manage/manager-context.d.ts.map +1 -0
- package/lib/manage/manager-context.js +2 -0
- package/lib/manage/manager-context.js.map +1 -0
- package/lib/manage/manager-sessions.d.ts +18 -0
- package/lib/manage/manager-sessions.d.ts.map +1 -0
- package/lib/manage/manager-sessions.js +91 -0
- package/lib/manage/manager-sessions.js.map +1 -0
- package/lib/manage/manager-support.d.ts +18 -0
- package/lib/manage/manager-support.d.ts.map +1 -0
- package/lib/manage/manager-support.js +174 -0
- package/lib/manage/manager-support.js.map +1 -0
- package/lib/manage/manager-worktrees.d.ts +27 -0
- package/lib/manage/manager-worktrees.d.ts.map +1 -0
- package/lib/manage/manager-worktrees.js +259 -0
- package/lib/manage/manager-worktrees.js.map +1 -0
- package/lib/manage/manager.d.ts +25 -62
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +32 -554
- package/lib/manage/manager.js.map +1 -1
- package/lib/provider/sidecar-persistence.d.ts +18 -0
- package/lib/provider/sidecar-persistence.d.ts.map +1 -0
- package/lib/provider/sidecar-persistence.js +162 -0
- package/lib/provider/sidecar-persistence.js.map +1 -0
- package/lib/provider/sidecar-schema.d.ts +6 -0
- package/lib/provider/sidecar-schema.d.ts.map +1 -0
- package/lib/provider/sidecar-schema.js +123 -0
- package/lib/provider/sidecar-schema.js.map +1 -0
- package/lib/provider/sidecar.d.ts +12 -68
- package/lib/provider/sidecar.d.ts.map +1 -1
- package/lib/provider/sidecar.js +61 -346
- package/lib/provider/sidecar.js.map +1 -1
- package/lib/provider/types.d.ts +2 -1
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/typert.host.js +60 -18
- package/lib/typert.remote-client.d.ts +3 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +60 -18
- package/package.json +6 -2
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { providerError } from '../provider/types.js';
|
|
3
|
+
import { asGitError, asSidecarError, describeError, generatedId, pathExists, requireWorkspace, samePhysicalPath, validateGeneratedPath, validatePhysicalGeneratedPath, } from './manager-support.js';
|
|
4
|
+
/** Return the sidecar Worktree projection with runtime Git health attached. */
|
|
5
|
+
export async function listWorktrees(context, input) {
|
|
6
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
7
|
+
const records = (await context.sidecar.read(input.workspaceId)).worktrees;
|
|
8
|
+
let gitWorktrees;
|
|
9
|
+
try {
|
|
10
|
+
gitWorktrees = await context.git.listWorktrees(workspace.rootPath);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return records.map((record) => {
|
|
14
|
+
const { health: _health, ...durableRecord } = record;
|
|
15
|
+
void _health;
|
|
16
|
+
return record.status === 'active'
|
|
17
|
+
? { ...durableRecord, health: 'repair' }
|
|
18
|
+
: durableRecord;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const nextRecords = [];
|
|
22
|
+
for (const record of records) {
|
|
23
|
+
const { health: _health, ...durableRecord } = record;
|
|
24
|
+
void _health;
|
|
25
|
+
if (record.status !== 'active') {
|
|
26
|
+
nextRecords.push(durableRecord);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
let ready = false;
|
|
30
|
+
for (const gitWorktree of gitWorktrees) {
|
|
31
|
+
if (path.resolve(gitWorktree.absolutePath) === path.resolve(record.absolutePath) ||
|
|
32
|
+
(await samePhysicalPath(gitWorktree.absolutePath, record.absolutePath))) {
|
|
33
|
+
ready = true;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
nextRecords.push({ ...durableRecord, health: ready ? 'ready' : 'repair' });
|
|
38
|
+
}
|
|
39
|
+
return nextRecords;
|
|
40
|
+
}
|
|
41
|
+
/** Project local branches against all Git worktrees and mark checkout/current state. */
|
|
42
|
+
export async function listBranches(context, input) {
|
|
43
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
44
|
+
await context.git.validateRepository(workspace.rootPath);
|
|
45
|
+
const [branches, worktrees] = await Promise.all([
|
|
46
|
+
context.git.listBranches(workspace.rootPath),
|
|
47
|
+
context.git.listWorktrees(workspace.rootPath),
|
|
48
|
+
]);
|
|
49
|
+
// `checkedOut` covers the main Workspace and all linked worktree; `isCurrent` only identifies the entry at the Workspace root's physical path.
|
|
50
|
+
const checkedOut = new Set(worktrees.flatMap((worktree) => (worktree.branch ? [worktree.branch] : [])));
|
|
51
|
+
let currentBranch;
|
|
52
|
+
for (const worktree of worktrees) {
|
|
53
|
+
if (await samePhysicalPath(worktree.absolutePath, workspace.rootPath)) {
|
|
54
|
+
currentBranch = worktree.branch;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return branches.map((name) => ({
|
|
59
|
+
name,
|
|
60
|
+
isCurrent: currentBranch === name,
|
|
61
|
+
checkedOut: checkedOut.has(name),
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/** Create a Git Worktree first, then commit its external relation to the sidecar. */
|
|
65
|
+
export async function createWorktree(context, input) {
|
|
66
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
67
|
+
await context.git.validateRepository(workspace.rootPath);
|
|
68
|
+
if (typeof input.branch !== 'string' || input.branch.length === 0) {
|
|
69
|
+
throw providerError('GIT_OPERATION_FAILED', 'A local branch is required', {
|
|
70
|
+
workspaceRoot: workspace.rootPath,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const baseBranch = input.branch.trim();
|
|
74
|
+
if (input.newBranch !== undefined && typeof input.newBranch !== 'string') {
|
|
75
|
+
throw providerError('GIT_OPERATION_FAILED', 'A new branch name must be a string', {
|
|
76
|
+
workspaceRoot: workspace.rootPath,
|
|
77
|
+
baseBranch,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const newBranch = input.newBranch?.trim();
|
|
81
|
+
if (baseBranch.length === 0) {
|
|
82
|
+
throw providerError('GIT_OPERATION_FAILED', 'A local base branch is required', {
|
|
83
|
+
workspaceRoot: workspace.rootPath,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (input.newBranch !== undefined && (!newBranch || newBranch === baseBranch)) {
|
|
87
|
+
throw providerError('GIT_OPERATION_FAILED', 'A distinct new branch name is required', {
|
|
88
|
+
workspaceRoot: workspace.rootPath,
|
|
89
|
+
baseBranch,
|
|
90
|
+
newBranch: input.newBranch,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const branches = await context.git.listBranches(workspace.rootPath);
|
|
94
|
+
if (!branches.includes(baseBranch)) {
|
|
95
|
+
throw providerError('GIT_OPERATION_FAILED', `Local branch does not exist: ${baseBranch}`, {
|
|
96
|
+
workspaceRoot: workspace.rootPath,
|
|
97
|
+
branch: baseBranch,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const targetBranch = newBranch ?? baseBranch;
|
|
101
|
+
if (newBranch !== undefined && branches.includes(newBranch)) {
|
|
102
|
+
throw providerError('WORKTREE_BRANCH_CONFLICT', `New branch already exists: ${newBranch}`, {
|
|
103
|
+
workspaceRoot: workspace.rootPath,
|
|
104
|
+
branch: newBranch,
|
|
105
|
+
baseBranch,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const existingGitWorktrees = await context.git.listWorktrees(workspace.rootPath);
|
|
109
|
+
if (existingGitWorktrees.some((worktree) => worktree.branch === targetBranch)) {
|
|
110
|
+
throw providerError('WORKTREE_BRANCH_CONFLICT', `Branch is already checked out: ${targetBranch}`, {
|
|
111
|
+
workspaceRoot: workspace.rootPath,
|
|
112
|
+
branch: targetBranch,
|
|
113
|
+
baseBranch,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
const worktreeId = generatedId(context.idFactory);
|
|
117
|
+
const targetPath = path.resolve(context.dshHome, 'clutch-dsh-worktree', 'worktree', worktreeId);
|
|
118
|
+
// 创建前同时检查词法和物理目录边界,阻止配置、ID 或 symlink 将目标引回 Workspace 或带出插件根目录。
|
|
119
|
+
// Check lexical and physical directory boundaries before creation so configuration, IDs, or symlinks cannot redirect the target into the Workspace or outside the plugin root.
|
|
120
|
+
validateGeneratedPath(context, workspace.rootPath, targetPath, worktreeId);
|
|
121
|
+
await validatePhysicalGeneratedPath(context, workspace.rootPath, targetPath);
|
|
122
|
+
if (await pathExists(targetPath)) {
|
|
123
|
+
throw providerError('GIT_OPERATION_FAILED', `Generated Worktree path already exists: ${targetPath}`, {
|
|
124
|
+
workspaceRoot: workspace.rootPath,
|
|
125
|
+
targetPath,
|
|
126
|
+
worktreeId,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
// Git is the first external side effect; the sidecar mutation below is the relation commit point.
|
|
130
|
+
try {
|
|
131
|
+
await context.git.createWorktree(workspace.rootPath, targetPath, baseBranch, newBranch);
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw asGitError('create worktree', workspace.rootPath, targetPath, error);
|
|
135
|
+
}
|
|
136
|
+
const record = {
|
|
137
|
+
worktreeId,
|
|
138
|
+
workspaceId: input.workspaceId,
|
|
139
|
+
absolutePath: targetPath,
|
|
140
|
+
branch: targetBranch,
|
|
141
|
+
status: 'active',
|
|
142
|
+
};
|
|
143
|
+
try {
|
|
144
|
+
return await context.sidecar.mutate(input.workspaceId, (snapshot) => {
|
|
145
|
+
// Recheck ID and branch inside the serialized mutation so concurrent writes cannot create duplicate active records.
|
|
146
|
+
const idConflict = snapshot.worktrees.find((worktree) => worktree.worktreeId === worktreeId);
|
|
147
|
+
if (idConflict) {
|
|
148
|
+
throw providerError('SIDECAR_CORRUPT', `Generated Worktree ID is already recorded: ${worktreeId}`, {
|
|
149
|
+
worktreeId,
|
|
150
|
+
existingStatus: idConflict.status,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const branchConflict = snapshot.worktrees.find((worktree) => worktree.status === 'active' && worktree.branch === targetBranch);
|
|
154
|
+
if (branchConflict) {
|
|
155
|
+
throw providerError('WORKTREE_BRANCH_CONFLICT', `Branch is already recorded as active: ${targetBranch}`, {
|
|
156
|
+
branch: targetBranch,
|
|
157
|
+
worktreeId: branchConflict.worktreeId,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const next = {
|
|
161
|
+
...snapshot,
|
|
162
|
+
worktrees: [...snapshot.worktrees, record],
|
|
163
|
+
};
|
|
164
|
+
return { result: record, snapshot: next };
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const sidecarError = asSidecarError(error, input.workspaceId);
|
|
169
|
+
// Remove the new Worktree when sidecar commit fails; expose a sync-required error if compensation fails.
|
|
170
|
+
try {
|
|
171
|
+
await context.git.removeWorktree(workspace.rootPath, targetPath);
|
|
172
|
+
}
|
|
173
|
+
catch (cleanupError) {
|
|
174
|
+
throw providerError('SIDECAR_SYNC_REQUIRED', `Sidecar write failed and the newly created Worktree could not be cleaned up: ${targetPath}`, {
|
|
175
|
+
workspaceId: input.workspaceId,
|
|
176
|
+
workspaceRoot: workspace.rootPath,
|
|
177
|
+
targetPath,
|
|
178
|
+
sidecarError: sidecarError.message,
|
|
179
|
+
cleanupError: describeError(cleanupError),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
throw sidecarError;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Remove Git state first, then mark the relation removed while preserving detached bindings. */
|
|
186
|
+
export async function removeWorktree(context, input) {
|
|
187
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
188
|
+
let gitRemoved = false;
|
|
189
|
+
try {
|
|
190
|
+
await context.sidecar.mutate(input.workspaceId, async (snapshot) => {
|
|
191
|
+
const record = snapshot.worktrees.find((worktree) => worktree.worktreeId === input.worktreeId);
|
|
192
|
+
if (!record) {
|
|
193
|
+
throw providerError('WORKTREE_NOT_FOUND', `Worktree not found: ${input.worktreeId}`, {
|
|
194
|
+
worktreeId: input.worktreeId,
|
|
195
|
+
workspaceId: input.workspaceId,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (record.status === 'removed') {
|
|
199
|
+
throw providerError('WORKTREE_REMOVED', `Worktree has already been removed: ${input.worktreeId}`, {
|
|
200
|
+
worktreeId: input.worktreeId,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
await context.git.removeWorktree(workspace.rootPath, record.absolutePath);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
let stillRegistered;
|
|
208
|
+
try {
|
|
209
|
+
stillRegistered = false;
|
|
210
|
+
for (const worktree of await context.git.listWorktrees(workspace.rootPath)) {
|
|
211
|
+
if (await samePhysicalPath(worktree.absolutePath, record.absolutePath)) {
|
|
212
|
+
stillRegistered = true;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
throw asGitError('remove worktree', workspace.rootPath, record.absolutePath, error);
|
|
219
|
+
}
|
|
220
|
+
if (stillRegistered) {
|
|
221
|
+
throw asGitError('remove worktree', workspace.rootPath, record.absolutePath, error);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
gitRemoved = true;
|
|
225
|
+
// Preserve Worktree and binding history while changing lifecycle only; DSH Sessions are never read or deleted here.
|
|
226
|
+
const next = {
|
|
227
|
+
...snapshot,
|
|
228
|
+
worktrees: snapshot.worktrees.map((candidate) => candidate.worktreeId === record.worktreeId ? { ...candidate, status: 'removed' } : candidate),
|
|
229
|
+
bindings: snapshot.bindings.map((binding) => binding.worktreeId === record.worktreeId && binding.status === 'active'
|
|
230
|
+
? { ...binding, status: 'detached' }
|
|
231
|
+
: binding),
|
|
232
|
+
};
|
|
233
|
+
return { result: undefined, snapshot: next };
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
if (gitRemoved) {
|
|
238
|
+
// Git removal cannot be rolled back here, so expose the divergence for a safe retry.
|
|
239
|
+
const sidecarError = asSidecarError(error, input.workspaceId);
|
|
240
|
+
throw providerError('SIDECAR_SYNC_REQUIRED', `Git removed Worktree ${input.worktreeId}, but sidecar synchronization failed`, {
|
|
241
|
+
workspaceId: input.workspaceId,
|
|
242
|
+
worktreeId: input.worktreeId,
|
|
243
|
+
workspaceRoot: workspace.rootPath,
|
|
244
|
+
sidecarError: sidecarError.message,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
export async function insertWorktreeBefore(context, input) {
|
|
251
|
+
await requireWorkspace(context, input.workspaceId);
|
|
252
|
+
try {
|
|
253
|
+
return await context.sidecar.insertWorktreeBefore(input.workspaceId, input.worktreeId, input.beforeWorktreeId);
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
throw asSidecarError(error, input.workspaceId);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=manager-worktrees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager-worktrees.js","sourceRoot":"","sources":["../../src/manage/manager-worktrees.ts"],"names":[],"mappings":"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"}
|
package/lib/manage/manager.d.ts
CHANGED
|
@@ -1,86 +1,49 @@
|
|
|
1
|
-
import type { BranchRecord, SessionBinding, WorktreeRecord, WorkspaceId } from '../contract/index.js';
|
|
1
|
+
import type { BranchRecord, SessionBinding, WorktreeId, WorktreeRecord, WorkspaceId } from '../contract/index.js';
|
|
2
2
|
import type { WorktreeManagerOptions, WorktreeManagerService } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Worktree/Session 用例编排器:DSH 只提供权威只读事实,Git 承担 worktree 副作用,sidecar 只保存外部关系。
|
|
5
5
|
* Worktree/Session use-case orchestrator: DSH supplies authoritative read-only facts, Git owns worktree side effects, and the sidecar stores only external relations.
|
|
6
|
+
*
|
|
7
|
+
* The public Manager contract stays here while the worktree and Session
|
|
8
|
+
* workflows live in responsibility-specific internal modules.
|
|
6
9
|
*/
|
|
7
10
|
export declare class WorktreeManagerImpl implements WorktreeManagerService {
|
|
8
|
-
private readonly
|
|
9
|
-
|
|
10
|
-
private readonly git;
|
|
11
|
-
private readonly sidecar;
|
|
12
|
-
private readonly idFactory;
|
|
13
|
-
/**
|
|
14
|
-
* 使用可注入端口组合 Manager;未注入的 Git 与 sidecar 端口会绑定到本地 Provider 实现。
|
|
15
|
-
* Composes the Manager from injectable ports; omitted Git and sidecar ports bind to local Provider implementations.
|
|
16
|
-
*/
|
|
11
|
+
private readonly context;
|
|
12
|
+
/** Compose the Manager from injectable ports while keeping local defaults. */
|
|
17
13
|
constructor(options: WorktreeManagerOptions);
|
|
18
|
-
/**
|
|
19
|
-
* 返回含 active/removed 状态的 sidecar Worktree 投影。
|
|
20
|
-
* Returns the sidecar Worktree projection, including active/removed state.
|
|
21
|
-
*/
|
|
22
14
|
listWorktrees(input: {
|
|
23
|
-
workspaceId: WorkspaceId;
|
|
15
|
+
readonly workspaceId: WorkspaceId;
|
|
24
16
|
}): Promise<readonly WorktreeRecord[]>;
|
|
25
|
-
/**
|
|
26
|
-
* 将本地分支与所有 Git worktree 联合投影,以便调用方禁用已 checkout 的分支。
|
|
27
|
-
* Projects local branches against every Git worktree so callers can disable branches that are already checked out.
|
|
28
|
-
*/
|
|
29
17
|
listBranches(input: {
|
|
30
|
-
workspaceId: WorkspaceId;
|
|
18
|
+
readonly workspaceId: WorkspaceId;
|
|
31
19
|
}): Promise<readonly BranchRecord[]>;
|
|
32
|
-
/**
|
|
33
|
-
* 创建受 DSH Home 边界管理的 Git Worktree,并仅在 sidecar 提交成功后返回;已 checkout 的
|
|
34
|
-
* base branch 可以通过 newBranch 创建新的本地 branch。持久化失败会补偿删除 Git Worktree。
|
|
35
|
-
* Creates a Git Worktree inside the managed DSH Home boundary and returns only after sidecar
|
|
36
|
-
* commit. An already checked-out base branch can create a new local branch through newBranch.
|
|
37
|
-
* Persistence failure compensates by removing the Git Worktree.
|
|
38
|
-
*/
|
|
39
20
|
createWorktree(input: {
|
|
40
|
-
workspaceId: WorkspaceId;
|
|
41
|
-
branch: string;
|
|
42
|
-
newBranch?: string;
|
|
21
|
+
readonly workspaceId: WorkspaceId;
|
|
22
|
+
readonly branch: string;
|
|
23
|
+
readonly newBranch?: string;
|
|
43
24
|
}): Promise<WorktreeRecord>;
|
|
44
|
-
/**
|
|
45
|
-
* 先删除 Git Worktree,再原子标记 record 为 removed 并保留 detached bindings;失败阶段决定该操作是否可直接重试或需要同步修复。
|
|
46
|
-
* Removes the Git Worktree first, then atomically marks its record removed and preserves detached bindings; the failure phase determines whether retry or synchronization repair is required.
|
|
47
|
-
*/
|
|
48
25
|
removeWorktree(input: {
|
|
49
|
-
workspaceId: WorkspaceId;
|
|
50
|
-
worktreeId: string;
|
|
26
|
+
readonly workspaceId: WorkspaceId;
|
|
27
|
+
readonly worktreeId: string;
|
|
51
28
|
}): Promise<void>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
29
|
+
insertWorktreeBefore(input: {
|
|
30
|
+
readonly workspaceId: WorkspaceId;
|
|
31
|
+
readonly worktreeId: WorktreeId;
|
|
32
|
+
readonly beforeWorktreeId?: WorktreeId;
|
|
33
|
+
}): Promise<readonly WorktreeId[]>;
|
|
56
34
|
listBindings(input: {
|
|
57
|
-
workspaceId: WorkspaceId;
|
|
35
|
+
readonly workspaceId: WorkspaceId;
|
|
58
36
|
}): Promise<readonly SessionBinding[]>;
|
|
59
|
-
/**
|
|
60
|
-
* 将已由 DSH 创建且 cwd 指向目标 Worktree 的 Session 绑定到 sidecar;相同 active 请求幂等,其他既有关系一律冲突。
|
|
61
|
-
* Binds a DSH-created Session whose cwd already targets the Worktree; the same active request is idempotent and every other existing relation conflicts.
|
|
62
|
-
*/
|
|
63
37
|
bindSession(input: {
|
|
64
|
-
workspaceId: WorkspaceId;
|
|
65
|
-
worktreeId: string;
|
|
66
|
-
sessionId: string;
|
|
38
|
+
readonly workspaceId: WorkspaceId;
|
|
39
|
+
readonly worktreeId: string;
|
|
40
|
+
readonly sessionId: string;
|
|
67
41
|
}): Promise<SessionBinding>;
|
|
68
|
-
/**
|
|
69
|
-
* 派生一次执行的 cwd:无 binding 或 detached 时使用 Workspace root,active 时要求对应 Worktree 记录和目录均有效。
|
|
70
|
-
* Derives cwd for one execution: no binding or detached uses the Workspace root, while active requires both a valid Worktree record and directory.
|
|
71
|
-
*/
|
|
72
42
|
resolveRuntimeCwd(input: {
|
|
73
|
-
workspaceId: WorkspaceId;
|
|
74
|
-
sessionId: string;
|
|
43
|
+
readonly workspaceId: WorkspaceId;
|
|
44
|
+
readonly sessionId: string;
|
|
75
45
|
}): Promise<string>;
|
|
76
|
-
private requireWorkspace;
|
|
77
|
-
private validateGeneratedPath;
|
|
78
|
-
private validatePhysicalGeneratedPath;
|
|
79
|
-
private assertSessionMatchesWorkspace;
|
|
80
46
|
}
|
|
81
|
-
/**
|
|
82
|
-
* 创建实现 `WorktreeManagerService` 的默认编排器,同时保留所有底层端口的注入能力。
|
|
83
|
-
* Creates the default `WorktreeManagerService` orchestrator while preserving injection for every low-level port.
|
|
84
|
-
*/
|
|
47
|
+
/** Create the default WorktreeManagerService while preserving low-level port injection. */
|
|
85
48
|
export declare function createWorktreeManager(options: WorktreeManagerOptions): WorktreeManagerService;
|
|
86
49
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAiBlH,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEjF;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD,8EAA8E;gBAClE,OAAO,EAAE,sBAAsB;IAgB3C,aAAa,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IAI/F,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IAI5F,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3B,cAAc,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxG,oBAAoB,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;QAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;KACxC,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC;IAIlC,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IAI9F,WAAW,CAAC,KAAK,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3B,iBAAiB,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAG7G;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,sBAAsB,CAE7F"}
|