ai-sdlc 0.2.0-alpha.9 → 0.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1058
- package/dist/agents/implementation.d.ts +6 -0
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +87 -13
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/planning.d.ts.map +1 -1
- package/dist/agents/planning.js +22 -3
- package/dist/agents/planning.js.map +1 -1
- package/dist/agents/refinement.d.ts.map +1 -1
- package/dist/agents/refinement.js +22 -3
- package/dist/agents/refinement.js.map +1 -1
- package/dist/agents/research.d.ts +85 -1
- package/dist/agents/research.d.ts.map +1 -1
- package/dist/agents/research.js +506 -16
- package/dist/agents/research.js.map +1 -1
- package/dist/agents/review.d.ts +67 -2
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +477 -68
- package/dist/agents/review.js.map +1 -1
- package/dist/agents/rework.d.ts.map +1 -1
- package/dist/agents/rework.js +22 -3
- package/dist/agents/rework.js.map +1 -1
- package/dist/agents/state-assessor.d.ts +3 -3
- package/dist/agents/state-assessor.d.ts.map +1 -1
- package/dist/agents/state-assessor.js +6 -6
- package/dist/agents/state-assessor.js.map +1 -1
- package/dist/agents/test-pattern-detector.d.ts +49 -0
- package/dist/agents/test-pattern-detector.d.ts.map +1 -0
- package/dist/agents/test-pattern-detector.js +273 -0
- package/dist/agents/test-pattern-detector.js.map +1 -0
- package/dist/agents/verification.d.ts +11 -0
- package/dist/agents/verification.d.ts.map +1 -1
- package/dist/agents/verification.js +74 -1
- package/dist/agents/verification.js.map +1 -1
- package/dist/cli/commands/migrate.js +1 -1
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands.d.ts +43 -3
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +588 -150
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +20 -3
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +18 -6
- package/dist/cli/runner.js.map +1 -1
- package/dist/core/auth.d.ts +43 -0
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +105 -1
- package/dist/core/auth.js.map +1 -1
- package/dist/core/client.d.ts +6 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +57 -3
- package/dist/core/client.js.map +1 -1
- package/dist/core/config.d.ts +5 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +27 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/conflict-detector.d.ts +108 -0
- package/dist/core/conflict-detector.d.ts.map +1 -0
- package/dist/core/conflict-detector.js +413 -0
- package/dist/core/conflict-detector.js.map +1 -0
- package/dist/core/git-utils.d.ts +10 -1
- package/dist/core/git-utils.d.ts.map +1 -1
- package/dist/core/git-utils.js +55 -4
- package/dist/core/git-utils.js.map +1 -1
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +17 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/kanban.d.ts +1 -1
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +3 -3
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/logger.d.ts +92 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +221 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/story-logger.d.ts +102 -0
- package/dist/core/story-logger.d.ts.map +1 -0
- package/dist/core/story-logger.js +265 -0
- package/dist/core/story-logger.js.map +1 -0
- package/dist/core/story.d.ts +79 -20
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +221 -39
- package/dist/core/story.js.map +1 -1
- package/dist/core/workflow-state.d.ts +45 -6
- package/dist/core/workflow-state.d.ts.map +1 -1
- package/dist/core/workflow-state.js +201 -12
- package/dist/core/workflow-state.js.map +1 -1
- package/dist/core/worktree.d.ts +9 -0
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +52 -1
- package/dist/core/worktree.js.map +1 -1
- package/dist/index.js +112 -6
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +123 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +3 -1
package/dist/core/story.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import matter from 'gray-matter';
|
|
4
|
+
import * as properLockfile from 'proper-lockfile';
|
|
4
5
|
import { FOLDER_TO_STATUS, BLOCKED_DIR, STORIES_FOLDER, STORY_FILENAME, DEFAULT_PRIORITY_GAP } from '../types/index.js';
|
|
5
6
|
/**
|
|
6
7
|
* Parse a story markdown file into a Story object
|
|
@@ -37,27 +38,91 @@ export function parseStory(filePath) {
|
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
|
-
* Write a story back to disk
|
|
41
|
+
* Write a story back to disk with file locking for atomic updates.
|
|
42
|
+
*
|
|
43
|
+
* This function acquires an exclusive lock before writing to prevent race conditions
|
|
44
|
+
* from concurrent processes. The lock is always released, even if an error occurs.
|
|
45
|
+
*
|
|
46
|
+
* **IMPORTANT:** Do not nest locks on the same file to avoid deadlock. Batch multiple
|
|
47
|
+
* updates into a single writeStory() call instead.
|
|
48
|
+
*
|
|
49
|
+
* @param story - Story object to write
|
|
50
|
+
* @param options - Lock options (timeout, retries, stale threshold)
|
|
51
|
+
* @throws Error if file is locked by another process or filesystem is read-only
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Good: Batch updates
|
|
56
|
+
* story.frontmatter.status = 'in-progress';
|
|
57
|
+
* story.frontmatter.priority = 1;
|
|
58
|
+
* await writeStory(story);
|
|
59
|
+
*
|
|
60
|
+
* // Bad: Nested locks (potential deadlock)
|
|
61
|
+
* await writeStory(story); // holds lock
|
|
62
|
+
* await writeStory(story); // tries to acquire same lock = deadlock
|
|
63
|
+
* ```
|
|
41
64
|
*/
|
|
42
|
-
export function writeStory(story) {
|
|
65
|
+
export async function writeStory(story, options) {
|
|
43
66
|
const content = matter.stringify(story.content, story.frontmatter);
|
|
44
|
-
|
|
67
|
+
// For new files (file doesn't exist yet), write directly without locking
|
|
68
|
+
// No race condition possible when creating a new file
|
|
69
|
+
if (!fs.existsSync(story.path)) {
|
|
70
|
+
fs.writeFileSync(story.path, content);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// For existing files, use locking to prevent concurrent write corruption
|
|
74
|
+
const timeout = options?.lockTimeout ?? 5000;
|
|
75
|
+
const retries = options?.retries ?? 3;
|
|
76
|
+
const stale = options?.stale ?? timeout;
|
|
77
|
+
// Acquire lock with retry logic and exponential backoff
|
|
78
|
+
let release;
|
|
79
|
+
try {
|
|
80
|
+
release = await properLockfile.lock(story.path, {
|
|
81
|
+
retries: {
|
|
82
|
+
retries,
|
|
83
|
+
minTimeout: 100,
|
|
84
|
+
maxTimeout: 1000,
|
|
85
|
+
},
|
|
86
|
+
stale,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
// Handle lock-specific errors with actionable messages
|
|
91
|
+
if (error.code === 'ELOCKED') {
|
|
92
|
+
throw new Error(`Story ${story.frontmatter.id || story.path} is locked by another process. ` +
|
|
93
|
+
`Please retry in a moment or check for hung processes.`);
|
|
94
|
+
}
|
|
95
|
+
if (error.code === 'EACCES' || error.code === 'EPERM') {
|
|
96
|
+
throw new Error(`Cannot create lock file: filesystem is read-only or insufficient permissions. ` +
|
|
97
|
+
`Ensure ${path.dirname(story.path)} is writable.`);
|
|
98
|
+
}
|
|
99
|
+
// ESTALE is handled automatically by proper-lockfile (stale lock removed)
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
// Critical section: write story to disk
|
|
104
|
+
fs.writeFileSync(story.path, content);
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
// Always release lock, even on error
|
|
108
|
+
await release();
|
|
109
|
+
}
|
|
45
110
|
}
|
|
46
111
|
/**
|
|
47
112
|
* Update story status in frontmatter without moving files
|
|
48
113
|
* This is the preferred method in the new folder-per-story architecture
|
|
49
114
|
*/
|
|
50
|
-
export function updateStoryStatus(story, newStatus) {
|
|
115
|
+
export async function updateStoryStatus(story, newStatus) {
|
|
51
116
|
story.frontmatter.status = newStatus;
|
|
52
117
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
53
|
-
writeStory(story);
|
|
118
|
+
await writeStory(story);
|
|
54
119
|
return story;
|
|
55
120
|
}
|
|
56
121
|
/**
|
|
57
122
|
* Move a story to a different kanban folder
|
|
58
123
|
* @deprecated Use updateStoryStatus() instead. Will be removed in v2.0
|
|
59
124
|
*/
|
|
60
|
-
export function moveStory(story, toFolder, sdlcRoot) {
|
|
125
|
+
export async function moveStory(story, toFolder, sdlcRoot) {
|
|
61
126
|
console.warn('moveStory() is deprecated. Use updateStoryStatus() instead. Will be removed in v2.0');
|
|
62
127
|
const targetFolder = path.join(sdlcRoot, toFolder);
|
|
63
128
|
// Ensure target folder exists
|
|
@@ -77,7 +142,7 @@ export function moveStory(story, toFolder, sdlcRoot) {
|
|
|
77
142
|
// Write to new location
|
|
78
143
|
const oldPath = story.path;
|
|
79
144
|
story.path = newPath;
|
|
80
|
-
writeStory(story);
|
|
145
|
+
await writeStory(story);
|
|
81
146
|
// Remove old file
|
|
82
147
|
if (fs.existsSync(oldPath) && oldPath !== newPath) {
|
|
83
148
|
fs.unlinkSync(oldPath);
|
|
@@ -91,7 +156,7 @@ export function moveStory(story, toFolder, sdlcRoot) {
|
|
|
91
156
|
* @param storyPath - Absolute path to the story file
|
|
92
157
|
* @param reason - Reason for blocking (e.g., "Max refinement attempts (2/2) reached")
|
|
93
158
|
*/
|
|
94
|
-
export function moveToBlocked(storyPath, reason) {
|
|
159
|
+
export async function moveToBlocked(storyPath, reason) {
|
|
95
160
|
// Security: Validate path BEFORE any file I/O operations
|
|
96
161
|
const resolvedPath = path.resolve(storyPath);
|
|
97
162
|
const storyDir = path.dirname(resolvedPath);
|
|
@@ -113,7 +178,7 @@ export function moveToBlocked(storyPath, reason) {
|
|
|
113
178
|
story.frontmatter.blocked_at = new Date().toISOString();
|
|
114
179
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
115
180
|
// Write back to same location
|
|
116
|
-
writeStory(story);
|
|
181
|
+
await writeStory(story);
|
|
117
182
|
}
|
|
118
183
|
/**
|
|
119
184
|
* Generate a unique story ID in sequential format (S-0001, S-0002, etc.)
|
|
@@ -166,13 +231,86 @@ export function slugify(title) {
|
|
|
166
231
|
.replace(/^-|-$/g, '')
|
|
167
232
|
.substring(0, 50);
|
|
168
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Sanitize a title string for safe use in file paths and display.
|
|
236
|
+
* Removes dangerous characters that could be used for injection attacks.
|
|
237
|
+
*
|
|
238
|
+
* SECURITY: This function prevents command injection and path traversal through titles.
|
|
239
|
+
*
|
|
240
|
+
* @param title - Title string to sanitize
|
|
241
|
+
* @returns Sanitized title safe for use in paths and commands
|
|
242
|
+
*/
|
|
243
|
+
export function sanitizeTitle(title) {
|
|
244
|
+
if (!title)
|
|
245
|
+
return '';
|
|
246
|
+
let sanitized = title
|
|
247
|
+
// Remove shell metacharacters that could be used for command injection
|
|
248
|
+
.replace(/[`$()\\|&;<>]/g, '')
|
|
249
|
+
// Remove ANSI escape codes (colors, cursor control)
|
|
250
|
+
.replace(/\x1B\[[0-9;]*[a-zA-Z]/g, '')
|
|
251
|
+
// Remove OSC sequences (hyperlinks, window titles)
|
|
252
|
+
.replace(/\x1B\][^\x07]*\x07/g, '')
|
|
253
|
+
.replace(/\x1B\][^\x1B]*\x1B\\/g, '')
|
|
254
|
+
// Remove null bytes and control characters
|
|
255
|
+
.replace(/[\x00-\x1F\x7F-\x9F]/g, '');
|
|
256
|
+
// Normalize Unicode to prevent homograph attacks
|
|
257
|
+
sanitized = sanitized.normalize('NFC');
|
|
258
|
+
// Limit length to prevent storage issues
|
|
259
|
+
if (sanitized.length > 200) {
|
|
260
|
+
sanitized = sanitized.substring(0, 200);
|
|
261
|
+
}
|
|
262
|
+
return sanitized.trim();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Extract title from file content using safe parsing.
|
|
266
|
+
* Priority: YAML frontmatter > H1 heading > null
|
|
267
|
+
*
|
|
268
|
+
* SECURITY: Uses regex-only approach to avoid YAML parser vulnerabilities.
|
|
269
|
+
*
|
|
270
|
+
* @param content - File content to extract title from
|
|
271
|
+
* @returns Extracted title or null if not found
|
|
272
|
+
*/
|
|
273
|
+
export function extractTitleFromContent(content) {
|
|
274
|
+
if (!content || content.trim().length === 0) {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
// Try to extract from YAML frontmatter using safe regex (no full YAML parsing)
|
|
278
|
+
// Match: --- at start, then look for title: field, then --- to close
|
|
279
|
+
const frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/m);
|
|
280
|
+
if (frontmatterMatch) {
|
|
281
|
+
// Look for title: field in the frontmatter block
|
|
282
|
+
const titleMatch = frontmatterMatch[1].match(/^title:\s*['"]?([^'"\n]+?)['"]?\s*$/m);
|
|
283
|
+
if (titleMatch && titleMatch[1]) {
|
|
284
|
+
const title = titleMatch[1].trim();
|
|
285
|
+
if (title.length > 0) {
|
|
286
|
+
return sanitizeTitle(title);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// Fall back to first H1 heading (# Title)
|
|
291
|
+
// Use non-greedy matching with length limit to prevent ReDoS
|
|
292
|
+
const h1Match = content.match(/^#\s+(.{1,200}?)$/m);
|
|
293
|
+
if (h1Match && h1Match[1]) {
|
|
294
|
+
const title = h1Match[1].trim();
|
|
295
|
+
if (title.length > 0) {
|
|
296
|
+
return sanitizeTitle(title);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// No title found
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
169
302
|
/**
|
|
170
303
|
* Create a new story in the folder-per-story structure
|
|
171
304
|
*
|
|
172
305
|
* Creates stories/{id}/story.md with slug and priority in frontmatter.
|
|
173
306
|
* Priority uses gaps (10, 20, 30...) for easy insertion without renumbering.
|
|
307
|
+
*
|
|
308
|
+
* @param title - Story title
|
|
309
|
+
* @param sdlcRoot - Root path of .ai-sdlc folder
|
|
310
|
+
* @param options - Optional frontmatter fields
|
|
311
|
+
* @param content - Optional custom story content (if not provided, uses default template)
|
|
174
312
|
*/
|
|
175
|
-
export function createStory(title, sdlcRoot, options = {}) {
|
|
313
|
+
export async function createStory(title, sdlcRoot, options = {}, content) {
|
|
176
314
|
const storiesFolder = path.join(sdlcRoot, STORIES_FOLDER);
|
|
177
315
|
// Validate parent stories/ directory exists
|
|
178
316
|
if (!fs.existsSync(storiesFolder)) {
|
|
@@ -230,7 +368,17 @@ export function createStory(title, sdlcRoot, options = {}) {
|
|
|
230
368
|
reviews_complete: false,
|
|
231
369
|
...options,
|
|
232
370
|
};
|
|
233
|
-
|
|
371
|
+
// Use custom content if provided, otherwise use default template
|
|
372
|
+
let storyContent;
|
|
373
|
+
if (content) {
|
|
374
|
+
// Security: Strip dangerous HTML tags from custom content
|
|
375
|
+
storyContent = content
|
|
376
|
+
.replace(/<script[^>]*>.*?<\/script>/gis, '')
|
|
377
|
+
.replace(/<iframe[^>]*>.*?<\/iframe>/gis, '');
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
// Default template
|
|
381
|
+
storyContent = `# ${title}
|
|
234
382
|
|
|
235
383
|
## Summary
|
|
236
384
|
|
|
@@ -251,13 +399,14 @@ export function createStory(title, sdlcRoot, options = {}) {
|
|
|
251
399
|
## Review Notes
|
|
252
400
|
|
|
253
401
|
<!-- Populated by review agents -->`;
|
|
402
|
+
}
|
|
254
403
|
const story = {
|
|
255
404
|
path: filePath,
|
|
256
405
|
slug,
|
|
257
406
|
frontmatter,
|
|
258
|
-
content,
|
|
407
|
+
content: storyContent,
|
|
259
408
|
};
|
|
260
|
-
writeStory(story);
|
|
409
|
+
await writeStory(story);
|
|
261
410
|
// Return story with canonical path for consistency
|
|
262
411
|
const canonicalPath = fs.realpathSync(filePath);
|
|
263
412
|
return { ...story, path: canonicalPath };
|
|
@@ -265,16 +414,16 @@ export function createStory(title, sdlcRoot, options = {}) {
|
|
|
265
414
|
/**
|
|
266
415
|
* Update story frontmatter field
|
|
267
416
|
*/
|
|
268
|
-
export function updateStoryField(story, field, value) {
|
|
417
|
+
export async function updateStoryField(story, field, value) {
|
|
269
418
|
story.frontmatter[field] = value;
|
|
270
419
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
271
|
-
writeStory(story);
|
|
420
|
+
await writeStory(story);
|
|
272
421
|
return story;
|
|
273
422
|
}
|
|
274
423
|
/**
|
|
275
424
|
* Append content to a section in the story
|
|
276
425
|
*/
|
|
277
|
-
export function appendToSection(story, section, content) {
|
|
426
|
+
export async function appendToSection(story, section, content) {
|
|
278
427
|
const sectionHeader = `## ${section}`;
|
|
279
428
|
const sectionIndex = story.content.indexOf(sectionHeader);
|
|
280
429
|
if (sectionIndex === -1) {
|
|
@@ -297,13 +446,13 @@ export function appendToSection(story, section, content) {
|
|
|
297
446
|
story.content.substring(insertPoint);
|
|
298
447
|
}
|
|
299
448
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
300
|
-
writeStory(story);
|
|
449
|
+
await writeStory(story);
|
|
301
450
|
return story;
|
|
302
451
|
}
|
|
303
452
|
/**
|
|
304
453
|
* Record a refinement attempt in the story's frontmatter
|
|
305
454
|
*/
|
|
306
|
-
export function recordRefinementAttempt(story, agentType, reviewFeedback) {
|
|
455
|
+
export async function recordRefinementAttempt(story, agentType, reviewFeedback) {
|
|
307
456
|
// Initialize refinement tracking if not present
|
|
308
457
|
if (!story.frontmatter.refinement_iterations) {
|
|
309
458
|
story.frontmatter.refinement_iterations = [];
|
|
@@ -320,7 +469,7 @@ export function recordRefinementAttempt(story, agentType, reviewFeedback) {
|
|
|
320
469
|
story.frontmatter.refinement_iterations.push(refinementRecord);
|
|
321
470
|
story.frontmatter.refinement_count = iteration;
|
|
322
471
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
323
|
-
writeStory(story);
|
|
472
|
+
await writeStory(story);
|
|
324
473
|
return story;
|
|
325
474
|
}
|
|
326
475
|
/**
|
|
@@ -341,7 +490,7 @@ export function canRetryRefinement(story, maxAttempts) {
|
|
|
341
490
|
/**
|
|
342
491
|
* Reset phase completion flags for rework
|
|
343
492
|
*/
|
|
344
|
-
export function resetPhaseCompletion(story, phase) {
|
|
493
|
+
export async function resetPhaseCompletion(story, phase) {
|
|
345
494
|
switch (phase) {
|
|
346
495
|
case 'research':
|
|
347
496
|
story.frontmatter.research_complete = false;
|
|
@@ -354,7 +503,7 @@ export function resetPhaseCompletion(story, phase) {
|
|
|
354
503
|
break;
|
|
355
504
|
}
|
|
356
505
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
357
|
-
writeStory(story);
|
|
506
|
+
await writeStory(story);
|
|
358
507
|
return story;
|
|
359
508
|
}
|
|
360
509
|
/**
|
|
@@ -372,9 +521,9 @@ export function getLatestReviewFeedback(story) {
|
|
|
372
521
|
/**
|
|
373
522
|
* Append refinement feedback to the story content
|
|
374
523
|
*/
|
|
375
|
-
export function appendRefinementNote(story, iteration, feedback) {
|
|
524
|
+
export async function appendRefinementNote(story, iteration, feedback) {
|
|
376
525
|
const refinementNote = `### Refinement Iteration ${iteration}\n\n${feedback}`;
|
|
377
|
-
return appendToSection(story, 'Review Notes', refinementNote);
|
|
526
|
+
return await appendToSection(story, 'Review Notes', refinementNote);
|
|
378
527
|
}
|
|
379
528
|
/**
|
|
380
529
|
* Get the effective maximum retries for a story (story-specific or config default)
|
|
@@ -403,18 +552,18 @@ export function isAtMaxRetries(story, config, maxIterationsOverride) {
|
|
|
403
552
|
/**
|
|
404
553
|
* Increment the retry count for a story
|
|
405
554
|
*/
|
|
406
|
-
export function incrementRetryCount(story) {
|
|
555
|
+
export async function incrementRetryCount(story) {
|
|
407
556
|
const currentCount = story.frontmatter.retry_count || 0;
|
|
408
557
|
story.frontmatter.retry_count = currentCount + 1;
|
|
409
558
|
story.frontmatter.last_restart_timestamp = new Date().toISOString();
|
|
410
559
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
411
|
-
writeStory(story);
|
|
560
|
+
await writeStory(story);
|
|
412
561
|
return story;
|
|
413
562
|
}
|
|
414
563
|
/**
|
|
415
564
|
* Reset RPIV cycle for a story (keep research, reset plan/implementation/reviews)
|
|
416
565
|
*/
|
|
417
|
-
export function resetRPIVCycle(story, reason) {
|
|
566
|
+
export async function resetRPIVCycle(story, reason) {
|
|
418
567
|
// Keep research_complete as true, reset other flags
|
|
419
568
|
story.frontmatter.plan_complete = false;
|
|
420
569
|
story.frontmatter.implementation_complete = false;
|
|
@@ -425,13 +574,13 @@ export function resetRPIVCycle(story, reason) {
|
|
|
425
574
|
// Increment retry count
|
|
426
575
|
const currentCount = story.frontmatter.retry_count || 0;
|
|
427
576
|
story.frontmatter.retry_count = currentCount + 1;
|
|
428
|
-
writeStory(story);
|
|
577
|
+
await writeStory(story);
|
|
429
578
|
return story;
|
|
430
579
|
}
|
|
431
580
|
/**
|
|
432
581
|
* Append a review attempt to the story's review history
|
|
433
582
|
*/
|
|
434
|
-
export function appendReviewHistory(story, attempt) {
|
|
583
|
+
export async function appendReviewHistory(story, attempt) {
|
|
435
584
|
if (!story.frontmatter.review_history) {
|
|
436
585
|
story.frontmatter.review_history = [];
|
|
437
586
|
}
|
|
@@ -442,7 +591,7 @@ export function appendReviewHistory(story, attempt) {
|
|
|
442
591
|
story.frontmatter.review_history = story.frontmatter.review_history.slice(-10);
|
|
443
592
|
}
|
|
444
593
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
445
|
-
writeStory(story);
|
|
594
|
+
await writeStory(story);
|
|
446
595
|
return story;
|
|
447
596
|
}
|
|
448
597
|
/**
|
|
@@ -457,23 +606,23 @@ export function getLatestReviewAttempt(story) {
|
|
|
457
606
|
/**
|
|
458
607
|
* Mark a story as complete (all workflow flags set to true)
|
|
459
608
|
*/
|
|
460
|
-
export function markStoryComplete(story) {
|
|
609
|
+
export async function markStoryComplete(story) {
|
|
461
610
|
story.frontmatter.research_complete = true;
|
|
462
611
|
story.frontmatter.plan_complete = true;
|
|
463
612
|
story.frontmatter.implementation_complete = true;
|
|
464
613
|
story.frontmatter.reviews_complete = true;
|
|
465
614
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
466
|
-
writeStory(story);
|
|
615
|
+
await writeStory(story);
|
|
467
616
|
return story;
|
|
468
617
|
}
|
|
469
618
|
/**
|
|
470
619
|
* Snapshot max_retries from config to story frontmatter (for mid-cycle config change protection)
|
|
471
620
|
*/
|
|
472
|
-
export function snapshotMaxRetries(story, config) {
|
|
621
|
+
export async function snapshotMaxRetries(story, config) {
|
|
473
622
|
if (story.frontmatter.max_retries === undefined) {
|
|
474
623
|
story.frontmatter.max_retries = config.reviewConfig.maxRetries;
|
|
475
624
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
476
|
-
writeStory(story);
|
|
625
|
+
await writeStory(story);
|
|
477
626
|
}
|
|
478
627
|
return story;
|
|
479
628
|
}
|
|
@@ -517,22 +666,55 @@ export function isAtMaxImplementationRetries(story, config) {
|
|
|
517
666
|
/**
|
|
518
667
|
* Reset implementation retry count to 0
|
|
519
668
|
*/
|
|
520
|
-
export function resetImplementationRetryCount(story) {
|
|
669
|
+
export async function resetImplementationRetryCount(story) {
|
|
521
670
|
story.frontmatter.implementation_retry_count = 0;
|
|
522
671
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
523
|
-
writeStory(story);
|
|
672
|
+
await writeStory(story);
|
|
524
673
|
return story;
|
|
525
674
|
}
|
|
526
675
|
/**
|
|
527
676
|
* Increment the implementation retry count for a story
|
|
528
677
|
*/
|
|
529
|
-
export function incrementImplementationRetryCount(story) {
|
|
678
|
+
export async function incrementImplementationRetryCount(story) {
|
|
530
679
|
const currentCount = story.frontmatter.implementation_retry_count || 0;
|
|
531
680
|
story.frontmatter.implementation_retry_count = currentCount + 1;
|
|
532
681
|
story.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
533
|
-
writeStory(story);
|
|
682
|
+
await writeStory(story);
|
|
534
683
|
return story;
|
|
535
684
|
}
|
|
685
|
+
/**
|
|
686
|
+
* Sanitize story ID for safe path construction.
|
|
687
|
+
* Prevents path traversal attacks by rejecting dangerous characters.
|
|
688
|
+
*
|
|
689
|
+
* SECURITY: This function is CRITICAL for preventing path traversal vulnerabilities.
|
|
690
|
+
* Use this before constructing ANY file paths with user-provided story IDs.
|
|
691
|
+
*
|
|
692
|
+
* @param storyId - Story ID to sanitize (e.g., 'S-0001')
|
|
693
|
+
* @returns Sanitized story ID safe for path construction
|
|
694
|
+
* @throws Error if storyId contains dangerous characters or patterns
|
|
695
|
+
*/
|
|
696
|
+
export function sanitizeStoryId(storyId) {
|
|
697
|
+
if (!storyId) {
|
|
698
|
+
throw new Error('Story ID cannot be empty');
|
|
699
|
+
}
|
|
700
|
+
// Reject path traversal attempts
|
|
701
|
+
if (storyId.includes('..')) {
|
|
702
|
+
throw new Error('Invalid story ID: contains path traversal sequence (..)');
|
|
703
|
+
}
|
|
704
|
+
// Reject path separators
|
|
705
|
+
if (storyId.includes('/') || storyId.includes('\\')) {
|
|
706
|
+
throw new Error('Invalid story ID: contains path separator');
|
|
707
|
+
}
|
|
708
|
+
// Reject absolute paths
|
|
709
|
+
if (path.isAbsolute(storyId)) {
|
|
710
|
+
throw new Error('Invalid story ID: cannot be an absolute path');
|
|
711
|
+
}
|
|
712
|
+
// Reject control characters and other dangerous characters
|
|
713
|
+
if (/[\x00-\x1F\x7F]/.test(storyId)) {
|
|
714
|
+
throw new Error('Invalid story ID: contains control characters');
|
|
715
|
+
}
|
|
716
|
+
return storyId;
|
|
717
|
+
}
|
|
536
718
|
/**
|
|
537
719
|
* Sanitize user-controlled text for safe display and storage.
|
|
538
720
|
* Removes ANSI escape sequences, control characters, and potential injection vectors.
|
|
@@ -684,7 +866,7 @@ export function getStory(sdlcRoot, storyId) {
|
|
|
684
866
|
* @param options - Optional configuration { resetRetries?: boolean }
|
|
685
867
|
* @returns The unblocked story
|
|
686
868
|
*/
|
|
687
|
-
export function unblockStory(storyId, sdlcRoot, options) {
|
|
869
|
+
export async function unblockStory(storyId, sdlcRoot, options) {
|
|
688
870
|
// Use the centralized getStory() function for lookup
|
|
689
871
|
const foundStory = findStoryById(sdlcRoot, storyId);
|
|
690
872
|
if (!foundStory) {
|
|
@@ -719,7 +901,7 @@ export function unblockStory(storyId, sdlcRoot, options) {
|
|
|
719
901
|
foundStory.frontmatter.status = newStatus;
|
|
720
902
|
foundStory.frontmatter.updated = new Date().toISOString().split('T')[0];
|
|
721
903
|
// Write back to same location
|
|
722
|
-
writeStory(foundStory);
|
|
904
|
+
await writeStory(foundStory);
|
|
723
905
|
return foundStory;
|
|
724
906
|
}
|
|
725
907
|
//# sourceMappingURL=story.js.map
|
package/dist/core/story.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,16 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { WorkflowExecutionState, WorkflowStateValidationResult } from '../types/workflow-state.js';
|
|
8
8
|
/**
|
|
9
|
-
* Get the path to the workflow state file
|
|
9
|
+
* Get the path to the workflow state file.
|
|
10
|
+
*
|
|
11
|
+
* SECURITY: storyId is sanitized using sanitizeStoryId() to prevent path traversal attacks.
|
|
12
|
+
* Never construct paths manually - always use this function to ensure proper sanitization.
|
|
13
|
+
*
|
|
14
|
+
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
15
|
+
* @param storyId - Optional story ID for per-story state isolation
|
|
16
|
+
* @returns Path to the workflow state file (story-specific or global)
|
|
10
17
|
*/
|
|
11
|
-
export declare function getStateFilePath(sdlcRoot: string): string;
|
|
18
|
+
export declare function getStateFilePath(sdlcRoot: string, storyId?: string): string;
|
|
12
19
|
/**
|
|
13
20
|
* Generate a unique workflow ID based on timestamp
|
|
14
21
|
*/
|
|
@@ -24,15 +31,17 @@ export declare function calculateStoryHash(storyPath: string): string;
|
|
|
24
31
|
*
|
|
25
32
|
* @param state - The workflow execution state to save
|
|
26
33
|
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
34
|
+
* @param storyId - Optional story ID for per-story state isolation
|
|
27
35
|
*/
|
|
28
|
-
export declare function saveWorkflowState(state: WorkflowExecutionState, sdlcRoot: string): Promise<void>;
|
|
36
|
+
export declare function saveWorkflowState(state: WorkflowExecutionState, sdlcRoot: string, storyId?: string): Promise<void>;
|
|
29
37
|
/**
|
|
30
38
|
* Load workflow state from disk
|
|
31
39
|
*
|
|
32
40
|
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
41
|
+
* @param storyId - Optional story ID for per-story state isolation
|
|
33
42
|
* @returns The workflow state, or null if no state file exists
|
|
34
43
|
*/
|
|
35
|
-
export declare function loadWorkflowState(sdlcRoot: string): Promise<WorkflowExecutionState | null>;
|
|
44
|
+
export declare function loadWorkflowState(sdlcRoot: string, storyId?: string): Promise<WorkflowExecutionState | null>;
|
|
36
45
|
/**
|
|
37
46
|
* Validate workflow state structure
|
|
38
47
|
*
|
|
@@ -44,13 +53,43 @@ export declare function validateWorkflowState(state: any): WorkflowStateValidati
|
|
|
44
53
|
* Clear workflow state (delete the state file)
|
|
45
54
|
*
|
|
46
55
|
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
56
|
+
* @param storyId - Optional story ID for per-story state isolation
|
|
47
57
|
*/
|
|
48
|
-
export declare function clearWorkflowState(sdlcRoot: string): Promise<void>;
|
|
58
|
+
export declare function clearWorkflowState(sdlcRoot: string, storyId?: string): Promise<void>;
|
|
49
59
|
/**
|
|
50
60
|
* Check if workflow state exists
|
|
51
61
|
*
|
|
52
62
|
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
63
|
+
* @param storyId - Optional story ID for per-story state isolation
|
|
53
64
|
* @returns True if state file exists
|
|
54
65
|
*/
|
|
55
|
-
export declare function hasWorkflowState(sdlcRoot: string): boolean;
|
|
66
|
+
export declare function hasWorkflowState(sdlcRoot: string, storyId?: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Migrate global workflow state to story-specific location.
|
|
69
|
+
*
|
|
70
|
+
* Call this function at CLI startup (before loading workflow state) to automatically
|
|
71
|
+
* move legacy global state files to the new per-story location.
|
|
72
|
+
*
|
|
73
|
+
* Migration behavior:
|
|
74
|
+
* - Extracts story ID from context.options.story, completedActions, or currentAction
|
|
75
|
+
* - Skips migration if workflow is currently in progress (currentAction set)
|
|
76
|
+
* - Skips migration if no story ID can be determined
|
|
77
|
+
* - Validates target file if it already exists before deleting global file
|
|
78
|
+
* - Deletes global file only after successful write to target location
|
|
79
|
+
*
|
|
80
|
+
* @param sdlcRoot - Path to the .ai-sdlc directory
|
|
81
|
+
* @returns Promise resolving to migration result object:
|
|
82
|
+
* - migrated: boolean - true if migration was performed, false if skipped
|
|
83
|
+
* - message: string - Human-readable description of what happened
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* const result = await migrateGlobalWorkflowState(sdlcRoot);
|
|
87
|
+
* if (result.migrated) {
|
|
88
|
+
* console.log(result.message); // "Successfully migrated workflow state to story S-0033"
|
|
89
|
+
* }
|
|
90
|
+
*/
|
|
91
|
+
export declare function migrateGlobalWorkflowState(sdlcRoot: string): Promise<{
|
|
92
|
+
migrated: boolean;
|
|
93
|
+
message: string;
|
|
94
|
+
}>;
|
|
56
95
|
//# sourceMappingURL=workflow-state.d.ts.map
|