@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,87 +0,0 @@
1
- import { eventToBlocks } from "./eventToBlocks.js";
2
- /**
3
- * Process raw events into content blocks.
4
- * With includePartialMessages: true, we receive multiple snapshots of the same message
5
- * as it builds up. Each snapshot may contain different parts of the message content,
6
- * so we need to merge them and deduplicate.
7
- */
8
- export const processEvents = (
9
- /** Events to process */
10
- events) => {
11
- // Filter to only show complete assistant messages, not streaming events
12
- // streaming events are incomplete and cause duplicate/disappearing content
13
- const assistantEvents = events.filter(event => event.type === "assistant");
14
- // Collect all content blocks from all snapshots of the same message
15
- const messageMap = new Map();
16
- for (const event of assistantEvents) {
17
- const message = event.message;
18
- const messageId = message?.id;
19
- const content = message?.content;
20
- if (messageId && content) {
21
- if (!messageMap.has(messageId)) {
22
- messageMap.set(messageId, []);
23
- }
24
- messageMap.get(messageId).push(...content);
25
- }
26
- }
27
- // Create merged events with deduplicated content
28
- const mergedEvents = Array.from(messageMap.entries()).map(([messageId, allContent]) => {
29
- // Deduplicate content blocks by their ID (for tool_use) or text (for text blocks)
30
- const seenBlocks = new Set();
31
- const uniqueContent = [];
32
- for (const block of allContent) {
33
- const blockType = block.type;
34
- let blockKey;
35
- if (blockType === "tool_use") {
36
- // Tool use blocks are unique by their ID
37
- blockKey = `tool:${block.id}`;
38
- }
39
- else if (blockType === "text") {
40
- // For text blocks, check if this is a prefix of or prefixed by existing text
41
- // This handles incremental text updates where each snapshot has more content
42
- const text = block.text;
43
- let isDuplicate = false;
44
- for (const seenKey of seenBlocks) {
45
- if (seenKey.startsWith("text:")) {
46
- const seenText = seenKey.substring(5);
47
- // If existing text starts with this text, or this text starts with existing,
48
- // keep only the longer one
49
- if (seenText.startsWith(text)) {
50
- // Existing is longer, this is a duplicate
51
- isDuplicate = true;
52
- break;
53
- }
54
- else if (text.startsWith(seenText)) {
55
- // This is longer, remove the old one and add this
56
- seenBlocks.delete(seenKey);
57
- // Also remove from uniqueContent
58
- const idx = uniqueContent.findIndex(b => b.type === "text" && b.text === seenText);
59
- if (idx >= 0)
60
- uniqueContent.splice(idx, 1);
61
- break;
62
- }
63
- }
64
- }
65
- if (isDuplicate)
66
- continue;
67
- blockKey = `text:${text}`;
68
- }
69
- else {
70
- blockKey = JSON.stringify(block);
71
- }
72
- if (!seenBlocks.has(blockKey)) {
73
- seenBlocks.add(blockKey);
74
- uniqueContent.push(block);
75
- }
76
- }
77
- return {
78
- type: "assistant",
79
- message: {
80
- id: messageId,
81
- content: uniqueContent,
82
- },
83
- };
84
- });
85
- return mergedEvents.flatMap(event => eventToBlocks(event));
86
- };
87
- //# sourceMappingURL=processEvents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"processEvents.js","sourceRoot":"","sources":["../../src/components/processEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;AAC3B,wBAAwB;AACxB,MAAsC,EACtB,EAAE;IAClB,wEAAwE;IACxE,2EAA2E;IAC3E,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;IAE1E,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0C,CAAA;IACpE,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA8C,CAAA;QACpE,MAAM,SAAS,GAAG,OAAO,EAAE,EAAwB,CAAA;QACnD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAqD,CAAA;QAE9E,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YAC/B,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE;QACpF,kFAAkF;QAClF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;QACpC,MAAM,aAAa,GAAmC,EAAE,CAAA;QAExD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAc,CAAA;YACtC,IAAI,QAAgB,CAAA;YAEpB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,yCAAyC;gBACzC,QAAQ,GAAG,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBAChC,6EAA6E;gBAC7E,6EAA6E;gBAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAA;gBACjC,IAAI,WAAW,GAAG,KAAK,CAAA;gBAEvB,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;oBACjC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;wBACrC,6EAA6E;wBAC7E,2BAA2B;wBAC3B,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC9B,0CAA0C;4BAC1C,WAAW,GAAG,IAAI,CAAA;4BAClB,MAAK;wBACP,CAAC;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACrC,kDAAkD;4BAClD,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;4BAC1B,iCAAiC;4BACjC,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;4BAClF,IAAI,GAAG,IAAI,CAAC;gCAAE,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;4BAC1C,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,WAAW;oBAAE,SAAQ;gBACzB,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACxB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,EAAE,EAAE,SAAS;gBACb,OAAO,EAAE,aAAa;aACvB;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAA"}
@@ -1,7 +0,0 @@
1
- import React from "react";
2
- import { type StaticItem } from "./IterationRunner.types.js";
3
- /** Render a static item (header, iteration header, or content block). */
4
- export declare const renderStaticItem: (
5
- /** The static item to render */
6
- item: StaticItem) => React.ReactNode;
7
- //# sourceMappingURL=renderStaticItem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderStaticItem.d.ts","sourceRoot":"","sources":["../../src/components/renderStaticItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAE5D,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB;AAC3B,gCAAgC;AAChC,MAAM,UAAU,KACf,KAAK,CAAC,SAsBR,CAAA"}
@@ -1,23 +0,0 @@
1
- import React from "react";
2
- import { Box, Text } from "ink";
3
- import BigText from "ink-big-text";
4
- import Gradient from "ink-gradient";
5
- import { Header } from "./Header.js";
6
- import { formatContentBlock } from "../lib/formatContentBlock.js";
7
- /** Render a static item (header, iteration header, or content block). */
8
- export const renderStaticItem = (
9
- /** The static item to render */
10
- item) => {
11
- if (item.type === "header") {
12
- return React.createElement(Header, { claudeVersion: item.claudeVersion, ralphVersion: item.ralphVersion });
13
- }
14
- if (item.type === "iteration") {
15
- return (React.createElement(Box, { flexDirection: "column", marginTop: 1 },
16
- React.createElement(Gradient, { colors: ["#30A6E4", "#EBC635"] },
17
- React.createElement(BigText, { text: `R${item.iteration}`, font: "tiny" }))));
18
- }
19
- // Content block
20
- const lines = formatContentBlock(item.block);
21
- return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, lines.map((line, i) => (React.createElement(Text, { key: i }, line || " ")))));
22
- };
23
- //# sourceMappingURL=renderStaticItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderStaticItem.js","sourceRoot":"","sources":["../../src/components/renderStaticItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGjE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG;AAC9B,gCAAgC;AAChC,IAAgB,EACC,EAAE;IACnB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,oBAAC,MAAM,IAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,GAAI,CAAA;IACvF,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC;YACtC,oBAAC,QAAQ,IAAC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;gBACtC,oBAAC,OAAO,IAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAC,MAAM,GAAG,CAC1C,CACP,CACP,CAAA;IACH,CAAC;IACD,gBAAgB;IAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,IACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,oBAAC,IAAI,IAAC,GAAG,EAAE,CAAC,IAAG,IAAI,IAAI,GAAG,CAAQ,CACnC,CAAC,CACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- /** Helper function to replay an event log file and return the rendered output. */
2
- export declare function replay(
3
- /** The name of the log file to replay */
4
- logFile: string): Promise<string>;
5
- //# sourceMappingURL=replay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/components/replay.tsx"],"names":[],"mappings":"AAOA,mFAAmF;AACnF,wBAAsB,MAAM;AAC1B,yCAAyC;AACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
@@ -1,49 +0,0 @@
1
- import React from "react";
2
- import { readFileSync } from "fs";
3
- import { join } from "path";
4
- import { render } from "ink-testing-library";
5
- import { vi, expect } from "vitest";
6
- import { EventDisplay } from "./EventDisplay.js";
7
- /** Helper function to replay an event log file and return the rendered output. */
8
- export async function replay(
9
- /** The name of the log file to replay */
10
- logFile) {
11
- // Read the event log
12
- const logPath = join(process.cwd(), "test/event-logs", logFile);
13
- const logContent = readFileSync(logPath, "utf-8");
14
- // Parse JSON events (multi-line JSON objects separated by blank lines)
15
- const events = [];
16
- const jsonObjects = logContent.split("\n\n");
17
- for (const jsonStr of jsonObjects) {
18
- if (!jsonStr.trim())
19
- continue;
20
- try {
21
- const event = JSON.parse(jsonStr);
22
- events.push(event);
23
- }
24
- catch {
25
- // Skip invalid JSON
26
- }
27
- }
28
- const previousCwd = process.env.RALPH_CWD;
29
- const initEvent = events.find(event => event.type === "system" && event.subtype === "init" && typeof event.cwd === "string");
30
- if (initEvent?.cwd) {
31
- process.env.RALPH_CWD = initEvent.cwd;
32
- }
33
- // Render with all events
34
- const { lastFrame } = render(React.createElement(EventDisplay, { events: events, iteration: 1, completedIterations: [] }));
35
- // Wait for rendering
36
- await vi.waitFor(() => {
37
- const output = lastFrame() ?? "";
38
- expect(output.length).toBeGreaterThan(0);
39
- }, { timeout: 1000 });
40
- const output = lastFrame() ?? "";
41
- if (previousCwd === undefined) {
42
- delete process.env.RALPH_CWD;
43
- }
44
- else {
45
- process.env.RALPH_CWD = previousCwd;
46
- }
47
- return output;
48
- }
49
- //# sourceMappingURL=replay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/components/replay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,MAAM;AAC1B,yCAAyC;AACzC,OAAe;IAEf,qBAAqB;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAEjD,uEAAuE;IACvE,MAAM,MAAM,GAAmC,EAAE,CAAA;IACjD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,SAAQ;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAC9D,CAAA;IACjC,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAA;IACvC,CAAC;IAED,yBAAyB;IACzB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,oBAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,mBAAmB,EAAE,EAAE,GAAI,CACxE,CAAA;IAED,qBAAqB;IACrB,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAA;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,EACD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAA;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAA;IAEhC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;IACrC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,14 +0,0 @@
1
- import React from "react";
2
- /**
3
- * Helper component that manages controlled state for EnhancedTextInput in tests.
4
- * Wraps the input with local state management to test change and submit handlers.
5
- */
6
- export declare const ControlledInput: ({ initialValue, onValueChange, onSubmit, }: {
7
- /** Initial value for the input */
8
- initialValue: string;
9
- /** Called when the input value changes */
10
- onValueChange?: (value: string) => void;
11
- /** Called when the input is submitted */
12
- onSubmit?: (value: string) => void;
13
- }) => React.JSX.Element;
14
- //# sourceMappingURL=ControlledInput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ControlledInput.d.ts","sourceRoot":"","sources":["../../../src/components/test-helpers/ControlledInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,4CAI7B;IACD,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,sBAOA,CAAA"}
@@ -1,15 +0,0 @@
1
- import React, { useState } from "react";
2
- import { EnhancedTextInput } from "../EnhancedTextInput.js";
3
- /**
4
- * Helper component that manages controlled state for EnhancedTextInput in tests.
5
- * Wraps the input with local state management to test change and submit handlers.
6
- */
7
- export const ControlledInput = ({ initialValue, onValueChange, onSubmit, }) => {
8
- const [value, setValue] = useState(initialValue);
9
- const handleChange = (newValue) => {
10
- setValue(newValue);
11
- onValueChange?.(newValue);
12
- };
13
- return React.createElement(EnhancedTextInput, { value: value, onChange: handleChange, onSubmit: onSubmit });
14
- };
15
- //# sourceMappingURL=ControlledInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ControlledInput.js","sourceRoot":"","sources":["../../../src/components/test-helpers/ControlledInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,YAAY,EACZ,aAAa,EACb,QAAQ,GAQT,EAAE,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClB,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC,CAAA;IACD,OAAO,oBAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAA;AACxF,CAAC,CAAA"}
@@ -1,9 +0,0 @@
1
- /** BigText "tiny" font takes 4 rows, plus 1 for separator */
2
- export declare const HEADER_HEIGHT = 5;
3
- /** Separator plus content row */
4
- export declare const FOOTER_HEIGHT = 2;
5
- /** Calculate the available content height based on terminal size */
6
- export declare const useContentHeight: (
7
- /** Whether the layout includes a footer */
8
- hasFooter?: boolean) => number;
9
- //# sourceMappingURL=useContentHeight.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContentHeight.d.ts","sourceRoot":"","sources":["../../src/components/useContentHeight.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,eAAO,MAAM,aAAa,IAAI,CAAA;AAE9B,kCAAkC;AAClC,eAAO,MAAM,aAAa,IAAI,CAAA;AAK9B,qEAAqE;AACrE,eAAO,MAAM,gBAAgB;AAC3B,2CAA2C;AAC3C,YAAW,OAAc,KACxB,MAIF,CAAA"}
@@ -1,16 +0,0 @@
1
- import { useTerminalSize } from "../lib/useTerminalSize.js";
2
- /** BigText "tiny" font takes 4 rows, plus 1 for separator */
3
- export const HEADER_HEIGHT = 5;
4
- /** Separator plus content row */
5
- export const FOOTER_HEIGHT = 2;
6
- /** Top and bottom borders */
7
- const BORDER_HEIGHT = 2;
8
- /** Calculate the available content height based on terminal size */
9
- export const useContentHeight = (
10
- /** Whether the layout includes a footer */
11
- hasFooter = true) => {
12
- const { rows } = useTerminalSize();
13
- const footerHeight = hasFooter ? FOOTER_HEIGHT : 0;
14
- return Math.max(1, rows - HEADER_HEIGHT - footerHeight - BORDER_HEIGHT);
15
- };
16
- //# sourceMappingURL=useContentHeight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContentHeight.js","sourceRoot":"","sources":["../../src/components/useContentHeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAE9B,kCAAkC;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AAE9B,8BAA8B;AAC9B,MAAM,aAAa,GAAG,CAAC,CAAA;AAEvB,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG;AAC9B,2CAA2C;AAC3C,YAAqB,IAAI,EACjB,EAAE;IACV,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAA;IAClC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,CAAC,CAAA;AACzE,CAAC,CAAA"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- /** Parse and execute the CLI program with command-line arguments. */
2
- export declare const run: () => void;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,eAAO,MAAM,GAAG,YAEf,CAAA"}
@@ -1,33 +0,0 @@
1
- import type { SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
2
- import { createUserMessage } from "./createUserMessage.js";
3
- /**
4
- * A message queue that can be used as an async iterable for the SDK's streamInput.
5
- * Allows pushing messages dynamically while iterating.
6
- */
7
- export declare class MessageQueue implements AsyncIterable<SDKUserMessage> {
8
- private queue;
9
- private resolvers;
10
- private closed;
11
- private nextCallCount;
12
- /**
13
- * Push a message to the queue. If there are pending resolvers waiting for the next message,
14
- * resolve immediately. Otherwise, add to queue.
15
- */
16
- push(
17
- /** The message to push to the queue */
18
- message: SDKUserMessage): void;
19
- /**
20
- * Close the queue. Resolve any pending resolvers with done=true.
21
- */
22
- close(): void;
23
- /**
24
- * Get a preview string of a message for debug logging.
25
- */
26
- private getMessagePreview;
27
- /**
28
- * Implement the async iterable protocol to allow iteration with for-await-of.
29
- */
30
- [Symbol.asyncIterator](): AsyncIterator<SDKUserMessage>;
31
- }
32
- export { createUserMessage };
33
- //# sourceMappingURL=MessageQueue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D;;;GAGG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA8D;IAC/E,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,aAAa,CAAI;IAEzB;;;OAGG;IACH,IAAI;IACF,uCAAuC;IACvC,OAAO,EAAE,cAAc,GACtB,IAAI;IAmBP;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,cAAc,CAAC;CAwBxD;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -1,96 +0,0 @@
1
- import { createDebugLogger } from "./debug.js";
2
- import { createUserMessage } from "./createUserMessage.js";
3
- const log = createDebugLogger("messagequeue");
4
- /**
5
- * A message queue that can be used as an async iterable for the SDK's streamInput.
6
- * Allows pushing messages dynamically while iterating.
7
- */
8
- export class MessageQueue {
9
- queue = [];
10
- resolvers = [];
11
- closed = false;
12
- nextCallCount = 0;
13
- /**
14
- * Push a message to the queue. If there are pending resolvers waiting for the next message,
15
- * resolve immediately. Otherwise, add to queue.
16
- */
17
- push(
18
- /** The message to push to the queue */
19
- message) {
20
- const messagePreview = this.getMessagePreview(message);
21
- log(`push() called with message: ${messagePreview}`);
22
- if (this.closed) {
23
- log(`push() ignored - queue is closed`);
24
- return;
25
- }
26
- if (this.resolvers.length > 0) {
27
- const resolve = this.resolvers.shift();
28
- log(`push() resolving pending next() call (${this.resolvers.length} resolvers remaining)`);
29
- resolve({ value: message, done: false });
30
- }
31
- else {
32
- this.queue.push(message);
33
- log(`push() added to queue (queue length: ${this.queue.length})`);
34
- }
35
- }
36
- /**
37
- * Close the queue. Resolve any pending resolvers with done=true.
38
- */
39
- close() {
40
- if (this.closed) {
41
- log(`close() called but already closed - no-op`);
42
- return;
43
- }
44
- log(`close() called - resolving ${this.resolvers.length} pending resolvers`);
45
- this.closed = true;
46
- // Resolve any pending iterators
47
- for (const resolve of this.resolvers) {
48
- log(`close() resolving pending resolver with done=true`);
49
- resolve({ value: undefined, done: true });
50
- }
51
- this.resolvers = [];
52
- log(`close() complete`);
53
- }
54
- /**
55
- * Get a preview string of a message for debug logging.
56
- */
57
- getMessagePreview(
58
- /** The message to extract a preview from */
59
- message) {
60
- const content = message.message?.content;
61
- if (Array.isArray(content) && content.length > 0) {
62
- const firstBlock = content[0];
63
- if ("text" in firstBlock && typeof firstBlock.text === "string") {
64
- const text = firstBlock.text.slice(0, 50);
65
- return text.length < firstBlock.text.length ? `"${text}..."` : `"${text}"`;
66
- }
67
- }
68
- return `[${message.type} message]`;
69
- }
70
- /**
71
- * Implement the async iterable protocol to allow iteration with for-await-of.
72
- */
73
- [Symbol.asyncIterator]() {
74
- return {
75
- next: () => {
76
- this.nextCallCount++;
77
- const callId = this.nextCallCount;
78
- if (this.queue.length > 0) {
79
- const message = this.queue.shift();
80
- log(`next() #${callId}: returning queued message (${this.queue.length} remaining)`);
81
- return Promise.resolve({ value: message, done: false });
82
- }
83
- if (this.closed) {
84
- log(`next() #${callId}: queue closed, returning done=true`);
85
- return Promise.resolve({ value: undefined, done: true });
86
- }
87
- log(`next() #${callId}: queue empty, creating pending resolver (${this.resolvers.length + 1} total)`);
88
- return new Promise(resolve => {
89
- this.resolvers.push(resolve);
90
- });
91
- },
92
- };
93
- }
94
- }
95
- export { createUserMessage };
96
- //# sourceMappingURL=MessageQueue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/lib/MessageQueue.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=MessageQueue.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageQueue.test.d.ts","sourceRoot":"","sources":["../../src/lib/MessageQueue.test.ts"],"names":[],"mappings":""}