@context-forge/core 0.4.2 → 0.5.1
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/assets/prompt.ai-project.system.md +6 -5
- package/dist/git/GitWorktreeDiscovery.d.ts +15 -0
- package/dist/git/GitWorktreeDiscovery.d.ts.map +1 -0
- package/dist/git/GitWorktreeDiscovery.js +65 -0
- package/dist/git/GitWorktreeDiscovery.js.map +1 -0
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +2 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/introspection/ConsistencyChecker.d.ts +3 -1
- package/dist/introspection/ConsistencyChecker.d.ts.map +1 -1
- package/dist/introspection/ConsistencyChecker.js +49 -0
- package/dist/introspection/ConsistencyChecker.js.map +1 -1
- package/dist/node.d.ts +3 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +5 -1
- package/dist/node.js.map +1 -1
- package/dist/services/CoreServiceFactory.d.ts +6 -0
- package/dist/services/CoreServiceFactory.d.ts.map +1 -1
- package/dist/services/CoreServiceFactory.js +7 -4
- package/dist/services/CoreServiceFactory.js.map +1 -1
- package/dist/services/WorktreeService.d.ts +65 -0
- package/dist/services/WorktreeService.d.ts.map +1 -0
- package/dist/services/WorktreeService.js +320 -0
- package/dist/services/WorktreeService.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -1
- package/dist/storage/FileProjectStore.d.ts.map +1 -1
- package/dist/storage/FileProjectStore.js +2 -0
- package/dist/storage/FileProjectStore.js.map +1 -1
- package/dist/types/git.d.ts +12 -0
- package/dist/types/git.d.ts.map +1 -0
- package/dist/types/git.js +2 -0
- package/dist/types/git.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/project.d.ts +4 -1
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/worktree.d.ts +81 -0
- package/dist/types/worktree.d.ts.map +1 -0
- package/dist/types/worktree.js +2 -0
- package/dist/types/worktree.js.map +1 -0
- package/dist/utils/worktree-overlay.d.ts +4 -0
- package/dist/utils/worktree-overlay.d.ts.map +1 -0
- package/dist/utils/worktree-overlay.js +17 -0
- package/dist/utils/worktree-overlay.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
/** Generate a unique worktree ID. */
|
|
3
|
+
function generateWorktreeId() {
|
|
4
|
+
return `wt_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
5
|
+
}
|
|
6
|
+
/** The workflow fields on ProjectData that get migrated to/from WorktreeContext. */
|
|
7
|
+
const WORKFLOW_FIELDS = [
|
|
8
|
+
'developmentPhase',
|
|
9
|
+
'fileSlice',
|
|
10
|
+
'fileTasks',
|
|
11
|
+
'instruction',
|
|
12
|
+
'workType',
|
|
13
|
+
'fileArch',
|
|
14
|
+
'fileSlicePlan',
|
|
15
|
+
];
|
|
16
|
+
/** Check if a project has any non-empty workflow fields worth migrating. */
|
|
17
|
+
function hasWorkflowFields(project) {
|
|
18
|
+
return WORKFLOW_FIELDS.some((field) => {
|
|
19
|
+
const value = project[field];
|
|
20
|
+
return value !== undefined && value !== '';
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/** Map ProjectData workflow fields to WorktreeContext fields. */
|
|
24
|
+
function mapProjectToWorktree(project) {
|
|
25
|
+
return {
|
|
26
|
+
developmentPhase: project.developmentPhase || undefined,
|
|
27
|
+
activeSlice: project.fileSlice || undefined,
|
|
28
|
+
activeTaskFile: project.fileTasks || undefined,
|
|
29
|
+
instruction: project.instruction || undefined,
|
|
30
|
+
workType: project.workType,
|
|
31
|
+
archDoc: project.fileArch || undefined,
|
|
32
|
+
slicePlan: project.fileSlicePlan || undefined,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Map WorktreeContext fields back to ProjectData update fields. */
|
|
36
|
+
function mapWorktreeToProject(wt) {
|
|
37
|
+
return {
|
|
38
|
+
developmentPhase: wt.developmentPhase ?? '',
|
|
39
|
+
fileSlice: wt.activeSlice ?? '',
|
|
40
|
+
fileTasks: wt.activeTaskFile ?? '',
|
|
41
|
+
instruction: wt.instruction ?? '',
|
|
42
|
+
workType: wt.workType,
|
|
43
|
+
fileArch: wt.archDoc ?? '',
|
|
44
|
+
fileSlicePlan: wt.slicePlan ?? '',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Validate that an index range has non-negative integers with start <= end. */
|
|
48
|
+
function validateIndexRange(range) {
|
|
49
|
+
const [start, end] = range;
|
|
50
|
+
if (!Number.isInteger(start) || !Number.isInteger(end)) {
|
|
51
|
+
throw new Error(`Index range values must be integers, got [${start}, ${end}]`);
|
|
52
|
+
}
|
|
53
|
+
if (start < 0 || end < 0) {
|
|
54
|
+
throw new Error(`Index range values must be non-negative, got [${start}, ${end}]`);
|
|
55
|
+
}
|
|
56
|
+
if (start > end) {
|
|
57
|
+
throw new Error(`Index range start must be <= end, got [${start}, ${end}]`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Extract the leading numeric prefix from a filename (e.g. '200-arch.foo.md' → 200). */
|
|
61
|
+
function extractIndexFromFilename(filename) {
|
|
62
|
+
const match = /^(\d+)-/.exec(filename);
|
|
63
|
+
if (!match)
|
|
64
|
+
return null;
|
|
65
|
+
return parseInt(match[1], 10);
|
|
66
|
+
}
|
|
67
|
+
/** Artifact fields on WorktreeContext that carry index-bearing filenames. */
|
|
68
|
+
const ARTIFACT_FIELDS = ['archDoc', 'slicePlan', 'activeSlice', 'activeTaskFile'];
|
|
69
|
+
/** Get parsed indices from a worktree's artifact reference fields. */
|
|
70
|
+
function getWorktreeArtifactIndices(wt) {
|
|
71
|
+
const results = [];
|
|
72
|
+
for (const field of ARTIFACT_FIELDS) {
|
|
73
|
+
const value = wt[field];
|
|
74
|
+
if (!value)
|
|
75
|
+
continue;
|
|
76
|
+
const index = extractIndexFromFilename(value);
|
|
77
|
+
if (index !== null) {
|
|
78
|
+
results.push({ field, filename: value, index });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return results;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Service for managing worktree contexts within a project.
|
|
85
|
+
* Encapsulates CRUD operations and migration logic, using IProjectStore
|
|
86
|
+
* as the persistence layer.
|
|
87
|
+
*/
|
|
88
|
+
export class WorktreeService {
|
|
89
|
+
store;
|
|
90
|
+
constructor(store) {
|
|
91
|
+
this.store = store;
|
|
92
|
+
}
|
|
93
|
+
/** Retrieve a project by ID, throwing if not found. */
|
|
94
|
+
async getProjectOrThrow(projectId) {
|
|
95
|
+
const project = await this.store.getById(projectId);
|
|
96
|
+
if (!project) {
|
|
97
|
+
throw new Error(`Project not found: ${projectId}`);
|
|
98
|
+
}
|
|
99
|
+
return project;
|
|
100
|
+
}
|
|
101
|
+
/** List all worktree contexts for a project. */
|
|
102
|
+
async listWorktrees(projectId) {
|
|
103
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
104
|
+
return project.worktrees ?? [];
|
|
105
|
+
}
|
|
106
|
+
/** Get a worktree context by ID. Returns undefined if not found. */
|
|
107
|
+
async getWorktree(projectId, worktreeId) {
|
|
108
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
109
|
+
return (project.worktrees ?? []).find((wt) => wt.id === worktreeId);
|
|
110
|
+
}
|
|
111
|
+
/** Get a worktree context by name (case-insensitive). Returns undefined if not found. */
|
|
112
|
+
async getWorktreeByName(projectId, name) {
|
|
113
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
114
|
+
const lower = name.toLowerCase();
|
|
115
|
+
return (project.worktrees ?? []).find((wt) => wt.name.toLowerCase() === lower);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Add a new worktree context to a project.
|
|
119
|
+
* Returns the created worktree, whether migration occurred, and any index range overlaps.
|
|
120
|
+
*/
|
|
121
|
+
async addWorktree(projectId, input) {
|
|
122
|
+
validateIndexRange(input.indexRange);
|
|
123
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
124
|
+
const newWorktree = {
|
|
125
|
+
id: generateWorktreeId(),
|
|
126
|
+
name: input.name,
|
|
127
|
+
indexRange: input.indexRange,
|
|
128
|
+
worktreePath: input.worktreePath,
|
|
129
|
+
archDoc: input.archDoc,
|
|
130
|
+
slicePlan: input.slicePlan,
|
|
131
|
+
};
|
|
132
|
+
const isFirstWorktree = !project.worktrees || project.worktrees.length === 0;
|
|
133
|
+
let migrated = false;
|
|
134
|
+
let chopWarning;
|
|
135
|
+
if (isFirstWorktree && hasWorkflowFields(project)) {
|
|
136
|
+
// Forward migration: move existing workflow fields into a "default" worktree
|
|
137
|
+
const defaultWorktree = {
|
|
138
|
+
id: generateWorktreeId(),
|
|
139
|
+
name: 'default',
|
|
140
|
+
indexRange: [100, 799],
|
|
141
|
+
worktreePath: project.projectPath,
|
|
142
|
+
...mapProjectToWorktree(project),
|
|
143
|
+
};
|
|
144
|
+
const worktrees = [defaultWorktree, newWorktree];
|
|
145
|
+
const chopResult = this.chopDefaultRange(worktrees, input.indexRange, newWorktree.id);
|
|
146
|
+
const clearedFields = {
|
|
147
|
+
developmentPhase: '',
|
|
148
|
+
fileSlice: '',
|
|
149
|
+
fileTasks: '',
|
|
150
|
+
instruction: '',
|
|
151
|
+
workType: undefined,
|
|
152
|
+
fileArch: '',
|
|
153
|
+
fileSlicePlan: '',
|
|
154
|
+
};
|
|
155
|
+
await this.store.update(projectId, { ...clearedFields, worktrees });
|
|
156
|
+
migrated = true;
|
|
157
|
+
chopWarning = chopResult.warning;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// No migration needed: just append
|
|
161
|
+
const worktrees = [...(project.worktrees ?? []), newWorktree];
|
|
162
|
+
const chopResult = this.chopDefaultRange(worktrees, input.indexRange, newWorktree.id);
|
|
163
|
+
await this.store.update(projectId, { worktrees });
|
|
164
|
+
chopWarning = chopResult.warning;
|
|
165
|
+
}
|
|
166
|
+
const overlaps = await this.findOverlaps(projectId, input.indexRange, newWorktree.id);
|
|
167
|
+
return { worktree: newWorktree, migrated, overlaps, chopWarning };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Update an existing worktree context.
|
|
171
|
+
* The `id` field cannot be changed.
|
|
172
|
+
*/
|
|
173
|
+
async updateWorktree(projectId, worktreeId, updates) {
|
|
174
|
+
if (updates.indexRange) {
|
|
175
|
+
validateIndexRange(updates.indexRange);
|
|
176
|
+
}
|
|
177
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
178
|
+
const worktrees = [...(project.worktrees ?? [])];
|
|
179
|
+
const index = worktrees.findIndex((wt) => wt.id === worktreeId);
|
|
180
|
+
if (index === -1) {
|
|
181
|
+
throw new Error(`Worktree not found: ${worktreeId}`);
|
|
182
|
+
}
|
|
183
|
+
const updated = { ...worktrees[index], ...updates, id: worktreeId };
|
|
184
|
+
worktrees[index] = updated;
|
|
185
|
+
let chopWarning;
|
|
186
|
+
if (updates.indexRange) {
|
|
187
|
+
const chopResult = this.chopDefaultRange(worktrees, updates.indexRange, worktreeId);
|
|
188
|
+
chopWarning = chopResult.warning;
|
|
189
|
+
}
|
|
190
|
+
await this.store.update(projectId, { worktrees });
|
|
191
|
+
return { ...updated, chopWarning };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Remove a worktree context from a project.
|
|
195
|
+
* Returns the removed worktree and whether reverse migration occurred.
|
|
196
|
+
*/
|
|
197
|
+
async removeWorktree(projectId, worktreeId) {
|
|
198
|
+
const project = await this.getProjectOrThrow(projectId);
|
|
199
|
+
const worktrees = project.worktrees ?? [];
|
|
200
|
+
const target = worktrees.find((wt) => wt.id === worktreeId);
|
|
201
|
+
if (!target) {
|
|
202
|
+
throw new Error(`Worktree not found: ${worktreeId}`);
|
|
203
|
+
}
|
|
204
|
+
const remaining = worktrees.filter((wt) => wt.id !== worktreeId);
|
|
205
|
+
if (remaining.length === 0) {
|
|
206
|
+
// Reverse migration: restore workflow fields to project, remove worktrees
|
|
207
|
+
const restoredFields = mapWorktreeToProject(target);
|
|
208
|
+
await this.store.update(projectId, {
|
|
209
|
+
...restoredFields,
|
|
210
|
+
worktrees: undefined,
|
|
211
|
+
});
|
|
212
|
+
return { removed: target, migrated: true };
|
|
213
|
+
}
|
|
214
|
+
await this.store.update(projectId, { worktrees: remaining });
|
|
215
|
+
return { removed: target, migrated: false };
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Shrink the default worktree's range when a new/updated range overlaps it.
|
|
219
|
+
* Mutates the worktrees array in place. Returns whether chopping occurred and any warning.
|
|
220
|
+
*/
|
|
221
|
+
chopDefaultRange(worktrees, newRange, excludeId) {
|
|
222
|
+
const defaultWt = worktrees.find((wt) => wt.name.toLowerCase() === 'default' && wt.id !== excludeId);
|
|
223
|
+
if (!defaultWt)
|
|
224
|
+
return { chopped: false };
|
|
225
|
+
const [dStart, dEnd] = defaultWt.indexRange;
|
|
226
|
+
const [nStart, nEnd] = newRange;
|
|
227
|
+
// No overlap → nothing to chop
|
|
228
|
+
if (nStart > dEnd || nEnd < dStart)
|
|
229
|
+
return { chopped: false };
|
|
230
|
+
// Compute candidate blocks within default's current range, excluding newRange
|
|
231
|
+
const lowerValid = nStart > dStart;
|
|
232
|
+
const upperValid = nEnd < dEnd;
|
|
233
|
+
const lowerBlock = lowerValid ? [dStart, nStart - 1] : null;
|
|
234
|
+
const upperBlock = upperValid ? [nEnd + 1, dEnd] : null;
|
|
235
|
+
// Select candidate: prefer lower block per design
|
|
236
|
+
let candidate = null;
|
|
237
|
+
if (lowerBlock) {
|
|
238
|
+
candidate = lowerBlock;
|
|
239
|
+
}
|
|
240
|
+
else if (upperBlock) {
|
|
241
|
+
candidate = upperBlock;
|
|
242
|
+
}
|
|
243
|
+
if (!candidate) {
|
|
244
|
+
// New range covers entire default — check collisions first
|
|
245
|
+
const artifacts = getWorktreeArtifactIndices(defaultWt);
|
|
246
|
+
for (const art of artifacts) {
|
|
247
|
+
// Any artifact would fall outside [0,0] sentinel
|
|
248
|
+
if (art.index >= dStart && art.index <= dEnd) {
|
|
249
|
+
throw new Error(`Cannot shrink default worktree range — artifact '${art.filename}' (index ${art.index}) ` +
|
|
250
|
+
`would fall outside the new range [0, 0]. Move the artifact to another worktree first.`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
defaultWt.indexRange = [0, 0];
|
|
254
|
+
return {
|
|
255
|
+
chopped: true,
|
|
256
|
+
warning: 'Default worktree has no remaining index range. Consider removing it or assigning a new range.',
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// Check artifact collisions: artifacts in default's current range that won't be in candidate
|
|
260
|
+
const artifacts = getWorktreeArtifactIndices(defaultWt);
|
|
261
|
+
for (const art of artifacts) {
|
|
262
|
+
if (art.index < candidate[0] || art.index > candidate[1]) {
|
|
263
|
+
throw new Error(`Cannot shrink default worktree range — artifact '${art.filename}' (index ${art.index}) ` +
|
|
264
|
+
`would fall outside the new range [${candidate[0]}, ${candidate[1]}]. ` +
|
|
265
|
+
`Move the artifact to another worktree first.`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
defaultWt.indexRange = candidate;
|
|
269
|
+
return { chopped: true };
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Find index range overlaps between a given range and existing worktrees.
|
|
273
|
+
* Optionally exclude a worktree by ID (useful when updating a worktree's range).
|
|
274
|
+
*/
|
|
275
|
+
async findOverlaps(projectId, range, excludeId) {
|
|
276
|
+
const worktrees = await this.listWorktrees(projectId);
|
|
277
|
+
const overlaps = [];
|
|
278
|
+
for (const wt of worktrees) {
|
|
279
|
+
if (excludeId && wt.id === excludeId)
|
|
280
|
+
continue;
|
|
281
|
+
// Ranges overlap when a[0] <= b[1] && b[0] <= a[1]
|
|
282
|
+
if (range[0] <= wt.indexRange[1] && wt.indexRange[0] <= range[1]) {
|
|
283
|
+
overlaps.push({
|
|
284
|
+
existingWorktreeId: wt.id,
|
|
285
|
+
existingWorktreeName: wt.name,
|
|
286
|
+
existingRange: wt.indexRange,
|
|
287
|
+
overlapStart: Math.max(range[0], wt.indexRange[0]),
|
|
288
|
+
overlapEnd: Math.min(range[1], wt.indexRange[1]),
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return overlaps;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Validate filesystem paths for all worktree contexts in a project.
|
|
296
|
+
* Checks each worktree's path against both the filesystem and git worktree list.
|
|
297
|
+
*
|
|
298
|
+
* @param projectId - Project to validate
|
|
299
|
+
* @param gitWorktrees - Current git worktrees from GitWorktreeDiscovery
|
|
300
|
+
* @param pathExists - Filesystem check callback (defaults to fs.existsSync for testability)
|
|
301
|
+
*/
|
|
302
|
+
async validateWorktreePaths(projectId, gitWorktrees, pathExists = existsSync) {
|
|
303
|
+
const worktrees = await this.listWorktrees(projectId);
|
|
304
|
+
const gitPaths = new Set(gitWorktrees.map((wt) => wt.path));
|
|
305
|
+
return worktrees.map((wt) => {
|
|
306
|
+
const base = { worktreeId: wt.id, worktreeName: wt.name, worktreePath: wt.worktreePath };
|
|
307
|
+
if (wt.worktreePath === undefined) {
|
|
308
|
+
return { ...base, status: 'no-path' };
|
|
309
|
+
}
|
|
310
|
+
if (!pathExists(wt.worktreePath)) {
|
|
311
|
+
return { ...base, status: 'missing' };
|
|
312
|
+
}
|
|
313
|
+
if (!gitPaths.has(wt.worktreePath)) {
|
|
314
|
+
return { ...base, status: 'not-a-worktree' };
|
|
315
|
+
}
|
|
316
|
+
return { ...base, status: 'valid' };
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=WorktreeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorktreeService.js","sourceRoot":"","sources":["../../src/services/WorktreeService.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -7,4 +7,5 @@ export type { ProfileMap } from './ContextProfileParser.js';
|
|
|
7
7
|
export { ContextGenerator } from './ContextGenerator.js';
|
|
8
8
|
export { ContextTemplateEngine } from './ContextTemplateEngine.js';
|
|
9
9
|
export { ContextIntegrator } from './ContextIntegrator.js';
|
|
10
|
+
export { WorktreeService } from './WorktreeService.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG1G,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG1G,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export { ContextProfileParser } from './ContextProfileParser.js';
|
|
|
8
8
|
export { ContextGenerator } from './ContextGenerator.js';
|
|
9
9
|
export { ContextTemplateEngine } from './ContextTemplateEngine.js';
|
|
10
10
|
export { ContextIntegrator } from './ContextIntegrator.js';
|
|
11
|
+
// Worktree management
|
|
12
|
+
export { WorktreeService } from './WorktreeService.js';
|
|
11
13
|
// Node.js-dependent services moved to @context-forge/core/node:
|
|
12
14
|
// StatementManager, SystemPromptParser, ProjectPathService, createContextPipeline
|
|
13
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAGA,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE9G,gDAAgD;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,gEAAgE;AAChE,kFAAkF"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAGA,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE9G,gDAAgD;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,gEAAgE;AAChE,kFAAkF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileProjectStore.d.ts","sourceRoot":"","sources":["../../src/storage/FileProjectStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"FileProjectStore.d.ts","sourceRoot":"","sources":["../../src/storage/FileProjectStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+CrD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,WAAW,CAAS;;YAOd,iBAAiB;IAUzB,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IA2BhC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrD,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC;;;OAGG;YACW,yBAAyB;CA0BxC"}
|
|
@@ -27,6 +27,8 @@ function migrateProjectFields(project) {
|
|
|
27
27
|
customData: project.customData && typeof project.customData === 'object'
|
|
28
28
|
? base.customData
|
|
29
29
|
: {},
|
|
30
|
+
// Worktree contexts: preserve if present
|
|
31
|
+
worktrees: project.worktrees,
|
|
30
32
|
};
|
|
31
33
|
// Strip legacy monorepo fields
|
|
32
34
|
const result = migrated;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileProjectStore.js","sourceRoot":"","sources":["../../src/storage/FileProjectStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FileProjectStore.js","sourceRoot":"","sources":["../../src/storage/FileProjectStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Parsed entry from `git worktree list --porcelain`. */
|
|
2
|
+
export interface WorktreeInfo {
|
|
3
|
+
/** Absolute path to the worktree directory. */
|
|
4
|
+
path: string;
|
|
5
|
+
/** HEAD commit hash. */
|
|
6
|
+
head: string;
|
|
7
|
+
/** Branch ref (e.g., 'refs/heads/feature/100-api'), undefined if detached HEAD. */
|
|
8
|
+
branch?: string;
|
|
9
|
+
/** Whether this is a bare repository entry. */
|
|
10
|
+
bare: boolean;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/types/git.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,IAAI,EAAE,OAAO,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/types/git.ts"],"names":[],"mappings":""}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,5 +5,7 @@ export type { TemplateStatement, StatementConfig, StatementFileMetadata, ParsedS
|
|
|
5
5
|
export type { SystemPrompt, ParsedPromptFile, PromptCacheEntry } from './prompts.js';
|
|
6
6
|
export { SpecialPromptKeys } from './prompts.js';
|
|
7
7
|
export type { ProjectData, CreateProjectData, UpdateProjectData } from './project.js';
|
|
8
|
+
export type { WorktreeContext, CreateWorktreeInput, UpdateWorktreeInput, IndexRangeOverlap, WorktreePathStatus } from './worktree.js';
|
|
8
9
|
export type { PathValidationResult, DirectoryListResult } from './paths.js';
|
|
10
|
+
export type { WorktreeInfo } from './git.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGrE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlH,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtF,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGrE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlH,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtF,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGtI,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG5E,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/types/project.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WorktreeContext } from './worktree.js';
|
|
1
2
|
/**
|
|
2
3
|
* Core data structure for project information
|
|
3
4
|
*/
|
|
@@ -28,6 +29,8 @@ export interface ProjectData {
|
|
|
28
29
|
additionalNotes?: string;
|
|
29
30
|
availableTools?: string;
|
|
30
31
|
};
|
|
32
|
+
/** Per-initiative worktree contexts; undefined when not using worktrees */
|
|
33
|
+
worktrees?: WorktreeContext[];
|
|
31
34
|
createdAt: string;
|
|
32
35
|
updatedAt: string;
|
|
33
36
|
}
|
|
@@ -50,5 +53,5 @@ export type CreateProjectData = Omit<ProjectData, 'id' | 'createdAt' | 'updatedA
|
|
|
50
53
|
/**
|
|
51
54
|
* Type for updating an existing project (partial updates allowed)
|
|
52
55
|
*/
|
|
53
|
-
export type UpdateProjectData = Partial<Pick<ProjectData, 'name' | 'template' | 'fileSlice' | 'fileTasks' | 'instruction' | 'developmentPhase' | 'workType' | 'dateProject' | 'projectPath' | 'fileHLD' | 'fileArch' | 'fileSlicePlan' | 'fileSpec' | 'fileConcept' | 'customData'>>;
|
|
56
|
+
export type UpdateProjectData = Partial<Pick<ProjectData, 'name' | 'template' | 'fileSlice' | 'fileTasks' | 'instruction' | 'developmentPhase' | 'workType' | 'dateProject' | 'projectPath' | 'fileHLD' | 'fileArch' | 'fileSlicePlan' | 'fileSpec' | 'fileConcept' | 'customData' | 'worktrees'>>;
|
|
54
57
|
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,WAAW,EACX,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAChI,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CACF,WAAW,EACT,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,UAAU,GACV,aAAa,GACb,aAAa,GACb,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,aAAa,GACb,YAAY,
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,2EAA2E;IAC3E,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,WAAW,EACX,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAChI,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,IAAI,CACF,WAAW,EACT,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,UAAU,GACV,aAAa,GACb,aAAa,GACb,SAAS,GACT,UAAU,GACV,eAAe,GACf,UAAU,GACV,aAAa,GACb,YAAY,GACZ,WAAW,CACd,CACF,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-initiative workflow state bound to a git worktree.
|
|
3
|
+
* Each WorktreeContext holds the workflow fields that were previously
|
|
4
|
+
* stored directly on ProjectData, scoped to an index range.
|
|
5
|
+
*/
|
|
6
|
+
export interface WorktreeContext {
|
|
7
|
+
/** Auto-generated identifier (format: wt_{timestamp}_{random}) */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Human-readable label for the worktree (e.g. "API Foundation") */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Slice index band owned by this worktree, inclusive on both ends */
|
|
12
|
+
indexRange: [number, number];
|
|
13
|
+
/** Absolute filesystem path to the git worktree directory */
|
|
14
|
+
worktreePath?: string;
|
|
15
|
+
/** Path to the initiative architecture document */
|
|
16
|
+
archDoc?: string;
|
|
17
|
+
/** Path to the initiative slice plan */
|
|
18
|
+
slicePlan?: string;
|
|
19
|
+
/** Current development phase within this worktree */
|
|
20
|
+
developmentPhase?: string;
|
|
21
|
+
/** Active slice file path (maps to ProjectData.fileSlice) */
|
|
22
|
+
activeSlice?: string;
|
|
23
|
+
/** Active task file path (maps to ProjectData.fileTasks) */
|
|
24
|
+
activeTaskFile?: string;
|
|
25
|
+
/** Current instruction for the worktree */
|
|
26
|
+
instruction?: string;
|
|
27
|
+
/** Work type: starting fresh or continuing existing work */
|
|
28
|
+
workType?: 'start' | 'continue';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Input for creating a new worktree context.
|
|
32
|
+
* Excludes auto-generated `id` and workflow fields (which start undefined).
|
|
33
|
+
*/
|
|
34
|
+
export interface CreateWorktreeInput {
|
|
35
|
+
/** Human-readable label for the worktree */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Slice index band, inclusive on both ends */
|
|
38
|
+
indexRange: [number, number];
|
|
39
|
+
/** Absolute filesystem path to the git worktree directory */
|
|
40
|
+
worktreePath?: string;
|
|
41
|
+
/** Path to the initiative architecture document */
|
|
42
|
+
archDoc?: string;
|
|
43
|
+
/** Path to the initiative slice plan */
|
|
44
|
+
slicePlan?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Input for updating an existing worktree context.
|
|
48
|
+
* All fields except `id` are updatable.
|
|
49
|
+
*/
|
|
50
|
+
export type UpdateWorktreeInput = Partial<Omit<WorktreeContext, 'id'>>;
|
|
51
|
+
/**
|
|
52
|
+
* Validation status for a worktree's filesystem path.
|
|
53
|
+
* Used by stale path detection in list commands and consistency checks.
|
|
54
|
+
*/
|
|
55
|
+
export interface WorktreePathStatus {
|
|
56
|
+
/** ID of the worktree context */
|
|
57
|
+
worktreeId: string;
|
|
58
|
+
/** Display name of the worktree context */
|
|
59
|
+
worktreeName: string;
|
|
60
|
+
/** Filesystem path (may be undefined for path-less worktrees) */
|
|
61
|
+
worktreePath: string | undefined;
|
|
62
|
+
/** Validation result */
|
|
63
|
+
status: 'valid' | 'missing' | 'not-a-worktree' | 'no-path';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Describes an overlap between two worktree index ranges.
|
|
67
|
+
* Returned as advisory information — overlaps do not block operations.
|
|
68
|
+
*/
|
|
69
|
+
export interface IndexRangeOverlap {
|
|
70
|
+
/** ID of the existing worktree whose range overlaps */
|
|
71
|
+
existingWorktreeId: string;
|
|
72
|
+
/** Name of the existing worktree whose range overlaps */
|
|
73
|
+
existingWorktreeName: string;
|
|
74
|
+
/** The existing worktree's full index range */
|
|
75
|
+
existingRange: [number, number];
|
|
76
|
+
/** Start of the overlapping region */
|
|
77
|
+
overlapStart: number;
|
|
78
|
+
/** End of the overlapping region */
|
|
79
|
+
overlapEnd: number;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/types/worktree.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,wBAAwB;IACxB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/types/worktree.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-overlay.d.ts","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAa1F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Overlay worktree-scoped fields onto a project copy. */
|
|
2
|
+
export function applyWorktreeOverlay(project, worktreeId) {
|
|
3
|
+
const wt = (project.worktrees ?? []).find((w) => w.id === worktreeId);
|
|
4
|
+
if (!wt)
|
|
5
|
+
return project;
|
|
6
|
+
return {
|
|
7
|
+
...project,
|
|
8
|
+
developmentPhase: wt.developmentPhase || project.developmentPhase,
|
|
9
|
+
instruction: wt.instruction || project.instruction,
|
|
10
|
+
workType: wt.workType || project.workType,
|
|
11
|
+
fileArch: wt.archDoc || project.fileArch,
|
|
12
|
+
fileSlicePlan: wt.slicePlan || project.fileSlicePlan,
|
|
13
|
+
fileSlice: wt.activeSlice || project.fileSlice,
|
|
14
|
+
fileTasks: wt.activeTaskFile || project.fileTasks,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=worktree-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-overlay.js","sourceRoot":"","sources":["../../src/utils/worktree-overlay.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,OAAoB,EAAE,UAAkB;IAC3E,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IACxB,OAAO;QACL,GAAG,OAAO;QACV,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB;QACjE,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;QAClD,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;QACzC,QAAQ,EAAE,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ;QACxC,aAAa,EAAE,EAAE,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa;QACpD,SAAS,EAAE,EAAE,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS;QAC9C,SAAS,EAAE,EAAE,CAAC,cAAc,IAAI,OAAO,CAAC,SAAS;KAClD,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED