@travisennis/acai 0.0.6 → 0.0.8

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 (586) hide show
  1. package/README.md +225 -39
  2. package/dist/agent/index.d.ts +30 -21
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +237 -198
  5. package/dist/cli.d.ts +4 -3
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +56 -18
  8. package/dist/commands/add-directory/index.d.ts +3 -0
  9. package/dist/commands/add-directory/index.d.ts.map +1 -0
  10. package/dist/commands/add-directory/index.js +50 -0
  11. package/dist/commands/add-directory/types.d.ts +6 -0
  12. package/dist/commands/add-directory/types.d.ts.map +1 -0
  13. package/dist/commands/add-directory/utils.d.ts +3 -0
  14. package/dist/commands/add-directory/utils.d.ts.map +1 -0
  15. package/dist/commands/add-directory/utils.js +15 -0
  16. package/dist/commands/clear/index.d.ts +3 -0
  17. package/dist/commands/clear/index.d.ts.map +1 -0
  18. package/dist/commands/{clear-command.js → clear/index.js} +1 -7
  19. package/dist/commands/copy/index.d.ts +3 -0
  20. package/dist/commands/copy/index.d.ts.map +1 -0
  21. package/dist/commands/copy/index.js +39 -0
  22. package/dist/commands/copy/types.d.ts +3 -0
  23. package/dist/commands/copy/types.d.ts.map +1 -0
  24. package/dist/commands/copy/types.js +1 -0
  25. package/dist/commands/copy/utils.d.ts +3 -0
  26. package/dist/commands/copy/utils.d.ts.map +1 -0
  27. package/dist/commands/copy/utils.js +22 -0
  28. package/dist/commands/exit/index.d.ts +10 -0
  29. package/dist/commands/exit/index.d.ts.map +1 -0
  30. package/dist/commands/exit/index.js +21 -0
  31. package/dist/commands/exit/types.d.ts +8 -0
  32. package/dist/commands/exit/types.d.ts.map +1 -0
  33. package/dist/commands/exit/types.js +1 -0
  34. package/dist/commands/exit/utils.d.ts +2 -0
  35. package/dist/commands/exit/utils.d.ts.map +1 -0
  36. package/dist/commands/exit/utils.js +13 -0
  37. package/dist/commands/generate-rules/index.d.ts +3 -0
  38. package/dist/commands/generate-rules/index.d.ts.map +1 -0
  39. package/dist/commands/{generate-rules-command.js → generate-rules/index.js} +65 -147
  40. package/dist/commands/generate-rules/utils.d.ts +5 -0
  41. package/dist/commands/generate-rules/utils.d.ts.map +1 -0
  42. package/dist/commands/generate-rules/utils.js +25 -0
  43. package/dist/commands/handoff/index.d.ts +3 -0
  44. package/dist/commands/handoff/index.d.ts.map +1 -0
  45. package/dist/commands/handoff/index.js +97 -0
  46. package/dist/commands/handoff/utils.d.ts +4 -0
  47. package/dist/commands/handoff/utils.d.ts.map +1 -0
  48. package/dist/commands/handoff/utils.js +123 -0
  49. package/dist/commands/health/index.d.ts +3 -0
  50. package/dist/commands/health/index.d.ts.map +1 -0
  51. package/dist/commands/health/index.js +56 -0
  52. package/dist/commands/health/utils.d.ts +15 -0
  53. package/dist/commands/health/utils.d.ts.map +1 -0
  54. package/dist/commands/health/utils.js +52 -0
  55. package/dist/commands/help/index.d.ts +3 -0
  56. package/dist/commands/help/index.d.ts.map +1 -0
  57. package/dist/commands/{help-command.js → help/index.js} +6 -14
  58. package/dist/commands/history/index.d.ts +3 -0
  59. package/dist/commands/history/index.d.ts.map +1 -0
  60. package/dist/commands/{history-command.js → history/index.js} +40 -200
  61. package/dist/commands/history/types.d.ts +11 -0
  62. package/dist/commands/history/types.d.ts.map +1 -0
  63. package/dist/commands/history/types.js +1 -0
  64. package/dist/commands/history/utils.d.ts +4 -0
  65. package/dist/commands/history/utils.d.ts.map +1 -0
  66. package/dist/commands/history/utils.js +86 -0
  67. package/dist/commands/init/index.d.ts +3 -0
  68. package/dist/commands/init/index.d.ts.map +1 -0
  69. package/dist/commands/{init-command.js → init/index.js} +17 -27
  70. package/dist/commands/init-project/index.d.ts +3 -0
  71. package/dist/commands/init-project/index.d.ts.map +1 -0
  72. package/dist/commands/init-project/index.js +51 -0
  73. package/dist/commands/init-project/utils.d.ts +9 -0
  74. package/dist/commands/init-project/utils.d.ts.map +1 -0
  75. package/dist/commands/init-project/utils.js +43 -0
  76. package/dist/commands/list-directories/index.d.ts +3 -0
  77. package/dist/commands/list-directories/index.d.ts.map +1 -0
  78. package/dist/commands/{list-directories-command.js → list-directories/index.js} +2 -15
  79. package/dist/commands/list-tools/index.d.ts +3 -0
  80. package/dist/commands/list-tools/index.d.ts.map +1 -0
  81. package/dist/commands/list-tools/index.js +89 -0
  82. package/dist/commands/manager.d.ts +2 -9
  83. package/dist/commands/manager.d.ts.map +1 -1
  84. package/dist/commands/manager.js +38 -83
  85. package/dist/commands/model/index.d.ts +3 -0
  86. package/dist/commands/model/index.d.ts.map +1 -0
  87. package/dist/commands/model/index.js +182 -0
  88. package/dist/commands/model/utils.d.ts +3 -0
  89. package/dist/commands/model/utils.d.ts.map +1 -0
  90. package/dist/commands/model/utils.js +5 -0
  91. package/dist/commands/paste/index.d.ts +3 -0
  92. package/dist/commands/paste/index.d.ts.map +1 -0
  93. package/dist/commands/paste/index.js +94 -0
  94. package/dist/commands/paste/utils.d.ts +5 -0
  95. package/dist/commands/paste/utils.d.ts.map +1 -0
  96. package/dist/commands/paste/utils.js +86 -0
  97. package/dist/commands/pickup/index.d.ts +3 -0
  98. package/dist/commands/pickup/index.d.ts.map +1 -0
  99. package/dist/commands/pickup/index.js +138 -0
  100. package/dist/commands/pickup/types.d.ts +6 -0
  101. package/dist/commands/pickup/types.d.ts.map +1 -0
  102. package/dist/commands/pickup/types.js +1 -0
  103. package/dist/commands/pickup/utils.d.ts +7 -0
  104. package/dist/commands/pickup/utils.d.ts.map +1 -0
  105. package/dist/commands/pickup/utils.js +56 -0
  106. package/dist/commands/prompt/index.d.ts +5 -0
  107. package/dist/commands/prompt/index.d.ts.map +1 -0
  108. package/dist/commands/prompt/index.js +126 -0
  109. package/dist/commands/prompt/types.d.ts +15 -0
  110. package/dist/commands/prompt/types.d.ts.map +1 -0
  111. package/dist/commands/prompt/types.js +1 -0
  112. package/dist/commands/prompt/utils.d.ts +12 -0
  113. package/dist/commands/prompt/utils.d.ts.map +1 -0
  114. package/dist/commands/prompt/utils.js +107 -0
  115. package/dist/commands/remove-directory/index.d.ts +3 -0
  116. package/dist/commands/remove-directory/index.d.ts.map +1 -0
  117. package/dist/commands/{remove-directory-command.js → remove-directory/index.js} +3 -35
  118. package/dist/commands/reset/index.d.ts +3 -0
  119. package/dist/commands/reset/index.d.ts.map +1 -0
  120. package/dist/commands/{reset-command.js → reset/index.js} +8 -11
  121. package/dist/commands/reset/types.d.ts +1 -0
  122. package/dist/commands/reset/types.d.ts.map +1 -0
  123. package/dist/commands/reset/types.js +3 -0
  124. package/dist/commands/resources/index.d.ts +3 -0
  125. package/dist/commands/resources/index.d.ts.map +1 -0
  126. package/dist/commands/resources/index.js +84 -0
  127. package/dist/commands/review/index.d.ts +3 -0
  128. package/dist/commands/review/index.d.ts.map +1 -0
  129. package/dist/commands/review/index.js +126 -0
  130. package/dist/commands/review/types.d.ts +12 -0
  131. package/dist/commands/review/types.d.ts.map +1 -0
  132. package/dist/commands/review/types.js +1 -0
  133. package/dist/commands/review/utils.d.ts +4 -0
  134. package/dist/commands/review/utils.d.ts.map +1 -0
  135. package/dist/commands/review/utils.js +87 -0
  136. package/dist/commands/save/index.d.ts +3 -0
  137. package/dist/commands/save/index.d.ts.map +1 -0
  138. package/dist/commands/{save-command.js → save/index.js} +3 -10
  139. package/dist/commands/session/index.d.ts +3 -0
  140. package/dist/commands/session/index.d.ts.map +1 -0
  141. package/dist/commands/session/index.js +197 -0
  142. package/dist/commands/session/types.d.ts +13 -0
  143. package/dist/commands/session/types.d.ts.map +1 -0
  144. package/dist/commands/session/types.js +7 -0
  145. package/dist/commands/shell/index.d.ts +3 -0
  146. package/dist/commands/shell/index.d.ts.map +1 -0
  147. package/dist/commands/{shell-command.js → shell/index.js} +4 -51
  148. package/dist/commands/types.d.ts +2 -5
  149. package/dist/commands/types.d.ts.map +1 -1
  150. package/dist/config.d.ts +36 -7
  151. package/dist/config.d.ts.map +1 -1
  152. package/dist/config.js +118 -60
  153. package/dist/dedent.d.ts.map +1 -1
  154. package/dist/dedent.js +7 -7
  155. package/dist/execution/index.d.ts +18 -2
  156. package/dist/execution/index.d.ts.map +1 -1
  157. package/dist/execution/index.js +119 -81
  158. package/dist/formatting.d.ts +46 -0
  159. package/dist/formatting.d.ts.map +1 -1
  160. package/dist/formatting.js +94 -0
  161. package/dist/index.d.ts +1 -1
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +299 -177
  164. package/dist/logger.d.ts.map +1 -1
  165. package/dist/logger.js +4 -11
  166. package/dist/mentions.d.ts.map +1 -1
  167. package/dist/mentions.js +3 -53
  168. package/dist/middleware/audit-message.d.ts +2 -2
  169. package/dist/middleware/audit-message.d.ts.map +1 -1
  170. package/dist/middleware/audit-message.js +40 -2
  171. package/dist/middleware/cache.d.ts +2 -2
  172. package/dist/middleware/cache.d.ts.map +1 -1
  173. package/dist/middleware/cache.js +111 -27
  174. package/dist/middleware/rate-limit.d.ts +2 -2
  175. package/dist/middleware/rate-limit.d.ts.map +1 -1
  176. package/dist/middleware/rate-limit.js +1 -0
  177. package/dist/models/ai-config.d.ts.map +1 -1
  178. package/dist/models/ai-config.js +46 -29
  179. package/dist/models/anthropic-provider.d.ts +14 -13
  180. package/dist/models/anthropic-provider.d.ts.map +1 -1
  181. package/dist/models/anthropic-provider.js +0 -7
  182. package/dist/models/deepseek-provider.d.ts +9 -8
  183. package/dist/models/deepseek-provider.d.ts.map +1 -1
  184. package/dist/models/deepseek-provider.js +0 -2
  185. package/dist/models/google-provider.d.ts +10 -9
  186. package/dist/models/google-provider.d.ts.map +1 -1
  187. package/dist/models/google-provider.js +0 -3
  188. package/dist/models/groq-provider.d.ts +8 -7
  189. package/dist/models/groq-provider.d.ts.map +1 -1
  190. package/dist/models/groq-provider.js +0 -1
  191. package/dist/models/manager.d.ts +7 -4
  192. package/dist/models/manager.d.ts.map +1 -1
  193. package/dist/models/manager.js +5 -25
  194. package/dist/models/openai-provider.d.ts +11 -10
  195. package/dist/models/openai-provider.d.ts.map +1 -1
  196. package/dist/models/openai-provider.js +0 -4
  197. package/dist/models/opencode-zen-provider.d.ts +23 -0
  198. package/dist/models/opencode-zen-provider.d.ts.map +1 -0
  199. package/dist/models/opencode-zen-provider.js +76 -0
  200. package/dist/models/openrouter-provider.d.ts +34 -28
  201. package/dist/models/openrouter-provider.d.ts.map +1 -1
  202. package/dist/models/openrouter-provider.js +148 -139
  203. package/dist/models/providers.d.ts +6 -16
  204. package/dist/models/providers.d.ts.map +1 -1
  205. package/dist/models/providers.js +8 -58
  206. package/dist/models/xai-provider.d.ts +9 -8
  207. package/dist/models/xai-provider.d.ts.map +1 -1
  208. package/dist/models/xai-provider.js +0 -2
  209. package/dist/prompts/manager.d.ts +1 -1
  210. package/dist/prompts/manager.d.ts.map +1 -1
  211. package/dist/prompts/manager.js +1 -1
  212. package/dist/prompts.d.ts +8 -4
  213. package/dist/prompts.d.ts.map +1 -1
  214. package/dist/prompts.js +155 -177
  215. package/dist/repl/project-status.d.ts +19 -0
  216. package/dist/repl/project-status.d.ts.map +1 -0
  217. package/dist/repl/project-status.js +78 -0
  218. package/dist/repl-new.d.ts +15 -6
  219. package/dist/repl-new.d.ts.map +1 -1
  220. package/dist/repl-new.js +266 -83
  221. package/dist/{messages.d.ts → sessions/manager.d.ts} +13 -4
  222. package/dist/sessions/manager.d.ts.map +1 -0
  223. package/dist/{messages.js → sessions/manager.js} +126 -16
  224. package/dist/skills.d.ts +16 -0
  225. package/dist/skills.d.ts.map +1 -0
  226. package/dist/skills.js +233 -0
  227. package/dist/terminal/control.d.ts +56 -0
  228. package/dist/terminal/control.d.ts.map +1 -0
  229. package/dist/terminal/control.js +111 -0
  230. package/dist/terminal/default-theme.d.ts +1 -1
  231. package/dist/terminal/default-theme.d.ts.map +1 -1
  232. package/dist/terminal/default-theme.js +24 -28
  233. package/dist/terminal/formatting.d.ts +23 -26
  234. package/dist/terminal/formatting.d.ts.map +1 -1
  235. package/dist/terminal/formatting.js +35 -53
  236. package/dist/terminal/highlight/index.d.ts.map +1 -1
  237. package/dist/terminal/highlight/index.js +3 -6
  238. package/dist/terminal/highlight/theme.d.ts.map +1 -1
  239. package/dist/terminal/highlight/theme.js +2 -6
  240. package/dist/terminal/index.d.ts +2 -101
  241. package/dist/terminal/index.d.ts.map +1 -1
  242. package/dist/terminal/index.js +2 -464
  243. package/dist/terminal/keys.d.ts +211 -0
  244. package/dist/terminal/keys.d.ts.map +1 -0
  245. package/dist/terminal/keys.js +546 -0
  246. package/dist/terminal/segmenter.d.ts +6 -0
  247. package/dist/terminal/segmenter.d.ts.map +1 -0
  248. package/dist/terminal/segmenter.js +11 -0
  249. package/dist/terminal/select-prompt.d.ts.map +1 -1
  250. package/dist/terminal/select-prompt.js +9 -21
  251. package/dist/terminal/string-width.d.ts.map +1 -1
  252. package/dist/terminal/string-width.js +40 -21
  253. package/dist/terminal/strip-ansi.d.ts.map +1 -1
  254. package/dist/terminal/strip-ansi.js +9 -15
  255. package/dist/terminal/table/cell.d.ts +114 -0
  256. package/dist/terminal/table/cell.d.ts.map +1 -0
  257. package/dist/terminal/table/cell.js +407 -0
  258. package/dist/terminal/table/debug.d.ts +15 -0
  259. package/dist/terminal/table/debug.d.ts.map +1 -0
  260. package/dist/terminal/table/debug.js +32 -0
  261. package/dist/terminal/table/index.d.ts +3 -0
  262. package/dist/terminal/table/index.d.ts.map +1 -0
  263. package/dist/terminal/table/index.js +2 -0
  264. package/dist/terminal/table/layout-manager.d.ts +27 -0
  265. package/dist/terminal/table/layout-manager.d.ts.map +1 -0
  266. package/dist/terminal/table/layout-manager.js +257 -0
  267. package/dist/terminal/table/table.d.ts +9 -0
  268. package/dist/terminal/table/table.d.ts.map +1 -0
  269. package/dist/terminal/table/table.js +97 -0
  270. package/dist/terminal/table/utils.d.ts +63 -0
  271. package/dist/terminal/table/utils.d.ts.map +1 -0
  272. package/dist/terminal/table/utils.js +326 -0
  273. package/dist/tokens/tracker.d.ts.map +1 -1
  274. package/dist/tokens/tracker.js +58 -16
  275. package/dist/tools/bash.d.ts +11 -11
  276. package/dist/tools/bash.d.ts.map +1 -1
  277. package/dist/tools/bash.js +189 -81
  278. package/dist/tools/directory-tree.d.ts +9 -13
  279. package/dist/tools/directory-tree.d.ts.map +1 -1
  280. package/dist/tools/directory-tree.js +90 -60
  281. package/dist/tools/dynamic-tool-loader.d.ts +22 -8
  282. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  283. package/dist/tools/dynamic-tool-loader.js +41 -46
  284. package/dist/tools/edit-file.d.ts +6 -16
  285. package/dist/tools/edit-file.d.ts.map +1 -1
  286. package/dist/tools/edit-file.js +22 -66
  287. package/dist/tools/glob.d.ts +15 -16
  288. package/dist/tools/glob.d.ts.map +1 -1
  289. package/dist/tools/glob.js +78 -109
  290. package/dist/tools/grep.d.ts +19 -22
  291. package/dist/tools/grep.d.ts.map +1 -1
  292. package/dist/tools/grep.js +61 -93
  293. package/dist/tools/index.d.ts +202 -167
  294. package/dist/tools/index.d.ts.map +1 -1
  295. package/dist/tools/index.js +17 -273
  296. package/dist/tools/ls.d.ts +26 -0
  297. package/dist/tools/ls.d.ts.map +1 -0
  298. package/dist/tools/ls.js +80 -0
  299. package/dist/tools/read-file.d.ts +15 -15
  300. package/dist/tools/read-file.d.ts.map +1 -1
  301. package/dist/tools/read-file.js +52 -76
  302. package/dist/tools/save-file.d.ts +8 -8
  303. package/dist/tools/save-file.d.ts.map +1 -1
  304. package/dist/tools/save-file.js +42 -53
  305. package/dist/tools/think.d.ts +4 -4
  306. package/dist/tools/think.d.ts.map +1 -1
  307. package/dist/tools/think.js +9 -32
  308. package/dist/tools/types.d.ts +5 -21
  309. package/dist/tools/types.d.ts.map +1 -1
  310. package/dist/tools/types.js +0 -9
  311. package/dist/tui/autocomplete/attachment-provider.d.ts +18 -0
  312. package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -0
  313. package/dist/tui/autocomplete/attachment-provider.js +159 -0
  314. package/dist/tui/autocomplete/base-provider.d.ts +17 -0
  315. package/dist/tui/autocomplete/base-provider.d.ts.map +1 -0
  316. package/dist/tui/autocomplete/base-provider.js +1 -0
  317. package/dist/tui/autocomplete/combined-provider.d.ts +20 -0
  318. package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -0
  319. package/dist/tui/autocomplete/combined-provider.js +61 -0
  320. package/dist/tui/autocomplete/command-provider.d.ts +20 -0
  321. package/dist/tui/autocomplete/command-provider.d.ts.map +1 -0
  322. package/dist/tui/autocomplete/command-provider.js +90 -0
  323. package/dist/tui/autocomplete/file-search-provider.d.ts +16 -0
  324. package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -0
  325. package/dist/tui/autocomplete/file-search-provider.js +123 -0
  326. package/dist/tui/autocomplete/path-provider.d.ts +21 -0
  327. package/dist/tui/autocomplete/path-provider.d.ts.map +1 -0
  328. package/dist/tui/autocomplete/path-provider.js +164 -0
  329. package/dist/tui/autocomplete/utils.d.ts +16 -0
  330. package/dist/tui/autocomplete/utils.d.ts.map +1 -0
  331. package/dist/tui/autocomplete/utils.js +137 -0
  332. package/dist/tui/autocomplete.d.ts +12 -43
  333. package/dist/tui/autocomplete.d.ts.map +1 -1
  334. package/dist/tui/autocomplete.js +20 -465
  335. package/dist/tui/components/assistant-message.js +1 -1
  336. package/dist/tui/components/box.d.ts +20 -0
  337. package/dist/tui/components/box.d.ts.map +1 -0
  338. package/dist/tui/components/box.js +87 -0
  339. package/dist/tui/components/editor.d.ts +61 -7
  340. package/dist/tui/components/editor.d.ts.map +1 -1
  341. package/dist/tui/components/editor.js +630 -127
  342. package/dist/tui/components/footer.d.ts +19 -18
  343. package/dist/tui/components/footer.d.ts.map +1 -1
  344. package/dist/tui/components/footer.js +90 -185
  345. package/dist/tui/components/header.d.ts +21 -0
  346. package/dist/tui/components/header.d.ts.map +1 -0
  347. package/dist/tui/components/header.js +63 -0
  348. package/dist/tui/components/input.d.ts.map +1 -1
  349. package/dist/tui/components/input.js +8 -7
  350. package/dist/tui/components/loader.d.ts +6 -1
  351. package/dist/tui/components/loader.d.ts.map +1 -1
  352. package/dist/tui/components/loader.js +8 -3
  353. package/dist/tui/components/markdown.d.ts +31 -27
  354. package/dist/tui/components/markdown.d.ts.map +1 -1
  355. package/dist/tui/components/markdown.js +131 -67
  356. package/dist/tui/components/modal.d.ts +0 -11
  357. package/dist/tui/components/modal.d.ts.map +1 -1
  358. package/dist/tui/components/modal.js +9 -37
  359. package/dist/tui/components/notification.d.ts +28 -0
  360. package/dist/tui/components/notification.d.ts.map +1 -0
  361. package/dist/tui/components/notification.js +63 -0
  362. package/dist/tui/components/progress-bar.d.ts +19 -0
  363. package/dist/tui/components/progress-bar.d.ts.map +1 -0
  364. package/dist/tui/components/progress-bar.js +66 -0
  365. package/dist/tui/components/select-list.d.ts +12 -1
  366. package/dist/tui/components/select-list.d.ts.map +1 -1
  367. package/dist/tui/components/select-list.js +73 -32
  368. package/dist/tui/components/spacer.d.ts +1 -1
  369. package/dist/tui/components/spacer.d.ts.map +1 -1
  370. package/dist/tui/components/spacer.js +2 -2
  371. package/dist/tui/components/table.d.ts +27 -0
  372. package/dist/tui/components/table.d.ts.map +1 -0
  373. package/dist/tui/components/table.js +125 -0
  374. package/dist/tui/components/thinking-block.d.ts.map +1 -1
  375. package/dist/tui/components/thinking-block.js +4 -1
  376. package/dist/tui/components/tool-execution.d.ts +7 -6
  377. package/dist/tui/components/tool-execution.d.ts.map +1 -1
  378. package/dist/tui/components/tool-execution.js +81 -85
  379. package/dist/tui/components/user-message.d.ts.map +1 -1
  380. package/dist/tui/components/user-message.js +6 -4
  381. package/dist/tui/components/welcome.d.ts +8 -1
  382. package/dist/tui/components/welcome.d.ts.map +1 -1
  383. package/dist/tui/components/welcome.js +45 -6
  384. package/dist/tui/index.d.ts +12 -6
  385. package/dist/tui/index.d.ts.map +1 -1
  386. package/dist/tui/index.js +7 -3
  387. package/dist/tui/terminal.d.ts +4 -3
  388. package/dist/tui/terminal.d.ts.map +1 -1
  389. package/dist/tui/terminal.js +43 -49
  390. package/dist/tui/tui.d.ts +3 -0
  391. package/dist/tui/tui.d.ts.map +1 -1
  392. package/dist/tui/tui.js +58 -43
  393. package/dist/tui/utils.d.ts +5 -0
  394. package/dist/tui/utils.d.ts.map +1 -1
  395. package/dist/tui/utils.js +80 -1
  396. package/dist/{tools/bash-utils.d.ts → utils/bash.d.ts} +3 -3
  397. package/dist/utils/bash.d.ts.map +1 -0
  398. package/dist/{tools/bash-utils.js → utils/bash.js} +22 -11
  399. package/dist/utils/{filesystem.d.ts → filesystem/operations.d.ts} +1 -1
  400. package/dist/utils/filesystem/operations.d.ts.map +1 -0
  401. package/dist/{tools/filesystem-utils.d.ts → utils/filesystem/security.d.ts} +3 -2
  402. package/dist/utils/filesystem/security.d.ts.map +1 -0
  403. package/dist/{tools/filesystem-utils.js → utils/filesystem/security.js} +62 -4
  404. package/dist/utils/funcs.d.ts +6 -0
  405. package/dist/utils/funcs.d.ts.map +1 -0
  406. package/dist/utils/funcs.js +6 -0
  407. package/dist/{tools/git-utils.d.ts → utils/git.d.ts} +1 -1
  408. package/dist/utils/git.d.ts.map +1 -0
  409. package/dist/{tools/git-utils.js → utils/git.js} +0 -6
  410. package/dist/utils/glob.js +1 -1
  411. package/dist/utils/yaml.d.ts +11 -0
  412. package/dist/utils/yaml.d.ts.map +1 -0
  413. package/dist/utils/yaml.js +207 -0
  414. package/dist/utils/{zod-utils.d.ts → zod.d.ts} +2 -1
  415. package/dist/utils/zod.d.ts.map +1 -0
  416. package/dist/utils/zod.js +24 -0
  417. package/package.json +31 -29
  418. package/dist/agent/manual-loop.d.ts +0 -41
  419. package/dist/agent/manual-loop.d.ts.map +0 -1
  420. package/dist/agent/manual-loop.js +0 -278
  421. package/dist/api/exa/index.d.ts +0 -177
  422. package/dist/api/exa/index.d.ts.map +0 -1
  423. package/dist/api/exa/index.js +0 -439
  424. package/dist/commands/add-directory-command.d.ts +0 -3
  425. package/dist/commands/add-directory-command.d.ts.map +0 -1
  426. package/dist/commands/add-directory-command.js +0 -85
  427. package/dist/commands/application-log-command.d.ts +0 -3
  428. package/dist/commands/application-log-command.d.ts.map +0 -1
  429. package/dist/commands/application-log-command.js +0 -79
  430. package/dist/commands/clear-command.d.ts +0 -3
  431. package/dist/commands/clear-command.d.ts.map +0 -1
  432. package/dist/commands/compact-command.d.ts +0 -3
  433. package/dist/commands/compact-command.d.ts.map +0 -1
  434. package/dist/commands/compact-command.js +0 -64
  435. package/dist/commands/context-command.d.ts +0 -3
  436. package/dist/commands/context-command.d.ts.map +0 -1
  437. package/dist/commands/context-command.js +0 -183
  438. package/dist/commands/copy-command.d.ts +0 -3
  439. package/dist/commands/copy-command.d.ts.map +0 -1
  440. package/dist/commands/copy-command.js +0 -80
  441. package/dist/commands/edit-command.d.ts +0 -3
  442. package/dist/commands/edit-command.d.ts.map +0 -1
  443. package/dist/commands/edit-command.js +0 -88
  444. package/dist/commands/edit-prompt-command.d.ts +0 -3
  445. package/dist/commands/edit-prompt-command.d.ts.map +0 -1
  446. package/dist/commands/edit-prompt-command.js +0 -61
  447. package/dist/commands/exit-command.d.ts +0 -13
  448. package/dist/commands/exit-command.d.ts.map +0 -1
  449. package/dist/commands/exit-command.js +0 -46
  450. package/dist/commands/files-command.d.ts +0 -3
  451. package/dist/commands/files-command.d.ts.map +0 -1
  452. package/dist/commands/files-command.js +0 -121
  453. package/dist/commands/generate-rules-command.d.ts +0 -3
  454. package/dist/commands/generate-rules-command.d.ts.map +0 -1
  455. package/dist/commands/handoff-command.d.ts +0 -3
  456. package/dist/commands/handoff-command.d.ts.map +0 -1
  457. package/dist/commands/handoff-command.js +0 -202
  458. package/dist/commands/health-command.d.ts +0 -4
  459. package/dist/commands/health-command.d.ts.map +0 -1
  460. package/dist/commands/health-command.js +0 -213
  461. package/dist/commands/help-command.d.ts +0 -3
  462. package/dist/commands/help-command.d.ts.map +0 -1
  463. package/dist/commands/history-command.d.ts +0 -3
  464. package/dist/commands/history-command.d.ts.map +0 -1
  465. package/dist/commands/init-command.d.ts +0 -3
  466. package/dist/commands/init-command.d.ts.map +0 -1
  467. package/dist/commands/last-log-command.d.ts +0 -3
  468. package/dist/commands/last-log-command.d.ts.map +0 -1
  469. package/dist/commands/last-log-command.js +0 -98
  470. package/dist/commands/list-directories-command.d.ts +0 -3
  471. package/dist/commands/list-directories-command.d.ts.map +0 -1
  472. package/dist/commands/list-tools-command.d.ts +0 -3
  473. package/dist/commands/list-tools-command.d.ts.map +0 -1
  474. package/dist/commands/list-tools-command.js +0 -124
  475. package/dist/commands/model-command.d.ts +0 -25
  476. package/dist/commands/model-command.d.ts.map +0 -1
  477. package/dist/commands/model-command.js +0 -340
  478. package/dist/commands/paste-command.d.ts +0 -3
  479. package/dist/commands/paste-command.d.ts.map +0 -1
  480. package/dist/commands/paste-command.js +0 -277
  481. package/dist/commands/pickup-command.d.ts +0 -3
  482. package/dist/commands/pickup-command.d.ts.map +0 -1
  483. package/dist/commands/pickup-command.js +0 -161
  484. package/dist/commands/prompt-command.d.ts +0 -3
  485. package/dist/commands/prompt-command.d.ts.map +0 -1
  486. package/dist/commands/prompt-command.js +0 -280
  487. package/dist/commands/remove-directory-command.d.ts +0 -3
  488. package/dist/commands/remove-directory-command.d.ts.map +0 -1
  489. package/dist/commands/reset-command.d.ts +0 -3
  490. package/dist/commands/reset-command.d.ts.map +0 -1
  491. package/dist/commands/rules-command.d.ts +0 -3
  492. package/dist/commands/rules-command.d.ts.map +0 -1
  493. package/dist/commands/rules-command.js +0 -135
  494. package/dist/commands/save-command.d.ts +0 -3
  495. package/dist/commands/save-command.d.ts.map +0 -1
  496. package/dist/commands/shell-command.d.ts +0 -3
  497. package/dist/commands/shell-command.d.ts.map +0 -1
  498. package/dist/commands/usage-command.d.ts +0 -3
  499. package/dist/commands/usage-command.d.ts.map +0 -1
  500. package/dist/commands/usage-command.js +0 -42
  501. package/dist/messages.d.ts.map +0 -1
  502. package/dist/repl/display-tool-messages.d.ts +0 -4
  503. package/dist/repl/display-tool-messages.d.ts.map +0 -1
  504. package/dist/repl/display-tool-messages.js +0 -58
  505. package/dist/repl/display-tool-use.d.ts +0 -14
  506. package/dist/repl/display-tool-use.d.ts.map +0 -1
  507. package/dist/repl/display-tool-use.js +0 -63
  508. package/dist/repl/get-prompt-header.d.ts +0 -8
  509. package/dist/repl/get-prompt-header.d.ts.map +0 -1
  510. package/dist/repl/get-prompt-header.js +0 -9
  511. package/dist/repl/project-status-line.d.ts +0 -2
  512. package/dist/repl/project-status-line.d.ts.map +0 -1
  513. package/dist/repl/project-status-line.js +0 -31
  514. package/dist/repl/prompt.d.ts +0 -21
  515. package/dist/repl/prompt.d.ts.map +0 -1
  516. package/dist/repl/prompt.js +0 -244
  517. package/dist/repl/tool-call-repair.d.ts +0 -4
  518. package/dist/repl/tool-call-repair.d.ts.map +0 -1
  519. package/dist/repl/tool-call-repair.js +0 -54
  520. package/dist/repl.d.ts +0 -29
  521. package/dist/repl.d.ts.map +0 -1
  522. package/dist/repl.js +0 -218
  523. package/dist/terminal/checkbox-prompt.d.ts +0 -36
  524. package/dist/terminal/checkbox-prompt.d.ts.map +0 -1
  525. package/dist/terminal/checkbox-prompt.js +0 -368
  526. package/dist/terminal/editor-prompt.d.ts +0 -10
  527. package/dist/terminal/editor-prompt.d.ts.map +0 -1
  528. package/dist/terminal/editor-prompt.js +0 -61
  529. package/dist/terminal/errors.d.ts +0 -19
  530. package/dist/terminal/errors.d.ts.map +0 -1
  531. package/dist/terminal/errors.js +0 -37
  532. package/dist/terminal/input-prompt.d.ts +0 -17
  533. package/dist/terminal/input-prompt.d.ts.map +0 -1
  534. package/dist/terminal/input-prompt.js +0 -181
  535. package/dist/terminal/markdown.d.ts +0 -2
  536. package/dist/terminal/markdown.d.ts.map +0 -1
  537. package/dist/terminal/markdown.js +0 -118
  538. package/dist/terminal/search-prompt.d.ts +0 -20
  539. package/dist/terminal/search-prompt.d.ts.map +0 -1
  540. package/dist/terminal/search-prompt.js +0 -280
  541. package/dist/terminal/types.d.ts +0 -35
  542. package/dist/terminal/types.d.ts.map +0 -1
  543. package/dist/tokens/threshold.d.ts +0 -35
  544. package/dist/tokens/threshold.d.ts.map +0 -1
  545. package/dist/tokens/threshold.js +0 -85
  546. package/dist/tools/advanced-edit-file.d.ts +0 -69
  547. package/dist/tools/advanced-edit-file.d.ts.map +0 -1
  548. package/dist/tools/advanced-edit-file.js +0 -281
  549. package/dist/tools/agent.d.ts +0 -29
  550. package/dist/tools/agent.d.ts.map +0 -1
  551. package/dist/tools/agent.js +0 -103
  552. package/dist/tools/bash-utils.d.ts.map +0 -1
  553. package/dist/tools/code-interpreter.d.ts +0 -25
  554. package/dist/tools/code-interpreter.d.ts.map +0 -1
  555. package/dist/tools/code-interpreter.js +0 -167
  556. package/dist/tools/delete-file.d.ts +0 -24
  557. package/dist/tools/delete-file.d.ts.map +0 -1
  558. package/dist/tools/delete-file.js +0 -70
  559. package/dist/tools/dynamic-tool-parser.d.ts +0 -21
  560. package/dist/tools/dynamic-tool-parser.d.ts.map +0 -1
  561. package/dist/tools/dynamic-tool-parser.js +0 -22
  562. package/dist/tools/filesystem-utils.d.ts.map +0 -1
  563. package/dist/tools/git-utils.d.ts.map +0 -1
  564. package/dist/tools/llm-edit-fixer.d.ts +0 -25
  565. package/dist/tools/llm-edit-fixer.d.ts.map +0 -1
  566. package/dist/tools/llm-edit-fixer.js +0 -150
  567. package/dist/tools/move-file.d.ts +0 -26
  568. package/dist/tools/move-file.d.ts.map +0 -1
  569. package/dist/tools/move-file.js +0 -58
  570. package/dist/tools/read-multiple-files.d.ts +0 -26
  571. package/dist/tools/read-multiple-files.d.ts.map +0 -1
  572. package/dist/tools/read-multiple-files.js +0 -139
  573. package/dist/tools/web-fetch.d.ts +0 -56
  574. package/dist/tools/web-fetch.d.ts.map +0 -1
  575. package/dist/tools/web-fetch.js +0 -247
  576. package/dist/tools/web-search.d.ts +0 -23
  577. package/dist/tools/web-search.d.ts.map +0 -1
  578. package/dist/tools/web-search.js +0 -133
  579. package/dist/tui/components/prompt-status.d.ts +0 -16
  580. package/dist/tui/components/prompt-status.d.ts.map +0 -1
  581. package/dist/tui/components/prompt-status.js +0 -21
  582. package/dist/utils/filesystem.d.ts.map +0 -1
  583. package/dist/utils/zod-utils.d.ts.map +0 -1
  584. package/dist/utils/zod-utils.js +0 -7
  585. /package/dist/{terminal → commands/add-directory}/types.js +0 -0
  586. /package/dist/utils/{filesystem.js → filesystem/operations.js} +0 -0
@@ -1,61 +0,0 @@
1
- import { syncTry } from "@travisennis/stdlib/try";
2
- import { editor } from "../terminal/editor-prompt.js";
3
- import style from "../terminal/style.js";
4
- import { Text } from "../tui/index.js";
5
- export const editPromptCommand = ({ terminal, promptManager, promptHistory, }) => {
6
- return {
7
- command: "/edit-prompt",
8
- description: "Edit the prompt. Accepts optional arguments as initial content.",
9
- getSubCommands: () => Promise.resolve([]),
10
- execute: async (args = []) => {
11
- try {
12
- const prompt = syncTry(() => promptManager.get());
13
- const initialContent = args.length > 0 ? args.join(" ") : prompt.unwrapOr("");
14
- const updatedPrompt = await editor({
15
- message: " Edit prompt?",
16
- postfix: "md",
17
- default: initialContent,
18
- skipPrompt: true,
19
- });
20
- if (updatedPrompt.trim().length === 0) {
21
- throw new Error("Prompt was empty.");
22
- }
23
- terminal.writeln(`> ${updatedPrompt}`);
24
- promptManager.set(updatedPrompt);
25
- // Add the edited prompt to history
26
- promptHistory.push(updatedPrompt);
27
- }
28
- catch (error) {
29
- terminal.error(`Error editing prompt: ${error.message}`);
30
- return "continue";
31
- }
32
- return "use";
33
- },
34
- async handle(args, { tui, container, editor, }) {
35
- try {
36
- const prompt = syncTry(() => promptManager.get());
37
- const initialContent = args.length > 0 ? args.join(" ") : prompt.unwrapOr("");
38
- // For TUI mode, we can't use the editor prompt, so we'll just set the prompt
39
- if (initialContent.trim().length === 0) {
40
- container.addChild(new Text(style.red("Prompt cannot be empty"), 0, 1));
41
- tui.requestRender();
42
- editor.setText("");
43
- return "continue";
44
- }
45
- promptManager.set(initialContent);
46
- // Add the edited prompt to history
47
- promptHistory.push(initialContent);
48
- container.addChild(new Text(`Prompt set to: ${style.blue(initialContent)}`, 0, 1));
49
- tui.requestRender();
50
- editor.setText("");
51
- }
52
- catch (error) {
53
- container.addChild(new Text(style.red(`Error editing prompt: ${error.message}`), 1, 0));
54
- tui.requestRender();
55
- editor.setText("");
56
- return "continue";
57
- }
58
- return "use";
59
- },
60
- };
61
- };
@@ -1,13 +0,0 @@
1
- import type { ReplCommand } from "./types.ts";
2
- export interface ExitCommandOptions {
3
- messageHistory: {
4
- isEmpty: () => boolean;
5
- save: () => Promise<void>;
6
- };
7
- terminal: {
8
- clear: () => void;
9
- };
10
- baseDir?: string | null;
11
- }
12
- export declare const exitCommand: ({ messageHistory, terminal, baseDir, }: ExitCommandOptions) => ReplCommand;
13
- //# sourceMappingURL=exit-command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-command.d.ts","sourceRoot":"","sources":["../../source/commands/exit-command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE;QACd,OAAO,EAAE,MAAM,OAAO,CAAC;QACvB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,GAAI,wCAIzB,kBAAkB,KAAG,WAkDvB,CAAC"}
@@ -1,46 +0,0 @@
1
- import path from "node:path";
2
- import { logger } from "../logger.js";
3
- import { Text } from "../tui/index.js";
4
- import { clearDirectory } from "../utils/filesystem.js";
5
- export const exitCommand = ({ messageHistory, terminal, baseDir, }) => {
6
- return {
7
- command: "/exit",
8
- aliases: ["/bye", "/quit"],
9
- description: "Exits and saves the chat history.",
10
- getSubCommands: () => Promise.resolve([]),
11
- execute: async () => {
12
- terminal.clear();
13
- if (!messageHistory.isEmpty()) {
14
- await messageHistory.save();
15
- }
16
- // Clear the .tmp directory on exit
17
- try {
18
- const tmpDirPath = path.join(baseDir ?? process.cwd(), ".tmp");
19
- await clearDirectory(tmpDirPath);
20
- }
21
- catch (error) {
22
- // Log error but don't block exit
23
- console.error("Failed to clear .tmp directory:", error);
24
- }
25
- return "break";
26
- },
27
- async handle(_args, { tui, container, editor, }) {
28
- if (!messageHistory.isEmpty()) {
29
- await messageHistory.save();
30
- }
31
- // Clear the .tmp directory on exit
32
- try {
33
- const tmpDirPath = path.join(baseDir ?? process.cwd(), ".tmp");
34
- await clearDirectory(tmpDirPath);
35
- }
36
- catch (error) {
37
- // Log error but don't block exit
38
- logger.error(error, "Failed to clear .tmp directory:");
39
- }
40
- container.addChild(new Text("Exiting...", 0, 1));
41
- tui.requestRender();
42
- editor.setText("");
43
- return "break";
44
- },
45
- };
46
- };
@@ -1,3 +0,0 @@
1
- import type { CommandOptions, ReplCommand } from "./types.ts";
2
- export declare const filesCommand: ({ terminal, promptManager, modelManager, }: CommandOptions) => ReplCommand;
3
- //# sourceMappingURL=files-command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"files-command.d.ts","sourceRoot":"","sources":["../../source/commands/files-command.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,YAAY,GAAI,4CAI1B,cAAc,KAAG,WA8KnB,CAAC"}
@@ -1,121 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { formatFile } from "../formatting.js";
3
- import { checkbox } from "../terminal/checkbox-prompt.js";
4
- import style from "../terminal/style.js";
5
- import { TokenCounter } from "../tokens/counter.js";
6
- import { Text } from "../tui/index.js";
7
- import { glob } from "../utils/glob.js";
8
- export const filesCommand = ({ terminal, promptManager, modelManager, }) => {
9
- return {
10
- command: "/files",
11
- description: "Finds files matching the given patterns and adds their content to the next prompt. Usage: /files or /files src/**/*.ts",
12
- getSubCommands: () => Promise.resolve([]),
13
- execute: async (args) => {
14
- try {
15
- let workingFiles = [];
16
- if (!args || args.length === 0) {
17
- // Get all files in the current directory
18
- const foundFiles = await glob("**/*", { gitignore: true });
19
- const selectedFiles = await checkbox({
20
- message: "Select files to include:",
21
- choices: foundFiles,
22
- pageSize: 15,
23
- });
24
- if (selectedFiles.length === 0) {
25
- terminal.warn("No files selected.");
26
- return "continue";
27
- }
28
- // Process the selected files
29
- workingFiles = selectedFiles;
30
- }
31
- else {
32
- const patternList = args.filter(Boolean);
33
- const foundFiles = await glob(patternList, { gitignore: true });
34
- if (foundFiles.length === 0) {
35
- terminal.warn("No files found matching the pattern(s)");
36
- return "continue";
37
- }
38
- // Process the selected files
39
- workingFiles = foundFiles;
40
- }
41
- // Read the content of the files and format them for the next prompt
42
- const format = modelManager.getModelMetadata("repl").promptFormat;
43
- let tokenCount = 0;
44
- const tokenCounter = new TokenCounter();
45
- await Promise.all(workingFiles.map(async (filePath) => {
46
- try {
47
- const content = await readFile(filePath, "utf-8");
48
- const formattedFile = formatFile(filePath, content, format);
49
- tokenCount += tokenCounter.count(formattedFile);
50
- promptManager.addContext(formattedFile);
51
- }
52
- catch (error) {
53
- terminal.error(`Error reading file ${filePath}: ${error.message}`);
54
- }
55
- }));
56
- tokenCounter.free();
57
- terminal.success(`File contents will be added to your next prompt (${workingFiles.length} files, ${tokenCount} tokens)`);
58
- return "continue";
59
- }
60
- catch (error) {
61
- terminal.error(`Error processing file patterns: ${error.message}`);
62
- return "continue";
63
- }
64
- },
65
- async handle(args, { tui, container, editor, }) {
66
- try {
67
- let workingFiles = [];
68
- if (!args || args.length === 0) {
69
- // Get all files in the current directory
70
- const foundFiles = await glob("**/*", { gitignore: true });
71
- // For TUI mode, we'll just use the first few files
72
- workingFiles = foundFiles.slice(0, 5);
73
- if (workingFiles.length === 0) {
74
- container.addChild(new Text(style.yellow("No files found"), 0, 1));
75
- tui.requestRender();
76
- editor.setText("");
77
- return "continue";
78
- }
79
- }
80
- else {
81
- const patternList = args.filter(Boolean);
82
- const foundFiles = await glob(patternList, { gitignore: true });
83
- if (foundFiles.length === 0) {
84
- container.addChild(new Text(style.yellow("No files found matching the pattern(s)"), 1, 0));
85
- tui.requestRender();
86
- editor.setText("");
87
- return "continue";
88
- }
89
- // Process the selected files
90
- workingFiles = foundFiles;
91
- }
92
- // Read the content of the files and format them for the next prompt
93
- const format = modelManager.getModelMetadata("repl").promptFormat;
94
- let tokenCount = 0;
95
- const tokenCounter = new TokenCounter();
96
- await Promise.all(workingFiles.map(async (filePath) => {
97
- try {
98
- const content = await readFile(filePath, "utf-8");
99
- const formattedFile = formatFile(filePath, content, format);
100
- tokenCount += tokenCounter.count(formattedFile);
101
- promptManager.addContext(formattedFile);
102
- }
103
- catch (error) {
104
- container.addChild(new Text(style.red(`Error reading file ${filePath}: ${error.message}`), 1, 0));
105
- }
106
- }));
107
- tokenCounter.free();
108
- container.addChild(new Text(style.green(`File contents will be added to your next prompt (${workingFiles.length} files, ${tokenCount} tokens)`), 1, 0));
109
- tui.requestRender();
110
- editor.setText("");
111
- return "continue";
112
- }
113
- catch (error) {
114
- container.addChild(new Text(style.red(`Error processing file patterns: ${error.message}`), 1, 0));
115
- tui.requestRender();
116
- editor.setText("");
117
- return "continue";
118
- }
119
- },
120
- };
121
- };
@@ -1,3 +0,0 @@
1
- import type { CommandOptions, ReplCommand } from "./types.ts";
2
- export declare const generateRulesCommand: ({ terminal, messageHistory, modelManager, tokenTracker, config, }: CommandOptions) => ReplCommand;
3
- //# sourceMappingURL=generate-rules-command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-rules-command.d.ts","sourceRoot":"","sources":["../../source/commands/generate-rules-command.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuC9D,eAAO,MAAM,oBAAoB,GAAI,mEAMlC,cAAc,KAAG,WA6JnB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { CommandOptions, ReplCommand } from "./types.ts";
2
- export declare const handoffCommand: (options: CommandOptions) => ReplCommand;
3
- //# sourceMappingURL=handoff-command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handoff-command.d.ts","sourceRoot":"","sources":["../../source/commands/handoff-command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,cAAc,GAAI,SAAS,cAAc,KAAG,WAkExD,CAAC"}
@@ -1,202 +0,0 @@
1
- import { generateText } from "ai";
2
- import style from "../terminal/style.js";
3
- import { initCliTools } from "../tools/index.js";
4
- import { Text } from "../tui/index.js";
5
- export const handoffCommand = (options) => {
6
- return {
7
- command: "/handoff",
8
- description: "Creates a detailed handoff plan of the conversation for continuing the work in a new session. Usage: /handoff <the purpose of the handoff>",
9
- getSubCommands: () => Promise.resolve([]),
10
- execute: async (args) => {
11
- const { terminal } = options;
12
- // Validate that purpose is provided
13
- const purpose = args.join(" ").trim();
14
- if (!purpose) {
15
- terminal.error("Please provide a purpose for the handoff. Usage: /handoff <the purpose of the handoff>");
16
- return "continue";
17
- }
18
- await createHandoffDocument(options, purpose);
19
- return "continue";
20
- },
21
- async handle(args, { tui, container, editor, }) {
22
- // Validate that purpose is provided
23
- const purpose = args.join(" ").trim();
24
- if (!purpose) {
25
- container.addChild(new Text(style.red("Please provide a purpose for the handoff. Usage: /handoff <the purpose of the handoff>"), 1, 0));
26
- tui.requestRender();
27
- editor.setText("");
28
- return "continue";
29
- }
30
- container.addChild(new Text(`Creating handoff document for purpose: ${style.blue(purpose)}`, 1, 0));
31
- tui.requestRender();
32
- await createHandoffDocument(options, purpose);
33
- container.addChild(new Text(style.green("Handoff document created"), 2, 0));
34
- tui.requestRender();
35
- editor.setText("");
36
- return "continue";
37
- },
38
- };
39
- };
40
- const handoffPrompt = (purpose) => {
41
- return `Creates a detailed handoff plan of the conversation for continuing the work in a new session.
42
-
43
- The user specified purpose:
44
-
45
- <purpose>${purpose}</purpose>
46
-
47
- You are creating a summary specifically so that it can be continued by another agent. For this to work you MUST have a purpose. If no specified purpose was provided in the \`<purpose>...</purpose>\` tag you must STOP IMMEDIATELY and ask the user what the purpose is.
48
-
49
- Do not continue before asking for the purpose as you will otherwise not understand the instructions and do not assume a purpose!
50
-
51
- ## Goal
52
-
53
- Your task is to create a detailed summary of the conversation so far, paying close attention to the user's explicit purpose for the next steps.
54
- This handoff plan should be thorough in capturing technical details, code patterns, and architectural decisions that will be essential for continuing development work without losing context.
55
-
56
- ## Process
57
-
58
- Before providing your final plan, wrap your analysis in <analysis> tags to organize your thoughts and ensure you've covered all necessary points. In your analysis process:
59
-
60
- 1. Chronologically analyze each message and section of the conversation. For each section thoroughly identify:
61
- - The user's explicit requests and intents
62
- - Your approach to addressing the user's requests
63
- - Key decisions, technical concepts and code patterns
64
- - Specific details like file names, full code snippets, function signatures, file edits, etc
65
- 2. Double-check for technical accuracy and completeness, addressing each required element thoroughly.
66
-
67
- Your plan should include the following sections:
68
-
69
- 1. **Primary Request and Intent**: Capture all of the user's explicit requests and intents in detail
70
- 2. **Key Technical Concepts**: List all important technical concepts, technologies, and frameworks discussed.
71
- 3. **Files and Code Sections**: Enumerate specific files and code sections examined, modified, or created. Pay special attention to the most recent messages and include full code snippets where applicable and include a summary of why this file read or edit is important.
72
- 4. **Problem Solving**: Document problems solved and any ongoing troubleshooting efforts.
73
- 5. **Pending Tasks**: Outline any pending tasks that you have explicitly been asked to work on.
74
- 6. **Current Work**: Describe in detail precisely what was being worked on immediately before this handoff request, paying special attention to the most recent messages from both user and assistant. Include file names and code snippets where applicable.
75
- 7. **Optional Next Step**: List the next step that you will take that is related to the most recent work you were doing. IMPORTANT: ensure that this step is DIRECTLY in line with the user's explicit requests, and the task you were working on immediately before this handoff request. If your last task was concluded, then only list next steps if they are explicitly in line with the users request. Do not start on tangential requests without confirming with the user first.
76
-
77
- Additionally create a "slug" for this handoff. The "slug" is how we will refer to it later in a few places. Examples:
78
-
79
- * current-user-api-handler
80
- * implement-auth
81
- * fix-issue-42
82
-
83
- Together with the slug create a "Readable Summary". Examples:
84
-
85
- * Implement Currnet User API Handler
86
- * Implement Authentication
87
- * Fix Issue #42
88
-
89
- ## Output Structure
90
-
91
- Here's an example of how your output should be structured:
92
-
93
- \`\`\` markdown
94
- # Readable Summary
95
-
96
- <analysis>
97
- [Your thought process, ensuring all points are covered thoroughly and accurately]
98
- </analysis>
99
-
100
- <plan>
101
- # Session Handoff Plan
102
-
103
- ## 1. Primary Request and Intent
104
- [Detailed description of all user requests and intents]
105
-
106
- ## 2. Key Technical Concepts
107
- - [Concept 1]
108
- - [Concept 2]
109
- - [...]
110
-
111
- ## 3. Files and Code Sections
112
- ### [File Name 1]
113
- - **Why important**: [Summary of why this file is important]
114
- - **Changes made**: [Summary of the changes made to this file, if any]
115
- - **Code snippet**:
116
- \`\`\` language
117
- [Important Code Snippet]
118
- \`\`\`
119
-
120
- ### [File Name 2]
121
- - **Code snippet**:
122
- \`\`\` language
123
- [Important Code Snippet]
124
- \`\`\`
125
-
126
- [...]
127
-
128
- ## 4. Problem Solving
129
- [Description of solved problems and ongoing troubleshooting]
130
-
131
- ## 5. Next Step
132
- [Required next step to take, directly aligned with user's explicit handoff purpose]
133
- </plan>
134
- \`\`\`
135
-
136
- ## Final Step
137
-
138
- After providing your analysis and summary, write the handoff summary to a markdown file at \`handoff-[timestamp]-[slug].md\` where [timestamp] is the current date in format YYYY-MM-DD and the slug is what we defined before.
139
-
140
- Then tell the user about this file and that they can use \`/pickup FILENAME\` to continue.`;
141
- };
142
- async function createHandoffDocument({ modelManager, tokenTracker, tokenCounter, workspace }, purpose) {
143
- const app = "handoff-agent";
144
- const { text, usage } = await generateText({
145
- model: modelManager.getModel(app),
146
- system: "You are a helpful AI assistant tasked with creating detailed handoff summaries for coding agents. Focus on technical accuracy and completeness so that another agent can seamlessly continue the work.",
147
- prompt: handoffPrompt(purpose),
148
- tools: (await initCliTools({ tokenCounter, workspace })).toolDefs,
149
- });
150
- tokenTracker.trackUsage(app, usage);
151
- console.info(text);
152
- // // Parse the response to extract the readable summary and slug
153
- // const lines = text.split("\n");
154
- // let readableSummary = "";
155
- // let slug = "";
156
- // const planContent = text;
157
- // // Extract readable summary (first heading after markdown)
158
- // for (let i = 0; i < lines.length; i++) {
159
- // const line = lines[i].trim();
160
- // if (line.startsWith("# ") && !readableSummary) {
161
- // readableSummary = line.substring(2).trim();
162
- // break;
163
- // }
164
- // }
165
- // // Create slug from readable summary
166
- // if (readableSummary) {
167
- // slug = readableSummary
168
- // .toLowerCase()
169
- // .replace(/[^a-z0-9\s-]/g, "")
170
- // .replace(/\s+/g, "-")
171
- // .replace(/-+/g, "-")
172
- // .trim();
173
- // }
174
- // // Generate filename with timestamp
175
- // const now = new Date();
176
- // const timestamp = now.toISOString().split("T")[0]; // YYYY-MM-DD format
177
- // const filename = `handoff-${timestamp}-${slug || "session"}.md`;
178
- // // Create the final handoff document
179
- // const handoffDocument = `# ${readableSummary || "Session Handoff"}
180
- // ${planContent}
181
- // ---
182
- // *Generated on ${now.toISOString()} for purpose: ${purpose}*
183
- // *This handoff file can be used to continue the work using the /pickup command*`;
184
- // // Save the handoff document using the saveFile tool
185
- // const saveFileTool = await createSaveFileTool({
186
- // workingDir: workspace.primaryDir,
187
- // allowedDirs: workspace.allowedDirs,
188
- // });
189
- // saveFileTool.execute(
190
- // {
191
- // path: `./${filename}`,
192
- // content: handoffDocument,
193
- // encoding: "utf-8",
194
- // },
195
- // {
196
- // toolCallId: `handoff-${Date.now()}`,
197
- // abortSignal: undefined,
198
- // messages: messageHistory.get(),
199
- // },
200
- // );
201
- // console.info(`Handoff document created: ${filename}`);
202
- }
@@ -1,4 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import type { CommandOptions, ReplCommand } from "./types.ts";
3
- export declare function healthCommand({ terminal }: CommandOptions, execFn?: typeof execSync): ReplCommand;
4
- //# sourceMappingURL=health-command.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health-command.d.ts","sourceRoot":"","sources":["../../source/commands/health-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,aAAa,CAC3B,EAAE,QAAQ,EAAE,EAAE,cAAc,EAC5B,MAAM,kBAAW,GAChB,WAAW,CAoRb"}