@travisennis/acai 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +51 -760
  2. package/bin/acai +52 -0
  3. package/dist/agent/index.d.ts +12 -2
  4. package/dist/agent/index.d.ts.map +1 -1
  5. package/dist/agent/index.js +380 -199
  6. package/dist/agent/sub-agent.d.ts +23 -0
  7. package/dist/agent/sub-agent.d.ts.map +1 -0
  8. package/dist/agent/sub-agent.js +109 -0
  9. package/dist/cli/index.d.ts +26 -0
  10. package/dist/cli/index.d.ts.map +1 -0
  11. package/dist/{cli.js → cli/index.js} +84 -77
  12. package/dist/{stdin.d.ts → cli/stdin.d.ts} +2 -1
  13. package/dist/cli/stdin.d.ts.map +1 -0
  14. package/dist/{stdin.js → cli/stdin.js} +11 -0
  15. package/dist/commands/copy/index.js +2 -2
  16. package/dist/commands/copy/utils.d.ts.map +1 -1
  17. package/dist/commands/copy/utils.js +15 -13
  18. package/dist/commands/generate-rules/index.d.ts +1 -1
  19. package/dist/commands/generate-rules/index.d.ts.map +1 -1
  20. package/dist/commands/generate-rules/index.js +16 -101
  21. package/dist/commands/generate-rules/service.d.ts +22 -0
  22. package/dist/commands/generate-rules/service.d.ts.map +1 -0
  23. package/dist/commands/generate-rules/service.js +103 -0
  24. package/dist/commands/handoff/index.js +2 -2
  25. package/dist/commands/health/index.js +1 -1
  26. package/dist/commands/health/utils.d.ts +3 -2
  27. package/dist/commands/health/utils.d.ts.map +1 -1
  28. package/dist/commands/health/utils.js +6 -0
  29. package/dist/commands/history/index.d.ts +1 -1
  30. package/dist/commands/history/index.d.ts.map +1 -1
  31. package/dist/commands/history/index.js +17 -18
  32. package/dist/commands/history/types.d.ts +38 -0
  33. package/dist/commands/history/types.d.ts.map +1 -1
  34. package/dist/commands/history/utils.d.ts.map +1 -1
  35. package/dist/commands/history/utils.js +63 -58
  36. package/dist/commands/init/index.d.ts.map +1 -1
  37. package/dist/commands/init/index.js +3 -8
  38. package/dist/commands/init-project/index.d.ts.map +1 -1
  39. package/dist/commands/init-project/index.js +3 -3
  40. package/dist/commands/init-project/utils.d.ts +2 -1
  41. package/dist/commands/init-project/utils.d.ts.map +1 -1
  42. package/dist/commands/init-project/utils.js +10 -2
  43. package/dist/commands/list-tools/index.d.ts.map +1 -1
  44. package/dist/commands/list-tools/index.js +7 -31
  45. package/dist/commands/manager.d.ts +2 -2
  46. package/dist/commands/manager.d.ts.map +1 -1
  47. package/dist/commands/manager.js +55 -33
  48. package/dist/commands/model/index.d.ts.map +1 -1
  49. package/dist/commands/model/index.js +20 -151
  50. package/dist/commands/model/model-panel.d.ts +4 -0
  51. package/dist/commands/model/model-panel.d.ts.map +1 -0
  52. package/dist/commands/model/model-panel.js +144 -0
  53. package/dist/commands/paste/index.d.ts.map +1 -1
  54. package/dist/commands/paste/index.js +59 -62
  55. package/dist/commands/paste/utils.d.ts.map +1 -1
  56. package/dist/commands/paste/utils.js +88 -58
  57. package/dist/commands/pickup/index.d.ts.map +1 -1
  58. package/dist/commands/pickup/index.js +6 -3
  59. package/dist/commands/pickup/utils.js +3 -3
  60. package/dist/commands/resources/index.d.ts.map +1 -1
  61. package/dist/commands/resources/index.js +33 -50
  62. package/dist/commands/review/index.d.ts.map +1 -1
  63. package/dist/commands/review/index.js +3 -117
  64. package/dist/commands/review/review-panel.d.ts +3 -0
  65. package/dist/commands/review/review-panel.d.ts.map +1 -0
  66. package/dist/commands/review/review-panel.js +186 -0
  67. package/dist/commands/review/utils.d.ts +15 -1
  68. package/dist/commands/review/utils.d.ts.map +1 -1
  69. package/dist/commands/review/utils.js +127 -68
  70. package/dist/commands/session/index.d.ts +1 -1
  71. package/dist/commands/session/index.d.ts.map +1 -1
  72. package/dist/commands/session/index.js +124 -135
  73. package/dist/commands/shell/index.d.ts.map +1 -1
  74. package/dist/commands/shell/index.js +16 -1
  75. package/dist/commands/types.d.ts +2 -2
  76. package/dist/commands/types.d.ts.map +1 -1
  77. package/dist/{config.d.ts → config/index.d.ts} +20 -9
  78. package/dist/config/index.d.ts.map +1 -0
  79. package/dist/{config.js → config/index.js} +43 -42
  80. package/dist/execution/index.d.ts.map +1 -1
  81. package/dist/execution/index.js +75 -55
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +148 -141
  85. package/dist/middleware/cache.d.ts.map +1 -1
  86. package/dist/middleware/cache.js +18 -36
  87. package/dist/models/ai-config.d.ts +1 -0
  88. package/dist/models/ai-config.d.ts.map +1 -1
  89. package/dist/models/ai-config.js +4 -3
  90. package/dist/models/anthropic-provider.d.ts +2 -5
  91. package/dist/models/anthropic-provider.d.ts.map +1 -1
  92. package/dist/models/anthropic-provider.js +3 -70
  93. package/dist/models/deepseek-provider.d.ts +1 -0
  94. package/dist/models/deepseek-provider.d.ts.map +1 -1
  95. package/dist/models/google-provider.d.ts +2 -3
  96. package/dist/models/google-provider.d.ts.map +1 -1
  97. package/dist/models/google-provider.js +0 -26
  98. package/dist/models/groq-provider.d.ts +1 -0
  99. package/dist/models/groq-provider.d.ts.map +1 -1
  100. package/dist/models/manager.d.ts +13 -2
  101. package/dist/models/manager.d.ts.map +1 -1
  102. package/dist/models/manager.js +20 -8
  103. package/dist/models/openai-provider.d.ts +2 -5
  104. package/dist/models/openai-provider.d.ts.map +1 -1
  105. package/dist/models/openai-provider.js +0 -52
  106. package/dist/models/opencode-go-provider.d.ts +25 -0
  107. package/dist/models/opencode-go-provider.d.ts.map +1 -0
  108. package/dist/models/opencode-go-provider.js +78 -0
  109. package/dist/models/opencode-zen-provider.d.ts +7 -3
  110. package/dist/models/opencode-zen-provider.d.ts.map +1 -1
  111. package/dist/models/opencode-zen-provider.js +49 -10
  112. package/dist/models/openrouter-provider.d.ts +27 -31
  113. package/dist/models/openrouter-provider.d.ts.map +1 -1
  114. package/dist/models/openrouter-provider.js +121 -180
  115. package/dist/models/providers.d.ts +3 -3
  116. package/dist/models/providers.d.ts.map +1 -1
  117. package/dist/models/providers.js +6 -0
  118. package/dist/models/xai-provider.d.ts +4 -3
  119. package/dist/models/xai-provider.d.ts.map +1 -1
  120. package/dist/models/xai-provider.js +18 -18
  121. package/dist/modes/manager.d.ts +24 -0
  122. package/dist/modes/manager.d.ts.map +1 -0
  123. package/dist/modes/manager.js +77 -0
  124. package/dist/modes/prompts.d.ts +2 -0
  125. package/dist/modes/prompts.d.ts.map +1 -0
  126. package/dist/modes/prompts.js +142 -0
  127. package/dist/prompts/mentions.d.ts +11 -0
  128. package/dist/prompts/mentions.d.ts.map +1 -0
  129. package/dist/{mentions.js → prompts/mentions.js} +55 -85
  130. package/dist/{prompts.d.ts → prompts/system-prompt.d.ts} +7 -2
  131. package/dist/prompts/system-prompt.d.ts.map +1 -0
  132. package/dist/{prompts.js → prompts/system-prompt.js} +31 -16
  133. package/dist/repl/index.d.ts +174 -0
  134. package/dist/repl/index.d.ts.map +1 -0
  135. package/dist/{repl-new.js → repl/index.js} +397 -76
  136. package/dist/repl/project-status.d.ts +1 -0
  137. package/dist/repl/project-status.d.ts.map +1 -1
  138. package/dist/repl/project-status.js +4 -1
  139. package/dist/sessions/manager.d.ts +92 -0
  140. package/dist/sessions/manager.d.ts.map +1 -1
  141. package/dist/sessions/manager.js +262 -9
  142. package/dist/sessions/summary.d.ts +4 -0
  143. package/dist/sessions/summary.d.ts.map +1 -0
  144. package/dist/sessions/summary.js +30 -0
  145. package/dist/skills/index.d.ts +29 -0
  146. package/dist/skills/index.d.ts.map +1 -0
  147. package/dist/skills/index.js +294 -0
  148. package/dist/subagents/index.d.ts +16 -0
  149. package/dist/subagents/index.d.ts.map +1 -0
  150. package/dist/subagents/index.js +231 -0
  151. package/dist/terminal/control.d.ts +1 -1
  152. package/dist/terminal/control.d.ts.map +1 -1
  153. package/dist/terminal/control.js +3 -3
  154. package/dist/terminal/east-asian-width.d.ts.map +1 -1
  155. package/dist/terminal/east-asian-width.js +404 -351
  156. package/dist/terminal/keys.d.ts +17 -0
  157. package/dist/terminal/keys.d.ts.map +1 -1
  158. package/dist/terminal/keys.js +37 -0
  159. package/dist/terminal/select-prompt.d.ts.map +1 -1
  160. package/dist/terminal/select-prompt.js +24 -12
  161. package/dist/terminal/string-width.d.ts.map +1 -1
  162. package/dist/terminal/string-width.js +25 -27
  163. package/dist/terminal/style.d.ts.map +1 -1
  164. package/dist/terminal/style.js +4 -7
  165. package/dist/terminal/supports-color.d.ts.map +1 -1
  166. package/dist/terminal/supports-color.js +41 -27
  167. package/dist/terminal/table/cell.d.ts +12 -0
  168. package/dist/terminal/table/cell.d.ts.map +1 -1
  169. package/dist/terminal/table/cell.js +40 -25
  170. package/dist/terminal/table/layout-manager.d.ts.map +1 -1
  171. package/dist/terminal/table/layout-manager.js +100 -68
  172. package/dist/terminal/table/utils.d.ts +1 -1
  173. package/dist/terminal/table/utils.d.ts.map +1 -1
  174. package/dist/terminal/table/utils.js +17 -10
  175. package/dist/terminal/wrap-ansi.d.ts.map +1 -1
  176. package/dist/terminal/wrap-ansi.js +174 -105
  177. package/dist/tokens/tracker.d.ts +1 -0
  178. package/dist/tokens/tracker.d.ts.map +1 -1
  179. package/dist/tokens/tracker.js +3 -0
  180. package/dist/tools/agent.d.ts +27 -0
  181. package/dist/tools/agent.d.ts.map +1 -0
  182. package/dist/tools/agent.js +81 -0
  183. package/dist/tools/apply-patch.d.ts +62 -0
  184. package/dist/tools/apply-patch.d.ts.map +1 -0
  185. package/dist/tools/apply-patch.js +377 -0
  186. package/dist/tools/bash.d.ts +4 -3
  187. package/dist/tools/bash.d.ts.map +1 -1
  188. package/dist/tools/bash.js +349 -141
  189. package/dist/tools/directory-tree.d.ts +3 -3
  190. package/dist/tools/directory-tree.d.ts.map +1 -1
  191. package/dist/tools/directory-tree.js +8 -5
  192. package/dist/tools/dynamic-tool-loader.d.ts +3 -6
  193. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  194. package/dist/tools/dynamic-tool-loader.js +20 -4
  195. package/dist/tools/edit-file.d.ts +7 -7
  196. package/dist/tools/edit-file.d.ts.map +1 -1
  197. package/dist/tools/edit-file.js +292 -85
  198. package/dist/tools/glob.d.ts +6 -6
  199. package/dist/tools/glob.d.ts.map +1 -1
  200. package/dist/tools/glob.js +110 -63
  201. package/dist/tools/grep.d.ts +15 -12
  202. package/dist/tools/grep.d.ts.map +1 -1
  203. package/dist/tools/grep.js +315 -193
  204. package/dist/tools/index.d.ts +114 -9
  205. package/dist/tools/index.d.ts.map +1 -1
  206. package/dist/tools/index.js +39 -24
  207. package/dist/tools/ls.d.ts +2 -2
  208. package/dist/tools/ls.d.ts.map +1 -1
  209. package/dist/tools/ls.js +7 -5
  210. package/dist/tools/read-file.d.ts +4 -6
  211. package/dist/tools/read-file.d.ts.map +1 -1
  212. package/dist/tools/read-file.js +84 -39
  213. package/dist/tools/save-file.d.ts +3 -3
  214. package/dist/tools/save-file.d.ts.map +1 -1
  215. package/dist/tools/save-file.js +36 -31
  216. package/dist/tools/skill.d.ts +23 -0
  217. package/dist/tools/skill.d.ts.map +1 -0
  218. package/dist/tools/skill.js +65 -0
  219. package/dist/tools/think.d.ts.map +1 -1
  220. package/dist/tools/think.js +2 -9
  221. package/dist/tools/utils.d.ts +2 -0
  222. package/dist/tools/utils.d.ts.map +1 -1
  223. package/dist/tools/utils.js +12 -0
  224. package/dist/tools/web-fetch.d.ts +50 -0
  225. package/dist/tools/web-fetch.d.ts.map +1 -0
  226. package/dist/tools/web-fetch.js +446 -0
  227. package/dist/tools/web-search.d.ts +44 -0
  228. package/dist/tools/web-search.d.ts.map +1 -0
  229. package/dist/tools/web-search.js +226 -0
  230. package/dist/tui/autocomplete/attachment-provider.d.ts +3 -6
  231. package/dist/tui/autocomplete/attachment-provider.d.ts.map +1 -1
  232. package/dist/tui/autocomplete/attachment-provider.js +25 -78
  233. package/dist/tui/autocomplete/base-provider.d.ts +1 -0
  234. package/dist/tui/autocomplete/base-provider.d.ts.map +1 -1
  235. package/dist/tui/autocomplete/combined-provider.d.ts +1 -4
  236. package/dist/tui/autocomplete/combined-provider.d.ts.map +1 -1
  237. package/dist/tui/autocomplete/combined-provider.js +3 -17
  238. package/dist/tui/autocomplete/command-provider.d.ts +1 -0
  239. package/dist/tui/autocomplete/command-provider.d.ts.map +1 -1
  240. package/dist/tui/autocomplete/command-provider.js +3 -0
  241. package/dist/tui/autocomplete/file-search-provider.d.ts +2 -1
  242. package/dist/tui/autocomplete/file-search-provider.d.ts.map +1 -1
  243. package/dist/tui/autocomplete/file-search-provider.js +37 -17
  244. package/dist/tui/autocomplete/skill-provider.d.ts +17 -0
  245. package/dist/tui/autocomplete/skill-provider.d.ts.map +1 -0
  246. package/dist/tui/autocomplete/skill-provider.js +49 -0
  247. package/dist/tui/autocomplete/utils.d.ts +2 -1
  248. package/dist/tui/autocomplete/utils.d.ts.map +1 -1
  249. package/dist/tui/autocomplete/utils.js +25 -23
  250. package/dist/tui/autocomplete.d.ts +2 -2
  251. package/dist/tui/autocomplete.d.ts.map +1 -1
  252. package/dist/tui/autocomplete.js +3 -5
  253. package/dist/tui/components/assistant-message.d.ts.map +1 -1
  254. package/dist/tui/components/assistant-message.js +0 -4
  255. package/dist/tui/components/editor.d.ts +18 -3
  256. package/dist/tui/components/editor.d.ts.map +1 -1
  257. package/dist/tui/components/editor.js +211 -237
  258. package/dist/tui/components/footer.d.ts +6 -4
  259. package/dist/tui/components/footer.d.ts.map +1 -1
  260. package/dist/tui/components/footer.js +49 -25
  261. package/dist/tui/components/markdown.d.ts +10 -7
  262. package/dist/tui/components/markdown.d.ts.map +1 -1
  263. package/dist/tui/components/markdown.js +57 -39
  264. package/dist/tui/components/modal.d.ts.map +1 -1
  265. package/dist/tui/components/modal.js +35 -33
  266. package/dist/tui/components/notification.d.ts +13 -2
  267. package/dist/tui/components/notification.d.ts.map +1 -1
  268. package/dist/tui/components/notification.js +36 -2
  269. package/dist/tui/components/progress-bar.js +1 -1
  270. package/dist/tui/components/select-list.d.ts +1 -0
  271. package/dist/tui/components/select-list.d.ts.map +1 -1
  272. package/dist/tui/components/select-list.js +14 -11
  273. package/dist/tui/components/text.d.ts +16 -0
  274. package/dist/tui/components/text.d.ts.map +1 -1
  275. package/dist/tui/components/text.js +72 -57
  276. package/dist/tui/components/thinking-block.d.ts +9 -0
  277. package/dist/tui/components/thinking-block.d.ts.map +1 -1
  278. package/dist/tui/components/thinking-block.js +43 -11
  279. package/dist/tui/components/tool-execution.d.ts +5 -1
  280. package/dist/tui/components/tool-execution.d.ts.map +1 -1
  281. package/dist/tui/components/tool-execution.js +19 -10
  282. package/dist/tui/components/user-message.d.ts.map +1 -1
  283. package/dist/tui/components/user-message.js +0 -3
  284. package/dist/tui/components/welcome.d.ts +2 -1
  285. package/dist/tui/components/welcome.d.ts.map +1 -1
  286. package/dist/tui/components/welcome.js +2 -2
  287. package/dist/tui/editor-launcher.d.ts +3 -2
  288. package/dist/tui/editor-launcher.d.ts.map +1 -1
  289. package/dist/tui/index.d.ts +0 -1
  290. package/dist/tui/index.d.ts.map +1 -1
  291. package/dist/tui/terminal.d.ts.map +1 -1
  292. package/dist/tui/terminal.js +10 -2
  293. package/dist/tui/tui.d.ts +43 -0
  294. package/dist/tui/tui.d.ts.map +1 -1
  295. package/dist/tui/tui.js +166 -41
  296. package/dist/tui/utils.d.ts +1 -5
  297. package/dist/tui/utils.d.ts.map +1 -1
  298. package/dist/tui/utils.js +271 -44
  299. package/dist/utils/bash/parse.d.ts +19 -0
  300. package/dist/utils/bash/parse.d.ts.map +1 -0
  301. package/dist/utils/bash/parse.js +223 -0
  302. package/dist/utils/bash/quote.d.ts +6 -0
  303. package/dist/utils/bash/quote.d.ts.map +1 -0
  304. package/dist/utils/bash/quote.js +23 -0
  305. package/dist/utils/bash.d.ts.map +1 -1
  306. package/dist/utils/bash.js +211 -126
  307. package/dist/utils/command-protection.d.ts +28 -0
  308. package/dist/utils/command-protection.d.ts.map +1 -0
  309. package/dist/utils/command-protection.js +324 -0
  310. package/dist/utils/dedent.d.ts.map +1 -0
  311. package/dist/utils/env-expand.d.ts +2 -0
  312. package/dist/utils/env-expand.d.ts.map +1 -0
  313. package/dist/utils/env-expand.js +8 -0
  314. package/dist/utils/filesystem/path-display.d.ts +11 -0
  315. package/dist/utils/filesystem/path-display.d.ts.map +1 -0
  316. package/dist/utils/filesystem/path-display.js +32 -0
  317. package/dist/utils/filesystem/security.d.ts +2 -2
  318. package/dist/utils/filesystem/security.d.ts.map +1 -1
  319. package/dist/utils/filesystem/security.js +28 -30
  320. package/dist/utils/formatting.d.ts.map +1 -0
  321. package/dist/{formatting.js → utils/formatting.js} +1 -1
  322. package/dist/utils/git.d.ts +4 -0
  323. package/dist/utils/git.d.ts.map +1 -1
  324. package/dist/utils/git.js +30 -0
  325. package/dist/utils/glob.d.ts +1 -1
  326. package/dist/utils/glob.d.ts.map +1 -1
  327. package/dist/utils/logger.d.ts.map +1 -0
  328. package/dist/{logger.js → utils/logger.js} +1 -1
  329. package/dist/utils/parsing.d.ts.map +1 -0
  330. package/dist/utils/process.d.ts.map +1 -1
  331. package/dist/utils/process.js +90 -37
  332. package/dist/utils/templates.d.ts +2 -0
  333. package/dist/utils/templates.d.ts.map +1 -0
  334. package/dist/utils/templates.js +24 -0
  335. package/dist/utils/version.d.ts.map +1 -0
  336. package/dist/{version.js → utils/version.js} +1 -1
  337. package/package.json +35 -26
  338. package/dist/cli.d.ts +0 -23
  339. package/dist/cli.d.ts.map +0 -1
  340. package/dist/commands/add-directory/types.d.ts +0 -6
  341. package/dist/commands/add-directory/types.d.ts.map +0 -1
  342. package/dist/commands/add-directory/types.js +0 -1
  343. package/dist/commands/copy/types.d.ts +0 -3
  344. package/dist/commands/copy/types.d.ts.map +0 -1
  345. package/dist/commands/copy/types.js +0 -1
  346. package/dist/commands/exit/index.d.ts +0 -10
  347. package/dist/commands/exit/index.d.ts.map +0 -1
  348. package/dist/commands/exit/index.js +0 -21
  349. package/dist/commands/exit/types.d.ts +0 -8
  350. package/dist/commands/exit/types.d.ts.map +0 -1
  351. package/dist/commands/exit/types.js +0 -1
  352. package/dist/commands/exit/utils.d.ts +0 -2
  353. package/dist/commands/exit/utils.d.ts.map +0 -1
  354. package/dist/commands/exit/utils.js +0 -13
  355. package/dist/commands/prompt/index.d.ts +0 -5
  356. package/dist/commands/prompt/index.d.ts.map +0 -1
  357. package/dist/commands/prompt/index.js +0 -122
  358. package/dist/commands/prompt/types.d.ts +0 -15
  359. package/dist/commands/prompt/types.d.ts.map +0 -1
  360. package/dist/commands/prompt/types.js +0 -1
  361. package/dist/commands/prompt/utils.d.ts +0 -12
  362. package/dist/commands/prompt/utils.d.ts.map +0 -1
  363. package/dist/commands/prompt/utils.js +0 -107
  364. package/dist/commands/reset/index.d.ts +0 -3
  365. package/dist/commands/reset/index.d.ts.map +0 -1
  366. package/dist/commands/reset/index.js +0 -25
  367. package/dist/commands/reset/types.d.ts +0 -1
  368. package/dist/commands/reset/types.d.ts.map +0 -1
  369. package/dist/commands/reset/types.js +0 -3
  370. package/dist/commands/review/types.d.ts +0 -12
  371. package/dist/commands/review/types.d.ts.map +0 -1
  372. package/dist/commands/review/types.js +0 -1
  373. package/dist/commands/save/index.d.ts +0 -3
  374. package/dist/commands/save/index.d.ts.map +0 -1
  375. package/dist/commands/save/index.js +0 -19
  376. package/dist/config.d.ts.map +0 -1
  377. package/dist/dedent.d.ts.map +0 -1
  378. package/dist/formatting.d.ts.map +0 -1
  379. package/dist/logger.d.ts.map +0 -1
  380. package/dist/mentions.d.ts +0 -14
  381. package/dist/mentions.d.ts.map +0 -1
  382. package/dist/parsing.d.ts.map +0 -1
  383. package/dist/prompts.d.ts.map +0 -1
  384. package/dist/repl-new.d.ts +0 -65
  385. package/dist/repl-new.d.ts.map +0 -1
  386. package/dist/skills.d.ts +0 -16
  387. package/dist/skills.d.ts.map +0 -1
  388. package/dist/skills.js +0 -233
  389. package/dist/stdin.d.ts.map +0 -1
  390. package/dist/tui/autocomplete/path-provider.d.ts +0 -21
  391. package/dist/tui/autocomplete/path-provider.d.ts.map +0 -1
  392. package/dist/tui/autocomplete/path-provider.js +0 -164
  393. package/dist/utils/iterables.d.ts +0 -2
  394. package/dist/utils/iterables.d.ts.map +0 -1
  395. package/dist/utils/iterables.js +0 -6
  396. package/dist/version.d.ts.map +0 -1
  397. /package/dist/{dedent.d.ts → utils/dedent.d.ts} +0 -0
  398. /package/dist/{dedent.js → utils/dedent.js} +0 -0
  399. /package/dist/{formatting.d.ts → utils/formatting.d.ts} +0 -0
  400. /package/dist/{logger.d.ts → utils/logger.d.ts} +0 -0
  401. /package/dist/{parsing.d.ts → utils/parsing.d.ts} +0 -0
  402. /package/dist/{parsing.js → utils/parsing.js} +0 -0
  403. /package/dist/{version.d.ts → utils/version.d.ts} +0 -0
@@ -52,6 +52,18 @@ export declare function isCtrlK(data: string): boolean;
52
52
  * Ignores lock key bits.
53
53
  */
54
54
  export declare function isCtrlL(data: string): boolean;
55
+ /**
56
+ * Check if input matches Ctrl+M (Kitty protocol only).
57
+ * The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
58
+ * so we only match the Kitty protocol sequence to avoid
59
+ * intercepting Enter keypresses.
60
+ */
61
+ export declare function isCtrlM(data: string): boolean;
62
+ /**
63
+ * Check if input matches Ctrl+N (raw byte or Kitty protocol).
64
+ * Ignores lock key bits.
65
+ */
66
+ export declare function isCtrlN(data: string): boolean;
55
67
  /**
56
68
  * Check if input matches Ctrl+O (raw byte or Kitty protocol).
57
69
  * Ignores lock key bits.
@@ -72,6 +84,11 @@ export declare function isCtrlP(data: string): boolean;
72
84
  * Ignores lock key bits.
73
85
  */
74
86
  export declare function isShiftCtrlP(data: string): boolean;
87
+ /**
88
+ * Check if input matches Ctrl+R (raw byte or Kitty protocol).
89
+ * Ignores lock key bits.
90
+ */
91
+ export declare function isCtrlR(data: string): boolean;
75
92
  /**
76
93
  * Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
77
94
  * Ignores lock key bits.
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"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"}
@@ -32,8 +32,11 @@ const CODEPOINTS = {
32
32
  g: 103,
33
33
  k: 107,
34
34
  l: 108,
35
+ m: 109,
36
+ n: 110,
35
37
  o: 111,
36
38
  p: 112,
39
+ r: 114,
37
40
  t: 116,
38
41
  u: 117,
39
42
  w: 119,
@@ -148,8 +151,11 @@ const Keys = {
148
151
  CTRL_G: kittySequence(CODEPOINTS.g, MODIFIERS.ctrl),
149
152
  CTRL_K: kittySequence(CODEPOINTS.k, MODIFIERS.ctrl),
150
153
  CTRL_L: kittySequence(CODEPOINTS.l, MODIFIERS.ctrl),
154
+ CTRL_M: kittySequence(CODEPOINTS.m, MODIFIERS.ctrl),
151
155
  CTRL_O: kittySequence(CODEPOINTS.o, MODIFIERS.ctrl),
156
+ CTRL_N: kittySequence(CODEPOINTS.n, MODIFIERS.ctrl),
152
157
  CTRL_P: kittySequence(CODEPOINTS.p, MODIFIERS.ctrl),
158
+ CTRL_R: kittySequence(CODEPOINTS.r, MODIFIERS.ctrl),
153
159
  CTRL_T: kittySequence(CODEPOINTS.t, MODIFIERS.ctrl),
154
160
  CTRL_U: kittySequence(CODEPOINTS.u, MODIFIERS.ctrl),
155
161
  CTRL_W: kittySequence(CODEPOINTS.w, MODIFIERS.ctrl),
@@ -202,8 +208,11 @@ const RAW = {
202
208
  CTRL_G: "\x07",
203
209
  CTRL_K: "\x0b",
204
210
  CTRL_L: "\x0c",
211
+ CTRL_M: "\x0d",
212
+ CTRL_N: "\x0e",
205
213
  CTRL_O: "\x0f",
206
214
  CTRL_P: "\x10",
215
+ CTRL_R: "\x12",
207
216
  CTRL_T: "\x14",
208
217
  CTRL_U: "\x15",
209
218
  CTRL_W: "\x17",
@@ -277,6 +286,25 @@ export function isCtrlL(data) {
277
286
  data === Keys.CTRL_L ||
278
287
  matchesKittySequence(data, CODEPOINTS.l, MODIFIERS.ctrl));
279
288
  }
289
+ /**
290
+ * Check if input matches Ctrl+M (Kitty protocol only).
291
+ * The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
292
+ * so we only match the Kitty protocol sequence to avoid
293
+ * intercepting Enter keypresses.
294
+ */
295
+ export function isCtrlM(data) {
296
+ return (data === Keys.CTRL_M ||
297
+ matchesKittySequence(data, CODEPOINTS.m, MODIFIERS.ctrl));
298
+ }
299
+ /**
300
+ * Check if input matches Ctrl+N (raw byte or Kitty protocol).
301
+ * Ignores lock key bits.
302
+ */
303
+ export function isCtrlN(data) {
304
+ return (data === RAW.CTRL_N ||
305
+ data === Keys.CTRL_N ||
306
+ matchesKittySequence(data, CODEPOINTS.n, MODIFIERS.ctrl));
307
+ }
280
308
  /**
281
309
  * Check if input matches Ctrl+O (raw byte or Kitty protocol).
282
310
  * Ignores lock key bits.
@@ -309,6 +337,15 @@ export function isCtrlP(data) {
309
337
  export function isShiftCtrlP(data) {
310
338
  return matchesKittySequence(data, CODEPOINTS.p, MODIFIERS.shift + MODIFIERS.ctrl);
311
339
  }
340
+ /**
341
+ * Check if input matches Ctrl+R (raw byte or Kitty protocol).
342
+ * Ignores lock key bits.
343
+ */
344
+ export function isCtrlR(data) {
345
+ return (data === RAW.CTRL_R ||
346
+ data === Keys.CTRL_R ||
347
+ matchesKittySequence(data, CODEPOINTS.r, MODIFIERS.ctrl));
348
+ }
312
349
  /**
313
350
  * Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
314
351
  * Ignores lock key bits.
@@ -1 +1 @@
1
- {"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";AACA;;;GAGG;AAyBH,UAAU,YAAY,CAAC,CAAC,GAAG,OAAO;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAQpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAgGD,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EACxC,OAAkB,EAClB,OAAO,EACP,OAAW,EACX,QAAY,EACZ,MAAM,EACN,QAA2D,GAC5D,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgN/B"}
1
+ {"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";AAEA;;;GAGG;AA2BH,UAAU,YAAY,CAAC,CAAC,GAAG,OAAO;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAQpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAoHD,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EACxC,OAAkB,EAClB,OAAO,EACP,OAAW,EACX,QAAY,EACZ,MAAM,EACN,QAA2D,GAC5D,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA6M/B"}
@@ -3,6 +3,8 @@
3
3
  * Standalone select prompt (inquirer-like)
4
4
  * - TypeScript version
5
5
  */
6
+ import { truncateToWidth } from "../tui/utils.js";
7
+ import { getTerminalSize } from "./control.js";
6
8
  import { isArrowDown, isArrowUp, isBackspace, isCtrlC, isEnd, isEnter, isHome, } from "./keys.js";
7
9
  const ANSI = {
8
10
  hideCursor: "\x1b[?25l",
@@ -16,6 +18,18 @@ const ANSI = {
16
18
  dim: "\x1b[2m",
17
19
  reset: "\x1b[0m",
18
20
  };
21
+ /**
22
+ * Factory function for creating prompt abort handlers.
23
+ * Defined at module level to avoid capturing closure scope.
24
+ */
25
+ function createPromptAbortHandler(cleanupFn, rejectFn) {
26
+ return function abortHandler() {
27
+ cleanupFn();
28
+ const err = new Error("AbortError");
29
+ err.name = "AbortError";
30
+ rejectFn(err);
31
+ };
32
+ }
19
33
  function normalizeChoice(choice) {
20
34
  if (typeof choice === "string") {
21
35
  return { name: choice, value: choice, disabled: false };
@@ -55,7 +69,8 @@ function findLastEnabledIndex(choices) {
55
69
  }
56
70
  return choices.length - 1;
57
71
  }
58
- function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, totalChoices) {
72
+ function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, totalChoices, terminalColumns) {
73
+ const maxItemWidth = Math.max(0, terminalColumns - 4); // 4 chars for prefix and spacing
59
74
  const visible = choices.slice(pageStart, pageStart + pageSize);
60
75
  const lines = [];
61
76
  const searchInfo = typed ? ` (search: ${typed})` : "";
@@ -67,14 +82,15 @@ function render(choices, pointerIndex, pageStart, pageSize, prompt, typed, total
67
82
  const actualIndex = pageStart + i;
68
83
  const ch = visible[i];
69
84
  const prefix = actualIndex === pointerIndex ? "›" : " ";
85
+ const truncatedName = truncateToWidth(ch.name, maxItemWidth, "...");
70
86
  if (ch.disabled) {
71
- lines.push(` ${prefix} ${ch.name} (disabled)`);
87
+ lines.push(` ${prefix} ${truncatedName} (disabled)`);
72
88
  }
73
89
  else if (actualIndex === pointerIndex) {
74
- lines.push(`${ANSI.cyan} ${prefix} ${ch.name}${ANSI.reset}`);
90
+ lines.push(`${ANSI.cyan} ${prefix} ${truncatedName}${ANSI.reset}`);
75
91
  }
76
92
  else {
77
- lines.push(` ${prefix} ${ch.name}`);
93
+ lines.push(` ${prefix} ${truncatedName}`);
78
94
  }
79
95
  }
80
96
  if (choices.length > pageSize) {
@@ -128,7 +144,8 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
128
144
  stdout.write(ANSI.moveToStart);
129
145
  stdout.write(ANSI.clearFromCursor);
130
146
  clearPreviousOutput(previousOutputLines);
131
- const out = render(filteredChoices, pointer, pageStart, pageSize, message, searchBuffer, normalized.length);
147
+ const { columns } = getTerminalSize();
148
+ const out = render(filteredChoices, pointer, pageStart, pageSize, message, searchBuffer, normalized.length, columns);
132
149
  previousOutputLines = out.split("\n").length;
133
150
  stdout.write(`${out}\n`);
134
151
  }
@@ -166,12 +183,7 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
166
183
  stdout.write(ANSI.showCursor);
167
184
  }
168
185
  const abortHandler = signal
169
- ? () => {
170
- cleanup();
171
- const err = new Error("AbortError");
172
- err.name = "AbortError";
173
- reject(err);
174
- }
186
+ ? createPromptAbortHandler(cleanup, reject)
175
187
  : null;
176
188
  if (signal && abortHandler) {
177
189
  signal.addEventListener("abort", abortHandler);
@@ -248,7 +260,7 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
248
260
  stdout.write("\n");
249
261
  }
250
262
  };
251
- process.on("exit", exitHandler);
263
+ process.once("exit", exitHandler);
252
264
  }
253
265
  catch (error) {
254
266
  cleanup();
@@ -1 +1 @@
1
- {"version":3,"file":"string-width.d.ts","sourceRoot":"","sources":["../../source/terminal/string-width.ts"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA8CD,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAuDR"}
1
+ {"version":3,"file":"string-width.d.ts","sourceRoot":"","sources":["../../source/terminal/string-width.ts"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA+ED,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAwBR"}
@@ -32,6 +32,30 @@ function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
32
32
  }
33
33
  return extra;
34
34
  }
35
+ function segmentWidth(segment, eastAsianWidthOptions) {
36
+ if (zeroWidthClusterRegex.test(segment)) {
37
+ return 0;
38
+ }
39
+ if (rgiEmojiRegex.test(segment)) {
40
+ return 2;
41
+ }
42
+ const firstCodePoint = segment.codePointAt(0);
43
+ if (firstCodePoint === undefined) {
44
+ return 0;
45
+ }
46
+ const hasLeadingNonPrinting = leadingNonPrintingRegex.test(segment);
47
+ const codePoint = hasLeadingNonPrinting
48
+ ? segment.replace(leadingNonPrintingRegex, "").codePointAt(0)
49
+ : firstCodePoint;
50
+ if (codePoint === undefined) {
51
+ return 0;
52
+ }
53
+ let width = eastAsianWidth(codePoint, eastAsianWidthOptions);
54
+ if (segment.length > 1) {
55
+ width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
56
+ }
57
+ return width;
58
+ }
35
59
  export default function stringWidth(input, options = {}) {
36
60
  if (typeof input !== "string" || input.length === 0) {
37
61
  return 0;
@@ -46,35 +70,9 @@ export default function stringWidth(input, options = {}) {
46
70
  }
47
71
  let width = 0;
48
72
  const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
49
- // Use lazy segmenter initialization
50
73
  const segmenter = getSegmenter();
51
74
  for (const { segment } of segmenter.segment(string)) {
52
- // Zero-width clusters - inline test for hot path
53
- if (zeroWidthClusterRegex.test(segment)) {
54
- continue;
55
- }
56
- // Emoji width logic
57
- if (rgiEmojiRegex.test(segment)) {
58
- width += 2;
59
- continue;
60
- }
61
- // Get first code point directly, avoiding intermediate string
62
- const firstCodePoint = segment.codePointAt(0);
63
- if (firstCodePoint === undefined) {
64
- continue;
65
- }
66
- // Check if we need to strip leading non-printing characters
67
- const hasLeadingNonPrinting = leadingNonPrintingRegex.test(segment);
68
- const codePoint = hasLeadingNonPrinting
69
- ? segment.replace(leadingNonPrintingRegex, "").codePointAt(0)
70
- : firstCodePoint;
71
- if (codePoint !== undefined) {
72
- width += eastAsianWidth(codePoint, eastAsianWidthOptions);
73
- // Only check trailing width if segment has multiple characters
74
- if (segment.length > 1) {
75
- width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
76
- }
77
- }
75
+ width += segmentWidth(segment, eastAsianWidthOptions);
78
76
  }
79
77
  return width;
80
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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"}
@@ -97,9 +97,8 @@ for (const model of usedModels) {
97
97
  get() {
98
98
  const { level } = this;
99
99
  return function (...args) {
100
- const styler = createStyler(
101
- // biome-ignore lint/style/noNonNullAssertion: Level is guaranteed to be valid for style compatibility
102
- getModelAnsi(model, levelMapping[level], "color", ...args),
100
+ const levelValue = level ?? 0;
101
+ const styler = createStyler(getModelAnsi(model, levelMapping[levelValue], "color", ...args),
103
102
  // biome-ignore lint/suspicious/noExplicitAny: Dynamic property access needed for style compatibility
104
103
  ansiStyles.color.close,
105
104
  // biome-ignore lint/suspicious/noExplicitAny: Dynamic symbol access needed for style compatibility
@@ -109,15 +108,13 @@ for (const model of usedModels) {
109
108
  };
110
109
  },
111
110
  };
112
- // biome-ignore lint/style/noNonNullAssertion: Model string is guaranteed to be valid for style compatibility
113
111
  const bgModel = `bg${model[0].toUpperCase()}${model.slice(1)}`;
114
112
  styles[bgModel] = {
115
113
  get() {
116
114
  const { level } = this;
117
115
  return function (...args) {
118
- const styler = createStyler(
119
- // biome-ignore lint/style/noNonNullAssertion: Level is guaranteed to be valid for style compatibility
120
- getModelAnsi(model, levelMapping[level], "bgColor", ...args),
116
+ const levelValue = level ?? 0;
117
+ const styler = createStyler(getModelAnsi(model, levelMapping[levelValue], "bgColor", ...args),
121
118
  // biome-ignore lint/suspicious/noExplicitAny: Dynamic property access needed for style compatibility
122
119
  ansiStyles.bgColor.close,
123
120
  // biome-ignore lint/suspicious/noExplicitAny: Dynamic symbol access needed for style compatibility
@@ -1 +1 @@
1
- {"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAgID,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,GAAG,KAAK,CAOtB;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAkJD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,GAAG,KAAK,CAOtB;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
@@ -33,6 +33,41 @@ function translateLevel(level) {
33
33
  has16m: level >= 3,
34
34
  };
35
35
  }
36
+ function detectCiColorLevel(min) {
37
+ if (!("CI" in env)) {
38
+ return undefined;
39
+ }
40
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
41
+ return 3;
42
+ }
43
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) ||
44
+ env["CI_NAME"] === "codeship") {
45
+ return 1;
46
+ }
47
+ return min;
48
+ }
49
+ function detectTerminalColorLevel() {
50
+ if ("TERM_PROGRAM" in env) {
51
+ const termProgramVersion = String(env["TERM_PROGRAM_VERSION"] || "0");
52
+ const version = Number.parseInt(termProgramVersion.split(".")[0] ?? "0", 10);
53
+ switch (env["TERM_PROGRAM"]) {
54
+ case "iTerm.app": {
55
+ return version >= 3 ? 3 : 2;
56
+ }
57
+ case "Apple_Terminal": {
58
+ return 2;
59
+ }
60
+ // No default
61
+ }
62
+ }
63
+ if (/-256(color)?$/i.test(env["TERM"] || "")) {
64
+ return 2;
65
+ }
66
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env["TERM"] || "")) {
67
+ return 1;
68
+ }
69
+ return undefined;
70
+ }
36
71
  function _supportsColor(haveStream, options = {}) {
37
72
  const noFlagForceColor = envForceColor();
38
73
  const forceColor = noFlagForceColor;
@@ -60,15 +95,9 @@ function _supportsColor(haveStream, options = {}) {
60
95
  }
61
96
  return 1;
62
97
  }
63
- if ("CI" in env) {
64
- if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
65
- return 3;
66
- }
67
- if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) ||
68
- env["CI_NAME"] === "codeship") {
69
- return 1;
70
- }
71
- return min;
98
+ const ciLevel = detectCiColorLevel(min);
99
+ if (ciLevel !== undefined) {
100
+ return ciLevel;
72
101
  }
73
102
  if ("TEAMCITY_VERSION" in env) {
74
103
  return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env["TEAMCITY_VERSION"] || "")
@@ -84,24 +113,9 @@ function _supportsColor(haveStream, options = {}) {
84
113
  if (env["TERM"] === "xterm-ghostty") {
85
114
  return 3;
86
115
  }
87
- if ("TERM_PROGRAM" in env) {
88
- const termProgramVersion = String(env["TERM_PROGRAM_VERSION"] || "0");
89
- const version = Number.parseInt(termProgramVersion.split(".")[0] ?? "0", 10);
90
- switch (env["TERM_PROGRAM"]) {
91
- case "iTerm.app": {
92
- return version >= 3 ? 3 : 2;
93
- }
94
- case "Apple_Terminal": {
95
- return 2;
96
- }
97
- // No default
98
- }
99
- }
100
- if (/-256(color)?$/i.test(env["TERM"] || "")) {
101
- return 2;
102
- }
103
- if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env["TERM"] || "")) {
104
- return 1;
116
+ const terminalLevel = detectTerminalColorLevel();
117
+ if (terminalLevel !== undefined) {
118
+ return terminalLevel;
105
119
  }
106
120
  if ("COLORTERM" in env) {
107
121
  return 1;
@@ -58,6 +58,18 @@ export declare class Cell {
58
58
  * @returns {String}
59
59
  */
60
60
  drawTop(drawRight: boolean): string;
61
+ /**
62
+ * Determines the base border character based on cell position.
63
+ */
64
+ private _getBaseTopLeftChar;
65
+ /**
66
+ * Checks if there's a ColSpanCell above this cell.
67
+ */
68
+ private _hasSpanAbove;
69
+ /**
70
+ * Checks if there's a RowSpanCell to the left of this cell (after walking past any ColSpanCells).
71
+ */
72
+ private _hasRowSpanToLeft;
61
73
  _topLeftChar(offset: number): string;
62
74
  wrapWithStyleColors(styleProperty: "head" | "border", content: string): string;
63
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/cell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/cell.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEb,KAAK,mBAAmB,EAMxB,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAoBpB,qBAAa,IAAI;IACf,OAAO,EAAG,WAAW,CAAC;IACtB,OAAO,EAAG,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,OAAO,EAAG,MAAM,CAAC;IACjB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAkC;IACjE,QAAQ,SAAO;IACf,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,IAAI,EAAE,MAAM,EAAE,CAAM;IACpB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,YAAY,SAAK;IACjB,aAAa,SAAK;IAClB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,KAAK,SAAK;IACV,MAAM,SAAK;IACX,MAAM,EAAE,mBAAmB,CAAU;IACrC,MAAM,EAAE,iBAAiB,CAAS;IAClC,SAAS,UAAS;IAClB,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAQ;IAE9B;;;;OAIG;gBACS,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM;IAIrE,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IA2B3E,iBAAiB,CAAC,YAAY,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI;IAqC5E,YAAY,CAAC,YAAY,EAAE,oBAAoB,GAAG,MAAM,EAAE;IAsB1D,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAS5C;;;;;;;OAOG;IACH,IAAI,CAAC,YAAY,EAAE,oBAAoB,GAAG,IAAI;IAqB9C;;;;;;;OAOG;IACH,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAoCvE;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAoBnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAmBpC,mBAAmB,CACjB,aAAa,EAAE,MAAM,GAAG,QAAQ,EAChC,OAAO,EAAE,MAAM,GACd,MAAM;IAwBT;;;;;;;;;;OAUG;IACH,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,EAClB,qBAAqB,EAAE,OAAO,EAC9B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM;IA2BT,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAUjE;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM;IAOtC;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;CAmB7D;AAED,qBAAa,WAAW;IACtB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,OAAO,SAAK;IAEZ,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM;IAOhD,IAAI,IAAI,IAAI;IAEZ,iBAAiB,IAAI,IAAI;CAC1B;AAED,qBAAa,WAAW;IACtB,YAAY,EAAE,IAAI,CAAC;IACnB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxB,OAAO,SAAK;IACZ,UAAU,SAAK;IACf,MAAM,SAAK;IAEX;;;OAGG;gBACS,YAAY,EAAE,IAAI;IAI9B,IAAI,CAAC,YAAY,EAAE,oBAAoB,GAAG,IAAI;IAgB9C,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM;IAahD,iBAAiB,IAAI,IAAI;CAC1B"}
@@ -200,37 +200,52 @@ export class Cell {
200
200
  }
201
201
  return this.wrapWithStyleColors("border", content.join(""));
202
202
  }
203
+ /**
204
+ * Determines the base border character based on cell position.
205
+ */
206
+ _getBaseTopLeftChar(x, offset) {
207
+ if (this.y === 0) {
208
+ if (x === 0)
209
+ return "topLeft";
210
+ return offset === 0 ? "topMid" : "top";
211
+ }
212
+ if (x === 0)
213
+ return "leftMid";
214
+ return offset === 0 ? "midMid" : "bottomMid";
215
+ }
216
+ /**
217
+ * Checks if there's a ColSpanCell above this cell.
218
+ */
219
+ _hasSpanAbove(x) {
220
+ if (!this.cells || this.y === null)
221
+ return false;
222
+ return this.cells[this.y - 1]?.[x] instanceof ColSpanCell;
223
+ }
224
+ /**
225
+ * Checks if there's a RowSpanCell to the left of this cell (after walking past any ColSpanCells).
226
+ */
227
+ _hasRowSpanToLeft(x) {
228
+ if (!this.cells || this.y === null)
229
+ return false;
230
+ let i = 1;
231
+ while (this.cells[this.y]?.[x - i] instanceof ColSpanCell) {
232
+ i++;
233
+ }
234
+ return this.cells[this.y]?.[x - i] instanceof RowSpanCell;
235
+ }
203
236
  _topLeftChar(offset) {
204
237
  if (this.x === null) {
205
238
  throw new Error("Cell x must be initialized before calling _topLeftChar");
206
239
  }
207
240
  const x = this.x + offset;
208
- let leftChar;
209
- if (this.y === 0) {
210
- leftChar = x === 0 ? "topLeft" : offset === 0 ? "topMid" : "top";
211
- }
212
- else {
213
- if (x === 0) {
214
- leftChar = "leftMid";
241
+ let leftChar = this._getBaseTopLeftChar(x, offset);
242
+ // Apply span modifications for non-top rows
243
+ if (this.y !== 0 && x !== 0) {
244
+ if (this._hasSpanAbove(x)) {
245
+ leftChar = offset === 0 ? "topMid" : "mid";
215
246
  }
216
- else {
217
- leftChar = offset === 0 ? "midMid" : "bottomMid";
218
- if (this.cells && this.y !== null) {
219
- // TODO: cells should always exist - some tests don't fill it in though
220
- const spanAbove = this.cells[this.y - 1]?.[x] instanceof ColSpanCell;
221
- if (spanAbove) {
222
- leftChar = offset === 0 ? "topMid" : "mid";
223
- }
224
- if (offset === 0) {
225
- let i = 1;
226
- while (this.cells[this.y]?.[x - i] instanceof ColSpanCell) {
227
- i++;
228
- }
229
- if (this.cells[this.y]?.[x - i] instanceof RowSpanCell) {
230
- leftChar = "leftMid";
231
- }
232
- }
233
- }
247
+ else if (offset === 0 && this._hasRowSpanToLeft(x)) {
248
+ leftChar = "leftMid";
234
249
  }
235
250
  }
236
251
  return this.chars[leftChar];
@@ -1 +1 @@
1
- {"version":3,"file":"layout-manager.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/layout-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,WAAW,CAAC;AAe3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAsBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAcT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsB5E;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,EAAE,EAAE,EACd,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAOT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAmBxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAWxD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CA6BjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAuBvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAOzD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,cAAc,GAAG,eAAe,EAC9C,CAAC,EAAE,GAAG,GAAG,GAAG,EACZ,SAAS,EAAE,MAAM,GAChB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,CAwEvD;AAED,eAAO,MAAM,aAAa,SA1EhB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IA+EnD,CAAC;AACF,eAAO,MAAM,cAAc,SAhFjB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IAqFnD,CAAC"}
1
+ {"version":3,"file":"layout-manager.d.ts","sourceRoot":"","sources":["../../../source/terminal/table/layout-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA4B,MAAM,WAAW,CAAC;AAe3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAsBjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAUhD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACnE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAcT;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAsB5E;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,EAAE,EAAE,EACd,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAOT;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAmBxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAWxD;AAiDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAcjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAuBvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAOzD;AAoGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,cAAc,GAAG,eAAe,EAC9C,CAAC,EAAE,GAAG,GAAG,GAAG,EACZ,SAAS,EAAE,MAAM,GAChB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,CAmBvD;AAED,eAAO,MAAM,aAAa,SArBhB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IA0BnD,CAAC;AACF,eAAO,MAAM,cAAc,SA3BjB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,IAgCnD,CAAC"}