@herbcaudill/ralph 0.4.1 → 0.5.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.
Files changed (46) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +32 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/components/App.d.ts.map +1 -1
  5. package/dist/components/App.js +2 -5
  6. package/dist/components/App.js.map +1 -1
  7. package/dist/components/EventDisplay.d.ts +9 -1
  8. package/dist/components/EventDisplay.d.ts.map +1 -1
  9. package/dist/components/EventDisplay.js +109 -56
  10. package/dist/components/EventDisplay.js.map +1 -1
  11. package/dist/components/EventDisplay.replay.test.js +31 -3
  12. package/dist/components/EventDisplay.replay.test.js.map +1 -1
  13. package/dist/components/EventDisplay.test.js +107 -11
  14. package/dist/components/EventDisplay.test.js.map +1 -1
  15. package/dist/components/Header.d.ts +2 -1
  16. package/dist/components/Header.d.ts.map +1 -1
  17. package/dist/components/Header.js +2 -2
  18. package/dist/components/Header.js.map +1 -1
  19. package/dist/components/IterationRunner.d.ts +3 -1
  20. package/dist/components/IterationRunner.d.ts.map +1 -1
  21. package/dist/components/IterationRunner.js +99 -184
  22. package/dist/components/IterationRunner.js.map +1 -1
  23. package/dist/components/ReplayLog.d.ts +3 -1
  24. package/dist/components/ReplayLog.d.ts.map +1 -1
  25. package/dist/components/ReplayLog.js +2 -2
  26. package/dist/components/ReplayLog.js.map +1 -1
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +0 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/addTodo.d.ts +10 -0
  32. package/dist/lib/addTodo.d.ts.map +1 -0
  33. package/dist/lib/addTodo.js +55 -0
  34. package/dist/lib/addTodo.js.map +1 -0
  35. package/dist/lib/cleanupAllWorktrees.d.ts.map +1 -1
  36. package/dist/lib/cleanupAllWorktrees.js +2 -4
  37. package/dist/lib/cleanupAllWorktrees.js.map +1 -1
  38. package/dist/lib/createWorktree.d.ts.map +1 -1
  39. package/dist/lib/createWorktree.js +2 -3
  40. package/dist/lib/createWorktree.js.map +1 -1
  41. package/dist/lib/types.d.ts +5 -0
  42. package/dist/lib/types.d.ts.map +1 -1
  43. package/dist/lib/types.js +10 -0
  44. package/dist/lib/types.js.map +1 -1
  45. package/package.json +14 -15
  46. package/templates/prompt.md +1 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,eAAO,MAAM,MAAM,GAAI,iCAAiC,KAAK,sBAiB5D,CAAA;AAED,KAAK,KAAK,GAAG;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,eAAO,MAAM,MAAM,GAAI,wCAAwC,KAAK,sBAiBnE,CAAA;AAED,KAAK,KAAK,GAAG;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
@@ -2,8 +2,8 @@ import React from "react";
2
2
  import { Box, Text } from "ink";
3
3
  import BigText from "ink-big-text";
4
4
  import Gradient from "ink-gradient";
5
- export const Header = ({ claudeVersion, ralphVersion }) => {
6
- return (React.createElement(Box, { flexDirection: "column", marginBottom: 1, borderStyle: "single", padding: 1, alignItems: "center" },
5
+ export const Header = ({ claudeVersion, ralphVersion, width }) => {
6
+ return (React.createElement(Box, { flexDirection: "column", marginBottom: 1, borderStyle: "single", alignItems: "center", width: width },
7
7
  React.createElement(Gradient, { colors: ["#30A6E4", "#EBC635"] },
8
8
  React.createElement(BigText, { text: "Ralph", font: "tiny" })),
9
9
  React.createElement(Text, { dimColor: true },
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,QAAQ,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,aAAa,EAAE,YAAY,EAAS,EAAE,EAAE;IAC/D,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,CAAC,EACf,WAAW,EAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,EACV,UAAU,EAAC,QAAQ;QAEnB,oBAAC,QAAQ,IAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YACtC,oBAAC,OAAO,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,CAC3B;QACX,oBAAC,IAAI,IAAC,QAAQ;;YACS,YAAY;;YAAkB,aAAa,CAC3D,CACH,CACP,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,QAAQ,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAS,EAAE,EAAE;IACtE,OAAO,CACL,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,CAAC,EACf,WAAW,EAAC,QAAQ,EACpB,UAAU,EAAC,QAAQ,EACnB,KAAK,EAAE,KAAK;QAEZ,oBAAC,QAAQ,IAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YACtC,oBAAC,OAAO,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,CAC3B;QACX,oBAAC,IAAI,IAAC,QAAQ;;YACS,YAAY;;YAAkB,aAAa,CAC3D,CACH,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
- export declare const IterationRunner: ({ totalIterations }: Props) => React.JSX.Element;
2
+ export declare const IterationRunner: ({ totalIterations, claudeVersion, ralphVersion }: Props) => React.JSX.Element;
3
3
  type Props = {
4
4
  totalIterations: number;
5
+ claudeVersion: string;
6
+ ralphVersion: string;
5
7
  };
6
8
  export {};
7
9
  //# sourceMappingURL=IterationRunner.d.ts.map
@@ -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,sBAiUzD,CAAA;AAED,KAAK,KAAK,GAAG;IACX,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA"}
1
+ {"version":3,"file":"IterationRunner.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAuB1D,eAAO,MAAM,eAAe,GAAI,kDAAkD,KAAK,sBAuPtF,CAAA;AAED,KAAK,KAAK,GAAG;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA"}
@@ -2,75 +2,30 @@ import React, { useState, useEffect, useRef } from "react";
2
2
  import { Box, Text, useApp } from "ink";
3
3
  import Spinner from "ink-spinner";
4
4
  import SelectInput from "ink-select-input";
5
- import { execSync } from "child_process";
6
- import { execa } from "execa";
7
- import { appendFileSync, mkdirSync, existsSync } from "fs";
8
- import { join } from "path";
5
+ import { spawn, execSync } from "child_process";
6
+ import { appendFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
7
+ import { join, dirname } from "path";
9
8
  import { EventDisplay } from "./EventDisplay.js";
10
- import { getGitRoot } from "../lib/getGitRoot.js";
11
- import { stashChanges } from "../lib/stashChanges.js";
12
- import { popStash } from "../lib/popStash.js";
13
- import { createWorktree } from "../lib/createWorktree.js";
14
- import { copyRalphFilesToWorktree } from "../lib/copyRalphFilesToWorktree.js";
15
- import { mergeWorktreeToMain } from "../lib/mergeWorktreeToMain.js";
16
- import { cleanupWorktree } from "../lib/cleanupWorktree.js";
17
- import { installDependencies } from "../lib/installDependencies.js";
18
- import { registerCleanup, unregisterCleanup } from "../lib/signalHandler.js";
19
- const repoRoot = process.cwd();
20
- const ralphDir = join(repoRoot, ".ralph");
9
+ const logFile = join(process.cwd(), ".ralph", "events.log");
10
+ const ralphDir = join(process.cwd(), ".ralph");
21
11
  const checkRequiredFiles = () => {
22
12
  const requiredFiles = ["prompt.md", "todo.md", "progress.md"];
23
13
  const missing = requiredFiles.filter(file => !existsSync(join(ralphDir, file)));
24
14
  return { missing, exists: missing.length === 0 };
25
15
  };
26
- export const IterationRunner = ({ totalIterations }) => {
16
+ export const IterationRunner = ({ totalIterations, claudeVersion, ralphVersion }) => {
27
17
  const { exit } = useApp();
28
18
  const [currentIteration, setCurrentIteration] = useState(1);
29
19
  const [events, setEvents] = useState([]);
20
+ const eventsRef = useRef([]);
21
+ const [completedIterations, setCompletedIterations] = useState([]);
30
22
  const [output, setOutput] = useState("");
31
23
  const [error, setError] = useState();
32
24
  const [needsInit, setNeedsInit] = useState(null);
33
25
  const [initializing, setInitializing] = useState(false);
34
26
  const [isRunning, setIsRunning] = useState(false);
35
- // Use refs for worktree/stash state to avoid triggering effect re-runs
36
- const currentWorktreeRef = useRef(null);
37
- const hasStashedChangesRef = useRef(false);
38
- const childProcessRef = useRef(null);
39
27
  // Only use input handling if stdin supports raw mode
40
28
  const stdinSupportsRawMode = process.stdin.isTTY === true;
41
- // Cleanup function for worktrees and stash
42
- const cleanup = () => {
43
- try {
44
- if (currentWorktreeRef.current) {
45
- const gitRoot = getGitRoot(repoRoot);
46
- cleanupWorktree(gitRoot, currentWorktreeRef.current);
47
- currentWorktreeRef.current = null;
48
- }
49
- if (hasStashedChangesRef.current) {
50
- const gitRoot = getGitRoot(repoRoot);
51
- popStash(gitRoot);
52
- hasStashedChangesRef.current = false;
53
- }
54
- }
55
- catch (err) {
56
- console.error(`Cleanup error: ${err}`);
57
- }
58
- };
59
- // Register cleanup for SIGINT/SIGTERM (Ctrl+C)
60
- useEffect(() => {
61
- registerCleanup(async () => {
62
- const child = childProcessRef.current;
63
- if (child) {
64
- child.kill("SIGTERM");
65
- await child; // Wait for process to actually terminate
66
- childProcessRef.current = null;
67
- }
68
- cleanup();
69
- });
70
- return () => {
71
- unregisterCleanup();
72
- };
73
- }, []);
74
29
  const handleInitSelection = (item) => {
75
30
  if (item.value === "yes") {
76
31
  setInitializing(true);
@@ -97,10 +52,12 @@ export const IterationRunner = ({ totalIterations }) => {
97
52
  }, 100);
98
53
  }
99
54
  };
55
+ // Keep ref in sync with events state for access in callbacks
56
+ useEffect(() => {
57
+ eventsRef.current = events;
58
+ }, [events]);
100
59
  useEffect(() => {
101
60
  if (currentIteration > totalIterations) {
102
- // Clean up and exit
103
- cleanup();
104
61
  exit();
105
62
  return;
106
63
  }
@@ -117,140 +74,102 @@ export const IterationRunner = ({ totalIterations }) => {
117
74
  }
118
75
  return;
119
76
  }
120
- let worktree = null;
121
- try {
122
- const gitRoot = getGitRoot(repoRoot);
123
- // Stash changes before first iteration
124
- if (currentIteration === 1) {
125
- const hasChanges = stashChanges(gitRoot);
126
- hasStashedChangesRef.current = hasChanges;
127
- }
128
- // Create worktree for this iteration
129
- worktree = createWorktree(gitRoot);
130
- currentWorktreeRef.current = worktree;
131
- // Copy .ralph files to worktree
132
- copyRalphFilesToWorktree(gitRoot, worktree.path);
133
- // Install dependencies if package.json exists
134
- installDependencies(worktree.path);
135
- // Clear events for this iteration
136
- setEvents([]);
137
- setOutput("");
138
- // Ensure .ralph directory exists in worktree
139
- const worktreeRalphDir = join(worktree.path, ".ralph");
140
- mkdirSync(worktreeRalphDir, { recursive: true });
141
- const child = execa("claude", [
142
- "--permission-mode",
143
- "bypassPermissions",
144
- "-p",
145
- "@.ralph/prompt.md",
146
- "@.ralph/todo.md",
147
- "@.ralph/progress.md",
148
- "--output-format",
149
- "stream-json",
150
- "--include-partial-messages",
151
- "--verbose",
152
- ], {
153
- cwd: worktree.path,
154
- stdin: "inherit",
155
- stdout: "pipe",
156
- stderr: "inherit",
157
- reject: false, // Don't throw on non-zero exit
158
- detached: true, // Run in new process group to prevent SIGINT propagation
159
- });
160
- childProcessRef.current = child;
161
- setIsRunning(true);
162
- let fullOutput = "";
163
- const worktreeLogFile = join(worktree.path, ".ralph", "events.log");
164
- // Handle streaming stdout
165
- child.stdout?.on("data", (data) => {
166
- const chunk = data.toString();
167
- for (const line of chunk.split("\n")) {
168
- if (!line.trim())
169
- continue;
170
- try {
171
- const event = JSON.parse(line);
172
- appendFileSync(worktreeLogFile, JSON.stringify(event, null, 2) + "\n\n");
173
- setEvents(prev => [...prev, event]);
174
- }
175
- catch {
176
- // Incomplete JSON line, ignore
177
- }
178
- }
179
- fullOutput += chunk;
180
- setOutput(fullOutput);
181
- });
182
- // Handle process completion
183
- child.then(result => {
184
- childProcessRef.current = null;
185
- setIsRunning(false);
186
- const gitRoot = getGitRoot(repoRoot);
187
- // Handle error exit (but not if terminated by signal during cleanup)
188
- if (result.exitCode !== 0 && !result.isTerminated) {
189
- setError(`Claude exited with code ${result.exitCode}${result.signal ? ` (signal: ${result.signal})` : ""}\n\nLast 2000 chars:\n${fullOutput.slice(-2000)}`);
190
- cleanupWorktree(gitRoot, worktree);
191
- currentWorktreeRef.current = null;
192
- setTimeout(() => {
193
- cleanup();
194
- exit();
195
- process.exit(1);
196
- }, 100);
197
- return;
198
- }
199
- // If terminated during cleanup, don't proceed
200
- if (result.isTerminated) {
201
- return;
202
- }
203
- // Merge worktree changes back to main
204
- // Note: .ralph/ files are included in the merge since Claude commits them in the worktree
205
- try {
206
- mergeWorktreeToMain(gitRoot, worktree);
207
- cleanupWorktree(gitRoot, worktree);
208
- currentWorktreeRef.current = null;
209
- }
210
- catch (err) {
211
- setError(`Failed to merge worktree: ${err}`);
212
- cleanupWorktree(gitRoot, worktree);
213
- currentWorktreeRef.current = null;
214
- setTimeout(() => {
215
- cleanup();
216
- exit();
217
- process.exit(1);
218
- }, 100);
219
- return;
220
- }
221
- // Check if complete
222
- if (fullOutput.includes("<promise>COMPLETE</promise>")) {
223
- cleanup();
77
+ // Ensure .ralph directory exists and clear log file at start of each iteration
78
+ mkdirSync(dirname(logFile), { recursive: true });
79
+ writeFileSync(logFile, "");
80
+ setEvents([]);
81
+ setOutput("");
82
+ const child = spawn("claude", [
83
+ "--permission-mode",
84
+ "bypassPermissions",
85
+ "-p",
86
+ "@.ralph/prompt.md",
87
+ "@.ralph/todo.md",
88
+ "@.ralph/progress.md",
89
+ "--output-format",
90
+ "stream-json",
91
+ "--include-partial-messages",
92
+ "--verbose",
93
+ ], {
94
+ stdio: ["inherit", "pipe", "inherit"],
95
+ env: {
96
+ ...process.env,
97
+ // Disable LSP plugins to avoid crashes when TypeScript LSP server errors
98
+ ENABLE_LSP_TOOL: "0",
99
+ },
100
+ });
101
+ setIsRunning(true);
102
+ let fullOutput = "";
103
+ let stdoutEnded = false;
104
+ let closeInfo = null;
105
+ let finalResult = "";
106
+ const handleIterationComplete = () => {
107
+ if (!stdoutEnded || !closeInfo)
108
+ return;
109
+ setIsRunning(false);
110
+ const { code, signal } = closeInfo;
111
+ if (code !== 0) {
112
+ setError(`Claude exited with code ${code}${signal ? ` (signal: ${signal})` : ""}\n\nLast 2000 chars:\n${fullOutput.slice(-2000)}`);
113
+ setTimeout(() => {
224
114
  exit();
225
- process.exit(0);
226
- return;
227
- }
228
- // Move to next iteration
229
- setTimeout(() => setCurrentIteration(i => i + 1), 500);
230
- });
231
- return () => {
232
- child.kill();
233
- childProcessRef.current = null;
234
- };
235
- }
236
- catch (err) {
237
- setError(`Failed to set up worktree: ${err}`);
238
- if (worktree) {
115
+ process.exit(1);
116
+ }, 100);
117
+ return;
118
+ }
119
+ // Only check Claude's final result message, not the entire output
120
+ // (which may include file contents that contain the completion string)
121
+ if (finalResult.includes("<promise>COMPLETE</promise>")) {
122
+ exit();
123
+ process.exit(0);
124
+ return;
125
+ }
126
+ // Save current events and move to next iteration
127
+ const currentEvents = eventsRef.current;
128
+ setCompletedIterations(prev => [
129
+ ...prev,
130
+ { iteration: currentIteration, events: currentEvents },
131
+ ]);
132
+ setTimeout(() => setCurrentIteration(i => i + 1), 500);
133
+ };
134
+ child.stdout.on("data", data => {
135
+ const chunk = data.toString();
136
+ for (const line of chunk.split("\n")) {
137
+ if (!line.trim())
138
+ continue;
239
139
  try {
240
- const gitRoot = getGitRoot(repoRoot);
241
- cleanupWorktree(gitRoot, worktree);
242
- currentWorktreeRef.current = null;
140
+ const event = JSON.parse(line);
141
+ appendFileSync(logFile, JSON.stringify(event, null, 2) + "\n\n");
142
+ setEvents(prev => [...prev, event]);
143
+ // Capture the final result message from result events
144
+ if (event.type === "result" && typeof event.result === "string") {
145
+ finalResult = event.result;
146
+ }
243
147
  }
244
148
  catch {
245
- // Ignore cleanup errors
149
+ // Incomplete JSON line, ignore
246
150
  }
247
151
  }
152
+ fullOutput += chunk;
153
+ setOutput(fullOutput);
154
+ });
155
+ child.stdout.on("end", () => {
156
+ stdoutEnded = true;
157
+ handleIterationComplete();
158
+ });
159
+ child.on("close", (code, signal) => {
160
+ closeInfo = { code, signal };
161
+ handleIterationComplete();
162
+ });
163
+ child.on("error", error => {
164
+ setError(`Error running Claude: ${error.message}`);
248
165
  setTimeout(() => {
249
- cleanup();
250
166
  exit();
251
167
  process.exit(1);
252
168
  }, 100);
253
- }
169
+ });
170
+ return () => {
171
+ child.kill();
172
+ };
254
173
  }, [currentIteration, totalIterations, exit]);
255
174
  if (needsInit) {
256
175
  if (initializing) {
@@ -280,11 +199,7 @@ export const IterationRunner = ({ totalIterations }) => {
280
199
  React.createElement(Text, { color: "red" }, error)));
281
200
  }
282
201
  return (React.createElement(Box, { flexDirection: "column" },
283
- React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, marginTop: 1, marginBottom: 1 },
284
- React.createElement(Text, { color: "cyan" },
285
- "Iteration ",
286
- currentIteration)),
287
- React.createElement(EventDisplay, { events: events }),
202
+ React.createElement(EventDisplay, { events: events, iteration: currentIteration, completedIterations: completedIterations, claudeVersion: claudeVersion, ralphVersion: ralphVersion }),
288
203
  isRunning && (React.createElement(Box, { marginTop: 1 },
289
204
  React.createElement(Text, { color: "cyan" },
290
205
  React.createElement(Spinner, { type: "dots" }))))));
@@ -1 +1 @@
1
- {"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
- export declare const ReplayLog: ({ filePath }: Props) => React.JSX.Element;
2
+ export declare const ReplayLog: ({ filePath, claudeVersion, ralphVersion }: Props) => React.JSX.Element;
3
3
  type Props = {
4
4
  filePath: string;
5
+ claudeVersion: string;
6
+ ralphVersion: string;
5
7
  };
6
8
  export {};
7
9
  //# sourceMappingURL=ReplayLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayLog.d.ts","sourceRoot":"","sources":["../../src/components/ReplayLog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAKlD,eAAO,MAAM,SAAS,GAAI,cAAc,KAAK,sBAsD5C,CAAA;AAED,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"ReplayLog.d.ts","sourceRoot":"","sources":["../../src/components/ReplayLog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAKlD,eAAO,MAAM,SAAS,GAAI,2CAA2C,KAAK,sBA4DzE,CAAA;AAED,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA"}
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react";
2
2
  import { Box, Text, useApp } from "ink";
3
3
  import { readFileSync } from "fs";
4
4
  import { EventDisplay } from "./EventDisplay.js";
5
- export const ReplayLog = ({ filePath }) => {
5
+ export const ReplayLog = ({ filePath, claudeVersion, ralphVersion }) => {
6
6
  const { exit } = useApp();
7
7
  const [events, setEvents] = useState([]);
8
8
  const [error, setError] = useState();
@@ -46,6 +46,6 @@ export const ReplayLog = ({ filePath }) => {
46
46
  filePath)),
47
47
  React.createElement(Box, { marginBottom: 1 },
48
48
  React.createElement(Text, { dimColor: true }, "─".repeat(40))),
49
- React.createElement(EventDisplay, { events: events })));
49
+ React.createElement(EventDisplay, { events: events, iteration: 1, completedIterations: [], claudeVersion: claudeVersion, ralphVersion: ralphVersion })));
50
50
  };
51
51
  //# sourceMappingURL=ReplayLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReplayLog.js","sourceRoot":"","sources":["../../src/components/ReplayLog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAS,EAAE,EAAE;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiC,EAAE,CAAC,CAAA;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,yEAAyE;YACzE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEjE,MAAM,YAAY,GAAmC,EAAE,CAAA;YACvD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;oBAClC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;YAED,SAAS,CAAC,YAAY,CAAC,CAAA;YACvB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAA;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3F,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAA;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAEpB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,IAAE,KAAK,CAAQ,CAC5B,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAa,QAAQ,CAAQ,CAC3C;QACN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,QAAQ,UAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ,CAClC;QACN,oBAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,CAC5B,CACP,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"ReplayLog.js","sourceRoot":"","sources":["../../src/components/ReplayLog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAS,EAAE,EAAE;IAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiC,EAAE,CAAC,CAAA;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,yEAAyE;YACzE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAEjE,MAAM,YAAY,GAAmC,EAAE,CAAA;YACvD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;oBAClC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;YAED,SAAS,CAAC,YAAY,CAAC,CAAA;YACvB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAA;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3F,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAA;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC,EAAE,GAAG,CAAC,CAAA;QACT,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IAEpB,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,KAAK,IAAE,KAAK,CAAQ,CAC5B,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;gBAAa,QAAQ,CAAQ,CAC3C;QACN,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,QAAQ,UAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ,CAClC;QACN,oBAAC,YAAY,IACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,CAAC,EACZ,mBAAmB,EAAE,EAAE,EACvB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,GAC1B,CACE,CACP,CAAA;AACH,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import "./lib/signalHandler.js";
2
1
  export declare const run: () => void;
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,wBAAwB,CAAA;AAE/B,eAAO,MAAM,GAAG,YAEf,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,YAEf,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { program } from "./cli.js";
2
- import "./lib/signalHandler.js"; // Register global SIGINT/SIGTERM handlers
3
2
  export const run = () => {
4
3
  program.parse(process.argv);
5
4
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,wBAAwB,CAAA,CAAC,0CAA0C;AAE1E,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,yBAAyB;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,GAAG,EAAE,CAAA;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,yBAAyB;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,GAAG,EAAE,CAAA;AACP,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Adds a todo item to the todo.md file and commits just that line.
3
+ * Inserts the todo into the working directory, stages only that line, and commits.
4
+ */
5
+ export declare const addTodo: (description: string, cwd?: string) => void;
6
+ /**
7
+ * Inserts a todo item into the content, right after the "To do" header.
8
+ */
9
+ export declare const insertTodo: (content: string, description: string) => string;
10
+ //# sourceMappingURL=addTodo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTodo.d.ts","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,aAAa,MAAM,EAAE,MAAK,MAAsB,KAAG,IAqC1E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,aAAa,MAAM,KAAG,MAmBjE,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { execSync } from "child_process";
2
+ import { readFileSync, writeFileSync } from "fs";
3
+ import { join } from "path";
4
+ /**
5
+ * Adds a todo item to the todo.md file and commits just that line.
6
+ * Inserts the todo into the working directory, stages only that line, and commits.
7
+ */
8
+ export const addTodo = (description, cwd = process.cwd()) => {
9
+ const todoPath = join(cwd, ".ralph", "todo.md");
10
+ // Read current working directory file and insert the new todo
11
+ const content = readFileSync(todoPath, "utf-8");
12
+ const newContent = insertTodo(content, description);
13
+ // Write updated content to working directory
14
+ writeFileSync(todoPath, newContent);
15
+ // Get what's currently in the index for this file (or HEAD if not staged)
16
+ const indexContent = execSync("git show :0:.ralph/todo.md 2>/dev/null || git show HEAD:.ralph/todo.md", {
17
+ cwd,
18
+ encoding: "utf-8",
19
+ });
20
+ // Create a blob with just the todo added to the index version
21
+ const indexWithTodo = insertTodo(indexContent, description);
22
+ const blobHash = execSync("git hash-object -w --stdin", {
23
+ cwd,
24
+ encoding: "utf-8",
25
+ input: indexWithTodo,
26
+ }).trim();
27
+ // Stage just our change by updating the index to this blob
28
+ execSync(`git update-index --cacheinfo 100644,${blobHash},.ralph/todo.md`, {
29
+ cwd,
30
+ stdio: "pipe",
31
+ });
32
+ // Commit just the staged change
33
+ execSync(`git commit -m "todo: ${description}"`, { cwd, stdio: "pipe" });
34
+ console.log(`✅ added`);
35
+ };
36
+ /**
37
+ * Inserts a todo item into the content, right after the "To do" header.
38
+ */
39
+ export const insertTodo = (content, description) => {
40
+ const lines = content.split("\n");
41
+ const todoHeaderIndex = lines.findIndex(line => /^###?\s*To\s*do/i.test(line));
42
+ if (todoHeaderIndex === -1) {
43
+ // No "To do" section found, add one at the beginning
44
+ return `### To do\n\n- [ ] ${description}\n\n${content}`;
45
+ }
46
+ // Find the first line after the header (skip empty lines)
47
+ let insertIndex = todoHeaderIndex + 1;
48
+ while (insertIndex < lines.length && lines[insertIndex].trim() === "") {
49
+ insertIndex++;
50
+ }
51
+ // Insert the new todo item
52
+ lines.splice(insertIndex, 0, `- [ ] ${description}`);
53
+ return lines.join("\n");
54
+ };
55
+ //# sourceMappingURL=addTodo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTodo.js","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,WAAmB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE,EAAQ,EAAE;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE/C,8DAA8D;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEnD,6CAA6C;IAC7C,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEnC,0EAA0E;IAC1E,MAAM,YAAY,GAAG,QAAQ,CAC3B,wEAAwE,EACxE;QACE,GAAG;QACH,QAAQ,EAAE,OAAO;KAClB,CACF,CAAA;IAED,8DAA8D;IAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,4BAA4B,EAAE;QACtD,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC,IAAI,EAAE,CAAA;IAET,2DAA2D;IAC3D,QAAQ,CAAC,uCAAuC,QAAQ,iBAAiB,EAAE;QACzE,GAAG;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAA;IAEF,gCAAgC;IAChC,QAAQ,CAAC,wBAAwB,WAAW,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAExE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACxB,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,WAAmB,EAAU,EAAE;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAE9E,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3B,qDAAqD;QACrD,OAAO,sBAAsB,WAAW,OAAO,OAAO,EAAE,CAAA;IAC1D,CAAC;IAED,0DAA0D;IAC1D,IAAI,WAAW,GAAG,eAAe,GAAG,CAAC,CAAA;IACrC,OAAO,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtE,WAAW,EAAE,CAAA;IACf,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC,CAAA;IAEpD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanupAllWorktrees.d.ts","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAe1D"}
1
+ {"version":3,"file":"cleanupAllWorktrees.d.ts","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAe1D"}
@@ -1,14 +1,12 @@
1
1
  import { execSync } from "child_process";
2
2
  import { existsSync, rmSync } from "fs";
3
- import { tmpdir } from "os";
4
- import { join } from "path";
5
- import { execOptions } from "./types.js";
3
+ import { execOptions, getWorktreesDir } from "./types.js";
6
4
  /**
7
5
  * Clean up all ralph worktrees (useful for recovery)
8
6
  */
9
7
  export function cleanupAllWorktrees(repoRoot) {
10
8
  try {
11
- const worktreesDir = join(tmpdir(), "ralph-worktrees");
9
+ const worktreesDir = getWorktreesDir(repoRoot);
12
10
  if (existsSync(worktreesDir)) {
13
11
  rmSync(worktreesDir, { recursive: true, force: true });
14
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleanupAllWorktrees.js","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAA;QACtD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,sCAAsC;QACtC,QAAQ,CAAC,oBAAoB,EAAE;YAC7B,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cleanupAllWorktrees.js","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,sCAAsC;QACtC,QAAQ,CAAC,oBAAoB,EAAE;YAC7B,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createWorktree.d.ts","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAA;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAyB7D"}
1
+ {"version":3,"file":"createWorktree.d.ts","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAgC,MAAM,YAAY,CAAA;AAEvE;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAyB7D"}