@travisennis/acai 0.0.8 → 0.0.10

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 (386) hide show
  1. package/README.md +48 -729
  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 +378 -168
  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 -76
  12. package/dist/cli/stdin.d.ts +9 -0
  13. package/dist/cli/stdin.d.ts.map +1 -0
  14. package/dist/cli/stdin.js +37 -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 -100
  21. package/dist/commands/generate-rules/service.d.ts +21 -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.map +1 -1
  27. package/dist/commands/health/utils.js +6 -0
  28. package/dist/commands/history/index.d.ts +1 -1
  29. package/dist/commands/history/index.d.ts.map +1 -1
  30. package/dist/commands/history/index.js +17 -18
  31. package/dist/commands/history/types.d.ts +38 -0
  32. package/dist/commands/history/types.d.ts.map +1 -1
  33. package/dist/commands/history/utils.d.ts.map +1 -1
  34. package/dist/commands/history/utils.js +63 -58
  35. package/dist/commands/init/index.d.ts.map +1 -1
  36. package/dist/commands/init/index.js +3 -8
  37. package/dist/commands/init-project/index.d.ts.map +1 -1
  38. package/dist/commands/init-project/index.js +3 -3
  39. package/dist/commands/init-project/utils.d.ts.map +1 -1
  40. package/dist/commands/init-project/utils.js +10 -2
  41. package/dist/commands/list-tools/index.d.ts.map +1 -1
  42. package/dist/commands/list-tools/index.js +7 -31
  43. package/dist/commands/manager.d.ts +2 -2
  44. package/dist/commands/manager.d.ts.map +1 -1
  45. package/dist/commands/manager.js +57 -33
  46. package/dist/commands/model/index.d.ts.map +1 -1
  47. package/dist/commands/model/index.js +20 -151
  48. package/dist/commands/model/model-panel.d.ts +4 -0
  49. package/dist/commands/model/model-panel.d.ts.map +1 -0
  50. package/dist/commands/model/model-panel.js +144 -0
  51. package/dist/commands/paste/index.d.ts.map +1 -1
  52. package/dist/commands/paste/index.js +59 -62
  53. package/dist/commands/paste/utils.d.ts.map +1 -1
  54. package/dist/commands/paste/utils.js +88 -58
  55. package/dist/commands/pickup/index.d.ts.map +1 -1
  56. package/dist/commands/pickup/index.js +6 -3
  57. package/dist/commands/pickup/utils.js +3 -3
  58. package/dist/commands/resources/index.d.ts.map +1 -1
  59. package/dist/commands/resources/index.js +33 -50
  60. package/dist/commands/review/index.d.ts.map +1 -1
  61. package/dist/commands/review/index.js +3 -117
  62. package/dist/commands/review/review-panel.d.ts +3 -0
  63. package/dist/commands/review/review-panel.d.ts.map +1 -0
  64. package/dist/commands/review/review-panel.js +186 -0
  65. package/dist/commands/review/utils.d.ts +9 -0
  66. package/dist/commands/review/utils.d.ts.map +1 -1
  67. package/dist/commands/review/utils.js +127 -68
  68. package/dist/commands/session/index.d.ts +1 -1
  69. package/dist/commands/session/index.d.ts.map +1 -1
  70. package/dist/commands/session/index.js +134 -112
  71. package/dist/commands/session/types.d.ts +7 -0
  72. package/dist/commands/session/types.d.ts.map +1 -1
  73. package/dist/commands/share/html-renderer.d.ts +25 -0
  74. package/dist/commands/share/html-renderer.d.ts.map +1 -0
  75. package/dist/commands/share/html-renderer.js +384 -0
  76. package/dist/commands/share/index.d.ts +3 -0
  77. package/dist/commands/share/index.d.ts.map +1 -0
  78. package/dist/commands/share/index.js +122 -0
  79. package/dist/commands/shell/index.d.ts.map +1 -1
  80. package/dist/commands/shell/index.js +16 -1
  81. package/dist/commands/types.d.ts +2 -2
  82. package/dist/commands/types.d.ts.map +1 -1
  83. package/dist/{config.d.ts → config/index.d.ts} +20 -9
  84. package/dist/config/index.d.ts.map +1 -0
  85. package/dist/{config.js → config/index.js} +43 -42
  86. package/dist/execution/index.d.ts.map +1 -1
  87. package/dist/execution/index.js +75 -55
  88. package/dist/index.d.ts +1 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +170 -127
  91. package/dist/middleware/cache.d.ts.map +1 -1
  92. package/dist/middleware/cache.js +18 -36
  93. package/dist/models/ai-config.d.ts +1 -0
  94. package/dist/models/ai-config.d.ts.map +1 -1
  95. package/dist/models/ai-config.js +4 -3
  96. package/dist/models/anthropic-provider.d.ts +2 -5
  97. package/dist/models/anthropic-provider.d.ts.map +1 -1
  98. package/dist/models/anthropic-provider.js +3 -70
  99. package/dist/models/deepseek-provider.d.ts +1 -0
  100. package/dist/models/deepseek-provider.d.ts.map +1 -1
  101. package/dist/models/google-provider.d.ts +2 -3
  102. package/dist/models/google-provider.d.ts.map +1 -1
  103. package/dist/models/google-provider.js +0 -26
  104. package/dist/models/groq-provider.d.ts +1 -0
  105. package/dist/models/groq-provider.d.ts.map +1 -1
  106. package/dist/models/manager.d.ts +13 -2
  107. package/dist/models/manager.d.ts.map +1 -1
  108. package/dist/models/manager.js +20 -8
  109. package/dist/models/openai-provider.d.ts +5 -5
  110. package/dist/models/openai-provider.d.ts.map +1 -1
  111. package/dist/models/openai-provider.js +27 -40
  112. package/dist/models/opencode-zen-provider.d.ts +8 -3
  113. package/dist/models/opencode-zen-provider.d.ts.map +1 -1
  114. package/dist/models/opencode-zen-provider.js +68 -11
  115. package/dist/models/openrouter-provider.d.ts +24 -30
  116. package/dist/models/openrouter-provider.d.ts.map +1 -1
  117. package/dist/models/openrouter-provider.js +92 -177
  118. package/dist/models/providers.d.ts +1 -1
  119. package/dist/models/providers.d.ts.map +1 -1
  120. package/dist/models/xai-provider.d.ts +4 -3
  121. package/dist/models/xai-provider.d.ts.map +1 -1
  122. package/dist/models/xai-provider.js +18 -18
  123. package/dist/modes/manager.d.ts +23 -0
  124. package/dist/modes/manager.d.ts.map +1 -0
  125. package/dist/modes/manager.js +77 -0
  126. package/dist/modes/prompts.d.ts +2 -0
  127. package/dist/modes/prompts.d.ts.map +1 -0
  128. package/dist/modes/prompts.js +143 -0
  129. package/dist/prompts/mentions.d.ts +11 -0
  130. package/dist/prompts/mentions.d.ts.map +1 -0
  131. package/dist/{mentions.js → prompts/mentions.js} +21 -80
  132. package/dist/prompts/system-prompt.d.ts +26 -0
  133. package/dist/prompts/system-prompt.d.ts.map +1 -0
  134. package/dist/{prompts.js → prompts/system-prompt.js} +50 -22
  135. package/dist/repl/index.d.ts +174 -0
  136. package/dist/repl/index.d.ts.map +1 -0
  137. package/dist/{repl-new.js → repl/index.js} +399 -76
  138. package/dist/repl/project-status.d.ts +1 -0
  139. package/dist/repl/project-status.d.ts.map +1 -1
  140. package/dist/repl/project-status.js +4 -1
  141. package/dist/sessions/manager.d.ts +93 -1
  142. package/dist/sessions/manager.d.ts.map +1 -1
  143. package/dist/sessions/manager.js +264 -9
  144. package/dist/sessions/summary.d.ts +4 -0
  145. package/dist/sessions/summary.d.ts.map +1 -0
  146. package/dist/sessions/summary.js +30 -0
  147. package/dist/{skills.d.ts → skills/index.d.ts} +14 -2
  148. package/dist/skills/index.d.ts.map +1 -0
  149. package/dist/skills/index.js +294 -0
  150. package/dist/subagents/index.d.ts +15 -0
  151. package/dist/subagents/index.d.ts.map +1 -0
  152. package/dist/subagents/index.js +231 -0
  153. package/dist/terminal/control.d.ts +1 -1
  154. package/dist/terminal/control.d.ts.map +1 -1
  155. package/dist/terminal/control.js +30 -9
  156. package/dist/terminal/east-asian-width.d.ts.map +1 -1
  157. package/dist/terminal/east-asian-width.js +404 -351
  158. package/dist/terminal/keys.d.ts +17 -0
  159. package/dist/terminal/keys.d.ts.map +1 -1
  160. package/dist/terminal/keys.js +37 -0
  161. package/dist/terminal/select-prompt.d.ts.map +1 -1
  162. package/dist/terminal/select-prompt.js +24 -12
  163. package/dist/terminal/string-width.d.ts.map +1 -1
  164. package/dist/terminal/string-width.js +25 -27
  165. package/dist/terminal/style.d.ts.map +1 -1
  166. package/dist/terminal/style.js +4 -7
  167. package/dist/terminal/supports-color.d.ts.map +1 -1
  168. package/dist/terminal/supports-color.js +41 -27
  169. package/dist/terminal/table/cell.d.ts +12 -0
  170. package/dist/terminal/table/cell.d.ts.map +1 -1
  171. package/dist/terminal/table/cell.js +40 -25
  172. package/dist/terminal/table/layout-manager.d.ts.map +1 -1
  173. package/dist/terminal/table/layout-manager.js +100 -68
  174. package/dist/terminal/table/utils.d.ts.map +1 -1
  175. package/dist/terminal/table/utils.js +17 -10
  176. package/dist/terminal/wrap-ansi.d.ts.map +1 -1
  177. package/dist/terminal/wrap-ansi.js +172 -103
  178. package/dist/tokens/tracker.d.ts +1 -0
  179. package/dist/tokens/tracker.d.ts.map +1 -1
  180. package/dist/tokens/tracker.js +3 -0
  181. package/dist/tools/agent.d.ts +27 -0
  182. package/dist/tools/agent.d.ts.map +1 -0
  183. package/dist/tools/agent.js +81 -0
  184. package/dist/tools/bash.d.ts +4 -3
  185. package/dist/tools/bash.d.ts.map +1 -1
  186. package/dist/tools/bash.js +343 -121
  187. package/dist/tools/code-search.d.ts +41 -0
  188. package/dist/tools/code-search.d.ts.map +1 -0
  189. package/dist/tools/code-search.js +195 -0
  190. package/dist/tools/directory-tree.d.ts +3 -3
  191. package/dist/tools/directory-tree.d.ts.map +1 -1
  192. package/dist/tools/directory-tree.js +8 -5
  193. package/dist/tools/dynamic-tool-loader.d.ts +2 -5
  194. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  195. package/dist/tools/dynamic-tool-loader.js +20 -4
  196. package/dist/tools/edit-file.d.ts +7 -7
  197. package/dist/tools/edit-file.d.ts.map +1 -1
  198. package/dist/tools/edit-file.js +164 -66
  199. package/dist/tools/glob.d.ts +6 -6
  200. package/dist/tools/glob.d.ts.map +1 -1
  201. package/dist/tools/glob.js +95 -55
  202. package/dist/tools/grep.d.ts +15 -12
  203. package/dist/tools/grep.d.ts.map +1 -1
  204. package/dist/tools/grep.js +300 -192
  205. package/dist/tools/index.d.ts +143 -5
  206. package/dist/tools/index.d.ts.map +1 -1
  207. package/dist/tools/index.js +39 -24
  208. package/dist/tools/ls.d.ts +2 -2
  209. package/dist/tools/ls.d.ts.map +1 -1
  210. package/dist/tools/ls.js +7 -5
  211. package/dist/tools/read-file.d.ts +3 -3
  212. package/dist/tools/read-file.d.ts.map +1 -1
  213. package/dist/tools/read-file.js +74 -34
  214. package/dist/tools/save-file.d.ts +3 -3
  215. package/dist/tools/save-file.d.ts.map +1 -1
  216. package/dist/tools/save-file.js +11 -11
  217. package/dist/tools/skill.d.ts +23 -0
  218. package/dist/tools/skill.d.ts.map +1 -0
  219. package/dist/tools/skill.js +65 -0
  220. package/dist/tools/think.d.ts.map +1 -1
  221. package/dist/tools/think.js +2 -9
  222. package/dist/tools/utils.d.ts +2 -0
  223. package/dist/tools/utils.d.ts.map +1 -1
  224. package/dist/tools/utils.js +12 -0
  225. package/dist/tools/web-fetch.d.ts +62 -0
  226. package/dist/tools/web-fetch.d.ts.map +1 -0
  227. package/dist/tools/web-fetch.js +429 -0
  228. package/dist/tools/web-search.d.ts +62 -0
  229. package/dist/tools/web-search.d.ts.map +1 -0
  230. package/dist/tools/web-search.js +226 -0
  231. package/dist/tui/autocomplete/attachment-provider.d.ts +3 -6
  232. package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -1
  233. package/dist/tui/autocomplete/attachment-provider.js +25 -78
  234. package/dist/tui/autocomplete/base-provider.d.ts +1 -0
  235. package/dist/tui/autocomplete/base-provider.d.ts.map +1 -1
  236. package/dist/tui/autocomplete/combined-provider.d.ts +1 -4
  237. package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -1
  238. package/dist/tui/autocomplete/combined-provider.js +3 -17
  239. package/dist/tui/autocomplete/command-provider.d.ts +1 -0
  240. package/dist/tui/autocomplete/command-provider.d.ts.map +1 -1
  241. package/dist/tui/autocomplete/command-provider.js +3 -0
  242. package/dist/tui/autocomplete/file-search-provider.d.ts +2 -1
  243. package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -1
  244. package/dist/tui/autocomplete/file-search-provider.js +36 -16
  245. package/dist/tui/autocomplete/skill-provider.d.ts +17 -0
  246. package/dist/tui/autocomplete/skill-provider.d.ts.map +1 -0
  247. package/dist/tui/autocomplete/skill-provider.js +49 -0
  248. package/dist/tui/autocomplete.d.ts +2 -2
  249. package/dist/tui/autocomplete.d.ts.map +1 -1
  250. package/dist/tui/autocomplete.js +3 -5
  251. package/dist/tui/components/assistant-message.d.ts.map +1 -1
  252. package/dist/tui/components/assistant-message.js +0 -4
  253. package/dist/tui/components/editor.d.ts +21 -2
  254. package/dist/tui/components/editor.d.ts.map +1 -1
  255. package/dist/tui/components/editor.js +228 -236
  256. package/dist/tui/components/footer.d.ts +6 -4
  257. package/dist/tui/components/footer.d.ts.map +1 -1
  258. package/dist/tui/components/footer.js +49 -25
  259. package/dist/tui/components/markdown.d.ts +8 -5
  260. package/dist/tui/components/markdown.d.ts.map +1 -1
  261. package/dist/tui/components/markdown.js +57 -39
  262. package/dist/tui/components/modal.d.ts.map +1 -1
  263. package/dist/tui/components/modal.js +35 -33
  264. package/dist/tui/components/notification.d.ts +13 -2
  265. package/dist/tui/components/notification.d.ts.map +1 -1
  266. package/dist/tui/components/notification.js +37 -2
  267. package/dist/tui/components/progress-bar.js +1 -1
  268. package/dist/tui/components/select-list.d.ts +1 -0
  269. package/dist/tui/components/select-list.d.ts.map +1 -1
  270. package/dist/tui/components/select-list.js +14 -11
  271. package/dist/tui/components/text.d.ts +16 -0
  272. package/dist/tui/components/text.d.ts.map +1 -1
  273. package/dist/tui/components/text.js +72 -57
  274. package/dist/tui/components/thinking-block.d.ts +9 -0
  275. package/dist/tui/components/thinking-block.d.ts.map +1 -1
  276. package/dist/tui/components/thinking-block.js +43 -11
  277. package/dist/tui/components/tool-execution.d.ts +5 -1
  278. package/dist/tui/components/tool-execution.d.ts.map +1 -1
  279. package/dist/tui/components/tool-execution.js +19 -10
  280. package/dist/tui/components/user-message.d.ts.map +1 -1
  281. package/dist/tui/components/user-message.js +0 -3
  282. package/dist/tui/components/welcome.js +2 -2
  283. package/dist/tui/editor-launcher.d.ts +13 -0
  284. package/dist/tui/editor-launcher.d.ts.map +1 -0
  285. package/dist/tui/editor-launcher.js +39 -0
  286. package/dist/tui/index.d.ts +3 -1
  287. package/dist/tui/index.d.ts.map +1 -1
  288. package/dist/tui/index.js +1 -0
  289. package/dist/tui/terminal.d.ts +27 -0
  290. package/dist/tui/terminal.d.ts.map +1 -1
  291. package/dist/tui/terminal.js +144 -15
  292. package/dist/tui/tui.d.ts +43 -0
  293. package/dist/tui/tui.d.ts.map +1 -1
  294. package/dist/tui/tui.js +172 -41
  295. package/dist/utils/bash/parse.d.ts +19 -0
  296. package/dist/utils/bash/parse.d.ts.map +1 -0
  297. package/dist/utils/bash/parse.js +223 -0
  298. package/dist/utils/bash/quote.d.ts +6 -0
  299. package/dist/utils/bash/quote.d.ts.map +1 -0
  300. package/dist/utils/bash/quote.js +23 -0
  301. package/dist/utils/bash.d.ts.map +1 -1
  302. package/dist/utils/bash.js +211 -126
  303. package/dist/utils/command-protection.d.ts +28 -0
  304. package/dist/utils/command-protection.d.ts.map +1 -0
  305. package/dist/utils/command-protection.js +324 -0
  306. package/dist/utils/dedent.d.ts.map +1 -0
  307. package/dist/utils/env-expand.d.ts +2 -0
  308. package/dist/utils/env-expand.d.ts.map +1 -0
  309. package/dist/utils/env-expand.js +8 -0
  310. package/dist/utils/filesystem/path-display.d.ts +11 -0
  311. package/dist/utils/filesystem/path-display.d.ts.map +1 -0
  312. package/dist/utils/filesystem/path-display.js +32 -0
  313. package/dist/utils/filesystem/security.d.ts +2 -2
  314. package/dist/utils/filesystem/security.d.ts.map +1 -1
  315. package/dist/utils/filesystem/security.js +32 -31
  316. package/dist/utils/formatting.d.ts.map +1 -0
  317. package/dist/{formatting.js → utils/formatting.js} +1 -1
  318. package/dist/utils/git.d.ts +4 -0
  319. package/dist/utils/git.d.ts.map +1 -1
  320. package/dist/utils/git.js +30 -0
  321. package/dist/utils/glob.d.ts +1 -1
  322. package/dist/utils/glob.d.ts.map +1 -1
  323. package/dist/utils/logger.d.ts.map +1 -0
  324. package/dist/{logger.js → utils/logger.js} +1 -1
  325. package/dist/utils/parsing.d.ts.map +1 -0
  326. package/dist/utils/process.d.ts.map +1 -1
  327. package/dist/utils/process.js +90 -37
  328. package/dist/utils/templates.d.ts +2 -0
  329. package/dist/utils/templates.d.ts.map +1 -0
  330. package/dist/utils/templates.js +24 -0
  331. package/dist/utils/version.d.ts.map +1 -0
  332. package/dist/{version.js → utils/version.js} +1 -1
  333. package/package.json +34 -25
  334. package/dist/cli.d.ts +0 -23
  335. package/dist/cli.d.ts.map +0 -1
  336. package/dist/commands/exit/index.d.ts +0 -10
  337. package/dist/commands/exit/index.d.ts.map +0 -1
  338. package/dist/commands/exit/index.js +0 -21
  339. package/dist/commands/exit/types.d.ts +0 -8
  340. package/dist/commands/exit/types.d.ts.map +0 -1
  341. package/dist/commands/exit/types.js +0 -1
  342. package/dist/commands/exit/utils.d.ts +0 -2
  343. package/dist/commands/exit/utils.d.ts.map +0 -1
  344. package/dist/commands/exit/utils.js +0 -13
  345. package/dist/commands/prompt/index.d.ts +0 -5
  346. package/dist/commands/prompt/index.d.ts.map +0 -1
  347. package/dist/commands/prompt/index.js +0 -126
  348. package/dist/commands/prompt/types.d.ts +0 -15
  349. package/dist/commands/prompt/types.d.ts.map +0 -1
  350. package/dist/commands/prompt/types.js +0 -1
  351. package/dist/commands/prompt/utils.d.ts +0 -12
  352. package/dist/commands/prompt/utils.d.ts.map +0 -1
  353. package/dist/commands/prompt/utils.js +0 -107
  354. package/dist/commands/reset/index.d.ts +0 -3
  355. package/dist/commands/reset/index.d.ts.map +0 -1
  356. package/dist/commands/reset/index.js +0 -25
  357. package/dist/commands/reset/types.d.ts +0 -1
  358. package/dist/commands/reset/types.d.ts.map +0 -1
  359. package/dist/commands/reset/types.js +0 -3
  360. package/dist/commands/save/index.d.ts +0 -3
  361. package/dist/commands/save/index.d.ts.map +0 -1
  362. package/dist/commands/save/index.js +0 -19
  363. package/dist/config.d.ts.map +0 -1
  364. package/dist/dedent.d.ts.map +0 -1
  365. package/dist/formatting.d.ts.map +0 -1
  366. package/dist/logger.d.ts.map +0 -1
  367. package/dist/mentions.d.ts +0 -14
  368. package/dist/mentions.d.ts.map +0 -1
  369. package/dist/parsing.d.ts.map +0 -1
  370. package/dist/prompts.d.ts +0 -10
  371. package/dist/prompts.d.ts.map +0 -1
  372. package/dist/repl-new.d.ts +0 -62
  373. package/dist/repl-new.d.ts.map +0 -1
  374. package/dist/skills.d.ts.map +0 -1
  375. package/dist/skills.js +0 -233
  376. package/dist/tui/autocomplete/path-provider.d.ts +0 -21
  377. package/dist/tui/autocomplete/path-provider.d.ts.map +0 -1
  378. package/dist/tui/autocomplete/path-provider.js +0 -164
  379. package/dist/version.d.ts.map +0 -1
  380. /package/dist/{dedent.d.ts → utils/dedent.d.ts} +0 -0
  381. /package/dist/{dedent.js → utils/dedent.js} +0 -0
  382. /package/dist/{formatting.d.ts → utils/formatting.d.ts} +0 -0
  383. /package/dist/{logger.d.ts → utils/logger.d.ts} +0 -0
  384. /package/dist/{parsing.d.ts → utils/parsing.d.ts} +0 -0
  385. /package/dist/{parsing.js → utils/parsing.js} +0 -0
  386. /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,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"}
package/dist/prompts.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import type { CompleteToolNames } from "./tools/index.ts";
2
- type SystemPromptOptions = {
3
- allowedDirs?: string[];
4
- activeTools?: CompleteToolNames[];
5
- includeRules?: boolean;
6
- skillsEnabled?: boolean;
7
- };
8
- export declare function systemPrompt(options?: SystemPromptOptions): Promise<string>;
9
- export {};
10
- //# sourceMappingURL=prompts.d.ts.map
@@ -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;AAwD1D,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;AAIF,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,mBAmJ/D"}
@@ -1,62 +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
- interface ReplOptions {
11
- agent: Agent;
12
- messageHistory: SessionManager;
13
- promptManager: PromptManager;
14
- modelManager: ModelManager;
15
- tokenTracker: TokenTracker;
16
- commands: CommandManager;
17
- config: Record<PropertyKey, unknown>;
18
- tokenCounter: TokenCounter;
19
- promptHistory: string[];
20
- workspace: WorkspaceContext;
21
- tools?: CompleteToolSet;
22
- }
23
- export declare class NewRepl {
24
- private options;
25
- private tui;
26
- private welcome;
27
- private editor;
28
- private chatContainer;
29
- private statusContainer;
30
- private footer;
31
- private editorContainer;
32
- private notification;
33
- private isInitialized;
34
- private onInputCallback?;
35
- private loadingAnimation;
36
- private onInterruptCallback?;
37
- private onExitCallback?;
38
- private lastSigintTime;
39
- private exitNotificationTimer?;
40
- private pendingTools;
41
- private tools?;
42
- private streamingComponent;
43
- private thinkingBlockComponent;
44
- constructor(options: ReplOptions);
45
- init(): Promise<void>;
46
- handle(event: AgentEvent, state: AgentState): Promise<void>;
47
- private addMessageToChat;
48
- getUserInput(): Promise<string>;
49
- clearEditor(): void;
50
- setInterruptCallback(callback: () => void): void;
51
- setExitCallback(callback: (sessionId: string) => void): void;
52
- rerender(): Promise<void>;
53
- private reconstructSession;
54
- private extractUserMessageText;
55
- private renderAssistantMessage;
56
- private extractToolCallsFromAssistant;
57
- private createToolEvents;
58
- private handleCtrlC;
59
- stop(showExitMessage?: boolean): void;
60
- }
61
- export {};
62
- //# 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,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;CACzB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAc;IAC7B,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;IAoC1B,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"}
@@ -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,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"}