@cerbur/clutch-dsh-worktree 0.1.5 → 0.1.6
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 +66 -15
- package/README.zh.md +59 -13
- package/lib/client/WorktreeHeroContext.d.ts +1 -1
- package/lib/client/WorktreeHeroContext.js +1 -1
- package/lib/client/WorktreeSurface.d.ts +1 -1
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +348 -85
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +3 -0
- package/lib/client/entry.js.map +1 -1
- package/lib/client/locales.d.ts +24 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +26 -2
- package/lib/client/locales.js.map +1 -1
- package/lib/client/virtual-workspace-membership.js +1 -1
- package/lib/client/virtual-workspace-membership.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +2 -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-error-copy.d.ts.map +1 -1
- package/lib/client/worktree-error-copy.js +6 -0
- package/lib/client/worktree-error-copy.js.map +1 -1
- package/lib/client/worktree-expand-state.d.ts +33 -0
- package/lib/client/worktree-expand-state.d.ts.map +1 -0
- package/lib/client/worktree-expand-state.js +83 -0
- package/lib/client/worktree-expand-state.js.map +1 -0
- package/lib/client/worktree-session-position.d.ts +2 -0
- package/lib/client/worktree-session-position.d.ts.map +1 -0
- package/lib/client/worktree-session-position.js +11 -0
- package/lib/client/worktree-session-position.js.map +1 -0
- package/lib/client/worktree-surface-dialogs.d.ts +1 -1
- package/lib/client/worktree-surface-dialogs.d.ts.map +1 -1
- package/lib/client/worktree-surface-dialogs.js +30 -13
- package/lib/client/worktree-surface-dialogs.js.map +1 -1
- package/lib/client/worktree-surface-rows.d.ts +2 -2
- package/lib/client/worktree-surface-rows.d.ts.map +1 -1
- package/lib/client/worktree-surface-rows.js +5 -5
- package/lib/client/worktree-surface-rows.js.map +1 -1
- package/lib/client/worktree-surface-selectors.d.ts +16 -0
- package/lib/client/worktree-surface-selectors.d.ts.map +1 -1
- package/lib/client/worktree-surface-selectors.js +54 -0
- package/lib/client/worktree-surface-selectors.js.map +1 -1
- package/lib/client/worktree-surface-types.d.ts +28 -1
- package/lib/client/worktree-surface-types.d.ts.map +1 -1
- package/lib/client/worktree-view-actions.d.ts +3 -0
- package/lib/client/worktree-view-actions.d.ts.map +1 -1
- package/lib/client/worktree-view-actions.js +3 -0
- package/lib/client/worktree-view-actions.js.map +1 -1
- package/lib/client/worktree-view-read.d.ts +8 -0
- package/lib/client/worktree-view-read.d.ts.map +1 -1
- package/lib/client/worktree-view-read.js +19 -0
- package/lib/client/worktree-view-read.js.map +1 -1
- package/lib/client.js +612 -101
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +14 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +22 -2
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +4 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +2 -0
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +8 -1
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +12 -0
- package/lib/host/service.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/manage/manager-support.d.ts +2 -0
- package/lib/manage/manager-support.d.ts.map +1 -1
- package/lib/manage/manager-support.js +9 -0
- package/lib/manage/manager-support.js.map +1 -1
- package/lib/manage/manager-worktrees.d.ts +10 -1
- package/lib/manage/manager-worktrees.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.js +121 -5
- package/lib/manage/manager-worktrees.js.map +1 -1
- package/lib/manage/manager.d.ts +8 -1
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +7 -1
- package/lib/manage/manager.js.map +1 -1
- package/lib/provider/git.d.ts +2 -0
- package/lib/provider/git.d.ts.map +1 -1
- package/lib/provider/git.js +23 -1
- package/lib/provider/git.js.map +1 -1
- package/lib/provider/index.d.ts +1 -1
- package/lib/provider/index.d.ts.map +1 -1
- package/lib/provider/index.js +1 -1
- package/lib/provider/index.js.map +1 -1
- package/lib/provider/sidecar-schema.d.ts +1 -1
- package/lib/provider/sidecar-schema.d.ts.map +1 -1
- package/lib/provider/sidecar-schema.js +33 -37
- package/lib/provider/sidecar-schema.js.map +1 -1
- package/lib/provider/sidecar.d.ts.map +1 -1
- package/lib/provider/sidecar.js +3 -1
- package/lib/provider/sidecar.js.map +1 -1
- package/lib/provider/types.d.ts +9 -1
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js +2 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/typert.host.js +115 -21
- package/lib/typert.remote-client.d.ts +5 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +115 -21
- package/package.json +30 -30
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { providerError } from '../provider/types.js';
|
|
3
|
-
import { asGitError, asSidecarError, describeError, generatedId, pathExists, requireWorkspace, samePhysicalPath, validateGeneratedPath, validatePhysicalGeneratedPath, } from './manager-support.js';
|
|
3
|
+
import { asGitError, asSidecarError, canonicalPath, describeError, generatedId, isDirectory, pathExists, requireWorkspace, samePhysicalPath, validateGeneratedPath, validatePhysicalGeneratedPath, } from './manager-support.js';
|
|
4
4
|
/** Return the sidecar Worktree projection with runtime Git health attached. */
|
|
5
5
|
export async function listWorktrees(context, input) {
|
|
6
6
|
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
@@ -38,19 +38,47 @@ export async function listWorktrees(context, input) {
|
|
|
38
38
|
}
|
|
39
39
|
return nextRecords;
|
|
40
40
|
}
|
|
41
|
+
/** List branch-attached Git Worktrees that have no sidecar record at the same physical path. */
|
|
42
|
+
export async function listImportCandidates(context, input) {
|
|
43
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
44
|
+
await context.git.validateRepository(workspace.rootPath);
|
|
45
|
+
const [gitWorktrees, snapshot] = await Promise.all([
|
|
46
|
+
context.git.listWorktrees(workspace.rootPath),
|
|
47
|
+
context.sidecar.read(input.workspaceId),
|
|
48
|
+
]);
|
|
49
|
+
const candidates = [];
|
|
50
|
+
for (const worktree of gitWorktrees) {
|
|
51
|
+
if (!worktree.branch || await samePhysicalPath(worktree.absolutePath, workspace.rootPath))
|
|
52
|
+
continue;
|
|
53
|
+
let managed = false;
|
|
54
|
+
for (const record of snapshot.worktrees) {
|
|
55
|
+
if (await samePhysicalPath(worktree.absolutePath, record.absolutePath)) {
|
|
56
|
+
managed = true;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!managed) {
|
|
61
|
+
candidates.push({ absolutePath: await canonicalPath(worktree.absolutePath), branch: worktree.branch });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return candidates;
|
|
65
|
+
}
|
|
41
66
|
/** Project local branches against all Git worktrees and mark checkout/current state. */
|
|
42
67
|
export async function listBranches(context, input) {
|
|
43
68
|
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
44
69
|
await context.git.validateRepository(workspace.rootPath);
|
|
70
|
+
const gitRoot = context.git.resolveRepositoryRoot
|
|
71
|
+
? await context.git.resolveRepositoryRoot(workspace.rootPath)
|
|
72
|
+
: workspace.rootPath;
|
|
45
73
|
const [branches, worktrees] = await Promise.all([
|
|
46
|
-
context.git.listBranches(
|
|
47
|
-
context.git.listWorktrees(
|
|
74
|
+
context.git.listBranches(gitRoot),
|
|
75
|
+
context.git.listWorktrees(gitRoot),
|
|
48
76
|
]);
|
|
49
|
-
// `checkedOut` covers the main Workspace and all linked
|
|
77
|
+
// `checkedOut` covers the main Workspace and all linked worktrees; `isCurrent` identifies the Git root's worktree.
|
|
50
78
|
const checkedOut = new Set(worktrees.flatMap((worktree) => (worktree.branch ? [worktree.branch] : [])));
|
|
51
79
|
let currentBranch;
|
|
52
80
|
for (const worktree of worktrees) {
|
|
53
|
-
if (await samePhysicalPath(worktree.absolutePath,
|
|
81
|
+
if (await samePhysicalPath(worktree.absolutePath, gitRoot)) {
|
|
54
82
|
currentBranch = worktree.branch;
|
|
55
83
|
break;
|
|
56
84
|
}
|
|
@@ -138,6 +166,7 @@ export async function createWorktree(context, input) {
|
|
|
138
166
|
workspaceId: input.workspaceId,
|
|
139
167
|
absolutePath: targetPath,
|
|
140
168
|
branch: targetBranch,
|
|
169
|
+
source: 'plugin',
|
|
141
170
|
status: 'active',
|
|
142
171
|
};
|
|
143
172
|
try {
|
|
@@ -182,6 +211,93 @@ export async function createWorktree(context, input) {
|
|
|
182
211
|
throw sidecarError;
|
|
183
212
|
}
|
|
184
213
|
}
|
|
214
|
+
/** Register a pre-existing branch-attached Git Worktree without performing a Git mutation. */
|
|
215
|
+
export async function importWorktree(context, input) {
|
|
216
|
+
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
217
|
+
if (typeof input.absolutePath !== 'string' || !path.isAbsolute(input.absolutePath)) {
|
|
218
|
+
throw providerError('WORKTREE_IMPORT_INVALID', 'An absolute Worktree path is required', {
|
|
219
|
+
workspaceId: input.workspaceId,
|
|
220
|
+
absolutePath: typeof input.absolutePath === 'string' ? input.absolutePath : '',
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const requestedPath = path.resolve(input.absolutePath);
|
|
224
|
+
if (!(await isDirectory(requestedPath))) {
|
|
225
|
+
throw providerError('WORKTREE_IMPORT_INVALID', `Worktree path is not a directory: ${requestedPath}`, {
|
|
226
|
+
workspaceId: input.workspaceId,
|
|
227
|
+
absolutePath: requestedPath,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
await context.git.validateRepository(workspace.rootPath);
|
|
231
|
+
const gitWorktrees = await context.git.listWorktrees(workspace.rootPath);
|
|
232
|
+
const gitWorktree = await findGitWorktreeByPhysicalPath(gitWorktrees, requestedPath);
|
|
233
|
+
if (!gitWorktree || !gitWorktree.branch || await samePhysicalPath(gitWorktree.absolutePath, workspace.rootPath)) {
|
|
234
|
+
throw providerError('WORKTREE_IMPORT_INVALID', `Path is not an importable Worktree: ${requestedPath}`, {
|
|
235
|
+
workspaceId: input.workspaceId,
|
|
236
|
+
absolutePath: requestedPath,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
const normalizedPath = await canonicalPath(gitWorktree.absolutePath);
|
|
240
|
+
const current = await context.sidecar.read(input.workspaceId);
|
|
241
|
+
const existing = await findSidecarWorktreeByPhysicalPath(current.worktrees, normalizedPath);
|
|
242
|
+
if (existing)
|
|
243
|
+
return importConflictOrExisting(existing, input.workspaceId, normalizedPath);
|
|
244
|
+
const worktreeId = generatedId(context.idFactory);
|
|
245
|
+
try {
|
|
246
|
+
return await context.sidecar.mutate(input.workspaceId, async (snapshot) => {
|
|
247
|
+
await context.git.validateRepository(workspace.rootPath);
|
|
248
|
+
const liveWorktree = await findGitWorktreeByPhysicalPath(await context.git.listWorktrees(workspace.rootPath), normalizedPath);
|
|
249
|
+
if (!liveWorktree ||
|
|
250
|
+
!liveWorktree.branch ||
|
|
251
|
+
await samePhysicalPath(liveWorktree.absolutePath, workspace.rootPath)) {
|
|
252
|
+
throw providerError('WORKTREE_IMPORT_INVALID', `Path is not an importable Worktree: ${normalizedPath}`, {
|
|
253
|
+
workspaceId: input.workspaceId,
|
|
254
|
+
absolutePath: normalizedPath,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
const livePath = await canonicalPath(liveWorktree.absolutePath);
|
|
258
|
+
const concurrent = await findSidecarWorktreeByPhysicalPath(snapshot.worktrees, normalizedPath);
|
|
259
|
+
if (concurrent)
|
|
260
|
+
return { result: importConflictOrExisting(concurrent, input.workspaceId, normalizedPath), snapshot, changed: false };
|
|
261
|
+
if (snapshot.worktrees.some((candidate) => candidate.worktreeId === worktreeId)) {
|
|
262
|
+
throw providerError('SIDECAR_CORRUPT', `Generated Worktree ID is already recorded: ${worktreeId}`, { worktreeId });
|
|
263
|
+
}
|
|
264
|
+
const record = {
|
|
265
|
+
worktreeId,
|
|
266
|
+
workspaceId: input.workspaceId,
|
|
267
|
+
absolutePath: livePath,
|
|
268
|
+
branch: liveWorktree.branch,
|
|
269
|
+
source: 'external',
|
|
270
|
+
status: 'active',
|
|
271
|
+
};
|
|
272
|
+
return { result: record, snapshot: { ...snapshot, worktrees: [...snapshot.worktrees, record] } };
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
throw asSidecarError(error, input.workspaceId);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
async function findGitWorktreeByPhysicalPath(worktrees, absolutePath) {
|
|
280
|
+
for (const worktree of worktrees) {
|
|
281
|
+
if (await samePhysicalPath(worktree.absolutePath, absolutePath))
|
|
282
|
+
return worktree;
|
|
283
|
+
}
|
|
284
|
+
return undefined;
|
|
285
|
+
}
|
|
286
|
+
async function findSidecarWorktreeByPhysicalPath(worktrees, absolutePath) {
|
|
287
|
+
return findGitWorktreeByPhysicalPath(worktrees, absolutePath);
|
|
288
|
+
}
|
|
289
|
+
function importConflictOrExisting(existing, workspaceId, absolutePath) {
|
|
290
|
+
if (existing.status === 'active' && existing.source === 'external' && existing.workspaceId === workspaceId) {
|
|
291
|
+
return existing;
|
|
292
|
+
}
|
|
293
|
+
throw providerError('WORKTREE_ALREADY_MANAGED', `Worktree path is already managed: ${absolutePath}`, {
|
|
294
|
+
workspaceId,
|
|
295
|
+
absolutePath,
|
|
296
|
+
worktreeId: existing.worktreeId,
|
|
297
|
+
source: existing.source,
|
|
298
|
+
status: existing.status,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
185
301
|
/** Remove Git state first, then mark the relation removed while preserving detached bindings. */
|
|
186
302
|
export async function removeWorktree(context, input) {
|
|
187
303
|
const workspace = await requireWorkspace(context, input.workspaceId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager-worktrees.js","sourceRoot":"","sources":["../../src/manage/manager-worktrees.ts"],"names":[],"mappings":"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"}
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import type { BranchRecord, SessionBinding, WorktreeId, WorktreeRecord, WorkspaceId } from '../contract/index.js';
|
|
1
|
+
import type { BranchRecord, SessionBinding, WorktreeId, WorktreeImportCandidate, 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 只保存外部关系。
|
|
@@ -14,6 +14,9 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
|
|
|
14
14
|
listWorktrees(input: {
|
|
15
15
|
readonly workspaceId: WorkspaceId;
|
|
16
16
|
}): Promise<readonly WorktreeRecord[]>;
|
|
17
|
+
listImportCandidates(input: {
|
|
18
|
+
readonly workspaceId: WorkspaceId;
|
|
19
|
+
}): Promise<readonly WorktreeImportCandidate[]>;
|
|
17
20
|
listBranches(input: {
|
|
18
21
|
readonly workspaceId: WorkspaceId;
|
|
19
22
|
}): Promise<readonly BranchRecord[]>;
|
|
@@ -22,6 +25,10 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
|
|
|
22
25
|
readonly branch: string;
|
|
23
26
|
readonly newBranch?: string;
|
|
24
27
|
}): Promise<WorktreeRecord>;
|
|
28
|
+
importWorktree(input: {
|
|
29
|
+
readonly workspaceId: WorkspaceId;
|
|
30
|
+
readonly absolutePath: string;
|
|
31
|
+
}): Promise<WorktreeRecord>;
|
|
25
32
|
removeWorktree(input: {
|
|
26
33
|
readonly workspaceId: WorkspaceId;
|
|
27
34
|
readonly worktreeId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAmB9B,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,oBAAoB,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;KACnC,GAAG,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC;IAI/C,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;QACpB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,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"}
|
package/lib/manage/manager.js
CHANGED
|
@@ -4,7 +4,7 @@ import { LocalGitAdapter } from '../provider/git.js';
|
|
|
4
4
|
import { WorkspaceShardedSidecarRepository } from '../provider/sidecar.js';
|
|
5
5
|
import { providerError } from '../provider/types.js';
|
|
6
6
|
import { bindSession, listBindings, resolveRuntimeCwd, } from './manager-sessions.js';
|
|
7
|
-
import { createWorktree, insertWorktreeBefore, listBranches, listWorktrees, removeWorktree, } from './manager-worktrees.js';
|
|
7
|
+
import { createWorktree, importWorktree, insertWorktreeBefore, listBranches, listImportCandidates, listWorktrees, removeWorktree, } from './manager-worktrees.js';
|
|
8
8
|
/**
|
|
9
9
|
* Worktree/Session 用例编排器:DSH 只提供权威只读事实,Git 承担 worktree 副作用,sidecar 只保存外部关系。
|
|
10
10
|
* Worktree/Session use-case orchestrator: DSH supplies authoritative read-only facts, Git owns worktree side effects, and the sidecar stores only external relations.
|
|
@@ -33,12 +33,18 @@ export class WorktreeManagerImpl {
|
|
|
33
33
|
listWorktrees(input) {
|
|
34
34
|
return listWorktrees(this.context, input);
|
|
35
35
|
}
|
|
36
|
+
listImportCandidates(input) {
|
|
37
|
+
return listImportCandidates(this.context, input);
|
|
38
|
+
}
|
|
36
39
|
listBranches(input) {
|
|
37
40
|
return listBranches(this.context, input);
|
|
38
41
|
}
|
|
39
42
|
createWorktree(input) {
|
|
40
43
|
return createWorktree(this.context, input);
|
|
41
44
|
}
|
|
45
|
+
importWorktree(input) {
|
|
46
|
+
return importWorktree(this.context, input);
|
|
47
|
+
}
|
|
42
48
|
removeWorktree(input) {
|
|
43
49
|
return removeWorktree(this.context, input);
|
|
44
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAGhC;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IACb,OAAO,CAAyB;IAEjD,8EAA8E;IAC9E,YAAY,OAA+B;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,aAAa,CAAC,qBAAqB,EAAE,mCAAmC,EAAE;gBAC9E,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO;YACP,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,eAAe,EAAE;YACzC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,iCAAiC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC9E,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,UAAU,EAAE,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,KAA4C;QACxD,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,oBAAoB,CAAC,KAEpB;QACC,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,YAAY,CAAC,KAA4C;QACvD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc,CAAC,KAId;QACC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,KAGd;QACC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,KAAyE;QACtF,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAAC,KAIpB;QACC,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,YAAY,CAAC,KAA4C;QACvD,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW,CAAC,KAIX;QACC,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,KAAwE;QACxF,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;CACF;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/lib/provider/git.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
|
19
19
|
* initial commit” so callers receive distinct repair semantics.
|
|
20
20
|
*/
|
|
21
21
|
validateRepository(workspaceRoot: string): Promise<void>;
|
|
22
|
+
/** Resolve the Git worktree/repository root for repository-wide reads. */
|
|
23
|
+
resolveRepositoryRoot(workspaceRoot: string): Promise<string>;
|
|
22
24
|
/**
|
|
23
25
|
* 仅列出 `refs/heads/` 下的本地分支;NUL 分隔避免依赖面向人的展示格式或空白切分。
|
|
24
26
|
* Lists local branches under `refs/heads/` only; NUL delimiting avoids
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/provider/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/provider/git.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUtE,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAoLD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,sBAA2B;IAIhD;;;;OAIG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C9D,0EAA0E;IACpE,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBnE;;;;OAIG;IACG,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAgBrE;;;;OAIG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAa/E;;;;OAIG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;OAIG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO/E"}
|
package/lib/provider/git.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { execFile as execFileCallback } from 'node:child_process';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import { promisify } from 'node:util';
|
|
3
|
-
import { providerError } from './types.js';
|
|
4
|
+
import { WorktreeProviderError, providerError } from './types.js';
|
|
4
5
|
const execFile = promisify(execFileCallback);
|
|
5
6
|
// Git 的原始进程证据只在本模块内流转;对外统一转换为稳定的 Provider 错误词汇。
|
|
6
7
|
// Raw Git process evidence stays inside this module and is normalized to the
|
|
@@ -182,6 +183,27 @@ export class LocalGitAdapter {
|
|
|
182
183
|
throw error;
|
|
183
184
|
}
|
|
184
185
|
}
|
|
186
|
+
/** Resolve the Git worktree/repository root for repository-wide reads. */
|
|
187
|
+
async resolveRepositoryRoot(workspaceRoot) {
|
|
188
|
+
try {
|
|
189
|
+
const rootResult = await runGit(['rev-parse', '--show-toplevel'], workspaceRoot, this.executable);
|
|
190
|
+
const repositoryRoot = rootResult.stdout.trim();
|
|
191
|
+
if (repositoryRoot.length === 0) {
|
|
192
|
+
throw providerError('GIT_OPERATION_FAILED', `Git did not return a repository root: ${workspaceRoot}`, {
|
|
193
|
+
workspaceRoot,
|
|
194
|
+
operation: 'resolve repository root',
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return path.isAbsolute(repositoryRoot)
|
|
198
|
+
? path.resolve(repositoryRoot)
|
|
199
|
+
: path.resolve(workspaceRoot, repositoryRoot);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
if (error instanceof WorktreeProviderError)
|
|
203
|
+
throw error;
|
|
204
|
+
throw operationError('resolve repository root', workspaceRoot, undefined, undefined, error);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
185
207
|
/**
|
|
186
208
|
* 仅列出 `refs/heads/` 下的本地分支;NUL 分隔避免依赖面向人的展示格式或空白切分。
|
|
187
209
|
* Lists local branches under `refs/heads/` only; NUL delimiting avoids
|
package/lib/provider/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/provider/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/provider/git.ts"],"names":[],"mappings":"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"}
|
package/lib/provider/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { LocalGitAdapter } from './git.js';
|
|
10
10
|
export { WorkspaceShardedSidecarRepository, validateSidecarSnapshot, } from './sidecar.js';
|
|
11
|
-
export { SIDECAR_SCHEMA_VERSION, WorktreeProviderError, isWorktreeProviderError, providerError, } from './types.js';
|
|
11
|
+
export { SIDECAR_SCHEMA_VERSION, LEGACY_SIDECAR_SCHEMA_VERSION, WorktreeProviderError, isWorktreeProviderError, providerError, } from './types.js';
|
|
12
12
|
export type { DshReadAdapter, DshSessionSummary, DshWorkspaceSummary, GitWorktreeAdapter, GitWorktreeInfo, SidecarMutation, SidecarSnapshot, SidecarStore, } from './types.js';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/lib/provider/index.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export { LocalGitAdapter } from './git.js';
|
|
10
10
|
export { WorkspaceShardedSidecarRepository, validateSidecarSnapshot, } from './sidecar.js';
|
|
11
|
-
export { SIDECAR_SCHEMA_VERSION, WorktreeProviderError, isWorktreeProviderError, providerError, } from './types.js';
|
|
11
|
+
export { SIDECAR_SCHEMA_VERSION, LEGACY_SIDECAR_SCHEMA_VERSION, WorktreeProviderError, isWorktreeProviderError, providerError, } from './types.js';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SidecarSnapshot, WorktreeProviderError } from './types.js';
|
|
2
2
|
export declare function corrupt(pathname: string, message: string, details?: Record<string, string | number>): WorktreeProviderError;
|
|
3
|
-
/** Validate
|
|
3
|
+
/** Validate v1/v2 on-disk data and return the current in-memory v2 projection. */
|
|
4
4
|
export declare function validateSidecarSnapshot(value: unknown, pathname: string, generatedWorktreeRoot?: string): SidecarSnapshot;
|
|
5
5
|
export declare function emptySnapshot(workspaceId: string): SidecarSnapshot;
|
|
6
6
|
//# sourceMappingURL=sidecar-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar-schema.d.ts","sourceRoot":"","sources":["../../src/provider/sidecar-schema.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"sidecar-schema.d.ts","sourceRoot":"","sources":["../../src/provider/sidecar-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,eAAe,EACpB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAepB,wBAAgB,OAAO,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAC5C,qBAAqB,CAEvB;AAyDD,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,eAAe,CAyDjB;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAOlE"}
|
|
@@ -1,37 +1,29 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { SIDECAR_SCHEMA_VERSION, providerError, } from './types.js';
|
|
3
|
-
const
|
|
2
|
+
import { LEGACY_SIDECAR_SCHEMA_VERSION, SIDECAR_SCHEMA_VERSION, providerError, } from './types.js';
|
|
3
|
+
const LEGACY_WORKTREE_KEYS = ['absolutePath', 'branch', 'status', 'workspaceId', 'worktreeId'];
|
|
4
|
+
const WORKTREE_KEYS = ['absolutePath', 'branch', 'source', 'status', 'workspaceId', 'worktreeId'];
|
|
4
5
|
const BINDING_KEYS = ['sessionId', 'status', 'workspaceId', 'worktreeId'];
|
|
5
6
|
const SNAPSHOT_KEYS = ['bindings', 'schemaVersion', 'workspaceId', 'worktrees'];
|
|
6
7
|
function isObject(value) {
|
|
7
8
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
8
9
|
}
|
|
9
|
-
/*
|
|
10
|
-
* 每个 schema version 使用精确字段白名单,避免新版或注入字段被旧代码静默接受、随后在
|
|
11
|
-
* 重写时丢失。格式演进必须显式提升 schema version。
|
|
12
|
-
*
|
|
13
|
-
* Each schema version uses an exact key allowlist so newer or injected fields
|
|
14
|
-
* are not silently accepted and then lost on rewrite. Format evolution must
|
|
15
|
-
* be represented by an explicit schema-version change.
|
|
16
|
-
*/
|
|
17
10
|
function hasExactKeys(value, keys) {
|
|
18
11
|
return JSON.stringify(Object.keys(value).sort()) === JSON.stringify([...keys].sort());
|
|
19
12
|
}
|
|
20
|
-
// 可读取但不满足 schema/invariant 的数据属于 `SIDECAR_CORRUPT`;文件系统故障另报 `SIDECAR_UNAVAILABLE`。
|
|
21
|
-
// Readable data that violates the schema or invariants is `SIDECAR_CORRUPT`;
|
|
22
|
-
// filesystem failures are reported separately as `SIDECAR_UNAVAILABLE`.
|
|
23
13
|
export function corrupt(pathname, message, details = {}) {
|
|
24
14
|
return providerError('SIDECAR_CORRUPT', `${message}: ${pathname}`, { path: pathname, ...details });
|
|
25
15
|
}
|
|
26
|
-
function assertWorktreeRecord(value, pathname) {
|
|
16
|
+
function assertWorktreeRecord(value, pathname, schemaVersion) {
|
|
17
|
+
const legacy = schemaVersion === LEGACY_SIDECAR_SCHEMA_VERSION;
|
|
27
18
|
if (!isObject(value) ||
|
|
28
|
-
!hasExactKeys(value, WORKTREE_KEYS) ||
|
|
19
|
+
!hasExactKeys(value, legacy ? LEGACY_WORKTREE_KEYS : WORKTREE_KEYS) ||
|
|
29
20
|
typeof value.worktreeId !== 'string' ||
|
|
30
21
|
typeof value.workspaceId !== 'string' ||
|
|
31
22
|
typeof value.absolutePath !== 'string' ||
|
|
32
23
|
!path.isAbsolute(value.absolutePath) ||
|
|
33
24
|
typeof value.branch !== 'string' ||
|
|
34
|
-
(value.status !== 'active' && value.status !== 'removed')
|
|
25
|
+
(value.status !== 'active' && value.status !== 'removed') ||
|
|
26
|
+
(!legacy && value.source !== 'plugin' && value.source !== 'external')) {
|
|
35
27
|
throw corrupt(pathname, 'invalid Worktree record');
|
|
36
28
|
}
|
|
37
29
|
}
|
|
@@ -45,23 +37,41 @@ function assertBinding(value, pathname) {
|
|
|
45
37
|
throw corrupt(pathname, 'invalid Session binding');
|
|
46
38
|
}
|
|
47
39
|
}
|
|
48
|
-
|
|
40
|
+
function normalizeWorktreeRecord(record, schemaVersion) {
|
|
41
|
+
return schemaVersion === LEGACY_SIDECAR_SCHEMA_VERSION
|
|
42
|
+
? { ...record, source: 'plugin' }
|
|
43
|
+
: record;
|
|
44
|
+
}
|
|
45
|
+
function assertGeneratedPluginPath(record, pathname, generatedWorktreeRoot) {
|
|
46
|
+
if (!generatedWorktreeRoot || record.source !== 'plugin')
|
|
47
|
+
return;
|
|
48
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(record.worktreeId)) {
|
|
49
|
+
throw corrupt(pathname, 'Worktree record has an invalid generated ID');
|
|
50
|
+
}
|
|
51
|
+
const expectedPath = path.resolve(generatedWorktreeRoot, record.worktreeId);
|
|
52
|
+
if (path.resolve(record.absolutePath) !== expectedPath) {
|
|
53
|
+
throw corrupt(pathname, 'Worktree path is outside the generated DSH Home root');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Validate v1/v2 on-disk data and return the current in-memory v2 projection. */
|
|
49
57
|
export function validateSidecarSnapshot(value, pathname, generatedWorktreeRoot) {
|
|
50
58
|
if (!isObject(value) ||
|
|
51
59
|
!hasExactKeys(value, SNAPSHOT_KEYS) ||
|
|
52
|
-
value.schemaVersion !== SIDECAR_SCHEMA_VERSION ||
|
|
60
|
+
(value.schemaVersion !== LEGACY_SIDECAR_SCHEMA_VERSION && value.schemaVersion !== SIDECAR_SCHEMA_VERSION) ||
|
|
53
61
|
typeof value.workspaceId !== 'string' ||
|
|
54
62
|
!Array.isArray(value.worktrees) ||
|
|
55
63
|
!Array.isArray(value.bindings)) {
|
|
56
64
|
throw corrupt(pathname, 'invalid sidecar snapshot');
|
|
57
65
|
}
|
|
66
|
+
const schemaVersion = value.schemaVersion;
|
|
58
67
|
for (const record of value.worktrees)
|
|
59
|
-
assertWorktreeRecord(record, pathname);
|
|
68
|
+
assertWorktreeRecord(record, pathname, schemaVersion);
|
|
60
69
|
for (const binding of value.bindings)
|
|
61
70
|
assertBinding(binding, pathname);
|
|
62
71
|
const workspaceId = value.workspaceId;
|
|
72
|
+
const worktrees = value.worktrees.map((record) => normalizeWorktreeRecord(record, schemaVersion));
|
|
63
73
|
const worktreeIds = new Set();
|
|
64
|
-
for (const record of
|
|
74
|
+
for (const record of worktrees) {
|
|
65
75
|
if (record.workspaceId !== workspaceId) {
|
|
66
76
|
throw corrupt(pathname, 'Worktree record belongs to another Workspace');
|
|
67
77
|
}
|
|
@@ -69,18 +79,7 @@ export function validateSidecarSnapshot(value, pathname, generatedWorktreeRoot)
|
|
|
69
79
|
throw corrupt(pathname, 'sidecar contains duplicate Worktree IDs');
|
|
70
80
|
}
|
|
71
81
|
worktreeIds.add(record.worktreeId);
|
|
72
|
-
|
|
73
|
-
// 这是词法路径约束;关键父目录的物理 symlink 边界由 I/O 前的检查单独负责。
|
|
74
|
-
// This is a lexical path constraint; physical symlink boundaries for the
|
|
75
|
-
// critical parent directories are checked separately before I/O.
|
|
76
|
-
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(record.worktreeId)) {
|
|
77
|
-
throw corrupt(pathname, 'Worktree record has an invalid generated ID');
|
|
78
|
-
}
|
|
79
|
-
const expectedPath = path.resolve(generatedWorktreeRoot, record.worktreeId);
|
|
80
|
-
if (path.resolve(record.absolutePath) !== expectedPath) {
|
|
81
|
-
throw corrupt(pathname, 'Worktree path is outside the generated DSH Home root');
|
|
82
|
-
}
|
|
83
|
-
}
|
|
82
|
+
assertGeneratedPluginPath(record, pathname, generatedWorktreeRoot);
|
|
84
83
|
}
|
|
85
84
|
for (const binding of value.bindings) {
|
|
86
85
|
if (binding.workspaceId !== workspaceId) {
|
|
@@ -96,10 +95,7 @@ export function validateSidecarSnapshot(value, pathname, generatedWorktreeRoot)
|
|
|
96
95
|
}
|
|
97
96
|
activeSessions.add(binding.sessionId);
|
|
98
97
|
}
|
|
99
|
-
|
|
100
|
-
// Only detached bindings may retain a relationship to a non-active Worktree;
|
|
101
|
-
// an active relationship is never silently downgraded.
|
|
102
|
-
const worktreeStatus = new Map(value.worktrees.map((record) => [record.worktreeId, record.status]));
|
|
98
|
+
const worktreeStatus = new Map(worktrees.map((record) => [record.worktreeId, record.status]));
|
|
103
99
|
for (const binding of value.bindings) {
|
|
104
100
|
if (binding.status === 'active' && worktreeStatus.get(binding.worktreeId) !== 'active') {
|
|
105
101
|
throw corrupt(pathname, 'active binding does not point to an active Worktree');
|
|
@@ -108,7 +104,7 @@ export function validateSidecarSnapshot(value, pathname, generatedWorktreeRoot)
|
|
|
108
104
|
return {
|
|
109
105
|
schemaVersion: SIDECAR_SCHEMA_VERSION,
|
|
110
106
|
workspaceId,
|
|
111
|
-
worktrees
|
|
107
|
+
worktrees,
|
|
112
108
|
bindings: value.bindings,
|
|
113
109
|
};
|
|
114
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar-schema.js","sourceRoot":"","sources":["../../src/provider/sidecar-schema.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,sBAAsB,EAGtB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sidecar-schema.js","sourceRoot":"","sources":["../../src/provider/sidecar-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/provider/sidecar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/provider/sidecar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AA0B9D;;;GAGG;AACH,qBAAa,iCAAkC,YAAW,YAAY;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOrD,4DAA4D;IAC5D,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,mDAAmD;IACnD,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAInD,oFAAoF;IACpF,MAAM,CAAC,CAAC,EACN,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACxF,OAAO,CAAC,CAAC,CAAC;IAIb,mDAAmD;IAC7C,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBrE,kFAAkF;IAC5E,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,EACtB,gBAAgB,CAAC,EAAE,UAAU,GAC5B,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC;IA+CjC,kFAAkF;IAC5E,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAkBtE"}
|
package/lib/provider/sidecar.js
CHANGED
|
@@ -6,6 +6,7 @@ function sameWorktree(left, right) {
|
|
|
6
6
|
left.workspaceId === right.workspaceId &&
|
|
7
7
|
left.absolutePath === right.absolutePath &&
|
|
8
8
|
left.branch === right.branch &&
|
|
9
|
+
left.source === right.source &&
|
|
9
10
|
left.status === right.status);
|
|
10
11
|
}
|
|
11
12
|
function sameIds(left, right) {
|
|
@@ -46,8 +47,9 @@ export class WorkspaceShardedSidecarRepository {
|
|
|
46
47
|
}
|
|
47
48
|
/** Idempotently insert a Worktree record by ID. */
|
|
48
49
|
async upsertWorktree(record) {
|
|
49
|
-
const { health: _health, ...
|
|
50
|
+
const { health: _health, ...withoutHealth } = record;
|
|
50
51
|
void _health;
|
|
52
|
+
const persistedRecord = { ...withoutHealth, source: record.source ?? 'plugin' };
|
|
51
53
|
return this.mutate(record.workspaceId, (snapshot) => {
|
|
52
54
|
const existing = snapshot.worktrees.find((candidate) => candidate.worktreeId === persistedRecord.worktreeId);
|
|
53
55
|
if (existing) {
|