@introspection-ai/recipes 0.13.0 → 0.14.1

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 (222) hide show
  1. package/README.md +46 -57
  2. package/dist/{agent-tool.d.ts → agents.d.ts} +4 -1
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/{agent-tool.js → agents.js} +1 -1
  5. package/dist/agents.js.map +1 -0
  6. package/dist/api/extensions.d.ts +3 -0
  7. package/dist/api/extensions.d.ts.map +1 -0
  8. package/dist/api/extensions.js +2 -0
  9. package/dist/api/extensions.js.map +1 -0
  10. package/dist/api/mcp.d.ts +4 -0
  11. package/dist/api/mcp.d.ts.map +1 -0
  12. package/dist/api/mcp.js +2 -0
  13. package/dist/api/mcp.js.map +1 -0
  14. package/dist/api/session.d.ts +3 -0
  15. package/dist/api/session.d.ts.map +1 -0
  16. package/dist/api/session.js +2 -0
  17. package/dist/api/session.js.map +1 -0
  18. package/dist/child-agent.d.ts +5 -4
  19. package/dist/child-agent.d.ts.map +1 -1
  20. package/dist/child-agent.js +26 -117
  21. package/dist/child-agent.js.map +1 -1
  22. package/dist/child-session.d.ts +23 -0
  23. package/dist/child-session.d.ts.map +1 -0
  24. package/dist/child-session.js +48 -0
  25. package/dist/child-session.js.map +1 -0
  26. package/dist/extensions.d.ts +29 -0
  27. package/dist/extensions.d.ts.map +1 -0
  28. package/dist/extensions.js +119 -0
  29. package/dist/extensions.js.map +1 -0
  30. package/dist/index.d.ts +4 -13
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -13
  33. package/dist/index.js.map +1 -1
  34. package/dist/inspect.d.ts +38 -5
  35. package/dist/inspect.d.ts.map +1 -1
  36. package/dist/inspect.js +92 -41
  37. package/dist/inspect.js.map +1 -1
  38. package/dist/interactions.d.ts +18 -2
  39. package/dist/interactions.d.ts.map +1 -1
  40. package/dist/interactions.js +41 -10
  41. package/dist/interactions.js.map +1 -1
  42. package/dist/mcp-catalog.d.ts +1 -0
  43. package/dist/mcp-catalog.d.ts.map +1 -1
  44. package/dist/mcp-catalog.js +14 -6
  45. package/dist/mcp-catalog.js.map +1 -1
  46. package/dist/mcp-chunks/auth-command-ZLGYIEUY.js +273 -0
  47. package/dist/mcp-chunks/call-arguments-LU3W6D3K.js +13 -0
  48. package/dist/mcp-chunks/call-command-LKTKSYTH.js +612 -0
  49. package/dist/mcp-chunks/chunk-2U4BSDC4.js +3951 -0
  50. package/dist/mcp-chunks/chunk-2XL7MG7R.js +272 -0
  51. package/dist/mcp-chunks/chunk-3BJA27PY.js +2321 -0
  52. package/dist/mcp-chunks/chunk-4SQKWYFF.js +15 -0
  53. package/dist/mcp-chunks/chunk-5QOSCSQB.js +290 -0
  54. package/dist/mcp-chunks/chunk-6W5QFASN.js +77 -0
  55. package/dist/mcp-chunks/chunk-6XCZGU3G.js +1004 -0
  56. package/dist/mcp-chunks/chunk-7FHEBT5G.js +149 -0
  57. package/dist/mcp-chunks/chunk-7KA2VJVZ.js +114 -0
  58. package/dist/mcp-chunks/chunk-7UDVSOOF.js +138 -0
  59. package/dist/mcp-chunks/chunk-BNV3TPE4.js +66 -0
  60. package/dist/mcp-chunks/chunk-BTLAWHTA.js +129 -0
  61. package/dist/mcp-chunks/chunk-BV56DXPW.js +13 -0
  62. package/dist/mcp-chunks/chunk-BWHIA4PC.js +90 -0
  63. package/dist/mcp-chunks/chunk-BZIQOWE6.js +267 -0
  64. package/dist/mcp-chunks/chunk-D3MRAZ6H.js +16140 -0
  65. package/dist/mcp-chunks/chunk-DHBE7UBH.js +750 -0
  66. package/dist/mcp-chunks/chunk-E22DYOW5.js +251 -0
  67. package/dist/mcp-chunks/chunk-ECIVB7P4.js +139 -0
  68. package/dist/mcp-chunks/chunk-HKRJ6O36.js +1076 -0
  69. package/dist/mcp-chunks/chunk-IABRYROW.js +44 -0
  70. package/dist/mcp-chunks/chunk-J6LYIZXN.js +45 -0
  71. package/dist/mcp-chunks/chunk-L7NTQVYN.js +161 -0
  72. package/dist/mcp-chunks/chunk-LEZSACDE.js +141 -0
  73. package/dist/mcp-chunks/chunk-LKIBAYKU.js +208 -0
  74. package/dist/mcp-chunks/chunk-LNH5LAJD.js +152 -0
  75. package/dist/mcp-chunks/chunk-LQQEYD76.js +124 -0
  76. package/dist/mcp-chunks/chunk-LRKZP7DJ.js +47 -0
  77. package/dist/mcp-chunks/chunk-LS7PMWSR.js +109 -0
  78. package/dist/mcp-chunks/chunk-M3TPODXI.js +95 -0
  79. package/dist/mcp-chunks/chunk-MZ2NARG7.js +400 -0
  80. package/dist/mcp-chunks/chunk-N46NEFAF.js +45 -0
  81. package/dist/mcp-chunks/chunk-NNOEGEUZ.js +17273 -0
  82. package/dist/mcp-chunks/chunk-NRAJX5E4.js +69 -0
  83. package/dist/mcp-chunks/chunk-P3PSC54P.js +869 -0
  84. package/dist/mcp-chunks/chunk-PIIYJR44.js +6341 -0
  85. package/dist/mcp-chunks/chunk-PWYFKGKG.js +385 -0
  86. package/dist/mcp-chunks/chunk-SJCCBNZ4.js +45 -0
  87. package/dist/mcp-chunks/chunk-TATVT5IT.js +194 -0
  88. package/dist/mcp-chunks/chunk-TEUKFFQL.js +29 -0
  89. package/dist/mcp-chunks/chunk-UKYNQGNE.js +150 -0
  90. package/dist/mcp-chunks/chunk-UNKB4SBV.js +37 -0
  91. package/dist/mcp-chunks/chunk-WD6BOD24.js +138 -0
  92. package/dist/mcp-chunks/chunk-WQJZMCJN.js +73 -0
  93. package/dist/mcp-chunks/chunk-XANPGTLI.js +364 -0
  94. package/dist/mcp-chunks/chunk-XQK2JSW4.js +35 -0
  95. package/dist/mcp-chunks/chunk-YHQUTU6L.js +571 -0
  96. package/dist/mcp-chunks/chunk-YVZKMV5H.js +57 -0
  97. package/dist/mcp-chunks/cli-UV4QJZZM.js +929 -0
  98. package/dist/mcp-chunks/client-S7RQUG5U.js +13 -0
  99. package/dist/mcp-chunks/config-command-NLAGKID5.js +1101 -0
  100. package/dist/mcp-chunks/daemon-command-U242Z6VY.js +26 -0
  101. package/dist/mcp-chunks/dist-LK3SHAMX.js +6478 -0
  102. package/dist/mcp-chunks/emit-ts-command-VBXVXO6V.js +386 -0
  103. package/dist/mcp-chunks/generate-cli-runner-6CAZZA3P.js +1426 -0
  104. package/dist/mcp-chunks/inspect-cli-command-3ZORTOR7.js +111 -0
  105. package/dist/mcp-chunks/launch-YKRXHXJI.js +10 -0
  106. package/dist/mcp-chunks/lifecycle-XVKRHPH3.js +16 -0
  107. package/dist/mcp-chunks/list-command-2MEGGNFQ.js +4190 -0
  108. package/dist/mcp-chunks/output-utils-NKESLAJ6.js +12 -0
  109. package/dist/mcp-chunks/prompt-B1Yc1NPt-VGOTWJMN.js +918 -0
  110. package/dist/mcp-chunks/record-command-YXHTTTT5.js +17 -0
  111. package/dist/mcp-chunks/replay-command-25HJ6AQU.js +85 -0
  112. package/dist/mcp-chunks/resource-command-OO4NYF5C.js +97 -0
  113. package/dist/mcp-chunks/result-utils-MOHHLNM7.js +15 -0
  114. package/dist/mcp-chunks/runtime-5WJ3G25Y.js +33 -0
  115. package/dist/mcp-chunks/runtime-wrapper-RPWDIDBF.js +10 -0
  116. package/dist/mcp-chunks/serve-command-DHXJZMMN.js +3302 -0
  117. package/dist/mcp-chunks/timeouts-W2XWCCXR.js +18 -0
  118. package/dist/mcp-chunks/vault-command-PIYIUEZL.js +154 -0
  119. package/dist/mcp-daemon-client.d.ts +6 -1
  120. package/dist/mcp-daemon-client.d.ts.map +1 -1
  121. package/dist/mcp-daemon-client.js +119 -2
  122. package/dist/mcp-daemon-client.js.map +1 -1
  123. package/dist/mcp-daemon-protocol.d.ts +18 -1
  124. package/dist/mcp-daemon-protocol.d.ts.map +1 -1
  125. package/dist/mcp-daemon-protocol.js +31 -0
  126. package/dist/mcp-daemon-protocol.js.map +1 -1
  127. package/dist/mcp-daemon.js +169 -76602
  128. package/dist/mcp-daemon.js.map +1 -1
  129. package/dist/mcp-policy.d.ts +11 -0
  130. package/dist/mcp-policy.d.ts.map +1 -0
  131. package/dist/mcp-policy.js +27 -0
  132. package/dist/mcp-policy.js.map +1 -0
  133. package/dist/mcp-run-worker.js +38 -76540
  134. package/dist/mcp-tools.d.ts +39 -0
  135. package/dist/mcp-tools.d.ts.map +1 -0
  136. package/dist/mcp-tools.js +493 -0
  137. package/dist/mcp-tools.js.map +1 -0
  138. package/dist/mcp.d.ts +21 -9
  139. package/dist/mcp.d.ts.map +1 -1
  140. package/dist/mcp.js +101 -31
  141. package/dist/mcp.js.map +1 -1
  142. package/dist/model-binding.d.ts +39 -0
  143. package/dist/model-binding.d.ts.map +1 -0
  144. package/dist/model-binding.js +103 -0
  145. package/dist/model-binding.js.map +1 -0
  146. package/dist/pi-extension.d.ts +2 -22
  147. package/dist/pi-extension.d.ts.map +1 -1
  148. package/dist/pi-extension.js +296 -71
  149. package/dist/pi-extension.js.map +1 -1
  150. package/dist/recipe/resolve.d.ts +43 -20
  151. package/dist/recipe/resolve.d.ts.map +1 -1
  152. package/dist/recipe/resolve.js +215 -70
  153. package/dist/recipe/resolve.js.map +1 -1
  154. package/dist/recipe-agent.d.ts +24 -27
  155. package/dist/recipe-agent.d.ts.map +1 -1
  156. package/dist/recipe-agent.js +278 -230
  157. package/dist/recipe-agent.js.map +1 -1
  158. package/dist/recipe-check.d.ts +18 -0
  159. package/dist/recipe-check.d.ts.map +1 -0
  160. package/dist/recipe-check.js +261 -0
  161. package/dist/recipe-check.js.map +1 -0
  162. package/dist/recipe-extensions.d.ts.map +1 -1
  163. package/dist/recipe-extensions.js +0 -3
  164. package/dist/recipe-extensions.js.map +1 -1
  165. package/dist/recipe-model.d.ts +3 -1
  166. package/dist/recipe-model.d.ts.map +1 -1
  167. package/dist/recipe-model.js +15 -12
  168. package/dist/recipe-model.js.map +1 -1
  169. package/dist/recipe-package.d.ts +6 -28
  170. package/dist/recipe-package.d.ts.map +1 -1
  171. package/dist/recipe-package.js +248 -191
  172. package/dist/recipe-package.js.map +1 -1
  173. package/dist/recipe-skills.d.ts.map +1 -1
  174. package/dist/recipe-skills.js +42 -29
  175. package/dist/recipe-skills.js.map +1 -1
  176. package/dist/run-controller.d.ts +10 -9
  177. package/dist/run-controller.d.ts.map +1 -1
  178. package/dist/run-controller.js +28 -21
  179. package/dist/run-controller.js.map +1 -1
  180. package/dist/session.d.ts +40 -53
  181. package/dist/session.d.ts.map +1 -1
  182. package/dist/session.js +312 -173
  183. package/dist/session.js.map +1 -1
  184. package/dist/test-utils.d.ts +7 -7
  185. package/dist/test-utils.d.ts.map +1 -1
  186. package/dist/test-utils.js +32 -15
  187. package/dist/test-utils.js.map +1 -1
  188. package/docs/agent-composition.md +41 -35
  189. package/docs/host-api.md +201 -0
  190. package/docs/index.md +9 -14
  191. package/docs/interactions.md +12 -11
  192. package/docs/mcp-auth.md +6 -6
  193. package/docs/mcp-configuration.md +73 -25
  194. package/docs/pi-extension.md +39 -11
  195. package/docs/recipe-flow.md +9 -9
  196. package/docs/recipe-format.md +106 -41
  197. package/docs/recipe-judges.md +24 -36
  198. package/package.json +23 -17
  199. package/vendor/mcp-client/darwin-arm64/mcp-client +0 -0
  200. package/vendor/mcp-client/darwin-x64/mcp-client +0 -0
  201. package/vendor/mcp-client/linux-arm64/mcp-client +0 -0
  202. package/vendor/recipe-check/darwin-arm64/recipe-check +0 -0
  203. package/vendor/recipe-check/darwin-x64/recipe-check +0 -0
  204. package/vendor/recipe-check/linux-arm64/recipe-check +0 -0
  205. package/vendor/recipe-check/linux-x64/recipe-check +0 -0
  206. package/vendor/recipe-check/linux-x64-musl/recipe-check +0 -0
  207. package/vendor/recipe-check/win32-x64/recipe-check.exe +0 -0
  208. package/dist/agent-tool.d.ts.map +0 -1
  209. package/dist/agent-tool.js.map +0 -1
  210. package/dist/run.d.ts +0 -28
  211. package/dist/run.d.ts.map +0 -1
  212. package/dist/run.js +0 -84
  213. package/dist/run.js.map +0 -1
  214. package/dist/testing.d.ts +0 -25
  215. package/dist/testing.d.ts.map +0 -1
  216. package/dist/testing.js +0 -96
  217. package/dist/testing.js.map +0 -1
  218. package/docs/deployment-configuration.md +0 -65
  219. package/docs/migration.md +0 -70
  220. package/docs/python-bindings-release.md +0 -47
  221. package/docs/recipe-evals.md +0 -70
  222. package/docs/runtime-library.md +0 -171
@@ -0,0 +1,4190 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
2
+ import {
3
+ extractListFlags
4
+ } from "./chunk-LEZSACDE.js";
5
+ import {
6
+ buildToolDoc,
7
+ formatExampleBlock
8
+ } from "./chunk-MZ2NARG7.js";
9
+ import {
10
+ classifyListError,
11
+ formatSourceSuffix,
12
+ renderServerListRow
13
+ } from "./chunk-7KA2VJVZ.js";
14
+ import {
15
+ loadToolMetadata
16
+ } from "./chunk-IABRYROW.js";
17
+ import "./chunk-XANPGTLI.js";
18
+ import {
19
+ chooseClosestIdentifier,
20
+ renderIdentifierResolutionMessages
21
+ } from "./chunk-BWHIA4PC.js";
22
+ import {
23
+ boldText,
24
+ dimText,
25
+ extraDimText,
26
+ supportsSpinner,
27
+ yellowText
28
+ } from "./chunk-N46NEFAF.js";
29
+ import {
30
+ LIST_TIMEOUT_MS,
31
+ withTimeout
32
+ } from "./chunk-BNV3TPE4.js";
33
+ import {
34
+ persistPreparedEphemeralServer,
35
+ prepareEphemeralServerTarget
36
+ } from "./chunk-WD6BOD24.js";
37
+ import "./chunk-TEUKFFQL.js";
38
+ import "./chunk-E22DYOW5.js";
39
+ import {
40
+ formatErrorMessage,
41
+ serializeConnectionIssue
42
+ } from "./chunk-SJCCBNZ4.js";
43
+ import "./chunk-LQQEYD76.js";
44
+ import {
45
+ splitHttpToolSelector
46
+ } from "./chunk-M3TPODXI.js";
47
+ import "./chunk-YVZKMV5H.js";
48
+ import {
49
+ setStdioLogMode
50
+ } from "./chunk-HKRJ6O36.js";
51
+ import {
52
+ MCPORTER_VERSION
53
+ } from "./chunk-4SQKWYFF.js";
54
+ import "./chunk-2U4BSDC4.js";
55
+ import "./chunk-UKYNQGNE.js";
56
+ import "./chunk-P3PSC54P.js";
57
+ import "./chunk-2XL7MG7R.js";
58
+ import "./chunk-WQJZMCJN.js";
59
+ import "./chunk-ECIVB7P4.js";
60
+ import "./chunk-LS7PMWSR.js";
61
+ import "./chunk-D3MRAZ6H.js";
62
+ import {
63
+ __export
64
+ } from "./chunk-LRKZP7DJ.js";
65
+
66
+ // node_modules/.pnpm/ora@9.4.1/node_modules/ora/index.js
67
+ import process8 from "node:process";
68
+ import { stripVTControlCharacters } from "node:util";
69
+
70
+ // node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js
71
+ var ANSI_BACKGROUND_OFFSET = 10;
72
+ var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
73
+ var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
74
+ var wrapAnsi16m = (offset = 0) => (red2, green2, blue2) => `\x1B[${38 + offset};2;${red2};${green2};${blue2}m`;
75
+ var styles = {
76
+ modifier: {
77
+ reset: [0, 0],
78
+ // 21 isn't widely supported and 22 does the same thing
79
+ bold: [1, 22],
80
+ dim: [2, 22],
81
+ italic: [3, 23],
82
+ underline: [4, 24],
83
+ overline: [53, 55],
84
+ inverse: [7, 27],
85
+ hidden: [8, 28],
86
+ strikethrough: [9, 29]
87
+ },
88
+ color: {
89
+ black: [30, 39],
90
+ red: [31, 39],
91
+ green: [32, 39],
92
+ yellow: [33, 39],
93
+ blue: [34, 39],
94
+ magenta: [35, 39],
95
+ cyan: [36, 39],
96
+ white: [37, 39],
97
+ // Bright color
98
+ blackBright: [90, 39],
99
+ gray: [90, 39],
100
+ // Alias of `blackBright`
101
+ grey: [90, 39],
102
+ // Alias of `blackBright`
103
+ redBright: [91, 39],
104
+ greenBright: [92, 39],
105
+ yellowBright: [93, 39],
106
+ blueBright: [94, 39],
107
+ magentaBright: [95, 39],
108
+ cyanBright: [96, 39],
109
+ whiteBright: [97, 39]
110
+ },
111
+ bgColor: {
112
+ bgBlack: [40, 49],
113
+ bgRed: [41, 49],
114
+ bgGreen: [42, 49],
115
+ bgYellow: [43, 49],
116
+ bgBlue: [44, 49],
117
+ bgMagenta: [45, 49],
118
+ bgCyan: [46, 49],
119
+ bgWhite: [47, 49],
120
+ // Bright color
121
+ bgBlackBright: [100, 49],
122
+ bgGray: [100, 49],
123
+ // Alias of `bgBlackBright`
124
+ bgGrey: [100, 49],
125
+ // Alias of `bgBlackBright`
126
+ bgRedBright: [101, 49],
127
+ bgGreenBright: [102, 49],
128
+ bgYellowBright: [103, 49],
129
+ bgBlueBright: [104, 49],
130
+ bgMagentaBright: [105, 49],
131
+ bgCyanBright: [106, 49],
132
+ bgWhiteBright: [107, 49]
133
+ }
134
+ };
135
+ var modifierNames = Object.keys(styles.modifier);
136
+ var foregroundColorNames = Object.keys(styles.color);
137
+ var backgroundColorNames = Object.keys(styles.bgColor);
138
+ var colorNames = [...foregroundColorNames, ...backgroundColorNames];
139
+ function assembleStyles() {
140
+ const codes = /* @__PURE__ */ new Map();
141
+ for (const [groupName, group] of Object.entries(styles)) {
142
+ for (const [styleName, style] of Object.entries(group)) {
143
+ styles[styleName] = {
144
+ open: `\x1B[${style[0]}m`,
145
+ close: `\x1B[${style[1]}m`
146
+ };
147
+ group[styleName] = styles[styleName];
148
+ codes.set(style[0], style[1]);
149
+ }
150
+ Object.defineProperty(styles, groupName, {
151
+ value: group,
152
+ enumerable: false
153
+ });
154
+ }
155
+ Object.defineProperty(styles, "codes", {
156
+ value: codes,
157
+ enumerable: false
158
+ });
159
+ styles.color.close = "\x1B[39m";
160
+ styles.bgColor.close = "\x1B[49m";
161
+ styles.color.ansi = wrapAnsi16();
162
+ styles.color.ansi256 = wrapAnsi256();
163
+ styles.color.ansi16m = wrapAnsi16m();
164
+ styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
165
+ styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
166
+ styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
167
+ Object.defineProperties(styles, {
168
+ rgbToAnsi256: {
169
+ value(red2, green2, blue2) {
170
+ if (red2 === green2 && green2 === blue2) {
171
+ if (red2 < 8) {
172
+ return 16;
173
+ }
174
+ if (red2 > 248) {
175
+ return 231;
176
+ }
177
+ return Math.round((red2 - 8) / 247 * 24) + 232;
178
+ }
179
+ return 16 + 36 * Math.round(red2 / 255 * 5) + 6 * Math.round(green2 / 255 * 5) + Math.round(blue2 / 255 * 5);
180
+ },
181
+ enumerable: false
182
+ },
183
+ hexToRgb: {
184
+ value(hex) {
185
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
186
+ if (!matches) {
187
+ return [0, 0, 0];
188
+ }
189
+ let [colorString] = matches;
190
+ if (colorString.length === 3) {
191
+ colorString = [...colorString].map((character) => character + character).join("");
192
+ }
193
+ const integer = Number.parseInt(colorString, 16);
194
+ return [
195
+ /* eslint-disable no-bitwise */
196
+ integer >> 16 & 255,
197
+ integer >> 8 & 255,
198
+ integer & 255
199
+ /* eslint-enable no-bitwise */
200
+ ];
201
+ },
202
+ enumerable: false
203
+ },
204
+ hexToAnsi256: {
205
+ value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
206
+ enumerable: false
207
+ },
208
+ ansi256ToAnsi: {
209
+ value(code) {
210
+ if (code < 8) {
211
+ return 30 + code;
212
+ }
213
+ if (code < 16) {
214
+ return 90 + (code - 8);
215
+ }
216
+ let red2;
217
+ let green2;
218
+ let blue2;
219
+ if (code >= 232) {
220
+ red2 = ((code - 232) * 10 + 8) / 255;
221
+ green2 = red2;
222
+ blue2 = red2;
223
+ } else {
224
+ code -= 16;
225
+ const remainder = code % 36;
226
+ red2 = Math.floor(code / 36) / 5;
227
+ green2 = Math.floor(remainder / 6) / 5;
228
+ blue2 = remainder % 6 / 5;
229
+ }
230
+ const value = Math.max(red2, green2, blue2) * 2;
231
+ if (value === 0) {
232
+ return 30;
233
+ }
234
+ let result = 30 + (Math.round(blue2) << 2 | Math.round(green2) << 1 | Math.round(red2));
235
+ if (value === 2) {
236
+ result += 60;
237
+ }
238
+ return result;
239
+ },
240
+ enumerable: false
241
+ },
242
+ rgbToAnsi: {
243
+ value: (red2, green2, blue2) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red2, green2, blue2)),
244
+ enumerable: false
245
+ },
246
+ hexToAnsi: {
247
+ value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
248
+ enumerable: false
249
+ }
250
+ });
251
+ return styles;
252
+ }
253
+ var ansiStyles = assembleStyles();
254
+ var ansi_styles_default = ansiStyles;
255
+
256
+ // node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js
257
+ import process2 from "node:process";
258
+ import os from "node:os";
259
+ import tty from "node:tty";
260
+ function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process2.argv) {
261
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
262
+ const position = argv.indexOf(prefix + flag);
263
+ const terminatorPosition = argv.indexOf("--");
264
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
265
+ }
266
+ var { env } = process2;
267
+ var flagForceColor;
268
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
269
+ flagForceColor = 0;
270
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
271
+ flagForceColor = 1;
272
+ }
273
+ function envForceColor() {
274
+ if ("FORCE_COLOR" in env) {
275
+ if (env.FORCE_COLOR === "true") {
276
+ return 1;
277
+ }
278
+ if (env.FORCE_COLOR === "false") {
279
+ return 0;
280
+ }
281
+ return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
282
+ }
283
+ }
284
+ function translateLevel(level) {
285
+ if (level === 0) {
286
+ return false;
287
+ }
288
+ return {
289
+ level,
290
+ hasBasic: true,
291
+ has256: level >= 2,
292
+ has16m: level >= 3
293
+ };
294
+ }
295
+ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
296
+ const noFlagForceColor = envForceColor();
297
+ if (noFlagForceColor !== void 0) {
298
+ flagForceColor = noFlagForceColor;
299
+ }
300
+ const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
301
+ if (forceColor === 0) {
302
+ return 0;
303
+ }
304
+ if (sniffFlags) {
305
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
306
+ return 3;
307
+ }
308
+ if (hasFlag("color=256")) {
309
+ return 2;
310
+ }
311
+ }
312
+ if ("TF_BUILD" in env && "AGENT_NAME" in env) {
313
+ return 1;
314
+ }
315
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
316
+ return 0;
317
+ }
318
+ const min = forceColor || 0;
319
+ if (env.TERM === "dumb") {
320
+ return min;
321
+ }
322
+ if (process2.platform === "win32") {
323
+ const osRelease = os.release().split(".");
324
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
325
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
326
+ }
327
+ return 1;
328
+ }
329
+ if ("CI" in env) {
330
+ if (["GITHUB_ACTIONS", "GITEA_ACTIONS", "CIRCLECI"].some((key) => key in env)) {
331
+ return 3;
332
+ }
333
+ if (["TRAVIS", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
334
+ return 1;
335
+ }
336
+ return min;
337
+ }
338
+ if ("TEAMCITY_VERSION" in env) {
339
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
340
+ }
341
+ if (env.COLORTERM === "truecolor") {
342
+ return 3;
343
+ }
344
+ if (env.TERM === "xterm-kitty") {
345
+ return 3;
346
+ }
347
+ if (env.TERM === "xterm-ghostty") {
348
+ return 3;
349
+ }
350
+ if (env.TERM === "wezterm") {
351
+ return 3;
352
+ }
353
+ if ("TERM_PROGRAM" in env) {
354
+ const version = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
355
+ switch (env.TERM_PROGRAM) {
356
+ case "iTerm.app": {
357
+ return version >= 3 ? 3 : 2;
358
+ }
359
+ case "Apple_Terminal": {
360
+ return 2;
361
+ }
362
+ }
363
+ }
364
+ if (/-256(color)?$/i.test(env.TERM)) {
365
+ return 2;
366
+ }
367
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
368
+ return 1;
369
+ }
370
+ if ("COLORTERM" in env) {
371
+ return 1;
372
+ }
373
+ return min;
374
+ }
375
+ function createSupportsColor(stream, options = {}) {
376
+ const level = _supportsColor(stream, {
377
+ streamIsTTY: stream && stream.isTTY,
378
+ ...options
379
+ });
380
+ return translateLevel(level);
381
+ }
382
+ var supportsColor = {
383
+ stdout: createSupportsColor({ isTTY: tty.isatty(1) }),
384
+ stderr: createSupportsColor({ isTTY: tty.isatty(2) })
385
+ };
386
+ var supports_color_default = supportsColor;
387
+
388
+ // node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js
389
+ function stringReplaceAll(string, substring, replacer) {
390
+ let index = string.indexOf(substring);
391
+ if (index === -1) {
392
+ return string;
393
+ }
394
+ const substringLength = substring.length;
395
+ let endIndex = 0;
396
+ let returnValue = "";
397
+ do {
398
+ returnValue += string.slice(endIndex, index) + substring + replacer;
399
+ endIndex = index + substringLength;
400
+ index = string.indexOf(substring, endIndex);
401
+ } while (index !== -1);
402
+ returnValue += string.slice(endIndex);
403
+ return returnValue;
404
+ }
405
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
406
+ let endIndex = 0;
407
+ let returnValue = "";
408
+ do {
409
+ const gotCR = string[index - 1] === "\r";
410
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
411
+ endIndex = index + 1;
412
+ index = string.indexOf("\n", endIndex);
413
+ } while (index !== -1);
414
+ returnValue += string.slice(endIndex);
415
+ return returnValue;
416
+ }
417
+
418
+ // node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
419
+ var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
420
+ var GENERATOR = /* @__PURE__ */ Symbol("GENERATOR");
421
+ var STYLER = /* @__PURE__ */ Symbol("STYLER");
422
+ var IS_EMPTY = /* @__PURE__ */ Symbol("IS_EMPTY");
423
+ var levelMapping = [
424
+ "ansi",
425
+ "ansi",
426
+ "ansi256",
427
+ "ansi16m"
428
+ ];
429
+ var styles2 = /* @__PURE__ */ Object.create(null);
430
+ var applyOptions = (object, options = {}) => {
431
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
432
+ throw new Error("The `level` option should be an integer from 0 to 3");
433
+ }
434
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
435
+ object.level = options.level === void 0 ? colorLevel : options.level;
436
+ };
437
+ var chalkFactory = (options) => {
438
+ const chalk2 = (...strings) => strings.join(" ");
439
+ applyOptions(chalk2, options);
440
+ Object.setPrototypeOf(chalk2, createChalk.prototype);
441
+ return chalk2;
442
+ };
443
+ function createChalk(options) {
444
+ return chalkFactory(options);
445
+ }
446
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
447
+ for (const [styleName, style] of Object.entries(ansi_styles_default)) {
448
+ styles2[styleName] = {
449
+ get() {
450
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
451
+ Object.defineProperty(this, styleName, { value: builder });
452
+ return builder;
453
+ }
454
+ };
455
+ }
456
+ styles2.visible = {
457
+ get() {
458
+ const builder = createBuilder(this, this[STYLER], true);
459
+ Object.defineProperty(this, "visible", { value: builder });
460
+ return builder;
461
+ }
462
+ };
463
+ var getModelAnsi = (model, level, type, ...arguments_) => {
464
+ if (model === "rgb") {
465
+ if (level === "ansi16m") {
466
+ return ansi_styles_default[type].ansi16m(...arguments_);
467
+ }
468
+ if (level === "ansi256") {
469
+ return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
470
+ }
471
+ return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
472
+ }
473
+ if (model === "hex") {
474
+ return getModelAnsi("rgb", level, type, ...ansi_styles_default.hexToRgb(...arguments_));
475
+ }
476
+ return ansi_styles_default[type][model](...arguments_);
477
+ };
478
+ var usedModels = ["rgb", "hex", "ansi256"];
479
+ for (const model of usedModels) {
480
+ styles2[model] = {
481
+ get() {
482
+ const { level } = this;
483
+ return function(...arguments_) {
484
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
485
+ return createBuilder(this, styler, this[IS_EMPTY]);
486
+ };
487
+ }
488
+ };
489
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
490
+ styles2[bgModel] = {
491
+ get() {
492
+ const { level } = this;
493
+ return function(...arguments_) {
494
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
495
+ return createBuilder(this, styler, this[IS_EMPTY]);
496
+ };
497
+ }
498
+ };
499
+ }
500
+ var proto = Object.defineProperties(() => {
501
+ }, {
502
+ ...styles2,
503
+ level: {
504
+ enumerable: true,
505
+ get() {
506
+ return this[GENERATOR].level;
507
+ },
508
+ set(level) {
509
+ this[GENERATOR].level = level;
510
+ }
511
+ }
512
+ });
513
+ var createStyler = (open, close, parent) => {
514
+ let openAll;
515
+ let closeAll;
516
+ if (parent === void 0) {
517
+ openAll = open;
518
+ closeAll = close;
519
+ } else {
520
+ openAll = parent.openAll + open;
521
+ closeAll = close + parent.closeAll;
522
+ }
523
+ return {
524
+ open,
525
+ close,
526
+ openAll,
527
+ closeAll,
528
+ parent
529
+ };
530
+ };
531
+ var createBuilder = (self, _styler, _isEmpty) => {
532
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
533
+ Object.setPrototypeOf(builder, proto);
534
+ builder[GENERATOR] = self;
535
+ builder[STYLER] = _styler;
536
+ builder[IS_EMPTY] = _isEmpty;
537
+ return builder;
538
+ };
539
+ var applyStyle = (self, string) => {
540
+ if (self.level <= 0 || !string) {
541
+ return self[IS_EMPTY] ? "" : string;
542
+ }
543
+ let styler = self[STYLER];
544
+ if (styler === void 0) {
545
+ return string;
546
+ }
547
+ const { openAll, closeAll } = styler;
548
+ if (string.includes("\x1B")) {
549
+ while (styler !== void 0) {
550
+ string = stringReplaceAll(string, styler.close, styler.open);
551
+ styler = styler.parent;
552
+ }
553
+ }
554
+ const lfIndex = string.indexOf("\n");
555
+ if (lfIndex !== -1) {
556
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
557
+ }
558
+ return openAll + string + closeAll;
559
+ };
560
+ Object.defineProperties(createChalk.prototype, styles2);
561
+ var chalk = createChalk();
562
+ var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
563
+ var source_default = chalk;
564
+
565
+ // node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
566
+ import process5 from "node:process";
567
+
568
+ // node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
569
+ import process4 from "node:process";
570
+
571
+ // node_modules/.pnpm/mimic-function@5.0.1/node_modules/mimic-function/index.js
572
+ var copyProperty = (to, from, property, ignoreNonConfigurable) => {
573
+ if (property === "length" || property === "prototype") {
574
+ return;
575
+ }
576
+ if (property === "arguments" || property === "caller") {
577
+ return;
578
+ }
579
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
580
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
581
+ if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
582
+ return;
583
+ }
584
+ Object.defineProperty(to, property, fromDescriptor);
585
+ };
586
+ var canCopyProperty = function(toDescriptor, fromDescriptor) {
587
+ return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
588
+ };
589
+ var changePrototype = (to, from) => {
590
+ const fromPrototype = Object.getPrototypeOf(from);
591
+ if (fromPrototype === Object.getPrototypeOf(to)) {
592
+ return;
593
+ }
594
+ Object.setPrototypeOf(to, fromPrototype);
595
+ };
596
+ var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
597
+ ${fromBody}`;
598
+ var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
599
+ var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
600
+ var changeToString = (to, from, name) => {
601
+ const withName = name === "" ? "" : `with ${name.trim()}() `;
602
+ const newToString = wrappedToString.bind(null, withName, from.toString());
603
+ Object.defineProperty(newToString, "name", toStringName);
604
+ const { writable, enumerable, configurable } = toStringDescriptor;
605
+ Object.defineProperty(to, "toString", { value: newToString, writable, enumerable, configurable });
606
+ };
607
+ function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
608
+ const { name } = to;
609
+ for (const property of Reflect.ownKeys(from)) {
610
+ copyProperty(to, from, property, ignoreNonConfigurable);
611
+ }
612
+ changePrototype(to, from);
613
+ changeToString(to, from, name);
614
+ return to;
615
+ }
616
+
617
+ // node_modules/.pnpm/onetime@7.0.0/node_modules/onetime/index.js
618
+ var calledFunctions = /* @__PURE__ */ new WeakMap();
619
+ var onetime = (function_, options = {}) => {
620
+ if (typeof function_ !== "function") {
621
+ throw new TypeError("Expected a function");
622
+ }
623
+ let returnValue;
624
+ let callCount = 0;
625
+ const functionName = function_.displayName || function_.name || "<anonymous>";
626
+ const onetime2 = function(...arguments_) {
627
+ calledFunctions.set(onetime2, ++callCount);
628
+ if (callCount === 1) {
629
+ returnValue = function_.apply(this, arguments_);
630
+ function_ = void 0;
631
+ } else if (options.throw === true) {
632
+ throw new Error(`Function \`${functionName}\` can only be called once`);
633
+ }
634
+ return returnValue;
635
+ };
636
+ mimicFunction(onetime2, function_);
637
+ calledFunctions.set(onetime2, callCount);
638
+ return onetime2;
639
+ };
640
+ onetime.callCount = (function_) => {
641
+ if (!calledFunctions.has(function_)) {
642
+ throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
643
+ }
644
+ return calledFunctions.get(function_);
645
+ };
646
+ var onetime_default = onetime;
647
+
648
+ // node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
649
+ var signals = [];
650
+ signals.push("SIGHUP", "SIGINT", "SIGTERM");
651
+ if (process.platform !== "win32") {
652
+ signals.push(
653
+ "SIGALRM",
654
+ "SIGABRT",
655
+ "SIGVTALRM",
656
+ "SIGXCPU",
657
+ "SIGXFSZ",
658
+ "SIGUSR2",
659
+ "SIGTRAP",
660
+ "SIGSYS",
661
+ "SIGQUIT",
662
+ "SIGIOT"
663
+ // should detect profiler and enable/disable accordingly.
664
+ // see #21
665
+ // 'SIGPROF'
666
+ );
667
+ }
668
+ if (process.platform === "linux") {
669
+ signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
670
+ }
671
+
672
+ // node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
673
+ var processOk = (process9) => !!process9 && typeof process9 === "object" && typeof process9.removeListener === "function" && typeof process9.emit === "function" && typeof process9.reallyExit === "function" && typeof process9.listeners === "function" && typeof process9.kill === "function" && typeof process9.pid === "number" && typeof process9.on === "function";
674
+ var kExitEmitter = /* @__PURE__ */ Symbol.for("signal-exit emitter");
675
+ var global = globalThis;
676
+ var ObjectDefineProperty = Object.defineProperty.bind(Object);
677
+ var Emitter = class {
678
+ emitted = {
679
+ afterExit: false,
680
+ exit: false
681
+ };
682
+ listeners = {
683
+ afterExit: [],
684
+ exit: []
685
+ };
686
+ count = 0;
687
+ id = Math.random();
688
+ constructor() {
689
+ if (global[kExitEmitter]) {
690
+ return global[kExitEmitter];
691
+ }
692
+ ObjectDefineProperty(global, kExitEmitter, {
693
+ value: this,
694
+ writable: false,
695
+ enumerable: false,
696
+ configurable: false
697
+ });
698
+ }
699
+ on(ev, fn) {
700
+ this.listeners[ev].push(fn);
701
+ }
702
+ removeListener(ev, fn) {
703
+ const list = this.listeners[ev];
704
+ const i = list.indexOf(fn);
705
+ if (i === -1) {
706
+ return;
707
+ }
708
+ if (i === 0 && list.length === 1) {
709
+ list.length = 0;
710
+ } else {
711
+ list.splice(i, 1);
712
+ }
713
+ }
714
+ emit(ev, code, signal) {
715
+ if (this.emitted[ev]) {
716
+ return false;
717
+ }
718
+ this.emitted[ev] = true;
719
+ let ret = false;
720
+ for (const fn of this.listeners[ev]) {
721
+ ret = fn(code, signal) === true || ret;
722
+ }
723
+ if (ev === "exit") {
724
+ ret = this.emit("afterExit", code, signal) || ret;
725
+ }
726
+ return ret;
727
+ }
728
+ };
729
+ var SignalExitBase = class {
730
+ };
731
+ var signalExitWrap = (handler) => {
732
+ return {
733
+ onExit(cb, opts) {
734
+ return handler.onExit(cb, opts);
735
+ },
736
+ load() {
737
+ return handler.load();
738
+ },
739
+ unload() {
740
+ return handler.unload();
741
+ }
742
+ };
743
+ };
744
+ var SignalExitFallback = class extends SignalExitBase {
745
+ onExit() {
746
+ return () => {
747
+ };
748
+ }
749
+ load() {
750
+ }
751
+ unload() {
752
+ }
753
+ };
754
+ var SignalExit = class extends SignalExitBase {
755
+ // "SIGHUP" throws an `ENOSYS` error on Windows,
756
+ // so use a supported signal instead
757
+ /* c8 ignore start */
758
+ #hupSig = process3.platform === "win32" ? "SIGINT" : "SIGHUP";
759
+ /* c8 ignore stop */
760
+ #emitter = new Emitter();
761
+ #process;
762
+ #originalProcessEmit;
763
+ #originalProcessReallyExit;
764
+ #sigListeners = {};
765
+ #loaded = false;
766
+ constructor(process9) {
767
+ super();
768
+ this.#process = process9;
769
+ this.#sigListeners = {};
770
+ for (const sig of signals) {
771
+ this.#sigListeners[sig] = () => {
772
+ const listeners = this.#process.listeners(sig);
773
+ let { count } = this.#emitter;
774
+ const p = process9;
775
+ if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") {
776
+ count += p.__signal_exit_emitter__.count;
777
+ }
778
+ if (listeners.length === count) {
779
+ this.unload();
780
+ const ret = this.#emitter.emit("exit", null, sig);
781
+ const s = sig === "SIGHUP" ? this.#hupSig : sig;
782
+ if (!ret)
783
+ process9.kill(process9.pid, s);
784
+ }
785
+ };
786
+ }
787
+ this.#originalProcessReallyExit = process9.reallyExit;
788
+ this.#originalProcessEmit = process9.emit;
789
+ }
790
+ onExit(cb, opts) {
791
+ if (!processOk(this.#process)) {
792
+ return () => {
793
+ };
794
+ }
795
+ if (this.#loaded === false) {
796
+ this.load();
797
+ }
798
+ const ev = opts?.alwaysLast ? "afterExit" : "exit";
799
+ this.#emitter.on(ev, cb);
800
+ return () => {
801
+ this.#emitter.removeListener(ev, cb);
802
+ if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) {
803
+ this.unload();
804
+ }
805
+ };
806
+ }
807
+ load() {
808
+ if (this.#loaded) {
809
+ return;
810
+ }
811
+ this.#loaded = true;
812
+ this.#emitter.count += 1;
813
+ for (const sig of signals) {
814
+ try {
815
+ const fn = this.#sigListeners[sig];
816
+ if (fn)
817
+ this.#process.on(sig, fn);
818
+ } catch (_) {
819
+ }
820
+ }
821
+ this.#process.emit = (ev, ...a) => {
822
+ return this.#processEmit(ev, ...a);
823
+ };
824
+ this.#process.reallyExit = (code) => {
825
+ return this.#processReallyExit(code);
826
+ };
827
+ }
828
+ unload() {
829
+ if (!this.#loaded) {
830
+ return;
831
+ }
832
+ this.#loaded = false;
833
+ signals.forEach((sig) => {
834
+ const listener = this.#sigListeners[sig];
835
+ if (!listener) {
836
+ throw new Error("Listener not defined for signal: " + sig);
837
+ }
838
+ try {
839
+ this.#process.removeListener(sig, listener);
840
+ } catch (_) {
841
+ }
842
+ });
843
+ this.#process.emit = this.#originalProcessEmit;
844
+ this.#process.reallyExit = this.#originalProcessReallyExit;
845
+ this.#emitter.count -= 1;
846
+ }
847
+ #processReallyExit(code) {
848
+ if (!processOk(this.#process)) {
849
+ return 0;
850
+ }
851
+ this.#process.exitCode = code || 0;
852
+ this.#emitter.emit("exit", this.#process.exitCode, null);
853
+ return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
854
+ }
855
+ #processEmit(ev, ...args) {
856
+ const og = this.#originalProcessEmit;
857
+ if (ev === "exit" && processOk(this.#process)) {
858
+ if (typeof args[0] === "number") {
859
+ this.#process.exitCode = args[0];
860
+ }
861
+ const ret = og.call(this.#process, ev, ...args);
862
+ this.#emitter.emit("exit", this.#process.exitCode, null);
863
+ return ret;
864
+ } else {
865
+ return og.call(this.#process, ev, ...args);
866
+ }
867
+ }
868
+ };
869
+ var process3 = globalThis.process;
870
+ var {
871
+ /**
872
+ * Called when the process is exiting, whether via signal, explicit
873
+ * exit, or running out of stuff to do.
874
+ *
875
+ * If the global process object is not suitable for instrumentation,
876
+ * then this will be a no-op.
877
+ *
878
+ * Returns a function that may be used to unload signal-exit.
879
+ */
880
+ onExit,
881
+ /**
882
+ * Load the listeners. Likely you never need to call this, unless
883
+ * doing a rather deep integration with signal-exit functionality.
884
+ * Mostly exposed for the benefit of testing.
885
+ *
886
+ * @internal
887
+ */
888
+ load,
889
+ /**
890
+ * Unload the listeners. Likely you never need to call this, unless
891
+ * doing a rather deep integration with signal-exit functionality.
892
+ * Mostly exposed for the benefit of testing.
893
+ *
894
+ * @internal
895
+ */
896
+ unload
897
+ } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback());
898
+
899
+ // node_modules/.pnpm/restore-cursor@5.1.0/node_modules/restore-cursor/index.js
900
+ var terminal = process4.stderr.isTTY ? process4.stderr : process4.stdout.isTTY ? process4.stdout : void 0;
901
+ var restoreCursor = terminal ? onetime_default(() => {
902
+ onExit(() => {
903
+ terminal.write("\x1B[?25h");
904
+ }, { alwaysLast: true });
905
+ }) : () => {
906
+ };
907
+ var restore_cursor_default = restoreCursor;
908
+
909
+ // node_modules/.pnpm/cli-cursor@5.0.0/node_modules/cli-cursor/index.js
910
+ var isHidden = false;
911
+ var cliCursor = {};
912
+ cliCursor.show = (writableStream = process5.stderr) => {
913
+ if (!writableStream.isTTY) {
914
+ return;
915
+ }
916
+ isHidden = false;
917
+ writableStream.write("\x1B[?25h");
918
+ };
919
+ cliCursor.hide = (writableStream = process5.stderr) => {
920
+ if (!writableStream.isTTY) {
921
+ return;
922
+ }
923
+ restore_cursor_default();
924
+ isHidden = true;
925
+ writableStream.write("\x1B[?25l");
926
+ };
927
+ cliCursor.toggle = (force, writableStream) => {
928
+ if (force !== void 0) {
929
+ isHidden = force;
930
+ }
931
+ if (isHidden) {
932
+ cliCursor.show(writableStream);
933
+ } else {
934
+ cliCursor.hide(writableStream);
935
+ }
936
+ };
937
+ var cli_cursor_default = cliCursor;
938
+
939
+ // node_modules/.pnpm/cli-spinners@3.4.0/node_modules/cli-spinners/spinners.json
940
+ var spinners_default = {
941
+ dots: {
942
+ interval: 80,
943
+ frames: [
944
+ "\u280B",
945
+ "\u2819",
946
+ "\u2839",
947
+ "\u2838",
948
+ "\u283C",
949
+ "\u2834",
950
+ "\u2826",
951
+ "\u2827",
952
+ "\u2807",
953
+ "\u280F"
954
+ ]
955
+ },
956
+ dots2: {
957
+ interval: 80,
958
+ frames: [
959
+ "\u28FE",
960
+ "\u28FD",
961
+ "\u28FB",
962
+ "\u28BF",
963
+ "\u287F",
964
+ "\u28DF",
965
+ "\u28EF",
966
+ "\u28F7"
967
+ ]
968
+ },
969
+ dots3: {
970
+ interval: 80,
971
+ frames: [
972
+ "\u280B",
973
+ "\u2819",
974
+ "\u281A",
975
+ "\u281E",
976
+ "\u2816",
977
+ "\u2826",
978
+ "\u2834",
979
+ "\u2832",
980
+ "\u2833",
981
+ "\u2813"
982
+ ]
983
+ },
984
+ dots4: {
985
+ interval: 80,
986
+ frames: [
987
+ "\u2804",
988
+ "\u2806",
989
+ "\u2807",
990
+ "\u280B",
991
+ "\u2819",
992
+ "\u2838",
993
+ "\u2830",
994
+ "\u2820",
995
+ "\u2830",
996
+ "\u2838",
997
+ "\u2819",
998
+ "\u280B",
999
+ "\u2807",
1000
+ "\u2806"
1001
+ ]
1002
+ },
1003
+ dots5: {
1004
+ interval: 80,
1005
+ frames: [
1006
+ "\u280B",
1007
+ "\u2819",
1008
+ "\u281A",
1009
+ "\u2812",
1010
+ "\u2802",
1011
+ "\u2802",
1012
+ "\u2812",
1013
+ "\u2832",
1014
+ "\u2834",
1015
+ "\u2826",
1016
+ "\u2816",
1017
+ "\u2812",
1018
+ "\u2810",
1019
+ "\u2810",
1020
+ "\u2812",
1021
+ "\u2813",
1022
+ "\u280B"
1023
+ ]
1024
+ },
1025
+ dots6: {
1026
+ interval: 80,
1027
+ frames: [
1028
+ "\u2801",
1029
+ "\u2809",
1030
+ "\u2819",
1031
+ "\u281A",
1032
+ "\u2812",
1033
+ "\u2802",
1034
+ "\u2802",
1035
+ "\u2812",
1036
+ "\u2832",
1037
+ "\u2834",
1038
+ "\u2824",
1039
+ "\u2804",
1040
+ "\u2804",
1041
+ "\u2824",
1042
+ "\u2834",
1043
+ "\u2832",
1044
+ "\u2812",
1045
+ "\u2802",
1046
+ "\u2802",
1047
+ "\u2812",
1048
+ "\u281A",
1049
+ "\u2819",
1050
+ "\u2809",
1051
+ "\u2801"
1052
+ ]
1053
+ },
1054
+ dots7: {
1055
+ interval: 80,
1056
+ frames: [
1057
+ "\u2808",
1058
+ "\u2809",
1059
+ "\u280B",
1060
+ "\u2813",
1061
+ "\u2812",
1062
+ "\u2810",
1063
+ "\u2810",
1064
+ "\u2812",
1065
+ "\u2816",
1066
+ "\u2826",
1067
+ "\u2824",
1068
+ "\u2820",
1069
+ "\u2820",
1070
+ "\u2824",
1071
+ "\u2826",
1072
+ "\u2816",
1073
+ "\u2812",
1074
+ "\u2810",
1075
+ "\u2810",
1076
+ "\u2812",
1077
+ "\u2813",
1078
+ "\u280B",
1079
+ "\u2809",
1080
+ "\u2808"
1081
+ ]
1082
+ },
1083
+ dots8: {
1084
+ interval: 80,
1085
+ frames: [
1086
+ "\u2801",
1087
+ "\u2801",
1088
+ "\u2809",
1089
+ "\u2819",
1090
+ "\u281A",
1091
+ "\u2812",
1092
+ "\u2802",
1093
+ "\u2802",
1094
+ "\u2812",
1095
+ "\u2832",
1096
+ "\u2834",
1097
+ "\u2824",
1098
+ "\u2804",
1099
+ "\u2804",
1100
+ "\u2824",
1101
+ "\u2820",
1102
+ "\u2820",
1103
+ "\u2824",
1104
+ "\u2826",
1105
+ "\u2816",
1106
+ "\u2812",
1107
+ "\u2810",
1108
+ "\u2810",
1109
+ "\u2812",
1110
+ "\u2813",
1111
+ "\u280B",
1112
+ "\u2809",
1113
+ "\u2808",
1114
+ "\u2808"
1115
+ ]
1116
+ },
1117
+ dots9: {
1118
+ interval: 80,
1119
+ frames: [
1120
+ "\u28B9",
1121
+ "\u28BA",
1122
+ "\u28BC",
1123
+ "\u28F8",
1124
+ "\u28C7",
1125
+ "\u2867",
1126
+ "\u2857",
1127
+ "\u284F"
1128
+ ]
1129
+ },
1130
+ dots10: {
1131
+ interval: 80,
1132
+ frames: [
1133
+ "\u2884",
1134
+ "\u2882",
1135
+ "\u2881",
1136
+ "\u2841",
1137
+ "\u2848",
1138
+ "\u2850",
1139
+ "\u2860"
1140
+ ]
1141
+ },
1142
+ dots11: {
1143
+ interval: 100,
1144
+ frames: [
1145
+ "\u2801",
1146
+ "\u2802",
1147
+ "\u2804",
1148
+ "\u2840",
1149
+ "\u2880",
1150
+ "\u2820",
1151
+ "\u2810",
1152
+ "\u2808"
1153
+ ]
1154
+ },
1155
+ dots12: {
1156
+ interval: 80,
1157
+ frames: [
1158
+ "\u2880\u2800",
1159
+ "\u2840\u2800",
1160
+ "\u2804\u2800",
1161
+ "\u2882\u2800",
1162
+ "\u2842\u2800",
1163
+ "\u2805\u2800",
1164
+ "\u2883\u2800",
1165
+ "\u2843\u2800",
1166
+ "\u280D\u2800",
1167
+ "\u288B\u2800",
1168
+ "\u284B\u2800",
1169
+ "\u280D\u2801",
1170
+ "\u288B\u2801",
1171
+ "\u284B\u2801",
1172
+ "\u280D\u2809",
1173
+ "\u280B\u2809",
1174
+ "\u280B\u2809",
1175
+ "\u2809\u2819",
1176
+ "\u2809\u2819",
1177
+ "\u2809\u2829",
1178
+ "\u2808\u2899",
1179
+ "\u2808\u2859",
1180
+ "\u2888\u2829",
1181
+ "\u2840\u2899",
1182
+ "\u2804\u2859",
1183
+ "\u2882\u2829",
1184
+ "\u2842\u2898",
1185
+ "\u2805\u2858",
1186
+ "\u2883\u2828",
1187
+ "\u2843\u2890",
1188
+ "\u280D\u2850",
1189
+ "\u288B\u2820",
1190
+ "\u284B\u2880",
1191
+ "\u280D\u2841",
1192
+ "\u288B\u2801",
1193
+ "\u284B\u2801",
1194
+ "\u280D\u2809",
1195
+ "\u280B\u2809",
1196
+ "\u280B\u2809",
1197
+ "\u2809\u2819",
1198
+ "\u2809\u2819",
1199
+ "\u2809\u2829",
1200
+ "\u2808\u2899",
1201
+ "\u2808\u2859",
1202
+ "\u2808\u2829",
1203
+ "\u2800\u2899",
1204
+ "\u2800\u2859",
1205
+ "\u2800\u2829",
1206
+ "\u2800\u2898",
1207
+ "\u2800\u2858",
1208
+ "\u2800\u2828",
1209
+ "\u2800\u2890",
1210
+ "\u2800\u2850",
1211
+ "\u2800\u2820",
1212
+ "\u2800\u2880",
1213
+ "\u2800\u2840"
1214
+ ]
1215
+ },
1216
+ dots13: {
1217
+ interval: 80,
1218
+ frames: [
1219
+ "\u28FC",
1220
+ "\u28F9",
1221
+ "\u28BB",
1222
+ "\u283F",
1223
+ "\u285F",
1224
+ "\u28CF",
1225
+ "\u28E7",
1226
+ "\u28F6"
1227
+ ]
1228
+ },
1229
+ dots14: {
1230
+ interval: 80,
1231
+ frames: [
1232
+ "\u2809\u2809",
1233
+ "\u2808\u2819",
1234
+ "\u2800\u2839",
1235
+ "\u2800\u28B8",
1236
+ "\u2800\u28F0",
1237
+ "\u2880\u28E0",
1238
+ "\u28C0\u28C0",
1239
+ "\u28C4\u2840",
1240
+ "\u28C6\u2800",
1241
+ "\u2847\u2800",
1242
+ "\u280F\u2800",
1243
+ "\u280B\u2801"
1244
+ ]
1245
+ },
1246
+ dots8Bit: {
1247
+ interval: 80,
1248
+ frames: [
1249
+ "\u2800",
1250
+ "\u2801",
1251
+ "\u2802",
1252
+ "\u2803",
1253
+ "\u2804",
1254
+ "\u2805",
1255
+ "\u2806",
1256
+ "\u2807",
1257
+ "\u2840",
1258
+ "\u2841",
1259
+ "\u2842",
1260
+ "\u2843",
1261
+ "\u2844",
1262
+ "\u2845",
1263
+ "\u2846",
1264
+ "\u2847",
1265
+ "\u2808",
1266
+ "\u2809",
1267
+ "\u280A",
1268
+ "\u280B",
1269
+ "\u280C",
1270
+ "\u280D",
1271
+ "\u280E",
1272
+ "\u280F",
1273
+ "\u2848",
1274
+ "\u2849",
1275
+ "\u284A",
1276
+ "\u284B",
1277
+ "\u284C",
1278
+ "\u284D",
1279
+ "\u284E",
1280
+ "\u284F",
1281
+ "\u2810",
1282
+ "\u2811",
1283
+ "\u2812",
1284
+ "\u2813",
1285
+ "\u2814",
1286
+ "\u2815",
1287
+ "\u2816",
1288
+ "\u2817",
1289
+ "\u2850",
1290
+ "\u2851",
1291
+ "\u2852",
1292
+ "\u2853",
1293
+ "\u2854",
1294
+ "\u2855",
1295
+ "\u2856",
1296
+ "\u2857",
1297
+ "\u2818",
1298
+ "\u2819",
1299
+ "\u281A",
1300
+ "\u281B",
1301
+ "\u281C",
1302
+ "\u281D",
1303
+ "\u281E",
1304
+ "\u281F",
1305
+ "\u2858",
1306
+ "\u2859",
1307
+ "\u285A",
1308
+ "\u285B",
1309
+ "\u285C",
1310
+ "\u285D",
1311
+ "\u285E",
1312
+ "\u285F",
1313
+ "\u2820",
1314
+ "\u2821",
1315
+ "\u2822",
1316
+ "\u2823",
1317
+ "\u2824",
1318
+ "\u2825",
1319
+ "\u2826",
1320
+ "\u2827",
1321
+ "\u2860",
1322
+ "\u2861",
1323
+ "\u2862",
1324
+ "\u2863",
1325
+ "\u2864",
1326
+ "\u2865",
1327
+ "\u2866",
1328
+ "\u2867",
1329
+ "\u2828",
1330
+ "\u2829",
1331
+ "\u282A",
1332
+ "\u282B",
1333
+ "\u282C",
1334
+ "\u282D",
1335
+ "\u282E",
1336
+ "\u282F",
1337
+ "\u2868",
1338
+ "\u2869",
1339
+ "\u286A",
1340
+ "\u286B",
1341
+ "\u286C",
1342
+ "\u286D",
1343
+ "\u286E",
1344
+ "\u286F",
1345
+ "\u2830",
1346
+ "\u2831",
1347
+ "\u2832",
1348
+ "\u2833",
1349
+ "\u2834",
1350
+ "\u2835",
1351
+ "\u2836",
1352
+ "\u2837",
1353
+ "\u2870",
1354
+ "\u2871",
1355
+ "\u2872",
1356
+ "\u2873",
1357
+ "\u2874",
1358
+ "\u2875",
1359
+ "\u2876",
1360
+ "\u2877",
1361
+ "\u2838",
1362
+ "\u2839",
1363
+ "\u283A",
1364
+ "\u283B",
1365
+ "\u283C",
1366
+ "\u283D",
1367
+ "\u283E",
1368
+ "\u283F",
1369
+ "\u2878",
1370
+ "\u2879",
1371
+ "\u287A",
1372
+ "\u287B",
1373
+ "\u287C",
1374
+ "\u287D",
1375
+ "\u287E",
1376
+ "\u287F",
1377
+ "\u2880",
1378
+ "\u2881",
1379
+ "\u2882",
1380
+ "\u2883",
1381
+ "\u2884",
1382
+ "\u2885",
1383
+ "\u2886",
1384
+ "\u2887",
1385
+ "\u28C0",
1386
+ "\u28C1",
1387
+ "\u28C2",
1388
+ "\u28C3",
1389
+ "\u28C4",
1390
+ "\u28C5",
1391
+ "\u28C6",
1392
+ "\u28C7",
1393
+ "\u2888",
1394
+ "\u2889",
1395
+ "\u288A",
1396
+ "\u288B",
1397
+ "\u288C",
1398
+ "\u288D",
1399
+ "\u288E",
1400
+ "\u288F",
1401
+ "\u28C8",
1402
+ "\u28C9",
1403
+ "\u28CA",
1404
+ "\u28CB",
1405
+ "\u28CC",
1406
+ "\u28CD",
1407
+ "\u28CE",
1408
+ "\u28CF",
1409
+ "\u2890",
1410
+ "\u2891",
1411
+ "\u2892",
1412
+ "\u2893",
1413
+ "\u2894",
1414
+ "\u2895",
1415
+ "\u2896",
1416
+ "\u2897",
1417
+ "\u28D0",
1418
+ "\u28D1",
1419
+ "\u28D2",
1420
+ "\u28D3",
1421
+ "\u28D4",
1422
+ "\u28D5",
1423
+ "\u28D6",
1424
+ "\u28D7",
1425
+ "\u2898",
1426
+ "\u2899",
1427
+ "\u289A",
1428
+ "\u289B",
1429
+ "\u289C",
1430
+ "\u289D",
1431
+ "\u289E",
1432
+ "\u289F",
1433
+ "\u28D8",
1434
+ "\u28D9",
1435
+ "\u28DA",
1436
+ "\u28DB",
1437
+ "\u28DC",
1438
+ "\u28DD",
1439
+ "\u28DE",
1440
+ "\u28DF",
1441
+ "\u28A0",
1442
+ "\u28A1",
1443
+ "\u28A2",
1444
+ "\u28A3",
1445
+ "\u28A4",
1446
+ "\u28A5",
1447
+ "\u28A6",
1448
+ "\u28A7",
1449
+ "\u28E0",
1450
+ "\u28E1",
1451
+ "\u28E2",
1452
+ "\u28E3",
1453
+ "\u28E4",
1454
+ "\u28E5",
1455
+ "\u28E6",
1456
+ "\u28E7",
1457
+ "\u28A8",
1458
+ "\u28A9",
1459
+ "\u28AA",
1460
+ "\u28AB",
1461
+ "\u28AC",
1462
+ "\u28AD",
1463
+ "\u28AE",
1464
+ "\u28AF",
1465
+ "\u28E8",
1466
+ "\u28E9",
1467
+ "\u28EA",
1468
+ "\u28EB",
1469
+ "\u28EC",
1470
+ "\u28ED",
1471
+ "\u28EE",
1472
+ "\u28EF",
1473
+ "\u28B0",
1474
+ "\u28B1",
1475
+ "\u28B2",
1476
+ "\u28B3",
1477
+ "\u28B4",
1478
+ "\u28B5",
1479
+ "\u28B6",
1480
+ "\u28B7",
1481
+ "\u28F0",
1482
+ "\u28F1",
1483
+ "\u28F2",
1484
+ "\u28F3",
1485
+ "\u28F4",
1486
+ "\u28F5",
1487
+ "\u28F6",
1488
+ "\u28F7",
1489
+ "\u28B8",
1490
+ "\u28B9",
1491
+ "\u28BA",
1492
+ "\u28BB",
1493
+ "\u28BC",
1494
+ "\u28BD",
1495
+ "\u28BE",
1496
+ "\u28BF",
1497
+ "\u28F8",
1498
+ "\u28F9",
1499
+ "\u28FA",
1500
+ "\u28FB",
1501
+ "\u28FC",
1502
+ "\u28FD",
1503
+ "\u28FE",
1504
+ "\u28FF"
1505
+ ]
1506
+ },
1507
+ dotsCircle: {
1508
+ interval: 80,
1509
+ frames: [
1510
+ "\u288E ",
1511
+ "\u280E\u2801",
1512
+ "\u280A\u2811",
1513
+ "\u2808\u2831",
1514
+ " \u2871",
1515
+ "\u2880\u2870",
1516
+ "\u2884\u2860",
1517
+ "\u2886\u2840"
1518
+ ]
1519
+ },
1520
+ sand: {
1521
+ interval: 80,
1522
+ frames: [
1523
+ "\u2801",
1524
+ "\u2802",
1525
+ "\u2804",
1526
+ "\u2840",
1527
+ "\u2848",
1528
+ "\u2850",
1529
+ "\u2860",
1530
+ "\u28C0",
1531
+ "\u28C1",
1532
+ "\u28C2",
1533
+ "\u28C4",
1534
+ "\u28CC",
1535
+ "\u28D4",
1536
+ "\u28E4",
1537
+ "\u28E5",
1538
+ "\u28E6",
1539
+ "\u28EE",
1540
+ "\u28F6",
1541
+ "\u28F7",
1542
+ "\u28FF",
1543
+ "\u287F",
1544
+ "\u283F",
1545
+ "\u289F",
1546
+ "\u281F",
1547
+ "\u285B",
1548
+ "\u281B",
1549
+ "\u282B",
1550
+ "\u288B",
1551
+ "\u280B",
1552
+ "\u280D",
1553
+ "\u2849",
1554
+ "\u2809",
1555
+ "\u2811",
1556
+ "\u2821",
1557
+ "\u2881"
1558
+ ]
1559
+ },
1560
+ line: {
1561
+ interval: 130,
1562
+ frames: [
1563
+ "-",
1564
+ "\\",
1565
+ "|",
1566
+ "/"
1567
+ ]
1568
+ },
1569
+ line2: {
1570
+ interval: 100,
1571
+ frames: [
1572
+ "\u2802",
1573
+ "-",
1574
+ "\u2013",
1575
+ "\u2014",
1576
+ "\u2013",
1577
+ "-"
1578
+ ]
1579
+ },
1580
+ rollingLine: {
1581
+ interval: 80,
1582
+ frames: [
1583
+ "/ ",
1584
+ " - ",
1585
+ " \\ ",
1586
+ " |",
1587
+ " |",
1588
+ " \\ ",
1589
+ " - ",
1590
+ "/ "
1591
+ ]
1592
+ },
1593
+ pipe: {
1594
+ interval: 100,
1595
+ frames: [
1596
+ "\u2524",
1597
+ "\u2518",
1598
+ "\u2534",
1599
+ "\u2514",
1600
+ "\u251C",
1601
+ "\u250C",
1602
+ "\u252C",
1603
+ "\u2510"
1604
+ ]
1605
+ },
1606
+ simpleDots: {
1607
+ interval: 400,
1608
+ frames: [
1609
+ ". ",
1610
+ ".. ",
1611
+ "...",
1612
+ " "
1613
+ ]
1614
+ },
1615
+ simpleDotsScrolling: {
1616
+ interval: 200,
1617
+ frames: [
1618
+ ". ",
1619
+ ".. ",
1620
+ "...",
1621
+ " ..",
1622
+ " .",
1623
+ " "
1624
+ ]
1625
+ },
1626
+ star: {
1627
+ interval: 70,
1628
+ frames: [
1629
+ "\u2736",
1630
+ "\u2738",
1631
+ "\u2739",
1632
+ "\u273A",
1633
+ "\u2739",
1634
+ "\u2737"
1635
+ ]
1636
+ },
1637
+ star2: {
1638
+ interval: 80,
1639
+ frames: [
1640
+ "+",
1641
+ "x",
1642
+ "*"
1643
+ ]
1644
+ },
1645
+ flip: {
1646
+ interval: 70,
1647
+ frames: [
1648
+ "_",
1649
+ "_",
1650
+ "_",
1651
+ "-",
1652
+ "`",
1653
+ "`",
1654
+ "'",
1655
+ "\xB4",
1656
+ "-",
1657
+ "_",
1658
+ "_",
1659
+ "_"
1660
+ ]
1661
+ },
1662
+ hamburger: {
1663
+ interval: 100,
1664
+ frames: [
1665
+ "\u2631",
1666
+ "\u2632",
1667
+ "\u2634"
1668
+ ]
1669
+ },
1670
+ growVertical: {
1671
+ interval: 120,
1672
+ frames: [
1673
+ "\u2581",
1674
+ "\u2583",
1675
+ "\u2584",
1676
+ "\u2585",
1677
+ "\u2586",
1678
+ "\u2587",
1679
+ "\u2586",
1680
+ "\u2585",
1681
+ "\u2584",
1682
+ "\u2583"
1683
+ ]
1684
+ },
1685
+ growHorizontal: {
1686
+ interval: 120,
1687
+ frames: [
1688
+ "\u258F",
1689
+ "\u258E",
1690
+ "\u258D",
1691
+ "\u258C",
1692
+ "\u258B",
1693
+ "\u258A",
1694
+ "\u2589",
1695
+ "\u258A",
1696
+ "\u258B",
1697
+ "\u258C",
1698
+ "\u258D",
1699
+ "\u258E"
1700
+ ]
1701
+ },
1702
+ balloon: {
1703
+ interval: 140,
1704
+ frames: [
1705
+ " ",
1706
+ ".",
1707
+ "o",
1708
+ "O",
1709
+ "@",
1710
+ "*",
1711
+ " "
1712
+ ]
1713
+ },
1714
+ balloon2: {
1715
+ interval: 120,
1716
+ frames: [
1717
+ ".",
1718
+ "o",
1719
+ "O",
1720
+ "\xB0",
1721
+ "O",
1722
+ "o",
1723
+ "."
1724
+ ]
1725
+ },
1726
+ noise: {
1727
+ interval: 100,
1728
+ frames: [
1729
+ "\u2593",
1730
+ "\u2592",
1731
+ "\u2591"
1732
+ ]
1733
+ },
1734
+ bounce: {
1735
+ interval: 120,
1736
+ frames: [
1737
+ "\u2801",
1738
+ "\u2802",
1739
+ "\u2804",
1740
+ "\u2802"
1741
+ ]
1742
+ },
1743
+ boxBounce: {
1744
+ interval: 120,
1745
+ frames: [
1746
+ "\u2596",
1747
+ "\u2598",
1748
+ "\u259D",
1749
+ "\u2597"
1750
+ ]
1751
+ },
1752
+ boxBounce2: {
1753
+ interval: 100,
1754
+ frames: [
1755
+ "\u258C",
1756
+ "\u2580",
1757
+ "\u2590",
1758
+ "\u2584"
1759
+ ]
1760
+ },
1761
+ triangle: {
1762
+ interval: 50,
1763
+ frames: [
1764
+ "\u25E2",
1765
+ "\u25E3",
1766
+ "\u25E4",
1767
+ "\u25E5"
1768
+ ]
1769
+ },
1770
+ binary: {
1771
+ interval: 80,
1772
+ frames: [
1773
+ "010010",
1774
+ "001100",
1775
+ "100101",
1776
+ "111010",
1777
+ "111101",
1778
+ "010111",
1779
+ "101011",
1780
+ "111000",
1781
+ "110011",
1782
+ "110101"
1783
+ ]
1784
+ },
1785
+ arc: {
1786
+ interval: 100,
1787
+ frames: [
1788
+ "\u25DC",
1789
+ "\u25E0",
1790
+ "\u25DD",
1791
+ "\u25DE",
1792
+ "\u25E1",
1793
+ "\u25DF"
1794
+ ]
1795
+ },
1796
+ circle: {
1797
+ interval: 120,
1798
+ frames: [
1799
+ "\u25E1",
1800
+ "\u2299",
1801
+ "\u25E0"
1802
+ ]
1803
+ },
1804
+ squareCorners: {
1805
+ interval: 180,
1806
+ frames: [
1807
+ "\u25F0",
1808
+ "\u25F3",
1809
+ "\u25F2",
1810
+ "\u25F1"
1811
+ ]
1812
+ },
1813
+ circleQuarters: {
1814
+ interval: 120,
1815
+ frames: [
1816
+ "\u25F4",
1817
+ "\u25F7",
1818
+ "\u25F6",
1819
+ "\u25F5"
1820
+ ]
1821
+ },
1822
+ circleHalves: {
1823
+ interval: 50,
1824
+ frames: [
1825
+ "\u25D0",
1826
+ "\u25D3",
1827
+ "\u25D1",
1828
+ "\u25D2"
1829
+ ]
1830
+ },
1831
+ squish: {
1832
+ interval: 100,
1833
+ frames: [
1834
+ "\u256B",
1835
+ "\u256A"
1836
+ ]
1837
+ },
1838
+ toggle: {
1839
+ interval: 250,
1840
+ frames: [
1841
+ "\u22B6",
1842
+ "\u22B7"
1843
+ ]
1844
+ },
1845
+ toggle2: {
1846
+ interval: 80,
1847
+ frames: [
1848
+ "\u25AB",
1849
+ "\u25AA"
1850
+ ]
1851
+ },
1852
+ toggle3: {
1853
+ interval: 120,
1854
+ frames: [
1855
+ "\u25A1",
1856
+ "\u25A0"
1857
+ ]
1858
+ },
1859
+ toggle4: {
1860
+ interval: 100,
1861
+ frames: [
1862
+ "\u25A0",
1863
+ "\u25A1",
1864
+ "\u25AA",
1865
+ "\u25AB"
1866
+ ]
1867
+ },
1868
+ toggle5: {
1869
+ interval: 100,
1870
+ frames: [
1871
+ "\u25AE",
1872
+ "\u25AF"
1873
+ ]
1874
+ },
1875
+ toggle6: {
1876
+ interval: 300,
1877
+ frames: [
1878
+ "\u101D",
1879
+ "\u1040"
1880
+ ]
1881
+ },
1882
+ toggle7: {
1883
+ interval: 80,
1884
+ frames: [
1885
+ "\u29BE",
1886
+ "\u29BF"
1887
+ ]
1888
+ },
1889
+ toggle8: {
1890
+ interval: 100,
1891
+ frames: [
1892
+ "\u25CD",
1893
+ "\u25CC"
1894
+ ]
1895
+ },
1896
+ toggle9: {
1897
+ interval: 100,
1898
+ frames: [
1899
+ "\u25C9",
1900
+ "\u25CE"
1901
+ ]
1902
+ },
1903
+ toggle10: {
1904
+ interval: 100,
1905
+ frames: [
1906
+ "\u3282",
1907
+ "\u3280",
1908
+ "\u3281"
1909
+ ]
1910
+ },
1911
+ toggle11: {
1912
+ interval: 50,
1913
+ frames: [
1914
+ "\u29C7",
1915
+ "\u29C6"
1916
+ ]
1917
+ },
1918
+ toggle12: {
1919
+ interval: 120,
1920
+ frames: [
1921
+ "\u2617",
1922
+ "\u2616"
1923
+ ]
1924
+ },
1925
+ toggle13: {
1926
+ interval: 80,
1927
+ frames: [
1928
+ "=",
1929
+ "*",
1930
+ "-"
1931
+ ]
1932
+ },
1933
+ arrow: {
1934
+ interval: 100,
1935
+ frames: [
1936
+ "\u2190",
1937
+ "\u2196",
1938
+ "\u2191",
1939
+ "\u2197",
1940
+ "\u2192",
1941
+ "\u2198",
1942
+ "\u2193",
1943
+ "\u2199"
1944
+ ]
1945
+ },
1946
+ arrow2: {
1947
+ interval: 80,
1948
+ frames: [
1949
+ "\u2B06\uFE0F ",
1950
+ "\u2197\uFE0F ",
1951
+ "\u27A1\uFE0F ",
1952
+ "\u2198\uFE0F ",
1953
+ "\u2B07\uFE0F ",
1954
+ "\u2199\uFE0F ",
1955
+ "\u2B05\uFE0F ",
1956
+ "\u2196\uFE0F "
1957
+ ]
1958
+ },
1959
+ arrow3: {
1960
+ interval: 120,
1961
+ frames: [
1962
+ "\u25B9\u25B9\u25B9\u25B9\u25B9",
1963
+ "\u25B8\u25B9\u25B9\u25B9\u25B9",
1964
+ "\u25B9\u25B8\u25B9\u25B9\u25B9",
1965
+ "\u25B9\u25B9\u25B8\u25B9\u25B9",
1966
+ "\u25B9\u25B9\u25B9\u25B8\u25B9",
1967
+ "\u25B9\u25B9\u25B9\u25B9\u25B8"
1968
+ ]
1969
+ },
1970
+ bouncingBar: {
1971
+ interval: 80,
1972
+ frames: [
1973
+ "[ ]",
1974
+ "[= ]",
1975
+ "[== ]",
1976
+ "[=== ]",
1977
+ "[====]",
1978
+ "[ ===]",
1979
+ "[ ==]",
1980
+ "[ =]",
1981
+ "[ ]",
1982
+ "[ =]",
1983
+ "[ ==]",
1984
+ "[ ===]",
1985
+ "[====]",
1986
+ "[=== ]",
1987
+ "[== ]",
1988
+ "[= ]"
1989
+ ]
1990
+ },
1991
+ bouncingBall: {
1992
+ interval: 80,
1993
+ frames: [
1994
+ "( \u25CF )",
1995
+ "( \u25CF )",
1996
+ "( \u25CF )",
1997
+ "( \u25CF )",
1998
+ "( \u25CF)",
1999
+ "( \u25CF )",
2000
+ "( \u25CF )",
2001
+ "( \u25CF )",
2002
+ "( \u25CF )",
2003
+ "(\u25CF )"
2004
+ ]
2005
+ },
2006
+ smiley: {
2007
+ interval: 200,
2008
+ frames: [
2009
+ "\u{1F604} ",
2010
+ "\u{1F61D} "
2011
+ ]
2012
+ },
2013
+ monkey: {
2014
+ interval: 300,
2015
+ frames: [
2016
+ "\u{1F648} ",
2017
+ "\u{1F648} ",
2018
+ "\u{1F649} ",
2019
+ "\u{1F64A} "
2020
+ ]
2021
+ },
2022
+ hearts: {
2023
+ interval: 100,
2024
+ frames: [
2025
+ "\u{1F49B} ",
2026
+ "\u{1F499} ",
2027
+ "\u{1F49C} ",
2028
+ "\u{1F49A} ",
2029
+ "\u{1F497} "
2030
+ ]
2031
+ },
2032
+ clock: {
2033
+ interval: 100,
2034
+ frames: [
2035
+ "\u{1F55B} ",
2036
+ "\u{1F550} ",
2037
+ "\u{1F551} ",
2038
+ "\u{1F552} ",
2039
+ "\u{1F553} ",
2040
+ "\u{1F554} ",
2041
+ "\u{1F555} ",
2042
+ "\u{1F556} ",
2043
+ "\u{1F557} ",
2044
+ "\u{1F558} ",
2045
+ "\u{1F559} ",
2046
+ "\u{1F55A} "
2047
+ ]
2048
+ },
2049
+ earth: {
2050
+ interval: 180,
2051
+ frames: [
2052
+ "\u{1F30D} ",
2053
+ "\u{1F30E} ",
2054
+ "\u{1F30F} "
2055
+ ]
2056
+ },
2057
+ material: {
2058
+ interval: 17,
2059
+ frames: [
2060
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2061
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2062
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2063
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2064
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2065
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2066
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2067
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2068
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2069
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2070
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2071
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2072
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2073
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2074
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2075
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2076
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2077
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2078
+ "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
2079
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2080
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2081
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2082
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2083
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2084
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2085
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2086
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2087
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2088
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2089
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2090
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2091
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2092
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2093
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2094
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2095
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2096
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2097
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2098
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
2099
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2100
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2101
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2102
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2103
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2104
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2105
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2106
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2107
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2108
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2109
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2110
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2111
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2112
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2113
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2114
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2115
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2116
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2117
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2118
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
2119
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2120
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
2121
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
2122
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2123
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2124
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2125
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2126
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
2127
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2128
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
2129
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2130
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2131
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2132
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2133
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
2134
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2135
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
2136
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
2137
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2138
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2139
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
2140
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2141
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
2142
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2143
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2144
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
2145
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2146
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2147
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
2148
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2149
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2150
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
2151
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
2152
+ ]
2153
+ },
2154
+ moon: {
2155
+ interval: 80,
2156
+ frames: [
2157
+ "\u{1F311} ",
2158
+ "\u{1F312} ",
2159
+ "\u{1F313} ",
2160
+ "\u{1F314} ",
2161
+ "\u{1F315} ",
2162
+ "\u{1F316} ",
2163
+ "\u{1F317} ",
2164
+ "\u{1F318} "
2165
+ ]
2166
+ },
2167
+ runner: {
2168
+ interval: 140,
2169
+ frames: [
2170
+ "\u{1F6B6} ",
2171
+ "\u{1F3C3} "
2172
+ ]
2173
+ },
2174
+ pong: {
2175
+ interval: 80,
2176
+ frames: [
2177
+ "\u2590\u2802 \u258C",
2178
+ "\u2590\u2808 \u258C",
2179
+ "\u2590 \u2802 \u258C",
2180
+ "\u2590 \u2820 \u258C",
2181
+ "\u2590 \u2840 \u258C",
2182
+ "\u2590 \u2820 \u258C",
2183
+ "\u2590 \u2802 \u258C",
2184
+ "\u2590 \u2808 \u258C",
2185
+ "\u2590 \u2802 \u258C",
2186
+ "\u2590 \u2820 \u258C",
2187
+ "\u2590 \u2840 \u258C",
2188
+ "\u2590 \u2820 \u258C",
2189
+ "\u2590 \u2802 \u258C",
2190
+ "\u2590 \u2808 \u258C",
2191
+ "\u2590 \u2802\u258C",
2192
+ "\u2590 \u2820\u258C",
2193
+ "\u2590 \u2840\u258C",
2194
+ "\u2590 \u2820 \u258C",
2195
+ "\u2590 \u2802 \u258C",
2196
+ "\u2590 \u2808 \u258C",
2197
+ "\u2590 \u2802 \u258C",
2198
+ "\u2590 \u2820 \u258C",
2199
+ "\u2590 \u2840 \u258C",
2200
+ "\u2590 \u2820 \u258C",
2201
+ "\u2590 \u2802 \u258C",
2202
+ "\u2590 \u2808 \u258C",
2203
+ "\u2590 \u2802 \u258C",
2204
+ "\u2590 \u2820 \u258C",
2205
+ "\u2590 \u2840 \u258C",
2206
+ "\u2590\u2820 \u258C"
2207
+ ]
2208
+ },
2209
+ shark: {
2210
+ interval: 120,
2211
+ frames: [
2212
+ "\u2590|\\____________\u258C",
2213
+ "\u2590_|\\___________\u258C",
2214
+ "\u2590__|\\__________\u258C",
2215
+ "\u2590___|\\_________\u258C",
2216
+ "\u2590____|\\________\u258C",
2217
+ "\u2590_____|\\_______\u258C",
2218
+ "\u2590______|\\______\u258C",
2219
+ "\u2590_______|\\_____\u258C",
2220
+ "\u2590________|\\____\u258C",
2221
+ "\u2590_________|\\___\u258C",
2222
+ "\u2590__________|\\__\u258C",
2223
+ "\u2590___________|\\_\u258C",
2224
+ "\u2590____________|\\\u258C",
2225
+ "\u2590____________/|\u258C",
2226
+ "\u2590___________/|_\u258C",
2227
+ "\u2590__________/|__\u258C",
2228
+ "\u2590_________/|___\u258C",
2229
+ "\u2590________/|____\u258C",
2230
+ "\u2590_______/|_____\u258C",
2231
+ "\u2590______/|______\u258C",
2232
+ "\u2590_____/|_______\u258C",
2233
+ "\u2590____/|________\u258C",
2234
+ "\u2590___/|_________\u258C",
2235
+ "\u2590__/|__________\u258C",
2236
+ "\u2590_/|___________\u258C",
2237
+ "\u2590/|____________\u258C"
2238
+ ]
2239
+ },
2240
+ dqpb: {
2241
+ interval: 100,
2242
+ frames: [
2243
+ "d",
2244
+ "q",
2245
+ "p",
2246
+ "b"
2247
+ ]
2248
+ },
2249
+ weather: {
2250
+ interval: 100,
2251
+ frames: [
2252
+ "\u2600\uFE0F ",
2253
+ "\u2600\uFE0F ",
2254
+ "\u2600\uFE0F ",
2255
+ "\u{1F324} ",
2256
+ "\u26C5\uFE0F ",
2257
+ "\u{1F325} ",
2258
+ "\u2601\uFE0F ",
2259
+ "\u{1F327} ",
2260
+ "\u{1F328} ",
2261
+ "\u{1F327} ",
2262
+ "\u{1F328} ",
2263
+ "\u{1F327} ",
2264
+ "\u{1F328} ",
2265
+ "\u26C8 ",
2266
+ "\u{1F328} ",
2267
+ "\u{1F327} ",
2268
+ "\u{1F328} ",
2269
+ "\u2601\uFE0F ",
2270
+ "\u{1F325} ",
2271
+ "\u26C5\uFE0F ",
2272
+ "\u{1F324} ",
2273
+ "\u2600\uFE0F ",
2274
+ "\u2600\uFE0F "
2275
+ ]
2276
+ },
2277
+ christmas: {
2278
+ interval: 400,
2279
+ frames: [
2280
+ "\u{1F332}",
2281
+ "\u{1F384}"
2282
+ ]
2283
+ },
2284
+ grenade: {
2285
+ interval: 80,
2286
+ frames: [
2287
+ "\u060C ",
2288
+ "\u2032 ",
2289
+ " \xB4 ",
2290
+ " \u203E ",
2291
+ " \u2E0C",
2292
+ " \u2E0A",
2293
+ " |",
2294
+ " \u204E",
2295
+ " \u2055",
2296
+ " \u0DF4 ",
2297
+ " \u2053",
2298
+ " ",
2299
+ " ",
2300
+ " "
2301
+ ]
2302
+ },
2303
+ point: {
2304
+ interval: 125,
2305
+ frames: [
2306
+ "\u2219\u2219\u2219",
2307
+ "\u25CF\u2219\u2219",
2308
+ "\u2219\u25CF\u2219",
2309
+ "\u2219\u2219\u25CF",
2310
+ "\u2219\u2219\u2219"
2311
+ ]
2312
+ },
2313
+ layer: {
2314
+ interval: 150,
2315
+ frames: [
2316
+ "-",
2317
+ "=",
2318
+ "\u2261"
2319
+ ]
2320
+ },
2321
+ betaWave: {
2322
+ interval: 80,
2323
+ frames: [
2324
+ "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
2325
+ "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
2326
+ "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
2327
+ "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
2328
+ "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
2329
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
2330
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
2331
+ ]
2332
+ },
2333
+ fingerDance: {
2334
+ interval: 160,
2335
+ frames: [
2336
+ "\u{1F918} ",
2337
+ "\u{1F91F} ",
2338
+ "\u{1F596} ",
2339
+ "\u270B ",
2340
+ "\u{1F91A} ",
2341
+ "\u{1F446} "
2342
+ ]
2343
+ },
2344
+ fistBump: {
2345
+ interval: 80,
2346
+ frames: [
2347
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2348
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2349
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
2350
+ "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
2351
+ "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
2352
+ "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
2353
+ "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
2354
+ ]
2355
+ },
2356
+ soccerHeader: {
2357
+ interval: 80,
2358
+ frames: [
2359
+ " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
2360
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2361
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2362
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2363
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2364
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2365
+ "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
2366
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2367
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2368
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2369
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
2370
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
2371
+ ]
2372
+ },
2373
+ mindblown: {
2374
+ interval: 160,
2375
+ frames: [
2376
+ "\u{1F610} ",
2377
+ "\u{1F610} ",
2378
+ "\u{1F62E} ",
2379
+ "\u{1F62E} ",
2380
+ "\u{1F626} ",
2381
+ "\u{1F626} ",
2382
+ "\u{1F627} ",
2383
+ "\u{1F627} ",
2384
+ "\u{1F92F} ",
2385
+ "\u{1F4A5} ",
2386
+ "\u2728 ",
2387
+ "\u3000 ",
2388
+ "\u3000 ",
2389
+ "\u3000 "
2390
+ ]
2391
+ },
2392
+ speaker: {
2393
+ interval: 160,
2394
+ frames: [
2395
+ "\u{1F508} ",
2396
+ "\u{1F509} ",
2397
+ "\u{1F50A} ",
2398
+ "\u{1F509} "
2399
+ ]
2400
+ },
2401
+ orangePulse: {
2402
+ interval: 100,
2403
+ frames: [
2404
+ "\u{1F538} ",
2405
+ "\u{1F536} ",
2406
+ "\u{1F7E0} ",
2407
+ "\u{1F7E0} ",
2408
+ "\u{1F536} "
2409
+ ]
2410
+ },
2411
+ bluePulse: {
2412
+ interval: 100,
2413
+ frames: [
2414
+ "\u{1F539} ",
2415
+ "\u{1F537} ",
2416
+ "\u{1F535} ",
2417
+ "\u{1F535} ",
2418
+ "\u{1F537} "
2419
+ ]
2420
+ },
2421
+ orangeBluePulse: {
2422
+ interval: 100,
2423
+ frames: [
2424
+ "\u{1F538} ",
2425
+ "\u{1F536} ",
2426
+ "\u{1F7E0} ",
2427
+ "\u{1F7E0} ",
2428
+ "\u{1F536} ",
2429
+ "\u{1F539} ",
2430
+ "\u{1F537} ",
2431
+ "\u{1F535} ",
2432
+ "\u{1F535} ",
2433
+ "\u{1F537} "
2434
+ ]
2435
+ },
2436
+ timeTravel: {
2437
+ interval: 100,
2438
+ frames: [
2439
+ "\u{1F55B} ",
2440
+ "\u{1F55A} ",
2441
+ "\u{1F559} ",
2442
+ "\u{1F558} ",
2443
+ "\u{1F557} ",
2444
+ "\u{1F556} ",
2445
+ "\u{1F555} ",
2446
+ "\u{1F554} ",
2447
+ "\u{1F553} ",
2448
+ "\u{1F552} ",
2449
+ "\u{1F551} ",
2450
+ "\u{1F550} "
2451
+ ]
2452
+ },
2453
+ aesthetic: {
2454
+ interval: 80,
2455
+ frames: [
2456
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
2457
+ "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
2458
+ "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
2459
+ "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
2460
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
2461
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
2462
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
2463
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
2464
+ ]
2465
+ },
2466
+ dwarfFortress: {
2467
+ interval: 80,
2468
+ frames: [
2469
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2470
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2471
+ "\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2472
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2473
+ "\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2474
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2475
+ "\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2476
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2477
+ "\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2478
+ "\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2479
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2480
+ " \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2481
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2482
+ " \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2483
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2484
+ " \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2485
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2486
+ " \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2487
+ " \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2488
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2489
+ " \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2490
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2491
+ " \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2492
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2493
+ " \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2494
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2495
+ " \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2496
+ " \u263A \u2588\u2588\u2588\xA3\xA3\xA3 ",
2497
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
2498
+ " \u263A\u2588\u2588\u2588\xA3\xA3\xA3 ",
2499
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
2500
+ " \u263A\u2593\u2588\u2588\xA3\xA3\xA3 ",
2501
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
2502
+ " \u263A\u2592\u2588\u2588\xA3\xA3\xA3 ",
2503
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
2504
+ " \u263A\u2591\u2588\u2588\xA3\xA3\xA3 ",
2505
+ " \u263A \u2588\u2588\xA3\xA3\xA3 ",
2506
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
2507
+ " \u263A\u2588\u2588\xA3\xA3\xA3 ",
2508
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
2509
+ " \u263A\u2593\u2588\xA3\xA3\xA3 ",
2510
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
2511
+ " \u263A\u2592\u2588\xA3\xA3\xA3 ",
2512
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
2513
+ " \u263A\u2591\u2588\xA3\xA3\xA3 ",
2514
+ " \u263A \u2588\xA3\xA3\xA3 ",
2515
+ " \u263A\u2588\xA3\xA3\xA3 ",
2516
+ " \u263A\u2588\xA3\xA3\xA3 ",
2517
+ " \u263A\u2593\xA3\xA3\xA3 ",
2518
+ " \u263A\u2593\xA3\xA3\xA3 ",
2519
+ " \u263A\u2592\xA3\xA3\xA3 ",
2520
+ " \u263A\u2592\xA3\xA3\xA3 ",
2521
+ " \u263A\u2591\xA3\xA3\xA3 ",
2522
+ " \u263A\u2591\xA3\xA3\xA3 ",
2523
+ " \u263A \xA3\xA3\xA3 ",
2524
+ " \u263A\xA3\xA3\xA3 ",
2525
+ " \u263A\xA3\xA3\xA3 ",
2526
+ " \u263A\u2593\xA3\xA3 ",
2527
+ " \u263A\u2593\xA3\xA3 ",
2528
+ " \u263A\u2592\xA3\xA3 ",
2529
+ " \u263A\u2592\xA3\xA3 ",
2530
+ " \u263A\u2591\xA3\xA3 ",
2531
+ " \u263A\u2591\xA3\xA3 ",
2532
+ " \u263A \xA3\xA3 ",
2533
+ " \u263A\xA3\xA3 ",
2534
+ " \u263A\xA3\xA3 ",
2535
+ " \u263A\u2593\xA3 ",
2536
+ " \u263A\u2593\xA3 ",
2537
+ " \u263A\u2592\xA3 ",
2538
+ " \u263A\u2592\xA3 ",
2539
+ " \u263A\u2591\xA3 ",
2540
+ " \u263A\u2591\xA3 ",
2541
+ " \u263A \xA3 ",
2542
+ " \u263A\xA3 ",
2543
+ " \u263A\xA3 ",
2544
+ " \u263A\u2593 ",
2545
+ " \u263A\u2593 ",
2546
+ " \u263A\u2592 ",
2547
+ " \u263A\u2592 ",
2548
+ " \u263A\u2591 ",
2549
+ " \u263A\u2591 ",
2550
+ " \u263A ",
2551
+ " \u263A &",
2552
+ " \u263A \u263C&",
2553
+ " \u263A \u263C &",
2554
+ " \u263A\u263C &",
2555
+ " \u263A\u263C & ",
2556
+ " \u203C & ",
2557
+ " \u263A & ",
2558
+ " \u203C & ",
2559
+ " \u263A & ",
2560
+ " \u203C & ",
2561
+ " \u263A & ",
2562
+ "\u203C & ",
2563
+ " & ",
2564
+ " & ",
2565
+ " & \u2591 ",
2566
+ " & \u2592 ",
2567
+ " & \u2593 ",
2568
+ " & \xA3 ",
2569
+ " & \u2591\xA3 ",
2570
+ " & \u2592\xA3 ",
2571
+ " & \u2593\xA3 ",
2572
+ " & \xA3\xA3 ",
2573
+ " & \u2591\xA3\xA3 ",
2574
+ " & \u2592\xA3\xA3 ",
2575
+ "& \u2593\xA3\xA3 ",
2576
+ "& \xA3\xA3\xA3 ",
2577
+ " \u2591\xA3\xA3\xA3 ",
2578
+ " \u2592\xA3\xA3\xA3 ",
2579
+ " \u2593\xA3\xA3\xA3 ",
2580
+ " \u2588\xA3\xA3\xA3 ",
2581
+ " \u2591\u2588\xA3\xA3\xA3 ",
2582
+ " \u2592\u2588\xA3\xA3\xA3 ",
2583
+ " \u2593\u2588\xA3\xA3\xA3 ",
2584
+ " \u2588\u2588\xA3\xA3\xA3 ",
2585
+ " \u2591\u2588\u2588\xA3\xA3\xA3 ",
2586
+ " \u2592\u2588\u2588\xA3\xA3\xA3 ",
2587
+ " \u2593\u2588\u2588\xA3\xA3\xA3 ",
2588
+ " \u2588\u2588\u2588\xA3\xA3\xA3 ",
2589
+ " \u2591\u2588\u2588\u2588\xA3\xA3\xA3 ",
2590
+ " \u2592\u2588\u2588\u2588\xA3\xA3\xA3 ",
2591
+ " \u2593\u2588\u2588\u2588\xA3\xA3\xA3 ",
2592
+ " \u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2593
+ " \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2594
+ " \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2595
+ " \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2596
+ " \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2597
+ " \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2598
+ " \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2599
+ " \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2600
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ",
2601
+ " \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "
2602
+ ]
2603
+ },
2604
+ fish: {
2605
+ interval: 80,
2606
+ frames: [
2607
+ "~~~~~~~~~~~~~~~~~~~~",
2608
+ "> ~~~~~~~~~~~~~~~~~~",
2609
+ "\xBA> ~~~~~~~~~~~~~~~~~",
2610
+ "(\xBA> ~~~~~~~~~~~~~~~~",
2611
+ "((\xBA> ~~~~~~~~~~~~~~~",
2612
+ "<((\xBA> ~~~~~~~~~~~~~~",
2613
+ "><((\xBA> ~~~~~~~~~~~~~",
2614
+ " ><((\xBA> ~~~~~~~~~~~~",
2615
+ "~ ><((\xBA> ~~~~~~~~~~~",
2616
+ "~~ <>((\xBA> ~~~~~~~~~~",
2617
+ "~~~ ><((\xBA> ~~~~~~~~~",
2618
+ "~~~~ <>((\xBA> ~~~~~~~~",
2619
+ "~~~~~ ><((\xBA> ~~~~~~~",
2620
+ "~~~~~~ <>((\xBA> ~~~~~~",
2621
+ "~~~~~~~ ><((\xBA> ~~~~~",
2622
+ "~~~~~~~~ <>((\xBA> ~~~~",
2623
+ "~~~~~~~~~ ><((\xBA> ~~~",
2624
+ "~~~~~~~~~~ <>((\xBA> ~~",
2625
+ "~~~~~~~~~~~ ><((\xBA> ~",
2626
+ "~~~~~~~~~~~~ <>((\xBA> ",
2627
+ "~~~~~~~~~~~~~ ><((\xBA>",
2628
+ "~~~~~~~~~~~~~~ <>((\xBA",
2629
+ "~~~~~~~~~~~~~~~ ><((",
2630
+ "~~~~~~~~~~~~~~~~ <>(",
2631
+ "~~~~~~~~~~~~~~~~~ ><",
2632
+ "~~~~~~~~~~~~~~~~~~ <",
2633
+ "~~~~~~~~~~~~~~~~~~~~"
2634
+ ]
2635
+ }
2636
+ };
2637
+
2638
+ // node_modules/.pnpm/cli-spinners@3.4.0/node_modules/cli-spinners/index.js
2639
+ var cli_spinners_default = spinners_default;
2640
+ var spinnersList = Object.keys(spinners_default);
2641
+
2642
+ // node_modules/.pnpm/log-symbols@7.0.1/node_modules/log-symbols/symbols.js
2643
+ var symbols_exports = {};
2644
+ __export(symbols_exports, {
2645
+ error: () => error,
2646
+ info: () => info,
2647
+ success: () => success,
2648
+ warning: () => warning
2649
+ });
2650
+
2651
+ // node_modules/.pnpm/yoctocolors@2.1.2/node_modules/yoctocolors/base.js
2652
+ import tty2 from "node:tty";
2653
+ var hasColors = tty2?.WriteStream?.prototype?.hasColors?.() ?? false;
2654
+ var format = (open, close) => {
2655
+ if (!hasColors) {
2656
+ return (input) => input;
2657
+ }
2658
+ const openCode = `\x1B[${open}m`;
2659
+ const closeCode = `\x1B[${close}m`;
2660
+ return (input) => {
2661
+ const string = input + "";
2662
+ let index = string.indexOf(closeCode);
2663
+ if (index === -1) {
2664
+ return openCode + string + closeCode;
2665
+ }
2666
+ let result = openCode;
2667
+ let lastIndex = 0;
2668
+ const reopenOnNestedClose = close === 22;
2669
+ const replaceCode = (reopenOnNestedClose ? closeCode : "") + openCode;
2670
+ while (index !== -1) {
2671
+ result += string.slice(lastIndex, index) + replaceCode;
2672
+ lastIndex = index + closeCode.length;
2673
+ index = string.indexOf(closeCode, lastIndex);
2674
+ }
2675
+ result += string.slice(lastIndex) + closeCode;
2676
+ return result;
2677
+ };
2678
+ };
2679
+ var reset = format(0, 0);
2680
+ var bold = format(1, 22);
2681
+ var dim = format(2, 22);
2682
+ var italic = format(3, 23);
2683
+ var underline = format(4, 24);
2684
+ var overline = format(53, 55);
2685
+ var inverse = format(7, 27);
2686
+ var hidden = format(8, 28);
2687
+ var strikethrough = format(9, 29);
2688
+ var black = format(30, 39);
2689
+ var red = format(31, 39);
2690
+ var green = format(32, 39);
2691
+ var yellow = format(33, 39);
2692
+ var blue = format(34, 39);
2693
+ var magenta = format(35, 39);
2694
+ var cyan = format(36, 39);
2695
+ var white = format(37, 39);
2696
+ var gray = format(90, 39);
2697
+ var bgBlack = format(40, 49);
2698
+ var bgRed = format(41, 49);
2699
+ var bgGreen = format(42, 49);
2700
+ var bgYellow = format(43, 49);
2701
+ var bgBlue = format(44, 49);
2702
+ var bgMagenta = format(45, 49);
2703
+ var bgCyan = format(46, 49);
2704
+ var bgWhite = format(47, 49);
2705
+ var bgGray = format(100, 49);
2706
+ var redBright = format(91, 39);
2707
+ var greenBright = format(92, 39);
2708
+ var yellowBright = format(93, 39);
2709
+ var blueBright = format(94, 39);
2710
+ var magentaBright = format(95, 39);
2711
+ var cyanBright = format(96, 39);
2712
+ var whiteBright = format(97, 39);
2713
+ var bgRedBright = format(101, 49);
2714
+ var bgGreenBright = format(102, 49);
2715
+ var bgYellowBright = format(103, 49);
2716
+ var bgBlueBright = format(104, 49);
2717
+ var bgMagentaBright = format(105, 49);
2718
+ var bgCyanBright = format(106, 49);
2719
+ var bgWhiteBright = format(107, 49);
2720
+
2721
+ // node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js
2722
+ import process6 from "node:process";
2723
+ function isUnicodeSupported() {
2724
+ const { env: env2 } = process6;
2725
+ const { TERM, TERM_PROGRAM } = env2;
2726
+ if (process6.platform !== "win32") {
2727
+ return TERM !== "linux";
2728
+ }
2729
+ return Boolean(env2.WT_SESSION) || Boolean(env2.TERMINUS_SUBLIME) || env2.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env2.TERMINAL_EMULATOR === "JetBrains-JediTerm";
2730
+ }
2731
+
2732
+ // node_modules/.pnpm/log-symbols@7.0.1/node_modules/log-symbols/symbols.js
2733
+ var _isUnicodeSupported = isUnicodeSupported();
2734
+ var info = blue(_isUnicodeSupported ? "\u2139" : "i");
2735
+ var success = green(_isUnicodeSupported ? "\u2714" : "\u221A");
2736
+ var warning = yellow(_isUnicodeSupported ? "\u26A0" : "\u203C");
2737
+ var error = red(_isUnicodeSupported ? "\u2716" : "\xD7");
2738
+
2739
+ // node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
2740
+ function ansiRegex({ onlyFirst = false } = {}) {
2741
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
2742
+ const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
2743
+ const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
2744
+ const pattern = `${osc}|${csi}`;
2745
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
2746
+ }
2747
+
2748
+ // node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
2749
+ var regex = ansiRegex();
2750
+ function stripAnsi(string) {
2751
+ if (typeof string !== "string") {
2752
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
2753
+ }
2754
+ if (!string.includes("\x1B") && !string.includes("\x9B")) {
2755
+ return string;
2756
+ }
2757
+ return string.replace(regex, "");
2758
+ }
2759
+
2760
+ // node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup-data.js
2761
+ var ambiguousMinimalCodePoint = 161;
2762
+ var ambiguousMaximumCodePoint = 1114109;
2763
+ var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
2764
+ var fullwidthMinimalCodePoint = 12288;
2765
+ var fullwidthMaximumCodePoint = 65510;
2766
+ var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
2767
+ var wideMinimalCodePoint = 4352;
2768
+ var wideMaximumCodePoint = 262141;
2769
+ var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
2770
+
2771
+ // node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/utilities.js
2772
+ var isInRange = (ranges, codePoint) => {
2773
+ let low = 0;
2774
+ let high = Math.floor(ranges.length / 2) - 1;
2775
+ while (low <= high) {
2776
+ const mid = Math.floor((low + high) / 2);
2777
+ const i = mid * 2;
2778
+ if (codePoint < ranges[i]) {
2779
+ high = mid - 1;
2780
+ } else if (codePoint > ranges[i + 1]) {
2781
+ low = mid + 1;
2782
+ } else {
2783
+ return true;
2784
+ }
2785
+ }
2786
+ return false;
2787
+ };
2788
+
2789
+ // node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup.js
2790
+ var commonCjkCodePoint = 19968;
2791
+ var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
2792
+ function findWideFastPathRange(ranges) {
2793
+ let fastPathStart = ranges[0];
2794
+ let fastPathEnd = ranges[1];
2795
+ for (let index = 0; index < ranges.length; index += 2) {
2796
+ const start = ranges[index];
2797
+ const end = ranges[index + 1];
2798
+ if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
2799
+ return [start, end];
2800
+ }
2801
+ if (end - start > fastPathEnd - fastPathStart) {
2802
+ fastPathStart = start;
2803
+ fastPathEnd = end;
2804
+ }
2805
+ }
2806
+ return [fastPathStart, fastPathEnd];
2807
+ }
2808
+ var isAmbiguous = (codePoint) => {
2809
+ if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
2810
+ return false;
2811
+ }
2812
+ return isInRange(ambiguousRanges, codePoint);
2813
+ };
2814
+ var isFullWidth = (codePoint) => {
2815
+ if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
2816
+ return false;
2817
+ }
2818
+ return isInRange(fullwidthRanges, codePoint);
2819
+ };
2820
+ var isWide = (codePoint) => {
2821
+ if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
2822
+ return true;
2823
+ }
2824
+ if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
2825
+ return false;
2826
+ }
2827
+ return isInRange(wideRanges, codePoint);
2828
+ };
2829
+
2830
+ // node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/index.js
2831
+ function validate(codePoint) {
2832
+ if (!Number.isSafeInteger(codePoint)) {
2833
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
2834
+ }
2835
+ }
2836
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
2837
+ validate(codePoint);
2838
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
2839
+ return 2;
2840
+ }
2841
+ return 1;
2842
+ }
2843
+
2844
+ // node_modules/.pnpm/string-width@8.2.2/node_modules/string-width/index.js
2845
+ var segmenter = new Intl.Segmenter();
2846
+ var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
2847
+ var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
2848
+ var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
2849
+ var rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
2850
+ var unqualifiedKeycapRegex = /^[\d#*]\u20E3$/;
2851
+ var extendedPictographicRegex = new RegExp("\\p{Extended_Pictographic}", "gu");
2852
+ function isDoubleWidthNonRgiEmojiSequence(segment) {
2853
+ if (segment.length > 50) {
2854
+ return false;
2855
+ }
2856
+ if (unqualifiedKeycapRegex.test(segment)) {
2857
+ return true;
2858
+ }
2859
+ if (segment.includes("\u200D")) {
2860
+ const pictographics = segment.match(extendedPictographicRegex);
2861
+ return pictographics !== null && pictographics.length >= 2;
2862
+ }
2863
+ return false;
2864
+ }
2865
+ function baseVisible(segment) {
2866
+ return segment.replace(leadingNonPrintingRegex, "");
2867
+ }
2868
+ function isZeroWidthCluster(segment) {
2869
+ return zeroWidthClusterRegex.test(segment);
2870
+ }
2871
+ function isHangulLeadingJamo(codePoint) {
2872
+ return codePoint >= 4352 && codePoint <= 4447 || codePoint >= 43360 && codePoint <= 43388;
2873
+ }
2874
+ function isHangulVowelJamo(codePoint) {
2875
+ return codePoint >= 4448 && codePoint <= 4519 || codePoint >= 55216 && codePoint <= 55238;
2876
+ }
2877
+ function isHangulTrailingJamo(codePoint) {
2878
+ return codePoint >= 4520 && codePoint <= 4607 || codePoint >= 55243 && codePoint <= 55291;
2879
+ }
2880
+ function isHangulJamo(codePoint) {
2881
+ return isHangulLeadingJamo(codePoint) || isHangulVowelJamo(codePoint) || isHangulTrailingJamo(codePoint);
2882
+ }
2883
+ function hangulClusterWidth(visibleSegment, eastAsianWidthOptions) {
2884
+ const codePoints = [];
2885
+ for (const character of visibleSegment) {
2886
+ if (zeroWidthClusterRegex.test(character)) {
2887
+ continue;
2888
+ }
2889
+ codePoints.push(character.codePointAt(0));
2890
+ }
2891
+ if (codePoints.length === 0) {
2892
+ return void 0;
2893
+ }
2894
+ let width = 0;
2895
+ for (let index = 0; index < codePoints.length; index++) {
2896
+ const codePoint = codePoints[index];
2897
+ if (!isHangulJamo(codePoint)) {
2898
+ if (width === 0) {
2899
+ return void 0;
2900
+ }
2901
+ for (let remaining = index; remaining < codePoints.length; remaining++) {
2902
+ width += eastAsianWidth(codePoints[remaining], eastAsianWidthOptions);
2903
+ }
2904
+ return width;
2905
+ }
2906
+ if (isHangulLeadingJamo(codePoint) && isHangulVowelJamo(codePoints[index + 1])) {
2907
+ width += 2;
2908
+ index += isHangulTrailingJamo(codePoints[index + 2]) ? 2 : 1;
2909
+ continue;
2910
+ }
2911
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
2912
+ }
2913
+ return width;
2914
+ }
2915
+ function trailingWidth(visibleSegment, eastAsianWidthOptions) {
2916
+ let extra = 0;
2917
+ let first = true;
2918
+ for (const character of visibleSegment) {
2919
+ if (first) {
2920
+ first = false;
2921
+ continue;
2922
+ }
2923
+ if (spacingMarkRegex.test(character) || character >= "\uFF00" && character <= "\uFFEF") {
2924
+ extra += eastAsianWidth(character.codePointAt(0), eastAsianWidthOptions);
2925
+ }
2926
+ }
2927
+ return extra;
2928
+ }
2929
+ function stringWidth(input, options = {}) {
2930
+ if (typeof input !== "string" || input.length === 0) {
2931
+ return 0;
2932
+ }
2933
+ const {
2934
+ ambiguousIsNarrow = true,
2935
+ countAnsiEscapeCodes = false
2936
+ } = options;
2937
+ let string = input;
2938
+ if (!countAnsiEscapeCodes && (string.includes("\x1B") || string.includes("\x9B"))) {
2939
+ string = stripAnsi(string);
2940
+ }
2941
+ if (string.length === 0) {
2942
+ return 0;
2943
+ }
2944
+ if (/^[\u0020-\u007E]*$/.test(string)) {
2945
+ return string.length;
2946
+ }
2947
+ let width = 0;
2948
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
2949
+ for (const { segment } of segmenter.segment(string)) {
2950
+ if (isZeroWidthCluster(segment)) {
2951
+ continue;
2952
+ }
2953
+ if (rgiEmojiRegex.test(segment) || isDoubleWidthNonRgiEmojiSequence(segment)) {
2954
+ width += 2;
2955
+ continue;
2956
+ }
2957
+ const visibleSegment = baseVisible(segment);
2958
+ const hangulWidth = hangulClusterWidth(visibleSegment, eastAsianWidthOptions);
2959
+ if (hangulWidth !== void 0) {
2960
+ width += hangulWidth;
2961
+ continue;
2962
+ }
2963
+ const codePoint = visibleSegment.codePointAt(0);
2964
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
2965
+ width += trailingWidth(visibleSegment, eastAsianWidthOptions);
2966
+ }
2967
+ return width;
2968
+ }
2969
+
2970
+ // node_modules/.pnpm/is-interactive@2.0.0/node_modules/is-interactive/index.js
2971
+ function isInteractive({ stream = process.stdout } = {}) {
2972
+ return Boolean(
2973
+ stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env)
2974
+ );
2975
+ }
2976
+
2977
+ // node_modules/.pnpm/stdin-discarder@0.3.2/node_modules/stdin-discarder/index.js
2978
+ import process7 from "node:process";
2979
+ var ASCII_ETX_CODE = 3;
2980
+ var StdinDiscarder = class {
2981
+ #activeCount = 0;
2982
+ #stdin;
2983
+ #stdinWasPaused = false;
2984
+ #stdinWasRaw = false;
2985
+ #handleInputBound = (chunk) => {
2986
+ if (!chunk?.length) {
2987
+ return;
2988
+ }
2989
+ const code = typeof chunk === "string" ? chunk.codePointAt(0) : chunk[0];
2990
+ if (code === ASCII_ETX_CODE) {
2991
+ process7.kill(process7.pid, "SIGINT");
2992
+ }
2993
+ };
2994
+ start() {
2995
+ this.#activeCount++;
2996
+ if (this.#activeCount === 1) {
2997
+ this.#realStart();
2998
+ }
2999
+ }
3000
+ stop() {
3001
+ if (this.#activeCount === 0) {
3002
+ return;
3003
+ }
3004
+ if (--this.#activeCount === 0) {
3005
+ this.#realStop();
3006
+ }
3007
+ }
3008
+ #realStart() {
3009
+ const { stdin } = process7;
3010
+ if (process7.platform === "win32" || !stdin?.isTTY || typeof stdin.setRawMode !== "function") {
3011
+ this.#stdin = void 0;
3012
+ return;
3013
+ }
3014
+ this.#stdin = stdin;
3015
+ this.#stdinWasPaused = stdin.isPaused();
3016
+ this.#stdinWasRaw = Boolean(stdin.isRaw);
3017
+ stdin.setRawMode(true);
3018
+ stdin.prependListener("data", this.#handleInputBound);
3019
+ if (this.#stdinWasPaused) {
3020
+ stdin.resume();
3021
+ }
3022
+ }
3023
+ #realStop() {
3024
+ if (!this.#stdin) {
3025
+ return;
3026
+ }
3027
+ const stdin = this.#stdin;
3028
+ stdin.off("data", this.#handleInputBound);
3029
+ if (stdin.isTTY) {
3030
+ stdin.setRawMode?.(this.#stdinWasRaw);
3031
+ }
3032
+ if (this.#stdinWasPaused) {
3033
+ stdin.pause();
3034
+ }
3035
+ this.#stdin = void 0;
3036
+ this.#stdinWasPaused = false;
3037
+ this.#stdinWasRaw = false;
3038
+ }
3039
+ };
3040
+ var stdinDiscarder = new StdinDiscarder();
3041
+ var stdin_discarder_default = Object.freeze(stdinDiscarder);
3042
+
3043
+ // node_modules/.pnpm/ora@9.4.1/node_modules/ora/index.js
3044
+ var RENDER_DEFERRAL_TIMEOUT = 200;
3045
+ var SYNCHRONIZED_OUTPUT_ENABLE = "\x1B[?2026h";
3046
+ var SYNCHRONIZED_OUTPUT_DISABLE = "\x1B[?2026l";
3047
+ var activeHooksPerStream = /* @__PURE__ */ new Map();
3048
+ var validColors = /* @__PURE__ */ new Set(["black", "red", "green", "yellow", "blue", "magenta", "cyan", "white", "gray"]);
3049
+ var Ora = class {
3050
+ #linesToClear = 0;
3051
+ #frameIndex = -1;
3052
+ #lastFrameTime = 0;
3053
+ #options;
3054
+ #spinner;
3055
+ #stream;
3056
+ #id;
3057
+ #hookedStreams = /* @__PURE__ */ new Map();
3058
+ #isInternalWrite = false;
3059
+ #drainHandler;
3060
+ #deferRenderTimer;
3061
+ #isDiscardingStdin = false;
3062
+ #color;
3063
+ // Helper to execute writes while preventing hook recursion
3064
+ #internalWrite(fn) {
3065
+ this.#isInternalWrite = true;
3066
+ try {
3067
+ return fn();
3068
+ } finally {
3069
+ this.#isInternalWrite = false;
3070
+ }
3071
+ }
3072
+ // Helper to render if still spinning
3073
+ #tryRender() {
3074
+ if (this.isSpinning) {
3075
+ this.render();
3076
+ }
3077
+ }
3078
+ #stringifyChunk(chunk, encoding) {
3079
+ if (chunk === void 0 || chunk === null) {
3080
+ return "";
3081
+ }
3082
+ if (typeof chunk === "string") {
3083
+ return chunk;
3084
+ }
3085
+ if (Buffer.isBuffer(chunk) || ArrayBuffer.isView(chunk)) {
3086
+ const normalizedEncoding = typeof encoding === "string" && encoding && encoding !== "buffer" ? encoding : "utf8";
3087
+ return Buffer.from(chunk).toString(normalizedEncoding);
3088
+ }
3089
+ return String(chunk);
3090
+ }
3091
+ #chunkTerminatesLine(chunkString) {
3092
+ if (!chunkString) {
3093
+ return false;
3094
+ }
3095
+ const lastCharacter = chunkString.at(-1);
3096
+ return lastCharacter === "\n" || lastCharacter === "\r";
3097
+ }
3098
+ #scheduleRenderDeferral() {
3099
+ if (this.#deferRenderTimer) {
3100
+ return;
3101
+ }
3102
+ this.#deferRenderTimer = setTimeout(() => {
3103
+ this.#deferRenderTimer = void 0;
3104
+ if (this.isSpinning) {
3105
+ this.#tryRender();
3106
+ }
3107
+ }, RENDER_DEFERRAL_TIMEOUT);
3108
+ if (typeof this.#deferRenderTimer?.unref === "function") {
3109
+ this.#deferRenderTimer.unref();
3110
+ }
3111
+ }
3112
+ #clearRenderDeferral() {
3113
+ if (this.#deferRenderTimer) {
3114
+ clearTimeout(this.#deferRenderTimer);
3115
+ this.#deferRenderTimer = void 0;
3116
+ }
3117
+ }
3118
+ // Helper to build complete line with symbol, text, prefix, and suffix
3119
+ #buildOutputLine(symbol, text, prefixText, suffixText) {
3120
+ const fullPrefixText = this.#getFullPrefixText(prefixText, " ");
3121
+ const separatorText = symbol ? " " : "";
3122
+ const fullText = typeof text === "string" ? separatorText + text : "";
3123
+ const fullSuffixText = this.#getFullSuffixText(suffixText, " ");
3124
+ return fullPrefixText + symbol + fullText + fullSuffixText;
3125
+ }
3126
+ constructor(options) {
3127
+ if (typeof options === "string") {
3128
+ options = {
3129
+ text: options
3130
+ };
3131
+ }
3132
+ this.#options = {
3133
+ color: "cyan",
3134
+ stream: process8.stderr,
3135
+ discardStdin: true,
3136
+ hideCursor: true,
3137
+ ...options
3138
+ };
3139
+ this.color = this.#options.color;
3140
+ this.#stream = this.#options.stream;
3141
+ if (typeof this.#options.isEnabled !== "boolean") {
3142
+ this.#options.isEnabled = isInteractive({ stream: this.#stream });
3143
+ }
3144
+ if (typeof this.#options.isSilent !== "boolean") {
3145
+ this.#options.isSilent = false;
3146
+ }
3147
+ if (this.#options.interval !== void 0 && !(Number.isInteger(this.#options.interval) && this.#options.interval > 0)) {
3148
+ throw new Error("The `interval` option must be a positive integer");
3149
+ }
3150
+ const userInterval = this.#options.interval;
3151
+ this.spinner = this.#options.spinner;
3152
+ this.#options.interval = userInterval;
3153
+ this.text = this.#options.text;
3154
+ this.prefixText = this.#options.prefixText;
3155
+ this.suffixText = this.#options.suffixText;
3156
+ this.indent = this.#options.indent;
3157
+ if (process8.env.NODE_ENV === "test") {
3158
+ this._stream = this.#stream;
3159
+ this._isEnabled = this.#options.isEnabled;
3160
+ Object.defineProperty(this, "_linesToClear", {
3161
+ get() {
3162
+ return this.#linesToClear;
3163
+ },
3164
+ set(newValue) {
3165
+ this.#linesToClear = newValue;
3166
+ }
3167
+ });
3168
+ Object.defineProperty(this, "_frameIndex", {
3169
+ get() {
3170
+ return this.#frameIndex;
3171
+ }
3172
+ });
3173
+ Object.defineProperty(this, "_lineCount", {
3174
+ get() {
3175
+ const columns = this.#stream.columns ?? 80;
3176
+ const prefixText = typeof this.#options.prefixText === "function" ? "" : this.#options.prefixText;
3177
+ const suffixText = typeof this.#options.suffixText === "function" ? "" : this.#options.suffixText;
3178
+ const fullPrefixText = typeof prefixText === "string" && prefixText !== "" ? prefixText + " " : "";
3179
+ const fullSuffixText = typeof suffixText === "string" && suffixText !== "" ? " " + suffixText : "";
3180
+ const spinnerChar = "-";
3181
+ const fullText = " ".repeat(this.#options.indent) + fullPrefixText + spinnerChar + (typeof this.#options.text === "string" ? " " + this.#options.text : "") + fullSuffixText;
3182
+ return this.#computeLineCountFrom(fullText, columns);
3183
+ }
3184
+ });
3185
+ }
3186
+ }
3187
+ get indent() {
3188
+ return this.#options.indent;
3189
+ }
3190
+ set indent(indent2 = 0) {
3191
+ if (!(indent2 >= 0 && Number.isInteger(indent2))) {
3192
+ throw new Error("The `indent` option must be an integer from 0 and up");
3193
+ }
3194
+ this.#options.indent = indent2;
3195
+ }
3196
+ get interval() {
3197
+ return this.#options.interval ?? this.#spinner.interval ?? 100;
3198
+ }
3199
+ get spinner() {
3200
+ return this.#spinner;
3201
+ }
3202
+ set spinner(spinner) {
3203
+ this.#frameIndex = -1;
3204
+ this.#options.interval = void 0;
3205
+ if (typeof spinner === "object") {
3206
+ if (!Array.isArray(spinner.frames) || spinner.frames.length === 0 || spinner.frames.some((frame) => typeof frame !== "string")) {
3207
+ throw new Error("The given spinner must have a non-empty `frames` array of strings");
3208
+ }
3209
+ if (spinner.interval !== void 0 && !(Number.isInteger(spinner.interval) && spinner.interval > 0)) {
3210
+ throw new Error("`spinner.interval` must be a positive integer if provided");
3211
+ }
3212
+ this.#spinner = spinner;
3213
+ } else if (!isUnicodeSupported()) {
3214
+ this.#spinner = cli_spinners_default.line;
3215
+ } else if (spinner === void 0) {
3216
+ this.#spinner = cli_spinners_default.dots;
3217
+ } else if (spinner !== "default" && cli_spinners_default[spinner]) {
3218
+ this.#spinner = cli_spinners_default[spinner];
3219
+ } else {
3220
+ throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);
3221
+ }
3222
+ }
3223
+ get text() {
3224
+ return this.#options.text;
3225
+ }
3226
+ set text(value = "") {
3227
+ this.#options.text = value;
3228
+ }
3229
+ get prefixText() {
3230
+ return this.#options.prefixText;
3231
+ }
3232
+ set prefixText(value = "") {
3233
+ this.#options.prefixText = value;
3234
+ }
3235
+ get suffixText() {
3236
+ return this.#options.suffixText;
3237
+ }
3238
+ set suffixText(value = "") {
3239
+ this.#options.suffixText = value;
3240
+ }
3241
+ get isSpinning() {
3242
+ return this.#id !== void 0;
3243
+ }
3244
+ #formatAffix(value, separator, placeBefore = false) {
3245
+ const resolved = typeof value === "function" ? value() : value;
3246
+ if (typeof resolved === "string" && resolved !== "") {
3247
+ return placeBefore ? separator + resolved : resolved + separator;
3248
+ }
3249
+ return "";
3250
+ }
3251
+ #getFullPrefixText(prefixText = this.#options.prefixText, postfix = " ") {
3252
+ return this.#formatAffix(prefixText, postfix, false);
3253
+ }
3254
+ #getFullSuffixText(suffixText = this.#options.suffixText, prefix = " ") {
3255
+ return this.#formatAffix(suffixText, prefix, true);
3256
+ }
3257
+ #computeLineCountFrom(text, columns) {
3258
+ let count = 0;
3259
+ for (const line of stripVTControlCharacters(text).split("\n")) {
3260
+ count += Math.max(1, Math.ceil(stringWidth(line) / columns));
3261
+ }
3262
+ return count;
3263
+ }
3264
+ get color() {
3265
+ return this.#color;
3266
+ }
3267
+ set color(value) {
3268
+ if (value !== void 0 && value !== false && !validColors.has(value)) {
3269
+ throw new Error("The `color` option must be a valid color or `false` to disable");
3270
+ }
3271
+ this.#color = value;
3272
+ }
3273
+ get isEnabled() {
3274
+ return this.#options.isEnabled && !this.#options.isSilent;
3275
+ }
3276
+ set isEnabled(value) {
3277
+ if (typeof value !== "boolean") {
3278
+ throw new TypeError("The `isEnabled` option must be a boolean");
3279
+ }
3280
+ this.#options.isEnabled = value;
3281
+ }
3282
+ get isSilent() {
3283
+ return this.#options.isSilent;
3284
+ }
3285
+ set isSilent(value) {
3286
+ if (typeof value !== "boolean") {
3287
+ throw new TypeError("The `isSilent` option must be a boolean");
3288
+ }
3289
+ this.#options.isSilent = value;
3290
+ }
3291
+ frame() {
3292
+ const now = Date.now();
3293
+ if (this.#frameIndex === -1 || now - this.#lastFrameTime >= this.interval) {
3294
+ this.#frameIndex = (this.#frameIndex + 1) % this.#spinner.frames.length;
3295
+ this.#lastFrameTime = now;
3296
+ }
3297
+ const { frames } = this.#spinner;
3298
+ let frame = frames[this.#frameIndex];
3299
+ if (this.#color) {
3300
+ frame = source_default[this.#color](frame);
3301
+ }
3302
+ const fullPrefixText = this.#getFullPrefixText(this.#options.prefixText, " ");
3303
+ const fullText = typeof this.text === "string" ? " " + this.text : "";
3304
+ const fullSuffixText = this.#getFullSuffixText(this.#options.suffixText, " ");
3305
+ return fullPrefixText + frame + fullText + fullSuffixText;
3306
+ }
3307
+ clear() {
3308
+ if (!this.isEnabled || !this.#stream.isTTY) {
3309
+ return this;
3310
+ }
3311
+ this.#internalWrite(() => {
3312
+ this.#stream.cursorTo(0);
3313
+ for (let index = 0; index < this.#linesToClear; index++) {
3314
+ if (index > 0) {
3315
+ this.#stream.moveCursor(0, -1);
3316
+ }
3317
+ this.#stream.clearLine(1);
3318
+ }
3319
+ if (this.#options.indent) {
3320
+ this.#stream.cursorTo(this.#options.indent);
3321
+ }
3322
+ });
3323
+ this.#linesToClear = 0;
3324
+ return this;
3325
+ }
3326
+ // Helper to hook a single stream
3327
+ #hookStream(stream) {
3328
+ if (!stream || this.#hookedStreams.has(stream) || !stream.isTTY || typeof stream.write !== "function") {
3329
+ return;
3330
+ }
3331
+ if (activeHooksPerStream.has(stream)) {
3332
+ console.warn("[ora] Multiple concurrent spinners detected. This may cause visual corruption. Use one spinner at a time.");
3333
+ }
3334
+ const originalWrite = stream.write;
3335
+ this.#hookedStreams.set(stream, originalWrite);
3336
+ activeHooksPerStream.set(stream, this);
3337
+ stream.write = (chunk, encoding, callback) => this.#hookedWrite(stream, originalWrite, chunk, encoding, callback);
3338
+ }
3339
+ /**
3340
+ Intercept stream writes while spinner is active to handle external writes cleanly without visual corruption.
3341
+ Hooks process stdio streams and the active spinner stream so console.log(), console.error(), and direct writes stay tidy.
3342
+ */
3343
+ #installHook() {
3344
+ if (!this.isEnabled || this.#hookedStreams.size > 0) {
3345
+ return;
3346
+ }
3347
+ const streamsToHook = /* @__PURE__ */ new Set([this.#stream, process8.stdout, process8.stderr]);
3348
+ for (const stream of streamsToHook) {
3349
+ this.#hookStream(stream);
3350
+ }
3351
+ }
3352
+ #uninstallHook() {
3353
+ for (const [stream, originalWrite] of this.#hookedStreams) {
3354
+ stream.write = originalWrite;
3355
+ if (activeHooksPerStream.get(stream) === this) {
3356
+ activeHooksPerStream.delete(stream);
3357
+ }
3358
+ }
3359
+ this.#hookedStreams.clear();
3360
+ }
3361
+ // eslint-disable-next-line max-params -- Need stream and originalWrite for multi-stream support
3362
+ #hookedWrite(stream, originalWrite, chunk, encoding, callback) {
3363
+ if (typeof encoding === "function") {
3364
+ callback = encoding;
3365
+ encoding = void 0;
3366
+ }
3367
+ if (this.#isInternalWrite) {
3368
+ return originalWrite.call(stream, chunk, encoding, callback);
3369
+ }
3370
+ this.clear();
3371
+ const chunkString = this.#stringifyChunk(chunk, encoding);
3372
+ const chunkTerminatesLine = this.#chunkTerminatesLine(chunkString);
3373
+ const writeResult = originalWrite.call(stream, chunk, encoding, callback);
3374
+ if (chunkTerminatesLine) {
3375
+ this.#clearRenderDeferral();
3376
+ } else if (chunkString.length > 0) {
3377
+ this.#scheduleRenderDeferral();
3378
+ }
3379
+ if (this.isSpinning && !this.#deferRenderTimer) {
3380
+ this.render();
3381
+ }
3382
+ return writeResult;
3383
+ }
3384
+ render() {
3385
+ if (!this.isEnabled || this.#drainHandler || this.#deferRenderTimer) {
3386
+ return this;
3387
+ }
3388
+ const useSynchronizedOutput = this.#stream.isTTY;
3389
+ let shouldDisableSynchronizedOutput = false;
3390
+ try {
3391
+ if (useSynchronizedOutput) {
3392
+ this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_ENABLE));
3393
+ shouldDisableSynchronizedOutput = true;
3394
+ }
3395
+ this.clear();
3396
+ let frameContent = this.frame();
3397
+ const columns = this.#stream.columns ?? 80;
3398
+ const actualLineCount = this.#computeLineCountFrom(frameContent, columns);
3399
+ const consoleHeight = this.#stream.rows;
3400
+ if (consoleHeight && consoleHeight > 1 && actualLineCount > consoleHeight) {
3401
+ const lines = frameContent.split("\n");
3402
+ const maxLines = consoleHeight - 1;
3403
+ frameContent = [...lines.slice(0, maxLines), "... (content truncated to fit terminal)"].join("\n");
3404
+ }
3405
+ const canContinue = this.#internalWrite(() => this.#stream.write(frameContent));
3406
+ if (canContinue === false && this.#stream.isTTY) {
3407
+ this.#drainHandler = () => {
3408
+ this.#drainHandler = void 0;
3409
+ this.#tryRender();
3410
+ };
3411
+ this.#stream.once("drain", this.#drainHandler);
3412
+ }
3413
+ this.#linesToClear = this.#computeLineCountFrom(frameContent, columns);
3414
+ } finally {
3415
+ if (shouldDisableSynchronizedOutput) {
3416
+ this.#internalWrite(() => this.#stream.write(SYNCHRONIZED_OUTPUT_DISABLE));
3417
+ }
3418
+ }
3419
+ return this;
3420
+ }
3421
+ start(text) {
3422
+ if (text !== void 0) {
3423
+ this.text = text;
3424
+ }
3425
+ if (this.isSilent) {
3426
+ return this;
3427
+ }
3428
+ if (!this.isEnabled) {
3429
+ const symbol = this.text ? "-" : "";
3430
+ const line = " ".repeat(this.#options.indent) + this.#buildOutputLine(symbol, this.text, this.#options.prefixText, this.#options.suffixText);
3431
+ if (line.trim() !== "") {
3432
+ this.#internalWrite(() => this.#stream.write(line + "\n"));
3433
+ }
3434
+ return this;
3435
+ }
3436
+ if (this.isSpinning) {
3437
+ return this;
3438
+ }
3439
+ if (this.#options.hideCursor) {
3440
+ cli_cursor_default.hide(this.#stream);
3441
+ }
3442
+ if (this.#options.discardStdin && process8.stdin.isTTY) {
3443
+ stdin_discarder_default.start();
3444
+ this.#isDiscardingStdin = true;
3445
+ }
3446
+ this.#installHook();
3447
+ this.render();
3448
+ this.#id = setInterval(this.render.bind(this), this.interval);
3449
+ return this;
3450
+ }
3451
+ stop() {
3452
+ clearInterval(this.#id);
3453
+ this.#id = void 0;
3454
+ this.#frameIndex = -1;
3455
+ this.#lastFrameTime = 0;
3456
+ this.#clearRenderDeferral();
3457
+ this.#uninstallHook();
3458
+ if (this.#drainHandler) {
3459
+ this.#stream.removeListener("drain", this.#drainHandler);
3460
+ this.#drainHandler = void 0;
3461
+ }
3462
+ if (this.isEnabled) {
3463
+ this.clear();
3464
+ if (this.#options.hideCursor) {
3465
+ cli_cursor_default.show(this.#stream);
3466
+ }
3467
+ }
3468
+ if (this.#isDiscardingStdin) {
3469
+ this.#isDiscardingStdin = false;
3470
+ stdin_discarder_default.stop();
3471
+ }
3472
+ return this;
3473
+ }
3474
+ succeed(text) {
3475
+ return this.stopAndPersist({ symbol: symbols_exports.success, text });
3476
+ }
3477
+ fail(text) {
3478
+ return this.stopAndPersist({ symbol: symbols_exports.error, text });
3479
+ }
3480
+ warn(text) {
3481
+ return this.stopAndPersist({ symbol: symbols_exports.warning, text });
3482
+ }
3483
+ info(text) {
3484
+ return this.stopAndPersist({ symbol: symbols_exports.info, text });
3485
+ }
3486
+ stopAndPersist(options = {}) {
3487
+ if (this.isSilent) {
3488
+ return this;
3489
+ }
3490
+ const symbol = options.symbol ?? " ";
3491
+ const text = options.text ?? this.text;
3492
+ const prefixText = options.prefixText ?? this.#options.prefixText;
3493
+ const suffixText = options.suffixText ?? this.#options.suffixText;
3494
+ const textToWrite = this.#buildOutputLine(symbol, text, prefixText, suffixText) + "\n";
3495
+ this.stop();
3496
+ this.#internalWrite(() => this.#stream.write(textToWrite));
3497
+ return this;
3498
+ }
3499
+ };
3500
+ function ora(options) {
3501
+ return new Ora(options);
3502
+ }
3503
+
3504
+ // node_modules/.pnpm/mcporter@0.12.3/node_modules/mcporter/dist/cli/transport-utils.js
3505
+ function formatTransportSummary(definition) {
3506
+ if (definition.command.kind === "http") {
3507
+ const url = definition.command.url instanceof URL ? definition.command.url.href : String(definition.command.url);
3508
+ return `HTTP ${url}`;
3509
+ }
3510
+ const rendered = [definition.command.command, ...definition.command.args ?? []].join(" ").trim();
3511
+ return `STDIO ${rendered}`;
3512
+ }
3513
+
3514
+ // node_modules/.pnpm/mcporter@0.12.3/node_modules/mcporter/dist/cli/list-output.js
3515
+ function printSingleServerHeader(definition, toolCount, durationMs, transportSummary, sourcePath, options) {
3516
+ const prefix = boldText(definition.name);
3517
+ if (definition.description) {
3518
+ console.log(`${prefix} - ${extraDimText(definition.description)}`);
3519
+ } else {
3520
+ console.log(prefix);
3521
+ }
3522
+ if (options?.instructions) {
3523
+ for (const line of formatInstructionLines(options.instructions)) {
3524
+ console.log(` ${extraDimText(line)}`);
3525
+ }
3526
+ }
3527
+ const summaryParts = [];
3528
+ summaryParts.push(extraDimText(typeof toolCount === "number" ? `${toolCount} tool${toolCount === 1 ? "" : "s"}` : "tools unavailable"));
3529
+ if (typeof durationMs === "number") {
3530
+ summaryParts.push(extraDimText(`${durationMs}ms`));
3531
+ }
3532
+ if (transportSummary) {
3533
+ summaryParts.push(extraDimText(transportSummary));
3534
+ }
3535
+ if (sourcePath) {
3536
+ summaryParts.push(sourcePath);
3537
+ }
3538
+ const summaryLine = ` ${summaryParts.join(extraDimText(" \xB7 "))}`;
3539
+ if (options?.printSummaryNow === false) {
3540
+ console.log("");
3541
+ } else {
3542
+ console.log(summaryLine);
3543
+ console.log("");
3544
+ }
3545
+ return summaryLine;
3546
+ }
3547
+ function formatInstructionLines(instructions) {
3548
+ const normalized = instructions.replace(/\s+/g, " ").trim();
3549
+ if (!normalized) {
3550
+ return [];
3551
+ }
3552
+ const maxLength = 500;
3553
+ const clipped = normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}\u2026` : normalized;
3554
+ return [`Instructions: ${clipped}`];
3555
+ }
3556
+ function printToolDetail(definition, metadata, includeSchema, requiredOnly) {
3557
+ const exampleOptions = buildExampleOptions(definition);
3558
+ const doc = buildToolDoc({
3559
+ serverName: definition.name,
3560
+ toolName: metadata.tool.name,
3561
+ description: metadata.tool.description,
3562
+ outputSchema: metadata.tool.outputSchema,
3563
+ options: metadata.options,
3564
+ requiredOnly,
3565
+ colorize: true,
3566
+ callSelector: exampleOptions?.selector,
3567
+ wrapExampleExpression: exampleOptions?.wrapExpression
3568
+ });
3569
+ if (doc.docLines) {
3570
+ for (const line of doc.docLines) {
3571
+ console.log(` ${line}`);
3572
+ }
3573
+ }
3574
+ console.log(` ${doc.signature}`);
3575
+ if (doc.optionalSummary && requiredOnly) {
3576
+ console.log(` ${doc.optionalSummary}`);
3577
+ }
3578
+ if (includeSchema && metadata.tool.inputSchema) {
3579
+ console.log(indent(JSON.stringify(metadata.tool.inputSchema, null, 2), " "));
3580
+ }
3581
+ console.log("");
3582
+ return {
3583
+ examples: doc.examples,
3584
+ optionalOmitted: doc.hiddenOptions.length > 0
3585
+ };
3586
+ }
3587
+ function printBriefTool(definition, metadata, requiredOnly) {
3588
+ const doc = buildToolDoc({
3589
+ serverName: definition.name,
3590
+ toolName: metadata.tool.name,
3591
+ description: metadata.tool.description,
3592
+ outputSchema: metadata.tool.outputSchema,
3593
+ options: metadata.options,
3594
+ requiredOnly,
3595
+ colorize: true
3596
+ });
3597
+ console.log(` ${doc.signature}`);
3598
+ if (doc.optionalSummary && requiredOnly) {
3599
+ console.log(` ${doc.optionalSummary}`);
3600
+ }
3601
+ console.log("");
3602
+ return {
3603
+ optionalOmitted: doc.hiddenOptions.length > 0
3604
+ };
3605
+ }
3606
+ function buildExampleOptions(definition) {
3607
+ if (definition.source?.kind !== "local" || definition.source.path !== "<adhoc>") {
3608
+ return void 0;
3609
+ }
3610
+ if (definition.command.kind === "http") {
3611
+ const url = definition.command.url instanceof URL ? definition.command.url.href : String(definition.command.url);
3612
+ return { selector: url, wrapExpression: true };
3613
+ }
3614
+ return void 0;
3615
+ }
3616
+ function createEmptyStatusCounts() {
3617
+ return {
3618
+ ok: 0,
3619
+ auth: 0,
3620
+ offline: 0,
3621
+ http: 0,
3622
+ error: 0
3623
+ };
3624
+ }
3625
+ function summarizeStatusCounts(entries) {
3626
+ const counts = createEmptyStatusCounts();
3627
+ entries.forEach((entry) => {
3628
+ counts[entry.status] = (counts[entry.status] ?? 0) + 1;
3629
+ });
3630
+ return counts;
3631
+ }
3632
+ function buildJsonListEntry(result, timeoutSeconds, options) {
3633
+ if (result.status === "ok") {
3634
+ return {
3635
+ name: result.server.name,
3636
+ status: "ok",
3637
+ durationMs: result.durationMs,
3638
+ description: result.server.description,
3639
+ transport: formatTransportSummary(result.server),
3640
+ source: result.server.source,
3641
+ sources: options.includeSources ? result.server.sources : void 0,
3642
+ tools: result.tools.map((tool) => ({
3643
+ name: tool.name,
3644
+ description: tool.description,
3645
+ inputSchema: options.includeSchemas ? tool.inputSchema : void 0,
3646
+ outputSchema: options.includeSchemas ? tool.outputSchema : void 0
3647
+ }))
3648
+ };
3649
+ }
3650
+ const authCommand = buildAuthCommandHint(result.server);
3651
+ const advice = classifyListError(result.error, result.server.name, timeoutSeconds, { authCommand });
3652
+ return {
3653
+ name: result.server.name,
3654
+ status: advice.category,
3655
+ durationMs: result.durationMs,
3656
+ description: result.server.description,
3657
+ transport: formatTransportSummary(result.server),
3658
+ source: result.server.source,
3659
+ sources: options.includeSources ? result.server.sources : void 0,
3660
+ issue: serializeConnectionIssue(advice.issue),
3661
+ authCommand: advice.authCommand,
3662
+ error: formatErrorMessage(result.error)
3663
+ };
3664
+ }
3665
+ function createUnknownResult(server) {
3666
+ return {
3667
+ status: "error",
3668
+ server,
3669
+ error: new Error("Unknown server result"),
3670
+ durationMs: 0
3671
+ };
3672
+ }
3673
+ function buildAuthCommandHint(definition) {
3674
+ if (definition.source?.kind === "local" && definition.source.path === "<adhoc>") {
3675
+ if (definition.command.kind === "http") {
3676
+ const url = definition.command.url instanceof URL ? definition.command.url.href : String(definition.command.url);
3677
+ return `mcporter auth ${url}`;
3678
+ }
3679
+ if (definition.command.kind === "stdio") {
3680
+ const parts = [definition.command.command, ...definition.command.args ?? []];
3681
+ const rendered = parts.map(quoteCommandSegment).join(" ").trim();
3682
+ return rendered.length > 0 ? `mcporter auth --stdio ${rendered}` : "mcporter auth --stdio";
3683
+ }
3684
+ }
3685
+ return `mcporter auth ${definition.name}`;
3686
+ }
3687
+ function indent(text, pad) {
3688
+ return text.split("\n").map((line) => pad + line).join("\n");
3689
+ }
3690
+ function quoteCommandSegment(segment) {
3691
+ if (/^[A-Za-z0-9_./:-]+$/.test(segment)) {
3692
+ return segment;
3693
+ }
3694
+ return `'${segment.replace(/'/g, `'\\''`)}'`;
3695
+ }
3696
+
3697
+ // node_modules/.pnpm/mcporter@0.12.3/node_modules/mcporter/dist/cli/list-command.js
3698
+ async function handleList(runtime, args) {
3699
+ const flags = extractListFlags(args);
3700
+ let target = args.shift();
3701
+ let requestedTool;
3702
+ if (target) {
3703
+ const split = splitHttpToolSelector(target);
3704
+ if (split) {
3705
+ target = split.baseUrl;
3706
+ requestedTool = split.tool;
3707
+ }
3708
+ }
3709
+ const prepared = await prepareEphemeralServerTarget({
3710
+ runtime,
3711
+ target,
3712
+ ephemeral: flags.ephemeral
3713
+ });
3714
+ target = prepared.target;
3715
+ if (!target) {
3716
+ if (flags.brief) {
3717
+ throw new Error("--brief requires a server target.");
3718
+ }
3719
+ const previousStdioLogMode2 = setStdioLogMode("silent");
3720
+ try {
3721
+ const servers = runtime.getDefinitions();
3722
+ const perServerTimeoutMs = flags.timeoutMs ?? LIST_TIMEOUT_MS;
3723
+ const perServerTimeoutSeconds = Math.round(perServerTimeoutMs / 1e3);
3724
+ if (servers.length === 0) {
3725
+ if (flags.quiet) {
3726
+ return;
3727
+ }
3728
+ if (flags.format === "json") {
3729
+ const payload = {
3730
+ mode: "list",
3731
+ counts: createEmptyStatusCounts(),
3732
+ servers: []
3733
+ };
3734
+ console.log(JSON.stringify(payload, null, 2));
3735
+ } else {
3736
+ console.log("No MCP servers configured.");
3737
+ }
3738
+ return;
3739
+ }
3740
+ if (!flags.quiet && flags.format === "text") {
3741
+ console.log(`mcporter ${MCPORTER_VERSION} \u2014 Listing ${servers.length} server(s) (per-server timeout: ${perServerTimeoutSeconds}s)`);
3742
+ }
3743
+ const spinner = !flags.quiet && flags.format === "text" && supportsSpinner ? ora(`Discovering ${servers.length} server(s)\u2026`).start() : void 0;
3744
+ const renderedResults = !flags.quiet && flags.format === "text" ? Array.from({ length: servers.length }, () => void 0) : void 0;
3745
+ const summaryResults = Array.from({ length: servers.length }, () => void 0);
3746
+ let completedCount = 0;
3747
+ const tasks = servers.map((server, index) => checkListServer(runtime, server, perServerTimeoutMs, flags.disableOAuth).then((result) => {
3748
+ summaryResults[index] = result;
3749
+ if (renderedResults) {
3750
+ const rendered = renderServerListRow(result, perServerTimeoutMs, { verbose: flags.verbose });
3751
+ renderedResults[index] = rendered;
3752
+ completedCount += 1;
3753
+ if (spinner) {
3754
+ spinner.stop();
3755
+ console.log(rendered.line);
3756
+ const remaining = servers.length - completedCount;
3757
+ if (remaining > 0) {
3758
+ spinner.text = `Listing servers\u2026 ${completedCount}/${servers.length}`;
3759
+ spinner.start();
3760
+ }
3761
+ } else {
3762
+ console.log(rendered.line);
3763
+ }
3764
+ }
3765
+ return result;
3766
+ }));
3767
+ await Promise.all(tasks);
3768
+ const jsonEntries = summaryResults.map((entry, index) => {
3769
+ const serverDefinition = servers[index] ?? entry?.server ?? servers[0];
3770
+ if (!serverDefinition) {
3771
+ throw new Error("Unable to resolve server definition for JSON output.");
3772
+ }
3773
+ const normalizedEntry = entry ?? createUnknownResult(serverDefinition);
3774
+ return buildJsonListEntry(normalizedEntry, perServerTimeoutSeconds, {
3775
+ includeSchemas: Boolean(flags.schema),
3776
+ includeSources: Boolean(flags.verbose || flags.includeSources)
3777
+ });
3778
+ });
3779
+ const counts = summarizeStatusCounts(jsonEntries);
3780
+ maybeSetListExitCode(jsonEntries, flags);
3781
+ if (flags.quiet) {
3782
+ return;
3783
+ }
3784
+ if (flags.format === "json") {
3785
+ console.log(JSON.stringify({ mode: "list", counts, servers: jsonEntries }, null, 2));
3786
+ return;
3787
+ }
3788
+ if (spinner) {
3789
+ spinner.stop();
3790
+ }
3791
+ const okSummary = `${counts.ok} healthy`;
3792
+ const parts = [
3793
+ okSummary,
3794
+ ...counts.auth > 0 ? [`${counts.auth} auth required`] : [],
3795
+ ...counts.offline > 0 ? [`${counts.offline} offline`] : [],
3796
+ ...counts.http > 0 ? [`${counts.http} http errors`] : [],
3797
+ ...counts.error > 0 ? [`${counts.error} errors`] : []
3798
+ ];
3799
+ console.log(`\u2714 Listed ${servers.length} server${servers.length === 1 ? "" : "s"} (${parts.join("; ")}).`);
3800
+ return;
3801
+ } finally {
3802
+ setStdioLogMode(previousStdioLogMode2);
3803
+ }
3804
+ }
3805
+ if (!requestedTool) {
3806
+ const selector = resolveConfiguredToolSelector(runtime, target);
3807
+ if (selector) {
3808
+ target = selector.server;
3809
+ requestedTool = selector.tool;
3810
+ }
3811
+ }
3812
+ if (flags.statusOnly && requestedTool) {
3813
+ throw new Error("--status cannot be used with a tool selector.");
3814
+ }
3815
+ const resolved = resolveServerDefinition(runtime, target, { quiet: flags.quiet });
3816
+ if (!resolved) {
3817
+ process.exitCode = 1;
3818
+ return;
3819
+ }
3820
+ target = resolved.name;
3821
+ const definition = resolved.definition;
3822
+ const timeoutMs = flags.timeoutMs ?? LIST_TIMEOUT_MS;
3823
+ const sourcePath = definition.sources?.length || definition.source ? formatSourceSuffix(definition.sources ?? definition.source, true, { verbose: flags.verbose }) : void 0;
3824
+ const transportSummary = formatTransportSummary(definition);
3825
+ const startedAt = Date.now();
3826
+ if (flags.statusOnly) {
3827
+ const previousStdioLogMode2 = flags.quiet || flags.format === "json" ? setStdioLogMode("silent") : void 0;
3828
+ try {
3829
+ const result = await checkListServer(runtime, definition, timeoutMs, flags.disableOAuth);
3830
+ await persistPreparedEphemeralServer(runtime, prepared);
3831
+ const entry = buildJsonListEntry(result, Math.round(timeoutMs / 1e3), {
3832
+ includeSchemas: false,
3833
+ includeSources: Boolean(flags.verbose || flags.includeSources)
3834
+ });
3835
+ maybeSetListExitCode([entry], flags);
3836
+ if (flags.quiet) {
3837
+ return;
3838
+ }
3839
+ if (flags.format === "json") {
3840
+ console.log(JSON.stringify({ mode: "list", counts: summarizeStatusCounts([entry]), servers: [entry] }, null, 2));
3841
+ return;
3842
+ }
3843
+ const rendered = renderServerListRow(result, timeoutMs, { verbose: flags.verbose });
3844
+ console.log(rendered.line);
3845
+ console.log(`\u2714 Listed 1 server (${entry.status === "ok" ? "1 healthy" : `0 healthy; 1 ${statusLabel(entry.status)}`}).`);
3846
+ return;
3847
+ } finally {
3848
+ if (previousStdioLogMode2 !== void 0) {
3849
+ setStdioLogMode(previousStdioLogMode2);
3850
+ }
3851
+ }
3852
+ }
3853
+ const previousStdioLogMode = flags.quiet || flags.format === "json" ? setStdioLogMode("silent") : void 0;
3854
+ try {
3855
+ if (flags.format === "json") {
3856
+ try {
3857
+ const metadataEntries = filterToolMetadata(await withTimeout(loadToolMetadata(runtime, target, {
3858
+ includeSchema: true,
3859
+ autoAuthorize: false,
3860
+ allowCachedAuth: true,
3861
+ disableOAuth: flags.disableOAuth
3862
+ }), timeoutMs), requestedTool);
3863
+ await persistPreparedEphemeralServer(runtime, prepared);
3864
+ const durationMs = Date.now() - startedAt;
3865
+ if (requestedTool && metadataEntries.length === 0) {
3866
+ if (!flags.quiet) {
3867
+ printMissingToolJson(definition, requestedTool, durationMs, transportSummary, flags);
3868
+ }
3869
+ process.exitCode = 1;
3870
+ return;
3871
+ }
3872
+ const instructions = await loadServerInstructions(runtime, target);
3873
+ const payload = {
3874
+ mode: "server",
3875
+ name: definition.name,
3876
+ status: "ok",
3877
+ durationMs,
3878
+ description: definition.description,
3879
+ instructions,
3880
+ transport: transportSummary,
3881
+ source: definition.source,
3882
+ sources: flags.verbose || flags.includeSources ? definition.sources : void 0,
3883
+ tools: metadataEntries.map((entry) => ({
3884
+ name: entry.tool.name,
3885
+ description: entry.tool.description,
3886
+ inputSchema: entry.tool.inputSchema,
3887
+ outputSchema: entry.tool.outputSchema,
3888
+ options: entry.options
3889
+ }))
3890
+ };
3891
+ if (!flags.quiet) {
3892
+ console.log(JSON.stringify(payload, null, 2));
3893
+ }
3894
+ return;
3895
+ } catch (error2) {
3896
+ await persistPreparedEphemeralServer(runtime, prepared);
3897
+ const durationMs = Date.now() - startedAt;
3898
+ const authCommand = buildAuthCommandHint(definition);
3899
+ const advice = classifyListError(error2, definition.name, timeoutMs, { authCommand });
3900
+ const payload = {
3901
+ mode: "server",
3902
+ name: definition.name,
3903
+ status: advice.category,
3904
+ durationMs,
3905
+ description: definition.description,
3906
+ transport: transportSummary,
3907
+ source: definition.source,
3908
+ sources: flags.verbose || flags.includeSources ? definition.sources : void 0,
3909
+ issue: advice.issue,
3910
+ authCommand: advice.authCommand,
3911
+ error: advice.summary
3912
+ };
3913
+ if (!flags.quiet) {
3914
+ console.log(JSON.stringify(payload, null, 2));
3915
+ }
3916
+ process.exitCode = 1;
3917
+ return;
3918
+ }
3919
+ }
3920
+ try {
3921
+ const metadataEntries = filterToolMetadata(await withTimeout(loadToolMetadata(runtime, target, {
3922
+ includeSchema: true,
3923
+ autoAuthorize: false,
3924
+ allowCachedAuth: true,
3925
+ disableOAuth: flags.disableOAuth
3926
+ }), timeoutMs), requestedTool);
3927
+ await persistPreparedEphemeralServer(runtime, prepared);
3928
+ const durationMs = Date.now() - startedAt;
3929
+ if (requestedTool && metadataEntries.length === 0) {
3930
+ if (!flags.quiet) {
3931
+ printMissingToolText(definition, requestedTool, durationMs, transportSummary, sourcePath);
3932
+ }
3933
+ process.exitCode = 1;
3934
+ return;
3935
+ }
3936
+ if (flags.quiet) {
3937
+ return;
3938
+ }
3939
+ const instructions = await loadServerInstructions(runtime, target);
3940
+ const summaryLine = printSingleServerHeader(definition, metadataEntries.length, durationMs, transportSummary, sourcePath, {
3941
+ printSummaryNow: false,
3942
+ instructions
3943
+ });
3944
+ if (metadataEntries.length === 0) {
3945
+ console.log(" Tools: <none>");
3946
+ console.log(summaryLine);
3947
+ console.log("");
3948
+ return;
3949
+ }
3950
+ if (flags.brief) {
3951
+ let optionalOmitted2 = false;
3952
+ for (const entry of metadataEntries) {
3953
+ const detail = printBriefTool(definition, entry, flags.requiredOnly);
3954
+ optionalOmitted2 ||= detail.optionalOmitted;
3955
+ }
3956
+ if (flags.requiredOnly && optionalOmitted2) {
3957
+ console.log(` ${extraDimText("Optional parameters hidden; run with --all-parameters to view all fields.")}`);
3958
+ console.log("");
3959
+ }
3960
+ console.log(summaryLine);
3961
+ console.log("");
3962
+ return;
3963
+ }
3964
+ const examples = [];
3965
+ let optionalOmitted = false;
3966
+ for (const entry of metadataEntries) {
3967
+ const detail = printToolDetail(definition, entry, Boolean(flags.schema), flags.requiredOnly);
3968
+ examples.push(...detail.examples);
3969
+ optionalOmitted ||= detail.optionalOmitted;
3970
+ }
3971
+ const uniqueExamples = formatExampleBlock(examples);
3972
+ if (uniqueExamples.length > 0) {
3973
+ console.log(` ${dimText("Examples:")}`);
3974
+ for (const example of uniqueExamples) {
3975
+ console.log(` ${example}`);
3976
+ }
3977
+ console.log("");
3978
+ }
3979
+ if (flags.requiredOnly && optionalOmitted) {
3980
+ console.log(` ${extraDimText("Optional parameters hidden; run with --all-parameters to view all fields.")}`);
3981
+ console.log("");
3982
+ }
3983
+ console.log(summaryLine);
3984
+ console.log("");
3985
+ return;
3986
+ } catch (error2) {
3987
+ await persistPreparedEphemeralServer(runtime, prepared);
3988
+ maybeSetListExitCode([{ status: "error" }], flags);
3989
+ if (flags.quiet) {
3990
+ return;
3991
+ }
3992
+ const durationMs = Date.now() - startedAt;
3993
+ printSingleServerHeader(definition, void 0, durationMs, transportSummary, sourcePath);
3994
+ const message = error2 instanceof Error ? error2.message : "Failed to load tool list.";
3995
+ const authCommand = buildAuthCommandHint(definition);
3996
+ const advice = classifyListError(error2, definition.name, timeoutMs, { authCommand });
3997
+ const timedOut = message === "Timeout" || /\btimed out\b/i.test(message);
3998
+ console.warn(` Tools: ${timedOut ? `<timed out after ${timeoutMs}ms>` : "<unavailable>"}`);
3999
+ console.warn(` Reason: ${message}`);
4000
+ if (advice.category === "auth" && advice.authCommand) {
4001
+ console.warn(` Next: run '${advice.authCommand}' to finish authentication.`);
4002
+ }
4003
+ }
4004
+ } finally {
4005
+ if (previousStdioLogMode !== void 0) {
4006
+ setStdioLogMode(previousStdioLogMode);
4007
+ }
4008
+ }
4009
+ }
4010
+ async function checkListServer(runtime, server, timeoutMs, disableOAuth) {
4011
+ const startedAt = Date.now();
4012
+ try {
4013
+ const tools = await withTimeout(runtime.listTools(server.name, { autoAuthorize: false, allowCachedAuth: true, disableOAuth }), timeoutMs);
4014
+ return {
4015
+ server,
4016
+ status: "ok",
4017
+ tools,
4018
+ durationMs: Date.now() - startedAt
4019
+ };
4020
+ } catch (error2) {
4021
+ return {
4022
+ server,
4023
+ status: "error",
4024
+ error: error2,
4025
+ durationMs: Date.now() - startedAt
4026
+ };
4027
+ }
4028
+ }
4029
+ function maybeSetListExitCode(entries, flags) {
4030
+ if (!flags.exitCode) {
4031
+ return;
4032
+ }
4033
+ if (entries.some((entry) => entry.status !== "ok")) {
4034
+ process.exitCode = 1;
4035
+ }
4036
+ }
4037
+ function statusLabel(status) {
4038
+ switch (status) {
4039
+ case "auth":
4040
+ return "auth required";
4041
+ case "offline":
4042
+ return "offline";
4043
+ case "http":
4044
+ return "http error";
4045
+ case "error":
4046
+ return "error";
4047
+ case "ok":
4048
+ return "healthy";
4049
+ default:
4050
+ return "error";
4051
+ }
4052
+ }
4053
+ function printListHelp() {
4054
+ const lines = [
4055
+ "Usage: mcporter list [server | url] [flags]",
4056
+ "",
4057
+ "Targets:",
4058
+ " <name> Use a server from config/mcporter.json or editor imports.",
4059
+ " https://host/mcp List an HTTP server directly; mcporter infers the entry.",
4060
+ "",
4061
+ "Ad-hoc servers:",
4062
+ " --http-url <url> Register an HTTP server for this run.",
4063
+ " --allow-http Permit plain http:// URLs with --http-url.",
4064
+ " --header KEY=value Attach HTTP headers (repeatable).",
4065
+ " --stdio <command> Run a stdio MCP server (repeat --stdio-arg for args).",
4066
+ " --stdio-arg <value> Append args to the stdio command (repeatable).",
4067
+ " --env KEY=value Inject env vars for stdio servers (repeatable).",
4068
+ " --cwd <path> Working directory for stdio servers.",
4069
+ " --name <value> Override the display name for ad-hoc servers.",
4070
+ " --description <text> Override the description for ad-hoc servers.",
4071
+ " --persist <path> Write the ad-hoc definition to config/mcporter.json.",
4072
+ " --yes Skip confirmation prompts when persisting.",
4073
+ "",
4074
+ "Display flags:",
4075
+ " --brief Show compact signatures only for a single server.",
4076
+ " --signatures Alias for --brief.",
4077
+ " --schema Show tool schemas when listing servers.",
4078
+ " --all-parameters Include optional parameters in tool docs.",
4079
+ " --json Emit a JSON summary instead of text.",
4080
+ " --status Check server status only, without tool docs.",
4081
+ " --exit-code Exit 1 when any checked server is unhealthy.",
4082
+ " --quiet Suppress output; implies --exit-code.",
4083
+ " --verbose Show all config sources for matching servers.",
4084
+ " --sources Include source arrays in JSON output without other verbose details.",
4085
+ " --timeout <ms> Override the per-server discovery timeout.",
4086
+ " --no-oauth Never start OAuth; use cached tokens only.",
4087
+ "",
4088
+ "Examples:",
4089
+ " mcporter list",
4090
+ " mcporter list --quiet",
4091
+ " mcporter list linear --schema",
4092
+ " mcporter list linear --status --json",
4093
+ " mcporter list linear --brief",
4094
+ " mcporter list linear.list_issues --signatures",
4095
+ " mcporter list https://mcp.example.com/mcp",
4096
+ " mcporter list --http-url https://localhost:3333/mcp --schema"
4097
+ ];
4098
+ console.error(lines.join("\n"));
4099
+ }
4100
+ function resolveServerDefinition(runtime, name, options = {}) {
4101
+ try {
4102
+ const definition = runtime.getDefinition(name);
4103
+ return { definition, name };
4104
+ } catch (error2) {
4105
+ if (!(error2 instanceof Error) || !/Unknown MCP server/i.test(error2.message)) {
4106
+ throw error2;
4107
+ }
4108
+ const suggestion = suggestServerName(runtime, name);
4109
+ if (!suggestion) {
4110
+ if (!options.quiet) {
4111
+ console.error(error2.message);
4112
+ }
4113
+ return void 0;
4114
+ }
4115
+ const messages = renderIdentifierResolutionMessages({
4116
+ entity: "server",
4117
+ attempted: name,
4118
+ resolution: suggestion
4119
+ });
4120
+ if (suggestion.kind === "auto" && messages.auto) {
4121
+ if (!options.quiet) {
4122
+ console.log(dimText(messages.auto));
4123
+ }
4124
+ return resolveServerDefinition(runtime, suggestion.value, options);
4125
+ }
4126
+ if (!options.quiet && messages.suggest) {
4127
+ console.error(yellowText(messages.suggest));
4128
+ }
4129
+ if (!options.quiet) {
4130
+ console.error(error2.message);
4131
+ }
4132
+ return void 0;
4133
+ }
4134
+ }
4135
+ function suggestServerName(runtime, attempted) {
4136
+ const definitions = runtime.getDefinitions();
4137
+ const names = definitions.map((entry) => entry.name);
4138
+ return chooseClosestIdentifier(attempted, names);
4139
+ }
4140
+ function resolveConfiguredToolSelector(runtime, target) {
4141
+ if (!target || !target.includes(".")) {
4142
+ return void 0;
4143
+ }
4144
+ const definitions = runtime.getDefinitions();
4145
+ const match = definitions.map((definition) => definition.name).filter((name) => target.startsWith(`${name}.`)).toSorted((a, b) => b.length - a.length)[0];
4146
+ if (!match) {
4147
+ return void 0;
4148
+ }
4149
+ const tool = target.slice(match.length + 1);
4150
+ if (!tool) {
4151
+ return void 0;
4152
+ }
4153
+ return { server: match, tool };
4154
+ }
4155
+ function filterToolMetadata(entries, requestedTool) {
4156
+ if (!requestedTool) {
4157
+ return entries;
4158
+ }
4159
+ return entries.filter((entry) => entry.tool.name === requestedTool);
4160
+ }
4161
+ function printMissingToolText(definition, tool, durationMs, transportSummary, sourcePath) {
4162
+ printSingleServerHeader(definition, 0, durationMs, transportSummary, sourcePath);
4163
+ console.warn(` Tool '${tool}' not found on '${definition.name}'.`);
4164
+ process.exitCode = 1;
4165
+ }
4166
+ function printMissingToolJson(definition, tool, durationMs, transportSummary, flags) {
4167
+ console.log(JSON.stringify({
4168
+ mode: "server",
4169
+ name: definition.name,
4170
+ status: "error",
4171
+ durationMs,
4172
+ description: definition.description,
4173
+ transport: transportSummary,
4174
+ source: definition.source,
4175
+ sources: flags.verbose || flags.includeSources ? definition.sources : void 0,
4176
+ tools: [],
4177
+ error: `Tool '${tool}' not found on '${definition.name}'.`
4178
+ }, null, 2));
4179
+ process.exitCode = 1;
4180
+ }
4181
+ async function loadServerInstructions(runtime, serverName) {
4182
+ if (typeof runtime.getInstructions !== "function") {
4183
+ return void 0;
4184
+ }
4185
+ return runtime.getInstructions(serverName);
4186
+ }
4187
+ export {
4188
+ handleList,
4189
+ printListHelp
4190
+ };