gsd-pi 2.9.0 → 2.10.0

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 (1016) hide show
  1. package/node_modules/@gsd/native/package.json +59 -0
  2. package/node_modules/@gsd/native/src/__tests__/clipboard.test.mjs +79 -0
  3. package/node_modules/@gsd/native/src/__tests__/fd.test.mjs +164 -0
  4. package/node_modules/@gsd/native/src/__tests__/glob.test.mjs +237 -0
  5. package/node_modules/@gsd/native/src/__tests__/grep.test.mjs +162 -0
  6. package/node_modules/@gsd/native/src/__tests__/highlight.test.mjs +156 -0
  7. package/node_modules/@gsd/native/src/__tests__/html.test.mjs +98 -0
  8. package/node_modules/@gsd/native/src/__tests__/image.test.mjs +137 -0
  9. package/node_modules/@gsd/native/src/__tests__/ps.test.mjs +109 -0
  10. package/node_modules/@gsd/native/src/__tests__/text.test.mjs +262 -0
  11. package/node_modules/@gsd/native/src/ast/index.ts +12 -0
  12. package/node_modules/@gsd/native/src/ast/types.ts +75 -0
  13. package/node_modules/@gsd/native/src/clipboard/index.ts +40 -0
  14. package/node_modules/@gsd/native/src/clipboard/types.ts +7 -0
  15. package/node_modules/@gsd/native/src/fd/index.ts +35 -0
  16. package/node_modules/@gsd/native/src/fd/types.ts +31 -0
  17. package/node_modules/@gsd/native/src/glob/index.ts +44 -0
  18. package/node_modules/@gsd/native/src/glob/types.ts +53 -0
  19. package/node_modules/@gsd/native/src/grep/index.ts +48 -0
  20. package/node_modules/@gsd/native/src/grep/types.ts +105 -0
  21. package/node_modules/@gsd/native/src/highlight/index.ts +44 -0
  22. package/node_modules/@gsd/native/src/highlight/types.ts +25 -0
  23. package/node_modules/@gsd/native/src/html/index.ts +24 -0
  24. package/node_modules/@gsd/native/src/html/types.ts +7 -0
  25. package/node_modules/@gsd/native/src/image/index.ts +28 -0
  26. package/node_modules/@gsd/native/src/image/types.ts +41 -0
  27. package/node_modules/@gsd/native/src/index.ts +88 -0
  28. package/node_modules/@gsd/native/src/native.ts +94 -0
  29. package/node_modules/@gsd/native/src/ps/index.ts +52 -0
  30. package/node_modules/@gsd/native/src/ps/types.ts +5 -0
  31. package/node_modules/@gsd/native/src/text/index.ts +125 -0
  32. package/node_modules/@gsd/native/src/text/types.ts +29 -0
  33. package/node_modules/@gsd/native/src/ttsr/index.ts +39 -0
  34. package/node_modules/@gsd/native/src/ttsr/types.ts +10 -0
  35. package/node_modules/@gsd/pi-coding-agent/dist/core/lsp/defaults.json +456 -0
  36. package/node_modules/@gsd/pi-coding-agent/dist/core/lsp/lsp.md +33 -0
  37. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/find.d.ts +1 -1
  38. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  39. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/find.js +12 -77
  40. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  41. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-edit.d.ts +60 -0
  42. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-edit.d.ts.map +1 -0
  43. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-edit.js +247 -0
  44. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-edit.js.map +1 -0
  45. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-read.d.ts +43 -0
  46. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-read.d.ts.map +1 -0
  47. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-read.js +146 -0
  48. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline-read.js.map +1 -0
  49. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.d.ts +114 -0
  50. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.d.ts.map +1 -0
  51. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.js +522 -0
  52. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.js.map +1 -0
  53. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.test.d.ts +2 -0
  54. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.test.d.ts.map +1 -0
  55. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.test.js +376 -0
  56. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/hashline.test.js.map +1 -0
  57. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/index.d.ts +25 -0
  58. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  59. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/index.js +23 -0
  60. package/node_modules/@gsd/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  61. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  62. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +6 -3
  63. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  64. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +0 -1
  65. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  66. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/interactive-mode.js +8 -9
  67. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  68. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  69. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/theme/theme.js +25 -40
  70. package/node_modules/@gsd/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  71. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  72. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-image.js +17 -21
  73. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  74. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-native.d.ts +7 -6
  75. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  76. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-native.js +7 -13
  77. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  78. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard.d.ts.map +1 -1
  79. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard.js +3 -56
  80. package/node_modules/@gsd/pi-coding-agent/dist/utils/clipboard.js.map +1 -1
  81. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-convert.d.ts.map +1 -1
  82. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-convert.js +7 -17
  83. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-convert.js.map +1 -1
  84. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-resize.d.ts +1 -2
  85. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  86. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-resize.js +21 -29
  87. package/node_modules/@gsd/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  88. package/node_modules/@gsd/pi-coding-agent/package.json +2 -5
  89. package/node_modules/@gsd/pi-coding-agent/src/core/tools/find.ts +13 -88
  90. package/node_modules/@gsd/pi-coding-agent/src/core/tools/hashline-edit.ts +318 -0
  91. package/node_modules/@gsd/pi-coding-agent/src/core/tools/hashline-read.ts +196 -0
  92. package/node_modules/@gsd/pi-coding-agent/src/core/tools/hashline.test.ts +456 -0
  93. package/node_modules/@gsd/pi-coding-agent/src/core/tools/hashline.ts +594 -0
  94. package/node_modules/@gsd/pi-coding-agent/src/core/tools/index.ts +53 -0
  95. package/node_modules/@gsd/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +5 -3
  96. package/node_modules/@gsd/pi-coding-agent/src/modes/interactive/interactive-mode.ts +7 -10
  97. package/node_modules/@gsd/pi-coding-agent/src/modes/interactive/theme/theme.ts +26 -42
  98. package/node_modules/@gsd/pi-coding-agent/src/utils/clipboard-image.ts +17 -24
  99. package/node_modules/@gsd/pi-coding-agent/src/utils/clipboard-native.ts +11 -21
  100. package/node_modules/@gsd/pi-coding-agent/src/utils/clipboard.ts +3 -51
  101. package/node_modules/@gsd/pi-coding-agent/src/utils/image-convert.ts +7 -17
  102. package/node_modules/@gsd/pi-coding-agent/src/utils/image-resize.ts +28 -34
  103. package/node_modules/@gsd/pi-tui/dist/autocomplete.d.ts +1 -3
  104. package/node_modules/@gsd/pi-tui/dist/autocomplete.d.ts.map +1 -1
  105. package/node_modules/@gsd/pi-tui/dist/autocomplete.js +16 -95
  106. package/node_modules/@gsd/pi-tui/dist/autocomplete.js.map +1 -1
  107. package/node_modules/@gsd/pi-tui/dist/components/image.d.ts +7 -0
  108. package/node_modules/@gsd/pi-tui/dist/components/image.d.ts.map +1 -1
  109. package/node_modules/@gsd/pi-tui/dist/components/image.js +20 -1
  110. package/node_modules/@gsd/pi-tui/dist/components/image.js.map +1 -1
  111. package/node_modules/@gsd/pi-tui/dist/index.d.ts +1 -1
  112. package/node_modules/@gsd/pi-tui/dist/index.d.ts.map +1 -1
  113. package/node_modules/@gsd/pi-tui/dist/index.js +1 -1
  114. package/node_modules/@gsd/pi-tui/dist/index.js.map +1 -1
  115. package/node_modules/@gsd/pi-tui/dist/terminal-image.d.ts +5 -5
  116. package/node_modules/@gsd/pi-tui/dist/terminal-image.d.ts.map +1 -1
  117. package/node_modules/@gsd/pi-tui/dist/terminal-image.js +9 -120
  118. package/node_modules/@gsd/pi-tui/dist/terminal-image.js.map +1 -1
  119. package/node_modules/@gsd/pi-tui/dist/utils.d.ts +23 -26
  120. package/node_modules/@gsd/pi-tui/dist/utils.d.ts.map +1 -1
  121. package/node_modules/@gsd/pi-tui/dist/utils.js +47 -716
  122. package/node_modules/@gsd/pi-tui/dist/utils.js.map +1 -1
  123. package/node_modules/@gsd/pi-tui/package.json +1 -0
  124. package/node_modules/@gsd/pi-tui/src/autocomplete.ts +17 -112
  125. package/node_modules/@gsd/pi-tui/src/components/image.ts +23 -1
  126. package/node_modules/@gsd/pi-tui/src/index.ts +0 -4
  127. package/node_modules/@gsd/pi-tui/src/terminal-image.ts +9 -135
  128. package/node_modules/@gsd/pi-tui/src/utils.ts +51 -775
  129. package/package.json +4 -1
  130. package/packages/native/package.json +59 -0
  131. package/packages/native/src/__tests__/clipboard.test.mjs +79 -0
  132. package/packages/native/src/__tests__/fd.test.mjs +164 -0
  133. package/packages/native/src/__tests__/glob.test.mjs +237 -0
  134. package/packages/native/src/__tests__/grep.test.mjs +162 -0
  135. package/packages/native/src/__tests__/highlight.test.mjs +156 -0
  136. package/packages/native/src/__tests__/html.test.mjs +98 -0
  137. package/packages/native/src/__tests__/image.test.mjs +137 -0
  138. package/packages/native/src/__tests__/ps.test.mjs +109 -0
  139. package/packages/native/src/__tests__/text.test.mjs +262 -0
  140. package/packages/native/src/ast/index.ts +12 -0
  141. package/packages/native/src/ast/types.ts +75 -0
  142. package/packages/native/src/clipboard/index.ts +40 -0
  143. package/packages/native/src/clipboard/types.ts +7 -0
  144. package/packages/native/src/fd/index.ts +35 -0
  145. package/packages/native/src/fd/types.ts +31 -0
  146. package/packages/native/src/glob/index.ts +44 -0
  147. package/packages/native/src/glob/types.ts +53 -0
  148. package/packages/native/src/grep/index.ts +48 -0
  149. package/packages/native/src/grep/types.ts +105 -0
  150. package/packages/native/src/highlight/index.ts +44 -0
  151. package/packages/native/src/highlight/types.ts +25 -0
  152. package/packages/native/src/html/index.ts +24 -0
  153. package/packages/native/src/html/types.ts +7 -0
  154. package/packages/native/src/image/index.ts +28 -0
  155. package/packages/native/src/image/types.ts +41 -0
  156. package/packages/native/src/index.ts +88 -0
  157. package/packages/native/src/native.ts +94 -0
  158. package/packages/native/src/ps/index.ts +52 -0
  159. package/packages/native/src/ps/types.ts +5 -0
  160. package/packages/native/src/text/index.ts +125 -0
  161. package/packages/native/src/text/types.ts +29 -0
  162. package/packages/native/src/ttsr/index.ts +39 -0
  163. package/packages/native/src/ttsr/types.ts +10 -0
  164. package/packages/native/tsconfig.json +8 -0
  165. package/packages/pi-coding-agent/dist/core/lsp/defaults.json +456 -0
  166. package/packages/pi-coding-agent/dist/core/lsp/lsp.md +33 -0
  167. package/packages/pi-coding-agent/dist/core/tools/find.d.ts +1 -1
  168. package/packages/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  169. package/packages/pi-coding-agent/dist/core/tools/find.js +12 -77
  170. package/packages/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  171. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.d.ts +60 -0
  172. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.d.ts.map +1 -0
  173. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js +247 -0
  174. package/packages/pi-coding-agent/dist/core/tools/hashline-edit.js.map +1 -0
  175. package/packages/pi-coding-agent/dist/core/tools/hashline-read.d.ts +43 -0
  176. package/packages/pi-coding-agent/dist/core/tools/hashline-read.d.ts.map +1 -0
  177. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js +146 -0
  178. package/packages/pi-coding-agent/dist/core/tools/hashline-read.js.map +1 -0
  179. package/packages/pi-coding-agent/dist/core/tools/hashline.d.ts +114 -0
  180. package/packages/pi-coding-agent/dist/core/tools/hashline.d.ts.map +1 -0
  181. package/packages/pi-coding-agent/dist/core/tools/hashline.js +522 -0
  182. package/packages/pi-coding-agent/dist/core/tools/hashline.js.map +1 -0
  183. package/packages/pi-coding-agent/dist/core/tools/hashline.test.d.ts +2 -0
  184. package/packages/pi-coding-agent/dist/core/tools/hashline.test.d.ts.map +1 -0
  185. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js +376 -0
  186. package/packages/pi-coding-agent/dist/core/tools/hashline.test.js.map +1 -0
  187. package/packages/pi-coding-agent/dist/core/tools/index.d.ts +25 -0
  188. package/packages/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  189. package/packages/pi-coding-agent/dist/core/tools/index.js +23 -0
  190. package/packages/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  191. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  192. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +6 -3
  193. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  194. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +0 -1
  195. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  196. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +8 -9
  197. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  198. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  199. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +25 -40
  200. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  201. package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  202. package/packages/pi-coding-agent/dist/utils/clipboard-image.js +17 -21
  203. package/packages/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  204. package/packages/pi-coding-agent/dist/utils/clipboard-native.d.ts +7 -6
  205. package/packages/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  206. package/packages/pi-coding-agent/dist/utils/clipboard-native.js +7 -13
  207. package/packages/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  208. package/packages/pi-coding-agent/dist/utils/clipboard.d.ts.map +1 -1
  209. package/packages/pi-coding-agent/dist/utils/clipboard.js +3 -56
  210. package/packages/pi-coding-agent/dist/utils/clipboard.js.map +1 -1
  211. package/packages/pi-coding-agent/dist/utils/image-convert.d.ts.map +1 -1
  212. package/packages/pi-coding-agent/dist/utils/image-convert.js +7 -17
  213. package/packages/pi-coding-agent/dist/utils/image-convert.js.map +1 -1
  214. package/packages/pi-coding-agent/dist/utils/image-resize.d.ts +1 -2
  215. package/packages/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  216. package/packages/pi-coding-agent/dist/utils/image-resize.js +21 -29
  217. package/packages/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  218. package/packages/pi-coding-agent/package.json +2 -5
  219. package/packages/pi-coding-agent/src/core/tools/find.ts +13 -88
  220. package/packages/pi-coding-agent/src/core/tools/hashline-edit.ts +318 -0
  221. package/packages/pi-coding-agent/src/core/tools/hashline-read.ts +196 -0
  222. package/packages/pi-coding-agent/src/core/tools/hashline.test.ts +456 -0
  223. package/packages/pi-coding-agent/src/core/tools/hashline.ts +594 -0
  224. package/packages/pi-coding-agent/src/core/tools/index.ts +53 -0
  225. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +5 -3
  226. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +7 -10
  227. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +26 -42
  228. package/packages/pi-coding-agent/src/utils/clipboard-image.ts +17 -24
  229. package/packages/pi-coding-agent/src/utils/clipboard-native.ts +11 -21
  230. package/packages/pi-coding-agent/src/utils/clipboard.ts +3 -51
  231. package/packages/pi-coding-agent/src/utils/image-convert.ts +7 -17
  232. package/packages/pi-coding-agent/src/utils/image-resize.ts +28 -34
  233. package/packages/pi-tui/dist/autocomplete.d.ts +1 -3
  234. package/packages/pi-tui/dist/autocomplete.d.ts.map +1 -1
  235. package/packages/pi-tui/dist/autocomplete.js +16 -95
  236. package/packages/pi-tui/dist/autocomplete.js.map +1 -1
  237. package/packages/pi-tui/dist/components/image.d.ts +7 -0
  238. package/packages/pi-tui/dist/components/image.d.ts.map +1 -1
  239. package/packages/pi-tui/dist/components/image.js +20 -1
  240. package/packages/pi-tui/dist/components/image.js.map +1 -1
  241. package/packages/pi-tui/dist/index.d.ts +1 -1
  242. package/packages/pi-tui/dist/index.d.ts.map +1 -1
  243. package/packages/pi-tui/dist/index.js +1 -1
  244. package/packages/pi-tui/dist/index.js.map +1 -1
  245. package/packages/pi-tui/dist/terminal-image.d.ts +5 -5
  246. package/packages/pi-tui/dist/terminal-image.d.ts.map +1 -1
  247. package/packages/pi-tui/dist/terminal-image.js +9 -120
  248. package/packages/pi-tui/dist/terminal-image.js.map +1 -1
  249. package/packages/pi-tui/dist/utils.d.ts +23 -26
  250. package/packages/pi-tui/dist/utils.d.ts.map +1 -1
  251. package/packages/pi-tui/dist/utils.js +47 -716
  252. package/packages/pi-tui/dist/utils.js.map +1 -1
  253. package/packages/pi-tui/package.json +1 -0
  254. package/packages/pi-tui/src/autocomplete.ts +17 -112
  255. package/packages/pi-tui/src/components/image.ts +23 -1
  256. package/packages/pi-tui/src/index.ts +0 -4
  257. package/packages/pi-tui/src/terminal-image.ts +9 -135
  258. package/packages/pi-tui/src/utils.ts +51 -775
  259. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  260. package/pkg/dist/modes/interactive/theme/theme.js +25 -40
  261. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  262. package/src/resources/extensions/bg-shell/index.ts +343 -14
  263. package/src/resources/extensions/gsd/git-service.ts +13 -1
  264. package/src/resources/extensions/universal-config/discovery.ts +78 -0
  265. package/src/resources/extensions/universal-config/format.ts +160 -0
  266. package/src/resources/extensions/universal-config/index.ts +118 -0
  267. package/src/resources/extensions/universal-config/package.json +11 -0
  268. package/src/resources/extensions/universal-config/scanners.ts +579 -0
  269. package/src/resources/extensions/universal-config/tests/discovery.test.ts +111 -0
  270. package/src/resources/extensions/universal-config/tests/format.test.ts +111 -0
  271. package/src/resources/extensions/universal-config/tests/scanners.test.ts +438 -0
  272. package/src/resources/extensions/universal-config/tools.ts +60 -0
  273. package/src/resources/extensions/universal-config/types.ts +116 -0
  274. package/node_modules/@mariozechner/clipboard/.yarnrc.yml +0 -1
  275. package/node_modules/@mariozechner/clipboard/Cargo.toml +0 -26
  276. package/node_modules/@mariozechner/clipboard/README.md +0 -58
  277. package/node_modules/@mariozechner/clipboard/build.rs +0 -5
  278. package/node_modules/@mariozechner/clipboard/exp.ts +0 -12
  279. package/node_modules/@mariozechner/clipboard/index.d.ts +0 -23
  280. package/node_modules/@mariozechner/clipboard/index.js +0 -317
  281. package/node_modules/@mariozechner/clipboard/package.json +0 -56
  282. package/node_modules/@mariozechner/clipboard/src/lib.rs +0 -191
  283. package/node_modules/@mariozechner/clipboard-darwin-arm64/README.md +0 -3
  284. package/node_modules/@mariozechner/clipboard-darwin-arm64/clipboard.darwin-arm64.node +0 -0
  285. package/node_modules/@mariozechner/clipboard-darwin-arm64/package.json +0 -22
  286. package/node_modules/@mariozechner/clipboard-darwin-universal/README.md +0 -3
  287. package/node_modules/@mariozechner/clipboard-darwin-universal/clipboard.darwin-universal.node +0 -0
  288. package/node_modules/@mariozechner/clipboard-darwin-universal/package.json +0 -19
  289. package/node_modules/ansi-styles/index.d.ts +0 -345
  290. package/node_modules/ansi-styles/index.js +0 -163
  291. package/node_modules/ansi-styles/license +0 -9
  292. package/node_modules/ansi-styles/package.json +0 -56
  293. package/node_modules/ansi-styles/readme.md +0 -152
  294. package/node_modules/any-promise/.jshintrc +0 -4
  295. package/node_modules/any-promise/.npmignore +0 -7
  296. package/node_modules/any-promise/LICENSE +0 -19
  297. package/node_modules/any-promise/README.md +0 -161
  298. package/node_modules/any-promise/implementation.d.ts +0 -3
  299. package/node_modules/any-promise/implementation.js +0 -1
  300. package/node_modules/any-promise/index.d.ts +0 -73
  301. package/node_modules/any-promise/index.js +0 -1
  302. package/node_modules/any-promise/loader.js +0 -78
  303. package/node_modules/any-promise/optional.js +0 -6
  304. package/node_modules/any-promise/package.json +0 -45
  305. package/node_modules/any-promise/register/bluebird.d.ts +0 -1
  306. package/node_modules/any-promise/register/bluebird.js +0 -2
  307. package/node_modules/any-promise/register/es6-promise.d.ts +0 -1
  308. package/node_modules/any-promise/register/es6-promise.js +0 -2
  309. package/node_modules/any-promise/register/lie.d.ts +0 -1
  310. package/node_modules/any-promise/register/lie.js +0 -2
  311. package/node_modules/any-promise/register/native-promise-only.d.ts +0 -1
  312. package/node_modules/any-promise/register/native-promise-only.js +0 -2
  313. package/node_modules/any-promise/register/pinkie.d.ts +0 -1
  314. package/node_modules/any-promise/register/pinkie.js +0 -2
  315. package/node_modules/any-promise/register/promise.d.ts +0 -1
  316. package/node_modules/any-promise/register/promise.js +0 -2
  317. package/node_modules/any-promise/register/q.d.ts +0 -1
  318. package/node_modules/any-promise/register/q.js +0 -2
  319. package/node_modules/any-promise/register/rsvp.d.ts +0 -1
  320. package/node_modules/any-promise/register/rsvp.js +0 -2
  321. package/node_modules/any-promise/register/vow.d.ts +0 -1
  322. package/node_modules/any-promise/register/vow.js +0 -2
  323. package/node_modules/any-promise/register/when.d.ts +0 -1
  324. package/node_modules/any-promise/register/when.js +0 -2
  325. package/node_modules/any-promise/register-shim.js +0 -18
  326. package/node_modules/any-promise/register.d.ts +0 -17
  327. package/node_modules/any-promise/register.js +0 -94
  328. package/node_modules/cli-highlight/LICENSE.txt +0 -15
  329. package/node_modules/cli-highlight/README.md +0 -88
  330. package/node_modules/cli-highlight/bin/highlight +0 -2
  331. package/node_modules/cli-highlight/dist/cli.d.ts +0 -1
  332. package/node_modules/cli-highlight/dist/cli.js +0 -102
  333. package/node_modules/cli-highlight/dist/cli.js.map +0 -1
  334. package/node_modules/cli-highlight/dist/index.d.ts +0 -53
  335. package/node_modules/cli-highlight/dist/index.js +0 -112
  336. package/node_modules/cli-highlight/dist/index.js.map +0 -1
  337. package/node_modules/cli-highlight/dist/test/test.d.ts +0 -1
  338. package/node_modules/cli-highlight/dist/test/test.js +0 -62
  339. package/node_modules/cli-highlight/dist/test/test.js.map +0 -1
  340. package/node_modules/cli-highlight/dist/theme.d.ts +0 -270
  341. package/node_modules/cli-highlight/dist/theme.js +0 -265
  342. package/node_modules/cli-highlight/dist/theme.js.map +0 -1
  343. package/node_modules/cli-highlight/node_modules/chalk/index.d.ts +0 -415
  344. package/node_modules/cli-highlight/node_modules/chalk/license +0 -9
  345. package/node_modules/cli-highlight/node_modules/chalk/package.json +0 -68
  346. package/node_modules/cli-highlight/node_modules/chalk/readme.md +0 -341
  347. package/node_modules/cli-highlight/node_modules/chalk/source/index.js +0 -229
  348. package/node_modules/cli-highlight/node_modules/chalk/source/templates.js +0 -134
  349. package/node_modules/cli-highlight/node_modules/chalk/source/util.js +0 -39
  350. package/node_modules/cli-highlight/package.json +0 -129
  351. package/node_modules/cliui/CHANGELOG.md +0 -121
  352. package/node_modules/cliui/LICENSE.txt +0 -14
  353. package/node_modules/cliui/README.md +0 -141
  354. package/node_modules/cliui/build/index.cjs +0 -302
  355. package/node_modules/cliui/build/lib/index.js +0 -287
  356. package/node_modules/cliui/build/lib/string-utils.js +0 -27
  357. package/node_modules/cliui/index.mjs +0 -13
  358. package/node_modules/cliui/node_modules/ansi-regex/index.d.ts +0 -37
  359. package/node_modules/cliui/node_modules/ansi-regex/index.js +0 -10
  360. package/node_modules/cliui/node_modules/ansi-regex/license +0 -9
  361. package/node_modules/cliui/node_modules/ansi-regex/package.json +0 -55
  362. package/node_modules/cliui/node_modules/ansi-regex/readme.md +0 -78
  363. package/node_modules/cliui/node_modules/strip-ansi/index.d.ts +0 -17
  364. package/node_modules/cliui/node_modules/strip-ansi/index.js +0 -4
  365. package/node_modules/cliui/node_modules/strip-ansi/license +0 -9
  366. package/node_modules/cliui/node_modules/strip-ansi/package.json +0 -54
  367. package/node_modules/cliui/node_modules/strip-ansi/readme.md +0 -46
  368. package/node_modules/cliui/package.json +0 -83
  369. package/node_modules/color-convert/CHANGELOG.md +0 -54
  370. package/node_modules/color-convert/LICENSE +0 -21
  371. package/node_modules/color-convert/README.md +0 -68
  372. package/node_modules/color-convert/conversions.js +0 -839
  373. package/node_modules/color-convert/index.js +0 -81
  374. package/node_modules/color-convert/package.json +0 -48
  375. package/node_modules/color-convert/route.js +0 -97
  376. package/node_modules/color-name/LICENSE +0 -8
  377. package/node_modules/color-name/README.md +0 -11
  378. package/node_modules/color-name/index.js +0 -152
  379. package/node_modules/color-name/package.json +0 -28
  380. package/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  381. package/node_modules/emoji-regex/README.md +0 -73
  382. package/node_modules/emoji-regex/es2015/index.js +0 -6
  383. package/node_modules/emoji-regex/es2015/text.js +0 -6
  384. package/node_modules/emoji-regex/index.d.ts +0 -23
  385. package/node_modules/emoji-regex/index.js +0 -6
  386. package/node_modules/emoji-regex/package.json +0 -50
  387. package/node_modules/emoji-regex/text.js +0 -6
  388. package/node_modules/escalade/dist/index.js +0 -22
  389. package/node_modules/escalade/dist/index.mjs +0 -22
  390. package/node_modules/escalade/index.d.mts +0 -11
  391. package/node_modules/escalade/index.d.ts +0 -15
  392. package/node_modules/escalade/license +0 -9
  393. package/node_modules/escalade/package.json +0 -74
  394. package/node_modules/escalade/readme.md +0 -211
  395. package/node_modules/escalade/sync/index.d.mts +0 -9
  396. package/node_modules/escalade/sync/index.d.ts +0 -13
  397. package/node_modules/escalade/sync/index.js +0 -18
  398. package/node_modules/escalade/sync/index.mjs +0 -18
  399. package/node_modules/esprima/ChangeLog +0 -235
  400. package/node_modules/get-caller-file/LICENSE.md +0 -6
  401. package/node_modules/get-caller-file/README.md +0 -41
  402. package/node_modules/get-caller-file/index.d.ts +0 -2
  403. package/node_modules/get-caller-file/index.js +0 -22
  404. package/node_modules/get-caller-file/index.js.map +0 -1
  405. package/node_modules/get-caller-file/package.json +0 -42
  406. package/node_modules/has-flag/index.d.ts +0 -39
  407. package/node_modules/has-flag/index.js +0 -8
  408. package/node_modules/has-flag/license +0 -9
  409. package/node_modules/has-flag/package.json +0 -46
  410. package/node_modules/has-flag/readme.md +0 -89
  411. package/node_modules/highlight.js/LICENSE +0 -29
  412. package/node_modules/highlight.js/README.md +0 -371
  413. package/node_modules/highlight.js/lib/core.js +0 -2517
  414. package/node_modules/highlight.js/lib/highlight.js +0 -2
  415. package/node_modules/highlight.js/lib/index.js +0 -195
  416. package/node_modules/highlight.js/lib/languages/1c.js +0 -521
  417. package/node_modules/highlight.js/lib/languages/abnf.js +0 -103
  418. package/node_modules/highlight.js/lib/languages/accesslog.js +0 -127
  419. package/node_modules/highlight.js/lib/languages/actionscript.js +0 -113
  420. package/node_modules/highlight.js/lib/languages/ada.js +0 -194
  421. package/node_modules/highlight.js/lib/languages/angelscript.js +0 -123
  422. package/node_modules/highlight.js/lib/languages/apache.js +0 -89
  423. package/node_modules/highlight.js/lib/languages/applescript.js +0 -189
  424. package/node_modules/highlight.js/lib/languages/arcade.js +0 -165
  425. package/node_modules/highlight.js/lib/languages/arduino.js +0 -576
  426. package/node_modules/highlight.js/lib/languages/armasm.js +0 -131
  427. package/node_modules/highlight.js/lib/languages/asciidoc.js +0 -303
  428. package/node_modules/highlight.js/lib/languages/aspectj.js +0 -186
  429. package/node_modules/highlight.js/lib/languages/autohotkey.js +0 -84
  430. package/node_modules/highlight.js/lib/languages/autoit.js +0 -183
  431. package/node_modules/highlight.js/lib/languages/avrasm.js +0 -80
  432. package/node_modules/highlight.js/lib/languages/awk.js +0 -73
  433. package/node_modules/highlight.js/lib/languages/axapta.js +0 -179
  434. package/node_modules/highlight.js/lib/languages/bash.js +0 -169
  435. package/node_modules/highlight.js/lib/languages/basic.js +0 -65
  436. package/node_modules/highlight.js/lib/languages/bnf.js +0 -38
  437. package/node_modules/highlight.js/lib/languages/brainfuck.js +0 -46
  438. package/node_modules/highlight.js/lib/languages/c-like.js +0 -501
  439. package/node_modules/highlight.js/lib/languages/c.js +0 -309
  440. package/node_modules/highlight.js/lib/languages/cal.js +0 -104
  441. package/node_modules/highlight.js/lib/languages/capnproto.js +0 -64
  442. package/node_modules/highlight.js/lib/languages/ceylon.js +0 -82
  443. package/node_modules/highlight.js/lib/languages/clean.js +0 -40
  444. package/node_modules/highlight.js/lib/languages/clojure-repl.js +0 -27
  445. package/node_modules/highlight.js/lib/languages/clojure.js +0 -158
  446. package/node_modules/highlight.js/lib/languages/cmake.js +0 -64
  447. package/node_modules/highlight.js/lib/languages/coffeescript.js +0 -356
  448. package/node_modules/highlight.js/lib/languages/coq.js +0 -79
  449. package/node_modules/highlight.js/lib/languages/cos.js +0 -138
  450. package/node_modules/highlight.js/lib/languages/cpp.js +0 -464
  451. package/node_modules/highlight.js/lib/languages/crmsh.js +0 -102
  452. package/node_modules/highlight.js/lib/languages/crystal.js +0 -326
  453. package/node_modules/highlight.js/lib/languages/csharp.js +0 -441
  454. package/node_modules/highlight.js/lib/languages/csp.js +0 -37
  455. package/node_modules/highlight.js/lib/languages/css.js +0 -608
  456. package/node_modules/highlight.js/lib/languages/d.js +0 -271
  457. package/node_modules/highlight.js/lib/languages/dart.js +0 -199
  458. package/node_modules/highlight.js/lib/languages/delphi.js +0 -126
  459. package/node_modules/highlight.js/lib/languages/diff.js +0 -85
  460. package/node_modules/highlight.js/lib/languages/django.js +0 -77
  461. package/node_modules/highlight.js/lib/languages/dns.js +0 -46
  462. package/node_modules/highlight.js/lib/languages/dockerfile.js +0 -34
  463. package/node_modules/highlight.js/lib/languages/dos.js +0 -70
  464. package/node_modules/highlight.js/lib/languages/dsconfig.js +0 -66
  465. package/node_modules/highlight.js/lib/languages/dts.js +0 -153
  466. package/node_modules/highlight.js/lib/languages/dust.js +0 -45
  467. package/node_modules/highlight.js/lib/languages/ebnf.js +0 -53
  468. package/node_modules/highlight.js/lib/languages/elixir.js +0 -259
  469. package/node_modules/highlight.js/lib/languages/elm.js +0 -129
  470. package/node_modules/highlight.js/lib/languages/erb.js +0 -29
  471. package/node_modules/highlight.js/lib/languages/erlang-repl.js +0 -86
  472. package/node_modules/highlight.js/lib/languages/erlang.js +0 -199
  473. package/node_modules/highlight.js/lib/languages/excel.js +0 -64
  474. package/node_modules/highlight.js/lib/languages/fix.js +0 -37
  475. package/node_modules/highlight.js/lib/languages/flix.js +0 -54
  476. package/node_modules/highlight.js/lib/languages/fortran.js +0 -159
  477. package/node_modules/highlight.js/lib/languages/fsharp.js +0 -86
  478. package/node_modules/highlight.js/lib/languages/gams.js +0 -208
  479. package/node_modules/highlight.js/lib/languages/gauss.js +0 -316
  480. package/node_modules/highlight.js/lib/languages/gcode.js +0 -88
  481. package/node_modules/highlight.js/lib/languages/gherkin.js +0 -49
  482. package/node_modules/highlight.js/lib/languages/glsl.js +0 -128
  483. package/node_modules/highlight.js/lib/languages/gml.js +0 -885
  484. package/node_modules/highlight.js/lib/languages/go.js +0 -74
  485. package/node_modules/highlight.js/lib/languages/golo.js +0 -33
  486. package/node_modules/highlight.js/lib/languages/gradle.js +0 -44
  487. package/node_modules/highlight.js/lib/languages/groovy.js +0 -174
  488. package/node_modules/highlight.js/lib/languages/haml.js +0 -117
  489. package/node_modules/highlight.js/lib/languages/handlebars.js +0 -324
  490. package/node_modules/highlight.js/lib/languages/haskell.js +0 -173
  491. package/node_modules/highlight.js/lib/languages/haxe.js +0 -157
  492. package/node_modules/highlight.js/lib/languages/hsp.js +0 -65
  493. package/node_modules/highlight.js/lib/languages/htmlbars.js +0 -352
  494. package/node_modules/highlight.js/lib/languages/http.js +0 -121
  495. package/node_modules/highlight.js/lib/languages/hy.js +0 -109
  496. package/node_modules/highlight.js/lib/languages/inform7.js +0 -70
  497. package/node_modules/highlight.js/lib/languages/ini.js +0 -173
  498. package/node_modules/highlight.js/lib/languages/irpf90.js +0 -141
  499. package/node_modules/highlight.js/lib/languages/isbl.js +0 -3207
  500. package/node_modules/highlight.js/lib/languages/java.js +0 -181
  501. package/node_modules/highlight.js/lib/languages/javascript.js +0 -604
  502. package/node_modules/highlight.js/lib/languages/jboss-cli.js +0 -63
  503. package/node_modules/highlight.js/lib/languages/json.js +0 -63
  504. package/node_modules/highlight.js/lib/languages/julia-repl.js +0 -50
  505. package/node_modules/highlight.js/lib/languages/julia.js +0 -416
  506. package/node_modules/highlight.js/lib/languages/kotlin.js +0 -284
  507. package/node_modules/highlight.js/lib/languages/lasso.js +0 -187
  508. package/node_modules/highlight.js/lib/languages/latex.js +0 -276
  509. package/node_modules/highlight.js/lib/languages/ldif.js +0 -42
  510. package/node_modules/highlight.js/lib/languages/leaf.js +0 -49
  511. package/node_modules/highlight.js/lib/languages/less.js +0 -666
  512. package/node_modules/highlight.js/lib/languages/lisp.js +0 -111
  513. package/node_modules/highlight.js/lib/languages/livecodeserver.js +0 -189
  514. package/node_modules/highlight.js/lib/languages/livescript.js +0 -374
  515. package/node_modules/highlight.js/lib/languages/llvm.js +0 -154
  516. package/node_modules/highlight.js/lib/languages/lsl.js +0 -95
  517. package/node_modules/highlight.js/lib/languages/lua.js +0 -82
  518. package/node_modules/highlight.js/lib/languages/makefile.js +0 -92
  519. package/node_modules/highlight.js/lib/languages/markdown.js +0 -258
  520. package/node_modules/highlight.js/lib/languages/mathematica.js +0 -6797
  521. package/node_modules/highlight.js/lib/languages/matlab.js +0 -106
  522. package/node_modules/highlight.js/lib/languages/maxima.js +0 -417
  523. package/node_modules/highlight.js/lib/languages/mel.js +0 -236
  524. package/node_modules/highlight.js/lib/languages/mercury.js +0 -121
  525. package/node_modules/highlight.js/lib/languages/mipsasm.js +0 -109
  526. package/node_modules/highlight.js/lib/languages/mizar.js +0 -29
  527. package/node_modules/highlight.js/lib/languages/mojolicious.js +0 -36
  528. package/node_modules/highlight.js/lib/languages/monkey.js +0 -89
  529. package/node_modules/highlight.js/lib/languages/moonscript.js +0 -147
  530. package/node_modules/highlight.js/lib/languages/n1ql.js +0 -77
  531. package/node_modules/highlight.js/lib/languages/nginx.js +0 -140
  532. package/node_modules/highlight.js/lib/languages/nim.js +0 -79
  533. package/node_modules/highlight.js/lib/languages/nix.js +0 -65
  534. package/node_modules/highlight.js/lib/languages/node-repl.js +0 -37
  535. package/node_modules/highlight.js/lib/languages/nsis.js +0 -119
  536. package/node_modules/highlight.js/lib/languages/objectivec.js +0 -121
  537. package/node_modules/highlight.js/lib/languages/ocaml.js +0 -82
  538. package/node_modules/highlight.js/lib/languages/openscad.js +0 -81
  539. package/node_modules/highlight.js/lib/languages/oxygene.js +0 -101
  540. package/node_modules/highlight.js/lib/languages/parser3.js +0 -57
  541. package/node_modules/highlight.js/lib/languages/perl.js +0 -515
  542. package/node_modules/highlight.js/lib/languages/pf.js +0 -59
  543. package/node_modules/highlight.js/lib/languages/pgsql.js +0 -630
  544. package/node_modules/highlight.js/lib/languages/php-template.js +0 -54
  545. package/node_modules/highlight.js/lib/languages/php.js +0 -204
  546. package/node_modules/highlight.js/lib/languages/plaintext.js +0 -19
  547. package/node_modules/highlight.js/lib/languages/pony.js +0 -89
  548. package/node_modules/highlight.js/lib/languages/powershell.js +0 -331
  549. package/node_modules/highlight.js/lib/languages/processing.js +0 -58
  550. package/node_modules/highlight.js/lib/languages/profile.js +0 -43
  551. package/node_modules/highlight.js/lib/languages/prolog.js +0 -102
  552. package/node_modules/highlight.js/lib/languages/properties.js +0 -85
  553. package/node_modules/highlight.js/lib/languages/protobuf.js +0 -47
  554. package/node_modules/highlight.js/lib/languages/puppet.js +0 -147
  555. package/node_modules/highlight.js/lib/languages/purebasic.js +0 -101
  556. package/node_modules/highlight.js/lib/languages/python-repl.js +0 -36
  557. package/node_modules/highlight.js/lib/languages/python.js +0 -446
  558. package/node_modules/highlight.js/lib/languages/q.js +0 -37
  559. package/node_modules/highlight.js/lib/languages/qml.js +0 -225
  560. package/node_modules/highlight.js/lib/languages/r.js +0 -231
  561. package/node_modules/highlight.js/lib/languages/reasonml.js +0 -321
  562. package/node_modules/highlight.js/lib/languages/rib.js +0 -37
  563. package/node_modules/highlight.js/lib/languages/roboconf.js +0 -82
  564. package/node_modules/highlight.js/lib/languages/routeros.js +0 -172
  565. package/node_modules/highlight.js/lib/languages/rsl.js +0 -49
  566. package/node_modules/highlight.js/lib/languages/ruby.js +0 -387
  567. package/node_modules/highlight.js/lib/languages/ruleslanguage.js +0 -78
  568. package/node_modules/highlight.js/lib/languages/rust.js +0 -146
  569. package/node_modules/highlight.js/lib/languages/sas.js +0 -133
  570. package/node_modules/highlight.js/lib/languages/scala.js +0 -140
  571. package/node_modules/highlight.js/lib/languages/scheme.js +0 -207
  572. package/node_modules/highlight.js/lib/languages/scilab.js +0 -73
  573. package/node_modules/highlight.js/lib/languages/scss.js +0 -545
  574. package/node_modules/highlight.js/lib/languages/shell.js +0 -30
  575. package/node_modules/highlight.js/lib/languages/smali.js +0 -135
  576. package/node_modules/highlight.js/lib/languages/smalltalk.js +0 -63
  577. package/node_modules/highlight.js/lib/languages/sml.js +0 -81
  578. package/node_modules/highlight.js/lib/languages/sqf.js +0 -448
  579. package/node_modules/highlight.js/lib/languages/sql.js +0 -699
  580. package/node_modules/highlight.js/lib/languages/sql_more.js +0 -183
  581. package/node_modules/highlight.js/lib/languages/stan.js +0 -548
  582. package/node_modules/highlight.js/lib/languages/stata.js +0 -60
  583. package/node_modules/highlight.js/lib/languages/step21.js +0 -66
  584. package/node_modules/highlight.js/lib/languages/stylus.js +0 -609
  585. package/node_modules/highlight.js/lib/languages/subunit.js +0 -51
  586. package/node_modules/highlight.js/lib/languages/swift.js +0 -873
  587. package/node_modules/highlight.js/lib/languages/taggerscript.js +0 -52
  588. package/node_modules/highlight.js/lib/languages/tap.js +0 -55
  589. package/node_modules/highlight.js/lib/languages/tcl.js +0 -115
  590. package/node_modules/highlight.js/lib/languages/thrift.js +0 -51
  591. package/node_modules/highlight.js/lib/languages/tp.js +0 -95
  592. package/node_modules/highlight.js/lib/languages/twig.js +0 -77
  593. package/node_modules/highlight.js/lib/languages/typescript.js +0 -697
  594. package/node_modules/highlight.js/lib/languages/vala.js +0 -61
  595. package/node_modules/highlight.js/lib/languages/vbnet.js +0 -214
  596. package/node_modules/highlight.js/lib/languages/vbscript-html.js +0 -24
  597. package/node_modules/highlight.js/lib/languages/vbscript.js +0 -109
  598. package/node_modules/highlight.js/lib/languages/verilog.js +0 -131
  599. package/node_modules/highlight.js/lib/languages/vhdl.js +0 -71
  600. package/node_modules/highlight.js/lib/languages/vim.js +0 -123
  601. package/node_modules/highlight.js/lib/languages/x86asm.js +0 -163
  602. package/node_modules/highlight.js/lib/languages/xl.js +0 -92
  603. package/node_modules/highlight.js/lib/languages/xml.js +0 -287
  604. package/node_modules/highlight.js/lib/languages/xquery.js +0 -197
  605. package/node_modules/highlight.js/lib/languages/yaml.js +0 -176
  606. package/node_modules/highlight.js/lib/languages/zephir.js +0 -140
  607. package/node_modules/highlight.js/package.json +0 -86
  608. package/node_modules/highlight.js/scss/a11y-dark.scss +0 -99
  609. package/node_modules/highlight.js/scss/a11y-light.scss +0 -99
  610. package/node_modules/highlight.js/scss/agate.scss +0 -108
  611. package/node_modules/highlight.js/scss/an-old-hope.scss +0 -89
  612. package/node_modules/highlight.js/scss/androidstudio.scss +0 -66
  613. package/node_modules/highlight.js/scss/arduino-light.scss +0 -87
  614. package/node_modules/highlight.js/scss/arta.scss +0 -73
  615. package/node_modules/highlight.js/scss/ascetic.scss +0 -45
  616. package/node_modules/highlight.js/scss/atelier-cave-dark.scss +0 -83
  617. package/node_modules/highlight.js/scss/atelier-cave-light.scss +0 -85
  618. package/node_modules/highlight.js/scss/atelier-dune-dark.scss +0 -69
  619. package/node_modules/highlight.js/scss/atelier-dune-light.scss +0 -69
  620. package/node_modules/highlight.js/scss/atelier-estuary-dark.scss +0 -84
  621. package/node_modules/highlight.js/scss/atelier-estuary-light.scss +0 -84
  622. package/node_modules/highlight.js/scss/atelier-forest-dark.scss +0 -69
  623. package/node_modules/highlight.js/scss/atelier-forest-light.scss +0 -69
  624. package/node_modules/highlight.js/scss/atelier-heath-dark.scss +0 -69
  625. package/node_modules/highlight.js/scss/atelier-heath-light.scss +0 -69
  626. package/node_modules/highlight.js/scss/atelier-lakeside-dark.scss +0 -69
  627. package/node_modules/highlight.js/scss/atelier-lakeside-light.scss +0 -69
  628. package/node_modules/highlight.js/scss/atelier-plateau-dark.scss +0 -84
  629. package/node_modules/highlight.js/scss/atelier-plateau-light.scss +0 -84
  630. package/node_modules/highlight.js/scss/atelier-savanna-dark.scss +0 -84
  631. package/node_modules/highlight.js/scss/atelier-savanna-light.scss +0 -84
  632. package/node_modules/highlight.js/scss/atelier-seaside-dark.scss +0 -69
  633. package/node_modules/highlight.js/scss/atelier-seaside-light.scss +0 -69
  634. package/node_modules/highlight.js/scss/atelier-sulphurpool-dark.scss +0 -69
  635. package/node_modules/highlight.js/scss/atelier-sulphurpool-light.scss +0 -69
  636. package/node_modules/highlight.js/scss/atom-one-dark-reasonable.scss +0 -75
  637. package/node_modules/highlight.js/scss/atom-one-dark.scss +0 -96
  638. package/node_modules/highlight.js/scss/atom-one-light.scss +0 -96
  639. package/node_modules/highlight.js/scss/brown-paper.scss +0 -64
  640. package/node_modules/highlight.js/scss/brown-papersq.png +0 -0
  641. package/node_modules/highlight.js/scss/codepen-embed.scss +0 -60
  642. package/node_modules/highlight.js/scss/color-brewer.scss +0 -71
  643. package/node_modules/highlight.js/scss/darcula.scss +0 -74
  644. package/node_modules/highlight.js/scss/dark.scss +0 -63
  645. package/node_modules/highlight.js/scss/default.scss +0 -99
  646. package/node_modules/highlight.js/scss/docco.scss +0 -97
  647. package/node_modules/highlight.js/scss/dracula.scss +0 -76
  648. package/node_modules/highlight.js/scss/far.scss +0 -71
  649. package/node_modules/highlight.js/scss/foundation.scss +0 -89
  650. package/node_modules/highlight.js/scss/github-gist.scss +0 -79
  651. package/node_modules/highlight.js/scss/github.scss +0 -99
  652. package/node_modules/highlight.js/scss/gml.scss +0 -78
  653. package/node_modules/highlight.js/scss/googlecode.scss +0 -89
  654. package/node_modules/highlight.js/scss/gradient-dark.scss +0 -122
  655. package/node_modules/highlight.js/scss/gradient-light.scss +0 -130
  656. package/node_modules/highlight.js/scss/grayscale.scss +0 -101
  657. package/node_modules/highlight.js/scss/gruvbox-dark.scss +0 -108
  658. package/node_modules/highlight.js/scss/gruvbox-light.scss +0 -108
  659. package/node_modules/highlight.js/scss/hopscotch.scss +0 -84
  660. package/node_modules/highlight.js/scss/hybrid.scss +0 -102
  661. package/node_modules/highlight.js/scss/idea.scss +0 -97
  662. package/node_modules/highlight.js/scss/ir-black.scss +0 -73
  663. package/node_modules/highlight.js/scss/isbl-editor-dark.scss +0 -112
  664. package/node_modules/highlight.js/scss/isbl-editor-light.scss +0 -111
  665. package/node_modules/highlight.js/scss/kimbie.dark.scss +0 -74
  666. package/node_modules/highlight.js/scss/kimbie.light.scss +0 -74
  667. package/node_modules/highlight.js/scss/lightfair.scss +0 -88
  668. package/node_modules/highlight.js/scss/lioshi.scss +0 -88
  669. package/node_modules/highlight.js/scss/magula.scss +0 -70
  670. package/node_modules/highlight.js/scss/mono-blue.scss +0 -56
  671. package/node_modules/highlight.js/scss/monokai-sublime.scss +0 -83
  672. package/node_modules/highlight.js/scss/monokai.scss +0 -71
  673. package/node_modules/highlight.js/scss/night-owl.scss +0 -182
  674. package/node_modules/highlight.js/scss/nnfx-dark.scss +0 -106
  675. package/node_modules/highlight.js/scss/nnfx.scss +0 -106
  676. package/node_modules/highlight.js/scss/nord.scss +0 -309
  677. package/node_modules/highlight.js/scss/obsidian.scss +0 -88
  678. package/node_modules/highlight.js/scss/ocean.scss +0 -74
  679. package/node_modules/highlight.js/scss/paraiso-dark.scss +0 -72
  680. package/node_modules/highlight.js/scss/paraiso-light.scss +0 -72
  681. package/node_modules/highlight.js/scss/pojoaque.jpg +0 -0
  682. package/node_modules/highlight.js/scss/pojoaque.scss +0 -83
  683. package/node_modules/highlight.js/scss/purebasic.scss +0 -96
  684. package/node_modules/highlight.js/scss/qtcreator_dark.scss +0 -83
  685. package/node_modules/highlight.js/scss/qtcreator_light.scss +0 -83
  686. package/node_modules/highlight.js/scss/railscasts.scss +0 -106
  687. package/node_modules/highlight.js/scss/rainbow.scss +0 -85
  688. package/node_modules/highlight.js/scss/routeros.scss +0 -108
  689. package/node_modules/highlight.js/scss/school-book.png +0 -0
  690. package/node_modules/highlight.js/scss/school-book.scss +0 -69
  691. package/node_modules/highlight.js/scss/shades-of-purple.scss +0 -96
  692. package/node_modules/highlight.js/scss/solarized-dark.scss +0 -84
  693. package/node_modules/highlight.js/scss/solarized-light.scss +0 -84
  694. package/node_modules/highlight.js/scss/srcery.scss +0 -78
  695. package/node_modules/highlight.js/scss/stackoverflow-dark.scss +0 -78
  696. package/node_modules/highlight.js/scss/stackoverflow-light.scss +0 -78
  697. package/node_modules/highlight.js/scss/sunburst.scss +0 -102
  698. package/node_modules/highlight.js/scss/tomorrow-night-blue.scss +0 -75
  699. package/node_modules/highlight.js/scss/tomorrow-night-bright.scss +0 -74
  700. package/node_modules/highlight.js/scss/tomorrow-night-eighties.scss +0 -74
  701. package/node_modules/highlight.js/scss/tomorrow-night.scss +0 -75
  702. package/node_modules/highlight.js/scss/tomorrow.scss +0 -72
  703. package/node_modules/highlight.js/scss/vs.scss +0 -68
  704. package/node_modules/highlight.js/scss/vs2015.scss +0 -115
  705. package/node_modules/highlight.js/scss/xcode.scss +0 -104
  706. package/node_modules/highlight.js/scss/xt256.scss +0 -92
  707. package/node_modules/highlight.js/scss/zenburn.scss +0 -80
  708. package/node_modules/highlight.js/styles/a11y-dark.css +0 -99
  709. package/node_modules/highlight.js/styles/a11y-light.css +0 -99
  710. package/node_modules/highlight.js/styles/agate.css +0 -108
  711. package/node_modules/highlight.js/styles/an-old-hope.css +0 -89
  712. package/node_modules/highlight.js/styles/androidstudio.css +0 -66
  713. package/node_modules/highlight.js/styles/arduino-light.css +0 -87
  714. package/node_modules/highlight.js/styles/arta.css +0 -73
  715. package/node_modules/highlight.js/styles/ascetic.css +0 -45
  716. package/node_modules/highlight.js/styles/atelier-cave-dark.css +0 -83
  717. package/node_modules/highlight.js/styles/atelier-cave-light.css +0 -85
  718. package/node_modules/highlight.js/styles/atelier-dune-dark.css +0 -69
  719. package/node_modules/highlight.js/styles/atelier-dune-light.css +0 -69
  720. package/node_modules/highlight.js/styles/atelier-estuary-dark.css +0 -84
  721. package/node_modules/highlight.js/styles/atelier-estuary-light.css +0 -84
  722. package/node_modules/highlight.js/styles/atelier-forest-dark.css +0 -69
  723. package/node_modules/highlight.js/styles/atelier-forest-light.css +0 -69
  724. package/node_modules/highlight.js/styles/atelier-heath-dark.css +0 -69
  725. package/node_modules/highlight.js/styles/atelier-heath-light.css +0 -69
  726. package/node_modules/highlight.js/styles/atelier-lakeside-dark.css +0 -69
  727. package/node_modules/highlight.js/styles/atelier-lakeside-light.css +0 -69
  728. package/node_modules/highlight.js/styles/atelier-plateau-dark.css +0 -84
  729. package/node_modules/highlight.js/styles/atelier-plateau-light.css +0 -84
  730. package/node_modules/highlight.js/styles/atelier-savanna-dark.css +0 -84
  731. package/node_modules/highlight.js/styles/atelier-savanna-light.css +0 -84
  732. package/node_modules/highlight.js/styles/atelier-seaside-dark.css +0 -69
  733. package/node_modules/highlight.js/styles/atelier-seaside-light.css +0 -69
  734. package/node_modules/highlight.js/styles/atelier-sulphurpool-dark.css +0 -69
  735. package/node_modules/highlight.js/styles/atelier-sulphurpool-light.css +0 -69
  736. package/node_modules/highlight.js/styles/atom-one-dark-reasonable.css +0 -75
  737. package/node_modules/highlight.js/styles/atom-one-dark.css +0 -96
  738. package/node_modules/highlight.js/styles/atom-one-light.css +0 -96
  739. package/node_modules/highlight.js/styles/brown-paper.css +0 -64
  740. package/node_modules/highlight.js/styles/brown-papersq.png +0 -0
  741. package/node_modules/highlight.js/styles/codepen-embed.css +0 -60
  742. package/node_modules/highlight.js/styles/color-brewer.css +0 -71
  743. package/node_modules/highlight.js/styles/darcula.css +0 -74
  744. package/node_modules/highlight.js/styles/dark.css +0 -63
  745. package/node_modules/highlight.js/styles/default.css +0 -99
  746. package/node_modules/highlight.js/styles/docco.css +0 -97
  747. package/node_modules/highlight.js/styles/dracula.css +0 -76
  748. package/node_modules/highlight.js/styles/far.css +0 -71
  749. package/node_modules/highlight.js/styles/foundation.css +0 -89
  750. package/node_modules/highlight.js/styles/github-gist.css +0 -79
  751. package/node_modules/highlight.js/styles/github.css +0 -99
  752. package/node_modules/highlight.js/styles/gml.css +0 -78
  753. package/node_modules/highlight.js/styles/googlecode.css +0 -89
  754. package/node_modules/highlight.js/styles/gradient-dark.css +0 -122
  755. package/node_modules/highlight.js/styles/gradient-light.css +0 -130
  756. package/node_modules/highlight.js/styles/grayscale.css +0 -101
  757. package/node_modules/highlight.js/styles/gruvbox-dark.css +0 -108
  758. package/node_modules/highlight.js/styles/gruvbox-light.css +0 -108
  759. package/node_modules/highlight.js/styles/hopscotch.css +0 -84
  760. package/node_modules/highlight.js/styles/hybrid.css +0 -102
  761. package/node_modules/highlight.js/styles/idea.css +0 -97
  762. package/node_modules/highlight.js/styles/ir-black.css +0 -73
  763. package/node_modules/highlight.js/styles/isbl-editor-dark.css +0 -112
  764. package/node_modules/highlight.js/styles/isbl-editor-light.css +0 -111
  765. package/node_modules/highlight.js/styles/kimbie.dark.css +0 -74
  766. package/node_modules/highlight.js/styles/kimbie.light.css +0 -74
  767. package/node_modules/highlight.js/styles/lightfair.css +0 -88
  768. package/node_modules/highlight.js/styles/lioshi.css +0 -88
  769. package/node_modules/highlight.js/styles/magula.css +0 -70
  770. package/node_modules/highlight.js/styles/mono-blue.css +0 -56
  771. package/node_modules/highlight.js/styles/monokai-sublime.css +0 -83
  772. package/node_modules/highlight.js/styles/monokai.css +0 -71
  773. package/node_modules/highlight.js/styles/night-owl.css +0 -182
  774. package/node_modules/highlight.js/styles/nnfx-dark.css +0 -106
  775. package/node_modules/highlight.js/styles/nnfx.css +0 -106
  776. package/node_modules/highlight.js/styles/nord.css +0 -309
  777. package/node_modules/highlight.js/styles/obsidian.css +0 -88
  778. package/node_modules/highlight.js/styles/ocean.css +0 -74
  779. package/node_modules/highlight.js/styles/paraiso-dark.css +0 -72
  780. package/node_modules/highlight.js/styles/paraiso-light.css +0 -72
  781. package/node_modules/highlight.js/styles/pojoaque.css +0 -83
  782. package/node_modules/highlight.js/styles/pojoaque.jpg +0 -0
  783. package/node_modules/highlight.js/styles/purebasic.css +0 -96
  784. package/node_modules/highlight.js/styles/qtcreator_dark.css +0 -83
  785. package/node_modules/highlight.js/styles/qtcreator_light.css +0 -83
  786. package/node_modules/highlight.js/styles/railscasts.css +0 -106
  787. package/node_modules/highlight.js/styles/rainbow.css +0 -85
  788. package/node_modules/highlight.js/styles/routeros.css +0 -108
  789. package/node_modules/highlight.js/styles/school-book.css +0 -69
  790. package/node_modules/highlight.js/styles/school-book.png +0 -0
  791. package/node_modules/highlight.js/styles/shades-of-purple.css +0 -96
  792. package/node_modules/highlight.js/styles/solarized-dark.css +0 -84
  793. package/node_modules/highlight.js/styles/solarized-light.css +0 -84
  794. package/node_modules/highlight.js/styles/srcery.css +0 -78
  795. package/node_modules/highlight.js/styles/stackoverflow-dark.css +0 -78
  796. package/node_modules/highlight.js/styles/stackoverflow-light.css +0 -78
  797. package/node_modules/highlight.js/styles/sunburst.css +0 -102
  798. package/node_modules/highlight.js/styles/tomorrow-night-blue.css +0 -75
  799. package/node_modules/highlight.js/styles/tomorrow-night-bright.css +0 -74
  800. package/node_modules/highlight.js/styles/tomorrow-night-eighties.css +0 -74
  801. package/node_modules/highlight.js/styles/tomorrow-night.css +0 -75
  802. package/node_modules/highlight.js/styles/tomorrow.css +0 -72
  803. package/node_modules/highlight.js/styles/vs.css +0 -68
  804. package/node_modules/highlight.js/styles/vs2015.css +0 -115
  805. package/node_modules/highlight.js/styles/xcode.css +0 -104
  806. package/node_modules/highlight.js/styles/xt256.css +0 -92
  807. package/node_modules/highlight.js/styles/zenburn.css +0 -80
  808. package/node_modules/highlight.js/types/index.d.ts +0 -261
  809. package/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  810. package/node_modules/is-fullwidth-code-point/index.js +0 -50
  811. package/node_modules/is-fullwidth-code-point/license +0 -9
  812. package/node_modules/is-fullwidth-code-point/package.json +0 -42
  813. package/node_modules/is-fullwidth-code-point/readme.md +0 -39
  814. package/node_modules/mz/HISTORY.md +0 -66
  815. package/node_modules/mz/LICENSE +0 -22
  816. package/node_modules/mz/README.md +0 -106
  817. package/node_modules/mz/child_process.js +0 -8
  818. package/node_modules/mz/crypto.js +0 -9
  819. package/node_modules/mz/dns.js +0 -16
  820. package/node_modules/mz/fs.js +0 -62
  821. package/node_modules/mz/index.js +0 -8
  822. package/node_modules/mz/package.json +0 -44
  823. package/node_modules/mz/readline.js +0 -64
  824. package/node_modules/mz/zlib.js +0 -13
  825. package/node_modules/object-assign/index.js +0 -90
  826. package/node_modules/object-assign/license +0 -21
  827. package/node_modules/object-assign/package.json +0 -42
  828. package/node_modules/object-assign/readme.md +0 -61
  829. package/node_modules/parse5/LICENSE +0 -19
  830. package/node_modules/parse5/README.md +0 -38
  831. package/node_modules/parse5/lib/common/doctype.js +0 -162
  832. package/node_modules/parse5/lib/common/error-codes.js +0 -65
  833. package/node_modules/parse5/lib/common/foreign-content.js +0 -265
  834. package/node_modules/parse5/lib/common/html.js +0 -272
  835. package/node_modules/parse5/lib/common/unicode.js +0 -109
  836. package/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js +0 -43
  837. package/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js +0 -52
  838. package/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js +0 -24
  839. package/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js +0 -17
  840. package/node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js +0 -35
  841. package/node_modules/parse5/lib/extensions/location-info/parser-mixin.js +0 -222
  842. package/node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js +0 -146
  843. package/node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js +0 -64
  844. package/node_modules/parse5/lib/index.js +0 -29
  845. package/node_modules/parse5/lib/parser/formatting-element-list.js +0 -181
  846. package/node_modules/parse5/lib/parser/index.js +0 -2956
  847. package/node_modules/parse5/lib/parser/open-element-stack.js +0 -482
  848. package/node_modules/parse5/lib/serializer/index.js +0 -176
  849. package/node_modules/parse5/lib/tokenizer/index.js +0 -2196
  850. package/node_modules/parse5/lib/tokenizer/named-entity-data.js +0 -5
  851. package/node_modules/parse5/lib/tokenizer/preprocessor.js +0 -159
  852. package/node_modules/parse5/lib/tree-adapters/default.js +0 -217
  853. package/node_modules/parse5/lib/utils/merge-options.js +0 -13
  854. package/node_modules/parse5/lib/utils/mixin.js +0 -39
  855. package/node_modules/parse5/package.json +0 -35
  856. package/node_modules/parse5-htmlparser2-tree-adapter/LICENSE +0 -19
  857. package/node_modules/parse5-htmlparser2-tree-adapter/README.md +0 -34
  858. package/node_modules/parse5-htmlparser2-tree-adapter/lib/index.js +0 -348
  859. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/LICENSE +0 -19
  860. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/README.md +0 -38
  861. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/common/doctype.js +0 -162
  862. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/common/error-codes.js +0 -65
  863. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/common/foreign-content.js +0 -265
  864. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/common/html.js +0 -272
  865. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/common/unicode.js +0 -109
  866. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/error-reporting/mixin-base.js +0 -43
  867. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js +0 -52
  868. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js +0 -24
  869. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js +0 -17
  870. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js +0 -35
  871. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/location-info/parser-mixin.js +0 -223
  872. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js +0 -146
  873. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js +0 -64
  874. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/index.js +0 -29
  875. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/parser/formatting-element-list.js +0 -181
  876. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/parser/index.js +0 -2956
  877. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/parser/open-element-stack.js +0 -482
  878. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/serializer/index.js +0 -176
  879. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/tokenizer/index.js +0 -2196
  880. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/tokenizer/named-entity-data.js +0 -5
  881. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/tokenizer/preprocessor.js +0 -159
  882. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/tree-adapters/default.js +0 -221
  883. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/utils/merge-options.js +0 -13
  884. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/lib/utils/mixin.js +0 -39
  885. package/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/package.json +0 -35
  886. package/node_modules/parse5-htmlparser2-tree-adapter/package.json +0 -27
  887. package/node_modules/proper-lockfile/CHANGELOG.md +0 -108
  888. package/node_modules/require-directory/.jshintrc +0 -67
  889. package/node_modules/require-directory/.npmignore +0 -1
  890. package/node_modules/require-directory/.travis.yml +0 -3
  891. package/node_modules/require-directory/LICENSE +0 -22
  892. package/node_modules/require-directory/README.markdown +0 -184
  893. package/node_modules/require-directory/index.js +0 -86
  894. package/node_modules/require-directory/package.json +0 -40
  895. package/node_modules/source-map/CHANGELOG.md +0 -301
  896. package/node_modules/string-width/index.d.ts +0 -29
  897. package/node_modules/string-width/index.js +0 -47
  898. package/node_modules/string-width/license +0 -9
  899. package/node_modules/string-width/node_modules/ansi-regex/index.d.ts +0 -37
  900. package/node_modules/string-width/node_modules/ansi-regex/index.js +0 -10
  901. package/node_modules/string-width/node_modules/ansi-regex/license +0 -9
  902. package/node_modules/string-width/node_modules/ansi-regex/package.json +0 -55
  903. package/node_modules/string-width/node_modules/ansi-regex/readme.md +0 -78
  904. package/node_modules/string-width/node_modules/strip-ansi/index.d.ts +0 -17
  905. package/node_modules/string-width/node_modules/strip-ansi/index.js +0 -4
  906. package/node_modules/string-width/node_modules/strip-ansi/license +0 -9
  907. package/node_modules/string-width/node_modules/strip-ansi/package.json +0 -54
  908. package/node_modules/string-width/node_modules/strip-ansi/readme.md +0 -46
  909. package/node_modules/string-width/package.json +0 -56
  910. package/node_modules/string-width/readme.md +0 -50
  911. package/node_modules/supports-color/browser.js +0 -5
  912. package/node_modules/supports-color/index.js +0 -135
  913. package/node_modules/supports-color/license +0 -9
  914. package/node_modules/supports-color/package.json +0 -53
  915. package/node_modules/supports-color/readme.md +0 -76
  916. package/node_modules/thenify/History.md +0 -11
  917. package/node_modules/thenify/LICENSE +0 -22
  918. package/node_modules/thenify/README.md +0 -120
  919. package/node_modules/thenify/index.js +0 -77
  920. package/node_modules/thenify/package.json +0 -31
  921. package/node_modules/thenify-all/History.md +0 -11
  922. package/node_modules/thenify-all/LICENSE +0 -22
  923. package/node_modules/thenify-all/README.md +0 -66
  924. package/node_modules/thenify-all/index.js +0 -73
  925. package/node_modules/thenify-all/package.json +0 -34
  926. package/node_modules/wrap-ansi/index.js +0 -216
  927. package/node_modules/wrap-ansi/license +0 -9
  928. package/node_modules/wrap-ansi/node_modules/ansi-regex/index.d.ts +0 -37
  929. package/node_modules/wrap-ansi/node_modules/ansi-regex/index.js +0 -10
  930. package/node_modules/wrap-ansi/node_modules/ansi-regex/license +0 -9
  931. package/node_modules/wrap-ansi/node_modules/ansi-regex/package.json +0 -55
  932. package/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md +0 -78
  933. package/node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts +0 -17
  934. package/node_modules/wrap-ansi/node_modules/strip-ansi/index.js +0 -4
  935. package/node_modules/wrap-ansi/node_modules/strip-ansi/license +0 -9
  936. package/node_modules/wrap-ansi/node_modules/strip-ansi/package.json +0 -54
  937. package/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md +0 -46
  938. package/node_modules/wrap-ansi/package.json +0 -62
  939. package/node_modules/wrap-ansi/readme.md +0 -91
  940. package/node_modules/y18n/CHANGELOG.md +0 -100
  941. package/node_modules/y18n/LICENSE +0 -13
  942. package/node_modules/y18n/README.md +0 -127
  943. package/node_modules/y18n/build/index.cjs +0 -203
  944. package/node_modules/y18n/build/lib/cjs.js +0 -6
  945. package/node_modules/y18n/build/lib/index.js +0 -174
  946. package/node_modules/y18n/build/lib/platform-shims/node.js +0 -19
  947. package/node_modules/y18n/index.mjs +0 -8
  948. package/node_modules/y18n/package.json +0 -70
  949. package/node_modules/yargs/CHANGELOG.md +0 -88
  950. package/node_modules/yargs/LICENSE +0 -21
  951. package/node_modules/yargs/README.md +0 -202
  952. package/node_modules/yargs/browser.mjs +0 -7
  953. package/node_modules/yargs/build/index.cjs +0 -2920
  954. package/node_modules/yargs/build/lib/argsert.js +0 -62
  955. package/node_modules/yargs/build/lib/command.js +0 -382
  956. package/node_modules/yargs/build/lib/completion-templates.js +0 -47
  957. package/node_modules/yargs/build/lib/completion.js +0 -128
  958. package/node_modules/yargs/build/lib/middleware.js +0 -53
  959. package/node_modules/yargs/build/lib/parse-command.js +0 -32
  960. package/node_modules/yargs/build/lib/typings/common-types.js +0 -9
  961. package/node_modules/yargs/build/lib/typings/yargs-parser-types.js +0 -1
  962. package/node_modules/yargs/build/lib/usage.js +0 -548
  963. package/node_modules/yargs/build/lib/utils/apply-extends.js +0 -59
  964. package/node_modules/yargs/build/lib/utils/is-promise.js +0 -5
  965. package/node_modules/yargs/build/lib/utils/levenshtein.js +0 -26
  966. package/node_modules/yargs/build/lib/utils/obj-filter.js +0 -10
  967. package/node_modules/yargs/build/lib/utils/process-argv.js +0 -17
  968. package/node_modules/yargs/build/lib/utils/set-blocking.js +0 -12
  969. package/node_modules/yargs/build/lib/utils/which-module.js +0 -10
  970. package/node_modules/yargs/build/lib/validation.js +0 -308
  971. package/node_modules/yargs/build/lib/yargs-factory.js +0 -1143
  972. package/node_modules/yargs/build/lib/yerror.js +0 -7
  973. package/node_modules/yargs/helpers/helpers.mjs +0 -10
  974. package/node_modules/yargs/helpers/index.js +0 -14
  975. package/node_modules/yargs/helpers/package.json +0 -3
  976. package/node_modules/yargs/index.cjs +0 -39
  977. package/node_modules/yargs/index.mjs +0 -8
  978. package/node_modules/yargs/lib/platform-shims/browser.mjs +0 -92
  979. package/node_modules/yargs/lib/platform-shims/esm.mjs +0 -67
  980. package/node_modules/yargs/locales/be.json +0 -46
  981. package/node_modules/yargs/locales/de.json +0 -46
  982. package/node_modules/yargs/locales/en.json +0 -51
  983. package/node_modules/yargs/locales/es.json +0 -46
  984. package/node_modules/yargs/locales/fi.json +0 -49
  985. package/node_modules/yargs/locales/fr.json +0 -53
  986. package/node_modules/yargs/locales/hi.json +0 -49
  987. package/node_modules/yargs/locales/hu.json +0 -46
  988. package/node_modules/yargs/locales/id.json +0 -50
  989. package/node_modules/yargs/locales/it.json +0 -46
  990. package/node_modules/yargs/locales/ja.json +0 -51
  991. package/node_modules/yargs/locales/ko.json +0 -49
  992. package/node_modules/yargs/locales/nb.json +0 -44
  993. package/node_modules/yargs/locales/nl.json +0 -49
  994. package/node_modules/yargs/locales/nn.json +0 -44
  995. package/node_modules/yargs/locales/pirate.json +0 -13
  996. package/node_modules/yargs/locales/pl.json +0 -49
  997. package/node_modules/yargs/locales/pt.json +0 -45
  998. package/node_modules/yargs/locales/pt_BR.json +0 -48
  999. package/node_modules/yargs/locales/ru.json +0 -46
  1000. package/node_modules/yargs/locales/th.json +0 -46
  1001. package/node_modules/yargs/locales/tr.json +0 -48
  1002. package/node_modules/yargs/locales/zh_CN.json +0 -48
  1003. package/node_modules/yargs/locales/zh_TW.json +0 -47
  1004. package/node_modules/yargs/package.json +0 -122
  1005. package/node_modules/yargs/yargs +0 -9
  1006. package/node_modules/yargs-parser/CHANGELOG.md +0 -263
  1007. package/node_modules/yargs-parser/LICENSE.txt +0 -14
  1008. package/node_modules/yargs-parser/README.md +0 -518
  1009. package/node_modules/yargs-parser/browser.js +0 -29
  1010. package/node_modules/yargs-parser/build/index.cjs +0 -1042
  1011. package/node_modules/yargs-parser/build/lib/index.js +0 -59
  1012. package/node_modules/yargs-parser/build/lib/string-utils.js +0 -65
  1013. package/node_modules/yargs-parser/build/lib/tokenize-arg-string.js +0 -40
  1014. package/node_modules/yargs-parser/build/lib/yargs-parser-types.js +0 -12
  1015. package/node_modules/yargs-parser/build/lib/yargs-parser.js +0 -1037
  1016. package/node_modules/yargs-parser/package.json +0 -87
@@ -1,7 +1,7 @@
1
- import { spawnSync } from "child_process";
2
1
  import { readdirSync, statSync } from "fs";
3
2
  import { homedir } from "os";
4
3
  import { basename, dirname, join } from "path";
4
+ import { fuzzyFind } from "@gsd/native/fd";
5
5
  import { fuzzyFilter } from "./fuzzy.js";
6
6
  const PATH_DELIMITERS = new Set([" ", "\t", '"', "'", "="]);
7
7
  function findLastDelimiter(text) {
@@ -66,60 +66,11 @@ function buildCompletionValue(path, options) {
66
66
  const closeQuote = '"';
67
67
  return `${openQuote}${path}${closeQuote}`;
68
68
  }
69
- // Use fd to walk directory tree (fast, respects .gitignore)
70
- function walkDirectoryWithFd(baseDir, fdPath, query, maxResults) {
71
- const args = [
72
- "--base-directory",
73
- baseDir,
74
- "--max-results",
75
- String(maxResults),
76
- "--type",
77
- "f",
78
- "--type",
79
- "d",
80
- "--full-path",
81
- "--hidden",
82
- "--exclude",
83
- ".git",
84
- "--exclude",
85
- ".git/*",
86
- "--exclude",
87
- ".git/**",
88
- ];
89
- // Add query as pattern if provided
90
- if (query) {
91
- args.push(query);
92
- }
93
- const result = spawnSync(fdPath, args, {
94
- encoding: "utf-8",
95
- stdio: ["pipe", "pipe", "pipe"],
96
- maxBuffer: 10 * 1024 * 1024,
97
- });
98
- if (result.status !== 0 || !result.stdout) {
99
- return [];
100
- }
101
- const lines = result.stdout.trim().split("\n").filter(Boolean);
102
- const results = [];
103
- for (const line of lines) {
104
- const normalizedPath = line.endsWith("/") ? line.slice(0, -1) : line;
105
- if (normalizedPath === ".git" || normalizedPath.startsWith(".git/") || normalizedPath.includes("/.git/")) {
106
- continue;
107
- }
108
- // fd outputs directories with trailing /
109
- const isDirectory = line.endsWith("/");
110
- results.push({
111
- path: line,
112
- isDirectory,
113
- });
114
- }
115
- return results;
116
- }
117
69
  // Combined provider that handles both slash commands and file paths
118
70
  export class CombinedAutocompleteProvider {
119
- constructor(commands = [], basePath = process.cwd(), fdPath = null) {
71
+ constructor(commands = [], basePath = process.cwd()) {
120
72
  this.commands = commands;
121
73
  this.basePath = basePath;
122
- this.fdPath = fdPath;
123
74
  }
124
75
  getSuggestions(lines, cursorLine, cursorCol) {
125
76
  const currentLine = lines[cursorLine] || "";
@@ -486,55 +437,25 @@ export class CombinedAutocompleteProvider {
486
437
  return [];
487
438
  }
488
439
  }
489
- // Score an entry against the query (higher = better match)
490
- // isDirectory adds bonus to prioritize folders
491
- scoreEntry(filePath, query, isDirectory) {
492
- const fileName = basename(filePath);
493
- const lowerFileName = fileName.toLowerCase();
494
- const lowerQuery = query.toLowerCase();
495
- let score = 0;
496
- // Exact filename match (highest)
497
- if (lowerFileName === lowerQuery)
498
- score = 100;
499
- // Filename starts with query
500
- else if (lowerFileName.startsWith(lowerQuery))
501
- score = 80;
502
- // Substring match in filename
503
- else if (lowerFileName.includes(lowerQuery))
504
- score = 50;
505
- // Substring match in full path
506
- else if (filePath.toLowerCase().includes(lowerQuery))
507
- score = 30;
508
- // Directories get a bonus to appear first
509
- if (isDirectory && score > 0)
510
- score += 10;
511
- return score;
512
- }
513
- // Fuzzy file search using fd (fast, respects .gitignore)
440
+ // Fuzzy file search using the native fd module (fast, respects .gitignore)
514
441
  getFuzzyFileSuggestions(query, options) {
515
- if (!this.fdPath) {
516
- // fd not available, return empty results
517
- return [];
518
- }
519
442
  try {
520
443
  const scopedQuery = this.resolveScopedFuzzyQuery(query);
521
- const fdBaseDir = scopedQuery?.baseDir ?? this.basePath;
522
- const fdQuery = scopedQuery?.query ?? query;
523
- const entries = walkDirectoryWithFd(fdBaseDir, this.fdPath, fdQuery, 100);
524
- // Score entries
525
- const scoredEntries = entries
526
- .map((entry) => ({
527
- ...entry,
528
- score: fdQuery ? this.scoreEntry(entry.path, fdQuery, entry.isDirectory) : 1,
529
- }))
530
- .filter((entry) => entry.score > 0);
531
- // Sort by score (descending) and take top 20
532
- scoredEntries.sort((a, b) => b.score - a.score);
533
- const topEntries = scoredEntries.slice(0, 20);
444
+ const searchPath = scopedQuery?.baseDir ?? this.basePath;
445
+ const searchQuery = scopedQuery?.query ?? query;
446
+ const result = fuzzyFind({
447
+ query: searchQuery,
448
+ path: searchPath,
449
+ hidden: true,
450
+ gitignore: true,
451
+ maxResults: 100,
452
+ });
453
+ // Take top 20 matches (already sorted by score descending from native module)
454
+ const topMatches = result.matches.slice(0, 20);
534
455
  // Build suggestions
535
456
  const suggestions = [];
536
- for (const { path: entryPath, isDirectory } of topEntries) {
537
- // fd already includes trailing / for directories
457
+ for (const { path: entryPath, isDirectory } of topMatches) {
458
+ // Native module includes trailing / for directories
538
459
  const pathWithoutSlash = isDirectory ? entryPath.slice(0, -1) : entryPath;
539
460
  const displayPath = scopedQuery
540
461
  ? this.scopedPathForDisplay(scopedQuery.displayBase, pathWithoutSlash)
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../src/autocomplete.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawnSync } from \"child_process\";\nimport { readdirSync, statSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join } from \"path\";\nimport { fuzzyFilter } from \"./fuzzy.js\";\n\nconst PATH_DELIMITERS = new Set([\" \", \"\\t\", '\"', \"'\", \"=\"]);\n\nfunction findLastDelimiter(text: string): number {\n\tfor (let i = text.length - 1; i >= 0; i -= 1) {\n\t\tif (PATH_DELIMITERS.has(text[i] ?? \"\")) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction findUnclosedQuoteStart(text: string): number | null {\n\tlet inQuotes = false;\n\tlet quoteStart = -1;\n\n\tfor (let i = 0; i < text.length; i += 1) {\n\t\tif (text[i] === '\"') {\n\t\t\tinQuotes = !inQuotes;\n\t\t\tif (inQuotes) {\n\t\t\t\tquoteStart = i;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn inQuotes ? quoteStart : null;\n}\n\nfunction isTokenStart(text: string, index: number): boolean {\n\treturn index === 0 || PATH_DELIMITERS.has(text[index - 1] ?? \"\");\n}\n\nfunction extractQuotedPrefix(text: string): string | null {\n\tconst quoteStart = findUnclosedQuoteStart(text);\n\tif (quoteStart === null) {\n\t\treturn null;\n\t}\n\n\tif (quoteStart > 0 && text[quoteStart - 1] === \"@\") {\n\t\tif (!isTokenStart(text, quoteStart - 1)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn text.slice(quoteStart - 1);\n\t}\n\n\tif (!isTokenStart(text, quoteStart)) {\n\t\treturn null;\n\t}\n\n\treturn text.slice(quoteStart);\n}\n\nfunction parsePathPrefix(prefix: string): { rawPrefix: string; isAtPrefix: boolean; isQuotedPrefix: boolean } {\n\tif (prefix.startsWith('@\"')) {\n\t\treturn { rawPrefix: prefix.slice(2), isAtPrefix: true, isQuotedPrefix: true };\n\t}\n\tif (prefix.startsWith('\"')) {\n\t\treturn { rawPrefix: prefix.slice(1), isAtPrefix: false, isQuotedPrefix: true };\n\t}\n\tif (prefix.startsWith(\"@\")) {\n\t\treturn { rawPrefix: prefix.slice(1), isAtPrefix: true, isQuotedPrefix: false };\n\t}\n\treturn { rawPrefix: prefix, isAtPrefix: false, isQuotedPrefix: false };\n}\n\nfunction buildCompletionValue(\n\tpath: string,\n\toptions: { isDirectory: boolean; isAtPrefix: boolean; isQuotedPrefix: boolean },\n): string {\n\tconst needsQuotes = options.isQuotedPrefix || path.includes(\" \");\n\tconst prefix = options.isAtPrefix ? \"@\" : \"\";\n\n\tif (!needsQuotes) {\n\t\treturn `${prefix}${path}`;\n\t}\n\n\tconst openQuote = `${prefix}\"`;\n\tconst closeQuote = '\"';\n\treturn `${openQuote}${path}${closeQuote}`;\n}\n\n// Use fd to walk directory tree (fast, respects .gitignore)\nfunction walkDirectoryWithFd(\n\tbaseDir: string,\n\tfdPath: string,\n\tquery: string,\n\tmaxResults: number,\n): Array<{ path: string; isDirectory: boolean }> {\n\tconst args = [\n\t\t\"--base-directory\",\n\t\tbaseDir,\n\t\t\"--max-results\",\n\t\tString(maxResults),\n\t\t\"--type\",\n\t\t\"f\",\n\t\t\"--type\",\n\t\t\"d\",\n\t\t\"--full-path\",\n\t\t\"--hidden\",\n\t\t\"--exclude\",\n\t\t\".git\",\n\t\t\"--exclude\",\n\t\t\".git/*\",\n\t\t\"--exclude\",\n\t\t\".git/**\",\n\t];\n\n\t// Add query as pattern if provided\n\tif (query) {\n\t\targs.push(query);\n\t}\n\n\tconst result = spawnSync(fdPath, args, {\n\t\tencoding: \"utf-8\",\n\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\tmaxBuffer: 10 * 1024 * 1024,\n\t});\n\n\tif (result.status !== 0 || !result.stdout) {\n\t\treturn [];\n\t}\n\n\tconst lines = result.stdout.trim().split(\"\\n\").filter(Boolean);\n\tconst results: Array<{ path: string; isDirectory: boolean }> = [];\n\n\tfor (const line of lines) {\n\t\tconst normalizedPath = line.endsWith(\"/\") ? line.slice(0, -1) : line;\n\t\tif (normalizedPath === \".git\" || normalizedPath.startsWith(\".git/\") || normalizedPath.includes(\"/.git/\")) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// fd outputs directories with trailing /\n\t\tconst isDirectory = line.endsWith(\"/\");\n\t\tresults.push({\n\t\t\tpath: line,\n\t\t\tisDirectory,\n\t\t});\n\t}\n\n\treturn results;\n}\n\nexport interface AutocompleteItem {\n\tvalue: string;\n\tlabel: string;\n\tdescription?: string;\n}\n\nexport interface SlashCommand {\n\tname: string;\n\tdescription?: string;\n\t// Function to get argument completions for this command\n\t// Returns null if no argument completion is available\n\tgetArgumentCompletions?(argumentPrefix: string): AutocompleteItem[] | null;\n}\n\nexport interface AutocompleteProvider {\n\t// Get autocomplete suggestions for current text/cursor position\n\t// Returns null if no suggestions available\n\tgetSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): {\n\t\titems: AutocompleteItem[];\n\t\tprefix: string; // What we're matching against (e.g., \"/\" or \"src/\")\n\t} | null;\n\n\t// Apply the selected item\n\t// Returns the new text and cursor position\n\tapplyCompletion(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t\titem: AutocompleteItem,\n\t\tprefix: string,\n\t): {\n\t\tlines: string[];\n\t\tcursorLine: number;\n\t\tcursorCol: number;\n\t};\n}\n\n// Combined provider that handles both slash commands and file paths\nexport class CombinedAutocompleteProvider implements AutocompleteProvider {\n\tprivate commands: (SlashCommand | AutocompleteItem)[];\n\tprivate basePath: string;\n\tprivate fdPath: string | null;\n\n\tconstructor(\n\t\tcommands: (SlashCommand | AutocompleteItem)[] = [],\n\t\tbasePath: string = process.cwd(),\n\t\tfdPath: string | null = null,\n\t) {\n\t\tthis.commands = commands;\n\t\tthis.basePath = basePath;\n\t\tthis.fdPath = fdPath;\n\t}\n\n\tgetSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): { items: AutocompleteItem[]; prefix: string } | null {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Check for @ file reference (fuzzy search) - must be after a delimiter or at start\n\t\tconst atPrefix = this.extractAtPrefix(textBeforeCursor);\n\t\tif (atPrefix) {\n\t\t\tconst { rawPrefix, isQuotedPrefix } = parsePathPrefix(atPrefix);\n\t\t\tconst suggestions = this.getFuzzyFileSuggestions(rawPrefix, { isQuotedPrefix: isQuotedPrefix });\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: atPrefix,\n\t\t\t};\n\t\t}\n\n\t\t// Check for slash commands\n\t\tif (textBeforeCursor.startsWith(\"/\")) {\n\t\t\tconst spaceIndex = textBeforeCursor.indexOf(\" \");\n\n\t\t\tif (spaceIndex === -1) {\n\t\t\t\t// No space yet - complete command names with fuzzy matching\n\t\t\t\tconst prefix = textBeforeCursor.slice(1); // Remove the \"/\"\n\t\t\t\tconst commandItems = this.commands.map((cmd) => ({\n\t\t\t\t\tname: \"name\" in cmd ? cmd.name : cmd.value,\n\t\t\t\t\tlabel: \"name\" in cmd ? cmd.name : cmd.label,\n\t\t\t\t\tdescription: cmd.description,\n\t\t\t\t}));\n\n\t\t\t\tconst filtered = fuzzyFilter(commandItems, prefix, (item) => item.name).map((item) => ({\n\t\t\t\t\tvalue: item.name,\n\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t...(item.description && { description: item.description }),\n\t\t\t\t}));\n\n\t\t\t\tif (filtered.length === 0) return null;\n\n\t\t\t\treturn {\n\t\t\t\t\titems: filtered,\n\t\t\t\t\tprefix: textBeforeCursor,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Space found - complete command arguments\n\t\t\t\tconst commandName = textBeforeCursor.slice(1, spaceIndex); // Command without \"/\"\n\t\t\t\tconst argumentText = textBeforeCursor.slice(spaceIndex + 1); // Text after space\n\n\t\t\t\tconst command = this.commands.find((cmd) => {\n\t\t\t\t\tconst name = \"name\" in cmd ? cmd.name : cmd.value;\n\t\t\t\t\treturn name === commandName;\n\t\t\t\t});\n\t\t\t\tif (!command || !(\"getArgumentCompletions\" in command) || !command.getArgumentCompletions) {\n\t\t\t\t\treturn null; // No argument completion for this command\n\t\t\t\t}\n\n\t\t\t\tconst argumentSuggestions = command.getArgumentCompletions(argumentText);\n\t\t\t\tif (!argumentSuggestions || argumentSuggestions.length === 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\titems: argumentSuggestions,\n\t\t\t\t\tprefix: argumentText,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check for file paths - triggered by Tab or if we detect a path pattern\n\t\tconst pathMatch = this.extractPathPrefix(textBeforeCursor, false);\n\n\t\tif (pathMatch !== null) {\n\t\t\tconst suggestions = this.getFileSuggestions(pathMatch);\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\t// Check if we have an exact match that is a directory\n\t\t\t// In that case, we might want to return suggestions for the directory content instead\n\t\t\t// But only if the prefix ends with /\n\t\t\tif (suggestions.length === 1 && suggestions[0]?.value === pathMatch && !pathMatch.endsWith(\"/\")) {\n\t\t\t\t// Exact match found (e.g. user typed \"src\" and \"src/\" is the only match)\n\t\t\t\t// We still return it so user can select it and add /\n\t\t\t\treturn {\n\t\t\t\t\titems: suggestions,\n\t\t\t\t\tprefix: pathMatch,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: pathMatch,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tapplyCompletion(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t\titem: AutocompleteItem,\n\t\tprefix: string,\n\t): { lines: string[]; cursorLine: number; cursorCol: number } {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst beforePrefix = currentLine.slice(0, cursorCol - prefix.length);\n\t\tconst afterCursor = currentLine.slice(cursorCol);\n\t\tconst isQuotedPrefix = prefix.startsWith('\"') || prefix.startsWith('@\"');\n\t\tconst hasLeadingQuoteAfterCursor = afterCursor.startsWith('\"');\n\t\tconst hasTrailingQuoteInItem = item.value.endsWith('\"');\n\t\tconst adjustedAfterCursor =\n\t\t\tisQuotedPrefix && hasTrailingQuoteInItem && hasLeadingQuoteAfterCursor ? afterCursor.slice(1) : afterCursor;\n\n\t\t// Check if we're completing a slash command (prefix starts with \"/\" but NOT a file path)\n\t\t// Slash commands are at the start of the line and don't contain path separators after the first /\n\t\tconst isSlashCommand = prefix.startsWith(\"/\") && beforePrefix.trim() === \"\" && !prefix.slice(1).includes(\"/\");\n\t\tif (isSlashCommand) {\n\t\t\t// This is a command name completion\n\t\t\tconst newLine = `${beforePrefix}/${item.value} ${adjustedAfterCursor}`;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + item.value.length + 2, // +2 for \"/\" and space\n\t\t\t};\n\t\t}\n\n\t\t// Check if we're completing a file attachment (prefix starts with \"@\")\n\t\tif (prefix.startsWith(\"@\")) {\n\t\t\t// This is a file attachment completion\n\t\t\t// Don't add space after directories so user can continue autocompleting\n\t\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\t\tconst suffix = isDirectory ? \"\" : \" \";\n\t\t\tconst newLine = `${beforePrefix + item.value}${suffix}${adjustedAfterCursor}`;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + cursorOffset + suffix.length,\n\t\t\t};\n\t\t}\n\n\t\t// Check if we're in a slash command context (beforePrefix contains \"/command \")\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\t\tif (textBeforeCursor.includes(\"/\") && textBeforeCursor.includes(\" \")) {\n\t\t\t// This is likely a command argument completion\n\t\t\tconst newLine = beforePrefix + item.value + adjustedAfterCursor;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + cursorOffset,\n\t\t\t};\n\t\t}\n\n\t\t// For file paths, complete the path\n\t\tconst newLine = beforePrefix + item.value + adjustedAfterCursor;\n\t\tconst newLines = [...lines];\n\t\tnewLines[cursorLine] = newLine;\n\n\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\treturn {\n\t\t\tlines: newLines,\n\t\t\tcursorLine,\n\t\t\tcursorCol: beforePrefix.length + cursorOffset,\n\t\t};\n\t}\n\n\t// Extract @ prefix for fuzzy file suggestions\n\tprivate extractAtPrefix(text: string): string | null {\n\t\tconst quotedPrefix = extractQuotedPrefix(text);\n\t\tif (quotedPrefix?.startsWith('@\"')) {\n\t\t\treturn quotedPrefix;\n\t\t}\n\n\t\tconst lastDelimiterIndex = findLastDelimiter(text);\n\t\tconst tokenStart = lastDelimiterIndex === -1 ? 0 : lastDelimiterIndex + 1;\n\n\t\tif (text[tokenStart] === \"@\") {\n\t\t\treturn text.slice(tokenStart);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Extract a path-like prefix from the text before cursor\n\tprivate extractPathPrefix(text: string, forceExtract: boolean = false): string | null {\n\t\tconst quotedPrefix = extractQuotedPrefix(text);\n\t\tif (quotedPrefix) {\n\t\t\treturn quotedPrefix;\n\t\t}\n\n\t\tconst lastDelimiterIndex = findLastDelimiter(text);\n\t\tconst pathPrefix = lastDelimiterIndex === -1 ? text : text.slice(lastDelimiterIndex + 1);\n\n\t\t// For forced extraction (Tab key), always return something\n\t\tif (forceExtract) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\t// For natural triggers, return if it looks like a path, ends with /, starts with ~/, .\n\t\t// Only return empty string if the text looks like it's starting a path context\n\t\tif (pathPrefix.includes(\"/\") || pathPrefix.startsWith(\".\") || pathPrefix.startsWith(\"~/\")) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\t// Return empty string only after a space (not for completely empty text)\n\t\t// Empty text should not trigger file suggestions - that's for forced Tab completion\n\t\tif (pathPrefix === \"\" && text.endsWith(\" \")) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Expand home directory (~/) to actual home path\n\tprivate expandHomePath(path: string): string {\n\t\tif (path.startsWith(\"~/\")) {\n\t\t\tconst expandedPath = join(homedir(), path.slice(2));\n\t\t\t// Preserve trailing slash if original path had one\n\t\t\treturn path.endsWith(\"/\") && !expandedPath.endsWith(\"/\") ? `${expandedPath}/` : expandedPath;\n\t\t} else if (path === \"~\") {\n\t\t\treturn homedir();\n\t\t}\n\t\treturn path;\n\t}\n\n\tprivate resolveScopedFuzzyQuery(rawQuery: string): { baseDir: string; query: string; displayBase: string } | null {\n\t\tconst slashIndex = rawQuery.lastIndexOf(\"/\");\n\t\tif (slashIndex === -1) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst displayBase = rawQuery.slice(0, slashIndex + 1);\n\t\tconst query = rawQuery.slice(slashIndex + 1);\n\n\t\tlet baseDir: string;\n\t\tif (displayBase.startsWith(\"~/\")) {\n\t\t\tbaseDir = this.expandHomePath(displayBase);\n\t\t} else if (displayBase.startsWith(\"/\")) {\n\t\t\tbaseDir = displayBase;\n\t\t} else {\n\t\t\tbaseDir = join(this.basePath, displayBase);\n\t\t}\n\n\t\ttry {\n\t\t\tif (!statSync(baseDir).isDirectory()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn { baseDir, query, displayBase };\n\t}\n\n\tprivate scopedPathForDisplay(displayBase: string, relativePath: string): string {\n\t\tif (displayBase === \"/\") {\n\t\t\treturn `/${relativePath}`;\n\t\t}\n\t\treturn `${displayBase}${relativePath}`;\n\t}\n\n\t// Get file/directory suggestions for a given path prefix\n\tprivate getFileSuggestions(prefix: string): AutocompleteItem[] {\n\t\ttry {\n\t\t\tlet searchDir: string;\n\t\t\tlet searchPrefix: string;\n\t\t\tconst { rawPrefix, isAtPrefix, isQuotedPrefix } = parsePathPrefix(prefix);\n\t\t\tlet expandedPrefix = rawPrefix;\n\n\t\t\t// Handle home directory expansion\n\t\t\tif (expandedPrefix.startsWith(\"~\")) {\n\t\t\t\texpandedPrefix = this.expandHomePath(expandedPrefix);\n\t\t\t}\n\n\t\t\tconst isRootPrefix =\n\t\t\t\trawPrefix === \"\" ||\n\t\t\t\trawPrefix === \"./\" ||\n\t\t\t\trawPrefix === \"../\" ||\n\t\t\t\trawPrefix === \"~\" ||\n\t\t\t\trawPrefix === \"~/\" ||\n\t\t\t\trawPrefix === \"/\" ||\n\t\t\t\t(isAtPrefix && rawPrefix === \"\");\n\n\t\t\tif (isRootPrefix) {\n\t\t\t\t// Complete from specified position\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = expandedPrefix;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, expandedPrefix);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = \"\";\n\t\t\t} else if (rawPrefix.endsWith(\"/\")) {\n\t\t\t\t// If prefix ends with /, show contents of that directory\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = expandedPrefix;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, expandedPrefix);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = \"\";\n\t\t\t} else {\n\t\t\t\t// Split into directory and file prefix\n\t\t\t\tconst dir = dirname(expandedPrefix);\n\t\t\t\tconst file = basename(expandedPrefix);\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = dir;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, dir);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = file;\n\t\t\t}\n\n\t\t\tconst entries = readdirSync(searchDir, { withFileTypes: true });\n\t\t\tconst suggestions: AutocompleteItem[] = [];\n\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (!entry.name.toLowerCase().startsWith(searchPrefix.toLowerCase())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Check if entry is a directory (or a symlink pointing to a directory)\n\t\t\t\tlet isDirectory = entry.isDirectory();\n\t\t\t\tif (!isDirectory && entry.isSymbolicLink()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst fullPath = join(searchDir, entry.name);\n\t\t\t\t\t\tisDirectory = statSync(fullPath).isDirectory();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Broken symlink or permission error - treat as file\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet relativePath: string;\n\t\t\t\tconst name = entry.name;\n\t\t\t\tconst displayPrefix = rawPrefix;\n\n\t\t\t\tif (displayPrefix.endsWith(\"/\")) {\n\t\t\t\t\t// If prefix ends with /, append entry to the prefix\n\t\t\t\t\trelativePath = displayPrefix + name;\n\t\t\t\t} else if (displayPrefix.includes(\"/\")) {\n\t\t\t\t\t// Preserve ~/ format for home directory paths\n\t\t\t\t\tif (displayPrefix.startsWith(\"~/\")) {\n\t\t\t\t\t\tconst homeRelativeDir = displayPrefix.slice(2); // Remove ~/\n\t\t\t\t\t\tconst dir = dirname(homeRelativeDir);\n\t\t\t\t\t\trelativePath = `~/${dir === \".\" ? name : join(dir, name)}`;\n\t\t\t\t\t} else if (displayPrefix.startsWith(\"/\")) {\n\t\t\t\t\t\t// Absolute path - construct properly\n\t\t\t\t\t\tconst dir = dirname(displayPrefix);\n\t\t\t\t\t\tif (dir === \"/\") {\n\t\t\t\t\t\t\trelativePath = `/${name}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trelativePath = `${dir}/${name}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelativePath = join(dirname(displayPrefix), name);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// For standalone entries, preserve ~/ if original prefix was ~/\n\t\t\t\t\tif (displayPrefix.startsWith(\"~\")) {\n\t\t\t\t\t\trelativePath = `~/${name}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelativePath = name;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst pathValue = isDirectory ? `${relativePath}/` : relativePath;\n\t\t\t\tconst value = buildCompletionValue(pathValue, {\n\t\t\t\t\tisDirectory,\n\t\t\t\t\tisAtPrefix,\n\t\t\t\t\tisQuotedPrefix,\n\t\t\t\t});\n\n\t\t\t\tsuggestions.push({\n\t\t\t\t\tvalue,\n\t\t\t\t\tlabel: name + (isDirectory ? \"/\" : \"\"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Sort directories first, then alphabetically\n\t\t\tsuggestions.sort((a, b) => {\n\t\t\t\tconst aIsDir = a.value.endsWith(\"/\");\n\t\t\t\tconst bIsDir = b.value.endsWith(\"/\");\n\t\t\t\tif (aIsDir && !bIsDir) return -1;\n\t\t\t\tif (!aIsDir && bIsDir) return 1;\n\t\t\t\treturn a.label.localeCompare(b.label);\n\t\t\t});\n\n\t\t\treturn suggestions;\n\t\t} catch (_e) {\n\t\t\t// Directory doesn't exist or not accessible\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// Score an entry against the query (higher = better match)\n\t// isDirectory adds bonus to prioritize folders\n\tprivate scoreEntry(filePath: string, query: string, isDirectory: boolean): number {\n\t\tconst fileName = basename(filePath);\n\t\tconst lowerFileName = fileName.toLowerCase();\n\t\tconst lowerQuery = query.toLowerCase();\n\n\t\tlet score = 0;\n\n\t\t// Exact filename match (highest)\n\t\tif (lowerFileName === lowerQuery) score = 100;\n\t\t// Filename starts with query\n\t\telse if (lowerFileName.startsWith(lowerQuery)) score = 80;\n\t\t// Substring match in filename\n\t\telse if (lowerFileName.includes(lowerQuery)) score = 50;\n\t\t// Substring match in full path\n\t\telse if (filePath.toLowerCase().includes(lowerQuery)) score = 30;\n\n\t\t// Directories get a bonus to appear first\n\t\tif (isDirectory && score > 0) score += 10;\n\n\t\treturn score;\n\t}\n\n\t// Fuzzy file search using fd (fast, respects .gitignore)\n\tprivate getFuzzyFileSuggestions(query: string, options: { isQuotedPrefix: boolean }): AutocompleteItem[] {\n\t\tif (!this.fdPath) {\n\t\t\t// fd not available, return empty results\n\t\t\treturn [];\n\t\t}\n\n\t\ttry {\n\t\t\tconst scopedQuery = this.resolveScopedFuzzyQuery(query);\n\t\t\tconst fdBaseDir = scopedQuery?.baseDir ?? this.basePath;\n\t\t\tconst fdQuery = scopedQuery?.query ?? query;\n\t\t\tconst entries = walkDirectoryWithFd(fdBaseDir, this.fdPath, fdQuery, 100);\n\n\t\t\t// Score entries\n\t\t\tconst scoredEntries = entries\n\t\t\t\t.map((entry) => ({\n\t\t\t\t\t...entry,\n\t\t\t\t\tscore: fdQuery ? this.scoreEntry(entry.path, fdQuery, entry.isDirectory) : 1,\n\t\t\t\t}))\n\t\t\t\t.filter((entry) => entry.score > 0);\n\n\t\t\t// Sort by score (descending) and take top 20\n\t\t\tscoredEntries.sort((a, b) => b.score - a.score);\n\t\t\tconst topEntries = scoredEntries.slice(0, 20);\n\n\t\t\t// Build suggestions\n\t\t\tconst suggestions: AutocompleteItem[] = [];\n\t\t\tfor (const { path: entryPath, isDirectory } of topEntries) {\n\t\t\t\t// fd already includes trailing / for directories\n\t\t\t\tconst pathWithoutSlash = isDirectory ? entryPath.slice(0, -1) : entryPath;\n\t\t\t\tconst displayPath = scopedQuery\n\t\t\t\t\t? this.scopedPathForDisplay(scopedQuery.displayBase, pathWithoutSlash)\n\t\t\t\t\t: pathWithoutSlash;\n\t\t\t\tconst entryName = basename(pathWithoutSlash);\n\t\t\t\tconst completionPath = isDirectory ? `${displayPath}/` : displayPath;\n\t\t\t\tconst value = buildCompletionValue(completionPath, {\n\t\t\t\t\tisDirectory,\n\t\t\t\t\tisAtPrefix: true,\n\t\t\t\t\tisQuotedPrefix: options.isQuotedPrefix,\n\t\t\t\t});\n\n\t\t\t\tsuggestions.push({\n\t\t\t\t\tvalue,\n\t\t\t\t\tlabel: entryName + (isDirectory ? \"/\" : \"\"),\n\t\t\t\t\tdescription: displayPath,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn suggestions;\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// Force file completion (called on Tab key) - always returns suggestions\n\tgetForceFileSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): { items: AutocompleteItem[]; prefix: string } | null {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Don't trigger if we're typing a slash command at the start of the line\n\t\tif (textBeforeCursor.trim().startsWith(\"/\") && !textBeforeCursor.trim().includes(\" \")) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Force extract path prefix - this will always return something\n\t\tconst pathMatch = this.extractPathPrefix(textBeforeCursor, true);\n\t\tif (pathMatch !== null) {\n\t\t\tconst suggestions = this.getFileSuggestions(pathMatch);\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: pathMatch,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Check if we should trigger file completion (called on Tab key)\n\tshouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Don't trigger if we're typing a slash command at the start of the line\n\t\tif (textBeforeCursor.trim().startsWith(\"/\") && !textBeforeCursor.trim().includes(\" \")) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../src/autocomplete.ts"],"names":[],"mappings":"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","sourcesContent":["import { readdirSync, statSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join } from \"path\";\nimport { fuzzyFind } from \"@gsd/native/fd\";\nimport { fuzzyFilter } from \"./fuzzy.js\";\n\nconst PATH_DELIMITERS = new Set([\" \", \"\\t\", '\"', \"'\", \"=\"]);\n\nfunction findLastDelimiter(text: string): number {\n\tfor (let i = text.length - 1; i >= 0; i -= 1) {\n\t\tif (PATH_DELIMITERS.has(text[i] ?? \"\")) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction findUnclosedQuoteStart(text: string): number | null {\n\tlet inQuotes = false;\n\tlet quoteStart = -1;\n\n\tfor (let i = 0; i < text.length; i += 1) {\n\t\tif (text[i] === '\"') {\n\t\t\tinQuotes = !inQuotes;\n\t\t\tif (inQuotes) {\n\t\t\t\tquoteStart = i;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn inQuotes ? quoteStart : null;\n}\n\nfunction isTokenStart(text: string, index: number): boolean {\n\treturn index === 0 || PATH_DELIMITERS.has(text[index - 1] ?? \"\");\n}\n\nfunction extractQuotedPrefix(text: string): string | null {\n\tconst quoteStart = findUnclosedQuoteStart(text);\n\tif (quoteStart === null) {\n\t\treturn null;\n\t}\n\n\tif (quoteStart > 0 && text[quoteStart - 1] === \"@\") {\n\t\tif (!isTokenStart(text, quoteStart - 1)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn text.slice(quoteStart - 1);\n\t}\n\n\tif (!isTokenStart(text, quoteStart)) {\n\t\treturn null;\n\t}\n\n\treturn text.slice(quoteStart);\n}\n\nfunction parsePathPrefix(prefix: string): { rawPrefix: string; isAtPrefix: boolean; isQuotedPrefix: boolean } {\n\tif (prefix.startsWith('@\"')) {\n\t\treturn { rawPrefix: prefix.slice(2), isAtPrefix: true, isQuotedPrefix: true };\n\t}\n\tif (prefix.startsWith('\"')) {\n\t\treturn { rawPrefix: prefix.slice(1), isAtPrefix: false, isQuotedPrefix: true };\n\t}\n\tif (prefix.startsWith(\"@\")) {\n\t\treturn { rawPrefix: prefix.slice(1), isAtPrefix: true, isQuotedPrefix: false };\n\t}\n\treturn { rawPrefix: prefix, isAtPrefix: false, isQuotedPrefix: false };\n}\n\nfunction buildCompletionValue(\n\tpath: string,\n\toptions: { isDirectory: boolean; isAtPrefix: boolean; isQuotedPrefix: boolean },\n): string {\n\tconst needsQuotes = options.isQuotedPrefix || path.includes(\" \");\n\tconst prefix = options.isAtPrefix ? \"@\" : \"\";\n\n\tif (!needsQuotes) {\n\t\treturn `${prefix}${path}`;\n\t}\n\n\tconst openQuote = `${prefix}\"`;\n\tconst closeQuote = '\"';\n\treturn `${openQuote}${path}${closeQuote}`;\n}\n\nexport interface AutocompleteItem {\n\tvalue: string;\n\tlabel: string;\n\tdescription?: string;\n}\n\nexport interface SlashCommand {\n\tname: string;\n\tdescription?: string;\n\t// Function to get argument completions for this command\n\t// Returns null if no argument completion is available\n\tgetArgumentCompletions?(argumentPrefix: string): AutocompleteItem[] | null;\n}\n\nexport interface AutocompleteProvider {\n\t// Get autocomplete suggestions for current text/cursor position\n\t// Returns null if no suggestions available\n\tgetSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): {\n\t\titems: AutocompleteItem[];\n\t\tprefix: string; // What we're matching against (e.g., \"/\" or \"src/\")\n\t} | null;\n\n\t// Apply the selected item\n\t// Returns the new text and cursor position\n\tapplyCompletion(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t\titem: AutocompleteItem,\n\t\tprefix: string,\n\t): {\n\t\tlines: string[];\n\t\tcursorLine: number;\n\t\tcursorCol: number;\n\t};\n}\n\n// Combined provider that handles both slash commands and file paths\nexport class CombinedAutocompleteProvider implements AutocompleteProvider {\n\tprivate commands: (SlashCommand | AutocompleteItem)[];\n\tprivate basePath: string;\n\n\tconstructor(\n\t\tcommands: (SlashCommand | AutocompleteItem)[] = [],\n\t\tbasePath: string = process.cwd(),\n\t) {\n\t\tthis.commands = commands;\n\t\tthis.basePath = basePath;\n\t}\n\n\tgetSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): { items: AutocompleteItem[]; prefix: string } | null {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Check for @ file reference (fuzzy search) - must be after a delimiter or at start\n\t\tconst atPrefix = this.extractAtPrefix(textBeforeCursor);\n\t\tif (atPrefix) {\n\t\t\tconst { rawPrefix, isQuotedPrefix } = parsePathPrefix(atPrefix);\n\t\t\tconst suggestions = this.getFuzzyFileSuggestions(rawPrefix, { isQuotedPrefix: isQuotedPrefix });\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: atPrefix,\n\t\t\t};\n\t\t}\n\n\t\t// Check for slash commands\n\t\tif (textBeforeCursor.startsWith(\"/\")) {\n\t\t\tconst spaceIndex = textBeforeCursor.indexOf(\" \");\n\n\t\t\tif (spaceIndex === -1) {\n\t\t\t\t// No space yet - complete command names with fuzzy matching\n\t\t\t\tconst prefix = textBeforeCursor.slice(1); // Remove the \"/\"\n\t\t\t\tconst commandItems = this.commands.map((cmd) => ({\n\t\t\t\t\tname: \"name\" in cmd ? cmd.name : cmd.value,\n\t\t\t\t\tlabel: \"name\" in cmd ? cmd.name : cmd.label,\n\t\t\t\t\tdescription: cmd.description,\n\t\t\t\t}));\n\n\t\t\t\tconst filtered = fuzzyFilter(commandItems, prefix, (item) => item.name).map((item) => ({\n\t\t\t\t\tvalue: item.name,\n\t\t\t\t\tlabel: item.label,\n\t\t\t\t\t...(item.description && { description: item.description }),\n\t\t\t\t}));\n\n\t\t\t\tif (filtered.length === 0) return null;\n\n\t\t\t\treturn {\n\t\t\t\t\titems: filtered,\n\t\t\t\t\tprefix: textBeforeCursor,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Space found - complete command arguments\n\t\t\t\tconst commandName = textBeforeCursor.slice(1, spaceIndex); // Command without \"/\"\n\t\t\t\tconst argumentText = textBeforeCursor.slice(spaceIndex + 1); // Text after space\n\n\t\t\t\tconst command = this.commands.find((cmd) => {\n\t\t\t\t\tconst name = \"name\" in cmd ? cmd.name : cmd.value;\n\t\t\t\t\treturn name === commandName;\n\t\t\t\t});\n\t\t\t\tif (!command || !(\"getArgumentCompletions\" in command) || !command.getArgumentCompletions) {\n\t\t\t\t\treturn null; // No argument completion for this command\n\t\t\t\t}\n\n\t\t\t\tconst argumentSuggestions = command.getArgumentCompletions(argumentText);\n\t\t\t\tif (!argumentSuggestions || argumentSuggestions.length === 0) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\titems: argumentSuggestions,\n\t\t\t\t\tprefix: argumentText,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check for file paths - triggered by Tab or if we detect a path pattern\n\t\tconst pathMatch = this.extractPathPrefix(textBeforeCursor, false);\n\n\t\tif (pathMatch !== null) {\n\t\t\tconst suggestions = this.getFileSuggestions(pathMatch);\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\t// Check if we have an exact match that is a directory\n\t\t\t// In that case, we might want to return suggestions for the directory content instead\n\t\t\t// But only if the prefix ends with /\n\t\t\tif (suggestions.length === 1 && suggestions[0]?.value === pathMatch && !pathMatch.endsWith(\"/\")) {\n\t\t\t\t// Exact match found (e.g. user typed \"src\" and \"src/\" is the only match)\n\t\t\t\t// We still return it so user can select it and add /\n\t\t\t\treturn {\n\t\t\t\t\titems: suggestions,\n\t\t\t\t\tprefix: pathMatch,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: pathMatch,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tapplyCompletion(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t\titem: AutocompleteItem,\n\t\tprefix: string,\n\t): { lines: string[]; cursorLine: number; cursorCol: number } {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst beforePrefix = currentLine.slice(0, cursorCol - prefix.length);\n\t\tconst afterCursor = currentLine.slice(cursorCol);\n\t\tconst isQuotedPrefix = prefix.startsWith('\"') || prefix.startsWith('@\"');\n\t\tconst hasLeadingQuoteAfterCursor = afterCursor.startsWith('\"');\n\t\tconst hasTrailingQuoteInItem = item.value.endsWith('\"');\n\t\tconst adjustedAfterCursor =\n\t\t\tisQuotedPrefix && hasTrailingQuoteInItem && hasLeadingQuoteAfterCursor ? afterCursor.slice(1) : afterCursor;\n\n\t\t// Check if we're completing a slash command (prefix starts with \"/\" but NOT a file path)\n\t\t// Slash commands are at the start of the line and don't contain path separators after the first /\n\t\tconst isSlashCommand = prefix.startsWith(\"/\") && beforePrefix.trim() === \"\" && !prefix.slice(1).includes(\"/\");\n\t\tif (isSlashCommand) {\n\t\t\t// This is a command name completion\n\t\t\tconst newLine = `${beforePrefix}/${item.value} ${adjustedAfterCursor}`;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + item.value.length + 2, // +2 for \"/\" and space\n\t\t\t};\n\t\t}\n\n\t\t// Check if we're completing a file attachment (prefix starts with \"@\")\n\t\tif (prefix.startsWith(\"@\")) {\n\t\t\t// This is a file attachment completion\n\t\t\t// Don't add space after directories so user can continue autocompleting\n\t\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\t\tconst suffix = isDirectory ? \"\" : \" \";\n\t\t\tconst newLine = `${beforePrefix + item.value}${suffix}${adjustedAfterCursor}`;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + cursorOffset + suffix.length,\n\t\t\t};\n\t\t}\n\n\t\t// Check if we're in a slash command context (beforePrefix contains \"/command \")\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\t\tif (textBeforeCursor.includes(\"/\") && textBeforeCursor.includes(\" \")) {\n\t\t\t// This is likely a command argument completion\n\t\t\tconst newLine = beforePrefix + item.value + adjustedAfterCursor;\n\t\t\tconst newLines = [...lines];\n\t\t\tnewLines[cursorLine] = newLine;\n\n\t\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\t\treturn {\n\t\t\t\tlines: newLines,\n\t\t\t\tcursorLine,\n\t\t\t\tcursorCol: beforePrefix.length + cursorOffset,\n\t\t\t};\n\t\t}\n\n\t\t// For file paths, complete the path\n\t\tconst newLine = beforePrefix + item.value + adjustedAfterCursor;\n\t\tconst newLines = [...lines];\n\t\tnewLines[cursorLine] = newLine;\n\n\t\tconst isDirectory = item.label.endsWith(\"/\");\n\t\tconst hasTrailingQuote = item.value.endsWith('\"');\n\t\tconst cursorOffset = isDirectory && hasTrailingQuote ? item.value.length - 1 : item.value.length;\n\n\t\treturn {\n\t\t\tlines: newLines,\n\t\t\tcursorLine,\n\t\t\tcursorCol: beforePrefix.length + cursorOffset,\n\t\t};\n\t}\n\n\t// Extract @ prefix for fuzzy file suggestions\n\tprivate extractAtPrefix(text: string): string | null {\n\t\tconst quotedPrefix = extractQuotedPrefix(text);\n\t\tif (quotedPrefix?.startsWith('@\"')) {\n\t\t\treturn quotedPrefix;\n\t\t}\n\n\t\tconst lastDelimiterIndex = findLastDelimiter(text);\n\t\tconst tokenStart = lastDelimiterIndex === -1 ? 0 : lastDelimiterIndex + 1;\n\n\t\tif (text[tokenStart] === \"@\") {\n\t\t\treturn text.slice(tokenStart);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Extract a path-like prefix from the text before cursor\n\tprivate extractPathPrefix(text: string, forceExtract: boolean = false): string | null {\n\t\tconst quotedPrefix = extractQuotedPrefix(text);\n\t\tif (quotedPrefix) {\n\t\t\treturn quotedPrefix;\n\t\t}\n\n\t\tconst lastDelimiterIndex = findLastDelimiter(text);\n\t\tconst pathPrefix = lastDelimiterIndex === -1 ? text : text.slice(lastDelimiterIndex + 1);\n\n\t\t// For forced extraction (Tab key), always return something\n\t\tif (forceExtract) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\t// For natural triggers, return if it looks like a path, ends with /, starts with ~/, .\n\t\t// Only return empty string if the text looks like it's starting a path context\n\t\tif (pathPrefix.includes(\"/\") || pathPrefix.startsWith(\".\") || pathPrefix.startsWith(\"~/\")) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\t// Return empty string only after a space (not for completely empty text)\n\t\t// Empty text should not trigger file suggestions - that's for forced Tab completion\n\t\tif (pathPrefix === \"\" && text.endsWith(\" \")) {\n\t\t\treturn pathPrefix;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Expand home directory (~/) to actual home path\n\tprivate expandHomePath(path: string): string {\n\t\tif (path.startsWith(\"~/\")) {\n\t\t\tconst expandedPath = join(homedir(), path.slice(2));\n\t\t\t// Preserve trailing slash if original path had one\n\t\t\treturn path.endsWith(\"/\") && !expandedPath.endsWith(\"/\") ? `${expandedPath}/` : expandedPath;\n\t\t} else if (path === \"~\") {\n\t\t\treturn homedir();\n\t\t}\n\t\treturn path;\n\t}\n\n\tprivate resolveScopedFuzzyQuery(rawQuery: string): { baseDir: string; query: string; displayBase: string } | null {\n\t\tconst slashIndex = rawQuery.lastIndexOf(\"/\");\n\t\tif (slashIndex === -1) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst displayBase = rawQuery.slice(0, slashIndex + 1);\n\t\tconst query = rawQuery.slice(slashIndex + 1);\n\n\t\tlet baseDir: string;\n\t\tif (displayBase.startsWith(\"~/\")) {\n\t\t\tbaseDir = this.expandHomePath(displayBase);\n\t\t} else if (displayBase.startsWith(\"/\")) {\n\t\t\tbaseDir = displayBase;\n\t\t} else {\n\t\t\tbaseDir = join(this.basePath, displayBase);\n\t\t}\n\n\t\ttry {\n\t\t\tif (!statSync(baseDir).isDirectory()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn { baseDir, query, displayBase };\n\t}\n\n\tprivate scopedPathForDisplay(displayBase: string, relativePath: string): string {\n\t\tif (displayBase === \"/\") {\n\t\t\treturn `/${relativePath}`;\n\t\t}\n\t\treturn `${displayBase}${relativePath}`;\n\t}\n\n\t// Get file/directory suggestions for a given path prefix\n\tprivate getFileSuggestions(prefix: string): AutocompleteItem[] {\n\t\ttry {\n\t\t\tlet searchDir: string;\n\t\t\tlet searchPrefix: string;\n\t\t\tconst { rawPrefix, isAtPrefix, isQuotedPrefix } = parsePathPrefix(prefix);\n\t\t\tlet expandedPrefix = rawPrefix;\n\n\t\t\t// Handle home directory expansion\n\t\t\tif (expandedPrefix.startsWith(\"~\")) {\n\t\t\t\texpandedPrefix = this.expandHomePath(expandedPrefix);\n\t\t\t}\n\n\t\t\tconst isRootPrefix =\n\t\t\t\trawPrefix === \"\" ||\n\t\t\t\trawPrefix === \"./\" ||\n\t\t\t\trawPrefix === \"../\" ||\n\t\t\t\trawPrefix === \"~\" ||\n\t\t\t\trawPrefix === \"~/\" ||\n\t\t\t\trawPrefix === \"/\" ||\n\t\t\t\t(isAtPrefix && rawPrefix === \"\");\n\n\t\t\tif (isRootPrefix) {\n\t\t\t\t// Complete from specified position\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = expandedPrefix;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, expandedPrefix);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = \"\";\n\t\t\t} else if (rawPrefix.endsWith(\"/\")) {\n\t\t\t\t// If prefix ends with /, show contents of that directory\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = expandedPrefix;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, expandedPrefix);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = \"\";\n\t\t\t} else {\n\t\t\t\t// Split into directory and file prefix\n\t\t\t\tconst dir = dirname(expandedPrefix);\n\t\t\t\tconst file = basename(expandedPrefix);\n\t\t\t\tif (rawPrefix.startsWith(\"~\") || expandedPrefix.startsWith(\"/\")) {\n\t\t\t\t\tsearchDir = dir;\n\t\t\t\t} else {\n\t\t\t\t\tsearchDir = join(this.basePath, dir);\n\t\t\t\t}\n\t\t\t\tsearchPrefix = file;\n\t\t\t}\n\n\t\t\tconst entries = readdirSync(searchDir, { withFileTypes: true });\n\t\t\tconst suggestions: AutocompleteItem[] = [];\n\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (!entry.name.toLowerCase().startsWith(searchPrefix.toLowerCase())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Check if entry is a directory (or a symlink pointing to a directory)\n\t\t\t\tlet isDirectory = entry.isDirectory();\n\t\t\t\tif (!isDirectory && entry.isSymbolicLink()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst fullPath = join(searchDir, entry.name);\n\t\t\t\t\t\tisDirectory = statSync(fullPath).isDirectory();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Broken symlink or permission error - treat as file\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet relativePath: string;\n\t\t\t\tconst name = entry.name;\n\t\t\t\tconst displayPrefix = rawPrefix;\n\n\t\t\t\tif (displayPrefix.endsWith(\"/\")) {\n\t\t\t\t\t// If prefix ends with /, append entry to the prefix\n\t\t\t\t\trelativePath = displayPrefix + name;\n\t\t\t\t} else if (displayPrefix.includes(\"/\")) {\n\t\t\t\t\t// Preserve ~/ format for home directory paths\n\t\t\t\t\tif (displayPrefix.startsWith(\"~/\")) {\n\t\t\t\t\t\tconst homeRelativeDir = displayPrefix.slice(2); // Remove ~/\n\t\t\t\t\t\tconst dir = dirname(homeRelativeDir);\n\t\t\t\t\t\trelativePath = `~/${dir === \".\" ? name : join(dir, name)}`;\n\t\t\t\t\t} else if (displayPrefix.startsWith(\"/\")) {\n\t\t\t\t\t\t// Absolute path - construct properly\n\t\t\t\t\t\tconst dir = dirname(displayPrefix);\n\t\t\t\t\t\tif (dir === \"/\") {\n\t\t\t\t\t\t\trelativePath = `/${name}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trelativePath = `${dir}/${name}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelativePath = join(dirname(displayPrefix), name);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// For standalone entries, preserve ~/ if original prefix was ~/\n\t\t\t\t\tif (displayPrefix.startsWith(\"~\")) {\n\t\t\t\t\t\trelativePath = `~/${name}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelativePath = name;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst pathValue = isDirectory ? `${relativePath}/` : relativePath;\n\t\t\t\tconst value = buildCompletionValue(pathValue, {\n\t\t\t\t\tisDirectory,\n\t\t\t\t\tisAtPrefix,\n\t\t\t\t\tisQuotedPrefix,\n\t\t\t\t});\n\n\t\t\t\tsuggestions.push({\n\t\t\t\t\tvalue,\n\t\t\t\t\tlabel: name + (isDirectory ? \"/\" : \"\"),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Sort directories first, then alphabetically\n\t\t\tsuggestions.sort((a, b) => {\n\t\t\t\tconst aIsDir = a.value.endsWith(\"/\");\n\t\t\t\tconst bIsDir = b.value.endsWith(\"/\");\n\t\t\t\tif (aIsDir && !bIsDir) return -1;\n\t\t\t\tif (!aIsDir && bIsDir) return 1;\n\t\t\t\treturn a.label.localeCompare(b.label);\n\t\t\t});\n\n\t\t\treturn suggestions;\n\t\t} catch (_e) {\n\t\t\t// Directory doesn't exist or not accessible\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// Fuzzy file search using the native fd module (fast, respects .gitignore)\n\tprivate getFuzzyFileSuggestions(query: string, options: { isQuotedPrefix: boolean }): AutocompleteItem[] {\n\t\ttry {\n\t\t\tconst scopedQuery = this.resolveScopedFuzzyQuery(query);\n\t\t\tconst searchPath = scopedQuery?.baseDir ?? this.basePath;\n\t\t\tconst searchQuery = scopedQuery?.query ?? query;\n\n\t\t\tconst result = fuzzyFind({\n\t\t\t\tquery: searchQuery,\n\t\t\t\tpath: searchPath,\n\t\t\t\thidden: true,\n\t\t\t\tgitignore: true,\n\t\t\t\tmaxResults: 100,\n\t\t\t});\n\n\t\t\t// Take top 20 matches (already sorted by score descending from native module)\n\t\t\tconst topMatches = result.matches.slice(0, 20);\n\n\t\t\t// Build suggestions\n\t\t\tconst suggestions: AutocompleteItem[] = [];\n\t\t\tfor (const { path: entryPath, isDirectory } of topMatches) {\n\t\t\t\t// Native module includes trailing / for directories\n\t\t\t\tconst pathWithoutSlash = isDirectory ? entryPath.slice(0, -1) : entryPath;\n\t\t\t\tconst displayPath = scopedQuery\n\t\t\t\t\t? this.scopedPathForDisplay(scopedQuery.displayBase, pathWithoutSlash)\n\t\t\t\t\t: pathWithoutSlash;\n\t\t\t\tconst entryName = basename(pathWithoutSlash);\n\t\t\t\tconst completionPath = isDirectory ? `${displayPath}/` : displayPath;\n\t\t\t\tconst value = buildCompletionValue(completionPath, {\n\t\t\t\t\tisDirectory,\n\t\t\t\t\tisAtPrefix: true,\n\t\t\t\t\tisQuotedPrefix: options.isQuotedPrefix,\n\t\t\t\t});\n\n\t\t\t\tsuggestions.push({\n\t\t\t\t\tvalue,\n\t\t\t\t\tlabel: entryName + (isDirectory ? \"/\" : \"\"),\n\t\t\t\t\tdescription: displayPath,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn suggestions;\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// Force file completion (called on Tab key) - always returns suggestions\n\tgetForceFileSuggestions(\n\t\tlines: string[],\n\t\tcursorLine: number,\n\t\tcursorCol: number,\n\t): { items: AutocompleteItem[]; prefix: string } | null {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Don't trigger if we're typing a slash command at the start of the line\n\t\tif (textBeforeCursor.trim().startsWith(\"/\") && !textBeforeCursor.trim().includes(\" \")) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Force extract path prefix - this will always return something\n\t\tconst pathMatch = this.extractPathPrefix(textBeforeCursor, true);\n\t\tif (pathMatch !== null) {\n\t\t\tconst suggestions = this.getFileSuggestions(pathMatch);\n\t\t\tif (suggestions.length === 0) return null;\n\n\t\t\treturn {\n\t\t\t\titems: suggestions,\n\t\t\t\tprefix: pathMatch,\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t// Check if we should trigger file completion (called on Tab key)\n\tshouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean {\n\t\tconst currentLine = lines[cursorLine] || \"\";\n\t\tconst textBeforeCursor = currentLine.slice(0, cursorCol);\n\n\t\t// Don't trigger if we're typing a slash command at the start of the line\n\t\tif (textBeforeCursor.trim().startsWith(\"/\") && !textBeforeCursor.trim().includes(\" \")) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n"]}
@@ -17,9 +17,16 @@ export declare class Image implements Component {
17
17
  private theme;
18
18
  private options;
19
19
  private imageId?;
20
+ private dimensionsResolved;
21
+ private onDimensionsResolved?;
20
22
  private cachedLines?;
21
23
  private cachedWidth?;
22
24
  constructor(base64Data: string, mimeType: string, theme: ImageTheme, options?: ImageOptions, dimensions?: ImageDimensions);
25
+ /**
26
+ * Register a callback invoked when async dimension parsing completes.
27
+ * Useful for triggering a re-render after the Image updates its layout.
28
+ */
29
+ setOnDimensionsResolved(cb: () => void): void;
23
30
  /** Get the Kitty image ID used by this image (if any). */
24
31
  getImageId(): number | undefined;
25
32
  invalidate(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/components/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,eAAe,EAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,UAAU;IAC1B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,KAAM,YAAW,SAAS;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAG5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,YAAiB,EAC1B,UAAU,CAAC,EAAE,eAAe;IAU7B,0DAA0D;IAC1D,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CA8C/B"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/components/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,eAAe,EAGpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,UAAU;IAC1B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,KAAM,YAAW,SAAS;IACtC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAAC,CAAa;IAE1C,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAG5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,YAAiB,EAC1B,UAAU,CAAC,EAAE,eAAe;IAsB7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAI7C,0DAA0D;IAC1D,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,UAAU,IAAI,IAAI;IAKlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CA8C/B"}
@@ -1,12 +1,31 @@
1
1
  import { getCapabilities, getImageDimensions, imageFallback, renderImage, } from "../terminal-image.js";
2
2
  export class Image {
3
3
  constructor(base64Data, mimeType, theme, options = {}, dimensions) {
4
+ this.dimensionsResolved = false;
4
5
  this.base64Data = base64Data;
5
6
  this.mimeType = mimeType;
6
7
  this.theme = theme;
7
8
  this.options = options;
8
- this.dimensions = dimensions || getImageDimensions(base64Data, mimeType) || { widthPx: 800, heightPx: 600 };
9
+ this.dimensions = dimensions || { widthPx: 800, heightPx: 600 };
10
+ this.dimensionsResolved = !!dimensions;
9
11
  this.imageId = options.imageId;
12
+ if (!dimensions) {
13
+ getImageDimensions(base64Data).then((dims) => {
14
+ if (dims) {
15
+ this.dimensions = dims;
16
+ this.dimensionsResolved = true;
17
+ this.invalidate();
18
+ this.onDimensionsResolved?.();
19
+ }
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Register a callback invoked when async dimension parsing completes.
25
+ * Useful for triggering a re-render after the Image updates its layout.
26
+ */
27
+ setOnDimensionsResolved(cb) {
28
+ this.onDimensionsResolved = cb;
10
29
  }
11
30
  /** Get the Kitty image ID used by this image (if any). */
12
31
  getImageId() {
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/components/image.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tgetCapabilities,\n\tgetImageDimensions,\n\ttype ImageDimensions,\n\timageFallback,\n\trenderImage,\n} from \"../terminal-image.js\";\nimport type { Component } from \"../tui.js\";\n\nexport interface ImageTheme {\n\tfallbackColor: (str: string) => string;\n}\n\nexport interface ImageOptions {\n\tmaxWidthCells?: number;\n\tmaxHeightCells?: number;\n\tfilename?: string;\n\t/** Kitty image ID. If provided, reuses this ID (for animations/updates). */\n\timageId?: number;\n}\n\nexport class Image implements Component {\n\tprivate base64Data: string;\n\tprivate mimeType: string;\n\tprivate dimensions: ImageDimensions;\n\tprivate theme: ImageTheme;\n\tprivate options: ImageOptions;\n\tprivate imageId?: number;\n\n\tprivate cachedLines?: string[];\n\tprivate cachedWidth?: number;\n\n\tconstructor(\n\t\tbase64Data: string,\n\t\tmimeType: string,\n\t\ttheme: ImageTheme,\n\t\toptions: ImageOptions = {},\n\t\tdimensions?: ImageDimensions,\n\t) {\n\t\tthis.base64Data = base64Data;\n\t\tthis.mimeType = mimeType;\n\t\tthis.theme = theme;\n\t\tthis.options = options;\n\t\tthis.dimensions = dimensions || getImageDimensions(base64Data, mimeType) || { widthPx: 800, heightPx: 600 };\n\t\tthis.imageId = options.imageId;\n\t}\n\n\t/** Get the Kitty image ID used by this image (if any). */\n\tgetImageId(): number | undefined {\n\t\treturn this.imageId;\n\t}\n\n\tinvalidate(): void {\n\t\tthis.cachedLines = undefined;\n\t\tthis.cachedWidth = undefined;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (this.cachedLines && this.cachedWidth === width) {\n\t\t\treturn this.cachedLines;\n\t\t}\n\n\t\tconst maxWidth = Math.min(width - 2, this.options.maxWidthCells ?? 60);\n\n\t\tconst caps = getCapabilities();\n\t\tlet lines: string[];\n\n\t\tif (caps.images) {\n\t\t\tconst result = renderImage(this.base64Data, this.dimensions, {\n\t\t\t\tmaxWidthCells: maxWidth,\n\t\t\t\timageId: this.imageId,\n\t\t\t});\n\n\t\t\tif (result) {\n\t\t\t\t// Store the image ID for later cleanup\n\t\t\t\tif (result.imageId) {\n\t\t\t\t\tthis.imageId = result.imageId;\n\t\t\t\t}\n\n\t\t\t\t// Return `rows` lines so TUI accounts for image height\n\t\t\t\t// First (rows-1) lines are empty (TUI clears them)\n\t\t\t\t// Last line: move cursor back up, then output image sequence\n\t\t\t\tlines = [];\n\t\t\t\tfor (let i = 0; i < result.rows - 1; i++) {\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t\t// Move cursor up to first row, then output image\n\t\t\t\tconst moveUp = result.rows > 1 ? `\\x1b[${result.rows - 1}A` : \"\";\n\t\t\t\tlines.push(moveUp + result.sequence);\n\t\t\t} else {\n\t\t\t\tconst fallback = imageFallback(this.mimeType, this.dimensions, this.options.filename);\n\t\t\t\tlines = [this.theme.fallbackColor(fallback)];\n\t\t\t}\n\t\t} else {\n\t\t\tconst fallback = imageFallback(this.mimeType, this.dimensions, this.options.filename);\n\t\t\tlines = [this.theme.fallbackColor(fallback)];\n\t\t}\n\n\t\tthis.cachedLines = lines;\n\t\tthis.cachedWidth = width;\n\n\t\treturn lines;\n\t}\n}\n"]}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/components/image.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,kBAAkB,EAElB,aAAa,EACb,WAAW,GACX,MAAM,sBAAsB,CAAC;AAe9B,MAAM,OAAO,KAAK;IAajB,YACC,UAAkB,EAClB,QAAgB,EAChB,KAAiB,EACjB,UAAwB,EAAE,EAC1B,UAA4B;QAXrB,uBAAkB,GAAG,KAAK,CAAC;QAalC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,kBAAkB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBAC/B,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,uBAAuB,CAAC,EAAc;QACrC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,0DAA0D;IAC1D,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,UAAU;QACT,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QAEvE,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;QAC/B,IAAI,KAAe,CAAC;QAEpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC5D,aAAa,EAAE,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;aACrB,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACZ,uCAAuC;gBACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC/B,CAAC;gBAED,uDAAuD;gBACvD,mDAAmD;gBACnD,6DAA6D;gBAC7D,KAAK,GAAG,EAAE,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;gBACD,iDAAiD;gBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtF,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtF,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,OAAO,KAAK,CAAC;IACd,CAAC;CACD","sourcesContent":["import {\n\tgetCapabilities,\n\tgetImageDimensions,\n\ttype ImageDimensions,\n\timageFallback,\n\trenderImage,\n} from \"../terminal-image.js\";\nimport type { Component } from \"../tui.js\";\n\nexport interface ImageTheme {\n\tfallbackColor: (str: string) => string;\n}\n\nexport interface ImageOptions {\n\tmaxWidthCells?: number;\n\tmaxHeightCells?: number;\n\tfilename?: string;\n\t/** Kitty image ID. If provided, reuses this ID (for animations/updates). */\n\timageId?: number;\n}\n\nexport class Image implements Component {\n\tprivate base64Data: string;\n\tprivate mimeType: string;\n\tprivate dimensions: ImageDimensions;\n\tprivate theme: ImageTheme;\n\tprivate options: ImageOptions;\n\tprivate imageId?: number;\n\tprivate dimensionsResolved = false;\n\tprivate onDimensionsResolved?: () => void;\n\n\tprivate cachedLines?: string[];\n\tprivate cachedWidth?: number;\n\n\tconstructor(\n\t\tbase64Data: string,\n\t\tmimeType: string,\n\t\ttheme: ImageTheme,\n\t\toptions: ImageOptions = {},\n\t\tdimensions?: ImageDimensions,\n\t) {\n\t\tthis.base64Data = base64Data;\n\t\tthis.mimeType = mimeType;\n\t\tthis.theme = theme;\n\t\tthis.options = options;\n\t\tthis.dimensions = dimensions || { widthPx: 800, heightPx: 600 };\n\t\tthis.dimensionsResolved = !!dimensions;\n\t\tthis.imageId = options.imageId;\n\n\t\tif (!dimensions) {\n\t\t\tgetImageDimensions(base64Data).then((dims) => {\n\t\t\t\tif (dims) {\n\t\t\t\t\tthis.dimensions = dims;\n\t\t\t\t\tthis.dimensionsResolved = true;\n\t\t\t\t\tthis.invalidate();\n\t\t\t\t\tthis.onDimensionsResolved?.();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Register a callback invoked when async dimension parsing completes.\n\t * Useful for triggering a re-render after the Image updates its layout.\n\t */\n\tsetOnDimensionsResolved(cb: () => void): void {\n\t\tthis.onDimensionsResolved = cb;\n\t}\n\n\t/** Get the Kitty image ID used by this image (if any). */\n\tgetImageId(): number | undefined {\n\t\treturn this.imageId;\n\t}\n\n\tinvalidate(): void {\n\t\tthis.cachedLines = undefined;\n\t\tthis.cachedWidth = undefined;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (this.cachedLines && this.cachedWidth === width) {\n\t\t\treturn this.cachedLines;\n\t\t}\n\n\t\tconst maxWidth = Math.min(width - 2, this.options.maxWidthCells ?? 60);\n\n\t\tconst caps = getCapabilities();\n\t\tlet lines: string[];\n\n\t\tif (caps.images) {\n\t\t\tconst result = renderImage(this.base64Data, this.dimensions, {\n\t\t\t\tmaxWidthCells: maxWidth,\n\t\t\t\timageId: this.imageId,\n\t\t\t});\n\n\t\t\tif (result) {\n\t\t\t\t// Store the image ID for later cleanup\n\t\t\t\tif (result.imageId) {\n\t\t\t\t\tthis.imageId = result.imageId;\n\t\t\t\t}\n\n\t\t\t\t// Return `rows` lines so TUI accounts for image height\n\t\t\t\t// First (rows-1) lines are empty (TUI clears them)\n\t\t\t\t// Last line: move cursor back up, then output image sequence\n\t\t\t\tlines = [];\n\t\t\t\tfor (let i = 0; i < result.rows - 1; i++) {\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t\t// Move cursor up to first row, then output image\n\t\t\t\tconst moveUp = result.rows > 1 ? `\\x1b[${result.rows - 1}A` : \"\";\n\t\t\t\tlines.push(moveUp + result.sequence);\n\t\t\t} else {\n\t\t\t\tconst fallback = imageFallback(this.mimeType, this.dimensions, this.options.filename);\n\t\t\t\tlines = [this.theme.fallbackColor(fallback)];\n\t\t\t}\n\t\t} else {\n\t\t\tconst fallback = imageFallback(this.mimeType, this.dimensions, this.options.filename);\n\t\t\tlines = [this.theme.fallbackColor(fallback)];\n\t\t}\n\n\t\tthis.cachedLines = lines;\n\t\tthis.cachedWidth = width;\n\n\t\treturn lines;\n\t}\n}\n"]}
@@ -17,7 +17,7 @@ export { DEFAULT_EDITOR_KEYBINDINGS, type EditorAction, type EditorKeybindingsCo
17
17
  export { decodeKittyPrintable, isKeyRelease, isKeyRepeat, isKittyProtocolActive, Key, type KeyEventType, type KeyId, matchesKey, parseKey, setKittyProtocolActive, } from "./keys.js";
18
18
  export { StdinBuffer, type StdinBufferEventMap, type StdinBufferOptions } from "./stdin-buffer.js";
19
19
  export { ProcessTerminal, type Terminal } from "./terminal.js";
20
- export { allocateImageId, type CellDimensions, calculateImageRows, deleteAllKittyImages, deleteKittyImage, detectCapabilities, encodeITerm2, encodeKitty, getCapabilities, getCellDimensions, getGifDimensions, getImageDimensions, getJpegDimensions, getPngDimensions, getWebpDimensions, type ImageDimensions, type ImageProtocol, type ImageRenderOptions, imageFallback, renderImage, resetCapabilitiesCache, setCellDimensions, type TerminalCapabilities, } from "./terminal-image.js";
20
+ export { allocateImageId, type CellDimensions, calculateImageRows, deleteAllKittyImages, deleteKittyImage, detectCapabilities, encodeITerm2, encodeKitty, getCapabilities, getCellDimensions, getImageDimensions, type ImageDimensions, type ImageProtocol, type ImageRenderOptions, imageFallback, renderImage, resetCapabilitiesCache, setCellDimensions, type TerminalCapabilities, } from "./terminal-image.js";
21
21
  export { type Component, Container, CURSOR_MARKER, type Focusable, isFocusable, type OverlayAnchor, type OverlayHandle, type OverlayMargin, type OverlayOptions, type SizeValue, TUI, } from "./tui.js";
22
22
  export { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "./utils.js";
23
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,YAAY,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,0BAA0B,EAC1B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,GAAG,EACH,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,UAAU,EACV,QAAQ,EACR,sBAAsB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EACN,eAAe,EACf,KAAK,cAAc,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,SAAS,EACd,SAAS,EACT,aAAa,EACb,KAAK,SAAS,EACd,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,GAAG,GACH,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,YAAY,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EACN,0BAA0B,EAC1B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,GAAG,EACH,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,UAAU,EACV,QAAQ,EACR,sBAAsB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EACN,eAAe,EACf,KAAK,cAAc,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,oBAAoB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,SAAS,EACd,SAAS,EACT,aAAa,EACb,KAAK,SAAS,EACd,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,GAAG,GACH,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -25,7 +25,7 @@ export { StdinBuffer } from "./stdin-buffer.js";
25
25
  // Terminal interface and implementations
26
26
  export { ProcessTerminal } from "./terminal.js";
27
27
  // Terminal image support
28
- export { allocateImageId, calculateImageRows, deleteAllKittyImages, deleteKittyImage, detectCapabilities, encodeITerm2, encodeKitty, getCapabilities, getCellDimensions, getGifDimensions, getImageDimensions, getJpegDimensions, getPngDimensions, getWebpDimensions, imageFallback, renderImage, resetCapabilitiesCache, setCellDimensions, } from "./terminal-image.js";
28
+ export { allocateImageId, calculateImageRows, deleteAllKittyImages, deleteKittyImage, detectCapabilities, encodeITerm2, encodeKitty, getCapabilities, getCellDimensions, getImageDimensions, imageFallback, renderImage, resetCapabilitiesCache, setCellDimensions, } from "./terminal-image.js";
29
29
  export { Container, CURSOR_MARKER, isFocusable, TUI, } from "./tui.js";
30
30
  // Utilities
31
31
  export { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "./utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,uBAAuB;AACvB,OAAO,EAGN,4BAA4B,GAE5B,MAAM,mBAAmB,CAAC;AAC3B,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAwC,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAsC,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAyB,QAAQ,EAAsB,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAmB,UAAU,EAAwB,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAoB,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,iBAAiB;AACjB,OAAO,EAAmB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,cAAc;AACd,OAAO,EACN,0BAA0B,EAG1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,0BAA0B;AAC1B,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,GAAG,EAGH,UAAU,EACV,QAAQ,EACR,sBAAsB,GACtB,MAAM,WAAW,CAAC;AACnB,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAqD,MAAM,mBAAmB,CAAC;AACnG,yCAAyC;AACzC,OAAO,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAC/D,yBAAyB;AACzB,OAAO,EACN,eAAe,EAEf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAIjB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,iBAAiB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,SAAS,EACT,aAAa,EAEb,WAAW,EAMX,GAAG,GACH,MAAM,UAAU,CAAC;AAClB,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC","sourcesContent":["// Core TUI interfaces and classes\n\n// Autocomplete support\nexport {\n\ttype AutocompleteItem,\n\ttype AutocompleteProvider,\n\tCombinedAutocompleteProvider,\n\ttype SlashCommand,\n} from \"./autocomplete.js\";\n// Components\nexport { Box } from \"./components/box.js\";\nexport { CancellableLoader } from \"./components/cancellable-loader.js\";\nexport { Editor, type EditorOptions, type EditorTheme } from \"./components/editor.js\";\nexport { Image, type ImageOptions, type ImageTheme } from \"./components/image.js\";\nexport { Input } from \"./components/input.js\";\nexport { Loader } from \"./components/loader.js\";\nexport { type DefaultTextStyle, Markdown, type MarkdownTheme } from \"./components/markdown.js\";\nexport { type SelectItem, SelectList, type SelectListTheme } from \"./components/select-list.js\";\nexport { type SettingItem, SettingsList, type SettingsListTheme } from \"./components/settings-list.js\";\nexport { Spacer } from \"./components/spacer.js\";\nexport { Text } from \"./components/text.js\";\nexport { TruncatedText } from \"./components/truncated-text.js\";\n// Editor component interface (for custom editors)\nexport type { EditorComponent } from \"./editor-component.js\";\n// Fuzzy matching\nexport { type FuzzyMatch, fuzzyFilter, fuzzyMatch } from \"./fuzzy.js\";\n// Keybindings\nexport {\n\tDEFAULT_EDITOR_KEYBINDINGS,\n\ttype EditorAction,\n\ttype EditorKeybindingsConfig,\n\tEditorKeybindingsManager,\n\tgetEditorKeybindings,\n\tsetEditorKeybindings,\n} from \"./keybindings.js\";\n// Keyboard input handling\nexport {\n\tdecodeKittyPrintable,\n\tisKeyRelease,\n\tisKeyRepeat,\n\tisKittyProtocolActive,\n\tKey,\n\ttype KeyEventType,\n\ttype KeyId,\n\tmatchesKey,\n\tparseKey,\n\tsetKittyProtocolActive,\n} from \"./keys.js\";\n// Input buffering for batch splitting\nexport { StdinBuffer, type StdinBufferEventMap, type StdinBufferOptions } from \"./stdin-buffer.js\";\n// Terminal interface and implementations\nexport { ProcessTerminal, type Terminal } from \"./terminal.js\";\n// Terminal image support\nexport {\n\tallocateImageId,\n\ttype CellDimensions,\n\tcalculateImageRows,\n\tdeleteAllKittyImages,\n\tdeleteKittyImage,\n\tdetectCapabilities,\n\tencodeITerm2,\n\tencodeKitty,\n\tgetCapabilities,\n\tgetCellDimensions,\n\tgetGifDimensions,\n\tgetImageDimensions,\n\tgetJpegDimensions,\n\tgetPngDimensions,\n\tgetWebpDimensions,\n\ttype ImageDimensions,\n\ttype ImageProtocol,\n\ttype ImageRenderOptions,\n\timageFallback,\n\trenderImage,\n\tresetCapabilitiesCache,\n\tsetCellDimensions,\n\ttype TerminalCapabilities,\n} from \"./terminal-image.js\";\nexport {\n\ttype Component,\n\tContainer,\n\tCURSOR_MARKER,\n\ttype Focusable,\n\tisFocusable,\n\ttype OverlayAnchor,\n\ttype OverlayHandle,\n\ttype OverlayMargin,\n\ttype OverlayOptions,\n\ttype SizeValue,\n\tTUI,\n} from \"./tui.js\";\n// Utilities\nexport { truncateToWidth, visibleWidth, wrapTextWithAnsi } from \"./utils.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,uBAAuB;AACvB,OAAO,EAGN,4BAA4B,GAE5B,MAAM,mBAAmB,CAAC;AAC3B,aAAa;AACb,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAwC,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAsC,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAyB,QAAQ,EAAsB,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAmB,UAAU,EAAwB,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAoB,YAAY,EAA0B,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,iBAAiB;AACjB,OAAO,EAAmB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,cAAc;AACd,OAAO,EACN,0BAA0B,EAG1B,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,0BAA0B;AAC1B,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,GAAG,EAGH,UAAU,EACV,QAAQ,EACR,sBAAsB,GACtB,MAAM,WAAW,CAAC;AACnB,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAqD,MAAM,mBAAmB,CAAC;AACnG,yCAAyC;AACzC,OAAO,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AAC/D,yBAAyB;AACzB,OAAO,EACN,eAAe,EAEf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAIlB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,iBAAiB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,SAAS,EACT,aAAa,EAEb,WAAW,EAMX,GAAG,GACH,MAAM,UAAU,CAAC;AAClB,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC","sourcesContent":["// Core TUI interfaces and classes\n\n// Autocomplete support\nexport {\n\ttype AutocompleteItem,\n\ttype AutocompleteProvider,\n\tCombinedAutocompleteProvider,\n\ttype SlashCommand,\n} from \"./autocomplete.js\";\n// Components\nexport { Box } from \"./components/box.js\";\nexport { CancellableLoader } from \"./components/cancellable-loader.js\";\nexport { Editor, type EditorOptions, type EditorTheme } from \"./components/editor.js\";\nexport { Image, type ImageOptions, type ImageTheme } from \"./components/image.js\";\nexport { Input } from \"./components/input.js\";\nexport { Loader } from \"./components/loader.js\";\nexport { type DefaultTextStyle, Markdown, type MarkdownTheme } from \"./components/markdown.js\";\nexport { type SelectItem, SelectList, type SelectListTheme } from \"./components/select-list.js\";\nexport { type SettingItem, SettingsList, type SettingsListTheme } from \"./components/settings-list.js\";\nexport { Spacer } from \"./components/spacer.js\";\nexport { Text } from \"./components/text.js\";\nexport { TruncatedText } from \"./components/truncated-text.js\";\n// Editor component interface (for custom editors)\nexport type { EditorComponent } from \"./editor-component.js\";\n// Fuzzy matching\nexport { type FuzzyMatch, fuzzyFilter, fuzzyMatch } from \"./fuzzy.js\";\n// Keybindings\nexport {\n\tDEFAULT_EDITOR_KEYBINDINGS,\n\ttype EditorAction,\n\ttype EditorKeybindingsConfig,\n\tEditorKeybindingsManager,\n\tgetEditorKeybindings,\n\tsetEditorKeybindings,\n} from \"./keybindings.js\";\n// Keyboard input handling\nexport {\n\tdecodeKittyPrintable,\n\tisKeyRelease,\n\tisKeyRepeat,\n\tisKittyProtocolActive,\n\tKey,\n\ttype KeyEventType,\n\ttype KeyId,\n\tmatchesKey,\n\tparseKey,\n\tsetKittyProtocolActive,\n} from \"./keys.js\";\n// Input buffering for batch splitting\nexport { StdinBuffer, type StdinBufferEventMap, type StdinBufferOptions } from \"./stdin-buffer.js\";\n// Terminal interface and implementations\nexport { ProcessTerminal, type Terminal } from \"./terminal.js\";\n// Terminal image support\nexport {\n\tallocateImageId,\n\ttype CellDimensions,\n\tcalculateImageRows,\n\tdeleteAllKittyImages,\n\tdeleteKittyImage,\n\tdetectCapabilities,\n\tencodeITerm2,\n\tencodeKitty,\n\tgetCapabilities,\n\tgetCellDimensions,\n\tgetImageDimensions,\n\ttype ImageDimensions,\n\ttype ImageProtocol,\n\ttype ImageRenderOptions,\n\timageFallback,\n\trenderImage,\n\tresetCapabilitiesCache,\n\tsetCellDimensions,\n\ttype TerminalCapabilities,\n} from \"./terminal-image.js\";\nexport {\n\ttype Component,\n\tContainer,\n\tCURSOR_MARKER,\n\ttype Focusable,\n\tisFocusable,\n\ttype OverlayAnchor,\n\ttype OverlayHandle,\n\ttype OverlayMargin,\n\ttype OverlayOptions,\n\ttype SizeValue,\n\tTUI,\n} from \"./tui.js\";\n// Utilities\nexport { truncateToWidth, visibleWidth, wrapTextWithAnsi } from \"./utils.js\";\n"]}
@@ -54,11 +54,11 @@ export declare function encodeITerm2(base64Data: string, options?: {
54
54
  inline?: boolean;
55
55
  }): string;
56
56
  export declare function calculateImageRows(imageDimensions: ImageDimensions, targetWidthCells: number, cellDimensions?: CellDimensions): number;
57
- export declare function getPngDimensions(base64Data: string): ImageDimensions | null;
58
- export declare function getJpegDimensions(base64Data: string): ImageDimensions | null;
59
- export declare function getGifDimensions(base64Data: string): ImageDimensions | null;
60
- export declare function getWebpDimensions(base64Data: string): ImageDimensions | null;
61
- export declare function getImageDimensions(base64Data: string, mimeType: string): ImageDimensions | null;
57
+ /**
58
+ * Parse image dimensions using the native Rust image module.
59
+ * Auto-detects format from byte content (PNG, JPEG, GIF, WebP).
60
+ */
61
+ export declare function getImageDimensions(base64Data: string): Promise<ImageDimensions | null>;
62
62
  export declare function renderImage(base64Data: string, imageDimensions: ImageDimensions, options?: ImageRenderOptions): {
63
63
  sequence: string;
64
64
  rows: number;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-image.d.ts","sourceRoot":"","sources":["../src/terminal-image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-image.d.ts","sourceRoot":"","sources":["../src/terminal-image.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAE5D;AAED,wBAAgB,kBAAkB,IAAI,oBAAoB,CA+BzD;AAED,wBAAgB,eAAe,IAAI,oBAAoB,CAKtD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED,wBAAgB,WAAW,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACZ,GACJ,MAAM,CAkCR;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,YAAY,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACR,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CACZ,GACJ,MAAM,CAcR;AAED,wBAAgB,kBAAkB,CACjC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,cAAc,GAAE,cAA6C,GAC3D,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAS5F;AAED,wBAAgB,WAAW,CAC1B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE,kBAAuB,GAC9B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA0B7D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAMvG"}