@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.
Files changed (53) hide show
  1. package/assets/prompt.ai-project.system.md +6 -5
  2. package/dist/git/GitWorktreeDiscovery.d.ts +15 -0
  3. package/dist/git/GitWorktreeDiscovery.d.ts.map +1 -0
  4. package/dist/git/GitWorktreeDiscovery.js +65 -0
  5. package/dist/git/GitWorktreeDiscovery.js.map +1 -0
  6. package/dist/git/index.d.ts +2 -0
  7. package/dist/git/index.d.ts.map +1 -0
  8. package/dist/git/index.js +2 -0
  9. package/dist/git/index.js.map +1 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/introspection/ConsistencyChecker.d.ts +3 -1
  15. package/dist/introspection/ConsistencyChecker.d.ts.map +1 -1
  16. package/dist/introspection/ConsistencyChecker.js +49 -0
  17. package/dist/introspection/ConsistencyChecker.js.map +1 -1
  18. package/dist/node.d.ts +3 -1
  19. package/dist/node.d.ts.map +1 -1
  20. package/dist/node.js +5 -1
  21. package/dist/node.js.map +1 -1
  22. package/dist/services/CoreServiceFactory.d.ts +6 -0
  23. package/dist/services/CoreServiceFactory.d.ts.map +1 -1
  24. package/dist/services/CoreServiceFactory.js +7 -4
  25. package/dist/services/CoreServiceFactory.js.map +1 -1
  26. package/dist/services/WorktreeService.d.ts +65 -0
  27. package/dist/services/WorktreeService.d.ts.map +1 -0
  28. package/dist/services/WorktreeService.js +320 -0
  29. package/dist/services/WorktreeService.js.map +1 -0
  30. package/dist/services/index.d.ts +1 -0
  31. package/dist/services/index.d.ts.map +1 -1
  32. package/dist/services/index.js +2 -0
  33. package/dist/services/index.js.map +1 -1
  34. package/dist/storage/FileProjectStore.d.ts.map +1 -1
  35. package/dist/storage/FileProjectStore.js +2 -0
  36. package/dist/storage/FileProjectStore.js.map +1 -1
  37. package/dist/types/git.d.ts +12 -0
  38. package/dist/types/git.d.ts.map +1 -0
  39. package/dist/types/git.js +2 -0
  40. package/dist/types/git.js.map +1 -0
  41. package/dist/types/index.d.ts +2 -0
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/types/project.d.ts +4 -1
  44. package/dist/types/project.d.ts.map +1 -1
  45. package/dist/types/worktree.d.ts +81 -0
  46. package/dist/types/worktree.d.ts.map +1 -0
  47. package/dist/types/worktree.js +2 -0
  48. package/dist/types/worktree.js.map +1 -0
  49. package/dist/utils/worktree-overlay.d.ts +4 -0
  50. package/dist/utils/worktree-overlay.d.ts.map +1 -0
  51. package/dist/utils/worktree-overlay.js +17 -0
  52. package/dist/utils/worktree-overlay.js.map +1 -0
  53. 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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"}
@@ -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"}
@@ -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;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6CrD;;;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"}
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":"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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/types/git.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -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,CACf,CACF,CAAC"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/types/worktree.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ProjectData } from '../types/index.js';
2
+ /** Overlay worktree-scoped fields onto a project copy. */
3
+ export declare function applyWorktreeOverlay(project: ProjectData, worktreeId: string): ProjectData;
4
+ //# sourceMappingURL=worktree-overlay.d.ts.map
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-forge/core",
3
- "version": "0.4.2",
3
+ "version": "0.5.1",
4
4
  "description": "Core context generation engine for Context Forge — template processing, project state, prompt assembly",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",