@travisennis/acai 0.0.4 → 0.0.6

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 (433) hide show
  1. package/README.md +229 -8
  2. package/dist/agent/index.d.ts +119 -0
  3. package/dist/agent/index.d.ts.map +1 -0
  4. package/dist/agent/index.js +406 -0
  5. package/dist/agent/manual-loop.d.ts +41 -0
  6. package/dist/agent/manual-loop.d.ts.map +1 -0
  7. package/dist/agent/manual-loop.js +278 -0
  8. package/dist/api/exa/index.d.ts +177 -0
  9. package/dist/api/exa/index.d.ts.map +1 -0
  10. package/dist/api/exa/index.js +439 -0
  11. package/dist/cli.d.ts +5 -2
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +27 -33
  14. package/dist/commands/add-directory-command.d.ts +3 -0
  15. package/dist/commands/add-directory-command.d.ts.map +1 -0
  16. package/dist/commands/add-directory-command.js +85 -0
  17. package/dist/commands/application-log-command.d.ts +1 -0
  18. package/dist/commands/application-log-command.d.ts.map +1 -0
  19. package/dist/commands/application-log-command.js +39 -3
  20. package/dist/commands/clear-command.d.ts +1 -0
  21. package/dist/commands/clear-command.d.ts.map +1 -0
  22. package/dist/commands/clear-command.js +10 -3
  23. package/dist/commands/compact-command.d.ts +1 -0
  24. package/dist/commands/compact-command.d.ts.map +1 -0
  25. package/dist/commands/compact-command.js +16 -3
  26. package/dist/commands/context-command.d.ts +3 -0
  27. package/dist/commands/context-command.d.ts.map +1 -0
  28. package/dist/commands/context-command.js +183 -0
  29. package/dist/commands/copy-command.d.ts +1 -0
  30. package/dist/commands/copy-command.d.ts.map +1 -0
  31. package/dist/commands/copy-command.js +31 -2
  32. package/dist/commands/edit-command.d.ts +1 -0
  33. package/dist/commands/edit-command.d.ts.map +1 -0
  34. package/dist/commands/edit-command.js +40 -5
  35. package/dist/commands/edit-prompt-command.d.ts +2 -1
  36. package/dist/commands/edit-prompt-command.d.ts.map +1 -0
  37. package/dist/commands/edit-prompt-command.js +43 -7
  38. package/dist/commands/exit-command.d.ts +13 -2
  39. package/dist/commands/exit-command.d.ts.map +1 -0
  40. package/dist/commands/exit-command.js +34 -2
  41. package/dist/commands/files-command.d.ts +1 -0
  42. package/dist/commands/files-command.d.ts.map +1 -0
  43. package/dist/commands/files-command.js +66 -8
  44. package/dist/commands/generate-rules-command.d.ts +1 -0
  45. package/dist/commands/generate-rules-command.d.ts.map +1 -0
  46. package/dist/commands/generate-rules-command.js +315 -4
  47. package/dist/commands/handoff-command.d.ts +3 -0
  48. package/dist/commands/handoff-command.d.ts.map +1 -0
  49. package/dist/commands/handoff-command.js +202 -0
  50. package/dist/commands/health-command.d.ts +3 -1
  51. package/dist/commands/health-command.d.ts.map +1 -0
  52. package/dist/commands/health-command.js +160 -6
  53. package/dist/commands/help-command.d.ts +1 -0
  54. package/dist/commands/help-command.d.ts.map +1 -0
  55. package/dist/commands/help-command.js +30 -3
  56. package/dist/commands/history-command.d.ts +3 -0
  57. package/dist/commands/history-command.d.ts.map +1 -0
  58. package/dist/commands/history-command.js +534 -0
  59. package/dist/commands/init-command.d.ts +2 -1
  60. package/dist/commands/init-command.d.ts.map +1 -0
  61. package/dist/commands/init-command.js +56 -20
  62. package/dist/commands/last-log-command.d.ts +1 -0
  63. package/dist/commands/last-log-command.d.ts.map +1 -0
  64. package/dist/commands/last-log-command.js +39 -17
  65. package/dist/commands/list-directories-command.d.ts +3 -0
  66. package/dist/commands/list-directories-command.d.ts.map +1 -0
  67. package/dist/commands/list-directories-command.js +48 -0
  68. package/dist/commands/list-tools-command.d.ts +3 -0
  69. package/dist/commands/list-tools-command.d.ts.map +1 -0
  70. package/dist/commands/list-tools-command.js +124 -0
  71. package/dist/commands/manager.d.ts +20 -3
  72. package/dist/commands/manager.d.ts.map +1 -0
  73. package/dist/commands/manager.js +123 -26
  74. package/dist/commands/model-command.d.ts +23 -0
  75. package/dist/commands/model-command.d.ts.map +1 -0
  76. package/dist/commands/model-command.js +261 -5
  77. package/dist/commands/paste-command.d.ts +1 -0
  78. package/dist/commands/paste-command.d.ts.map +1 -0
  79. package/dist/commands/paste-command.js +98 -5
  80. package/dist/commands/pickup-command.d.ts +3 -0
  81. package/dist/commands/pickup-command.d.ts.map +1 -0
  82. package/dist/commands/pickup-command.js +161 -0
  83. package/dist/commands/prompt-command.d.ts +2 -1
  84. package/dist/commands/prompt-command.d.ts.map +1 -0
  85. package/dist/commands/prompt-command.js +178 -9
  86. package/dist/commands/remove-directory-command.d.ts +3 -0
  87. package/dist/commands/remove-directory-command.d.ts.map +1 -0
  88. package/dist/commands/remove-directory-command.js +87 -0
  89. package/dist/commands/reset-command.d.ts +2 -1
  90. package/dist/commands/reset-command.d.ts.map +1 -0
  91. package/dist/commands/reset-command.js +14 -3
  92. package/dist/commands/rules-command.d.ts +1 -0
  93. package/dist/commands/rules-command.d.ts.map +1 -0
  94. package/dist/commands/rules-command.js +70 -3
  95. package/dist/commands/save-command.d.ts +1 -0
  96. package/dist/commands/save-command.d.ts.map +1 -0
  97. package/dist/commands/save-command.js +13 -1
  98. package/dist/commands/shell-command.d.ts +3 -0
  99. package/dist/commands/shell-command.d.ts.map +1 -0
  100. package/dist/commands/shell-command.js +128 -0
  101. package/dist/commands/types.d.ts +16 -8
  102. package/dist/commands/types.d.ts.map +1 -0
  103. package/dist/commands/usage-command.d.ts +1 -0
  104. package/dist/commands/usage-command.d.ts.map +1 -0
  105. package/dist/commands/usage-command.js +24 -3
  106. package/dist/config.d.ts +21 -34
  107. package/dist/config.d.ts.map +1 -0
  108. package/dist/config.js +55 -15
  109. package/dist/dedent.d.ts +1 -0
  110. package/dist/dedent.d.ts.map +1 -0
  111. package/dist/execution/index.d.ts +112 -0
  112. package/dist/execution/index.d.ts.map +1 -0
  113. package/dist/execution/index.js +432 -0
  114. package/dist/formatting.d.ts +107 -10
  115. package/dist/formatting.d.ts.map +1 -0
  116. package/dist/formatting.js +150 -62
  117. package/dist/index.d.ts +8 -2
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +150 -38
  120. package/dist/logger.d.ts +1 -0
  121. package/dist/logger.d.ts.map +1 -0
  122. package/dist/logger.js +47 -18
  123. package/dist/mentions.d.ts +6 -1
  124. package/dist/mentions.d.ts.map +1 -0
  125. package/dist/mentions.js +58 -11
  126. package/dist/messages.d.ts +16 -20
  127. package/dist/messages.d.ts.map +1 -0
  128. package/dist/messages.js +89 -72
  129. package/dist/middleware/audit-message.d.ts +1 -0
  130. package/dist/middleware/audit-message.d.ts.map +1 -0
  131. package/dist/middleware/cache.d.ts +3 -0
  132. package/dist/middleware/cache.d.ts.map +1 -0
  133. package/dist/middleware/cache.js +53 -0
  134. package/dist/middleware/index.d.ts +2 -0
  135. package/dist/middleware/index.d.ts.map +1 -0
  136. package/dist/middleware/index.js +1 -0
  137. package/dist/middleware/rate-limit.d.ts +1 -0
  138. package/dist/middleware/rate-limit.d.ts.map +1 -0
  139. package/dist/models/ai-config.d.ts +5 -2
  140. package/dist/models/ai-config.d.ts.map +1 -0
  141. package/dist/models/ai-config.js +12 -2
  142. package/dist/models/anthropic-provider.d.ts +1 -0
  143. package/dist/models/anthropic-provider.d.ts.map +1 -0
  144. package/dist/models/anthropic-provider.js +3 -60
  145. package/dist/models/deepseek-provider.d.ts +1 -0
  146. package/dist/models/deepseek-provider.d.ts.map +1 -0
  147. package/dist/models/google-provider.d.ts +1 -0
  148. package/dist/models/google-provider.d.ts.map +1 -0
  149. package/dist/models/groq-provider.d.ts +20 -0
  150. package/dist/models/groq-provider.d.ts.map +1 -0
  151. package/dist/models/groq-provider.js +31 -0
  152. package/dist/models/manager.d.ts +3 -1
  153. package/dist/models/manager.d.ts.map +1 -0
  154. package/dist/models/manager.js +26 -2
  155. package/dist/models/openai-provider.d.ts +2 -1
  156. package/dist/models/openai-provider.d.ts.map +1 -0
  157. package/dist/models/openrouter-provider.d.ts +25 -23
  158. package/dist/models/openrouter-provider.d.ts.map +1 -0
  159. package/dist/models/openrouter-provider.js +181 -122
  160. package/dist/models/providers.d.ts +4 -5
  161. package/dist/models/providers.d.ts.map +1 -0
  162. package/dist/models/providers.js +7 -3
  163. package/dist/models/xai-provider.d.ts +1 -0
  164. package/dist/models/xai-provider.d.ts.map +1 -0
  165. package/dist/parsing.d.ts +2 -1
  166. package/dist/parsing.d.ts.map +1 -0
  167. package/dist/prompts/manager.d.ts +14 -2
  168. package/dist/prompts/manager.d.ts.map +1 -0
  169. package/dist/prompts.d.ts +2 -0
  170. package/dist/prompts.d.ts.map +1 -0
  171. package/dist/prompts.js +65 -12
  172. package/dist/repl/display-tool-messages.d.ts +4 -0
  173. package/dist/repl/display-tool-messages.d.ts.map +1 -0
  174. package/dist/repl/display-tool-messages.js +58 -0
  175. package/dist/repl/display-tool-use.d.ts +14 -0
  176. package/dist/repl/display-tool-use.d.ts.map +1 -0
  177. package/dist/repl/display-tool-use.js +63 -0
  178. package/dist/repl/get-prompt-header.d.ts +8 -0
  179. package/dist/repl/get-prompt-header.d.ts.map +1 -0
  180. package/dist/repl/get-prompt-header.js +9 -0
  181. package/dist/repl/project-status-line.d.ts +2 -0
  182. package/dist/repl/project-status-line.d.ts.map +1 -0
  183. package/dist/repl/project-status-line.js +31 -0
  184. package/dist/repl/prompt.d.ts +21 -0
  185. package/dist/repl/prompt.d.ts.map +1 -0
  186. package/dist/{repl-prompt.js → repl/prompt.js} +119 -22
  187. package/dist/repl/tool-call-repair.d.ts +4 -0
  188. package/dist/repl/tool-call-repair.d.ts.map +1 -0
  189. package/dist/repl/tool-call-repair.js +54 -0
  190. package/dist/repl-new.d.ts +53 -0
  191. package/dist/repl-new.d.ts.map +1 -0
  192. package/dist/repl-new.js +374 -0
  193. package/dist/repl.d.ts +9 -7
  194. package/dist/repl.d.ts.map +1 -0
  195. package/dist/repl.js +142 -378
  196. package/dist/terminal/ansi-styles.d.ts +77 -0
  197. package/dist/terminal/ansi-styles.d.ts.map +1 -0
  198. package/dist/terminal/ansi-styles.js +215 -0
  199. package/dist/terminal/checkbox-prompt.d.ts +36 -0
  200. package/dist/terminal/checkbox-prompt.d.ts.map +1 -0
  201. package/dist/terminal/checkbox-prompt.js +368 -0
  202. package/dist/terminal/default-theme.d.ts +6 -0
  203. package/dist/terminal/default-theme.d.ts.map +1 -0
  204. package/dist/terminal/default-theme.js +182 -0
  205. package/dist/terminal/east-asian-width.d.ts +8 -0
  206. package/dist/terminal/east-asian-width.d.ts.map +1 -0
  207. package/dist/terminal/east-asian-width.js +409 -0
  208. package/dist/terminal/editor-prompt.d.ts +10 -0
  209. package/dist/terminal/editor-prompt.d.ts.map +1 -0
  210. package/dist/terminal/editor-prompt.js +61 -0
  211. package/dist/terminal/errors.d.ts +19 -0
  212. package/dist/terminal/errors.d.ts.map +1 -0
  213. package/dist/terminal/errors.js +37 -0
  214. package/dist/terminal/formatting.d.ts +1 -11
  215. package/dist/terminal/formatting.d.ts.map +1 -0
  216. package/dist/terminal/formatting.js +4 -20
  217. package/dist/terminal/highlight/index.d.ts +53 -0
  218. package/dist/terminal/highlight/index.d.ts.map +1 -0
  219. package/dist/terminal/highlight/index.js +90 -0
  220. package/dist/terminal/highlight/theme.d.ts +233 -0
  221. package/dist/terminal/highlight/theme.d.ts.map +1 -0
  222. package/dist/terminal/highlight/theme.js +83 -0
  223. package/dist/terminal/index.d.ts +23 -9
  224. package/dist/terminal/index.d.ts.map +1 -0
  225. package/dist/terminal/index.js +136 -126
  226. package/dist/terminal/input-prompt.d.ts +17 -0
  227. package/dist/terminal/input-prompt.d.ts.map +1 -0
  228. package/dist/terminal/input-prompt.js +181 -0
  229. package/dist/terminal/markdown-utils.d.ts +1 -0
  230. package/dist/terminal/markdown-utils.d.ts.map +1 -0
  231. package/dist/terminal/markdown.d.ts +1 -0
  232. package/dist/terminal/markdown.d.ts.map +1 -0
  233. package/dist/terminal/markdown.js +20 -12
  234. package/dist/terminal/search-prompt.d.ts +20 -0
  235. package/dist/terminal/search-prompt.d.ts.map +1 -0
  236. package/dist/terminal/search-prompt.js +280 -0
  237. package/dist/terminal/select-prompt.d.ts +26 -0
  238. package/dist/terminal/select-prompt.d.ts.map +1 -0
  239. package/dist/terminal/select-prompt.js +306 -0
  240. package/dist/terminal/string-width.d.ts +7 -0
  241. package/dist/terminal/string-width.d.ts.map +1 -0
  242. package/dist/terminal/string-width.js +61 -0
  243. package/dist/terminal/strip-ansi.d.ts +2 -0
  244. package/dist/terminal/strip-ansi.d.ts.map +1 -0
  245. package/dist/terminal/strip-ansi.js +20 -0
  246. package/dist/terminal/style.d.ts +191 -0
  247. package/dist/terminal/style.d.ts.map +1 -0
  248. package/dist/terminal/style.js +259 -0
  249. package/dist/terminal/supports-color.d.ts +1 -0
  250. package/dist/terminal/supports-color.d.ts.map +1 -0
  251. package/dist/terminal/supports-hyperlinks.d.ts +1 -3
  252. package/dist/terminal/supports-hyperlinks.d.ts.map +1 -0
  253. package/dist/terminal/supports-hyperlinks.js +1 -1
  254. package/dist/terminal/types.d.ts +1 -37
  255. package/dist/terminal/types.d.ts.map +1 -0
  256. package/dist/terminal/wrap-ansi.d.ts +8 -0
  257. package/dist/terminal/wrap-ansi.d.ts.map +1 -0
  258. package/dist/terminal/wrap-ansi.js +190 -0
  259. package/dist/{token-utils.d.ts → tokens/counter.d.ts} +1 -0
  260. package/dist/tokens/counter.d.ts.map +1 -0
  261. package/dist/{token-utils.js → tokens/counter.js} +1 -1
  262. package/dist/tokens/threshold.d.ts +35 -0
  263. package/dist/tokens/threshold.d.ts.map +1 -0
  264. package/dist/tokens/threshold.js +85 -0
  265. package/dist/{token-tracker.d.ts → tokens/tracker.d.ts} +1 -0
  266. package/dist/tokens/tracker.d.ts.map +1 -0
  267. package/dist/tools/advanced-edit-file.d.ts +69 -0
  268. package/dist/tools/advanced-edit-file.d.ts.map +1 -0
  269. package/dist/tools/advanced-edit-file.js +281 -0
  270. package/dist/tools/agent.d.ts +19 -7
  271. package/dist/tools/agent.d.ts.map +1 -0
  272. package/dist/tools/agent.js +70 -54
  273. package/dist/tools/bash-utils.d.ts +7 -0
  274. package/dist/tools/bash-utils.d.ts.map +1 -0
  275. package/dist/tools/bash-utils.js +220 -0
  276. package/dist/tools/bash.d.ts +25 -14
  277. package/dist/tools/bash.d.ts.map +1 -0
  278. package/dist/tools/bash.js +87 -251
  279. package/dist/tools/code-interpreter.d.ts +22 -10
  280. package/dist/tools/code-interpreter.d.ts.map +1 -0
  281. package/dist/tools/code-interpreter.js +146 -210
  282. package/dist/tools/delete-file.d.ts +18 -9
  283. package/dist/tools/delete-file.d.ts.map +1 -0
  284. package/dist/tools/delete-file.js +55 -85
  285. package/dist/tools/directory-tree.d.ts +26 -6
  286. package/dist/tools/directory-tree.d.ts.map +1 -0
  287. package/dist/tools/directory-tree.js +109 -28
  288. package/dist/tools/dynamic-tool-loader.d.ts +22 -0
  289. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -0
  290. package/dist/tools/dynamic-tool-loader.js +272 -0
  291. package/dist/tools/dynamic-tool-parser.d.ts +21 -0
  292. package/dist/tools/dynamic-tool-parser.d.ts.map +1 -0
  293. package/dist/tools/dynamic-tool-parser.js +22 -0
  294. package/dist/tools/edit-file.d.ts +41 -13
  295. package/dist/tools/edit-file.d.ts.map +1 -0
  296. package/dist/tools/edit-file.js +173 -96
  297. package/dist/tools/filesystem-utils.d.ts +7 -21
  298. package/dist/tools/filesystem-utils.d.ts.map +1 -0
  299. package/dist/tools/filesystem-utils.js +111 -149
  300. package/dist/tools/git-utils.d.ts +1 -0
  301. package/dist/tools/git-utils.d.ts.map +1 -0
  302. package/dist/tools/glob.d.ts +36 -0
  303. package/dist/tools/glob.d.ts.map +1 -0
  304. package/dist/tools/glob.js +143 -0
  305. package/dist/tools/grep.d.ts +76 -13
  306. package/dist/tools/grep.d.ts.map +1 -0
  307. package/dist/tools/grep.js +420 -135
  308. package/dist/tools/index.d.ts +207 -133
  309. package/dist/tools/index.d.ts.map +1 -0
  310. package/dist/tools/index.js +245 -127
  311. package/dist/tools/llm-edit-fixer.d.ts +25 -0
  312. package/dist/tools/llm-edit-fixer.d.ts.map +1 -0
  313. package/dist/tools/llm-edit-fixer.js +150 -0
  314. package/dist/tools/move-file.d.ts +20 -7
  315. package/dist/tools/move-file.d.ts.map +1 -0
  316. package/dist/tools/move-file.js +43 -29
  317. package/dist/tools/read-file.d.ts +49 -10
  318. package/dist/tools/read-file.d.ts.map +1 -0
  319. package/dist/tools/read-file.js +79 -67
  320. package/dist/tools/read-multiple-files.d.ts +19 -7
  321. package/dist/tools/read-multiple-files.d.ts.map +1 -0
  322. package/dist/tools/read-multiple-files.js +117 -33
  323. package/dist/tools/save-file.d.ts +46 -11
  324. package/dist/tools/save-file.d.ts.map +1 -0
  325. package/dist/tools/save-file.js +63 -78
  326. package/dist/tools/think.d.ts +16 -7
  327. package/dist/tools/think.d.ts.map +1 -0
  328. package/dist/tools/think.js +34 -22
  329. package/dist/tools/types.d.ts +18 -11
  330. package/dist/tools/types.d.ts.map +1 -0
  331. package/dist/tools/types.js +9 -0
  332. package/dist/tools/utils.d.ts +14 -0
  333. package/dist/tools/utils.d.ts.map +1 -0
  334. package/dist/tools/utils.js +16 -0
  335. package/dist/tools/web-fetch.d.ts +15 -6
  336. package/dist/tools/web-fetch.d.ts.map +1 -0
  337. package/dist/tools/web-fetch.js +40 -39
  338. package/dist/tools/web-search.d.ts +17 -7
  339. package/dist/tools/web-search.d.ts.map +1 -0
  340. package/dist/tools/web-search.js +86 -33
  341. package/dist/tui/autocomplete.d.ts +44 -0
  342. package/dist/tui/autocomplete.d.ts.map +1 -0
  343. package/dist/tui/autocomplete.js +466 -0
  344. package/dist/tui/components/assistant-message.d.ts +18 -0
  345. package/dist/tui/components/assistant-message.d.ts.map +1 -0
  346. package/dist/tui/components/assistant-message.js +29 -0
  347. package/dist/tui/components/editor.d.ts +51 -0
  348. package/dist/tui/components/editor.d.ts.map +1 -0
  349. package/dist/tui/components/editor.js +758 -0
  350. package/dist/tui/components/footer.d.ts +24 -0
  351. package/dist/tui/components/footer.d.ts.map +1 -0
  352. package/dist/tui/components/footer.js +197 -0
  353. package/dist/tui/components/input.d.ts +14 -0
  354. package/dist/tui/components/input.d.ts.map +1 -0
  355. package/dist/tui/components/input.js +122 -0
  356. package/dist/tui/components/loader.d.ts +19 -0
  357. package/dist/tui/components/loader.d.ts.map +1 -0
  358. package/dist/tui/components/loader.js +45 -0
  359. package/dist/tui/components/markdown.d.ts +103 -0
  360. package/dist/tui/components/markdown.d.ts.map +1 -0
  361. package/dist/tui/components/markdown.js +533 -0
  362. package/dist/tui/components/modal.d.ts +40 -0
  363. package/dist/tui/components/modal.d.ts.map +1 -0
  364. package/dist/tui/components/modal.js +292 -0
  365. package/dist/tui/components/prompt-status.d.ts +16 -0
  366. package/dist/tui/components/prompt-status.d.ts.map +1 -0
  367. package/dist/tui/components/prompt-status.js +21 -0
  368. package/dist/tui/components/select-list.d.ts +22 -0
  369. package/dist/tui/components/select-list.d.ts.map +1 -0
  370. package/dist/tui/components/select-list.js +143 -0
  371. package/dist/tui/components/spacer.d.ts +16 -0
  372. package/dist/tui/components/spacer.d.ts.map +1 -0
  373. package/dist/tui/components/spacer.js +27 -0
  374. package/dist/tui/components/text.d.ts +26 -0
  375. package/dist/tui/components/text.d.ts.map +1 -0
  376. package/dist/tui/components/text.js +143 -0
  377. package/dist/tui/components/thinking-block.d.ts +14 -0
  378. package/dist/tui/components/thinking-block.d.ts.map +1 -0
  379. package/dist/tui/components/thinking-block.js +30 -0
  380. package/dist/tui/components/tool-execution.d.ts +17 -0
  381. package/dist/tui/components/tool-execution.d.ts.map +1 -0
  382. package/dist/tui/components/tool-execution.js +153 -0
  383. package/dist/tui/components/user-message.d.ts +9 -0
  384. package/dist/tui/components/user-message.d.ts.map +1 -0
  385. package/dist/tui/components/user-message.js +21 -0
  386. package/dist/tui/components/welcome.d.ts +6 -0
  387. package/dist/tui/components/welcome.d.ts.map +1 -0
  388. package/dist/tui/components/welcome.js +30 -0
  389. package/dist/tui/index.d.ts +14 -0
  390. package/dist/tui/index.d.ts.map +1 -0
  391. package/dist/tui/index.js +18 -0
  392. package/dist/tui/terminal.d.ts +37 -0
  393. package/dist/tui/terminal.d.ts.map +1 -0
  394. package/dist/tui/terminal.js +104 -0
  395. package/dist/tui/tui.d.ts +67 -0
  396. package/dist/tui/tui.d.ts.map +1 -0
  397. package/dist/tui/tui.js +184 -0
  398. package/dist/tui/utils.d.ts +19 -0
  399. package/dist/tui/utils.d.ts.map +1 -0
  400. package/dist/tui/utils.js +31 -0
  401. package/dist/utils/filesystem.d.ts +23 -0
  402. package/dist/utils/filesystem.d.ts.map +1 -0
  403. package/dist/utils/filesystem.js +140 -0
  404. package/dist/utils/filetype-detection.d.ts +3 -0
  405. package/dist/utils/filetype-detection.d.ts.map +1 -0
  406. package/dist/utils/filetype-detection.js +112 -0
  407. package/dist/utils/generators.d.ts +3 -0
  408. package/dist/utils/generators.d.ts.map +1 -0
  409. package/dist/utils/generators.js +25 -0
  410. package/dist/utils/glob.d.ts +52 -0
  411. package/dist/utils/glob.d.ts.map +1 -0
  412. package/dist/utils/glob.js +376 -0
  413. package/dist/utils/ignore.d.ts +104 -0
  414. package/dist/utils/ignore.d.ts.map +1 -0
  415. package/dist/utils/ignore.js +649 -0
  416. package/dist/utils/iterables.d.ts +2 -0
  417. package/dist/utils/iterables.d.ts.map +1 -0
  418. package/dist/utils/iterables.js +6 -0
  419. package/dist/utils/process.d.ts +3 -2
  420. package/dist/utils/process.d.ts.map +1 -0
  421. package/dist/utils/process.js +17 -2
  422. package/dist/utils/zod-utils.d.ts +4 -0
  423. package/dist/utils/zod-utils.d.ts.map +1 -0
  424. package/dist/utils/zod-utils.js +7 -0
  425. package/dist/version.d.ts +1 -0
  426. package/dist/version.d.ts.map +1 -0
  427. package/package.json +34 -32
  428. package/dist/conversation-analyzer.d.ts +0 -10
  429. package/dist/conversation-analyzer.js +0 -88
  430. package/dist/repl-prompt.d.ts +0 -14
  431. package/dist/tools/command-validation.d.ts +0 -11
  432. package/dist/tools/command-validation.js +0 -45
  433. /package/dist/{token-tracker.js → tokens/tracker.js} +0 -0
@@ -0,0 +1,406 @@
1
+ import { NoOutputGeneratedError, streamText, } from "ai";
2
+ import { logger } from "../logger.js";
3
+ import { AiConfig } from "../models/ai-config.js";
4
+ import { isToolMessage } from "../tools/types.js";
5
+ import { isAsyncIterable } from "../utils/iterables.js";
6
+ export class Agent {
7
+ opts;
8
+ _state;
9
+ abortController;
10
+ constructor(opts) {
11
+ this.opts = opts;
12
+ this.abortController = new AbortController();
13
+ this._state = this.resetState();
14
+ }
15
+ get state() {
16
+ return this._state;
17
+ }
18
+ get abortSignal() {
19
+ return this.abortController.signal;
20
+ }
21
+ async *run(args) {
22
+ const { modelManager, messageHistory, tokenTracker, maxIterations = 90, maxRetries = 2, toolCallRepair, } = this.opts;
23
+ this.resetState();
24
+ this._state.timestamps.start = performance.now();
25
+ const { systemPrompt, input, toolDefs, executors, abortSignal } = args;
26
+ const langModel = modelManager.getModel("repl");
27
+ const modelConfig = modelManager.getModelMetadata("repl");
28
+ const aiConfig = new AiConfig({
29
+ modelMetadata: modelConfig,
30
+ prompt: input,
31
+ });
32
+ yield {
33
+ type: "agent-start",
34
+ };
35
+ yield {
36
+ type: "message",
37
+ role: "user",
38
+ content: input,
39
+ };
40
+ let iter = 0;
41
+ let consecutiveErrors = 0;
42
+ while (iter < maxIterations) {
43
+ if (abortSignal?.aborted) {
44
+ logger.warn("The agent loop was aborted by the user.");
45
+ // terminal.warn("Operation aborted by user.");
46
+ yield {
47
+ type: "agent-stop",
48
+ };
49
+ break;
50
+ }
51
+ yield {
52
+ type: "step-start",
53
+ };
54
+ try {
55
+ const result = streamText({
56
+ model: langModel,
57
+ maxOutputTokens: aiConfig.maxOutputTokens(),
58
+ system: systemPrompt,
59
+ messages: messageHistory.get(),
60
+ temperature: aiConfig.temperature(),
61
+ topP: aiConfig.topP(),
62
+ maxRetries: 2,
63
+ providerOptions: aiConfig.providerOptions(),
64
+ tools: toolDefs,
65
+ // biome-ignore lint/style/useNamingConvention: third-party code
66
+ experimental_repairToolCall: toolCallRepair,
67
+ abortSignal,
68
+ });
69
+ let accumulatedText = "";
70
+ let accumulatedReasoning = "";
71
+ for await (const chunk of result.fullStream) {
72
+ if (chunk.type === "reasoning-start") {
73
+ yield {
74
+ type: "thinking-start",
75
+ content: "",
76
+ };
77
+ }
78
+ else if (chunk.type === "reasoning-delta") {
79
+ accumulatedReasoning += chunk.text;
80
+ yield {
81
+ type: "thinking",
82
+ content: accumulatedReasoning,
83
+ };
84
+ }
85
+ else if (chunk.type === "reasoning-end") {
86
+ yield {
87
+ type: "thinking-end",
88
+ content: accumulatedReasoning,
89
+ };
90
+ }
91
+ else if (chunk.type === "text-start") {
92
+ yield {
93
+ type: "message-start",
94
+ role: "assistant",
95
+ content: "",
96
+ };
97
+ }
98
+ else if (chunk.type === "text-delta") {
99
+ accumulatedText += chunk.text;
100
+ yield {
101
+ type: "message",
102
+ role: "assistant",
103
+ content: accumulatedText,
104
+ };
105
+ }
106
+ else if (chunk.type === "text-end") {
107
+ yield {
108
+ type: "message-end",
109
+ role: "assistant",
110
+ content: accumulatedText,
111
+ };
112
+ }
113
+ }
114
+ // Get response and tool calls
115
+ const response = await result.response;
116
+ const responseMessages = response.messages;
117
+ messageHistory.appendResponseMessages(responseMessages);
118
+ const toolCalls = await result.toolCalls;
119
+ const thisStepToolCalls = [];
120
+ const thisStepToolResults = [];
121
+ this._state.steps.push({
122
+ toolCalls: thisStepToolCalls,
123
+ toolResults: thisStepToolResults,
124
+ });
125
+ // If finishReason is not tool-calls, break
126
+ const finishReason = await result.finishReason;
127
+ if (finishReason !== "tool-calls") {
128
+ yield {
129
+ type: "agent-stop",
130
+ };
131
+ break;
132
+ }
133
+ // Execute tools in parallel (order not guaranteed)
134
+ // Check response.messages for already-processed tool results
135
+ const alreadyProcessedToolCallIds = new Set();
136
+ // Look for tool results and tool errors in the response messages
137
+ for (const message of responseMessages) {
138
+ if (message.role === "tool" && Array.isArray(message.content)) {
139
+ for (const content of message.content) {
140
+ if ((content.type === "tool-result" ||
141
+ content.type === "tool-error") &&
142
+ content.toolCallId) {
143
+ logger.debug(content, "Invalid tool call:");
144
+ yield {
145
+ type: "tool-call-start",
146
+ name: content.toolName,
147
+ toolCallId: content.toolCallId,
148
+ args: toolCalls.find((call) => call.toolCallId === content.toolCallId)?.input,
149
+ msg: "",
150
+ };
151
+ yield {
152
+ type: "tool-call-error",
153
+ name: content.toolName,
154
+ toolCallId: content.toolCallId,
155
+ msg: "invalid tool call",
156
+ args: toolCalls.find((call) => call.toolCallId === content.toolCallId)?.input,
157
+ };
158
+ alreadyProcessedToolCallIds.add(content.toolCallId);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ // Filter out tool calls that have already been processed or are invalid
164
+ const validToolCalls = toolCalls.filter((call) => !alreadyProcessedToolCallIds.has(call.toolCallId) &&
165
+ // Also check if the tool call is marked as invalid by the AI SDK
166
+ !call.invalid);
167
+ if (validToolCalls.length === 0) {
168
+ // All tool calls were already processed by the AI SDK
169
+ logger.debug(`All ${toolCalls.length} tool calls were already processed by AI SDK, skipping manual execution`);
170
+ continue;
171
+ }
172
+ if (validToolCalls.length < toolCalls.length) {
173
+ logger.debug(`Filtered out ${toolCalls.length - validToolCalls.length} already-processed tool calls, executing ${validToolCalls.length} remaining`);
174
+ }
175
+ // Process all tools
176
+ const toolMessages = [];
177
+ for (const call of validToolCalls) {
178
+ const toolName = call.toolName;
179
+ yield {
180
+ type: "tool-call-start",
181
+ name: toolName,
182
+ toolCallId: call.toolCallId,
183
+ msg: "",
184
+ args: call.input,
185
+ };
186
+ let resultOutput = "Unknown result.";
187
+ try {
188
+ thisStepToolCalls.push({ toolName });
189
+ thisStepToolResults.push({ toolName });
190
+ const toolExec = executors.get(toolName);
191
+ if (!toolExec) {
192
+ resultOutput = `No executor for tool ${toolName}`;
193
+ }
194
+ else {
195
+ try {
196
+ const output = await toolExec(call.input, {
197
+ toolCallId: call.toolCallId,
198
+ messages: messageHistory.get(),
199
+ abortSignal,
200
+ });
201
+ if (isAsyncIterable(output)) {
202
+ const toolResultValues = [];
203
+ for await (const value of output) {
204
+ if (isToolMessage(value)) {
205
+ switch (value.event) {
206
+ case "tool-completion":
207
+ yield {
208
+ type: "tool-call-end",
209
+ name: value.name,
210
+ toolCallId: value.id,
211
+ msg: value.data,
212
+ args: call.input,
213
+ };
214
+ break;
215
+ case "tool-error":
216
+ yield {
217
+ type: "tool-call-error",
218
+ name: value.name,
219
+ toolCallId: value.id,
220
+ msg: value.data,
221
+ args: call.input,
222
+ };
223
+ break;
224
+ case "tool-init":
225
+ yield {
226
+ type: "tool-call-update",
227
+ name: value.name,
228
+ toolCallId: value.id,
229
+ msg: value.data,
230
+ args: call.input,
231
+ };
232
+ break;
233
+ default:
234
+ logger.debug(`Unhandled tool message event: ${value.event}`);
235
+ break;
236
+ }
237
+ }
238
+ else {
239
+ toolResultValues.push(value);
240
+ }
241
+ }
242
+ const finalValue = toolResultValues.length > 0
243
+ ? toolResultValues.at(-1)
244
+ : undefined;
245
+ resultOutput = formatToolResult(finalValue);
246
+ }
247
+ else {
248
+ resultOutput = formatToolResult(output);
249
+ yield {
250
+ type: "tool-call-end",
251
+ name: call.toolName,
252
+ toolCallId: call.toolCallId,
253
+ msg: "success",
254
+ args: null,
255
+ };
256
+ }
257
+ }
258
+ catch (err) {
259
+ resultOutput = `Tool error: ${err instanceof Error ? err.message : String(err)}`;
260
+ yield {
261
+ type: "tool-call-error",
262
+ name: toolName,
263
+ toolCallId: call.toolCallId,
264
+ msg: resultOutput,
265
+ args: null,
266
+ };
267
+ }
268
+ }
269
+ }
270
+ catch (error) {
271
+ resultOutput = `Tool error: ${error instanceof Error ? error.message : String(error)}`;
272
+ yield {
273
+ type: "tool-call-error",
274
+ name: toolName,
275
+ toolCallId: call.toolCallId,
276
+ msg: resultOutput,
277
+ args: null,
278
+ };
279
+ }
280
+ toolMessages.push({
281
+ role: "tool",
282
+ content: [
283
+ {
284
+ type: "tool-result",
285
+ toolName,
286
+ toolCallId: call.toolCallId,
287
+ output: {
288
+ type: "text",
289
+ value: resultOutput,
290
+ },
291
+ },
292
+ ],
293
+ });
294
+ }
295
+ messageHistory.appendToolMessages(toolMessages);
296
+ // Calculate usage for the current step/iteration
297
+ const stepUsage = await result.usage;
298
+ this._state.usage.inputTokens = stepUsage.inputTokens ?? 0;
299
+ this._state.usage.outputTokens = stepUsage.outputTokens ?? 0;
300
+ this._state.usage.totalTokens = stepUsage.totalTokens ?? 0;
301
+ this._state.usage.cachedInputTokens = stepUsage.cachedInputTokens ?? 0;
302
+ this._state.usage.reasoningTokens = stepUsage.reasoningTokens ?? 0;
303
+ this._state.totalUsage.inputTokens += stepUsage.inputTokens ?? 0;
304
+ this._state.totalUsage.outputTokens += stepUsage.outputTokens ?? 0;
305
+ this._state.totalUsage.totalTokens += stepUsage.totalTokens ?? 0;
306
+ this._state.totalUsage.cachedInputTokens +=
307
+ stepUsage.cachedInputTokens ?? 0;
308
+ this._state.totalUsage.reasoningTokens +=
309
+ stepUsage.reasoningTokens ?? 0;
310
+ // Consume the rest of the team if necessary
311
+ // await result.consumeStream();
312
+ yield {
313
+ type: "step-stop",
314
+ };
315
+ // continue iterations
316
+ iter += 1;
317
+ }
318
+ catch (error) {
319
+ consecutiveErrors += 1;
320
+ logger.error(error, // Log the full error object
321
+ `Error on manual agent loop streamText (attempt ${consecutiveErrors}/${maxRetries + 1})`);
322
+ const errorMsg = error.message.length > 100
323
+ ? `${error.message.slice(0, 100)}...`
324
+ : error.message;
325
+ yield {
326
+ type: "agent-error",
327
+ message: errorMsg,
328
+ };
329
+ if (NoOutputGeneratedError.isInstance(error)) {
330
+ break;
331
+ }
332
+ // Break loop if we exceed max retries
333
+ if (consecutiveErrors > maxRetries) {
334
+ yield {
335
+ type: "agent-error",
336
+ message: `Exceeded maximum retry attempts (${maxRetries}). Stopping manual loop.`,
337
+ };
338
+ break;
339
+ }
340
+ }
341
+ finally {
342
+ this._state.timestamps.stop = performance.now();
343
+ }
344
+ }
345
+ // Track aggregate usage across all steps when available
346
+ tokenTracker.trackUsage("repl", this._state.totalUsage);
347
+ }
348
+ abort() {
349
+ this.abortController.abort();
350
+ // Reset the abort controller for the next run
351
+ this.abortController = new AbortController();
352
+ }
353
+ resetState() {
354
+ const { modelManager,
355
+ // messageHistory,
356
+ } = this.opts;
357
+ this._state = {
358
+ modelId: modelManager.getModel("repl").modelId,
359
+ modelConfig: modelManager.getModelMetadata("repl"),
360
+ usage: {
361
+ inputTokens: 0,
362
+ outputTokens: 0,
363
+ totalTokens: 0,
364
+ reasoningTokens: 0,
365
+ cachedInputTokens: 0,
366
+ },
367
+ totalUsage: {
368
+ inputTokens: 0,
369
+ outputTokens: 0,
370
+ totalTokens: 0,
371
+ reasoningTokens: 0,
372
+ cachedInputTokens: 0,
373
+ },
374
+ steps: [],
375
+ timestamps: {
376
+ start: 0,
377
+ stop: 0,
378
+ },
379
+ };
380
+ return this._state;
381
+ }
382
+ }
383
+ function formatToolResult(value) {
384
+ if (typeof value === "string") {
385
+ return value;
386
+ }
387
+ if (value === undefined) {
388
+ return "";
389
+ }
390
+ if (value === null) {
391
+ return "null";
392
+ }
393
+ if (typeof value === "number" || typeof value === "boolean") {
394
+ return String(value);
395
+ }
396
+ try {
397
+ const serialized = JSON.stringify(value);
398
+ if (typeof serialized === "string") {
399
+ return serialized;
400
+ }
401
+ }
402
+ catch {
403
+ // noop - fallback below
404
+ }
405
+ return String(value);
406
+ }
@@ -0,0 +1,41 @@
1
+ import type { LanguageModelUsage, ToolExecuteFunction } from "ai";
2
+ import { type ToolCallRepairFunction } from "ai";
3
+ import type { MessageHistory } from "../messages.ts";
4
+ import type { ModelManager } from "../models/manager.ts";
5
+ import type { Terminal } from "../terminal/index.ts";
6
+ import type { CompleteToolSet } from "../tools/index.ts";
7
+ type ManualLoopOptions = {
8
+ modelManager: ModelManager;
9
+ terminal: Terminal;
10
+ messageHistory: MessageHistory;
11
+ systemPrompt: string;
12
+ input: string;
13
+ toolDefs: CompleteToolSet;
14
+ executors: Map<keyof CompleteToolSet, ToolExecuteFunction<unknown, string>>;
15
+ maxIterations?: number;
16
+ maxRetries?: number;
17
+ abortSignal?: AbortSignal;
18
+ toolCallRepair?: ToolCallRepairFunction<CompleteToolSet>;
19
+ };
20
+ type ManualLoopResult = {
21
+ steps: {
22
+ toolResults: Array<{
23
+ toolName: string;
24
+ }>;
25
+ toolCalls: Array<{
26
+ toolName: string;
27
+ }>;
28
+ }[];
29
+ usage: {
30
+ [K in keyof LanguageModelUsage]-?: number;
31
+ };
32
+ totalUsage: {
33
+ [K in keyof LanguageModelUsage]-?: number;
34
+ };
35
+ };
36
+ export declare function runManualLoop(opts: ManualLoopOptions): Promise<ManualLoopResult>;
37
+ export declare function consumeToolAsyncIterable(iterable: AsyncIterable<unknown>, terminal?: Terminal): Promise<{
38
+ finalValue: unknown;
39
+ }>;
40
+ export {};
41
+ //# sourceMappingURL=manual-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-loop.d.ts","sourceRoot":"","sources":["../../source/agent/manual-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,IAAI,CAAC;AACZ,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,IAAI,CAAC;AAEZ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,eAAe,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,sBAAsB,CAAC,eAAe,CAAC,CAAC;CAC1D,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE;QACL,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzC,SAAS,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxC,EAAE,CAAC;IACJ,KAAK,EAAE;SAAG,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM;KAAE,CAAC;IACrD,UAAU,EAAE;SAAG,CAAC,IAAI,MAAM,kBAAkB,CAAC,CAAC,GAAG,MAAM;KAAE,CAAC;CAC3D,CAAC;AAEF,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CAoS3B;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAuBlC"}