ghcralph 0.1.1 β 0.1.3
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 +35 -17
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +38 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +1 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +214 -87
- package/dist/commands/run.js.map +1 -1
- package/dist/core/action-executor.d.ts +25 -0
- package/dist/core/action-executor.d.ts.map +1 -1
- package/dist/core/action-executor.js +68 -2
- package/dist/core/action-executor.js.map +1 -1
- package/dist/core/checkpoint-manager.d.ts +55 -8
- package/dist/core/checkpoint-manager.d.ts.map +1 -1
- package/dist/core/checkpoint-manager.js +282 -94
- package/dist/core/checkpoint-manager.js.map +1 -1
- package/dist/core/config-schema.d.ts +13 -1
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +27 -1
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/context-builder.d.ts.map +1 -1
- package/dist/core/context-builder.js +39 -1
- package/dist/core/context-builder.js.map +1 -1
- package/dist/core/git-branch-manager.d.ts +8 -0
- package/dist/core/git-branch-manager.d.ts.map +1 -1
- package/dist/core/git-branch-manager.js +28 -0
- package/dist/core/git-branch-manager.js.map +1 -1
- package/dist/core/index.d.ts +4 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/loop-state.d.ts +8 -0
- package/dist/core/loop-state.d.ts.map +1 -1
- package/dist/core/loop-state.js.map +1 -1
- package/dist/core/plan-manager.d.ts +4 -0
- package/dist/core/plan-manager.d.ts.map +1 -1
- package/dist/core/progress-tracker.d.ts +86 -3
- package/dist/core/progress-tracker.d.ts.map +1 -1
- package/dist/core/progress-tracker.js +257 -2
- package/dist/core/progress-tracker.js.map +1 -1
- package/dist/core/prompt-examples.d.ts +7 -3
- package/dist/core/prompt-examples.d.ts.map +1 -1
- package/dist/core/prompt-examples.js +30 -5
- package/dist/core/prompt-examples.js.map +1 -1
- package/dist/core/response-parser.d.ts +19 -2
- package/dist/core/response-parser.d.ts.map +1 -1
- package/dist/core/response-parser.js +47 -1
- package/dist/core/response-parser.js.map +1 -1
- package/dist/integrations/copilot-agent.d.ts +11 -0
- package/dist/integrations/copilot-agent.d.ts.map +1 -1
- package/dist/integrations/copilot-agent.js +55 -0
- package/dist/integrations/copilot-agent.js.map +1 -1
- package/dist/integrations/index.d.ts +1 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/utils/shell.d.ts +5 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +22 -0
- package/dist/utils/shell.js.map +1 -1
- package/package.json +2 -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
|
-
- π **
|
|
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
|
|
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,23 @@ GitHub Copilot Ralph uses a hierarchical configuration system:
|
|
|
184
189
|
|
|
185
190
|
### Configuration Options
|
|
186
191
|
|
|
187
|
-
| Option
|
|
188
|
-
|
|
|
189
|
-
| `planSource`
|
|
190
|
-
| `maxIterations`
|
|
191
|
-
| `maxTokens`
|
|
192
|
-
| `defaultModel`
|
|
193
|
-
| `autoCommit`
|
|
194
|
-
| `branchPrefix`
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
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 task completion |
|
|
202
|
+
| `pushStrategy` | `per-task` | When to push: `per-task`, `per-run`, or `manual` |
|
|
203
|
+
| `progressVerbosity` | `standard` | Progress file detail level: `minimal`, `standard`, or `full` |
|
|
204
|
+
| `githubRepo` | - | GitHub repository (owner/repo) for GitHub plan source |
|
|
205
|
+
| `githubLabel` | - | Default GitHub issue label filter for GitHub plan |
|
|
206
|
+
| `githubMilestone` | - | Default GitHub issue milestone filter for GitHub plan |
|
|
207
|
+
| `githubAssignee` | - | Default GitHub issue assignee filter for GitHub plan |
|
|
208
|
+
| `localPlanFile` | - | Path to local plan file |
|
|
200
209
|
|
|
201
210
|
### Environment Variables
|
|
202
211
|
|
|
@@ -208,6 +217,10 @@ export GHCRALPH_MAX_TOKENS=50000
|
|
|
208
217
|
export GHCRALPH_DEFAULT_MODEL=gpt-4.1
|
|
209
218
|
export GHCRALPH_AUTO_COMMIT=true
|
|
210
219
|
export GHCRALPH_BRANCH_PREFIX=ghcralph/
|
|
220
|
+
export GHCRALPH_MAX_RETRIES_PER_TASK=3
|
|
221
|
+
export GHCRALPH_AUTO_PUSH=true
|
|
222
|
+
export GHCRALPH_PUSH_STRATEGY=per-run
|
|
223
|
+
export GHCRALPH_PROGRESS_VERBOSITY=full
|
|
211
224
|
export GHCRALPH_PLAN_SOURCE=local
|
|
212
225
|
export GHCRALPH_GITHUB_REPO=owner/repo
|
|
213
226
|
export GHCRALPH_GITHUB_LABEL=ralph-ready
|
|
@@ -225,6 +238,10 @@ export GHCRALPH_GITHUB_ASSIGNEE=octocat
|
|
|
225
238
|
"defaultModel": "gpt-4.1",
|
|
226
239
|
"autoCommit": true,
|
|
227
240
|
"branchPrefix": "ghcralph/",
|
|
241
|
+
"maxRetriesPerTask": 2,
|
|
242
|
+
"autoPush": false,
|
|
243
|
+
"pushStrategy": "per-task",
|
|
244
|
+
"progressVerbosity": "standard",
|
|
228
245
|
"githubRepo": "owner/repo",
|
|
229
246
|
"githubLabel": "ralph-ready",
|
|
230
247
|
"githubMilestone": "v1.0",
|
|
@@ -241,7 +258,8 @@ export GHCRALPH_GITHUB_ASSIGNEE=octocat
|
|
|
241
258
|
|
|
242
259
|
### πΎ Automatic Checkpoints
|
|
243
260
|
- Commits after each successful iteration
|
|
244
|
-
- Message format: `ghcralph:
|
|
261
|
+
- Message format: `ghcralph: task X/Y iter N - summary` (with plan context)
|
|
262
|
+
- Task completion: `ghcralph: task X/Y complete - task title`
|
|
245
263
|
- Easy rollback with `ghcralph rollback`
|
|
246
264
|
|
|
247
265
|
### π‘οΈ File Deletion Safeguards
|
|
@@ -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;
|
|
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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -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
|
-
|
|
211
|
-
|
|
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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"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -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;
|
|
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;AAkBzC,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,CA4kBzD"}
|
package/dist/commands/run.js
CHANGED
|
@@ -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,15 +336,9 @@ See also:
|
|
|
339
336
|
if (options.context) {
|
|
340
337
|
contextConfig.contextGlobs = options.context;
|
|
341
338
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
maxDurationMinutes,
|
|
346
|
-
allowUnlimited: options.unlimited === true,
|
|
347
|
-
contextConfig,
|
|
348
|
-
});
|
|
349
|
-
// Create progress tracker
|
|
350
|
-
const progressTracker = new ProgressTracker(undefined, maxIterations);
|
|
339
|
+
// Create progress tracker with verbosity setting
|
|
340
|
+
const progressVerbosity = config.progressVerbosity ?? 'standard';
|
|
341
|
+
const progressTracker = new ProgressTracker(undefined, maxIterations, progressVerbosity);
|
|
351
342
|
// Create checkpoint manager for auto-commits
|
|
352
343
|
const checkpointManager = new CheckpointManager({
|
|
353
344
|
autoCommit: config.autoCommit,
|
|
@@ -357,91 +348,227 @@ See also:
|
|
|
357
348
|
allowDeleteExisting: options.allowDelete === true,
|
|
358
349
|
});
|
|
359
350
|
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
351
|
const startTime = new Date();
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
352
|
+
let exitCode = 0;
|
|
353
|
+
let totalTasksProcessed = 0;
|
|
354
|
+
let totalTasksCompleted = 0;
|
|
355
|
+
let totalTasksFailed = 0;
|
|
356
|
+
const maxRetriesPerTask = config.maxRetriesPerTask ?? 2;
|
|
357
|
+
const autoPush = config.autoPush ?? false;
|
|
358
|
+
const pushStrategy = config.pushStrategy ?? 'per-task';
|
|
359
|
+
// Compute total tasks count for commit message context (if available)
|
|
360
|
+
let totalTasksInPlan = 0;
|
|
361
|
+
if (planManager) {
|
|
362
|
+
try {
|
|
363
|
+
const allTasks = await planManager.getTasks();
|
|
364
|
+
totalTasksInPlan = allTasks.length;
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
// Fall back to unknown total if getTasks fails
|
|
368
|
+
totalTasksInPlan = 0;
|
|
373
369
|
}
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
370
|
+
}
|
|
371
|
+
// ========== MULTI-TASK ITERATION LOOP ==========
|
|
372
|
+
// This is the core fix: process ALL tasks in the plan, not just the first one
|
|
373
|
+
let currentTask = task;
|
|
374
|
+
while (currentTask) {
|
|
375
|
+
// Capture task in a const for this iteration (helps TypeScript narrowing)
|
|
376
|
+
const activeTask = currentTask;
|
|
377
|
+
totalTasksProcessed++;
|
|
378
|
+
let taskAttempt = 0;
|
|
379
|
+
let taskCompleted = false;
|
|
380
|
+
let taskFailed = false;
|
|
381
|
+
info(`\nπ Task ${totalTasksProcessed}: ${activeTask.title}`);
|
|
382
|
+
// Retry loop for the current task (with fresh agent per attempt)
|
|
383
|
+
while (!taskCompleted && !taskFailed && taskAttempt < maxRetriesPerTask) {
|
|
384
|
+
taskAttempt++;
|
|
385
|
+
if (taskAttempt > 1) {
|
|
386
|
+
info(`\nπ Retry ${taskAttempt}/${maxRetriesPerTask} for task: ${activeTask.title}`);
|
|
387
|
+
}
|
|
388
|
+
// Create FRESH agent instance for each attempt (Ralph pattern core principle)
|
|
389
|
+
const agent = new CopilotAgent({
|
|
390
|
+
model,
|
|
391
|
+
maxTokensPerRequest: 4096,
|
|
392
|
+
});
|
|
393
|
+
const engine = new LoopEngine(agent, {
|
|
394
|
+
maxIterations,
|
|
395
|
+
maxTokens,
|
|
396
|
+
maxDurationMinutes,
|
|
397
|
+
allowUnlimited: options.unlimited === true,
|
|
398
|
+
contextConfig,
|
|
399
|
+
});
|
|
400
|
+
// Setup signal handlers for graceful shutdown
|
|
401
|
+
const cleanupSignalHandlers = setupSignalHandlers(engine);
|
|
402
|
+
// Setup event listeners
|
|
403
|
+
const events = engine.getEvents();
|
|
404
|
+
events.on('iterationStart', (iteration, state) => {
|
|
405
|
+
debug(`Iteration ${iteration}/${maxIterations} - Tokens: ${state.tokensUsed.toLocaleString()}`);
|
|
406
|
+
});
|
|
407
|
+
events.on('iterationEnd', (record, state) => {
|
|
408
|
+
const status = record.success ? 'β' : 'β';
|
|
409
|
+
info(`Iteration ${record.iteration}: ${status} (${record.tokensUsed.toLocaleString()} tokens)`);
|
|
410
|
+
if (record.summary) {
|
|
411
|
+
console.log(` ${dim(record.summary)}`);
|
|
412
|
+
}
|
|
413
|
+
// Create checkpoint commit after successful iterations
|
|
414
|
+
if (record.success && checkpointManager.isAutoCommitEnabled()) {
|
|
415
|
+
// Build task context for commit message if we have plan info
|
|
416
|
+
const taskContext = totalTasksInPlan > 0
|
|
417
|
+
? { taskNumber: totalTasksProcessed, totalTasks: totalTasksInPlan }
|
|
418
|
+
: undefined;
|
|
419
|
+
checkpointManager
|
|
420
|
+
.createCheckpoint(record.iteration, record.summary ?? 'iteration complete', record.tokensUsed, taskContext)
|
|
421
|
+
.then((checkpoint) => {
|
|
422
|
+
if (checkpoint) {
|
|
423
|
+
debug(`Checkpoint created: ${checkpoint.commitHash.substring(0, 7)}`);
|
|
424
|
+
// Update progress with commit hash
|
|
425
|
+
state.lastCheckpoint = checkpoint.commitHash;
|
|
426
|
+
}
|
|
427
|
+
})
|
|
428
|
+
.catch(() => {
|
|
429
|
+
// Ignore checkpoint errors
|
|
430
|
+
});
|
|
383
431
|
}
|
|
384
|
-
|
|
385
|
-
.catch(() => {
|
|
386
|
-
|
|
432
|
+
// Save progress after each iteration
|
|
433
|
+
progressTracker.save(state).catch(() => {
|
|
434
|
+
// Ignore save errors
|
|
435
|
+
});
|
|
387
436
|
});
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
437
|
+
events.on('error', (err) => {
|
|
438
|
+
error(`Loop error: ${err.message}`);
|
|
439
|
+
});
|
|
440
|
+
events.on('warning', (type, message) => {
|
|
441
|
+
warn(`Warning: ${message}`);
|
|
442
|
+
});
|
|
443
|
+
// Run the loop for this task
|
|
444
|
+
const loopSpinner = spinner('Running agentic loop...');
|
|
445
|
+
loopSpinner.start();
|
|
446
|
+
try {
|
|
447
|
+
const finalState = await engine.start(activeTask);
|
|
448
|
+
loopSpinner.stop();
|
|
449
|
+
console.log('');
|
|
450
|
+
// Print iteration summary
|
|
451
|
+
console.log(` ${dim('Status:')} ${finalState.status}`);
|
|
452
|
+
console.log(` ${dim('Iterations:')} ${finalState.iteration}/${maxIterations}`);
|
|
453
|
+
console.log(` ${dim('Tokens used:')} ${finalState.tokensUsed.toLocaleString()}`);
|
|
454
|
+
const successfulIterations = finalState.iterations.filter((i) => i.success).length;
|
|
455
|
+
console.log(` ${dim('Successful iterations:')} ${successfulIterations}`);
|
|
456
|
+
console.log('');
|
|
457
|
+
if (finalState.status === 'completed') {
|
|
458
|
+
taskCompleted = true;
|
|
459
|
+
// Mark task as complete in plan file if using a plan
|
|
460
|
+
if (planManager) {
|
|
461
|
+
await planManager.completeTask(activeTask.id);
|
|
462
|
+
info(`Task marked as complete in plan file`);
|
|
463
|
+
}
|
|
464
|
+
// Document result in progress file
|
|
465
|
+
await progressTracker.appendTaskResult(activeTask, 'completed', taskAttempt, `Completed in ${finalState.iteration} iterations`);
|
|
466
|
+
// Build task context for commit message if we have plan info
|
|
467
|
+
const taskContext = totalTasksInPlan > 0
|
|
468
|
+
? { taskNumber: totalTasksProcessed, totalTasks: totalTasksInPlan }
|
|
469
|
+
: undefined;
|
|
470
|
+
// Create a task-level checkpoint commit
|
|
471
|
+
await checkpointManager.createTaskCheckpoint(activeTask.title, activeTask.id, `Task completed in ${finalState.iteration} iterations`, taskContext);
|
|
472
|
+
// Push to remote if configured (per-task strategy)
|
|
473
|
+
if (autoPush && pushStrategy === 'per-task' && isGitRepo) {
|
|
474
|
+
info('Pushing changes to remote...');
|
|
475
|
+
const pushed = await gitManager.pushToRemote();
|
|
476
|
+
if (pushed) {
|
|
477
|
+
success('Changes pushed to remote');
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
warn('Failed to push changes to remote');
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
success(`β Task completed: ${activeTask.title}`);
|
|
484
|
+
totalTasksCompleted++;
|
|
485
|
+
}
|
|
486
|
+
else if (finalState.status === 'stopped') {
|
|
487
|
+
// User requested stop - exit the entire run
|
|
488
|
+
warn('Loop was stopped by user');
|
|
489
|
+
// Document the stop
|
|
490
|
+
await progressTracker.appendTaskResult(activeTask, 'stuck', taskAttempt, 'Stopped by user');
|
|
491
|
+
// Exit the multi-task loop
|
|
492
|
+
currentTask = null;
|
|
493
|
+
continue;
|
|
494
|
+
}
|
|
495
|
+
else if (finalState.status === 'failed') {
|
|
496
|
+
warn(`β Task attempt ${taskAttempt} failed: ${activeTask.title}`);
|
|
497
|
+
// Document failure for learning
|
|
498
|
+
await progressTracker.appendTaskResult(activeTask, 'failed', taskAttempt, 'Loop execution failed');
|
|
499
|
+
// Create failure checkpoint
|
|
500
|
+
await checkpointManager.createFailureCheckpoint(activeTask.title, activeTask.id, taskAttempt, 'Loop execution failed');
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
loopSpinner.fail('Loop failed');
|
|
505
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
506
|
+
error(errMsg);
|
|
507
|
+
// Document failure
|
|
508
|
+
await progressTracker.appendTaskResult(activeTask, 'failed', taskAttempt, undefined, errMsg);
|
|
509
|
+
// Create failure checkpoint
|
|
510
|
+
await checkpointManager.createFailureCheckpoint(activeTask.title, activeTask.id, taskAttempt, errMsg);
|
|
511
|
+
}
|
|
512
|
+
finally {
|
|
513
|
+
cleanupSignalHandlers();
|
|
514
|
+
await agent.destroy();
|
|
423
515
|
}
|
|
424
|
-
success('Loop completed successfully');
|
|
425
|
-
}
|
|
426
|
-
else if (finalState.status === 'stopped') {
|
|
427
|
-
warn('Loop was stopped by user');
|
|
428
516
|
}
|
|
429
|
-
|
|
517
|
+
// Check if all retries exhausted without completion
|
|
518
|
+
if (!taskCompleted && currentTask) {
|
|
519
|
+
taskFailed = true;
|
|
520
|
+
totalTasksFailed++;
|
|
430
521
|
if (planManager) {
|
|
431
|
-
await planManager.failTask(
|
|
522
|
+
await planManager.failTask(activeTask.id);
|
|
432
523
|
}
|
|
433
|
-
error(
|
|
524
|
+
error(`β Task failed after ${maxRetriesPerTask} attempts: ${activeTask.title}`);
|
|
434
525
|
exitCode = 1;
|
|
435
526
|
}
|
|
527
|
+
// Optional pause for human review (strict Ralph mode)
|
|
528
|
+
if (options.pauseBetweenTasks && planManager && !taskFailed) {
|
|
529
|
+
console.log('');
|
|
530
|
+
info('Press any key to continue to next task, or Ctrl+C to stop...');
|
|
531
|
+
await waitForKeypress();
|
|
532
|
+
}
|
|
533
|
+
// Get next task from the plan (if using a plan)
|
|
534
|
+
if (planManager) {
|
|
535
|
+
// Reload plan file to pick up any external changes
|
|
536
|
+
await planManager.reload?.();
|
|
537
|
+
currentTask = await planManager.getNextTask();
|
|
538
|
+
}
|
|
539
|
+
else {
|
|
540
|
+
// Single task mode (--task flag) - exit after one task
|
|
541
|
+
currentTask = null;
|
|
542
|
+
}
|
|
436
543
|
}
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
544
|
+
// ========== FINAL SUMMARY ==========
|
|
545
|
+
console.log('');
|
|
546
|
+
console.log(heading('π Final Summary'));
|
|
547
|
+
console.log('');
|
|
548
|
+
console.log(` ${dim('Total tasks processed:')} ${totalTasksProcessed}`);
|
|
549
|
+
console.log(` ${dim('Tasks completed:')} ${totalTasksCompleted}`);
|
|
550
|
+
console.log(` ${dim('Tasks failed:')} ${totalTasksFailed}`);
|
|
551
|
+
console.log(` ${dim('Elapsed time:')} ${formatElapsedTime(startTime)}`);
|
|
552
|
+
console.log('');
|
|
553
|
+
// Push to remote if configured (per-run strategy)
|
|
554
|
+
if (autoPush && pushStrategy === 'per-run' && isGitRepo && totalTasksCompleted > 0) {
|
|
555
|
+
info('Pushing all changes to remote...');
|
|
556
|
+
const pushed = await gitManager.pushToRemote();
|
|
557
|
+
if (pushed) {
|
|
558
|
+
success('All changes pushed to remote');
|
|
559
|
+
}
|
|
560
|
+
else {
|
|
561
|
+
warn('Failed to push changes to remote');
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
if (totalTasksFailed === 0 && totalTasksCompleted > 0) {
|
|
565
|
+
success(`π All ${totalTasksCompleted} tasks completed successfully!`);
|
|
566
|
+
}
|
|
567
|
+
else if (totalTasksCompleted > 0) {
|
|
568
|
+
warn(`Completed ${totalTasksCompleted} tasks, ${totalTasksFailed} failed`);
|
|
441
569
|
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
await agent.destroy();
|
|
570
|
+
else if (totalTasksProcessed === 0) {
|
|
571
|
+
success('No pending tasks found - all tasks are complete!');
|
|
445
572
|
}
|
|
446
573
|
if (exitCode !== 0) {
|
|
447
574
|
process.exit(exitCode);
|