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
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Checkpoint Manager
|
|
3
3
|
*
|
|
4
|
-
* Manages automatic git commits after each loop iteration
|
|
4
|
+
* Manages automatic git commits after each loop iteration.
|
|
5
|
+
* Uses a mutex to prevent race conditions when multiple git operations
|
|
6
|
+
* are attempted concurrently.
|
|
5
7
|
*/
|
|
6
8
|
import { exec } from 'node:child_process';
|
|
7
9
|
import { promisify } from 'node:util';
|
|
10
|
+
import { Mutex } from 'async-mutex';
|
|
8
11
|
import { debug, warn } from '../utils/index.js';
|
|
9
12
|
const execAsync = promisify(exec);
|
|
10
13
|
/**
|
|
@@ -17,10 +20,14 @@ const DEFAULT_CONFIG = {
|
|
|
17
20
|
};
|
|
18
21
|
/**
|
|
19
22
|
* Checkpoint Manager class
|
|
23
|
+
*
|
|
24
|
+
* Provides thread-safe git operations using a mutex to prevent
|
|
25
|
+
* concurrent access that causes "index.lock" and "HEAD locked" errors.
|
|
20
26
|
*/
|
|
21
27
|
export class CheckpointManager {
|
|
22
28
|
config;
|
|
23
29
|
checkpoints = [];
|
|
30
|
+
gitMutex = new Mutex();
|
|
24
31
|
constructor(config = {}) {
|
|
25
32
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
26
33
|
}
|
|
@@ -50,6 +57,12 @@ export class CheckpointManager {
|
|
|
50
57
|
* Check if there are any modified files to commit
|
|
51
58
|
*/
|
|
52
59
|
async hasChangesToCommit() {
|
|
60
|
+
return this.gitMutex.runExclusive(() => this.hasChangesToCommitUnsafe());
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Internal: Check for changes without acquiring mutex
|
|
64
|
+
*/
|
|
65
|
+
async hasChangesToCommitUnsafe() {
|
|
53
66
|
try {
|
|
54
67
|
const { stdout } = await execAsync('git status --porcelain', { cwd: this.config.cwd });
|
|
55
68
|
return stdout.trim().length > 0;
|
|
@@ -62,6 +75,12 @@ export class CheckpointManager {
|
|
|
62
75
|
* Get list of modified files
|
|
63
76
|
*/
|
|
64
77
|
async getModifiedFiles() {
|
|
78
|
+
return this.gitMutex.runExclusive(() => this.getModifiedFilesUnsafe());
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Internal: Get modified files without acquiring mutex
|
|
82
|
+
*/
|
|
83
|
+
async getModifiedFilesUnsafe() {
|
|
65
84
|
try {
|
|
66
85
|
const { stdout } = await execAsync('git status --porcelain', { cwd: this.config.cwd });
|
|
67
86
|
return stdout
|
|
@@ -78,6 +97,12 @@ export class CheckpointManager {
|
|
|
78
97
|
* Stage all modified files
|
|
79
98
|
*/
|
|
80
99
|
async stageAllChanges() {
|
|
100
|
+
return this.gitMutex.runExclusive(() => this.stageAllChangesUnsafe());
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Internal: Stage changes without acquiring mutex
|
|
104
|
+
*/
|
|
105
|
+
async stageAllChangesUnsafe() {
|
|
81
106
|
try {
|
|
82
107
|
await execAsync('git add -A', { cwd: this.config.cwd });
|
|
83
108
|
debug('Staged all changes');
|
|
@@ -89,74 +114,138 @@ export class CheckpointManager {
|
|
|
89
114
|
}
|
|
90
115
|
}
|
|
91
116
|
/**
|
|
92
|
-
* Create a checkpoint commit
|
|
117
|
+
* Create a checkpoint commit (mutex-protected)
|
|
118
|
+
* @param iteration - Iteration number within the current task
|
|
119
|
+
* @param summary - Summary of changes made
|
|
120
|
+
* @param tokensUsed - Tokens used in this iteration
|
|
121
|
+
* @param taskContext - Optional task context for "task X/Y" numbering in commit message
|
|
93
122
|
*/
|
|
94
|
-
async createCheckpoint(iteration, summary, tokensUsed) {
|
|
123
|
+
async createCheckpoint(iteration, summary, tokensUsed, taskContext) {
|
|
95
124
|
if (!this.config.autoCommit) {
|
|
96
125
|
debug('Auto-commit disabled, skipping checkpoint');
|
|
97
126
|
return null;
|
|
98
127
|
}
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
128
|
+
// Use mutex to prevent concurrent git operations
|
|
129
|
+
return this.gitMutex.runExclusive(async () => {
|
|
130
|
+
// Check if there are changes to commit
|
|
131
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
132
|
+
if (!hasChanges) {
|
|
133
|
+
debug('No changes to commit for checkpoint');
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
// Get list of modified files before staging
|
|
137
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
138
|
+
// Stage all changes
|
|
139
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
140
|
+
if (!staged) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
// Build commit message with optional task context
|
|
144
|
+
const truncatedSummary = summary.length > 40
|
|
145
|
+
? summary.substring(0, 37) + '...'
|
|
146
|
+
: summary;
|
|
147
|
+
let message;
|
|
148
|
+
if (taskContext) {
|
|
149
|
+
message = `${this.config.messagePrefix} task ${taskContext.taskNumber}/${taskContext.totalTasks} iter ${iteration} - ${truncatedSummary}`;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
message = `${this.config.messagePrefix} iteration ${iteration} - ${truncatedSummary}`;
|
|
153
|
+
}
|
|
154
|
+
const fullMessage = `${message}\n\nTokens used: ${tokensUsed}\nFiles modified: ${filesModified.length}`;
|
|
155
|
+
try {
|
|
156
|
+
// Create commit
|
|
157
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
158
|
+
// Get commit hash
|
|
159
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
160
|
+
const commitHash = stdout.trim();
|
|
161
|
+
const checkpoint = {
|
|
162
|
+
iteration,
|
|
163
|
+
commitHash,
|
|
164
|
+
message,
|
|
165
|
+
filesModified,
|
|
166
|
+
timestamp: new Date(),
|
|
167
|
+
tokensUsed,
|
|
168
|
+
};
|
|
169
|
+
this.checkpoints.push(checkpoint);
|
|
170
|
+
debug(`Created checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
171
|
+
return checkpoint;
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
warn('Failed to create checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
140
178
|
}
|
|
141
179
|
/**
|
|
142
|
-
* Rollback to a specific checkpoint
|
|
180
|
+
* Rollback to a specific checkpoint (mutex-protected)
|
|
143
181
|
*/
|
|
144
182
|
async rollbackTo(commitHash) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
183
|
+
return this.gitMutex.runExclusive(async () => {
|
|
184
|
+
try {
|
|
185
|
+
// Soft reset to keep changes in working directory for review
|
|
186
|
+
await execAsync(`git reset --soft "${commitHash}"`, { cwd: this.config.cwd });
|
|
187
|
+
debug(`Rolled back to ${commitHash.substring(0, 7)}`);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
warn('Failed to rollback: ' + (err instanceof Error ? err.message : String(err)));
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
155
195
|
}
|
|
156
196
|
/**
|
|
157
|
-
* Hard rollback to a specific checkpoint (
|
|
197
|
+
* Hard rollback to a specific checkpoint (mutex-protected)
|
|
158
198
|
*/
|
|
159
199
|
async hardRollbackTo(commitHash) {
|
|
200
|
+
return this.gitMutex.runExclusive(async () => {
|
|
201
|
+
try {
|
|
202
|
+
await execAsync(`git reset --hard "${commitHash}"`, { cwd: this.config.cwd });
|
|
203
|
+
debug(`Hard rolled back to ${commitHash.substring(0, 7)}`);
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
warn('Failed to hard rollback: ' + (err instanceof Error ? err.message : String(err)));
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Rollback by N iterations (mutex-protected)
|
|
214
|
+
*/
|
|
215
|
+
async rollbackIterations(count = 1) {
|
|
216
|
+
return this.gitMutex.runExclusive(async () => {
|
|
217
|
+
if (this.checkpoints.length < count) {
|
|
218
|
+
warn(`Cannot rollback ${count} iterations, only ${this.checkpoints.length} checkpoints available`);
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
// Get the checkpoint to rollback to
|
|
222
|
+
const targetIndex = this.checkpoints.length - count - 1;
|
|
223
|
+
if (targetIndex < 0) {
|
|
224
|
+
// Rollback before first checkpoint - get parent of first checkpoint
|
|
225
|
+
const firstCheckpoint = this.checkpoints[0];
|
|
226
|
+
if (!firstCheckpoint)
|
|
227
|
+
return false;
|
|
228
|
+
try {
|
|
229
|
+
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
230
|
+
const parentHash = stdout.trim();
|
|
231
|
+
// Call internal version to avoid re-acquiring mutex
|
|
232
|
+
return this.hardRollbackToUnsafe(parentHash);
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
warn('Cannot find parent commit for rollback');
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
const targetCheckpoint = this.checkpoints[targetIndex];
|
|
240
|
+
if (!targetCheckpoint)
|
|
241
|
+
return false;
|
|
242
|
+
return this.hardRollbackToUnsafe(targetCheckpoint.commitHash);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Internal: Hard rollback without acquiring mutex
|
|
247
|
+
*/
|
|
248
|
+
async hardRollbackToUnsafe(commitHash) {
|
|
160
249
|
try {
|
|
161
250
|
await execAsync(`git reset --hard "${commitHash}"`, { cwd: this.config.cwd });
|
|
162
251
|
debug(`Hard rolled back to ${commitHash.substring(0, 7)}`);
|
|
@@ -168,63 +257,162 @@ export class CheckpointManager {
|
|
|
168
257
|
}
|
|
169
258
|
}
|
|
170
259
|
/**
|
|
171
|
-
*
|
|
260
|
+
* Get the initial commit hash before Ralph started (mutex-protected)
|
|
172
261
|
*/
|
|
173
|
-
async
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
262
|
+
async getInitialCommit() {
|
|
263
|
+
return this.gitMutex.runExclusive(async () => {
|
|
264
|
+
if (this.checkpoints.length === 0) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
const firstCheckpoint = this.checkpoints[0];
|
|
268
|
+
if (!firstCheckpoint)
|
|
269
|
+
return null;
|
|
270
|
+
try {
|
|
271
|
+
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
272
|
+
return stdout.trim();
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Rollback all Ralph changes (mutex-protected)
|
|
281
|
+
*/
|
|
282
|
+
async rollbackAll() {
|
|
283
|
+
return this.gitMutex.runExclusive(async () => {
|
|
284
|
+
if (this.checkpoints.length === 0) {
|
|
285
|
+
warn('No checkpoints to rollback');
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
182
288
|
const firstCheckpoint = this.checkpoints[0];
|
|
183
289
|
if (!firstCheckpoint)
|
|
184
290
|
return false;
|
|
185
291
|
try {
|
|
186
292
|
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
187
|
-
const
|
|
188
|
-
return this.
|
|
293
|
+
const initialCommit = stdout.trim();
|
|
294
|
+
return this.hardRollbackToUnsafe(initialCommit);
|
|
189
295
|
}
|
|
190
296
|
catch {
|
|
191
|
-
warn('Cannot find
|
|
297
|
+
warn('Cannot find initial commit for rollback');
|
|
192
298
|
return false;
|
|
193
299
|
}
|
|
194
|
-
}
|
|
195
|
-
const targetCheckpoint = this.checkpoints[targetIndex];
|
|
196
|
-
if (!targetCheckpoint)
|
|
197
|
-
return false;
|
|
198
|
-
return this.hardRollbackTo(targetCheckpoint.commitHash);
|
|
300
|
+
});
|
|
199
301
|
}
|
|
200
302
|
/**
|
|
201
|
-
*
|
|
303
|
+
* Create a task completion checkpoint commit (mutex-protected)
|
|
304
|
+
* @param taskTitle - Title of the completed task
|
|
305
|
+
* @param taskId - ID of the completed task
|
|
306
|
+
* @param summary - Summary of the task completion
|
|
307
|
+
* @param taskContext - Optional task context for "task X/Y" numbering in commit message
|
|
202
308
|
*/
|
|
203
|
-
async
|
|
204
|
-
if (this.
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
const firstCheckpoint = this.checkpoints[0];
|
|
208
|
-
if (!firstCheckpoint)
|
|
209
|
-
return null;
|
|
210
|
-
try {
|
|
211
|
-
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
212
|
-
return stdout.trim();
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
309
|
+
async createTaskCheckpoint(taskTitle, taskId, summary, taskContext) {
|
|
310
|
+
if (!this.config.autoCommit) {
|
|
311
|
+
debug('Auto-commit disabled, skipping task checkpoint');
|
|
215
312
|
return null;
|
|
216
313
|
}
|
|
314
|
+
return this.gitMutex.runExclusive(async () => {
|
|
315
|
+
// Check if there are changes to commit
|
|
316
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
317
|
+
if (!hasChanges) {
|
|
318
|
+
debug('No changes to commit for task checkpoint');
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
// Get list of modified files before staging
|
|
322
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
323
|
+
// Stage all changes
|
|
324
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
325
|
+
if (!staged) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
// Build commit message for task completion with optional task context
|
|
329
|
+
const truncatedTitle = taskTitle.length > 40
|
|
330
|
+
? taskTitle.substring(0, 37) + '...'
|
|
331
|
+
: taskTitle;
|
|
332
|
+
let message;
|
|
333
|
+
if (taskContext) {
|
|
334
|
+
message = `${this.config.messagePrefix} task ${taskContext.taskNumber}/${taskContext.totalTasks} complete - ${truncatedTitle}`;
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
message = `${this.config.messagePrefix} task complete - ${truncatedTitle}`;
|
|
338
|
+
}
|
|
339
|
+
const fullMessage = `${message}\n\nTask ID: ${taskId}\nSummary: ${summary}\nFiles modified: ${filesModified.length}`;
|
|
340
|
+
try {
|
|
341
|
+
// Create commit
|
|
342
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
343
|
+
// Get commit hash
|
|
344
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
345
|
+
const commitHash = stdout.trim();
|
|
346
|
+
const checkpoint = {
|
|
347
|
+
iteration: 0, // Task-level checkpoint, not iteration-level
|
|
348
|
+
commitHash,
|
|
349
|
+
message,
|
|
350
|
+
filesModified,
|
|
351
|
+
timestamp: new Date(),
|
|
352
|
+
tokensUsed: 0,
|
|
353
|
+
};
|
|
354
|
+
this.checkpoints.push(checkpoint);
|
|
355
|
+
debug(`Created task checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
356
|
+
return checkpoint;
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
warn('Failed to create task checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
});
|
|
217
363
|
}
|
|
218
364
|
/**
|
|
219
|
-
*
|
|
365
|
+
* Create a failure checkpoint commit (mutex-protected)
|
|
220
366
|
*/
|
|
221
|
-
async
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
return false;
|
|
367
|
+
async createFailureCheckpoint(taskTitle, taskId, attempt, error) {
|
|
368
|
+
if (!this.config.autoCommit) {
|
|
369
|
+
debug('Auto-commit disabled, skipping failure checkpoint');
|
|
370
|
+
return null;
|
|
226
371
|
}
|
|
227
|
-
return this.
|
|
372
|
+
return this.gitMutex.runExclusive(async () => {
|
|
373
|
+
// Check if there are changes to commit
|
|
374
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
375
|
+
if (!hasChanges) {
|
|
376
|
+
debug('No changes to commit for failure checkpoint');
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
// Get list of modified files before staging
|
|
380
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
381
|
+
// Stage all changes
|
|
382
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
383
|
+
if (!staged) {
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
// Build commit message for task failure
|
|
387
|
+
const truncatedTitle = taskTitle.length > 30
|
|
388
|
+
? taskTitle.substring(0, 27) + '...'
|
|
389
|
+
: taskTitle;
|
|
390
|
+
const message = `${this.config.messagePrefix} task failed (attempt ${attempt}) - ${truncatedTitle}`;
|
|
391
|
+
const errorInfo = error ? `\nError: ${error.substring(0, 200)}` : '';
|
|
392
|
+
const fullMessage = `${message}\n\nTask ID: ${taskId}\nAttempt: ${attempt}${errorInfo}\nFiles modified: ${filesModified.length}`;
|
|
393
|
+
try {
|
|
394
|
+
// Create commit
|
|
395
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
396
|
+
// Get commit hash
|
|
397
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
398
|
+
const commitHash = stdout.trim();
|
|
399
|
+
const checkpoint = {
|
|
400
|
+
iteration: 0, // Task-level checkpoint
|
|
401
|
+
commitHash,
|
|
402
|
+
message,
|
|
403
|
+
filesModified,
|
|
404
|
+
timestamp: new Date(),
|
|
405
|
+
tokensUsed: 0,
|
|
406
|
+
};
|
|
407
|
+
this.checkpoints.push(checkpoint);
|
|
408
|
+
debug(`Created failure checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
409
|
+
return checkpoint;
|
|
410
|
+
}
|
|
411
|
+
catch (err) {
|
|
412
|
+
warn('Failed to create failure checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
});
|
|
228
416
|
}
|
|
229
417
|
}
|
|
230
418
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-manager.js","sourceRoot":"","sources":["../../src/core/checkpoint-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkpoint-manager.js","sourceRoot":"","sources":["../../src/core/checkpoint-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* Plan source type
|
|
8
8
|
*/
|
|
9
9
|
export type PlanSource = 'github' | 'local';
|
|
10
|
+
/**
|
|
11
|
+
* Progress file verbosity level
|
|
12
|
+
*/
|
|
13
|
+
export type ProgressVerbosity = 'minimal' | 'standard' | 'full';
|
|
10
14
|
/**
|
|
11
15
|
* MCP Server configuration for custom tools
|
|
12
16
|
*/
|
|
@@ -52,6 +56,14 @@ export interface RalphConfiguration {
|
|
|
52
56
|
promptTemplate?: string;
|
|
53
57
|
/** MCP servers for custom tools */
|
|
54
58
|
mcpServers?: MCPServerConfiguration[];
|
|
59
|
+
/** Maximum retries per task before marking as failed (default: 2) */
|
|
60
|
+
maxRetriesPerTask?: number;
|
|
61
|
+
/** Whether to auto-push after each task completion (default: false) */
|
|
62
|
+
autoPush?: boolean;
|
|
63
|
+
/** Push strategy: 'per-task' pushes after each task, 'per-run' pushes after all tasks complete (default: 'per-task') */
|
|
64
|
+
pushStrategy?: 'per-task' | 'per-run' | 'manual';
|
|
65
|
+
/** Progress file verbosity level: 'minimal' for CI, 'standard' for normal use, 'full' for debugging (default: 'standard') */
|
|
66
|
+
progressVerbosity?: ProgressVerbosity;
|
|
55
67
|
}
|
|
56
68
|
/**
|
|
57
69
|
* Default configuration values
|
|
@@ -60,7 +72,7 @@ export declare const DEFAULT_CONFIG: RalphConfiguration;
|
|
|
60
72
|
/**
|
|
61
73
|
* Configuration keys for validation
|
|
62
74
|
*/
|
|
63
|
-
export declare const CONFIG_KEYS: readonly ["planSource", "maxIterations", "maxTokens", "defaultModel", "autoCommit", "branchPrefix", "githubRepo", "githubLabel", "githubMilestone", "githubAssignee", "localPlanFile", "promptTemplate", "mcpServers"];
|
|
75
|
+
export declare const CONFIG_KEYS: readonly ["planSource", "maxIterations", "maxTokens", "defaultModel", "autoCommit", "branchPrefix", "githubRepo", "githubLabel", "githubMilestone", "githubAssignee", "localPlanFile", "promptTemplate", "mcpServers", "maxRetriesPerTask", "autoPush", "pushStrategy", "progressVerbosity"];
|
|
64
76
|
export type ConfigKey = (typeof CONFIG_KEYS)[number];
|
|
65
77
|
/**
|
|
66
78
|
* Check if a string is a valid config key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,UAAU,EAAE,UAAU,CAAC;IACvB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,UAAU,EAAE,UAAU,CAAC;IACvB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wHAAwH;IACxH,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,6HAA6H;IAC7H,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,kBAW5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,8RAkBd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,OAAO,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA+CpC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAYvE"}
|
|
@@ -13,6 +13,10 @@ export const DEFAULT_CONFIG = {
|
|
|
13
13
|
defaultModel: 'gpt-4.1',
|
|
14
14
|
autoCommit: true,
|
|
15
15
|
branchPrefix: 'ghcralph/',
|
|
16
|
+
maxRetriesPerTask: 2,
|
|
17
|
+
autoPush: false,
|
|
18
|
+
pushStrategy: 'per-task',
|
|
19
|
+
progressVerbosity: 'standard',
|
|
16
20
|
};
|
|
17
21
|
/**
|
|
18
22
|
* Configuration keys for validation
|
|
@@ -31,6 +35,10 @@ export const CONFIG_KEYS = [
|
|
|
31
35
|
'localPlanFile',
|
|
32
36
|
'promptTemplate',
|
|
33
37
|
'mcpServers',
|
|
38
|
+
'maxRetriesPerTask',
|
|
39
|
+
'autoPush',
|
|
40
|
+
'pushStrategy',
|
|
41
|
+
'progressVerbosity',
|
|
34
42
|
];
|
|
35
43
|
/**
|
|
36
44
|
* Check if a string is a valid config key
|
|
@@ -55,8 +63,24 @@ export function validateConfigValue(key, value) {
|
|
|
55
63
|
}
|
|
56
64
|
break;
|
|
57
65
|
case 'autoCommit':
|
|
66
|
+
case 'autoPush':
|
|
58
67
|
if (typeof value !== 'boolean') {
|
|
59
|
-
return { valid: false, error:
|
|
68
|
+
return { valid: false, error: `${key} must be a boolean` };
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case 'maxRetriesPerTask':
|
|
72
|
+
if (typeof value !== 'number' || value < 1) {
|
|
73
|
+
return { valid: false, error: 'maxRetriesPerTask must be a positive number' };
|
|
74
|
+
}
|
|
75
|
+
break;
|
|
76
|
+
case 'pushStrategy':
|
|
77
|
+
if (value !== 'per-task' && value !== 'per-run' && value !== 'manual') {
|
|
78
|
+
return { valid: false, error: 'pushStrategy must be "per-task", "per-run", or "manual"' };
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case 'progressVerbosity':
|
|
82
|
+
if (value !== 'minimal' && value !== 'standard' && value !== 'full') {
|
|
83
|
+
return { valid: false, error: 'progressVerbosity must be "minimal", "standard", or "full"' };
|
|
60
84
|
}
|
|
61
85
|
break;
|
|
62
86
|
case 'defaultModel':
|
|
@@ -80,8 +104,10 @@ export function parseConfigValue(key, value) {
|
|
|
80
104
|
switch (key) {
|
|
81
105
|
case 'maxIterations':
|
|
82
106
|
case 'maxTokens':
|
|
107
|
+
case 'maxRetriesPerTask':
|
|
83
108
|
return parseInt(value, 10);
|
|
84
109
|
case 'autoCommit':
|
|
110
|
+
case 'autoPush':
|
|
85
111
|
return value.toLowerCase() === 'true';
|
|
86
112
|
default:
|
|
87
113
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/core/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/core/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAqFvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,GAAG,CAAS;gBAER,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAKpE;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,kBAAkB,GAAE,eAAe,EAAO,EAC1C,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,YAAY,CAAC;IAoHxB;;OAEG;YACW,uBAAuB;IAuCrC;;OAEG;YACW,iBAAiB;IA0D/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;YACW,UAAU;IAqBxB;;OAEG;YACW,aAAa;IAc3B;;OAEG;YACW,mBAAmB;IAcjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,cAAc;CAiBvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,EACtC,GAAG,CAAC,EAAE,MAAM,GACX,cAAc,CAEhB"}
|