@herbcaudill/ralph 1.0.1 → 1.1.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.
Files changed (353) hide show
  1. package/README.md +93 -0
  2. package/dist/index.js +2480 -6
  3. package/dist/index.js.map +1 -1
  4. package/package.json +10 -9
  5. package/templates/core-prompt.md +3 -19
  6. package/templates/skills/manage-tasks/SKILL.md +0 -3
  7. package/templates/workflow.md +5 -19
  8. package/dist/cli.d.ts +0 -3
  9. package/dist/cli.d.ts.map +0 -1
  10. package/dist/cli.js +0 -102
  11. package/dist/cli.js.map +0 -1
  12. package/dist/components/App.d.ts +0 -17
  13. package/dist/components/App.d.ts.map +0 -1
  14. package/dist/components/App.js +0 -18
  15. package/dist/components/App.js.map +0 -1
  16. package/dist/components/EnhancedTextInput.d.ts +0 -22
  17. package/dist/components/EnhancedTextInput.d.ts.map +0 -1
  18. package/dist/components/EnhancedTextInput.js +0 -130
  19. package/dist/components/EnhancedTextInput.js.map +0 -1
  20. package/dist/components/EnhancedTextInput.test.d.ts +0 -2
  21. package/dist/components/EnhancedTextInput.test.d.ts.map +0 -1
  22. package/dist/components/EnhancedTextInput.test.js +0 -99
  23. package/dist/components/EnhancedTextInput.test.js.map +0 -1
  24. package/dist/components/EventDisplay.d.ts +0 -14
  25. package/dist/components/EventDisplay.d.ts.map +0 -1
  26. package/dist/components/EventDisplay.js +0 -91
  27. package/dist/components/EventDisplay.js.map +0 -1
  28. package/dist/components/EventDisplay.replay.test.d.ts +0 -2
  29. package/dist/components/EventDisplay.replay.test.d.ts.map +0 -1
  30. package/dist/components/EventDisplay.replay.test.js +0 -379
  31. package/dist/components/EventDisplay.replay.test.js.map +0 -1
  32. package/dist/components/EventDisplay.test.d.ts +0 -2
  33. package/dist/components/EventDisplay.test.d.ts.map +0 -1
  34. package/dist/components/EventDisplay.test.js +0 -349
  35. package/dist/components/EventDisplay.test.js.map +0 -1
  36. package/dist/components/FullScreenLayout.d.ts +0 -15
  37. package/dist/components/FullScreenLayout.d.ts.map +0 -1
  38. package/dist/components/FullScreenLayout.js +0 -20
  39. package/dist/components/FullScreenLayout.js.map +0 -1
  40. package/dist/components/Header.d.ts +0 -10
  41. package/dist/components/Header.d.ts.map +0 -1
  42. package/dist/components/Header.js +0 -22
  43. package/dist/components/Header.js.map +0 -1
  44. package/dist/components/Header.test.d.ts +0 -2
  45. package/dist/components/Header.test.d.ts.map +0 -1
  46. package/dist/components/Header.test.js +0 -27
  47. package/dist/components/Header.test.js.map +0 -1
  48. package/dist/components/InitRalph.d.ts +0 -8
  49. package/dist/components/InitRalph.d.ts.map +0 -1
  50. package/dist/components/InitRalph.js +0 -136
  51. package/dist/components/InitRalph.js.map +0 -1
  52. package/dist/components/IterationRunner.d.ts +0 -10
  53. package/dist/components/IterationRunner.d.ts.map +0 -1
  54. package/dist/components/IterationRunner.js +0 -536
  55. package/dist/components/IterationRunner.js.map +0 -1
  56. package/dist/components/IterationRunner.test.d.ts +0 -46
  57. package/dist/components/IterationRunner.test.d.ts.map +0 -1
  58. package/dist/components/IterationRunner.test.js +0 -69
  59. package/dist/components/IterationRunner.test.js.map +0 -1
  60. package/dist/components/IterationRunner.types.d.ts +0 -30
  61. package/dist/components/IterationRunner.types.d.ts.map +0 -1
  62. package/dist/components/IterationRunner.types.js +0 -2
  63. package/dist/components/IterationRunner.types.js.map +0 -1
  64. package/dist/components/JsonOutput.d.ts +0 -13
  65. package/dist/components/JsonOutput.d.ts.map +0 -1
  66. package/dist/components/JsonOutput.js +0 -269
  67. package/dist/components/JsonOutput.js.map +0 -1
  68. package/dist/components/JsonOutput.test.d.ts +0 -2
  69. package/dist/components/JsonOutput.test.d.ts.map +0 -1
  70. package/dist/components/JsonOutput.test.js +0 -39
  71. package/dist/components/JsonOutput.test.js.map +0 -1
  72. package/dist/components/ProgressBar.d.ts +0 -18
  73. package/dist/components/ProgressBar.d.ts.map +0 -1
  74. package/dist/components/ProgressBar.js +0 -30
  75. package/dist/components/ProgressBar.js.map +0 -1
  76. package/dist/components/ProgressBar.test.d.ts +0 -2
  77. package/dist/components/ProgressBar.test.d.ts.map +0 -1
  78. package/dist/components/ProgressBar.test.js +0 -55
  79. package/dist/components/ProgressBar.test.js.map +0 -1
  80. package/dist/components/ReplayLog.d.ts +0 -7
  81. package/dist/components/ReplayLog.d.ts.map +0 -1
  82. package/dist/components/ReplayLog.js +0 -57
  83. package/dist/components/ReplayLog.js.map +0 -1
  84. package/dist/components/StreamingText.d.ts +0 -11
  85. package/dist/components/StreamingText.d.ts.map +0 -1
  86. package/dist/components/StreamingText.js +0 -37
  87. package/dist/components/StreamingText.js.map +0 -1
  88. package/dist/components/StreamingText.test.d.ts +0 -2
  89. package/dist/components/StreamingText.test.d.ts.map +0 -1
  90. package/dist/components/StreamingText.test.js +0 -125
  91. package/dist/components/StreamingText.test.js.map +0 -1
  92. package/dist/components/ToolUse.d.ts +0 -16
  93. package/dist/components/ToolUse.d.ts.map +0 -1
  94. package/dist/components/ToolUse.js +0 -11
  95. package/dist/components/ToolUse.js.map +0 -1
  96. package/dist/components/ToolUse.test.d.ts +0 -2
  97. package/dist/components/ToolUse.test.d.ts.map +0 -1
  98. package/dist/components/ToolUse.test.js +0 -43
  99. package/dist/components/ToolUse.test.js.map +0 -1
  100. package/dist/components/blocksToLines.d.ts +0 -6
  101. package/dist/components/blocksToLines.d.ts.map +0 -1
  102. package/dist/components/blocksToLines.js +0 -15
  103. package/dist/components/blocksToLines.js.map +0 -1
  104. package/dist/components/eventToBlocks.d.ts +0 -22
  105. package/dist/components/eventToBlocks.d.ts.map +0 -1
  106. package/dist/components/eventToBlocks.js +0 -166
  107. package/dist/components/eventToBlocks.js.map +0 -1
  108. package/dist/components/eventToBlocks.test.d.ts +0 -2
  109. package/dist/components/eventToBlocks.test.d.ts.map +0 -1
  110. package/dist/components/eventToBlocks.test.js +0 -466
  111. package/dist/components/eventToBlocks.test.js.map +0 -1
  112. package/dist/components/findNextWordBoundary.d.ts +0 -10
  113. package/dist/components/findNextWordBoundary.d.ts.map +0 -1
  114. package/dist/components/findNextWordBoundary.js +0 -23
  115. package/dist/components/findNextWordBoundary.js.map +0 -1
  116. package/dist/components/findPreviousWordBoundary.d.ts +0 -10
  117. package/dist/components/findPreviousWordBoundary.d.ts.map +0 -1
  118. package/dist/components/findPreviousWordBoundary.js +0 -23
  119. package/dist/components/findPreviousWordBoundary.js.map +0 -1
  120. package/dist/components/processEvents.d.ts +0 -11
  121. package/dist/components/processEvents.d.ts.map +0 -1
  122. package/dist/components/processEvents.js +0 -87
  123. package/dist/components/processEvents.js.map +0 -1
  124. package/dist/components/renderStaticItem.d.ts +0 -7
  125. package/dist/components/renderStaticItem.d.ts.map +0 -1
  126. package/dist/components/renderStaticItem.js +0 -23
  127. package/dist/components/renderStaticItem.js.map +0 -1
  128. package/dist/components/replay.d.ts +0 -5
  129. package/dist/components/replay.d.ts.map +0 -1
  130. package/dist/components/replay.js +0 -49
  131. package/dist/components/replay.js.map +0 -1
  132. package/dist/components/test-helpers/ControlledInput.d.ts +0 -14
  133. package/dist/components/test-helpers/ControlledInput.d.ts.map +0 -1
  134. package/dist/components/test-helpers/ControlledInput.js +0 -15
  135. package/dist/components/test-helpers/ControlledInput.js.map +0 -1
  136. package/dist/components/useContentHeight.d.ts +0 -9
  137. package/dist/components/useContentHeight.d.ts.map +0 -1
  138. package/dist/components/useContentHeight.js +0 -16
  139. package/dist/components/useContentHeight.js.map +0 -1
  140. package/dist/index.d.ts +0 -3
  141. package/dist/index.d.ts.map +0 -1
  142. package/dist/lib/MessageQueue.d.ts +0 -33
  143. package/dist/lib/MessageQueue.d.ts.map +0 -1
  144. package/dist/lib/MessageQueue.js +0 -96
  145. package/dist/lib/MessageQueue.js.map +0 -1
  146. package/dist/lib/MessageQueue.test.d.ts +0 -2
  147. package/dist/lib/MessageQueue.test.d.ts.map +0 -1
  148. package/dist/lib/MessageQueue.test.js +0 -224
  149. package/dist/lib/MessageQueue.test.js.map +0 -1
  150. package/dist/lib/StdinCommandHandler.d.ts +0 -48
  151. package/dist/lib/StdinCommandHandler.d.ts.map +0 -1
  152. package/dist/lib/StdinCommandHandler.js +0 -95
  153. package/dist/lib/StdinCommandHandler.js.map +0 -1
  154. package/dist/lib/StdinCommandHandler.test.d.ts +0 -2
  155. package/dist/lib/StdinCommandHandler.test.d.ts.map +0 -1
  156. package/dist/lib/StdinCommandHandler.test.js +0 -93
  157. package/dist/lib/StdinCommandHandler.test.js.map +0 -1
  158. package/dist/lib/WorktreeManager.d.ts +0 -114
  159. package/dist/lib/WorktreeManager.d.ts.map +0 -1
  160. package/dist/lib/WorktreeManager.js +0 -350
  161. package/dist/lib/WorktreeManager.js.map +0 -1
  162. package/dist/lib/WorktreeManager.test.d.ts +0 -2
  163. package/dist/lib/WorktreeManager.test.d.ts.map +0 -1
  164. package/dist/lib/WorktreeManager.test.js +0 -261
  165. package/dist/lib/WorktreeManager.test.js.map +0 -1
  166. package/dist/lib/addTodo.d.ts +0 -11
  167. package/dist/lib/addTodo.d.ts.map +0 -1
  168. package/dist/lib/addTodo.js +0 -51
  169. package/dist/lib/addTodo.js.map +0 -1
  170. package/dist/lib/beadsClient.d.ts +0 -46
  171. package/dist/lib/beadsClient.d.ts.map +0 -1
  172. package/dist/lib/beadsClient.js +0 -172
  173. package/dist/lib/beadsClient.js.map +0 -1
  174. package/dist/lib/captureBeadsSnapshot.d.ts +0 -4
  175. package/dist/lib/captureBeadsSnapshot.d.ts.map +0 -1
  176. package/dist/lib/captureBeadsSnapshot.js +0 -24
  177. package/dist/lib/captureBeadsSnapshot.js.map +0 -1
  178. package/dist/lib/captureStartupSnapshot.d.ts +0 -10
  179. package/dist/lib/captureStartupSnapshot.d.ts.map +0 -1
  180. package/dist/lib/captureStartupSnapshot.js +0 -29
  181. package/dist/lib/captureStartupSnapshot.js.map +0 -1
  182. package/dist/lib/captureTodoSnapshot.d.ts +0 -4
  183. package/dist/lib/captureTodoSnapshot.d.ts.map +0 -1
  184. package/dist/lib/captureTodoSnapshot.js +0 -24
  185. package/dist/lib/captureTodoSnapshot.js.map +0 -1
  186. package/dist/lib/copyTemplates.d.ts +0 -22
  187. package/dist/lib/copyTemplates.d.ts.map +0 -1
  188. package/dist/lib/copyTemplates.js +0 -32
  189. package/dist/lib/copyTemplates.js.map +0 -1
  190. package/dist/lib/createStdinCommandHandler.d.ts +0 -28
  191. package/dist/lib/createStdinCommandHandler.d.ts.map +0 -1
  192. package/dist/lib/createStdinCommandHandler.js +0 -67
  193. package/dist/lib/createStdinCommandHandler.js.map +0 -1
  194. package/dist/lib/createUserMessage.d.ts +0 -6
  195. package/dist/lib/createUserMessage.d.ts.map +0 -1
  196. package/dist/lib/createUserMessage.js +0 -13
  197. package/dist/lib/createUserMessage.js.map +0 -1
  198. package/dist/lib/debug.d.ts +0 -19
  199. package/dist/lib/debug.d.ts.map +0 -1
  200. package/dist/lib/debug.js +0 -54
  201. package/dist/lib/debug.js.map +0 -1
  202. package/dist/lib/findMaxLogNumber.d.ts +0 -6
  203. package/dist/lib/findMaxLogNumber.d.ts.map +0 -1
  204. package/dist/lib/findMaxLogNumber.js +0 -26
  205. package/dist/lib/findMaxLogNumber.js.map +0 -1
  206. package/dist/lib/findMaxLogNumber.test.d.ts +0 -2
  207. package/dist/lib/findMaxLogNumber.test.d.ts.map +0 -1
  208. package/dist/lib/findMaxLogNumber.test.js +0 -39
  209. package/dist/lib/findMaxLogNumber.test.js.map +0 -1
  210. package/dist/lib/formatContentBlock.d.ts +0 -6
  211. package/dist/lib/formatContentBlock.d.ts.map +0 -1
  212. package/dist/lib/formatContentBlock.js +0 -18
  213. package/dist/lib/formatContentBlock.js.map +0 -1
  214. package/dist/lib/formatIterationHeader.d.ts +0 -5
  215. package/dist/lib/formatIterationHeader.d.ts.map +0 -1
  216. package/dist/lib/formatIterationHeader.js +0 -8
  217. package/dist/lib/formatIterationHeader.js.map +0 -1
  218. package/dist/lib/formatText.d.ts +0 -5
  219. package/dist/lib/formatText.d.ts.map +0 -1
  220. package/dist/lib/formatText.js +0 -33
  221. package/dist/lib/formatText.js.map +0 -1
  222. package/dist/lib/formatToolUse.d.ts +0 -7
  223. package/dist/lib/formatToolUse.d.ts.map +0 -1
  224. package/dist/lib/formatToolUse.js +0 -14
  225. package/dist/lib/formatToolUse.js.map +0 -1
  226. package/dist/lib/formatUserMessage.d.ts +0 -5
  227. package/dist/lib/formatUserMessage.d.ts.map +0 -1
  228. package/dist/lib/formatUserMessage.js +0 -8
  229. package/dist/lib/formatUserMessage.js.map +0 -1
  230. package/dist/lib/getBaseCwd.d.ts +0 -6
  231. package/dist/lib/getBaseCwd.d.ts.map +0 -1
  232. package/dist/lib/getBaseCwd.js +0 -6
  233. package/dist/lib/getBaseCwd.js.map +0 -1
  234. package/dist/lib/getBeadsProgress.d.ts +0 -8
  235. package/dist/lib/getBeadsProgress.d.ts.map +0 -1
  236. package/dist/lib/getBeadsProgress.js +0 -35
  237. package/dist/lib/getBeadsProgress.js.map +0 -1
  238. package/dist/lib/getClaudeVersion.d.ts +0 -6
  239. package/dist/lib/getClaudeVersion.d.ts.map +0 -1
  240. package/dist/lib/getClaudeVersion.js +0 -21
  241. package/dist/lib/getClaudeVersion.js.map +0 -1
  242. package/dist/lib/getClaudeVersion.test.d.ts +0 -2
  243. package/dist/lib/getClaudeVersion.test.d.ts.map +0 -1
  244. package/dist/lib/getClaudeVersion.test.js +0 -39
  245. package/dist/lib/getClaudeVersion.test.js.map +0 -1
  246. package/dist/lib/getDefaultIterations.d.ts +0 -6
  247. package/dist/lib/getDefaultIterations.d.ts.map +0 -1
  248. package/dist/lib/getDefaultIterations.js +0 -14
  249. package/dist/lib/getDefaultIterations.js.map +0 -1
  250. package/dist/lib/getDefaultIterations.test.d.ts +0 -2
  251. package/dist/lib/getDefaultIterations.test.d.ts.map +0 -1
  252. package/dist/lib/getDefaultIterations.test.js +0 -39
  253. package/dist/lib/getDefaultIterations.test.js.map +0 -1
  254. package/dist/lib/getLatestLogFile.d.ts +0 -6
  255. package/dist/lib/getLatestLogFile.d.ts.map +0 -1
  256. package/dist/lib/getLatestLogFile.js +0 -15
  257. package/dist/lib/getLatestLogFile.js.map +0 -1
  258. package/dist/lib/getNextLogFile.d.ts +0 -7
  259. package/dist/lib/getNextLogFile.d.ts.map +0 -1
  260. package/dist/lib/getNextLogFile.js +0 -18
  261. package/dist/lib/getNextLogFile.js.map +0 -1
  262. package/dist/lib/getNextLogFile.test.d.ts +0 -2
  263. package/dist/lib/getNextLogFile.test.d.ts.map +0 -1
  264. package/dist/lib/getNextLogFile.test.js +0 -66
  265. package/dist/lib/getNextLogFile.test.js.map +0 -1
  266. package/dist/lib/getOpenIssueCount.d.ts +0 -6
  267. package/dist/lib/getOpenIssueCount.d.ts.map +0 -1
  268. package/dist/lib/getOpenIssueCount.js +0 -19
  269. package/dist/lib/getOpenIssueCount.js.map +0 -1
  270. package/dist/lib/getOpenIssueCount.test.d.ts +0 -2
  271. package/dist/lib/getOpenIssueCount.test.d.ts.map +0 -1
  272. package/dist/lib/getOpenIssueCount.test.js +0 -31
  273. package/dist/lib/getOpenIssueCount.test.js.map +0 -1
  274. package/dist/lib/getProgress.d.ts +0 -14
  275. package/dist/lib/getProgress.d.ts.map +0 -1
  276. package/dist/lib/getProgress.js +0 -30
  277. package/dist/lib/getProgress.js.map +0 -1
  278. package/dist/lib/getProgress.test.d.ts +0 -2
  279. package/dist/lib/getProgress.test.d.ts.map +0 -1
  280. package/dist/lib/getProgress.test.js +0 -218
  281. package/dist/lib/getProgress.test.js.map +0 -1
  282. package/dist/lib/getPromptContent.d.ts +0 -8
  283. package/dist/lib/getPromptContent.d.ts.map +0 -1
  284. package/dist/lib/getPromptContent.js +0 -31
  285. package/dist/lib/getPromptContent.js.map +0 -1
  286. package/dist/lib/getTerminalSize.d.ts +0 -8
  287. package/dist/lib/getTerminalSize.d.ts.map +0 -1
  288. package/dist/lib/getTerminalSize.js +0 -10
  289. package/dist/lib/getTerminalSize.js.map +0 -1
  290. package/dist/lib/getTodoProgress.d.ts +0 -4
  291. package/dist/lib/getTodoProgress.d.ts.map +0 -1
  292. package/dist/lib/getTodoProgress.js +0 -22
  293. package/dist/lib/getTodoProgress.js.map +0 -1
  294. package/dist/lib/insertTodo.d.ts +0 -7
  295. package/dist/lib/insertTodo.d.ts.map +0 -1
  296. package/dist/lib/insertTodo.js +0 -22
  297. package/dist/lib/insertTodo.js.map +0 -1
  298. package/dist/lib/outputEvent.d.ts +0 -5
  299. package/dist/lib/outputEvent.d.ts.map +0 -1
  300. package/dist/lib/outputEvent.js +0 -7
  301. package/dist/lib/outputEvent.js.map +0 -1
  302. package/dist/lib/parseStdinCommand.d.ts +0 -25
  303. package/dist/lib/parseStdinCommand.d.ts.map +0 -1
  304. package/dist/lib/parseStdinCommand.js +0 -43
  305. package/dist/lib/parseStdinCommand.js.map +0 -1
  306. package/dist/lib/parseStdinCommand.test.d.ts +0 -2
  307. package/dist/lib/parseStdinCommand.test.d.ts.map +0 -1
  308. package/dist/lib/parseStdinCommand.test.js +0 -93
  309. package/dist/lib/parseStdinCommand.test.js.map +0 -1
  310. package/dist/lib/parseTaskLifecycle.d.ts +0 -18
  311. package/dist/lib/parseTaskLifecycle.d.ts.map +0 -1
  312. package/dist/lib/parseTaskLifecycle.js +0 -30
  313. package/dist/lib/parseTaskLifecycle.js.map +0 -1
  314. package/dist/lib/parseTaskLifecycle.test.d.ts +0 -2
  315. package/dist/lib/parseTaskLifecycle.test.d.ts.map +0 -1
  316. package/dist/lib/parseTaskLifecycle.test.js +0 -122
  317. package/dist/lib/parseTaskLifecycle.test.js.map +0 -1
  318. package/dist/lib/parseWorktreeFromBranch.d.ts +0 -13
  319. package/dist/lib/parseWorktreeFromBranch.d.ts.map +0 -1
  320. package/dist/lib/parseWorktreeFromBranch.js +0 -19
  321. package/dist/lib/parseWorktreeFromBranch.js.map +0 -1
  322. package/dist/lib/processEvents.d.ts +0 -12
  323. package/dist/lib/processEvents.d.ts.map +0 -1
  324. package/dist/lib/processEvents.js +0 -113
  325. package/dist/lib/processEvents.js.map +0 -1
  326. package/dist/lib/rel.d.ts +0 -8
  327. package/dist/lib/rel.d.ts.map +0 -1
  328. package/dist/lib/rel.js +0 -19
  329. package/dist/lib/rel.js.map +0 -1
  330. package/dist/lib/rel.test.d.ts +0 -2
  331. package/dist/lib/rel.test.d.ts.map +0 -1
  332. package/dist/lib/rel.test.js +0 -51
  333. package/dist/lib/rel.test.js.map +0 -1
  334. package/dist/lib/sdkMessageToEvent.d.ts +0 -6
  335. package/dist/lib/sdkMessageToEvent.d.ts.map +0 -1
  336. package/dist/lib/sdkMessageToEvent.js +0 -12
  337. package/dist/lib/sdkMessageToEvent.js.map +0 -1
  338. package/dist/lib/shortenTempPaths.d.ts +0 -8
  339. package/dist/lib/shortenTempPaths.d.ts.map +0 -1
  340. package/dist/lib/shortenTempPaths.js +0 -12
  341. package/dist/lib/shortenTempPaths.js.map +0 -1
  342. package/dist/lib/shortenTempPaths.test.d.ts +0 -2
  343. package/dist/lib/shortenTempPaths.test.d.ts.map +0 -1
  344. package/dist/lib/shortenTempPaths.test.js +0 -46
  345. package/dist/lib/shortenTempPaths.test.js.map +0 -1
  346. package/dist/lib/types.d.ts +0 -19
  347. package/dist/lib/types.d.ts.map +0 -1
  348. package/dist/lib/types.js +0 -2
  349. package/dist/lib/types.js.map +0 -1
  350. package/dist/lib/useTerminalSize.d.ts +0 -6
  351. package/dist/lib/useTerminalSize.d.ts.map +0 -1
  352. package/dist/lib/useTerminalSize.js +0 -19
  353. package/dist/lib/useTerminalSize.js.map +0 -1
@@ -1,7 +0,0 @@
1
- /**
2
- * Get the path to the next sequential log file in the .ralph directory.
3
- * Files are named events-1.jsonl, events-2.jsonl, etc.
4
- * Returns the path for the next available number (highest existing + 1).
5
- */
6
- export declare const getNextLogFile: () => string;
7
- //# sourceMappingURL=getNextLogFile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNextLogFile.d.ts","sourceRoot":"","sources":["../../src/lib/getNextLogFile.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAAO,MAUjC,CAAA"}
@@ -1,18 +0,0 @@
1
- import { existsSync, mkdirSync } from "fs";
2
- import { join } from "path";
3
- import { findMaxLogNumber } from "./findMaxLogNumber.js";
4
- /**
5
- * Get the path to the next sequential log file in the .ralph directory.
6
- * Files are named events-1.jsonl, events-2.jsonl, etc.
7
- * Returns the path for the next available number (highest existing + 1).
8
- */
9
- export const getNextLogFile = () => {
10
- const ralphDir = join(process.cwd(), ".ralph");
11
- // Ensure .ralph directory exists
12
- if (!existsSync(ralphDir)) {
13
- mkdirSync(ralphDir, { recursive: true });
14
- }
15
- const maxNumber = findMaxLogNumber();
16
- return join(ralphDir, `events-${maxNumber + 1}.jsonl`);
17
- };
18
- //# sourceMappingURL=getNextLogFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNextLogFile.js","sourceRoot":"","sources":["../../src/lib/getNextLogFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE9C,iCAAiC;IACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAA;IACpC,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAA;AACxD,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getNextLogFile.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNextLogFile.test.d.ts","sourceRoot":"","sources":["../../src/lib/getNextLogFile.test.ts"],"names":[],"mappings":""}
@@ -1,66 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { getNextLogFile } from "./getNextLogFile.js";
3
- import { getLatestLogFile } from "./getLatestLogFile.js";
4
- import { rmSync, existsSync } from "fs";
5
- import { join } from "path";
6
- describe("getNextLogFile", () => {
7
- const testDir = join(process.cwd(), ".ralph-test");
8
- beforeEach(() => {
9
- // Clean up any existing test directory
10
- if (existsSync(testDir)) {
11
- rmSync(testDir, { recursive: true });
12
- }
13
- });
14
- afterEach(() => {
15
- // Clean up test directory
16
- if (existsSync(testDir)) {
17
- rmSync(testDir, { recursive: true });
18
- }
19
- });
20
- describe("getNextLogFile", () => {
21
- it("returns events-1.jsonl when no logs exist", () => {
22
- // Mock the current working directory by creating a test context
23
- // Note: This test uses the actual cwd, so we need to ensure .ralph doesn't exist
24
- // or has no event logs. For unit testing, we'd typically mock the file system.
25
- const result = getNextLogFile();
26
- expect(result).toMatch(/events-\d+\.jsonl$/);
27
- });
28
- });
29
- describe("getLatestLogFile", () => {
30
- it("returns undefined when no logs exist in empty directory", () => {
31
- // Create .ralph directory but with no log files
32
- const ralphDir = join(process.cwd(), ".ralph");
33
- // This test would need to mock the file system to be fully isolated
34
- // For now, we test the function returns the expected pattern
35
- const result = getLatestLogFile();
36
- // Either undefined (no logs) or a valid path (existing logs)
37
- if (result !== undefined) {
38
- expect(result).toMatch(/events-\d+\.jsonl$/);
39
- }
40
- });
41
- });
42
- });
43
- // Integration tests that verify the sequential numbering behavior
44
- describe("sequential log file naming", () => {
45
- it("getNextLogFile returns one higher than getLatestLogFile", () => {
46
- const latest = getLatestLogFile();
47
- const next = getNextLogFile();
48
- if (latest === undefined) {
49
- // No existing logs, next should be events-1.jsonl
50
- expect(next).toContain("events-1.jsonl");
51
- }
52
- else {
53
- // Extract numbers and verify next is latest + 1
54
- const latestMatch = latest.match(/events-(\d+)\.jsonl$/);
55
- const nextMatch = next.match(/events-(\d+)\.jsonl$/);
56
- expect(latestMatch).not.toBeNull();
57
- expect(nextMatch).not.toBeNull();
58
- if (latestMatch && nextMatch) {
59
- const latestNum = parseInt(latestMatch[1], 10);
60
- const nextNum = parseInt(nextMatch[1], 10);
61
- expect(nextNum).toBe(latestNum + 1);
62
- }
63
- }
64
- });
65
- });
66
- //# sourceMappingURL=getNextLogFile.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNextLogFile.test.js","sourceRoot":"","sources":["../../src/lib/getNextLogFile.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Get the number of open issues from beads.
3
- * Returns 0 if beads is not available or there are no issues.
4
- */
5
- export declare const getOpenIssueCount: () => number;
6
- //# sourceMappingURL=getOpenIssueCount.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOpenIssueCount.d.ts","sourceRoot":"","sources":["../../src/lib/getOpenIssueCount.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAYpC,CAAA"}
@@ -1,19 +0,0 @@
1
- import { execSync } from "child_process";
2
- /**
3
- * Get the number of open issues from beads.
4
- * Returns 0 if beads is not available or there are no issues.
5
- */
6
- export const getOpenIssueCount = () => {
7
- try {
8
- const output = execSync("bd list --status=open --json", {
9
- encoding: "utf-8",
10
- stdio: ["pipe", "pipe", "pipe"],
11
- }).trim();
12
- const issues = JSON.parse(output);
13
- return Array.isArray(issues) ? issues.length : 0;
14
- }
15
- catch {
16
- return 0;
17
- }
18
- };
19
- //# sourceMappingURL=getOpenIssueCount.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOpenIssueCount.js","sourceRoot":"","sources":["../../src/lib/getOpenIssueCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,8BAA8B,EAAE;YACtD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAA;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getOpenIssueCount.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOpenIssueCount.test.d.ts","sourceRoot":"","sources":["../../src/lib/getOpenIssueCount.test.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { getOpenIssueCount } from "./getOpenIssueCount.js";
3
- import * as childProcess from "child_process";
4
- vi.mock("child_process");
5
- describe("getOpenIssueCount", () => {
6
- beforeEach(() => {
7
- vi.resetAllMocks();
8
- });
9
- afterEach(() => {
10
- vi.restoreAllMocks();
11
- });
12
- it("returns the count of open issues", () => {
13
- vi.mocked(childProcess.execSync).mockReturnValue(JSON.stringify([{ id: "1" }, { id: "2" }, { id: "3" }]));
14
- expect(getOpenIssueCount()).toBe(3);
15
- });
16
- it("returns 0 when bd command fails", () => {
17
- vi.mocked(childProcess.execSync).mockImplementation(() => {
18
- throw new Error("bd not found");
19
- });
20
- expect(getOpenIssueCount()).toBe(0);
21
- });
22
- it("returns 0 when output is invalid JSON", () => {
23
- vi.mocked(childProcess.execSync).mockReturnValue("not json");
24
- expect(getOpenIssueCount()).toBe(0);
25
- });
26
- it("returns 0 when output is not an array", () => {
27
- vi.mocked(childProcess.execSync).mockReturnValue('{"error": "something"}');
28
- expect(getOpenIssueCount()).toBe(0);
29
- });
30
- });
31
- //# sourceMappingURL=getOpenIssueCount.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getOpenIssueCount.test.js","sourceRoot":"","sources":["../../src/lib/getOpenIssueCount.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,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,YAAY,MAAM,eAAe,CAAA;AAE7C,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAExB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,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,kCAAkC,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,eAAe,CAC9C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CACxD,CAAA;QACD,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAA;QAC1E,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,14 +0,0 @@
1
- import type { ProgressData } from "./types.js";
2
- /**
3
- * Get progress data from the workspace.
4
- *
5
- * For beads workspaces: Uses timestamp-based counting to accurately track
6
- * issues closed and created since startup.
7
- * For todo.md workspaces: completed = checked items, total = all items
8
- */
9
- export declare const getProgress: (
10
- /** Initial count of open + in_progress issues at startup */
11
- initialCount: number,
12
- /** RFC3339 timestamp for counting issues created after this time */
13
- startupTimestamp: string) => ProgressData;
14
- //# sourceMappingURL=getProgress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProgress.d.ts","sourceRoot":"","sources":["../../src/lib/getProgress.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;AACtB,4DAA4D;AAC5D,cAAc,MAAM;AACpB,oEAAoE;AACpE,kBAAkB,MAAM,KACvB,YAYF,CAAA"}
@@ -1,30 +0,0 @@
1
- import { existsSync } from "fs";
2
- import { join } from "path";
3
- import { getBeadsProgress } from "./getBeadsProgress.js";
4
- import { getTodoProgress } from "./getTodoProgress.js";
5
- const beadsDir = join(process.cwd(), ".beads");
6
- const ralphDir = join(process.cwd(), ".ralph");
7
- const todoFile = join(ralphDir, "todo.md");
8
- /**
9
- * Get progress data from the workspace.
10
- *
11
- * For beads workspaces: Uses timestamp-based counting to accurately track
12
- * issues closed and created since startup.
13
- * For todo.md workspaces: completed = checked items, total = all items
14
- */
15
- export const getProgress = (
16
- /** Initial count of open + in_progress issues at startup */
17
- initialCount,
18
- /** RFC3339 timestamp for counting issues created after this time */
19
- startupTimestamp) => {
20
- // Check for beads workspace first
21
- if (existsSync(beadsDir)) {
22
- return getBeadsProgress(initialCount, startupTimestamp);
23
- }
24
- // Check for todo.md
25
- if (existsSync(todoFile)) {
26
- return getTodoProgress();
27
- }
28
- return { type: "none", completed: 0, total: 0 };
29
- };
30
- //# sourceMappingURL=getProgress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProgress.js","sourceRoot":"","sources":["../../src/lib/getProgress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,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;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;AACzB,4DAA4D;AAC5D,YAAoB;AACpB,oEAAoE;AACpE,gBAAwB,EACV,EAAE;IAChB,kCAAkC;IAClC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;IACzD,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,eAAe,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AACjD,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=getProgress.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProgress.test.d.ts","sourceRoot":"","sources":["../../src/lib/getProgress.test.ts"],"names":[],"mappings":""}
@@ -1,218 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { getProgress } from "./getProgress.js";
3
- import { captureStartupSnapshot } from "./captureStartupSnapshot.js";
4
- import * as fs from "fs";
5
- import * as child_process from "child_process";
6
- vi.mock("fs");
7
- vi.mock("child_process");
8
- const mockExistsSync = vi.mocked(fs.existsSync);
9
- const mockReadFileSync = vi.mocked(fs.readFileSync);
10
- const mockExecSync = vi.mocked(child_process.execSync);
11
- describe("getProgress", () => {
12
- beforeEach(() => {
13
- vi.clearAllMocks();
14
- });
15
- afterEach(() => {
16
- vi.restoreAllMocks();
17
- });
18
- describe("with beads workspace", () => {
19
- it("returns beads progress with timestamp-based counting", () => {
20
- mockExistsSync.mockImplementation(path => {
21
- if (typeof path === "string" && path.endsWith(".beads"))
22
- return true;
23
- return false;
24
- });
25
- // Calls: created-after, status=open, status=in_progress
26
- // 1 created, 3 open, 1 in_progress → completed = (5+1) - (3+1) = 2
27
- mockExecSync.mockReturnValueOnce("1").mockReturnValueOnce("3").mockReturnValueOnce("1");
28
- const result = getProgress(5, "2024-01-01T00:00:00.000Z");
29
- expect(result.type).toBe("beads");
30
- expect(result.completed).toBe(2); // total(6) - remaining(4) = 2
31
- expect(result.total).toBe(6); // 5 initial + 1 created
32
- });
33
- it("handles no progress (0 closed, 0 created)", () => {
34
- mockExistsSync.mockImplementation(path => {
35
- if (typeof path === "string" && path.endsWith(".beads"))
36
- return true;
37
- return false;
38
- });
39
- // Calls: created-after, status=open, status=in_progress
40
- // 0 created, 3 open, 2 in_progress → completed = 5 - 5 = 0
41
- mockExecSync.mockReturnValueOnce("0").mockReturnValueOnce("3").mockReturnValueOnce("2");
42
- const result = getProgress(5, "2024-01-01T00:00:00.000Z");
43
- expect(result.type).toBe("beads");
44
- expect(result.completed).toBe(0);
45
- expect(result.total).toBe(5);
46
- });
47
- it("handles all closed", () => {
48
- mockExistsSync.mockImplementation(path => {
49
- if (typeof path === "string" && path.endsWith(".beads"))
50
- return true;
51
- return false;
52
- });
53
- // Calls: created-after, status=open, status=in_progress
54
- // 0 created, 0 open, 0 in_progress → completed = 5 - 0 = 5
55
- mockExecSync.mockReturnValueOnce("0").mockReturnValueOnce("0").mockReturnValueOnce("0");
56
- const result = getProgress(5, "2024-01-01T00:00:00.000Z");
57
- expect(result.type).toBe("beads");
58
- expect(result.completed).toBe(5);
59
- expect(result.total).toBe(5);
60
- });
61
- it("returns none when bd command fails", () => {
62
- mockExistsSync.mockImplementation(path => {
63
- if (typeof path === "string" && path.endsWith(".beads"))
64
- return true;
65
- return false;
66
- });
67
- mockExecSync.mockImplementation(() => {
68
- throw new Error("Command failed");
69
- });
70
- const result = getProgress(5, "2024-01-01T00:00:00.000Z");
71
- expect(result.type).toBe("none");
72
- });
73
- });
74
- describe("with todo.md workspace", () => {
75
- it("returns todo progress when todo.md exists", () => {
76
- mockExistsSync.mockImplementation(path => {
77
- if (typeof path === "string" && path.endsWith(".beads"))
78
- return false;
79
- if (typeof path === "string" && path.endsWith("todo.md"))
80
- return true;
81
- return false;
82
- });
83
- mockReadFileSync.mockReturnValue(`
84
- ### To do
85
- - [ ] Task 1
86
- - [ ] Task 2
87
- - [x] Task 3
88
- - [X] Task 4
89
-
90
- ### Done
91
- `);
92
- const result = getProgress(4, "2024-01-01T00:00:00.000Z");
93
- expect(result.type).toBe("todo");
94
- expect(result.completed).toBe(2); // 2 checked
95
- expect(result.total).toBe(4);
96
- });
97
- it("handles all unchecked items", () => {
98
- mockExistsSync.mockImplementation(path => {
99
- if (typeof path === "string" && path.endsWith(".beads"))
100
- return false;
101
- if (typeof path === "string" && path.endsWith("todo.md"))
102
- return true;
103
- return false;
104
- });
105
- mockReadFileSync.mockReturnValue(`
106
- - [ ] Task 1
107
- - [ ] Task 2
108
- - [ ] Task 3
109
- `);
110
- const result = getProgress(3, "2024-01-01T00:00:00.000Z");
111
- expect(result.type).toBe("todo");
112
- expect(result.completed).toBe(0);
113
- expect(result.total).toBe(3);
114
- });
115
- it("handles all checked items", () => {
116
- mockExistsSync.mockImplementation(path => {
117
- if (typeof path === "string" && path.endsWith(".beads"))
118
- return false;
119
- if (typeof path === "string" && path.endsWith("todo.md"))
120
- return true;
121
- return false;
122
- });
123
- mockReadFileSync.mockReturnValue(`
124
- - [x] Task 1
125
- - [X] Task 2
126
- `);
127
- const result = getProgress(2, "2024-01-01T00:00:00.000Z");
128
- expect(result.type).toBe("todo");
129
- expect(result.completed).toBe(2);
130
- expect(result.total).toBe(2);
131
- });
132
- it("handles empty todo file", () => {
133
- mockExistsSync.mockImplementation(path => {
134
- if (typeof path === "string" && path.endsWith(".beads"))
135
- return false;
136
- if (typeof path === "string" && path.endsWith("todo.md"))
137
- return true;
138
- return false;
139
- });
140
- mockReadFileSync.mockReturnValue("");
141
- const result = getProgress(0, "2024-01-01T00:00:00.000Z");
142
- expect(result.type).toBe("todo");
143
- expect(result.completed).toBe(0);
144
- expect(result.total).toBe(0);
145
- });
146
- });
147
- describe("with no workspace", () => {
148
- it("returns none when neither .beads nor todo.md exists", () => {
149
- mockExistsSync.mockReturnValue(false);
150
- const result = getProgress(0, "2024-01-01T00:00:00.000Z");
151
- expect(result.type).toBe("none");
152
- expect(result.completed).toBe(0);
153
- expect(result.total).toBe(0);
154
- });
155
- });
156
- });
157
- describe("captureStartupSnapshot", () => {
158
- beforeEach(() => {
159
- vi.clearAllMocks();
160
- vi.useFakeTimers();
161
- vi.setSystemTime(new Date("2024-06-15T10:30:00.000Z"));
162
- });
163
- afterEach(() => {
164
- vi.restoreAllMocks();
165
- vi.useRealTimers();
166
- });
167
- it("returns snapshot when .beads exists", () => {
168
- mockExistsSync.mockImplementation(path => {
169
- if (typeof path === "string" && path.endsWith(".beads"))
170
- return true;
171
- return false;
172
- });
173
- mockExecSync.mockReturnValueOnce("2").mockReturnValueOnce("1");
174
- const result = captureStartupSnapshot();
175
- expect(result).toEqual({
176
- initialCount: 3,
177
- timestamp: "2024-06-15T10:30:00.000Z",
178
- type: "beads",
179
- });
180
- });
181
- it("returns snapshot for todo.md workspace", () => {
182
- mockExistsSync.mockImplementation(path => {
183
- if (typeof path === "string" && path.endsWith(".beads"))
184
- return false;
185
- if (typeof path === "string" && path.endsWith("todo.md"))
186
- return true;
187
- return false;
188
- });
189
- mockReadFileSync.mockReturnValue(`
190
- - [ ] Task 1
191
- - [x] Task 2
192
- `);
193
- const result = captureStartupSnapshot();
194
- expect(result).toEqual({
195
- initialCount: 2,
196
- timestamp: "2024-06-15T10:30:00.000Z",
197
- type: "todo",
198
- });
199
- });
200
- it("returns undefined when neither .beads nor todo.md exists", () => {
201
- mockExistsSync.mockReturnValue(false);
202
- const result = captureStartupSnapshot();
203
- expect(result).toBeUndefined();
204
- });
205
- it("returns undefined when bd command fails", () => {
206
- mockExistsSync.mockImplementation(path => {
207
- if (typeof path === "string" && path.endsWith(".beads"))
208
- return true;
209
- return false;
210
- });
211
- mockExecSync.mockImplementation(() => {
212
- throw new Error("Command failed");
213
- });
214
- const result = captureStartupSnapshot();
215
- expect(result).toBeUndefined();
216
- });
217
- });
218
- //# sourceMappingURL=getProgress.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getProgress.test.js","sourceRoot":"","sources":["../../src/lib/getProgress.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Get the prompt content, falling back to templates if .ralph/prompt.md doesn't exist.
3
- * Uses the appropriate template based on the project setup:
4
- * - If .beads directory exists OR no .ralph/todo.md: use prompt-beads.md
5
- * - If .ralph/todo.md exists: use prompt-todos.md (todo-based workflow)
6
- */
7
- export declare const getPromptContent: () => string;
8
- //# sourceMappingURL=getPromptContent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPromptContent.d.ts","sourceRoot":"","sources":["../../src/lib/getPromptContent.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAwBnC,CAAA"}
@@ -1,31 +0,0 @@
1
- import { readFileSync, existsSync } from "fs";
2
- import { join, dirname } from "path";
3
- import { fileURLToPath } from "url";
4
- /**
5
- * Get the prompt content, falling back to templates if .ralph/prompt.md doesn't exist.
6
- * Uses the appropriate template based on the project setup:
7
- * - If .beads directory exists OR no .ralph/todo.md: use prompt-beads.md
8
- * - If .ralph/todo.md exists: use prompt-todos.md (todo-based workflow)
9
- */
10
- export const getPromptContent = () => {
11
- const __dirname = dirname(fileURLToPath(import.meta.url));
12
- const ralphDir = join(process.cwd(), ".ralph");
13
- const promptFile = join(ralphDir, "prompt.md");
14
- const todoFile = join(ralphDir, "todo.md");
15
- const beadsDir = join(process.cwd(), ".beads");
16
- const templatesDir = join(__dirname, "..", "..", "templates");
17
- // First, try to read from .ralph/prompt.md
18
- if (existsSync(promptFile)) {
19
- return readFileSync(promptFile, "utf-8");
20
- }
21
- // Fall back to templates based on project setup
22
- const useBeadsTemplate = existsSync(beadsDir) || !existsSync(todoFile);
23
- const templateFile = useBeadsTemplate ? "prompt-beads.md" : "prompt-todos.md";
24
- const templatePath = join(templatesDir, templateFile);
25
- if (existsSync(templatePath)) {
26
- return readFileSync(templatePath, "utf-8");
27
- }
28
- // Last resort: return a minimal prompt
29
- return "Work on the highest-priority task.";
30
- };
31
- //# sourceMappingURL=getPromptContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPromptContent.js","sourceRoot":"","sources":["../../src/lib/getPromptContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IAE7D,2CAA2C;IAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IAErD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,uCAAuC;IACvC,OAAO,oCAAoC,CAAA;AAC7C,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- /** Get the current terminal size with sensible defaults. */
2
- export declare function getTerminalSize(
3
- /** The stdout object from Ink's useStdout hook */
4
- stdout: any): {
5
- columns: any;
6
- rows: any;
7
- };
8
- //# sourceMappingURL=getTerminalSize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTerminalSize.d.ts","sourceRoot":"","sources":["../../src/lib/getTerminalSize.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,wBAAgB,eAAe;AAC7B,kDAAkD;AAClD,MAAM,EAAE,GAAG;;;EAMZ"}
@@ -1,10 +0,0 @@
1
- /** Get the current terminal size with sensible defaults. */
2
- export function getTerminalSize(
3
- /** The stdout object from Ink's useStdout hook */
4
- stdout) {
5
- return {
6
- columns: stdout?.columns ?? 80,
7
- rows: stdout?.rows ?? 24,
8
- };
9
- }
10
- //# sourceMappingURL=getTerminalSize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTerminalSize.js","sourceRoot":"","sources":["../../src/lib/getTerminalSize.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,UAAU,eAAe;AAC7B,kDAAkD;AAClD,MAAW;IAEX,OAAO;QACL,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE;QAC9B,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE;KACzB,CAAA;AACH,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { ProgressData } from "./types.js";
2
- /** Get progress for a todo.md workspace by counting checked and unchecked items. */
3
- export declare const getTodoProgress: () => ProgressData;
4
- //# sourceMappingURL=getTodoProgress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTodoProgress.d.ts","sourceRoot":"","sources":["../../src/lib/getTodoProgress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,qFAAqF;AACrF,eAAO,MAAM,eAAe,QAAO,YAkBlC,CAAA"}
@@ -1,22 +0,0 @@
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
- /** Get progress for a todo.md workspace by counting checked and unchecked items. */
6
- export const getTodoProgress = () => {
7
- try {
8
- const content = readFileSync(todoFile, "utf-8");
9
- // Count unchecked items: - [ ]
10
- const uncheckedMatches = content.match(/- \[ \]/g);
11
- const unchecked = uncheckedMatches ? uncheckedMatches.length : 0;
12
- // Count checked items: - [x] or - [X]
13
- const checkedMatches = content.match(/- \[[xX]\]/g);
14
- const checked = checkedMatches ? checkedMatches.length : 0;
15
- const total = unchecked + checked;
16
- return { type: "todo", completed: checked, total };
17
- }
18
- catch {
19
- return { type: "none", completed: 0, total: 0 };
20
- }
21
- };
22
- //# sourceMappingURL=getTodoProgress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTodoProgress.js","sourceRoot":"","sources":["../../src/lib/getTodoProgress.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,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE/C,+BAA+B;QAC/B,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,sCAAsC;QACtC,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,MAAM,KAAK,GAAG,SAAS,GAAG,OAAO,CAAA;QAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACjD,CAAC;AACH,CAAC,CAAA"}
@@ -1,7 +0,0 @@
1
- /** Inserts a todo item into the content, right after the "To do" header. */
2
- export declare const insertTodo: (
3
- /** The current content of the todo file */
4
- content: string,
5
- /** The description of the todo item to insert */
6
- description: string) => string;
7
- //# sourceMappingURL=insertTodo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insertTodo.d.ts","sourceRoot":"","sources":["../../src/lib/insertTodo.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,eAAO,MAAM,UAAU;AACrB,2CAA2C;AAC3C,SAAS,MAAM;AACf,iDAAiD;AACjD,aAAa,MAAM,KAClB,MAmBF,CAAA"}