@travisennis/acai 0.0.5 → 0.0.7

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 (421) hide show
  1. package/README.md +190 -19
  2. package/bin/acai-wrapper.js +26 -0
  3. package/dist/agent/index.d.ts +132 -0
  4. package/dist/agent/index.d.ts.map +1 -0
  5. package/dist/agent/index.js +434 -0
  6. package/dist/api/exa/index.js +1 -1
  7. package/dist/cli.d.ts +4 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +67 -40
  10. package/dist/commands/add-directory-command.d.ts +3 -0
  11. package/dist/commands/add-directory-command.d.ts.map +1 -0
  12. package/dist/commands/add-directory-command.js +54 -0
  13. package/dist/commands/application-log-command.d.ts +1 -1
  14. package/dist/commands/application-log-command.d.ts.map +1 -1
  15. package/dist/commands/application-log-command.js +18 -20
  16. package/dist/commands/clear-command.d.ts +1 -1
  17. package/dist/commands/clear-command.d.ts.map +1 -1
  18. package/dist/commands/clear-command.js +7 -3
  19. package/dist/commands/compact-command.d.ts.map +1 -1
  20. package/dist/commands/compact-command.js +9 -5
  21. package/dist/commands/context-command.d.ts +3 -0
  22. package/dist/commands/context-command.d.ts.map +1 -0
  23. package/dist/commands/context-command.js +124 -0
  24. package/dist/commands/copy-command.d.ts.map +1 -1
  25. package/dist/commands/copy-command.js +14 -5
  26. package/dist/commands/edit-command.d.ts +1 -1
  27. package/dist/commands/edit-command.d.ts.map +1 -1
  28. package/dist/commands/edit-command.js +21 -34
  29. package/dist/commands/edit-prompt-command.d.ts +1 -1
  30. package/dist/commands/edit-prompt-command.d.ts.map +1 -1
  31. package/dist/commands/edit-prompt-command.js +18 -15
  32. package/dist/commands/exit-command.d.ts +1 -4
  33. package/dist/commands/exit-command.d.ts.map +1 -1
  34. package/dist/commands/exit-command.js +9 -5
  35. package/dist/commands/files-command.d.ts +1 -1
  36. package/dist/commands/files-command.d.ts.map +1 -1
  37. package/dist/commands/files-command.js +20 -16
  38. package/dist/commands/generate-rules-command.d.ts +1 -1
  39. package/dist/commands/generate-rules-command.d.ts.map +1 -1
  40. package/dist/commands/generate-rules-command.js +307 -39
  41. package/dist/commands/handoff-command.d.ts +3 -0
  42. package/dist/commands/handoff-command.d.ts.map +1 -0
  43. package/dist/commands/handoff-command.js +191 -0
  44. package/dist/commands/health-command.d.ts +1 -1
  45. package/dist/commands/health-command.d.ts.map +1 -1
  46. package/dist/commands/health-command.js +49 -27
  47. package/dist/commands/help-command.d.ts +1 -1
  48. package/dist/commands/help-command.d.ts.map +1 -1
  49. package/dist/commands/help-command.js +25 -5
  50. package/dist/commands/history-command.d.ts +3 -0
  51. package/dist/commands/history-command.d.ts.map +1 -0
  52. package/dist/commands/history-command.js +458 -0
  53. package/dist/commands/init-command.d.ts +1 -1
  54. package/dist/commands/init-command.d.ts.map +1 -1
  55. package/dist/commands/init-command.js +40 -22
  56. package/dist/commands/last-log-command.d.ts +1 -1
  57. package/dist/commands/last-log-command.d.ts.map +1 -1
  58. package/dist/commands/last-log-command.js +15 -15
  59. package/dist/commands/list-directories-command.d.ts +3 -0
  60. package/dist/commands/list-directories-command.d.ts.map +1 -0
  61. package/dist/commands/list-directories-command.js +35 -0
  62. package/dist/commands/list-tools-command.d.ts.map +1 -1
  63. package/dist/commands/list-tools-command.js +61 -21
  64. package/dist/commands/manager.d.ts +9 -4
  65. package/dist/commands/manager.d.ts.map +1 -1
  66. package/dist/commands/manager.js +64 -39
  67. package/dist/commands/model-command.d.ts.map +1 -1
  68. package/dist/commands/model-command.js +201 -66
  69. package/dist/commands/paste-command.d.ts +1 -1
  70. package/dist/commands/paste-command.d.ts.map +1 -1
  71. package/dist/commands/paste-command.js +23 -9
  72. package/dist/commands/pickup-command.d.ts +3 -0
  73. package/dist/commands/pickup-command.d.ts.map +1 -0
  74. package/dist/commands/pickup-command.js +109 -0
  75. package/dist/commands/prompt-command.d.ts +19 -1
  76. package/dist/commands/prompt-command.d.ts.map +1 -1
  77. package/dist/commands/prompt-command.js +191 -98
  78. package/dist/commands/remove-directory-command.d.ts +3 -0
  79. package/dist/commands/remove-directory-command.d.ts.map +1 -0
  80. package/dist/commands/remove-directory-command.js +55 -0
  81. package/dist/commands/reset-command.d.ts +1 -1
  82. package/dist/commands/reset-command.d.ts.map +1 -1
  83. package/dist/commands/reset-command.js +8 -5
  84. package/dist/commands/rules-command.d.ts +1 -1
  85. package/dist/commands/rules-command.d.ts.map +1 -1
  86. package/dist/commands/rules-command.js +25 -22
  87. package/dist/commands/save-command.d.ts +1 -1
  88. package/dist/commands/save-command.d.ts.map +1 -1
  89. package/dist/commands/save-command.js +8 -3
  90. package/dist/commands/shell-command.d.ts.map +1 -1
  91. package/dist/commands/shell-command.js +45 -24
  92. package/dist/commands/types.d.ts +9 -7
  93. package/dist/commands/types.d.ts.map +1 -1
  94. package/dist/commands/usage-command.d.ts +1 -1
  95. package/dist/commands/usage-command.d.ts.map +1 -1
  96. package/dist/commands/usage-command.js +18 -7
  97. package/dist/config.d.ts +21 -11
  98. package/dist/config.d.ts.map +1 -1
  99. package/dist/config.js +90 -63
  100. package/dist/execution/index.d.ts +17 -2
  101. package/dist/execution/index.d.ts.map +1 -1
  102. package/dist/execution/index.js +62 -20
  103. package/dist/formatting.d.ts +127 -0
  104. package/dist/formatting.d.ts.map +1 -1
  105. package/dist/formatting.js +201 -0
  106. package/dist/index.d.ts +7 -2
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +263 -102
  109. package/dist/logger.d.ts.map +1 -1
  110. package/dist/logger.js +47 -18
  111. package/dist/mentions.d.ts +2 -1
  112. package/dist/mentions.d.ts.map +1 -1
  113. package/dist/mentions.js +16 -1
  114. package/dist/messages.d.ts +11 -0
  115. package/dist/messages.d.ts.map +1 -1
  116. package/dist/messages.js +122 -21
  117. package/dist/middleware/cache.d.ts +3 -0
  118. package/dist/middleware/cache.d.ts.map +1 -0
  119. package/dist/middleware/cache.js +53 -0
  120. package/dist/middleware/index.d.ts +1 -0
  121. package/dist/middleware/index.d.ts.map +1 -1
  122. package/dist/middleware/index.js +1 -0
  123. package/dist/models/ai-config.d.ts +4 -2
  124. package/dist/models/ai-config.d.ts.map +1 -1
  125. package/dist/models/ai-config.js +12 -2
  126. package/dist/models/anthropic-provider.d.ts.map +1 -1
  127. package/dist/models/anthropic-provider.js +3 -67
  128. package/dist/models/deepseek-provider.d.ts.map +1 -1
  129. package/dist/models/deepseek-provider.js +0 -2
  130. package/dist/models/google-provider.d.ts.map +1 -1
  131. package/dist/models/google-provider.js +0 -3
  132. package/dist/models/groq-provider.d.ts.map +1 -1
  133. package/dist/models/groq-provider.js +0 -1
  134. package/dist/models/manager.d.ts +2 -1
  135. package/dist/models/manager.d.ts.map +1 -1
  136. package/dist/models/manager.js +26 -2
  137. package/dist/models/openai-provider.d.ts.map +1 -1
  138. package/dist/models/openai-provider.js +0 -4
  139. package/dist/models/openrouter-provider.d.ts +16 -22
  140. package/dist/models/openrouter-provider.d.ts.map +1 -1
  141. package/dist/models/openrouter-provider.js +175 -236
  142. package/dist/models/providers.d.ts +4 -14
  143. package/dist/models/providers.d.ts.map +1 -1
  144. package/dist/models/providers.js +1 -57
  145. package/dist/models/xai-provider.d.ts.map +1 -1
  146. package/dist/models/xai-provider.js +0 -2
  147. package/dist/prompts.d.ts +10 -4
  148. package/dist/prompts.d.ts.map +1 -1
  149. package/dist/prompts.js +447 -70
  150. package/dist/repl/project-status-line.d.ts +3 -0
  151. package/dist/repl/project-status-line.d.ts.map +1 -0
  152. package/dist/repl/project-status-line.js +61 -0
  153. package/dist/repl/tool-call-repair.d.ts.map +1 -1
  154. package/dist/repl/tool-call-repair.js +8 -4
  155. package/dist/repl-new.d.ts +51 -0
  156. package/dist/repl-new.d.ts.map +1 -0
  157. package/dist/repl-new.js +354 -0
  158. package/dist/skills.d.ts +20 -0
  159. package/dist/skills.d.ts.map +1 -0
  160. package/dist/skills.js +192 -0
  161. package/dist/terminal/control.d.ts +55 -0
  162. package/dist/terminal/control.d.ts.map +1 -0
  163. package/dist/terminal/control.js +109 -0
  164. package/dist/terminal/default-theme.d.ts +1 -1
  165. package/dist/terminal/default-theme.d.ts.map +1 -1
  166. package/dist/terminal/default-theme.js +24 -28
  167. package/dist/terminal/formatting.d.ts +23 -25
  168. package/dist/terminal/formatting.d.ts.map +1 -1
  169. package/dist/terminal/formatting.js +35 -52
  170. package/dist/terminal/highlight/index.d.ts.map +1 -1
  171. package/dist/terminal/highlight/index.js +3 -6
  172. package/dist/terminal/highlight/theme.d.ts.map +1 -1
  173. package/dist/terminal/highlight/theme.js +2 -6
  174. package/dist/terminal/index.d.ts +2 -94
  175. package/dist/terminal/index.d.ts.map +1 -1
  176. package/dist/terminal/index.js +2 -370
  177. package/dist/terminal/markdown.js +10 -5
  178. package/dist/terminal/select-prompt.d.ts +2 -2
  179. package/dist/terminal/select-prompt.d.ts.map +1 -1
  180. package/dist/terminal/select-prompt.js +47 -39
  181. package/dist/terminal/strip-ansi.js +4 -4
  182. package/dist/terminal/table/cell.d.ts +114 -0
  183. package/dist/terminal/table/cell.d.ts.map +1 -0
  184. package/dist/terminal/table/cell.js +407 -0
  185. package/dist/terminal/table/debug.d.ts +15 -0
  186. package/dist/terminal/table/debug.d.ts.map +1 -0
  187. package/dist/terminal/table/debug.js +32 -0
  188. package/dist/terminal/table/index.d.ts +3 -0
  189. package/dist/terminal/table/index.d.ts.map +1 -0
  190. package/dist/terminal/table/index.js +2 -0
  191. package/dist/terminal/table/layout-manager.d.ts +27 -0
  192. package/dist/terminal/table/layout-manager.d.ts.map +1 -0
  193. package/dist/terminal/table/layout-manager.js +257 -0
  194. package/dist/terminal/table/table.d.ts +9 -0
  195. package/dist/terminal/table/table.d.ts.map +1 -0
  196. package/dist/terminal/table/table.js +97 -0
  197. package/dist/terminal/table/utils.d.ts +63 -0
  198. package/dist/terminal/table/utils.d.ts.map +1 -0
  199. package/dist/terminal/table/utils.js +326 -0
  200. package/dist/tokens/threshold.d.ts +20 -0
  201. package/dist/tokens/threshold.d.ts.map +1 -0
  202. package/dist/tokens/threshold.js +67 -0
  203. package/dist/tools/advanced-edit-file.d.ts +69 -0
  204. package/dist/tools/advanced-edit-file.d.ts.map +1 -0
  205. package/dist/tools/advanced-edit-file.js +285 -0
  206. package/dist/tools/agent.d.ts +16 -5
  207. package/dist/tools/agent.d.ts.map +1 -1
  208. package/dist/tools/agent.js +86 -59
  209. package/dist/tools/bash.d.ts +23 -12
  210. package/dist/tools/bash.d.ts.map +1 -1
  211. package/dist/tools/bash.js +243 -128
  212. package/dist/tools/batch.d.ts +34 -0
  213. package/dist/tools/batch.d.ts.map +1 -0
  214. package/dist/tools/batch.js +174 -0
  215. package/dist/tools/code-interpreter.d.ts +21 -9
  216. package/dist/tools/code-interpreter.d.ts.map +1 -1
  217. package/dist/tools/code-interpreter.js +151 -134
  218. package/dist/tools/delete-file.d.ts +17 -10
  219. package/dist/tools/delete-file.d.ts.map +1 -1
  220. package/dist/tools/delete-file.js +60 -97
  221. package/dist/tools/directory-tree.d.ts +17 -12
  222. package/dist/tools/directory-tree.d.ts.map +1 -1
  223. package/dist/tools/directory-tree.js +57 -48
  224. package/dist/tools/dynamic-tool-loader.d.ts +16 -10
  225. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  226. package/dist/tools/dynamic-tool-loader.js +122 -130
  227. package/dist/tools/dynamic-tool-parser.d.ts +1 -0
  228. package/dist/tools/dynamic-tool-parser.d.ts.map +1 -1
  229. package/dist/tools/dynamic-tool-parser.js +1 -0
  230. package/dist/tools/edit-file.d.ts +35 -15
  231. package/dist/tools/edit-file.d.ts.map +1 -1
  232. package/dist/tools/edit-file.js +127 -114
  233. package/dist/tools/glob.d.ts +36 -0
  234. package/dist/tools/glob.d.ts.map +1 -0
  235. package/dist/tools/glob.js +154 -0
  236. package/dist/tools/grep.d.ts +73 -12
  237. package/dist/tools/grep.d.ts.map +1 -1
  238. package/dist/tools/grep.js +425 -165
  239. package/dist/tools/index.d.ts +220 -126
  240. package/dist/tools/index.d.ts.map +1 -1
  241. package/dist/tools/index.js +284 -135
  242. package/dist/tools/llm-edit-fixer.d.ts +24 -0
  243. package/dist/tools/llm-edit-fixer.d.ts.map +1 -0
  244. package/dist/tools/llm-edit-fixer.js +136 -0
  245. package/dist/tools/move-file.d.ts +19 -7
  246. package/dist/tools/move-file.d.ts.map +1 -1
  247. package/dist/tools/move-file.js +48 -34
  248. package/dist/tools/read-file.d.ts +47 -9
  249. package/dist/tools/read-file.d.ts.map +1 -1
  250. package/dist/tools/read-file.js +84 -70
  251. package/dist/tools/read-multiple-files.d.ts +17 -6
  252. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  253. package/dist/tools/read-multiple-files.js +132 -72
  254. package/dist/tools/save-file.d.ts +45 -12
  255. package/dist/tools/save-file.d.ts.map +1 -1
  256. package/dist/tools/save-file.js +76 -101
  257. package/dist/tools/think.d.ts +15 -7
  258. package/dist/tools/think.d.ts.map +1 -1
  259. package/dist/tools/think.js +34 -20
  260. package/dist/tools/types.d.ts +8 -10
  261. package/dist/tools/types.d.ts.map +1 -1
  262. package/dist/tools/types.js +9 -0
  263. package/dist/tools/utils.d.ts +14 -0
  264. package/dist/tools/utils.d.ts.map +1 -0
  265. package/dist/tools/utils.js +16 -0
  266. package/dist/tools/web-fetch.d.ts +11 -4
  267. package/dist/tools/web-fetch.d.ts.map +1 -1
  268. package/dist/tools/web-fetch.js +39 -38
  269. package/dist/tools/web-search.d.ts +15 -6
  270. package/dist/tools/web-search.d.ts.map +1 -1
  271. package/dist/tools/web-search.js +64 -31
  272. package/dist/tui/autocomplete.d.ts +44 -0
  273. package/dist/tui/autocomplete.d.ts.map +1 -0
  274. package/dist/tui/autocomplete.js +466 -0
  275. package/dist/tui/components/assistant-message.d.ts +18 -0
  276. package/dist/tui/components/assistant-message.d.ts.map +1 -0
  277. package/dist/tui/components/assistant-message.js +29 -0
  278. package/dist/tui/components/box.d.ts +20 -0
  279. package/dist/tui/components/box.d.ts.map +1 -0
  280. package/dist/tui/components/box.js +81 -0
  281. package/dist/tui/components/editor.d.ts +106 -0
  282. package/dist/tui/components/editor.d.ts.map +1 -0
  283. package/dist/tui/components/editor.js +1220 -0
  284. package/dist/tui/components/footer.d.ts +12 -0
  285. package/dist/tui/components/footer.d.ts.map +1 -0
  286. package/dist/tui/components/footer.js +209 -0
  287. package/dist/tui/components/header.d.ts +21 -0
  288. package/dist/tui/components/header.d.ts.map +1 -0
  289. package/dist/tui/components/header.js +63 -0
  290. package/dist/tui/components/input.d.ts +14 -0
  291. package/dist/tui/components/input.d.ts.map +1 -0
  292. package/dist/tui/components/input.js +122 -0
  293. package/dist/tui/components/loader.d.ts +23 -0
  294. package/dist/tui/components/loader.d.ts.map +1 -0
  295. package/dist/tui/components/loader.js +45 -0
  296. package/dist/tui/components/markdown.d.ts +106 -0
  297. package/dist/tui/components/markdown.d.ts.map +1 -0
  298. package/dist/tui/components/markdown.js +586 -0
  299. package/dist/tui/components/modal.d.ts +29 -0
  300. package/dist/tui/components/modal.d.ts.map +1 -0
  301. package/dist/tui/components/modal.js +263 -0
  302. package/dist/tui/components/progress-bar.d.ts +19 -0
  303. package/dist/tui/components/progress-bar.d.ts.map +1 -0
  304. package/dist/tui/components/progress-bar.js +78 -0
  305. package/dist/tui/components/prompt-status.d.ts +17 -0
  306. package/dist/tui/components/prompt-status.d.ts.map +1 -0
  307. package/dist/tui/components/prompt-status.js +26 -0
  308. package/dist/tui/components/select-list.d.ts +48 -0
  309. package/dist/tui/components/select-list.d.ts.map +1 -0
  310. package/dist/tui/components/select-list.js +207 -0
  311. package/dist/tui/components/spacer.d.ts +16 -0
  312. package/dist/tui/components/spacer.d.ts.map +1 -0
  313. package/dist/tui/components/spacer.js +27 -0
  314. package/dist/tui/components/table.d.ts +27 -0
  315. package/dist/tui/components/table.d.ts.map +1 -0
  316. package/dist/tui/components/table.js +125 -0
  317. package/dist/tui/components/text.d.ts +26 -0
  318. package/dist/tui/components/text.d.ts.map +1 -0
  319. package/dist/tui/components/text.js +143 -0
  320. package/dist/tui/components/thinking-block.d.ts +14 -0
  321. package/dist/tui/components/thinking-block.d.ts.map +1 -0
  322. package/dist/tui/components/thinking-block.js +33 -0
  323. package/dist/tui/components/tool-execution.d.ts +21 -0
  324. package/dist/tui/components/tool-execution.d.ts.map +1 -0
  325. package/dist/tui/components/tool-execution.js +161 -0
  326. package/dist/tui/components/user-message.d.ts +9 -0
  327. package/dist/tui/components/user-message.d.ts.map +1 -0
  328. package/dist/tui/components/user-message.js +23 -0
  329. package/dist/tui/components/welcome.d.ts +6 -0
  330. package/dist/tui/components/welcome.d.ts.map +1 -0
  331. package/dist/tui/components/welcome.js +30 -0
  332. package/dist/tui/index.d.ts +18 -0
  333. package/dist/tui/index.d.ts.map +1 -0
  334. package/dist/tui/index.js +22 -0
  335. package/dist/tui/terminal.d.ts +38 -0
  336. package/dist/tui/terminal.d.ts.map +1 -0
  337. package/dist/tui/terminal.js +94 -0
  338. package/dist/tui/tui.d.ts +69 -0
  339. package/dist/tui/tui.d.ts.map +1 -0
  340. package/dist/tui/tui.js +204 -0
  341. package/dist/tui/utils.d.ts +24 -0
  342. package/dist/tui/utils.d.ts.map +1 -0
  343. package/dist/tui/utils.js +111 -0
  344. package/dist/utils/bash.d.ts +7 -0
  345. package/dist/utils/bash.d.ts.map +1 -0
  346. package/dist/{tools/bash-utils.js → utils/bash.js} +31 -12
  347. package/dist/utils/{filesystem.d.ts → filesystem/operations.d.ts} +1 -1
  348. package/dist/utils/filesystem/operations.d.ts.map +1 -0
  349. package/dist/utils/filesystem/security.d.ts +9 -0
  350. package/dist/utils/filesystem/security.d.ts.map +1 -0
  351. package/dist/{tools/filesystem-utils.js → utils/filesystem/security.js} +93 -21
  352. package/dist/utils/funcs.d.ts +6 -0
  353. package/dist/utils/funcs.d.ts.map +1 -0
  354. package/dist/utils/funcs.js +6 -0
  355. package/dist/utils/generators.d.ts +3 -0
  356. package/dist/utils/generators.d.ts.map +1 -0
  357. package/dist/utils/generators.js +25 -0
  358. package/dist/{tools/git-utils.d.ts → utils/git.d.ts} +1 -1
  359. package/dist/utils/git.d.ts.map +1 -0
  360. package/dist/{tools/git-utils.js → utils/git.js} +0 -6
  361. package/dist/utils/glob.js +1 -1
  362. package/dist/utils/iterables.d.ts +2 -0
  363. package/dist/utils/iterables.d.ts.map +1 -0
  364. package/dist/utils/iterables.js +6 -0
  365. package/dist/utils/{zod-utils.d.ts → zod.d.ts} +1 -1
  366. package/dist/utils/zod.d.ts.map +1 -0
  367. package/package.json +21 -21
  368. package/dist/conversation-analyzer.d.ts +0 -11
  369. package/dist/conversation-analyzer.d.ts.map +0 -1
  370. package/dist/conversation-analyzer.js +0 -88
  371. package/dist/repl/display-tool-messages.d.ts +0 -4
  372. package/dist/repl/display-tool-messages.d.ts.map +0 -1
  373. package/dist/repl/display-tool-messages.js +0 -55
  374. package/dist/repl/display-tool-use.d.ts +0 -14
  375. package/dist/repl/display-tool-use.d.ts.map +0 -1
  376. package/dist/repl/display-tool-use.js +0 -63
  377. package/dist/repl/get-prompt-header.d.ts +0 -8
  378. package/dist/repl/get-prompt-header.d.ts.map +0 -1
  379. package/dist/repl/get-prompt-header.js +0 -38
  380. package/dist/repl-prompt.d.ts +0 -15
  381. package/dist/repl-prompt.d.ts.map +0 -1
  382. package/dist/repl-prompt.js +0 -147
  383. package/dist/repl.d.ts +0 -31
  384. package/dist/repl.d.ts.map +0 -1
  385. package/dist/repl.js +0 -310
  386. package/dist/terminal/checkbox-prompt.d.ts +0 -36
  387. package/dist/terminal/checkbox-prompt.d.ts.map +0 -1
  388. package/dist/terminal/checkbox-prompt.js +0 -362
  389. package/dist/terminal/editor-prompt.d.ts +0 -10
  390. package/dist/terminal/editor-prompt.d.ts.map +0 -1
  391. package/dist/terminal/editor-prompt.js +0 -61
  392. package/dist/terminal/errors.d.ts +0 -19
  393. package/dist/terminal/errors.d.ts.map +0 -1
  394. package/dist/terminal/errors.js +0 -37
  395. package/dist/terminal/input-prompt.d.ts +0 -16
  396. package/dist/terminal/input-prompt.d.ts.map +0 -1
  397. package/dist/terminal/input-prompt.js +0 -181
  398. package/dist/terminal/search-prompt.d.ts +0 -20
  399. package/dist/terminal/search-prompt.d.ts.map +0 -1
  400. package/dist/terminal/search-prompt.js +0 -279
  401. package/dist/terminal/types.d.ts +0 -35
  402. package/dist/terminal/types.d.ts.map +0 -1
  403. package/dist/terminal/types.js +0 -1
  404. package/dist/tokens/manage-output.d.ts +0 -34
  405. package/dist/tokens/manage-output.d.ts.map +0 -1
  406. package/dist/tokens/manage-output.js +0 -44
  407. package/dist/tool-executor.d.ts +0 -28
  408. package/dist/tool-executor.d.ts.map +0 -1
  409. package/dist/tool-executor.js +0 -74
  410. package/dist/tools/bash-utils.d.ts +0 -7
  411. package/dist/tools/bash-utils.d.ts.map +0 -1
  412. package/dist/tools/file-editing-utils.d.ts +0 -2
  413. package/dist/tools/file-editing-utils.d.ts.map +0 -1
  414. package/dist/tools/file-editing-utils.js +0 -135
  415. package/dist/tools/filesystem-utils.d.ts +0 -7
  416. package/dist/tools/filesystem-utils.d.ts.map +0 -1
  417. package/dist/tools/git-utils.d.ts.map +0 -1
  418. package/dist/utils/filesystem.d.ts.map +0 -1
  419. package/dist/utils/zod-utils.d.ts.map +0 -1
  420. /package/dist/utils/{filesystem.js → filesystem/operations.js} +0 -0
  421. /package/dist/utils/{zod-utils.js → zod.js} +0 -0
@@ -0,0 +1,16 @@
1
+ import type { Component } from "../tui.ts";
2
+ /**
3
+ * Spacer component that renders empty lines
4
+ */
5
+ export declare class Spacer implements Component {
6
+ private lines;
7
+ private customBgRgb?;
8
+ constructor(lines?: number, customBgRgb?: {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ });
13
+ setLines(lines: number): void;
14
+ render(width: number): string[];
15
+ }
16
+ //# sourceMappingURL=spacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacer.d.ts","sourceRoot":"","sources":["../../../source/tui/components/spacer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,qBAAa,MAAO,YAAW,SAAS;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAC,CAAsC;gBAE9C,KAAK,SAAI,EAAE,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAKxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAgBhC"}
@@ -0,0 +1,27 @@
1
+ import style from "../../terminal/style.js";
2
+ /**
3
+ * Spacer component that renders empty lines
4
+ */
5
+ export class Spacer {
6
+ lines;
7
+ customBgRgb;
8
+ constructor(lines = 1, customBgRgb) {
9
+ this.lines = lines;
10
+ this.customBgRgb = customBgRgb;
11
+ }
12
+ setLines(lines) {
13
+ this.lines = lines;
14
+ }
15
+ render(width) {
16
+ const result = [];
17
+ for (let i = 0; i < this.lines; i++) {
18
+ let line = " ".repeat(width);
19
+ // Apply background color if specified
20
+ if (this.customBgRgb) {
21
+ line = style.bgRgb(this.customBgRgb.r, this.customBgRgb.g, this.customBgRgb.b)(line);
22
+ }
23
+ result.push(line);
24
+ }
25
+ return result;
26
+ }
27
+ }
@@ -0,0 +1,27 @@
1
+ import type { Component } from "../tui.ts";
2
+ /**
3
+ * Table component - displays tabular data with proper formatting and wrapping
4
+ */
5
+ export declare class TableComponent implements Component {
6
+ private data;
7
+ private headers?;
8
+ private colWidths?;
9
+ private width?;
10
+ private cachedOutput?;
11
+ private cachedData?;
12
+ private cachedHeaders?;
13
+ private cachedColWidths?;
14
+ private cachedWidth?;
15
+ constructor(data: (string | number)[][], options: {
16
+ headers?: string[];
17
+ colWidths?: number[];
18
+ width?: number;
19
+ });
20
+ setData(data: (string | number)[][]): void;
21
+ setHeaders(headers?: string[]): void;
22
+ setColWidths(colWidths?: number[]): void;
23
+ setWidth(width: number): void;
24
+ private invalidateCache;
25
+ render(width: number): string[];
26
+ }
27
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../source/tui/components/table.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IAGvB,OAAO,CAAC,YAAY,CAAC,CAAW;IAChC,OAAO,CAAC,UAAU,CAAC,CAAwB;IAC3C,OAAO,CAAC,aAAa,CAAC,CAAW;IACjC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,WAAW,CAAC,CAAS;gBAG3B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,EAC3B,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAQvE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI;IAK1C,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAKpC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,CAAC,eAAe;IAQvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAiGhC"}
@@ -0,0 +1,125 @@
1
+ import { Table } from "../../terminal/table/index.js";
2
+ /**
3
+ * Table component - displays tabular data with proper formatting and wrapping
4
+ */
5
+ export class TableComponent {
6
+ data;
7
+ headers;
8
+ colWidths;
9
+ width;
10
+ // Cache for rendered output
11
+ cachedOutput;
12
+ cachedData;
13
+ cachedHeaders;
14
+ cachedColWidths;
15
+ cachedWidth;
16
+ constructor(data, options) {
17
+ this.data = data;
18
+ this.headers = options.headers;
19
+ this.colWidths = options.colWidths;
20
+ this.width = options.width;
21
+ }
22
+ setData(data) {
23
+ this.data = data;
24
+ this.invalidateCache();
25
+ }
26
+ setHeaders(headers) {
27
+ this.headers = headers;
28
+ this.invalidateCache();
29
+ }
30
+ setColWidths(colWidths) {
31
+ this.colWidths = colWidths;
32
+ this.invalidateCache();
33
+ }
34
+ setWidth(width) {
35
+ this.width = width;
36
+ this.invalidateCache();
37
+ }
38
+ invalidateCache() {
39
+ this.cachedOutput = undefined;
40
+ this.cachedData = undefined;
41
+ this.cachedHeaders = undefined;
42
+ this.cachedColWidths = undefined;
43
+ this.cachedWidth = undefined;
44
+ }
45
+ render(width) {
46
+ // Use provided width if specified, otherwise use component width
47
+ const renderWidth = this.width || width;
48
+ // Check cache
49
+ if (this.cachedOutput &&
50
+ this.cachedData === this.data &&
51
+ this.cachedHeaders === this.headers &&
52
+ this.cachedColWidths === this.colWidths &&
53
+ this.cachedWidth === renderWidth) {
54
+ return this.cachedOutput;
55
+ }
56
+ if (this.data.length === 0) {
57
+ this.cachedOutput = [];
58
+ return [];
59
+ }
60
+ // Determine number of columns from data or header
61
+ let colCount = this.headers?.length;
62
+ if (colCount === undefined) {
63
+ colCount = this.data.length > 0 && this.data[0] ? this.data[0].length : 1;
64
+ }
65
+ // Calculate column widths based on terminal width
66
+ const padding = 5; // Account for table borders and padding
67
+ const availableWidth = Math.max(20, renderWidth - padding);
68
+ let computedColWidths;
69
+ if (this.colWidths && this.colWidths.length === colCount) {
70
+ // Use provided percentages
71
+ computedColWidths = this.colWidths.map((percent) => Math.max(10, Math.floor((percent / 100) * availableWidth)));
72
+ }
73
+ else {
74
+ // Distribute width evenly with minimum width per column
75
+ const minColWidth = 15;
76
+ const maxColsThatFit = Math.floor(availableWidth / minColWidth);
77
+ const actualColCount = Math.min(colCount, maxColsThatFit);
78
+ if (actualColCount === 1) {
79
+ computedColWidths = [availableWidth];
80
+ }
81
+ else {
82
+ // Calculate base width and distribute remaining pixels
83
+ const baseWidth = Math.floor(availableWidth / actualColCount);
84
+ const remainder = availableWidth % actualColCount;
85
+ computedColWidths = Array(actualColCount).fill(baseWidth);
86
+ // Distribute remainder pixels to first few columns
87
+ for (let i = 0; i < remainder && i < actualColCount; i++) {
88
+ computedColWidths[i] = (computedColWidths[i] || 0) + 1;
89
+ }
90
+ }
91
+ // If we have fewer computed widths than columns, extend the array
92
+ while (computedColWidths.length < colCount) {
93
+ computedColWidths.push(minColWidth);
94
+ }
95
+ }
96
+ const table = new Table({
97
+ head: this.headers,
98
+ colWidths: computedColWidths,
99
+ wordWrap: true,
100
+ wrapOnWordBoundary: true,
101
+ });
102
+ // Ensure all data rows have the same number of columns
103
+ const normalizedData = this.data.map((row) => {
104
+ if (row.length < colCount) {
105
+ // Pad with empty strings if row has fewer columns
106
+ return [...row, ...Array(colCount - row.length).fill("")];
107
+ }
108
+ if (row.length > colCount) {
109
+ // Truncate if row has more columns
110
+ return row.slice(0, colCount);
111
+ }
112
+ return row;
113
+ });
114
+ table.push(...normalizedData);
115
+ const tableString = table.toString();
116
+ const result = tableString.split("\n");
117
+ // Update cache
118
+ this.cachedOutput = result;
119
+ this.cachedData = this.data;
120
+ this.cachedHeaders = this.headers;
121
+ this.cachedColWidths = this.colWidths;
122
+ this.cachedWidth = renderWidth;
123
+ return result;
124
+ }
125
+ }
@@ -0,0 +1,26 @@
1
+ import type { Component } from "../tui.ts";
2
+ /**
3
+ * Text component - displays multi-line text with word wrapping
4
+ */
5
+ export declare class Text implements Component {
6
+ private text;
7
+ private paddingX;
8
+ private paddingY;
9
+ private customBgRgb?;
10
+ private cachedText?;
11
+ private cachedWidth?;
12
+ private cachedLines?;
13
+ constructor(text?: string, paddingX?: number, paddingY?: number, customBgRgb?: {
14
+ r: number;
15
+ g: number;
16
+ b: number;
17
+ });
18
+ setText(text: string): void;
19
+ setCustomBgRgb(customBgRgb?: {
20
+ r: number;
21
+ g: number;
22
+ b: number;
23
+ }): void;
24
+ render(width: number): string[];
25
+ }
26
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../source/tui/components/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C;;GAEG;AACH,qBAAa,IAAK,YAAW,SAAS;IACpC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAsC;IAG1D,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAW;gBAG7B,IAAI,SAAK,EACT,QAAQ,SAAI,EACZ,QAAQ,SAAI,EACZ,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAQnD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ3B,cAAc,CAAC,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAQvE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CA4IhC"}
@@ -0,0 +1,143 @@
1
+ import style from "../../terminal/style.js";
2
+ import { visibleWidth } from "../utils.js";
3
+ /**
4
+ * Text component - displays multi-line text with word wrapping
5
+ */
6
+ export class Text {
7
+ text;
8
+ paddingX; // Left/right padding
9
+ paddingY; // Top/bottom padding
10
+ customBgRgb;
11
+ // Cache for rendered output
12
+ cachedText;
13
+ cachedWidth;
14
+ cachedLines;
15
+ constructor(text = "", paddingX = 1, paddingY = 1, customBgRgb) {
16
+ this.text = text;
17
+ this.paddingX = paddingX;
18
+ this.paddingY = paddingY;
19
+ this.customBgRgb = customBgRgb;
20
+ }
21
+ setText(text) {
22
+ this.text = text;
23
+ // Invalidate cache when text changes
24
+ this.cachedText = undefined;
25
+ this.cachedWidth = undefined;
26
+ this.cachedLines = undefined;
27
+ }
28
+ setCustomBgRgb(customBgRgb) {
29
+ this.customBgRgb = customBgRgb;
30
+ // Invalidate cache when color changes
31
+ this.cachedText = undefined;
32
+ this.cachedWidth = undefined;
33
+ this.cachedLines = undefined;
34
+ }
35
+ render(width) {
36
+ // Check cache
37
+ if (this.cachedLines &&
38
+ this.cachedText === this.text &&
39
+ this.cachedWidth === width) {
40
+ return this.cachedLines;
41
+ }
42
+ // Calculate available width for content (subtract horizontal padding)
43
+ const contentWidth = Math.max(1, width - this.paddingX * 2);
44
+ // Don't render anything if there's no actual text
45
+ if (!this.text || this.text.trim() === "") {
46
+ const result = [];
47
+ // Update cache
48
+ this.cachedText = this.text;
49
+ this.cachedWidth = width;
50
+ this.cachedLines = result;
51
+ return result;
52
+ }
53
+ // Replace tabs with 3 spaces for consistent rendering
54
+ const normalizedText = this.text.replace(/\t/g, " ");
55
+ const lines = [];
56
+ const textLines = normalizedText.split("\n");
57
+ for (const line of textLines) {
58
+ // Measure visible length (strip ANSI codes)
59
+ const visibleLineLength = visibleWidth(line);
60
+ if (visibleLineLength <= contentWidth) {
61
+ lines.push(line);
62
+ }
63
+ else {
64
+ // Word wrap
65
+ const words = line.split(" ");
66
+ let currentLine = "";
67
+ for (const word of words) {
68
+ const currentVisible = visibleWidth(currentLine);
69
+ const wordVisible = visibleWidth(word);
70
+ // If word is too long, truncate it
71
+ let finalWord = word;
72
+ if (wordVisible > contentWidth) {
73
+ // Truncate word to fit
74
+ let truncated = "";
75
+ for (const char of word) {
76
+ if (visibleWidth(truncated + char) > contentWidth) {
77
+ break;
78
+ }
79
+ truncated += char;
80
+ }
81
+ finalWord = truncated;
82
+ }
83
+ if (currentVisible === 0) {
84
+ currentLine = finalWord;
85
+ }
86
+ else if (currentVisible + 1 + visibleWidth(finalWord) <=
87
+ contentWidth) {
88
+ currentLine += ` ${finalWord}`;
89
+ }
90
+ else {
91
+ lines.push(currentLine);
92
+ currentLine = finalWord;
93
+ }
94
+ }
95
+ if (currentLine.length > 0) {
96
+ lines.push(currentLine);
97
+ }
98
+ }
99
+ }
100
+ // Add padding to each line
101
+ const leftPad = " ".repeat(this.paddingX);
102
+ const paddedLines = [];
103
+ for (const line of lines) {
104
+ // Calculate visible length (strip ANSI codes)
105
+ const visibleLength = visibleWidth(line);
106
+ // Right padding to fill to width (accounting for left padding and content)
107
+ const rightPadLength = Math.max(0, width - this.paddingX - visibleLength);
108
+ const rightPad = " ".repeat(rightPadLength);
109
+ let paddedLine = leftPad + line + rightPad;
110
+ // Apply background color if specified
111
+ if (this.customBgRgb) {
112
+ paddedLine = style.bgRgb(this.customBgRgb.r, this.customBgRgb.g, this.customBgRgb.b)(paddedLine);
113
+ }
114
+ paddedLines.push(paddedLine);
115
+ }
116
+ // Add top padding (empty lines)
117
+ const emptyLine = " ".repeat(width);
118
+ const topPadding = [];
119
+ for (let i = 0; i < this.paddingY; i++) {
120
+ let emptyPaddedLine = emptyLine;
121
+ if (this.customBgRgb) {
122
+ emptyPaddedLine = style.bgRgb(this.customBgRgb.r, this.customBgRgb.g, this.customBgRgb.b)(emptyPaddedLine);
123
+ }
124
+ topPadding.push(emptyPaddedLine);
125
+ }
126
+ // Add bottom padding (empty lines)
127
+ const bottomPadding = [];
128
+ for (let i = 0; i < this.paddingY; i++) {
129
+ let emptyPaddedLine = emptyLine;
130
+ if (this.customBgRgb) {
131
+ emptyPaddedLine = style.bgRgb(this.customBgRgb.r, this.customBgRgb.g, this.customBgRgb.b)(emptyPaddedLine);
132
+ }
133
+ bottomPadding.push(emptyPaddedLine);
134
+ }
135
+ // Combine top padding, content, and bottom padding
136
+ const result = [...topPadding, ...paddedLines, ...bottomPadding];
137
+ // Update cache
138
+ this.cachedText = this.text;
139
+ this.cachedWidth = width;
140
+ this.cachedLines = result;
141
+ return result.length > 0 ? result : [""];
142
+ }
143
+ }
@@ -0,0 +1,14 @@
1
+ import { Container } from "../tui.ts";
2
+ /**
3
+ * Component that renders a thinking block
4
+ */
5
+ export declare class ThinkingBlockComponent extends Container {
6
+ private contentContainer;
7
+ constructor(message?: {
8
+ content: string;
9
+ });
10
+ updateContent(message: {
11
+ content: string;
12
+ }): void;
13
+ }
14
+ //# sourceMappingURL=thinking-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinking-block.d.ts","sourceRoot":"","sources":["../../../source/tui/components/thinking-block.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,OAAO,CAAC,gBAAgB,CAAY;gBAExB,OAAO,CAAC,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB;IAYD,aAAa,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAkBlD"}
@@ -0,0 +1,33 @@
1
+ import style from "../../terminal/style.js";
2
+ import { Container } from "../tui.js";
3
+ import { Markdown } from "./markdown.js";
4
+ import { Spacer } from "./spacer.js";
5
+ /**
6
+ * Component that renders a thinking block
7
+ */
8
+ export class ThinkingBlockComponent extends Container {
9
+ contentContainer;
10
+ constructor(message) {
11
+ super();
12
+ // Container for text/thinking content
13
+ this.contentContainer = new Container();
14
+ this.addChild(this.contentContainer);
15
+ if (message) {
16
+ this.updateContent(message);
17
+ }
18
+ }
19
+ updateContent(message) {
20
+ // Clear content container
21
+ this.contentContainer.clear();
22
+ if (message.content.length > 0) {
23
+ this.contentContainer.addChild(new Spacer(1));
24
+ }
25
+ const content = message.content;
26
+ // Assistant text messages with no background - trim the text
27
+ // Set paddingY=0 to avoid extra spacing before tool executions
28
+ this.contentContainer.addChild(new Markdown(style.dim(content.trim()), {
29
+ paddingX: 1,
30
+ paddingY: 0,
31
+ }));
32
+ }
33
+ }
@@ -0,0 +1,21 @@
1
+ import type { ToolEvent } from "../../agent/index.ts";
2
+ import { Container, type TUI } from "../index.ts";
3
+ export declare class ToolExecutionComponent extends Container {
4
+ private tui;
5
+ private contentContainer;
6
+ private loaderComponent;
7
+ private toolName;
8
+ private events;
9
+ constructor(tui: TUI, events: ToolEvent[]);
10
+ update(events: ToolEvent[]): void;
11
+ private renderDisplay;
12
+ private getToolCallStartComponent;
13
+ private handleToolStartMessage;
14
+ private handleToolInitMessage;
15
+ private handleToolUpdateMessage;
16
+ private handleToolCompletionMessage;
17
+ private handleToolErrorMessage;
18
+ private processEventsInOrder;
19
+ private getEventIndex;
20
+ }
21
+ //# sourceMappingURL=tool-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../source/tui/components/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,SAAS,EAKT,KAAK,GAAG,EACT,MAAM,aAAa,CAAC;AAUrB,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IAczC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE;IAS1B,OAAO,CAAC,aAAa;IAiErB,OAAO,CAAC,yBAAyB;IA0DjC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,aAAa;CAkBtB"}
@@ -0,0 +1,161 @@
1
+ import { capitalize } from "../../formatting.js";
2
+ import style from "../../terminal/style.js";
3
+ import { Container, Loader, Markdown, Spacer, Text, } from "../index.js";
4
+ const bgColor = {
5
+ r: 52,
6
+ g: 53,
7
+ b: 65,
8
+ };
9
+ export class ToolExecutionComponent extends Container {
10
+ tui;
11
+ contentContainer;
12
+ loaderComponent;
13
+ toolName;
14
+ events;
15
+ constructor(tui, events) {
16
+ super();
17
+ this.tui = tui;
18
+ this.loaderComponent = null;
19
+ this.toolName = events[0].name;
20
+ this.events = events;
21
+ // Container for text/thinking content
22
+ this.contentContainer = new Container();
23
+ this.addChild(this.contentContainer);
24
+ this.renderDisplay();
25
+ }
26
+ update(events) {
27
+ this.events = events;
28
+ // Clear content container
29
+ this.contentContainer.clear();
30
+ this.renderDisplay();
31
+ }
32
+ renderDisplay() {
33
+ // Build display from complete event history with proper ordering
34
+ const processedEvents = this.processEventsInOrder();
35
+ const currentStatus = processedEvents.at(-1)?.type ?? "tool-call-start";
36
+ this.contentContainer.addChild(new Spacer(1));
37
+ this.contentContainer.addChild(new Spacer(1, bgColor));
38
+ for (let i = 0; i < processedEvents.length; i++) {
39
+ const event = processedEvents[i];
40
+ const eventType = event.type;
41
+ switch (eventType) {
42
+ case "tool-call-start":
43
+ this.getToolCallStartComponent(event, currentStatus);
44
+ break;
45
+ case "tool-call-init":
46
+ this.contentContainer.addChild(new Text(`→ ${this.handleToolInitMessage(event.msg)}`, 1, 0, bgColor));
47
+ break;
48
+ case "tool-call-update":
49
+ this.contentContainer.addChild(new Markdown(this.handleToolUpdateMessage(event.msg), {
50
+ paddingX: 3,
51
+ customBgRgb: bgColor,
52
+ }));
53
+ break;
54
+ case "tool-call-end":
55
+ this.contentContainer.addChild(new Text(`└ ${this.handleToolCompletionMessage(event.msg)}`, 1, 0, bgColor));
56
+ break;
57
+ case "tool-call-error":
58
+ this.contentContainer.addChild(new Text(`└ ${this.handleToolErrorMessage(event.msg)}`, 1, 0, bgColor));
59
+ break;
60
+ default: {
61
+ eventType;
62
+ }
63
+ }
64
+ }
65
+ this.contentContainer.addChild(new Spacer(1, bgColor));
66
+ this.contentContainer.addChild(new Spacer(1));
67
+ }
68
+ getToolCallStartComponent(event, currentStatus) {
69
+ switch (currentStatus) {
70
+ case "tool-call-start":
71
+ this.contentContainer.addChild(new Text(`${style.blue.bold("●")} ${this.handleToolStartMessage(event)}`, 1, 0, bgColor));
72
+ break;
73
+ case "tool-call-init":
74
+ case "tool-call-update":
75
+ if (!this.loaderComponent) {
76
+ this.loaderComponent = new Loader(this.tui, this.handleToolStartMessage(event), bgColor);
77
+ this.contentContainer.addChild(this.loaderComponent);
78
+ }
79
+ else {
80
+ this.loaderComponent.setMessage(this.handleToolStartMessage(event));
81
+ }
82
+ break;
83
+ case "tool-call-end":
84
+ if (this.loaderComponent) {
85
+ this.loaderComponent.stop();
86
+ this.loaderComponent = null;
87
+ }
88
+ this.contentContainer.addChild(new Text(`${style.green.bold("●")} ${this.handleToolStartMessage(event)}`, 1, 0, bgColor));
89
+ break;
90
+ case "tool-call-error":
91
+ if (this.loaderComponent) {
92
+ this.loaderComponent.stop();
93
+ this.loaderComponent = null;
94
+ }
95
+ this.contentContainer.addChild(new Text(`${style.red.bold("●")} ${this.handleToolStartMessage(event)}`, 1, 0, bgColor));
96
+ break;
97
+ default:
98
+ currentStatus;
99
+ }
100
+ }
101
+ handleToolStartMessage(event) {
102
+ const message = event.msg;
103
+ let result = `${style.bold(capitalize(this.toolName))} `;
104
+ result += message.trim() ? `${style.bold(message)} ` : "";
105
+ result += style.dim(JSON.stringify(event.args).slice(0, 50));
106
+ return result;
107
+ }
108
+ handleToolInitMessage(message) {
109
+ return style.bold(message);
110
+ }
111
+ handleToolUpdateMessage(message) {
112
+ return message;
113
+ }
114
+ handleToolCompletionMessage(message) {
115
+ return style.bold(message);
116
+ }
117
+ handleToolErrorMessage(message) {
118
+ return style.bold.red(message);
119
+ }
120
+ processEventsInOrder() {
121
+ const events = [...this.events];
122
+ const processed = [];
123
+ // Ensure we have a tool-call-start event for this specific tool call
124
+ // Events are grouped by toolCallId, so we need to check for start events
125
+ // that match the current tool call's ID
126
+ const toolCallId = events[0]?.toolCallId;
127
+ const hasStartEvent = events.some((event) => event.type === "tool-call-start" && event.toolCallId === toolCallId);
128
+ if (!hasStartEvent && events.length > 0) {
129
+ // Create synthetic start event using the first event's name
130
+ const firstEvent = events[0];
131
+ processed.push({
132
+ type: "tool-call-start",
133
+ name: firstEvent.name,
134
+ toolCallId: firstEvent.toolCallId,
135
+ msg: "",
136
+ args: firstEvent.args,
137
+ });
138
+ }
139
+ processed.push(...events);
140
+ processed.sort((a, b) => this.getEventIndex(a) - this.getEventIndex(b));
141
+ return processed;
142
+ }
143
+ getEventIndex(event) {
144
+ const eventType = event.type;
145
+ switch (eventType) {
146
+ case "tool-call-start":
147
+ return 0;
148
+ case "tool-call-init":
149
+ return 1;
150
+ case "tool-call-update":
151
+ return 2;
152
+ case "tool-call-end":
153
+ case "tool-call-error":
154
+ return 3;
155
+ default: {
156
+ eventType;
157
+ return -1;
158
+ }
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,9 @@
1
+ import { Container } from "../tui.ts";
2
+ /**
3
+ * Component that renders a user message
4
+ */
5
+ export declare class UserMessageComponent extends Container {
6
+ private markdown;
7
+ constructor(text: string);
8
+ }
9
+ //# sourceMappingURL=user-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-message.d.ts","sourceRoot":"","sources":["../../../source/tui/components/user-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAW;gBAEf,IAAI,EAAE,MAAM;CAiBzB"}
@@ -0,0 +1,23 @@
1
+ import { Container } from "../tui.js";
2
+ import { Markdown } from "./markdown.js";
3
+ import { Spacer } from "./spacer.js";
4
+ /**
5
+ * Component that renders a user message
6
+ */
7
+ export class UserMessageComponent extends Container {
8
+ markdown;
9
+ constructor(text) {
10
+ super();
11
+ this.addChild(new Spacer(1));
12
+ // User messages with dark gray background
13
+ this.markdown = new Markdown(text, {
14
+ customBgRgb: {
15
+ r: 52,
16
+ g: 53,
17
+ b: 65,
18
+ },
19
+ });
20
+ this.addChild(this.markdown);
21
+ this.addChild(new Spacer(1));
22
+ }
23
+ }
@@ -0,0 +1,6 @@
1
+ import type { Component } from "../tui.ts";
2
+ export declare class Welcome implements Component {
3
+ render(_width: number): string[];
4
+ private getLogo;
5
+ }
6
+ //# sourceMappingURL=welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../source/tui/components/welcome.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,qBAAa,OAAQ,YAAW,SAAS;IACvC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAiChC,OAAO,CAAC,OAAO;CAUhB"}