ai-sdlc 0.3.0 → 0.3.1-alpha.0-alpha.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 +78 -6
- package/dist/agents/implementation.d.ts +5 -0
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +78 -9
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/planning.d.ts.map +1 -1
- package/dist/agents/planning.js +10 -3
- package/dist/agents/planning.js.map +1 -1
- package/dist/agents/research.d.ts.map +1 -1
- package/dist/agents/research.js +14 -6
- package/dist/agents/research.js.map +1 -1
- package/dist/agents/review.d.ts +81 -0
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +405 -39
- package/dist/agents/review.js.map +1 -1
- package/dist/agents/single-task.d.ts +1 -1
- package/dist/agents/single-task.d.ts.map +1 -1
- package/dist/agents/single-task.js +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 +7 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +285 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/dependency-resolver.d.ts +49 -0
- package/dist/cli/dependency-resolver.d.ts.map +1 -0
- package/dist/cli/dependency-resolver.js +133 -0
- package/dist/cli/dependency-resolver.js.map +1 -0
- package/dist/cli/epic-processor.d.ts +16 -0
- package/dist/cli/epic-processor.d.ts.map +1 -0
- package/dist/cli/epic-processor.js +489 -0
- package/dist/cli/epic-processor.js.map +1 -0
- package/dist/cli/formatting.d.ts +15 -0
- package/dist/cli/formatting.d.ts.map +1 -1
- package/dist/cli/formatting.js +19 -0
- package/dist/cli/formatting.js.map +1 -1
- package/dist/cli/progress-dashboard.d.ts +58 -0
- package/dist/cli/progress-dashboard.d.ts.map +1 -0
- package/dist/cli/progress-dashboard.js +216 -0
- package/dist/cli/progress-dashboard.js.map +1 -0
- package/dist/cli/table-renderer.d.ts.map +1 -1
- package/dist/cli/table-renderer.js +5 -1
- package/dist/cli/table-renderer.js.map +1 -1
- package/dist/core/agent-executor.d.ts +13 -0
- package/dist/core/agent-executor.d.ts.map +1 -0
- package/dist/core/agent-executor.js +153 -0
- package/dist/core/agent-executor.js.map +1 -0
- package/dist/core/config.d.ts +16 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +113 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/git-utils.d.ts +19 -0
- package/dist/core/git-utils.d.ts.map +1 -1
- package/dist/core/git-utils.js +58 -0
- package/dist/core/git-utils.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 +371 -4
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/orchestrator.d.ts +63 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +320 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/story.d.ts +84 -0
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +159 -14
- package/dist/core/story.js.map +1 -1
- package/dist/core/worktree.d.ts +7 -0
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +44 -0
- package/dist/core/worktree.js.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +252 -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 +1 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Process Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Manages concurrent execution of multiple stories via isolated child processes.
|
|
5
|
+
* Each story runs in its own git worktree with its own Node.js process.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Spawns child processes with concurrency limiting
|
|
9
|
+
* - IPC communication for status updates and health checks
|
|
10
|
+
* - Graceful shutdown with SIGTERM → SIGKILL fallback
|
|
11
|
+
* - Error isolation (child crash doesn't affect parent or siblings)
|
|
12
|
+
* - Worktree lifecycle management
|
|
13
|
+
*/
|
|
14
|
+
import type { ProcessOrchestratorOptions, ProcessExecutionResult, Story } from '../types/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* Multi-Process Orchestrator
|
|
17
|
+
*
|
|
18
|
+
* Coordinates concurrent story execution across isolated child processes.
|
|
19
|
+
* Uses a manual queue pattern (similar to epic-processor) for concurrency control.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Orchestrator {
|
|
22
|
+
private options;
|
|
23
|
+
private children;
|
|
24
|
+
private results;
|
|
25
|
+
private shuttingDown;
|
|
26
|
+
private worktreeService;
|
|
27
|
+
private processManager;
|
|
28
|
+
constructor(options: ProcessOrchestratorOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Execute multiple stories concurrently with concurrency limiting
|
|
31
|
+
*/
|
|
32
|
+
execute(stories: Story[]): Promise<ProcessExecutionResult[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Execute a single story in an isolated child process
|
|
35
|
+
*/
|
|
36
|
+
private executeStory;
|
|
37
|
+
/**
|
|
38
|
+
* Spawn child process for story execution
|
|
39
|
+
*/
|
|
40
|
+
private spawnChild;
|
|
41
|
+
/**
|
|
42
|
+
* Graceful shutdown: SIGTERM → wait → SIGKILL
|
|
43
|
+
* Note: Signal handlers are managed by ProcessManager globally
|
|
44
|
+
*/
|
|
45
|
+
shutdown(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Cleanup resources
|
|
48
|
+
*/
|
|
49
|
+
private cleanup;
|
|
50
|
+
/**
|
|
51
|
+
* Generate URL-safe slug from title
|
|
52
|
+
*/
|
|
53
|
+
private generateSlug;
|
|
54
|
+
/**
|
|
55
|
+
* Get current execution results
|
|
56
|
+
*/
|
|
57
|
+
getResults(): ProcessExecutionResult[];
|
|
58
|
+
/**
|
|
59
|
+
* Get count of active child processes
|
|
60
|
+
*/
|
|
61
|
+
getActiveCount(): number;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EAEtB,KAAK,EACN,MAAM,mBAAmB,CAAC;AAK3B;;;;;GAKG;AACH,qBAAa,YAAY;IAOX,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAiB;gBAEnB,OAAO,EAAE,0BAA0B;IAOvD;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAyDlE;;OAEG;YACW,YAAY;IA0D1B;;OAEG;YACW,UAAU;IA2HxB;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C/B;;OAEG;YACW,OAAO;IAOrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,UAAU,IAAI,sBAAsB,EAAE;IAItC;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Process Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Manages concurrent execution of multiple stories via isolated child processes.
|
|
5
|
+
* Each story runs in its own git worktree with its own Node.js process.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Spawns child processes with concurrency limiting
|
|
9
|
+
* - IPC communication for status updates and health checks
|
|
10
|
+
* - Graceful shutdown with SIGTERM → SIGKILL fallback
|
|
11
|
+
* - Error isolation (child crash doesn't affect parent or siblings)
|
|
12
|
+
* - Worktree lifecycle management
|
|
13
|
+
*/
|
|
14
|
+
import { spawn } from 'child_process';
|
|
15
|
+
import path from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { GitWorktreeService } from './worktree.js';
|
|
18
|
+
import { ProcessManager } from './process-manager.js';
|
|
19
|
+
import { getSdlcRoot } from './config.js';
|
|
20
|
+
/**
|
|
21
|
+
* Multi-Process Orchestrator
|
|
22
|
+
*
|
|
23
|
+
* Coordinates concurrent story execution across isolated child processes.
|
|
24
|
+
* Uses a manual queue pattern (similar to epic-processor) for concurrency control.
|
|
25
|
+
*/
|
|
26
|
+
export class Orchestrator {
|
|
27
|
+
options;
|
|
28
|
+
children = new Map();
|
|
29
|
+
results = [];
|
|
30
|
+
shuttingDown = false;
|
|
31
|
+
worktreeService;
|
|
32
|
+
processManager;
|
|
33
|
+
constructor(options) {
|
|
34
|
+
this.options = options;
|
|
35
|
+
const sdlcRoot = getSdlcRoot();
|
|
36
|
+
const worktreeBasePath = options.worktreeBasePath || path.join(sdlcRoot, '.ai-sdlc', 'worktrees');
|
|
37
|
+
this.worktreeService = new GitWorktreeService(sdlcRoot, worktreeBasePath);
|
|
38
|
+
this.processManager = ProcessManager.getInstance();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Execute multiple stories concurrently with concurrency limiting
|
|
42
|
+
*/
|
|
43
|
+
async execute(stories) {
|
|
44
|
+
if (stories.length === 0) {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
console.log(`🚀 Starting orchestrator with ${stories.length} stories (concurrency: ${this.options.concurrency})`);
|
|
48
|
+
try {
|
|
49
|
+
// Use manual queue pattern (same as epic-processor)
|
|
50
|
+
const queue = [...stories];
|
|
51
|
+
const active = new Set();
|
|
52
|
+
while (queue.length > 0 || active.size > 0) {
|
|
53
|
+
// Fill up to maxConcurrent
|
|
54
|
+
while (active.size < this.options.concurrency && queue.length > 0 && !this.shuttingDown) {
|
|
55
|
+
const story = queue.shift();
|
|
56
|
+
const promise = this.executeStory(story);
|
|
57
|
+
active.add(promise);
|
|
58
|
+
// Remove from active and collect result when done
|
|
59
|
+
promise.then((result) => {
|
|
60
|
+
active.delete(promise);
|
|
61
|
+
this.results.push(result);
|
|
62
|
+
}, (error) => {
|
|
63
|
+
active.delete(promise);
|
|
64
|
+
// Error should not happen as executeStory catches all errors
|
|
65
|
+
console.error('Unexpected error in executeStory:', error);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (active.size > 0) {
|
|
69
|
+
// Wait for at least one to complete
|
|
70
|
+
await Promise.race(active);
|
|
71
|
+
// If shutdown requested, cancel queued stories
|
|
72
|
+
if (this.shuttingDown) {
|
|
73
|
+
console.log(`⚠️ Shutdown in progress, canceling ${queue.length} queued stories`);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Wait for all active processes to complete
|
|
79
|
+
if (active.size > 0) {
|
|
80
|
+
await Promise.all(active);
|
|
81
|
+
}
|
|
82
|
+
return this.results;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
await this.cleanup();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Execute a single story in an isolated child process
|
|
90
|
+
*/
|
|
91
|
+
async executeStory(story) {
|
|
92
|
+
const storyId = story.frontmatter.id;
|
|
93
|
+
const startTime = Date.now();
|
|
94
|
+
try {
|
|
95
|
+
// Create worktree for story
|
|
96
|
+
const slug = this.generateSlug(story.frontmatter.title || storyId);
|
|
97
|
+
const worktreePath = this.worktreeService.getWorktreePath(storyId, slug);
|
|
98
|
+
console.log(`📝 [${storyId}] Creating worktree: ${worktreePath}`);
|
|
99
|
+
try {
|
|
100
|
+
this.worktreeService.create({
|
|
101
|
+
storyId,
|
|
102
|
+
slug,
|
|
103
|
+
baseBranch: 'main',
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
// Worktree creation failure - skip story
|
|
108
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
109
|
+
console.error(`❌ [${storyId}] Worktree creation failed: ${errorMsg}`);
|
|
110
|
+
return {
|
|
111
|
+
storyId,
|
|
112
|
+
success: false,
|
|
113
|
+
exitCode: null,
|
|
114
|
+
signal: null,
|
|
115
|
+
duration: Date.now() - startTime,
|
|
116
|
+
error: `Worktree creation failed: ${errorMsg}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// Spawn child process
|
|
120
|
+
const result = await this.spawnChild(storyId, worktreePath, startTime);
|
|
121
|
+
// Cleanup worktree if not keeping
|
|
122
|
+
if (!this.options.keepWorktrees) {
|
|
123
|
+
try {
|
|
124
|
+
this.worktreeService.remove(worktreePath, false);
|
|
125
|
+
}
|
|
126
|
+
catch (cleanupError) {
|
|
127
|
+
console.warn(`⚠️ [${storyId}] Failed to cleanup worktree: ${cleanupError}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
134
|
+
console.error(`❌ [${storyId}] Execution failed: ${errorMsg}`);
|
|
135
|
+
return {
|
|
136
|
+
storyId,
|
|
137
|
+
success: false,
|
|
138
|
+
exitCode: null,
|
|
139
|
+
signal: null,
|
|
140
|
+
duration: Date.now() - startTime,
|
|
141
|
+
error: errorMsg,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Spawn child process for story execution
|
|
147
|
+
*/
|
|
148
|
+
async spawnChild(storyId, worktreePath, startTime) {
|
|
149
|
+
return new Promise((resolve) => {
|
|
150
|
+
// Spawn agent-executor as child process entry point
|
|
151
|
+
// Determine the path to agent-executor (could be in dist/ or src/ depending on build state)
|
|
152
|
+
const currentFilePath = fileURLToPath(import.meta.url);
|
|
153
|
+
const agentExecutorPath = path.join(path.dirname(currentFilePath), 'agent-executor.js');
|
|
154
|
+
const proc = spawn(process.execPath, [agentExecutorPath, storyId], {
|
|
155
|
+
cwd: worktreePath,
|
|
156
|
+
stdio: ['ignore', 'pipe', 'pipe', 'ipc'], // Enable IPC channel
|
|
157
|
+
shell: false,
|
|
158
|
+
env: {
|
|
159
|
+
...process.env,
|
|
160
|
+
AI_SDLC_STORY_ID: storyId,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
// Track child process
|
|
164
|
+
if (proc.pid) {
|
|
165
|
+
this.children.set(storyId, {
|
|
166
|
+
storyId,
|
|
167
|
+
pid: proc.pid,
|
|
168
|
+
worktreePath,
|
|
169
|
+
startTime,
|
|
170
|
+
});
|
|
171
|
+
this.processManager.registerChild(proc);
|
|
172
|
+
}
|
|
173
|
+
// Capture stdout/stderr
|
|
174
|
+
let stdout = '';
|
|
175
|
+
let stderr = '';
|
|
176
|
+
proc.stdout?.on('data', (data) => {
|
|
177
|
+
stdout += data.toString();
|
|
178
|
+
// Echo to parent console with prefix
|
|
179
|
+
const lines = data.toString().split('\n').filter((l) => l.trim());
|
|
180
|
+
lines.forEach((line) => console.log(` [${storyId}] ${line}`));
|
|
181
|
+
});
|
|
182
|
+
proc.stderr?.on('data', (data) => {
|
|
183
|
+
stderr += data.toString();
|
|
184
|
+
// Echo to parent console with prefix
|
|
185
|
+
const lines = data.toString().split('\n').filter((l) => l.trim());
|
|
186
|
+
lines.forEach((line) => console.error(` [${storyId}] ${line}`));
|
|
187
|
+
});
|
|
188
|
+
// Handle IPC messages from child
|
|
189
|
+
proc.on('message', (msg) => {
|
|
190
|
+
if (!msg || typeof msg !== 'object')
|
|
191
|
+
return;
|
|
192
|
+
const message = msg;
|
|
193
|
+
switch (message.type) {
|
|
194
|
+
case 'status_update':
|
|
195
|
+
// Log status updates from child
|
|
196
|
+
console.log(` [${storyId}] Status update:`, message.payload);
|
|
197
|
+
break;
|
|
198
|
+
case 'health_response':
|
|
199
|
+
// Child responded to health check
|
|
200
|
+
console.log(` [${storyId}] Health check OK`);
|
|
201
|
+
break;
|
|
202
|
+
case 'error':
|
|
203
|
+
// Child reported an error
|
|
204
|
+
console.error(` [${storyId}] Error:`, message.payload);
|
|
205
|
+
break;
|
|
206
|
+
case 'complete':
|
|
207
|
+
// Child reported completion
|
|
208
|
+
console.log(` [${storyId}] Complete:`, message.payload);
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// Handle process exit
|
|
213
|
+
proc.on('close', (code, signal) => {
|
|
214
|
+
this.children.delete(storyId);
|
|
215
|
+
const duration = Date.now() - startTime;
|
|
216
|
+
const success = code === 0;
|
|
217
|
+
if (success) {
|
|
218
|
+
console.log(`✅ [${storyId}] Completed successfully (${duration}ms)`);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
console.error(`❌ [${storyId}] Failed with code ${code} (${duration}ms)`);
|
|
222
|
+
}
|
|
223
|
+
resolve({
|
|
224
|
+
storyId,
|
|
225
|
+
success,
|
|
226
|
+
exitCode: code,
|
|
227
|
+
signal,
|
|
228
|
+
duration,
|
|
229
|
+
error: success ? undefined : stderr || `Process exited with code ${code}`,
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
// Handle spawn errors
|
|
233
|
+
proc.on('error', (err) => {
|
|
234
|
+
this.children.delete(storyId);
|
|
235
|
+
console.error(`❌ [${storyId}] Process error: ${err.message}`);
|
|
236
|
+
resolve({
|
|
237
|
+
storyId,
|
|
238
|
+
success: false,
|
|
239
|
+
exitCode: null,
|
|
240
|
+
signal: null,
|
|
241
|
+
duration: Date.now() - startTime,
|
|
242
|
+
error: err.message,
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Graceful shutdown: SIGTERM → wait → SIGKILL
|
|
249
|
+
* Note: Signal handlers are managed by ProcessManager globally
|
|
250
|
+
*/
|
|
251
|
+
async shutdown() {
|
|
252
|
+
if (this.children.size === 0)
|
|
253
|
+
return;
|
|
254
|
+
console.log(`⏳ Shutting down ${this.children.size} child processes...`);
|
|
255
|
+
const shutdownTimeout = this.options.shutdownTimeout || 10000;
|
|
256
|
+
// Send SIGTERM to all children
|
|
257
|
+
for (const [storyId, info] of this.children.entries()) {
|
|
258
|
+
try {
|
|
259
|
+
process.kill(info.pid, 'SIGTERM');
|
|
260
|
+
console.log(` [${storyId}] Sent SIGTERM`);
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
// Process may already be dead
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Wait for graceful shutdown
|
|
267
|
+
const waitStart = Date.now();
|
|
268
|
+
const checkInterval = 100;
|
|
269
|
+
while (this.children.size > 0 && Date.now() - waitStart < shutdownTimeout) {
|
|
270
|
+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
271
|
+
}
|
|
272
|
+
// Force kill remaining processes
|
|
273
|
+
if (this.children.size > 0) {
|
|
274
|
+
console.warn(`⚠️ Force killing ${this.children.size} unresponsive processes`);
|
|
275
|
+
for (const [storyId, info] of this.children.entries()) {
|
|
276
|
+
try {
|
|
277
|
+
process.kill(info.pid, 'SIGKILL');
|
|
278
|
+
console.log(` [${storyId}] Sent SIGKILL`);
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
// Process may already be dead
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
this.children.clear();
|
|
285
|
+
}
|
|
286
|
+
console.log('✅ All child processes terminated');
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Cleanup resources
|
|
290
|
+
*/
|
|
291
|
+
async cleanup() {
|
|
292
|
+
// Ensure all children are terminated
|
|
293
|
+
if (this.children.size > 0) {
|
|
294
|
+
await this.shutdown();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Generate URL-safe slug from title
|
|
299
|
+
*/
|
|
300
|
+
generateSlug(title) {
|
|
301
|
+
return title
|
|
302
|
+
.toLowerCase()
|
|
303
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
304
|
+
.replace(/^-|-$/g, '')
|
|
305
|
+
.substring(0, 50);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Get current execution results
|
|
309
|
+
*/
|
|
310
|
+
getResults() {
|
|
311
|
+
return [...this.results];
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get count of active child processes
|
|
315
|
+
*/
|
|
316
|
+
getActiveCount() {
|
|
317
|
+
return this.children.size;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/story.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { Story, StoryFrontmatter, StoryStatus, ReviewAttempt, Config, LockOptions, ReviewResult } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Section file names for split story outputs.
|
|
4
|
+
* Each agent writes to its own file within the story folder.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SECTION_FILES: {
|
|
7
|
+
readonly research: "research.md";
|
|
8
|
+
readonly plan: "plan.md";
|
|
9
|
+
readonly review: "review.md";
|
|
10
|
+
};
|
|
11
|
+
export type SectionType = keyof typeof SECTION_FILES;
|
|
2
12
|
/**
|
|
3
13
|
* Parse a story markdown file into a Story object
|
|
4
14
|
*
|
|
@@ -105,8 +115,70 @@ export declare function createStory(title: string, sdlcRoot: string, options?: P
|
|
|
105
115
|
export declare function updateStoryField<K extends keyof StoryFrontmatter>(story: Story, field: K, value: StoryFrontmatter[K]): Promise<Story>;
|
|
106
116
|
/**
|
|
107
117
|
* Append content to a section in the story
|
|
118
|
+
* @deprecated Use writeSectionContent() for new code. This function writes to story.md.
|
|
108
119
|
*/
|
|
109
120
|
export declare function appendToSection(story: Story, section: string, content: string): Promise<Story>;
|
|
121
|
+
/**
|
|
122
|
+
* Get the path to a section file within a story folder.
|
|
123
|
+
*
|
|
124
|
+
* @param storyPath - Path to the story.md file
|
|
125
|
+
* @param section - Section type (research, plan, review)
|
|
126
|
+
* @returns Absolute path to the section file
|
|
127
|
+
*/
|
|
128
|
+
export declare function getSectionFilePath(storyPath: string, section: SectionType): string;
|
|
129
|
+
/**
|
|
130
|
+
* Read section content from section file, with fallback to story.md for backward compatibility.
|
|
131
|
+
*
|
|
132
|
+
* Lookup order:
|
|
133
|
+
* 1. Section file (e.g., research.md) - preferred
|
|
134
|
+
* 2. Extract from story.md section (e.g., ## Research) - backward compat
|
|
135
|
+
* 3. Return empty string if neither exists
|
|
136
|
+
*
|
|
137
|
+
* @param storyPath - Path to the story.md file
|
|
138
|
+
* @param section - Section type (research, plan, review)
|
|
139
|
+
* @returns Section content or empty string
|
|
140
|
+
*/
|
|
141
|
+
export declare function readSectionContent(storyPath: string, section: SectionType): Promise<string>;
|
|
142
|
+
/**
|
|
143
|
+
* Format iteration header for retry/rework scenarios.
|
|
144
|
+
*
|
|
145
|
+
* @param iteration - Iteration number (1-based)
|
|
146
|
+
* @param isRework - Whether this is a rework iteration (vs initial or retry)
|
|
147
|
+
* @returns Formatted header string
|
|
148
|
+
*/
|
|
149
|
+
export declare function formatIterationHeader(iteration: number, isRework?: boolean): string;
|
|
150
|
+
/**
|
|
151
|
+
* Write or append content to a section file.
|
|
152
|
+
*
|
|
153
|
+
* Creates the section file if it doesn't exist. When appending,
|
|
154
|
+
* adds an iteration header for clarity.
|
|
155
|
+
*
|
|
156
|
+
* @param storyPath - Path to the story.md file
|
|
157
|
+
* @param section - Section type (research, plan, review)
|
|
158
|
+
* @param content - Content to write
|
|
159
|
+
* @param options - Write options
|
|
160
|
+
* @param options.append - If true, append to existing content
|
|
161
|
+
* @param options.iteration - Iteration number for header formatting
|
|
162
|
+
* @param options.isRework - If true, format as rework iteration
|
|
163
|
+
*/
|
|
164
|
+
export declare function writeSectionContent(storyPath: string, section: SectionType, content: string, options?: {
|
|
165
|
+
append?: boolean;
|
|
166
|
+
iteration?: number;
|
|
167
|
+
isRework?: boolean;
|
|
168
|
+
}): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Get story context including all section files.
|
|
171
|
+
* Useful for agents that need to read other phases' output.
|
|
172
|
+
*
|
|
173
|
+
* @param storyPath - Path to the story.md file
|
|
174
|
+
* @returns Object with story and all section content
|
|
175
|
+
*/
|
|
176
|
+
export declare function getStoryContext(storyPath: string): Promise<{
|
|
177
|
+
story: Story;
|
|
178
|
+
research: string;
|
|
179
|
+
plan: string;
|
|
180
|
+
review: string;
|
|
181
|
+
}>;
|
|
110
182
|
/**
|
|
111
183
|
* Record a refinement attempt in the story's frontmatter
|
|
112
184
|
*/
|
|
@@ -160,6 +232,18 @@ export declare function getLatestReviewAttempt(story: Story): ReviewAttempt | nu
|
|
|
160
232
|
* Mark a story as complete (all workflow flags set to true)
|
|
161
233
|
*/
|
|
162
234
|
export declare function markStoryComplete(story: Story): Promise<Story>;
|
|
235
|
+
/**
|
|
236
|
+
* Check if a story's PR has been merged
|
|
237
|
+
*/
|
|
238
|
+
export declare function isPRMerged(story: Story): boolean;
|
|
239
|
+
/**
|
|
240
|
+
* Mark a story's PR as merged and record the merge details
|
|
241
|
+
*
|
|
242
|
+
* @param story - The story to update
|
|
243
|
+
* @param mergeSha - The SHA of the merge commit (optional)
|
|
244
|
+
* @returns Updated story with merge metadata
|
|
245
|
+
*/
|
|
246
|
+
export declare function markPRMerged(story: Story, mergeSha?: string): Promise<Story>;
|
|
163
247
|
/**
|
|
164
248
|
* Auto-complete story after review approval
|
|
165
249
|
* Handles marking story as complete and transitioning to done status
|
package/dist/core/story.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAoB,aAAa,EAAE,MAAM,EAAqE,WAAW,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAC;AAEhO;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"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"}
|