ai-sdlc 0.2.0-alpha.6 → 0.2.0-alpha.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +65 -1057
  2. package/dist/agents/implementation.d.ts +36 -1
  3. package/dist/agents/implementation.d.ts.map +1 -1
  4. package/dist/agents/implementation.js +259 -30
  5. package/dist/agents/implementation.js.map +1 -1
  6. package/dist/agents/index.d.ts +2 -0
  7. package/dist/agents/index.d.ts.map +1 -1
  8. package/dist/agents/index.js +2 -0
  9. package/dist/agents/index.js.map +1 -1
  10. package/dist/agents/orchestrator.d.ts +61 -0
  11. package/dist/agents/orchestrator.d.ts.map +1 -0
  12. package/dist/agents/orchestrator.js +443 -0
  13. package/dist/agents/orchestrator.js.map +1 -0
  14. package/dist/agents/planning.d.ts +1 -1
  15. package/dist/agents/planning.d.ts.map +1 -1
  16. package/dist/agents/planning.js +55 -4
  17. package/dist/agents/planning.js.map +1 -1
  18. package/dist/agents/refinement.d.ts.map +1 -1
  19. package/dist/agents/refinement.js +22 -3
  20. package/dist/agents/refinement.js.map +1 -1
  21. package/dist/agents/research.d.ts +85 -1
  22. package/dist/agents/research.d.ts.map +1 -1
  23. package/dist/agents/research.js +506 -16
  24. package/dist/agents/research.js.map +1 -1
  25. package/dist/agents/review.d.ts +116 -2
  26. package/dist/agents/review.d.ts.map +1 -1
  27. package/dist/agents/review.js +847 -93
  28. package/dist/agents/review.js.map +1 -1
  29. package/dist/agents/rework.d.ts.map +1 -1
  30. package/dist/agents/rework.js +25 -4
  31. package/dist/agents/rework.js.map +1 -1
  32. package/dist/agents/single-task.d.ts +41 -0
  33. package/dist/agents/single-task.d.ts.map +1 -0
  34. package/dist/agents/single-task.js +357 -0
  35. package/dist/agents/single-task.js.map +1 -0
  36. package/dist/agents/state-assessor.d.ts +3 -3
  37. package/dist/agents/state-assessor.d.ts.map +1 -1
  38. package/dist/agents/state-assessor.js +6 -6
  39. package/dist/agents/state-assessor.js.map +1 -1
  40. package/dist/agents/test-pattern-detector.d.ts +49 -0
  41. package/dist/agents/test-pattern-detector.d.ts.map +1 -0
  42. package/dist/agents/test-pattern-detector.js +273 -0
  43. package/dist/agents/test-pattern-detector.js.map +1 -0
  44. package/dist/agents/verification.d.ts +11 -0
  45. package/dist/agents/verification.d.ts.map +1 -1
  46. package/dist/agents/verification.js +99 -12
  47. package/dist/agents/verification.js.map +1 -1
  48. package/dist/cli/batch-processor.d.ts +64 -0
  49. package/dist/cli/batch-processor.d.ts.map +1 -0
  50. package/dist/cli/batch-processor.js +85 -0
  51. package/dist/cli/batch-processor.js.map +1 -0
  52. package/dist/cli/batch-validator.d.ts +80 -0
  53. package/dist/cli/batch-validator.d.ts.map +1 -0
  54. package/dist/cli/batch-validator.js +121 -0
  55. package/dist/cli/batch-validator.js.map +1 -0
  56. package/dist/cli/commands/migrate.js +1 -1
  57. package/dist/cli/commands/migrate.js.map +1 -1
  58. package/dist/cli/commands.d.ts +67 -3
  59. package/dist/cli/commands.d.ts.map +1 -1
  60. package/dist/cli/commands.js +1765 -198
  61. package/dist/cli/commands.js.map +1 -1
  62. package/dist/cli/daemon.d.ts.map +1 -1
  63. package/dist/cli/daemon.js +25 -3
  64. package/dist/cli/daemon.js.map +1 -1
  65. package/dist/cli/runner.d.ts.map +1 -1
  66. package/dist/cli/runner.js +35 -12
  67. package/dist/cli/runner.js.map +1 -1
  68. package/dist/core/auth.d.ts +43 -0
  69. package/dist/core/auth.d.ts.map +1 -1
  70. package/dist/core/auth.js +105 -1
  71. package/dist/core/auth.js.map +1 -1
  72. package/dist/core/client.d.ts +25 -1
  73. package/dist/core/client.d.ts.map +1 -1
  74. package/dist/core/client.js +247 -7
  75. package/dist/core/client.js.map +1 -1
  76. package/dist/core/config.d.ts +32 -1
  77. package/dist/core/config.d.ts.map +1 -1
  78. package/dist/core/config.js +146 -3
  79. package/dist/core/config.js.map +1 -1
  80. package/dist/core/conflict-detector.d.ts +108 -0
  81. package/dist/core/conflict-detector.d.ts.map +1 -0
  82. package/dist/core/conflict-detector.js +413 -0
  83. package/dist/core/conflict-detector.js.map +1 -0
  84. package/dist/core/git-utils.d.ts +28 -0
  85. package/dist/core/git-utils.d.ts.map +1 -0
  86. package/dist/core/git-utils.js +146 -0
  87. package/dist/core/git-utils.js.map +1 -0
  88. package/dist/core/index.d.ts +19 -0
  89. package/dist/core/index.d.ts.map +1 -0
  90. package/dist/core/index.js +19 -0
  91. package/dist/core/index.js.map +1 -0
  92. package/dist/core/kanban.d.ts +1 -1
  93. package/dist/core/kanban.d.ts.map +1 -1
  94. package/dist/core/kanban.js +3 -3
  95. package/dist/core/kanban.js.map +1 -1
  96. package/dist/core/llm-utils.d.ts +103 -0
  97. package/dist/core/llm-utils.d.ts.map +1 -0
  98. package/dist/core/llm-utils.js +368 -0
  99. package/dist/core/llm-utils.js.map +1 -0
  100. package/dist/core/logger.d.ts +92 -0
  101. package/dist/core/logger.d.ts.map +1 -0
  102. package/dist/core/logger.js +221 -0
  103. package/dist/core/logger.js.map +1 -0
  104. package/dist/core/process-manager.d.ts +15 -0
  105. package/dist/core/process-manager.d.ts.map +1 -0
  106. package/dist/core/process-manager.js +132 -0
  107. package/dist/core/process-manager.js.map +1 -0
  108. package/dist/core/story-logger.d.ts +102 -0
  109. package/dist/core/story-logger.d.ts.map +1 -0
  110. package/dist/core/story-logger.js +265 -0
  111. package/dist/core/story-logger.js.map +1 -0
  112. package/dist/core/story.d.ts +113 -20
  113. package/dist/core/story.d.ts.map +1 -1
  114. package/dist/core/story.js +328 -40
  115. package/dist/core/story.js.map +1 -1
  116. package/dist/core/task-parser.d.ts +59 -0
  117. package/dist/core/task-parser.d.ts.map +1 -0
  118. package/dist/core/task-parser.js +235 -0
  119. package/dist/core/task-parser.js.map +1 -0
  120. package/dist/core/task-progress.d.ts +92 -0
  121. package/dist/core/task-progress.d.ts.map +1 -0
  122. package/dist/core/task-progress.js +280 -0
  123. package/dist/core/task-progress.js.map +1 -0
  124. package/dist/core/workflow-state.d.ts +45 -6
  125. package/dist/core/workflow-state.d.ts.map +1 -1
  126. package/dist/core/workflow-state.js +201 -12
  127. package/dist/core/workflow-state.js.map +1 -1
  128. package/dist/core/worktree.d.ts +186 -0
  129. package/dist/core/worktree.d.ts.map +1 -0
  130. package/dist/core/worktree.js +554 -0
  131. package/dist/core/worktree.js.map +1 -0
  132. package/dist/index.js +146 -5
  133. package/dist/index.js.map +1 -1
  134. package/dist/services/error-classifier.d.ts +119 -0
  135. package/dist/services/error-classifier.d.ts.map +1 -0
  136. package/dist/services/error-classifier.js +182 -0
  137. package/dist/services/error-classifier.js.map +1 -0
  138. package/dist/types/index.d.ts +381 -1
  139. package/dist/types/index.d.ts.map +1 -1
  140. package/dist/types/index.js +1 -0
  141. package/dist/types/index.js.map +1 -1
  142. package/package.json +5 -2
  143. package/templates/story.md +5 -0
@@ -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"}
@@ -77,7 +77,7 @@ export async function migrateToFolderPerStory(sdlcRoot, options) {
77
77
  const newFolder = path.dirname(item.newPath);
78
78
  fs.mkdirSync(newFolder, { recursive: true });
79
79
  story.path = item.newPath;
80
- writeStory(story);
80
+ await writeStory(story);
81
81
  fs.unlinkSync(item.oldPath);
82
82
  }
83
83
  for (const folder of oldFolders) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Story, ActionType } from '../types/index.js';
1
+ import { Story, ActionType, PreFlightResult } from '../types/index.js';
2
2
  /**
3
3
  * Initialize the .ai-sdlc folder structure
4
4
  */
@@ -12,7 +12,47 @@ export declare function status(options?: {
12
12
  /**
13
13
  * Add a new story to the backlog
14
14
  */
15
- export declare function add(title: string): Promise<void>;
15
+ export declare function add(title?: string, options?: {
16
+ file?: string;
17
+ }): Promise<void>;
18
+ /**
19
+ * Determine if worktree mode should be used based on CLI flags, story frontmatter, and config.
20
+ * Priority order:
21
+ * 1. CLI --no-worktree flag (explicit disable)
22
+ * 2. CLI --worktree flag (explicit enable)
23
+ * 3. Story frontmatter.worktree_path exists (auto-enable for resuming)
24
+ * 4. Config worktree.enabled (default behavior)
25
+ */
26
+ export declare function determineWorktreeMode(options: {
27
+ worktree?: boolean;
28
+ }, worktreeConfig: {
29
+ enabled: boolean;
30
+ }, targetStory: Story | null): boolean;
31
+ /**
32
+ * Perform pre-flight conflict check before starting work on a story in a worktree.
33
+ * Warns about potential file conflicts with active stories and prompts for confirmation.
34
+ *
35
+ * **Race Condition (TOCTOU):** Multiple users can pass this check simultaneously
36
+ * before branches are created. This is an accepted risk - the window is small
37
+ * (~100ms) and git will catch conflicts during merge/PR creation. Adding file
38
+ * locks would significantly increase complexity for minimal security gain.
39
+ *
40
+ * **Security Notes:**
41
+ * - sdlcRoot is normalized and validated (absolute path, no null bytes, max 1024 chars)
42
+ * - All display output is sanitized to prevent terminal injection attacks
43
+ * - Story IDs are validated with sanitizeStoryId() then stripped with sanitizeForDisplay()
44
+ * - Error messages are generic to prevent information leakage
45
+ *
46
+ * @param targetStory - The story to check for conflicts
47
+ * @param sdlcRoot - Root directory of the .ai-sdlc folder (must be absolute, validated)
48
+ * @param options - Command options (force flag)
49
+ * @param options.force - Skip conflict check if true
50
+ * @returns PreFlightResult indicating whether to proceed and any warnings
51
+ * @throws Error if sdlcRoot is invalid (not absolute, null bytes, too long)
52
+ */
53
+ export declare function preFlightConflictCheck(targetStory: Story, sdlcRoot: string, options: {
54
+ force?: boolean;
55
+ }): Promise<PreFlightResult>;
16
56
  /**
17
57
  * Run the workflow (process one action or all)
18
58
  */
@@ -21,9 +61,13 @@ export declare function run(options: {
21
61
  dryRun?: boolean;
22
62
  continue?: boolean;
23
63
  story?: string;
64
+ batch?: string;
24
65
  step?: string;
25
66
  maxIterations?: string;
26
67
  watch?: boolean;
68
+ force?: boolean;
69
+ worktree?: boolean;
70
+ clean?: boolean;
27
71
  }): Promise<void>;
28
72
  /**
29
73
  * Phase information for RPIV display
@@ -90,10 +134,30 @@ export declare function details(idOrSlug: string): Promise<void>;
90
134
  */
91
135
  export declare function unblock(storyId: string, options?: {
92
136
  resetRetries?: boolean;
93
- }): void;
137
+ }): Promise<void>;
94
138
  export declare function migrate(options: {
95
139
  dryRun?: boolean;
96
140
  backup?: boolean;
97
141
  force?: boolean;
98
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;
149
+ /**
150
+ * List all ai-sdlc managed worktrees
151
+ */
152
+ export declare function listWorktrees(): Promise<void>;
153
+ /**
154
+ * Create a worktree for a specific story
155
+ */
156
+ export declare function addWorktree(storyId: string): Promise<void>;
157
+ /**
158
+ * Remove a worktree for a specific story
159
+ */
160
+ export declare function removeWorktree(storyId: string, options?: {
161
+ force?: boolean;
162
+ }): Promise<void>;
99
163
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAU,UAAU,EAA4G,MAAM,mBAAmB,CAAC;AAgBxK;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1C;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF1E;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBtD;AA0ED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6blL;AAuPD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,SAAS,GAAG,IAAI,CAiDlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAgCA;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,CAsBtE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYtD;AA6DD;;GAEG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkH7D;AA8GD;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAgCnF;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8G7G"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}