@herbcaudill/ralph 1.0.1 → 1.0.2

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 (351) hide show
  1. package/dist/index.js +2401 -6
  2. package/dist/index.js.map +1 -1
  3. package/package.json +9 -8
  4. package/templates/core-prompt.md +3 -3
  5. package/templates/workflow.md +1 -1
  6. package/dist/cli.d.ts +0 -3
  7. package/dist/cli.d.ts.map +0 -1
  8. package/dist/cli.js +0 -102
  9. package/dist/cli.js.map +0 -1
  10. package/dist/components/App.d.ts +0 -17
  11. package/dist/components/App.d.ts.map +0 -1
  12. package/dist/components/App.js +0 -18
  13. package/dist/components/App.js.map +0 -1
  14. package/dist/components/EnhancedTextInput.d.ts +0 -22
  15. package/dist/components/EnhancedTextInput.d.ts.map +0 -1
  16. package/dist/components/EnhancedTextInput.js +0 -130
  17. package/dist/components/EnhancedTextInput.js.map +0 -1
  18. package/dist/components/EnhancedTextInput.test.d.ts +0 -2
  19. package/dist/components/EnhancedTextInput.test.d.ts.map +0 -1
  20. package/dist/components/EnhancedTextInput.test.js +0 -99
  21. package/dist/components/EnhancedTextInput.test.js.map +0 -1
  22. package/dist/components/EventDisplay.d.ts +0 -14
  23. package/dist/components/EventDisplay.d.ts.map +0 -1
  24. package/dist/components/EventDisplay.js +0 -91
  25. package/dist/components/EventDisplay.js.map +0 -1
  26. package/dist/components/EventDisplay.replay.test.d.ts +0 -2
  27. package/dist/components/EventDisplay.replay.test.d.ts.map +0 -1
  28. package/dist/components/EventDisplay.replay.test.js +0 -379
  29. package/dist/components/EventDisplay.replay.test.js.map +0 -1
  30. package/dist/components/EventDisplay.test.d.ts +0 -2
  31. package/dist/components/EventDisplay.test.d.ts.map +0 -1
  32. package/dist/components/EventDisplay.test.js +0 -349
  33. package/dist/components/EventDisplay.test.js.map +0 -1
  34. package/dist/components/FullScreenLayout.d.ts +0 -15
  35. package/dist/components/FullScreenLayout.d.ts.map +0 -1
  36. package/dist/components/FullScreenLayout.js +0 -20
  37. package/dist/components/FullScreenLayout.js.map +0 -1
  38. package/dist/components/Header.d.ts +0 -10
  39. package/dist/components/Header.d.ts.map +0 -1
  40. package/dist/components/Header.js +0 -22
  41. package/dist/components/Header.js.map +0 -1
  42. package/dist/components/Header.test.d.ts +0 -2
  43. package/dist/components/Header.test.d.ts.map +0 -1
  44. package/dist/components/Header.test.js +0 -27
  45. package/dist/components/Header.test.js.map +0 -1
  46. package/dist/components/InitRalph.d.ts +0 -8
  47. package/dist/components/InitRalph.d.ts.map +0 -1
  48. package/dist/components/InitRalph.js +0 -136
  49. package/dist/components/InitRalph.js.map +0 -1
  50. package/dist/components/IterationRunner.d.ts +0 -10
  51. package/dist/components/IterationRunner.d.ts.map +0 -1
  52. package/dist/components/IterationRunner.js +0 -536
  53. package/dist/components/IterationRunner.js.map +0 -1
  54. package/dist/components/IterationRunner.test.d.ts +0 -46
  55. package/dist/components/IterationRunner.test.d.ts.map +0 -1
  56. package/dist/components/IterationRunner.test.js +0 -69
  57. package/dist/components/IterationRunner.test.js.map +0 -1
  58. package/dist/components/IterationRunner.types.d.ts +0 -30
  59. package/dist/components/IterationRunner.types.d.ts.map +0 -1
  60. package/dist/components/IterationRunner.types.js +0 -2
  61. package/dist/components/IterationRunner.types.js.map +0 -1
  62. package/dist/components/JsonOutput.d.ts +0 -13
  63. package/dist/components/JsonOutput.d.ts.map +0 -1
  64. package/dist/components/JsonOutput.js +0 -269
  65. package/dist/components/JsonOutput.js.map +0 -1
  66. package/dist/components/JsonOutput.test.d.ts +0 -2
  67. package/dist/components/JsonOutput.test.d.ts.map +0 -1
  68. package/dist/components/JsonOutput.test.js +0 -39
  69. package/dist/components/JsonOutput.test.js.map +0 -1
  70. package/dist/components/ProgressBar.d.ts +0 -18
  71. package/dist/components/ProgressBar.d.ts.map +0 -1
  72. package/dist/components/ProgressBar.js +0 -30
  73. package/dist/components/ProgressBar.js.map +0 -1
  74. package/dist/components/ProgressBar.test.d.ts +0 -2
  75. package/dist/components/ProgressBar.test.d.ts.map +0 -1
  76. package/dist/components/ProgressBar.test.js +0 -55
  77. package/dist/components/ProgressBar.test.js.map +0 -1
  78. package/dist/components/ReplayLog.d.ts +0 -7
  79. package/dist/components/ReplayLog.d.ts.map +0 -1
  80. package/dist/components/ReplayLog.js +0 -57
  81. package/dist/components/ReplayLog.js.map +0 -1
  82. package/dist/components/StreamingText.d.ts +0 -11
  83. package/dist/components/StreamingText.d.ts.map +0 -1
  84. package/dist/components/StreamingText.js +0 -37
  85. package/dist/components/StreamingText.js.map +0 -1
  86. package/dist/components/StreamingText.test.d.ts +0 -2
  87. package/dist/components/StreamingText.test.d.ts.map +0 -1
  88. package/dist/components/StreamingText.test.js +0 -125
  89. package/dist/components/StreamingText.test.js.map +0 -1
  90. package/dist/components/ToolUse.d.ts +0 -16
  91. package/dist/components/ToolUse.d.ts.map +0 -1
  92. package/dist/components/ToolUse.js +0 -11
  93. package/dist/components/ToolUse.js.map +0 -1
  94. package/dist/components/ToolUse.test.d.ts +0 -2
  95. package/dist/components/ToolUse.test.d.ts.map +0 -1
  96. package/dist/components/ToolUse.test.js +0 -43
  97. package/dist/components/ToolUse.test.js.map +0 -1
  98. package/dist/components/blocksToLines.d.ts +0 -6
  99. package/dist/components/blocksToLines.d.ts.map +0 -1
  100. package/dist/components/blocksToLines.js +0 -15
  101. package/dist/components/blocksToLines.js.map +0 -1
  102. package/dist/components/eventToBlocks.d.ts +0 -22
  103. package/dist/components/eventToBlocks.d.ts.map +0 -1
  104. package/dist/components/eventToBlocks.js +0 -166
  105. package/dist/components/eventToBlocks.js.map +0 -1
  106. package/dist/components/eventToBlocks.test.d.ts +0 -2
  107. package/dist/components/eventToBlocks.test.d.ts.map +0 -1
  108. package/dist/components/eventToBlocks.test.js +0 -466
  109. package/dist/components/eventToBlocks.test.js.map +0 -1
  110. package/dist/components/findNextWordBoundary.d.ts +0 -10
  111. package/dist/components/findNextWordBoundary.d.ts.map +0 -1
  112. package/dist/components/findNextWordBoundary.js +0 -23
  113. package/dist/components/findNextWordBoundary.js.map +0 -1
  114. package/dist/components/findPreviousWordBoundary.d.ts +0 -10
  115. package/dist/components/findPreviousWordBoundary.d.ts.map +0 -1
  116. package/dist/components/findPreviousWordBoundary.js +0 -23
  117. package/dist/components/findPreviousWordBoundary.js.map +0 -1
  118. package/dist/components/processEvents.d.ts +0 -11
  119. package/dist/components/processEvents.d.ts.map +0 -1
  120. package/dist/components/processEvents.js +0 -87
  121. package/dist/components/processEvents.js.map +0 -1
  122. package/dist/components/renderStaticItem.d.ts +0 -7
  123. package/dist/components/renderStaticItem.d.ts.map +0 -1
  124. package/dist/components/renderStaticItem.js +0 -23
  125. package/dist/components/renderStaticItem.js.map +0 -1
  126. package/dist/components/replay.d.ts +0 -5
  127. package/dist/components/replay.d.ts.map +0 -1
  128. package/dist/components/replay.js +0 -49
  129. package/dist/components/replay.js.map +0 -1
  130. package/dist/components/test-helpers/ControlledInput.d.ts +0 -14
  131. package/dist/components/test-helpers/ControlledInput.d.ts.map +0 -1
  132. package/dist/components/test-helpers/ControlledInput.js +0 -15
  133. package/dist/components/test-helpers/ControlledInput.js.map +0 -1
  134. package/dist/components/useContentHeight.d.ts +0 -9
  135. package/dist/components/useContentHeight.d.ts.map +0 -1
  136. package/dist/components/useContentHeight.js +0 -16
  137. package/dist/components/useContentHeight.js.map +0 -1
  138. package/dist/index.d.ts +0 -3
  139. package/dist/index.d.ts.map +0 -1
  140. package/dist/lib/MessageQueue.d.ts +0 -33
  141. package/dist/lib/MessageQueue.d.ts.map +0 -1
  142. package/dist/lib/MessageQueue.js +0 -96
  143. package/dist/lib/MessageQueue.js.map +0 -1
  144. package/dist/lib/MessageQueue.test.d.ts +0 -2
  145. package/dist/lib/MessageQueue.test.d.ts.map +0 -1
  146. package/dist/lib/MessageQueue.test.js +0 -224
  147. package/dist/lib/MessageQueue.test.js.map +0 -1
  148. package/dist/lib/StdinCommandHandler.d.ts +0 -48
  149. package/dist/lib/StdinCommandHandler.d.ts.map +0 -1
  150. package/dist/lib/StdinCommandHandler.js +0 -95
  151. package/dist/lib/StdinCommandHandler.js.map +0 -1
  152. package/dist/lib/StdinCommandHandler.test.d.ts +0 -2
  153. package/dist/lib/StdinCommandHandler.test.d.ts.map +0 -1
  154. package/dist/lib/StdinCommandHandler.test.js +0 -93
  155. package/dist/lib/StdinCommandHandler.test.js.map +0 -1
  156. package/dist/lib/WorktreeManager.d.ts +0 -114
  157. package/dist/lib/WorktreeManager.d.ts.map +0 -1
  158. package/dist/lib/WorktreeManager.js +0 -350
  159. package/dist/lib/WorktreeManager.js.map +0 -1
  160. package/dist/lib/WorktreeManager.test.d.ts +0 -2
  161. package/dist/lib/WorktreeManager.test.d.ts.map +0 -1
  162. package/dist/lib/WorktreeManager.test.js +0 -261
  163. package/dist/lib/WorktreeManager.test.js.map +0 -1
  164. package/dist/lib/addTodo.d.ts +0 -11
  165. package/dist/lib/addTodo.d.ts.map +0 -1
  166. package/dist/lib/addTodo.js +0 -51
  167. package/dist/lib/addTodo.js.map +0 -1
  168. package/dist/lib/beadsClient.d.ts +0 -46
  169. package/dist/lib/beadsClient.d.ts.map +0 -1
  170. package/dist/lib/beadsClient.js +0 -172
  171. package/dist/lib/beadsClient.js.map +0 -1
  172. package/dist/lib/captureBeadsSnapshot.d.ts +0 -4
  173. package/dist/lib/captureBeadsSnapshot.d.ts.map +0 -1
  174. package/dist/lib/captureBeadsSnapshot.js +0 -24
  175. package/dist/lib/captureBeadsSnapshot.js.map +0 -1
  176. package/dist/lib/captureStartupSnapshot.d.ts +0 -10
  177. package/dist/lib/captureStartupSnapshot.d.ts.map +0 -1
  178. package/dist/lib/captureStartupSnapshot.js +0 -29
  179. package/dist/lib/captureStartupSnapshot.js.map +0 -1
  180. package/dist/lib/captureTodoSnapshot.d.ts +0 -4
  181. package/dist/lib/captureTodoSnapshot.d.ts.map +0 -1
  182. package/dist/lib/captureTodoSnapshot.js +0 -24
  183. package/dist/lib/captureTodoSnapshot.js.map +0 -1
  184. package/dist/lib/copyTemplates.d.ts +0 -22
  185. package/dist/lib/copyTemplates.d.ts.map +0 -1
  186. package/dist/lib/copyTemplates.js +0 -32
  187. package/dist/lib/copyTemplates.js.map +0 -1
  188. package/dist/lib/createStdinCommandHandler.d.ts +0 -28
  189. package/dist/lib/createStdinCommandHandler.d.ts.map +0 -1
  190. package/dist/lib/createStdinCommandHandler.js +0 -67
  191. package/dist/lib/createStdinCommandHandler.js.map +0 -1
  192. package/dist/lib/createUserMessage.d.ts +0 -6
  193. package/dist/lib/createUserMessage.d.ts.map +0 -1
  194. package/dist/lib/createUserMessage.js +0 -13
  195. package/dist/lib/createUserMessage.js.map +0 -1
  196. package/dist/lib/debug.d.ts +0 -19
  197. package/dist/lib/debug.d.ts.map +0 -1
  198. package/dist/lib/debug.js +0 -54
  199. package/dist/lib/debug.js.map +0 -1
  200. package/dist/lib/findMaxLogNumber.d.ts +0 -6
  201. package/dist/lib/findMaxLogNumber.d.ts.map +0 -1
  202. package/dist/lib/findMaxLogNumber.js +0 -26
  203. package/dist/lib/findMaxLogNumber.js.map +0 -1
  204. package/dist/lib/findMaxLogNumber.test.d.ts +0 -2
  205. package/dist/lib/findMaxLogNumber.test.d.ts.map +0 -1
  206. package/dist/lib/findMaxLogNumber.test.js +0 -39
  207. package/dist/lib/findMaxLogNumber.test.js.map +0 -1
  208. package/dist/lib/formatContentBlock.d.ts +0 -6
  209. package/dist/lib/formatContentBlock.d.ts.map +0 -1
  210. package/dist/lib/formatContentBlock.js +0 -18
  211. package/dist/lib/formatContentBlock.js.map +0 -1
  212. package/dist/lib/formatIterationHeader.d.ts +0 -5
  213. package/dist/lib/formatIterationHeader.d.ts.map +0 -1
  214. package/dist/lib/formatIterationHeader.js +0 -8
  215. package/dist/lib/formatIterationHeader.js.map +0 -1
  216. package/dist/lib/formatText.d.ts +0 -5
  217. package/dist/lib/formatText.d.ts.map +0 -1
  218. package/dist/lib/formatText.js +0 -33
  219. package/dist/lib/formatText.js.map +0 -1
  220. package/dist/lib/formatToolUse.d.ts +0 -7
  221. package/dist/lib/formatToolUse.d.ts.map +0 -1
  222. package/dist/lib/formatToolUse.js +0 -14
  223. package/dist/lib/formatToolUse.js.map +0 -1
  224. package/dist/lib/formatUserMessage.d.ts +0 -5
  225. package/dist/lib/formatUserMessage.d.ts.map +0 -1
  226. package/dist/lib/formatUserMessage.js +0 -8
  227. package/dist/lib/formatUserMessage.js.map +0 -1
  228. package/dist/lib/getBaseCwd.d.ts +0 -6
  229. package/dist/lib/getBaseCwd.d.ts.map +0 -1
  230. package/dist/lib/getBaseCwd.js +0 -6
  231. package/dist/lib/getBaseCwd.js.map +0 -1
  232. package/dist/lib/getBeadsProgress.d.ts +0 -8
  233. package/dist/lib/getBeadsProgress.d.ts.map +0 -1
  234. package/dist/lib/getBeadsProgress.js +0 -35
  235. package/dist/lib/getBeadsProgress.js.map +0 -1
  236. package/dist/lib/getClaudeVersion.d.ts +0 -6
  237. package/dist/lib/getClaudeVersion.d.ts.map +0 -1
  238. package/dist/lib/getClaudeVersion.js +0 -21
  239. package/dist/lib/getClaudeVersion.js.map +0 -1
  240. package/dist/lib/getClaudeVersion.test.d.ts +0 -2
  241. package/dist/lib/getClaudeVersion.test.d.ts.map +0 -1
  242. package/dist/lib/getClaudeVersion.test.js +0 -39
  243. package/dist/lib/getClaudeVersion.test.js.map +0 -1
  244. package/dist/lib/getDefaultIterations.d.ts +0 -6
  245. package/dist/lib/getDefaultIterations.d.ts.map +0 -1
  246. package/dist/lib/getDefaultIterations.js +0 -14
  247. package/dist/lib/getDefaultIterations.js.map +0 -1
  248. package/dist/lib/getDefaultIterations.test.d.ts +0 -2
  249. package/dist/lib/getDefaultIterations.test.d.ts.map +0 -1
  250. package/dist/lib/getDefaultIterations.test.js +0 -39
  251. package/dist/lib/getDefaultIterations.test.js.map +0 -1
  252. package/dist/lib/getLatestLogFile.d.ts +0 -6
  253. package/dist/lib/getLatestLogFile.d.ts.map +0 -1
  254. package/dist/lib/getLatestLogFile.js +0 -15
  255. package/dist/lib/getLatestLogFile.js.map +0 -1
  256. package/dist/lib/getNextLogFile.d.ts +0 -7
  257. package/dist/lib/getNextLogFile.d.ts.map +0 -1
  258. package/dist/lib/getNextLogFile.js +0 -18
  259. package/dist/lib/getNextLogFile.js.map +0 -1
  260. package/dist/lib/getNextLogFile.test.d.ts +0 -2
  261. package/dist/lib/getNextLogFile.test.d.ts.map +0 -1
  262. package/dist/lib/getNextLogFile.test.js +0 -66
  263. package/dist/lib/getNextLogFile.test.js.map +0 -1
  264. package/dist/lib/getOpenIssueCount.d.ts +0 -6
  265. package/dist/lib/getOpenIssueCount.d.ts.map +0 -1
  266. package/dist/lib/getOpenIssueCount.js +0 -19
  267. package/dist/lib/getOpenIssueCount.js.map +0 -1
  268. package/dist/lib/getOpenIssueCount.test.d.ts +0 -2
  269. package/dist/lib/getOpenIssueCount.test.d.ts.map +0 -1
  270. package/dist/lib/getOpenIssueCount.test.js +0 -31
  271. package/dist/lib/getOpenIssueCount.test.js.map +0 -1
  272. package/dist/lib/getProgress.d.ts +0 -14
  273. package/dist/lib/getProgress.d.ts.map +0 -1
  274. package/dist/lib/getProgress.js +0 -30
  275. package/dist/lib/getProgress.js.map +0 -1
  276. package/dist/lib/getProgress.test.d.ts +0 -2
  277. package/dist/lib/getProgress.test.d.ts.map +0 -1
  278. package/dist/lib/getProgress.test.js +0 -218
  279. package/dist/lib/getProgress.test.js.map +0 -1
  280. package/dist/lib/getPromptContent.d.ts +0 -8
  281. package/dist/lib/getPromptContent.d.ts.map +0 -1
  282. package/dist/lib/getPromptContent.js +0 -31
  283. package/dist/lib/getPromptContent.js.map +0 -1
  284. package/dist/lib/getTerminalSize.d.ts +0 -8
  285. package/dist/lib/getTerminalSize.d.ts.map +0 -1
  286. package/dist/lib/getTerminalSize.js +0 -10
  287. package/dist/lib/getTerminalSize.js.map +0 -1
  288. package/dist/lib/getTodoProgress.d.ts +0 -4
  289. package/dist/lib/getTodoProgress.d.ts.map +0 -1
  290. package/dist/lib/getTodoProgress.js +0 -22
  291. package/dist/lib/getTodoProgress.js.map +0 -1
  292. package/dist/lib/insertTodo.d.ts +0 -7
  293. package/dist/lib/insertTodo.d.ts.map +0 -1
  294. package/dist/lib/insertTodo.js +0 -22
  295. package/dist/lib/insertTodo.js.map +0 -1
  296. package/dist/lib/outputEvent.d.ts +0 -5
  297. package/dist/lib/outputEvent.d.ts.map +0 -1
  298. package/dist/lib/outputEvent.js +0 -7
  299. package/dist/lib/outputEvent.js.map +0 -1
  300. package/dist/lib/parseStdinCommand.d.ts +0 -25
  301. package/dist/lib/parseStdinCommand.d.ts.map +0 -1
  302. package/dist/lib/parseStdinCommand.js +0 -43
  303. package/dist/lib/parseStdinCommand.js.map +0 -1
  304. package/dist/lib/parseStdinCommand.test.d.ts +0 -2
  305. package/dist/lib/parseStdinCommand.test.d.ts.map +0 -1
  306. package/dist/lib/parseStdinCommand.test.js +0 -93
  307. package/dist/lib/parseStdinCommand.test.js.map +0 -1
  308. package/dist/lib/parseTaskLifecycle.d.ts +0 -18
  309. package/dist/lib/parseTaskLifecycle.d.ts.map +0 -1
  310. package/dist/lib/parseTaskLifecycle.js +0 -30
  311. package/dist/lib/parseTaskLifecycle.js.map +0 -1
  312. package/dist/lib/parseTaskLifecycle.test.d.ts +0 -2
  313. package/dist/lib/parseTaskLifecycle.test.d.ts.map +0 -1
  314. package/dist/lib/parseTaskLifecycle.test.js +0 -122
  315. package/dist/lib/parseTaskLifecycle.test.js.map +0 -1
  316. package/dist/lib/parseWorktreeFromBranch.d.ts +0 -13
  317. package/dist/lib/parseWorktreeFromBranch.d.ts.map +0 -1
  318. package/dist/lib/parseWorktreeFromBranch.js +0 -19
  319. package/dist/lib/parseWorktreeFromBranch.js.map +0 -1
  320. package/dist/lib/processEvents.d.ts +0 -12
  321. package/dist/lib/processEvents.d.ts.map +0 -1
  322. package/dist/lib/processEvents.js +0 -113
  323. package/dist/lib/processEvents.js.map +0 -1
  324. package/dist/lib/rel.d.ts +0 -8
  325. package/dist/lib/rel.d.ts.map +0 -1
  326. package/dist/lib/rel.js +0 -19
  327. package/dist/lib/rel.js.map +0 -1
  328. package/dist/lib/rel.test.d.ts +0 -2
  329. package/dist/lib/rel.test.d.ts.map +0 -1
  330. package/dist/lib/rel.test.js +0 -51
  331. package/dist/lib/rel.test.js.map +0 -1
  332. package/dist/lib/sdkMessageToEvent.d.ts +0 -6
  333. package/dist/lib/sdkMessageToEvent.d.ts.map +0 -1
  334. package/dist/lib/sdkMessageToEvent.js +0 -12
  335. package/dist/lib/sdkMessageToEvent.js.map +0 -1
  336. package/dist/lib/shortenTempPaths.d.ts +0 -8
  337. package/dist/lib/shortenTempPaths.d.ts.map +0 -1
  338. package/dist/lib/shortenTempPaths.js +0 -12
  339. package/dist/lib/shortenTempPaths.js.map +0 -1
  340. package/dist/lib/shortenTempPaths.test.d.ts +0 -2
  341. package/dist/lib/shortenTempPaths.test.d.ts.map +0 -1
  342. package/dist/lib/shortenTempPaths.test.js +0 -46
  343. package/dist/lib/shortenTempPaths.test.js.map +0 -1
  344. package/dist/lib/types.d.ts +0 -19
  345. package/dist/lib/types.d.ts.map +0 -1
  346. package/dist/lib/types.js +0 -2
  347. package/dist/lib/types.js.map +0 -1
  348. package/dist/lib/useTerminalSize.d.ts +0 -6
  349. package/dist/lib/useTerminalSize.d.ts.map +0 -1
  350. package/dist/lib/useTerminalSize.js +0 -19
  351. package/dist/lib/useTerminalSize.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"InitRalph.js","sourceRoot":"","sources":["../../src/components/InitRalph.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- import { type IterationRunnerProps } from "./IterationRunner.types.js";
3
- /**
4
- * Orchestrates the iterative execution of Claude AI iterations.
5
- *
6
- * Spawns Claude CLI with prompts, captures streaming output, displays formatted UI,
7
- * and handles user input during iteration execution.
8
- */
9
- export declare const IterationRunner: ({ totalIterations, claudeVersion, ralphVersion, watch, agent, }: IterationRunnerProps) => React.JSX.Element;
10
- //# sourceMappingURL=IterationRunner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IterationRunner.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAuB1D,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAcvF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,iEAM7B,oBAAoB,sBA0lBtB,CAAA"}
@@ -1,536 +0,0 @@
1
- import React, { useState, useEffect, useRef } from "react";
2
- import { Box, Text, useApp, Static, useInput } from "ink";
3
- import Spinner from "ink-spinner";
4
- import { EnhancedTextInput } from "./EnhancedTextInput.js";
5
- import { appendFileSync, writeFileSync, readFileSync, existsSync } from "fs";
6
- import { join, basename } from "path";
7
- import { query } from "@anthropic-ai/claude-agent-sdk";
8
- import { addTodo } from "../lib/addTodo.js";
9
- import { getProgress } from "../lib/getProgress.js";
10
- import { captureStartupSnapshot } from "../lib/captureStartupSnapshot.js";
11
- import { ProgressBar } from "./ProgressBar.js";
12
- import { watchForNewIssues } from "../lib/beadsClient.js";
13
- import { MessageQueue, createUserMessage } from "../lib/MessageQueue.js";
14
- import { createDebugLogger } from "../lib/debug.js";
15
- import { useTerminalSize } from "../lib/useTerminalSize.js";
16
- import { getNextLogFile } from "../lib/getNextLogFile.js";
17
- import { parseTaskLifecycleEvent } from "../lib/parseTaskLifecycle.js";
18
- import { getPromptContent } from "../lib/getPromptContent.js";
19
- import { sdkMessageToEvent } from "../lib/sdkMessageToEvent.js";
20
- import { processEvents } from "../lib/processEvents.js";
21
- import { renderStaticItem } from "./renderStaticItem.js";
22
- /** Debug logger for iteration lifecycle events */
23
- const log = createDebugLogger("iteration");
24
- /** The .ralph directory path in the current working directory */
25
- const ralphDir = join(process.cwd(), ".ralph");
26
- /** Path to the todo.md file in the .ralph directory */
27
- const todoFile = join(ralphDir, "todo.md");
28
- /** The name of the current repository (basename of cwd) */
29
- const repoName = basename(process.cwd());
30
- /**
31
- * Orchestrates the iterative execution of Claude AI iterations.
32
- *
33
- * Spawns Claude CLI with prompts, captures streaming output, displays formatted UI,
34
- * and handles user input during iteration execution.
35
- */
36
- export const IterationRunner = ({ totalIterations, claudeVersion, ralphVersion, watch, agent, }) => {
37
- const { exit } = useApp();
38
- const { columns } = useTerminalSize();
39
- const [currentIteration, setCurrentIteration] = useState(1);
40
- const [events, setEvents] = useState([]);
41
- const eventsRef = useRef([]);
42
- const [error, setError] = useState();
43
- const [isRunning, setIsRunning] = useState(false);
44
- const [isAddingTodo, setIsAddingTodo] = useState(false);
45
- const [todoText, setTodoText] = useState("");
46
- const [todoMessage, setTodoMessage] = useState(null);
47
- const [userMessageText, setUserMessageText] = useState("");
48
- const [userMessageStatus, setUserMessageStatus] = useState(null);
49
- const [hasTodoFile, setHasTodoFile] = useState(false);
50
- const [startupSnapshot] = useState(() => captureStartupSnapshot());
51
- const [progressData, setProgressData] = useState(() => {
52
- const snapshot = captureStartupSnapshot();
53
- if (!snapshot)
54
- return { type: "none", completed: 0, total: 0 };
55
- return { type: snapshot.type, completed: 0, total: snapshot.initialCount };
56
- });
57
- const [isWatching, setIsWatching] = useState(false);
58
- const [detectedIssue, setDetectedIssue] = useState(null);
59
- const watchCleanupRef = useRef(null);
60
- const [watchCycle, setWatchCycle] = useState(0); // Increments to force useEffect re-run
61
- const [stopAfterCurrent, setStopAfterCurrent] = useState(false); // Stop gracefully after current iteration
62
- const stopAfterCurrentRef = useRef(false); // Ref to access in async callbacks
63
- const [isPaused, setIsPaused] = useState(false); // Pause after current iteration completes
64
- const isPausedRef = useRef(false); // Ref to access in async callbacks
65
- const [currentTaskId, setCurrentTaskId] = useState(null);
66
- const [currentTaskTitle, setCurrentTaskTitle] = useState(null);
67
- // Track static items that have been rendered (for Ink's Static component)
68
- const [staticItems, setStaticItems] = useState([
69
- { type: "header", claudeVersion, ralphVersion, key: "header" },
70
- ]);
71
- const renderedBlocksRef = useRef(new Set());
72
- const lastIterationRef = useRef(0);
73
- // Message queue for sending user messages to Claude while running
74
- const messageQueueRef = useRef(null);
75
- // Log file path for this run (set once at startup, persisted across iterations)
76
- const logFileRef = useRef(null);
77
- /** Whether stdin supports raw mode (required for keyboard input handling) */
78
- const stdinSupportsRawMode = process.stdin.isTTY === true;
79
- /**
80
- * Handle adding a new todo when Ctrl-T is pressed.
81
- */
82
- const handleTodoSubmit = (
83
- /** The todo text to add */
84
- text) => {
85
- const trimmed = text.trim();
86
- if (!trimmed) {
87
- setIsAddingTodo(false);
88
- setTodoText("");
89
- return;
90
- }
91
- try {
92
- addTodo(trimmed);
93
- setTodoMessage({ type: "success", text: "✅ added" });
94
- setTodoText("");
95
- setIsAddingTodo(false);
96
- // Clear success message after 2 seconds
97
- setTimeout(() => setTodoMessage(null), 2000);
98
- }
99
- catch (err) {
100
- setTodoMessage({
101
- type: "error",
102
- text: `Failed to add todo: ${err instanceof Error ? err.message : String(err)}`,
103
- });
104
- setTodoText("");
105
- setIsAddingTodo(false);
106
- // Clear error message after 5 seconds
107
- setTimeout(() => setTodoMessage(null), 5000);
108
- }
109
- };
110
- /**
111
- * Handle submitting a user message to Claude during iteration.
112
- */
113
- const handleUserMessageSubmit = (
114
- /** The message text from the user */
115
- text) => {
116
- const trimmed = text.trim();
117
- if (!trimmed) {
118
- setUserMessageText("");
119
- return;
120
- }
121
- // Send the message to Claude via the SDK's streamInput
122
- if (messageQueueRef.current && isRunning) {
123
- const userMessage = createUserMessage(trimmed);
124
- messageQueueRef.current.push(userMessage);
125
- // Also add the user message to events for display
126
- const displayEvent = {
127
- type: "user",
128
- message: {
129
- id: `user-injected-${Date.now()}`,
130
- role: "user",
131
- content: [{ type: "text", text: trimmed }],
132
- },
133
- };
134
- setEvents(prev => [...prev, displayEvent]);
135
- // No confirmation message - the user message appears directly in the stream
136
- }
137
- else {
138
- setUserMessageStatus({
139
- type: "error",
140
- text: "Unable to send message - Claude is not running",
141
- });
142
- }
143
- setUserMessageText("");
144
- // Clear status message after 3 seconds
145
- setTimeout(() => setUserMessageStatus(null), 3000);
146
- };
147
- /**
148
- * Handle keyboard input for Ctrl-T (todo), Ctrl-S (stop), Ctrl-P (pause), and Escape (cancel).
149
- */
150
- useInput((
151
- /** The input character */
152
- input,
153
- /** The key information including modifiers */
154
- key) => {
155
- // Ctrl-T to start adding a todo (only if todo.md exists)
156
- if (key.ctrl && input === "t" && hasTodoFile) {
157
- setIsAddingTodo(true);
158
- setTodoText("");
159
- setTodoMessage(null);
160
- }
161
- // Ctrl-S to request stop after current iteration
162
- if (key.ctrl && input === "s" && isRunning && !stopAfterCurrent) {
163
- setStopAfterCurrent(true);
164
- }
165
- // Ctrl-P to toggle pause state
166
- if (key.ctrl && input === "p") {
167
- if (isPaused) {
168
- // Resume - if we were paused between iterations, trigger next iteration
169
- setIsPaused(false);
170
- if (!isRunning) {
171
- setTimeout(() => setCurrentIteration(i => i + 1), 100);
172
- }
173
- }
174
- else if (isRunning) {
175
- // Request pause after current iteration
176
- setIsPaused(true);
177
- }
178
- }
179
- // Escape to cancel todo input
180
- if (key.escape) {
181
- if (isAddingTodo) {
182
- // Cancel todo input
183
- setIsAddingTodo(false);
184
- setTodoText("");
185
- }
186
- }
187
- }, { isActive: stdinSupportsRawMode });
188
- // Keep ref in sync with events state for access in callbacks
189
- useEffect(() => {
190
- eventsRef.current = events;
191
- }, [events]);
192
- // Keep stopAfterCurrent ref in sync with state for access in async callbacks
193
- useEffect(() => {
194
- stopAfterCurrentRef.current = stopAfterCurrent;
195
- }, [stopAfterCurrent]);
196
- // Keep isPaused ref in sync with state for access in async callbacks
197
- useEffect(() => {
198
- isPausedRef.current = isPaused;
199
- }, [isPaused]);
200
- // Update progress data when iteration changes or running stops
201
- useEffect(() => {
202
- if (!isRunning && startupSnapshot) {
203
- setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
204
- }
205
- }, [currentIteration, isRunning, startupSnapshot]);
206
- // Poll progress data periodically while running to catch newly created/closed issues
207
- useEffect(() => {
208
- if (!isRunning || !startupSnapshot)
209
- return;
210
- const pollInterval = setInterval(() => {
211
- setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
212
- }, 5000); // Poll every 5 seconds
213
- return () => clearInterval(pollInterval);
214
- }, [isRunning, startupSnapshot]);
215
- // Watch for new issues when in watch mode
216
- useEffect(() => {
217
- if (!isWatching)
218
- return;
219
- // Start watching for new issues
220
- const cleanup = watchForNewIssues(issue => {
221
- setDetectedIssue(issue);
222
- // Refresh progress data to pick up the new issue
223
- // The timestamp-based counting will automatically include it
224
- if (startupSnapshot) {
225
- setProgressData(getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp));
226
- }
227
- // Brief pause to show the detected issue, then resume
228
- setTimeout(() => {
229
- setIsWatching(false);
230
- setDetectedIssue(null);
231
- // Reset rendered blocks for new cycle
232
- renderedBlocksRef.current.clear();
233
- // Increment round number when picking up new issue
234
- setCurrentIteration(i => i + 1);
235
- setWatchCycle(c => c + 1);
236
- }, 1500);
237
- });
238
- watchCleanupRef.current = cleanup;
239
- return () => {
240
- cleanup();
241
- watchCleanupRef.current = null;
242
- };
243
- }, [isWatching, startupSnapshot]);
244
- // Convert events to static items as they arrive
245
- useEffect(() => {
246
- const newItems = [];
247
- // Add iteration header if this is a new iteration
248
- if (currentIteration > lastIterationRef.current) {
249
- newItems.push({
250
- type: "iteration",
251
- iteration: currentIteration,
252
- key: `iteration-${currentIteration}`,
253
- });
254
- lastIterationRef.current = currentIteration;
255
- }
256
- // Process current events into blocks
257
- const blocks = processEvents(events);
258
- // Add any new blocks that haven't been rendered yet
259
- for (const block of blocks) {
260
- // Use the block's ID which is generated from message ID + block index
261
- // This ensures the same logical block always has the same key
262
- const blockKey = block.id;
263
- if (!renderedBlocksRef.current.has(blockKey)) {
264
- renderedBlocksRef.current.add(blockKey);
265
- newItems.push({ type: "block", block, key: blockKey });
266
- }
267
- }
268
- if (newItems.length > 0) {
269
- setStaticItems(prev => [...prev, ...newItems]);
270
- }
271
- }, [events, currentIteration]);
272
- useEffect(() => {
273
- if (currentIteration > totalIterations) {
274
- exit();
275
- return;
276
- }
277
- // Check if there are any tasks available before starting a round
278
- // This avoids running Claude unnecessarily when there's no work to do
279
- const currentProgress = startupSnapshot ?
280
- getProgress(startupSnapshot.initialCount, startupSnapshot.timestamp)
281
- : { type: "none", completed: 0, total: 0 };
282
- // All tasks are complete when completed equals total
283
- if (currentProgress.completed >= currentProgress.total && currentProgress.type !== "none") {
284
- // No tasks available - go straight to watching if enabled
285
- if (watch) {
286
- setIsWatching(true);
287
- }
288
- else {
289
- exit();
290
- process.exit(0);
291
- }
292
- return;
293
- }
294
- // Get or create the log file path for this run
295
- // Only create a new sequential log file on the first iteration
296
- if (!logFileRef.current) {
297
- logFileRef.current = getNextLogFile();
298
- writeFileSync(logFileRef.current, "");
299
- }
300
- const logFile = logFileRef.current;
301
- setEvents([]);
302
- // Read prompt (from .ralph/prompt.md or falling back to templates)
303
- const promptContent = getPromptContent();
304
- const todoExists = existsSync(todoFile);
305
- setHasTodoFile(todoExists);
306
- const todoContent = todoExists ? readFileSync(todoFile, "utf-8") : "";
307
- const roundHeader = `# Ralph, round ${currentIteration}\n\n`;
308
- const fullPrompt = todoContent ?
309
- `${roundHeader}${promptContent}\n\n## Current Todo List\n\n${todoContent}`
310
- : `${roundHeader}${promptContent}`;
311
- const abortController = new AbortController();
312
- setIsRunning(true);
313
- // Create a message queue for this iteration
314
- // This allows us to send user messages to Claude while it's running
315
- const messageQueue = new MessageQueue();
316
- messageQueueRef.current = messageQueue;
317
- // Push the initial prompt as the first message
318
- messageQueue.push(createUserMessage(fullPrompt));
319
- /**
320
- * Execute a query to Claude and handle the streaming response.
321
- */
322
- const runQuery = async () => {
323
- let finalResult = "";
324
- log(`Starting iteration ${currentIteration}`);
325
- try {
326
- log(`Beginning query() loop`);
327
- for await (const message of query({
328
- prompt: messageQueue,
329
- options: {
330
- abortController,
331
- permissionMode: "bypassPermissions",
332
- allowDangerouslySkipPermissions: true,
333
- includePartialMessages: true,
334
- env: {
335
- ...process.env,
336
- // Disable LSP plugins to avoid crashes when TypeScript LSP server errors
337
- ENABLE_LSP_TOOL: "0",
338
- // Signal that tests should use minimal reporters (dots)
339
- RALPH_QUIET: "1",
340
- },
341
- },
342
- })) {
343
- log(`Received message type: ${message.type}`);
344
- // Log raw message to file (JSONL format - one JSON object per line)
345
- appendFileSync(logFile, JSON.stringify(message) + "\n");
346
- // Convert to event format for display
347
- const event = sdkMessageToEvent(message);
348
- if (event) {
349
- setEvents(prev => [...prev, event]);
350
- }
351
- // Check for task lifecycle events in assistant messages
352
- if (message.type === "assistant") {
353
- const assistantMessage = message.message;
354
- const content = assistantMessage?.content;
355
- if (content) {
356
- for (const block of content) {
357
- if (block.type === "text" && typeof block.text === "string") {
358
- const taskInfo = parseTaskLifecycleEvent(block.text);
359
- if (taskInfo) {
360
- if (taskInfo.action === "starting") {
361
- setCurrentTaskId(taskInfo.taskId ?? null);
362
- setCurrentTaskTitle(taskInfo.taskTitle ?? null);
363
- log(`Task started: ${taskInfo.taskId}${taskInfo.taskTitle ? ` - ${taskInfo.taskTitle}` : ""}`);
364
- // Emit ralph_task_started event to log file
365
- const taskStartedEvent = {
366
- type: "ralph_task_started",
367
- taskId: taskInfo.taskId,
368
- taskTitle: taskInfo.taskTitle,
369
- iteration: currentIteration,
370
- };
371
- appendFileSync(logFile, JSON.stringify(taskStartedEvent) + "\n");
372
- }
373
- else if (taskInfo.action === "completed") {
374
- log(`Task completed: ${taskInfo.taskId}${taskInfo.taskTitle ? ` - ${taskInfo.taskTitle}` : ""}`);
375
- // Emit ralph_task_completed event to log file
376
- const taskCompletedEvent = {
377
- type: "ralph_task_completed",
378
- taskId: taskInfo.taskId,
379
- taskTitle: taskInfo.taskTitle,
380
- iteration: currentIteration,
381
- };
382
- appendFileSync(logFile, JSON.stringify(taskCompletedEvent) + "\n");
383
- // Keep tracking the same task until a new one starts
384
- }
385
- }
386
- }
387
- }
388
- }
389
- }
390
- // Capture the final result message
391
- if (message.type === "result" &&
392
- "result" in message &&
393
- typeof message.result === "string") {
394
- log(`Received result message`);
395
- finalResult = message.result;
396
- // Close the message queue immediately when we get the result.
397
- // This is critical to prevent hangs: the SDK's streamInput() needs
398
- // to complete iterating our queue before it can call endInput(),
399
- // which signals EOF to the CLI. If we wait until after the for-await
400
- // loop exits, we create a circular dependency that can cause hangs.
401
- log(`Closing message queue on result`);
402
- messageQueue.close();
403
- }
404
- }
405
- log(`query() loop completed normally`);
406
- setIsRunning(false);
407
- // MessageQueue should already be closed when we received the result message.
408
- // We ensure it's closed here as a safety measure (close() is idempotent).
409
- log(`Ensuring message queue is closed`);
410
- messageQueue.close();
411
- messageQueueRef.current = null;
412
- // Check for stop-after-current request
413
- if (stopAfterCurrentRef.current) {
414
- log(`Stop after current requested - exiting gracefully`);
415
- exit();
416
- process.exit(0);
417
- return;
418
- }
419
- // Check for completion
420
- if (finalResult.includes("<promise>COMPLETE</promise>")) {
421
- if (watch) {
422
- // Enter watch mode instead of exiting
423
- setIsWatching(true);
424
- }
425
- else {
426
- exit();
427
- process.exit(0);
428
- }
429
- return;
430
- }
431
- // Check for pause request - if paused, we wait for resume via Ctrl-P
432
- if (isPausedRef.current) {
433
- log(`Paused after iteration ${currentIteration}`);
434
- // Don't move to next iteration - the resume handler (Ctrl-P) will trigger it
435
- return;
436
- }
437
- // Move to next iteration
438
- setTimeout(() => setCurrentIteration(i => i + 1), 500);
439
- }
440
- catch (err) {
441
- log(`query() loop error: ${err instanceof Error ? err.message : String(err)}`);
442
- setIsRunning(false);
443
- log(`Closing message queue after error`);
444
- messageQueue.close();
445
- messageQueueRef.current = null;
446
- if (abortController.signal.aborted) {
447
- log(`Abort signal detected`);
448
- return; // Intentionally aborted
449
- }
450
- setError(`Error running Claude: ${err instanceof Error ? err.message : String(err)}`);
451
- setTimeout(() => {
452
- exit();
453
- process.exit(1);
454
- }, 100);
455
- }
456
- };
457
- runQuery();
458
- return () => {
459
- log(`Cleanup: aborting and closing queue for iteration ${currentIteration}`);
460
- abortController.abort();
461
- messageQueue.close();
462
- messageQueueRef.current = null;
463
- };
464
- }, [currentIteration, totalIterations, exit, watch, watchCycle]);
465
- if (error) {
466
- return (React.createElement(Box, { flexDirection: "column" },
467
- React.createElement(Text, { color: "red" }, error)));
468
- }
469
- return (React.createElement(Box, { flexDirection: "column" },
470
- React.createElement(Static, { items: staticItems }, item => (React.createElement(Box, { key: item.key, flexDirection: "column" }, renderStaticItem(item)))),
471
- isAddingTodo && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
472
- React.createElement(Text, { color: "yellow" }, "Todo:"),
473
- React.createElement(EnhancedTextInput, { value: todoText, onChange: setTodoText, onSubmit: handleTodoSubmit }),
474
- React.createElement(Text, { dimColor: true }, "(Enter to add, Esc to cancel)"))),
475
- todoMessage && (React.createElement(Box, { marginTop: 1 },
476
- React.createElement(Text, { color: todoMessage.type === "success" ? "green" : "red" }, todoMessage.text))),
477
- !isWatching && (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
478
- React.createElement(Text, { dimColor: true }, "─".repeat(columns)),
479
- React.createElement(Box, null,
480
- React.createElement(Text, { color: isRunning ? "yellow" : "gray" }, "\u276F "),
481
- React.createElement(EnhancedTextInput, { value: userMessageText, placeholder: isRunning ? "Type a message for Ralph..." : "Waiting for Ralph to start...", onChange: setUserMessageText, onSubmit: handleUserMessageSubmit, focus: isRunning && !isAddingTodo })),
482
- userMessageStatus && (React.createElement(Text, { color: userMessageStatus.type === "success" ? "green"
483
- : userMessageStatus.type === "error" ?
484
- "red"
485
- : "yellow" }, userMessageStatus.text)),
486
- React.createElement(Text, { dimColor: true }, "─".repeat(columns)))),
487
- React.createElement(Box, { marginTop: 1, justifyContent: "space-between" },
488
- isWatching ?
489
- detectedIssue ?
490
- React.createElement(Text, { color: "green" },
491
- React.createElement(Spinner, { type: "dots" }),
492
- " New issue: ",
493
- React.createElement(Text, { color: "yellow" }, detectedIssue.IssueID),
494
- detectedIssue.Title ? ` - ${detectedIssue.Title}` : "")
495
- : React.createElement(Text, { color: "cyan" },
496
- "Waiting for new issues ",
497
- React.createElement(Spinner, { type: "simpleDotsScrolling" }))
498
- : isPaused && !isRunning ?
499
- React.createElement(Text, { color: "magenta" },
500
- "\u23F8 Paused after round ",
501
- React.createElement(Text, { color: "yellow" }, currentIteration),
502
- " ",
503
- React.createElement(Text, { dimColor: true }, "(Ctrl-P to resume)"))
504
- : isRunning ?
505
- stopAfterCurrent ?
506
- React.createElement(Text, { color: "yellow" },
507
- React.createElement(Spinner, { type: "dots" }),
508
- " Stopping after round",
509
- " ",
510
- React.createElement(Text, { color: "yellow" }, currentIteration),
511
- " completes...",
512
- " ",
513
- React.createElement(Text, { dimColor: true }, "(Ctrl-S pressed)"))
514
- : isPaused ?
515
- React.createElement(Text, { color: "magenta" },
516
- React.createElement(Spinner, { type: "dots" }),
517
- " Pausing after round",
518
- " ",
519
- React.createElement(Text, { color: "yellow" }, currentIteration),
520
- " completes...",
521
- " ",
522
- React.createElement(Text, { dimColor: true }, "(Ctrl-P pressed)"))
523
- : React.createElement(Text, { color: "cyan" },
524
- React.createElement(Spinner, { type: "dots" }),
525
- " Running round ",
526
- React.createElement(Text, { color: "yellow" }, currentIteration),
527
- " ",
528
- "(max ",
529
- totalIterations,
530
- ")")
531
- : React.createElement(Text, { color: "cyan" },
532
- React.createElement(Spinner, { type: "simpleDotsScrolling" }),
533
- " Waiting for Ralph to start..."),
534
- progressData.type !== "none" && progressData.total > 0 && (React.createElement(ProgressBar, { completed: progressData.completed, total: progressData.total, repoName: repoName })))));
535
- };
536
- //# sourceMappingURL=IterationRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IterationRunner.js","sourceRoot":"","sources":["../../src/components/IterationRunner.tsx"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- export {};
2
- /**
3
- * Note: For comprehensive integration tests, you would want to:
4
- *
5
- * 1. Test child process spawning:
6
- * - Mock spawn() to return a fake ChildProcess
7
- * - Emit data events to simulate Claude output
8
- * - Test JSON parsing of events
9
- * - Test COMPLETE promise detection
10
- * - Test exit code handling
11
- *
12
- * 2. Test file operations:
13
- * - Mock appendFileSync/writeFileSync
14
- * - Verify events are logged correctly
15
- * - Test log file creation
16
- *
17
- * 3. Test React rendering:
18
- * - Use ink-testing-library to render component
19
- * - Test initialization prompts
20
- * - Test error display
21
- * - Test iteration counter
22
- *
23
- * Example structure for a full integration test:
24
- *
25
- * import { render } from 'ink-testing-library'
26
- * import { EventEmitter } from 'events'
27
- *
28
- * vi.mock('child_process', () => ({
29
- * spawn: vi.fn(() => {
30
- * const mockProcess = new EventEmitter()
31
- * mockProcess.stdout = new EventEmitter()
32
- * mockProcess.kill = vi.fn()
33
- * return mockProcess
34
- * })
35
- * }))
36
- *
37
- * it('parses streaming JSON events', () => {
38
- * const { lastFrame } = render(<IterationRunner totalIterations={1} />)
39
- * const mockChild = getLastSpawnedProcess()
40
- *
41
- * mockChild.stdout.emit('data', Buffer.from('{"type":"assistant"}\n'))
42
- *
43
- * expect(lastFrame()).toContain('expected output')
44
- * })
45
- */
46
- //# sourceMappingURL=IterationRunner.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IterationRunner.test.d.ts","sourceRoot":"","sources":["../../src/components/IterationRunner.test.tsx"],"names":[],"mappings":";AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG"}