ghcralph 0.1.0 → 0.1.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.
Files changed (55) hide show
  1. package/README.md +44 -22
  2. package/dist/cli.js +3 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/config.js +1 -1
  5. package/dist/commands/config.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +242 -2
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/run.d.ts +2 -9
  10. package/dist/commands/run.d.ts.map +1 -1
  11. package/dist/commands/run.js +288 -153
  12. package/dist/commands/run.js.map +1 -1
  13. package/dist/core/action-executor.d.ts +12 -0
  14. package/dist/core/action-executor.d.ts.map +1 -1
  15. package/dist/core/action-executor.js +36 -2
  16. package/dist/core/action-executor.js.map +1 -1
  17. package/dist/core/checkpoint-manager.d.ts +8 -0
  18. package/dist/core/checkpoint-manager.d.ts.map +1 -1
  19. package/dist/core/checkpoint-manager.js +101 -0
  20. package/dist/core/checkpoint-manager.js.map +1 -1
  21. package/dist/core/config-manager.d.ts.map +1 -1
  22. package/dist/core/config-manager.js +3 -0
  23. package/dist/core/config-manager.js.map +1 -1
  24. package/dist/core/config-schema.d.ts +11 -1
  25. package/dist/core/config-schema.d.ts.map +1 -1
  26. package/dist/core/config-schema.js +19 -1
  27. package/dist/core/config-schema.js.map +1 -1
  28. package/dist/core/context-builder.d.ts.map +1 -1
  29. package/dist/core/context-builder.js +28 -1
  30. package/dist/core/context-builder.js.map +1 -1
  31. package/dist/core/git-branch-manager.d.ts +8 -0
  32. package/dist/core/git-branch-manager.d.ts.map +1 -1
  33. package/dist/core/git-branch-manager.js +52 -0
  34. package/dist/core/git-branch-manager.js.map +1 -1
  35. package/dist/core/plan-manager.d.ts +4 -0
  36. package/dist/core/plan-manager.d.ts.map +1 -1
  37. package/dist/core/progress-tracker.d.ts +13 -0
  38. package/dist/core/progress-tracker.d.ts.map +1 -1
  39. package/dist/core/progress-tracker.js +69 -0
  40. package/dist/core/progress-tracker.js.map +1 -1
  41. package/dist/core/response-parser.d.ts +19 -2
  42. package/dist/core/response-parser.d.ts.map +1 -1
  43. package/dist/core/response-parser.js +47 -1
  44. package/dist/core/response-parser.js.map +1 -1
  45. package/dist/integrations/copilot-agent.d.ts +11 -0
  46. package/dist/integrations/copilot-agent.d.ts.map +1 -1
  47. package/dist/integrations/copilot-agent.js +57 -23
  48. package/dist/integrations/copilot-agent.js.map +1 -1
  49. package/dist/integrations/index.d.ts +1 -1
  50. package/dist/integrations/index.d.ts.map +1 -1
  51. package/dist/utils/shell.d.ts +5 -0
  52. package/dist/utils/shell.d.ts.map +1 -1
  53. package/dist/utils/shell.js +22 -0
  54. package/dist/utils/shell.js.map +1 -1
  55. package/package.json +1 -1
@@ -4,9 +4,12 @@
4
4
  * Execute an agentic coding loop
5
5
  */
6
6
  import fs from 'node:fs/promises';
7
- import { info, success, error, warn, debug, spinner, heading, code, dim, parsePositiveInt, parseNonNegativeInt } from '../utils/index.js';
7
+ import path from 'node:path';
8
+ import { execSync } from 'node:child_process';
9
+ import { info, success, error, warn, debug, spinner, heading, code, dim, parseNonNegativeInt } from '../utils/index.js';
10
+ import { waitForKeypress } from '../utils/shell.js';
8
11
  import { CopilotAgent } from '../integrations/index.js';
9
- import { LoopEngine, LocalMarkdownPlan, GitHubPlan, ProgressTracker, GitBranchManager, CheckpointManager, FileSafeguardManager, } from '../core/index.js';
12
+ import { LoopEngine, LocalMarkdownPlan, GitHubPlan, ProgressTracker, GitBranchManager, CheckpointManager, FileSafeguardManager, ConfigManager, } from '../core/index.js';
10
13
  /**
11
14
  * Format elapsed time as human-readable string
12
15
  */
@@ -31,6 +34,20 @@ async function readTaskFromFile(filePath) {
31
34
  throw new Error(`Failed to read task file: ${filePath}`);
32
35
  }
33
36
  }
37
+ function looksLikeMarkdownPlan(content) {
38
+ return /^\s*-\s*\[[ xX]\]\s+.+$/m.test(content);
39
+ }
40
+ function getGitRoot() {
41
+ try {
42
+ return execSync('git rev-parse --show-toplevel', {
43
+ encoding: 'utf-8',
44
+ stdio: ['pipe', 'pipe', 'pipe'],
45
+ }).trim();
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
34
51
  /**
35
52
  * Create a task object from options
36
53
  */
@@ -72,35 +89,36 @@ function setupSignalHandlers(engine) {
72
89
  };
73
90
  process.on('SIGINT', handler);
74
91
  process.on('SIGTERM', handler);
92
+ return () => {
93
+ process.off('SIGINT', handler);
94
+ process.off('SIGTERM', handler);
95
+ };
75
96
  }
76
97
  export function registerRunCommand(program) {
77
98
  program
78
99
  .command('run')
79
100
  .description('Execute an agentic coding loop')
80
101
  .option('-t, --task <description>', 'Task to execute (inline)')
81
- .option('-f, --file <path>', 'Read task from file')
82
- .option('-p, --plan <path>', 'Read tasks from a Markdown plan file')
83
- .option('-g, --github <owner/repo>', 'Use GitHub Issues as plan source')
84
- .option('-l, --label <label>', 'Filter GitHub issues by label')
85
- .option('--milestone <name>', 'Filter GitHub issues by milestone')
86
- .option('--assignee <user>', 'Filter GitHub issues by assignee')
102
+ .option('-f, --file <path>', 'Read task (or Markdown plan) from file')
103
+ .option('-g, --github', 'Use GitHub Issues as plan source (configured via .ghcralph/config.json)')
87
104
  .option('-c, --context <glob...>', 'Include files matching glob patterns in context')
88
105
  .option('-b, --branch <name>', 'Use or create a specific branch name')
89
106
  .option('--force', 'Skip branch confirmation prompts')
90
- .option('--no-commit', 'Disable automatic checkpoint commits')
91
107
  .option('--unlimited', 'Allow more than 50 iterations')
92
108
  .option('--timeout <minutes>', 'Maximum duration in minutes')
93
109
  .option('--allow-delete', 'Allow deletion of pre-existing files')
94
- .option('-n, --max-iterations <number>', 'Maximum loop iterations', '10')
95
- .option('--max-tokens <number>', 'Maximum token budget', '100000')
96
- .option('-m, --model <model>', 'Copilot model to use', 'gpt-4')
97
110
  .option('--dry-run', 'Show what would happen without executing')
111
+ .option('--pause-between-tasks', 'Pause for human review after each task (strict Ralph mode)')
98
112
  .addHelpText('after', `
113
+ Config-backed settings (set via .ghcralph/config.json or GHCRALPH_* env vars):
114
+ - maxIterations, maxTokens, defaultModel, autoCommit, branchPrefix
115
+ - githubRepo (+ optional filters: githubLabel, githubMilestone, githubAssignee)
116
+
99
117
  Examples:
100
118
  $ ghcralph run --task "Add input validation to the login form"
101
- $ ghcralph run --file tasks/refactor.md --max-iterations 5
102
- $ ghcralph run --plan TODO.md
103
- $ ghcralph run --github owner/repo --label "ralph-ready"
119
+ $ ghcralph run --file tasks/refactor.md
120
+ $ ghcralph run --file TODO.md
121
+ $ ghcralph run --github
104
122
  $ ghcralph run --task "Fix bug" --context "src/**/*.ts" --branch fix/login-bug
105
123
  $ ghcralph run --task "Large refactor" --unlimited --timeout 60
106
124
 
@@ -110,34 +128,16 @@ See also:
110
128
  ghcralph init Initialize Ralph in your project
111
129
  `)
112
130
  .action(async (options) => {
113
- if (!options.task && !options.file && !options.plan && !options.github) {
114
- error('Please provide a task with --task, --file, --plan, or --github');
115
- process.exit(1);
116
- }
117
- // Validate numeric inputs
118
- const maxIterationsResult = parsePositiveInt(options.maxIterations, 'max-iterations');
119
- if (!maxIterationsResult.valid) {
120
- error(maxIterationsResult.error ?? 'Invalid max-iterations value');
131
+ if (!options.task && !options.file && !options.github) {
132
+ error('Please provide a task with --task, --file, or --github');
121
133
  process.exit(1);
122
134
  }
123
- if (maxIterationsResult.value === undefined) {
124
- error(maxIterationsResult.error ?? 'Invalid max-iterations value');
125
- process.exit(1);
126
- }
127
- const maxIterations = maxIterationsResult.value;
128
- let maxTokens = 100000;
129
- if (options.maxTokens) {
130
- const maxTokensResult = parsePositiveInt(options.maxTokens, 'max-tokens');
131
- if (!maxTokensResult.valid) {
132
- error(maxTokensResult.error ?? 'Invalid max-tokens value');
133
- process.exit(1);
134
- }
135
- if (maxTokensResult.value === undefined) {
136
- error(maxTokensResult.error ?? 'Invalid max-tokens value');
137
- process.exit(1);
138
- }
139
- maxTokens = maxTokensResult.value;
140
- }
135
+ const gitRoot = getGitRoot();
136
+ const configManager = new ConfigManager(gitRoot ?? undefined);
137
+ const config = await configManager.load();
138
+ const maxIterations = config.maxIterations;
139
+ const maxTokens = config.maxTokens;
140
+ const model = config.defaultModel;
141
141
  let maxDurationMinutes = 0;
142
142
  if (options.timeout) {
143
143
  const timeoutResult = parseNonNegativeInt(options.timeout, 'timeout');
@@ -156,13 +156,28 @@ See also:
156
156
  error('More than 50 iterations requires --unlimited flag');
157
157
  process.exit(1);
158
158
  }
159
+ let githubRepo;
160
+ let githubLabel;
161
+ let githubMilestone;
162
+ let githubAssignee;
163
+ if (options.github) {
164
+ githubRepo = config.githubRepo;
165
+ if (!githubRepo) {
166
+ error('Missing GitHub repository. Set githubRepo in .ghcralph/config.json (or GHCRALPH_GITHUB_REPO)');
167
+ process.exit(1);
168
+ }
169
+ githubLabel = config.githubLabel;
170
+ githubMilestone = config.githubMilestone;
171
+ githubAssignee = config.githubAssignee;
172
+ }
159
173
  // Create task - either from options or from plan source
160
174
  let task;
161
175
  let planManager = null;
176
+ let planFilePath;
162
177
  try {
163
- if (options.github) {
178
+ if (githubRepo) {
164
179
  // Parse owner/repo
165
- const parts = options.github.split('/');
180
+ const parts = githubRepo.split('/');
166
181
  if (parts.length !== 2) {
167
182
  error('GitHub repository must be in format: owner/repo');
168
183
  process.exit(1);
@@ -177,12 +192,12 @@ See also:
177
192
  owner,
178
193
  repo,
179
194
  };
180
- if (options.label)
181
- ghConfig.label = options.label;
182
- if (options.milestone)
183
- ghConfig.milestone = options.milestone;
184
- if (options.assignee)
185
- ghConfig.assignee = options.assignee;
195
+ if (githubLabel)
196
+ ghConfig.label = githubLabel;
197
+ if (githubMilestone)
198
+ ghConfig.milestone = githubMilestone;
199
+ if (githubAssignee)
200
+ ghConfig.assignee = githubAssignee;
186
201
  planManager = new GitHubPlan(ghConfig);
187
202
  await planManager.initialize();
188
203
  const nextTask = await planManager.getNextTask();
@@ -194,20 +209,37 @@ See also:
194
209
  await planManager.startTask(task.id);
195
210
  info(`Selected issue from GitHub: ${task.title}`);
196
211
  }
197
- else if (options.plan) {
198
- // Load task from Markdown plan file
199
- planManager = new LocalMarkdownPlan(options.plan);
200
- await planManager.initialize();
201
- const nextTask = await planManager.getNextTask();
202
- if (!nextTask) {
203
- success('All tasks in the plan are complete!');
204
- return;
205
- }
206
- task = nextTask;
207
- info(`Selected task from plan: ${task.title}`);
208
- }
209
212
  else {
210
- task = await createTask(options);
213
+ const fileArg = options.file;
214
+ if (fileArg) {
215
+ const content = await readTaskFromFile(fileArg);
216
+ const ext = path.extname(fileArg).toLowerCase();
217
+ const isMarkdown = ext === '.md' || ext === '.markdown';
218
+ if (isMarkdown && looksLikeMarkdownPlan(content)) {
219
+ planManager = new LocalMarkdownPlan(fileArg);
220
+ planFilePath = fileArg;
221
+ await planManager.initialize();
222
+ const nextTask = await planManager.getNextTask();
223
+ if (!nextTask) {
224
+ success('All tasks in the plan are complete!');
225
+ return;
226
+ }
227
+ task = nextTask;
228
+ info(`Selected task from plan: ${task.title}`);
229
+ }
230
+ else {
231
+ task = {
232
+ id: `task-${Date.now()}`,
233
+ title: fileArg,
234
+ content,
235
+ status: 'pending',
236
+ source: 'local',
237
+ };
238
+ }
239
+ }
240
+ else {
241
+ task = await createTask(options);
242
+ }
211
243
  }
212
244
  }
213
245
  catch (err) {
@@ -218,17 +250,23 @@ See also:
218
250
  console.log('');
219
251
  console.log(heading('🤖 GitHub Copilot Ralph - Run'));
220
252
  console.log('');
221
- if (options.github) {
222
- console.log(` ${dim('Source:')} GitHub Issues (${code(options.github)})`);
223
- if (options.label) {
224
- console.log(` ${dim('Label filter:')} ${code(options.label)}`);
253
+ if (githubRepo) {
254
+ console.log(` ${dim('Source:')} GitHub Issues (${code(githubRepo)})`);
255
+ if (githubLabel) {
256
+ console.log(` ${dim('Label filter:')} ${code(githubLabel)}`);
257
+ }
258
+ if (githubMilestone) {
259
+ console.log(` ${dim('Milestone filter:')} ${code(githubMilestone)}`);
260
+ }
261
+ if (githubAssignee) {
262
+ console.log(` ${dim('Assignee filter:')} ${code(githubAssignee)}`);
225
263
  }
226
264
  }
227
- else if (options.plan) {
228
- console.log(` ${dim('Plan:')} ${code(options.plan)}`);
265
+ else if (planFilePath) {
266
+ console.log(` ${dim('Plan:')} ${code(planFilePath)}`);
229
267
  }
230
268
  console.log(` ${dim('Task:')} ${task.title}`);
231
- console.log(` ${dim('Model:')} ${code(options.model ?? 'gpt-4')}`);
269
+ console.log(` ${dim('Model:')} ${code(model)}`);
232
270
  console.log(` ${dim('Max iterations:')} ${maxIterations}`);
233
271
  console.log(` ${dim('Max tokens:')} ${maxTokens.toLocaleString()}`);
234
272
  if (options.dryRun) {
@@ -243,7 +281,7 @@ See also:
243
281
  }
244
282
  console.log('');
245
283
  // Setup git branch isolation
246
- const gitManager = new GitBranchManager();
284
+ const gitManager = new GitBranchManager({ branchPrefix: config.branchPrefix });
247
285
  const isGitRepo = await gitManager.isGitRepository();
248
286
  let branchInfo = null;
249
287
  if (isGitRepo) {
@@ -289,11 +327,6 @@ See also:
289
327
  }
290
328
  console.log(` ${dim('Branch:')} ${code(branchInfo.branchName)}`);
291
329
  }
292
- // Create agent and engine with context configuration
293
- const agent = new CopilotAgent({
294
- model: options.model ?? 'gpt-4',
295
- maxTokensPerRequest: 4096,
296
- });
297
330
  // Build context config, only including contextGlobs if provided
298
331
  const contextConfig = {
299
332
  includeGitDiff: true,
@@ -303,104 +336,206 @@ See also:
303
336
  if (options.context) {
304
337
  contextConfig.contextGlobs = options.context;
305
338
  }
306
- const engine = new LoopEngine(agent, {
307
- maxIterations,
308
- maxTokens,
309
- maxDurationMinutes,
310
- allowUnlimited: options.unlimited === true,
311
- contextConfig,
312
- });
313
339
  // Create progress tracker
314
340
  const progressTracker = new ProgressTracker(undefined, maxIterations);
315
341
  // Create checkpoint manager for auto-commits
316
342
  const checkpointManager = new CheckpointManager({
317
- autoCommit: options.noCommit !== true,
343
+ autoCommit: config.autoCommit,
318
344
  });
319
345
  // Create file safeguard manager
320
346
  const fileSafeguard = new FileSafeguardManager({
321
347
  allowDeleteExisting: options.allowDelete === true,
322
348
  });
323
349
  await fileSafeguard.initialize();
324
- // Setup signal handlers for graceful shutdown
325
- setupSignalHandlers(engine);
326
- // Setup event listeners
327
- const events = engine.getEvents();
328
350
  const startTime = new Date();
329
- events.on('iterationStart', (iteration, state) => {
330
- debug(`Iteration ${iteration}/${maxIterations} - Tokens: ${state.tokensUsed.toLocaleString()}`);
331
- });
332
- events.on('iterationEnd', (record, state) => {
333
- const status = record.success ? '✓' : '✗';
334
- info(`Iteration ${record.iteration}: ${status} (${record.tokensUsed.toLocaleString()} tokens)`);
335
- if (record.summary) {
336
- console.log(` ${dim(record.summary)}`);
337
- }
338
- // Create checkpoint commit after successful iterations
339
- if (record.success && checkpointManager.isAutoCommitEnabled()) {
340
- checkpointManager
341
- .createCheckpoint(record.iteration, record.summary ?? 'iteration complete', record.tokensUsed)
342
- .then((checkpoint) => {
343
- if (checkpoint) {
344
- debug(`Checkpoint created: ${checkpoint.commitHash.substring(0, 7)}`);
345
- // Update progress with commit hash
346
- state.lastCheckpoint = checkpoint.commitHash;
351
+ let exitCode = 0;
352
+ let totalTasksProcessed = 0;
353
+ let totalTasksCompleted = 0;
354
+ let totalTasksFailed = 0;
355
+ const maxRetriesPerTask = config.maxRetriesPerTask ?? 2;
356
+ const autoPush = config.autoPush ?? false;
357
+ // ========== MULTI-TASK ITERATION LOOP ==========
358
+ // This is the core fix: process ALL tasks in the plan, not just the first one
359
+ let currentTask = task;
360
+ while (currentTask) {
361
+ // Capture task in a const for this iteration (helps TypeScript narrowing)
362
+ const activeTask = currentTask;
363
+ totalTasksProcessed++;
364
+ let taskAttempt = 0;
365
+ let taskCompleted = false;
366
+ let taskFailed = false;
367
+ info(`\n📋 Task ${totalTasksProcessed}: ${activeTask.title}`);
368
+ // Retry loop for the current task (with fresh agent per attempt)
369
+ while (!taskCompleted && !taskFailed && taskAttempt < maxRetriesPerTask) {
370
+ taskAttempt++;
371
+ if (taskAttempt > 1) {
372
+ info(`\n🔄 Retry ${taskAttempt}/${maxRetriesPerTask} for task: ${activeTask.title}`);
373
+ }
374
+ // Create FRESH agent instance for each attempt (Ralph pattern core principle)
375
+ const agent = new CopilotAgent({
376
+ model,
377
+ maxTokensPerRequest: 4096,
378
+ });
379
+ const engine = new LoopEngine(agent, {
380
+ maxIterations,
381
+ maxTokens,
382
+ maxDurationMinutes,
383
+ allowUnlimited: options.unlimited === true,
384
+ contextConfig,
385
+ });
386
+ // Setup signal handlers for graceful shutdown
387
+ const cleanupSignalHandlers = setupSignalHandlers(engine);
388
+ // Setup event listeners
389
+ const events = engine.getEvents();
390
+ events.on('iterationStart', (iteration, state) => {
391
+ debug(`Iteration ${iteration}/${maxIterations} - Tokens: ${state.tokensUsed.toLocaleString()}`);
392
+ });
393
+ events.on('iterationEnd', (record, state) => {
394
+ const status = record.success ? '✓' : '✗';
395
+ info(`Iteration ${record.iteration}: ${status} (${record.tokensUsed.toLocaleString()} tokens)`);
396
+ if (record.summary) {
397
+ console.log(` ${dim(record.summary)}`);
398
+ }
399
+ // Create checkpoint commit after successful iterations
400
+ if (record.success && checkpointManager.isAutoCommitEnabled()) {
401
+ checkpointManager
402
+ .createCheckpoint(record.iteration, record.summary ?? 'iteration complete', record.tokensUsed)
403
+ .then((checkpoint) => {
404
+ if (checkpoint) {
405
+ debug(`Checkpoint created: ${checkpoint.commitHash.substring(0, 7)}`);
406
+ // Update progress with commit hash
407
+ state.lastCheckpoint = checkpoint.commitHash;
408
+ }
409
+ })
410
+ .catch(() => {
411
+ // Ignore checkpoint errors
412
+ });
347
413
  }
348
- })
349
- .catch(() => {
350
- // Ignore checkpoint errors
414
+ // Save progress after each iteration
415
+ progressTracker.save(state).catch(() => {
416
+ // Ignore save errors
417
+ });
418
+ });
419
+ events.on('error', (err) => {
420
+ error(`Loop error: ${err.message}`);
421
+ });
422
+ events.on('warning', (type, message) => {
423
+ warn(`Warning: ${message}`);
351
424
  });
425
+ // Run the loop for this task
426
+ const loopSpinner = spinner('Running agentic loop...');
427
+ loopSpinner.start();
428
+ try {
429
+ const finalState = await engine.start(activeTask);
430
+ loopSpinner.stop();
431
+ console.log('');
432
+ // Print iteration summary
433
+ console.log(` ${dim('Status:')} ${finalState.status}`);
434
+ console.log(` ${dim('Iterations:')} ${finalState.iteration}/${maxIterations}`);
435
+ console.log(` ${dim('Tokens used:')} ${finalState.tokensUsed.toLocaleString()}`);
436
+ const successfulIterations = finalState.iterations.filter((i) => i.success).length;
437
+ console.log(` ${dim('Successful iterations:')} ${successfulIterations}`);
438
+ console.log('');
439
+ if (finalState.status === 'completed') {
440
+ taskCompleted = true;
441
+ // Mark task as complete in plan file if using a plan
442
+ if (planManager) {
443
+ await planManager.completeTask(activeTask.id);
444
+ info(`Task marked as complete in plan file`);
445
+ }
446
+ // Document result in progress file
447
+ await progressTracker.appendTaskResult(activeTask, 'completed', taskAttempt, `Completed in ${finalState.iteration} iterations`);
448
+ // Create a task-level checkpoint commit
449
+ await checkpointManager.createTaskCheckpoint(activeTask.title, activeTask.id, `Task completed in ${finalState.iteration} iterations`);
450
+ // Push to remote if configured
451
+ if (autoPush && isGitRepo) {
452
+ info('Pushing changes to remote...');
453
+ const pushed = await gitManager.pushToRemote();
454
+ if (pushed) {
455
+ success('Changes pushed to remote');
456
+ }
457
+ }
458
+ success(`✓ Task completed: ${activeTask.title}`);
459
+ totalTasksCompleted++;
460
+ }
461
+ else if (finalState.status === 'stopped') {
462
+ // User requested stop - exit the entire run
463
+ warn('Loop was stopped by user');
464
+ // Document the stop
465
+ await progressTracker.appendTaskResult(activeTask, 'stuck', taskAttempt, 'Stopped by user');
466
+ // Exit the multi-task loop
467
+ currentTask = null;
468
+ continue;
469
+ }
470
+ else if (finalState.status === 'failed') {
471
+ warn(`✗ Task attempt ${taskAttempt} failed: ${activeTask.title}`);
472
+ // Document failure for learning
473
+ await progressTracker.appendTaskResult(activeTask, 'failed', taskAttempt, 'Loop execution failed');
474
+ // Create failure checkpoint
475
+ await checkpointManager.createFailureCheckpoint(activeTask.title, activeTask.id, taskAttempt, 'Loop execution failed');
476
+ }
477
+ }
478
+ catch (err) {
479
+ loopSpinner.fail('Loop failed');
480
+ const errMsg = err instanceof Error ? err.message : String(err);
481
+ error(errMsg);
482
+ // Document failure
483
+ await progressTracker.appendTaskResult(activeTask, 'failed', taskAttempt, undefined, errMsg);
484
+ // Create failure checkpoint
485
+ await checkpointManager.createFailureCheckpoint(activeTask.title, activeTask.id, taskAttempt, errMsg);
486
+ }
487
+ finally {
488
+ cleanupSignalHandlers();
489
+ await agent.destroy();
490
+ }
352
491
  }
353
- // Save progress after each iteration
354
- progressTracker.save(state).catch(() => {
355
- // Ignore save errors
356
- });
357
- });
358
- events.on('error', (err) => {
359
- error(`Loop error: ${err.message}`);
360
- });
361
- events.on('warning', (type, message) => {
362
- warn(`Warning: ${message}`);
363
- });
364
- // Run the loop
365
- const loopSpinner = spinner('Running agentic loop...');
366
- loopSpinner.start();
367
- try {
368
- const finalState = await engine.start(task);
369
- loopSpinner.stop();
370
- console.log('');
371
- // Print summary
372
- console.log(heading('📊 Summary'));
373
- console.log('');
374
- console.log(` ${dim('Status:')} ${finalState.status}`);
375
- console.log(` ${dim('Iterations:')} ${finalState.iteration}/${maxIterations}`);
376
- console.log(` ${dim('Tokens used:')} ${finalState.tokensUsed.toLocaleString()}`);
377
- console.log(` ${dim('Elapsed time:')} ${formatElapsedTime(startTime)}`);
378
- const successfulIterations = finalState.iterations.filter((i) => i.success).length;
379
- console.log(` ${dim('Successful iterations:')} ${successfulIterations}`);
380
- console.log('');
381
- if (finalState.status === 'completed') {
382
- // Mark task as complete in plan file if using a plan
492
+ // Check if all retries exhausted without completion
493
+ if (!taskCompleted && currentTask) {
494
+ taskFailed = true;
495
+ totalTasksFailed++;
383
496
  if (planManager) {
384
- await planManager.completeTask(task.id);
385
- info(`Task marked as complete in plan file`);
497
+ await planManager.failTask(activeTask.id);
386
498
  }
387
- success('Loop completed successfully');
499
+ error(`❌ Task failed after ${maxRetriesPerTask} attempts: ${activeTask.title}`);
500
+ exitCode = 1;
388
501
  }
389
- else if (finalState.status === 'stopped') {
390
- warn('Loop was stopped by user');
502
+ // Optional pause for human review (strict Ralph mode)
503
+ if (options.pauseBetweenTasks && planManager && !taskFailed) {
504
+ console.log('');
505
+ info('Press any key to continue to next task, or Ctrl+C to stop...');
506
+ await waitForKeypress();
391
507
  }
392
- else if (finalState.status === 'failed') {
393
- if (planManager) {
394
- await planManager.failTask(task.id);
395
- }
396
- error('Loop failed');
397
- process.exit(1);
508
+ // Get next task from the plan (if using a plan)
509
+ if (planManager) {
510
+ // Reload plan file to pick up any external changes
511
+ await planManager.reload?.();
512
+ currentTask = await planManager.getNextTask();
513
+ }
514
+ else {
515
+ // Single task mode (--task flag) - exit after one task
516
+ currentTask = null;
398
517
  }
399
518
  }
400
- catch (err) {
401
- loopSpinner.fail('Loop failed');
402
- error(err instanceof Error ? err.message : String(err));
403
- process.exit(1);
519
+ // ========== FINAL SUMMARY ==========
520
+ console.log('');
521
+ console.log(heading('📊 Final Summary'));
522
+ console.log('');
523
+ console.log(` ${dim('Total tasks processed:')} ${totalTasksProcessed}`);
524
+ console.log(` ${dim('Tasks completed:')} ${totalTasksCompleted}`);
525
+ console.log(` ${dim('Tasks failed:')} ${totalTasksFailed}`);
526
+ console.log(` ${dim('Elapsed time:')} ${formatElapsedTime(startTime)}`);
527
+ console.log('');
528
+ if (totalTasksFailed === 0 && totalTasksCompleted > 0) {
529
+ success(`🎉 All ${totalTasksCompleted} tasks completed successfully!`);
530
+ }
531
+ else if (totalTasksCompleted > 0) {
532
+ warn(`Completed ${totalTasksCompleted} tasks, ${totalTasksFailed} failed`);
533
+ }
534
+ else if (totalTasksProcessed === 0) {
535
+ success('No pending tasks found - all tasks are complete!');
536
+ }
537
+ if (exitCode !== 0) {
538
+ process.exit(exitCode);
404
539
  }
405
540
  });
406
541
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}