@travisennis/acai 0.0.7 → 0.0.9

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 (486) hide show
  1. package/README.md +76 -27
  2. package/dist/agent/index.d.ts +21 -25
  3. package/dist/agent/index.d.ts.map +1 -1
  4. package/dist/agent/index.js +145 -103
  5. package/dist/cli.d.ts +2 -2
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +23 -17
  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-command.js → add-directory/index.js} +6 -10
  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/types.js +1 -0
  14. package/dist/commands/add-directory/utils.d.ts +3 -0
  15. package/dist/commands/add-directory/utils.d.ts.map +1 -0
  16. package/dist/commands/add-directory/utils.js +15 -0
  17. package/dist/commands/clear/index.d.ts +3 -0
  18. package/dist/commands/clear/index.d.ts.map +1 -0
  19. package/dist/commands/{clear-command.js → clear/index.js} +0 -2
  20. package/dist/commands/copy/index.d.ts +3 -0
  21. package/dist/commands/copy/index.d.ts.map +1 -0
  22. package/dist/commands/{copy-command.js → copy/index.js} +4 -26
  23. package/dist/commands/copy/types.d.ts +3 -0
  24. package/dist/commands/copy/types.d.ts.map +1 -0
  25. package/dist/commands/copy/types.js +1 -0
  26. package/dist/commands/copy/utils.d.ts +3 -0
  27. package/dist/commands/copy/utils.d.ts.map +1 -0
  28. package/dist/commands/copy/utils.js +22 -0
  29. package/dist/commands/{exit-command.d.ts → exit/index.d.ts} +4 -4
  30. package/dist/commands/exit/index.d.ts.map +1 -0
  31. package/dist/commands/exit/index.js +21 -0
  32. package/dist/commands/exit/types.d.ts +8 -0
  33. package/dist/commands/exit/types.d.ts.map +1 -0
  34. package/dist/commands/exit/types.js +1 -0
  35. package/dist/commands/exit/utils.d.ts +2 -0
  36. package/dist/commands/exit/utils.d.ts.map +1 -0
  37. package/dist/commands/exit/utils.js +13 -0
  38. package/dist/commands/generate-rules/index.d.ts +3 -0
  39. package/dist/commands/generate-rules/index.d.ts.map +1 -0
  40. package/dist/commands/{generate-rules-command.js → generate-rules/index.js} +57 -96
  41. package/dist/commands/generate-rules/utils.d.ts +5 -0
  42. package/dist/commands/generate-rules/utils.d.ts.map +1 -0
  43. package/dist/commands/generate-rules/utils.js +25 -0
  44. package/dist/commands/handoff/index.d.ts +3 -0
  45. package/dist/commands/handoff/index.d.ts.map +1 -0
  46. package/dist/commands/handoff/index.js +97 -0
  47. package/dist/commands/handoff/utils.d.ts +4 -0
  48. package/dist/commands/handoff/utils.d.ts.map +1 -0
  49. package/dist/commands/{handoff-command.js → handoff/utils.js} +24 -92
  50. package/dist/commands/health/index.d.ts +3 -0
  51. package/dist/commands/health/index.d.ts.map +1 -0
  52. package/dist/commands/health/index.js +56 -0
  53. package/dist/commands/health/utils.d.ts +15 -0
  54. package/dist/commands/health/utils.d.ts.map +1 -0
  55. package/dist/commands/health/utils.js +52 -0
  56. package/dist/commands/{help-command.d.ts → help/index.d.ts} +2 -2
  57. package/dist/commands/help/index.d.ts.map +1 -0
  58. package/dist/commands/{help-command.js → help/index.js} +1 -1
  59. package/dist/commands/history/index.d.ts +3 -0
  60. package/dist/commands/history/index.d.ts.map +1 -0
  61. package/dist/commands/{history-command.js → history/index.js} +16 -100
  62. package/dist/commands/history/types.d.ts +11 -0
  63. package/dist/commands/history/types.d.ts.map +1 -0
  64. package/dist/commands/history/types.js +1 -0
  65. package/dist/commands/history/utils.d.ts +4 -0
  66. package/dist/commands/history/utils.d.ts.map +1 -0
  67. package/dist/commands/history/utils.js +86 -0
  68. package/dist/commands/init/index.d.ts +3 -0
  69. package/dist/commands/init/index.d.ts.map +1 -0
  70. package/dist/commands/{init-command.js → init/index.js} +16 -7
  71. package/dist/commands/init-project/index.d.ts +3 -0
  72. package/dist/commands/init-project/index.d.ts.map +1 -0
  73. package/dist/commands/init-project/index.js +51 -0
  74. package/dist/commands/init-project/utils.d.ts +9 -0
  75. package/dist/commands/init-project/utils.d.ts.map +1 -0
  76. package/dist/commands/init-project/utils.js +43 -0
  77. package/dist/commands/list-directories/index.d.ts +3 -0
  78. package/dist/commands/list-directories/index.d.ts.map +1 -0
  79. package/dist/commands/{list-directories-command.js → list-directories/index.js} +1 -1
  80. package/dist/commands/list-tools/index.d.ts +3 -0
  81. package/dist/commands/list-tools/index.d.ts.map +1 -0
  82. package/dist/commands/{list-tools-command.js → list-tools/index.js} +4 -16
  83. package/dist/commands/manager.d.ts +2 -2
  84. package/dist/commands/manager.d.ts.map +1 -1
  85. package/dist/commands/manager.js +35 -43
  86. package/dist/commands/model/index.d.ts +3 -0
  87. package/dist/commands/model/index.d.ts.map +1 -0
  88. package/dist/commands/{model-command.js → model/index.js} +15 -52
  89. package/dist/commands/model/utils.d.ts +3 -0
  90. package/dist/commands/model/utils.d.ts.map +1 -0
  91. package/dist/commands/model/utils.js +5 -0
  92. package/dist/commands/{paste-command.d.ts → paste/index.d.ts} +2 -2
  93. package/dist/commands/paste/index.d.ts.map +1 -0
  94. package/dist/commands/{paste-command.js → paste/index.js} +6 -111
  95. package/dist/commands/paste/utils.d.ts +5 -0
  96. package/dist/commands/paste/utils.d.ts.map +1 -0
  97. package/dist/commands/paste/utils.js +86 -0
  98. package/dist/commands/pickup/index.d.ts +3 -0
  99. package/dist/commands/pickup/index.d.ts.map +1 -0
  100. package/dist/commands/pickup/index.js +138 -0
  101. package/dist/commands/pickup/types.d.ts +6 -0
  102. package/dist/commands/pickup/types.d.ts.map +1 -0
  103. package/dist/commands/pickup/types.js +1 -0
  104. package/dist/commands/pickup/utils.d.ts +7 -0
  105. package/dist/commands/pickup/utils.d.ts.map +1 -0
  106. package/dist/commands/pickup/utils.js +56 -0
  107. package/dist/commands/prompt/index.d.ts +5 -0
  108. package/dist/commands/prompt/index.d.ts.map +1 -0
  109. package/dist/commands/prompt/index.js +122 -0
  110. package/dist/commands/prompt/types.d.ts +15 -0
  111. package/dist/commands/prompt/types.d.ts.map +1 -0
  112. package/dist/commands/prompt/types.js +1 -0
  113. package/dist/commands/prompt/utils.d.ts +12 -0
  114. package/dist/commands/prompt/utils.d.ts.map +1 -0
  115. package/dist/commands/prompt/utils.js +107 -0
  116. package/dist/commands/remove-directory/index.d.ts +3 -0
  117. package/dist/commands/remove-directory/index.d.ts.map +1 -0
  118. package/dist/commands/{remove-directory-command.js → remove-directory/index.js} +2 -2
  119. package/dist/commands/reset/index.d.ts +3 -0
  120. package/dist/commands/reset/index.d.ts.map +1 -0
  121. package/dist/commands/{reset-command.js → reset/index.js} +7 -2
  122. package/dist/commands/reset/types.d.ts +1 -0
  123. package/dist/commands/reset/types.d.ts.map +1 -0
  124. package/dist/commands/reset/types.js +3 -0
  125. package/dist/commands/resources/index.d.ts +3 -0
  126. package/dist/commands/resources/index.d.ts.map +1 -0
  127. package/dist/commands/resources/index.js +84 -0
  128. package/dist/commands/review/index.d.ts +3 -0
  129. package/dist/commands/review/index.d.ts.map +1 -0
  130. package/dist/commands/review/index.js +126 -0
  131. package/dist/commands/review/types.d.ts +12 -0
  132. package/dist/commands/review/types.d.ts.map +1 -0
  133. package/dist/commands/review/types.js +1 -0
  134. package/dist/commands/review/utils.d.ts +4 -0
  135. package/dist/commands/review/utils.d.ts.map +1 -0
  136. package/dist/commands/review/utils.js +87 -0
  137. package/dist/commands/save/index.d.ts +3 -0
  138. package/dist/commands/save/index.d.ts.map +1 -0
  139. package/dist/commands/{save-command.js → save/index.js} +3 -3
  140. package/dist/commands/session/index.d.ts +3 -0
  141. package/dist/commands/session/index.d.ts.map +1 -0
  142. package/dist/commands/session/index.js +230 -0
  143. package/dist/commands/session/types.d.ts +20 -0
  144. package/dist/commands/session/types.d.ts.map +1 -0
  145. package/dist/commands/session/types.js +7 -0
  146. package/dist/commands/share/html-renderer.d.ts +25 -0
  147. package/dist/commands/share/html-renderer.d.ts.map +1 -0
  148. package/dist/commands/share/html-renderer.js +384 -0
  149. package/dist/commands/share/index.d.ts +3 -0
  150. package/dist/commands/share/index.d.ts.map +1 -0
  151. package/dist/commands/share/index.js +122 -0
  152. package/dist/commands/shell/index.d.ts +3 -0
  153. package/dist/commands/shell/index.d.ts.map +1 -0
  154. package/dist/commands/{shell-command.js → shell/index.js} +3 -3
  155. package/dist/commands/types.d.ts +2 -2
  156. package/dist/commands/types.d.ts.map +1 -1
  157. package/dist/config.d.ts +25 -7
  158. package/dist/config.d.ts.map +1 -1
  159. package/dist/config.js +45 -20
  160. package/dist/dedent.d.ts.map +1 -1
  161. package/dist/dedent.js +7 -7
  162. package/dist/execution/index.d.ts +1 -0
  163. package/dist/execution/index.d.ts.map +1 -1
  164. package/dist/execution/index.js +60 -64
  165. package/dist/formatting.d.ts +27 -0
  166. package/dist/formatting.d.ts.map +1 -1
  167. package/dist/formatting.js +40 -0
  168. package/dist/index.d.ts.map +1 -1
  169. package/dist/index.js +194 -95
  170. package/dist/logger.d.ts.map +1 -1
  171. package/dist/logger.js +4 -11
  172. package/dist/mentions.d.ts.map +1 -1
  173. package/dist/mentions.js +3 -53
  174. package/dist/middleware/audit-message.d.ts +2 -2
  175. package/dist/middleware/audit-message.d.ts.map +1 -1
  176. package/dist/middleware/audit-message.js +40 -2
  177. package/dist/middleware/cache.d.ts +2 -2
  178. package/dist/middleware/cache.d.ts.map +1 -1
  179. package/dist/middleware/cache.js +111 -27
  180. package/dist/middleware/rate-limit.d.ts +2 -2
  181. package/dist/middleware/rate-limit.d.ts.map +1 -1
  182. package/dist/middleware/rate-limit.js +1 -0
  183. package/dist/models/ai-config.d.ts.map +1 -1
  184. package/dist/models/ai-config.js +46 -29
  185. package/dist/models/anthropic-provider.d.ts +14 -13
  186. package/dist/models/anthropic-provider.d.ts.map +1 -1
  187. package/dist/models/deepseek-provider.d.ts +9 -8
  188. package/dist/models/deepseek-provider.d.ts.map +1 -1
  189. package/dist/models/google-provider.d.ts +10 -9
  190. package/dist/models/google-provider.d.ts.map +1 -1
  191. package/dist/models/groq-provider.d.ts +8 -7
  192. package/dist/models/groq-provider.d.ts.map +1 -1
  193. package/dist/models/manager.d.ts +7 -4
  194. package/dist/models/manager.d.ts.map +1 -1
  195. package/dist/models/manager.js +5 -25
  196. package/dist/models/openai-provider.d.ts +14 -10
  197. package/dist/models/openai-provider.d.ts.map +1 -1
  198. package/dist/models/openai-provider.js +39 -0
  199. package/dist/models/opencode-zen-provider.d.ts +24 -0
  200. package/dist/models/opencode-zen-provider.d.ts.map +1 -0
  201. package/dist/models/opencode-zen-provider.js +94 -0
  202. package/dist/models/openrouter-provider.d.ts +35 -29
  203. package/dist/models/openrouter-provider.d.ts.map +1 -1
  204. package/dist/models/openrouter-provider.js +108 -80
  205. package/dist/models/providers.d.ts +4 -4
  206. package/dist/models/providers.d.ts.map +1 -1
  207. package/dist/models/providers.js +7 -1
  208. package/dist/models/xai-provider.d.ts +9 -8
  209. package/dist/models/xai-provider.d.ts.map +1 -1
  210. package/dist/prompts/manager.d.ts +1 -1
  211. package/dist/prompts/manager.d.ts.map +1 -1
  212. package/dist/prompts/manager.js +1 -1
  213. package/dist/prompts.d.ts +12 -2
  214. package/dist/prompts.d.ts.map +1 -1
  215. package/dist/prompts.js +74 -411
  216. package/dist/repl/project-status.d.ts +19 -0
  217. package/dist/repl/project-status.d.ts.map +1 -0
  218. package/dist/repl/project-status.js +78 -0
  219. package/dist/repl-new.d.ts +18 -4
  220. package/dist/repl-new.d.ts.map +1 -1
  221. package/dist/repl-new.js +256 -43
  222. package/dist/{messages.d.ts → sessions/manager.d.ts} +10 -4
  223. package/dist/sessions/manager.d.ts.map +1 -0
  224. package/dist/{messages.js → sessions/manager.js} +62 -14
  225. package/dist/skills.d.ts +0 -4
  226. package/dist/skills.d.ts.map +1 -1
  227. package/dist/skills.js +100 -59
  228. package/dist/stdin.d.ts +9 -0
  229. package/dist/stdin.d.ts.map +1 -0
  230. package/dist/stdin.js +26 -0
  231. package/dist/terminal/control.d.ts +1 -0
  232. package/dist/terminal/control.d.ts.map +1 -1
  233. package/dist/terminal/control.js +29 -6
  234. package/dist/terminal/formatting.d.ts +1 -2
  235. package/dist/terminal/formatting.d.ts.map +1 -1
  236. package/dist/terminal/formatting.js +1 -2
  237. package/dist/terminal/keys.d.ts +211 -0
  238. package/dist/terminal/keys.d.ts.map +1 -0
  239. package/dist/terminal/keys.js +546 -0
  240. package/dist/terminal/segmenter.d.ts +6 -0
  241. package/dist/terminal/segmenter.d.ts.map +1 -0
  242. package/dist/terminal/segmenter.js +11 -0
  243. package/dist/terminal/select-prompt.d.ts.map +1 -1
  244. package/dist/terminal/select-prompt.js +9 -21
  245. package/dist/terminal/string-width.d.ts.map +1 -1
  246. package/dist/terminal/string-width.js +40 -21
  247. package/dist/terminal/strip-ansi.d.ts.map +1 -1
  248. package/dist/terminal/strip-ansi.js +9 -15
  249. package/dist/tokens/tracker.d.ts.map +1 -1
  250. package/dist/tokens/tracker.js +58 -16
  251. package/dist/tools/bash.d.ts +9 -11
  252. package/dist/tools/bash.d.ts.map +1 -1
  253. package/dist/tools/bash.js +104 -123
  254. package/dist/tools/directory-tree.d.ts +9 -7
  255. package/dist/tools/directory-tree.d.ts.map +1 -1
  256. package/dist/tools/directory-tree.js +89 -70
  257. package/dist/tools/dynamic-tool-loader.d.ts +22 -4
  258. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  259. package/dist/tools/dynamic-tool-loader.js +39 -44
  260. package/dist/tools/edit-file.d.ts +6 -16
  261. package/dist/tools/edit-file.d.ts.map +1 -1
  262. package/dist/tools/edit-file.js +19 -76
  263. package/dist/tools/glob.d.ts +15 -16
  264. package/dist/tools/glob.d.ts.map +1 -1
  265. package/dist/tools/glob.js +77 -119
  266. package/dist/tools/grep.d.ts +19 -22
  267. package/dist/tools/grep.d.ts.map +1 -1
  268. package/dist/tools/grep.js +61 -108
  269. package/dist/tools/index.d.ts +200 -179
  270. package/dist/tools/index.d.ts.map +1 -1
  271. package/dist/tools/index.js +17 -315
  272. package/dist/tools/ls.d.ts +26 -0
  273. package/dist/tools/ls.d.ts.map +1 -0
  274. package/dist/tools/ls.js +80 -0
  275. package/dist/tools/read-file.d.ts +15 -15
  276. package/dist/tools/read-file.d.ts.map +1 -1
  277. package/dist/tools/read-file.js +49 -82
  278. package/dist/tools/save-file.d.ts +4 -4
  279. package/dist/tools/save-file.d.ts.map +1 -1
  280. package/dist/tools/save-file.js +37 -66
  281. package/dist/tools/think.d.ts +4 -4
  282. package/dist/tools/think.d.ts.map +1 -1
  283. package/dist/tools/think.js +9 -38
  284. package/dist/tools/types.d.ts +5 -25
  285. package/dist/tools/types.d.ts.map +1 -1
  286. package/dist/tools/types.js +0 -9
  287. package/dist/tui/autocomplete/attachment-provider.d.ts +18 -0
  288. package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -0
  289. package/dist/tui/autocomplete/attachment-provider.js +159 -0
  290. package/dist/tui/autocomplete/base-provider.d.ts +17 -0
  291. package/dist/tui/autocomplete/base-provider.d.ts.map +1 -0
  292. package/dist/tui/autocomplete/base-provider.js +1 -0
  293. package/dist/tui/autocomplete/combined-provider.d.ts +20 -0
  294. package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -0
  295. package/dist/tui/autocomplete/combined-provider.js +61 -0
  296. package/dist/tui/autocomplete/command-provider.d.ts +20 -0
  297. package/dist/tui/autocomplete/command-provider.d.ts.map +1 -0
  298. package/dist/tui/autocomplete/command-provider.js +90 -0
  299. package/dist/tui/autocomplete/file-search-provider.d.ts +16 -0
  300. package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -0
  301. package/dist/tui/autocomplete/file-search-provider.js +123 -0
  302. package/dist/tui/autocomplete/path-provider.d.ts +21 -0
  303. package/dist/tui/autocomplete/path-provider.d.ts.map +1 -0
  304. package/dist/tui/autocomplete/path-provider.js +164 -0
  305. package/dist/tui/autocomplete/utils.d.ts +16 -0
  306. package/dist/tui/autocomplete/utils.d.ts.map +1 -0
  307. package/dist/tui/autocomplete/utils.js +137 -0
  308. package/dist/tui/autocomplete.d.ts +12 -43
  309. package/dist/tui/autocomplete.d.ts.map +1 -1
  310. package/dist/tui/autocomplete.js +20 -465
  311. package/dist/tui/components/box.d.ts.map +1 -1
  312. package/dist/tui/components/box.js +16 -10
  313. package/dist/tui/components/editor.d.ts +6 -2
  314. package/dist/tui/components/editor.d.ts.map +1 -1
  315. package/dist/tui/components/editor.js +166 -107
  316. package/dist/tui/components/footer.d.ts +20 -7
  317. package/dist/tui/components/footer.d.ts.map +1 -1
  318. package/dist/tui/components/footer.js +89 -196
  319. package/dist/tui/components/input.d.ts.map +1 -1
  320. package/dist/tui/components/input.js +8 -7
  321. package/dist/tui/components/loader.d.ts +2 -1
  322. package/dist/tui/components/loader.d.ts.map +1 -1
  323. package/dist/tui/components/loader.js +7 -2
  324. package/dist/tui/components/markdown.d.ts +5 -4
  325. package/dist/tui/components/markdown.d.ts.map +1 -1
  326. package/dist/tui/components/markdown.js +51 -40
  327. package/dist/tui/components/modal.d.ts.map +1 -1
  328. package/dist/tui/components/modal.js +9 -8
  329. package/dist/tui/components/notification.d.ts +28 -0
  330. package/dist/tui/components/notification.d.ts.map +1 -0
  331. package/dist/tui/components/notification.js +64 -0
  332. package/dist/tui/components/progress-bar.d.ts.map +1 -1
  333. package/dist/tui/components/progress-bar.js +3 -15
  334. package/dist/tui/components/select-list.d.ts +0 -15
  335. package/dist/tui/components/select-list.d.ts.map +1 -1
  336. package/dist/tui/components/select-list.js +5 -28
  337. package/dist/tui/components/tool-execution.d.ts +3 -6
  338. package/dist/tui/components/tool-execution.d.ts.map +1 -1
  339. package/dist/tui/components/tool-execution.js +26 -38
  340. package/dist/tui/components/welcome.d.ts +8 -1
  341. package/dist/tui/components/welcome.d.ts.map +1 -1
  342. package/dist/tui/components/welcome.js +45 -6
  343. package/dist/tui/editor-launcher.d.ts +13 -0
  344. package/dist/tui/editor-launcher.d.ts.map +1 -0
  345. package/dist/tui/editor-launcher.js +39 -0
  346. package/dist/tui/index.d.ts +7 -3
  347. package/dist/tui/index.d.ts.map +1 -1
  348. package/dist/tui/index.js +3 -2
  349. package/dist/tui/terminal.d.ts +29 -2
  350. package/dist/tui/terminal.d.ts.map +1 -1
  351. package/dist/tui/terminal.js +153 -28
  352. package/dist/tui/tui.d.ts +2 -0
  353. package/dist/tui/tui.d.ts.map +1 -1
  354. package/dist/tui/tui.js +39 -29
  355. package/dist/tui/utils.d.ts.map +1 -1
  356. package/dist/tui/utils.js +2 -3
  357. package/dist/utils/filesystem/security.d.ts.map +1 -1
  358. package/dist/utils/filesystem/security.js +4 -1
  359. package/dist/utils/yaml.d.ts +11 -0
  360. package/dist/utils/yaml.d.ts.map +1 -0
  361. package/dist/utils/yaml.js +207 -0
  362. package/dist/utils/zod.d.ts +1 -0
  363. package/dist/utils/zod.d.ts.map +1 -1
  364. package/dist/utils/zod.js +17 -0
  365. package/package.json +31 -29
  366. package/bin/acai-wrapper.js +0 -26
  367. package/dist/api/exa/index.d.ts +0 -177
  368. package/dist/api/exa/index.d.ts.map +0 -1
  369. package/dist/api/exa/index.js +0 -439
  370. package/dist/commands/add-directory-command.d.ts +0 -3
  371. package/dist/commands/add-directory-command.d.ts.map +0 -1
  372. package/dist/commands/application-log-command.d.ts +0 -3
  373. package/dist/commands/application-log-command.d.ts.map +0 -1
  374. package/dist/commands/application-log-command.js +0 -43
  375. package/dist/commands/clear-command.d.ts +0 -3
  376. package/dist/commands/clear-command.d.ts.map +0 -1
  377. package/dist/commands/compact-command.d.ts +0 -3
  378. package/dist/commands/compact-command.d.ts.map +0 -1
  379. package/dist/commands/compact-command.js +0 -55
  380. package/dist/commands/context-command.d.ts +0 -3
  381. package/dist/commands/context-command.d.ts.map +0 -1
  382. package/dist/commands/context-command.js +0 -124
  383. package/dist/commands/copy-command.d.ts +0 -3
  384. package/dist/commands/copy-command.d.ts.map +0 -1
  385. package/dist/commands/edit-command.d.ts +0 -3
  386. package/dist/commands/edit-command.d.ts.map +0 -1
  387. package/dist/commands/edit-command.js +0 -42
  388. package/dist/commands/edit-prompt-command.d.ts +0 -3
  389. package/dist/commands/edit-prompt-command.d.ts.map +0 -1
  390. package/dist/commands/edit-prompt-command.js +0 -36
  391. package/dist/commands/exit-command.d.ts.map +0 -1
  392. package/dist/commands/exit-command.js +0 -30
  393. package/dist/commands/files-command.d.ts +0 -3
  394. package/dist/commands/files-command.d.ts.map +0 -1
  395. package/dist/commands/files-command.js +0 -68
  396. package/dist/commands/generate-rules-command.d.ts +0 -3
  397. package/dist/commands/generate-rules-command.d.ts.map +0 -1
  398. package/dist/commands/handoff-command.d.ts +0 -3
  399. package/dist/commands/handoff-command.d.ts.map +0 -1
  400. package/dist/commands/health-command.d.ts +0 -4
  401. package/dist/commands/health-command.d.ts.map +0 -1
  402. package/dist/commands/health-command.js +0 -118
  403. package/dist/commands/help-command.d.ts.map +0 -1
  404. package/dist/commands/history-command.d.ts +0 -3
  405. package/dist/commands/history-command.d.ts.map +0 -1
  406. package/dist/commands/init-command.d.ts +0 -3
  407. package/dist/commands/init-command.d.ts.map +0 -1
  408. package/dist/commands/last-log-command.d.ts +0 -3
  409. package/dist/commands/last-log-command.d.ts.map +0 -1
  410. package/dist/commands/last-log-command.js +0 -71
  411. package/dist/commands/list-directories-command.d.ts +0 -3
  412. package/dist/commands/list-directories-command.d.ts.map +0 -1
  413. package/dist/commands/list-tools-command.d.ts +0 -3
  414. package/dist/commands/list-tools-command.d.ts.map +0 -1
  415. package/dist/commands/model-command.d.ts +0 -3
  416. package/dist/commands/model-command.d.ts.map +0 -1
  417. package/dist/commands/paste-command.d.ts.map +0 -1
  418. package/dist/commands/pickup-command.d.ts +0 -3
  419. package/dist/commands/pickup-command.d.ts.map +0 -1
  420. package/dist/commands/pickup-command.js +0 -109
  421. package/dist/commands/prompt-command.d.ts +0 -21
  422. package/dist/commands/prompt-command.d.ts.map +0 -1
  423. package/dist/commands/prompt-command.js +0 -258
  424. package/dist/commands/remove-directory-command.d.ts +0 -3
  425. package/dist/commands/remove-directory-command.d.ts.map +0 -1
  426. package/dist/commands/reset-command.d.ts +0 -3
  427. package/dist/commands/reset-command.d.ts.map +0 -1
  428. package/dist/commands/rules-command.d.ts +0 -3
  429. package/dist/commands/rules-command.d.ts.map +0 -1
  430. package/dist/commands/rules-command.js +0 -73
  431. package/dist/commands/save-command.d.ts +0 -3
  432. package/dist/commands/save-command.d.ts.map +0 -1
  433. package/dist/commands/shell-command.d.ts +0 -3
  434. package/dist/commands/shell-command.d.ts.map +0 -1
  435. package/dist/commands/usage-command.d.ts +0 -3
  436. package/dist/commands/usage-command.d.ts.map +0 -1
  437. package/dist/commands/usage-command.js +0 -31
  438. package/dist/messages.d.ts.map +0 -1
  439. package/dist/repl/project-status-line.d.ts +0 -3
  440. package/dist/repl/project-status-line.d.ts.map +0 -1
  441. package/dist/repl/project-status-line.js +0 -61
  442. package/dist/repl/tool-call-repair.d.ts +0 -4
  443. package/dist/repl/tool-call-repair.d.ts.map +0 -1
  444. package/dist/repl/tool-call-repair.js +0 -54
  445. package/dist/terminal/markdown.d.ts +0 -2
  446. package/dist/terminal/markdown.d.ts.map +0 -1
  447. package/dist/terminal/markdown.js +0 -120
  448. package/dist/tokens/threshold.d.ts +0 -20
  449. package/dist/tokens/threshold.d.ts.map +0 -1
  450. package/dist/tokens/threshold.js +0 -67
  451. package/dist/tools/advanced-edit-file.d.ts +0 -69
  452. package/dist/tools/advanced-edit-file.d.ts.map +0 -1
  453. package/dist/tools/advanced-edit-file.js +0 -285
  454. package/dist/tools/agent.d.ts +0 -29
  455. package/dist/tools/agent.d.ts.map +0 -1
  456. package/dist/tools/agent.js +0 -117
  457. package/dist/tools/batch.d.ts +0 -34
  458. package/dist/tools/batch.d.ts.map +0 -1
  459. package/dist/tools/batch.js +0 -174
  460. package/dist/tools/code-interpreter.d.ts +0 -25
  461. package/dist/tools/code-interpreter.d.ts.map +0 -1
  462. package/dist/tools/code-interpreter.js +0 -183
  463. package/dist/tools/delete-file.d.ts +0 -24
  464. package/dist/tools/delete-file.d.ts.map +0 -1
  465. package/dist/tools/delete-file.js +0 -77
  466. package/dist/tools/dynamic-tool-parser.d.ts +0 -21
  467. package/dist/tools/dynamic-tool-parser.d.ts.map +0 -1
  468. package/dist/tools/dynamic-tool-parser.js +0 -22
  469. package/dist/tools/llm-edit-fixer.d.ts +0 -24
  470. package/dist/tools/llm-edit-fixer.d.ts.map +0 -1
  471. package/dist/tools/llm-edit-fixer.js +0 -136
  472. package/dist/tools/move-file.d.ts +0 -26
  473. package/dist/tools/move-file.d.ts.map +0 -1
  474. package/dist/tools/move-file.js +0 -65
  475. package/dist/tools/read-multiple-files.d.ts +0 -26
  476. package/dist/tools/read-multiple-files.d.ts.map +0 -1
  477. package/dist/tools/read-multiple-files.js +0 -196
  478. package/dist/tools/web-fetch.d.ts +0 -56
  479. package/dist/tools/web-fetch.d.ts.map +0 -1
  480. package/dist/tools/web-fetch.js +0 -247
  481. package/dist/tools/web-search.d.ts +0 -23
  482. package/dist/tools/web-search.d.ts.map +0 -1
  483. package/dist/tools/web-search.js +0 -148
  484. package/dist/tui/components/prompt-status.d.ts +0 -17
  485. package/dist/tui/components/prompt-status.d.ts.map +0 -1
  486. package/dist/tui/components/prompt-status.js +0 -26
@@ -0,0 +1,28 @@
1
+ import type { Component } from "../tui.ts";
2
+ /**
3
+ * NotificationComponent - displays a notification message with styling
4
+ */
5
+ export declare class NotificationComponent implements Component {
6
+ private message;
7
+ private bgColor;
8
+ private textStyle;
9
+ private paddingX;
10
+ private cachedMessage?;
11
+ private cachedWidth?;
12
+ private cachedLines?;
13
+ constructor(message?: string, bgColor?: {
14
+ r: number;
15
+ g: number;
16
+ b: number;
17
+ }, textStyle?: (text: string) => string, paddingX?: number);
18
+ setMessage(message: string): void;
19
+ setBgColor(bgColor: {
20
+ r: number;
21
+ g: number;
22
+ b: number;
23
+ }): void;
24
+ setTextStyle(textStyle: (text: string) => string): void;
25
+ private invalidateCache;
26
+ render(width: number): string[];
27
+ }
28
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../source/tui/components/notification.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,SAAS;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAW;gBAG7B,OAAO,SAAK,EACZ,OAAO;;;;KAA0B,EACjC,SAAS,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAqB,EAClD,QAAQ,SAAI;IAQd,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,UAAU,CAAC,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK9D,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAKvD,OAAO,CAAC,eAAe;IAMvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAsChC"}
@@ -0,0 +1,64 @@
1
+ import style from "../../terminal/style.js";
2
+ import { visibleWidth } from "../utils.js";
3
+ /**
4
+ * NotificationComponent - displays a notification message with styling
5
+ */
6
+ export class NotificationComponent {
7
+ message;
8
+ bgColor;
9
+ textStyle;
10
+ paddingX;
11
+ // Cache for rendered output
12
+ cachedMessage;
13
+ cachedWidth;
14
+ cachedLines;
15
+ constructor(message = "", bgColor = { r: 64, g: 64, b: 64 }, textStyle = style.yellow, paddingX = 1) {
16
+ this.message = message;
17
+ this.bgColor = bgColor;
18
+ this.textStyle = textStyle;
19
+ this.paddingX = paddingX;
20
+ }
21
+ setMessage(message) {
22
+ this.message = message;
23
+ this.invalidateCache();
24
+ }
25
+ setBgColor(bgColor) {
26
+ this.bgColor = bgColor;
27
+ this.invalidateCache();
28
+ }
29
+ setTextStyle(textStyle) {
30
+ this.textStyle = textStyle;
31
+ this.invalidateCache();
32
+ }
33
+ invalidateCache() {
34
+ this.cachedMessage = undefined;
35
+ this.cachedWidth = undefined;
36
+ this.cachedLines = undefined;
37
+ }
38
+ render(width) {
39
+ if (!this.message) {
40
+ return [];
41
+ }
42
+ // Check cache
43
+ if (this.cachedLines &&
44
+ this.cachedMessage === this.message &&
45
+ this.cachedWidth === width) {
46
+ return this.cachedLines;
47
+ }
48
+ const lines = this.message.split("\n");
49
+ const result = [];
50
+ for (const line of lines) {
51
+ const styledText = this.textStyle(line);
52
+ const paddedLine = " ".repeat(this.paddingX) + styledText + " ".repeat(this.paddingX);
53
+ const visibleLength = visibleWidth(paddedLine);
54
+ const paddingNeeded = Math.max(0, width - visibleLength);
55
+ const bgLine = style.bgRgb(this.bgColor.r, this.bgColor.g, this.bgColor.b)(paddedLine + " ".repeat(paddingNeeded));
56
+ result.push(bgLine);
57
+ }
58
+ result.push("");
59
+ this.cachedMessage = this.message;
60
+ this.cachedWidth = width;
61
+ this.cachedLines = result;
62
+ return result;
63
+ }
64
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../source/tui/components/progress-bar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,YAAY,CAAC,CAAW;IAChC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAMzD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,CAAC,eAAe;IAOvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CA+DhC"}
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../source/tui/components/progress-bar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,YAAY,CAAC,CAAW;IAChC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAMzD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,OAAO,CAAC,eAAe;IAOvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAiDhC"}
@@ -1,3 +1,4 @@
1
+ import { formatNumber } from "../../formatting.js";
1
2
  import style from "../../terminal/style.js";
2
3
  /**
3
4
  * Progress bar component - displays a visual progress indicator
@@ -40,25 +41,12 @@ export class ProgressBarComponent {
40
41
  this.cachedWidth === renderWidth) {
41
42
  return this.cachedOutput;
42
43
  }
43
- // Function to format numbers concisely (e.g., 1.2K, 5M)
44
- const formatNumber = (num) => {
45
- if (num < 1000) {
46
- return num.toString();
47
- }
48
- if (num < 1_000_000) {
49
- return `${(num / 1000).toFixed(1)}K`;
50
- }
51
- if (num < 1_000_000_000) {
52
- return `${(num / 1_000_000).toFixed(1)}M`;
53
- }
54
- return `${(num / 1_000_000_000).toFixed(1)}G`;
55
- };
44
+ const percentage = this.total === 0 ? 1 : this.current / this.total;
56
45
  const currentFormatted = formatNumber(this.current);
57
46
  const totalFormatted = formatNumber(this.total);
58
- const progressText = `${currentFormatted}/${totalFormatted}`;
47
+ const progressText = `${currentFormatted}/${totalFormatted} [${(percentage * 100).toFixed(1)}%]`;
59
48
  const progressTextLength = progressText.length + 1; // Add 1 for space
60
49
  const progressBarMaxWidth = Math.max(1, renderWidth - progressTextLength);
61
- const percentage = this.total === 0 ? 1 : this.current / this.total;
62
50
  const filledWidth = Math.max(0, Math.min(progressBarMaxWidth, Math.floor(percentage * progressBarMaxWidth)));
63
51
  const emptyWidth = Math.max(0, progressBarMaxWidth - filledWidth);
64
52
  const a = filledWidth / progressBarMaxWidth > 0.5
@@ -1,19 +1,4 @@
1
1
  import type { Component } from "../tui.ts";
2
- /**
3
- * Check if key data represents Shift+Tab.
4
- * Supports multiple terminal escape sequences:
5
- * - \x1b[Z (standard)
6
- * - \x1b[1;2Z (with modifier)
7
- */
8
- export declare function isShiftTab(keyData: string): boolean;
9
- /**
10
- * Check if key data represents Tab (without Shift).
11
- */
12
- export declare function isTab(keyData: string): boolean;
13
- /**
14
- * Check if key data represents navigation key (arrows, Tab, Shift+Tab).
15
- */
16
- export declare function isNavigationKey(keyData: string): boolean;
17
2
  export interface SelectItem {
18
3
  value: string;
19
4
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"select-list.d.ts","sourceRoot":"","sources":["../../../source/tui/components/select-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAkB;IAExB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;gBAE1C,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,SAAI,EAAE,KAAK,CAAC,EAAE,eAAe;IAOxE,OAAO,CAAC,kBAAkB;IAU1B,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE;IAQ/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAgI/B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgDlC,OAAO,CAAC,qBAAqB;IAO7B,eAAe,IAAI,UAAU,GAAG,IAAI;CAIrC"}
1
+ {"version":3,"file":"select-list.d.ts","sourceRoot":"","sources":["../../../source/tui/components/select-list.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAkB;IAExB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;gBAE1C,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,SAAI,EAAE,KAAK,CAAC,EAAE,eAAe;IAOxE,OAAO,CAAC,kBAAkB;IAU1B,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE;IAQ/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ/B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAgI/B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgDlC,OAAO,CAAC,qBAAqB;IAO7B,eAAe,IAAI,UAAU,GAAG,IAAI;CAIrC"}
@@ -1,29 +1,6 @@
1
+ import { isArrowDown, isArrowUp, isCtrlC, isEnter, isEscape, isShiftTab, isTab, } from "../../terminal/keys.js";
1
2
  import style from "../../terminal/style.js";
2
3
  import { truncateToWidth } from "../utils.js";
3
- /**
4
- * Check if key data represents Shift+Tab.
5
- * Supports multiple terminal escape sequences:
6
- * - \x1b[Z (standard)
7
- * - \x1b[1;2Z (with modifier)
8
- */
9
- export function isShiftTab(keyData) {
10
- return keyData === "\x1b[Z" || keyData === "\x1b[1;2Z";
11
- }
12
- /**
13
- * Check if key data represents Tab (without Shift).
14
- */
15
- export function isTab(keyData) {
16
- return keyData === "\t";
17
- }
18
- /**
19
- * Check if key data represents navigation key (arrows, Tab, Shift+Tab).
20
- */
21
- export function isNavigationKey(keyData) {
22
- return (keyData === "\x1b[A" ||
23
- keyData === "\x1b[B" ||
24
- isTab(keyData) ||
25
- isShiftTab(keyData));
26
- }
27
4
  export class SelectList {
28
5
  items = [];
29
6
  filteredItems = [];
@@ -149,7 +126,7 @@ export class SelectList {
149
126
  }
150
127
  handleInput(keyData) {
151
128
  // Up arrow - wrap to bottom when at top
152
- if (keyData === "\x1b[A") {
129
+ if (isArrowUp(keyData)) {
153
130
  this.selectedIndex =
154
131
  this.selectedIndex === 0
155
132
  ? this.filteredItems.length - 1
@@ -157,7 +134,7 @@ export class SelectList {
157
134
  this.notifySelectionChange();
158
135
  }
159
136
  // Down arrow - wrap to top when at bottom
160
- else if (keyData === "\x1b[B") {
137
+ else if (isArrowDown(keyData)) {
161
138
  this.selectedIndex =
162
139
  this.selectedIndex === this.filteredItems.length - 1
163
140
  ? 0
@@ -181,14 +158,14 @@ export class SelectList {
181
158
  this.notifySelectionChange();
182
159
  }
183
160
  // Enter
184
- else if (keyData === "\r") {
161
+ else if (isEnter(keyData)) {
185
162
  const selectedItem = this.filteredItems[this.selectedIndex];
186
163
  if (selectedItem && this.onSelect) {
187
164
  this.onSelect(selectedItem);
188
165
  }
189
166
  }
190
167
  // Escape or Ctrl+C
191
- else if (keyData === "\x1b" || keyData === "\x03") {
168
+ else if (isEscape(keyData) || isCtrlC(keyData)) {
192
169
  if (this.onCancel) {
193
170
  this.onCancel();
194
171
  }
@@ -1,19 +1,16 @@
1
1
  import type { ToolEvent } from "../../agent/index.ts";
2
- import { Container, type TUI } from "../index.ts";
2
+ import { Container } from "../index.ts";
3
3
  export declare class ToolExecutionComponent extends Container {
4
- private tui;
5
4
  private contentContainer;
6
5
  private loaderComponent;
7
6
  private toolName;
8
7
  private events;
9
- constructor(tui: TUI, events: ToolEvent[]);
8
+ constructor(events: ToolEvent[]);
10
9
  update(events: ToolEvent[]): void;
11
10
  private renderDisplay;
12
11
  private getToolCallStartComponent;
13
12
  private handleToolStartMessage;
14
- private handleToolInitMessage;
15
- private handleToolUpdateMessage;
16
- private handleToolCompletionMessage;
13
+ private renderOutputDisplay;
17
14
  private handleToolErrorMessage;
18
15
  private processEventsInOrder;
19
16
  private getEventIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../source/tui/components/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,SAAS,EAKT,KAAK,GAAG,EACT,MAAM,aAAa,CAAC;AAUrB,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IAczC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE;IAS1B,OAAO,CAAC,aAAa;IAiErB,OAAO,CAAC,yBAAyB;IA0DjC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,aAAa;CAkBtB"}
1
+ {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../source/tui/components/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAA6B,MAAM,aAAa,CAAC;AAWnE,qBAAa,sBAAuB,SAAQ,SAAS;IACnD,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,SAAS,EAAE;IAa/B,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE;IAS1B,OAAO,CAAC,aAAa;IA2CrB,OAAO,CAAC,yBAAyB;IA6CjC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,aAAa;CActB"}
@@ -1,20 +1,18 @@
1
1
  import { capitalize } from "../../formatting.js";
2
2
  import style from "../../terminal/style.js";
3
- import { Container, Loader, Markdown, Spacer, Text, } from "../index.js";
3
+ import { Container, Spacer, Text } from "../index.js";
4
4
  const bgColor = {
5
5
  r: 52,
6
6
  g: 53,
7
7
  b: 65,
8
8
  };
9
9
  export class ToolExecutionComponent extends Container {
10
- tui;
11
10
  contentContainer;
12
11
  loaderComponent;
13
12
  toolName;
14
13
  events;
15
- constructor(tui, events) {
14
+ constructor(events) {
16
15
  super();
17
- this.tui = tui;
18
16
  this.loaderComponent = null;
19
17
  this.toolName = events[0].name;
20
18
  this.events = events;
@@ -42,17 +40,11 @@ export class ToolExecutionComponent extends Container {
42
40
  case "tool-call-start":
43
41
  this.getToolCallStartComponent(event, currentStatus);
44
42
  break;
45
- case "tool-call-init":
46
- this.contentContainer.addChild(new Text(`→ ${this.handleToolInitMessage(event.msg)}`, 1, 0, bgColor));
47
- break;
48
- case "tool-call-update":
49
- this.contentContainer.addChild(new Markdown(this.handleToolUpdateMessage(event.msg), {
50
- paddingX: 3,
51
- customBgRgb: bgColor,
52
- }));
53
- break;
54
43
  case "tool-call-end":
55
- this.contentContainer.addChild(new Text(`└ ${this.handleToolCompletionMessage(event.msg)}`, 1, 0, bgColor));
44
+ // Render the actual tool output with truncation
45
+ if (event.msg) {
46
+ this.contentContainer.addChild(this.renderOutputDisplay(event.msg));
47
+ }
56
48
  break;
57
49
  case "tool-call-error":
58
50
  this.contentContainer.addChild(new Text(`└ ${this.handleToolErrorMessage(event.msg)}`, 1, 0, bgColor));
@@ -70,16 +62,6 @@ export class ToolExecutionComponent extends Container {
70
62
  case "tool-call-start":
71
63
  this.contentContainer.addChild(new Text(`${style.blue.bold("●")} ${this.handleToolStartMessage(event)}`, 1, 0, bgColor));
72
64
  break;
73
- case "tool-call-init":
74
- case "tool-call-update":
75
- if (!this.loaderComponent) {
76
- this.loaderComponent = new Loader(this.tui, this.handleToolStartMessage(event), bgColor);
77
- this.contentContainer.addChild(this.loaderComponent);
78
- }
79
- else {
80
- this.loaderComponent.setMessage(this.handleToolStartMessage(event));
81
- }
82
- break;
83
65
  case "tool-call-end":
84
66
  if (this.loaderComponent) {
85
67
  this.loaderComponent.stop();
@@ -102,17 +84,27 @@ export class ToolExecutionComponent extends Container {
102
84
  const message = event.msg;
103
85
  let result = `${style.bold(capitalize(this.toolName))} `;
104
86
  result += message.trim() ? `${style.bold(message)} ` : "";
105
- result += style.dim(JSON.stringify(event.args).slice(0, 50));
106
87
  return result;
107
88
  }
108
- handleToolInitMessage(message) {
109
- return style.bold(message);
110
- }
111
- handleToolUpdateMessage(message) {
112
- return message;
113
- }
114
- handleToolCompletionMessage(message) {
115
- return style.bold(message);
89
+ renderOutputDisplay(msg) {
90
+ const lines = msg.split("\n");
91
+ const MaxVisible = 10;
92
+ const MidPoint = 5;
93
+ if (lines.length <= MaxVisible || lines.length <= 0) {
94
+ return new Text(style.dim(msg), 3, 1, bgColor);
95
+ }
96
+ const firstFive = lines.slice(0, MidPoint);
97
+ const lastFive = lines.slice(-MidPoint);
98
+ const indicator = `... (${lines.length - MaxVisible} more lines) ...`;
99
+ const truncatedOutput = [
100
+ style.dim(firstFive.join("\n")),
101
+ style.gray(indicator),
102
+ style.dim(lastFive.join("\n")),
103
+ ].join("\n");
104
+ const container = new Container();
105
+ const text = new Text(truncatedOutput, 3, 1, bgColor);
106
+ container.addChild(text);
107
+ return container;
116
108
  }
117
109
  handleToolErrorMessage(message) {
118
110
  return style.bold.red(message);
@@ -145,13 +137,9 @@ export class ToolExecutionComponent extends Container {
145
137
  switch (eventType) {
146
138
  case "tool-call-start":
147
139
  return 0;
148
- case "tool-call-init":
149
- return 1;
150
- case "tool-call-update":
151
- return 2;
152
140
  case "tool-call-end":
153
141
  case "tool-call-error":
154
- return 3;
142
+ return 1;
155
143
  default: {
156
144
  eventType;
157
145
  return -1;
@@ -1,6 +1,13 @@
1
1
  import type { Component } from "../tui.ts";
2
+ export interface WelcomeOptions {
3
+ type?: "default" | "simple";
4
+ }
2
5
  export declare class Welcome implements Component {
3
- render(_width: number): string[];
6
+ private options;
7
+ constructor(options?: WelcomeOptions);
8
+ render(width: number): string[];
9
+ private renderSimple;
10
+ private renderDefault;
4
11
  private getLogo;
5
12
  }
6
13
  //# sourceMappingURL=welcome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../source/tui/components/welcome.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,qBAAa,OAAQ,YAAW,SAAS;IACvC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAiChC,OAAO,CAAC,OAAO;CAUhB"}
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../../source/tui/components/welcome.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC7B;AAED,qBAAa,OAAQ,YAAW,SAAS;IACvC,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,GAAE,cAAmB;IAIxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAQ/B,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,OAAO;CAUhB"}
@@ -1,18 +1,57 @@
1
+ import { dedent } from "../../dedent.js";
1
2
  import style from "../../terminal/style.js";
2
3
  import { getPackageVersion } from "../../version.js";
4
+ import { BoxComponent } from "./box.js";
3
5
  export class Welcome {
4
- render(_width) {
6
+ options;
7
+ constructor(options = {}) {
8
+ this.options = options;
9
+ }
10
+ render(width) {
11
+ if (this.options.type === "simple") {
12
+ return this.renderSimple();
13
+ }
14
+ return this.renderDefault(width);
15
+ }
16
+ renderSimple() {
17
+ const version = getPackageVersion();
18
+ const now = new Date();
19
+ const dateTime = now.toISOString().replace("T", " ").substring(0, 19);
20
+ const slashes = style.red("/") +
21
+ style.yellow("/") +
22
+ style.green("/") +
23
+ style.cyan("/") +
24
+ style.magenta("/");
25
+ const line = slashes +
26
+ " " +
27
+ style.magenta("acai") +
28
+ " " +
29
+ style.dim("|") +
30
+ " " +
31
+ style.dim("version") +
32
+ " " +
33
+ style.magenta(version) +
34
+ " " +
35
+ style.dim("|") +
36
+ " " +
37
+ style.dim(dateTime);
38
+ return ["", line];
39
+ }
40
+ renderDefault(width) {
5
41
  const version = getPackageVersion();
6
42
  const result = [];
7
43
  result.push(style.magenta(this.getLogo()));
8
44
  result.push("");
9
- result.push(style.magenta("Greetings! I am acai."));
45
+ result.push(style.magenta(" Welcome to acai"));
10
46
  result.push(style.gray(` Version ${version}`));
11
47
  result.push("");
12
- result.push(style.white(` Type ${style.cyan("/help")} to see available commands.`));
13
- result.push(style.white(" You can ask acai to explain code, fix issues, or perform tasks."));
14
- result.push(style.white(` Example: "${style.italic("Please analyze this codebase and explain its structure.")}"`));
15
- result.push(style.dim(" Use Ctrl+C to interrupt acai and exit."));
48
+ const boxContent = dedent `
49
+ Type \`/help\` to see available commands.
50
+ You can ask ${style.magenta("acai")} to explain code, fix issues, or perform tasks.
51
+ ${style.yellow("Example:")} "_Please analyze this codebase and explain its structure._"
52
+ Use \`Ctrl+C\` to interrupt acai and exit.
53
+ `;
54
+ result.push(...new BoxComponent("Instructions", boxContent).render(width));
16
55
  result.push("");
17
56
  result.push(style.yellow(`The current working directory is ${process.cwd()}`));
18
57
  return result;
@@ -0,0 +1,13 @@
1
+ import type { Terminal } from "./terminal.ts";
2
+ export interface EditorLaunchOptions {
3
+ initialContent?: string;
4
+ postfix?: string;
5
+ terminal: Terminal;
6
+ signal?: AbortSignal;
7
+ }
8
+ export interface EditorLaunchResult {
9
+ content: string;
10
+ aborted: boolean;
11
+ }
12
+ export declare function launchEditor(options: EditorLaunchOptions): Promise<EditorLaunchResult>;
13
+ //# sourceMappingURL=editor-launcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-launcher.d.ts","sourceRoot":"","sources":["../../source/tui/editor-launcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA0C7B"}
@@ -0,0 +1,39 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ export async function launchEditor(options) {
6
+ const { initialContent = "", postfix = ".txt", terminal, signal } = options;
7
+ if (signal?.aborted) {
8
+ return { content: "", aborted: true };
9
+ }
10
+ const tempDir = await mkdtemp(join(tmpdir(), "acai-editor-"));
11
+ const tempFile = join(tempDir, `edit${postfix}`);
12
+ let enteredExternalMode = false;
13
+ try {
14
+ await writeFile(tempFile, initialContent);
15
+ terminal.enterExternalMode();
16
+ enteredExternalMode = true;
17
+ const editor = process.env["EDITOR"] || process.env["VISUAL"] || "vi";
18
+ const result = spawnSync(editor, [tempFile], {
19
+ stdio: "inherit",
20
+ });
21
+ if (signal?.aborted) {
22
+ return { content: "", aborted: true };
23
+ }
24
+ if (result.error) {
25
+ throw result.error;
26
+ }
27
+ if (result.status !== 0) {
28
+ throw new Error(`Editor exited with code ${result.status}`);
29
+ }
30
+ const content = await readFile(tempFile, "utf-8");
31
+ return { content, aborted: false };
32
+ }
33
+ finally {
34
+ if (enteredExternalMode) {
35
+ terminal.exitExternalMode();
36
+ }
37
+ await rm(tempDir, { recursive: true, force: true }).catch(() => { });
38
+ }
39
+ }
@@ -1,4 +1,5 @@
1
- export { type AutocompleteItem, CombinedAutocompleteProvider, type SlashCommand, } from "./autocomplete.ts";
1
+ export { CombinedProvider as CombinedAutocompleteProvider } from "./autocomplete/combined-provider.ts";
2
+ export type { AutocompleteItem, SlashCommand, } from "./autocomplete.ts";
2
3
  export { BoxComponent } from "./components/box.ts";
3
4
  export { Editor } from "./components/editor.ts";
4
5
  export { HeaderComponent } from "./components/header.ts";
@@ -6,13 +7,16 @@ export { Input } from "./components/input.ts";
6
7
  export { Loader } from "./components/loader.ts";
7
8
  export { Markdown } from "./components/markdown.ts";
8
9
  export { Modal, ModalText } from "./components/modal.ts";
10
+ export { NotificationComponent } from "./components/notification.ts";
9
11
  export { ProgressBarComponent } from "./components/progress-bar.ts";
10
12
  export { SelectList } from "./components/select-list.ts";
11
13
  export { Spacer } from "./components/spacer.ts";
12
14
  export { TableComponent } from "./components/table.ts";
13
15
  export { Text } from "./components/text.ts";
14
16
  export { UserMessageComponent } from "./components/user-message.ts";
15
- export { ProcessTerminal } from "./terminal.ts";
16
- export { type Component, Container, TUI } from "./tui.ts";
17
+ export type { EditorLaunchOptions, EditorLaunchResult, } from "./editor-launcher.ts";
18
+ export { launchEditor } from "./editor-launcher.ts";
19
+ export { ProcessTerminal, type ProcessTerminalOptions } from "./terminal.ts";
20
+ export { Container, TUI } from "./tui.ts";
17
21
  export { visibleWidth } from "./utils.ts";
18
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tui/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,4BAA4B,EAC5B,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/tui/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,IAAI,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAEvG,YAAY,EACV,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,YAAY,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/tui/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  // Core TUI interfaces and classes
2
- // Autocomplete support
3
- export { CombinedAutocompleteProvider, } from "./autocomplete.js";
2
+ export { CombinedProvider as CombinedAutocompleteProvider } from "./autocomplete/combined-provider.js";
4
3
  // Components
5
4
  export { BoxComponent } from "./components/box.js";
6
5
  export { Editor } from "./components/editor.js";
@@ -9,12 +8,14 @@ export { Input } from "./components/input.js";
9
8
  export { Loader } from "./components/loader.js";
10
9
  export { Markdown } from "./components/markdown.js";
11
10
  export { Modal, ModalText } from "./components/modal.js";
11
+ export { NotificationComponent } from "./components/notification.js";
12
12
  export { ProgressBarComponent } from "./components/progress-bar.js";
13
13
  export { SelectList } from "./components/select-list.js";
14
14
  export { Spacer } from "./components/spacer.js";
15
15
  export { TableComponent } from "./components/table.js";
16
16
  export { Text } from "./components/text.js";
17
17
  export { UserMessageComponent } from "./components/user-message.js";
18
+ export { launchEditor } from "./editor-launcher.js";
18
19
  // Terminal interface and implementations
19
20
  export { ProcessTerminal } from "./terminal.js";
20
21
  export { Container, TUI } from "./tui.js";
@@ -13,17 +13,39 @@ export interface Terminal {
13
13
  clearLine(): void;
14
14
  clearFromCursor(): void;
15
15
  clearScreen(): void;
16
+ enterExternalMode(): void;
17
+ exitExternalMode(): void;
18
+ background(): void;
19
+ isInExternalMode(): boolean;
20
+ onResume(callback: () => void): void;
21
+ }
22
+ export interface ProcessTerminalOptions {
23
+ useTty?: boolean;
16
24
  }
17
25
  /**
18
26
  * Real terminal using process.stdin/stdout
27
+ *
28
+ * When useTty is true (for piped stdin scenarios), input is read from /dev/tty
29
+ * instead of process.stdin, allowing interactive input after piped content.
19
30
  */
20
31
  export declare class ProcessTerminal implements Terminal {
21
32
  private wasRaw;
22
33
  private sigintHandler?;
23
- private inputHandler?;
24
- private resizeHandler?;
34
+ private boundInputListener?;
35
+ private boundResizeListener?;
25
36
  private stopped;
37
+ private inExternalMode;
38
+ private resumeCallback?;
39
+ private inputStream;
40
+ private ttyFd?;
41
+ private useTty;
42
+ constructor(options?: ProcessTerminalOptions);
43
+ private handleSigCont;
26
44
  start(onInput: (data: string) => void, onResize: () => void): void;
45
+ private attachListeners;
46
+ private detachListeners;
47
+ private setupCrashCleanup;
48
+ private closeTtyFd;
27
49
  stop(): void;
28
50
  write(data: string): void;
29
51
  get columns(): number;
@@ -34,5 +56,10 @@ export declare class ProcessTerminal implements Terminal {
34
56
  clearLine(): void;
35
57
  clearFromCursor(): void;
36
58
  clearScreen(): void;
59
+ enterExternalMode(): void;
60
+ exitExternalMode(): void;
61
+ background(): void;
62
+ isInExternalMode(): boolean;
63
+ onResume(callback: () => void): void;
37
64
  }
38
65
  //# sourceMappingURL=terminal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../source/tui/terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IAEvB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAGnE,IAAI,IAAI,IAAI,CAAC;IAGb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,IAAI,OAAO,IAAI,MAAM,CAAC;IACtB,IAAI,IAAI,IAAI,MAAM,CAAC;IAGnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,UAAU,IAAI,IAAI,CAAC;IACnB,UAAU,IAAI,IAAI,CAAC;IAGnB,SAAS,IAAI,IAAI,CAAC;IAClB,eAAe,IAAI,IAAI,CAAC;IACxB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,YAAY,CAAC,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,OAAO,CAAS;IAExB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAiClE,IAAI,IAAI,IAAI;IA6BZ,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW3B,UAAU,IAAI,IAAI;IAIlB,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;CAGpB"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../source/tui/terminal.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,QAAQ;IAEvB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAGnE,IAAI,IAAI,IAAI,CAAC;IAGb,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,IAAI,OAAO,IAAI,MAAM,CAAC;IACtB,IAAI,IAAI,IAAI,MAAM,CAAC;IAGnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B,UAAU,IAAI,IAAI,CAAC;IACnB,UAAU,IAAI,IAAI,CAAC;IAGnB,SAAS,IAAI,IAAI,CAAC;IAClB,eAAe,IAAI,IAAI,CAAC;IACxB,WAAW,IAAI,IAAI,CAAC;IAGpB,iBAAiB,IAAI,IAAI,CAAC;IAC1B,gBAAgB,IAAI,IAAI,CAAC;IACzB,UAAU,IAAI,IAAI,CAAC;IACnB,gBAAgB,IAAI,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAkC;IAC7D,OAAO,CAAC,mBAAmB,CAAC,CAAa;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,MAAM,CAAU;gBAEZ,OAAO,GAAE,sBAA2B;IAKhD,OAAO,CAAC,aAAa,CAInB;IAEF,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAiDlE,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,UAAU;IAWlB,IAAI,IAAI,IAAI;IAgCZ,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW3B,UAAU,IAAI,IAAI;IAIlB,UAAU,IAAI,IAAI;IAIlB,SAAS,IAAI,IAAI;IAIjB,eAAe,IAAI,IAAI;IAIvB,WAAW,IAAI,IAAI;IAInB,iBAAiB,IAAI,IAAI;IAiBzB,gBAAgB,IAAI,IAAI;IAqBxB,UAAU,IAAI,IAAI;IAKlB,gBAAgB,IAAI,OAAO;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;CAGrC"}