rantera 0.1.2 → 0.1.4

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.
package/dist/index.js CHANGED
@@ -1,376 +1,169 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
- import * as readline from "readline";
4
- import { existsSync, writeFileSync } from "fs";
5
- import { join } from "path";
6
- import { runAgent } from "./agent.js";
7
- import { login, logout } from "./auth.js";
8
- import { getApiKey, loadConfig, saveConfig } from "./config.js";
9
- import { loadMemory, RANTERA_MD_TEMPLATE } from "./memory.js";
10
- import { MODELS, printWelcome, printHelp, printHistory, printStatus, printModelList, printCost, printText, printToolCall, printToolResult, printError, printSuccess, printDivider, printAssistantPrefix, startSpinner, stopSpinner, clearSpinner, } from "./ui.js";
11
- import chalk from "chalk";
12
- const CONTEXT_LIMIT = 200_000;
13
- function estimateTokens(msgs, system) {
14
- const histToks = msgs.reduce((s, m) => s + Math.ceil((m.content?.length ?? 0) / 4), 0);
15
- const sysToks = system ? Math.ceil(system.length / 4) : 0;
16
- return histToks + sysToks;
17
- }
18
- // ─── CLI definition ──────────────────────────────────────────────────────────
19
- const program = new Command();
20
- program
21
- .name("rantera")
22
- .description("Rantera CLI — African-first AI platform for developers")
23
- .version("0.1.2");
24
- // ─── rantera auth ─────────────────────────────────────────────────────────────
25
- const auth = program.command("auth").description("Manage Rantera authentication");
26
- auth
27
- .command("login")
28
- .description("Log in to your Rantera account")
29
- .option("--url <url>", "API URL override", "https://rantera.ai")
30
- .action(async (opts) => {
31
- try {
32
- await login(opts.url);
33
- printSuccess("Logged in to Rantera. Run `rantera` to start building.");
34
- }
35
- catch (err) {
36
- printError(String(err));
37
- process.exit(1);
38
- }
39
- });
40
- auth
41
- .command("logout")
42
- .description("Log out and remove stored credentials")
43
- .action(() => {
44
- logout();
45
- console.log(chalk.dim(" Logged out."));
46
- });
47
- auth
48
- .command("status")
49
- .description("Show current auth status")
50
- .action(() => {
51
- const key = getApiKey();
52
- if (key) {
53
- printSuccess(`Authenticated ${chalk.dim(`(${key.slice(0, 12)}…)`)}`);
54
- }
55
- else {
56
- console.log(chalk.hex("#CE1126")(" ✗ Not authenticated."), chalk.dim("Run `rantera auth login`."));
57
- }
58
- });
59
- // ─── rantera config ───────────────────────────────────────────────────────────
60
- const cfgCmd = program.command("config").description("Manage CLI configuration");
61
- cfgCmd
62
- .command("set-key <key>")
63
- .description("Set a Rantera API key manually (overrides login token)")
64
- .action((key) => {
65
- if (!key.startsWith("sk-rnt-")) {
66
- printError("Invalid key — Rantera API keys start with sk-rnt-");
67
- process.exit(1);
68
- }
69
- const cfg = loadConfig();
70
- cfg.apiKey = key;
71
- saveConfig(cfg);
72
- printSuccess(`API key saved. ${chalk.dim(`(${key.slice(0, 16)}…)`)}`);
73
- });
74
- cfgCmd
75
- .command("set-url <url>")
76
- .description("Set the Rantera API URL (default: https://rantera.ai)")
77
- .action((url) => {
78
- const cfg = loadConfig();
79
- cfg.apiUrl = url;
80
- saveConfig(cfg);
81
- printSuccess(`API URL set to ${chalk.dim(url)}`);
82
- });
83
- cfgCmd
84
- .command("show")
85
- .description("Show current configuration")
86
- .action(() => {
87
- const cfg = loadConfig();
88
- const key = process.env.WAKANDA_API_KEY ?? cfg.apiKey;
89
- console.log(chalk.dim(" API URL:"), cfg.apiUrl);
90
- console.log(chalk.dim(" API key:"), key
91
- ? `${key.slice(0, 16)}… ${chalk.dim("(set)")}`
92
- : chalk.yellow("not set — run `rantera auth login`"));
93
- console.log(chalk.dim(" Model: "), cfg.model ?? "tera");
94
- if (process.env.WAKANDA_API_KEY) {
95
- console.log(chalk.dim(" ↑ from WAKANDA_API_KEY env var"));
96
- }
97
- });
98
- // ─── rantera init ─────────────────────────────────────────────────────────────
99
- program
100
- .command("init")
101
- .description("Create a RANTERA.md project memory file in the current directory")
102
- .option("-f, --force", "Overwrite if RANTERA.md already exists")
103
- .action((opts) => {
104
- const dest = join(process.cwd(), "RANTERA.md");
105
- if (existsSync(dest) && !opts.force) {
106
- printError("RANTERA.md already exists. Use --force to overwrite.");
107
- process.exit(1);
108
- }
109
- writeFileSync(dest, RANTERA_MD_TEMPLATE, "utf-8");
110
- printSuccess("Created RANTERA.md");
111
- console.log(chalk.dim(" Edit it to give Wakanda persistent context about this project."));
112
- console.log(chalk.dim(" It loads automatically when you run `rantera` here.\n"));
113
- });
114
- // ─── rantera wakanda (explicit subcommand) ────────────────────────────────────
115
- program
116
- .command("wakanda [prompt]")
117
- .description("Open the Wakanda AI workspace (default command)")
118
- .option("-d, --dir <path>", "Working directory for file and shell tools", process.cwd())
119
- .option("-p, --print", "Non-interactive: print output to stdout, no banner (for scripts/CI)")
120
- .action(async (prompt, opts) => {
121
- await startWakanda(prompt, opts.dir, opts.print ?? false);
122
- });
123
- // ─── default: `rantera` or `rantera "task"` ───────────────────────────────────
124
- program
125
- .argument("[prompt]", "One-shot task — runs and exits without opening the REPL")
126
- .option("-d, --dir <path>", "Working directory for file and shell tools", process.cwd())
127
- .option("-p, --print", "Non-interactive: print output to stdout, no banner (for scripts/CI)")
128
- .action(async (prompt, options) => {
129
- await startWakanda(prompt, options.dir, options.print ?? false);
130
- });
131
- // ─── Wakanda session ──────────────────────────────────────────────────────────
132
- async function startWakanda(prompt, dir, printMode) {
133
- let apiKey = getApiKey();
134
- if (!apiKey) {
135
- if (printMode) {
136
- process.stderr.write("Error: Not authenticated. Run `rantera auth login`.\n");
137
- process.exit(1);
138
- }
139
- const cfg0 = loadConfig();
140
- console.log();
141
- console.log(chalk.hex("#FCD116").bold(" You're not logged in to Rantera."));
142
- console.log(chalk.dim(" Log in to continue. We'll open your browser now.\n"));
143
- const rl2 = readline.createInterface({ input: process.stdin, output: process.stdout });
144
- await new Promise((resolve) => {
145
- rl2.question(chalk.dim(" Press Enter to open the browser, or Ctrl+C to cancel… "), () => {
146
- rl2.close();
147
- resolve();
148
- });
149
- });
150
- try {
151
- await login(cfg0.apiUrl ?? "https://rantera.ai");
152
- apiKey = getApiKey();
153
- printSuccess("Logged in. Starting Wakanda...\n");
154
- }
155
- catch (err) {
156
- printError(String(err));
157
- process.exit(1);
158
- }
159
- }
160
- const cfg = loadConfig();
161
- const history = [];
162
- let currentModel = cfg.model ?? "hira";
163
- const system = loadMemory(dir);
164
- if (!printMode) {
165
- printWelcome(dir, currentModel, system !== null);
166
- }
167
- // ── One-shot mode ────────────────────────────────────────────────────────────
168
- if (prompt) {
169
- const finalText = await executeTask(prompt, history, dir, currentModel, system, printMode);
170
- if (printMode) {
171
- process.stdout.write(finalText + "\n");
172
- }
173
- return;
174
- }
175
- if (printMode) {
176
- process.stderr.write("Error: --print requires a prompt argument. Try: rantera -p \"your task\"\n");
177
- process.exit(1);
178
- }
179
- // ── Interactive REPL ─────────────────────────────────────────────────────────
180
- const rl = readline.createInterface({
181
- input: process.stdin,
182
- output: process.stdout,
183
- terminal: true,
184
- historySize: 500,
185
- });
186
- rl.on("close", () => {
187
- console.log(chalk.dim("\n Closing Wakanda. Keep building.\n"));
188
- process.exit(0);
189
- });
190
- let multiLineBuf = "";
191
- let inMultiLine = false;
192
- const ask = () => {
193
- const prompt = inMultiLine
194
- ? " " + chalk.dim("... › ")
195
- : " " + chalk.hex("#FCD116").bold("you › ");
196
- rl.question(prompt, async (raw) => {
197
- // Backslash continuation: end line with \ to keep typing
198
- if (raw.endsWith("\\")) {
199
- multiLineBuf += (multiLineBuf ? "\n" : "") + raw.slice(0, -1);
200
- inMultiLine = true;
201
- ask();
202
- return;
203
- }
204
- const input = multiLineBuf + (multiLineBuf ? "\n" : "") + raw;
205
- multiLineBuf = "";
206
- inMultiLine = false;
207
- const trimmed = input.trim();
208
- if (!trimmed) {
209
- ask();
210
- return;
211
- }
212
- // ── Slash commands ───────────────────────────────────────────────────────
213
- if (trimmed === "/help") {
214
- printHelp();
215
- ask();
216
- return;
217
- }
218
- if (trimmed === "/clear") {
219
- history.length = 0;
220
- console.log(chalk.dim("\n Conversation cleared.\n"));
221
- ask();
222
- return;
223
- }
224
- if (trimmed === "/history") {
225
- const msgs = history
226
- .filter(m => m.role === "user" || m.role === "assistant")
227
- .map(m => ({ role: m.role, content: m.content }));
228
- printHistory(msgs);
229
- ask();
230
- return;
231
- }
232
- if (trimmed === "/status") {
233
- const est = estimateTokens(history, system);
234
- printStatus(getApiKey(), cfg.apiUrl, history.length, dir, currentModel, est);
235
- ask();
236
- return;
237
- }
238
- if (trimmed === "/compact") {
239
- const KEEP = 6;
240
- const before = history.length;
241
- if (history.length > KEEP) {
242
- history.splice(0, history.length - KEEP);
243
- const after = history.length;
244
- const afterEst = estimateTokens(history, system);
245
- const pct = Math.round((afterEst / CONTEXT_LIMIT) * 100);
246
- console.log(chalk.dim(`\n Compacted — kept last ${after} of ${before} messages.`) +
247
- " " + chalk.dim(`(~${fmtK(afterEst)} tokens, ${pct}% of 200k)\n`));
248
- }
249
- else {
250
- console.log(chalk.dim("\n Nothing to compact yet.\n"));
251
- }
252
- ask();
253
- return;
254
- }
255
- if (trimmed === "/cost") {
256
- const est = estimateTokens(history, system);
257
- const msgs = history.filter(m => m.role === "user" || m.role === "assistant").length;
258
- printCost(est, msgs);
259
- ask();
260
- return;
261
- }
262
- // /model or /model <name>
263
- if (trimmed === "/model" || trimmed.startsWith("/model ")) {
264
- const parts = trimmed.split(/\s+/);
265
- if (parts.length === 1) {
266
- printModelList(currentModel);
267
- }
268
- else {
269
- const requested = parts[1].toLowerCase();
270
- const found = MODELS.find(m => m.id === requested);
271
- if (!found) {
272
- printError(`Unknown model "${requested}". Available: ${MODELS.filter(m => m.available).map(m => m.id).join(", ")}`);
273
- }
274
- else if (!found.available) {
275
- console.log(chalk.dim(`\n ${found.display} is coming soon — stay tuned.\n`));
276
- }
277
- else {
278
- currentModel = found.id;
279
- const saved = loadConfig();
280
- saved.model = currentModel;
281
- saveConfig(saved);
282
- printSuccess(`Switched to ${found.display} ${chalk.dim(found.desc)}`);
283
- console.log();
284
- }
285
- }
286
- ask();
287
- return;
288
- }
289
- if (trimmed === "/logout") {
290
- await logout();
291
- console.log(chalk.dim("\n Logged out. Type /login to authenticate with a different account.\n"));
292
- ask();
293
- return;
294
- }
295
- if (trimmed === "/login") {
296
- console.log();
297
- try {
298
- await login(cfg.apiUrl);
299
- printSuccess("Logged in.\n");
300
- }
301
- catch (err) {
302
- printError(String(err));
303
- }
304
- ask();
305
- return;
306
- }
307
- if (trimmed === "/exit" || trimmed === "/quit") {
308
- rl.close();
309
- return;
310
- }
311
- if (trimmed.startsWith("/")) {
312
- console.log(chalk.dim(`\n Unknown command: ${trimmed} (type /help)\n`));
313
- ask();
314
- return;
315
- }
316
- // ── Run task ─────────────────────────────────────────────────────────────
317
- await executeTask(trimmed, history, dir, currentModel, system, false);
318
- ask();
319
- });
320
- };
321
- ask();
322
- }
323
- // ─── Helpers ──────────────────────────────────────────────────────────────────
324
- function fmtK(n) {
325
- return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n);
326
- }
327
- // ─── Task runner ──────────────────────────────────────────────────────────────
328
- async function executeTask(userMessage, history, cwd, model, system, printMode) {
329
- if (!printMode) {
330
- console.log();
331
- printAssistantPrefix(model);
332
- }
333
- let firstChunk = true;
334
- const finalText = await runAgent(userMessage, history, {
335
- cwd,
336
- model,
337
- system: system ?? undefined,
338
- onText(text) {
339
- if (firstChunk) {
340
- clearSpinner();
341
- firstChunk = false;
342
- }
343
- printText(text);
344
- },
345
- onToolCall(name, args) {
346
- if (printMode)
347
- return;
348
- clearSpinner();
349
- firstChunk = false;
350
- printToolCall(name, args);
351
- startSpinner(`${name}…`);
352
- },
353
- onToolResult(name, output, ok) {
354
- if (printMode)
355
- return;
356
- stopSpinner(ok);
357
- printToolResult(name, output, ok);
358
- },
359
- });
360
- if (!printMode) {
361
- if (!finalText && firstChunk) {
362
- stopSpinner(false, "No response");
363
- }
364
- else if (firstChunk) {
365
- clearSpinner();
366
- }
367
- console.log("\n");
368
- printDivider();
369
- }
370
- history.push({ role: "user", content: userMessage });
371
- if (finalText)
372
- history.push({ role: "assistant", content: finalText });
373
- return finalText;
374
- }
375
- program.parse(process.argv);
376
- //# sourceMappingURL=index.js.map
2
+ var fi=Object.create;var be=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var mi=Object.getOwnPropertyNames;var pi=Object.getPrototypeOf,gi=Object.prototype.hasOwnProperty;var J=(i=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(i,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):i)(function(i){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var S=(i,t)=>()=>{try{return t||i((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}};var Fi=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of mi(t))!gi.call(i,r)&&r!==e&&be(i,r,{get:()=>t[r],enumerable:!(n=di(t,r))||n.enumerable});return i};var st=(i,t,e)=>(e=i!=null?fi(pi(i)):{},Fi(t||!i||!i.__esModule?be(e,"default",{value:i,enumerable:!0}):e,i));var X=S(bt=>{var ut=class extends Error{constructor(t,e,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=e,this.exitCode=t,this.nestedError=void 0}},At=class extends ut{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};bt.CommanderError=ut;bt.InvalidArgumentError=At});var at=S(wt=>{var{InvalidArgumentError:Ci}=X(),yt=class{constructor(t,e){switch(this.description=e||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(t,e){return e===this.defaultValue||!Array.isArray(e)?[t]:e.concat(t)}default(t,e){return this.defaultValue=t,this.defaultValueDescription=e,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new Ci(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(e,n):e},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Ei(i){let t=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+t+">":"["+t+"]"}wt.Argument=yt;wt.humanReadableArgName=Ei});var Bt=S(ye=>{var{humanReadableArgName:_i}=at(),Ot=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(t){let e=t.commands.filter(r=>!r._hidden),n=t._getHelpCommand();return n&&!n._hidden&&e.push(n),this.sortSubcommands&&e.sort((r,o)=>r.name().localeCompare(o.name())),e}compareOptions(t,e){let n=r=>r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"");return n(t).localeCompare(n(e))}visibleOptions(t){let e=t.options.filter(r=>!r.hidden),n=t._getHelpOption();if(n&&!n.hidden){let r=n.short&&t._findOption(n.short),o=n.long&&t._findOption(n.long);!r&&!o?e.push(n):n.long&&!o?e.push(t.createOption(n.long,n.description)):n.short&&!r&&e.push(t.createOption(n.short,n.description))}return this.sortOptions&&e.sort(this.compareOptions),e}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let e=[];for(let n=t.parent;n;n=n.parent){let r=n.options.filter(o=>!o.hidden);e.push(...r)}return this.sortOptions&&e.sort(this.compareOptions),e}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(e=>{e.description=e.description||t._argsDescription[e.name()]||""}),t.registeredArguments.find(e=>e.description)?t.registeredArguments:[]}subcommandTerm(t){let e=t.registeredArguments.map(n=>_i(n)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(e?" "+e:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,e){return e.visibleCommands(t).reduce((n,r)=>Math.max(n,e.subcommandTerm(r).length),0)}longestOptionTermLength(t,e){return e.visibleOptions(t).reduce((n,r)=>Math.max(n,e.optionTerm(r).length),0)}longestGlobalOptionTermLength(t,e){return e.visibleGlobalOptions(t).reduce((n,r)=>Math.max(n,e.optionTerm(r).length),0)}longestArgumentTermLength(t,e){return e.visibleArguments(t).reduce((n,r)=>Math.max(n,e.argumentTerm(r).length),0)}commandUsage(t){let e=t._name;t._aliases[0]&&(e=e+"|"+t._aliases[0]);let n="";for(let r=t.parent;r;r=r.parent)n=r.name()+" "+n;return n+e+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let e=[];return t.argChoices&&e.push(`choices: ${t.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&e.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&e.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&e.push(`env: ${t.envVar}`),e.length>0?`${t.description} (${e.join(", ")})`:t.description}argumentDescription(t){let e=[];if(t.argChoices&&e.push(`choices: ${t.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),t.defaultValue!==void 0&&e.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),e.length>0){let n=`(${e.join(", ")})`;return t.description?`${t.description} ${n}`:n}return t.description}formatHelp(t,e){let n=e.padWidth(t,e),r=e.helpWidth||80,o=2,s=2;function a(d,m){if(m){let E=`${d.padEnd(n+s)}${m}`;return e.wrap(E,r-o,n+s)}return d}function l(d){return d.join(`
3
+ `).replace(/^/gm," ".repeat(o))}let D=[`Usage: ${e.commandUsage(t)}`,""],h=e.commandDescription(t);h.length>0&&(D=D.concat([e.wrap(h,r,0),""]));let c=e.visibleArguments(t).map(d=>a(e.argumentTerm(d),e.argumentDescription(d)));c.length>0&&(D=D.concat(["Arguments:",l(c),""]));let f=e.visibleOptions(t).map(d=>a(e.optionTerm(d),e.optionDescription(d)));if(f.length>0&&(D=D.concat(["Options:",l(f),""])),this.showGlobalOptions){let d=e.visibleGlobalOptions(t).map(m=>a(e.optionTerm(m),e.optionDescription(m)));d.length>0&&(D=D.concat(["Global Options:",l(d),""]))}let p=e.visibleCommands(t).map(d=>a(e.subcommandTerm(d),e.subcommandDescription(d)));return p.length>0&&(D=D.concat(["Commands:",l(p),""])),D.join(`
4
+ `)}padWidth(t,e){return Math.max(e.longestOptionTermLength(t,e),e.longestGlobalOptionTermLength(t,e),e.longestSubcommandTermLength(t,e),e.longestArgumentTermLength(t,e))}wrap(t,e,n,r=40){let o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",s=new RegExp(`[\\n][${o}]+`);if(t.match(s))return t;let a=e-n;if(a<r)return t;let l=t.slice(0,n),D=t.slice(n).replace(`\r
5
+ `,`
6
+ `),h=" ".repeat(n),f="\\s\u200B",p=new RegExp(`
7
+ |.{1,${a-1}}([${f}]|$)|[^${f}]+?([${f}]|$)`,"g"),d=D.match(p)||[];return l+d.map((m,E)=>m===`
8
+ `?"":(E>0?h:"")+m.trimEnd()).join(`
9
+ `)}};ye.Help=Ot});var St=S(Tt=>{var{InvalidArgumentError:xi}=X(),vt=class{constructor(t,e){this.flags=t,this.description=e||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let n=bi(t);this.short=n.shortFlag,this.long=n.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(t,e){return this.defaultValue=t,this.defaultValueDescription=e,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let e=t;return typeof t=="string"&&(e={[t]:!0}),this.implied=Object.assign(this.implied||{},e),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_concatValue(t,e){return e===this.defaultValue||!Array.isArray(e)?[t]:e.concat(t)}choices(t){return this.argChoices=t.slice(),this.parseArg=(e,n)=>{if(!this.argChoices.includes(e))throw new xi(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(e,n):e},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return Ai(this.name().replace(/^no-/,""))}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Rt=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(e=>{e.negate?this.negativeOptions.set(e.attributeName(),e):this.positiveOptions.set(e.attributeName(),e)}),this.negativeOptions.forEach((e,n)=>{this.positiveOptions.has(n)&&this.dualOptions.add(n)})}valueFromOption(t,e){let n=e.attributeName();if(!this.dualOptions.has(n))return!0;let r=this.negativeOptions.get(n).presetArg,o=r!==void 0?r:!1;return e.negate===(o===t)}};function Ai(i){return i.split("-").reduce((t,e)=>t+e[0].toUpperCase()+e.slice(1))}function bi(i){let t,e,n=i.split(/[ |,]+/);return n.length>1&&!/^[[<]/.test(n[1])&&(t=n.shift()),e=n.shift(),!t&&/^-[^-]$/.test(e)&&(t=e,e=void 0),{shortFlag:t,longFlag:e}}Tt.Option=vt;Tt.DualOptions=Rt});var Oe=S(we=>{function yi(i,t){if(Math.abs(i.length-t.length)>3)return Math.max(i.length,t.length);let e=[];for(let n=0;n<=i.length;n++)e[n]=[n];for(let n=0;n<=t.length;n++)e[0][n]=n;for(let n=1;n<=t.length;n++)for(let r=1;r<=i.length;r++){let o=1;i[r-1]===t[n-1]?o=0:o=1,e[r][n]=Math.min(e[r-1][n]+1,e[r][n-1]+1,e[r-1][n-1]+o),r>1&&n>1&&i[r-1]===t[n-2]&&i[r-2]===t[n-1]&&(e[r][n]=Math.min(e[r][n],e[r-2][n-2]+1))}return e[i.length][t.length]}function wi(i,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let e=i.startsWith("--");e&&(i=i.slice(2),t=t.map(s=>s.slice(2)));let n=[],r=3,o=.4;return t.forEach(s=>{if(s.length<=1)return;let a=yi(i,s),l=Math.max(i.length,s.length);(l-a)/l>o&&(a<r?(r=a,n=[s]):a===r&&n.push(s))}),n.sort((s,a)=>s.localeCompare(a)),e&&(n=n.map(s=>`--${s}`)),n.length>1?`
10
+ (Did you mean one of ${n.join(", ")}?)`:n.length===1?`
11
+ (Did you mean ${n[0]}?)`:""}we.suggestSimilar=wi});var Se=S(Te=>{var Oi=J("node:events").EventEmitter,kt=J("node:child_process"),P=J("node:path"),$t=J("node:fs"),C=J("node:process"),{Argument:Bi,humanReadableArgName:vi}=at(),{CommanderError:It}=X(),{Help:Ri}=Bt(),{Option:Be,DualOptions:Ti}=St(),{suggestSimilar:ve}=Oe(),Pt=class i extends Oi{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:e=>C.stdout.write(e),writeErr:e=>C.stderr.write(e),getOutHelpWidth:()=>C.stdout.isTTY?C.stdout.columns:void 0,getErrHelpWidth:()=>C.stderr.isTTY?C.stderr.columns:void 0,outputError:(e,n)=>n(e)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let e=this;e;e=e.parent)t.push(e);return t}command(t,e,n){let r=e,o=n;typeof r=="object"&&r!==null&&(o=r,r=null),o=o||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return r&&(l.description(r),l._executableHandler=!0),o.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(o.noHelp||o.hidden),l._executableFile=o.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),r?this:l}createCommand(t){return new i(t)}createHelp(){return Object.assign(new Ri,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,t),this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,e){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
12
+ - specify the name in Command constructor or using .name()`);return e=e||{},e.isDefault&&(this._defaultCommandName=t._name),(e.noHelp||e.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,e){return new Bi(t,e)}argument(t,e,n,r){let o=this.createArgument(t,e);return typeof n=="function"?o.default(r).argParser(n):o.default(n),this.addArgument(o),this}arguments(t){return t.trim().split(/ +/).forEach(e=>{this.argument(e)}),this}addArgument(t){let e=this.registeredArguments.slice(-1)[0];if(e&&e.variadic)throw new Error(`only the last argument can be variadic '${e.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,e){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,this;t=t??"help [command]";let[,n,r]=t.match(/([^ ]+) *(.*)/),o=e??"display help for command",s=this.createCommand(n);return s.helpOption(!1),r&&s.arguments(r),o&&s.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=s,this}addHelpCommand(t,e){return typeof t!="object"?(this.helpCommand(t,e),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,e){let n=["preSubcommand","preAction","postAction"];if(!n.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
13
+ Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(e):this._lifeCycleHooks[t]=[e],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=e=>{if(e.code!=="commander.executeSubCommandAsync")throw e},this}_exit(t,e,n){this._exitCallback&&this._exitCallback(new It(t,e,n)),C.exit(t)}action(t){let e=n=>{let r=this.registeredArguments.length,o=n.slice(0,r);return this._storeOptionsAsProperties?o[r]=this:o[r]=this.opts(),o.push(this),t.apply(this,o)};return this._actionHandler=e,this}createOption(t,e){return new Be(t,e)}_callParseArg(t,e,n,r){try{return t.parseArg(e,n)}catch(o){if(o.code==="commander.invalidArgument"){let s=`${r} ${o.message}`;this.error(s,{exitCode:o.exitCode,code:o.code})}throw o}}_registerOption(t){let e=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(e){let n=t.long&&this._findOption(t.long)?t.long:t.short;throw new Error(`Cannot add option '${t.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${n}'
14
+ - already used by option '${e.flags}'`)}this.options.push(t)}_registerCommand(t){let e=r=>[r.name()].concat(r.aliases()),n=e(t).find(r=>this._findCommand(r));if(n){let r=e(this._findCommand(n)).join("|"),o=e(t).join("|");throw new Error(`cannot add command '${o}' as already have command '${r}'`)}this.commands.push(t)}addOption(t){this._registerOption(t);let e=t.name(),n=t.attributeName();if(t.negate){let o=t.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(n,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(n,t.defaultValue,"default");let r=(o,s,a)=>{o==null&&t.presetArg!==void 0&&(o=t.presetArg);let l=this.getOptionValue(n);o!==null&&t.parseArg?o=this._callParseArg(t,o,l,s):o!==null&&t.variadic&&(o=t._concatValue(o,l)),o==null&&(t.negate?o=!1:t.isBoolean()||t.optional?o=!0:o=""),this.setOptionValueWithSource(n,o,a)};return this.on("option:"+e,o=>{let s=`error: option '${t.flags}' argument '${o}' is invalid.`;r(o,s,"cli")}),t.envVar&&this.on("optionEnv:"+e,o=>{let s=`error: option '${t.flags}' value '${o}' from env '${t.envVar}' is invalid.`;r(o,s,"env")}),this}_optionEx(t,e,n,r,o){if(typeof e=="object"&&e instanceof Be)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(e,n);if(s.makeOptionMandatory(!!t.mandatory),typeof r=="function")s.default(o).argParser(r);else if(r instanceof RegExp){let a=r;r=(l,D)=>{let h=a.exec(l);return h?h[0]:D},s.default(o).argParser(r)}else s.default(r);return this.addOption(s)}option(t,e,n,r){return this._optionEx({},t,e,n,r)}requiredOption(t,e,n,r){return this._optionEx({mandatory:!0},t,e,n,r)}combineFlagAndOptionalValue(t=!0){return this._combineFlagAndOptionalValue=!!t,this}allowUnknownOption(t=!0){return this._allowUnknownOption=!!t,this}allowExcessArguments(t=!0){return this._allowExcessArguments=!!t,this}enablePositionalOptions(t=!0){return this._enablePositionalOptions=!!t,this}passThroughOptions(t=!0){return this._passThroughOptions=!!t,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(t=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!t,this}getOptionValue(t){return this._storeOptionsAsProperties?this[t]:this._optionValues[t]}setOptionValue(t,e){return this.setOptionValueWithSource(t,e,void 0)}setOptionValueWithSource(t,e,n){return this._storeOptionsAsProperties?this[t]=e:this._optionValues[t]=e,this._optionValueSources[t]=n,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let e;return this._getCommandAndAncestors().forEach(n=>{n.getOptionValueSource(t)!==void 0&&(e=n.getOptionValueSource(t))}),e}_prepareUserArgs(t,e){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(e=e||{},t===void 0&&e.from===void 0){C.versions?.electron&&(e.from="electron");let r=C.execArgv??[];(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))&&(e.from="eval")}t===void 0&&(t=C.argv),this.rawArgs=t.slice();let n;switch(e.from){case void 0:case"node":this._scriptPath=t[1],n=t.slice(2);break;case"electron":C.defaultApp?(this._scriptPath=t[1],n=t.slice(2)):n=t.slice(1);break;case"user":n=t.slice(0);break;case"eval":n=t.slice(1);break;default:throw new Error(`unexpected parse option { from: '${e.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",n}parse(t,e){let n=this._prepareUserArgs(t,e);return this._parseCommand([],n),this}async parseAsync(t,e){let n=this._prepareUserArgs(t,e);return await this._parseCommand([],n),this}_executeSubCommand(t,e){e=e.slice();let n=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function o(h,c){let f=P.resolve(h,c);if($t.existsSync(f))return f;if(r.includes(P.extname(c)))return;let p=r.find(d=>$t.existsSync(`${f}${d}`));if(p)return`${f}${p}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let h;try{h=$t.realpathSync(this._scriptPath)}catch{h=this._scriptPath}a=P.resolve(P.dirname(h),a)}if(a){let h=o(a,s);if(!h&&!t._executableFile&&this._scriptPath){let c=P.basename(this._scriptPath,P.extname(this._scriptPath));c!==this._name&&(h=o(a,`${c}-${t._name}`))}s=h||s}n=r.includes(P.extname(s));let l;C.platform!=="win32"?n?(e.unshift(s),e=Re(C.execArgv).concat(e),l=kt.spawn(C.argv[0],e,{stdio:"inherit"})):l=kt.spawn(s,e,{stdio:"inherit"}):(e.unshift(s),e=Re(C.execArgv).concat(e),l=kt.spawn(C.execPath,e,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(c=>{C.on(c,()=>{l.killed===!1&&l.exitCode===null&&l.kill(c)})});let D=this._exitCallback;l.on("close",h=>{h=h??1,D?D(new It(h,"commander.executeSubCommandAsync","(close)")):C.exit(h)}),l.on("error",h=>{if(h.code==="ENOENT"){let c=a?`searched for local subcommand relative to directory '${a}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",f=`'${s}' does not exist
15
+ - if '${t._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
16
+ - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
17
+ - ${c}`;throw new Error(f)}else if(h.code==="EACCES")throw new Error(`'${s}' not executable`);if(!D)C.exit(1);else{let c=new It(1,"commander.executeSubCommandAsync","(error)");c.nestedError=h,D(c)}}),this.runningCommand=l}_dispatchSubcommand(t,e,n){let r=this._findCommand(t);r||this.help({error:!0});let o;return o=this._chainOrCallSubCommandHook(o,r,"preSubcommand"),o=this._chainOrCall(o,()=>{if(r._executableHandler)this._executeSubCommand(r,e.concat(n));else return r._parseCommand(e,n)}),o}_dispatchHelpCommand(t){t||this.help();let e=this._findCommand(t);return e&&!e._executableHandler&&e.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,e)=>{t.required&&this.args[e]==null&&this.missingArgument(t.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let t=(n,r,o)=>{let s=r;if(r!==null&&n.parseArg){let a=`error: command-argument value '${r}' is invalid for argument '${n.name()}'.`;s=this._callParseArg(n,r,o,a)}return s};this._checkNumberOfArguments();let e=[];this.registeredArguments.forEach((n,r)=>{let o=n.defaultValue;n.variadic?r<this.args.length?(o=this.args.slice(r),n.parseArg&&(o=o.reduce((s,a)=>t(n,a,s),n.defaultValue))):o===void 0&&(o=[]):r<this.args.length&&(o=this.args[r],n.parseArg&&(o=t(n,o,n.defaultValue))),e[r]=o}),this.processedArgs=e}_chainOrCall(t,e){return t&&t.then&&typeof t.then=="function"?t.then(()=>e()):e()}_chainOrCallHooks(t,e){let n=t,r=[];return this._getCommandAndAncestors().reverse().filter(o=>o._lifeCycleHooks[e]!==void 0).forEach(o=>{o._lifeCycleHooks[e].forEach(s=>{r.push({hookedCommand:o,callback:s})})}),e==="postAction"&&r.reverse(),r.forEach(o=>{n=this._chainOrCall(n,()=>o.callback(o.hookedCommand,this))}),n}_chainOrCallSubCommandHook(t,e,n){let r=t;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(o=>{r=this._chainOrCall(r,()=>o(this,e))}),r}_parseCommand(t,e){let n=this.parseOptions(e);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(n.operands),e=n.unknown,this.args=t.concat(e),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),e);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(e),this._dispatchSubcommand(this._defaultCommandName,t,e);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(o,t,e)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent&&this.parent.listenerCount(o))r(),this._processArguments(),this.parent.emit(o,t,e);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,e);this.listenerCount("command:*")?this.emit("command:*",t,e):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(e=>e._name===t||e._aliases.includes(t))}_findOption(t){return this.options.find(e=>e.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(e=>{e.mandatory&&t.getOptionValue(e.attributeName())===void 0&&t.missingMandatoryOptionValue(e)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(n=>{let r=n.attributeName();return this.getOptionValue(r)===void 0?!1:this.getOptionValueSource(r)!=="default"});t.filter(n=>n.conflictsWith.length>0).forEach(n=>{let r=t.find(o=>n.conflictsWith.includes(o.attributeName()));r&&this._conflictingOption(n,r)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let e=[],n=[],r=e,o=t.slice();function s(l){return l.length>1&&l[0]==="-"}let a=null;for(;o.length;){let l=o.shift();if(l==="--"){r===n&&r.push(l),r.push(...o);break}if(a&&!s(l)){this.emit(`option:${a.name()}`,l);continue}if(a=null,s(l)){let D=this._findOption(l);if(D){if(D.required){let h=o.shift();h===void 0&&this.optionMissingArgument(D),this.emit(`option:${D.name()}`,h)}else if(D.optional){let h=null;o.length>0&&!s(o[0])&&(h=o.shift()),this.emit(`option:${D.name()}`,h)}else this.emit(`option:${D.name()}`);a=D.variadic?D:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let D=this._findOption(`-${l[1]}`);if(D){D.required||D.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${D.name()}`,l.slice(2)):(this.emit(`option:${D.name()}`),o.unshift(`-${l.slice(2)}`));continue}}if(/^--[^=]+=/.test(l)){let D=l.indexOf("="),h=this._findOption(l.slice(0,D));if(h&&(h.required||h.optional)){this.emit(`option:${h.name()}`,l.slice(D+1));continue}}if(s(l)&&(r=n),(this._enablePositionalOptions||this._passThroughOptions)&&e.length===0&&n.length===0){if(this._findCommand(l)){e.push(l),o.length>0&&n.push(...o);break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){e.push(l),o.length>0&&e.push(...o);break}else if(this._defaultCommandName){n.push(l),o.length>0&&n.push(...o);break}}if(this._passThroughOptions){r.push(l),o.length>0&&r.push(...o);break}r.push(l)}return{operands:e,unknown:n}}opts(){if(this._storeOptionsAsProperties){let t={},e=this.options.length;for(let n=0;n<e;n++){let r=this.options[n].attributeName();t[r]=r===this._versionOptionName?this._version:this[r]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,e)=>Object.assign(t,e.opts()),{})}error(t,e){this._outputConfiguration.outputError(`${t}
18
+ `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
19
+ `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
20
+ `),this.outputHelp({error:!0}));let n=e||{},r=n.exitCode||1,o=n.code||"commander.error";this._exit(r,o,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in C.env){let e=t.attributeName();(this.getOptionValue(e)===void 0||["default","config","env"].includes(this.getOptionValueSource(e)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,C.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new Ti(this.options),e=n=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter(n=>n.implied!==void 0&&e(n.attributeName())&&t.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(n=>{Object.keys(n.implied).filter(r=>!e(r)).forEach(r=>{this.setOptionValueWithSource(r,n.implied[r],"implied")})})}missingArgument(t){let e=`error: missing required argument '${t}'`;this.error(e,{code:"commander.missingArgument"})}optionMissingArgument(t){let e=`error: option '${t.flags}' argument missing`;this.error(e,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let e=`error: required option '${t.flags}' not specified`;this.error(e,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,e){let n=s=>{let a=s.attributeName(),l=this.getOptionValue(a),D=this.options.find(c=>c.negate&&a===c.attributeName()),h=this.options.find(c=>!c.negate&&a===c.attributeName());return D&&(D.presetArg===void 0&&l===!1||D.presetArg!==void 0&&l===D.presetArg)?D:h||s},r=s=>{let a=n(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},o=`error: ${r(t)} cannot be used with ${r(e)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let e="";if(t.startsWith("--")&&this._showSuggestionAfterError){let r=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter(a=>a.long).map(a=>a.long);r=r.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);e=ve(t,r)}let n=`error: unknown option '${t}'${e}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let e=this.registeredArguments.length,n=e===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${e} argument${n} but got ${t.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],e="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach(o=>{r.push(o.name()),o.alias()&&r.push(o.alias())}),e=ve(t,r)}let n=`error: unknown command '${t}'${e}`;this.error(n,{code:"commander.unknownCommand"})}version(t,e,n){if(t===void 0)return this._version;this._version=t,e=e||"-V, --version",n=n||"output the version number";let r=this.createOption(e,n);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
21
+ `),this._exit(0,"commander.version",t)}),this}description(t,e){return t===void 0&&e===void 0?this._description:(this._description=t,e&&(this._argsDescription=e),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let e=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(e=this.commands[this.commands.length-1]),t===e._name)throw new Error("Command alias can't be the same as its name");let n=this.parent?._findCommand(t);if(n){let r=[n.name()].concat(n.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${r}'`)}return e._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(e=>this.alias(e)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let e=this.registeredArguments.map(n=>vi(n));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?e:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}nameFromFilename(t){return this._name=P.basename(t,P.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let e=this.createHelp();return e.helpWidth===void 0&&(e.helpWidth=t&&t.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),e.formatHelp(this,e)}_getHelpContext(t){t=t||{};let e={error:!!t.error},n;return e.error?n=r=>this._outputConfiguration.writeErr(r):n=r=>this._outputConfiguration.writeOut(r),e.write=t.write||n,e.command=this,e}outputHelp(t){let e;typeof t=="function"&&(e=t,t=void 0);let n=this._getHelpContext(t);this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let r=this.helpInformation(n);if(e&&(r=e(r),typeof r!="string"&&!Buffer.isBuffer(r)))throw new Error("outputHelp callback must return a string or a Buffer");n.write(r),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",n))}helpOption(t,e){return typeof t=="boolean"?(t?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(t=t??"-h, --help",e=e??"display help for command",this._helpOption=this.createOption(t,e),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this}help(t){this.outputHelp(t);let e=C.exitCode||0;e===0&&t&&typeof t!="function"&&t.error&&(e=1),this._exit(e,"commander.help","(outputHelp)")}addHelpText(t,e){let n=["beforeAll","before","after","afterAll"];if(!n.includes(t))throw new Error(`Unexpected value for position to addHelpText.
22
+ Expecting one of '${n.join("', '")}'`);let r=`${t}Help`;return this.on(r,o=>{let s;typeof e=="function"?s=e({error:o.error,command:o.command}):s=e,s&&o.write(`${s}
23
+ `)}),this}_outputHelpIfRequested(t){let e=this._getHelpOption();e&&t.find(r=>e.is(r))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Re(i){return i.map(t=>{if(!t.startsWith("--inspect"))return t;let e,n="127.0.0.1",r="9229",o;return(o=t.match(/^(--inspect(-brk)?)$/))!==null?e=o[1]:(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(e=o[1],/^\d+$/.test(o[3])?r=o[3]:n=o[3]):(o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(e=o[1],n=o[3],r=o[4]),e&&r!=="0"?`${e}=${n}:${parseInt(r)+1}`:t})}Te.Command=Pt});var Pe=S(O=>{var{Argument:ke}=at(),{Command:Mt}=Se(),{CommanderError:Si,InvalidArgumentError:$e}=X(),{Help:ki}=Bt(),{Option:Ie}=St();O.program=new Mt;O.createCommand=i=>new Mt(i);O.createOption=(i,t)=>new Ie(i,t);O.createArgument=(i,t)=>new ke(i,t);O.Command=Mt;O.Option=Ie;O.Argument=ke;O.Help=ki;O.CommanderError=Si;O.InvalidArgumentError=$e;O.InvalidOptionArgumentError=$e});var Bn=S((is,dr)=>{dr.exports={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u2764\uFE0F "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}}});var re=S((rs,Rn)=>{"use strict";var Ft=Object.assign({},Bn()),vn=Object.keys(Ft);Object.defineProperty(Ft,"random",{get(){let i=Math.floor(Math.random()*vn.length),t=vn[i];return Ft[t]}});Rn.exports=Ft});var Vn=S((Os,jn)=>{jn.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var Me=st(Pe(),1),{program:io,createCommand:ro,createArgument:oo,createOption:so,CommanderError:uo,InvalidArgumentError:ao,InvalidOptionArgumentError:lo,Command:Ne,Argument:Do,Option:co,Help:ho}=Me.default;import*as xt from"readline";import{existsSync as Ur,writeFileSync as qr}from"fs";import{join as Gr}from"path";import{existsSync as Le,mkdirSync as $i,readFileSync as Ii,writeFileSync as Pi}from"fs";import{homedir as Mi}from"os";import{join as We}from"path";var Lt=We(Mi(),".wakanda"),Wt=We(Lt,"config.json"),Nt={apiUrl:"https://rantera.ai",model:"hira"};function y(){if(!Le(Wt))return{...Nt};try{let i=Ii(Wt,"utf-8");return{...Nt,...JSON.parse(i)}}catch{return{...Nt}}}function H(i){Le(Lt)||$i(Lt,{recursive:!0}),Pi(Wt,JSON.stringify(i,null,2),"utf-8")}function j(){return process.env.WAKANDA_API_KEY??y().apiKey}async function*Ht(i,t={}){let e=j();if(!e){yield{type:"error",text:"Not authenticated. Run `rantera auth login` first."};return}let r=`${y().apiUrl}/api/wakanda/agent`,o;try{o=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({messages:i,...t.model&&{model:t.model},...t.system&&{system:t.system}})})}catch(D){if(String(D).includes("fetch failed")||String(D).includes("ECONNREFUSED")){let f=r.includes("localhost")||r.includes("127.0.0.1")?"Make sure your local server is running.":`Check your connection, or point to a local server:
24
+ rantera config set-url http://localhost:3000`;yield{type:"error",text:`Cannot reach the Rantera API at ${r}.
25
+ ${f}`}}else yield{type:"error",text:`Could not reach Rantera API: ${D}`};return}if(!o.ok){let D=await o.text().catch(()=>"");yield{type:"error",text:`API error ${o.status}: ${D}`};return}if(!o.body){yield{type:"error",text:"No response body from API."};return}let s=o.body.getReader(),a=new TextDecoder,l="";for(;;){let{done:D,value:h}=await s.read();if(D)break;for(l+=a.decode(h,{stream:!0});;){let c=l.indexOf(`
26
+ __WAKANDA_TOOL__:`),f=l.indexOf(`
27
+ __WAKANDA_TOOL_RESULT__:`);if(c===-1&&f===-1){l.length>32&&(yield{type:"text",text:l.slice(0,l.length-32)},l=l.slice(l.length-32));break}let p=c!==-1&&(f===-1||c<f)?c:f,d=p===c;p>0&&(yield{type:"text",text:l.slice(0,p)});let m=p+1,E=l.indexOf(`
28
+ `,m);if(E===-1){l=l.slice(p);break}let _=l.slice(m,E);l=l.slice(E+1);let A=d?"__WAKANDA_TOOL__:":"__WAKANDA_TOOL_RESULT__:",b=_.slice(A.length);try{let W=JSON.parse(b);d?yield{type:"tool_call",tool:{name:W.name,args:W.args}}:yield{type:"tool_result_inline",tool_name:W.name,result:W.result}}catch{yield{type:"text",text:_}}}}l.trim()&&(yield{type:"text",text:l})}import{existsSync as k,mkdirSync as Vt,readdirSync as He,readFileSync as Ut,renameSync as Ni,rmSync as Li,statSync as V,unlinkSync as Wi,writeFileSync as je}from"fs";import{dirname as Ve,join as w,relative as Ue}from"path";var Hi=5e5,lt=200,Dt=200,jt=500,qe=new Set(["node_modules",".git",".next","dist","__pycache__",".venv","venv"]);function Ge(i){let t=i.replace(/\\/g,"/"),e="",n=0;for(;n<t.length;){let r=t[n];r==="*"?t[n+1]==="*"?(e+=".*",n+=2,t[n]==="/"&&n++):(e+="[^/]*",n++):r==="?"?(e+="[^/]",n++):/[.+^${}()|[\]\\]/.test(r)?(e+="\\"+r,n++):(e+=r,n++)}return new RegExp("^"+e+"$")}function qt(i,t,e,n=1e4){if(e.length>=n)return;let r;try{r=He(i).sort()}catch{return}for(let o of r){if(e.length>=n)break;if(qe.has(o))continue;let s=w(i,o);try{V(s).isDirectory()?qt(s,t,e,n):e.push(Ue(t,s).replace(/\\/g,"/"))}catch{}}}function Ke(i,t){let e=w(t,i);if(!k(e))return`ERROR: path '${i}' does not exist.`;if(!V(e).isDirectory())return`ERROR: '${i}' is not a directory.`;let n=[];function r(s,a,l){if(n.length>=lt)return;let D;try{D=He(s).sort()}catch{return}for(let h of D){if(n.length>=lt)break;if(qe.has(h)){n.push(`${l}${h}/ (skipped)`);continue}let c=w(s,h);V(c).isDirectory()?(n.push(`${l}${h}/`),a<3&&r(c,a+1,l+" ")):n.push(`${l}${h}`)}}r(e,0,"");let o=Ue(t,e)||".";return n.length>=lt&&n.push(`... (truncated at ${lt} entries)`),o+`/
29
+ `+n.join(`
30
+ `)}function Ye(i,t,e="."){let n=w(t,e);if(!k(n))return`ERROR: path '${e}' does not exist.`;let r=[];qt(n,n,r);let o=Ge(i),s=r.filter(D=>o.test(D));if(s.length===0)return`No files match '${i}'.`;let a=s.slice(0,jt),l=s.length>jt?`
31
+ ... (${s.length} total, showing ${jt})`:"";return a.join(`
32
+ `)+l}function ze(i,t,e=".",n){let r=w(t,e);if(!k(r))return`ERROR: path '${e}' does not exist.`;let o=[];qt(r,r,o);let s=o;if(n){let h=n.startsWith("*.")?n.slice(1):null;if(h)s=o.filter(c=>c.endsWith(h));else{let c=Ge(n);s=o.filter(f=>{let p=f.split("/").pop();return c.test(p)||c.test(f)})}}let a;try{a=new RegExp(i)}catch{a=new RegExp(i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))}let l=[];for(let h of s){if(l.length>=Dt)break;let c=w(r,h);try{let p=Ut(c,"utf-8").split(`
33
+ `);for(let d=0;d<p.length&&!(l.length>=Dt);d++)a.test(p[d])&&l.push(`${h}:${d+1}: ${p[d].trimEnd()}`)}catch{}}if(l.length===0)return`No matches for '${i}'.`;let D=l.length>=Dt?`
34
+ ... (truncated at ${Dt} matches)`:"";return l.join(`
35
+ `)+D}function Je(i,t){let e=w(t,i);if(!k(e))return`ERROR: file '${i}' does not exist.`;if(!V(e).isFile())return`ERROR: '${i}' is not a file.`;let n=V(e).size;if(n>Hi)return`ERROR: file '${i}' is too large (${Math.round(n/1024)}KB).`;try{return Ut(e,"utf-8")}catch(r){return`ERROR reading '${i}': ${r}`}}function Xe(i,t,e,n){let r=w(n,i);if(!k(r))return`ERROR: file '${i}' does not exist.`;if(!V(r).isFile())return`ERROR: '${i}' is not a file.`;let o;try{o=Ut(r,"utf-8")}catch(l){return`ERROR reading '${i}': ${l}`}let s=o.split(t).length-1;if(s===0)return`ERROR: old_string not found in '${i}'. Run read_file first and copy the exact text.`;if(s>1)return`ERROR: old_string matches ${s} times in '${i}'. Add more surrounding lines to make it unique.`;let a=o.replace(t,e);try{return je(r,a,"utf-8"),`OK: patched '${i}'.`}catch(l){return`ERROR writing '${i}': ${l}`}}function Ze(i,t,e){let n=w(e,i);try{let r=Ve(n);return k(r)||Vt(r,{recursive:!0}),je(n,t,"utf-8"),`OK: wrote ${t.length} chars to '${i}'.`}catch(r){return`ERROR writing '${i}': ${r}`}}function Qe(i,t){let e=w(t,i);if(!k(e))return`ERROR: '${i}' does not exist.`;try{return V(e).isDirectory()?(Li(e,{recursive:!0,force:!0}),`OK: deleted directory '${i}'.`):(Wi(e),`OK: deleted '${i}'.`)}catch(n){return`ERROR deleting '${i}': ${n}`}}function tn(i,t){let e=w(t,i);if(k(e))return`OK: '${i}' already exists.`;try{return Vt(e,{recursive:!0}),`OK: created directory '${i}'.`}catch(n){return`ERROR creating '${i}': ${n}`}}function en(i,t,e){let n=w(e,i),r=w(e,t);if(!k(n))return`ERROR: source '${i}' does not exist.`;try{let o=Ve(r);return k(o)||Vt(o,{recursive:!0}),Ni(n,r),`OK: moved '${i}' to '${t}'.`}catch(o){return`ERROR moving '${i}': ${o}`}}import{execFile as nn}from"child_process";var rn=3e4,Z=8e3,ji=[/rm\s+-rf\s+[/\\]/,/rmdir\s+\/s/i,/format\s+[a-z]:/i,/dd\s+if=/,/mkfs/,/>\s*\/dev\/sd/,/shutdown/i,/reboot/i,/del\s+\/[sf]/i];function on(i,t){for(let e of ji)if(e.test(i))return Promise.resolve(`BLOCKED: '${i.slice(0,60)}' matches a destructive command pattern and will not run.`);return new Promise(e=>{let n=process.platform==="win32",[r,o]=n?["cmd.exe","/c"]:["sh","-c"];nn(r,[o,i],{cwd:t,timeout:rn,maxBuffer:Z*2},(s,a,l)=>{let D=(a+(l?`
36
+ STDERR:
37
+ ${l}`:"")).trim(),h=D.length>Z?D.slice(0,Z)+`
38
+ ... (truncated, ${D.length} chars total)`:D;e(s&&!a&&!l?`ERROR: ${s.message}`:h||"(no output)")})})}function Q(i,t){return new Promise(e=>{nn("git",i,{cwd:t,timeout:rn,maxBuffer:2e5},(n,r,o)=>{let s=(r+(o?`
39
+ ${o}`:"")).trim();e(n&&!r&&!o?`ERROR: ${n.message}`:s||"(no output)")})})}function sn(i){return Q(["status","--short"],i)}function un(i,t){return Q(t?["diff",t]:["diff","HEAD"],i).then(n=>n.length>Z?n.slice(0,Z)+`
40
+ ... (diff truncated)`:n)}function an(i,t=10){return Q(["log","--oneline","-n",String(Math.min(t,50))],i)}async function ln(i,t){if(!t.trim())return"ERROR: commit message is required.";let e=await Q(["add","-A"],i);return e.startsWith("ERROR")?e:Q(["commit","-m",t],i)}async function Dn(i,t,e){try{switch(i){case"list_directory":{let n=String(t.path??"."),r=Ke(n,e);return{output:r,ok:!r.startsWith("ERROR")}}case"glob_files":{let n=String(t.pattern??"**/*"),r=String(t.path??"."),o=Ye(n,e,r);return{output:o,ok:!o.startsWith("ERROR")}}case"grep_files":{let n=String(t.pattern??""),r=String(t.path??"."),o=t.file_pattern?String(t.file_pattern):void 0;if(!n)return{output:"ERROR: pattern is required.",ok:!1};let s=ze(n,e,r,o);return{output:s,ok:!s.startsWith("ERROR")}}case"read_file":{let n=String(t.path??"");if(!n)return{output:"ERROR: path is required.",ok:!1};let r=Je(n,e);return{output:r,ok:!r.startsWith("ERROR")}}case"patch_file":{let n=String(t.path??""),r=String(t.old_string??""),o=String(t.new_string??"");if(!n)return{output:"ERROR: path is required.",ok:!1};if(!r)return{output:"ERROR: old_string is required.",ok:!1};let s=Xe(n,r,o,e);return{output:s,ok:s.startsWith("OK")}}case"write_file":{let n=String(t.path??""),r=String(t.content??"");if(!n)return{output:"ERROR: path is required.",ok:!1};let o=Ze(n,r,e);return{output:o,ok:o.startsWith("OK")}}case"delete_file":{let n=String(t.path??"");if(!n)return{output:"ERROR: path is required.",ok:!1};let r=Qe(n,e);return{output:r,ok:r.startsWith("OK")}}case"create_directory":{let n=String(t.path??"");if(!n)return{output:"ERROR: path is required.",ok:!1};let r=tn(n,e);return{output:r,ok:r.startsWith("OK")}}case"move_file":{let n=String(t.source??""),r=String(t.destination??"");if(!n)return{output:"ERROR: source is required.",ok:!1};if(!r)return{output:"ERROR: destination is required.",ok:!1};let o=en(n,r,e);return{output:o,ok:o.startsWith("OK")}}case"run_command":{let n=String(t.command??"");if(!n)return{output:"ERROR: command is required.",ok:!1};let r=await on(n,e);return{output:r,ok:!r.startsWith("ERROR")&&!r.startsWith("BLOCKED")}}case"git_status":{let n=await sn(e);return{output:n,ok:!n.startsWith("ERROR")}}case"git_diff":{let n=t.target?String(t.target):void 0,r=await un(e,n);return{output:r,ok:!r.startsWith("ERROR")}}case"git_log":{let n=typeof t.n=="number"?t.n:10,r=await an(e,n);return{output:r,ok:!r.startsWith("ERROR")}}case"git_commit":{let n=String(t.message??"");if(!n)return{output:"ERROR: message is required.",ok:!1};let r=await ln(e,n);return{output:r,ok:!r.startsWith("ERROR")}}default:return{output:`ERROR: unknown local tool '${i}'.`,ok:!1}}}catch(n){return{output:`ERROR: tool '${i}' threw: ${n}`,ok:!1}}}var cn=(i=0)=>t=>`\x1B[${t+i}m`,hn=(i=0)=>t=>`\x1B[${38+i};5;${t}m`,fn=(i=0)=>(t,e,n)=>`\x1B[${38+i};2;${t};${e};${n}m`,g={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},vo=Object.keys(g.modifier),Vi=Object.keys(g.color),Ui=Object.keys(g.bgColor),Ro=[...Vi,...Ui];function qi(){let i=new Map;for(let[t,e]of Object.entries(g)){for(let[n,r]of Object.entries(e))g[n]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},e[n]=g[n],i.set(r[0],r[1]);Object.defineProperty(g,t,{value:e,enumerable:!1})}return Object.defineProperty(g,"codes",{value:i,enumerable:!1}),g.color.close="\x1B[39m",g.bgColor.close="\x1B[49m",g.color.ansi=cn(),g.color.ansi256=hn(),g.color.ansi16m=fn(),g.bgColor.ansi=cn(10),g.bgColor.ansi256=hn(10),g.bgColor.ansi16m=fn(10),Object.defineProperties(g,{rgbToAnsi256:{value(t,e,n){return t===e&&e===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(e/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let e=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!e)return[0,0,0];let[n]=e;n.length===3&&(n=[...n].map(o=>o+o).join(""));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:t=>g.rgbToAnsi256(...g.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let e,n,r;if(t>=232)e=((t-232)*10+8)/255,n=e,r=e;else{t-=16;let a=t%36;e=Math.floor(t/36)/5,n=Math.floor(a/6)/5,r=a%6/5}let o=Math.max(e,n,r)*2;if(o===0)return 30;let s=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(e));return o===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,e,n)=>g.ansi256ToAnsi(g.rgbToAnsi256(t,e,n)),enumerable:!1},hexToAnsi:{value:t=>g.ansi256ToAnsi(g.hexToAnsi256(t)),enumerable:!1}}),g}var Gi=qi(),v=Gi;import Gt from"node:process";import Ki from"node:os";import dn from"node:tty";function B(i,t=globalThis.Deno?globalThis.Deno.args:Gt.argv){let e=i.startsWith("-")?"":i.length===1?"-":"--",n=t.indexOf(e+i),r=t.indexOf("--");return n!==-1&&(r===-1||n<r)}var{env:F}=Gt,ct;B("no-color")||B("no-colors")||B("color=false")||B("color=never")?ct=0:(B("color")||B("colors")||B("color=true")||B("color=always"))&&(ct=1);function Yi(){if("FORCE_COLOR"in F)return F.FORCE_COLOR==="true"?1:F.FORCE_COLOR==="false"?0:F.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(F.FORCE_COLOR,10),3)}function zi(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function Ji(i,{streamIsTTY:t,sniffFlags:e=!0}={}){let n=Yi();n!==void 0&&(ct=n);let r=e?ct:n;if(r===0)return 0;if(e){if(B("color=16m")||B("color=full")||B("color=truecolor"))return 3;if(B("color=256"))return 2}if("TF_BUILD"in F&&"AGENT_NAME"in F)return 1;if(i&&!t&&r===void 0)return 0;let o=r||0;if(F.TERM==="dumb")return o;if(Gt.platform==="win32"){let s=Ki.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in F)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in F)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in F)||F.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in F)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(F.TEAMCITY_VERSION)?1:0;if(F.COLORTERM==="truecolor"||F.TERM==="xterm-kitty"||F.TERM==="xterm-ghostty"||F.TERM==="wezterm")return 3;if("TERM_PROGRAM"in F){let s=Number.parseInt((F.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(F.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(F.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(F.TERM)||"COLORTERM"in F?1:o}function mn(i,t={}){let e=Ji(i,{streamIsTTY:i&&i.isTTY,...t});return zi(e)}var Xi={stdout:mn({isTTY:dn.isatty(1)}),stderr:mn({isTTY:dn.isatty(2)})},pn=Xi;function gn(i,t,e){let n=i.indexOf(t);if(n===-1)return i;let r=t.length,o=0,s="";do s+=i.slice(o,n)+t+e,o=n+r,n=i.indexOf(t,o);while(n!==-1);return s+=i.slice(o),s}function Fn(i,t,e,n){let r=0,o="";do{let s=i[n-1]==="\r";o+=i.slice(r,s?n-1:n)+t+(s?`\r
41
+ `:`
42
+ `)+e,r=n+1,n=i.indexOf(`
43
+ `,r)}while(n!==-1);return o+=i.slice(r),o}var{stdout:Cn,stderr:En}=pn,Kt=Symbol("GENERATOR"),K=Symbol("STYLER"),tt=Symbol("IS_EMPTY"),_n=["ansi","ansi","ansi256","ansi16m"],Y=Object.create(null),Zi=(i,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let e=Cn?Cn.level:0;i.level=t.level===void 0?e:t.level};var Qi=i=>{let t=(...e)=>e.join(" ");return Zi(t,i),Object.setPrototypeOf(t,et.prototype),t};function et(i){return Qi(i)}Object.setPrototypeOf(et.prototype,Function.prototype);for(let[i,t]of Object.entries(v))Y[i]={get(){let e=ht(this,zt(t.open,t.close,this[K]),this[tt]);return Object.defineProperty(this,i,{value:e}),e}};Y.visible={get(){let i=ht(this,this[K],!0);return Object.defineProperty(this,"visible",{value:i}),i}};var Yt=(i,t,e,...n)=>i==="rgb"?t==="ansi16m"?v[e].ansi16m(...n):t==="ansi256"?v[e].ansi256(v.rgbToAnsi256(...n)):v[e].ansi(v.rgbToAnsi(...n)):i==="hex"?Yt("rgb",t,e,...v.hexToRgb(...n)):v[e][i](...n),tr=["rgb","hex","ansi256"];for(let i of tr){Y[i]={get(){let{level:e}=this;return function(...n){let r=zt(Yt(i,_n[e],"color",...n),v.color.close,this[K]);return ht(this,r,this[tt])}}};let t="bg"+i[0].toUpperCase()+i.slice(1);Y[t]={get(){let{level:e}=this;return function(...n){let r=zt(Yt(i,_n[e],"bgColor",...n),v.bgColor.close,this[K]);return ht(this,r,this[tt])}}}}var er=Object.defineProperties(()=>{},{...Y,level:{enumerable:!0,get(){return this[Kt].level},set(i){this[Kt].level=i}}}),zt=(i,t,e)=>{let n,r;return e===void 0?(n=i,r=t):(n=e.openAll+i,r=t+e.closeAll),{open:i,close:t,openAll:n,closeAll:r,parent:e}},ht=(i,t,e)=>{let n=(...r)=>nr(n,r.length===1?""+r[0]:r.join(" "));return Object.setPrototypeOf(n,er),n[Kt]=i,n[K]=t,n[tt]=e,n},nr=(i,t)=>{if(i.level<=0||!t)return i[tt]?"":t;let e=i[K];if(e===void 0)return t;let{openAll:n,closeAll:r}=e;if(t.includes("\x1B"))for(;e!==void 0;)t=gn(t,e.close,e.open),e=e.parent;let o=t.indexOf(`
44
+ `);return o!==-1&&(t=Fn(t,r,n,o)),n+t+r};Object.defineProperties(et.prototype,Y);var ir=et(),Wo=et({level:En?En.level:0});var u=ir;import Et from"node:process";import On from"node:process";import pt from"node:process";var rr=(i,t,e,n)=>{if(e==="length"||e==="prototype"||e==="arguments"||e==="caller")return;let r=Object.getOwnPropertyDescriptor(i,e),o=Object.getOwnPropertyDescriptor(t,e);!or(r,o)&&n||Object.defineProperty(i,e,o)},or=function(i,t){return i===void 0||i.configurable||i.writable===t.writable&&i.enumerable===t.enumerable&&i.configurable===t.configurable&&(i.writable||i.value===t.value)},sr=(i,t)=>{let e=Object.getPrototypeOf(t);e!==Object.getPrototypeOf(i)&&Object.setPrototypeOf(i,e)},ur=(i,t)=>`/* Wrapped ${i}*/
45
+ ${t}`,ar=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),lr=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),Dr=(i,t,e)=>{let n=e===""?"":`with ${e.trim()}() `,r=ur.bind(null,n,t.toString());Object.defineProperty(r,"name",lr);let{writable:o,enumerable:s,configurable:a}=ar;Object.defineProperty(i,"toString",{value:r,writable:o,enumerable:s,configurable:a})};function Jt(i,t,{ignoreNonConfigurable:e=!1}={}){let{name:n}=i;for(let r of Reflect.ownKeys(t))rr(i,t,r,e);return sr(i,t),Dr(i,t,n),i}var ft=new WeakMap,xn=(i,t={})=>{if(typeof i!="function")throw new TypeError("Expected a function");let e,n=0,r=i.displayName||i.name||"<anonymous>",o=function(...s){if(ft.set(o,++n),n===1)e=i.apply(this,s),i=void 0;else if(t.throw===!0)throw new Error(`Function \`${r}\` can only be called once`);return e};return Jt(o,i),ft.set(o,n),o};xn.callCount=i=>{if(!ft.has(i))throw new Error(`The given function \`${i.name}\` is not wrapped by the \`onetime\` package`);return ft.get(i)};var An=xn;var U=[];U.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&U.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&U.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var dt=i=>!!i&&typeof i=="object"&&typeof i.removeListener=="function"&&typeof i.emit=="function"&&typeof i.reallyExit=="function"&&typeof i.listeners=="function"&&typeof i.kill=="function"&&typeof i.pid=="number"&&typeof i.on=="function",Xt=Symbol.for("signal-exit emitter"),Zt=globalThis,cr=Object.defineProperty.bind(Object),Qt=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(Zt[Xt])return Zt[Xt];cr(Zt,Xt,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,e){this.listeners[t].push(e)}removeListener(t,e){let n=this.listeners[t],r=n.indexOf(e);r!==-1&&(r===0&&n.length===1?n.length=0:n.splice(r,1))}emit(t,e,n){if(this.emitted[t])return!1;this.emitted[t]=!0;let r=!1;for(let o of this.listeners[t])r=o(e,n)===!0||r;return t==="exit"&&(r=this.emit("afterExit",e,n)||r),r}},mt=class{},hr=i=>({onExit(t,e){return i.onExit(t,e)},load(){return i.load()},unload(){return i.unload()}}),te=class extends mt{onExit(){return()=>{}}load(){}unload(){}},ee=class extends mt{#s=ne.platform==="win32"?"SIGINT":"SIGHUP";#n=new Qt;#t;#r;#h;#e={};#o=!1;constructor(t){super(),this.#t=t,this.#e={};for(let e of U)this.#e[e]=()=>{let n=this.#t.listeners(e),{count:r}=this.#n,o=t;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(r+=o.__signal_exit_emitter__.count),n.length===r){this.unload();let s=this.#n.emit("exit",null,e),a=e==="SIGHUP"?this.#s:e;s||t.kill(t.pid,a)}};this.#h=t.reallyExit,this.#r=t.emit}onExit(t,e){if(!dt(this.#t))return()=>{};this.#o===!1&&this.load();let n=e?.alwaysLast?"afterExit":"exit";return this.#n.on(n,t),()=>{this.#n.removeListener(n,t),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#n.count+=1;for(let t of U)try{let e=this.#e[t];e&&this.#t.on(t,e)}catch{}this.#t.emit=(t,...e)=>this.#f(t,...e),this.#t.reallyExit=t=>this.#i(t)}}unload(){this.#o&&(this.#o=!1,U.forEach(t=>{let e=this.#e[t];if(!e)throw new Error("Listener not defined for signal: "+t);try{this.#t.removeListener(t,e)}catch{}}),this.#t.emit=this.#r,this.#t.reallyExit=this.#h,this.#n.count-=1)}#i(t){return dt(this.#t)?(this.#t.exitCode=t||0,this.#n.emit("exit",this.#t.exitCode,null),this.#h.call(this.#t,this.#t.exitCode)):0}#f(t,...e){let n=this.#r;if(t==="exit"&&dt(this.#t)){typeof e[0]=="number"&&(this.#t.exitCode=e[0]);let r=n.call(this.#t,t,...e);return this.#n.emit("exit",this.#t.exitCode,null),r}else return n.call(this.#t,t,...e)}},ne=globalThis.process,{onExit:bn,load:Ko,unload:Yo}=hr(dt(ne)?new ee(ne):new te);var yn=pt.stderr.isTTY?pt.stderr:pt.stdout.isTTY?pt.stdout:void 0,fr=yn?An(()=>{bn(()=>{yn.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},wn=fr;var gt=!1,z={};z.show=(i=On.stderr)=>{i.isTTY&&(gt=!1,i.write("\x1B[?25h"))};z.hide=(i=On.stderr)=>{i.isTTY&&(wn(),gt=!0,i.write("\x1B[?25l"))};z.toggle=(i,t)=>{i!==void 0&&(gt=i),gt?z.show(t):z.hide(t)};var ie=z;var rt=st(re(),1);import R from"node:process";function oe(){return R.platform!=="win32"?R.env.TERM!=="linux":!!R.env.CI||!!R.env.WT_SESSION||!!R.env.TERMINUS_SUBLIME||R.env.ConEmuTask==="{cmd::Cmder}"||R.env.TERM_PROGRAM==="Terminus-Sublime"||R.env.TERM_PROGRAM==="vscode"||R.env.TERM==="xterm-256color"||R.env.TERM==="alacritty"||R.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var mr={info:u.blue("\u2139"),success:u.green("\u2714"),warning:u.yellow("\u26A0"),error:u.red("\u2716")},pr={info:u.blue("i"),success:u.green("\u221A"),warning:u.yellow("\u203C"),error:u.red("\xD7")},gr=oe()?mr:pr,nt=gr;function se({onlyFirst:i=!1}={}){let t=String.raw`(?:\u0007|\u001B\u005C|\u009C)`,e=String.raw`(?:(?:\u001B\]|\u009D)[^\u0007\u001B\u009C\u009D]*${t})`,n=String.raw`[\u001B\u009B][[\]()#;?]*(?:\d{1,4}(?:[;:]\d{0,4})*)?[A-PR-TZcf-nq-uy=><~]`,r=String.raw`(?:\u001B\[|\u009B)[<=>][0-9;:]*[A-PR-TZcf-nq-uy~]`,o=`${e}|${r}|${n}`;return new RegExp(o,i?void 0:"g")}var Fr=se();function it(i){if(typeof i!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof i}\``);return!i.includes("\x1B")&&!i.includes("\x9B")?i:i.replace(Fr,"")}var Tn=[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],Sn=12288,kn=65510,$n=[12288,12288,65281,65376,65504,65510];var In=4352,Pn=262141,ue=[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,101594,101631,101664,101760,101874,101888,102801,102816,102866,110576,110579,110581,110587,110589,110590,110592,110888,110898,110898,110928,110930,110933,110933,110948,110952,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127406,127406,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,128729,128732,128735,128747,128748,128756,128764,128986,128986,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129734,129736,129736,129740,129757,129759,129771,129775,129786,131072,196605,196608,262141];var Ct=(i,t)=>{let e=0,n=Math.floor(i.length/2)-1;for(;e<=n;){let r=Math.floor((e+n)/2),o=r*2;if(t<i[o])n=r-1;else if(t>i[o+1])e=r+1;else return!0}return!1};var Mn=19968,[_r,xr]=Ar(ue);function Ar(i){let t=i[0],e=i[1];for(let n=0;n<i.length;n+=2){let r=i[n],o=i[n+1];if(Mn>=r&&Mn<=o)return[r,o];o-r>e-t&&(t=r,e=o)}return[t,e]}var Nn=i=>i<161||i>1114109?!1:Ct(Tn,i),Ln=i=>i<Sn||i>kn?!1:Ct($n,i);var Wn=i=>i>=_r&&i<=xr?!0:i<In||i>Pn?!1:Ct(ue,i);function br(i){if(!Number.isSafeInteger(i))throw new TypeError(`Expected a code point, got \`${typeof i}\`.`)}function Hn(i,{ambiguousAsWide:t=!1}={}){return br(i),Ln(i)||Wn(i)||t&&Nn(i)?2:1}var Un=st(Vn(),1),yr=new Intl.Segmenter,wr=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function ae(i,t={}){if(typeof i!="string"||i.length===0)return 0;let{ambiguousIsNarrow:e=!0,countAnsiEscapeCodes:n=!1}=t;if(n||(i=it(i)),i.length===0)return 0;let r=0,o={ambiguousAsWide:!e};for(let{segment:s}of yr.segment(i)){let a=s.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!wr.test(s)){if((0,Un.default)().test(s)){r+=2;continue}r+=Hn(a,o)}}return r}function le({stream:i=process.stdout}={}){return!!(i&&i.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}import qn from"node:process";function De(){let{env:i}=qn,{TERM:t,TERM_PROGRAM:e}=i;return qn.platform!=="win32"?t!=="linux":!!i.WT_SESSION||!!i.TERMINUS_SUBLIME||i.ConEmuTask==="{cmd::Cmder}"||e==="Terminus-Sublime"||e==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||i.TERMINAL_EMULATOR==="JetBrains-JediTerm"}import $ from"node:process";var Or=3,ce=class{#s=0;start(){this.#s++,this.#s===1&&this.#n()}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#t()}#n(){$.platform==="win32"||!$.stdin.isTTY||($.stdin.setRawMode(!0),$.stdin.on("data",this.#r),$.stdin.resume())}#t(){$.stdin.isTTY&&($.stdin.off("data",this.#r),$.stdin.pause(),$.stdin.setRawMode(!1))}#r(t){t[0]===Or&&$.emit("SIGINT")}},Br=new ce,he=Br;var vr=st(re(),1),fe=class{#s=0;#n=!1;#t=0;#r=-1;#h=0;#e;#o;#i;#f;#m;#l;#D;#c;#p;#u;#a;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#e={color:"cyan",stream:Et.stderr,discardStdin:!0,hideCursor:!0,...t},this.color=this.#e.color,this.spinner=this.#e.spinner,this.#m=this.#e.interval,this.#i=this.#e.stream,this.#l=typeof this.#e.isEnabled=="boolean"?this.#e.isEnabled:le({stream:this.#i}),this.#D=typeof this.#e.isSilent=="boolean"?this.#e.isSilent:!1,this.text=this.#e.text,this.prefixText=this.#e.prefixText,this.suffixText=this.#e.suffixText,this.indent=this.#e.indent,Et.env.NODE_ENV==="test"&&(this._stream=this.#i,this._isEnabled=this.#l,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(e){this.#s=e}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#r}}),Object.defineProperty(this,"_lineCount",{get(){return this.#t}}))}get indent(){return this.#c}set indent(t=0){if(!(t>=0&&Number.isInteger(t)))throw new Error("The `indent` option must be an integer from 0 and up");this.#c=t,this.#d()}get interval(){return this.#m??this.#o.interval??100}get spinner(){return this.#o}set spinner(t){if(this.#r=-1,this.#m=void 0,typeof t=="object"){if(t.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#o=t}else if(!De())this.#o=rt.default.line;else if(t===void 0)this.#o=rt.default.dots;else if(t!=="default"&&rt.default[t])this.#o=rt.default[t];else throw new Error(`There is no built-in spinner named '${t}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#p}set text(t=""){this.#p=t,this.#d()}get prefixText(){return this.#u}set prefixText(t=""){this.#u=t,this.#d()}get suffixText(){return this.#a}set suffixText(t=""){this.#a=t,this.#d()}get isSpinning(){return this.#f!==void 0}#g(t=this.#u,e=" "){return typeof t=="string"&&t!==""?t+e:typeof t=="function"?t()+e:""}#F(t=this.#a,e=" "){return typeof t=="string"&&t!==""?e+t:typeof t=="function"?e+t():""}#d(){let t=this.#i.columns??80,e=this.#g(this.#u,"-"),n=this.#F(this.#a,"-"),r=" ".repeat(this.#c)+e+"--"+this.#p+"--"+n;this.#t=0;for(let o of it(r).split(`
46
+ `))this.#t+=Math.max(1,Math.ceil(ae(o,{countAnsiEscapeCodes:!0})/t))}get isEnabled(){return this.#l&&!this.#D}set isEnabled(t){if(typeof t!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#l=t}get isSilent(){return this.#D}set isSilent(t){if(typeof t!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#D=t}frame(){let t=Date.now();(this.#r===-1||t-this.#h>=this.interval)&&(this.#r=++this.#r%this.#o.frames.length,this.#h=t);let{frames:e}=this.#o,n=e[this.#r];this.color&&(n=u[this.color](n));let r=typeof this.#u=="string"&&this.#u!==""?this.#u+" ":"",o=typeof this.text=="string"?" "+this.text:"",s=typeof this.#a=="string"&&this.#a!==""?" "+this.#a:"";return r+n+o+s}clear(){if(!this.#l||!this.#i.isTTY)return this;this.#i.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#i.moveCursor(0,-1),this.#i.clearLine(1);return(this.#c||this.lastIndent!==this.#c)&&this.#i.cursorTo(this.#c),this.lastIndent=this.#c,this.#s=0,this}render(){return this.#D?this:(this.clear(),this.#i.write(this.frame()),this.#s=this.#t,this)}start(t){return t&&(this.text=t),this.#D?this:this.#l?this.isSpinning?this:(this.#e.hideCursor&&ie.hide(this.#i),this.#e.discardStdin&&Et.stdin.isTTY&&(this.#n=!0,he.start()),this.render(),this.#f=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#i.write(`- ${this.text}
47
+ `),this)}stop(){return this.#l?(clearInterval(this.#f),this.#f=void 0,this.#r=0,this.clear(),this.#e.hideCursor&&ie.show(this.#i),this.#e.discardStdin&&Et.stdin.isTTY&&this.#n&&(he.stop(),this.#n=!1),this):this}succeed(t){return this.stopAndPersist({symbol:nt.success,text:t})}fail(t){return this.stopAndPersist({symbol:nt.error,text:t})}warn(t){return this.stopAndPersist({symbol:nt.warning,text:t})}info(t){return this.stopAndPersist({symbol:nt.info,text:t})}stopAndPersist(t={}){if(this.#D)return this;let e=t.prefixText??this.#u,n=this.#g(e," "),r=t.symbol??" ",o=t.text??this.text,a=typeof o=="string"?(r?" ":"")+o:"",l=t.suffixText??this.#a,D=this.#F(l," "),h=n+r+a+D+`
48
+ `;return this.stop(),this.#i.write(h),this}};function de(i){return new fe(i)}var T="#006B3F",x="#FCD116",pe="#CE1126",Rr="0.1.2",L=null,I=[{id:"hira",display:"Hira",desc:"The motherland's voice",available:!0},{id:"tera",display:"Tera",desc:"Orchestrator \u2014 routes to best specialist",available:!1},{id:"akili",display:"Akili",desc:"Code intelligence",available:!1},{id:"ilimi",display:"Ilimi",desc:"Knowledge & research",available:!1}];function Tr(i){return i.replace(/\x1b\[[0-9;]*m/g,"").length}var ge=64;function Sr(i){let t=Math.max(0,ge-3-i.length);return u.hex(x).dim("\u256D\u2500 ")+u.white.bold(i)+u.hex(x).dim(" "+"\u2500".repeat(t)+"\u256E")}function kr(i){let t=Math.max(0,ge-2-Tr(i));return u.hex(x).dim("\u2502")+" "+i+" ".repeat(t)+" "+u.hex(x).dim("\u2502")}function $r(){return u.hex(x).dim("\u2570"+"\u2500".repeat(ge)+"\u256F")}var Ir=[["#CE1126","#FCD116","#078930"],["#006B3F","#FFFFFF","#006B3F"],["#000000","#CE1126","#006600"],["#078930","#FCD116","#CE1126"],["#DE3831","#FFB612","#007A4D"],["#CE1126","#FFFFFF","#000000"],["#3A75C4","#000000","#1EB53A"],["#FCDC04","#DE3108","#000000"],["#00853F","#FDEF42","#E31B23"],["#007FFF","#F7D618","#CE1126"],["#FAD201","#19B3EE","#20603D"],["#CC0000","#000000","#FCDD00"]];function Pr(){let i=" ",t=" ";for(let[e,n,r]of Ir)i+=u.bgHex(n).hex(e)("\u2580\u2580\u2580\u2580"),t+=u.bgHex(r).hex(n)("\u2580\u2580\u2580\u2580");return[i,t]}function q(i=28){let t=" ";for(let e=0;e<i;e++)switch(e%4){case 0:t+=u.hex(x)("\u25C6");break;case 1:t+=u.dim("\u2500");break;case 2:t+=u.hex(T)("\u25C7");break;case 3:t+=u.dim("\u2500");break}return t}function me(i){return i>=1e3?`${(i/1e3).toFixed(1)}k`:String(i)}function Mr(){let[i,t]=Pr();console.log(),console.log(i),console.log(t),console.log(),console.log(" "+u.hex(x).bold("RANTERA")+" "+u.dim("\xB7")+" "+u.hex(T).bold("Wakanda")+" "+u.dim(Rr)),console.log(" "+u.dim("African Intelligence. Global Tools.")),console.log(),console.log(q()),console.log()}function Gn(i,t,e){Mr();let n=i.replace(/\\/g,"/").split("/").filter(Boolean),r=n.length>=2?n.slice(-2).join("/"):i,o=I.find(a=>a.id===t)??I[0],s=[u.dim("Model ")+u.white(o.display)+u.dim(" (Rantera AI)"),u.dim("Dir ")+u.white(r),...e?[u.dim("Memory ")+u.hex(T)("\u2713 RANTERA.md")]:[],"",u.dim("Task, ")+u.hex(x)("/help")+u.dim(" for commands, ")+u.hex(x)("/model")+u.dim(" to switch.")];console.log(" "+Sr("Wakanda"));for(let a of s)console.log(" "+kr(a));console.log(" "+$r()),console.log()}function Kn(){let i=n=>" "+u.hex(x)(n.padEnd(20)),t=n=>" "+u.hex(T)("\u25C6")+" "+u.dim(n),e=()=>console.log(" "+q(26));console.log(),console.log(" "+u.white.bold("Slash Commands")),e(),console.log(i("/help")+u.dim("Show this message")),console.log(i("/model [name]")+u.dim("List models or switch (e.g. /model hira)")),console.log(i("/compact")+u.dim("Trim history \u2014 keep last 3 exchanges")),console.log(i("/cost")+u.dim("Show estimated token usage for this session")),console.log(i("/clear")+u.dim("Erase all conversation history")),console.log(i("/history")+u.dim("Show recent messages")),console.log(i("/status")+u.dim("Auth, model, context and config info")),console.log(i("/login")+u.dim("Log in (or switch to a different account)")),console.log(i("/logout")+u.dim("Log out of current account")),console.log(i("/exit")+u.dim("Exit Wakanda")),console.log(),console.log(" "+u.white.bold("Input")),e(),console.log(t("End a line with \\ to continue on the next line (multi-line)")),console.log(t("Press \u2191 / \u2193 to scroll through your input history")),console.log(t("Ctrl+C cancels a running task")),console.log(),console.log(" "+u.white.bold("Tips")),e(),console.log(t("Just type your task \u2014 Tera understands natural language")),console.log(t('Reference files directly: "fix the bug in auth.ts"')),console.log(t('Give feedback: "try again, make it simpler"')),console.log(t("Add RANTERA.md in your project root for persistent context")),console.log()}function Yn(i="hira"){let t=e=>" "+u.hex(x)(e.padEnd(10));console.log(),console.log(" "+u.white.bold("Models")),console.log(" "+q(26));for(let e of I){let n=e.id===i?u.hex(T)("\u25C6 "):" ",r=e.available?u.dim(e.desc):u.dim(e.desc)+" "+u.hex("#334155")("[coming soon]");console.log(n+t(e.display)+r)}console.log(),console.log(u.dim(" Current: ")+u.white(i)),console.log(u.dim(" Switch: ")+u.hex(x)("/model <name>")+u.dim(" e.g. /model hira")),console.log()}function zn(i,t){let n=Math.min(100,Math.round(i/2e5*1e3)/10),r=o=>" "+u.dim(o.padEnd(12));console.log(),console.log(" "+u.white.bold("Token Usage ")+u.dim("(estimated)")),console.log(" "+q(26)),console.log(r("Messages")+u.white(String(t))),console.log(r("Tokens")+u.white(`~${me(i)}`)),console.log(r("Context")+u.white(`${n}%`)+u.dim(` of 200k (~${me(i)} / 200k tokens)`)),n>80&&(console.log(),console.log(u.hex("#FCD116")(" \u26A0 Context is over 80%. Use /compact to trim history."))),console.log()}function Jn(i,t,e,n,r,o){let a=Math.min(100,Math.round(o/2e5*1e3)/10),l=f=>" "+u.dim(f.padEnd(10)),D=n.replace(/\\/g,"/").split("/").filter(Boolean),h=D.length>=2?D.slice(-2).join("/"):n,c=I.find(f=>f.id===r)??I[0];console.log(),console.log(" "+u.white.bold("Status")),console.log(" "+q(26)),console.log(l("Auth")+(i?u.hex(T).bold("\u2713 Logged in")+u.dim(` (${i.slice(0,16)}\u2026)`):u.hex(pe).bold("\u2717 Not logged in")+u.dim(" Run `rantera auth login`"))),console.log(l("API URL")+u.white(t??"https://rantera.ai")),console.log(l("Model")+u.white(c.display)+u.dim(` ${c.desc}`)),console.log(l("Dir")+u.white(h)),console.log(l("History")+u.dim(`${e} message${e!==1?"s":""}`)),console.log(l("Context")+u.white(`~${me(o)} tokens`)+u.dim(` (${a}% of 200k)`)),console.log()}function Xn(i){if(i.length===0){console.log(),console.log(u.dim(" No conversation history yet.")),console.log();return}console.log(),console.log(" "+u.white.bold("History")+" "+u.dim(`${i.length} message${i.length!==1?"s":""}`)),console.log(" "+q(26));for(let t of i){let n=t.role==="user"?" "+u.hex(x).bold("you "):" "+u.hex(T).bold("tera"),r=t.content?.replace(/\n/g," ")??"",o=r.length>80?r.slice(0,80)+u.dim("\u2026"):r;console.log(n+" "+u.dim(o))}console.log()}function Zn(i){L=de({text:u.hex(x)(i),color:"yellow",spinner:"dots"}).start()}function Fe(i=!0,t){L&&(i?L.succeed(t?u.hex(T)(t):void 0):L.fail(t?u.dim(t):void 0),L=null)}function ot(){L&&(L.stop(),L=null)}function Qn(i){process.stdout.write(i)}function ti(i,t){let e=Nr(t);console.log(`
49
+ `+u.hex(x).bold(`\u25C6 ${i}`)+" "+u.dim(e))}function ei(i,t,e){let n=e?u.hex(T)("\u2713"):u.hex(pe)("\u2717"),r=t.length>240?t.slice(0,240).replace(/\n/g," ")+u.dim("\u2026"):t.replace(/\n/g," ");console.log(" "+n+" "+u.dim(r)+`
50
+ `)}function M(i){console.error(`
51
+ `+u.hex(pe).bold("\u2717")+" "+u.white.bold("Error:")+" "+i)}function N(i){console.log(" "+u.hex(T).bold("\u2713")+" "+i)}function ni(){console.log(q(28))}function ii(i="hira"){let t=I.find(e=>e.id===i)??I[0];process.stdout.write(`
52
+ `+u.hex(T).bold(`${t.display} \u276F`)+" ")}function Nr(i){let t=[];for(let[e,n]of Object.entries(i)){let r=typeof n=="string"&&n.length>60?n.slice(0,60)+"\u2026":String(n);t.push(`${e}=${r}`)}return t.join(" ")}var ri=50;async function oi(i,t,e){let n=[...t,{role:"user",content:i}],r={model:e.model,system:e.system},o=0,s="";for(;o<ri;){let a=null,l="";for await(let c of Ht(n,r))if(c.type==="text"&&c.text)l+=c.text,e.onText?.(c.text);else if(c.type==="tool_call"&&c.tool)a=c.tool,e.onToolCall?.(c.tool.name,c.tool.args);else if(c.type==="tool_result_inline"){let f=c.result??"";e.onToolResult?.(c.tool_name,f,!0),n.push({role:"assistant",content:""}),n.push({role:"tool_result",tool_name:c.tool_name,content:f})}else if(c.type==="error")return M(c.text??"Unknown error"),s;if(l&&!a){s=l;break}if(!a)break;if(o++,a.name==="ask_user"){let c=String(a.args.question??""),f=e.onAskUser?await e.onAskUser(c):"";e.onToolResult?.(a.name,f,!0),n.push({role:"assistant",content:l||""}),n.push({role:"tool_result",tool_name:"ask_user",content:f});continue}let{output:D,ok:h}=await Dn(a.name,a.args,e.cwd);e.onToolResult?.(a.name,D,h),n.push({role:"assistant",content:l||""}),n.push({role:"tool_result",tool_name:a.name,content:D})}if(!s&&o>=ri){n.push({role:"user",content:"You've reached the step limit. Summarize what you found and give your final answer now."});for await(let a of Ht(n,r))a.type==="text"&&a.text&&(s+=a.text,e.onText?.(a.text))}return s}import{spawn as Ce}from"child_process";import{createServer as Lr}from"http";var Wr=`<!DOCTYPE html>
53
+ <html lang="en">
54
+ <head>
55
+ <meta charset="UTF-8" />
56
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
57
+ <title>Rantera CLI \u2014 Authenticated</title>
58
+ <style>
59
+ *{margin:0;padding:0;box-sizing:border-box}
60
+ body{min-height:100vh;background:#0a0f0a;display:flex;align-items:center;justify-content:center;font-family:'Inter','Segoe UI',sans-serif;color:#fff}
61
+ .card{text-align:center;max-width:400px;padding:48px 32px}
62
+ .icon{width:72px;height:72px;border-radius:50%;background:rgba(0,107,63,.15);border:2px solid #006B3F;display:flex;align-items:center;justify-content:center;margin:0 auto 28px}
63
+ h1{font-size:22px;font-weight:700;color:#FCD116;margin-bottom:12px}
64
+ p{font-size:15px;color:#64748b;line-height:1.6;margin-bottom:8px}
65
+ code{color:#FCD116;background:rgba(252,209,22,.1);padding:2px 8px;border-radius:4px;font-size:14px}
66
+ .flags{display:flex;justify-content:center;gap:6px;margin-top:48px}
67
+ .bar{width:24px;height:3px;border-radius:2px;opacity:.6}
68
+ </style>
69
+ </head>
70
+ <body>
71
+ <div class="card">
72
+ <div class="icon">
73
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none">
74
+ <polyline points="20 6 9 17 4 12" stroke="#006B3F" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
75
+ </svg>
76
+ </div>
77
+ <h1>You're in.</h1>
78
+ <p>Rantera CLI is now authenticated.</p>
79
+ <p>You can close this tab and go back to your terminal.</p>
80
+ <p style="margin-top:16px;color:#334155;font-size:13px">Run <code>rantera</code> to start building.</p>
81
+ <div class="flags">
82
+ <div class="bar" style="background:#006B3F"></div>
83
+ <div class="bar" style="background:#FCD116"></div>
84
+ <div class="bar" style="background:#CE1126"></div>
85
+ </div>
86
+ </div>
87
+ </body>
88
+ </html>`,Hr=`<!DOCTYPE html>
89
+ <html lang="en">
90
+ <head>
91
+ <meta charset="UTF-8" />
92
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
93
+ <title>Rantera CLI \u2014 Login Failed</title>
94
+ <style>
95
+ *{margin:0;padding:0;box-sizing:border-box}
96
+ body{min-height:100vh;background:#0a0f0a;display:flex;align-items:center;justify-content:center;font-family:'Inter','Segoe UI',sans-serif;color:#fff}
97
+ .card{text-align:center;max-width:400px;padding:48px 32px}
98
+ .icon{width:72px;height:72px;border-radius:50%;background:rgba(206,17,38,.1);border:2px solid #CE1126;display:flex;align-items:center;justify-content:center;margin:0 auto 28px}
99
+ h1{font-size:20px;font-weight:700;color:#CE1126;margin-bottom:12px}
100
+ p{font-size:14px;color:#64748b;line-height:1.6;margin-bottom:8px}
101
+ code{color:#FCD116;background:rgba(252,209,22,.1);padding:2px 8px;border-radius:4px;font-size:14px}
102
+ .flags{display:flex;justify-content:center;gap:6px;margin-top:48px}
103
+ .bar{width:24px;height:3px;border-radius:2px;opacity:.6}
104
+ </style>
105
+ </head>
106
+ <body>
107
+ <div class="card">
108
+ <div class="icon">
109
+ <svg width="28" height="28" viewBox="0 0 24 24" fill="none">
110
+ <line x1="18" y1="6" x2="6" y2="18" stroke="#CE1126" stroke-width="2.5" stroke-linecap="round"/>
111
+ <line x1="6" y1="6" x2="18" y2="18" stroke="#CE1126" stroke-width="2.5" stroke-linecap="round"/>
112
+ </svg>
113
+ </div>
114
+ <h1>Login failed</h1>
115
+ <p>Something went wrong during authentication.</p>
116
+ <p>Close this tab and run <code>rantera auth login</code> to try again.</p>
117
+ <div class="flags">
118
+ <div class="bar" style="background:#006B3F"></div>
119
+ <div class="bar" style="background:#FCD116"></div>
120
+ <div class="bar" style="background:#CE1126"></div>
121
+ </div>
122
+ </div>
123
+ </body>
124
+ </html>`;function jr(i){process.platform==="win32"?Ce("cmd.exe",["/c","start","",i],{detached:!0,stdio:"ignore"}).unref():process.platform==="darwin"?Ce("open",[i],{detached:!0,stdio:"ignore"}).unref():Ce("xdg-open",[i],{detached:!0,stdio:"ignore"}).unref()}async function _t(i){let t=await new Promise((n,r)=>{let o=Lr((s,a)=>{let D=new URL(s.url??"/","http://localhost:9876").searchParams.get("token");a.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),D?(a.end(Wr),o.close(),n(D)):(a.end(Hr),o.close(),r(new Error("No token received from Rantera")))});o.listen(9876,()=>{let a=`${i}/app/wakanda/cli-callback?callback=${encodeURIComponent("http://localhost:9876")}`;console.log(u.hex("#FCD116")(`
125
+ Opening Rantera in your browser...
126
+ `)),console.log(u.dim(" If the browser didn't open, visit:")),console.log(" "+u.hex("#FCD116").underline(a)+`
127
+ `),jr(a)}),setTimeout(()=>{o.close(),r(new Error("Login timed out after 5 minutes. Try again."))},3e5)}),e=y();e.apiKey=t,e.apiUrl=i,H(e)}async function Ee(){let i=y();delete i.apiKey,H(i)}import{existsSync as si,readFileSync as ui}from"fs";import{homedir as Vr}from"os";import{join as ai}from"path";function li(i){let t=ai(Vr(),".wakanda","RANTERA.md"),e=ai(i,"RANTERA.md"),n=[];return si(t)&&n.push(ui(t,"utf-8").trim()),si(e)&&e!==t&&n.push(ui(e,"utf-8").trim()),n.length?n.join(`
128
+
129
+ ---
130
+
131
+ `):null}var Di=`# Wakanda \u2014 Project Context
132
+
133
+ ## Project overview
134
+ <!-- Describe what this project does and its goals -->
135
+
136
+ ## Key files & architecture
137
+ <!-- List the important files/modules and their purpose -->
138
+
139
+ ## Code style & preferences
140
+ <!-- How you like your code: style guide, patterns, naming conventions -->
141
+
142
+ ## Current focus
143
+ <!-- What you are actively working on right now -->
144
+
145
+ ## Important constraints
146
+ <!-- Anything Tera must NOT do or must always do -->
147
+ `;var Kr=2e5;function _e(i,t){let e=i.reduce((r,o)=>r+Math.ceil((o.content?.length??0)/4),0),n=t?Math.ceil(t.length/4):0;return e+n}var G=new Ne;G.name("rantera").description("Rantera CLI \u2014 African-first AI platform for developers").version("0.1.4");var xe=G.command("auth").description("Manage Rantera authentication");xe.command("login").description("Log in to your Rantera account").option("--url <url>","API URL override","https://rantera.ai").action(async i=>{try{await _t(i.url),N("Logged in to Rantera. Run `rantera` to start building.")}catch(t){M(String(t)),process.exit(1)}});xe.command("logout").description("Log out and remove stored credentials").action(()=>{Ee(),console.log(u.dim(" Logged out."))});xe.command("status").description("Show current auth status").action(()=>{let i=j();i?N(`Authenticated ${u.dim(`(${i.slice(0,12)}\u2026)`)}`):console.log(u.hex("#CE1126")(" \u2717 Not authenticated."),u.dim("Run `rantera auth login`."))});var Ae=G.command("config").description("Manage CLI configuration");Ae.command("set-key <key>").description("Set a Rantera API key manually (overrides login token)").action(i=>{i.startsWith("sk-rnt-")||(M("Invalid key \u2014 Rantera API keys start with sk-rnt-"),process.exit(1));let t=y();t.apiKey=i,H(t),N(`API key saved. ${u.dim(`(${i.slice(0,16)}\u2026)`)}`)});Ae.command("set-url <url>").description("Set the Rantera API URL (default: https://rantera.ai)").action(i=>{let t=y();t.apiUrl=i,H(t),N(`API URL set to ${u.dim(i)}`)});Ae.command("show").description("Show current configuration").action(()=>{let i=y(),t=process.env.WAKANDA_API_KEY??i.apiKey;console.log(u.dim(" API URL:"),i.apiUrl),console.log(u.dim(" API key:"),t?`${t.slice(0,16)}\u2026 ${u.dim("(set)")}`:u.yellow("not set \u2014 run `rantera auth login`")),console.log(u.dim(" Model: "),i.model??"tera"),process.env.WAKANDA_API_KEY&&console.log(u.dim(" \u2191 from WAKANDA_API_KEY env var"))});G.command("init").description("Create a RANTERA.md project memory file in the current directory").option("-f, --force","Overwrite if RANTERA.md already exists").action(i=>{let t=Gr(process.cwd(),"RANTERA.md");Ur(t)&&!i.force&&(M("RANTERA.md already exists. Use --force to overwrite."),process.exit(1)),qr(t,Di,"utf-8"),N("Created RANTERA.md"),console.log(u.dim(" Edit it to give Wakanda persistent context about this project.")),console.log(u.dim(" It loads automatically when you run `rantera` here.\n"))});G.command("wakanda [prompt]").description("Open the Wakanda AI workspace (default command)").option("-d, --dir <path>","Working directory for file and shell tools",process.cwd()).option("-p, --print","Non-interactive: print output to stdout, no banner (for scripts/CI)").action(async(i,t)=>{await hi(i,t.dir,t.print??!1)});G.argument("[prompt]","One-shot task \u2014 runs and exits without opening the REPL").option("-d, --dir <path>","Working directory for file and shell tools",process.cwd()).option("-p, --print","Non-interactive: print output to stdout, no banner (for scripts/CI)").action(async(i,t)=>{await hi(i,t.dir,t.print??!1)});async function hi(i,t,e){let n=j();if(!n){e&&(process.stderr.write("Error: Not authenticated. Run `rantera auth login`.\n"),process.exit(1));let f=y();console.log(),console.log(u.hex("#FCD116").bold(" You're not logged in to Rantera.")),console.log(u.dim(` Log in to continue. We'll open your browser now.
148
+ `));let p=xt.createInterface({input:process.stdin,output:process.stdout});await new Promise(d=>{p.question(u.dim(" Press Enter to open the browser, or Ctrl+C to cancel\u2026 "),()=>{p.close(),d()})});try{await _t(f.apiUrl??"https://rantera.ai"),n=j(),N(`Logged in. Starting Wakanda...
149
+ `)}catch(d){M(String(d)),process.exit(1)}}let r=y(),o=[],s=r.model??"hira",a=li(t);if(e||Gn(t,s,a!==null),i){let f=await ci(i,o,t,s,a,e);e&&process.stdout.write(f+`
150
+ `);return}e&&(process.stderr.write(`Error: --print requires a prompt argument. Try: rantera -p "your task"
151
+ `),process.exit(1));let l=xt.createInterface({input:process.stdin,output:process.stdout,terminal:!0,historySize:500});l.on("close",()=>{console.log(u.dim(`
152
+ Closing Wakanda. Keep building.
153
+ `)),process.exit(0)});let D="",h=!1,c=()=>{let f=h?" "+u.dim("... \u203A "):" "+u.hex("#FCD116").bold("you \u203A ");l.question(f,async p=>{if(p.endsWith("\\")){D+=(D?`
154
+ `:"")+p.slice(0,-1),h=!0,c();return}let d=D+(D?`
155
+ `:"")+p;D="",h=!1;let m=d.trim();if(!m){c();return}if(m==="/help"){Kn(),c();return}if(m==="/clear"){o.length=0,console.log(u.dim(`
156
+ Conversation cleared.
157
+ `)),c();return}if(m==="/history"){let E=o.filter(_=>_.role==="user"||_.role==="assistant").map(_=>({role:_.role,content:_.content}));Xn(E),c();return}if(m==="/status"){let E=_e(o,a);Jn(j(),r.apiUrl,o.length,t,s,E),c();return}if(m==="/compact"){let _=o.length;if(o.length>6){o.splice(0,o.length-6);let A=o.length,b=_e(o,a),W=Math.round(b/Kr*100);console.log(u.dim(`
158
+ Compacted \u2014 kept last ${A} of ${_} messages.`)+" "+u.dim(`(~${Yr(b)} tokens, ${W}% of 200k)
159
+ `))}else console.log(u.dim(`
160
+ Nothing to compact yet.
161
+ `));c();return}if(m==="/cost"){let E=_e(o,a),_=o.filter(A=>A.role==="user"||A.role==="assistant").length;zn(E,_),c();return}if(m==="/model"||m.startsWith("/model ")){let E=m.split(/\s+/);if(E.length===1)Yn(s);else{let _=E[1].toLowerCase(),A=I.find(b=>b.id===_);if(!A)M(`Unknown model "${_}". Available: ${I.filter(b=>b.available).map(b=>b.id).join(", ")}`);else if(!A.available)console.log(u.dim(`
162
+ ${A.display} is coming soon \u2014 stay tuned.
163
+ `));else{s=A.id;let b=y();b.model=s,H(b),N(`Switched to ${A.display} ${u.dim(A.desc)}`),console.log()}}c();return}if(m==="/logout"){await Ee(),console.log(u.dim(`
164
+ Logged out. Type /login to authenticate with a different account.
165
+ `)),c();return}if(m==="/login"){console.log();try{await _t(r.apiUrl),N(`Logged in.
166
+ `)}catch(E){M(String(E))}c();return}if(m==="/exit"||m==="/quit"){l.close();return}if(m.startsWith("/")){console.log(u.dim(`
167
+ Unknown command: ${m} (type /help)
168
+ `)),c();return}await ci(m,o,t,s,a,!1,l),c()})};c()}function Yr(i){return i>=1e3?`${(i/1e3).toFixed(1)}k`:String(i)}async function ci(i,t,e,n,r,o,s){o||(console.log(),ii(n));let a=!0,l=await oi(i,t,{cwd:e,model:n,system:r??void 0,onText(D){a&&(ot(),a=!1),Qn(D)},onToolCall(D,h){o||(ot(),a=!1,ti(D,h),Zn(`${D}\u2026`))},onToolResult(D,h,c){o||(Fe(c),ei(D,h,c))},async onAskUser(D){if(o)return"";ot(),a=!1,console.log(),console.log(u.hex("#FCD116")(" Wakanda asks:"),D);let h=s??xt.createInterface({input:process.stdin,output:process.stdout}),c=await new Promise(f=>{h.question(" "+u.dim("your answer \u203A "),f)});return s||h.close(),console.log(),c}});return o||(!l&&a?Fe(!1,"No response"):a&&ot(),console.log(`
169
+ `),ni()),t.push({role:"user",content:i}),l&&t.push({role:"assistant",content:l}),l}G.parse(process.argv);