@travisennis/acai 0.0.9 → 0.0.11

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 (403) hide show
  1. package/README.md +51 -760
  2. package/bin/acai +52 -0
  3. package/dist/agent/index.d.ts +12 -2
  4. package/dist/agent/index.d.ts.map +1 -1
  5. package/dist/agent/index.js +380 -199
  6. package/dist/agent/sub-agent.d.ts +23 -0
  7. package/dist/agent/sub-agent.d.ts.map +1 -0
  8. package/dist/agent/sub-agent.js +109 -0
  9. package/dist/cli/index.d.ts +26 -0
  10. package/dist/cli/index.d.ts.map +1 -0
  11. package/dist/{cli.js → cli/index.js} +84 -77
  12. package/dist/{stdin.d.ts → cli/stdin.d.ts} +2 -1
  13. package/dist/cli/stdin.d.ts.map +1 -0
  14. package/dist/{stdin.js → cli/stdin.js} +11 -0
  15. package/dist/commands/copy/index.js +2 -2
  16. package/dist/commands/copy/utils.d.ts.map +1 -1
  17. package/dist/commands/copy/utils.js +15 -13
  18. package/dist/commands/generate-rules/index.d.ts +1 -1
  19. package/dist/commands/generate-rules/index.d.ts.map +1 -1
  20. package/dist/commands/generate-rules/index.js +16 -101
  21. package/dist/commands/generate-rules/service.d.ts +22 -0
  22. package/dist/commands/generate-rules/service.d.ts.map +1 -0
  23. package/dist/commands/generate-rules/service.js +103 -0
  24. package/dist/commands/handoff/index.js +2 -2
  25. package/dist/commands/health/index.js +1 -1
  26. package/dist/commands/health/utils.d.ts +3 -2
  27. package/dist/commands/health/utils.d.ts.map +1 -1
  28. package/dist/commands/health/utils.js +6 -0
  29. package/dist/commands/history/index.d.ts +1 -1
  30. package/dist/commands/history/index.d.ts.map +1 -1
  31. package/dist/commands/history/index.js +17 -18
  32. package/dist/commands/history/types.d.ts +38 -0
  33. package/dist/commands/history/types.d.ts.map +1 -1
  34. package/dist/commands/history/utils.d.ts.map +1 -1
  35. package/dist/commands/history/utils.js +63 -58
  36. package/dist/commands/init/index.d.ts.map +1 -1
  37. package/dist/commands/init/index.js +3 -8
  38. package/dist/commands/init-project/index.d.ts.map +1 -1
  39. package/dist/commands/init-project/index.js +3 -3
  40. package/dist/commands/init-project/utils.d.ts +2 -1
  41. package/dist/commands/init-project/utils.d.ts.map +1 -1
  42. package/dist/commands/init-project/utils.js +10 -2
  43. package/dist/commands/list-tools/index.d.ts.map +1 -1
  44. package/dist/commands/list-tools/index.js +7 -31
  45. package/dist/commands/manager.d.ts +2 -2
  46. package/dist/commands/manager.d.ts.map +1 -1
  47. package/dist/commands/manager.js +55 -33
  48. package/dist/commands/model/index.d.ts.map +1 -1
  49. package/dist/commands/model/index.js +20 -151
  50. package/dist/commands/model/model-panel.d.ts +4 -0
  51. package/dist/commands/model/model-panel.d.ts.map +1 -0
  52. package/dist/commands/model/model-panel.js +144 -0
  53. package/dist/commands/paste/index.d.ts.map +1 -1
  54. package/dist/commands/paste/index.js +59 -62
  55. package/dist/commands/paste/utils.d.ts.map +1 -1
  56. package/dist/commands/paste/utils.js +88 -58
  57. package/dist/commands/pickup/index.d.ts.map +1 -1
  58. package/dist/commands/pickup/index.js +6 -3
  59. package/dist/commands/pickup/utils.js +3 -3
  60. package/dist/commands/resources/index.d.ts.map +1 -1
  61. package/dist/commands/resources/index.js +33 -50
  62. package/dist/commands/review/index.d.ts.map +1 -1
  63. package/dist/commands/review/index.js +3 -117
  64. package/dist/commands/review/review-panel.d.ts +3 -0
  65. package/dist/commands/review/review-panel.d.ts.map +1 -0
  66. package/dist/commands/review/review-panel.js +186 -0
  67. package/dist/commands/review/utils.d.ts +15 -1
  68. package/dist/commands/review/utils.d.ts.map +1 -1
  69. package/dist/commands/review/utils.js +127 -68
  70. package/dist/commands/session/index.d.ts +1 -1
  71. package/dist/commands/session/index.d.ts.map +1 -1
  72. package/dist/commands/session/index.js +124 -135
  73. package/dist/commands/shell/index.d.ts.map +1 -1
  74. package/dist/commands/shell/index.js +16 -1
  75. package/dist/commands/types.d.ts +2 -2
  76. package/dist/commands/types.d.ts.map +1 -1
  77. package/dist/{config.d.ts → config/index.d.ts} +20 -9
  78. package/dist/config/index.d.ts.map +1 -0
  79. package/dist/{config.js → config/index.js} +43 -42
  80. package/dist/execution/index.d.ts.map +1 -1
  81. package/dist/execution/index.js +75 -55
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +148 -141
  85. package/dist/middleware/cache.d.ts.map +1 -1
  86. package/dist/middleware/cache.js +18 -36
  87. package/dist/models/ai-config.d.ts +1 -0
  88. package/dist/models/ai-config.d.ts.map +1 -1
  89. package/dist/models/ai-config.js +4 -3
  90. package/dist/models/anthropic-provider.d.ts +2 -5
  91. package/dist/models/anthropic-provider.d.ts.map +1 -1
  92. package/dist/models/anthropic-provider.js +3 -70
  93. package/dist/models/deepseek-provider.d.ts +1 -0
  94. package/dist/models/deepseek-provider.d.ts.map +1 -1
  95. package/dist/models/google-provider.d.ts +2 -3
  96. package/dist/models/google-provider.d.ts.map +1 -1
  97. package/dist/models/google-provider.js +0 -26
  98. package/dist/models/groq-provider.d.ts +1 -0
  99. package/dist/models/groq-provider.d.ts.map +1 -1
  100. package/dist/models/manager.d.ts +13 -2
  101. package/dist/models/manager.d.ts.map +1 -1
  102. package/dist/models/manager.js +20 -8
  103. package/dist/models/openai-provider.d.ts +2 -5
  104. package/dist/models/openai-provider.d.ts.map +1 -1
  105. package/dist/models/openai-provider.js +0 -52
  106. package/dist/models/opencode-go-provider.d.ts +25 -0
  107. package/dist/models/opencode-go-provider.d.ts.map +1 -0
  108. package/dist/models/opencode-go-provider.js +78 -0
  109. package/dist/models/opencode-zen-provider.d.ts +7 -3
  110. package/dist/models/opencode-zen-provider.d.ts.map +1 -1
  111. package/dist/models/opencode-zen-provider.js +49 -10
  112. package/dist/models/openrouter-provider.d.ts +27 -31
  113. package/dist/models/openrouter-provider.d.ts.map +1 -1
  114. package/dist/models/openrouter-provider.js +121 -180
  115. package/dist/models/providers.d.ts +3 -3
  116. package/dist/models/providers.d.ts.map +1 -1
  117. package/dist/models/providers.js +6 -0
  118. package/dist/models/xai-provider.d.ts +4 -3
  119. package/dist/models/xai-provider.d.ts.map +1 -1
  120. package/dist/models/xai-provider.js +18 -18
  121. package/dist/modes/manager.d.ts +24 -0
  122. package/dist/modes/manager.d.ts.map +1 -0
  123. package/dist/modes/manager.js +77 -0
  124. package/dist/modes/prompts.d.ts +2 -0
  125. package/dist/modes/prompts.d.ts.map +1 -0
  126. package/dist/modes/prompts.js +142 -0
  127. package/dist/prompts/mentions.d.ts +11 -0
  128. package/dist/prompts/mentions.d.ts.map +1 -0
  129. package/dist/{mentions.js → prompts/mentions.js} +55 -85
  130. package/dist/{prompts.d.ts → prompts/system-prompt.d.ts} +7 -2
  131. package/dist/prompts/system-prompt.d.ts.map +1 -0
  132. package/dist/{prompts.js → prompts/system-prompt.js} +31 -16
  133. package/dist/repl/index.d.ts +174 -0
  134. package/dist/repl/index.d.ts.map +1 -0
  135. package/dist/{repl-new.js → repl/index.js} +397 -76
  136. package/dist/repl/project-status.d.ts +1 -0
  137. package/dist/repl/project-status.d.ts.map +1 -1
  138. package/dist/repl/project-status.js +4 -1
  139. package/dist/sessions/manager.d.ts +92 -0
  140. package/dist/sessions/manager.d.ts.map +1 -1
  141. package/dist/sessions/manager.js +262 -9
  142. package/dist/sessions/summary.d.ts +4 -0
  143. package/dist/sessions/summary.d.ts.map +1 -0
  144. package/dist/sessions/summary.js +30 -0
  145. package/dist/skills/index.d.ts +29 -0
  146. package/dist/skills/index.d.ts.map +1 -0
  147. package/dist/skills/index.js +294 -0
  148. package/dist/subagents/index.d.ts +16 -0
  149. package/dist/subagents/index.d.ts.map +1 -0
  150. package/dist/subagents/index.js +231 -0
  151. package/dist/terminal/control.d.ts +1 -1
  152. package/dist/terminal/control.d.ts.map +1 -1
  153. package/dist/terminal/control.js +3 -3
  154. package/dist/terminal/east-asian-width.d.ts.map +1 -1
  155. package/dist/terminal/east-asian-width.js +404 -351
  156. package/dist/terminal/keys.d.ts +17 -0
  157. package/dist/terminal/keys.d.ts.map +1 -1
  158. package/dist/terminal/keys.js +37 -0
  159. package/dist/terminal/select-prompt.d.ts.map +1 -1
  160. package/dist/terminal/select-prompt.js +24 -12
  161. package/dist/terminal/string-width.d.ts.map +1 -1
  162. package/dist/terminal/string-width.js +25 -27
  163. package/dist/terminal/style.d.ts.map +1 -1
  164. package/dist/terminal/style.js +4 -7
  165. package/dist/terminal/supports-color.d.ts.map +1 -1
  166. package/dist/terminal/supports-color.js +41 -27
  167. package/dist/terminal/table/cell.d.ts +12 -0
  168. package/dist/terminal/table/cell.d.ts.map +1 -1
  169. package/dist/terminal/table/cell.js +40 -25
  170. package/dist/terminal/table/layout-manager.d.ts.map +1 -1
  171. package/dist/terminal/table/layout-manager.js +100 -68
  172. package/dist/terminal/table/utils.d.ts +1 -1
  173. package/dist/terminal/table/utils.d.ts.map +1 -1
  174. package/dist/terminal/table/utils.js +17 -10
  175. package/dist/terminal/wrap-ansi.d.ts.map +1 -1
  176. package/dist/terminal/wrap-ansi.js +174 -105
  177. package/dist/tokens/tracker.d.ts +1 -0
  178. package/dist/tokens/tracker.d.ts.map +1 -1
  179. package/dist/tokens/tracker.js +3 -0
  180. package/dist/tools/agent.d.ts +27 -0
  181. package/dist/tools/agent.d.ts.map +1 -0
  182. package/dist/tools/agent.js +81 -0
  183. package/dist/tools/apply-patch.d.ts +62 -0
  184. package/dist/tools/apply-patch.d.ts.map +1 -0
  185. package/dist/tools/apply-patch.js +377 -0
  186. package/dist/tools/bash.d.ts +4 -3
  187. package/dist/tools/bash.d.ts.map +1 -1
  188. package/dist/tools/bash.js +349 -141
  189. package/dist/tools/directory-tree.d.ts +3 -3
  190. package/dist/tools/directory-tree.d.ts.map +1 -1
  191. package/dist/tools/directory-tree.js +8 -5
  192. package/dist/tools/dynamic-tool-loader.d.ts +3 -6
  193. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  194. package/dist/tools/dynamic-tool-loader.js +20 -4
  195. package/dist/tools/edit-file.d.ts +7 -7
  196. package/dist/tools/edit-file.d.ts.map +1 -1
  197. package/dist/tools/edit-file.js +292 -85
  198. package/dist/tools/glob.d.ts +6 -6
  199. package/dist/tools/glob.d.ts.map +1 -1
  200. package/dist/tools/glob.js +110 -63
  201. package/dist/tools/grep.d.ts +15 -12
  202. package/dist/tools/grep.d.ts.map +1 -1
  203. package/dist/tools/grep.js +315 -193
  204. package/dist/tools/index.d.ts +114 -9
  205. package/dist/tools/index.d.ts.map +1 -1
  206. package/dist/tools/index.js +39 -24
  207. package/dist/tools/ls.d.ts +2 -2
  208. package/dist/tools/ls.d.ts.map +1 -1
  209. package/dist/tools/ls.js +7 -5
  210. package/dist/tools/read-file.d.ts +4 -6
  211. package/dist/tools/read-file.d.ts.map +1 -1
  212. package/dist/tools/read-file.js +84 -39
  213. package/dist/tools/save-file.d.ts +3 -3
  214. package/dist/tools/save-file.d.ts.map +1 -1
  215. package/dist/tools/save-file.js +36 -31
  216. package/dist/tools/skill.d.ts +23 -0
  217. package/dist/tools/skill.d.ts.map +1 -0
  218. package/dist/tools/skill.js +65 -0
  219. package/dist/tools/think.d.ts.map +1 -1
  220. package/dist/tools/think.js +2 -9
  221. package/dist/tools/utils.d.ts +2 -0
  222. package/dist/tools/utils.d.ts.map +1 -1
  223. package/dist/tools/utils.js +12 -0
  224. package/dist/tools/web-fetch.d.ts +50 -0
  225. package/dist/tools/web-fetch.d.ts.map +1 -0
  226. package/dist/tools/web-fetch.js +446 -0
  227. package/dist/tools/web-search.d.ts +44 -0
  228. package/dist/tools/web-search.d.ts.map +1 -0
  229. package/dist/tools/web-search.js +226 -0
  230. package/dist/tui/autocomplete/attachment-provider.d.ts +3 -6
  231. package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -1
  232. package/dist/tui/autocomplete/attachment-provider.js +25 -78
  233. package/dist/tui/autocomplete/base-provider.d.ts +1 -0
  234. package/dist/tui/autocomplete/base-provider.d.ts.map +1 -1
  235. package/dist/tui/autocomplete/combined-provider.d.ts +1 -4
  236. package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -1
  237. package/dist/tui/autocomplete/combined-provider.js +3 -17
  238. package/dist/tui/autocomplete/command-provider.d.ts +1 -0
  239. package/dist/tui/autocomplete/command-provider.d.ts.map +1 -1
  240. package/dist/tui/autocomplete/command-provider.js +3 -0
  241. package/dist/tui/autocomplete/file-search-provider.d.ts +2 -1
  242. package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -1
  243. package/dist/tui/autocomplete/file-search-provider.js +37 -17
  244. package/dist/tui/autocomplete/skill-provider.d.ts +17 -0
  245. package/dist/tui/autocomplete/skill-provider.d.ts.map +1 -0
  246. package/dist/tui/autocomplete/skill-provider.js +49 -0
  247. package/dist/tui/autocomplete/utils.d.ts +2 -1
  248. package/dist/tui/autocomplete/utils.d.ts.map +1 -1
  249. package/dist/tui/autocomplete/utils.js +25 -23
  250. package/dist/tui/autocomplete.d.ts +2 -2
  251. package/dist/tui/autocomplete.d.ts.map +1 -1
  252. package/dist/tui/autocomplete.js +3 -5
  253. package/dist/tui/components/assistant-message.d.ts.map +1 -1
  254. package/dist/tui/components/assistant-message.js +0 -4
  255. package/dist/tui/components/editor.d.ts +18 -3
  256. package/dist/tui/components/editor.d.ts.map +1 -1
  257. package/dist/tui/components/editor.js +211 -237
  258. package/dist/tui/components/footer.d.ts +6 -4
  259. package/dist/tui/components/footer.d.ts.map +1 -1
  260. package/dist/tui/components/footer.js +49 -25
  261. package/dist/tui/components/markdown.d.ts +10 -7
  262. package/dist/tui/components/markdown.d.ts.map +1 -1
  263. package/dist/tui/components/markdown.js +57 -39
  264. package/dist/tui/components/modal.d.ts.map +1 -1
  265. package/dist/tui/components/modal.js +35 -33
  266. package/dist/tui/components/notification.d.ts +13 -2
  267. package/dist/tui/components/notification.d.ts.map +1 -1
  268. package/dist/tui/components/notification.js +36 -2
  269. package/dist/tui/components/progress-bar.js +1 -1
  270. package/dist/tui/components/select-list.d.ts +1 -0
  271. package/dist/tui/components/select-list.d.ts.map +1 -1
  272. package/dist/tui/components/select-list.js +14 -11
  273. package/dist/tui/components/text.d.ts +16 -0
  274. package/dist/tui/components/text.d.ts.map +1 -1
  275. package/dist/tui/components/text.js +72 -57
  276. package/dist/tui/components/thinking-block.d.ts +9 -0
  277. package/dist/tui/components/thinking-block.d.ts.map +1 -1
  278. package/dist/tui/components/thinking-block.js +43 -11
  279. package/dist/tui/components/tool-execution.d.ts +5 -1
  280. package/dist/tui/components/tool-execution.d.ts.map +1 -1
  281. package/dist/tui/components/tool-execution.js +19 -10
  282. package/dist/tui/components/user-message.d.ts.map +1 -1
  283. package/dist/tui/components/user-message.js +0 -3
  284. package/dist/tui/components/welcome.d.ts +2 -1
  285. package/dist/tui/components/welcome.d.ts.map +1 -1
  286. package/dist/tui/components/welcome.js +2 -2
  287. package/dist/tui/editor-launcher.d.ts +3 -2
  288. package/dist/tui/editor-launcher.d.ts.map +1 -1
  289. package/dist/tui/index.d.ts +0 -1
  290. package/dist/tui/index.d.ts.map +1 -1
  291. package/dist/tui/terminal.d.ts.map +1 -1
  292. package/dist/tui/terminal.js +10 -2
  293. package/dist/tui/tui.d.ts +43 -0
  294. package/dist/tui/tui.d.ts.map +1 -1
  295. package/dist/tui/tui.js +166 -41
  296. package/dist/tui/utils.d.ts +1 -5
  297. package/dist/tui/utils.d.ts.map +1 -1
  298. package/dist/tui/utils.js +271 -44
  299. package/dist/utils/bash/parse.d.ts +19 -0
  300. package/dist/utils/bash/parse.d.ts.map +1 -0
  301. package/dist/utils/bash/parse.js +223 -0
  302. package/dist/utils/bash/quote.d.ts +6 -0
  303. package/dist/utils/bash/quote.d.ts.map +1 -0
  304. package/dist/utils/bash/quote.js +23 -0
  305. package/dist/utils/bash.d.ts.map +1 -1
  306. package/dist/utils/bash.js +211 -126
  307. package/dist/utils/command-protection.d.ts +28 -0
  308. package/dist/utils/command-protection.d.ts.map +1 -0
  309. package/dist/utils/command-protection.js +324 -0
  310. package/dist/utils/dedent.d.ts.map +1 -0
  311. package/dist/utils/env-expand.d.ts +2 -0
  312. package/dist/utils/env-expand.d.ts.map +1 -0
  313. package/dist/utils/env-expand.js +8 -0
  314. package/dist/utils/filesystem/path-display.d.ts +11 -0
  315. package/dist/utils/filesystem/path-display.d.ts.map +1 -0
  316. package/dist/utils/filesystem/path-display.js +32 -0
  317. package/dist/utils/filesystem/security.d.ts +2 -2
  318. package/dist/utils/filesystem/security.d.ts.map +1 -1
  319. package/dist/utils/filesystem/security.js +28 -30
  320. package/dist/utils/formatting.d.ts.map +1 -0
  321. package/dist/{formatting.js → utils/formatting.js} +1 -1
  322. package/dist/utils/git.d.ts +4 -0
  323. package/dist/utils/git.d.ts.map +1 -1
  324. package/dist/utils/git.js +30 -0
  325. package/dist/utils/glob.d.ts +1 -1
  326. package/dist/utils/glob.d.ts.map +1 -1
  327. package/dist/utils/logger.d.ts.map +1 -0
  328. package/dist/{logger.js → utils/logger.js} +1 -1
  329. package/dist/utils/parsing.d.ts.map +1 -0
  330. package/dist/utils/process.d.ts.map +1 -1
  331. package/dist/utils/process.js +90 -37
  332. package/dist/utils/templates.d.ts +2 -0
  333. package/dist/utils/templates.d.ts.map +1 -0
  334. package/dist/utils/templates.js +24 -0
  335. package/dist/utils/version.d.ts.map +1 -0
  336. package/dist/{version.js → utils/version.js} +1 -1
  337. package/package.json +35 -26
  338. package/dist/cli.d.ts +0 -23
  339. package/dist/cli.d.ts.map +0 -1
  340. package/dist/commands/add-directory/types.d.ts +0 -6
  341. package/dist/commands/add-directory/types.d.ts.map +0 -1
  342. package/dist/commands/add-directory/types.js +0 -1
  343. package/dist/commands/copy/types.d.ts +0 -3
  344. package/dist/commands/copy/types.d.ts.map +0 -1
  345. package/dist/commands/copy/types.js +0 -1
  346. package/dist/commands/exit/index.d.ts +0 -10
  347. package/dist/commands/exit/index.d.ts.map +0 -1
  348. package/dist/commands/exit/index.js +0 -21
  349. package/dist/commands/exit/types.d.ts +0 -8
  350. package/dist/commands/exit/types.d.ts.map +0 -1
  351. package/dist/commands/exit/types.js +0 -1
  352. package/dist/commands/exit/utils.d.ts +0 -2
  353. package/dist/commands/exit/utils.d.ts.map +0 -1
  354. package/dist/commands/exit/utils.js +0 -13
  355. package/dist/commands/prompt/index.d.ts +0 -5
  356. package/dist/commands/prompt/index.d.ts.map +0 -1
  357. package/dist/commands/prompt/index.js +0 -122
  358. package/dist/commands/prompt/types.d.ts +0 -15
  359. package/dist/commands/prompt/types.d.ts.map +0 -1
  360. package/dist/commands/prompt/types.js +0 -1
  361. package/dist/commands/prompt/utils.d.ts +0 -12
  362. package/dist/commands/prompt/utils.d.ts.map +0 -1
  363. package/dist/commands/prompt/utils.js +0 -107
  364. package/dist/commands/reset/index.d.ts +0 -3
  365. package/dist/commands/reset/index.d.ts.map +0 -1
  366. package/dist/commands/reset/index.js +0 -25
  367. package/dist/commands/reset/types.d.ts +0 -1
  368. package/dist/commands/reset/types.d.ts.map +0 -1
  369. package/dist/commands/reset/types.js +0 -3
  370. package/dist/commands/review/types.d.ts +0 -12
  371. package/dist/commands/review/types.d.ts.map +0 -1
  372. package/dist/commands/review/types.js +0 -1
  373. package/dist/commands/save/index.d.ts +0 -3
  374. package/dist/commands/save/index.d.ts.map +0 -1
  375. package/dist/commands/save/index.js +0 -19
  376. package/dist/config.d.ts.map +0 -1
  377. package/dist/dedent.d.ts.map +0 -1
  378. package/dist/formatting.d.ts.map +0 -1
  379. package/dist/logger.d.ts.map +0 -1
  380. package/dist/mentions.d.ts +0 -14
  381. package/dist/mentions.d.ts.map +0 -1
  382. package/dist/parsing.d.ts.map +0 -1
  383. package/dist/prompts.d.ts.map +0 -1
  384. package/dist/repl-new.d.ts +0 -65
  385. package/dist/repl-new.d.ts.map +0 -1
  386. package/dist/skills.d.ts +0 -16
  387. package/dist/skills.d.ts.map +0 -1
  388. package/dist/skills.js +0 -233
  389. package/dist/stdin.d.ts.map +0 -1
  390. package/dist/tui/autocomplete/path-provider.d.ts +0 -21
  391. package/dist/tui/autocomplete/path-provider.d.ts.map +0 -1
  392. package/dist/tui/autocomplete/path-provider.js +0 -164
  393. package/dist/utils/iterables.d.ts +0 -2
  394. package/dist/utils/iterables.d.ts.map +0 -1
  395. package/dist/utils/iterables.js +0 -6
  396. package/dist/version.d.ts.map +0 -1
  397. /package/dist/{dedent.d.ts → utils/dedent.d.ts} +0 -0
  398. /package/dist/{dedent.js → utils/dedent.js} +0 -0
  399. /package/dist/{formatting.d.ts → utils/formatting.d.ts} +0 -0
  400. /package/dist/{logger.d.ts → utils/logger.d.ts} +0 -0
  401. /package/dist/{parsing.d.ts → utils/parsing.d.ts} +0 -0
  402. /package/dist/{parsing.js → utils/parsing.js} +0 -0
  403. /package/dist/{version.d.ts → utils/version.d.ts} +0 -0
@@ -1,107 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import path from "node:path";
3
- export function replaceArgumentPlaceholders(content, args) {
4
- const allArguments = args.join(" ");
5
- let replacementsMade = false;
6
- let result = content;
7
- for (let i = 0; i < args.length; i++) {
8
- const placeholder = `$${i + 1}`;
9
- if (result.includes(placeholder)) {
10
- result = result.replaceAll(placeholder, args[i]);
11
- replacementsMade = true;
12
- }
13
- }
14
- if (result.includes("$ARGUMENTS")) {
15
- result = result.replaceAll("$ARGUMENTS", allArguments);
16
- replacementsMade = true;
17
- }
18
- if (result.includes("{{INPUT}}")) {
19
- result = result.replaceAll("{{INPUT}}", allArguments);
20
- replacementsMade = true;
21
- }
22
- if (!replacementsMade && allArguments.trim().length > 0) {
23
- result += `\n\n${allArguments}`;
24
- }
25
- return result;
26
- }
27
- export function parsePromptFile(content) {
28
- const frontMatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---\s*(?:\n([\s\S]*))?$/);
29
- if (!frontMatterMatch) {
30
- return {
31
- content,
32
- metadata: {
33
- description: content.split("\n")[0].trim().slice(0, 50) +
34
- (content.split("\n")[0].trim().length > 50 ? "..." : ""),
35
- enabled: true,
36
- },
37
- };
38
- }
39
- const yamlContent = frontMatterMatch[1];
40
- const promptContent = frontMatterMatch[2] || "";
41
- const defaultDescription = promptContent.split("\n")[0].trim().slice(0, 50) +
42
- (promptContent.split("\n")[0].trim().length > 50 ? "..." : "");
43
- let description = defaultDescription;
44
- let enabled = true;
45
- const descriptionMatch = yamlContent.match(/^description:\s*(.+)$/m);
46
- if (descriptionMatch) {
47
- description = descriptionMatch[1].trim();
48
- }
49
- const enabledMatch = yamlContent.match(/^enabled:\s*(true|false)$/im);
50
- if (enabledMatch) {
51
- enabled = enabledMatch[1].toLowerCase() === "true";
52
- }
53
- return {
54
- content: promptContent,
55
- metadata: {
56
- description,
57
- enabled,
58
- },
59
- };
60
- }
61
- export async function findPrompt(promptName, config) {
62
- const projectPromptDir = config.project.getPath("prompts");
63
- const projectPath = path.join(projectPromptDir, `${promptName}.md`);
64
- if (config.project.existsSync("prompts")) {
65
- try {
66
- const content = await readFile(projectPath, "utf8");
67
- const parsed = parsePromptFile(content);
68
- if (!parsed.metadata.enabled) {
69
- return null;
70
- }
71
- return {
72
- name: promptName,
73
- description: parsed.metadata.description,
74
- enabled: parsed.metadata.enabled,
75
- path: projectPath,
76
- type: "project",
77
- };
78
- }
79
- catch (error) {
80
- if (error.code !== "ENOENT") {
81
- throw error;
82
- }
83
- }
84
- }
85
- const userPromptDir = config.app.getPath("prompts");
86
- const userPath = path.join(userPromptDir, `${promptName}.md`);
87
- try {
88
- const content = await readFile(userPath, "utf8");
89
- const parsed = parsePromptFile(content);
90
- if (!parsed.metadata.enabled) {
91
- return null;
92
- }
93
- return {
94
- name: promptName,
95
- description: parsed.metadata.description,
96
- enabled: parsed.metadata.enabled,
97
- path: userPath,
98
- type: "user",
99
- };
100
- }
101
- catch (error) {
102
- if (error.code !== "ENOENT") {
103
- throw error;
104
- }
105
- }
106
- return null;
107
- }
@@ -1,3 +0,0 @@
1
- import type { CommandOptions, ReplCommand } from "../types.ts";
2
- export declare const resetCommand: ({ modelManager, sessionManager: messageHistory, }: CommandOptions) => ReplCommand;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/commands/reset/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,YAAY,GAAI,mDAG1B,cAAc,KAAG,WAsCnB,CAAC"}
@@ -1,25 +0,0 @@
1
- import { setTerminalTitle } from "../../terminal/control.js";
2
- export const resetCommand = ({ modelManager, sessionManager: messageHistory, }) => {
3
- return {
4
- command: "/reset",
5
- aliases: ["/new"],
6
- description: "Saves the chat history and then resets it.",
7
- getSubCommands: () => Promise.resolve([]),
8
- async handle(_args, { tui, container, editor, }) {
9
- if (!messageHistory.isEmpty()) {
10
- await messageHistory.save();
11
- messageHistory.create(modelManager.getModel("repl").modelId);
12
- }
13
- setTerminalTitle(`acai: ${process.cwd()}`);
14
- container.clear();
15
- editor.setText("");
16
- // Reset footer state to clear usage/cost/steps/tools/time
17
- const footer = tui.children.find((child) => child.constructor.name === "FooterComponent");
18
- if (footer) {
19
- footer.resetState();
20
- }
21
- tui.requestRender();
22
- return "continue";
23
- },
24
- };
25
- };
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../source/commands/reset/types.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- // Types for reset command
3
- // Currently no specific types needed beyond the base CommandOptions
@@ -1,12 +0,0 @@
1
- export interface FileChange {
2
- fileName: string;
3
- diff: string;
4
- stats: string;
5
- }
6
- export interface ReviewCommandOptions {
7
- tui: unknown;
8
- container: unknown;
9
- editor: unknown;
10
- inputContainer: unknown;
11
- }
12
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../source/commands/review/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- import type { CommandOptions, ReplCommand } from "../types.ts";
2
- export declare const saveCommand: ({ sessionManager: messageHistory, }: CommandOptions) => ReplCommand;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/commands/save/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,eAAO,MAAM,WAAW,GAAI,qCAEzB,cAAc,KAAG,WAyBnB,CAAC"}
@@ -1,19 +0,0 @@
1
- import style from "../../terminal/style.js";
2
- import { Spacer, Text } from "../../tui/index.js";
3
- export const saveCommand = ({ sessionManager: messageHistory, }) => {
4
- return {
5
- command: "/save",
6
- description: "Saves the chat history.",
7
- getSubCommands: () => Promise.resolve([]),
8
- async handle(_args, { tui, container, editor, }) {
9
- if (!messageHistory.isEmpty()) {
10
- await messageHistory.save();
11
- }
12
- container.addChild(new Spacer(1));
13
- container.addChild(new Text(style.green("Message history saved."), 0, 1));
14
- tui.requestRender();
15
- editor.setText("");
16
- return "continue";
17
- },
18
- };
19
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../source/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;8BAKI,MAAM,EAAE,GAAG,SAAS;;;;;;;;;4BAS3B,MAAM,EAAE;;;;CAIrB,CAAC;AAGX,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBA0CvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAK1B,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOjC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/C,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;CAIrC;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;;YAOlB,WAAW;IAenB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAgBnC,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjD,eAAe,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IA4B/D,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAe9C,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IAY7C,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAcjD,cAAc;IActB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAe/D,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;CAKjB;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dedent.d.ts","sourceRoot":"","sources":["../source/dedent.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;AAI9E,eAAO,MAAM,MAAM,EAAE,MA+CpB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../source/formatting.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,MAAM,CAaR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,MAAM,CAWR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,GACjB,MAAM,CAWR;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MACG,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MASjD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GAAI,cAAc,MAAM,KAAG,MAuCrD,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAwC1C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,MASvC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAGvD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../source/logger.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAgDxB,eAAO,MAAM,MAAM,6BAIjB,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { ModelMetadata } from "./models/providers.ts";
2
- import type { ContextItem } from "./prompts/manager.ts";
3
- export declare class PromptError extends Error {
4
- constructor(message: string, cause?: Error);
5
- }
6
- export declare function processPrompt(message: string, { baseDir, model, pasteStore, }: {
7
- baseDir: string;
8
- model: ModelMetadata;
9
- pasteStore?: Map<number, string>;
10
- }): Promise<{
11
- message: string;
12
- context: ContextItem[];
13
- }>;
14
- //# sourceMappingURL=mentions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../source/mentions.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAqBxD,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAI3C;AAwID,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,EACE,OAAO,EACP,KAAK,EACL,UAAU,GACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACA,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAkFtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../source/parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBtC,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,8CAE1D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../source/prompts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA6DF,KAAK,mBAAmB,GAAG;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,sBAAsB,CAAC;CACpC,CAAC;AAIF,wBAAsB,YAAY,CAChC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA4J7B"}
@@ -1,65 +0,0 @@
1
- import type { Agent, AgentEvent, AgentState } from "./agent/index.ts";
2
- import type { CommandManager } from "./commands/manager.ts";
3
- import type { WorkspaceContext } from "./index.ts";
4
- import type { ModelManager } from "./models/manager.ts";
5
- import type { PromptManager } from "./prompts/manager.ts";
6
- import type { SessionManager } from "./sessions/manager.ts";
7
- import type { TokenCounter } from "./tokens/counter.ts";
8
- import type { TokenTracker } from "./tokens/tracker.ts";
9
- import type { CompleteToolSet } from "./tools/index.ts";
10
- import type { ProcessTerminalOptions } from "./tui/terminal.ts";
11
- interface ReplOptions {
12
- agent: Agent;
13
- messageHistory: SessionManager;
14
- promptManager: PromptManager;
15
- modelManager: ModelManager;
16
- tokenTracker: TokenTracker;
17
- commands: CommandManager;
18
- config: Record<PropertyKey, unknown>;
19
- tokenCounter: TokenCounter;
20
- promptHistory: string[];
21
- workspace: WorkspaceContext;
22
- tools?: CompleteToolSet;
23
- terminalOptions?: ProcessTerminalOptions;
24
- }
25
- export declare class NewRepl {
26
- private options;
27
- private terminal;
28
- private tui;
29
- private welcome;
30
- private editor;
31
- private chatContainer;
32
- private statusContainer;
33
- private footer;
34
- private editorContainer;
35
- private notification;
36
- private isInitialized;
37
- private onInputCallback?;
38
- private loadingAnimation;
39
- private onInterruptCallback?;
40
- private onExitCallback?;
41
- private lastSigintTime;
42
- private exitNotificationTimer?;
43
- private pendingTools;
44
- private tools?;
45
- private streamingComponent;
46
- private thinkingBlockComponent;
47
- constructor(options: ReplOptions);
48
- init(): Promise<void>;
49
- handle(event: AgentEvent, state: AgentState): Promise<void>;
50
- private addMessageToChat;
51
- getUserInput(): Promise<string>;
52
- clearEditor(): void;
53
- setInterruptCallback(callback: () => void): void;
54
- setExitCallback(callback: (sessionId: string) => void): void;
55
- rerender(): Promise<void>;
56
- private reconstructSession;
57
- private extractUserMessageText;
58
- private renderAssistantMessage;
59
- private extractToolCallsFromAssistant;
60
- private createToolEvents;
61
- private handleCtrlC;
62
- stop(showExitMessage?: boolean): void;
63
- }
64
- export {};
65
- //# sourceMappingURL=repl-new.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repl-new.d.ts","sourceRoot":"","sources":["../source/repl-new.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAkBxD,OAAO,KAAK,EAAE,sBAAsB,EAAY,MAAM,mBAAmB,CAAC;AAE1E,UAAU,WAAW;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,cAAc,CAAC,CAA8B;IACrD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAC/C,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,KAAK,CAAC,CAAkB;IAGhC,OAAO,CAAC,kBAAkB,CAA0C;IAGpE,OAAO,CAAC,sBAAsB,CAAuC;gBAEzD,OAAO,EAAE,WAAW;IA4C1B,IAAI;IAoJJ,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IAqKjD,OAAO,CAAC,gBAAgB;IAWlB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC,WAAW,IAAI,IAAI;IAKnB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIhD,eAAe,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,QAAQ;IAed,OAAO,CAAC,kBAAkB;IA6E1B,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,6BAA6B;IAwDrC,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,WAAW;IAwCnB,IAAI,CAAC,eAAe,UAAQ,GAAG,IAAI;CAoBpC"}
package/dist/skills.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export interface Skill {
2
- name: string;
3
- description: string;
4
- filePath: string;
5
- baseDir: string;
6
- source: string;
7
- }
8
- export interface LoadSkillsFromDirOptions {
9
- dir: string;
10
- source: string;
11
- useColonPath?: boolean;
12
- }
13
- export declare function loadSkillsFromDir(options: LoadSkillsFromDirOptions, subdir?: string): Promise<Skill[]>;
14
- export declare function loadSkills(): Promise<Skill[]>;
15
- export declare function formatSkillsForPrompt(skills: Skill[]): string;
16
- //# sourceMappingURL=skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../source/skills.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAwOD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAK,GACV,OAAO,CAAC,KAAK,EAAE,CAAC,CASlB;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAyDnD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAkC7D"}
package/dist/skills.js DELETED
@@ -1,233 +0,0 @@
1
- import { readdir, readFile, stat } from "node:fs/promises";
2
- import { homedir } from "node:os";
3
- import { basename, dirname, join, resolve } from "node:path";
4
- import { logger } from "./logger.js";
5
- import { parseFrontMatter } from "./utils/yaml.js";
6
- const CONFIG_DIR_NAME = ".acai";
7
- // Validation functions
8
- function validateSkillName(name, directoryName) {
9
- // Check required field
10
- if (!name) {
11
- return { valid: false, error: "Name field is required" };
12
- }
13
- // Check length (1-64 characters)
14
- if (name.length < 1 || name.length > 64) {
15
- return { valid: false, error: "Name must be 1-64 characters long" };
16
- }
17
- // Check allowed characters (lowercase letters, numbers, hyphens)
18
- if (!/^[a-z0-9-]+$/.test(name)) {
19
- return {
20
- valid: false,
21
- error: "Name can only contain lowercase letters, numbers, and hyphens",
22
- };
23
- }
24
- // Check no leading or trailing hyphens
25
- if (name.startsWith("-") || name.endsWith("-")) {
26
- return { valid: false, error: "Name cannot start or end with a hyphen" };
27
- }
28
- // Check no consecutive hyphens
29
- if (name.includes("--")) {
30
- return { valid: false, error: "Name cannot contain consecutive hyphens" };
31
- }
32
- // Check matches directory name
33
- if (name !== directoryName) {
34
- return {
35
- valid: false,
36
- error: `Name "${name}" must match directory name "${directoryName}"`,
37
- };
38
- }
39
- return { valid: true };
40
- }
41
- function validateSkillDescription(description) {
42
- // Check required field
43
- if (!description) {
44
- return { valid: false, error: "Description field is required" };
45
- }
46
- // Check length (1-1024 characters)
47
- if (description.length < 1 || description.length > 1024) {
48
- return {
49
- valid: false,
50
- error: "Description must be 1-1024 characters long",
51
- };
52
- }
53
- return { valid: true };
54
- }
55
- function parseFrontmatter(content) {
56
- const { data, content: body } = parseFrontMatter(content);
57
- // Type cast and validate required fields
58
- const name = data["name"];
59
- const description = data["description"];
60
- // Set default empty values for optional fields
61
- const frontmatter = {
62
- name: name || "",
63
- description: description || "",
64
- license: data["license"] || undefined,
65
- compatibility: data["compatibility"] || undefined,
66
- metadata: data["metadata"] || undefined,
67
- "allowed-tools": data["allowed-tools"] || undefined,
68
- };
69
- return { frontmatter, body };
70
- }
71
- async function loadSkillsFromDirInternal(dir, source, mode, useColonPath, subdir = "") {
72
- const skills = [];
73
- const fullDir = join(dir, subdir);
74
- try {
75
- const entries = await readdir(fullDir, { withFileTypes: true });
76
- for (const entry of entries) {
77
- // Skip hidden files and directories
78
- if (entry.name.startsWith(".")) {
79
- continue;
80
- }
81
- const entryPath = join(fullDir, entry.name);
82
- // Skip symbolic links to avoid infinite recursion
83
- try {
84
- const stats = await stat(entryPath);
85
- if (stats.isSymbolicLink()) {
86
- continue;
87
- }
88
- }
89
- catch {
90
- // If we can't stat, skip it
91
- continue;
92
- }
93
- if (entry.isDirectory()) {
94
- if (mode === "recursive") {
95
- // Recursively scan subdirectories
96
- const newSubdir = subdir ? join(subdir, entry.name) : entry.name;
97
- const subSkills = await loadSkillsFromDirInternal(dir, source, mode, useColonPath, newSubdir);
98
- skills.push(...subSkills);
99
- }
100
- else if (mode === "claude") {
101
- // Claude mode: only check immediate subdirectories for SKILL.md
102
- const skillPath = join(entryPath, "SKILL.md");
103
- try {
104
- const content = await readFile(skillPath, "utf8");
105
- const { frontmatter } = parseFrontmatter(content);
106
- // Validate required fields
107
- const nameValidation = validateSkillName(frontmatter.name, entry.name);
108
- if (!nameValidation.valid) {
109
- logger.warn(`Invalid skill name in ${skillPath}: ${nameValidation.error}`);
110
- continue;
111
- }
112
- const descriptionValidation = validateSkillDescription(frontmatter.description);
113
- if (!descriptionValidation.valid) {
114
- logger.warn(`Invalid skill description in ${skillPath}: ${descriptionValidation.error}`);
115
- continue;
116
- }
117
- skills.push({
118
- name: frontmatter.name,
119
- description: frontmatter.description,
120
- filePath: skillPath,
121
- baseDir: entryPath,
122
- source,
123
- });
124
- }
125
- catch (error) {
126
- logger.warn(error, `Failed to load skill from ${skillPath}:`);
127
- }
128
- }
129
- }
130
- else if (entry.isFile() &&
131
- entry.name === "SKILL.md" &&
132
- mode === "recursive") {
133
- // Found a SKILL.md file in recursive mode
134
- try {
135
- const content = await readFile(entryPath, "utf8");
136
- const { frontmatter } = parseFrontmatter(content);
137
- // Validate required fields
138
- const nameValidation = validateSkillName(frontmatter.name, basename(dirname(entryPath)));
139
- if (!nameValidation.valid) {
140
- logger.warn(`Invalid skill name in ${entryPath}: ${nameValidation.error}`);
141
- continue;
142
- }
143
- const descriptionValidation = validateSkillDescription(frontmatter.description);
144
- if (!descriptionValidation.valid) {
145
- logger.warn(`Invalid skill description in ${entryPath}: ${descriptionValidation.error}`);
146
- continue;
147
- }
148
- // Base directory is the directory containing the SKILL.md file
149
- const baseDir = subdir ? join(dir, subdir) : dir;
150
- skills.push({
151
- name: frontmatter.name,
152
- description: frontmatter.description,
153
- filePath: entryPath,
154
- baseDir,
155
- source,
156
- });
157
- }
158
- catch (error) {
159
- logger.warn(error, `Failed to load skill from ${entryPath}:`);
160
- }
161
- }
162
- }
163
- }
164
- catch (error) {
165
- // Directory doesn't exist or can't be read
166
- if (error.code !== "ENOENT") {
167
- logger.error(error, `Error reading skills directory ${fullDir}:`);
168
- }
169
- }
170
- return skills;
171
- }
172
- export async function loadSkillsFromDir(options, subdir = "") {
173
- const { dir, source, useColonPath = false } = options;
174
- return await loadSkillsFromDirInternal(dir, source, "recursive", useColonPath, subdir);
175
- }
176
- export async function loadSkills() {
177
- const skillMap = new Map();
178
- // Codex: recursive, simple directory name
179
- const codexUserDir = join(homedir(), ".codex", "skills");
180
- for (const skill of await loadSkillsFromDirInternal(codexUserDir, "codex-user", "recursive", false)) {
181
- skillMap.set(skill.name, skill);
182
- }
183
- // Claude: single level only
184
- const claudeUserDir = join(homedir(), ".claude", "skills");
185
- for (const skill of await loadSkillsFromDirInternal(claudeUserDir, "claude-user", "claude", false)) {
186
- skillMap.set(skill.name, skill);
187
- }
188
- const claudeProjectDir = resolve(process.cwd(), ".claude", "skills");
189
- for (const skill of await loadSkillsFromDirInternal(claudeProjectDir, "claude-project", "claude", false)) {
190
- skillMap.set(skill.name, skill);
191
- }
192
- // acai: recursive, colon-separated path names
193
- const globalSkillsDir = join(homedir(), CONFIG_DIR_NAME, "skills");
194
- for (const skill of await loadSkillsFromDirInternal(globalSkillsDir, "user", "recursive", true)) {
195
- skillMap.set(skill.name, skill);
196
- }
197
- const projectSkillsDir = resolve(process.cwd(), CONFIG_DIR_NAME, "skills");
198
- for (const skill of await loadSkillsFromDirInternal(projectSkillsDir, "project", "recursive", true)) {
199
- skillMap.set(skill.name, skill);
200
- }
201
- return Array.from(skillMap.values());
202
- }
203
- export function formatSkillsForPrompt(skills) {
204
- if (skills.length === 0) {
205
- return "";
206
- }
207
- const lines = [
208
- "\n\n## Skills",
209
- "",
210
- "<skills_instructions>",
211
- "When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.",
212
- "Use the readFile tool to load a skill's file when the task matches its description.",
213
- "Skills may contain {baseDir} placeholders - replace them with the skill's base directory path.",
214
- "</skills_instructions>",
215
- "",
216
- "<available_skills>",
217
- ];
218
- for (const skill of skills) {
219
- lines.push("<skill>");
220
- lines.push("<name>");
221
- lines.push(skill.name);
222
- lines.push("</name>");
223
- lines.push("<description>");
224
- lines.push(skill.description);
225
- lines.push("</description>");
226
- lines.push("<location>");
227
- lines.push(skill.filePath);
228
- lines.push("</location>");
229
- lines.push("</skill>");
230
- }
231
- lines.push("</available_skills>");
232
- return lines.join("\n");
233
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../source/stdin.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,QAAY,CAAC;AAC1C,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,CA6BhE"}
@@ -1,21 +0,0 @@
1
- import type { AutocompleteItem, AutocompleteProvider } from "./base-provider.ts";
2
- export declare class PathProvider implements AutocompleteProvider {
3
- protected allowedDirs: string[];
4
- constructor(allowedDirs?: string[]);
5
- getSuggestions(lines: string[], cursorLine: number, cursorCol: number): Promise<{
6
- items: AutocompleteItem[];
7
- prefix: string;
8
- } | null>;
9
- applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): {
10
- lines: string[];
11
- cursorLine: number;
12
- cursorCol: number;
13
- };
14
- getForceFileSuggestions(lines: string[], cursorLine: number, cursorCol: number): Promise<{
15
- items: AutocompleteItem[];
16
- prefix: string;
17
- } | null>;
18
- shouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean;
19
- protected getFileSuggestions(prefix: string): Promise<AutocompleteItem[]>;
20
- }
21
- //# sourceMappingURL=path-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-provider.d.ts","sourceRoot":"","sources":["../../../source/tui/autocomplete/path-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAQ5B,qBAAa,YAAa,YAAW,oBAAoB;IACvD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAEpB,WAAW,GAAE,MAAM,EAAoB;IAI7C,cAAc,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAoBhE,eAAe,CACb,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAkBvD,uBAAuB,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAoBhE,2BAA2B,CACzB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO;cAaM,kBAAkB,CAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAgH/B"}