ghcralph 0.1.1 β†’ 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 (48) hide show
  1. package/README.md +27 -16
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +38 -8
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/run.d.ts +1 -0
  6. package/dist/commands/run.d.ts.map +1 -1
  7. package/dist/commands/run.js +177 -86
  8. package/dist/commands/run.js.map +1 -1
  9. package/dist/core/action-executor.d.ts +12 -0
  10. package/dist/core/action-executor.d.ts.map +1 -1
  11. package/dist/core/action-executor.js +36 -2
  12. package/dist/core/action-executor.js.map +1 -1
  13. package/dist/core/checkpoint-manager.d.ts +8 -0
  14. package/dist/core/checkpoint-manager.d.ts.map +1 -1
  15. package/dist/core/checkpoint-manager.js +101 -0
  16. package/dist/core/checkpoint-manager.js.map +1 -1
  17. package/dist/core/config-schema.d.ts +5 -1
  18. package/dist/core/config-schema.d.ts.map +1 -1
  19. package/dist/core/config-schema.js +13 -1
  20. package/dist/core/config-schema.js.map +1 -1
  21. package/dist/core/context-builder.d.ts.map +1 -1
  22. package/dist/core/context-builder.js +28 -1
  23. package/dist/core/context-builder.js.map +1 -1
  24. package/dist/core/git-branch-manager.d.ts +8 -0
  25. package/dist/core/git-branch-manager.d.ts.map +1 -1
  26. package/dist/core/git-branch-manager.js +28 -0
  27. package/dist/core/git-branch-manager.js.map +1 -1
  28. package/dist/core/plan-manager.d.ts +4 -0
  29. package/dist/core/plan-manager.d.ts.map +1 -1
  30. package/dist/core/progress-tracker.d.ts +13 -0
  31. package/dist/core/progress-tracker.d.ts.map +1 -1
  32. package/dist/core/progress-tracker.js +69 -0
  33. package/dist/core/progress-tracker.js.map +1 -1
  34. package/dist/core/response-parser.d.ts +19 -2
  35. package/dist/core/response-parser.d.ts.map +1 -1
  36. package/dist/core/response-parser.js +47 -1
  37. package/dist/core/response-parser.js.map +1 -1
  38. package/dist/integrations/copilot-agent.d.ts +11 -0
  39. package/dist/integrations/copilot-agent.d.ts.map +1 -1
  40. package/dist/integrations/copilot-agent.js +55 -0
  41. package/dist/integrations/copilot-agent.js.map +1 -1
  42. package/dist/integrations/index.d.ts +1 -1
  43. package/dist/integrations/index.d.ts.map +1 -1
  44. package/dist/utils/shell.d.ts +5 -0
  45. package/dist/utils/shell.d.ts.map +1 -1
  46. package/dist/utils/shell.js +22 -0
  47. package/dist/utils/shell.js.map +1 -1
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -11,6 +11,7 @@ Run **autonomous, checkpointed coding loops** with GitHub Copilotβ€”designed to
11
11
 
12
12
  - 🌿 **Branch isolation**: works on a `ghcralph/*` branch (never modifies `main`/`master` directly)
13
13
  - πŸ’Ύ **Automatic checkpoints**: commits after each iteration for easy rollback
14
+ - πŸ”„ **Multi-task processing**: processes ALL tasks in plan files automatically
14
15
  - πŸ›‘οΈ **Guardrails**: iteration limits, token budgets, timeouts, circuit breaker on repeated failures
15
16
  - πŸ“‹ **Flexible plan sources**: GitHub Issues or local Markdown task lists
16
17
  - πŸ’» **Cross-platform**: Windows, macOS, Linux
@@ -76,14 +77,15 @@ This approach prioritizes **safety** (automatic checkpoints, git isolation) and
76
77
 
77
78
  ## Key Features
78
79
 
79
- - πŸ”„ **Autonomous Loop**: Repeatedly invokes AI agent until task completion
80
+ - πŸ”„ **Multi-Task Loop**: Processes ALL tasks in a plan file automatically with fresh AI agent per task
80
81
  - πŸ“‹ **Flexible Plan Sources**: GitHub Issues or local Markdown task lists
81
82
  - πŸ›‘οΈ **Safety First**: Git branch isolation, file deletion safeguards
82
- - πŸ’Ύ **Automatic Checkpoints**: Git commits after each iteration for easy rollback
83
+ - πŸ’Ύ **Automatic Checkpoints**: Git commits after each task completion for easy rollback
83
84
  - πŸ“Š **Progress Tracking**: Real-time status, token usage, and session logs
84
- - ⚑ **Guardrails**: Iteration limits, token budgets, timeout controls
85
+ - ⚑ **Guardrails**: Iteration limits, token budgets, timeout controls, task-level retries
85
86
  - πŸ”§ **Highly Configurable**: Customize behavior via CLI, env vars, or config files
86
87
  - πŸ’» **Cross-Platform**: Works on Windows, macOS, and Linux
88
+ - πŸ€– **Dynamic Model Discovery**: Fetches available models from Copilot SDK
87
89
 
88
90
  ## Commands
89
91
 
@@ -157,6 +159,9 @@ ghcralph run --github
157
159
  # Control iterations, tokens, and model via configuration
158
160
  # (set maxIterations / maxTokens / defaultModel in .ghcralph/config.json)
159
161
 
162
+ # Pause between tasks for human review (strict Ralph mode)
163
+ ghcralph run --file PLAN.md --pause-between-tasks
164
+
160
165
  # Specify context files
161
166
  ghcralph run --task "Fix tests" --context "src/**/*.test.ts"
162
167
 
@@ -184,19 +189,21 @@ GitHub Copilot Ralph uses a hierarchical configuration system:
184
189
 
185
190
  ### Configuration Options
186
191
 
187
- | Option | Default | Description |
188
- | --------------- | ----------- | ----------------------------------------------------- |
189
- | `planSource` | `local` | Plan source: `github` or `local` |
190
- | `maxIterations` | `10` | Maximum loop iterations |
191
- | `maxTokens` | `100000` | Token budget |
192
- | `defaultModel` | `gpt-4.1` | Copilot model to use |
193
- | `autoCommit` | `true` | Auto-commit after iterations |
194
- | `branchPrefix` | `ghcralph/` | Prefix for GitHub Copilot Ralph branches |
195
- | `githubRepo` | - | GitHub repository (owner/repo) for GitHub plan source |
196
- | `githubLabel` | - | Default GitHub issue label filter for GitHub plan |
197
- | `githubMilestone` | - | Default GitHub issue milestone filter for GitHub plan |
198
- | `githubAssignee` | - | Default GitHub issue assignee filter for GitHub plan |
199
- | `localPlanFile` | - | Path to local plan file |
192
+ | Option | Default | Description |
193
+ | ------------------ | ----------- | ----------------------------------------------------- |
194
+ | `planSource` | `local` | Plan source: `github` or `local` |
195
+ | `maxIterations` | `10` | Maximum loop iterations per task |
196
+ | `maxTokens` | `100000` | Token budget per task |
197
+ | `defaultModel` | `gpt-4.1` | Copilot model to use (dynamically fetched from SDK) |
198
+ | `autoCommit` | `true` | Auto-commit after iterations |
199
+ | `branchPrefix` | `ghcralph/` | Prefix for GitHub Copilot Ralph branches |
200
+ | `maxRetriesPerTask`| `2` | Retries per task before marking as failed |
201
+ | `autoPush` | `false` | Auto-push to remote after each task completion |
202
+ | `githubRepo` | - | GitHub repository (owner/repo) for GitHub plan source |
203
+ | `githubLabel` | - | Default GitHub issue label filter for GitHub plan |
204
+ | `githubMilestone` | - | Default GitHub issue milestone filter for GitHub plan |
205
+ | `githubAssignee` | - | Default GitHub issue assignee filter for GitHub plan |
206
+ | `localPlanFile` | - | Path to local plan file |
200
207
 
201
208
  ### Environment Variables
202
209
 
@@ -208,6 +215,8 @@ export GHCRALPH_MAX_TOKENS=50000
208
215
  export GHCRALPH_DEFAULT_MODEL=gpt-4.1
209
216
  export GHCRALPH_AUTO_COMMIT=true
210
217
  export GHCRALPH_BRANCH_PREFIX=ghcralph/
218
+ export GHCRALPH_MAX_RETRIES_PER_TASK=3
219
+ export GHCRALPH_AUTO_PUSH=true
211
220
  export GHCRALPH_PLAN_SOURCE=local
212
221
  export GHCRALPH_GITHUB_REPO=owner/repo
213
222
  export GHCRALPH_GITHUB_LABEL=ralph-ready
@@ -225,6 +234,8 @@ export GHCRALPH_GITHUB_ASSIGNEE=octocat
225
234
  "defaultModel": "gpt-4.1",
226
235
  "autoCommit": true,
227
236
  "branchPrefix": "ghcralph/",
237
+ "maxRetriesPerTask": 2,
238
+ "autoPush": false,
228
239
  "githubRepo": "owner/repo",
229
240
  "githubLabel": "ralph-ready",
230
241
  "githubMilestone": "v1.0",
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAyH3D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4Q1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAiK3D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsQ1D"}
@@ -7,6 +7,14 @@ import { execSync } from 'node:child_process';
7
7
  import { createInterface } from 'node:readline/promises';
8
8
  import { info, success, error, warn, debug, heading, code, dim } from '../utils/index.js';
9
9
  import { ConfigManager } from '../core/config-manager.js';
10
+ import { CopilotAgent } from '../integrations/copilot-agent.js';
11
+ // Fallback models if SDK fetch fails
12
+ const FALLBACK_MODELS = [
13
+ 'gpt-4.1',
14
+ 'claude-sonnet-4.5',
15
+ 'gpt-5',
16
+ 'gpt-5.2-codex',
17
+ ];
10
18
  /**
11
19
  * Check if we're in a git repository
12
20
  */
@@ -108,6 +116,34 @@ async function promptSelect(rl, message, options, defaultValue) {
108
116
  console.log(dim('Please enter a valid option number.'));
109
117
  }
110
118
  }
119
+ /**
120
+ * Fetch available models from the Copilot SDK
121
+ * Falls back to hardcoded list if fetch fails
122
+ */
123
+ async function fetchModelOptions(_currentDefault) {
124
+ debug('Fetching available models from Copilot SDK...');
125
+ try {
126
+ const models = await CopilotAgent.fetchAvailableModels();
127
+ if (models.length > 0) {
128
+ debug(`Found ${models.length} models from SDK`);
129
+ const options = models.map((m) => ({
130
+ label: m.name || m.id,
131
+ value: m.id,
132
+ }));
133
+ // Add custom option at the end
134
+ options.push({ label: 'Custom (enter manually)', value: '__custom__' });
135
+ return options;
136
+ }
137
+ }
138
+ catch (err) {
139
+ debug(`Failed to fetch models: ${err instanceof Error ? err.message : String(err)}`);
140
+ }
141
+ // Fallback to hardcoded list
142
+ debug('Using fallback model list');
143
+ const fallbackOptions = FALLBACK_MODELS.map(m => ({ label: m, value: m }));
144
+ fallbackOptions.push({ label: 'Custom (enter manually)', value: '__custom__' });
145
+ return fallbackOptions;
146
+ }
111
147
  export function registerInitCommand(program) {
112
148
  program
113
149
  .command('init')
@@ -207,14 +243,8 @@ See also:
207
243
  configManager.set('maxIterations', maxIterations);
208
244
  const maxTokens = await promptNumber(rl, 'Max tokens', current.maxTokens);
209
245
  configManager.set('maxTokens', maxTokens);
210
- const modelOptions = [
211
- { label: 'gpt-4.1', value: 'gpt-4.1' },
212
- { label: 'gpt-4', value: 'gpt-4' },
213
- { label: 'gpt-5', value: 'gpt-5' },
214
- { label: 'gpt-5.2-codex', value: 'gpt-5.2-codex' },
215
- { label: 'claude-sonnet-4.5', value: 'claude-sonnet-4.5' },
216
- { label: 'Custom (enter manually)', value: '__custom__' },
217
- ];
246
+ // Fetch available models dynamically from SDK
247
+ const modelOptions = await fetchModelOptions(current.defaultModel);
218
248
  const selectedModel = await promptSelect(rl, 'Model', modelOptions, (modelOptions.some(o => o.value === current.defaultModel)
219
249
  ? current.defaultModel
220
250
  : '__custom__'));
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export interface RunOptions {
15
15
  timeout?: string;
16
16
  allowDelete?: boolean;
17
17
  dryRun?: boolean;
18
+ pauseBetweenTasks?: boolean;
18
19
  }
19
20
  export declare function registerRunCommand(program: Command): void;
20
21
  //# sourceMappingURL=run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBzC,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA+FD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkZzD"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA+FD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsiBzD"}
@@ -7,6 +7,7 @@ import fs from 'node:fs/promises';
7
7
  import path from 'node:path';
8
8
  import { execSync } from 'node:child_process';
9
9
  import { info, success, error, warn, debug, spinner, heading, code, dim, parseNonNegativeInt } from '../utils/index.js';
10
+ import { waitForKeypress } from '../utils/shell.js';
10
11
  import { CopilotAgent } from '../integrations/index.js';
11
12
  import { LoopEngine, LocalMarkdownPlan, GitHubPlan, ProgressTracker, GitBranchManager, CheckpointManager, FileSafeguardManager, ConfigManager, } from '../core/index.js';
12
13
  /**
@@ -107,6 +108,7 @@ export function registerRunCommand(program) {
107
108
  .option('--timeout <minutes>', 'Maximum duration in minutes')
108
109
  .option('--allow-delete', 'Allow deletion of pre-existing files')
109
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)')
110
112
  .addHelpText('after', `
111
113
  Config-backed settings (set via .ghcralph/config.json or GHCRALPH_* env vars):
112
114
  - maxIterations, maxTokens, defaultModel, autoCommit, branchPrefix
@@ -325,11 +327,6 @@ See also:
325
327
  }
326
328
  console.log(` ${dim('Branch:')} ${code(branchInfo.branchName)}`);
327
329
  }
328
- // Create agent and engine with context configuration
329
- const agent = new CopilotAgent({
330
- model,
331
- maxTokensPerRequest: 4096,
332
- });
333
330
  // Build context config, only including contextGlobs if provided
334
331
  const contextConfig = {
335
332
  includeGitDiff: true,
@@ -339,13 +336,6 @@ See also:
339
336
  if (options.context) {
340
337
  contextConfig.contextGlobs = options.context;
341
338
  }
342
- const engine = new LoopEngine(agent, {
343
- maxIterations,
344
- maxTokens,
345
- maxDurationMinutes,
346
- allowUnlimited: options.unlimited === true,
347
- contextConfig,
348
- });
349
339
  // Create progress tracker
350
340
  const progressTracker = new ProgressTracker(undefined, maxIterations);
351
341
  // Create checkpoint manager for auto-commits
@@ -357,91 +347,192 @@ See also:
357
347
  allowDeleteExisting: options.allowDelete === true,
358
348
  });
359
349
  await fileSafeguard.initialize();
360
- // Setup signal handlers for graceful shutdown
361
- const cleanupSignalHandlers = setupSignalHandlers(engine);
362
- // Setup event listeners
363
- const events = engine.getEvents();
364
350
  const startTime = new Date();
365
- events.on('iterationStart', (iteration, state) => {
366
- debug(`Iteration ${iteration}/${maxIterations} - Tokens: ${state.tokensUsed.toLocaleString()}`);
367
- });
368
- events.on('iterationEnd', (record, state) => {
369
- const status = record.success ? 'βœ“' : 'βœ—';
370
- info(`Iteration ${record.iteration}: ${status} (${record.tokensUsed.toLocaleString()} tokens)`);
371
- if (record.summary) {
372
- console.log(` ${dim(record.summary)}`);
373
- }
374
- // Create checkpoint commit after successful iterations
375
- if (record.success && checkpointManager.isAutoCommitEnabled()) {
376
- checkpointManager
377
- .createCheckpoint(record.iteration, record.summary ?? 'iteration complete', record.tokensUsed)
378
- .then((checkpoint) => {
379
- if (checkpoint) {
380
- debug(`Checkpoint created: ${checkpoint.commitHash.substring(0, 7)}`);
381
- // Update progress with commit hash
382
- 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
+ });
383
413
  }
384
- })
385
- .catch(() => {
386
- // Ignore checkpoint errors
414
+ // Save progress after each iteration
415
+ progressTracker.save(state).catch(() => {
416
+ // Ignore save errors
417
+ });
387
418
  });
388
- }
389
- // Save progress after each iteration
390
- progressTracker.save(state).catch(() => {
391
- // Ignore save errors
392
- });
393
- });
394
- events.on('error', (err) => {
395
- error(`Loop error: ${err.message}`);
396
- });
397
- events.on('warning', (type, message) => {
398
- warn(`Warning: ${message}`);
399
- });
400
- // Run the loop
401
- const loopSpinner = spinner('Running agentic loop...');
402
- loopSpinner.start();
403
- let exitCode = 0;
404
- try {
405
- const finalState = await engine.start(task);
406
- loopSpinner.stop();
407
- console.log('');
408
- // Print summary
409
- console.log(heading('πŸ“Š Summary'));
410
- console.log('');
411
- console.log(` ${dim('Status:')} ${finalState.status}`);
412
- console.log(` ${dim('Iterations:')} ${finalState.iteration}/${maxIterations}`);
413
- console.log(` ${dim('Tokens used:')} ${finalState.tokensUsed.toLocaleString()}`);
414
- console.log(` ${dim('Elapsed time:')} ${formatElapsedTime(startTime)}`);
415
- const successfulIterations = finalState.iterations.filter((i) => i.success).length;
416
- console.log(` ${dim('Successful iterations:')} ${successfulIterations}`);
417
- console.log('');
418
- if (finalState.status === 'completed') {
419
- // Mark task as complete in plan file if using a plan
420
- if (planManager) {
421
- await planManager.completeTask(task.id);
422
- info(`Task marked as complete in plan file`);
419
+ events.on('error', (err) => {
420
+ error(`Loop error: ${err.message}`);
421
+ });
422
+ events.on('warning', (type, message) => {
423
+ warn(`Warning: ${message}`);
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();
423
490
  }
424
- success('Loop completed successfully');
425
- }
426
- else if (finalState.status === 'stopped') {
427
- warn('Loop was stopped by user');
428
491
  }
429
- else if (finalState.status === 'failed') {
492
+ // Check if all retries exhausted without completion
493
+ if (!taskCompleted && currentTask) {
494
+ taskFailed = true;
495
+ totalTasksFailed++;
430
496
  if (planManager) {
431
- await planManager.failTask(task.id);
497
+ await planManager.failTask(activeTask.id);
432
498
  }
433
- error('Loop failed');
499
+ error(`❌ Task failed after ${maxRetriesPerTask} attempts: ${activeTask.title}`);
434
500
  exitCode = 1;
435
501
  }
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();
507
+ }
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;
517
+ }
436
518
  }
437
- catch (err) {
438
- loopSpinner.fail('Loop failed');
439
- error(err instanceof Error ? err.message : String(err));
440
- exitCode = 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`);
441
533
  }
442
- finally {
443
- cleanupSignalHandlers();
444
- await agent.destroy();
534
+ else if (totalTasksProcessed === 0) {
535
+ success('No pending tasks found - all tasks are complete!');
445
536
  }
446
537
  if (exitCode !== 0) {
447
538
  process.exit(exitCode);