@herbcaudill/ralph 0.8.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +26 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/components/App.d.ts +6 -1
  5. package/dist/components/App.d.ts.map +1 -1
  6. package/dist/components/App.js +7 -3
  7. package/dist/components/App.js.map +1 -1
  8. package/dist/components/EnhancedTextInput.d.ts +8 -8
  9. package/dist/components/EnhancedTextInput.d.ts.map +1 -1
  10. package/dist/components/EnhancedTextInput.js +2 -36
  11. package/dist/components/EnhancedTextInput.js.map +1 -1
  12. package/dist/components/EnhancedTextInput.test.js +2 -10
  13. package/dist/components/EnhancedTextInput.test.js.map +1 -1
  14. package/dist/components/EventDisplay.d.ts +1 -1
  15. package/dist/components/EventDisplay.d.ts.map +1 -1
  16. package/dist/components/EventDisplay.js +3 -94
  17. package/dist/components/EventDisplay.js.map +1 -1
  18. package/dist/components/EventDisplay.replay.test.js +34 -68
  19. package/dist/components/EventDisplay.replay.test.js.map +1 -1
  20. package/dist/components/EventDisplay.test.js +30 -0
  21. package/dist/components/EventDisplay.test.js.map +1 -1
  22. package/dist/components/FullScreenLayout.d.ts +5 -4
  23. package/dist/components/FullScreenLayout.d.ts.map +1 -1
  24. package/dist/components/FullScreenLayout.js +2 -12
  25. package/dist/components/FullScreenLayout.js.map +1 -1
  26. package/dist/components/Header.d.ts +2 -1
  27. package/dist/components/Header.d.ts.map +1 -1
  28. package/dist/components/Header.js +8 -1
  29. package/dist/components/Header.js.map +1 -1
  30. package/dist/components/InitRalph.d.ts +6 -1
  31. package/dist/components/InitRalph.d.ts.map +1 -1
  32. package/dist/components/InitRalph.js +71 -89
  33. package/dist/components/InitRalph.js.map +1 -1
  34. package/dist/components/IterationRunner.d.ts +6 -13
  35. package/dist/components/IterationRunner.d.ts.map +1 -1
  36. package/dist/components/IterationRunner.js +84 -168
  37. package/dist/components/IterationRunner.js.map +1 -1
  38. package/dist/components/IterationRunner.test.d.ts +44 -0
  39. package/dist/components/IterationRunner.test.d.ts.map +1 -1
  40. package/dist/components/IterationRunner.test.js +66 -126
  41. package/dist/components/IterationRunner.test.js.map +1 -1
  42. package/dist/components/IterationRunner.types.d.ts +30 -0
  43. package/dist/components/IterationRunner.types.d.ts.map +1 -0
  44. package/dist/components/IterationRunner.types.js +2 -0
  45. package/dist/components/IterationRunner.types.js.map +1 -0
  46. package/dist/components/JsonOutput.d.ts +5 -6
  47. package/dist/components/JsonOutput.d.ts.map +1 -1
  48. package/dist/components/JsonOutput.js +57 -34
  49. package/dist/components/JsonOutput.js.map +1 -1
  50. package/dist/components/JsonOutput.test.d.ts +2 -0
  51. package/dist/components/JsonOutput.test.d.ts.map +1 -0
  52. package/dist/components/JsonOutput.test.js +39 -0
  53. package/dist/components/JsonOutput.test.js.map +1 -0
  54. package/dist/components/ReplayLog.d.ts +1 -1
  55. package/dist/components/ReplayLog.d.ts.map +1 -1
  56. package/dist/components/ReplayLog.js +9 -2
  57. package/dist/components/ReplayLog.js.map +1 -1
  58. package/dist/components/StreamingText.d.ts +4 -0
  59. package/dist/components/StreamingText.d.ts.map +1 -1
  60. package/dist/components/StreamingText.js +4 -3
  61. package/dist/components/StreamingText.js.map +1 -1
  62. package/dist/components/StreamingText.test.js +39 -0
  63. package/dist/components/StreamingText.test.js.map +1 -1
  64. package/dist/components/ToolUse.d.ts +8 -0
  65. package/dist/components/ToolUse.d.ts.map +1 -1
  66. package/dist/components/ToolUse.js +1 -0
  67. package/dist/components/ToolUse.js.map +1 -1
  68. package/dist/components/blocksToLines.d.ts +6 -0
  69. package/dist/components/blocksToLines.d.ts.map +1 -0
  70. package/dist/components/blocksToLines.js +15 -0
  71. package/dist/components/blocksToLines.js.map +1 -0
  72. package/dist/components/eventToBlocks.d.ts +7 -1
  73. package/dist/components/eventToBlocks.d.ts.map +1 -1
  74. package/dist/components/eventToBlocks.js +7 -1
  75. package/dist/components/eventToBlocks.js.map +1 -1
  76. package/dist/components/findNextWordBoundary.d.ts +10 -0
  77. package/dist/components/findNextWordBoundary.d.ts.map +1 -0
  78. package/dist/components/findNextWordBoundary.js +23 -0
  79. package/dist/components/findNextWordBoundary.js.map +1 -0
  80. package/dist/components/findPreviousWordBoundary.d.ts +10 -0
  81. package/dist/components/findPreviousWordBoundary.d.ts.map +1 -0
  82. package/dist/components/findPreviousWordBoundary.js +23 -0
  83. package/dist/components/findPreviousWordBoundary.js.map +1 -0
  84. package/dist/components/processEvents.d.ts +11 -0
  85. package/dist/components/processEvents.d.ts.map +1 -0
  86. package/dist/components/processEvents.js +87 -0
  87. package/dist/components/processEvents.js.map +1 -0
  88. package/dist/components/renderStaticItem.d.ts +7 -0
  89. package/dist/components/renderStaticItem.d.ts.map +1 -0
  90. package/dist/components/renderStaticItem.js +23 -0
  91. package/dist/components/renderStaticItem.js.map +1 -0
  92. package/dist/components/replay.d.ts +5 -0
  93. package/dist/components/replay.d.ts.map +1 -0
  94. package/dist/components/replay.js +49 -0
  95. package/dist/components/replay.js.map +1 -0
  96. package/dist/components/test-helpers/ControlledInput.d.ts +14 -0
  97. package/dist/components/test-helpers/ControlledInput.d.ts.map +1 -0
  98. package/dist/components/test-helpers/ControlledInput.js +15 -0
  99. package/dist/components/test-helpers/ControlledInput.js.map +1 -0
  100. package/dist/components/useContentHeight.d.ts +9 -0
  101. package/dist/components/useContentHeight.d.ts.map +1 -0
  102. package/dist/components/useContentHeight.js +16 -0
  103. package/dist/components/useContentHeight.js.map +1 -0
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +2 -1
  107. package/dist/index.js.map +1 -1
  108. package/dist/lib/MessageQueue.d.ts +18 -5
  109. package/dist/lib/MessageQueue.d.ts.map +1 -1
  110. package/dist/lib/MessageQueue.js +21 -14
  111. package/dist/lib/MessageQueue.js.map +1 -1
  112. package/dist/lib/StdinCommandHandler.d.ts +26 -20
  113. package/dist/lib/StdinCommandHandler.js +78 -85
  114. package/dist/lib/StdinCommandHandler.test.d.ts +2 -2
  115. package/dist/lib/StdinCommandHandler.test.js +92 -92
  116. package/dist/lib/WorktreeManager.d.ts +114 -0
  117. package/dist/lib/WorktreeManager.d.ts.map +1 -0
  118. package/dist/lib/WorktreeManager.js +350 -0
  119. package/dist/lib/WorktreeManager.js.map +1 -0
  120. package/dist/lib/WorktreeManager.test.d.ts +2 -0
  121. package/dist/lib/WorktreeManager.test.d.ts.map +1 -0
  122. package/dist/lib/WorktreeManager.test.js +261 -0
  123. package/dist/lib/WorktreeManager.test.js.map +1 -0
  124. package/dist/lib/addTodo.d.ts +5 -5
  125. package/dist/lib/addTodo.d.ts.map +1 -1
  126. package/dist/lib/addTodo.js +6 -20
  127. package/dist/lib/addTodo.js.map +1 -1
  128. package/dist/lib/beadsClient.d.ts +6 -12
  129. package/dist/lib/beadsClient.d.ts.map +1 -1
  130. package/dist/lib/beadsClient.js +3 -2
  131. package/dist/lib/beadsClient.js.map +1 -1
  132. package/dist/lib/captureBeadsSnapshot.d.ts +4 -0
  133. package/dist/lib/captureBeadsSnapshot.d.ts.map +1 -0
  134. package/dist/lib/captureBeadsSnapshot.js +24 -0
  135. package/dist/lib/captureBeadsSnapshot.js.map +1 -0
  136. package/dist/lib/captureStartupSnapshot.d.ts +10 -0
  137. package/dist/lib/captureStartupSnapshot.d.ts.map +1 -0
  138. package/dist/lib/captureStartupSnapshot.js +29 -0
  139. package/dist/lib/captureStartupSnapshot.js.map +1 -0
  140. package/dist/lib/captureTodoSnapshot.d.ts +4 -0
  141. package/dist/lib/captureTodoSnapshot.d.ts.map +1 -0
  142. package/dist/lib/captureTodoSnapshot.js +24 -0
  143. package/dist/lib/captureTodoSnapshot.js.map +1 -0
  144. package/dist/lib/copyTemplates.d.ts +22 -0
  145. package/dist/lib/copyTemplates.d.ts.map +1 -0
  146. package/dist/lib/copyTemplates.js +32 -0
  147. package/dist/lib/copyTemplates.js.map +1 -0
  148. package/dist/lib/createStdinCommandHandler.d.ts +28 -0
  149. package/dist/lib/createStdinCommandHandler.d.ts.map +1 -0
  150. package/dist/lib/createStdinCommandHandler.js +67 -0
  151. package/dist/lib/createStdinCommandHandler.js.map +1 -0
  152. package/dist/lib/createUserMessage.d.ts +6 -0
  153. package/dist/lib/createUserMessage.d.ts.map +1 -0
  154. package/dist/lib/createUserMessage.js +13 -0
  155. package/dist/lib/createUserMessage.js.map +1 -0
  156. package/dist/lib/debug.d.ts +17 -16
  157. package/dist/lib/debug.d.ts.map +1 -1
  158. package/dist/lib/debug.js +25 -15
  159. package/dist/lib/debug.js.map +1 -1
  160. package/dist/lib/findMaxLogNumber.d.ts +6 -0
  161. package/dist/lib/findMaxLogNumber.d.ts.map +1 -0
  162. package/dist/lib/findMaxLogNumber.js +26 -0
  163. package/dist/lib/findMaxLogNumber.js.map +1 -0
  164. package/dist/lib/findMaxLogNumber.test.d.ts +2 -0
  165. package/dist/lib/findMaxLogNumber.test.d.ts.map +1 -0
  166. package/dist/lib/findMaxLogNumber.test.js +39 -0
  167. package/dist/lib/findMaxLogNumber.test.js.map +1 -0
  168. package/dist/lib/formatContentBlock.d.ts +4 -8
  169. package/dist/lib/formatContentBlock.d.ts.map +1 -1
  170. package/dist/lib/formatContentBlock.js +7 -58
  171. package/dist/lib/formatContentBlock.js.map +1 -1
  172. package/dist/lib/formatIterationHeader.d.ts +5 -0
  173. package/dist/lib/formatIterationHeader.d.ts.map +1 -0
  174. package/dist/lib/formatIterationHeader.js +8 -0
  175. package/dist/lib/formatIterationHeader.js.map +1 -0
  176. package/dist/lib/formatText.d.ts +5 -0
  177. package/dist/lib/formatText.d.ts.map +1 -0
  178. package/dist/lib/formatText.js +33 -0
  179. package/dist/lib/formatText.js.map +1 -0
  180. package/dist/lib/formatToolUse.d.ts +7 -0
  181. package/dist/lib/formatToolUse.d.ts.map +1 -0
  182. package/dist/lib/formatToolUse.js +14 -0
  183. package/dist/lib/formatToolUse.js.map +1 -0
  184. package/dist/lib/formatUserMessage.d.ts +5 -0
  185. package/dist/lib/formatUserMessage.d.ts.map +1 -0
  186. package/dist/lib/formatUserMessage.js +8 -0
  187. package/dist/lib/formatUserMessage.js.map +1 -0
  188. package/dist/lib/getBaseCwd.d.ts +6 -0
  189. package/dist/lib/getBaseCwd.d.ts.map +1 -0
  190. package/dist/lib/getBaseCwd.js +6 -0
  191. package/dist/lib/getBaseCwd.js.map +1 -0
  192. package/dist/lib/getBeadsProgress.d.ts +8 -0
  193. package/dist/lib/getBeadsProgress.d.ts.map +1 -0
  194. package/dist/lib/getBeadsProgress.js +35 -0
  195. package/dist/lib/getBeadsProgress.js.map +1 -0
  196. package/dist/lib/getClaudeVersion.d.ts +4 -0
  197. package/dist/lib/getClaudeVersion.d.ts.map +1 -1
  198. package/dist/lib/getClaudeVersion.js +4 -0
  199. package/dist/lib/getClaudeVersion.js.map +1 -1
  200. package/dist/lib/getDefaultIterations.d.ts +6 -0
  201. package/dist/lib/getDefaultIterations.d.ts.map +1 -0
  202. package/dist/lib/getDefaultIterations.js +14 -0
  203. package/dist/lib/getDefaultIterations.js.map +1 -0
  204. package/dist/lib/getDefaultIterations.test.d.ts +2 -0
  205. package/dist/lib/getDefaultIterations.test.d.ts.map +1 -0
  206. package/dist/lib/getDefaultIterations.test.js +39 -0
  207. package/dist/lib/getDefaultIterations.test.js.map +1 -0
  208. package/dist/lib/getLatestLogFile.d.ts +6 -0
  209. package/dist/lib/getLatestLogFile.d.ts.map +1 -0
  210. package/dist/lib/getLatestLogFile.js +15 -0
  211. package/dist/lib/getLatestLogFile.js.map +1 -0
  212. package/dist/lib/getNextLogFile.d.ts +0 -5
  213. package/dist/lib/getNextLogFile.d.ts.map +1 -1
  214. package/dist/lib/getNextLogFile.js +2 -36
  215. package/dist/lib/getNextLogFile.js.map +1 -1
  216. package/dist/lib/getNextLogFile.test.js +2 -1
  217. package/dist/lib/getNextLogFile.test.js.map +1 -1
  218. package/dist/lib/getOpenIssueCount.d.ts +0 -5
  219. package/dist/lib/getOpenIssueCount.d.ts.map +1 -1
  220. package/dist/lib/getOpenIssueCount.js +0 -12
  221. package/dist/lib/getOpenIssueCount.js.map +1 -1
  222. package/dist/lib/getOpenIssueCount.test.js +1 -35
  223. package/dist/lib/getOpenIssueCount.test.js.map +1 -1
  224. package/dist/lib/getProgress.d.ts +6 -26
  225. package/dist/lib/getProgress.d.ts.map +1 -1
  226. package/dist/lib/getProgress.js +8 -109
  227. package/dist/lib/getProgress.js.map +1 -1
  228. package/dist/lib/getProgress.test.js +2 -1
  229. package/dist/lib/getProgress.test.js.map +1 -1
  230. package/dist/lib/getPromptContent.d.ts +8 -0
  231. package/dist/lib/getPromptContent.d.ts.map +1 -0
  232. package/dist/lib/getPromptContent.js +31 -0
  233. package/dist/lib/getPromptContent.js.map +1 -0
  234. package/dist/lib/getTerminalSize.d.ts +8 -0
  235. package/dist/lib/getTerminalSize.d.ts.map +1 -0
  236. package/dist/lib/getTerminalSize.js +10 -0
  237. package/dist/lib/getTerminalSize.js.map +1 -0
  238. package/dist/lib/getTodoProgress.d.ts +4 -0
  239. package/dist/lib/getTodoProgress.d.ts.map +1 -0
  240. package/dist/lib/getTodoProgress.js +22 -0
  241. package/dist/lib/getTodoProgress.js.map +1 -0
  242. package/dist/lib/insertTodo.d.ts +7 -0
  243. package/dist/lib/insertTodo.d.ts.map +1 -0
  244. package/dist/lib/insertTodo.js +22 -0
  245. package/dist/lib/insertTodo.js.map +1 -0
  246. package/dist/lib/outputEvent.d.ts +5 -0
  247. package/dist/lib/outputEvent.d.ts.map +1 -0
  248. package/dist/lib/outputEvent.js +7 -0
  249. package/dist/lib/outputEvent.js.map +1 -0
  250. package/dist/lib/parseStdinCommand.d.ts +25 -0
  251. package/dist/lib/parseStdinCommand.d.ts.map +1 -0
  252. package/dist/lib/parseStdinCommand.js +43 -0
  253. package/dist/lib/parseStdinCommand.js.map +1 -0
  254. package/dist/lib/parseStdinCommand.test.d.ts +2 -0
  255. package/dist/lib/parseStdinCommand.test.d.ts.map +1 -0
  256. package/dist/lib/parseStdinCommand.test.js +93 -0
  257. package/dist/lib/parseStdinCommand.test.js.map +1 -0
  258. package/dist/lib/parseTaskLifecycle.d.ts +18 -0
  259. package/dist/lib/parseTaskLifecycle.d.ts.map +1 -0
  260. package/dist/lib/parseTaskLifecycle.js +30 -0
  261. package/dist/lib/parseTaskLifecycle.js.map +1 -0
  262. package/dist/lib/parseTaskLifecycle.test.d.ts +2 -0
  263. package/dist/lib/parseTaskLifecycle.test.d.ts.map +1 -0
  264. package/dist/lib/parseTaskLifecycle.test.js +122 -0
  265. package/dist/lib/parseTaskLifecycle.test.js.map +1 -0
  266. package/dist/lib/parseWorktreeFromBranch.d.ts +13 -0
  267. package/dist/lib/parseWorktreeFromBranch.d.ts.map +1 -0
  268. package/dist/lib/parseWorktreeFromBranch.js +19 -0
  269. package/dist/lib/parseWorktreeFromBranch.js.map +1 -0
  270. package/dist/lib/processEvents.d.ts +12 -0
  271. package/dist/lib/processEvents.d.ts.map +1 -0
  272. package/dist/lib/processEvents.js +113 -0
  273. package/dist/lib/processEvents.js.map +1 -0
  274. package/dist/lib/rel.d.ts +7 -1
  275. package/dist/lib/rel.d.ts.map +1 -1
  276. package/dist/lib/rel.js +13 -4
  277. package/dist/lib/rel.js.map +1 -1
  278. package/dist/lib/rel.test.js +16 -1
  279. package/dist/lib/rel.test.js.map +1 -1
  280. package/dist/lib/sdkMessageToEvent.d.ts +6 -0
  281. package/dist/lib/sdkMessageToEvent.d.ts.map +1 -0
  282. package/dist/lib/sdkMessageToEvent.js +12 -0
  283. package/dist/lib/sdkMessageToEvent.js.map +1 -0
  284. package/dist/lib/shortenTempPaths.d.ts +7 -1
  285. package/dist/lib/shortenTempPaths.d.ts.map +1 -1
  286. package/dist/lib/shortenTempPaths.js +7 -2
  287. package/dist/lib/shortenTempPaths.js.map +1 -1
  288. package/dist/lib/types.d.ts +19 -0
  289. package/dist/lib/types.d.ts.map +1 -0
  290. package/dist/lib/types.js +2 -0
  291. package/dist/lib/types.js.map +1 -0
  292. package/dist/lib/useTerminalSize.d.ts +3 -2
  293. package/dist/lib/useTerminalSize.d.ts.map +1 -1
  294. package/dist/lib/useTerminalSize.js +4 -6
  295. package/dist/lib/useTerminalSize.js.map +1 -1
  296. package/package.json +4 -3
  297. package/templates/core-prompt.md +77 -0
  298. package/templates/skills/manage-tasks/SKILL.md +113 -0
  299. package/templates/workflow.md +46 -0
  300. package/templates/prompt-beads.md +0 -44
  301. package/templates/prompt-todos.md +0 -17
  302. package/templates/todo.md +0 -9
@@ -0,0 +1,32 @@
1
+ import { existsSync, mkdirSync, copyFileSync } from "fs";
2
+ import { join, dirname } from "path";
3
+ /** Copy files from templates to destination, creating directories as needed. */
4
+ export function copyTemplates(
5
+ /** Directory containing template files */
6
+ templatesDir,
7
+ /** Destination directory for copied files */
8
+ destDir,
9
+ /** Array of source and destination path pairs */
10
+ files) {
11
+ const result = { created: [], skipped: [], errors: [] };
12
+ for (const { src, dest } of files) {
13
+ const srcPath = join(templatesDir, src);
14
+ const destPath = join(destDir, dest);
15
+ const destDirPath = dirname(destPath);
16
+ if (!existsSync(destDirPath)) {
17
+ mkdirSync(destDirPath, { recursive: true });
18
+ }
19
+ if (existsSync(destPath)) {
20
+ result.skipped.push(dest);
21
+ }
22
+ else if (existsSync(srcPath)) {
23
+ copyFileSync(srcPath, destPath);
24
+ result.created.push(dest);
25
+ }
26
+ else {
27
+ result.errors.push(`Template not found: ${src}`);
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ //# sourceMappingURL=copyTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyTemplates.js","sourceRoot":"","sources":["../../src/lib/copyTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEpC,iFAAiF;AACjF,MAAM,UAAU,aAAa;AAC3B,0CAA0C;AAC1C,YAAoB;AACpB,6CAA6C;AAC7C,OAAe;AACf,iDAAiD;AACjD,KAA2C;IAE3C,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IAEnE,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;aAAM,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { MessageQueue } from "./MessageQueue.js";
2
+ /**
3
+ * Creates a stdin command handler that reads JSON commands from stdin.
4
+ * Returns a cleanup function to stop reading.
5
+ *
6
+ * Commands:
7
+ * - {"type": "message", "text": "..."} - Send a message to Claude
8
+ * - {"type": "stop"} - Request graceful stop after current iteration
9
+ * - {"type": "pause"} - Pause after current iteration completes
10
+ * - {"type": "resume"} - Resume from paused state
11
+ */
12
+ export declare const createStdinCommandHandler: (
13
+ /** Getter for handler options; called when a command is received */
14
+ getOptions: () => StdinCommandHandlerOptions) => (() => void);
15
+ /** Options for the stdin command handler */
16
+ export type StdinCommandHandlerOptions = {
17
+ /** The message queue to push user messages to, or null if not active */
18
+ messageQueue: MessageQueue | null;
19
+ /** Callback invoked when a stop command is received */
20
+ onStop: () => void;
21
+ /** Optional callback invoked when a pause command is received */
22
+ onPause?: () => void;
23
+ /** Optional callback invoked when a resume command is received */
24
+ onResume?: () => void;
25
+ /** Optional callback invoked when a user message is processed */
26
+ onMessage?: (text: string) => void;
27
+ };
28
+ //# sourceMappingURL=createStdinCommandHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStdinCommandHandler.d.ts","sourceRoot":"","sources":["../../src/lib/createStdinCommandHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAqB,MAAM,mBAAmB,CAAA;AAMnE;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB;AACpC,oEAAoE;AACpE,YAAY,MAAM,0BAA0B,KAC3C,CAAC,MAAM,IAAI,CAkDb,CAAA;AAED,6CAA6C;AAC7C,MAAM,MAAM,0BAA0B,GAAG;IACvC,wEAAwE;IACxE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,uDAAuD;IACvD,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,iEAAiE;IACjE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA"}
@@ -0,0 +1,67 @@
1
+ import { createDebugLogger } from "./debug.js";
2
+ import { createUserMessage } from "./MessageQueue.js";
3
+ import { parseStdinCommand } from "./parseStdinCommand.js";
4
+ import { createInterface } from "readline";
5
+ const log = createDebugLogger("stdin-command");
6
+ /**
7
+ * Creates a stdin command handler that reads JSON commands from stdin.
8
+ * Returns a cleanup function to stop reading.
9
+ *
10
+ * Commands:
11
+ * - {"type": "message", "text": "..."} - Send a message to Claude
12
+ * - {"type": "stop"} - Request graceful stop after current iteration
13
+ * - {"type": "pause"} - Pause after current iteration completes
14
+ * - {"type": "resume"} - Resume from paused state
15
+ */
16
+ export const createStdinCommandHandler = (
17
+ /** Getter for handler options; called when a command is received */
18
+ getOptions) => {
19
+ // Don't set up stdin handler if stdin is a TTY (interactive mode handles input differently)
20
+ // This handler is for piped input in JSON mode
21
+ if (process.stdin.isTTY) {
22
+ log(`stdin is TTY - skipping stdin command handler`);
23
+ return () => { };
24
+ }
25
+ log(`Setting up stdin command handler`);
26
+ const rl = createInterface({
27
+ input: process.stdin,
28
+ terminal: false,
29
+ });
30
+ const lineHandler = (line) => {
31
+ const command = parseStdinCommand(line);
32
+ if (!command)
33
+ return;
34
+ const options = getOptions();
35
+ log(`Received command: ${command.type}`);
36
+ if (command.type === "message") {
37
+ if (options.messageQueue) {
38
+ const userMessage = createUserMessage(command.text);
39
+ options.messageQueue.push(userMessage);
40
+ log(`Pushed message to queue: ${command.text.slice(0, 50)}...`);
41
+ options.onMessage?.(command.text);
42
+ }
43
+ else {
44
+ log(`Cannot send message - no active message queue`);
45
+ }
46
+ }
47
+ else if (command.type === "stop") {
48
+ log(`Stop command received`);
49
+ options.onStop();
50
+ }
51
+ else if (command.type === "pause") {
52
+ log(`Pause command received`);
53
+ options.onPause?.();
54
+ }
55
+ else if (command.type === "resume") {
56
+ log(`Resume command received`);
57
+ options.onResume?.();
58
+ }
59
+ };
60
+ rl.on("line", lineHandler);
61
+ return () => {
62
+ log(`Cleaning up stdin command handler`);
63
+ rl.off("line", lineHandler);
64
+ rl.close();
65
+ };
66
+ };
67
+ //# sourceMappingURL=createStdinCommandHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createStdinCommandHandler.js","sourceRoot":"","sources":["../../src/lib/createStdinCommandHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAgB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,GAAG,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAA;AAE9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;AACvC,oEAAoE;AACpE,UAA4C,EAC9B,EAAE;IAChB,4FAA4F;IAC5F,+CAA+C;IAC/C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,+CAA+C,CAAC,CAAA;QACpD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IAED,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAEvC,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;QAC5B,GAAG,CAAC,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAExC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACnD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACtC,GAAG,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;gBAC/D,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,+CAA+C,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,GAAG,CAAC,uBAAuB,CAAC,CAAA;YAC5B,OAAO,CAAC,MAAM,EAAE,CAAA;QAClB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpC,GAAG,CAAC,wBAAwB,CAAC,CAAA;YAC7B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAA;QACrB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,GAAG,CAAC,yBAAyB,CAAC,CAAA;YAC9B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAE1B,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,mCAAmC,CAAC,CAAA;QACxC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAC3B,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
2
+ /** Create an SDKUserMessage from text. */
3
+ export declare const createUserMessage: (
4
+ /** The text content of the message */
5
+ text: string) => SDKUserMessage;
6
+ //# sourceMappingURL=createUserMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUserMessage.d.ts","sourceRoot":"","sources":["../../src/lib/createUserMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAEpE,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB;AAC5B,sCAAsC;AACtC,MAAM,MAAM,KACX,cAQD,CAAA"}
@@ -0,0 +1,13 @@
1
+ /** Create an SDKUserMessage from text. */
2
+ export const createUserMessage = (
3
+ /** The text content of the message */
4
+ text) => ({
5
+ type: "user",
6
+ session_id: "",
7
+ message: {
8
+ role: "user",
9
+ content: [{ type: "text", text }],
10
+ },
11
+ parent_tool_use_id: null,
12
+ });
13
+ //# sourceMappingURL=createUserMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUserMessage.js","sourceRoot":"","sources":["../../src/lib/createUserMessage.ts"],"names":[],"mappings":"AAEA,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG;AAC/B,sCAAsC;AACtC,IAAY,EACI,EAAE,CAAC,CAAC;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,EAAE;IACd,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAClC;IACD,kBAAkB,EAAE,IAAI;CACzB,CAAC,CAAA"}
@@ -1,18 +1,19 @@
1
- /**
2
- * Debug logging utility controlled by RALPH_DEBUG environment variable.
3
- *
4
- * Set RALPH_DEBUG=1 or RALPH_DEBUG=true to enable debug logging.
5
- * Set RALPH_DEBUG=messagequeue to enable only MessageQueue logging.
6
- * Set RALPH_DEBUG=all or RALPH_DEBUG=* to enable all debug logging.
7
- */
8
- type DebugNamespace = "messagequeue" | "iteration" | "sdk" | "stdin-command";
9
- /**
10
- * Log a debug message if debugging is enabled for the given namespace.
11
- */
12
- export declare const debug: (namespace: DebugNamespace, message: string, ...args: unknown[]) => void;
13
- /**
14
- * Create a namespaced debug logger.
15
- */
16
- export declare const createDebugLogger: (namespace: DebugNamespace) => (message: string, ...args: unknown[]) => void;
1
+ type DebugNamespace = "messagequeue" | "iteration" | "sdk" | "stdin-command" | "worktree";
2
+ /** Log a debug message if debugging is enabled for the given namespace. */
3
+ export declare const debug: (
4
+ /** The debug namespace for this message */
5
+ namespace: DebugNamespace,
6
+ /** The message to log */
7
+ message: string,
8
+ /** Additional arguments to log after the message */
9
+ ...args: unknown[]) => void;
10
+ /** Create a namespaced debug logger that captures the namespace for all logs. */
11
+ export declare const createDebugLogger: (
12
+ /** The debug namespace to use for all logged messages */
13
+ namespace: DebugNamespace) => (
14
+ /** The message to log */
15
+ message: string,
16
+ /** Additional arguments to log after the message */
17
+ ...args: unknown[]) => void;
17
18
  export {};
18
19
  //# sourceMappingURL=debug.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,cAAc,GAAG,cAAc,GAAG,WAAW,GAAG,KAAK,GAAG,eAAe,CAAA;AA2B5E;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,WAAW,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,KAAG,IAOtF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,cAAc,MACjD,SAAS,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,SAC5C,CAAA"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,cAAc,GAAG,WAAW,GAAG,KAAK,GAAG,eAAe,GAAG,UAAU,CAAA;AAqCzF,4EAA4E;AAC5E,eAAO,MAAM,KAAK;AAChB,2CAA2C;AAC3C,WAAW,cAAc;AACzB,yBAAyB;AACzB,SAAS,MAAM;AACf,oDAAoD;AACpD,GAAG,MAAM,OAAO,EAAE,KACjB,IAOF,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,iBAAiB;AAC5B,yDAAyD;AACzD,WAAW,cAAc;AAGvB,yBAAyB;AACzB,SAAS,MAAM;AACf,oDAAoD;AACpD,GAAG,MAAM,OAAO,EAAE,SAErB,CAAA"}
package/dist/lib/debug.js CHANGED
@@ -1,11 +1,13 @@
1
1
  /**
2
- * Debug logging utility controlled by RALPH_DEBUG environment variable.
3
- *
4
- * Set RALPH_DEBUG=1 or RALPH_DEBUG=true to enable debug logging.
5
- * Set RALPH_DEBUG=messagequeue to enable only MessageQueue logging.
6
- * Set RALPH_DEBUG=all or RALPH_DEBUG=* to enable all debug logging.
2
+ * Check if debug logging is enabled for the given namespace.
3
+ * Controlled by RALPH_DEBUG environment variable:
4
+ * - RALPH_DEBUG=1 or RALPH_DEBUG=true or RALPH_DEBUG=all - enable all logging
5
+ * - RALPH_DEBUG=messagequeue - enable only that namespace
6
+ * - RALPH_DEBUG=messagequeue,iteration - enable multiple namespaces
7
7
  */
8
- const isDebugEnabled = (namespace) => {
8
+ const isDebugEnabled = (
9
+ /** The debug namespace to check, or undefined to check global debug setting */
10
+ namespace) => {
9
11
  const debugEnv = process.env.RALPH_DEBUG;
10
12
  if (!debugEnv)
11
13
  return false;
@@ -24,10 +26,14 @@ const isDebugEnabled = (namespace) => {
24
26
  }
25
27
  return false;
26
28
  };
27
- /**
28
- * Log a debug message if debugging is enabled for the given namespace.
29
- */
30
- export const debug = (namespace, message, ...args) => {
29
+ /** Log a debug message if debugging is enabled for the given namespace. */
30
+ export const debug = (
31
+ /** The debug namespace for this message */
32
+ namespace,
33
+ /** The message to log */
34
+ message,
35
+ /** Additional arguments to log after the message */
36
+ ...args) => {
31
37
  if (isDebugEnabled(namespace)) {
32
38
  const timestamp = new Date().toISOString();
33
39
  const prefix = `[${timestamp}] [RALPH:${namespace.toUpperCase()}]`;
@@ -35,10 +41,14 @@ export const debug = (namespace, message, ...args) => {
35
41
  console.error(prefix, message, ...args);
36
42
  }
37
43
  };
38
- /**
39
- * Create a namespaced debug logger.
40
- */
41
- export const createDebugLogger = (namespace) => {
42
- return (message, ...args) => debug(namespace, message, ...args);
44
+ /** Create a namespaced debug logger that captures the namespace for all logs. */
45
+ export const createDebugLogger = (
46
+ /** The debug namespace to use for all logged messages */
47
+ namespace) => {
48
+ return (
49
+ /** The message to log */
50
+ message,
51
+ /** Additional arguments to log after the message */
52
+ ...args) => debug(namespace, message, ...args);
43
53
  };
44
54
  //# sourceMappingURL=debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,cAAc,GAAG,CAAC,SAA0B,EAAW,EAAE;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAExC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEpC,uBAAuB;IACvB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAA4B;IAC5B,IAAI,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qCAAqC;IACrC,IAAI,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IACzF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAyB,EAAE,OAAe,EAAE,GAAG,IAAe,EAAQ,EAAE;IAC5F,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,YAAY,SAAS,CAAC,WAAW,EAAE,GAAG,CAAA;QAClE,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAyB,EAAE,EAAE;IAC7D,OAAO,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;AACpF,CAAC,CAAA"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/lib/debug.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,cAAc,GAAG;AACrB,+EAA+E;AAC/E,SAA0B,EACjB,EAAE;IACX,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAExC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEpC,uBAAuB;IACvB,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAA4B;IAC5B,IAAI,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qCAAqC;IACrC,IAAI,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;IACzF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAG;AACnB,2CAA2C;AAC3C,SAAyB;AACzB,yBAAyB;AACzB,OAAe;AACf,oDAAoD;AACpD,GAAG,IAAe,EACZ,EAAE;IACR,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,YAAY,SAAS,CAAC,WAAW,EAAE,GAAG,CAAA;QAClE,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,CAAC;AACH,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG;AAC/B,yDAAyD;AACzD,SAAyB,EACzB,EAAE;IACF,OAAO;IACL,yBAAyB;IACzB,OAAe;IACf,oDAAoD;IACpD,GAAG,IAAe,EAClB,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;AACzC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Find the highest numbered event log file that exists in the .ralph directory.
3
+ * Returns 0 if no event logs exist.
4
+ */
5
+ export declare const findMaxLogNumber: () => number;
6
+ //# sourceMappingURL=findMaxLogNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMaxLogNumber.d.ts","sourceRoot":"","sources":["../../src/lib/findMaxLogNumber.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAqBnC,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { readdirSync, existsSync } from "fs";
2
+ import { join } from "path";
3
+ const EVENT_LOG_PATTERN = /^events-(\d+)\.jsonl$/;
4
+ /**
5
+ * Find the highest numbered event log file that exists in the .ralph directory.
6
+ * Returns 0 if no event logs exist.
7
+ */
8
+ export const findMaxLogNumber = () => {
9
+ const ralphDir = join(process.cwd(), ".ralph");
10
+ if (!existsSync(ralphDir)) {
11
+ return 0;
12
+ }
13
+ const files = readdirSync(ralphDir);
14
+ let maxNumber = 0;
15
+ for (const file of files) {
16
+ const match = file.match(EVENT_LOG_PATTERN);
17
+ if (match) {
18
+ const num = parseInt(match[1], 10);
19
+ if (num > maxNumber) {
20
+ maxNumber = num;
21
+ }
22
+ }
23
+ }
24
+ return maxNumber;
25
+ };
26
+ //# sourceMappingURL=findMaxLogNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMaxLogNumber.js","sourceRoot":"","sources":["../../src/lib/findMaxLogNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,iBAAiB,GAAG,uBAAuB,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IACnC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAClC,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;gBACpB,SAAS,GAAG,GAAG,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=findMaxLogNumber.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMaxLogNumber.test.d.ts","sourceRoot":"","sources":["../../src/lib/findMaxLogNumber.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import { findMaxLogNumber } from "./findMaxLogNumber.js";
3
+ import * as fs from "fs";
4
+ vi.mock("fs");
5
+ describe("findMaxLogNumber", () => {
6
+ const mockExistsSync = vi.mocked(fs.existsSync);
7
+ const mockReaddirSync = vi.mocked(fs.readdirSync);
8
+ beforeEach(() => {
9
+ vi.clearAllMocks();
10
+ });
11
+ afterEach(() => {
12
+ vi.restoreAllMocks();
13
+ });
14
+ it("returns 0 when .ralph directory does not exist", () => {
15
+ mockExistsSync.mockReturnValue(false);
16
+ expect(findMaxLogNumber()).toBe(0);
17
+ });
18
+ it("returns 0 when .ralph directory is empty", () => {
19
+ mockExistsSync.mockReturnValue(true);
20
+ mockReaddirSync.mockReturnValue([]);
21
+ expect(findMaxLogNumber()).toBe(0);
22
+ });
23
+ it("returns the highest event log number", () => {
24
+ mockExistsSync.mockReturnValue(true);
25
+ mockReaddirSync.mockReturnValue(["events-1.jsonl", "events-5.jsonl", "events-3.jsonl"]);
26
+ expect(findMaxLogNumber()).toBe(5);
27
+ });
28
+ it("ignores non-matching files", () => {
29
+ mockExistsSync.mockReturnValue(true);
30
+ mockReaddirSync.mockReturnValue([
31
+ "events-1.jsonl",
32
+ "other.txt",
33
+ "events.jsonl",
34
+ "events-2.jsonl",
35
+ ]);
36
+ expect(findMaxLogNumber()).toBe(2);
37
+ });
38
+ });
39
+ //# sourceMappingURL=findMaxLogNumber.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findMaxLogNumber.test.js","sourceRoot":"","sources":["../../src/lib/findMaxLogNumber.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEb,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;IAEjD,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,gDAAgD,EAAE,GAAG,EAAE;QACxD,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACpC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACpC,eAAe,CAAC,eAAe,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAQ,CAAC,CAAA;QAC9F,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACpC,eAAe,CAAC,eAAe,CAAC;YAC9B,gBAAgB;YAChB,WAAW;YACX,cAAc;YACd,gBAAgB;SACV,CAAC,CAAA;QACT,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,10 +1,6 @@
1
1
  import type { ContentBlock } from "../components/eventToBlocks.js";
2
- /**
3
- * Convert a content block to formatted string lines
4
- */
5
- export declare const formatContentBlock: (block: ContentBlock) => string[];
6
- /**
7
- * Format a round header
8
- */
9
- export declare const formatIterationHeader: (iteration: number) => string;
2
+ /** Convert a content block to formatted string lines */
3
+ export declare const formatContentBlock: (
4
+ /** Content block to format */
5
+ block: ContentBlock) => string[];
10
6
  //# sourceMappingURL=formatContentBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatContentBlock.d.ts","sourceRoot":"","sources":["../../src/lib/formatContentBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAqDlE;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,YAAY,KAAG,MAAM,EAY9D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,MAEzD,CAAA"}
1
+ {"version":3,"file":"formatContentBlock.d.ts","sourceRoot":"","sources":["../../src/lib/formatContentBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAKlE,yDAAyD;AACzD,eAAO,MAAM,kBAAkB;AAC7B,8BAA8B;AAC9B,OAAO,YAAY,KAClB,MAAM,EAYR,CAAA"}
@@ -1,55 +1,10 @@
1
- import chalk from "chalk";
2
- /**
3
- * Format a text string with markdown-style formatting (bold and inline code)
4
- */
5
- const formatText = (content) => {
6
- let result = "";
7
- let i = 0;
8
- let inBold = false;
9
- let inCode = false;
10
- while (i < content.length) {
11
- if (content[i] === "*" && content[i + 1] === "*") {
12
- inBold = !inBold;
13
- i += 2;
14
- }
15
- else if (content[i] === "`") {
16
- inCode = !inCode;
17
- i++;
18
- }
19
- else {
20
- let char = content[i];
21
- if (inCode) {
22
- char = chalk.yellow(char);
23
- }
24
- else if (inBold) {
25
- char = chalk.bold(char);
26
- }
27
- result += char;
28
- i++;
29
- }
30
- }
31
- return result;
32
- };
33
- /**
34
- * Format a tool use block as a string
35
- */
36
- const formatToolUse = (name, arg) => {
37
- const formattedName = chalk.blue(name);
38
- if (arg) {
39
- return ` ${formattedName} ${chalk.dim(arg)}`;
40
- }
41
- return ` ${formattedName}`;
42
- };
43
- /**
44
- * Format a user message
45
- */
46
- const formatUserMessage = (content) => {
47
- return chalk.green(content);
48
- };
49
- /**
50
- * Convert a content block to formatted string lines
51
- */
52
- export const formatContentBlock = (block) => {
1
+ import { formatText } from "./formatText.js";
2
+ import { formatToolUse } from "./formatToolUse.js";
3
+ import { formatUserMessage } from "./formatUserMessage.js";
4
+ /** Convert a content block to formatted string lines */
5
+ export const formatContentBlock = (
6
+ /** Content block to format */
7
+ block) => {
53
8
  if (block.type === "text") {
54
9
  const formatted = formatText(block.content);
55
10
  // Split into lines, preserving empty lines for paragraph breaks
@@ -60,10 +15,4 @@ export const formatContentBlock = (block) => {
60
15
  }
61
16
  return [formatToolUse(block.name, block.arg)];
62
17
  };
63
- /**
64
- * Format a round header
65
- */
66
- export const formatIterationHeader = (iteration) => {
67
- return chalk.cyan.bold(`─── Round ${iteration} ───`);
68
- };
69
18
  //# sourceMappingURL=formatContentBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatContentBlock.js","sourceRoot":"","sources":["../../src/lib/formatContentBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,OAAe,EAAU,EAAE;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACjD,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,CAAC,IAAI,CAAC,CAAA;QACR,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;YAED,MAAM,IAAI,IAAI,CAAA;YACd,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,GAAY,EAAU,EAAE;IAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,KAAK,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/C,CAAC;IACD,OAAO,KAAK,aAAa,EAAE,CAAA;AAC7B,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE;IACpD,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAY,EAAE;IAClE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,gEAAgE;QAChE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAU,EAAE;IACjE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,SAAS,MAAM,CAAC,CAAA;AACtD,CAAC,CAAA"}
1
+ {"version":3,"file":"formatContentBlock.js","sourceRoot":"","sources":["../../src/lib/formatContentBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG;AAChC,8BAA8B;AAC9B,KAAmB,EACT,EAAE;IACZ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC3C,gEAAgE;QAChE,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Format a round header */
2
+ export declare const formatIterationHeader: (
3
+ /** Iteration number to display */
4
+ iteration: number) => string;
5
+ //# sourceMappingURL=formatIterationHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatIterationHeader.d.ts","sourceRoot":"","sources":["../../src/lib/formatIterationHeader.ts"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,eAAO,MAAM,qBAAqB;AAChC,kCAAkC;AAClC,WAAW,MAAM,KAChB,MAEF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import chalk from "chalk";
2
+ /** Format a round header */
3
+ export const formatIterationHeader = (
4
+ /** Iteration number to display */
5
+ iteration) => {
6
+ return chalk.cyan.bold(`─── Round ${iteration} ───`);
7
+ };
8
+ //# sourceMappingURL=formatIterationHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatIterationHeader.js","sourceRoot":"","sources":["../../src/lib/formatIterationHeader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,qBAAqB,GAAG;AACnC,kCAAkC;AAClC,SAAiB,EACT,EAAE;IACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,SAAS,MAAM,CAAC,CAAA;AACtD,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Format a text string with markdown-style formatting (bold and inline code) */
2
+ export declare const formatText: (
3
+ /** The content to format */
4
+ content: string) => string;
5
+ //# sourceMappingURL=formatText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatText.d.ts","sourceRoot":"","sources":["../../src/lib/formatText.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,eAAO,MAAM,UAAU;AACrB,4BAA4B;AAC5B,SAAS,MAAM,KACd,MA4BF,CAAA"}
@@ -0,0 +1,33 @@
1
+ import chalk from "chalk";
2
+ /** Format a text string with markdown-style formatting (bold and inline code) */
3
+ export const formatText = (
4
+ /** The content to format */
5
+ content) => {
6
+ let result = "";
7
+ let i = 0;
8
+ let inBold = false;
9
+ let inCode = false;
10
+ while (i < content.length) {
11
+ if (content[i] === "*" && content[i + 1] === "*") {
12
+ inBold = !inBold;
13
+ i += 2;
14
+ }
15
+ else if (content[i] === "`") {
16
+ inCode = !inCode;
17
+ i++;
18
+ }
19
+ else {
20
+ let char = content[i];
21
+ if (inCode) {
22
+ char = chalk.yellow(char);
23
+ }
24
+ else if (inBold) {
25
+ char = chalk.bold(char);
26
+ }
27
+ result += char;
28
+ i++;
29
+ }
30
+ }
31
+ return result;
32
+ };
33
+ //# sourceMappingURL=formatText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatText.js","sourceRoot":"","sources":["../../src/lib/formatText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,kFAAkF;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG;AACxB,4BAA4B;AAC5B,OAAe,EACP,EAAE;IACV,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACjD,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,CAAC,IAAI,CAAC,CAAA;QACR,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC;iBAAM,IAAI,MAAM,EAAE,CAAC;gBAClB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzB,CAAC;YAED,MAAM,IAAI,IAAI,CAAA;YACd,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /** Format a tool use block as a string */
2
+ export declare const formatToolUse: (
3
+ /** The name of the tool */
4
+ name: string,
5
+ /** Optional argument for the tool */
6
+ arg?: string) => string;
7
+ //# sourceMappingURL=formatToolUse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatToolUse.d.ts","sourceRoot":"","sources":["../../src/lib/formatToolUse.ts"],"names":[],"mappings":"AAEA,2CAA2C;AAC3C,eAAO,MAAM,aAAa;AACxB,2BAA2B;AAC3B,MAAM,MAAM;AACZ,qCAAqC;AACrC,MAAM,MAAM,KACX,MAMF,CAAA"}
@@ -0,0 +1,14 @@
1
+ import chalk from "chalk";
2
+ /** Format a tool use block as a string */
3
+ export const formatToolUse = (
4
+ /** The name of the tool */
5
+ name,
6
+ /** Optional argument for the tool */
7
+ arg) => {
8
+ const formattedName = chalk.blue(name);
9
+ if (arg) {
10
+ return ` ${formattedName} ${chalk.dim(arg)}`;
11
+ }
12
+ return ` ${formattedName}`;
13
+ };
14
+ //# sourceMappingURL=formatToolUse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatToolUse.js","sourceRoot":"","sources":["../../src/lib/formatToolUse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG;AAC3B,2BAA2B;AAC3B,IAAY;AACZ,qCAAqC;AACrC,GAAY,EACJ,EAAE;IACV,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,KAAK,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/C,CAAC;IACD,OAAO,KAAK,aAAa,EAAE,CAAA;AAC7B,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Format a user message */
2
+ export declare const formatUserMessage: (
3
+ /** The message content to format */
4
+ content: string) => string;
5
+ //# sourceMappingURL=formatUserMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUserMessage.d.ts","sourceRoot":"","sources":["../../src/lib/formatUserMessage.ts"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,eAAO,MAAM,iBAAiB;AAC5B,oCAAoC;AACpC,SAAS,MAAM,KACd,MAEF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import chalk from "chalk";
2
+ /** Format a user message */
3
+ export const formatUserMessage = (
4
+ /** The message content to format */
5
+ content) => {
6
+ return chalk.green(content);
7
+ };
8
+ //# sourceMappingURL=formatUserMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUserMessage.js","sourceRoot":"","sources":["../../src/lib/formatUserMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG;AAC/B,oCAAoC;AACpC,OAAe,EACP,EAAE;IACV,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC,CAAA"}