ai-sdlc 0.2.1-alpha.1 → 0.3.0-alpha.2
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 +19 -6
- package/dist/agents/implementation.d.ts +30 -1
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +108 -17
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/review.d.ts +40 -1
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +276 -44
- package/dist/agents/review.js.map +1 -1
- package/dist/agents/rework.d.ts.map +1 -1
- package/dist/agents/rework.js +3 -1
- package/dist/agents/rework.js.map +1 -1
- package/dist/agents/verification.d.ts.map +1 -1
- package/dist/agents/verification.js +26 -12
- package/dist/agents/verification.js.map +1 -1
- package/dist/cli/batch-processor.d.ts +64 -0
- package/dist/cli/batch-processor.d.ts.map +1 -0
- package/dist/cli/batch-processor.js +85 -0
- package/dist/cli/batch-processor.js.map +1 -0
- package/dist/cli/batch-validator.d.ts +80 -0
- package/dist/cli/batch-validator.d.ts.map +1 -0
- package/dist/cli/batch-validator.js +121 -0
- package/dist/cli/batch-validator.js.map +1 -0
- package/dist/cli/commands.d.ts +8 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +756 -46
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +5 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +17 -2
- package/dist/cli/runner.js.map +1 -1
- package/dist/core/client.d.ts +19 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +191 -5
- package/dist/core/client.js.map +1 -1
- package/dist/core/config.d.ts +9 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +103 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/kanban.d.ts +125 -1
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +277 -1
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/process-manager.d.ts +15 -0
- package/dist/core/process-manager.d.ts.map +1 -0
- package/dist/core/process-manager.js +132 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/story.d.ts +24 -0
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +78 -0
- package/dist/core/story.js.map +1 -1
- package/dist/core/worktree.d.ts +111 -2
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +310 -2
- package/dist/core/worktree.js.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +121 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
- package/templates/story.md +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rework.js","sourceRoot":"","sources":["../../src/agents/rework.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"rework.js","sourceRoot":"","sources":["../../src/agents/rework.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAO1C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAkDtG;AA+ED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAiF7B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadConfig } from '../core/config.js';
|
|
2
2
|
import { spawn, spawnSync } from 'child_process';
|
|
3
|
+
import { ProcessManager } from '../core/process-manager.js';
|
|
3
4
|
import { existsSync, readdirSync } from 'fs';
|
|
4
5
|
import path from 'path';
|
|
5
6
|
/**
|
|
@@ -71,6 +72,7 @@ async function runCommandAsync(command, workingDir, timeout) {
|
|
|
71
72
|
cwd: workingDir,
|
|
72
73
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
73
74
|
});
|
|
75
|
+
ProcessManager.getInstance().registerChild(child);
|
|
74
76
|
const timeoutId = setTimeout(() => {
|
|
75
77
|
killed = true;
|
|
76
78
|
child.kill('SIGTERM');
|
|
@@ -146,18 +148,7 @@ export async function verifyImplementation(story, workingDir, options = {}) {
|
|
|
146
148
|
};
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
|
-
|
|
150
|
-
testsRan = true;
|
|
151
|
-
const testResult = await options.runTests(workingDir, testTimeout);
|
|
152
|
-
testsPassed = testResult.success;
|
|
153
|
-
testsOutput = testResult.output;
|
|
154
|
-
}
|
|
155
|
-
else if (config.testCommand) {
|
|
156
|
-
testsRan = true;
|
|
157
|
-
const testResult = await runCommandAsync(config.testCommand, workingDir, testTimeout);
|
|
158
|
-
testsPassed = testResult.success;
|
|
159
|
-
testsOutput = testResult.output;
|
|
160
|
-
}
|
|
151
|
+
// Run build first - tests require successful compilation
|
|
161
152
|
if (options.runBuild) {
|
|
162
153
|
buildRan = true;
|
|
163
154
|
const buildResult = await options.runBuild(workingDir, buildTimeout);
|
|
@@ -170,6 +161,29 @@ export async function verifyImplementation(story, workingDir, options = {}) {
|
|
|
170
161
|
buildPassed = buildResult.success;
|
|
171
162
|
buildOutput = buildResult.output;
|
|
172
163
|
}
|
|
164
|
+
// Short-circuit: Don't run tests if build failed
|
|
165
|
+
if (buildRan && !buildPassed) {
|
|
166
|
+
return {
|
|
167
|
+
passed: false,
|
|
168
|
+
failures: 0,
|
|
169
|
+
timestamp,
|
|
170
|
+
testsOutput: 'Build failed - skipping tests. Fix TypeScript errors first.',
|
|
171
|
+
buildOutput,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Run tests only after successful build (or when no build command exists)
|
|
175
|
+
if (options.runTests) {
|
|
176
|
+
testsRan = true;
|
|
177
|
+
const testResult = await options.runTests(workingDir, testTimeout);
|
|
178
|
+
testsPassed = testResult.success;
|
|
179
|
+
testsOutput = testResult.output;
|
|
180
|
+
}
|
|
181
|
+
else if (config.testCommand) {
|
|
182
|
+
testsRan = true;
|
|
183
|
+
const testResult = await runCommandAsync(config.testCommand, workingDir, testTimeout);
|
|
184
|
+
testsPassed = testResult.success;
|
|
185
|
+
testsOutput = testResult.output;
|
|
186
|
+
}
|
|
173
187
|
const failures = testsPassed ? 0 : extractFailureCount(testsOutput);
|
|
174
188
|
let passed;
|
|
175
189
|
if (requirePassingTests) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Story } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Result summary for batch processing operation
|
|
4
|
+
*/
|
|
5
|
+
export interface BatchResult {
|
|
6
|
+
/** Total number of stories in the batch */
|
|
7
|
+
total: number;
|
|
8
|
+
/** Number of stories that completed successfully */
|
|
9
|
+
succeeded: number;
|
|
10
|
+
/** Number of stories that failed during processing */
|
|
11
|
+
failed: number;
|
|
12
|
+
/** Number of stories that were skipped (e.g., already done) */
|
|
13
|
+
skipped: number;
|
|
14
|
+
/** List of errors encountered during batch processing */
|
|
15
|
+
errors: Array<{
|
|
16
|
+
storyId: string;
|
|
17
|
+
error: string;
|
|
18
|
+
}>;
|
|
19
|
+
/** Total execution time in milliseconds */
|
|
20
|
+
duration: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Options for batch processing
|
|
24
|
+
*/
|
|
25
|
+
export interface BatchOptions {
|
|
26
|
+
/** Preview actions without executing them */
|
|
27
|
+
dryRun?: boolean;
|
|
28
|
+
/** Create isolated git worktrees for each story */
|
|
29
|
+
worktree?: boolean;
|
|
30
|
+
/** Skip git validation and conflict checks */
|
|
31
|
+
force?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Internal progress tracking for batch processing
|
|
35
|
+
*/
|
|
36
|
+
export interface BatchProgress {
|
|
37
|
+
/** Current story index (0-based) */
|
|
38
|
+
currentIndex: number;
|
|
39
|
+
/** Total number of stories in batch */
|
|
40
|
+
total: number;
|
|
41
|
+
/** Current story being processed */
|
|
42
|
+
currentStory: Story | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Format batch progress header for a story
|
|
46
|
+
* Example: [1/3] Processing: S-001 - Add user authentication
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatBatchProgress(progress: BatchProgress): string;
|
|
49
|
+
/**
|
|
50
|
+
* Format final batch summary
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatBatchSummary(result: BatchResult): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Log completion message for an individual story
|
|
55
|
+
*/
|
|
56
|
+
export declare function logStoryCompletion(storyId: string, success: boolean, c: any): void;
|
|
57
|
+
/**
|
|
58
|
+
* Prompt user whether to continue after a story failure
|
|
59
|
+
* Returns true to continue, false to abort
|
|
60
|
+
*
|
|
61
|
+
* In non-interactive mode (no TTY), always returns false (abort)
|
|
62
|
+
*/
|
|
63
|
+
export declare function promptContinueOnError(storyId: string, c: any): Promise<boolean>;
|
|
64
|
+
//# sourceMappingURL=batch-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.d.ts","sourceRoot":"","sources":["../../src/cli/batch-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,YAAY,EAAE,KAAK,GAAG,IAAI,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAYnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAgChE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAMlF;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBrF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
2
|
+
/**
|
|
3
|
+
* Format batch progress header for a story
|
|
4
|
+
* Example: [1/3] Processing: S-001 - Add user authentication
|
|
5
|
+
*/
|
|
6
|
+
export function formatBatchProgress(progress) {
|
|
7
|
+
const { currentIndex, total, currentStory } = progress;
|
|
8
|
+
const position = `[${currentIndex + 1}/${total}]`;
|
|
9
|
+
if (!currentStory) {
|
|
10
|
+
return `${position} Processing story...`;
|
|
11
|
+
}
|
|
12
|
+
const storyId = currentStory.frontmatter.id;
|
|
13
|
+
const title = currentStory.frontmatter.title;
|
|
14
|
+
return `${position} Processing: ${storyId} - ${title}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Format final batch summary
|
|
18
|
+
*/
|
|
19
|
+
export function formatBatchSummary(result) {
|
|
20
|
+
const lines = [];
|
|
21
|
+
const { total, succeeded, failed, skipped, duration } = result;
|
|
22
|
+
lines.push('');
|
|
23
|
+
lines.push('═══ Batch Processing Summary ═══');
|
|
24
|
+
lines.push('');
|
|
25
|
+
lines.push(`Total stories: ${total}`);
|
|
26
|
+
lines.push(`✓ Succeeded: ${succeeded}`);
|
|
27
|
+
if (failed > 0) {
|
|
28
|
+
lines.push(`✗ Failed: ${failed}`);
|
|
29
|
+
}
|
|
30
|
+
if (skipped > 0) {
|
|
31
|
+
lines.push(`⊘ Skipped: ${skipped}`);
|
|
32
|
+
}
|
|
33
|
+
const durationSec = (duration / 1000).toFixed(1);
|
|
34
|
+
lines.push(`⏱ Execution time: ${durationSec}s`);
|
|
35
|
+
if (result.errors.length > 0) {
|
|
36
|
+
lines.push('');
|
|
37
|
+
lines.push('Failed stories:');
|
|
38
|
+
for (const error of result.errors) {
|
|
39
|
+
lines.push(` - ${error.storyId}: ${error.error}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
lines.push('');
|
|
43
|
+
return lines;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Log completion message for an individual story
|
|
47
|
+
*/
|
|
48
|
+
export function logStoryCompletion(storyId, success, c) {
|
|
49
|
+
if (success) {
|
|
50
|
+
console.log(c.success(` ✓ Completed: ${storyId}`));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log(c.error(` ✗ Failed: ${storyId}`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Prompt user whether to continue after a story failure
|
|
58
|
+
* Returns true to continue, false to abort
|
|
59
|
+
*
|
|
60
|
+
* In non-interactive mode (no TTY), always returns false (abort)
|
|
61
|
+
*/
|
|
62
|
+
export async function promptContinueOnError(storyId, c) {
|
|
63
|
+
// Non-interactive mode: always abort
|
|
64
|
+
if (!process.stdin.isTTY) {
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(c.dim('Non-interactive mode: aborting batch processing'));
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Interactive mode: prompt user
|
|
70
|
+
console.log();
|
|
71
|
+
const rl = readline.createInterface({
|
|
72
|
+
input: process.stdin,
|
|
73
|
+
output: process.stdout,
|
|
74
|
+
});
|
|
75
|
+
const answer = await new Promise((resolve) => {
|
|
76
|
+
rl.question(c.dim(`Story ${storyId} failed. Continue to next story? [y/N]: `), (ans) => {
|
|
77
|
+
rl.close();
|
|
78
|
+
resolve(ans.toLowerCase().trim());
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
return answer === 'y' || answer === 'yes';
|
|
82
|
+
}
|
|
83
|
+
// Note: The main processBatch function has been moved to commands.ts
|
|
84
|
+
// to avoid circular dependencies. This module only exports utility functions.
|
|
85
|
+
//# sourceMappingURL=batch-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-processor.js","sourceRoot":"","sources":["../../src/cli/batch-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation error detail
|
|
3
|
+
*/
|
|
4
|
+
export interface ValidationError {
|
|
5
|
+
/** Story ID that failed validation */
|
|
6
|
+
storyId: string;
|
|
7
|
+
/** Error message describing the issue */
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Result of batch validation
|
|
12
|
+
*/
|
|
13
|
+
export interface BatchValidationResult {
|
|
14
|
+
/** Whether all validations passed */
|
|
15
|
+
valid: boolean;
|
|
16
|
+
/** List of valid story IDs that passed validation */
|
|
17
|
+
validStoryIds: string[];
|
|
18
|
+
/** List of validation errors */
|
|
19
|
+
errors: ValidationError[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parse comma-separated story ID list
|
|
23
|
+
* Handles whitespace and filters empty strings
|
|
24
|
+
*
|
|
25
|
+
* @param input - Raw comma-separated string (e.g., "S-001, S-002 , S-003")
|
|
26
|
+
* @returns Array of trimmed story IDs
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* parseStoryIdList("S-001,S-002,S-003") // => ["S-001", "S-002", "S-003"]
|
|
30
|
+
* parseStoryIdList("S-001, S-002 , S-003") // => ["S-001", "S-002", "S-003"]
|
|
31
|
+
* parseStoryIdList("") // => []
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseStoryIdList(input: string): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Deduplicate story IDs while preserving order
|
|
36
|
+
* First occurrence is kept, subsequent duplicates are removed
|
|
37
|
+
*
|
|
38
|
+
* @param storyIds - Array of story IDs (may contain duplicates)
|
|
39
|
+
* @returns Array with duplicates removed
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* deduplicateStoryIds(["S-001", "S-002", "S-001"]) // => ["S-001", "S-002"]
|
|
43
|
+
* deduplicateStoryIds(["S-001", "S-001", "S-001"]) // => ["S-001"]
|
|
44
|
+
*/
|
|
45
|
+
export declare function deduplicateStoryIds(storyIds: string[]): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Validate story ID format
|
|
48
|
+
* Story IDs must match pattern: S-\d+ (e.g., S-001, S-123)
|
|
49
|
+
*
|
|
50
|
+
* @param storyId - Story ID to validate
|
|
51
|
+
* @returns true if format is valid, false otherwise
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* validateStoryIdFormat("S-001") // => true
|
|
55
|
+
* validateStoryIdFormat("S-123") // => true
|
|
56
|
+
* validateStoryIdFormat("s-001") // => true (case-insensitive)
|
|
57
|
+
* validateStoryIdFormat("INVALID") // => false
|
|
58
|
+
* validateStoryIdFormat("S-") // => false
|
|
59
|
+
*/
|
|
60
|
+
export declare function validateStoryIdFormat(storyId: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Validate all story IDs in a batch
|
|
63
|
+
* Checks format and existence for each story
|
|
64
|
+
*
|
|
65
|
+
* @param storyIds - Array of story IDs to validate
|
|
66
|
+
* @param sdlcRoot - Root directory of .ai-sdlc
|
|
67
|
+
* @returns BatchValidationResult with valid IDs and errors
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* const result = validateStoryIds(["S-001", "S-002", "INVALID"], sdlcRoot);
|
|
71
|
+
* if (result.valid) {
|
|
72
|
+
* // All stories exist and are valid
|
|
73
|
+
* processStories(result.validStoryIds);
|
|
74
|
+
* } else {
|
|
75
|
+
* // Show errors
|
|
76
|
+
* result.errors.forEach(err => console.log(err.message));
|
|
77
|
+
* }
|
|
78
|
+
*/
|
|
79
|
+
export declare function validateStoryIds(storyIds: string[], sdlcRoot: string): BatchValidationResult;
|
|
80
|
+
//# sourceMappingURL=batch-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-validator.d.ts","sourceRoot":"","sources":["../../src/cli/batch-validator.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CASxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAahE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAwCvB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { findStoryById } from '../core/story.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse comma-separated story ID list
|
|
4
|
+
* Handles whitespace and filters empty strings
|
|
5
|
+
*
|
|
6
|
+
* @param input - Raw comma-separated string (e.g., "S-001, S-002 , S-003")
|
|
7
|
+
* @returns Array of trimmed story IDs
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* parseStoryIdList("S-001,S-002,S-003") // => ["S-001", "S-002", "S-003"]
|
|
11
|
+
* parseStoryIdList("S-001, S-002 , S-003") // => ["S-001", "S-002", "S-003"]
|
|
12
|
+
* parseStoryIdList("") // => []
|
|
13
|
+
*/
|
|
14
|
+
export function parseStoryIdList(input) {
|
|
15
|
+
if (!input || input.trim() === '') {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
return input
|
|
19
|
+
.split(',')
|
|
20
|
+
.map(id => id.trim())
|
|
21
|
+
.filter(id => id.length > 0);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Deduplicate story IDs while preserving order
|
|
25
|
+
* First occurrence is kept, subsequent duplicates are removed
|
|
26
|
+
*
|
|
27
|
+
* @param storyIds - Array of story IDs (may contain duplicates)
|
|
28
|
+
* @returns Array with duplicates removed
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* deduplicateStoryIds(["S-001", "S-002", "S-001"]) // => ["S-001", "S-002"]
|
|
32
|
+
* deduplicateStoryIds(["S-001", "S-001", "S-001"]) // => ["S-001"]
|
|
33
|
+
*/
|
|
34
|
+
export function deduplicateStoryIds(storyIds) {
|
|
35
|
+
const seen = new Set();
|
|
36
|
+
const result = [];
|
|
37
|
+
for (const id of storyIds) {
|
|
38
|
+
const normalized = id.toUpperCase(); // Case-insensitive deduplication
|
|
39
|
+
if (!seen.has(normalized)) {
|
|
40
|
+
seen.add(normalized);
|
|
41
|
+
result.push(id);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate story ID format
|
|
48
|
+
* Story IDs must match pattern: S-\d+ (e.g., S-001, S-123)
|
|
49
|
+
*
|
|
50
|
+
* @param storyId - Story ID to validate
|
|
51
|
+
* @returns true if format is valid, false otherwise
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* validateStoryIdFormat("S-001") // => true
|
|
55
|
+
* validateStoryIdFormat("S-123") // => true
|
|
56
|
+
* validateStoryIdFormat("s-001") // => true (case-insensitive)
|
|
57
|
+
* validateStoryIdFormat("INVALID") // => false
|
|
58
|
+
* validateStoryIdFormat("S-") // => false
|
|
59
|
+
*/
|
|
60
|
+
export function validateStoryIdFormat(storyId) {
|
|
61
|
+
return /^S-\d+$/i.test(storyId);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate all story IDs in a batch
|
|
65
|
+
* Checks format and existence for each story
|
|
66
|
+
*
|
|
67
|
+
* @param storyIds - Array of story IDs to validate
|
|
68
|
+
* @param sdlcRoot - Root directory of .ai-sdlc
|
|
69
|
+
* @returns BatchValidationResult with valid IDs and errors
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* const result = validateStoryIds(["S-001", "S-002", "INVALID"], sdlcRoot);
|
|
73
|
+
* if (result.valid) {
|
|
74
|
+
* // All stories exist and are valid
|
|
75
|
+
* processStories(result.validStoryIds);
|
|
76
|
+
* } else {
|
|
77
|
+
* // Show errors
|
|
78
|
+
* result.errors.forEach(err => console.log(err.message));
|
|
79
|
+
* }
|
|
80
|
+
*/
|
|
81
|
+
export function validateStoryIds(storyIds, sdlcRoot) {
|
|
82
|
+
const result = {
|
|
83
|
+
valid: true,
|
|
84
|
+
validStoryIds: [],
|
|
85
|
+
errors: [],
|
|
86
|
+
};
|
|
87
|
+
for (const storyId of storyIds) {
|
|
88
|
+
// Check format
|
|
89
|
+
if (!validateStoryIdFormat(storyId)) {
|
|
90
|
+
result.valid = false;
|
|
91
|
+
result.errors.push({
|
|
92
|
+
storyId,
|
|
93
|
+
message: `Invalid story ID format: ${storyId} (expected format: S-001, S-123, etc.)`,
|
|
94
|
+
});
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// Check existence
|
|
98
|
+
try {
|
|
99
|
+
const story = findStoryById(sdlcRoot, storyId);
|
|
100
|
+
if (!story) {
|
|
101
|
+
result.valid = false;
|
|
102
|
+
result.errors.push({
|
|
103
|
+
storyId,
|
|
104
|
+
message: `Story not found: ${storyId}`,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
result.validStoryIds.push(storyId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
result.valid = false;
|
|
113
|
+
result.errors.push({
|
|
114
|
+
storyId,
|
|
115
|
+
message: `Error validating story ${storyId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=batch-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-validator.js","sourceRoot":"","sources":["../../src/cli/batch-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAyBjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,iCAAiC;QACtE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAkB,EAClB,QAAgB;IAEhB,MAAM,MAAM,GAA0B;QACpC,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,EAAE;QACjB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,eAAe;QACf,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,OAAO;gBACP,OAAO,EAAE,4BAA4B,OAAO,wCAAwC;aACrF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,OAAO;oBACP,OAAO,EAAE,oBAAoB,OAAO,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,OAAO;gBACP,OAAO,EAAE,0BAA0B,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aACxG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/cli/commands.d.ts
CHANGED
|
@@ -61,11 +61,13 @@ export declare function run(options: {
|
|
|
61
61
|
dryRun?: boolean;
|
|
62
62
|
continue?: boolean;
|
|
63
63
|
story?: string;
|
|
64
|
+
batch?: string;
|
|
64
65
|
step?: string;
|
|
65
66
|
maxIterations?: string;
|
|
66
67
|
watch?: boolean;
|
|
67
68
|
force?: boolean;
|
|
68
69
|
worktree?: boolean;
|
|
70
|
+
clean?: boolean;
|
|
69
71
|
}): Promise<void>;
|
|
70
72
|
/**
|
|
71
73
|
* Phase information for RPIV display
|
|
@@ -138,6 +140,12 @@ export declare function migrate(options: {
|
|
|
138
140
|
backup?: boolean;
|
|
139
141
|
force?: boolean;
|
|
140
142
|
}): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Security: Escape shell arguments for safe use in commands
|
|
145
|
+
* For use with execSync when shell execution is required
|
|
146
|
+
* @internal Exported for testing
|
|
147
|
+
*/
|
|
148
|
+
export declare function escapeShellArg(arg: string): string;
|
|
141
149
|
/**
|
|
142
150
|
* List all ai-sdlc managed worktrees
|
|
143
151
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|