@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
package/README.md CHANGED
@@ -10,27 +10,30 @@ Acai is a powerful **AI-driven command-line interface (CLI) tool** designed to a
10
10
 
11
11
  ### Core Functionality:
12
12
 
13
- * **Interactive AI Assistant:** Engage in a conversational REPL (Read-Eval-Print Loop) to get assistance with coding, debugging, refactoring, and more.
13
+ * **Interactive AI Assistant:** Engage in a conversational REPL (Read-Eval-Print Loop) or TUI (Terminal User Interface) to get assistance with coding, debugging, refactoring, and more.
14
14
  * **Codebase Interaction:** Read, edit, and navigate files; search code; and understand project structure.
15
15
  * **Git Integration:** Generate conventional commits, review pull requests, and manage local changes.
16
16
  * **Extensible Tooling:** Utilizes a suite of internal tools (e.g., `bash`, `codeInterpreter`, `webSearch`) to perform actions.
17
17
  * **Multi-Model Support:** Seamlessly switch between various AI providers (e.g., OpenAI, Google, Anthropic, DeepSeek, Groq, OpenRouter).
18
18
  * **Context Management:** Automatically incorporates relevant file content, clipboard data, and conversation history into AI prompts.
19
19
  * **Configurable & Learnable:** Customize behavior through project-specific rules and learn from user corrections.
20
+ * **Terminal User Interface:** Modern TUI with modal dialogs, autocomplete, and rich text formatting.
20
21
 
21
22
  ## ✨ Features
22
23
 
23
- * **Conversational REPL:** Intuitive command-line interface for interacting with the AI.
24
+ * **Conversational REPL/TUI:** Intuitive command-line interface and modern terminal UI for interacting with the AI.
24
25
  * **File System Operations:** Read, write, edit, move, and delete files.
25
26
  * **File & Directory Mentions:** Include file contents and entire directories in prompts using `@filename` and `@dirname` syntax.
26
- * **Code Navigation & Analysis:** Leverage Tree-sitter for intelligent code understanding.
27
+ * **Code Navigation & Analysis:** Advanced file searching and code analysis capabilities.
27
28
  * **Git Workflow Automation:** Streamline commit messages and code reviews.
28
29
  * **Web Integration:** Perform web searches and fetch content from URLs.
29
- * **Extensible Commands:** A rich set of built-in commands (`/files`, `/edit`, `/commit`, `/model`, `/help`, etc.).
30
+ * **Extensible Commands:** A rich set of built-in commands (`/help`, `/model`, `/usage`, `/list-tools`, etc.).
30
31
  * **Token Usage Tracking:** Monitor AI token consumption.
31
32
  * **Configurable AI Models:** Easily switch between different LLM providers and models.
32
- * **Shell Integration:** Execute shell commands inline using `!`command`` syntax.
33
+ * **Shell Integration:** Execute shell commands inline using `!`command`` syntax or via `/shell` command.
33
34
  * **Dynamic Tools:** Create and load custom tools from JavaScript files in your project or user directory.
35
+ * **Multi-workspace Support:** Work across multiple project directories simultaneously.
36
+ * **Skills System:** Discover and load specialized instruction files for specific tasks (PDF extraction, database migrations, etc.).
34
37
 
35
38
  ## 🛠️ Technologies Used
36
39
 
@@ -182,11 +185,17 @@ acai
182
185
  # Specify a model
183
186
  acai --model anthropic:sonnet
184
187
 
185
- # One-shot mode
186
- acai -p "What files contain the term 'toolCallRepair'?" -o
188
+ # CLI mode (one-shot execution)
189
+ acai -p "What files contain the term 'toolCallRepair'?"
187
190
 
188
191
  # Pipe input
189
192
  echo "How many TypeScript files are in this project?" | acai
193
+
194
+ # Disable skills discovery
195
+ acai --no-skills
196
+
197
+ # Add additional working directories
198
+ acai --add-dir /path/to/project1 --add-dir /path/to/project2
190
199
  ```
191
200
 
192
201
  Once in the REPL, you can type your prompts or use commands:
@@ -216,6 +225,56 @@ You can reference files and directories directly in your prompts:
216
225
  - `@http://example.com` - Fetch and include web content
217
226
  - ``!`command` `` - Execute shell command and include output
218
227
 
228
+ ### Prompt Arguments
229
+
230
+ Pass dynamic values to commands using argument placeholders in custom prompts:
231
+
232
+ #### All arguments with `$ARGUMENTS`
233
+
234
+ The `$ARGUMENTS` placeholder captures all arguments passed to the command:
235
+
236
+ ```bash
237
+ # Command definition
238
+ echo 'Fix issue #$ARGUMENTS following our coding standards' > .acai/prompts/fix-issue.md
239
+
240
+ # Usage
241
+ > /fix-issue 123 high-priority
242
+ # $ARGUMENTS becomes: "123 high-priority"
243
+ ```
244
+
245
+ #### Individual arguments with `$1`, `$2`, `$3`, etc.
246
+
247
+ Access specific arguments individually using positional parameters (similar to shell scripts):
248
+
249
+ ```bash
250
+ # Command definition
251
+ echo 'Review PR #$1 with priority $2 and assign to $3' > .acai/prompts/review-pr.md
252
+
253
+ # Usage
254
+ > /review-pr 456 high alice
255
+ # $1 becomes "456", $2 becomes "high", $3 becomes "alice"
256
+ ```
257
+
258
+ Use positional arguments when you need to:
259
+ - Access arguments individually in different parts of your command
260
+ - Provide defaults for missing arguments
261
+ - Build more structured commands with specific parameter roles
262
+
263
+ #### Backward compatibility with `{{INPUT}}`
264
+
265
+ The legacy `{{INPUT}}` placeholder is still supported and works the same as `$ARGUMENTS`:
266
+
267
+ ```bash
268
+ # Command definition
269
+ echo 'Analyze the following code: {{INPUT}}' > .acai/prompts/analyze.md
270
+
271
+ # Usage
272
+ > /analyze src/file.ts
273
+ # {{INPUT}} becomes: "src/file.ts"
274
+ ```
275
+
276
+ **Note:** Using `-p/--prompt` runs in CLI mode (one-shot execution), while running without a prompt starts interactive REPL mode.
277
+
219
278
  For a list of available commands, type `/help` within the REPL.
220
279
 
221
280
  ## Interactive CLI Commands
@@ -223,23 +282,27 @@ For a list of available commands, type `/help` within the REPL.
223
282
  - `/help` - Shows usage information
224
283
  - `/reset` - Saves chat history and resets the conversation
225
284
  - `/save` - Saves chat history
226
- - `/compact` - Saves, summarizes and resets the chat history
227
285
  - `/exit` or `/bye` - Exits and saves chat history
228
- - `/files [pattern]` - Select files interactively or by pattern, adding content to prompt
229
286
  - `/init` - Generate or improve `AGENTS.md`
230
- - `/editPrompt` - Edit the current prompt
231
287
  - `/paste` - Add clipboard contents to the next prompt
232
- - `/prompt <name>` - Load saved prompts. Project prompts override user prompts.
233
- - `/rules [view|add <text>|edit]` - View or edit persistent project rules/memories (formerly /memory)
288
+ - `/prompt <name> [arguments...]` - Load saved prompts with optional arguments. Project prompts override user prompts. Supports argument placeholders (`$ARGUMENTS`, `$1`, `$2`, etc.) in prompt files.
234
289
  - `/model [provider:model|category|provider]` - List or switch models
235
290
  - `/usage` - Show token usage breakdown
236
291
  - `/clear` - Clears the terminal screen for the current session
237
- - `/lastLog` - Show the last application log entries
238
- - `/appLog` - Show or follow the application log
239
292
  - `/generateRules` - Analyze the current conversation and suggest project rules
240
- - `/edit <path> "<change description>"` - Edit a file with AI assistance
241
293
  - `/copy` - Copy the last assistant response to the system clipboard
242
294
  - `/list-tools` or `/lt` - List all available static and dynamic tools
295
+ - `/add-dir <path>` - Add additional working directory
296
+ - `/list-dirs` - List all working directories
297
+ - `/remove-dir <path>` - Remove a working directory
298
+ - `/context` - Manage context selections
299
+ - `/health` - Check system health and dependencies
300
+ - `/history` - View and manage conversation history
301
+ - `/pickup` - Resume a previous conversation
302
+ - `/handoff` - Hand off conversation to another agent
303
+ - `/shell` - Execute shell commands
304
+
305
+ **Note**: Some commands mentioned in older documentation (like `/files`, `/edit`, `/compact`, `/rules`, `/lastLog`, `/appLog`) are currently disabled in the codebase.
243
306
 
244
307
  Clipboard notes:
245
308
  - macOS: uses `pbcopy`
@@ -463,6 +526,105 @@ Available tools:
463
526
  Total: 14 static, 2 dynamic
464
527
  ```
465
528
 
529
+ ## Skills System
530
+
531
+ Acai includes a powerful skills system that allows you to create and use specialized instruction files for specific tasks. Skills are markdown files with YAML frontmatter that provide detailed instructions for particular domains (e.g., database migrations, PDF extraction, code review).
532
+
533
+ ### How Skills Work
534
+
535
+ 1. **Discovery**: At startup, Acai scans multiple locations for skills
536
+ 2. **Listing**: Available skills are listed in the system prompt
537
+ 3. **On-demand loading**: When a task matches a skill's description, the agent uses the `read` tool to load the skill file
538
+ 4. **Execution**: The agent follows the instructions in the skill file
539
+
540
+ ### Skill File Format
541
+
542
+ Skills are markdown files named `SKILL.md` with YAML frontmatter:
543
+
544
+ ```markdown
545
+ ---
546
+ description: Extract text and tables from PDF files
547
+ name: pdf-extract # Optional, defaults to directory name
548
+ ---
549
+
550
+ # PDF Processing Instructions
551
+
552
+ 1. Use `pdftotext` to extract plain text
553
+ 2. For tables, use `tabula-py` or similar
554
+ 3. Always verify extraction quality
555
+
556
+ Scripts are in: {baseDir}/scripts/
557
+ Configuration: {baseDir}/config.json
558
+ ```
559
+
560
+ **Required fields:**
561
+ - `description`: Short description shown in system prompt
562
+
563
+ **Optional fields:**
564
+ - `name`: Override the skill name (defaults to directory name or colon-separated path)
565
+
566
+ **Placeholder:**
567
+ - `{baseDir}`: Replaced with the skill's base directory path
568
+
569
+ ### Skill Locations
570
+
571
+ Skills are loaded from these locations (later sources override earlier ones):
572
+
573
+ 1. `~/.codex/skills/**/SKILL.md` (Codex CLI user skills)
574
+ 2. `~/.claude/skills/*/SKILL.md` (Claude Code user skills)
575
+ 3. `<cwd>/.claude/skills/*/SKILL.md` (Claude Code project skills)
576
+ 4. `~/.acai/skills/**/SKILL.md` (Acai user skills)
577
+ 5. `<cwd>/.acai/skills/**/SKILL.md` (Acai project skills)
578
+
579
+ ### Directory Structure
580
+
581
+ Skills can be organized hierarchically with colon-separated names:
582
+
583
+ ```
584
+ ~/.acai/skills/
585
+ ├── pdf-extract/
586
+ │ ├── SKILL.md # Becomes "pdf-extract" skill
587
+ │ └── scripts/ # Optional: supporting files
588
+ ├── db/
589
+ │ └── migrate/
590
+ │ └── SKILL.md # Becomes "db:migrate" skill
591
+ └── aws/
592
+ └── s3/
593
+ └── upload/
594
+ └── SKILL.md # Becomes "aws:s3:upload" skill
595
+ ```
596
+
597
+ ### Compatibility
598
+
599
+ Acai's skills system is compatible with:
600
+ - **Pi Native Format**: `~/.acai/skills/**/SKILL.md` (recursive, colon-separated paths)
601
+ - **Claude Code Format**: `~/.claude/skills/*/SKILL.md` (single level only)
602
+ - **Codex CLI Format**: `~/.codex/skills/**/SKILL.md` (recursive, simple names)
603
+
604
+ ### Configuration
605
+
606
+ Skills are enabled by default. You can disable them via:
607
+
608
+ 1. **CLI flag**: `acai --no-skills`
609
+ 2. **Settings file**: Add to `~/.acai/acai.json` or `.acai/acai.json`:
610
+ ```json
611
+ {
612
+ "skills": {
613
+ "enabled": false
614
+ }
615
+ }
616
+ ```
617
+
618
+ ### Usage Example
619
+
620
+ 1. **Agent startup**: Scans all skill locations
621
+ 2. **System prompt**: Lists available skills
622
+ 3. **User request**: "Extract text from this PDF"
623
+ 4. **Agent matches**: Sees "pdf-extract: Extract text and tables from PDF files"
624
+ 5. **Skill loading**: Uses `read` tool to load `~/.acai/skills/pdf-extract/SKILL.md`
625
+ 6. **Placeholder substitution**: Replaces `{baseDir}` with skill directory path
626
+ 7. **Execution**: Follows instructions in skill file
627
+
466
628
  ## Configuration
467
629
 
468
630
  ### Project Configuration
@@ -477,6 +639,9 @@ Acai supports project-specific configuration through a `.acai/acai.json` file in
477
639
  "notify": true, // Optional: Enable system notifications (default: false)
478
640
  "tools": {
479
641
  "maxTokens": 30000 // Optional: Global max token limit for tools
642
+ },
643
+ "skills": {
644
+ "enabled": true // Optional: Enable/disable skills discovery (default: true)
480
645
  }
481
646
  }
482
647
  ```
@@ -484,7 +649,7 @@ Acai supports project-specific configuration through a `.acai/acai.json` file in
484
649
  ### Project-Specific Customization
485
650
 
486
651
  - **Rules/Guidelines**: Add project-specific AI behavior rules in `AGENTS.md`
487
- - **Custom Prompts**: Store reusable prompts in `.acai/prompts/`
652
+ - **Custom Prompts**: Store reusable prompts in `.acai/prompts/`. Supports argument placeholders (`$ARGUMENTS`, `$1`, `$2`, etc.) for dynamic content.
488
653
  - **Context Selections**: Save file/directory selections in `.acai/context/`
489
654
  - **Memory/Rules**: Persistent project rules stored in `.acai/rules/`
490
655
 
@@ -560,6 +725,7 @@ Here's a list of useful `npm` scripts for development:
560
725
  | `npm run knip` | Detects unused files, dependencies, and exports. |
561
726
  | `npm run check` | Interactively checks for and updates outdated npm packages. |
562
727
  | `npm run cpd` | Checks for copy-pasted code using `jscpd`. |
728
+ | `npm run typecheck` | Type checks the codebase without emitting files. |
563
729
 
564
730
  ### Code Structure
565
731
 
@@ -569,15 +735,20 @@ The project is organized as follows:
569
735
  .
570
736
  ├── .acai/ # Internal configuration, context, and temporary files
571
737
  ├── source/ # Main application source code
738
+ │ ├── agent/ # Agent loop and manual execution
739
+ │ ├── api/ # External API integrations (e.g., Exa)
572
740
  │ ├── cli.ts # CLI entry point
573
- │ ├── code-utils/ # Code parsing and navigation utilities (Tree-sitter)
574
- │ ├── commands/ # Implementations of REPL commands (e.g., /edit, /commit)
741
+ │ ├── commands/ # Implementations of REPL commands
742
+ │ ├── execution/ # Command execution utilities
575
743
  │ ├── middleware/ # AI request/response middleware (logging, rate limiting)
576
744
  │ ├── models/ # AI model providers and management
577
745
  │ ├── prompts/ # Prompt generation and management
746
+ │ ├── repl/ # REPL interface components
578
747
  │ ├── terminal/ # Terminal output formatting and rendering
748
+ │ ├── tui/ # Terminal User Interface components
579
749
  │ ├── tools/ # AI-callable tools (filesystem, git, web, bash, etc.)
580
- └── ... # Other core modules (config, logger, repl, token tracking)
750
+ ├── tokens/ # Token counting and tracking
751
+ │ └── utils/ # Utility functions
581
752
  ├── test/ # Unit tests
582
753
  ├── ARCHITECTURE.md # Detailed architectural overview and flow diagrams
583
754
  ├── AGENTS.md # Project-specific AI rules and guidelines
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node --experimental-vm-modules
2
+
3
+ import { spawn } from 'node:child_process';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { dirname, resolve } from 'node:path';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+
10
+ // Path to the main entry point
11
+ const mainScript = resolve(__dirname, '../dist/index.js');
12
+
13
+ // Spawn the main script with the same arguments
14
+ const child = spawn(process.execPath, ['--experimental-vm-modules', mainScript, ...process.argv.slice(2)], {
15
+ stdio: 'inherit',
16
+ env: process.env,
17
+ });
18
+
19
+ child.on('error', (err) => {
20
+ console.error('Failed to start subprocess:', err);
21
+ process.exit(1);
22
+ });
23
+
24
+ child.on('exit', (code) => {
25
+ process.exit(code || 0);
26
+ });
@@ -0,0 +1,132 @@
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 { ModelMetadata } from "../models/providers.ts";
6
+ import type { TokenTracker } from "../tokens/tracker.ts";
7
+ import type { CompleteToolNames, CompleteToolSet } from "../tools/index.ts";
8
+ type AgentOptions = {
9
+ modelManager: ModelManager;
10
+ tokenTracker: TokenTracker;
11
+ messageHistory: MessageHistory;
12
+ maxIterations?: number;
13
+ maxRetries?: number;
14
+ toolCallRepair?: ToolCallRepairFunction<CompleteToolSet>;
15
+ };
16
+ type RunOptions = {
17
+ systemPrompt: string;
18
+ input: string;
19
+ toolDefs: CompleteToolSet;
20
+ activeTools?: CompleteToolNames[];
21
+ executors: Map<keyof CompleteToolSet, ToolExecuteFunction<unknown, string>>;
22
+ abortSignal?: AbortSignal;
23
+ };
24
+ export type ToolEvent = {
25
+ type: "tool-call-start";
26
+ name: string;
27
+ toolCallId: string;
28
+ msg: string;
29
+ args: unknown;
30
+ } | {
31
+ type: "tool-call-init";
32
+ name: string;
33
+ toolCallId: string;
34
+ msg: string;
35
+ args: unknown;
36
+ } | {
37
+ type: "tool-call-update";
38
+ name: string;
39
+ toolCallId: string;
40
+ msg: string;
41
+ args: unknown;
42
+ } | {
43
+ type: "tool-call-end";
44
+ name: string;
45
+ toolCallId: string;
46
+ msg: string;
47
+ args: unknown;
48
+ } | {
49
+ type: "tool-call-error";
50
+ name: string;
51
+ toolCallId: string;
52
+ msg: string;
53
+ args: unknown;
54
+ };
55
+ type ToolCallLifeCycle = {
56
+ type: "tool-call-lifecycle";
57
+ toolCallId: string;
58
+ events: ToolEvent[];
59
+ };
60
+ export type AgentEvent = {
61
+ type: "agent-start";
62
+ } | {
63
+ type: "agent-stop";
64
+ } | {
65
+ type: "agent-error";
66
+ message: string;
67
+ } | {
68
+ type: "step-start";
69
+ } | {
70
+ type: "step-stop";
71
+ } | {
72
+ type: "thinking-start";
73
+ content: string;
74
+ } | {
75
+ type: "thinking";
76
+ content: string;
77
+ } | {
78
+ type: "thinking-end";
79
+ content: string;
80
+ } | {
81
+ type: "message";
82
+ role: "user";
83
+ content: string;
84
+ } | {
85
+ type: "message-start";
86
+ role: "assistant";
87
+ content: string;
88
+ } | {
89
+ type: "message";
90
+ role: "assistant";
91
+ content: string;
92
+ } | {
93
+ type: "message-end";
94
+ role: "assistant";
95
+ content: string;
96
+ } | ToolCallLifeCycle;
97
+ export type AgentState = {
98
+ modelId: string;
99
+ modelConfig: ModelMetadata;
100
+ steps: {
101
+ toolResults: Array<{
102
+ toolName: string;
103
+ }>;
104
+ toolCalls: Array<{
105
+ toolName: string;
106
+ }>;
107
+ }[];
108
+ usage: {
109
+ [K in keyof LanguageModelUsage]-?: number;
110
+ };
111
+ totalUsage: {
112
+ [K in keyof LanguageModelUsage]-?: number;
113
+ };
114
+ timestamps: {
115
+ start: number;
116
+ stop: number;
117
+ };
118
+ };
119
+ export declare class Agent {
120
+ private opts;
121
+ private _state;
122
+ private abortController;
123
+ constructor(opts: AgentOptions);
124
+ get state(): AgentState;
125
+ get abortSignal(): AbortSignal;
126
+ run(args: RunOptions): AsyncGenerator<AgentEvent>;
127
+ abort(): void;
128
+ resetState(): AgentState;
129
+ private processToolEvent;
130
+ }
131
+ export {};
132
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/agent/index.ts"],"names":[],"mappings":"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"}