@litmers/cursorflow-orchestrator 0.1.13 → 0.1.15
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/CHANGELOG.md +37 -0
- package/README.md +83 -2
- package/commands/cursorflow-clean.md +20 -6
- package/commands/cursorflow-prepare.md +1 -1
- package/commands/cursorflow-resume.md +127 -6
- package/commands/cursorflow-run.md +2 -2
- package/commands/cursorflow-signal.md +11 -4
- package/dist/cli/clean.js +164 -12
- package/dist/cli/clean.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +6 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/logs.d.ts +8 -0
- package/dist/cli/logs.js +759 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/monitor.js +113 -30
- package/dist/cli/monitor.js.map +1 -1
- package/dist/cli/prepare.js +1 -1
- package/dist/cli/resume.js +367 -18
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/run.js +9 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/signal.js +34 -20
- package/dist/cli/signal.js.map +1 -1
- package/dist/core/orchestrator.d.ts +13 -1
- package/dist/core/orchestrator.js +396 -35
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/reviewer.d.ts +2 -0
- package/dist/core/reviewer.js +24 -2
- package/dist/core/reviewer.js.map +1 -1
- package/dist/core/runner.d.ts +9 -3
- package/dist/core/runner.js +266 -61
- package/dist/core/runner.js.map +1 -1
- package/dist/utils/config.js +38 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/enhanced-logger.d.ts +210 -0
- package/dist/utils/enhanced-logger.js +1030 -0
- package/dist/utils/enhanced-logger.js.map +1 -0
- package/dist/utils/events.d.ts +59 -0
- package/dist/utils/events.js +37 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/git.d.ts +11 -0
- package/dist/utils/git.js +40 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +4 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/types.d.ts +132 -1
- package/dist/utils/webhook.d.ts +5 -0
- package/dist/utils/webhook.js +109 -0
- package/dist/utils/webhook.js.map +1 -0
- package/examples/README.md +1 -1
- package/package.json +2 -1
- package/scripts/patches/test-cursor-agent.js +1 -1
- package/scripts/simple-logging-test.sh +97 -0
- package/scripts/test-real-cursor-lifecycle.sh +289 -0
- package/scripts/test-real-logging.sh +289 -0
- package/scripts/test-streaming-multi-task.sh +247 -0
- package/src/cli/clean.ts +170 -13
- package/src/cli/index.ts +4 -1
- package/src/cli/logs.ts +863 -0
- package/src/cli/monitor.ts +123 -30
- package/src/cli/prepare.ts +1 -1
- package/src/cli/resume.ts +463 -22
- package/src/cli/run.ts +10 -0
- package/src/cli/signal.ts +43 -27
- package/src/core/orchestrator.ts +458 -36
- package/src/core/reviewer.ts +40 -4
- package/src/core/runner.ts +293 -60
- package/src/utils/config.ts +41 -1
- package/src/utils/enhanced-logger.ts +1166 -0
- package/src/utils/events.ts +117 -0
- package/src/utils/git.ts +40 -0
- package/src/utils/logger.ts +4 -1
- package/src/utils/types.ts +160 -1
- package/src/utils/webhook.ts +85 -0
|
@@ -4,23 +4,31 @@
|
|
|
4
4
|
* Adapted from admin-domains-orchestrator.js
|
|
5
5
|
*/
|
|
6
6
|
import { ChildProcess } from 'child_process';
|
|
7
|
+
import { WebhookConfig, EnhancedLogConfig } from '../utils/types';
|
|
8
|
+
import { EnhancedLogManager } from '../utils/enhanced-logger';
|
|
7
9
|
export interface LaneInfo {
|
|
8
10
|
name: string;
|
|
9
11
|
path: string;
|
|
10
12
|
dependsOn: string[];
|
|
13
|
+
startIndex?: number;
|
|
11
14
|
}
|
|
12
15
|
export interface SpawnLaneResult {
|
|
13
16
|
child: ChildProcess;
|
|
14
17
|
logPath: string;
|
|
18
|
+
logManager?: EnhancedLogManager;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
21
|
* Spawn a lane process
|
|
18
22
|
*/
|
|
19
|
-
export declare function spawnLane({ tasksFile, laneRunDir, executor }: {
|
|
23
|
+
export declare function spawnLane({ laneName, tasksFile, laneRunDir, executor, startIndex, pipelineBranch, enhancedLogConfig, noGit, }: {
|
|
20
24
|
laneName: string;
|
|
21
25
|
tasksFile: string;
|
|
22
26
|
laneRunDir: string;
|
|
23
27
|
executor: string;
|
|
28
|
+
startIndex?: number;
|
|
29
|
+
pipelineBranch?: string;
|
|
30
|
+
enhancedLogConfig?: Partial<EnhancedLogConfig>;
|
|
31
|
+
noGit?: boolean;
|
|
24
32
|
}): SpawnLaneResult;
|
|
25
33
|
/**
|
|
26
34
|
* Wait for child process to exit
|
|
@@ -42,6 +50,10 @@ export declare function orchestrate(tasksDir: string, options?: {
|
|
|
42
50
|
executor?: string;
|
|
43
51
|
pollInterval?: number;
|
|
44
52
|
maxConcurrentLanes?: number;
|
|
53
|
+
webhooks?: WebhookConfig[];
|
|
54
|
+
autoResolveDependencies?: boolean;
|
|
55
|
+
enhancedLogging?: Partial<EnhancedLogConfig>;
|
|
56
|
+
noGit?: boolean;
|
|
45
57
|
}): Promise<{
|
|
46
58
|
lanes: LaneInfo[];
|
|
47
59
|
exitCodes: Record<string, number>;
|
|
@@ -48,13 +48,17 @@ const path = __importStar(require("path"));
|
|
|
48
48
|
const child_process_1 = require("child_process");
|
|
49
49
|
const logger = __importStar(require("../utils/logger"));
|
|
50
50
|
const state_1 = require("../utils/state");
|
|
51
|
+
const events_1 = require("../utils/events");
|
|
52
|
+
const webhook_1 = require("../utils/webhook");
|
|
53
|
+
const config_1 = require("../utils/config");
|
|
54
|
+
const git = __importStar(require("../utils/git"));
|
|
55
|
+
const child_process_2 = require("child_process");
|
|
56
|
+
const enhanced_logger_1 = require("../utils/enhanced-logger");
|
|
51
57
|
/**
|
|
52
58
|
* Spawn a lane process
|
|
53
59
|
*/
|
|
54
|
-
function spawnLane({ tasksFile, laneRunDir, executor }) {
|
|
60
|
+
function spawnLane({ laneName, tasksFile, laneRunDir, executor, startIndex = 0, pipelineBranch, enhancedLogConfig, noGit = false, }) {
|
|
55
61
|
fs.mkdirSync(laneRunDir, { recursive: true });
|
|
56
|
-
const logPath = path.join(laneRunDir, 'terminal.log');
|
|
57
|
-
const logFd = fs.openSync(logPath, 'a');
|
|
58
62
|
// Use extension-less resolve to handle both .ts (dev) and .js (dist)
|
|
59
63
|
const runnerPath = require.resolve('./runner');
|
|
60
64
|
const args = [
|
|
@@ -62,19 +66,181 @@ function spawnLane({ tasksFile, laneRunDir, executor }) {
|
|
|
62
66
|
tasksFile,
|
|
63
67
|
'--run-dir', laneRunDir,
|
|
64
68
|
'--executor', executor,
|
|
69
|
+
'--start-index', startIndex.toString(),
|
|
65
70
|
];
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
fs.closeSync(logFd);
|
|
71
|
+
if (pipelineBranch) {
|
|
72
|
+
args.push('--pipeline-branch', pipelineBranch);
|
|
73
|
+
}
|
|
74
|
+
if (noGit) {
|
|
75
|
+
args.push('--no-git');
|
|
73
76
|
}
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
// Create enhanced log manager if enabled
|
|
78
|
+
const logConfig = { ...enhanced_logger_1.DEFAULT_LOG_CONFIG, ...enhancedLogConfig };
|
|
79
|
+
let logManager;
|
|
80
|
+
let logPath;
|
|
81
|
+
let child;
|
|
82
|
+
// Build environment for child process
|
|
83
|
+
const childEnv = {
|
|
84
|
+
...process.env,
|
|
85
|
+
};
|
|
86
|
+
if (logConfig.enabled) {
|
|
87
|
+
// Create callback for clean console output
|
|
88
|
+
const onParsedMessage = (msg) => {
|
|
89
|
+
// Print a clean, colored version of the message to the console
|
|
90
|
+
const ts = new Date(msg.timestamp).toLocaleTimeString('en-US', { hour12: false });
|
|
91
|
+
const laneLabel = `[${laneName}]`.padEnd(12);
|
|
92
|
+
let prefix = '';
|
|
93
|
+
let content = msg.content;
|
|
94
|
+
switch (msg.type) {
|
|
95
|
+
case 'user':
|
|
96
|
+
prefix = `${logger.COLORS.cyan}🧑 USER${logger.COLORS.reset}`;
|
|
97
|
+
// No truncation for user prompt to ensure full command visibility
|
|
98
|
+
content = content.replace(/\n/g, ' ');
|
|
99
|
+
break;
|
|
100
|
+
case 'assistant':
|
|
101
|
+
prefix = `${logger.COLORS.green}🤖 ASST${logger.COLORS.reset}`;
|
|
102
|
+
break;
|
|
103
|
+
case 'tool':
|
|
104
|
+
prefix = `${logger.COLORS.yellow}🔧 TOOL${logger.COLORS.reset}`;
|
|
105
|
+
// Simplify tool call: [Tool: read_file] {"target_file":"..."} -> read_file(target_file: ...)
|
|
106
|
+
const toolMatch = content.match(/\[Tool: ([^\]]+)\] (.*)/);
|
|
107
|
+
if (toolMatch) {
|
|
108
|
+
const [, name, args] = toolMatch;
|
|
109
|
+
try {
|
|
110
|
+
const parsedArgs = JSON.parse(args);
|
|
111
|
+
let argStr = '';
|
|
112
|
+
if (name === 'read_file' && parsedArgs.target_file) {
|
|
113
|
+
argStr = parsedArgs.target_file;
|
|
114
|
+
}
|
|
115
|
+
else if (name === 'run_terminal_cmd' && parsedArgs.command) {
|
|
116
|
+
argStr = parsedArgs.command;
|
|
117
|
+
}
|
|
118
|
+
else if (name === 'write' && parsedArgs.file_path) {
|
|
119
|
+
argStr = parsedArgs.file_path;
|
|
120
|
+
}
|
|
121
|
+
else if (name === 'search_replace' && parsedArgs.file_path) {
|
|
122
|
+
argStr = parsedArgs.file_path;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Generic summary for other tools
|
|
126
|
+
const keys = Object.keys(parsedArgs);
|
|
127
|
+
if (keys.length > 0) {
|
|
128
|
+
argStr = String(parsedArgs[keys[0]]).substring(0, 50);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
content = `${logger.COLORS.bold}${name}${logger.COLORS.reset}(${argStr})`;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
content = `${logger.COLORS.bold}${name}${logger.COLORS.reset}: ${args}`;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
break;
|
|
138
|
+
case 'tool_result':
|
|
139
|
+
prefix = `${logger.COLORS.gray}📄 RESL${logger.COLORS.reset}`;
|
|
140
|
+
// Simplify tool result: [Tool Result: read_file] ... -> read_file OK
|
|
141
|
+
const resMatch = content.match(/\[Tool Result: ([^\]]+)\]/);
|
|
142
|
+
content = resMatch ? `${resMatch[1]} OK` : 'result';
|
|
143
|
+
break;
|
|
144
|
+
case 'result':
|
|
145
|
+
prefix = `${logger.COLORS.green}✅ DONE${logger.COLORS.reset}`;
|
|
146
|
+
break;
|
|
147
|
+
case 'system':
|
|
148
|
+
prefix = `${logger.COLORS.gray}⚙️ SYS${logger.COLORS.reset}`;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
if (prefix) {
|
|
152
|
+
const lines = content.split('\n');
|
|
153
|
+
const tsPrefix = `${logger.COLORS.gray}[${ts}]${logger.COLORS.reset} ${logger.COLORS.magenta}${laneLabel}${logger.COLORS.reset}`;
|
|
154
|
+
if (msg.type === 'user' || msg.type === 'assistant' || msg.type === 'result') {
|
|
155
|
+
const header = `${prefix} ┌${'─'.repeat(60)}`;
|
|
156
|
+
process.stdout.write(`${tsPrefix} ${header}\n`);
|
|
157
|
+
for (const line of lines) {
|
|
158
|
+
process.stdout.write(`${tsPrefix} ${' '.repeat((0, enhanced_logger_1.stripAnsi)(prefix).length)} │ ${line}\n`);
|
|
159
|
+
}
|
|
160
|
+
process.stdout.write(`${tsPrefix} ${' '.repeat((0, enhanced_logger_1.stripAnsi)(prefix).length)} └${'─'.repeat(60)}\n`);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
process.stdout.write(`${tsPrefix} ${prefix} ${content}\n`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
logManager = (0, enhanced_logger_1.createLogManager)(laneRunDir, laneName, logConfig, onParsedMessage);
|
|
168
|
+
logPath = logManager.getLogPaths().clean;
|
|
169
|
+
// Spawn with pipe for enhanced logging
|
|
170
|
+
child = (0, child_process_1.spawn)('node', args, {
|
|
171
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
172
|
+
env: childEnv,
|
|
173
|
+
detached: false,
|
|
174
|
+
});
|
|
175
|
+
// Buffer for non-JSON lines
|
|
176
|
+
let lineBuffer = '';
|
|
177
|
+
// Pipe stdout and stderr through enhanced logger
|
|
178
|
+
if (child.stdout) {
|
|
179
|
+
child.stdout.on('data', (data) => {
|
|
180
|
+
logManager.writeStdout(data);
|
|
181
|
+
// Filter out JSON lines from console output to keep it clean
|
|
182
|
+
const str = data.toString();
|
|
183
|
+
lineBuffer += str;
|
|
184
|
+
const lines = lineBuffer.split('\n');
|
|
185
|
+
lineBuffer = lines.pop() || '';
|
|
186
|
+
for (const line of lines) {
|
|
187
|
+
const trimmed = line.trim();
|
|
188
|
+
// Only print if NOT a noisy line
|
|
189
|
+
if (trimmed &&
|
|
190
|
+
!trimmed.startsWith('{') &&
|
|
191
|
+
!trimmed.startsWith('[') &&
|
|
192
|
+
!trimmed.includes('{"type"') &&
|
|
193
|
+
!trimmed.includes('Heartbeat:')) {
|
|
194
|
+
process.stdout.write(`${logger.COLORS.gray}[${new Date().toLocaleTimeString('en-US', { hour12: false })}]${logger.COLORS.reset} ${logger.COLORS.magenta}${laneName.padEnd(10)}${logger.COLORS.reset} ${line}\n`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
if (child.stderr) {
|
|
200
|
+
child.stderr.on('data', (data) => {
|
|
201
|
+
logManager.writeStderr(data);
|
|
202
|
+
const str = data.toString();
|
|
203
|
+
const lines = str.split('\n');
|
|
204
|
+
for (const line of lines) {
|
|
205
|
+
const trimmed = line.trim();
|
|
206
|
+
if (trimmed) {
|
|
207
|
+
// Check if it's a real error or just git/status output on stderr
|
|
208
|
+
const isStatus = trimmed.startsWith('Preparing worktree') ||
|
|
209
|
+
trimmed.startsWith('Switched to a new branch') ||
|
|
210
|
+
trimmed.startsWith('HEAD is now at') ||
|
|
211
|
+
trimmed.includes('actual output');
|
|
212
|
+
if (isStatus) {
|
|
213
|
+
process.stdout.write(`${logger.COLORS.gray}[${new Date().toLocaleTimeString('en-US', { hour12: false })}]${logger.COLORS.reset} ${logger.COLORS.magenta}${laneName.padEnd(10)}${logger.COLORS.reset} ${trimmed}\n`);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
process.stderr.write(`${logger.COLORS.red}[${laneName}] ERROR: ${trimmed}${logger.COLORS.reset}\n`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// Close log manager when process exits
|
|
223
|
+
child.on('exit', () => {
|
|
224
|
+
logManager?.close();
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
// Fallback to simple file logging
|
|
229
|
+
logPath = path.join(laneRunDir, 'terminal.log');
|
|
230
|
+
const logFd = fs.openSync(logPath, 'a');
|
|
231
|
+
child = (0, child_process_1.spawn)('node', args, {
|
|
232
|
+
stdio: ['ignore', logFd, logFd],
|
|
233
|
+
env: childEnv,
|
|
234
|
+
detached: false,
|
|
235
|
+
});
|
|
236
|
+
try {
|
|
237
|
+
fs.closeSync(logFd);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Ignore
|
|
241
|
+
}
|
|
76
242
|
}
|
|
77
|
-
return { child, logPath };
|
|
243
|
+
return { child, logPath, logManager };
|
|
78
244
|
}
|
|
79
245
|
/**
|
|
80
246
|
* Wait for child process to exit
|
|
@@ -144,6 +310,91 @@ function printLaneStatus(lanes, laneRunDirs) {
|
|
|
144
310
|
console.log(`- ${r.lane}: ${r.status} (${r.task})`);
|
|
145
311
|
}
|
|
146
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* Resolve dependencies for all blocked lanes and sync with all active lanes
|
|
315
|
+
*/
|
|
316
|
+
async function resolveAllDependencies(blockedLanes, allLanes, laneRunDirs, pipelineBranch, runRoot) {
|
|
317
|
+
// 1. Collect all unique changes and commands from blocked lanes
|
|
318
|
+
const allChanges = [];
|
|
319
|
+
const allCommands = [];
|
|
320
|
+
for (const [, plan] of blockedLanes) {
|
|
321
|
+
if (plan.changes)
|
|
322
|
+
allChanges.push(...plan.changes);
|
|
323
|
+
if (plan.commands)
|
|
324
|
+
allCommands.push(...plan.commands);
|
|
325
|
+
}
|
|
326
|
+
const uniqueChanges = Array.from(new Set(allChanges));
|
|
327
|
+
const uniqueCommands = Array.from(new Set(allCommands));
|
|
328
|
+
if (uniqueCommands.length === 0)
|
|
329
|
+
return;
|
|
330
|
+
// 2. Setup a temporary worktree for resolution if needed, or use the first available one
|
|
331
|
+
const firstLaneName = Array.from(blockedLanes.keys())[0];
|
|
332
|
+
const statePath = path.join(laneRunDirs[firstLaneName], 'state.json');
|
|
333
|
+
const state = (0, state_1.loadState)(statePath);
|
|
334
|
+
const worktreeDir = state?.worktreeDir || path.join(runRoot, 'resolution-worktree');
|
|
335
|
+
if (!fs.existsSync(worktreeDir)) {
|
|
336
|
+
logger.info(`Creating resolution worktree at ${worktreeDir}`);
|
|
337
|
+
git.createWorktree(worktreeDir, pipelineBranch, { baseBranch: 'main' });
|
|
338
|
+
}
|
|
339
|
+
// 3. Resolve on pipeline branch
|
|
340
|
+
logger.info(`Resolving dependencies on ${pipelineBranch}`);
|
|
341
|
+
git.runGit(['checkout', pipelineBranch], { cwd: worktreeDir });
|
|
342
|
+
for (const cmd of uniqueCommands) {
|
|
343
|
+
logger.info(`Running: ${cmd}`);
|
|
344
|
+
try {
|
|
345
|
+
(0, child_process_2.execSync)(cmd, { cwd: worktreeDir, stdio: 'inherit' });
|
|
346
|
+
}
|
|
347
|
+
catch (e) {
|
|
348
|
+
throw new Error(`Command failed: ${cmd}. ${e.message}`);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
try {
|
|
352
|
+
git.runGit(['add', '.'], { cwd: worktreeDir });
|
|
353
|
+
git.runGit(['commit', '-m', `chore: auto-resolve dependencies\n\n${uniqueChanges.join('\n')}`], { cwd: worktreeDir });
|
|
354
|
+
// Log changed files
|
|
355
|
+
const stats = git.getLastOperationStats(worktreeDir);
|
|
356
|
+
if (stats) {
|
|
357
|
+
logger.info('Changed files:\n' + stats);
|
|
358
|
+
}
|
|
359
|
+
git.push(pipelineBranch, { cwd: worktreeDir });
|
|
360
|
+
}
|
|
361
|
+
catch (e) { /* ignore if nothing to commit */ }
|
|
362
|
+
// 4. Sync ALL active lanes (blocked + pending + running)
|
|
363
|
+
// Since we only call this when running.size === 0, "active" means not completed/failed
|
|
364
|
+
for (const lane of allLanes) {
|
|
365
|
+
const laneDir = laneRunDirs[lane.name];
|
|
366
|
+
if (!laneDir)
|
|
367
|
+
continue;
|
|
368
|
+
const laneState = (0, state_1.loadState)(path.join(laneDir, 'state.json'));
|
|
369
|
+
if (!laneState || laneState.status === 'completed' || laneState.status === 'failed')
|
|
370
|
+
continue;
|
|
371
|
+
// Merge pipelineBranch into the lane's current task branch
|
|
372
|
+
const currentIdx = laneState.currentTaskIndex;
|
|
373
|
+
const taskConfig = JSON.parse(fs.readFileSync(lane.path, 'utf8'));
|
|
374
|
+
const task = taskConfig.tasks[currentIdx];
|
|
375
|
+
if (task) {
|
|
376
|
+
const taskBranch = `${pipelineBranch}--${String(currentIdx + 1).padStart(2, '0')}-${task.name}`;
|
|
377
|
+
logger.info(`Syncing lane ${lane.name} branch ${taskBranch}`);
|
|
378
|
+
try {
|
|
379
|
+
// If task branch doesn't exist yet, it will be created from pipelineBranch when the lane starts
|
|
380
|
+
if (git.branchExists(taskBranch, { cwd: worktreeDir })) {
|
|
381
|
+
git.runGit(['checkout', taskBranch], { cwd: worktreeDir });
|
|
382
|
+
git.runGit(['merge', pipelineBranch, '--no-edit'], { cwd: worktreeDir });
|
|
383
|
+
// Log changed files
|
|
384
|
+
const stats = git.getLastOperationStats(worktreeDir);
|
|
385
|
+
if (stats) {
|
|
386
|
+
logger.info(`Sync results for ${lane.name}:\n` + stats);
|
|
387
|
+
}
|
|
388
|
+
git.push(taskBranch, { cwd: worktreeDir });
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
catch (e) {
|
|
392
|
+
logger.warn(`Failed to sync branch ${taskBranch}: ${e.message}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
git.runGit(['checkout', pipelineBranch], { cwd: worktreeDir });
|
|
397
|
+
}
|
|
147
398
|
/**
|
|
148
399
|
* Run orchestration with dependency management
|
|
149
400
|
*/
|
|
@@ -152,8 +403,36 @@ async function orchestrate(tasksDir, options = {}) {
|
|
|
152
403
|
if (lanes.length === 0) {
|
|
153
404
|
throw new Error(`No lane task files found in ${tasksDir}`);
|
|
154
405
|
}
|
|
155
|
-
const
|
|
406
|
+
const config = (0, config_1.loadConfig)();
|
|
407
|
+
const logsDir = (0, config_1.getLogsDir)(config);
|
|
408
|
+
const runId = `run-${Date.now()}`;
|
|
409
|
+
// Use absolute path for runRoot to avoid issues with subfolders
|
|
410
|
+
const runRoot = options.runDir
|
|
411
|
+
? (path.isAbsolute(options.runDir) ? options.runDir : path.resolve(process.cwd(), options.runDir))
|
|
412
|
+
: path.join(logsDir, 'runs', runId);
|
|
156
413
|
fs.mkdirSync(runRoot, { recursive: true });
|
|
414
|
+
const pipelineBranch = `cursorflow/run-${Date.now().toString(36)}`;
|
|
415
|
+
// Initialize event system
|
|
416
|
+
events_1.events.setRunId(runId);
|
|
417
|
+
if (options.webhooks) {
|
|
418
|
+
(0, webhook_1.registerWebhooks)(options.webhooks);
|
|
419
|
+
}
|
|
420
|
+
events_1.events.emit('orchestration.started', {
|
|
421
|
+
runId,
|
|
422
|
+
tasksDir,
|
|
423
|
+
laneCount: lanes.length,
|
|
424
|
+
runRoot,
|
|
425
|
+
});
|
|
426
|
+
const maxConcurrent = options.maxConcurrentLanes || 10;
|
|
427
|
+
const running = new Map();
|
|
428
|
+
const exitCodes = {};
|
|
429
|
+
const completedLanes = new Set();
|
|
430
|
+
const failedLanes = new Set();
|
|
431
|
+
const blockedLanes = new Map();
|
|
432
|
+
// Track start index for each lane (initially 0)
|
|
433
|
+
for (const lane of lanes) {
|
|
434
|
+
lane.startIndex = 0;
|
|
435
|
+
}
|
|
157
436
|
const laneRunDirs = {};
|
|
158
437
|
for (const lane of lanes) {
|
|
159
438
|
laneRunDirs[lane.name] = path.join(runRoot, 'lanes', lane.name);
|
|
@@ -163,31 +442,47 @@ async function orchestrate(tasksDir, options = {}) {
|
|
|
163
442
|
logger.info(`Tasks directory: ${tasksDir}`);
|
|
164
443
|
logger.info(`Run directory: ${runRoot}`);
|
|
165
444
|
logger.info(`Lanes: ${lanes.length}`);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
445
|
+
// Display dependency graph
|
|
446
|
+
logger.info('\n📊 Dependency Graph:');
|
|
447
|
+
for (const lane of lanes) {
|
|
448
|
+
const deps = lane.dependsOn.length > 0 ? ` [depends on: ${lane.dependsOn.join(', ')}]` : '';
|
|
449
|
+
console.log(` ${logger.COLORS.cyan}${lane.name}${logger.COLORS.reset}${deps}`);
|
|
450
|
+
// Simple tree-like visualization for deep dependencies
|
|
451
|
+
if (lane.dependsOn.length > 0) {
|
|
452
|
+
for (const dep of lane.dependsOn) {
|
|
453
|
+
console.log(` └─ ${dep}`);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
console.log('');
|
|
458
|
+
// Disable auto-resolve when noGit mode is enabled
|
|
459
|
+
const autoResolve = !options.noGit && options.autoResolveDependencies !== false;
|
|
460
|
+
if (options.noGit) {
|
|
461
|
+
logger.info('🚫 Git operations disabled (--no-git mode)');
|
|
462
|
+
}
|
|
171
463
|
// Monitor lanes
|
|
172
464
|
const monitorInterval = setInterval(() => {
|
|
173
465
|
printLaneStatus(lanes, laneRunDirs);
|
|
174
466
|
}, options.pollInterval || 60000);
|
|
175
|
-
while (completedLanes.size + failedLanes.size < lanes.length) {
|
|
467
|
+
while (completedLanes.size + failedLanes.size + blockedLanes.size < lanes.length || (blockedLanes.size > 0 && running.size === 0)) {
|
|
176
468
|
// 1. Identify lanes ready to start
|
|
177
469
|
const readyToStart = lanes.filter(lane => {
|
|
178
|
-
// Not already running or completed
|
|
179
|
-
if (running.has(lane.name) || completedLanes.has(lane.name) || failedLanes.has(lane.name)) {
|
|
470
|
+
// Not already running or completed or failed or blocked
|
|
471
|
+
if (running.has(lane.name) || completedLanes.has(lane.name) || failedLanes.has(lane.name) || blockedLanes.has(lane.name)) {
|
|
180
472
|
return false;
|
|
181
473
|
}
|
|
182
474
|
// Check dependencies
|
|
183
475
|
for (const dep of lane.dependsOn) {
|
|
184
476
|
if (failedLanes.has(dep)) {
|
|
185
|
-
|
|
186
|
-
logger.error(`Lane ${lane.name} failed because dependency ${dep} failed`);
|
|
477
|
+
logger.error(`Lane ${lane.name} will not start because dependency ${dep} failed`);
|
|
187
478
|
failedLanes.add(lane.name);
|
|
188
479
|
exitCodes[lane.name] = 1;
|
|
189
480
|
return false;
|
|
190
481
|
}
|
|
482
|
+
if (blockedLanes.has(dep)) {
|
|
483
|
+
// If a dependency is blocked, wait
|
|
484
|
+
return false;
|
|
485
|
+
}
|
|
191
486
|
if (!completedLanes.has(dep)) {
|
|
192
487
|
return false;
|
|
193
488
|
}
|
|
@@ -198,18 +493,26 @@ async function orchestrate(tasksDir, options = {}) {
|
|
|
198
493
|
for (const lane of readyToStart) {
|
|
199
494
|
if (running.size >= maxConcurrent)
|
|
200
495
|
break;
|
|
201
|
-
logger.info(`Lane started: ${lane.name}`);
|
|
496
|
+
logger.info(`Lane started: ${lane.name}${lane.startIndex ? ` (resuming from ${lane.startIndex})` : ''}`);
|
|
202
497
|
const spawnResult = spawnLane({
|
|
203
498
|
laneName: lane.name,
|
|
204
499
|
tasksFile: lane.path,
|
|
205
500
|
laneRunDir: laneRunDirs[lane.name],
|
|
206
501
|
executor: options.executor || 'cursor-agent',
|
|
502
|
+
startIndex: lane.startIndex,
|
|
503
|
+
pipelineBranch,
|
|
504
|
+
enhancedLogConfig: options.enhancedLogging,
|
|
505
|
+
noGit: options.noGit,
|
|
207
506
|
});
|
|
208
507
|
running.set(lane.name, spawnResult);
|
|
508
|
+
events_1.events.emit('lane.started', {
|
|
509
|
+
laneName: lane.name,
|
|
510
|
+
pid: spawnResult.child.pid,
|
|
511
|
+
logPath: spawnResult.logPath,
|
|
512
|
+
});
|
|
209
513
|
}
|
|
210
514
|
// 3. Wait for any running lane to finish
|
|
211
515
|
if (running.size > 0) {
|
|
212
|
-
// We need to wait for at least one to finish
|
|
213
516
|
const promises = Array.from(running.entries()).map(async ([name, { child }]) => {
|
|
214
517
|
const code = await waitChild(child);
|
|
215
518
|
return { name, code };
|
|
@@ -217,25 +520,75 @@ async function orchestrate(tasksDir, options = {}) {
|
|
|
217
520
|
const finished = await Promise.race(promises);
|
|
218
521
|
running.delete(finished.name);
|
|
219
522
|
exitCodes[finished.name] = finished.code;
|
|
220
|
-
if (finished.code === 0
|
|
523
|
+
if (finished.code === 0) {
|
|
221
524
|
completedLanes.add(finished.name);
|
|
525
|
+
events_1.events.emit('lane.completed', {
|
|
526
|
+
laneName: finished.name,
|
|
527
|
+
exitCode: finished.code,
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
else if (finished.code === 2) {
|
|
531
|
+
// Blocked by dependency
|
|
532
|
+
const statePath = path.join(laneRunDirs[finished.name], 'state.json');
|
|
533
|
+
const state = (0, state_1.loadState)(statePath);
|
|
534
|
+
if (state && state.dependencyRequest) {
|
|
535
|
+
blockedLanes.set(finished.name, state.dependencyRequest);
|
|
536
|
+
const lane = lanes.find(l => l.name === finished.name);
|
|
537
|
+
if (lane) {
|
|
538
|
+
lane.startIndex = Math.max(0, state.currentTaskIndex - 1); // Task was blocked, retry it
|
|
539
|
+
}
|
|
540
|
+
events_1.events.emit('lane.blocked', {
|
|
541
|
+
laneName: finished.name,
|
|
542
|
+
dependencyRequest: state.dependencyRequest,
|
|
543
|
+
});
|
|
544
|
+
logger.warn(`Lane ${finished.name} is blocked on dependency change request`);
|
|
545
|
+
}
|
|
546
|
+
else {
|
|
547
|
+
failedLanes.add(finished.name);
|
|
548
|
+
logger.error(`Lane ${finished.name} exited with code 2 but no dependency request found`);
|
|
549
|
+
}
|
|
222
550
|
}
|
|
223
551
|
else {
|
|
224
552
|
failedLanes.add(finished.name);
|
|
553
|
+
events_1.events.emit('lane.failed', {
|
|
554
|
+
laneName: finished.name,
|
|
555
|
+
exitCode: finished.code,
|
|
556
|
+
error: 'Process exited with non-zero code',
|
|
557
|
+
});
|
|
225
558
|
}
|
|
226
559
|
printLaneStatus(lanes, laneRunDirs);
|
|
227
560
|
}
|
|
228
561
|
else {
|
|
229
|
-
// Nothing running
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
562
|
+
// Nothing running. Are we blocked?
|
|
563
|
+
if (blockedLanes.size > 0 && autoResolve) {
|
|
564
|
+
logger.section('🛠 Auto-Resolving Dependencies');
|
|
565
|
+
try {
|
|
566
|
+
await resolveAllDependencies(blockedLanes, lanes, laneRunDirs, pipelineBranch, runRoot);
|
|
567
|
+
// Clear blocked status
|
|
568
|
+
blockedLanes.clear();
|
|
569
|
+
logger.success('Dependencies resolved and synced across all active lanes. Resuming...');
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
logger.error(`Auto-resolution failed: ${error.message}`);
|
|
573
|
+
// Move blocked to failed
|
|
574
|
+
for (const name of blockedLanes.keys()) {
|
|
575
|
+
failedLanes.add(name);
|
|
576
|
+
}
|
|
577
|
+
blockedLanes.clear();
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
else if (readyToStart.length === 0 && completedLanes.size + failedLanes.size + blockedLanes.size < lanes.length) {
|
|
581
|
+
const remaining = lanes.filter(l => !completedLanes.has(l.name) && !failedLanes.has(l.name) && !blockedLanes.has(l.name));
|
|
233
582
|
logger.error(`Deadlock detected! Remaining lanes cannot start: ${remaining.map(l => l.name).join(', ')}`);
|
|
234
583
|
for (const l of remaining) {
|
|
235
584
|
failedLanes.add(l.name);
|
|
236
585
|
exitCodes[l.name] = 1;
|
|
237
586
|
}
|
|
238
587
|
}
|
|
588
|
+
else {
|
|
589
|
+
// All finished
|
|
590
|
+
break;
|
|
591
|
+
}
|
|
239
592
|
}
|
|
240
593
|
}
|
|
241
594
|
clearInterval(monitorInterval);
|
|
@@ -246,16 +599,24 @@ async function orchestrate(tasksDir, options = {}) {
|
|
|
246
599
|
logger.error(`Lanes failed: ${failed.map(([l, c]) => `${l}(${c})`).join(', ')}`);
|
|
247
600
|
process.exit(1);
|
|
248
601
|
}
|
|
249
|
-
// Check for blocked lanes
|
|
250
|
-
const blocked =
|
|
251
|
-
.filter(([, code]) => code === 2)
|
|
252
|
-
.map(([lane]) => lane);
|
|
602
|
+
// Check for blocked lanes (if autoResolve was false)
|
|
603
|
+
const blocked = Array.from(blockedLanes.keys());
|
|
253
604
|
if (blocked.length > 0) {
|
|
254
605
|
logger.warn(`Lanes blocked on dependency: ${blocked.join(', ')}`);
|
|
255
606
|
logger.info('Handle dependency changes manually and resume lanes');
|
|
607
|
+
events_1.events.emit('orchestration.failed', {
|
|
608
|
+
error: 'Some lanes blocked on dependency change requests',
|
|
609
|
+
blockedLanes: blocked,
|
|
610
|
+
});
|
|
256
611
|
process.exit(2);
|
|
257
612
|
}
|
|
258
613
|
logger.success('All lanes completed successfully!');
|
|
614
|
+
events_1.events.emit('orchestration.completed', {
|
|
615
|
+
runId,
|
|
616
|
+
laneCount: lanes.length,
|
|
617
|
+
completedCount: completedLanes.size,
|
|
618
|
+
failedCount: failedLanes.size,
|
|
619
|
+
});
|
|
259
620
|
return { lanes, exitCodes, runRoot };
|
|
260
621
|
}
|
|
261
622
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|