ghcralph 0.1.2 → 0.1.4
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 +23 -16
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +66 -19
- package/dist/commands/run.js.map +1 -1
- package/dist/core/action-executor.d.ts +13 -0
- package/dist/core/action-executor.d.ts.map +1 -1
- package/dist/core/action-executor.js +32 -0
- package/dist/core/action-executor.js.map +1 -1
- package/dist/core/checkpoint-manager.d.ts +50 -11
- package/dist/core/checkpoint-manager.d.ts.map +1 -1
- package/dist/core/checkpoint-manager.js +287 -187
- package/dist/core/checkpoint-manager.js.map +1 -1
- package/dist/core/config-schema.d.ts +9 -1
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +14 -0
- 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 +61 -16
- package/dist/core/context-builder.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-engine.d.ts +6 -1
- package/dist/core/loop-engine.d.ts.map +1 -1
- package/dist/core/loop-engine.js +72 -4
- package/dist/core/loop-engine.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/progress-tracker.d.ts +73 -3
- package/dist/core/progress-tracker.d.ts.map +1 -1
- package/dist/core/progress-tracker.js +192 -2
- package/dist/core/progress-tracker.js.map +1 -1
- package/dist/core/prompt-examples.d.ts +11 -3
- package/dist/core/prompt-examples.d.ts.map +1 -1
- package/dist/core/prompt-examples.js +47 -5
- package/dist/core/prompt-examples.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
|
/**
|
|
@@ -15,12 +18,32 @@ const DEFAULT_CONFIG = {
|
|
|
15
18
|
messagePrefix: 'ghcralph:',
|
|
16
19
|
cwd: process.cwd(),
|
|
17
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Truncate at word boundary to avoid mid-word cuts
|
|
23
|
+
*/
|
|
24
|
+
function truncateAtWord(str, maxLen) {
|
|
25
|
+
if (str.length <= maxLen)
|
|
26
|
+
return str;
|
|
27
|
+
const ellipsis = '...';
|
|
28
|
+
const targetLen = maxLen - ellipsis.length;
|
|
29
|
+
const truncated = str.substring(0, targetLen);
|
|
30
|
+
const lastSpace = truncated.lastIndexOf(' ');
|
|
31
|
+
// Use word boundary if in the latter half
|
|
32
|
+
if (lastSpace > targetLen * 0.5) {
|
|
33
|
+
return truncated.substring(0, lastSpace) + ellipsis;
|
|
34
|
+
}
|
|
35
|
+
return truncated + ellipsis;
|
|
36
|
+
}
|
|
18
37
|
/**
|
|
19
38
|
* Checkpoint Manager class
|
|
39
|
+
*
|
|
40
|
+
* Provides thread-safe git operations using a mutex to prevent
|
|
41
|
+
* concurrent access that causes "index.lock" and "HEAD locked" errors.
|
|
20
42
|
*/
|
|
21
43
|
export class CheckpointManager {
|
|
22
44
|
config;
|
|
23
45
|
checkpoints = [];
|
|
46
|
+
gitMutex = new Mutex();
|
|
24
47
|
constructor(config = {}) {
|
|
25
48
|
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
26
49
|
}
|
|
@@ -50,6 +73,12 @@ export class CheckpointManager {
|
|
|
50
73
|
* Check if there are any modified files to commit
|
|
51
74
|
*/
|
|
52
75
|
async hasChangesToCommit() {
|
|
76
|
+
return this.gitMutex.runExclusive(() => this.hasChangesToCommitUnsafe());
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Internal: Check for changes without acquiring mutex
|
|
80
|
+
*/
|
|
81
|
+
async hasChangesToCommitUnsafe() {
|
|
53
82
|
try {
|
|
54
83
|
const { stdout } = await execAsync('git status --porcelain', { cwd: this.config.cwd });
|
|
55
84
|
return stdout.trim().length > 0;
|
|
@@ -62,6 +91,12 @@ export class CheckpointManager {
|
|
|
62
91
|
* Get list of modified files
|
|
63
92
|
*/
|
|
64
93
|
async getModifiedFiles() {
|
|
94
|
+
return this.gitMutex.runExclusive(() => this.getModifiedFilesUnsafe());
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Internal: Get modified files without acquiring mutex
|
|
98
|
+
*/
|
|
99
|
+
async getModifiedFilesUnsafe() {
|
|
65
100
|
try {
|
|
66
101
|
const { stdout } = await execAsync('git status --porcelain', { cwd: this.config.cwd });
|
|
67
102
|
return stdout
|
|
@@ -78,6 +113,12 @@ export class CheckpointManager {
|
|
|
78
113
|
* Stage all modified files
|
|
79
114
|
*/
|
|
80
115
|
async stageAllChanges() {
|
|
116
|
+
return this.gitMutex.runExclusive(() => this.stageAllChangesUnsafe());
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Internal: Stage changes without acquiring mutex
|
|
120
|
+
*/
|
|
121
|
+
async stageAllChangesUnsafe() {
|
|
81
122
|
try {
|
|
82
123
|
await execAsync('git add -A', { cwd: this.config.cwd });
|
|
83
124
|
debug('Staged all changes');
|
|
@@ -89,74 +130,137 @@ export class CheckpointManager {
|
|
|
89
130
|
}
|
|
90
131
|
}
|
|
91
132
|
/**
|
|
92
|
-
* Create a checkpoint commit
|
|
133
|
+
* Create a checkpoint commit (mutex-protected)
|
|
134
|
+
* @param iteration - Iteration number within the current task
|
|
135
|
+
* @param summary - Summary of changes made
|
|
136
|
+
* @param tokensUsed - Tokens used in this iteration
|
|
137
|
+
* @param taskContext - Optional task context for "task X/Y" numbering in commit message
|
|
93
138
|
*/
|
|
94
|
-
async createCheckpoint(iteration, summary, tokensUsed) {
|
|
139
|
+
async createCheckpoint(iteration, summary, tokensUsed, taskContext) {
|
|
95
140
|
if (!this.config.autoCommit) {
|
|
96
141
|
debug('Auto-commit disabled, skipping checkpoint');
|
|
97
142
|
return null;
|
|
98
143
|
}
|
|
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
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
// Use mutex to prevent concurrent git operations
|
|
145
|
+
return this.gitMutex.runExclusive(async () => {
|
|
146
|
+
// Check if there are changes to commit
|
|
147
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
148
|
+
if (!hasChanges) {
|
|
149
|
+
debug('No changes to commit for checkpoint');
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
// Get list of modified files before staging
|
|
153
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
154
|
+
// Stage all changes
|
|
155
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
156
|
+
if (!staged) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
// Build commit message with optional task context
|
|
160
|
+
// Summary is already truncated by extractSummary(), use word-boundary truncation as safety
|
|
161
|
+
const truncatedSummary = truncateAtWord(summary, 50);
|
|
162
|
+
let message;
|
|
163
|
+
if (taskContext) {
|
|
164
|
+
message = `${this.config.messagePrefix} task ${taskContext.taskNumber}/${taskContext.totalTasks} iter ${iteration} - ${truncatedSummary}`;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
message = `${this.config.messagePrefix} iteration ${iteration} - ${truncatedSummary}`;
|
|
168
|
+
}
|
|
169
|
+
const fullMessage = `${message}\n\nTokens used: ${tokensUsed}\nFiles modified: ${filesModified.length}`;
|
|
170
|
+
try {
|
|
171
|
+
// Create commit
|
|
172
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
173
|
+
// Get commit hash
|
|
174
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
175
|
+
const commitHash = stdout.trim();
|
|
176
|
+
const checkpoint = {
|
|
177
|
+
iteration,
|
|
178
|
+
commitHash,
|
|
179
|
+
message,
|
|
180
|
+
filesModified,
|
|
181
|
+
timestamp: new Date(),
|
|
182
|
+
tokensUsed,
|
|
183
|
+
};
|
|
184
|
+
this.checkpoints.push(checkpoint);
|
|
185
|
+
debug(`Created checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
186
|
+
return checkpoint;
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
warn('Failed to create checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
});
|
|
140
193
|
}
|
|
141
194
|
/**
|
|
142
|
-
* Rollback to a specific checkpoint
|
|
195
|
+
* Rollback to a specific checkpoint (mutex-protected)
|
|
143
196
|
*/
|
|
144
197
|
async rollbackTo(commitHash) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
198
|
+
return this.gitMutex.runExclusive(async () => {
|
|
199
|
+
try {
|
|
200
|
+
// Soft reset to keep changes in working directory for review
|
|
201
|
+
await execAsync(`git reset --soft "${commitHash}"`, { cwd: this.config.cwd });
|
|
202
|
+
debug(`Rolled back to ${commitHash.substring(0, 7)}`);
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
warn('Failed to rollback: ' + (err instanceof Error ? err.message : String(err)));
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
155
210
|
}
|
|
156
211
|
/**
|
|
157
|
-
* Hard rollback to a specific checkpoint (
|
|
212
|
+
* Hard rollback to a specific checkpoint (mutex-protected)
|
|
158
213
|
*/
|
|
159
214
|
async hardRollbackTo(commitHash) {
|
|
215
|
+
return this.gitMutex.runExclusive(async () => {
|
|
216
|
+
try {
|
|
217
|
+
await execAsync(`git reset --hard "${commitHash}"`, { cwd: this.config.cwd });
|
|
218
|
+
debug(`Hard rolled back to ${commitHash.substring(0, 7)}`);
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
warn('Failed to hard rollback: ' + (err instanceof Error ? err.message : String(err)));
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Rollback by N iterations (mutex-protected)
|
|
229
|
+
*/
|
|
230
|
+
async rollbackIterations(count = 1) {
|
|
231
|
+
return this.gitMutex.runExclusive(async () => {
|
|
232
|
+
if (this.checkpoints.length < count) {
|
|
233
|
+
warn(`Cannot rollback ${count} iterations, only ${this.checkpoints.length} checkpoints available`);
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
// Get the checkpoint to rollback to
|
|
237
|
+
const targetIndex = this.checkpoints.length - count - 1;
|
|
238
|
+
if (targetIndex < 0) {
|
|
239
|
+
// Rollback before first checkpoint - get parent of first checkpoint
|
|
240
|
+
const firstCheckpoint = this.checkpoints[0];
|
|
241
|
+
if (!firstCheckpoint)
|
|
242
|
+
return false;
|
|
243
|
+
try {
|
|
244
|
+
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
245
|
+
const parentHash = stdout.trim();
|
|
246
|
+
// Call internal version to avoid re-acquiring mutex
|
|
247
|
+
return this.hardRollbackToUnsafe(parentHash);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
warn('Cannot find parent commit for rollback');
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const targetCheckpoint = this.checkpoints[targetIndex];
|
|
255
|
+
if (!targetCheckpoint)
|
|
256
|
+
return false;
|
|
257
|
+
return this.hardRollbackToUnsafe(targetCheckpoint.commitHash);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Internal: Hard rollback without acquiring mutex
|
|
262
|
+
*/
|
|
263
|
+
async hardRollbackToUnsafe(commitHash) {
|
|
160
264
|
try {
|
|
161
265
|
await execAsync(`git reset --hard "${commitHash}"`, { cwd: this.config.cwd });
|
|
162
266
|
debug(`Hard rolled back to ${commitHash.substring(0, 7)}`);
|
|
@@ -168,164 +272,160 @@ export class CheckpointManager {
|
|
|
168
272
|
}
|
|
169
273
|
}
|
|
170
274
|
/**
|
|
171
|
-
*
|
|
275
|
+
* Get the initial commit hash before Ralph started (mutex-protected)
|
|
172
276
|
*/
|
|
173
|
-
async
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
// Get the checkpoint to rollback to
|
|
179
|
-
const targetIndex = this.checkpoints.length - count - 1;
|
|
180
|
-
if (targetIndex < 0) {
|
|
181
|
-
// Rollback before first checkpoint - get parent of first checkpoint
|
|
277
|
+
async getInitialCommit() {
|
|
278
|
+
return this.gitMutex.runExclusive(async () => {
|
|
279
|
+
if (this.checkpoints.length === 0) {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
182
282
|
const firstCheckpoint = this.checkpoints[0];
|
|
183
283
|
if (!firstCheckpoint)
|
|
184
|
-
return
|
|
284
|
+
return null;
|
|
185
285
|
try {
|
|
186
286
|
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
187
|
-
|
|
188
|
-
return this.hardRollbackTo(parentHash);
|
|
287
|
+
return stdout.trim();
|
|
189
288
|
}
|
|
190
289
|
catch {
|
|
191
|
-
|
|
192
|
-
return false;
|
|
290
|
+
return null;
|
|
193
291
|
}
|
|
194
|
-
}
|
|
195
|
-
const targetCheckpoint = this.checkpoints[targetIndex];
|
|
196
|
-
if (!targetCheckpoint)
|
|
197
|
-
return false;
|
|
198
|
-
return this.hardRollbackTo(targetCheckpoint.commitHash);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Get the initial commit hash before Ralph started
|
|
202
|
-
*/
|
|
203
|
-
async getInitialCommit() {
|
|
204
|
-
if (this.checkpoints.length === 0) {
|
|
205
|
-
return null;
|
|
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 {
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
292
|
+
});
|
|
217
293
|
}
|
|
218
294
|
/**
|
|
219
|
-
* Rollback all Ralph changes (
|
|
295
|
+
* Rollback all Ralph changes (mutex-protected)
|
|
220
296
|
*/
|
|
221
297
|
async rollbackAll() {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
298
|
+
return this.gitMutex.runExclusive(async () => {
|
|
299
|
+
if (this.checkpoints.length === 0) {
|
|
300
|
+
warn('No checkpoints to rollback');
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
const firstCheckpoint = this.checkpoints[0];
|
|
304
|
+
if (!firstCheckpoint)
|
|
305
|
+
return false;
|
|
306
|
+
try {
|
|
307
|
+
const { stdout } = await execAsync(`git rev-parse "${firstCheckpoint.commitHash}^"`, { cwd: this.config.cwd });
|
|
308
|
+
const initialCommit = stdout.trim();
|
|
309
|
+
return this.hardRollbackToUnsafe(initialCommit);
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
warn('Cannot find initial commit for rollback');
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
});
|
|
228
316
|
}
|
|
229
317
|
/**
|
|
230
|
-
* Create a task completion checkpoint commit
|
|
318
|
+
* Create a task completion checkpoint commit (mutex-protected)
|
|
319
|
+
* @param taskTitle - Title of the completed task
|
|
320
|
+
* @param taskId - ID of the completed task
|
|
321
|
+
* @param summary - Summary of the task completion
|
|
322
|
+
* @param taskContext - Optional task context for "task X/Y" numbering in commit message
|
|
231
323
|
*/
|
|
232
|
-
async createTaskCheckpoint(taskTitle, taskId, summary) {
|
|
324
|
+
async createTaskCheckpoint(taskTitle, taskId, summary, taskContext) {
|
|
233
325
|
if (!this.config.autoCommit) {
|
|
234
326
|
debug('Auto-commit disabled, skipping task checkpoint');
|
|
235
327
|
return null;
|
|
236
328
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
329
|
+
return this.gitMutex.runExclusive(async () => {
|
|
330
|
+
// Check if there are changes to commit
|
|
331
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
332
|
+
if (!hasChanges) {
|
|
333
|
+
debug('No changes to commit for task checkpoint');
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
// Get list of modified files before staging
|
|
337
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
338
|
+
// Stage all changes
|
|
339
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
340
|
+
if (!staged) {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
// Build commit message for task completion with optional task context
|
|
344
|
+
const truncatedTitle = truncateAtWord(taskTitle, 50);
|
|
345
|
+
let message;
|
|
346
|
+
if (taskContext) {
|
|
347
|
+
message = `${this.config.messagePrefix} task ${taskContext.taskNumber}/${taskContext.totalTasks} complete - ${truncatedTitle}`;
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
message = `${this.config.messagePrefix} task complete - ${truncatedTitle}`;
|
|
351
|
+
}
|
|
352
|
+
const fullMessage = `${message}\n\nTask ID: ${taskId}\nSummary: ${summary}\nFiles modified: ${filesModified.length}`;
|
|
353
|
+
try {
|
|
354
|
+
// Create commit
|
|
355
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
356
|
+
// Get commit hash
|
|
357
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
358
|
+
const commitHash = stdout.trim();
|
|
359
|
+
const checkpoint = {
|
|
360
|
+
iteration: 0, // Task-level checkpoint, not iteration-level
|
|
361
|
+
commitHash,
|
|
362
|
+
message,
|
|
363
|
+
filesModified,
|
|
364
|
+
timestamp: new Date(),
|
|
365
|
+
tokensUsed: 0,
|
|
366
|
+
};
|
|
367
|
+
this.checkpoints.push(checkpoint);
|
|
368
|
+
debug(`Created task checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
369
|
+
return checkpoint;
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
warn('Failed to create task checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
});
|
|
278
376
|
}
|
|
279
377
|
/**
|
|
280
|
-
* Create a failure checkpoint commit (
|
|
378
|
+
* Create a failure checkpoint commit (mutex-protected)
|
|
281
379
|
*/
|
|
282
380
|
async createFailureCheckpoint(taskTitle, taskId, attempt, error) {
|
|
283
381
|
if (!this.config.autoCommit) {
|
|
284
382
|
debug('Auto-commit disabled, skipping failure checkpoint');
|
|
285
383
|
return null;
|
|
286
384
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
385
|
+
return this.gitMutex.runExclusive(async () => {
|
|
386
|
+
// Check if there are changes to commit
|
|
387
|
+
const hasChanges = await this.hasChangesToCommitUnsafe();
|
|
388
|
+
if (!hasChanges) {
|
|
389
|
+
debug('No changes to commit for failure checkpoint');
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
// Get list of modified files before staging
|
|
393
|
+
const filesModified = await this.getModifiedFilesUnsafe();
|
|
394
|
+
// Stage all changes
|
|
395
|
+
const staged = await this.stageAllChangesUnsafe();
|
|
396
|
+
if (!staged) {
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
// Build commit message for task failure
|
|
400
|
+
const truncatedTitle = taskTitle.length > 30
|
|
401
|
+
? taskTitle.substring(0, 27) + '...'
|
|
402
|
+
: taskTitle;
|
|
403
|
+
const message = `${this.config.messagePrefix} task failed (attempt ${attempt}) - ${truncatedTitle}`;
|
|
404
|
+
const errorInfo = error ? `\nError: ${error.substring(0, 200)}` : '';
|
|
405
|
+
const fullMessage = `${message}\n\nTask ID: ${taskId}\nAttempt: ${attempt}${errorInfo}\nFiles modified: ${filesModified.length}`;
|
|
406
|
+
try {
|
|
407
|
+
// Create commit
|
|
408
|
+
await execAsync(`git commit -m "${fullMessage.replace(/"/g, '\\"')}"`, { cwd: this.config.cwd });
|
|
409
|
+
// Get commit hash
|
|
410
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
411
|
+
const commitHash = stdout.trim();
|
|
412
|
+
const checkpoint = {
|
|
413
|
+
iteration: 0, // Task-level checkpoint
|
|
414
|
+
commitHash,
|
|
415
|
+
message,
|
|
416
|
+
filesModified,
|
|
417
|
+
timestamp: new Date(),
|
|
418
|
+
tokensUsed: 0,
|
|
419
|
+
};
|
|
420
|
+
this.checkpoints.push(checkpoint);
|
|
421
|
+
debug(`Created failure checkpoint: ${commitHash.substring(0, 7)} - ${message}`);
|
|
422
|
+
return checkpoint;
|
|
423
|
+
}
|
|
424
|
+
catch (err) {
|
|
425
|
+
warn('Failed to create failure checkpoint commit: ' + (err instanceof Error ? err.message : String(err)));
|
|
426
|
+
return null;
|
|
427
|
+
}
|
|
428
|
+
});
|
|
329
429
|
}
|
|
330
430
|
}
|
|
331
431
|
/**
|
|
@@ -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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAwBlC;;GAEG;AACH,MAAM,cAAc,GAAqB;IACvC,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;CACnB,CAAC;AAEF;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,MAAc;IACjD,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IAErC,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAE7C,0CAA0C;IAC1C,IAAI,SAAS,GAAG,SAAS,GAAG,GAAG,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAoBD;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAmB;IACzB,WAAW,GAAiB,EAAE,CAAC;IAC/B,QAAQ,GAAU,IAAI,KAAK,EAAE,CAAC;IAEtC,YAAY,SAAoC,EAAE;QAChD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACvF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACvF,OAAO,MAAM;iBACV,IAAI,EAAE;iBACN,KAAK,CAAC,IAAI,CAAC;iBACX,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACxD,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,2BAA2B,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,OAAe,EACf,UAAkB,EAClB,WAAyB;QAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iDAAiD;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE1D,oBAAoB;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,kDAAkD;YAClD,2FAA2F;YAC3F,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAErD,IAAI,OAAe,CAAC;YACpB,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,SAAS,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,SAAS,SAAS,MAAM,gBAAgB,EAAE,CAAC;YAC5I,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,cAAc,SAAS,MAAM,gBAAgB,EAAE,CAAC;YACxF,CAAC;YACD,MAAM,WAAW,GAAG,GAAG,OAAO,oBAAoB,UAAU,qBAAqB,aAAa,CAAC,MAAM,EAAE,CAAC;YAExG,IAAI,CAAC;gBACH,gBAAgB;gBAChB,MAAM,SAAS,CAAC,kBAAkB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEjG,kBAAkB;gBAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEjC,MAAM,UAAU,GAAe;oBAC7B,SAAS;oBACT,UAAU;oBACV,OAAO;oBACP,aAAa;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,UAAU;iBACX,CAAC;gBAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,KAAK,CAAC,uBAAuB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;gBAExE,OAAO,UAAU,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,sCAAsC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClG,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,CAAC;gBACH,6DAA6D;gBAC7D,MAAM,SAAS,CAAC,qBAAqB,UAAU,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC9E,KAAK,CAAC,kBAAkB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,qBAAqB,UAAU,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC9E,KAAK,CAAC,uBAAuB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,2BAA2B,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBACpC,IAAI,CAAC,mBAAmB,KAAK,qBAAqB,IAAI,CAAC,WAAW,CAAC,MAAM,wBAAwB,CAAC,CAAC;gBACnG,OAAO,KAAK,CAAC;YACf,CAAC;YAED,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;YAExD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,oEAAoE;gBACpE,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,eAAe;oBAAE,OAAO,KAAK,CAAC;gBAEnC,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC/G,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjC,oDAAoD;oBACpD,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,wCAAwC,CAAC,CAAC;oBAC/C,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAC;YAEpC,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,UAAkB;QACnD,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,qBAAqB,UAAU,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9E,KAAK,CAAC,uBAAuB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,2BAA2B,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAI,CAAC;YAElC,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/G,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,eAAe;gBAAE,OAAO,KAAK,CAAC;YAEnC,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/G,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBAChD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,MAAc,EACd,OAAe,EACf,WAAyB;QAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE1D,oBAAoB;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,sEAAsE;YACtE,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAErD,IAAI,OAAe,CAAC;YACpB,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,SAAS,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,eAAe,cAAc,EAAE,CAAC;YACjI,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,oBAAoB,cAAc,EAAE,CAAC;YAC7E,CAAC;YACD,MAAM,WAAW,GAAG,GAAG,OAAO,gBAAgB,MAAM,cAAc,OAAO,qBAAqB,aAAa,CAAC,MAAM,EAAE,CAAC;YAErH,IAAI,CAAC;gBACH,gBAAgB;gBAChB,MAAM,SAAS,CAAC,kBAAkB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEjG,kBAAkB;gBAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEjC,MAAM,UAAU,GAAe;oBAC7B,SAAS,EAAE,CAAC,EAAE,6CAA6C;oBAC3D,UAAU;oBACV,OAAO;oBACP,aAAa;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,UAAU,EAAE,CAAC;iBACd,CAAC;gBAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,KAAK,CAAC,4BAA4B,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;gBAE7E,OAAO,UAAU,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,2CAA2C,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvG,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAC3B,SAAiB,EACjB,MAAc,EACd,OAAe,EACf,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC3C,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,4CAA4C;YAC5C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE1D,oBAAoB;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,wCAAwC;YACxC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,EAAE;gBAC1C,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBACpC,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,yBAAyB,OAAO,OAAO,cAAc,EAAE,CAAC;YACpG,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,WAAW,GAAG,GAAG,OAAO,gBAAgB,MAAM,cAAc,OAAO,GAAG,SAAS,qBAAqB,aAAa,CAAC,MAAM,EAAE,CAAC;YAEjI,IAAI,CAAC;gBACH,gBAAgB;gBAChB,MAAM,SAAS,CAAC,kBAAkB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEjG,kBAAkB;gBAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEjC,MAAM,UAAU,GAAe;oBAC7B,SAAS,EAAE,CAAC,EAAE,wBAAwB;oBACtC,UAAU;oBACV,OAAO;oBACP,aAAa;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,UAAU,EAAE,CAAC;iBACd,CAAC;gBAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,KAAK,CAAC,+BAA+B,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;gBAEhF,OAAO,UAAU,CAAC;YACpB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,8CAA8C,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1G,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAkC;IACxE,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|