@herbcaudill/ralph 0.8.3 → 1.0.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 (302) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +26 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/components/App.d.ts +6 -1
  5. package/dist/components/App.d.ts.map +1 -1
  6. package/dist/components/App.js +7 -3
  7. package/dist/components/App.js.map +1 -1
  8. package/dist/components/EnhancedTextInput.d.ts +8 -8
  9. package/dist/components/EnhancedTextInput.d.ts.map +1 -1
  10. package/dist/components/EnhancedTextInput.js +2 -36
  11. package/dist/components/EnhancedTextInput.js.map +1 -1
  12. package/dist/components/EnhancedTextInput.test.js +2 -10
  13. package/dist/components/EnhancedTextInput.test.js.map +1 -1
  14. package/dist/components/EventDisplay.d.ts +1 -1
  15. package/dist/components/EventDisplay.d.ts.map +1 -1
  16. package/dist/components/EventDisplay.js +3 -94
  17. package/dist/components/EventDisplay.js.map +1 -1
  18. package/dist/components/EventDisplay.replay.test.js +34 -68
  19. package/dist/components/EventDisplay.replay.test.js.map +1 -1
  20. package/dist/components/EventDisplay.test.js +30 -0
  21. package/dist/components/EventDisplay.test.js.map +1 -1
  22. package/dist/components/FullScreenLayout.d.ts +5 -4
  23. package/dist/components/FullScreenLayout.d.ts.map +1 -1
  24. package/dist/components/FullScreenLayout.js +2 -12
  25. package/dist/components/FullScreenLayout.js.map +1 -1
  26. package/dist/components/Header.d.ts +2 -1
  27. package/dist/components/Header.d.ts.map +1 -1
  28. package/dist/components/Header.js +8 -1
  29. package/dist/components/Header.js.map +1 -1
  30. package/dist/components/InitRalph.d.ts +6 -1
  31. package/dist/components/InitRalph.d.ts.map +1 -1
  32. package/dist/components/InitRalph.js +71 -89
  33. package/dist/components/InitRalph.js.map +1 -1
  34. package/dist/components/IterationRunner.d.ts +6 -13
  35. package/dist/components/IterationRunner.d.ts.map +1 -1
  36. package/dist/components/IterationRunner.js +84 -168
  37. package/dist/components/IterationRunner.js.map +1 -1
  38. package/dist/components/IterationRunner.test.d.ts +44 -0
  39. package/dist/components/IterationRunner.test.d.ts.map +1 -1
  40. package/dist/components/IterationRunner.test.js +66 -126
  41. package/dist/components/IterationRunner.test.js.map +1 -1
  42. package/dist/components/IterationRunner.types.d.ts +30 -0
  43. package/dist/components/IterationRunner.types.d.ts.map +1 -0
  44. package/dist/components/IterationRunner.types.js +2 -0
  45. package/dist/components/IterationRunner.types.js.map +1 -0
  46. package/dist/components/JsonOutput.d.ts +5 -6
  47. package/dist/components/JsonOutput.d.ts.map +1 -1
  48. package/dist/components/JsonOutput.js +57 -34
  49. package/dist/components/JsonOutput.js.map +1 -1
  50. package/dist/components/JsonOutput.test.d.ts +2 -0
  51. package/dist/components/JsonOutput.test.d.ts.map +1 -0
  52. package/dist/components/JsonOutput.test.js +39 -0
  53. package/dist/components/JsonOutput.test.js.map +1 -0
  54. package/dist/components/ReplayLog.d.ts +1 -1
  55. package/dist/components/ReplayLog.d.ts.map +1 -1
  56. package/dist/components/ReplayLog.js +9 -2
  57. package/dist/components/ReplayLog.js.map +1 -1
  58. package/dist/components/StreamingText.d.ts +4 -0
  59. package/dist/components/StreamingText.d.ts.map +1 -1
  60. package/dist/components/StreamingText.js +4 -3
  61. package/dist/components/StreamingText.js.map +1 -1
  62. package/dist/components/StreamingText.test.js +39 -0
  63. package/dist/components/StreamingText.test.js.map +1 -1
  64. package/dist/components/ToolUse.d.ts +8 -0
  65. package/dist/components/ToolUse.d.ts.map +1 -1
  66. package/dist/components/ToolUse.js +1 -0
  67. package/dist/components/ToolUse.js.map +1 -1
  68. package/dist/components/blocksToLines.d.ts +6 -0
  69. package/dist/components/blocksToLines.d.ts.map +1 -0
  70. package/dist/components/blocksToLines.js +15 -0
  71. package/dist/components/blocksToLines.js.map +1 -0
  72. package/dist/components/eventToBlocks.d.ts +7 -1
  73. package/dist/components/eventToBlocks.d.ts.map +1 -1
  74. package/dist/components/eventToBlocks.js +7 -1
  75. package/dist/components/eventToBlocks.js.map +1 -1
  76. package/dist/components/findNextWordBoundary.d.ts +10 -0
  77. package/dist/components/findNextWordBoundary.d.ts.map +1 -0
  78. package/dist/components/findNextWordBoundary.js +23 -0
  79. package/dist/components/findNextWordBoundary.js.map +1 -0
  80. package/dist/components/findPreviousWordBoundary.d.ts +10 -0
  81. package/dist/components/findPreviousWordBoundary.d.ts.map +1 -0
  82. package/dist/components/findPreviousWordBoundary.js +23 -0
  83. package/dist/components/findPreviousWordBoundary.js.map +1 -0
  84. package/dist/components/processEvents.d.ts +11 -0
  85. package/dist/components/processEvents.d.ts.map +1 -0
  86. package/dist/components/processEvents.js +87 -0
  87. package/dist/components/processEvents.js.map +1 -0
  88. package/dist/components/renderStaticItem.d.ts +7 -0
  89. package/dist/components/renderStaticItem.d.ts.map +1 -0
  90. package/dist/components/renderStaticItem.js +23 -0
  91. package/dist/components/renderStaticItem.js.map +1 -0
  92. package/dist/components/replay.d.ts +5 -0
  93. package/dist/components/replay.d.ts.map +1 -0
  94. package/dist/components/replay.js +49 -0
  95. package/dist/components/replay.js.map +1 -0
  96. package/dist/components/test-helpers/ControlledInput.d.ts +14 -0
  97. package/dist/components/test-helpers/ControlledInput.d.ts.map +1 -0
  98. package/dist/components/test-helpers/ControlledInput.js +15 -0
  99. package/dist/components/test-helpers/ControlledInput.js.map +1 -0
  100. package/dist/components/useContentHeight.d.ts +9 -0
  101. package/dist/components/useContentHeight.d.ts.map +1 -0
  102. package/dist/components/useContentHeight.js +16 -0
  103. package/dist/components/useContentHeight.js.map +1 -0
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +2 -1
  107. package/dist/index.js.map +1 -1
  108. package/dist/lib/MessageQueue.d.ts +18 -5
  109. package/dist/lib/MessageQueue.d.ts.map +1 -1
  110. package/dist/lib/MessageQueue.js +21 -14
  111. package/dist/lib/MessageQueue.js.map +1 -1
  112. package/dist/lib/StdinCommandHandler.d.ts +26 -20
  113. package/dist/lib/StdinCommandHandler.js +78 -85
  114. package/dist/lib/StdinCommandHandler.test.d.ts +2 -2
  115. package/dist/lib/StdinCommandHandler.test.js +92 -92
  116. package/dist/lib/WorktreeManager.d.ts +114 -0
  117. package/dist/lib/WorktreeManager.d.ts.map +1 -0
  118. package/dist/lib/WorktreeManager.js +350 -0
  119. package/dist/lib/WorktreeManager.js.map +1 -0
  120. package/dist/lib/WorktreeManager.test.d.ts +2 -0
  121. package/dist/lib/WorktreeManager.test.d.ts.map +1 -0
  122. package/dist/lib/WorktreeManager.test.js +261 -0
  123. package/dist/lib/WorktreeManager.test.js.map +1 -0
  124. package/dist/lib/addTodo.d.ts +5 -5
  125. package/dist/lib/addTodo.d.ts.map +1 -1
  126. package/dist/lib/addTodo.js +6 -20
  127. package/dist/lib/addTodo.js.map +1 -1
  128. package/dist/lib/beadsClient.d.ts +6 -12
  129. package/dist/lib/beadsClient.d.ts.map +1 -1
  130. package/dist/lib/beadsClient.js +3 -2
  131. package/dist/lib/beadsClient.js.map +1 -1
  132. package/dist/lib/captureBeadsSnapshot.d.ts +4 -0
  133. package/dist/lib/captureBeadsSnapshot.d.ts.map +1 -0
  134. package/dist/lib/captureBeadsSnapshot.js +24 -0
  135. package/dist/lib/captureBeadsSnapshot.js.map +1 -0
  136. package/dist/lib/captureStartupSnapshot.d.ts +10 -0
  137. package/dist/lib/captureStartupSnapshot.d.ts.map +1 -0
  138. package/dist/lib/captureStartupSnapshot.js +29 -0
  139. package/dist/lib/captureStartupSnapshot.js.map +1 -0
  140. package/dist/lib/captureTodoSnapshot.d.ts +4 -0
  141. package/dist/lib/captureTodoSnapshot.d.ts.map +1 -0
  142. package/dist/lib/captureTodoSnapshot.js +24 -0
  143. package/dist/lib/captureTodoSnapshot.js.map +1 -0
  144. package/dist/lib/copyTemplates.d.ts +22 -0
  145. package/dist/lib/copyTemplates.d.ts.map +1 -0
  146. package/dist/lib/copyTemplates.js +32 -0
  147. package/dist/lib/copyTemplates.js.map +1 -0
  148. package/dist/lib/createStdinCommandHandler.d.ts +28 -0
  149. package/dist/lib/createStdinCommandHandler.d.ts.map +1 -0
  150. package/dist/lib/createStdinCommandHandler.js +67 -0
  151. package/dist/lib/createStdinCommandHandler.js.map +1 -0
  152. package/dist/lib/createUserMessage.d.ts +6 -0
  153. package/dist/lib/createUserMessage.d.ts.map +1 -0
  154. package/dist/lib/createUserMessage.js +13 -0
  155. package/dist/lib/createUserMessage.js.map +1 -0
  156. package/dist/lib/debug.d.ts +17 -16
  157. package/dist/lib/debug.d.ts.map +1 -1
  158. package/dist/lib/debug.js +25 -15
  159. package/dist/lib/debug.js.map +1 -1
  160. package/dist/lib/findMaxLogNumber.d.ts +6 -0
  161. package/dist/lib/findMaxLogNumber.d.ts.map +1 -0
  162. package/dist/lib/findMaxLogNumber.js +26 -0
  163. package/dist/lib/findMaxLogNumber.js.map +1 -0
  164. package/dist/lib/findMaxLogNumber.test.d.ts +2 -0
  165. package/dist/lib/findMaxLogNumber.test.d.ts.map +1 -0
  166. package/dist/lib/findMaxLogNumber.test.js +39 -0
  167. package/dist/lib/findMaxLogNumber.test.js.map +1 -0
  168. package/dist/lib/formatContentBlock.d.ts +4 -8
  169. package/dist/lib/formatContentBlock.d.ts.map +1 -1
  170. package/dist/lib/formatContentBlock.js +7 -58
  171. package/dist/lib/formatContentBlock.js.map +1 -1
  172. package/dist/lib/formatIterationHeader.d.ts +5 -0
  173. package/dist/lib/formatIterationHeader.d.ts.map +1 -0
  174. package/dist/lib/formatIterationHeader.js +8 -0
  175. package/dist/lib/formatIterationHeader.js.map +1 -0
  176. package/dist/lib/formatText.d.ts +5 -0
  177. package/dist/lib/formatText.d.ts.map +1 -0
  178. package/dist/lib/formatText.js +33 -0
  179. package/dist/lib/formatText.js.map +1 -0
  180. package/dist/lib/formatToolUse.d.ts +7 -0
  181. package/dist/lib/formatToolUse.d.ts.map +1 -0
  182. package/dist/lib/formatToolUse.js +14 -0
  183. package/dist/lib/formatToolUse.js.map +1 -0
  184. package/dist/lib/formatUserMessage.d.ts +5 -0
  185. package/dist/lib/formatUserMessage.d.ts.map +1 -0
  186. package/dist/lib/formatUserMessage.js +8 -0
  187. package/dist/lib/formatUserMessage.js.map +1 -0
  188. package/dist/lib/getBaseCwd.d.ts +6 -0
  189. package/dist/lib/getBaseCwd.d.ts.map +1 -0
  190. package/dist/lib/getBaseCwd.js +6 -0
  191. package/dist/lib/getBaseCwd.js.map +1 -0
  192. package/dist/lib/getBeadsProgress.d.ts +8 -0
  193. package/dist/lib/getBeadsProgress.d.ts.map +1 -0
  194. package/dist/lib/getBeadsProgress.js +35 -0
  195. package/dist/lib/getBeadsProgress.js.map +1 -0
  196. package/dist/lib/getClaudeVersion.d.ts +4 -0
  197. package/dist/lib/getClaudeVersion.d.ts.map +1 -1
  198. package/dist/lib/getClaudeVersion.js +4 -0
  199. package/dist/lib/getClaudeVersion.js.map +1 -1
  200. package/dist/lib/getDefaultIterations.d.ts +6 -0
  201. package/dist/lib/getDefaultIterations.d.ts.map +1 -0
  202. package/dist/lib/getDefaultIterations.js +14 -0
  203. package/dist/lib/getDefaultIterations.js.map +1 -0
  204. package/dist/lib/getDefaultIterations.test.d.ts +2 -0
  205. package/dist/lib/getDefaultIterations.test.d.ts.map +1 -0
  206. package/dist/lib/getDefaultIterations.test.js +39 -0
  207. package/dist/lib/getDefaultIterations.test.js.map +1 -0
  208. package/dist/lib/getLatestLogFile.d.ts +6 -0
  209. package/dist/lib/getLatestLogFile.d.ts.map +1 -0
  210. package/dist/lib/getLatestLogFile.js +15 -0
  211. package/dist/lib/getLatestLogFile.js.map +1 -0
  212. package/dist/lib/getNextLogFile.d.ts +0 -5
  213. package/dist/lib/getNextLogFile.d.ts.map +1 -1
  214. package/dist/lib/getNextLogFile.js +2 -36
  215. package/dist/lib/getNextLogFile.js.map +1 -1
  216. package/dist/lib/getNextLogFile.test.js +2 -1
  217. package/dist/lib/getNextLogFile.test.js.map +1 -1
  218. package/dist/lib/getOpenIssueCount.d.ts +0 -5
  219. package/dist/lib/getOpenIssueCount.d.ts.map +1 -1
  220. package/dist/lib/getOpenIssueCount.js +0 -12
  221. package/dist/lib/getOpenIssueCount.js.map +1 -1
  222. package/dist/lib/getOpenIssueCount.test.js +1 -35
  223. package/dist/lib/getOpenIssueCount.test.js.map +1 -1
  224. package/dist/lib/getProgress.d.ts +6 -26
  225. package/dist/lib/getProgress.d.ts.map +1 -1
  226. package/dist/lib/getProgress.js +8 -109
  227. package/dist/lib/getProgress.js.map +1 -1
  228. package/dist/lib/getProgress.test.js +2 -1
  229. package/dist/lib/getProgress.test.js.map +1 -1
  230. package/dist/lib/getPromptContent.d.ts +8 -0
  231. package/dist/lib/getPromptContent.d.ts.map +1 -0
  232. package/dist/lib/getPromptContent.js +31 -0
  233. package/dist/lib/getPromptContent.js.map +1 -0
  234. package/dist/lib/getTerminalSize.d.ts +8 -0
  235. package/dist/lib/getTerminalSize.d.ts.map +1 -0
  236. package/dist/lib/getTerminalSize.js +10 -0
  237. package/dist/lib/getTerminalSize.js.map +1 -0
  238. package/dist/lib/getTodoProgress.d.ts +4 -0
  239. package/dist/lib/getTodoProgress.d.ts.map +1 -0
  240. package/dist/lib/getTodoProgress.js +22 -0
  241. package/dist/lib/getTodoProgress.js.map +1 -0
  242. package/dist/lib/insertTodo.d.ts +7 -0
  243. package/dist/lib/insertTodo.d.ts.map +1 -0
  244. package/dist/lib/insertTodo.js +22 -0
  245. package/dist/lib/insertTodo.js.map +1 -0
  246. package/dist/lib/outputEvent.d.ts +5 -0
  247. package/dist/lib/outputEvent.d.ts.map +1 -0
  248. package/dist/lib/outputEvent.js +7 -0
  249. package/dist/lib/outputEvent.js.map +1 -0
  250. package/dist/lib/parseStdinCommand.d.ts +25 -0
  251. package/dist/lib/parseStdinCommand.d.ts.map +1 -0
  252. package/dist/lib/parseStdinCommand.js +43 -0
  253. package/dist/lib/parseStdinCommand.js.map +1 -0
  254. package/dist/lib/parseStdinCommand.test.d.ts +2 -0
  255. package/dist/lib/parseStdinCommand.test.d.ts.map +1 -0
  256. package/dist/lib/parseStdinCommand.test.js +93 -0
  257. package/dist/lib/parseStdinCommand.test.js.map +1 -0
  258. package/dist/lib/parseTaskLifecycle.d.ts +18 -0
  259. package/dist/lib/parseTaskLifecycle.d.ts.map +1 -0
  260. package/dist/lib/parseTaskLifecycle.js +30 -0
  261. package/dist/lib/parseTaskLifecycle.js.map +1 -0
  262. package/dist/lib/parseTaskLifecycle.test.d.ts +2 -0
  263. package/dist/lib/parseTaskLifecycle.test.d.ts.map +1 -0
  264. package/dist/lib/parseTaskLifecycle.test.js +122 -0
  265. package/dist/lib/parseTaskLifecycle.test.js.map +1 -0
  266. package/dist/lib/parseWorktreeFromBranch.d.ts +13 -0
  267. package/dist/lib/parseWorktreeFromBranch.d.ts.map +1 -0
  268. package/dist/lib/parseWorktreeFromBranch.js +19 -0
  269. package/dist/lib/parseWorktreeFromBranch.js.map +1 -0
  270. package/dist/lib/processEvents.d.ts +12 -0
  271. package/dist/lib/processEvents.d.ts.map +1 -0
  272. package/dist/lib/processEvents.js +113 -0
  273. package/dist/lib/processEvents.js.map +1 -0
  274. package/dist/lib/rel.d.ts +7 -1
  275. package/dist/lib/rel.d.ts.map +1 -1
  276. package/dist/lib/rel.js +13 -4
  277. package/dist/lib/rel.js.map +1 -1
  278. package/dist/lib/rel.test.js +16 -1
  279. package/dist/lib/rel.test.js.map +1 -1
  280. package/dist/lib/sdkMessageToEvent.d.ts +6 -0
  281. package/dist/lib/sdkMessageToEvent.d.ts.map +1 -0
  282. package/dist/lib/sdkMessageToEvent.js +12 -0
  283. package/dist/lib/sdkMessageToEvent.js.map +1 -0
  284. package/dist/lib/shortenTempPaths.d.ts +7 -1
  285. package/dist/lib/shortenTempPaths.d.ts.map +1 -1
  286. package/dist/lib/shortenTempPaths.js +7 -2
  287. package/dist/lib/shortenTempPaths.js.map +1 -1
  288. package/dist/lib/types.d.ts +19 -0
  289. package/dist/lib/types.d.ts.map +1 -0
  290. package/dist/lib/types.js +2 -0
  291. package/dist/lib/types.js.map +1 -0
  292. package/dist/lib/useTerminalSize.d.ts +3 -2
  293. package/dist/lib/useTerminalSize.d.ts.map +1 -1
  294. package/dist/lib/useTerminalSize.js +4 -6
  295. package/dist/lib/useTerminalSize.js.map +1 -1
  296. package/package.json +4 -3
  297. package/templates/core-prompt.md +77 -0
  298. package/templates/skills/manage-tasks/SKILL.md +113 -0
  299. package/templates/workflow.md +46 -0
  300. package/templates/prompt-beads.md +0 -44
  301. package/templates/prompt-todos.md +0 -17
  302. package/templates/todo.md +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorktreeManager.js","sourceRoot":"","sources":["../../src/lib/WorktreeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WorktreeManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorktreeManager.test.d.ts","sourceRoot":"","sources":["../../src/lib/WorktreeManager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,261 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { WorktreeManager } from "./WorktreeManager.js";
3
+ import { mkdir, rm, writeFile } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import { spawn } from "node:child_process";
6
+ /**
7
+ * Run a git command in the specified directory and return its stdout.
8
+ * Rejects with an error if the command fails.
9
+ */
10
+ function git(
11
+ /** Working directory for the git command */
12
+ cwd,
13
+ /** Git command arguments (e.g., ["add", "."]) */
14
+ args) {
15
+ return new Promise((resolve, reject) => {
16
+ const proc = spawn("git", args, {
17
+ cwd,
18
+ stdio: ["ignore", "pipe", "pipe"],
19
+ });
20
+ let stdout = "";
21
+ let stderr = "";
22
+ proc.stdout.on("data", data => {
23
+ stdout += data.toString();
24
+ });
25
+ proc.stderr.on("data", data => {
26
+ stderr += data.toString();
27
+ });
28
+ proc.on("close", code => {
29
+ if (code === 0) {
30
+ resolve(stdout.trim());
31
+ }
32
+ else {
33
+ reject(new Error(stderr.trim() || `git ${args[0]} failed with code ${code}`));
34
+ }
35
+ });
36
+ });
37
+ }
38
+ describe("WorktreeManager", () => {
39
+ const testDir = join(process.cwd(), ".test-worktrees");
40
+ const mainWorkspacePath = join(testDir, "project");
41
+ const worktreesPath = join(testDir, "project-worktrees");
42
+ let manager;
43
+ beforeEach(async () => {
44
+ // Clean up any existing test directories
45
+ try {
46
+ await rm(testDir, { recursive: true });
47
+ }
48
+ catch {
49
+ // Ignore if doesn't exist
50
+ }
51
+ // Create test directory structure
52
+ await mkdir(mainWorkspacePath, { recursive: true });
53
+ // Initialize a git repo
54
+ await git(mainWorkspacePath, ["init"]);
55
+ await git(mainWorkspacePath, ["config", "user.email", "test@test.com"]);
56
+ await git(mainWorkspacePath, ["config", "user.name", "Test User"]);
57
+ // Create an initial commit (required for worktrees)
58
+ await writeFile(join(mainWorkspacePath, "README.md"), "# Test Project");
59
+ await git(mainWorkspacePath, ["add", "."]);
60
+ await git(mainWorkspacePath, ["commit", "-m", "Initial commit"]);
61
+ manager = new WorktreeManager(mainWorkspacePath);
62
+ });
63
+ afterEach(async () => {
64
+ // Clean up test directories
65
+ try {
66
+ // First prune any worktrees
67
+ await git(mainWorkspacePath, ["worktree", "prune"]);
68
+ }
69
+ catch {
70
+ // Ignore
71
+ }
72
+ try {
73
+ await rm(testDir, { recursive: true });
74
+ }
75
+ catch {
76
+ // Ignore
77
+ }
78
+ });
79
+ describe("constructor", () => {
80
+ it("sets worktrees base path in sibling folder", () => {
81
+ expect(manager.getWorktreesBasePath()).toBe(worktreesPath);
82
+ });
83
+ });
84
+ describe("getWorktreePath", () => {
85
+ it("returns correct path for instance", () => {
86
+ const path = manager.getWorktreePath("abc123", "alice");
87
+ expect(path).toBe(join(worktreesPath, "alice-abc123"));
88
+ });
89
+ });
90
+ describe("getBranchName", () => {
91
+ it("returns correct branch name for instance", () => {
92
+ const branch = manager.getBranchName("abc123", "alice");
93
+ expect(branch).toBe("ralph/alice-abc123");
94
+ });
95
+ });
96
+ describe("create", () => {
97
+ it("creates a worktree with new branch", async () => {
98
+ const result = await manager.create({
99
+ instanceId: "abc123",
100
+ instanceName: "alice",
101
+ });
102
+ expect(result.path).toBe(join(worktreesPath, "alice-abc123"));
103
+ expect(result.branch).toBe("ralph/alice-abc123");
104
+ expect(result.instanceId).toBe("abc123");
105
+ expect(result.instanceName).toBe("alice");
106
+ // Verify worktree exists
107
+ const worktreeList = await git(mainWorkspacePath, ["worktree", "list"]);
108
+ expect(worktreeList).toContain("alice-abc123");
109
+ // Verify branch exists
110
+ const branches = await git(mainWorkspacePath, ["branch", "-a"]);
111
+ expect(branches).toContain("ralph/alice-abc123");
112
+ });
113
+ it("creates worktrees directory if it doesn't exist", async () => {
114
+ await manager.create({
115
+ instanceId: "abc123",
116
+ instanceName: "alice",
117
+ });
118
+ // Worktrees directory should exist
119
+ const exists = await manager.exists("abc123", "alice");
120
+ expect(exists).toBe(true);
121
+ });
122
+ });
123
+ describe("exists", () => {
124
+ it("returns false for non-existent worktree", async () => {
125
+ const exists = await manager.exists("nonexistent", "fake");
126
+ expect(exists).toBe(false);
127
+ });
128
+ it("returns true for existing worktree", async () => {
129
+ await manager.create({
130
+ instanceId: "abc123",
131
+ instanceName: "alice",
132
+ });
133
+ const exists = await manager.exists("abc123", "alice");
134
+ expect(exists).toBe(true);
135
+ });
136
+ });
137
+ describe("list", () => {
138
+ it("returns empty array when no ralph worktrees exist", async () => {
139
+ const worktrees = await manager.list();
140
+ expect(worktrees).toEqual([]);
141
+ });
142
+ it("returns list of ralph worktrees", async () => {
143
+ await manager.create({ instanceId: "abc123", instanceName: "alice" });
144
+ await manager.create({ instanceId: "def456", instanceName: "bob" });
145
+ const worktrees = await manager.list();
146
+ expect(worktrees).toHaveLength(2);
147
+ expect(worktrees).toContainEqual(expect.objectContaining({
148
+ instanceId: "abc123",
149
+ instanceName: "alice",
150
+ branch: "ralph/alice-abc123",
151
+ }));
152
+ expect(worktrees).toContainEqual(expect.objectContaining({
153
+ instanceId: "def456",
154
+ instanceName: "bob",
155
+ branch: "ralph/bob-def456",
156
+ }));
157
+ });
158
+ });
159
+ describe("remove", () => {
160
+ it("removes worktree and branch", async () => {
161
+ await manager.create({ instanceId: "abc123", instanceName: "alice" });
162
+ await manager.remove("abc123", "alice");
163
+ // Worktree should be gone
164
+ const exists = await manager.exists("abc123", "alice");
165
+ expect(exists).toBe(false);
166
+ // Branch should be gone
167
+ const branches = await git(mainWorkspacePath, ["branch", "-a"]);
168
+ expect(branches).not.toContain("ralph/alice-abc123");
169
+ });
170
+ it("removes worktree but keeps branch when deleteBranch is false", async () => {
171
+ await manager.create({ instanceId: "abc123", instanceName: "alice" });
172
+ await manager.remove("abc123", "alice", false);
173
+ // Worktree should be gone
174
+ const exists = await manager.exists("abc123", "alice");
175
+ expect(exists).toBe(false);
176
+ // Branch should still exist
177
+ const branches = await git(mainWorkspacePath, ["branch", "-a"]);
178
+ expect(branches).toContain("ralph/alice-abc123");
179
+ });
180
+ it("succeeds even if worktree doesn't exist", async () => {
181
+ // Should not throw
182
+ await manager.remove("nonexistent", "fake");
183
+ });
184
+ });
185
+ describe("merge", () => {
186
+ it("merges worktree branch to main", async () => {
187
+ // Create worktree
188
+ const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
189
+ // Make a change in the worktree
190
+ await writeFile(join(worktree.path, "feature.txt"), "new feature");
191
+ await git(worktree.path, ["add", "."]);
192
+ await git(worktree.path, ["commit", "-m", "Add feature"]);
193
+ // Merge back to main
194
+ const result = await manager.merge("abc123", "alice");
195
+ expect(result.success).toBe(true);
196
+ expect(result.hadConflicts).toBe(false);
197
+ // Verify merge happened (we should be back on main with the changes)
198
+ const currentBranch = await git(mainWorkspacePath, ["rev-parse", "--abbrev-ref", "HEAD"]);
199
+ expect(currentBranch).toMatch(/^(main|master)$/);
200
+ });
201
+ it("reports conflicts when they occur", async () => {
202
+ // Create worktree
203
+ const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
204
+ // Make conflicting changes in main
205
+ await writeFile(join(mainWorkspacePath, "conflict.txt"), "main version");
206
+ await git(mainWorkspacePath, ["add", "."]);
207
+ await git(mainWorkspacePath, ["commit", "-m", "Add conflict file on main"]);
208
+ // Make conflicting changes in worktree
209
+ await writeFile(join(worktree.path, "conflict.txt"), "worktree version");
210
+ await git(worktree.path, ["add", "."]);
211
+ await git(worktree.path, ["commit", "-m", "Add conflict file in worktree"]);
212
+ // Attempt merge
213
+ const result = await manager.merge("abc123", "alice");
214
+ expect(result.success).toBe(false);
215
+ expect(result.hadConflicts).toBe(true);
216
+ // Clean up merge state
217
+ await git(mainWorkspacePath, ["merge", "--abort"]);
218
+ });
219
+ });
220
+ describe("rebase", () => {
221
+ it("rebases worktree branch on main", async () => {
222
+ // Create worktree
223
+ const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
224
+ // Make a change in main
225
+ await writeFile(join(mainWorkspacePath, "main-change.txt"), "main change");
226
+ await git(mainWorkspacePath, ["add", "."]);
227
+ await git(mainWorkspacePath, ["commit", "-m", "Add main change"]);
228
+ // Make a change in the worktree
229
+ await writeFile(join(worktree.path, "feature.txt"), "new feature");
230
+ await git(worktree.path, ["add", "."]);
231
+ await git(worktree.path, ["commit", "-m", "Add feature"]);
232
+ // Rebase worktree on main
233
+ const result = await manager.rebase("abc123", "alice");
234
+ expect(result.success).toBe(true);
235
+ expect(result.hadConflicts).toBe(false);
236
+ });
237
+ it("reports conflicts when they occur", async () => {
238
+ // Create worktree
239
+ const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
240
+ // Make conflicting changes in main
241
+ await writeFile(join(mainWorkspacePath, "conflict.txt"), "main version");
242
+ await git(mainWorkspacePath, ["add", "."]);
243
+ await git(mainWorkspacePath, ["commit", "-m", "Add conflict file on main"]);
244
+ // Make conflicting changes in worktree
245
+ await writeFile(join(worktree.path, "conflict.txt"), "worktree version");
246
+ await git(worktree.path, ["add", "."]);
247
+ await git(worktree.path, ["commit", "-m", "Add conflict file in worktree"]);
248
+ // Attempt rebase
249
+ const result = await manager.rebase("abc123", "alice");
250
+ expect(result.success).toBe(false);
251
+ expect(result.hadConflicts).toBe(true);
252
+ });
253
+ });
254
+ describe("prune", () => {
255
+ it("prunes stale worktree entries", async () => {
256
+ // This mainly verifies the command doesn't error
257
+ await manager.prune();
258
+ });
259
+ });
260
+ });
261
+ //# sourceMappingURL=WorktreeManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorktreeManager.test.js","sourceRoot":"","sources":["../../src/lib/WorktreeManager.test.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@
3
3
  * Inserts the todo into the working directory, stages only that line, and commits.
4
4
  * Creates the file if it doesn't exist.
5
5
  */
6
- export declare const addTodo: (description: string, cwd?: string) => void;
7
- /**
8
- * Inserts a todo item into the content, right after the "To do" header.
9
- */
10
- export declare const insertTodo: (content: string, description: string) => string;
6
+ export declare const addTodo: (
7
+ /** The description of the todo item to add */
8
+ description: string,
9
+ /** The working directory to use (defaults to current directory) */
10
+ cwd?: string) => void;
11
11
  //# sourceMappingURL=addTodo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addTodo.d.ts","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,aAAa,MAAM,EAAE,MAAK,MAAsB,KAAG,IA6C1E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,aAAa,MAAM,KAAG,MAmBjE,CAAA"}
1
+ {"version":3,"file":"addTodo.d.ts","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,OAAO;AAClB,8CAA8C;AAC9C,aAAa,MAAM;AACnB,mEAAmE;AACnE,MAAK,MAAsB,KAC1B,IA6CF,CAAA"}
@@ -1,12 +1,17 @@
1
1
  import { execSync } from "child_process";
2
2
  import { existsSync, readFileSync, writeFileSync } from "fs";
3
3
  import { join } from "path";
4
+ import { insertTodo } from "./insertTodo.js";
4
5
  /**
5
6
  * Adds a todo item to the todo.md file and commits just that line.
6
7
  * Inserts the todo into the working directory, stages only that line, and commits.
7
8
  * Creates the file if it doesn't exist.
8
9
  */
9
- export const addTodo = (description, cwd = process.cwd()) => {
10
+ export const addTodo = (
11
+ /** The description of the todo item to add */
12
+ description,
13
+ /** The working directory to use (defaults to current directory) */
14
+ cwd = process.cwd()) => {
10
15
  const todoPath = join(cwd, ".ralph", "todo.md");
11
16
  // Read current working directory file (or empty string if it doesn't exist) and insert the new todo
12
17
  const content = existsSync(todoPath) ? readFileSync(todoPath, "utf-8") : "";
@@ -43,23 +48,4 @@ export const addTodo = (description, cwd = process.cwd()) => {
43
48
  execSync(`git commit -m "todo: ${escapedDescription}"`, { cwd, stdio: "pipe" });
44
49
  console.log(`✅ added`);
45
50
  };
46
- /**
47
- * Inserts a todo item into the content, right after the "To do" header.
48
- */
49
- export const insertTodo = (content, description) => {
50
- const lines = content.split("\n");
51
- const todoHeaderIndex = lines.findIndex(line => /^###?\s*To\s*do/i.test(line));
52
- if (todoHeaderIndex === -1) {
53
- // No "To do" section found, add one at the beginning
54
- return `### To do\n\n- [ ] ${description}\n\n${content}`;
55
- }
56
- // Find the first line after the header (skip empty lines)
57
- let insertIndex = todoHeaderIndex + 1;
58
- while (insertIndex < lines.length && lines[insertIndex].trim() === "") {
59
- insertIndex++;
60
- }
61
- // Insert the new todo item
62
- lines.splice(insertIndex, 0, `- [ ] ${description}`);
63
- return lines.join("\n");
64
- };
65
51
  //# sourceMappingURL=addTodo.js.map
@@ -1 +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,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B;;;;GAIG;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,oGAAoG;IACpG,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEnD,6CAA6C;IAC7C,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEnC,2FAA2F;IAC3F,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,YAAY,GAAG,QAAQ,CACrB,+FAA+F,EAC/F;YACE,GAAG;YACH,QAAQ,EAAE,OAAO;SAClB,CACF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,YAAY,GAAG,EAAE,CAAA;IACnB,CAAC;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,qCAAqC;IACrC,QAAQ,CAAC,6CAA6C,QAAQ,iBAAiB,EAAE;QAC/E,GAAG;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAA;IAEF,sFAAsF;IACtF,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,wBAAwB,kBAAkB,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAE/E,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
+ {"version":3,"file":"addTodo.js","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;AACrB,8CAA8C;AAC9C,WAAmB;AACnB,mEAAmE;AACnE,MAAc,OAAO,CAAC,GAAG,EAAE,EACrB,EAAE;IACR,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE/C,oGAAoG;IACpG,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEnD,6CAA6C;IAC7C,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEnC,2FAA2F;IAC3F,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,YAAY,GAAG,QAAQ,CACrB,+FAA+F,EAC/F;YACE,GAAG;YACH,QAAQ,EAAE,OAAO;SAClB,CACF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,YAAY,GAAG,EAAE,CAAA;IACnB,CAAC;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,qCAAqC;IACrC,QAAQ,CAAC,6CAA6C,QAAQ,iBAAiB,EAAE;QAC/E,GAAG;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAA;IAEF,sFAAsF;IACtF,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,wBAAwB,kBAAkB,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAE/E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACxB,CAAC,CAAA"}
@@ -1,13 +1,6 @@
1
- export type MutationEvent = {
2
- Timestamp: string;
3
- Type: "create" | "update" | "delete" | "comment" | "status" | "bonded" | "squashed" | "burned";
4
- IssueID: string;
5
- Title?: string;
6
- old_status?: string;
7
- new_status?: string;
8
- parent_id?: string;
9
- Actor?: string;
10
- };
1
+ import type { MutationEvent } from "@herbcaudill/ralph-shared";
2
+ /** Re-export MutationEvent for backward compatibility */
3
+ export type { MutationEvent } from "@herbcaudill/ralph-shared";
11
4
  /**
12
5
  * Simple RPC client for beads daemon.
13
6
  * Connects to .beads/bd.sock and sends JSON-over-newline requests.
@@ -29,9 +22,10 @@ export declare class BeadsClient {
29
22
  private execute;
30
23
  /**
31
24
  * Get mutations since a given timestamp.
32
- * @param since Unix timestamp in milliseconds (0 for all recent)
33
25
  */
34
- getMutations(since?: number): Promise<MutationEvent[]>;
26
+ getMutations(
27
+ /** Unix timestamp in milliseconds (0 for all recent) */
28
+ since?: number): Promise<MutationEvent[]>;
35
29
  /**
36
30
  * Get ready issues (no blockers).
37
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"beadsClient.d.ts","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAA;IAC9F,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAaD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BjC;;OAEG;YACW,OAAO;IAqDrB;;;OAGG;IACG,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK/D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAK1D;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC1C,QAAQ,GAAE,MAAa,GACtB,MAAM,IAAI,CAsDZ"}
1
+ {"version":3,"file":"beadsClient.d.ts","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,0DAA0D;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAe9D;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BjC;;OAEG;YACW,OAAO;IAqDrB;;OAEG;IACG,YAAY;IAChB,wDAAwD;IACxD,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAK1D;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC1C,QAAQ,GAAE,MAAa,GACtB,MAAM,IAAI,CAsDZ"}
@@ -90,9 +90,10 @@ export class BeadsClient {
90
90
  }
91
91
  /**
92
92
  * Get mutations since a given timestamp.
93
- * @param since Unix timestamp in milliseconds (0 for all recent)
94
93
  */
95
- async getMutations(since = 0) {
94
+ async getMutations(
95
+ /** Unix timestamp in milliseconds (0 for all recent) */
96
+ since = 0) {
96
97
  const result = await this.execute("get_mutations", { since });
97
98
  return result ?? [];
98
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"beadsClient.js","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beadsClient.js","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { StartupSnapshot } from "./types.js";
2
+ /** Capture a startup snapshot for a beads workspace. */
3
+ export declare const captureBeadsSnapshot: () => StartupSnapshot | undefined;
4
+ //# sourceMappingURL=captureBeadsSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureBeadsSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureBeadsSnapshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,QAAO,eAAe,GAAG,SA2BzD,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { execSync } from "child_process";
2
+ /** Capture a startup snapshot for a beads workspace. */
3
+ export const captureBeadsSnapshot = () => {
4
+ try {
5
+ const timestamp = new Date().toISOString();
6
+ const openCount = parseInt(execSync("bd count --status=open", {
7
+ encoding: "utf-8",
8
+ stdio: ["pipe", "pipe", "pipe"],
9
+ }).trim(), 10);
10
+ const inProgressCount = parseInt(execSync("bd count --status=in_progress", {
11
+ encoding: "utf-8",
12
+ stdio: ["pipe", "pipe", "pipe"],
13
+ }).trim(), 10);
14
+ return {
15
+ initialCount: openCount + inProgressCount,
16
+ timestamp,
17
+ type: "beads",
18
+ };
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ };
24
+ //# sourceMappingURL=captureBeadsSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureBeadsSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureBeadsSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgC,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE1C,MAAM,SAAS,GAAG,QAAQ,CACxB,QAAQ,CAAC,wBAAwB,EAAE;YACjC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,EACT,EAAE,CACH,CAAA;QACD,MAAM,eAAe,GAAG,QAAQ,CAC9B,QAAQ,CAAC,+BAA+B,EAAE;YACxC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,EACT,EAAE,CACH,CAAA;QAED,OAAO;YACL,YAAY,EAAE,SAAS,GAAG,eAAe;YACzC,SAAS;YACT,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { StartupSnapshot } from "./types.js";
2
+ /**
3
+ * Capture a startup snapshot for beads workspaces.
4
+ * Call this once at startup to capture the baseline count and timestamp.
5
+ * Returns undefined if not a beads workspace.
6
+ */
7
+ export declare const captureStartupSnapshot: () => StartupSnapshot | undefined;
8
+ /** @deprecated Use captureStartupSnapshot instead */
9
+ export declare const getInitialBeadsCount: () => number | undefined;
10
+ //# sourceMappingURL=captureStartupSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStartupSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureStartupSnapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAO,eAAe,GAAG,SAY3D,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,QAAO,MAAM,GAAG,SAGhD,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { existsSync } from "fs";
2
+ import { join } from "path";
3
+ import { captureBeadsSnapshot } from "./captureBeadsSnapshot.js";
4
+ import { captureTodoSnapshot } from "./captureTodoSnapshot.js";
5
+ const beadsDir = join(process.cwd(), ".beads");
6
+ const ralphDir = join(process.cwd(), ".ralph");
7
+ const todoFile = join(ralphDir, "todo.md");
8
+ /**
9
+ * Capture a startup snapshot for beads workspaces.
10
+ * Call this once at startup to capture the baseline count and timestamp.
11
+ * Returns undefined if not a beads workspace.
12
+ */
13
+ export const captureStartupSnapshot = () => {
14
+ // Check for beads workspace
15
+ if (existsSync(beadsDir)) {
16
+ return captureBeadsSnapshot();
17
+ }
18
+ // Check for todo.md workspace
19
+ if (existsSync(todoFile)) {
20
+ return captureTodoSnapshot();
21
+ }
22
+ return undefined;
23
+ };
24
+ /** @deprecated Use captureStartupSnapshot instead */
25
+ export const getInitialBeadsCount = () => {
26
+ const snapshot = captureStartupSnapshot();
27
+ return snapshot?.initialCount;
28
+ };
29
+ //# sourceMappingURL=captureStartupSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureStartupSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureStartupSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAgC,EAAE;IACtE,4BAA4B;IAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAoB,EAAE,CAAA;IAC/B,CAAC;IAED,8BAA8B;IAC9B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,EAAE,CAAA;IAC9B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAuB,EAAE;IAC3D,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAA;IACzC,OAAO,QAAQ,EAAE,YAAY,CAAA;AAC/B,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { StartupSnapshot } from "./types.js";
2
+ /** Capture a startup snapshot for a todo.md workspace. */
3
+ export declare const captureTodoSnapshot: () => StartupSnapshot | undefined;
4
+ //# sourceMappingURL=captureTodoSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureTodoSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureTodoSnapshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAKjD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,QAAO,eAAe,GAAG,SAmBxD,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { readFileSync } from "fs";
2
+ import { join } from "path";
3
+ const ralphDir = join(process.cwd(), ".ralph");
4
+ const todoFile = join(ralphDir, "todo.md");
5
+ /** Capture a startup snapshot for a todo.md workspace. */
6
+ export const captureTodoSnapshot = () => {
7
+ try {
8
+ const content = readFileSync(todoFile, "utf-8");
9
+ // Count all items (checked + unchecked)
10
+ const uncheckedMatches = content.match(/- \[ \]/g);
11
+ const unchecked = uncheckedMatches ? uncheckedMatches.length : 0;
12
+ const checkedMatches = content.match(/- \[[xX]\]/g);
13
+ const checked = checkedMatches ? checkedMatches.length : 0;
14
+ return {
15
+ initialCount: unchecked + checked,
16
+ timestamp: new Date().toISOString(),
17
+ type: "todo",
18
+ };
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ };
24
+ //# sourceMappingURL=captureTodoSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captureTodoSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureTodoSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE1C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAgC,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE/C,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1D,OAAO;YACL,YAAY,EAAE,SAAS,GAAG,OAAO;YACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,MAAM;SACb,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ /** Copy files from templates to destination, creating directories as needed. */
2
+ export declare function copyTemplates(
3
+ /** Directory containing template files */
4
+ templatesDir: string,
5
+ /** Destination directory for copied files */
6
+ destDir: string,
7
+ /** Array of source and destination path pairs */
8
+ files: Array<{
9
+ src: string;
10
+ dest: string;
11
+ }>): CopyResult;
12
+ /** Result of copying template files. */
13
+ interface CopyResult {
14
+ /** Files successfully created */
15
+ created: string[];
16
+ /** Files that already existed and were skipped */
17
+ skipped: string[];
18
+ /** Error messages for files that could not be copied */
19
+ errors: string[];
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=copyTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTemplates.d.ts","sourceRoot":"","sources":["../../src/lib/copyTemplates.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,wBAAgB,aAAa;AAC3B,0CAA0C;AAC1C,YAAY,EAAE,MAAM;AACpB,6CAA6C;AAC7C,OAAO,EAAE,MAAM;AACf,iDAAiD;AACjD,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C,UAAU,CAuBZ;AAED,yCAAyC;AACzC,UAAU,UAAU;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}