@herbcaudill/ralph 0.2.0 → 0.3.0
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/bin/ralph.js +1 -1
- package/dist/cli.d.ts +2 -19
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +30 -65
- package/dist/cli.js.map +1 -1
- package/dist/components/App.d.ts +10 -0
- package/dist/components/App.d.ts.map +1 -0
- package/dist/components/App.js +16 -0
- package/dist/components/App.js.map +1 -0
- package/dist/components/EventDisplay.d.ts +7 -0
- package/dist/components/EventDisplay.d.ts.map +1 -0
- package/dist/components/EventDisplay.js +64 -0
- package/dist/components/EventDisplay.js.map +1 -0
- package/dist/components/EventDisplay.replay.test.d.ts +2 -0
- package/dist/components/EventDisplay.replay.test.d.ts.map +1 -0
- package/dist/components/EventDisplay.replay.test.js +403 -0
- package/dist/components/EventDisplay.replay.test.js.map +1 -0
- package/dist/components/EventDisplay.test.d.ts +2 -0
- package/dist/components/EventDisplay.test.d.ts.map +1 -0
- package/dist/components/EventDisplay.test.js +223 -0
- package/dist/components/EventDisplay.test.js.map +1 -0
- package/dist/components/Header.d.ts +8 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +15 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Header.test.d.ts +2 -0
- package/dist/components/Header.test.d.ts.map +1 -0
- package/dist/components/Header.test.js +27 -0
- package/dist/components/Header.test.js.map +1 -0
- package/dist/components/InitRalph.d.ts +3 -0
- package/dist/components/InitRalph.d.ts.map +1 -0
- package/dist/components/InitRalph.js +100 -0
- package/dist/components/InitRalph.js.map +1 -0
- package/dist/components/IterationRunner.d.ts +7 -0
- package/dist/components/IterationRunner.d.ts.map +1 -0
- package/dist/components/IterationRunner.js +285 -0
- package/dist/components/IterationRunner.js.map +1 -0
- package/dist/components/IterationRunner.test.d.ts +2 -0
- package/dist/components/IterationRunner.test.d.ts.map +1 -0
- package/dist/components/IterationRunner.test.js +109 -0
- package/dist/components/IterationRunner.test.js.map +1 -0
- package/dist/components/ReplayLog.d.ts +7 -0
- package/dist/components/ReplayLog.d.ts.map +1 -0
- package/dist/components/ReplayLog.js +51 -0
- package/dist/components/ReplayLog.js.map +1 -0
- package/dist/components/StreamingText.d.ts +7 -0
- package/dist/components/StreamingText.d.ts.map +1 -0
- package/dist/components/StreamingText.js +36 -0
- package/dist/components/StreamingText.js.map +1 -0
- package/dist/components/StreamingText.test.d.ts +2 -0
- package/dist/components/StreamingText.test.d.ts.map +1 -0
- package/dist/components/StreamingText.test.js +86 -0
- package/dist/components/StreamingText.test.js.map +1 -0
- package/dist/components/ToolUse.d.ts +8 -0
- package/dist/components/ToolUse.d.ts.map +1 -0
- package/dist/components/ToolUse.js +10 -0
- package/dist/components/ToolUse.js.map +1 -0
- package/dist/components/ToolUse.test.d.ts +2 -0
- package/dist/components/ToolUse.test.d.ts.map +1 -0
- package/dist/components/ToolUse.test.js +43 -0
- package/dist/components/ToolUse.test.js.map +1 -0
- package/dist/components/eventToBlocks.d.ts +12 -0
- package/dist/components/eventToBlocks.d.ts.map +1 -0
- package/dist/components/eventToBlocks.js +142 -0
- package/dist/components/eventToBlocks.js.map +1 -0
- package/dist/components/eventToBlocks.test.d.ts +2 -0
- package/dist/components/eventToBlocks.test.d.ts.map +1 -0
- package/dist/components/eventToBlocks.test.js +412 -0
- package/dist/components/eventToBlocks.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -21
- package/dist/index.js.map +1 -1
- package/dist/lib/cleanupAllWorktrees.d.ts +5 -0
- package/dist/lib/cleanupAllWorktrees.d.ts.map +1 -0
- package/dist/lib/cleanupAllWorktrees.js +25 -0
- package/dist/lib/cleanupAllWorktrees.js.map +1 -0
- package/dist/lib/cleanupWorktree.d.ts +6 -0
- package/dist/lib/cleanupWorktree.d.ts.map +1 -0
- package/dist/lib/cleanupWorktree.js +33 -0
- package/dist/lib/cleanupWorktree.js.map +1 -0
- package/dist/lib/copyRalphFilesFromWorktree.d.ts +5 -0
- package/dist/lib/copyRalphFilesFromWorktree.d.ts.map +1 -0
- package/dist/lib/copyRalphFilesFromWorktree.js +19 -0
- package/dist/lib/copyRalphFilesFromWorktree.js.map +1 -0
- package/dist/lib/copyRalphFilesToWorktree.d.ts +5 -0
- package/dist/lib/copyRalphFilesToWorktree.d.ts.map +1 -0
- package/dist/lib/copyRalphFilesToWorktree.js +21 -0
- package/dist/lib/copyRalphFilesToWorktree.js.map +1 -0
- package/dist/lib/createWorktree.d.ts +6 -0
- package/dist/lib/createWorktree.d.ts.map +1 -0
- package/dist/lib/createWorktree.js +34 -0
- package/dist/lib/createWorktree.js.map +1 -0
- package/dist/lib/getClaudeVersion.d.ts +2 -0
- package/dist/lib/getClaudeVersion.d.ts.map +1 -0
- package/dist/lib/getClaudeVersion.js +17 -0
- package/dist/lib/getClaudeVersion.js.map +1 -0
- package/dist/lib/getClaudeVersion.test.d.ts +2 -0
- package/dist/lib/getClaudeVersion.test.d.ts.map +1 -0
- package/dist/lib/getClaudeVersion.test.js +39 -0
- package/dist/lib/getClaudeVersion.test.js.map +1 -0
- package/dist/lib/getGitRoot.d.ts +5 -0
- package/dist/lib/getGitRoot.d.ts.map +1 -0
- package/dist/lib/getGitRoot.js +18 -0
- package/dist/lib/getGitRoot.js.map +1 -0
- package/dist/lib/installDependencies.d.ts +5 -0
- package/dist/lib/installDependencies.d.ts.map +1 -0
- package/dist/lib/installDependencies.js +23 -0
- package/dist/lib/installDependencies.js.map +1 -0
- package/dist/lib/installDependencies.test.d.ts +2 -0
- package/dist/lib/installDependencies.test.d.ts.map +1 -0
- package/dist/lib/installDependencies.test.js +37 -0
- package/dist/lib/installDependencies.test.js.map +1 -0
- package/dist/lib/mergeWorktreeToMain.d.ts +6 -0
- package/dist/lib/mergeWorktreeToMain.d.ts.map +1 -0
- package/dist/lib/mergeWorktreeToMain.js +44 -0
- package/dist/lib/mergeWorktreeToMain.js.map +1 -0
- package/dist/lib/popStash.d.ts +5 -0
- package/dist/lib/popStash.d.ts.map +1 -0
- package/dist/lib/popStash.js +17 -0
- package/dist/lib/popStash.js.map +1 -0
- package/dist/lib/rel.test.d.ts +2 -0
- package/dist/lib/rel.test.d.ts.map +1 -0
- package/dist/lib/rel.test.js +36 -0
- package/dist/lib/rel.test.js.map +1 -0
- package/dist/lib/replayLog.d.ts.map +1 -1
- package/dist/lib/replayLog.js +20 -6
- package/dist/lib/replayLog.js.map +1 -1
- package/dist/lib/runIteration.d.ts.map +1 -1
- package/dist/lib/runIteration.js +18 -8
- package/dist/lib/runIteration.js.map +1 -1
- package/dist/lib/shortenTempPaths.test.d.ts +2 -0
- package/dist/lib/shortenTempPaths.test.d.ts.map +1 -0
- package/dist/lib/shortenTempPaths.test.js +46 -0
- package/dist/lib/shortenTempPaths.test.js.map +1 -0
- package/dist/lib/signalHandler.d.ts +3 -0
- package/dist/lib/signalHandler.d.ts.map +1 -0
- package/dist/lib/signalHandler.js +19 -0
- package/dist/lib/signalHandler.js.map +1 -0
- package/dist/lib/stashChanges.d.ts +6 -0
- package/dist/lib/stashChanges.d.ts.map +1 -0
- package/dist/lib/stashChanges.js +27 -0
- package/dist/lib/stashChanges.js.map +1 -0
- package/dist/lib/types.d.ts +8 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +5 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/worktree.d.ts +43 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +210 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/ui/EventProcessor.d.ts +11 -0
- package/dist/ui/EventProcessor.d.ts.map +1 -0
- package/dist/ui/EventProcessor.js +95 -0
- package/dist/ui/EventProcessor.js.map +1 -0
- package/dist/ui/IterationApp.d.ts +10 -0
- package/dist/ui/IterationApp.d.ts.map +1 -0
- package/dist/ui/IterationApp.js +21 -0
- package/dist/ui/IterationApp.js.map +1 -0
- package/dist/ui/IterationUI.d.ts +13 -0
- package/dist/ui/IterationUI.d.ts.map +1 -0
- package/dist/ui/IterationUI.js +19 -0
- package/dist/ui/IterationUI.js.map +1 -0
- package/dist/ui/TextDisplay.d.ts +7 -0
- package/dist/ui/TextDisplay.d.ts.map +1 -0
- package/dist/ui/TextDisplay.js +41 -0
- package/dist/ui/TextDisplay.js.map +1 -0
- package/dist/ui/ToolUseDisplay.d.ts +10 -0
- package/dist/ui/ToolUseDisplay.d.ts.map +1 -0
- package/dist/ui/ToolUseDisplay.js +10 -0
- package/dist/ui/ToolUseDisplay.js.map +1 -0
- package/package.json +23 -4
- package/templates/progress.md +1 -1
- package/templates/prompt.md +11 -1
- package/templates/todo.md +0 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { mkdirSync } from "fs";
|
|
3
|
+
import { tmpdir } from "os";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { randomUUID } from "crypto";
|
|
6
|
+
import { execOptions } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Create a new git worktree for an iteration
|
|
9
|
+
*/
|
|
10
|
+
export function createWorktree(repoRoot) {
|
|
11
|
+
const guid = randomUUID();
|
|
12
|
+
const shortId = guid.slice(-6);
|
|
13
|
+
const branch = `ralph-${shortId}`;
|
|
14
|
+
const worktreesDir = join(tmpdir(), "ralph-worktrees");
|
|
15
|
+
const worktreePath = join(worktreesDir, shortId);
|
|
16
|
+
try {
|
|
17
|
+
// Ensure worktrees directory exists
|
|
18
|
+
mkdirSync(worktreesDir, { recursive: true });
|
|
19
|
+
// Create worktree with new branch from current HEAD
|
|
20
|
+
execSync(`git worktree add -b ${branch} "${worktreePath}"`, {
|
|
21
|
+
...execOptions,
|
|
22
|
+
cwd: repoRoot,
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
path: worktreePath,
|
|
26
|
+
branch,
|
|
27
|
+
guid,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error(`Failed to create worktree: ${error}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=createWorktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWorktree.js","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAA;AAEtD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,OAAO,EAAE,CAAA;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAEhD,IAAI,CAAC;QACH,oCAAoC;QACpC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5C,oDAAoD;QACpD,QAAQ,CAAC,uBAAuB,MAAM,KAAK,YAAY,GAAG,EAAE;YAC1D,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClaudeVersion.d.ts","sourceRoot":"","sources":["../../src/lib/getClaudeVersion.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAO,MAcnC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
export const getClaudeVersion = () => {
|
|
3
|
+
try {
|
|
4
|
+
const output = execSync("claude --version", {
|
|
5
|
+
encoding: "utf-8",
|
|
6
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
7
|
+
}).trim();
|
|
8
|
+
// Output format: "2.1.5 (Claude Code)"
|
|
9
|
+
// Extract the version number
|
|
10
|
+
const match = output.match(/^([\d.]+)/);
|
|
11
|
+
return match ? match[1] : "unknown";
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return "unknown";
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=getClaudeVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClaudeVersion.js","sourceRoot":"","sources":["../../src/lib/getClaudeVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,EAAE;YAC1C,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAA;QAET,uCAAuC;QACvC,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACvC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClaudeVersion.test.d.ts","sourceRoot":"","sources":["../../src/lib/getClaudeVersion.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
import { getClaudeVersion } from "./getClaudeVersion.js";
|
|
4
|
+
vi.mock("child_process");
|
|
5
|
+
describe("getClaudeVersion", () => {
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
vi.resetAllMocks();
|
|
8
|
+
});
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
vi.restoreAllMocks();
|
|
11
|
+
});
|
|
12
|
+
it("should extract version from standard output", () => {
|
|
13
|
+
vi.mocked(execSync).mockReturnValue("2.1.5 (Claude Code)\n");
|
|
14
|
+
expect(getClaudeVersion()).toBe("2.1.5");
|
|
15
|
+
});
|
|
16
|
+
it("should handle version without Claude Code suffix", () => {
|
|
17
|
+
vi.mocked(execSync).mockReturnValue("1.0.0\n");
|
|
18
|
+
expect(getClaudeVersion()).toBe("1.0.0");
|
|
19
|
+
});
|
|
20
|
+
it("should extract version with extra whitespace", () => {
|
|
21
|
+
vi.mocked(execSync).mockReturnValue(" 3.2.1 (Claude Code) \n");
|
|
22
|
+
expect(getClaudeVersion()).toBe("3.2.1");
|
|
23
|
+
});
|
|
24
|
+
it("should return unknown if claude command fails", () => {
|
|
25
|
+
vi.mocked(execSync).mockImplementation(() => {
|
|
26
|
+
throw new Error("Command not found");
|
|
27
|
+
});
|
|
28
|
+
expect(getClaudeVersion()).toBe("unknown");
|
|
29
|
+
});
|
|
30
|
+
it("should return unknown if output format is unexpected", () => {
|
|
31
|
+
vi.mocked(execSync).mockReturnValue("Invalid output format");
|
|
32
|
+
expect(getClaudeVersion()).toBe("unknown");
|
|
33
|
+
});
|
|
34
|
+
it("should handle empty output", () => {
|
|
35
|
+
vi.mocked(execSync).mockReturnValue("");
|
|
36
|
+
expect(getClaudeVersion()).toBe("unknown");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=getClaudeVersion.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClaudeVersion.test.js","sourceRoot":"","sources":["../../src/lib/getClaudeVersion.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAExB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAA;QAC5D,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAC9C,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAA;QAChE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAA;QAC5D,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGitRoot.d.ts","sourceRoot":"","sources":["../../src/lib/getGitRoot.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU9C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { execOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Get the root directory of the git repository
|
|
5
|
+
*/
|
|
6
|
+
export function getGitRoot(cwd) {
|
|
7
|
+
try {
|
|
8
|
+
const root = execSync("git rev-parse --show-toplevel", {
|
|
9
|
+
...execOptions,
|
|
10
|
+
cwd,
|
|
11
|
+
});
|
|
12
|
+
return root.toString().trim();
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new Error("Not in a git repository");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=getGitRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGitRoot.js","sourceRoot":"","sources":["../../src/lib/getGitRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,+BAA+B,EAAE;YACrD,GAAG,WAAW;YACd,GAAG;SACJ,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installDependencies.d.ts","sourceRoot":"","sources":["../../src/lib/installDependencies.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAe9D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { execOptions } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Install dependencies in a worktree if package.json exists
|
|
7
|
+
*/
|
|
8
|
+
export function installDependencies(worktreePath) {
|
|
9
|
+
const packageJsonPath = join(worktreePath, "package.json");
|
|
10
|
+
if (!existsSync(packageJsonPath)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
execSync("pnpm install", {
|
|
15
|
+
...execOptions,
|
|
16
|
+
cwd: worktreePath,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
throw new Error(`Failed to install dependencies: ${error}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=installDependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installDependencies.js","sourceRoot":"","sources":["../../src/lib/installDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IAE1D,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,cAAc,EAAE;YACvB,GAAG,WAAW;YACd,GAAG,EAAE,YAAY;SAClB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installDependencies.test.d.ts","sourceRoot":"","sources":["../../src/lib/installDependencies.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { installDependencies } from "./installDependencies.js";
|
|
3
|
+
import { execSync } from "child_process";
|
|
4
|
+
import { existsSync } from "fs";
|
|
5
|
+
vi.mock("child_process", () => ({
|
|
6
|
+
execSync: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
vi.mock("fs", () => ({
|
|
9
|
+
existsSync: vi.fn(),
|
|
10
|
+
}));
|
|
11
|
+
describe("installDependencies", () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
vi.clearAllMocks();
|
|
14
|
+
});
|
|
15
|
+
it("runs pnpm install when package.json exists", () => {
|
|
16
|
+
vi.mocked(existsSync).mockReturnValue(true);
|
|
17
|
+
installDependencies("/tmp/worktree");
|
|
18
|
+
expect(execSync).toHaveBeenCalledWith("pnpm install", {
|
|
19
|
+
encoding: "utf-8",
|
|
20
|
+
stdio: "pipe",
|
|
21
|
+
cwd: "/tmp/worktree",
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
it("does nothing when package.json does not exist", () => {
|
|
25
|
+
vi.mocked(existsSync).mockReturnValue(false);
|
|
26
|
+
installDependencies("/tmp/worktree");
|
|
27
|
+
expect(execSync).not.toHaveBeenCalled();
|
|
28
|
+
});
|
|
29
|
+
it("throws error when pnpm install fails", () => {
|
|
30
|
+
vi.mocked(existsSync).mockReturnValue(true);
|
|
31
|
+
vi.mocked(execSync).mockImplementation(() => {
|
|
32
|
+
throw new Error("pnpm not found");
|
|
33
|
+
});
|
|
34
|
+
expect(() => installDependencies("/tmp/worktree")).toThrow("Failed to install dependencies: Error: pnpm not found");
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=installDependencies.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installDependencies.test.js","sourceRoot":"","sources":["../../src/lib/installDependencies.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAE/B,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACnB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;CACpB,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAE3C,mBAAmB,CAAC,eAAe,CAAC,CAAA;QAEpC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE;YACpD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,eAAe;SACrB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAE5C,mBAAmB,CAAC,eAAe,CAAC,CAAA;QAEpC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAC3C,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CACxD,uDAAuD,CACxD,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeWorktreeToMain.d.ts","sourceRoot":"","sources":["../../src/lib/mergeWorktreeToMain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAA;AAEtD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAyClF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { execOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Merge worktree changes back to main branch and commit
|
|
5
|
+
*/
|
|
6
|
+
export function mergeWorktreeToMain(repoRoot, worktree) {
|
|
7
|
+
try {
|
|
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", {
|
|
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", {
|
|
27
|
+
...execOptions,
|
|
28
|
+
cwd: repoRoot,
|
|
29
|
+
})
|
|
30
|
+
.toString()
|
|
31
|
+
.trim();
|
|
32
|
+
// Merge the worktree branch into current branch
|
|
33
|
+
execSync(`git merge --no-ff ${worktree.branch} -m "Merge iteration ${worktree.guid}"`, {
|
|
34
|
+
...execOptions,
|
|
35
|
+
cwd: repoRoot,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
// If merge fails, it might be due to conflicts
|
|
40
|
+
throw new Error(`Failed to merge worktree to main: ${error}\n\n` +
|
|
41
|
+
`You may need to resolve conflicts manually in the main repository.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=mergeWorktreeToMain.js.map
|
|
@@ -0,0 +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;AAEtD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,QAAsB;IAC1E,IAAI,CAAC;QACH,sDAAsD;QACtD,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE;YAChD,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ,CAAC,IAAI;SACnB,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,8CAA8C;YAC9C,QAAQ,CAAC,YAAY,EAAE;gBACrB,GAAG,WAAW;gBACd,GAAG,EAAE,QAAQ,CAAC,IAAI;aACnB,CAAC,CAAA;YACF,QAAQ,CAAC,kCAAkC,QAAQ,CAAC,IAAI,kCAAkC,EAAE;gBAC1F,GAAG,WAAW;gBACd,GAAG,EAAE,QAAQ,CAAC,IAAI;aACnB,CAAC,CAAA;QACJ,CAAC;QAED,kCAAkC;QAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,2BAA2B,EAAE;YAC1D,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC;aACC,QAAQ,EAAE;aACV,IAAI,EAAE,CAAA;QAET,gDAAgD;QAChD,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,KAAK,EAAE,CAAC;QACf,+CAA+C;QAC/C,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,MAAM;YAC9C,oEAAoE,CACvE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popStash.d.ts","sourceRoot":"","sources":["../../src/lib/popStash.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS/C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { execOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Pop the most recent stash
|
|
5
|
+
*/
|
|
6
|
+
export function popStash(repoRoot) {
|
|
7
|
+
try {
|
|
8
|
+
execSync("git stash pop", {
|
|
9
|
+
...execOptions,
|
|
10
|
+
cwd: repoRoot,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new Error(`Failed to pop stash: ${error}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=popStash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popStash.js","sourceRoot":"","sources":["../../src/lib/popStash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,QAAQ,CAAC,eAAe,EAAE;YACxB,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rel.test.d.ts","sourceRoot":"","sources":["../../src/lib/rel.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { rel } from "./rel.js";
|
|
3
|
+
describe("rel", () => {
|
|
4
|
+
it("converts absolute path to relative path", () => {
|
|
5
|
+
const absolutePath = `${process.cwd()}/src/lib/rel.ts`;
|
|
6
|
+
const result = rel(absolutePath);
|
|
7
|
+
expect(result).toBe("src/lib/rel.ts");
|
|
8
|
+
});
|
|
9
|
+
it("returns just filename for /var/folders/ temp paths", () => {
|
|
10
|
+
const tempPath = "/var/folders/xy/abc123/T/temp-file.txt";
|
|
11
|
+
const result = rel(tempPath);
|
|
12
|
+
expect(result).toBe("temp-file.txt");
|
|
13
|
+
});
|
|
14
|
+
it("returns just filename for /tmp/ paths", () => {
|
|
15
|
+
const tmpPath = "/tmp/some-temp-file.json";
|
|
16
|
+
const result = rel(tmpPath);
|
|
17
|
+
expect(result).toBe("some-temp-file.json");
|
|
18
|
+
});
|
|
19
|
+
it("returns original path if already relative", () => {
|
|
20
|
+
const relativePath = "src/lib/rel.ts";
|
|
21
|
+
const result = rel(relativePath);
|
|
22
|
+
expect(result).toBe(relativePath);
|
|
23
|
+
});
|
|
24
|
+
it("handles path outside current directory", () => {
|
|
25
|
+
const outsidePath = "/completely/different/path/file.ts";
|
|
26
|
+
const result = rel(outsidePath);
|
|
27
|
+
// Should return relative path from cwd (will have ../.. etc)
|
|
28
|
+
expect(result).toContain("file.ts");
|
|
29
|
+
});
|
|
30
|
+
it("handles root directory path", () => {
|
|
31
|
+
const rootPath = "/";
|
|
32
|
+
const result = rel(rootPath);
|
|
33
|
+
expect(result).toBeTruthy();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=rel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rel.test.js","sourceRoot":"","sources":["../../src/lib/rel.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAA;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,QAAQ,GAAG,wCAAwC,CAAA;QACzD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG,0BAA0B,CAAA;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,YAAY,GAAG,gBAAgB,CAAA;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,WAAW,GAAG,oCAAoC,CAAA;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;QAC/B,6DAA6D;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,QAAQ,GAAG,GAAG,CAAA;QACpB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replayLog.d.ts","sourceRoot":"","sources":["../../src/lib/replayLog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replayLog.d.ts","sourceRoot":"","sources":["../../src/lib/replayLog.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,SAkCzC,CAAA"}
|
package/dist/lib/replayLog.js
CHANGED
|
@@ -1,21 +1,35 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
1
|
import { readFileSync } from "fs";
|
|
3
|
-
import {
|
|
2
|
+
import { render } from "ink";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { IterationApp } from "../ui/IterationApp.js";
|
|
4
5
|
export const replayLog = (filePath) => {
|
|
5
|
-
console.log(chalk.cyan(`Replaying: ${filePath}`));
|
|
6
|
-
console.log(chalk.dim("─".repeat(40)) + "\n");
|
|
7
6
|
const content = readFileSync(filePath, "utf-8");
|
|
8
7
|
// Log file contains pretty-printed JSON objects separated by blank lines
|
|
9
8
|
const eventStrings = content.split(/\n\n+/).filter(s => s.trim());
|
|
9
|
+
let processor = null;
|
|
10
|
+
// Render Ink UI
|
|
11
|
+
const { unmount } = render(React.createElement(IterationApp, {
|
|
12
|
+
iteration: 0,
|
|
13
|
+
totalIterations: 0,
|
|
14
|
+
onProcessEvent: (p) => {
|
|
15
|
+
processor = p;
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
// Process all events
|
|
10
19
|
for (const eventStr of eventStrings) {
|
|
11
20
|
try {
|
|
12
21
|
const event = JSON.parse(eventStr);
|
|
13
|
-
|
|
22
|
+
if (processor) {
|
|
23
|
+
processor.processEvent(event);
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
26
|
catch {
|
|
16
27
|
// Skip malformed entries
|
|
17
28
|
}
|
|
18
29
|
}
|
|
19
|
-
|
|
30
|
+
// Wait a bit to let the UI render before unmounting
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
unmount();
|
|
33
|
+
}, 100);
|
|
20
34
|
};
|
|
21
35
|
//# sourceMappingURL=replayLog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replayLog.js","sourceRoot":"","sources":["../../src/lib/replayLog.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"replayLog.js","sourceRoot":"","sources":["../../src/lib/replayLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,yEAAyE;IACzE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAEjE,IAAI,SAAS,GAA0B,IAAI,CAAA;IAE3C,gBAAgB;IAChB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CACxB,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;QAChC,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,CAAC,CAAiB,EAAE,EAAE;YACpC,SAAS,GAAG,CAAC,CAAA;QACf,CAAC;KACF,CAAC,CACH,CAAA;IAED,qBAAqB;IACrB,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,CAAA;IACX,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runIteration.d.ts","sourceRoot":"","sources":["../../src/lib/runIteration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runIteration.d.ts","sourceRoot":"","sources":["../../src/lib/runIteration.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,EAAE,YAAY,MAAM,SAuGzD,CAAA"}
|
package/dist/lib/runIteration.js
CHANGED
|
@@ -2,18 +2,26 @@ import chalk from "chalk";
|
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
3
|
import { appendFileSync, writeFileSync } from "fs";
|
|
4
4
|
import { join } from "path";
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
5
|
+
import { render } from "ink";
|
|
6
|
+
import React from "react";
|
|
7
|
+
import { IterationApp } from "../ui/IterationApp.js";
|
|
7
8
|
const logFile = join(process.cwd(), ".ralph", "events.log");
|
|
8
9
|
export const runIteration = (i, iterations) => {
|
|
9
10
|
if (i > iterations) {
|
|
10
11
|
console.log(chalk.green(`Completed ${iterations} iterations.`));
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
|
-
console.log(chalk.cyan(`Iteration ${i}`));
|
|
14
|
-
console.log(chalk.dim("─".repeat(40)) + "\n");
|
|
15
14
|
// Clear log file at start of each iteration
|
|
16
15
|
writeFileSync(logFile, "");
|
|
16
|
+
let processor = null;
|
|
17
|
+
// Render Ink UI
|
|
18
|
+
const { unmount } = render(React.createElement(IterationApp, {
|
|
19
|
+
iteration: i,
|
|
20
|
+
totalIterations: iterations,
|
|
21
|
+
onProcessEvent: (p) => {
|
|
22
|
+
processor = p;
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
17
25
|
const child = spawn("claude", [
|
|
18
26
|
"--permission-mode",
|
|
19
27
|
"bypassPermissions",
|
|
@@ -33,6 +41,8 @@ export const runIteration = (i, iterations) => {
|
|
|
33
41
|
if (!stdoutEnded || !closeInfo)
|
|
34
42
|
return;
|
|
35
43
|
const { code, signal } = closeInfo;
|
|
44
|
+
// Unmount Ink UI
|
|
45
|
+
unmount();
|
|
36
46
|
if (code !== 0) {
|
|
37
47
|
console.error(chalk.red(`Claude exited with code ${code}${signal ? ` (signal: ${signal})` : ""}`));
|
|
38
48
|
console.error(chalk.yellow("Last 2000 chars of output:"));
|
|
@@ -43,9 +53,6 @@ export const runIteration = (i, iterations) => {
|
|
|
43
53
|
console.log(chalk.green("Todo list complete, exiting."));
|
|
44
54
|
process.exit(0);
|
|
45
55
|
}
|
|
46
|
-
// Flush any remaining text in the line buffer and reset state
|
|
47
|
-
flushLine();
|
|
48
|
-
resetTextState();
|
|
49
56
|
console.log("\n"); // Add blank lines before next iteration
|
|
50
57
|
runIteration(i + 1, iterations);
|
|
51
58
|
};
|
|
@@ -57,7 +64,9 @@ export const runIteration = (i, iterations) => {
|
|
|
57
64
|
try {
|
|
58
65
|
const event = JSON.parse(line);
|
|
59
66
|
appendFileSync(logFile, JSON.stringify(event, null, 2) + "\n\n");
|
|
60
|
-
|
|
67
|
+
if (processor) {
|
|
68
|
+
processor.processEvent(event);
|
|
69
|
+
}
|
|
61
70
|
}
|
|
62
71
|
catch {
|
|
63
72
|
// Incomplete JSON line, ignore
|
|
@@ -74,6 +83,7 @@ export const runIteration = (i, iterations) => {
|
|
|
74
83
|
handleIterationComplete();
|
|
75
84
|
});
|
|
76
85
|
child.on("error", error => {
|
|
86
|
+
unmount();
|
|
77
87
|
console.error(chalk.red("Error running Claude:"), error);
|
|
78
88
|
process.exit(1);
|
|
79
89
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runIteration.js","sourceRoot":"","sources":["../../src/lib/runIteration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"runIteration.js","sourceRoot":"","sources":["../../src/lib/runIteration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortenTempPaths.test.d.ts","sourceRoot":"","sources":["../../src/lib/shortenTempPaths.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { shortenTempPaths } from "./shortenTempPaths.js";
|
|
3
|
+
describe("shortenTempPaths", () => {
|
|
4
|
+
it("shortens /var/folders/ paths to just filename", () => {
|
|
5
|
+
const text = "Reading file /var/folders/xy/abc123/T/temp-file.txt";
|
|
6
|
+
const result = shortenTempPaths(text);
|
|
7
|
+
expect(result).toBe("Reading file temp-file.txt");
|
|
8
|
+
});
|
|
9
|
+
it("shortens /tmp/ paths to just filename", () => {
|
|
10
|
+
const text = "Writing to /tmp/output.json";
|
|
11
|
+
const result = shortenTempPaths(text);
|
|
12
|
+
expect(result).toBe("Writing to output.json");
|
|
13
|
+
});
|
|
14
|
+
it("handles multiple temp paths in one string", () => {
|
|
15
|
+
const text = "Copying /var/folders/xy/abc123/T/input.txt to /tmp/output.txt";
|
|
16
|
+
const result = shortenTempPaths(text);
|
|
17
|
+
expect(result).toBe("Copying input.txt to output.txt");
|
|
18
|
+
});
|
|
19
|
+
it("preserves non-temp paths", () => {
|
|
20
|
+
const text = "Reading /home/user/project/file.ts";
|
|
21
|
+
const result = shortenTempPaths(text);
|
|
22
|
+
expect(result).toBe("Reading /home/user/project/file.ts");
|
|
23
|
+
});
|
|
24
|
+
it("handles text with no temp paths", () => {
|
|
25
|
+
const text = "This is just a regular string";
|
|
26
|
+
const result = shortenTempPaths(text);
|
|
27
|
+
expect(result).toBe("This is just a regular string");
|
|
28
|
+
});
|
|
29
|
+
it("handles empty string", () => {
|
|
30
|
+
const result = shortenTempPaths("");
|
|
31
|
+
expect(result).toBe("");
|
|
32
|
+
});
|
|
33
|
+
it("handles path with spaces in filename", () => {
|
|
34
|
+
const text = "File at /var/folders/xy/abc/T/my file.txt exists";
|
|
35
|
+
const result = shortenTempPaths(text);
|
|
36
|
+
// The regex matches until whitespace, so 'my file.txt' becomes just 'my'
|
|
37
|
+
expect(result).toBe("File at my file.txt exists");
|
|
38
|
+
});
|
|
39
|
+
it("handles path with trailing slash", () => {
|
|
40
|
+
const text = "Directory /var/folders/xy/abc123/T/";
|
|
41
|
+
const result = shortenTempPaths(text);
|
|
42
|
+
// Path ends with /, so split('/').pop() returns empty string, regex leaves it unchanged
|
|
43
|
+
expect(result).toBe("Directory /var/folders/xy/abc123/T/");
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=shortenTempPaths.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortenTempPaths.test.js","sourceRoot":"","sources":["../../src/lib/shortenTempPaths.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,qDAAqD,CAAA;QAClE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,6BAA6B,CAAA;QAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,+DAA+D,CAAA;QAC5E,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,oCAAoC,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,+BAA+B,CAAA;QAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,kDAAkD,CAAA;QAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,yEAAyE;QACzE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,qCAAqC,CAAA;QAClD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,wFAAwF;QACxF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalHandler.d.ts","sourceRoot":"","sources":["../../src/lib/signalHandler.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAE7D,CAAA;AAED,eAAO,MAAM,iBAAiB,YAE7B,CAAA"}
|