@travisennis/acai 0.0.12 → 0.0.13

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 (237) hide show
  1. package/README.md +3 -2
  2. package/dist/agent/index.d.ts.map +1 -1
  3. package/dist/agent/index.js +2 -5
  4. package/dist/commands/history/types.d.ts +3 -2
  5. package/dist/commands/history/types.d.ts.map +1 -1
  6. package/dist/commands/init-project/utils.d.ts +0 -1
  7. package/dist/commands/init-project/utils.d.ts.map +1 -1
  8. package/dist/commands/init-project/utils.js +1 -1
  9. package/dist/commands/manager.d.ts.map +1 -1
  10. package/dist/commands/manager.js +0 -18
  11. package/dist/commands/share/html-renderer.d.ts.map +1 -1
  12. package/dist/commands/share/html-renderer.js +54 -48
  13. package/dist/commands/tools/index.js +39 -38
  14. package/dist/config/index.d.ts +0 -2
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +2 -6
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +94 -76
  20. package/dist/models/manager.d.ts +1 -10
  21. package/dist/models/manager.d.ts.map +1 -1
  22. package/dist/models/manager.js +2 -2
  23. package/dist/models/opencode-go-provider.d.ts +4 -4
  24. package/dist/models/opencode-go-provider.d.ts.map +1 -1
  25. package/dist/models/opencode-go-provider.js +29 -35
  26. package/dist/models/providers.d.ts +1 -1
  27. package/dist/models/providers.d.ts.map +1 -1
  28. package/dist/prompts/system-prompt.d.ts +0 -2
  29. package/dist/prompts/system-prompt.d.ts.map +1 -1
  30. package/dist/prompts/system-prompt.js +6 -10
  31. package/dist/repl/index.d.ts +27 -11
  32. package/dist/repl/index.d.ts.map +1 -1
  33. package/dist/repl/index.js +238 -254
  34. package/dist/skills/index.d.ts +12 -2
  35. package/dist/skills/index.d.ts.map +1 -1
  36. package/dist/skills/index.js +123 -73
  37. package/dist/terminal/control.d.ts +1 -21
  38. package/dist/terminal/control.d.ts.map +1 -1
  39. package/dist/terminal/control.js +1 -32
  40. package/dist/terminal/formatting.d.ts +0 -33
  41. package/dist/terminal/formatting.d.ts.map +1 -1
  42. package/dist/terminal/formatting.js +0 -91
  43. package/dist/terminal/highlight/theme.d.ts +0 -37
  44. package/dist/terminal/highlight/theme.d.ts.map +1 -1
  45. package/dist/terminal/highlight/theme.js +1 -79
  46. package/dist/terminal/keys.d.ts +0 -97
  47. package/dist/terminal/keys.d.ts.map +1 -1
  48. package/dist/terminal/keys.js +0 -194
  49. package/dist/terminal/select-prompt.d.ts.map +1 -1
  50. package/dist/terminal/select-prompt.js +65 -51
  51. package/dist/terminal/style.d.ts +1 -1
  52. package/dist/terminal/style.d.ts.map +1 -1
  53. package/dist/terminal/supports-color.d.ts.map +1 -1
  54. package/dist/terminal/supports-color.js +38 -20
  55. package/dist/terminal/supports-hyperlinks.d.ts +3 -0
  56. package/dist/terminal/supports-hyperlinks.d.ts.map +1 -1
  57. package/dist/terminal/supports-hyperlinks.js +72 -31
  58. package/dist/terminal/table/layout-manager.d.ts +0 -20
  59. package/dist/terminal/table/layout-manager.d.ts.map +1 -1
  60. package/dist/terminal/table/layout-manager.js +68 -44
  61. package/dist/terminal/table/utils.d.ts +0 -1
  62. package/dist/terminal/table/utils.d.ts.map +1 -1
  63. package/dist/terminal/table/utils.js +2 -4
  64. package/dist/tools/apply-patch.d.ts +5 -3
  65. package/dist/tools/apply-patch.d.ts.map +1 -1
  66. package/dist/tools/apply-patch.js +154 -123
  67. package/dist/tools/bash.d.ts.map +1 -1
  68. package/dist/tools/bash.js +11 -8
  69. package/dist/tools/dynamic-tool-loader.d.ts +6 -1
  70. package/dist/tools/dynamic-tool-loader.d.ts.map +1 -1
  71. package/dist/tools/dynamic-tool-loader.js +154 -135
  72. package/dist/tools/index.d.ts +3 -133
  73. package/dist/tools/index.d.ts.map +1 -1
  74. package/dist/tools/index.js +0 -20
  75. package/dist/tools/read-file.d.ts.map +1 -1
  76. package/dist/tools/read-file.js +32 -13
  77. package/dist/tools/skill.d.ts.map +1 -1
  78. package/dist/tools/skill.js +20 -13
  79. package/dist/tools/web-fetch.d.ts +2 -6
  80. package/dist/tools/web-fetch.d.ts.map +1 -1
  81. package/dist/tools/web-fetch.js +59 -36
  82. package/dist/tools/web-search.d.ts +0 -4
  83. package/dist/tools/web-search.d.ts.map +1 -1
  84. package/dist/tools/web-search.js +40 -32
  85. package/dist/tui/autocomplete/utils.d.ts +0 -15
  86. package/dist/tui/autocomplete/utils.d.ts.map +1 -1
  87. package/dist/tui/autocomplete/utils.js +0 -85
  88. package/dist/tui/autocomplete.d.ts +1 -1
  89. package/dist/tui/autocomplete.d.ts.map +1 -1
  90. package/dist/tui/autocomplete.js +1 -1
  91. package/dist/tui/components/editor.d.ts +12 -0
  92. package/dist/tui/components/editor.d.ts.map +1 -1
  93. package/dist/tui/components/editor.js +181 -195
  94. package/dist/tui/components/input.d.ts +4 -0
  95. package/dist/tui/components/input.d.ts.map +1 -1
  96. package/dist/tui/components/input.js +33 -31
  97. package/dist/tui/components/markdown.d.ts +30 -0
  98. package/dist/tui/components/markdown.d.ts.map +1 -1
  99. package/dist/tui/components/markdown.js +274 -242
  100. package/dist/tui/components/modal.d.ts.map +1 -1
  101. package/dist/tui/components/modal.js +11 -11
  102. package/dist/tui/components/select-list.d.ts +5 -0
  103. package/dist/tui/components/select-list.d.ts.map +1 -1
  104. package/dist/tui/components/select-list.js +69 -98
  105. package/dist/tui/components/table.d.ts +6 -0
  106. package/dist/tui/components/table.d.ts.map +1 -1
  107. package/dist/tui/components/table.js +61 -52
  108. package/dist/tui/index.d.ts +1 -8
  109. package/dist/tui/index.d.ts.map +1 -1
  110. package/dist/tui/index.js +0 -8
  111. package/dist/tui/tui.d.ts +9 -0
  112. package/dist/tui/tui.d.ts.map +1 -1
  113. package/dist/tui/tui.js +78 -48
  114. package/dist/tui/utils.d.ts +7 -0
  115. package/dist/tui/utils.d.ts.map +1 -1
  116. package/dist/tui/utils.js +117 -53
  117. package/dist/utils/bash.d.ts.map +1 -1
  118. package/dist/utils/bash.js +121 -104
  119. package/dist/utils/command-protection.d.ts +3 -2
  120. package/dist/utils/command-protection.d.ts.map +1 -1
  121. package/dist/utils/command-protection.js +42 -33
  122. package/dist/utils/filesystem/operations.d.ts +0 -15
  123. package/dist/utils/filesystem/operations.d.ts.map +1 -1
  124. package/dist/utils/filesystem/operations.js +1 -38
  125. package/dist/utils/filesystem/security.d.ts.map +1 -1
  126. package/dist/utils/filesystem/security.js +22 -15
  127. package/dist/utils/filetype-detection.d.ts +0 -1
  128. package/dist/utils/filetype-detection.d.ts.map +1 -1
  129. package/dist/utils/filetype-detection.js +0 -12
  130. package/dist/utils/formatting.d.ts +0 -30
  131. package/dist/utils/formatting.d.ts.map +1 -1
  132. package/dist/utils/formatting.js +0 -44
  133. package/dist/utils/git.d.ts +4 -6
  134. package/dist/utils/git.d.ts.map +1 -1
  135. package/dist/utils/git.js +36 -46
  136. package/dist/utils/ignore.d.ts +1 -1
  137. package/dist/utils/ignore.d.ts.map +1 -1
  138. package/dist/utils/ignore.js +1 -1
  139. package/dist/utils/process.d.ts.map +1 -1
  140. package/dist/utils/process.js +77 -79
  141. package/dist/utils/yaml.d.ts +0 -1
  142. package/dist/utils/yaml.d.ts.map +1 -1
  143. package/dist/utils/yaml.js +80 -89
  144. package/dist/utils/zod.d.ts +0 -3
  145. package/dist/utils/zod.d.ts.map +1 -1
  146. package/dist/utils/zod.js +0 -7
  147. package/package.json +25 -24
  148. package/dist/agent/sub-agent.d.ts +0 -23
  149. package/dist/agent/sub-agent.d.ts.map +0 -1
  150. package/dist/agent/sub-agent.js +0 -109
  151. package/dist/commands/add-directory/index.d.ts +0 -3
  152. package/dist/commands/add-directory/index.d.ts.map +0 -1
  153. package/dist/commands/add-directory/index.js +0 -50
  154. package/dist/commands/add-directory/utils.d.ts +0 -3
  155. package/dist/commands/add-directory/utils.d.ts.map +0 -1
  156. package/dist/commands/add-directory/utils.js +0 -15
  157. package/dist/commands/clear/index.d.ts +0 -3
  158. package/dist/commands/clear/index.d.ts.map +0 -1
  159. package/dist/commands/clear/index.js +0 -13
  160. package/dist/commands/generate-rules/index.d.ts +0 -3
  161. package/dist/commands/generate-rules/index.d.ts.map +0 -1
  162. package/dist/commands/generate-rules/index.js +0 -206
  163. package/dist/commands/generate-rules/service.d.ts +0 -22
  164. package/dist/commands/generate-rules/service.d.ts.map +0 -1
  165. package/dist/commands/generate-rules/service.js +0 -103
  166. package/dist/commands/generate-rules/utils.d.ts +0 -5
  167. package/dist/commands/generate-rules/utils.d.ts.map +0 -1
  168. package/dist/commands/generate-rules/utils.js +0 -25
  169. package/dist/commands/handoff/index.d.ts +0 -3
  170. package/dist/commands/handoff/index.d.ts.map +0 -1
  171. package/dist/commands/handoff/index.js +0 -97
  172. package/dist/commands/handoff/utils.d.ts +0 -4
  173. package/dist/commands/handoff/utils.d.ts.map +0 -1
  174. package/dist/commands/handoff/utils.js +0 -123
  175. package/dist/commands/list-directories/index.d.ts +0 -3
  176. package/dist/commands/list-directories/index.d.ts.map +0 -1
  177. package/dist/commands/list-directories/index.js +0 -35
  178. package/dist/commands/pickup/index.d.ts +0 -3
  179. package/dist/commands/pickup/index.d.ts.map +0 -1
  180. package/dist/commands/pickup/index.js +0 -141
  181. package/dist/commands/pickup/types.d.ts +0 -6
  182. package/dist/commands/pickup/types.d.ts.map +0 -1
  183. package/dist/commands/pickup/types.js +0 -1
  184. package/dist/commands/pickup/utils.d.ts +0 -7
  185. package/dist/commands/pickup/utils.d.ts.map +0 -1
  186. package/dist/commands/pickup/utils.js +0 -56
  187. package/dist/commands/remove-directory/index.d.ts +0 -3
  188. package/dist/commands/remove-directory/index.d.ts.map +0 -1
  189. package/dist/commands/remove-directory/index.js +0 -55
  190. package/dist/commands/review/index.d.ts +0 -3
  191. package/dist/commands/review/index.d.ts.map +0 -1
  192. package/dist/commands/review/index.js +0 -12
  193. package/dist/commands/review/review-panel.d.ts +0 -3
  194. package/dist/commands/review/review-panel.d.ts.map +0 -1
  195. package/dist/commands/review/review-panel.js +0 -186
  196. package/dist/commands/review/utils.d.ts +0 -18
  197. package/dist/commands/review/utils.d.ts.map +0 -1
  198. package/dist/commands/review/utils.js +0 -146
  199. package/dist/commands/shell/index.d.ts +0 -3
  200. package/dist/commands/shell/index.d.ts.map +0 -1
  201. package/dist/commands/shell/index.js +0 -96
  202. package/dist/subagents/index.d.ts +0 -16
  203. package/dist/subagents/index.d.ts.map +0 -1
  204. package/dist/subagents/index.js +0 -231
  205. package/dist/terminal/index.d.ts +0 -9
  206. package/dist/terminal/index.d.ts.map +0 -1
  207. package/dist/terminal/index.js +0 -8
  208. package/dist/tools/agent.d.ts +0 -27
  209. package/dist/tools/agent.d.ts.map +0 -1
  210. package/dist/tools/agent.js +0 -81
  211. package/dist/tools/directory-tree.d.ts +0 -28
  212. package/dist/tools/directory-tree.d.ts.map +0 -1
  213. package/dist/tools/directory-tree.js +0 -154
  214. package/dist/tools/glob.d.ts +0 -35
  215. package/dist/tools/glob.d.ts.map +0 -1
  216. package/dist/tools/glob.js +0 -167
  217. package/dist/tools/grep.d.ts +0 -100
  218. package/dist/tools/grep.d.ts.map +0 -1
  219. package/dist/tools/grep.js +0 -608
  220. package/dist/tools/ls.d.ts +0 -26
  221. package/dist/tools/ls.d.ts.map +0 -1
  222. package/dist/tools/ls.js +0 -83
  223. package/dist/tui/components/header.d.ts +0 -21
  224. package/dist/tui/components/header.d.ts.map +0 -1
  225. package/dist/tui/components/header.js +0 -63
  226. package/dist/utils/bash/parse.d.ts +0 -19
  227. package/dist/utils/bash/parse.d.ts.map +0 -1
  228. package/dist/utils/bash/parse.js +0 -223
  229. package/dist/utils/bash/quote.d.ts +0 -6
  230. package/dist/utils/bash/quote.d.ts.map +0 -1
  231. package/dist/utils/bash/quote.js +0 -23
  232. package/dist/utils/generators.d.ts +0 -3
  233. package/dist/utils/generators.d.ts.map +0 -1
  234. package/dist/utils/generators.js +0 -25
  235. package/dist/utils/glob.d.ts +0 -52
  236. package/dist/utils/glob.d.ts.map +0 -1
  237. package/dist/utils/glob.js +0 -376
@@ -1,20 +1,5 @@
1
1
  /** biome-ignore-all lint/suspicious/noControlCharactersInRegex: handle terminal ansii codes */
2
2
  /** biome-ignore-all lint/style/useNamingConvention: will fix later */
3
- /**
4
- * Check if input matches a Kitty protocol Ctrl+<key> sequence.
5
- * Ignores lock key bits (Caps Lock, Num Lock).
6
- * @param data - The input data to check
7
- * @param key - Single lowercase letter (e.g., 'c' for Ctrl+C)
8
- */
9
- export declare function isKittyCtrl(data: string, key: string): boolean;
10
- /**
11
- * Check if input matches a Kitty protocol key sequence with specific modifier.
12
- * Ignores lock key bits (Caps Lock, Num Lock).
13
- * @param data - The input data to check
14
- * @param codepoint - ASCII codepoint of the key
15
- * @param modifier - Modifier value (use MODIFIERS constants)
16
- */
17
- export declare function isKittyKey(data: string, codepoint: number, modifier: number): boolean;
18
3
  /**
19
4
  * Check if input matches Ctrl+A (raw byte or Kitty protocol).
20
5
  * Ignores lock key bits.
@@ -40,18 +25,6 @@ export declare function isCtrlE(data: string): boolean;
40
25
  * Ignores lock key bits.
41
26
  */
42
27
  export declare function isCtrlG(data: string): boolean;
43
- /**
44
- * Check if input matches Ctrl+K (raw byte or Kitty protocol).
45
- * Ignores lock key bits.
46
- * Also checks if first byte is 0x0b for compatibility with terminals
47
- * that may send trailing bytes.
48
- */
49
- export declare function isCtrlK(data: string): boolean;
50
- /**
51
- * Check if input matches Ctrl+L (raw byte or Kitty protocol).
52
- * Ignores lock key bits.
53
- */
54
- export declare function isCtrlL(data: string): boolean;
55
28
  /**
56
29
  * Check if input matches Ctrl+M (Kitty protocol only).
57
30
  * The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
@@ -69,56 +42,16 @@ export declare function isCtrlN(data: string): boolean;
69
42
  * Ignores lock key bits.
70
43
  */
71
44
  export declare function isCtrlO(data: string): boolean;
72
- /**
73
- * Check if input matches Shift+Ctrl+O (Kitty protocol only).
74
- * Ignores lock key bits.
75
- */
76
- export declare function isShiftCtrlO(data: string): boolean;
77
- /**
78
- * Check if input matches Ctrl+P (raw byte or Kitty protocol).
79
- * Ignores lock key bits.
80
- */
81
- export declare function isCtrlP(data: string): boolean;
82
- /**
83
- * Check if input matches Shift+Ctrl+P (Kitty protocol only).
84
- * Ignores lock key bits.
85
- */
86
- export declare function isShiftCtrlP(data: string): boolean;
87
45
  /**
88
46
  * Check if input matches Ctrl+R (raw byte or Kitty protocol).
89
47
  * Ignores lock key bits.
90
48
  */
91
49
  export declare function isCtrlR(data: string): boolean;
92
- /**
93
- * Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
94
- * Ignores lock key bits.
95
- */
96
- export declare function isShiftCtrlD(data: string): boolean;
97
- /**
98
- * Check if input matches Ctrl+T (raw byte or Kitty protocol).
99
- * Ignores lock key bits.
100
- */
101
- export declare function isCtrlT(data: string): boolean;
102
- /**
103
- * Check if input matches Ctrl+U (raw byte or Kitty protocol).
104
- * Ignores lock key bits.
105
- */
106
- export declare function isCtrlU(data: string): boolean;
107
- /**
108
- * Check if input matches Ctrl+W (raw byte or Kitty protocol).
109
- * Ignores lock key bits.
110
- */
111
- export declare function isCtrlW(data: string): boolean;
112
50
  /**
113
51
  * Check if input matches Ctrl+Z (raw byte or Kitty protocol).
114
52
  * Ignores lock key bits.
115
53
  */
116
54
  export declare function isCtrlZ(data: string): boolean;
117
- /**
118
- * Check if input matches Alt+Backspace (legacy or Kitty protocol).
119
- * Ignores lock key bits.
120
- */
121
- export declare function isAltBackspace(data: string): boolean;
122
55
  /**
123
56
  * Check if input matches Shift+Tab (legacy or Kitty protocol).
124
57
  * Ignores lock key bits.
@@ -166,36 +99,6 @@ export declare function isEnter(data: string): boolean;
166
99
  * Handles both legacy (\x7f, \x08) and Kitty protocol.
167
100
  */
168
101
  export declare function isBackspace(data: string): boolean;
169
- /**
170
- * Check if input matches Shift+Enter.
171
- * Ignores lock key bits.
172
- */
173
- export declare function isShiftEnter(data: string): boolean;
174
- /**
175
- * Check if input matches Alt+Enter.
176
- * Ignores lock key bits.
177
- */
178
- export declare function isAltEnter(data: string): boolean;
179
- /**
180
- * Check if input matches Option/Alt+Left (word navigation).
181
- * Handles multiple formats including Kitty protocol.
182
- */
183
- export declare function isAltLeft(data: string): boolean;
184
- /**
185
- * Check if input matches Option/Alt+Right (word navigation).
186
- * Handles multiple formats including Kitty protocol.
187
- */
188
- export declare function isAltRight(data: string): boolean;
189
- /**
190
- * Check if input matches Ctrl+Left (word navigation).
191
- * Handles multiple formats including Kitty protocol.
192
- */
193
- export declare function isCtrlLeft(data: string): boolean;
194
- /**
195
- * Check if input matches Ctrl+Right (word navigation).
196
- * Handles multiple formats including Kitty protocol.
197
- */
198
- export declare function isCtrlRight(data: string): boolean;
199
102
  /**
200
103
  * Check if input matches Home key.
201
104
  * Handles legacy formats and Kitty protocol with lock key modifiers.
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../source/terminal/keys.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,sEAAsE;AAoMtE;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM9C;AAUD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIjD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIjD;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO5C;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO3C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK9C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOxD"}
@@ -30,16 +30,10 @@ const CODEPOINTS = {
30
30
  d: 100,
31
31
  e: 101,
32
32
  g: 103,
33
- k: 107,
34
- l: 108,
35
33
  m: 109,
36
34
  n: 110,
37
35
  o: 111,
38
- p: 112,
39
36
  r: 114,
40
- t: 116,
41
- u: 117,
42
- w: 119,
43
37
  z: 122,
44
38
  // Special keys
45
39
  escape: 27,
@@ -149,56 +143,14 @@ const Keys = {
149
143
  CTRL_D: kittySequence(CODEPOINTS.d, MODIFIERS.ctrl),
150
144
  CTRL_E: kittySequence(CODEPOINTS.e, MODIFIERS.ctrl),
151
145
  CTRL_G: kittySequence(CODEPOINTS.g, MODIFIERS.ctrl),
152
- CTRL_K: kittySequence(CODEPOINTS.k, MODIFIERS.ctrl),
153
- CTRL_L: kittySequence(CODEPOINTS.l, MODIFIERS.ctrl),
154
146
  CTRL_M: kittySequence(CODEPOINTS.m, MODIFIERS.ctrl),
155
147
  CTRL_O: kittySequence(CODEPOINTS.o, MODIFIERS.ctrl),
156
148
  CTRL_N: kittySequence(CODEPOINTS.n, MODIFIERS.ctrl),
157
- CTRL_P: kittySequence(CODEPOINTS.p, MODIFIERS.ctrl),
158
149
  CTRL_R: kittySequence(CODEPOINTS.r, MODIFIERS.ctrl),
159
- CTRL_T: kittySequence(CODEPOINTS.t, MODIFIERS.ctrl),
160
- CTRL_U: kittySequence(CODEPOINTS.u, MODIFIERS.ctrl),
161
- CTRL_W: kittySequence(CODEPOINTS.w, MODIFIERS.ctrl),
162
150
  CTRL_Z: kittySequence(CODEPOINTS.z, MODIFIERS.ctrl),
163
- // Enter combinations
164
- SHIFT_ENTER: kittySequence(CODEPOINTS.enter, MODIFIERS.shift),
165
- ALT_ENTER: kittySequence(CODEPOINTS.enter, MODIFIERS.alt),
166
- CTRL_ENTER: kittySequence(CODEPOINTS.enter, MODIFIERS.ctrl),
167
151
  // Tab combinations
168
152
  SHIFT_TAB: kittySequence(CODEPOINTS.tab, MODIFIERS.shift),
169
- // Backspace combinations
170
- ALT_BACKSPACE: kittySequence(CODEPOINTS.backspace, MODIFIERS.alt),
171
153
  };
172
- /**
173
- * Check if input matches a Kitty protocol Ctrl+<key> sequence.
174
- * Ignores lock key bits (Caps Lock, Num Lock).
175
- * @param data - The input data to check
176
- * @param key - Single lowercase letter (e.g., 'c' for Ctrl+C)
177
- */
178
- export function isKittyCtrl(data, key) {
179
- if (key.length !== 1)
180
- return false;
181
- const codepoint = key.charCodeAt(0);
182
- // Check exact match first (fast path)
183
- if (data === kittySequence(codepoint, MODIFIERS.ctrl))
184
- return true;
185
- // Check with lock bits masked out
186
- return matchesKittySequence(data, codepoint, MODIFIERS.ctrl);
187
- }
188
- /**
189
- * Check if input matches a Kitty protocol key sequence with specific modifier.
190
- * Ignores lock key bits (Caps Lock, Num Lock).
191
- * @param data - The input data to check
192
- * @param codepoint - ASCII codepoint of the key
193
- * @param modifier - Modifier value (use MODIFIERS constants)
194
- */
195
- export function isKittyKey(data, codepoint, modifier) {
196
- // Check exact match first (fast path)
197
- if (data === kittySequence(codepoint, modifier))
198
- return true;
199
- // Check with lock bits masked out
200
- return matchesKittySequence(data, codepoint, modifier);
201
- }
202
154
  // Raw control character codes
203
155
  const RAW = {
204
156
  CTRL_A: "\x01",
@@ -206,18 +158,10 @@ const RAW = {
206
158
  CTRL_D: "\x04",
207
159
  CTRL_E: "\x05",
208
160
  CTRL_G: "\x07",
209
- CTRL_K: "\x0b",
210
- CTRL_L: "\x0c",
211
- CTRL_M: "\x0d",
212
161
  CTRL_N: "\x0e",
213
162
  CTRL_O: "\x0f",
214
- CTRL_P: "\x10",
215
163
  CTRL_R: "\x12",
216
- CTRL_T: "\x14",
217
- CTRL_U: "\x15",
218
- CTRL_W: "\x17",
219
164
  CTRL_Z: "\x1a",
220
- ALT_BACKSPACE: "\x1b\x7f",
221
165
  SHIFT_TAB: "\x1b[Z",
222
166
  };
223
167
  /**
@@ -265,27 +209,6 @@ export function isCtrlG(data) {
265
209
  data === Keys.CTRL_G ||
266
210
  matchesKittySequence(data, CODEPOINTS.g, MODIFIERS.ctrl));
267
211
  }
268
- /**
269
- * Check if input matches Ctrl+K (raw byte or Kitty protocol).
270
- * Ignores lock key bits.
271
- * Also checks if first byte is 0x0b for compatibility with terminals
272
- * that may send trailing bytes.
273
- */
274
- export function isCtrlK(data) {
275
- return (data === RAW.CTRL_K ||
276
- (data.length > 0 && data.charCodeAt(0) === 0x0b) || // compatibility with terminals that may send trailing bytes
277
- data === Keys.CTRL_K ||
278
- matchesKittySequence(data, CODEPOINTS.k, MODIFIERS.ctrl));
279
- }
280
- /**
281
- * Check if input matches Ctrl+L (raw byte or Kitty protocol).
282
- * Ignores lock key bits.
283
- */
284
- export function isCtrlL(data) {
285
- return (data === RAW.CTRL_L ||
286
- data === Keys.CTRL_L ||
287
- matchesKittySequence(data, CODEPOINTS.l, MODIFIERS.ctrl));
288
- }
289
212
  /**
290
213
  * Check if input matches Ctrl+M (Kitty protocol only).
291
214
  * The raw Ctrl+M byte (\x0d) is identical to Enter/Return,
@@ -314,29 +237,6 @@ export function isCtrlO(data) {
314
237
  data === Keys.CTRL_O ||
315
238
  matchesKittySequence(data, CODEPOINTS.o, MODIFIERS.ctrl));
316
239
  }
317
- /**
318
- * Check if input matches Shift+Ctrl+O (Kitty protocol only).
319
- * Ignores lock key bits.
320
- */
321
- export function isShiftCtrlO(data) {
322
- return matchesKittySequence(data, CODEPOINTS.o, MODIFIERS.shift + MODIFIERS.ctrl);
323
- }
324
- /**
325
- * Check if input matches Ctrl+P (raw byte or Kitty protocol).
326
- * Ignores lock key bits.
327
- */
328
- export function isCtrlP(data) {
329
- return (data === RAW.CTRL_P ||
330
- data === Keys.CTRL_P ||
331
- matchesKittySequence(data, CODEPOINTS.p, MODIFIERS.ctrl));
332
- }
333
- /**
334
- * Check if input matches Shift+Ctrl+P (Kitty protocol only).
335
- * Ignores lock key bits.
336
- */
337
- export function isShiftCtrlP(data) {
338
- return matchesKittySequence(data, CODEPOINTS.p, MODIFIERS.shift + MODIFIERS.ctrl);
339
- }
340
240
  /**
341
241
  * Check if input matches Ctrl+R (raw byte or Kitty protocol).
342
242
  * Ignores lock key bits.
@@ -346,40 +246,6 @@ export function isCtrlR(data) {
346
246
  data === Keys.CTRL_R ||
347
247
  matchesKittySequence(data, CODEPOINTS.r, MODIFIERS.ctrl));
348
248
  }
349
- /**
350
- * Check if input matches Shift+Ctrl+D (Kitty protocol only, for debug).
351
- * Ignores lock key bits.
352
- */
353
- export function isShiftCtrlD(data) {
354
- return matchesKittySequence(data, CODEPOINTS.d, MODIFIERS.shift + MODIFIERS.ctrl);
355
- }
356
- /**
357
- * Check if input matches Ctrl+T (raw byte or Kitty protocol).
358
- * Ignores lock key bits.
359
- */
360
- export function isCtrlT(data) {
361
- return (data === RAW.CTRL_T ||
362
- data === Keys.CTRL_T ||
363
- matchesKittySequence(data, CODEPOINTS.t, MODIFIERS.ctrl));
364
- }
365
- /**
366
- * Check if input matches Ctrl+U (raw byte or Kitty protocol).
367
- * Ignores lock key bits.
368
- */
369
- export function isCtrlU(data) {
370
- return (data === RAW.CTRL_U ||
371
- data === Keys.CTRL_U ||
372
- matchesKittySequence(data, CODEPOINTS.u, MODIFIERS.ctrl));
373
- }
374
- /**
375
- * Check if input matches Ctrl+W (raw byte or Kitty protocol).
376
- * Ignores lock key bits.
377
- */
378
- export function isCtrlW(data) {
379
- return (data === RAW.CTRL_W ||
380
- data === Keys.CTRL_W ||
381
- matchesKittySequence(data, CODEPOINTS.w, MODIFIERS.ctrl));
382
- }
383
249
  /**
384
250
  * Check if input matches Ctrl+Z (raw byte or Kitty protocol).
385
251
  * Ignores lock key bits.
@@ -389,15 +255,6 @@ export function isCtrlZ(data) {
389
255
  data === Keys.CTRL_Z ||
390
256
  matchesKittySequence(data, CODEPOINTS.z, MODIFIERS.ctrl));
391
257
  }
392
- /**
393
- * Check if input matches Alt+Backspace (legacy or Kitty protocol).
394
- * Ignores lock key bits.
395
- */
396
- export function isAltBackspace(data) {
397
- return (data === RAW.ALT_BACKSPACE ||
398
- data === Keys.ALT_BACKSPACE ||
399
- matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt));
400
- }
401
258
  /**
402
259
  * Check if input matches Shift+Tab (legacy or Kitty protocol).
403
260
  * Ignores lock key bits.
@@ -477,57 +334,6 @@ export function isBackspace(data) {
477
334
  data === "\x08" ||
478
335
  matchesKittySequence(data, CODEPOINTS.backspace, 0));
479
336
  }
480
- /**
481
- * Check if input matches Shift+Enter.
482
- * Ignores lock key bits.
483
- */
484
- export function isShiftEnter(data) {
485
- return (data === Keys.SHIFT_ENTER ||
486
- matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.shift));
487
- }
488
- /**
489
- * Check if input matches Alt+Enter.
490
- * Ignores lock key bits.
491
- */
492
- export function isAltEnter(data) {
493
- return (data === Keys.ALT_ENTER ||
494
- data === "\x1b\r" ||
495
- matchesKittySequence(data, CODEPOINTS.enter, MODIFIERS.alt));
496
- }
497
- /**
498
- * Check if input matches Option/Alt+Left (word navigation).
499
- * Handles multiple formats including Kitty protocol.
500
- */
501
- export function isAltLeft(data) {
502
- return (data === "\x1b[1;3D" ||
503
- data === "\x1bb" ||
504
- matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.alt));
505
- }
506
- /**
507
- * Check if input matches Option/Alt+Right (word navigation).
508
- * Handles multiple formats including Kitty protocol.
509
- */
510
- export function isAltRight(data) {
511
- return (data === "\x1b[1;3C" ||
512
- data === "\x1bf" ||
513
- matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.alt));
514
- }
515
- /**
516
- * Check if input matches Ctrl+Left (word navigation).
517
- * Handles multiple formats including Kitty protocol.
518
- */
519
- export function isCtrlLeft(data) {
520
- return (data === "\x1b[1;5D" ||
521
- matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.ctrl));
522
- }
523
- /**
524
- * Check if input matches Ctrl+Right (word navigation).
525
- * Handles multiple formats including Kitty protocol.
526
- */
527
- export function isCtrlRight(data) {
528
- return (data === "\x1b[1;5C" ||
529
- matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.ctrl));
530
- }
531
337
  /**
532
338
  * Check if input matches Home key.
533
339
  * Handles legacy formats and Kitty protocol with lock key modifiers.
@@ -1 +1 @@
1
- {"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";AAEA;;;GAGG;AA2BH,UAAU,YAAY,CAAC,CAAC,GAAG,OAAO;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAQpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAoHD,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EACxC,OAAkB,EAClB,OAAO,EACP,OAAW,EACX,QAAY,EACZ,MAAM,EACN,QAA2D,GAC5D,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA6M/B"}
1
+ {"version":3,"file":"select-prompt.d.ts","sourceRoot":"","sources":["../../source/terminal/select-prompt.ts"],"names":[],"mappings":";AAEA;;;GAGG;AA2BH,UAAU,YAAY,CAAC,CAAC,GAAG,OAAO;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,KAAK,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAQpD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;CAC5B;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,OAAO;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAoHD,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,EACxC,OAAkB,EAClB,OAAO,EACP,OAAW,EACX,QAAY,EACZ,MAAM,EACN,QAA2D,GAC5D,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAkO/B"}
@@ -189,60 +189,74 @@ export async function select({ message = "Select", choices, initial = 0, pageSiz
189
189
  signal.addEventListener("abort", abortHandler);
190
190
  }
191
191
  function onData(key) {
192
- if (isCtrlC(key)) {
193
- cleanup();
194
- stdout.write("\n");
195
- const err = new Error("Cancelled");
196
- err.isCanceled = true;
197
- reject(err);
198
- return;
199
- }
200
- if (isEnter(key)) {
201
- cleanup();
202
- const chosen = filteredChoices[pointer];
203
- stdout.write("\n");
204
- resolve(chosen.value);
205
- return;
206
- }
207
- if (isArrowUp(key)) {
208
- move(-1);
209
- return;
210
- }
211
- if (isArrowDown(key)) {
212
- move(1);
213
- return;
214
- }
215
- if (isHome(key)) {
216
- pointer = findFirstEnabledIndex(filteredChoices);
217
- pageStart = updatePageStart(pointer, pageSize, filteredChoices.length);
218
- renderToScreen();
219
- return;
220
- }
221
- if (isEnd(key)) {
222
- pointer = findLastEnabledIndex(filteredChoices);
223
- pageStart = updatePageStart(pointer, pageSize, filteredChoices.length);
224
- renderToScreen();
225
- return;
226
- }
227
- if (isBackspace(key)) {
228
- if (searchBuffer.length > 0) {
229
- searchBuffer = searchBuffer.slice(0, -1);
230
- if (searchBuffer.length === 0) {
231
- clearSearchBuffer();
232
- }
233
- else {
192
+ const handlers = [
193
+ {
194
+ test: isCtrlC,
195
+ run: () => {
196
+ cleanup();
197
+ stdout.write("\n");
198
+ const err = new Error("Cancelled");
199
+ err.isCanceled = true;
200
+ reject(err);
201
+ },
202
+ },
203
+ {
204
+ test: isEnter,
205
+ run: () => {
206
+ cleanup();
207
+ const chosen = filteredChoices[pointer];
208
+ stdout.write("\n");
209
+ resolve(chosen.value);
210
+ },
211
+ },
212
+ { test: isArrowUp, run: () => move(-1) },
213
+ { test: isArrowDown, run: () => move(1) },
214
+ {
215
+ test: isHome,
216
+ run: () => {
217
+ pointer = findFirstEnabledIndex(filteredChoices);
218
+ pageStart = updatePageStart(pointer, pageSize, filteredChoices.length);
219
+ renderToScreen();
220
+ },
221
+ },
222
+ {
223
+ test: isEnd,
224
+ run: () => {
225
+ pointer = findLastEnabledIndex(filteredChoices);
226
+ pageStart = updatePageStart(pointer, pageSize, filteredChoices.length);
227
+ renderToScreen();
228
+ },
229
+ },
230
+ {
231
+ test: isBackspace,
232
+ run: () => {
233
+ if (searchBuffer.length === 0)
234
+ return;
235
+ searchBuffer = searchBuffer.slice(0, -1);
236
+ if (searchBuffer.length === 0) {
237
+ clearSearchBuffer();
238
+ }
239
+ else {
240
+ filterChoices(searchBuffer);
241
+ renderToScreen();
242
+ }
243
+ },
244
+ },
245
+ {
246
+ test: (k) => !!k && k >= " " && k <= "~",
247
+ run: () => {
248
+ searchBuffer += key;
249
+ resetSearchTimer();
234
250
  filterChoices(searchBuffer);
235
251
  renderToScreen();
236
- }
252
+ },
253
+ },
254
+ ];
255
+ for (const h of handlers) {
256
+ if (h.test(key)) {
257
+ h.run();
258
+ return;
237
259
  }
238
- return;
239
- }
240
- if (key && key >= " " && key <= "~") {
241
- searchBuffer += key;
242
- resetSearchTimer();
243
- filterChoices(searchBuffer);
244
- renderToScreen();
245
- return;
246
260
  }
247
261
  }
248
262
  try {
@@ -12,7 +12,7 @@ interface Options {
12
12
  */
13
13
  readonly level?: number;
14
14
  }
15
- export interface StyleInstance {
15
+ interface StyleInstance {
16
16
  (...text: unknown[]): string;
17
17
  /**
18
18
  * The color support for Style.
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../source/terminal/style.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAkJD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,GAAG,KAAK,CAOtB;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"supports-color.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-color.ts"],"names":[],"mappings":"AAiCA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAyKD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,YAAY,GAAG,KAAK,CAOtB;AAED,eAAO,MAAM,aAAa;;;CAGzB,CAAC"}
@@ -68,6 +68,35 @@ function detectTerminalColorLevel() {
68
68
  }
69
69
  return undefined;
70
70
  }
71
+ function detectWindowsColorLevel() {
72
+ if (process.platform !== "win32") {
73
+ return undefined;
74
+ }
75
+ // Windows 10 build 10586 is the first Windows release that supports 256 colors.
76
+ // Windows 10 build 14931 is the first release that supports 16m/TrueColor.
77
+ const osRelease = os.release().split(".");
78
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10_586) {
79
+ return Number(osRelease[2]) >= 14_931 ? 3 : 2;
80
+ }
81
+ return 1;
82
+ }
83
+ function detectHighColorTerminalLevel() {
84
+ if (env["COLORTERM"] === "truecolor") {
85
+ return 3;
86
+ }
87
+ if (env["TERM"] === "xterm-kitty" || env["TERM"] === "xterm-ghostty") {
88
+ return 3;
89
+ }
90
+ return undefined;
91
+ }
92
+ function detectTeamCityColorLevel() {
93
+ if ("TEAMCITY_VERSION" in env) {
94
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env["TEAMCITY_VERSION"] || "")
95
+ ? 1
96
+ : 0;
97
+ }
98
+ return undefined;
99
+ }
71
100
  function _supportsColor(haveStream, options = {}) {
72
101
  const noFlagForceColor = envForceColor();
73
102
  const forceColor = noFlagForceColor;
@@ -86,32 +115,21 @@ function _supportsColor(haveStream, options = {}) {
86
115
  if (env["TERM"] === "dumb") {
87
116
  return min;
88
117
  }
89
- if (process.platform === "win32") {
90
- // Windows 10 build 10586 is the first Windows release that supports 256 colors.
91
- // Windows 10 build 14931 is the first release that supports 16m/TrueColor.
92
- const osRelease = os.release().split(".");
93
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10_586) {
94
- return Number(osRelease[2]) >= 14_931 ? 3 : 2;
95
- }
96
- return 1;
118
+ const windowsLevel = detectWindowsColorLevel();
119
+ if (windowsLevel !== undefined) {
120
+ return windowsLevel;
97
121
  }
98
122
  const ciLevel = detectCiColorLevel(min);
99
123
  if (ciLevel !== undefined) {
100
124
  return ciLevel;
101
125
  }
102
- if ("TEAMCITY_VERSION" in env) {
103
- return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env["TEAMCITY_VERSION"] || "")
104
- ? 1
105
- : 0;
106
- }
107
- if (env["COLORTERM"] === "truecolor") {
108
- return 3;
126
+ const teamCityLevel = detectTeamCityColorLevel();
127
+ if (teamCityLevel !== undefined) {
128
+ return teamCityLevel;
109
129
  }
110
- if (env["TERM"] === "xterm-kitty") {
111
- return 3;
112
- }
113
- if (env["TERM"] === "xterm-ghostty") {
114
- return 3;
130
+ const highColorLevel = detectHighColorTerminalLevel();
131
+ if (highColorLevel !== undefined) {
132
+ return highColorLevel;
115
133
  }
116
134
  const terminalLevel = detectTerminalColorLevel();
117
135
  if (terminalLevel !== undefined) {
@@ -1,3 +1,6 @@
1
+ export declare function createSupportsHyperlinks(stream: {
2
+ isTty?: boolean;
3
+ }): boolean;
1
4
  export declare const supportsHyperlinks: {
2
5
  stdout: boolean;
3
6
  stderr: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"supports-hyperlinks.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-hyperlinks.ts"],"names":[],"mappings":"AAyIA,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC"}
1
+ {"version":3,"file":"supports-hyperlinks.d.ts","sourceRoot":"","sources":["../../source/terminal/supports-hyperlinks.ts"],"names":[],"mappings":"AA+BA,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CA8E7E;AAmFD,eAAO,MAAM,kBAAkB;;;CAG9B,CAAC"}