@herbcaudill/ralph 0.3.0 → 0.4.1
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/dist/components/IterationRunner.d.ts.map +1 -1
- package/dist/components/IterationRunner.js +10 -3
- package/dist/components/IterationRunner.js.map +1 -1
- package/dist/lib/mergeWorktreeToMain.d.ts.map +1 -1
- package/dist/lib/mergeWorktreeToMain.js +36 -26
- package/dist/lib/mergeWorktreeToMain.js.map +1 -1
- package/dist/lib/resolveConflicts.d.ts +6 -0
- package/dist/lib/resolveConflicts.d.ts.map +1 -0
- package/dist/lib/resolveConflicts.js +76 -0
- package/dist/lib/resolveConflicts.js.map +1 -0
- package/dist/lib/signalHandler.d.ts.map +1 -1
- package/dist/lib/signalHandler.js +8 -4
- package/dist/lib/signalHandler.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IterationRunner.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AA6B1D,eAAO,MAAM,eAAe,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"IterationRunner.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AA6B1D,eAAO,MAAM,eAAe,GAAI,qBAAqB,KAAK,sBAiUzD,CAAA;AAED,KAAK,KAAK,GAAG;IACX,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef } from "react";
|
|
2
2
|
import { Box, Text, useApp } from "ink";
|
|
3
|
+
import Spinner from "ink-spinner";
|
|
3
4
|
import SelectInput from "ink-select-input";
|
|
4
5
|
import { execSync } from "child_process";
|
|
5
6
|
import { execa } from "execa";
|
|
@@ -11,7 +12,6 @@ import { stashChanges } from "../lib/stashChanges.js";
|
|
|
11
12
|
import { popStash } from "../lib/popStash.js";
|
|
12
13
|
import { createWorktree } from "../lib/createWorktree.js";
|
|
13
14
|
import { copyRalphFilesToWorktree } from "../lib/copyRalphFilesToWorktree.js";
|
|
14
|
-
import { copyRalphFilesFromWorktree } from "../lib/copyRalphFilesFromWorktree.js";
|
|
15
15
|
import { mergeWorktreeToMain } from "../lib/mergeWorktreeToMain.js";
|
|
16
16
|
import { cleanupWorktree } from "../lib/cleanupWorktree.js";
|
|
17
17
|
import { installDependencies } from "../lib/installDependencies.js";
|
|
@@ -31,6 +31,7 @@ export const IterationRunner = ({ totalIterations }) => {
|
|
|
31
31
|
const [error, setError] = useState();
|
|
32
32
|
const [needsInit, setNeedsInit] = useState(null);
|
|
33
33
|
const [initializing, setInitializing] = useState(false);
|
|
34
|
+
const [isRunning, setIsRunning] = useState(false);
|
|
34
35
|
// Use refs for worktree/stash state to avoid triggering effect re-runs
|
|
35
36
|
const currentWorktreeRef = useRef(null);
|
|
36
37
|
const hasStashedChangesRef = useRef(false);
|
|
@@ -154,8 +155,10 @@ export const IterationRunner = ({ totalIterations }) => {
|
|
|
154
155
|
stdout: "pipe",
|
|
155
156
|
stderr: "inherit",
|
|
156
157
|
reject: false, // Don't throw on non-zero exit
|
|
158
|
+
detached: true, // Run in new process group to prevent SIGINT propagation
|
|
157
159
|
});
|
|
158
160
|
childProcessRef.current = child;
|
|
161
|
+
setIsRunning(true);
|
|
159
162
|
let fullOutput = "";
|
|
160
163
|
const worktreeLogFile = join(worktree.path, ".ralph", "events.log");
|
|
161
164
|
// Handle streaming stdout
|
|
@@ -179,6 +182,7 @@ export const IterationRunner = ({ totalIterations }) => {
|
|
|
179
182
|
// Handle process completion
|
|
180
183
|
child.then(result => {
|
|
181
184
|
childProcessRef.current = null;
|
|
185
|
+
setIsRunning(false);
|
|
182
186
|
const gitRoot = getGitRoot(repoRoot);
|
|
183
187
|
// Handle error exit (but not if terminated by signal during cleanup)
|
|
184
188
|
if (result.exitCode !== 0 && !result.isTerminated) {
|
|
@@ -197,8 +201,8 @@ export const IterationRunner = ({ totalIterations }) => {
|
|
|
197
201
|
return;
|
|
198
202
|
}
|
|
199
203
|
// Merge worktree changes back to main
|
|
204
|
+
// Note: .ralph/ files are included in the merge since Claude commits them in the worktree
|
|
200
205
|
try {
|
|
201
|
-
copyRalphFilesFromWorktree(gitRoot, worktree.path);
|
|
202
206
|
mergeWorktreeToMain(gitRoot, worktree);
|
|
203
207
|
cleanupWorktree(gitRoot, worktree);
|
|
204
208
|
currentWorktreeRef.current = null;
|
|
@@ -280,6 +284,9 @@ export const IterationRunner = ({ totalIterations }) => {
|
|
|
280
284
|
React.createElement(Text, { color: "cyan" },
|
|
281
285
|
"Iteration ",
|
|
282
286
|
currentIteration)),
|
|
283
|
-
React.createElement(EventDisplay, { events: events })
|
|
287
|
+
React.createElement(EventDisplay, { events: events }),
|
|
288
|
+
isRunning && (React.createElement(Box, { marginTop: 1 },
|
|
289
|
+
React.createElement(Text, { color: "cyan" },
|
|
290
|
+
React.createElement(Spinner, { type: "dots" }))))));
|
|
284
291
|
};
|
|
285
292
|
//# sourceMappingURL=IterationRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACvC,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,EAAsB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeWorktreeToMain.d.ts","sourceRoot":"","sources":["../../src/lib/mergeWorktreeToMain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"mergeWorktreeToMain.d.ts","sourceRoot":"","sources":["../../src/lib/mergeWorktreeToMain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAA;AAGtD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAmDlF"}
|
|
@@ -1,44 +1,54 @@
|
|
|
1
1
|
import { execSync } from "child_process";
|
|
2
2
|
import { execOptions } from "./types.js";
|
|
3
|
+
import { resolveConflicts } from "./resolveConflicts.js";
|
|
3
4
|
/**
|
|
4
5
|
* Merge worktree changes back to main branch and commit
|
|
5
6
|
*/
|
|
6
7
|
export function mergeWorktreeToMain(repoRoot, worktree) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// First, ensure all changes in worktree are committed
|
|
9
|
+
// (Claude should have done this, but let's be safe)
|
|
10
|
+
const status = execSync("git status --porcelain", {
|
|
11
|
+
...execOptions,
|
|
12
|
+
cwd: worktree.path,
|
|
13
|
+
});
|
|
14
|
+
if (status.toString().trim()) {
|
|
15
|
+
// There are uncommitted changes - commit them
|
|
16
|
+
execSync("git add -A", {
|
|
11
17
|
...execOptions,
|
|
12
18
|
cwd: worktree.path,
|
|
13
19
|
});
|
|
14
|
-
|
|
15
|
-
// There are uncommitted changes - commit them
|
|
16
|
-
execSync("git add -A", {
|
|
17
|
-
...execOptions,
|
|
18
|
-
cwd: worktree.path,
|
|
19
|
-
});
|
|
20
|
-
execSync(`git commit -m "Ralph iteration ${worktree.guid}: auto-commit remaining changes"`, {
|
|
21
|
-
...execOptions,
|
|
22
|
-
cwd: worktree.path,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
// Get current branch in main repo
|
|
26
|
-
const currentBranch = execSync("git branch --show-current", {
|
|
20
|
+
execSync(`git commit -m "Ralph iteration ${worktree.guid}: auto-commit remaining changes"`, {
|
|
27
21
|
...execOptions,
|
|
28
|
-
cwd:
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
cwd: worktree.path,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// Try to merge the worktree branch into current branch
|
|
26
|
+
try {
|
|
33
27
|
execSync(`git merge --no-ff ${worktree.branch} -m "Merge iteration ${worktree.guid}"`, {
|
|
34
28
|
...execOptions,
|
|
35
29
|
cwd: repoRoot,
|
|
36
30
|
});
|
|
37
31
|
}
|
|
38
|
-
catch (
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
catch (mergeError) {
|
|
33
|
+
// Merge failed, likely due to conflicts - try to resolve them with Claude
|
|
34
|
+
console.log("\nMerge conflict detected. Attempting to resolve with Claude...");
|
|
35
|
+
const resolved = resolveConflicts(repoRoot);
|
|
36
|
+
if (!resolved) {
|
|
37
|
+
// Abort the merge if we couldn't resolve
|
|
38
|
+
try {
|
|
39
|
+
execSync("git merge --abort", {
|
|
40
|
+
...execOptions,
|
|
41
|
+
cwd: repoRoot,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Ignore errors from abort
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Failed to merge worktree to main: ${mergeError}\n\n` +
|
|
48
|
+
`Claude was unable to resolve the conflicts automatically.\n` +
|
|
49
|
+
`You may need to resolve conflicts manually in the main repository.`);
|
|
50
|
+
}
|
|
51
|
+
console.log("Conflicts resolved successfully.");
|
|
42
52
|
}
|
|
43
53
|
}
|
|
44
54
|
//# sourceMappingURL=mergeWorktreeToMain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeWorktreeToMain.js","sourceRoot":"","sources":["../../src/lib/mergeWorktreeToMain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"mergeWorktreeToMain.js","sourceRoot":"","sources":["../../src/lib/mergeWorktreeToMain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,QAAsB;IAC1E,sDAAsD;IACtD,oDAAoD;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;QAChD,GAAG,WAAW;QACd,GAAG,EAAE,QAAQ,CAAC,IAAI;KACnB,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,8CAA8C;QAC9C,QAAQ,CAAC,YAAY,EAAE;YACrB,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ,CAAC,IAAI;SACnB,CAAC,CAAA;QACF,QAAQ,CAAC,kCAAkC,QAAQ,CAAC,IAAI,kCAAkC,EAAE;YAC1F,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ,CAAC,IAAI;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC;QACH,QAAQ,CAAC,qBAAqB,QAAQ,CAAC,MAAM,wBAAwB,QAAQ,CAAC,IAAI,GAAG,EAAE;YACrF,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,UAAU,EAAE,CAAC;QACpB,0EAA0E;QAC1E,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;QAE9E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,yCAAyC;YACzC,IAAI,CAAC;gBACH,QAAQ,CAAC,mBAAmB,EAAE;oBAC5B,GAAG,WAAW;oBACd,GAAG,EAAE,QAAQ;iBACd,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;YAED,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,MAAM;gBACnD,6DAA6D;gBAC7D,oEAAoE,CACvE,CAAA;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;IACjD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveConflicts.d.ts","sourceRoot":"","sources":["../../src/lib/resolveConflicts.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA8E1D"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { execOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Use Claude to resolve merge conflicts
|
|
5
|
+
* Returns true if conflicts were resolved successfully, false otherwise
|
|
6
|
+
*/
|
|
7
|
+
export function resolveConflicts(repoRoot) {
|
|
8
|
+
try {
|
|
9
|
+
// Check if there are actually conflicts
|
|
10
|
+
const status = execSync("git status --porcelain", {
|
|
11
|
+
...execOptions,
|
|
12
|
+
cwd: repoRoot,
|
|
13
|
+
}).toString();
|
|
14
|
+
// Look for unmerged files (prefixed with U or having UU status)
|
|
15
|
+
const hasConflicts = status.split("\n").some(line => {
|
|
16
|
+
const statusCode = line.slice(0, 2);
|
|
17
|
+
return statusCode.includes("U") || statusCode === "AA" || statusCode === "DD";
|
|
18
|
+
});
|
|
19
|
+
if (!hasConflicts) {
|
|
20
|
+
return true; // No conflicts to resolve
|
|
21
|
+
}
|
|
22
|
+
// Get list of conflicted files
|
|
23
|
+
const conflictedFiles = execSync("git diff --name-only --diff-filter=U", {
|
|
24
|
+
...execOptions,
|
|
25
|
+
cwd: repoRoot,
|
|
26
|
+
})
|
|
27
|
+
.toString()
|
|
28
|
+
.trim()
|
|
29
|
+
.split("\n")
|
|
30
|
+
.filter(Boolean);
|
|
31
|
+
if (conflictedFiles.length === 0) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
// Use Claude to resolve conflicts
|
|
35
|
+
const fileArgs = conflictedFiles.map(f => `@${f}`).join(" ");
|
|
36
|
+
const prompt = `There are merge conflicts in the following files that need to be resolved:
|
|
37
|
+
|
|
38
|
+
${conflictedFiles.map(f => `- ${f}`).join("\n")}
|
|
39
|
+
|
|
40
|
+
Please resolve the merge conflicts by:
|
|
41
|
+
1. Reading each conflicted file
|
|
42
|
+
2. Understanding both versions (between <<<<<<< and ======= is the current branch, between ======= and >>>>>>> is the incoming branch)
|
|
43
|
+
3. Choosing the correct resolution or combining both changes as appropriate
|
|
44
|
+
4. Removing the conflict markers (<<<<<<, =======, >>>>>>>)
|
|
45
|
+
5. Saving the resolved file
|
|
46
|
+
|
|
47
|
+
After resolving all conflicts, stage the files with git add.`;
|
|
48
|
+
execSync(`claude --permission-mode bypassPermissions -p "${prompt}" ${fileArgs}`, {
|
|
49
|
+
cwd: repoRoot,
|
|
50
|
+
stdio: "inherit",
|
|
51
|
+
});
|
|
52
|
+
// Check if conflicts are resolved (no more unmerged files)
|
|
53
|
+
const statusAfter = execSync("git status --porcelain", {
|
|
54
|
+
...execOptions,
|
|
55
|
+
cwd: repoRoot,
|
|
56
|
+
}).toString();
|
|
57
|
+
const stillHasConflicts = statusAfter.split("\n").some(line => {
|
|
58
|
+
const statusCode = line.slice(0, 2);
|
|
59
|
+
return statusCode.includes("U") || statusCode === "AA" || statusCode === "DD";
|
|
60
|
+
});
|
|
61
|
+
if (stillHasConflicts) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
// Complete the merge
|
|
65
|
+
execSync("git commit --no-edit", {
|
|
66
|
+
...execOptions,
|
|
67
|
+
cwd: repoRoot,
|
|
68
|
+
});
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error(`Failed to resolve conflicts: ${error}`);
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=resolveConflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveConflicts.js","sourceRoot":"","sources":["../../src/lib/resolveConflicts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAChD,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEb,gEAAgE;QAChE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAA;QAC/E,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA,CAAC,0BAA0B;QACxC,CAAC;QAED,+BAA+B;QAC/B,MAAM,eAAe,GAAG,QAAQ,CAAC,sCAAsC,EAAE;YACvE,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC;aACC,QAAQ,EAAE;aACV,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,OAAO,CAAC,CAAA;QAElB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,kCAAkC;QAClC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG;;EAEjB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;6DASc,CAAA;QAEzD,QAAQ,CAAC,kDAAkD,MAAM,KAAK,QAAQ,EAAE,EAAE;YAChF,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,SAAS;SACjB,CAAC,CAAA;QAEF,2DAA2D;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YACrD,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEb,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAA;QAC/E,CAAC,CAAC,CAAA;QAEF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,qBAAqB;QACrB,QAAQ,CAAC,sBAAsB,EAAE;YAC/B,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAA;QACtD,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalHandler.d.ts","sourceRoot":"","sources":["../../src/lib/signalHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signalHandler.d.ts","sourceRoot":"","sources":["../../src/lib/signalHandler.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAE7D,CAAA;AAED,eAAO,MAAM,iBAAiB,YAE7B,CAAA"}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
// Global cleanup function registry for SIGINT/SIGTERM handling
|
|
2
2
|
let cleanupFn = null;
|
|
3
|
+
let isCleaningUp = false;
|
|
3
4
|
export const registerCleanup = (fn) => {
|
|
4
5
|
cleanupFn = fn;
|
|
5
6
|
};
|
|
6
7
|
export const unregisterCleanup = () => {
|
|
7
8
|
cleanupFn = null;
|
|
8
9
|
};
|
|
9
|
-
const handleSignal = async (
|
|
10
|
-
|
|
10
|
+
const handleSignal = async () => {
|
|
11
|
+
// Prevent double handling
|
|
12
|
+
if (isCleaningUp)
|
|
13
|
+
return;
|
|
14
|
+
isCleaningUp = true;
|
|
11
15
|
if (cleanupFn) {
|
|
12
16
|
await cleanupFn();
|
|
13
17
|
}
|
|
14
18
|
process.exit(0);
|
|
15
19
|
};
|
|
16
20
|
// Register handlers once at module load
|
|
17
|
-
process.on("SIGINT", () => handleSignal(
|
|
18
|
-
process.on("SIGTERM", () => handleSignal(
|
|
21
|
+
process.on("SIGINT", () => handleSignal());
|
|
22
|
+
process.on("SIGTERM", () => handleSignal());
|
|
19
23
|
//# sourceMappingURL=signalHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signalHandler.js","sourceRoot":"","sources":["../../src/lib/signalHandler.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,IAAI,SAAS,GAAwC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"signalHandler.js","sourceRoot":"","sources":["../../src/lib/signalHandler.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,IAAI,SAAS,GAAwC,IAAI,CAAA;AACzD,IAAI,YAAY,GAAG,KAAK,CAAA;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAA8B,EAAE,EAAE;IAChE,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,SAAS,GAAG,IAAI,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IAC9B,0BAA0B;IAC1B,IAAI,YAAY;QAAE,OAAM;IACxB,YAAY,GAAG,IAAI,CAAA;IAEnB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,EAAE,CAAA;IACnB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAA;AAED,wCAAwC;AACxC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@herbcaudill/ralph",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Autonomous AI iteration engine for Claude CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"ink-big-text": "^2.0.0",
|
|
48
48
|
"ink-gradient": "^3.0.0",
|
|
49
49
|
"ink-select-input": "^6.2.0",
|
|
50
|
+
"ink-spinner": "^5.0.0",
|
|
50
51
|
"react": "^19.2.3"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|