specweave 1.0.65 β†’ 1.0.67

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/CLAUDE.md CHANGED
@@ -393,6 +393,7 @@ After generation:
393
393
  | No GITHUB_TOKEN | Check `.env` file or run `gh auth login` |
394
394
  | Edits blocked in repositories/ | Add `"additionalDirectories":["repositories"]` + `Write(//**)`, `Edit(//**)` to `.claude/settings.json` |
395
395
  | Path patterns not working | `//path` = absolute, `/path` = relative to settings file, `additionalDirectories` for explicit working dirs |
396
+ | **specweave/claude not found after Node upgrade** | **nvm users**: Global packages are lost when switching Node versions! Fix: `nvm reinstall-packages <old-version>` OR `npm install -g specweave @anthropic-ai/claude-code`. See [Node Version Management](/.specweave/docs/internal/operations/runbook-node-version-management.md) |
396
397
  <!-- SW:END:troubleshooting -->
397
398
 
398
399
  <!-- SW:SECTION:principles version="1.0.60" -->
@@ -1 +1 @@
1
- {"version":3,"file":"living-docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/living-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjF"}
1
+ {"version":3,"file":"living-docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/living-docs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFjF"}
@@ -73,20 +73,73 @@ export async function livingDocsCommand(options) {
73
73
  const dependsOn = options.dependsOn
74
74
  ? options.dependsOn.split(',').map(s => s.trim())
75
75
  : undefined;
76
- // Launch job
77
- try {
78
- const { job, pid, isBackground } = await launchLivingDocsJob({
79
- projectPath,
80
- userInputs,
81
- dependsOn,
82
- foreground: options.foreground,
83
- });
84
- displayLaunchSuccess(job, pid, isBackground, userInputs);
76
+ // Check if running in auto mode
77
+ const autoSessionPath = path.join(projectPath, '.specweave/state/auto-session.json');
78
+ const isAutoMode = fs.existsSync(autoSessionPath);
79
+ if (isAutoMode) {
80
+ // Auto mode: Use chunked execution
81
+ try {
82
+ await runChunkedLivingDocs(projectPath, userInputs);
83
+ }
84
+ catch (error) {
85
+ const errorMessage = error instanceof Error ? error.message : String(error);
86
+ console.error(chalk.red(`\nFailed to execute living docs chunk: ${errorMessage}`));
87
+ process.exit(1);
88
+ }
85
89
  }
86
- catch (error) {
87
- const errorMessage = error instanceof Error ? error.message : String(error);
88
- console.error(chalk.red(`\nFailed to launch Living Docs Builder: ${errorMessage}`));
89
- process.exit(1);
90
+ else {
91
+ // Traditional mode: Launch background job
92
+ try {
93
+ const { job, pid, isBackground } = await launchLivingDocsJob({
94
+ projectPath,
95
+ userInputs,
96
+ dependsOn,
97
+ foreground: options.foreground,
98
+ });
99
+ displayLaunchSuccess(job, pid, isBackground, userInputs);
100
+ }
101
+ catch (error) {
102
+ const errorMessage = error instanceof Error ? error.message : String(error);
103
+ console.error(chalk.red(`\nFailed to launch Living Docs Builder: ${errorMessage}`));
104
+ process.exit(1);
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Run living docs in chunked mode for auto mode integration
110
+ */
111
+ async function runChunkedLivingDocs(projectPath, userInputs) {
112
+ const { executeLivingDocsChunk, getProgressSummary, loadLivingDocsCheckpoint } = await import('../../core/background/living-docs-executor.js');
113
+ console.log(chalk.blue('\nπŸ”„ Running Living Docs in Auto Mode (Chunked Execution)\n'));
114
+ // Load existing checkpoint or create new one
115
+ const checkpoint = loadLivingDocsCheckpoint(projectPath);
116
+ if (checkpoint) {
117
+ console.log(chalk.gray('Resuming from checkpoint...'));
118
+ console.log(chalk.gray(getProgressSummary(checkpoint)));
119
+ console.log('');
120
+ }
121
+ // Execute one chunk (2 hours max)
122
+ const result = await executeLivingDocsChunk({
123
+ projectPath,
124
+ maxDuration: 2 * 60 * 60 * 1000, // 2 hours
125
+ checkpoint: checkpoint || undefined,
126
+ stopOnPhaseComplete: true, // Yield control after each phase
127
+ });
128
+ // Display result
129
+ if (result.status === 'all_complete') {
130
+ console.log(chalk.green('\nβœ… All Living Docs Phases Complete!\n'));
131
+ console.log(chalk.gray('All 8 phases of living docs update have been completed.'));
132
+ console.log(chalk.gray('Check .specweave/docs/internal/ for generated documentation.\n'));
133
+ }
134
+ else if (result.status === 'phase_complete') {
135
+ console.log(chalk.green(`\nβœ… Phase ${result.currentPhase} Complete!\n`));
136
+ console.log(chalk.gray(`Next: Phase ${result.nextPhase}`));
137
+ console.log(chalk.gray('Stop hook will continue execution in next iteration.\n'));
138
+ }
139
+ else if (result.status === 'time_limit') {
140
+ console.log(chalk.yellow('\n⏰ Time Limit Reached (2 hours)\n'));
141
+ console.log(chalk.gray(`Phase ${result.currentPhase} in progress...`));
142
+ console.log(chalk.gray('Checkpoint saved. Will resume in next iteration.\n'));
90
143
  }
91
144
  }
92
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"living-docs.js","sourceRoot":"","sources":["../../../../src/cli/commands/living-docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"living-docs.js","sourceRoot":"","sources":["../../../../src/cli/commands/living-docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Increment Planning Algorithm
3
+ *
4
+ * Groups features into right-sized increments with dependency tracking.
5
+ *
6
+ * @module increment-planner
7
+ */
8
+ import type { Feature } from './prompt-chunker.js';
9
+ export interface IncrementPlan {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ features: Feature[];
14
+ estimatedTasks: number;
15
+ dependencies: string[];
16
+ priority: number;
17
+ }
18
+ export interface PlanningResult {
19
+ increments: IncrementPlan[];
20
+ totalFeatures: number;
21
+ totalTasks: number;
22
+ estimatedDuration: string;
23
+ }
24
+ /**
25
+ * Plan increments from extracted features
26
+ *
27
+ * @param features - Features extracted from prompt
28
+ * @returns Planned increments with dependencies
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const features = extractFeatures("Build e-commerce with auth, products, cart, checkout");
33
+ * const plan = planIncrements(features);
34
+ * // Returns: [
35
+ * // { id: "0001-authentication", features: [auth], tasks: 7 },
36
+ * // { id: "0002-products-and-cart", features: [products, cart], tasks: 14 },
37
+ * // { id: "0003-checkout", features: [checkout], tasks: 12 }
38
+ * // ]
39
+ * ```
40
+ */
41
+ export declare function planIncrements(features: Feature[]): PlanningResult;
42
+ //# sourceMappingURL=increment-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"increment-planner.d.ts","sourceRoot":"","sources":["../../../../src/core/auto/increment-planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAiDlE"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Increment Planning Algorithm
3
+ *
4
+ * Groups features into right-sized increments with dependency tracking.
5
+ *
6
+ * @module increment-planner
7
+ */
8
+ /**
9
+ * Target task count per increment (sweet spot)
10
+ */
11
+ const MIN_TASKS_PER_INCREMENT = 5;
12
+ const MAX_TASKS_PER_INCREMENT = 15;
13
+ const IDEAL_TASKS_PER_INCREMENT = 10;
14
+ /**
15
+ * Plan increments from extracted features
16
+ *
17
+ * @param features - Features extracted from prompt
18
+ * @returns Planned increments with dependencies
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const features = extractFeatures("Build e-commerce with auth, products, cart, checkout");
23
+ * const plan = planIncrements(features);
24
+ * // Returns: [
25
+ * // { id: "0001-authentication", features: [auth], tasks: 7 },
26
+ * // { id: "0002-products-and-cart", features: [products, cart], tasks: 14 },
27
+ * // { id: "0003-checkout", features: [checkout], tasks: 12 }
28
+ * // ]
29
+ * ```
30
+ */
31
+ export function planIncrements(features) {
32
+ if (features.length === 0) {
33
+ throw new Error('No features provided for planning');
34
+ }
35
+ // Sort features by dependency and complexity
36
+ const sorted = topologicalSort(features);
37
+ // Group features into increments
38
+ const increments = [];
39
+ let currentGroup = [];
40
+ let currentTasks = 0;
41
+ let incrementId = 1;
42
+ for (const feature of sorted) {
43
+ const wouldExceed = currentTasks + feature.estimatedTasks > MAX_TASKS_PER_INCREMENT;
44
+ const hasMinimum = currentTasks >= MIN_TASKS_PER_INCREMENT;
45
+ if (currentGroup.length > 0 && wouldExceed && hasMinimum) {
46
+ // Commit current group as an increment
47
+ increments.push(createIncrement(incrementId++, currentGroup));
48
+ currentGroup = [feature];
49
+ currentTasks = feature.estimatedTasks;
50
+ }
51
+ else {
52
+ // Add to current group
53
+ currentGroup.push(feature);
54
+ currentTasks += feature.estimatedTasks;
55
+ }
56
+ }
57
+ // Commit remaining group
58
+ if (currentGroup.length > 0) {
59
+ increments.push(createIncrement(incrementId, currentGroup));
60
+ }
61
+ // Identify dependencies between increments
62
+ identifyIncrementDependencies(increments);
63
+ // Calculate totals
64
+ const totalFeatures = features.length;
65
+ const totalTasks = features.reduce((sum, f) => sum + f.estimatedTasks, 0);
66
+ const estimatedDuration = estimateDuration(totalTasks);
67
+ return {
68
+ increments,
69
+ totalFeatures,
70
+ totalTasks,
71
+ estimatedDuration,
72
+ };
73
+ }
74
+ /**
75
+ * Topological sort of features based on dependencies
76
+ */
77
+ function topologicalSort(features) {
78
+ const sorted = [];
79
+ const visited = new Set();
80
+ const visiting = new Set();
81
+ function visit(feature) {
82
+ if (visited.has(feature.name))
83
+ return;
84
+ if (visiting.has(feature.name)) {
85
+ // Circular dependency - skip for now
86
+ return;
87
+ }
88
+ visiting.add(feature.name);
89
+ // Visit dependencies first
90
+ for (const depName of feature.dependencies) {
91
+ const depFeature = features.find((f) => f.name === depName);
92
+ if (depFeature) {
93
+ visit(depFeature);
94
+ }
95
+ }
96
+ visiting.delete(feature.name);
97
+ visited.add(feature.name);
98
+ sorted.push(feature);
99
+ }
100
+ for (const feature of features) {
101
+ visit(feature);
102
+ }
103
+ return sorted;
104
+ }
105
+ /**
106
+ * Create an increment from a group of features
107
+ */
108
+ function createIncrement(id, features) {
109
+ const paddedId = String(id).padStart(4, '0');
110
+ const name = generateIncrementName(features);
111
+ const slug = name.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
112
+ const description = features.map((f) => f.name).join(', ');
113
+ const estimatedTasks = features.reduce((sum, f) => sum + f.estimatedTasks, 0);
114
+ return {
115
+ id: `${paddedId}-${slug}`,
116
+ name,
117
+ description,
118
+ features,
119
+ estimatedTasks,
120
+ dependencies: [],
121
+ priority: id,
122
+ };
123
+ }
124
+ /**
125
+ * Generate a human-readable name for an increment
126
+ */
127
+ function generateIncrementName(features) {
128
+ if (features.length === 1) {
129
+ return capitalizeWords(features[0].name.replace(/-/g, ' '));
130
+ }
131
+ // Try to find a common theme
132
+ const firstFeature = features[0].name;
133
+ if (firstFeature.includes('auth')) {
134
+ return 'User Authentication';
135
+ }
136
+ if (firstFeature.includes('product')) {
137
+ return 'Product Catalog';
138
+ }
139
+ if (firstFeature.includes('cart') || firstFeature.includes('checkout')) {
140
+ return 'Shopping Cart & Checkout';
141
+ }
142
+ // Default: use first 2 features
143
+ const names = features.slice(0, 2).map((f) => capitalizeWords(f.name.replace(/-/g, ' ')));
144
+ return names.join(' & ');
145
+ }
146
+ /**
147
+ * Capitalize first letter of each word
148
+ */
149
+ function capitalizeWords(str) {
150
+ return str
151
+ .split(' ')
152
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
153
+ .join(' ');
154
+ }
155
+ /**
156
+ * Identify dependencies between increments based on feature dependencies
157
+ */
158
+ function identifyIncrementDependencies(increments) {
159
+ for (let i = 0; i < increments.length; i++) {
160
+ const increment = increments[i];
161
+ // Check if any feature in this increment depends on features in earlier increments
162
+ for (const feature of increment.features) {
163
+ for (const depName of feature.dependencies) {
164
+ // Find which increment contains this dependency
165
+ for (let j = 0; j < i; j++) {
166
+ const earlierIncrement = increments[j];
167
+ if (earlierIncrement.features.some((f) => f.name === depName)) {
168
+ // This increment depends on an earlier one
169
+ if (!increment.dependencies.includes(earlierIncrement.id)) {
170
+ increment.dependencies.push(earlierIncrement.id);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ /**
179
+ * Estimate duration based on task count
180
+ */
181
+ function estimateDuration(totalTasks) {
182
+ // Assume ~30 minutes per task in auto mode
183
+ const hoursPerTask = 0.5;
184
+ const totalHours = totalTasks * hoursPerTask;
185
+ if (totalHours < 1) {
186
+ return '< 1 hour';
187
+ }
188
+ else if (totalHours < 4) {
189
+ return `${Math.ceil(totalHours)} hours`;
190
+ }
191
+ else if (totalHours < 8) {
192
+ return '~1 day';
193
+ }
194
+ else if (totalHours < 16) {
195
+ return '1-2 days';
196
+ }
197
+ else if (totalHours < 40) {
198
+ return `2-${Math.ceil(totalHours / 8)} days`;
199
+ }
200
+ else {
201
+ const weeks = Math.ceil(totalHours / 40);
202
+ return `${weeks} ${weeks === 1 ? 'week' : 'weeks'}`;
203
+ }
204
+ }
205
+ //# sourceMappingURL=increment-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"increment-planner.js","sourceRoot":"","sources":["../../../../src/core/auto/increment-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Prompt Chunking for Auto Mode
3
+ *
4
+ * Analyzes large prompts and extracts discrete features for intelligent increment planning.
5
+ *
6
+ * @module prompt-chunker
7
+ */
8
+ export interface Feature {
9
+ name: string;
10
+ description: string;
11
+ complexity: 'simple' | 'medium' | 'complex';
12
+ estimatedTasks: number;
13
+ dependencies: string[];
14
+ keywords: string[];
15
+ }
16
+ export interface PromptAnalysis {
17
+ features: Feature[];
18
+ totalComplexity: number;
19
+ recommendedIncrements: number;
20
+ }
21
+ /**
22
+ * Extract discrete features from a natural language prompt
23
+ *
24
+ * @param prompt - User's natural language prompt
25
+ * @returns Analyzed features with complexity estimates
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const result = extractFeatures("Build e-commerce with auth, products, cart, checkout");
30
+ * // Returns 4 features: auth, products, cart, checkout
31
+ * ```
32
+ */
33
+ export declare function extractFeatures(prompt: string): Feature[];
34
+ /**
35
+ * Analyze full prompt and recommend increment structure
36
+ *
37
+ * @param prompt - User's natural language prompt
38
+ * @returns Full analysis with increment recommendations
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const analysis = analyzePrompt("Build e-commerce with auth, products, cart, checkout");
43
+ * console.log(analysis.recommendedIncrements); // 2-3 increments
44
+ * ```
45
+ */
46
+ export declare function analyzePrompt(prompt: string): PromptAnalysis;
47
+ //# sourceMappingURL=prompt-chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-chunker.d.ts","sourceRoot":"","sources":["../../../../src/core/auto/prompt-chunker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA+DD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CA0BzD;AAqID;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAc5D"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Prompt Chunking for Auto Mode
3
+ *
4
+ * Analyzes large prompts and extracts discrete features for intelligent increment planning.
5
+ *
6
+ * @module prompt-chunker
7
+ */
8
+ /**
9
+ * Feature boundary keywords that indicate separation
10
+ */
11
+ const FEATURE_SEPARATORS = [
12
+ 'and',
13
+ 'with',
14
+ 'including',
15
+ 'also',
16
+ 'plus',
17
+ 'as well as',
18
+ ',',
19
+ ';',
20
+ ];
21
+ /**
22
+ * Common architectural features that usually need to come first
23
+ */
24
+ const FOUNDATIONAL_FEATURES = [
25
+ 'auth',
26
+ 'authentication',
27
+ 'database',
28
+ 'setup',
29
+ 'infrastructure',
30
+ 'config',
31
+ 'configuration',
32
+ ];
33
+ /**
34
+ * Complexity indicators
35
+ */
36
+ const COMPLEXITY_INDICATORS = {
37
+ simple: ['button', 'link', 'page', 'view', 'display', 'show', 'list'],
38
+ medium: ['form', 'validation', 'api', 'endpoint', 'integration', 'filter', 'search'],
39
+ complex: [
40
+ 'auth',
41
+ 'payment',
42
+ 'real-time',
43
+ 'websocket',
44
+ 'notification',
45
+ 'dashboard',
46
+ 'analytics',
47
+ 'migration',
48
+ ],
49
+ };
50
+ /**
51
+ * Generic project type words to skip (not specific features)
52
+ */
53
+ const GENERIC_TERMS = [
54
+ 'app',
55
+ 'application',
56
+ 'website',
57
+ 'site',
58
+ 'platform',
59
+ 'system',
60
+ 'e-commerce',
61
+ 'ecommerce',
62
+ 'dashboard',
63
+ 'portal',
64
+ ];
65
+ /**
66
+ * Extract discrete features from a natural language prompt
67
+ *
68
+ * @param prompt - User's natural language prompt
69
+ * @returns Analyzed features with complexity estimates
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const result = extractFeatures("Build e-commerce with auth, products, cart, checkout");
74
+ * // Returns 4 features: auth, products, cart, checkout
75
+ * ```
76
+ */
77
+ export function extractFeatures(prompt) {
78
+ const features = [];
79
+ // Normalize prompt
80
+ const normalized = prompt
81
+ .toLowerCase()
82
+ .replace(/\n/g, ' ')
83
+ .replace(/\s+/g, ' ')
84
+ .trim();
85
+ // Split by feature separators
86
+ const segments = splitByFeatureSeparators(normalized);
87
+ for (const segment of segments) {
88
+ if (segment.trim().length < 3)
89
+ continue; // Skip tiny fragments
90
+ const feature = analyzeSegment(segment);
91
+ if (feature && !isGenericTerm(feature.name)) {
92
+ features.push(feature);
93
+ }
94
+ }
95
+ // Identify dependencies (auth typically comes before everything)
96
+ identifyDependencies(features);
97
+ return features;
98
+ }
99
+ /**
100
+ * Check if a feature name is a generic term that should be skipped
101
+ */
102
+ function isGenericTerm(name) {
103
+ return GENERIC_TERMS.some((term) => name.includes(term) || term.includes(name));
104
+ }
105
+ /**
106
+ * Split prompt by feature separator keywords
107
+ */
108
+ function splitByFeatureSeparators(prompt) {
109
+ // First, split by commas and semicolons
110
+ let segments = prompt.split(/[,;]+/).map((s) => s.trim());
111
+ // Then split by word separators (and, with, including, etc.)
112
+ const result = [];
113
+ for (const segment of segments) {
114
+ // Split by word separators but keep the segment structure
115
+ const wordSeps = /\s+(and|with|including|also|plus|as well as)\s+/i;
116
+ const parts = segment.split(wordSeps).filter((p) => {
117
+ // Filter out separator words themselves
118
+ const lower = p.toLowerCase().trim();
119
+ return lower && !['and', 'with', 'including', 'also', 'plus', 'as well as'].includes(lower);
120
+ });
121
+ result.push(...parts);
122
+ }
123
+ return result.map((s) => s.trim()).filter((s) => s.length > 0);
124
+ }
125
+ /**
126
+ * Analyze a segment to extract feature details
127
+ */
128
+ function analyzeSegment(segment) {
129
+ // Extract feature name (usually the main noun/action)
130
+ const name = extractFeatureName(segment);
131
+ if (!name)
132
+ return null;
133
+ // Determine complexity
134
+ const complexity = estimateComplexity(segment);
135
+ // Estimate task count based on complexity
136
+ const estimatedTasks = complexity === 'simple' ? 3 : complexity === 'medium' ? 7 : 12;
137
+ // Extract keywords
138
+ const keywords = segment.split(/\s+/).filter((word) => word.length > 3);
139
+ return {
140
+ name,
141
+ description: segment,
142
+ complexity,
143
+ estimatedTasks,
144
+ dependencies: [],
145
+ keywords,
146
+ };
147
+ }
148
+ /**
149
+ * Extract the primary feature name from a segment
150
+ */
151
+ function extractFeatureName(segment) {
152
+ // Remove common verbs and articles
153
+ let cleaned = segment.replace(/^(build|create|add|implement|make|setup|configure|develop|the|a|an)\s+/gi, '');
154
+ // Remove trailing articles/connectors
155
+ cleaned = cleaned.replace(/\s+(the|a|an|to|for|of)$/gi, '');
156
+ // Take first 1-3 words as feature name
157
+ const words = cleaned.trim().split(/\s+/).slice(0, 3);
158
+ const name = words.join('-').replace(/[^a-z0-9-]/g, '');
159
+ return name || segment.split(/\s+/)[0]; // Fallback to first word if cleaning produced empty
160
+ }
161
+ /**
162
+ * Estimate complexity based on keywords
163
+ */
164
+ function estimateComplexity(segment) {
165
+ const lower = segment.toLowerCase();
166
+ // Check for complex indicators
167
+ for (const indicator of COMPLEXITY_INDICATORS.complex) {
168
+ if (lower.includes(indicator))
169
+ return 'complex';
170
+ }
171
+ // Check for medium indicators
172
+ for (const indicator of COMPLEXITY_INDICATORS.medium) {
173
+ if (lower.includes(indicator))
174
+ return 'medium';
175
+ }
176
+ return 'simple';
177
+ }
178
+ /**
179
+ * Identify dependencies between features
180
+ */
181
+ function identifyDependencies(features) {
182
+ // Find foundational features
183
+ const foundationalFeatures = features.filter((f) => FOUNDATIONAL_FEATURES.some((keyword) => f.name.includes(keyword)));
184
+ // All non-foundational features depend on foundational ones
185
+ for (const feature of features) {
186
+ const isFoundational = foundationalFeatures.includes(feature);
187
+ if (!isFoundational) {
188
+ for (const foundation of foundationalFeatures) {
189
+ if (!feature.dependencies.includes(foundation.name)) {
190
+ feature.dependencies.push(foundation.name);
191
+ }
192
+ }
193
+ }
194
+ }
195
+ // Payment depends on products/cart
196
+ const paymentFeatures = features.filter((f) => f.name.includes('payment') || f.name.includes('checkout'));
197
+ const productFeatures = features.filter((f) => f.name.includes('product') || f.name.includes('cart'));
198
+ for (const payment of paymentFeatures) {
199
+ for (const product of productFeatures) {
200
+ if (!payment.dependencies.includes(product.name)) {
201
+ payment.dependencies.push(product.name);
202
+ }
203
+ }
204
+ }
205
+ }
206
+ /**
207
+ * Analyze full prompt and recommend increment structure
208
+ *
209
+ * @param prompt - User's natural language prompt
210
+ * @returns Full analysis with increment recommendations
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const analysis = analyzePrompt("Build e-commerce with auth, products, cart, checkout");
215
+ * console.log(analysis.recommendedIncrements); // 2-3 increments
216
+ * ```
217
+ */
218
+ export function analyzePrompt(prompt) {
219
+ const features = extractFeatures(prompt);
220
+ // Calculate total complexity
221
+ const totalComplexity = features.reduce((sum, f) => sum + f.estimatedTasks, 0);
222
+ // Recommend increments (target 5-15 tasks per increment)
223
+ const recommendedIncrements = Math.max(1, Math.ceil(totalComplexity / 10));
224
+ return {
225
+ features,
226
+ totalComplexity,
227
+ recommendedIncrements,
228
+ };
229
+ }
230
+ //# sourceMappingURL=prompt-chunker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-chunker.js","sourceRoot":"","sources":["../../../../src/core/auto/prompt-chunker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Living Docs Chunked Execution for Auto Mode
3
+ *
4
+ * Enables living docs to run in auto mode with:
5
+ * - Time-boxed chunks (2 hours max per iteration)
6
+ * - Checkpoint/resume across iterations
7
+ * - Stop hook integration
8
+ * - Phase-by-phase progress tracking
9
+ */
10
+ export interface LivingDocsCheckpoint {
11
+ currentPhase: Phase;
12
+ completedPhases: Phase[];
13
+ phaseProgress: Record<string, any>;
14
+ startTime: string;
15
+ lastUpdate: string;
16
+ totalPhases: number;
17
+ }
18
+ export type Phase = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H';
19
+ export interface ChunkedExecutionOptions {
20
+ maxDuration: number;
21
+ checkpoint?: LivingDocsCheckpoint;
22
+ stopOnPhaseComplete: boolean;
23
+ projectPath: string;
24
+ }
25
+ export interface ChunkResult {
26
+ status: 'phase_complete' | 'time_limit' | 'all_complete';
27
+ currentPhase?: Phase;
28
+ nextPhase?: Phase;
29
+ progress?: Record<string, any>;
30
+ }
31
+ /**
32
+ * Load checkpoint from filesystem
33
+ */
34
+ export declare function loadLivingDocsCheckpoint(projectPath: string): LivingDocsCheckpoint | null;
35
+ /**
36
+ * Save checkpoint to filesystem
37
+ */
38
+ export declare function saveLivingDocsCheckpoint(projectPath: string, checkpoint: LivingDocsCheckpoint): void;
39
+ /**
40
+ * Get next phase in sequence
41
+ */
42
+ export declare function getNextPhase(currentPhase: Phase): Phase | null;
43
+ /**
44
+ * Get phase name for display
45
+ */
46
+ export declare function getPhaseName(phase: Phase): string;
47
+ /**
48
+ * Initialize checkpoint for new execution
49
+ */
50
+ export declare function initializeCheckpoint(): LivingDocsCheckpoint;
51
+ /**
52
+ * Execute living docs in chunked mode for auto mode integration
53
+ *
54
+ * This breaks the living docs update into time-boxed chunks that can be
55
+ * controlled by the auto mode stop hook.
56
+ */
57
+ export declare function executeLivingDocsChunk(options: ChunkedExecutionOptions): Promise<ChunkResult>;
58
+ /**
59
+ * Clean up checkpoint after completion
60
+ */
61
+ export declare function cleanupCheckpoint(projectPath: string): void;
62
+ /**
63
+ * Get current progress summary
64
+ */
65
+ export declare function getProgressSummary(checkpoint: LivingDocsCheckpoint): string;
66
+ //# sourceMappingURL=living-docs-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"living-docs-executor.d.ts","sourceRoot":"","sources":["../../../../src/core/background/living-docs-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,KAAK,CAAC;IACpB,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,gBAAgB,GAAG,YAAY,GAAG,cAAc,CAAC;IACzD,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAeD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAczF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,oBAAoB,GAC/B,IAAI,CAeN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAM9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAS3D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CA4EtB;AAuCD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAmB3E"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Living Docs Chunked Execution for Auto Mode
3
+ *
4
+ * Enables living docs to run in auto mode with:
5
+ * - Time-boxed chunks (2 hours max per iteration)
6
+ * - Checkpoint/resume across iterations
7
+ * - Stop hook integration
8
+ * - Phase-by-phase progress tracking
9
+ */
10
+ import * as path from 'path';
11
+ import * as fs from '../../utils/fs-native.js';
12
+ import { consoleLogger as logger } from '../../utils/logger.js';
13
+ const PHASE_NAMES = {
14
+ 'A': 'Discovery',
15
+ 'B': 'Deep Analysis',
16
+ 'C': 'Org Synthesis',
17
+ 'D': 'Architecture',
18
+ 'E': 'Inconsistencies',
19
+ 'F': 'Strategy',
20
+ 'G': 'Enterprise',
21
+ 'H': 'Diagrams',
22
+ };
23
+ const PHASE_ORDER = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'];
24
+ /**
25
+ * Load checkpoint from filesystem
26
+ */
27
+ export function loadLivingDocsCheckpoint(projectPath) {
28
+ const checkpointPath = path.join(projectPath, '.specweave/state/living-docs-checkpoint.json');
29
+ if (!fs.existsSync(checkpointPath)) {
30
+ return null;
31
+ }
32
+ try {
33
+ const content = fs.readFileSync(checkpointPath, 'utf-8');
34
+ return JSON.parse(content);
35
+ }
36
+ catch (error) {
37
+ logger.warn(`Failed to load living docs checkpoint: ${error}`);
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Save checkpoint to filesystem
43
+ */
44
+ export function saveLivingDocsCheckpoint(projectPath, checkpoint) {
45
+ const statePath = path.join(projectPath, '.specweave/state');
46
+ const checkpointPath = path.join(statePath, 'living-docs-checkpoint.json');
47
+ // Ensure state directory exists
48
+ if (!fs.existsSync(statePath)) {
49
+ fs.mkdirSync(statePath, { recursive: true });
50
+ }
51
+ try {
52
+ fs.writeFileSync(checkpointPath, JSON.stringify(checkpoint, null, 2));
53
+ logger.info(`Living docs checkpoint saved: Phase ${checkpoint.currentPhase}`);
54
+ }
55
+ catch (error) {
56
+ logger.error(`Failed to save living docs checkpoint: ${error}`);
57
+ }
58
+ }
59
+ /**
60
+ * Get next phase in sequence
61
+ */
62
+ export function getNextPhase(currentPhase) {
63
+ const currentIndex = PHASE_ORDER.indexOf(currentPhase);
64
+ if (currentIndex === -1 || currentIndex >= PHASE_ORDER.length - 1) {
65
+ return null;
66
+ }
67
+ return PHASE_ORDER[currentIndex + 1];
68
+ }
69
+ /**
70
+ * Get phase name for display
71
+ */
72
+ export function getPhaseName(phase) {
73
+ return PHASE_NAMES[phase] || phase;
74
+ }
75
+ /**
76
+ * Initialize checkpoint for new execution
77
+ */
78
+ export function initializeCheckpoint() {
79
+ return {
80
+ currentPhase: 'A',
81
+ completedPhases: [],
82
+ phaseProgress: {},
83
+ startTime: new Date().toISOString(),
84
+ lastUpdate: new Date().toISOString(),
85
+ totalPhases: PHASE_ORDER.length,
86
+ };
87
+ }
88
+ /**
89
+ * Execute living docs in chunked mode for auto mode integration
90
+ *
91
+ * This breaks the living docs update into time-boxed chunks that can be
92
+ * controlled by the auto mode stop hook.
93
+ */
94
+ export async function executeLivingDocsChunk(options) {
95
+ const startTime = Date.now();
96
+ const checkpoint = options.checkpoint || loadLivingDocsCheckpoint(options.projectPath) || initializeCheckpoint();
97
+ logger.info(`Starting living docs chunk: Phase ${checkpoint.currentPhase} (${getPhaseName(checkpoint.currentPhase)})`);
98
+ let currentPhase = checkpoint.currentPhase;
99
+ let phaseProgress = checkpoint.phaseProgress[currentPhase] || {};
100
+ // Time-boxed execution loop
101
+ while (Date.now() - startTime < options.maxDuration) {
102
+ // Execute current phase
103
+ // NOTE: This is a placeholder - actual implementation would call the real living docs builder
104
+ const phaseResult = await executePhase(currentPhase, phaseProgress, options.projectPath);
105
+ if (phaseResult.complete) {
106
+ // Phase completed
107
+ const updatedCheckpoint = {
108
+ ...checkpoint,
109
+ completedPhases: [...checkpoint.completedPhases, currentPhase],
110
+ lastUpdate: new Date().toISOString(),
111
+ };
112
+ // Save checkpoint
113
+ saveLivingDocsCheckpoint(options.projectPath, updatedCheckpoint);
114
+ logger.info(`Phase ${currentPhase} (${getPhaseName(currentPhase)}) complete!`);
115
+ if (options.stopOnPhaseComplete) {
116
+ // Yield control back to auto mode
117
+ const nextPhase = getNextPhase(currentPhase);
118
+ if (!nextPhase) {
119
+ // All phases complete
120
+ return { status: 'all_complete' };
121
+ }
122
+ return {
123
+ status: 'phase_complete',
124
+ currentPhase,
125
+ nextPhase,
126
+ };
127
+ }
128
+ // Move to next phase
129
+ currentPhase = getNextPhase(currentPhase);
130
+ if (!currentPhase) {
131
+ // All phases complete
132
+ return { status: 'all_complete' };
133
+ }
134
+ phaseProgress = {};
135
+ }
136
+ else {
137
+ // Phase still in progress
138
+ phaseProgress = phaseResult.progress;
139
+ // Update checkpoint with progress
140
+ const updatedCheckpoint = {
141
+ ...checkpoint,
142
+ phaseProgress: {
143
+ ...checkpoint.phaseProgress,
144
+ [currentPhase]: phaseProgress,
145
+ },
146
+ lastUpdate: new Date().toISOString(),
147
+ };
148
+ saveLivingDocsCheckpoint(options.projectPath, updatedCheckpoint);
149
+ }
150
+ }
151
+ // Time limit reached
152
+ logger.info(`Living docs chunk time limit reached (${options.maxDuration}ms)`);
153
+ return {
154
+ status: 'time_limit',
155
+ currentPhase,
156
+ progress: phaseProgress,
157
+ };
158
+ }
159
+ /**
160
+ * Execute a single phase (or chunk of a phase)
161
+ *
162
+ * This is a placeholder that would integrate with the actual living docs builder.
163
+ * In real implementation, this would:
164
+ * 1. Load the living docs builder state
165
+ * 2. Execute the next batch of work for the current phase
166
+ * 3. Return progress information
167
+ */
168
+ async function executePhase(phase, progress, projectPath) {
169
+ // PLACEHOLDER: Real implementation would call the actual living docs builder
170
+ // For now, we'll simulate phase execution
171
+ logger.info(`Executing phase ${phase} (${getPhaseName(phase)})`);
172
+ // This would be replaced with actual living docs builder logic:
173
+ // - Phase A: Discovery (scan file structure, detect repos)
174
+ // - Phase B: Deep Analysis (per-repo analysis)
175
+ // - Phase C: Org Synthesis (team structure inference)
176
+ // - Phase D: Architecture (ADR detection, system diagrams)
177
+ // - Phase E: Inconsistencies (broken links, spec-code gaps)
178
+ // - Phase F: Strategy (recommendations, tech debt)
179
+ // - Phase G: Enterprise (history, feature catalog, delivery docs)
180
+ // - Phase H: Diagrams (Mermaid visualizations)
181
+ // For MVP, we'll mark phase as complete immediately
182
+ // Real implementation would track partial progress and resume
183
+ return {
184
+ complete: true,
185
+ progress: {},
186
+ };
187
+ }
188
+ /**
189
+ * Clean up checkpoint after completion
190
+ */
191
+ export function cleanupCheckpoint(projectPath) {
192
+ const checkpointPath = path.join(projectPath, '.specweave/state/living-docs-checkpoint.json');
193
+ if (fs.existsSync(checkpointPath)) {
194
+ try {
195
+ fs.unlinkSync(checkpointPath);
196
+ logger.info('Living docs checkpoint cleaned up');
197
+ }
198
+ catch (error) {
199
+ logger.warn(`Failed to cleanup checkpoint: ${error}`);
200
+ }
201
+ }
202
+ }
203
+ /**
204
+ * Get current progress summary
205
+ */
206
+ export function getProgressSummary(checkpoint) {
207
+ const completedCount = checkpoint.completedPhases.length;
208
+ const totalCount = checkpoint.totalPhases;
209
+ const percentage = Math.round((completedCount / totalCount) * 100);
210
+ const phaseList = PHASE_ORDER.map((phase) => {
211
+ const isComplete = checkpoint.completedPhases.includes(phase);
212
+ const isCurrent = phase === checkpoint.currentPhase;
213
+ const icon = isComplete ? 'βœ…' : isCurrent ? 'πŸ”„' : '⏳';
214
+ return ` ${icon} Phase ${phase}: ${getPhaseName(phase)}`;
215
+ }).join('\n');
216
+ return `Living Docs Progress: ${completedCount}/${totalCount} phases (${percentage}%)
217
+
218
+ ${phaseList}
219
+
220
+ Current: Phase ${checkpoint.currentPhase} (${getPhaseName(checkpoint.currentPhase)})
221
+ Started: ${checkpoint.startTime}
222
+ Last Update: ${checkpoint.lastUpdate}`;
223
+ }
224
+ //# sourceMappingURL=living-docs-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"living-docs-executor.js","sourceRoot":"","sources":["../../../../src/core/background/living-docs-executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.65",
3
+ "version": "1.0.67",
4
4
  "description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -529,6 +529,77 @@ Continue with /sw:do to start the next increment."
529
529
  fi
530
530
  fi
531
531
 
532
+ # ============================================================================
533
+ # LIVING DOCS UPDATE CHECK
534
+ # ============================================================================
535
+
536
+ LIVING_DOCS_CHECKPOINT="$STATE_DIR/living-docs-checkpoint.json"
537
+
538
+ if [ -f "$LIVING_DOCS_CHECKPOINT" ]; then
539
+ CURRENT_PHASE=$(jq -r '.currentPhase // "unknown"' "$LIVING_DOCS_CHECKPOINT")
540
+ COMPLETED_PHASES=$(jq -r '.completedPhases | length' "$LIVING_DOCS_CHECKPOINT")
541
+ TOTAL_PHASES=$(jq -r '.totalPhases // 8' "$LIVING_DOCS_CHECKPOINT")
542
+ PHASE_NAMES=("A:Discovery" "B:Deep Analysis" "C:Org Synthesis" "D:Architecture" "E:Inconsistencies" "F:Strategy" "G:Enterprise" "H:Diagrams")
543
+
544
+ if [ "$COMPLETED_PHASES" -lt "$TOTAL_PHASES" ]; then
545
+ # Map phase letter to name
546
+ case "$CURRENT_PHASE" in
547
+ A) PHASE_NAME="Discovery" ;;
548
+ B) PHASE_NAME="Deep Analysis" ;;
549
+ C) PHASE_NAME="Org Synthesis" ;;
550
+ D) PHASE_NAME="Architecture" ;;
551
+ E) PHASE_NAME="Inconsistencies" ;;
552
+ F) PHASE_NAME="Strategy" ;;
553
+ G) PHASE_NAME="Enterprise" ;;
554
+ H) PHASE_NAME="Diagrams" ;;
555
+ *) PHASE_NAME="Unknown" ;;
556
+ esac
557
+
558
+ PROGRESS_PCT=$((COMPLETED_PHASES * 100 / TOTAL_PHASES))
559
+
560
+ # Build phase status list
561
+ PHASE_STATUS=""
562
+ for i in {0..7}; do
563
+ PHASE_LETTER=$(echo "${PHASE_NAMES[$i]}" | cut -d: -f1)
564
+ PHASE_LABEL=$(echo "${PHASE_NAMES[$i]}" | cut -d: -f2)
565
+ if [ $i -lt "$COMPLETED_PHASES" ]; then
566
+ PHASE_STATUS="${PHASE_STATUS} βœ… Phase $PHASE_LETTER: $PHASE_LABEL\n"
567
+ elif [ "$PHASE_LETTER" = "$CURRENT_PHASE" ]; then
568
+ PHASE_STATUS="${PHASE_STATUS} πŸ”„ Phase $PHASE_LETTER: $PHASE_LABEL (in progress)\n"
569
+ else
570
+ PHASE_STATUS="${PHASE_STATUS} ⏳ Phase $PHASE_LETTER: $PHASE_LABEL\n"
571
+ fi
572
+ done
573
+
574
+ # Log living docs progress
575
+ echo "{\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"event\":\"living_docs_progress\",\"phase\":\"$CURRENT_PHASE\",\"completed\":$COMPLETED_PHASES,\"total\":$TOTAL_PHASES}" >> "$LOGS_DIR/auto-iterations.log"
576
+
577
+ block "Living docs update in progress" "πŸ“š LIVING DOCS UPDATE ($PROGRESS_PCT% complete)
578
+
579
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
580
+ Current Phase: $PHASE_NAME
581
+ Progress: $COMPLETED_PHASES/$TOTAL_PHASES phases complete
582
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
583
+
584
+ Phase Status:
585
+ $(echo -e "$PHASE_STATUS")
586
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
587
+
588
+ Continue with /sw:do to proceed with living docs update.
589
+ This will run for multiple iterations until all phases complete.
590
+
591
+ πŸ’‘ Living docs runs in chunked mode (2 hours/iteration) and saves
592
+ checkpoints after each phase. Safe to interrupt anytime!"
593
+ fi
594
+
595
+ # All phases complete - clean up and allow exit
596
+ if [ "$COMPLETED_PHASES" -eq "$TOTAL_PHASES" ]; then
597
+ rm -f "$LIVING_DOCS_CHECKPOINT"
598
+ echo "{\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"event\":\"living_docs_complete\",\"phases\":$TOTAL_PHASES}" >> "$LOGS_DIR/auto-iterations.log"
599
+ # Don't approve exit here - let normal task completion flow handle it
600
+ fi
601
+ fi
602
+
532
603
  # Check for human gate pending
533
604
  PENDING_GATE=$(echo "$SESSION" | jq -r '.humanGates.pending // null')
534
605
  if [ "$PENDING_GATE" != "null" ]; then
@@ -70,12 +70,7 @@ try {
70
70
 
71
71
  const jobs = state.jobs || [];
72
72
 
73
- if (jobs.length === 0) {
74
- console.log('No background jobs found.');
75
- process.exit(0);
76
- }
77
-
78
- // If specific job requested
73
+ // If specific job requested, check before general empty check
79
74
  if (specificId) {
80
75
  const job = jobs.find(j => j.id === specificId || j.id.startsWith(specificId));
81
76
  if (!job) {
@@ -89,16 +84,24 @@ if (specificId) {
89
84
  console.log(`Started: ${job.startedAt}`);
90
85
  console.log(`Updated: ${job.updatedAt}`);
91
86
 
92
- const p = job.progress;
93
- const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
94
- console.log(`Progress: ${p.current}/${p.total} (${pct}%)`);
95
-
87
+ const p = job.progress || {};
88
+ const current = p.current ?? 0;
89
+ const total = p.total ?? 0;
90
+ const pct = total > 0 ? Math.round((current / total) * 100) : 0;
91
+ console.log(`Progress: ${current}/${total} (${pct}%)`);
92
+
96
93
  if (job.error) {
97
94
  console.log(`Error: ${job.error}`);
98
95
  }
99
96
  process.exit(0);
100
97
  }
101
98
 
99
+ // General empty check (only if no specific ID was requested)
100
+ if (jobs.length === 0) {
101
+ console.log('No background jobs found.');
102
+ process.exit(0);
103
+ }
104
+
102
105
  // Group by status
103
106
  const running = jobs.filter(j => j.status === 'running');
104
107
  const paused = jobs.filter(j => j.status === 'paused');
@@ -111,12 +114,14 @@ console.log('\nπŸ“‹ Background Jobs\n');
111
114
  if (running.length > 0) {
112
115
  console.log(`πŸ”„ Running (${running.length}):`);
113
116
  for (const job of running) {
114
- const p = job.progress;
115
- const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
117
+ const p = job.progress || {};
118
+ const current = p.current ?? 0;
119
+ const total = p.total ?? 0;
120
+ const pct = total > 0 ? Math.round((current / total) * 100) : 0;
116
121
  const elapsed = (Date.now() - new Date(job.startedAt).getTime()) / 1000;
117
- const rate = elapsed > 0 ? (p.current / elapsed).toFixed(1) : '0';
122
+ const rate = elapsed > 0 ? (current / elapsed).toFixed(1) : '0';
118
123
  console.log(` [${job.id.slice(0,8)}] ${job.type}`);
119
- console.log(` Progress: ${p.current}/${p.total} (${pct}%) | Rate: ${rate}/s`);
124
+ console.log(` Progress: ${current}/${total} (${pct}%) | Rate: ${rate}/s`);
120
125
  }
121
126
  console.log('');
122
127
  }
@@ -125,8 +130,10 @@ if (running.length > 0) {
125
130
  if (paused.length > 0) {
126
131
  console.log(`⏸️ Paused (${paused.length}):`);
127
132
  for (const job of paused) {
128
- const p = job.progress;
129
- const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;
133
+ const p = job.progress || {};
134
+ const current = p.current ?? 0;
135
+ const total = p.total ?? 0;
136
+ const pct = total > 0 ? Math.round((current / total) * 100) : 0;
130
137
  console.log(` [${job.id.slice(0,8)}] ${job.type} - ${pct}%`);
131
138
  }
132
139
  console.log('');