specweave 1.0.307 → 1.0.308

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 (63) hide show
  1. package/README.md +23 -0
  2. package/bin/specweave.js +2 -0
  3. package/dist/dashboard/assets/index-8JtB0x7k.js +11 -0
  4. package/dist/dashboard/assets/index-BkMbqwTc.css +1 -0
  5. package/dist/dashboard/index.html +2 -2
  6. package/dist/src/cli/commands/create-increment.d.ts.map +1 -1
  7. package/dist/src/cli/commands/create-increment.js +3 -0
  8. package/dist/src/cli/commands/create-increment.js.map +1 -1
  9. package/dist/src/cli/commands/migrate-to-umbrella.d.ts.map +1 -1
  10. package/dist/src/cli/commands/migrate-to-umbrella.js +90 -0
  11. package/dist/src/cli/commands/migrate-to-umbrella.js.map +1 -1
  12. package/dist/src/core/fabric/security-scanner.d.ts.map +1 -1
  13. package/dist/src/core/fabric/security-scanner.js +35 -17
  14. package/dist/src/core/fabric/security-scanner.js.map +1 -1
  15. package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts +67 -0
  16. package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -0
  17. package/dist/src/core/hooks/LifecycleHookDispatcher.js +156 -0
  18. package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -0
  19. package/dist/src/core/increment/status-commands.d.ts.map +1 -1
  20. package/dist/src/core/increment/status-commands.js +11 -0
  21. package/dist/src/core/increment/status-commands.js.map +1 -1
  22. package/dist/src/core/migration/spec-project-mapper.d.ts +51 -0
  23. package/dist/src/core/migration/spec-project-mapper.d.ts.map +1 -0
  24. package/dist/src/core/migration/spec-project-mapper.js +299 -0
  25. package/dist/src/core/migration/spec-project-mapper.js.map +1 -0
  26. package/dist/src/core/migration/types.d.ts +2 -0
  27. package/dist/src/core/migration/types.d.ts.map +1 -1
  28. package/dist/src/dashboard/server/command-runner.d.ts +4 -2
  29. package/dist/src/dashboard/server/command-runner.d.ts.map +1 -1
  30. package/dist/src/dashboard/server/command-runner.js +3 -3
  31. package/dist/src/dashboard/server/command-runner.js.map +1 -1
  32. package/dist/src/dashboard/server/dashboard-server.d.ts.map +1 -1
  33. package/dist/src/dashboard/server/dashboard-server.js +70 -23
  34. package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
  35. package/dist/src/dashboard/server/data/cost-aggregator.d.ts +7 -4
  36. package/dist/src/dashboard/server/data/cost-aggregator.d.ts.map +1 -1
  37. package/dist/src/dashboard/server/data/cost-aggregator.js +67 -30
  38. package/dist/src/dashboard/server/data/cost-aggregator.js.map +1 -1
  39. package/dist/src/dashboard/server/data/dashboard-data-aggregator.d.ts +8 -2
  40. package/dist/src/dashboard/server/data/dashboard-data-aggregator.d.ts.map +1 -1
  41. package/dist/src/dashboard/server/data/dashboard-data-aggregator.js +72 -6
  42. package/dist/src/dashboard/server/data/dashboard-data-aggregator.js.map +1 -1
  43. package/dist/src/dashboard/server/router.d.ts.map +1 -1
  44. package/dist/src/dashboard/server/router.js +1 -0
  45. package/dist/src/dashboard/server/router.js.map +1 -1
  46. package/dist/src/dashboard/types.d.ts +26 -6
  47. package/dist/src/dashboard/types.d.ts.map +1 -1
  48. package/dist/src/sync/github-reconciler.d.ts +2 -1
  49. package/dist/src/sync/github-reconciler.d.ts.map +1 -1
  50. package/dist/src/sync/github-reconciler.js +13 -7
  51. package/dist/src/sync/github-reconciler.js.map +1 -1
  52. package/dist/src/sync/sync-metadata.d.ts +9 -0
  53. package/dist/src/sync/sync-metadata.d.ts.map +1 -1
  54. package/dist/src/sync/sync-metadata.js +24 -0
  55. package/dist/src/sync/sync-metadata.js.map +1 -1
  56. package/package.json +1 -1
  57. package/plugins/specweave/hooks/user-prompt-submit.sh +10 -4
  58. package/plugins/specweave/lib/vendor/sync/github-reconciler.d.ts +2 -1
  59. package/plugins/specweave/lib/vendor/sync/github-reconciler.js +13 -7
  60. package/plugins/specweave/lib/vendor/sync/github-reconciler.js.map +1 -1
  61. package/plugins/specweave/skills/done/SKILL.md +0 -5
  62. package/dist/dashboard/assets/index-BGpS5omm.css +0 -1
  63. package/dist/dashboard/assets/index-BvNL0nTV.js +0 -11
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Lifecycle Hook Dispatcher
3
+ *
4
+ * Reads hooks config from config.json and dispatches configured actions
5
+ * at lifecycle points (increment planned, task completed, increment done).
6
+ *
7
+ * All dispatches are:
8
+ * - Non-blocking (fire-and-forget async)
9
+ * - Error-isolated (catch + log, never crash)
10
+ * - Skipped in test environment (process.env.VITEST)
11
+ *
12
+ * Part of increment 0298: Hook Lifecycle Wiring
13
+ */
14
+ import { ConfigManager } from '../config/config-manager.js';
15
+ /**
16
+ * Dispatches configured actions at lifecycle hook points.
17
+ *
18
+ * Usage (fire-and-forget):
19
+ * ```ts
20
+ * void LifecycleHookDispatcher.onIncrementPlanned(root, id).catch(() => {});
21
+ * ```
22
+ */
23
+ export class LifecycleHookDispatcher {
24
+ /**
25
+ * Dispatch post-increment-planning hooks.
26
+ *
27
+ * Checks hooks.post_increment_planning.auto_create_github_issue
28
+ * and calls autoCreateExternalIssue if true.
29
+ */
30
+ static async onIncrementPlanned(projectRoot, incrementId, options = {}) {
31
+ if (LifecycleHookDispatcher.shouldSkip(options))
32
+ return;
33
+ try {
34
+ const hooks = await LifecycleHookDispatcher.readHooksConfig(projectRoot);
35
+ if (!hooks?.post_increment_planning?.auto_create_github_issue)
36
+ return;
37
+ const { autoCreateExternalIssue } = await import('../../sync/external-issue-auto-creator.js');
38
+ await autoCreateExternalIssue(projectRoot, incrementId);
39
+ }
40
+ catch (error) {
41
+ LifecycleHookDispatcher.logError('onIncrementPlanned', error);
42
+ }
43
+ }
44
+ /**
45
+ * Dispatch post-task-completion hooks.
46
+ *
47
+ * Checks hooks.post_task_completion for:
48
+ * - sync_tasks_md: triggers LivingDocsSync.syncIncrement
49
+ * - external_tracker_sync: triggers SyncCoordinator.syncIncrementClosure
50
+ */
51
+ static async onTaskCompleted(projectRoot, incrementId, options = {}) {
52
+ if (LifecycleHookDispatcher.shouldSkip(options))
53
+ return;
54
+ try {
55
+ const hooks = await LifecycleHookDispatcher.readHooksConfig(projectRoot);
56
+ const taskConfig = hooks?.post_task_completion;
57
+ if (!taskConfig)
58
+ return;
59
+ if (taskConfig.sync_tasks_md) {
60
+ const { LivingDocsSync } = await import('../living-docs/living-docs-sync.js');
61
+ const sync = new LivingDocsSync(projectRoot);
62
+ await sync.syncIncrement(incrementId);
63
+ }
64
+ if (taskConfig.external_tracker_sync) {
65
+ const { SyncCoordinator } = await import('../../sync/sync-coordinator.js');
66
+ const coordinator = new SyncCoordinator({
67
+ projectRoot,
68
+ incrementId,
69
+ });
70
+ await coordinator.syncIncrementClosure();
71
+ }
72
+ }
73
+ catch (error) {
74
+ LifecycleHookDispatcher.logError('onTaskCompleted', error);
75
+ }
76
+ }
77
+ /**
78
+ * Dispatch post-increment-done hooks.
79
+ *
80
+ * Checks hooks.post_increment_done for:
81
+ * - sync_living_docs: triggers LivingDocsSync.syncIncrement
82
+ * - close_github_issue: triggers SyncCoordinator.syncIncrementClosure
83
+ * - update_living_docs_first: if true, living docs sync runs before closure
84
+ */
85
+ static async onIncrementDone(projectRoot, incrementId, options = {}) {
86
+ if (LifecycleHookDispatcher.shouldSkip(options))
87
+ return;
88
+ try {
89
+ const hooks = await LifecycleHookDispatcher.readHooksConfig(projectRoot);
90
+ const doneConfig = hooks?.post_increment_done;
91
+ if (!doneConfig)
92
+ return;
93
+ const shouldSyncLivingDocs = doneConfig.sync_living_docs === true;
94
+ const shouldClosIssue = doneConfig.close_github_issue === true;
95
+ const docsFirst = doneConfig.update_living_docs_first === true;
96
+ const syncLivingDocs = async () => {
97
+ if (!shouldSyncLivingDocs)
98
+ return;
99
+ const { LivingDocsSync } = await import('../living-docs/living-docs-sync.js');
100
+ const sync = new LivingDocsSync(projectRoot);
101
+ await sync.syncIncrement(incrementId);
102
+ };
103
+ const syncClosure = async () => {
104
+ if (!shouldClosIssue)
105
+ return;
106
+ const { SyncCoordinator } = await import('../../sync/sync-coordinator.js');
107
+ const coordinator = new SyncCoordinator({
108
+ projectRoot,
109
+ incrementId,
110
+ });
111
+ await coordinator.syncIncrementClosure();
112
+ };
113
+ if (docsFirst && shouldSyncLivingDocs) {
114
+ // Sequential: living docs first, then closure
115
+ await syncLivingDocs();
116
+ await syncClosure();
117
+ }
118
+ else {
119
+ // Parallel or individual
120
+ await Promise.all([syncLivingDocs(), syncClosure()]);
121
+ }
122
+ }
123
+ catch (error) {
124
+ LifecycleHookDispatcher.logError('onIncrementDone', error);
125
+ }
126
+ }
127
+ /**
128
+ * Check if dispatch should be skipped (test environment guard)
129
+ */
130
+ static shouldSkip(options) {
131
+ // Allow tests to bypass the guard to test the dispatcher itself
132
+ if (options._bypassTestGuard === true)
133
+ return false;
134
+ // Skip in test environment
135
+ if (process.env.VITEST || process.env.NODE_ENV === 'test')
136
+ return true;
137
+ return false;
138
+ }
139
+ /**
140
+ * Read hooks configuration from config.json
141
+ */
142
+ static async readHooksConfig(projectRoot) {
143
+ const configManager = new ConfigManager(projectRoot);
144
+ const config = await configManager.read();
145
+ return config.hooks;
146
+ }
147
+ /**
148
+ * Log error without propagating
149
+ */
150
+ static logError(method, error) {
151
+ const message = error instanceof Error ? error.message : String(error);
152
+ // Use stderr to avoid polluting stdout
153
+ process.stderr.write(`[LifecycleHookDispatcher.${method}] Hook dispatch error: ${message}\n`);
154
+ }
155
+ }
156
+ //# sourceMappingURL=LifecycleHookDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleHookDispatcher.js","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status-commands.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/status-commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAmB,aAAa,EAAe,MAAM,gCAAgC,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAWD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CzE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE3E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD7E;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAoElF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F3E"}
1
+ {"version":3,"file":"status-commands.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/status-commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAmB,aAAa,EAAe,MAAM,gCAAgC,CAAC;AAE7F,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAWD;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CzE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE3E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD7E;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAiFlF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F3E"}
@@ -227,6 +227,17 @@ export async function completeIncrement(options) {
227
227
  // Update status to completed
228
228
  // This triggers StatusChangeSyncTrigger → external tool sync!
229
229
  MetadataManager.updateStatus(incrementId, IncrementStatus.COMPLETED);
230
+ // Fire-and-forget: dispatch post-increment-done hooks (non-blocking)
231
+ // Dynamic import to avoid circular dependency
232
+ void (async () => {
233
+ try {
234
+ const { LifecycleHookDispatcher } = await import('../hooks/LifecycleHookDispatcher.js');
235
+ await LifecycleHookDispatcher.onIncrementDone(process.cwd(), incrementId);
236
+ }
237
+ catch {
238
+ // Non-blocking: swallow errors
239
+ }
240
+ })();
230
241
  log(chalk.green(`\n✅ Increment ${incrementId} completed!`));
231
242
  log(chalk.gray(`📦 Status changed to: completed`));
232
243
  log(chalk.gray(`🔄 External sync triggered (GitHub/JIRA/ADO will be updated)\n`));
@@ -1 +1 @@
1
- {"version":3,"file":"status-commands.js","sourceRoot":"","sources":["../../../../src/core/increment/status-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-commands.js","sourceRoot":"","sources":["../../../../src/core/increment/status-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Spec Project Mapper
3
+ *
4
+ * Maps FS-XXX feature spec folders to their owning project(s) by scanning
5
+ * increment metadata and spec.md **Project**: fields. Used by the
6
+ * --reorganize-specs flag of migrate-to-umbrella.
7
+ *
8
+ * @module core/migration/spec-project-mapper
9
+ */
10
+ export interface ReorgOperation {
11
+ featureId: string;
12
+ source: string;
13
+ destination: string;
14
+ type: 'move' | 'copy';
15
+ }
16
+ /**
17
+ * Builds a map of FS-XXX feature IDs to their owning project(s).
18
+ *
19
+ * Strategy:
20
+ * 1. Scan all increments for feature_id in metadata.json (explicit link)
21
+ * 2. Fall back to numeric matching: FS-282 → glob 0282-*
22
+ * 3. Parse increment spec.md for **Project**: lines
23
+ * 4. Default to current project folder name when no Project field found
24
+ *
25
+ * @param projectRoot - Root of the umbrella workspace
26
+ * @returns Map of featureId (e.g. "FS-282") to project IDs (e.g. ["vskill-platform"])
27
+ */
28
+ export declare function buildFeatureProjectMap(projectRoot: string): Promise<Map<string, string[]>>;
29
+ /**
30
+ * Generates a list of move/copy operations to reorganize FS-XXX folders
31
+ * from a centralized project directory to per-project directories.
32
+ *
33
+ * @param featureMap - Map from buildFeatureProjectMap()
34
+ * @param specsDir - Path to .specweave/docs/internal/specs/
35
+ * @param currentProject - Name of the current (centralized) project folder
36
+ * @returns List of move/copy operations
37
+ */
38
+ export declare function generateReorganizationPlan(featureMap: Map<string, string[]>, specsDir: string, currentProject: string): Promise<ReorgOperation[]>;
39
+ export interface ReorganizeOptions {
40
+ execute: boolean;
41
+ }
42
+ /**
43
+ * Executes a reorganization plan: moves/copies FS-XXX folders to per-project
44
+ * directories and enables multiProject mode in config.json.
45
+ *
46
+ * @param plan - List of move/copy operations from generateReorganizationPlan()
47
+ * @param configPath - Path to .specweave/config.json
48
+ * @param options - { execute: true } to apply changes, false for dry-run
49
+ */
50
+ export declare function reorganizeSpecs(plan: ReorgOperation[], configPath: string, options: ReorganizeOptions): Promise<void>;
51
+ //# sourceMappingURL=spec-project-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-project-mapper.d.ts","sourceRoot":"","sources":["../../../../src/core/migration/spec-project-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAkDhC;AAMD;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CAuC3B;AAMD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,cAAc,EAAE,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Spec Project Mapper
3
+ *
4
+ * Maps FS-XXX feature spec folders to their owning project(s) by scanning
5
+ * increment metadata and spec.md **Project**: fields. Used by the
6
+ * --reorganize-specs flag of migrate-to-umbrella.
7
+ *
8
+ * @module core/migration/spec-project-mapper
9
+ */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ // ---------------------------------------------------------------------------
13
+ // buildFeatureProjectMap
14
+ // ---------------------------------------------------------------------------
15
+ /**
16
+ * Builds a map of FS-XXX feature IDs to their owning project(s).
17
+ *
18
+ * Strategy:
19
+ * 1. Scan all increments for feature_id in metadata.json (explicit link)
20
+ * 2. Fall back to numeric matching: FS-282 → glob 0282-*
21
+ * 3. Parse increment spec.md for **Project**: lines
22
+ * 4. Default to current project folder name when no Project field found
23
+ *
24
+ * @param projectRoot - Root of the umbrella workspace
25
+ * @returns Map of featureId (e.g. "FS-282") to project IDs (e.g. ["vskill-platform"])
26
+ */
27
+ export async function buildFeatureProjectMap(projectRoot) {
28
+ const specweavePath = path.join(projectRoot, '.specweave');
29
+ const incrementsDir = path.join(specweavePath, 'increments');
30
+ const specsBaseDir = path.join(specweavePath, 'docs', 'internal', 'specs');
31
+ // Discover existing FS-XXX folders across all project subdirs
32
+ const featureIds = await discoverFeatureIds(specsBaseDir);
33
+ if (featureIds.length === 0) {
34
+ return new Map();
35
+ }
36
+ // Build increment index: numeric prefix → increment dir name
37
+ const incrementIndex = await buildIncrementIndex(incrementsDir);
38
+ // Build feature_id → increment dir name from metadata
39
+ const metadataIndex = await buildMetadataIndex(incrementsDir);
40
+ const result = new Map();
41
+ for (const featureId of featureIds) {
42
+ // Extract numeric part: FS-282 → 282
43
+ const numericPart = featureId.replace('FS-', '');
44
+ // Try metadata feature_id first, then numeric match
45
+ let incrementDirName = metadataIndex.get(featureId);
46
+ if (!incrementDirName) {
47
+ // Pad to 4 digits for matching: 282 → 0282
48
+ const padded = numericPart.padStart(4, '0');
49
+ incrementDirName = incrementIndex.get(padded);
50
+ }
51
+ if (!incrementDirName) {
52
+ // No matching increment — default to current project
53
+ result.set(featureId, [detectCurrentProject(specsBaseDir)]);
54
+ continue;
55
+ }
56
+ // Parse spec.md for **Project**: fields
57
+ const specPath = path.join(incrementsDir, incrementDirName, 'spec.md');
58
+ const projects = await parseProjectFields(specPath);
59
+ if (projects.length === 0) {
60
+ result.set(featureId, [detectCurrentProject(specsBaseDir)]);
61
+ }
62
+ else {
63
+ // Deduplicate
64
+ result.set(featureId, [...new Set(projects)]);
65
+ }
66
+ }
67
+ return result;
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // generateReorganizationPlan
71
+ // ---------------------------------------------------------------------------
72
+ /**
73
+ * Generates a list of move/copy operations to reorganize FS-XXX folders
74
+ * from a centralized project directory to per-project directories.
75
+ *
76
+ * @param featureMap - Map from buildFeatureProjectMap()
77
+ * @param specsDir - Path to .specweave/docs/internal/specs/
78
+ * @param currentProject - Name of the current (centralized) project folder
79
+ * @returns List of move/copy operations
80
+ */
81
+ export async function generateReorganizationPlan(featureMap, specsDir, currentProject) {
82
+ const ops = [];
83
+ for (const [featureId, targetProjects] of featureMap) {
84
+ const sourcePath = path.join(specsDir, currentProject, featureId);
85
+ const sourceExists = fs.existsSync(sourcePath);
86
+ // Source must exist under the current project to move/copy
87
+ if (!sourceExists)
88
+ continue;
89
+ // If one of the targets IS the current project, keep the original in place
90
+ // and copy to all other targets. Otherwise, move to first and copy to rest.
91
+ const staysInPlace = targetProjects.includes(currentProject);
92
+ let firstNonCurrent = true;
93
+ for (const targetProject of targetProjects) {
94
+ const destPath = path.join(specsDir, targetProject, featureId);
95
+ // Skip if target is current project (already in place)
96
+ if (targetProject === currentProject)
97
+ continue;
98
+ // Skip if destination already exists (idempotency)
99
+ if (fs.existsSync(destPath))
100
+ continue;
101
+ // If the original stays in place, all other targets are copies.
102
+ // If the original doesn't stay, the first non-current target gets a move.
103
+ const isMove = !staysInPlace && firstNonCurrent;
104
+ firstNonCurrent = false;
105
+ ops.push({
106
+ featureId,
107
+ source: sourcePath,
108
+ destination: destPath,
109
+ type: isMove ? 'move' : 'copy',
110
+ });
111
+ }
112
+ }
113
+ return ops;
114
+ }
115
+ /**
116
+ * Executes a reorganization plan: moves/copies FS-XXX folders to per-project
117
+ * directories and enables multiProject mode in config.json.
118
+ *
119
+ * @param plan - List of move/copy operations from generateReorganizationPlan()
120
+ * @param configPath - Path to .specweave/config.json
121
+ * @param options - { execute: true } to apply changes, false for dry-run
122
+ */
123
+ export async function reorganizeSpecs(plan, configPath, options) {
124
+ if (!options.execute) {
125
+ return;
126
+ }
127
+ // Execute move/copy operations
128
+ for (const op of plan) {
129
+ const destDir = path.dirname(op.destination);
130
+ await fs.promises.mkdir(destDir, { recursive: true });
131
+ if (op.type === 'move') {
132
+ try {
133
+ await fs.promises.rename(op.source, op.destination);
134
+ }
135
+ catch {
136
+ // Cross-device: copy then delete
137
+ await copyDirRecursive(op.source, op.destination);
138
+ await fs.promises.rm(op.source, { recursive: true });
139
+ }
140
+ }
141
+ else {
142
+ // copy
143
+ await copyDirRecursive(op.source, op.destination);
144
+ }
145
+ }
146
+ // Update config.json: enable multiProject
147
+ try {
148
+ const raw = await fs.promises.readFile(configPath, 'utf-8');
149
+ const config = JSON.parse(raw);
150
+ if (config.multiProject?.enabled !== true) {
151
+ config.multiProject = config.multiProject || {};
152
+ config.multiProject.enabled = true;
153
+ await fs.promises.writeFile(configPath, JSON.stringify(config, null, 2));
154
+ }
155
+ }
156
+ catch {
157
+ // Non-fatal
158
+ }
159
+ }
160
+ /**
161
+ * Recursively copy a directory tree.
162
+ */
163
+ async function copyDirRecursive(src, dest) {
164
+ await fs.promises.mkdir(dest, { recursive: true });
165
+ const entries = await fs.promises.readdir(src, { withFileTypes: true });
166
+ for (const entry of entries) {
167
+ const srcPath = path.join(src, entry.name);
168
+ const destPath = path.join(dest, entry.name);
169
+ if (entry.isDirectory()) {
170
+ await copyDirRecursive(srcPath, destPath);
171
+ }
172
+ else {
173
+ await fs.promises.copyFile(srcPath, destPath);
174
+ }
175
+ }
176
+ }
177
+ // ---------------------------------------------------------------------------
178
+ // Internals
179
+ // ---------------------------------------------------------------------------
180
+ /**
181
+ * Discovers all FS-XXX directory names across all project subfolders.
182
+ */
183
+ async function discoverFeatureIds(specsBaseDir) {
184
+ const featureIds = [];
185
+ if (!fs.existsSync(specsBaseDir))
186
+ return featureIds;
187
+ const projectDirs = await fs.promises.readdir(specsBaseDir, { withFileTypes: true });
188
+ for (const dir of projectDirs) {
189
+ if (!dir.isDirectory() || dir.name.startsWith('_'))
190
+ continue;
191
+ const projectPath = path.join(specsBaseDir, dir.name);
192
+ const entries = await fs.promises.readdir(projectPath, { withFileTypes: true });
193
+ for (const entry of entries) {
194
+ if (entry.isDirectory() && /^FS-\d+/.test(entry.name)) {
195
+ if (!featureIds.includes(entry.name)) {
196
+ featureIds.push(entry.name);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ return featureIds;
202
+ }
203
+ /**
204
+ * Builds an index of 4-digit numeric prefix → increment directory name.
205
+ * E.g., "0282" → "0282-repo-links-all-skill-surfaces"
206
+ */
207
+ async function buildIncrementIndex(incrementsDir) {
208
+ const index = new Map();
209
+ if (!fs.existsSync(incrementsDir))
210
+ return index;
211
+ const entries = await fs.promises.readdir(incrementsDir, { withFileTypes: true });
212
+ for (const entry of entries) {
213
+ if (!entry.isDirectory())
214
+ continue;
215
+ const match = entry.name.match(/^(\d{4})/);
216
+ if (match) {
217
+ index.set(match[1], entry.name);
218
+ }
219
+ }
220
+ return index;
221
+ }
222
+ /**
223
+ * Builds an index of feature_id → increment directory name from metadata.json files.
224
+ * E.g., "FS-190" → "0300-custom-feature"
225
+ */
226
+ async function buildMetadataIndex(incrementsDir) {
227
+ const index = new Map();
228
+ if (!fs.existsSync(incrementsDir))
229
+ return index;
230
+ const entries = await fs.promises.readdir(incrementsDir, { withFileTypes: true });
231
+ for (const entry of entries) {
232
+ if (!entry.isDirectory())
233
+ continue;
234
+ const metadataPath = path.join(incrementsDir, entry.name, 'metadata.json');
235
+ try {
236
+ const raw = await fs.promises.readFile(metadataPath, 'utf-8');
237
+ const metadata = JSON.parse(raw);
238
+ if (metadata.feature_id && typeof metadata.feature_id === 'string') {
239
+ index.set(metadata.feature_id, entry.name);
240
+ }
241
+ }
242
+ catch {
243
+ // Skip invalid/missing metadata
244
+ }
245
+ }
246
+ return index;
247
+ }
248
+ /**
249
+ * Parses a spec.md file for **Project**: lines and returns unique project IDs.
250
+ * Handles comma-separated values (e.g., "specweave, vskill").
251
+ * Ignores backtick-escaped mentions (e.g., `**Project**:` in prose).
252
+ */
253
+ async function parseProjectFields(specPath) {
254
+ try {
255
+ const content = await fs.promises.readFile(specPath, 'utf-8');
256
+ const projects = [];
257
+ // Match **Project**: at start of line (not inside backticks)
258
+ const regex = /^\*\*Project\*\*:\s*(.+)/gm;
259
+ let match;
260
+ while ((match = regex.exec(content)) !== null) {
261
+ const rawValue = match[1].trim();
262
+ // Skip if the line was inside backticks (preceded by `)
263
+ const lineStart = content.lastIndexOf('\n', match.index) + 1;
264
+ const prefix = content.substring(lineStart, match.index);
265
+ if (prefix.includes('`'))
266
+ continue;
267
+ // Split comma-separated project IDs
268
+ const parts = rawValue.split(',').map((p) => p.trim()).filter(Boolean);
269
+ for (const project of parts) {
270
+ if (!projects.includes(project)) {
271
+ projects.push(project);
272
+ }
273
+ }
274
+ }
275
+ return projects;
276
+ }
277
+ catch {
278
+ return [];
279
+ }
280
+ }
281
+ /**
282
+ * Detects the current (primary) project folder name by finding the first
283
+ * non-archive directory under the specs base dir.
284
+ */
285
+ function detectCurrentProject(specsBaseDir) {
286
+ try {
287
+ const entries = fs.readdirSync(specsBaseDir, { withFileTypes: true });
288
+ for (const entry of entries) {
289
+ if (entry.isDirectory() && !entry.name.startsWith('_')) {
290
+ return entry.name;
291
+ }
292
+ }
293
+ }
294
+ catch {
295
+ // fallback
296
+ }
297
+ return 'default';
298
+ }
299
+ //# sourceMappingURL=spec-project-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-project-mapper.js","sourceRoot":"","sources":["../../../../src/core/migration/spec-project-mapper.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,8 @@ export interface MigrationOptions {
90
90
  yes?: boolean;
91
91
  /** Add a new repo to existing umbrella */
92
92
  addRepo?: string;
93
+ /** Reorganize spec folders into per-project directories */
94
+ reorganizeSpecs?: boolean;
93
95
  }
94
96
  /**
95
97
  * Manifest written alongside backup to record what was moved and where.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/migration/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,gDAAgD;IAChD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,MAAM,GACN,MAAM,GACN,eAAe,GACf,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,+BAA+B;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,UAAU,EAAE,KAAK,CAAC;QAChB,8CAA8C;QAC9C,MAAM,EAAE,MAAM,CAAC;QACf,kDAAkD;QAClD,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/migration/types.ts"],"names":[],"mappings":"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"}