ccski 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,16 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import { A as optionalType, B as __commonJS, C as custom, D as literalType, E as intersectionType, H as __toESM, M as stringType, N as unionType, O as numberType, P as unknownType, R as SkillNotFoundError, S as booleanType, T as enumType, V as __require, _ as validateSkillFile, c as colors, d as formatBytes, f as highlight, h as success, j as recordType, k as objectType, l as dim, m as setColorEnabled, n as containsCaseInsensitive, p as renderList, r as rankStrings, t as SkillRegistry, u as error, w as discriminatedUnionType, x as arrayType } from "./registry-DGrbpgs5.mjs";
3
- import { existsSync, statSync } from "node:fs";
2
+ import { A as intersectionType, D as custom, E as booleanType, F as recordType, G as __require, H as SkillNotFoundError, I as stringType, K as __toESM, L as unionType, M as numberType, N as objectType, O as discriminatedUnionType, P as optionalType, R as unknownType, T as arrayType, W as __commonJS, _ as tone, b as parseSkillFile, c as colors$3, d as formatBytes, f as heading, g as success, h as setColorEnabled, j as literalType, k as enumType, l as dim, m as renderList, n as containsCaseInsensitive, p as highlight, r as rankStrings, t as SkillRegistry, u as error, v as warn, x as validateSkillFile, y as wrap } from "./registry-ChUc2356.mjs";
3
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync } from "node:fs";
4
+ import { stripVTControlCharacters } from "node:util";
4
5
  import { readFileSync as readFileSync$1, readdirSync as readdirSync$1, statSync as statSync$1, writeFile } from "fs";
5
- import { join, resolve } from "node:path";
6
+ import { tmpdir } from "node:os";
7
+ import { dirname, join, resolve } from "node:path";
6
8
  import { notStrictEqual, strictEqual } from "assert";
7
9
  import { basename, dirname as dirname$1, extname, normalize, relative, resolve as resolve$1 } from "path";
8
10
  import { format, inspect } from "util";
9
11
  import { URL as URL$1, fileURLToPath } from "url";
10
- import { createServer } from "node:http";
11
12
  import { randomUUID } from "node:crypto";
12
13
  import process$1 from "node:process";
14
+ import { createServer } from "node:http";
13
15
  import { parse } from "node:url";
16
+ import { execSync } from "node:child_process";
17
+ import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
18
+ import * as readline from "node:readline";
14
19
 
15
20
  //#region node_modules/.pnpm/cliui@8.0.1/node_modules/cliui/build/lib/index.js
16
21
  const align = {
@@ -229,12 +234,12 @@ function cliui(opts, _mixin) {
229
234
  //#endregion
230
235
  //#region node_modules/.pnpm/cliui@8.0.1/node_modules/cliui/build/lib/string-utils.js
231
236
  const ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g");
232
- function stripAnsi(str$1) {
237
+ function stripAnsi$2(str$1) {
233
238
  return str$1.replace(ansi, "");
234
239
  }
235
- function wrap$1(str$1, width) {
240
+ function wrap$2(str$1, width) {
236
241
  const [start, end] = str$1.match(ansi) || ["", ""];
237
- str$1 = stripAnsi(str$1);
242
+ str$1 = stripAnsi$2(str$1);
238
243
  let wrapped = "";
239
244
  for (let i$3 = 0; i$3 < str$1.length; i$3++) {
240
245
  if (i$3 !== 0 && i$3 % width === 0) wrapped += "\n";
@@ -251,8 +256,8 @@ function ui(opts) {
251
256
  stringWidth: (str$1) => {
252
257
  return [...str$1].length;
253
258
  },
254
- stripAnsi,
255
- wrap: wrap$1
259
+ stripAnsi: stripAnsi$2,
260
+ wrap: wrap$2
256
261
  });
257
262
  }
258
263
 
@@ -1263,7 +1268,7 @@ try {
1263
1268
  __dirname = process.cwd();
1264
1269
  }
1265
1270
  const mainFilename = __dirname.substring(0, __dirname.lastIndexOf("node_modules"));
1266
- var esm_default = {
1271
+ var esm_default$2 = {
1267
1272
  assert: {
1268
1273
  notStrictEqual,
1269
1274
  strictEqual
@@ -1424,24 +1429,24 @@ var GlobalMiddleware = class {
1424
1429
  this.frozens = [];
1425
1430
  this.yargs = yargs;
1426
1431
  }
1427
- addMiddleware(callback, applyBeforeValidation, global$1 = true, mutates = false) {
1432
+ addMiddleware(callback, applyBeforeValidation, global$2 = true, mutates = false) {
1428
1433
  argsert("<array|function> [boolean] [boolean] [boolean]", [
1429
1434
  callback,
1430
1435
  applyBeforeValidation,
1431
- global$1
1436
+ global$2
1432
1437
  ], arguments.length);
1433
1438
  if (Array.isArray(callback)) {
1434
1439
  for (let i$3 = 0; i$3 < callback.length; i$3++) {
1435
1440
  if (typeof callback[i$3] !== "function") throw Error("middleware must be a function");
1436
1441
  const m = callback[i$3];
1437
1442
  m.applyBeforeValidation = applyBeforeValidation;
1438
- m.global = global$1;
1443
+ m.global = global$2;
1439
1444
  }
1440
1445
  Array.prototype.push.apply(this.globalMiddleware, callback);
1441
1446
  } else if (typeof callback === "function") {
1442
1447
  const m = callback;
1443
1448
  m.applyBeforeValidation = applyBeforeValidation;
1444
- m.global = global$1;
1449
+ m.global = global$2;
1445
1450
  m.mutates = mutates;
1446
1451
  this.globalMiddleware.push(callback);
1447
1452
  }
@@ -1992,18 +1997,18 @@ function usage(yargs, shim$2) {
1992
1997
  epilogs.push(msg);
1993
1998
  };
1994
1999
  let wrapSet = false;
1995
- let wrap$2;
2000
+ let wrap$3;
1996
2001
  self.wrap = (cols) => {
1997
2002
  wrapSet = true;
1998
- wrap$2 = cols;
2003
+ wrap$3 = cols;
1999
2004
  };
2000
2005
  self.getWrap = () => {
2001
2006
  if (shim$2.getEnv("YARGS_DISABLE_WRAP")) return null;
2002
2007
  if (!wrapSet) {
2003
- wrap$2 = windowWidth();
2008
+ wrap$3 = windowWidth();
2004
2009
  wrapSet = true;
2005
2010
  }
2006
- return wrap$2;
2011
+ return wrap$3;
2007
2012
  };
2008
2013
  const deferY18nLookupPrefix = "__yargsString__:";
2009
2014
  self.deferY18nLookup = (str$1) => deferY18nLookupPrefix + str$1;
@@ -3015,8 +3020,8 @@ var YargsInstance = class {
3015
3020
  this[kTrackManuallySetKeys](keys);
3016
3021
  return this;
3017
3022
  }
3018
- check(f, global$1) {
3019
- argsert("<function> [boolean]", [f, global$1], arguments.length);
3023
+ check(f, global$2) {
3024
+ argsert("<function> [boolean]", [f, global$2], arguments.length);
3020
3025
  this.middleware((argv, _yargs) => {
3021
3026
  return maybeAsyncResult(() => {
3022
3027
  return f(argv, _yargs.getOptions());
@@ -3028,7 +3033,7 @@ var YargsInstance = class {
3028
3033
  __classPrivateFieldGet(this, _YargsInstance_usage, "f").fail(err.message ? err.message : err.toString(), err);
3029
3034
  return argv;
3030
3035
  });
3031
- }, false, global$1);
3036
+ }, false, global$2);
3032
3037
  return this;
3033
3038
  }
3034
3039
  choices(key$1, value) {
@@ -3316,10 +3321,10 @@ var YargsInstance = class {
3316
3321
  getStrictOptions() {
3317
3322
  return __classPrivateFieldGet(this, _YargsInstance_strictOptions, "f");
3318
3323
  }
3319
- global(globals, global$1) {
3320
- argsert("<string|array> [boolean]", [globals, global$1], arguments.length);
3324
+ global(globals, global$2) {
3325
+ argsert("<string|array> [boolean]", [globals, global$2], arguments.length);
3321
3326
  globals = [].concat(globals);
3322
- if (global$1 !== false) __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter((l) => globals.indexOf(l) === -1);
3327
+ if (global$2 !== false) __classPrivateFieldGet(this, _YargsInstance_options, "f").local = __classPrivateFieldGet(this, _YargsInstance_options, "f").local.filter((l) => globals.indexOf(l) === -1);
3323
3328
  else globals.forEach((g) => {
3324
3329
  if (!__classPrivateFieldGet(this, _YargsInstance_options, "f").local.includes(g)) __classPrivateFieldGet(this, _YargsInstance_options, "f").local.push(g);
3325
3330
  });
@@ -3356,8 +3361,8 @@ var YargsInstance = class {
3356
3361
  __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.setLocale(locale);
3357
3362
  return this;
3358
3363
  }
3359
- middleware(callback, applyBeforeValidation, global$1) {
3360
- return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global$1);
3364
+ middleware(callback, applyBeforeValidation, global$2) {
3365
+ return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addMiddleware(callback, !!applyBeforeValidation, global$2);
3361
3366
  }
3362
3367
  nargs(key$1, value) {
3363
3368
  argsert("<string|object|array> [number]", [key$1, value], arguments.length);
@@ -4133,19 +4138,22 @@ function isYargsInstance(y) {
4133
4138
 
4134
4139
  //#endregion
4135
4140
  //#region node_modules/.pnpm/yargs@17.7.2/node_modules/yargs/index.mjs
4136
- const Yargs = YargsFactory(esm_default);
4141
+ const Yargs = YargsFactory(esm_default$2);
4137
4142
  var yargs_default = Yargs;
4138
4143
 
4139
4144
  //#endregion
4140
4145
  //#region src/cli/registry-options.ts
4141
- function buildRegistryOptions(argv) {
4146
+ function buildRegistryOptions(argv, extras = {}) {
4142
4147
  const options = {};
4143
4148
  if (Array.isArray(argv.skillDir)) options.customDirs = argv.skillDir;
4144
4149
  if (argv.noPlugins === true) options.skipPlugins = true;
4145
4150
  if (argv.scanDefaultDirs === false) options.scanDefaultDirs = false;
4146
4151
  if (typeof argv.pluginsFile === "string") options.pluginsFile = argv.pluginsFile;
4147
4152
  if (typeof argv.pluginsRoot === "string") options.pluginsRoot = argv.pluginsRoot;
4148
- return options;
4153
+ return {
4154
+ ...options,
4155
+ ...extras
4156
+ };
4149
4157
  }
4150
4158
 
4151
4159
  //#endregion
@@ -4211,7 +4219,10 @@ async function infoCommand(argv) {
4211
4219
  async function listCommand(argv) {
4212
4220
  if (argv.noColor || process.env.FORCE_COLOR === "0") setColorEnabled(false);
4213
4221
  if (argv.color) setColorEnabled(true);
4214
- const skills = new SkillRegistry(buildRegistryOptions(argv)).getAll().sort((a, b) => a.name.localeCompare(b.name));
4222
+ let skills = new SkillRegistry(buildRegistryOptions(argv, { includeDisabled: argv.all || argv.disabled })).getAll();
4223
+ if (argv.disabled) skills = skills.filter((s) => s.disabled);
4224
+ else if (!argv.all) skills = skills.filter((s) => !s.disabled);
4225
+ skills = skills.sort((a, b) => a.name.localeCompare(b.name));
4215
4226
  if ((argv.json ? "json" : argv.format ?? "plain") === "json") {
4216
4227
  console.log(JSON.stringify(skills, null, 2));
4217
4228
  return;
@@ -4237,18 +4248,21 @@ async function listCommand(argv) {
4237
4248
  ]) {
4238
4249
  const list = groups[location];
4239
4250
  if (!list.length) continue;
4240
- sections.push(`${colors.underline(colors.bold(labels[location]))} (${list.length})`);
4251
+ sections.push(`${colors$3.underline(colors$3.bold(labels[location]))} (${list.length})`);
4241
4252
  sections.push(renderList(list.map((skill) => ({
4242
4253
  title: skill.name,
4254
+ color: skill.disabled ? colors$3.red : void 0,
4255
+ badge: skill.disabled ? colors$3.red("[disabled]") : void 0,
4243
4256
  meta: location === "plugin" ? skill.pluginInfo?.pluginName ?? dim(location) : dim(location),
4244
4257
  description: skill.description
4245
4258
  }))));
4246
4259
  }
4247
4260
  if (sections.length === 0) {
4248
- console.log("No skills found.");
4261
+ console.log(argv.disabled ? "No disabled skills found." : "No skills found.");
4249
4262
  return;
4250
4263
  }
4251
- console.log(`${colors.bold("Skills")} (${skills.length})\n` + sections.join("\n\n"));
4264
+ const heading$1 = argv.disabled ? "Disabled skills" : argv.all ? "All skills" : "Skills";
4265
+ console.log(`${colors$3.bold(heading$1)} (${skills.length})\n` + sections.join("\n\n"));
4252
4266
  }
4253
4267
 
4254
4268
  //#endregion
@@ -5486,7 +5500,7 @@ var Protocol = class {
5486
5500
  this._notificationHandlers.delete(method);
5487
5501
  }
5488
5502
  };
5489
- function isPlainObject(value) {
5503
+ function isPlainObject$1(value) {
5490
5504
  return value !== null && typeof value === "object" && !Array.isArray(value);
5491
5505
  }
5492
5506
  function mergeCapabilities(base, additional) {
@@ -5496,7 +5510,7 @@ function mergeCapabilities(base, additional) {
5496
5510
  const addValue = additional[k];
5497
5511
  if (addValue === void 0) continue;
5498
5512
  const baseValue = result[k];
5499
- if (isPlainObject(baseValue) && isPlainObject(addValue)) result[k] = {
5513
+ if (isPlainObject$1(baseValue) && isPlainObject$1(addValue)) result[k] = {
5500
5514
  ...baseValue,
5501
5515
  ...addValue
5502
5516
  };
@@ -7701,8 +7715,8 @@ var require_validate = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
7701
7715
  }
7702
7716
  }
7703
7717
  function returnResults(it) {
7704
- const { gen, schemaEnv, validateName, ValidationError: ValidationError$1, opts } = it;
7705
- if (schemaEnv.$async) gen.if((0, codegen_1$28._)`${names_1$3.default.errors} === 0`, () => gen.return(names_1$3.default.data), () => gen.throw((0, codegen_1$28._)`new ${ValidationError$1}(${names_1$3.default.vErrors})`));
7718
+ const { gen, schemaEnv, validateName, ValidationError: ValidationError$2, opts } = it;
7719
+ if (schemaEnv.$async) gen.if((0, codegen_1$28._)`${names_1$3.default.errors} === 0`, () => gen.return(names_1$3.default.data), () => gen.throw((0, codegen_1$28._)`new ${ValidationError$2}(${names_1$3.default.vErrors})`));
7706
7720
  else {
7707
7721
  gen.assign((0, codegen_1$28._)`${validateName}.errors`, names_1$3.default.vErrors);
7708
7722
  if (opts.unevaluated) assignEvaluated(it);
@@ -7988,14 +8002,14 @@ var require_validate = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
7988
8002
  //#region node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.js
7989
8003
  var require_validation_error = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/runtime/validation_error.js": ((exports) => {
7990
8004
  Object.defineProperty(exports, "__esModule", { value: true });
7991
- var ValidationError = class extends Error {
8005
+ var ValidationError$1 = class extends Error {
7992
8006
  constructor(errors) {
7993
8007
  super("validation failed");
7994
8008
  this.errors = errors;
7995
8009
  this.ajv = this.validation = true;
7996
8010
  }
7997
8011
  };
7998
- exports.default = ValidationError;
8012
+ exports.default = ValidationError$1;
7999
8013
  }) });
8000
8014
 
8001
8015
  //#endregion
@@ -9328,9 +9342,9 @@ var require_core$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17.1
9328
9342
  }
9329
9343
  return this;
9330
9344
  }
9331
- addFormat(name, format$3) {
9332
- if (typeof format$3 == "string") format$3 = new RegExp(format$3);
9333
- this.formats[name] = format$3;
9345
+ addFormat(name, format$4) {
9346
+ if (typeof format$4 == "string") format$4 = new RegExp(format$4);
9347
+ this.formats[name] = format$4;
9334
9348
  return this;
9335
9349
  }
9336
9350
  errorsText(errors = this.errors, { separator = ", ", dataVar = "data" } = {}) {
@@ -9432,8 +9446,8 @@ var require_core$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17.1
9432
9446
  }
9433
9447
  function addInitialFormats() {
9434
9448
  for (const name in this.opts.formats) {
9435
- const format$3 = this.opts.formats[name];
9436
- if (format$3) this.addFormat(name, format$3);
9449
+ const format$4 = this.opts.formats[name];
9450
+ if (format$4) this.addFormat(name, format$4);
9437
9451
  }
9438
9452
  }
9439
9453
  function addInitialKeywords(defs) {
@@ -10916,17 +10930,17 @@ var require_format$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
10916
10930
  });
10917
10931
  const fDef = gen.const("fDef", (0, codegen_1$4._)`${fmts}[${schemaCode}]`);
10918
10932
  const fType = gen.let("fType");
10919
- const format$3 = gen.let("format");
10920
- gen.if((0, codegen_1$4._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1$4._)`${fDef}.type || "string"`).assign(format$3, (0, codegen_1$4._)`${fDef}.validate`), () => gen.assign(fType, (0, codegen_1$4._)`"string"`).assign(format$3, fDef));
10933
+ const format$4 = gen.let("format");
10934
+ gen.if((0, codegen_1$4._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1$4._)`${fDef}.type || "string"`).assign(format$4, (0, codegen_1$4._)`${fDef}.validate`), () => gen.assign(fType, (0, codegen_1$4._)`"string"`).assign(format$4, fDef));
10921
10935
  cxt.fail$data((0, codegen_1$4.or)(unknownFmt(), invalidFmt()));
10922
10936
  function unknownFmt() {
10923
10937
  if (opts.strictSchema === false) return codegen_1$4.nil;
10924
- return (0, codegen_1$4._)`${schemaCode} && !${format$3}`;
10938
+ return (0, codegen_1$4._)`${schemaCode} && !${format$4}`;
10925
10939
  }
10926
10940
  function invalidFmt() {
10927
- const callFormat = schemaEnv.$async ? (0, codegen_1$4._)`(${fDef}.async ? await ${format$3}(${data}) : ${format$3}(${data}))` : (0, codegen_1$4._)`${format$3}(${data})`;
10928
- const validData = (0, codegen_1$4._)`(typeof ${format$3} == "function" ? ${callFormat} : ${format$3}.test(${data}))`;
10929
- return (0, codegen_1$4._)`${format$3} && ${format$3} !== true && ${fType} === ${ruleType} && !${validData}`;
10941
+ const callFormat = schemaEnv.$async ? (0, codegen_1$4._)`(${fDef}.async ? await ${format$4}(${data}) : ${format$4}(${data}))` : (0, codegen_1$4._)`${format$4}(${data})`;
10942
+ const validData = (0, codegen_1$4._)`(typeof ${format$4} == "function" ? ${callFormat} : ${format$4}.test(${data}))`;
10943
+ return (0, codegen_1$4._)`${format$4} && ${format$4} !== true && ${fType} === ${ruleType} && !${validData}`;
10930
10944
  }
10931
10945
  }
10932
10946
  function validateFormat() {
@@ -10936,7 +10950,7 @@ var require_format$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
10936
10950
  return;
10937
10951
  }
10938
10952
  if (formatDef === true) return;
10939
- const [fmtType, format$3, fmtRef] = getFormat(formatDef);
10953
+ const [fmtType, format$4, fmtRef] = getFormat(formatDef);
10940
10954
  if (fmtType === ruleType) cxt.pass(validCondition());
10941
10955
  function unknownFormat() {
10942
10956
  if (opts.strictSchema === false) {
@@ -10971,7 +10985,7 @@ var require_format$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
10971
10985
  if (!schemaEnv.$async) throw new Error("async format in sync schema");
10972
10986
  return (0, codegen_1$4._)`await ${fmtRef}(${data})`;
10973
10987
  }
10974
- return typeof format$3 == "function" ? (0, codegen_1$4._)`${fmtRef}(${data})` : (0, codegen_1$4._)`${fmtRef}.test(${data})`;
10988
+ return typeof format$4 == "function" ? (0, codegen_1$4._)`${fmtRef}(${data})` : (0, codegen_1$4._)`${fmtRef}.test(${data})`;
10975
10989
  }
10976
10990
  }
10977
10991
  }
@@ -10983,8 +10997,8 @@ var require_format$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17
10983
10997
  //#region node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/index.js
10984
10998
  var require_format = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv@8.17.1/node_modules/ajv/dist/vocabularies/format/index.js": ((exports) => {
10985
10999
  Object.defineProperty(exports, "__esModule", { value: true });
10986
- const format$2 = [require_format$1().default];
10987
- exports.default = format$2;
11000
+ const format$3 = [require_format$1().default];
11001
+ exports.default = format$3;
10988
11002
  }) });
10989
11003
 
10990
11004
  //#endregion
@@ -11612,14 +11626,14 @@ var require_limit = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ajv-formats
11612
11626
  cxt.fail$data((0, codegen_1$1.or)((0, codegen_1$1._)`typeof ${fmt} != "object"`, (0, codegen_1$1._)`${fmt} instanceof RegExp`, (0, codegen_1$1._)`typeof ${fmt}.compare != "function"`, compareCode(fmt)));
11613
11627
  }
11614
11628
  function validateFormat() {
11615
- const format$3 = fCxt.schema;
11616
- const fmtDef$1 = self.formats[format$3];
11629
+ const format$4 = fCxt.schema;
11630
+ const fmtDef$1 = self.formats[format$4];
11617
11631
  if (!fmtDef$1 || fmtDef$1 === true) return;
11618
- if (typeof fmtDef$1 != "object" || fmtDef$1 instanceof RegExp || typeof fmtDef$1.compare != "function") throw new Error(`"${keyword}": format "${format$3}" does not define "compare" function`);
11632
+ if (typeof fmtDef$1 != "object" || fmtDef$1 instanceof RegExp || typeof fmtDef$1.compare != "function") throw new Error(`"${keyword}": format "${format$4}" does not define "compare" function`);
11619
11633
  const fmt = gen.scopeValue("formats", {
11620
- key: format$3,
11634
+ key: format$4,
11621
11635
  ref: fmtDef$1,
11622
- code: opts.code.formats ? (0, codegen_1$1._)`${opts.code.formats}${(0, codegen_1$1.getProperty)(format$3)}` : void 0
11636
+ code: opts.code.formats ? (0, codegen_1$1._)`${opts.code.formats}${(0, codegen_1$1.getProperty)(format$4)}` : void 0
11623
11637
  });
11624
11638
  cxt.fail$data(compareCode(fmt));
11625
11639
  }
@@ -11977,7 +11991,7 @@ var require_bytes = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/bytes@3.1.2
11977
11991
  * @public
11978
11992
  */
11979
11993
  module.exports = bytes$1;
11980
- module.exports.format = format$1;
11994
+ module.exports.format = format$2;
11981
11995
  module.exports.parse = parse$2;
11982
11996
  /**
11983
11997
  * Module variables.
@@ -12010,7 +12024,7 @@ var require_bytes = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/bytes@3.1.2
12010
12024
  */
12011
12025
  function bytes$1(value, options) {
12012
12026
  if (typeof value === "string") return parse$2(value);
12013
- if (typeof value === "number") return format$1(value, options);
12027
+ if (typeof value === "number") return format$2(value, options);
12014
12028
  return null;
12015
12029
  }
12016
12030
  /**
@@ -12030,7 +12044,7 @@ var require_bytes = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/bytes@3.1.2
12030
12044
  * @returns {string|null}
12031
12045
  * @public
12032
12046
  */
12033
- function format$1(value, options) {
12047
+ function format$2(value, options) {
12034
12048
  if (!Number.isFinite(value)) return null;
12035
12049
  var mag = Math.abs(value);
12036
12050
  var thousandsSeparator = options && options.thousandsSeparator || "";
@@ -21461,7 +21475,7 @@ var require_streams = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/iconv-lit
21461
21475
 
21462
21476
  //#endregion
21463
21477
  //#region node_modules/.pnpm/iconv-lite@0.7.0/node_modules/iconv-lite/lib/index.js
21464
- var require_lib = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/iconv-lite@0.7.0/node_modules/iconv-lite/lib/index.js": ((exports, module) => {
21478
+ var require_lib$1 = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/iconv-lite@0.7.0/node_modules/iconv-lite/lib/index.js": ((exports, module) => {
21465
21479
  var Buffer$1 = require_safer().Buffer;
21466
21480
  var bomHandling = require_bom_handling();
21467
21481
  var mergeModules = require_merge_exports();
@@ -21629,7 +21643,7 @@ var require_raw_body = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/raw-body
21629
21643
  var asyncHooks = tryRequireAsyncHooks();
21630
21644
  var bytes = require_bytes();
21631
21645
  var createError = require_http_errors();
21632
- var iconv = require_lib();
21646
+ var iconv = require_lib$1();
21633
21647
  var unpipe = require_unpipe();
21634
21648
  /**
21635
21649
  * Module exports.
@@ -21682,7 +21696,7 @@ var require_raw_body = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/raw-body
21682
21696
  var encoding = opts.encoding !== true ? opts.encoding : "utf-8";
21683
21697
  var limit = bytes.parse(opts.limit);
21684
21698
  var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null;
21685
- if (done) return readStream(stream, encoding, length, limit, wrap(done));
21699
+ if (done) return readStream(stream, encoding, length, limit, wrap$1(done));
21686
21700
  return new Promise(function executor(resolve$4, reject) {
21687
21701
  readStream(stream, encoding, length, limit, function onRead(err, buf) {
21688
21702
  if (err) return reject(err);
@@ -21805,7 +21819,7 @@ var require_raw_body = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/raw-body
21805
21819
  * AsyncResource.bind static method backported.
21806
21820
  * @private
21807
21821
  */
21808
- function wrap(fn) {
21822
+ function wrap$1(fn) {
21809
21823
  var res;
21810
21824
  if (asyncHooks.AsyncResource) res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn");
21811
21825
  if (!res || !res.runInAsyncScope) return fn;
@@ -22048,6 +22062,92 @@ var SSEServerTransport = class {
22048
22062
  }
22049
22063
  };
22050
22064
 
22065
+ //#endregion
22066
+ //#region node_modules/.pnpm/@modelcontextprotocol+sdk@1.22.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
22067
+ /**
22068
+ * Buffers a continuous stdio stream into discrete JSON-RPC messages.
22069
+ */
22070
+ var ReadBuffer = class {
22071
+ append(chunk) {
22072
+ this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
22073
+ }
22074
+ readMessage() {
22075
+ if (!this._buffer) return null;
22076
+ const index = this._buffer.indexOf("\n");
22077
+ if (index === -1) return null;
22078
+ const line$1 = this._buffer.toString("utf8", 0, index).replace(/\r$/, "");
22079
+ this._buffer = this._buffer.subarray(index + 1);
22080
+ return deserializeMessage(line$1);
22081
+ }
22082
+ clear() {
22083
+ this._buffer = void 0;
22084
+ }
22085
+ };
22086
+ function deserializeMessage(line$1) {
22087
+ return JSONRPCMessageSchema.parse(JSON.parse(line$1));
22088
+ }
22089
+ function serializeMessage(message) {
22090
+ return JSON.stringify(message) + "\n";
22091
+ }
22092
+
22093
+ //#endregion
22094
+ //#region node_modules/.pnpm/@modelcontextprotocol+sdk@1.22.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
22095
+ /**
22096
+ * Server transport for stdio: this communicates with a MCP client by reading from the current process' stdin and writing to stdout.
22097
+ *
22098
+ * This transport is only available in Node.js environments.
22099
+ */
22100
+ var StdioServerTransport = class {
22101
+ constructor(_stdin = process$1.stdin, _stdout = process$1.stdout) {
22102
+ this._stdin = _stdin;
22103
+ this._stdout = _stdout;
22104
+ this._readBuffer = new ReadBuffer();
22105
+ this._started = false;
22106
+ this._ondata = (chunk) => {
22107
+ this._readBuffer.append(chunk);
22108
+ this.processReadBuffer();
22109
+ };
22110
+ this._onerror = (error$2) => {
22111
+ var _a$1;
22112
+ (_a$1 = this.onerror) === null || _a$1 === void 0 || _a$1.call(this, error$2);
22113
+ };
22114
+ }
22115
+ /**
22116
+ * Starts listening for messages on stdin.
22117
+ */
22118
+ async start() {
22119
+ if (this._started) throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
22120
+ this._started = true;
22121
+ this._stdin.on("data", this._ondata);
22122
+ this._stdin.on("error", this._onerror);
22123
+ }
22124
+ processReadBuffer() {
22125
+ var _a$1, _b$1;
22126
+ while (true) try {
22127
+ const message = this._readBuffer.readMessage();
22128
+ if (message === null) break;
22129
+ (_a$1 = this.onmessage) === null || _a$1 === void 0 || _a$1.call(this, message);
22130
+ } catch (error$2) {
22131
+ (_b$1 = this.onerror) === null || _b$1 === void 0 || _b$1.call(this, error$2);
22132
+ }
22133
+ }
22134
+ async close() {
22135
+ var _a$1;
22136
+ this._stdin.off("data", this._ondata);
22137
+ this._stdin.off("error", this._onerror);
22138
+ if (this._stdin.listenerCount("data") === 0) this._stdin.pause();
22139
+ this._readBuffer.clear();
22140
+ (_a$1 = this.onclose) === null || _a$1 === void 0 || _a$1.call(this);
22141
+ }
22142
+ send(message) {
22143
+ return new Promise((resolve$4) => {
22144
+ const json = serializeMessage(message);
22145
+ if (this._stdout.write(json)) resolve$4();
22146
+ else this._stdout.once("drain", resolve$4);
22147
+ });
22148
+ }
22149
+ };
22150
+
22051
22151
  //#endregion
22052
22152
  //#region node_modules/.pnpm/@modelcontextprotocol+sdk@1.22.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/streamableHttp.js
22053
22153
  var import_raw_body = /* @__PURE__ */ __toESM(require_raw_body(), 1);
@@ -22510,92 +22610,6 @@ var StreamableHTTPServerTransport = class {
22510
22610
  }
22511
22611
  };
22512
22612
 
22513
- //#endregion
22514
- //#region node_modules/.pnpm/@modelcontextprotocol+sdk@1.22.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
22515
- /**
22516
- * Buffers a continuous stdio stream into discrete JSON-RPC messages.
22517
- */
22518
- var ReadBuffer = class {
22519
- append(chunk) {
22520
- this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
22521
- }
22522
- readMessage() {
22523
- if (!this._buffer) return null;
22524
- const index = this._buffer.indexOf("\n");
22525
- if (index === -1) return null;
22526
- const line$1 = this._buffer.toString("utf8", 0, index).replace(/\r$/, "");
22527
- this._buffer = this._buffer.subarray(index + 1);
22528
- return deserializeMessage(line$1);
22529
- }
22530
- clear() {
22531
- this._buffer = void 0;
22532
- }
22533
- };
22534
- function deserializeMessage(line$1) {
22535
- return JSONRPCMessageSchema.parse(JSON.parse(line$1));
22536
- }
22537
- function serializeMessage(message) {
22538
- return JSON.stringify(message) + "\n";
22539
- }
22540
-
22541
- //#endregion
22542
- //#region node_modules/.pnpm/@modelcontextprotocol+sdk@1.22.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
22543
- /**
22544
- * Server transport for stdio: this communicates with a MCP client by reading from the current process' stdin and writing to stdout.
22545
- *
22546
- * This transport is only available in Node.js environments.
22547
- */
22548
- var StdioServerTransport = class {
22549
- constructor(_stdin = process$1.stdin, _stdout = process$1.stdout) {
22550
- this._stdin = _stdin;
22551
- this._stdout = _stdout;
22552
- this._readBuffer = new ReadBuffer();
22553
- this._started = false;
22554
- this._ondata = (chunk) => {
22555
- this._readBuffer.append(chunk);
22556
- this.processReadBuffer();
22557
- };
22558
- this._onerror = (error$2) => {
22559
- var _a$1;
22560
- (_a$1 = this.onerror) === null || _a$1 === void 0 || _a$1.call(this, error$2);
22561
- };
22562
- }
22563
- /**
22564
- * Starts listening for messages on stdin.
22565
- */
22566
- async start() {
22567
- if (this._started) throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
22568
- this._started = true;
22569
- this._stdin.on("data", this._ondata);
22570
- this._stdin.on("error", this._onerror);
22571
- }
22572
- processReadBuffer() {
22573
- var _a$1, _b$1;
22574
- while (true) try {
22575
- const message = this._readBuffer.readMessage();
22576
- if (message === null) break;
22577
- (_a$1 = this.onmessage) === null || _a$1 === void 0 || _a$1.call(this, message);
22578
- } catch (error$2) {
22579
- (_b$1 = this.onerror) === null || _b$1 === void 0 || _b$1.call(this, error$2);
22580
- }
22581
- }
22582
- async close() {
22583
- var _a$1;
22584
- this._stdin.off("data", this._ondata);
22585
- this._stdin.off("error", this._onerror);
22586
- if (this._stdin.listenerCount("data") === 0) this._stdin.pause();
22587
- this._readBuffer.clear();
22588
- (_a$1 = this.onclose) === null || _a$1 === void 0 || _a$1.call(this);
22589
- }
22590
- send(message) {
22591
- return new Promise((resolve$4) => {
22592
- const json = serializeMessage(message);
22593
- if (this._stdout.write(json)) resolve$4();
22594
- else this._stdout.once("drain", resolve$4);
22595
- });
22596
- }
22597
- };
22598
-
22599
22613
  //#endregion
22600
22614
  //#region src/mcp/server.ts
22601
22615
  /**
@@ -22761,11 +22775,33 @@ async function startMCPServer(options = {}) {
22761
22775
  });
22762
22776
  }
22763
22777
  function buildSkillDescription(registry) {
22764
- return `Load a skill by name to get specialized instructions.
22765
- Include plugin namespace when present (plugin:skill).
22778
+ return `Execute a skill within the main conversation
22779
+
22780
+ <skills_instructions>
22781
+ When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.
22766
22782
 
22767
- Available skills:
22768
- ${registry.getAll().map((s) => `- ${s.name}: ${s.description}`).join("\n") || "(none found)"}`;
22783
+ How to use skills:
22784
+ - Invoke skills using this tool with the skill name only (no arguments)
22785
+ - The skill's prompt will expand and provide detailed instructions on how to complete the task
22786
+ - Examples:
22787
+ - command: "pdf" - invoke the pdf skill
22788
+ - command: "xlsx" - invoke the xlsx skill
22789
+ - command: "plugin:pdf" - invoke using fully qualified name
22790
+
22791
+ Important:
22792
+ - Only use skills listed in <available_skills> below
22793
+ - Do not invoke a skill that is already running
22794
+ - Do not use this tool for built-in CLI commands (like /help, /clear, etc.)
22795
+ </skills_instructions>\n\n${`<available_skills>\n${registry.getAll().map((skill) => {
22796
+ const location = skill.location === "user" ? "global" : skill.location;
22797
+ return [
22798
+ "<skill>",
22799
+ `<name>${skill.name}</name>`,
22800
+ `<description>${skill.description}</description>`,
22801
+ `<location>${location}</location>`,
22802
+ "</skill>"
22803
+ ].join("\n");
22804
+ }).join("\n") || "<skill>\n<name>none</name>\n<description>No skills discovered</description>\n<location>none</location>\n</skill>"}\n</available_skills>`}`;
22769
22805
  }
22770
22806
  function formatSkillContent(skill) {
22771
22807
  return `${[
@@ -22817,7 +22853,7 @@ async function searchCommand(argv) {
22817
22853
  console.log("No skills matched your query.");
22818
22854
  return;
22819
22855
  }
22820
- console.log(`${colors.underline(colors.bold("Matches"))} (${filtered.length})\n`);
22856
+ console.log(`${colors$3.underline(colors$3.bold("Matches"))} (${filtered.length})\n`);
22821
22857
  console.log(renderList(filtered.map((skill) => ({
22822
22858
  title: highlight(skill.name, argv.query),
22823
22859
  meta: `(${skill.location})`,
@@ -22887,85 +22923,4175 @@ function resolveSkillFile(input) {
22887
22923
  }
22888
22924
 
22889
22925
  //#endregion
22890
- //#region src/cli.ts
22891
- const listModule = {
22892
- command: "list",
22893
- describe: "List all available skills",
22894
- builder: (cmd) => cmd.option("format", {
22895
- alias: "f",
22896
- choices: ["plain", "json"],
22897
- default: "plain"
22898
- }).option("scan-default-dirs", {
22899
- type: "boolean",
22900
- default: true,
22901
- description: "Scan built-in .agent/.claude directories"
22902
- }),
22903
- handler: listCommand
22926
+ //#region node_modules/.pnpm/@inquirer+figures@1.0.0/node_modules/@inquirer/figures/dist/esm/index.mjs
22927
+ function isUnicodeSupported$1() {
22928
+ if (process$1.platform !== "win32") return process$1.env["TERM"] !== "linux";
22929
+ return Boolean(process$1.env["WT_SESSION"]) || Boolean(process$1.env["TERMINUS_SUBLIME"]) || process$1.env["ConEmuTask"] === "{cmd::Cmder}" || process$1.env["TERM_PROGRAM"] === "Terminus-Sublime" || process$1.env["TERM_PROGRAM"] === "vscode" || process$1.env["TERM"] === "xterm-256color" || process$1.env["TERM"] === "alacritty" || process$1.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm";
22930
+ }
22931
+ const common$1 = {
22932
+ circleQuestionMark: "(?)",
22933
+ questionMarkPrefix: "(?)",
22934
+ square: "",
22935
+ squareDarkShade: "",
22936
+ squareMediumShade: "▒",
22937
+ squareLightShade: "",
22938
+ squareTop: "▀",
22939
+ squareBottom: "▄",
22940
+ squareLeft: "▌",
22941
+ squareRight: "▐",
22942
+ squareCenter: "■",
22943
+ bullet: "●",
22944
+ dot: "․",
22945
+ ellipsis: "…",
22946
+ pointerSmall: "›",
22947
+ triangleUp: "▲",
22948
+ triangleUpSmall: "▴",
22949
+ triangleDown: "▼",
22950
+ triangleDownSmall: "▾",
22951
+ triangleLeftSmall: "◂",
22952
+ triangleRightSmall: "▸",
22953
+ home: "⌂",
22954
+ heart: "♥",
22955
+ musicNote: "♪",
22956
+ musicNoteBeamed: "♫",
22957
+ arrowUp: "↑",
22958
+ arrowDown: "↓",
22959
+ arrowLeft: "←",
22960
+ arrowRight: "→",
22961
+ arrowLeftRight: "↔",
22962
+ arrowUpDown: "↕",
22963
+ almostEqual: "≈",
22964
+ notEqual: "≠",
22965
+ lessOrEqual: "≤",
22966
+ greaterOrEqual: "≥",
22967
+ identical: "≡",
22968
+ infinity: "∞",
22969
+ subscriptZero: "₀",
22970
+ subscriptOne: "₁",
22971
+ subscriptTwo: "₂",
22972
+ subscriptThree: "₃",
22973
+ subscriptFour: "₄",
22974
+ subscriptFive: "₅",
22975
+ subscriptSix: "₆",
22976
+ subscriptSeven: "₇",
22977
+ subscriptEight: "₈",
22978
+ subscriptNine: "₉",
22979
+ oneHalf: "½",
22980
+ oneThird: "⅓",
22981
+ oneQuarter: "¼",
22982
+ oneFifth: "⅕",
22983
+ oneSixth: "⅙",
22984
+ oneEighth: "⅛",
22985
+ twoThirds: "⅔",
22986
+ twoFifths: "⅖",
22987
+ threeQuarters: "¾",
22988
+ threeFifths: "⅗",
22989
+ threeEighths: "⅜",
22990
+ fourFifths: "⅘",
22991
+ fiveSixths: "⅚",
22992
+ fiveEighths: "⅝",
22993
+ sevenEighths: "⅞",
22994
+ line: "─",
22995
+ lineBold: "━",
22996
+ lineDouble: "═",
22997
+ lineDashed0: "┄",
22998
+ lineDashed1: "┅",
22999
+ lineDashed2: "┈",
23000
+ lineDashed3: "┉",
23001
+ lineDashed4: "╌",
23002
+ lineDashed5: "╍",
23003
+ lineDashed6: "╴",
23004
+ lineDashed7: "╶",
23005
+ lineDashed8: "╸",
23006
+ lineDashed9: "╺",
23007
+ lineDashed10: "╼",
23008
+ lineDashed11: "╾",
23009
+ lineDashed12: "−",
23010
+ lineDashed13: "–",
23011
+ lineDashed14: "‐",
23012
+ lineDashed15: "⁃",
23013
+ lineVertical: "│",
23014
+ lineVerticalBold: "┃",
23015
+ lineVerticalDouble: "║",
23016
+ lineVerticalDashed0: "┆",
23017
+ lineVerticalDashed1: "┇",
23018
+ lineVerticalDashed2: "┊",
23019
+ lineVerticalDashed3: "┋",
23020
+ lineVerticalDashed4: "╎",
23021
+ lineVerticalDashed5: "╏",
23022
+ lineVerticalDashed6: "╵",
23023
+ lineVerticalDashed7: "╷",
23024
+ lineVerticalDashed8: "╹",
23025
+ lineVerticalDashed9: "╻",
23026
+ lineVerticalDashed10: "╽",
23027
+ lineVerticalDashed11: "╿",
23028
+ lineDownLeft: "┐",
23029
+ lineDownLeftArc: "╮",
23030
+ lineDownBoldLeftBold: "┓",
23031
+ lineDownBoldLeft: "┒",
23032
+ lineDownLeftBold: "┑",
23033
+ lineDownDoubleLeftDouble: "╗",
23034
+ lineDownDoubleLeft: "╖",
23035
+ lineDownLeftDouble: "╕",
23036
+ lineDownRight: "┌",
23037
+ lineDownRightArc: "╭",
23038
+ lineDownBoldRightBold: "┏",
23039
+ lineDownBoldRight: "┎",
23040
+ lineDownRightBold: "┍",
23041
+ lineDownDoubleRightDouble: "╔",
23042
+ lineDownDoubleRight: "╓",
23043
+ lineDownRightDouble: "╒",
23044
+ lineUpLeft: "┘",
23045
+ lineUpLeftArc: "╯",
23046
+ lineUpBoldLeftBold: "┛",
23047
+ lineUpBoldLeft: "┚",
23048
+ lineUpLeftBold: "┙",
23049
+ lineUpDoubleLeftDouble: "╝",
23050
+ lineUpDoubleLeft: "╜",
23051
+ lineUpLeftDouble: "╛",
23052
+ lineUpRight: "└",
23053
+ lineUpRightArc: "╰",
23054
+ lineUpBoldRightBold: "┗",
23055
+ lineUpBoldRight: "┖",
23056
+ lineUpRightBold: "┕",
23057
+ lineUpDoubleRightDouble: "╚",
23058
+ lineUpDoubleRight: "╙",
23059
+ lineUpRightDouble: "╘",
23060
+ lineUpDownLeft: "┤",
23061
+ lineUpBoldDownBoldLeftBold: "┫",
23062
+ lineUpBoldDownBoldLeft: "┨",
23063
+ lineUpDownLeftBold: "┥",
23064
+ lineUpBoldDownLeftBold: "┩",
23065
+ lineUpDownBoldLeftBold: "┪",
23066
+ lineUpDownBoldLeft: "┧",
23067
+ lineUpBoldDownLeft: "┦",
23068
+ lineUpDoubleDownDoubleLeftDouble: "╣",
23069
+ lineUpDoubleDownDoubleLeft: "╢",
23070
+ lineUpDownLeftDouble: "╡",
23071
+ lineUpDownRight: "├",
23072
+ lineUpBoldDownBoldRightBold: "┣",
23073
+ lineUpBoldDownBoldRight: "┠",
23074
+ lineUpDownRightBold: "┝",
23075
+ lineUpBoldDownRightBold: "┡",
23076
+ lineUpDownBoldRightBold: "┢",
23077
+ lineUpDownBoldRight: "┟",
23078
+ lineUpBoldDownRight: "┞",
23079
+ lineUpDoubleDownDoubleRightDouble: "╠",
23080
+ lineUpDoubleDownDoubleRight: "╟",
23081
+ lineUpDownRightDouble: "╞",
23082
+ lineDownLeftRight: "┬",
23083
+ lineDownBoldLeftBoldRightBold: "┳",
23084
+ lineDownLeftBoldRightBold: "┯",
23085
+ lineDownBoldLeftRight: "┰",
23086
+ lineDownBoldLeftBoldRight: "┱",
23087
+ lineDownBoldLeftRightBold: "┲",
23088
+ lineDownLeftRightBold: "┮",
23089
+ lineDownLeftBoldRight: "┭",
23090
+ lineDownDoubleLeftDoubleRightDouble: "╦",
23091
+ lineDownDoubleLeftRight: "╥",
23092
+ lineDownLeftDoubleRightDouble: "╤",
23093
+ lineUpLeftRight: "┴",
23094
+ lineUpBoldLeftBoldRightBold: "┻",
23095
+ lineUpLeftBoldRightBold: "┷",
23096
+ lineUpBoldLeftRight: "┸",
23097
+ lineUpBoldLeftBoldRight: "┹",
23098
+ lineUpBoldLeftRightBold: "┺",
23099
+ lineUpLeftRightBold: "┶",
23100
+ lineUpLeftBoldRight: "┵",
23101
+ lineUpDoubleLeftDoubleRightDouble: "╩",
23102
+ lineUpDoubleLeftRight: "╨",
23103
+ lineUpLeftDoubleRightDouble: "╧",
23104
+ lineUpDownLeftRight: "┼",
23105
+ lineUpBoldDownBoldLeftBoldRightBold: "╋",
23106
+ lineUpDownBoldLeftBoldRightBold: "╈",
23107
+ lineUpBoldDownLeftBoldRightBold: "╇",
23108
+ lineUpBoldDownBoldLeftRightBold: "╊",
23109
+ lineUpBoldDownBoldLeftBoldRight: "╉",
23110
+ lineUpBoldDownLeftRight: "╀",
23111
+ lineUpDownBoldLeftRight: "╁",
23112
+ lineUpDownLeftBoldRight: "┽",
23113
+ lineUpDownLeftRightBold: "┾",
23114
+ lineUpBoldDownBoldLeftRight: "╂",
23115
+ lineUpDownLeftBoldRightBold: "┿",
23116
+ lineUpBoldDownLeftBoldRight: "╃",
23117
+ lineUpBoldDownLeftRightBold: "╄",
23118
+ lineUpDownBoldLeftBoldRight: "╅",
23119
+ lineUpDownBoldLeftRightBold: "╆",
23120
+ lineUpDoubleDownDoubleLeftDoubleRightDouble: "╬",
23121
+ lineUpDoubleDownDoubleLeftRight: "╫",
23122
+ lineUpDownLeftDoubleRightDouble: "╪",
23123
+ lineCross: "╳",
23124
+ lineBackslash: "╲",
23125
+ lineSlash: "╱"
22904
23126
  };
22905
- const infoModule = {
22906
- command: "info <name>",
22907
- describe: "Show detailed info for a skill",
22908
- builder: (cmd) => cmd.positional("name", {
22909
- type: "string",
22910
- demandOption: true
22911
- }).option("full", {
22912
- type: "boolean",
22913
- default: false,
22914
- description: "Show full SKILL.md"
22915
- }).option("scan-default-dirs", {
22916
- type: "boolean",
22917
- default: true
22918
- }),
22919
- handler: infoCommand
23127
+ const specialMainSymbols$1 = {
23128
+ tick: "",
23129
+ info: "",
23130
+ warning: "",
23131
+ cross: "",
23132
+ squareSmall: "◻",
23133
+ squareSmallFilled: "",
23134
+ circle: "",
23135
+ circleFilled: "◉",
23136
+ circleDotted: "",
23137
+ circleDouble: "",
23138
+ circleCircle: "",
23139
+ circleCross: "ⓧ",
23140
+ circlePipe: "Ⓘ",
23141
+ radioOn: "◉",
23142
+ radioOff: "◯",
23143
+ checkboxOn: "☒",
23144
+ checkboxOff: "☐",
23145
+ checkboxCircleOn: "ⓧ",
23146
+ checkboxCircleOff: "Ⓘ",
23147
+ pointer: "❯",
23148
+ triangleUpOutline: "△",
23149
+ triangleLeft: "◀",
23150
+ triangleRight: "▶",
23151
+ lozenge: "◆",
23152
+ lozengeOutline: "◇",
23153
+ hamburger: "☰",
23154
+ smiley: "㋡",
23155
+ mustache: "෴",
23156
+ star: "★",
23157
+ play: "▶",
23158
+ nodejs: "⬢",
23159
+ oneSeventh: "⅐",
23160
+ oneNinth: "⅑",
23161
+ oneTenth: "⅒"
22920
23162
  };
22921
- const searchModule = {
22922
- command: "search <query>",
22923
- describe: "Search for skills",
22924
- builder: (cmd) => cmd.positional("query", {
22925
- type: "string",
22926
- demandOption: true
22927
- }).option("content", {
22928
- type: "boolean",
22929
- default: false,
22930
- description: "Search inside SKILL.md content"
22931
- }).option("format", {
22932
- alias: "f",
22933
- choices: ["plain", "json"],
22934
- default: "plain"
22935
- }).option("scan-default-dirs", {
22936
- type: "boolean",
22937
- default: true
22938
- }),
22939
- handler: searchCommand
23163
+ const specialFallbackSymbols$1 = {
23164
+ tick: "",
23165
+ info: "i",
23166
+ warning: "",
23167
+ cross: "×",
23168
+ squareSmall: "□",
23169
+ squareSmallFilled: "",
23170
+ circle: "( )",
23171
+ circleFilled: "(*)",
23172
+ circleDotted: "( )",
23173
+ circleDouble: "( )",
23174
+ circleCircle: "(○)",
23175
+ circleCross: "(×)",
23176
+ circlePipe: "(│)",
23177
+ radioOn: "(*)",
23178
+ radioOff: "( )",
23179
+ checkboxOn: "[×]",
23180
+ checkboxOff: "[ ]",
23181
+ checkboxCircleOn: "(×)",
23182
+ checkboxCircleOff: "( )",
23183
+ pointer: ">",
23184
+ triangleUpOutline: "∆",
23185
+ triangleLeft: "◄",
23186
+ triangleRight: "►",
23187
+ lozenge: "♦",
23188
+ lozengeOutline: "◊",
23189
+ hamburger: "≡",
23190
+ smiley: "☺",
23191
+ mustache: "┌─┐",
23192
+ star: "✶",
23193
+ play: "►",
23194
+ nodejs: "♦",
23195
+ oneSeventh: "1/7",
23196
+ oneNinth: "1/9",
23197
+ oneTenth: "1/10"
22940
23198
  };
22941
- const validateModule = {
22942
- command: "validate <path>",
22943
- describe: "Validate a SKILL.md or skill directory",
22944
- builder: (cmd) => cmd.positional("path", {
22945
- type: "string",
22946
- demandOption: true
22947
- }),
22948
- handler: validateCommand
23199
+ const mainSymbols$1 = {
23200
+ ...common$1,
23201
+ ...specialMainSymbols$1
22949
23202
  };
22950
- const mcpModule = {
22951
- command: "mcp",
22952
- describe: "Start MCP server",
22953
- builder: (cmd) => cmd.option("refresh-interval", {
22954
- type: "number",
22955
- description: "Auto refresh interval (ms)",
22956
- default: 3e4
22957
- }).option("no-refresh", {
22958
- type: "boolean",
22959
- description: "Disable auto refresh"
22960
- }).option("transport", {
22961
- choices: [
22962
- "stdio",
22963
- "http",
22964
- "sse"
22965
- ],
22966
- default: "stdio",
22967
- description: "Transport for MCP server"
22968
- }).option("port", {
23203
+ const fallbackSymbols$1 = {
23204
+ ...common$1,
23205
+ ...specialFallbackSymbols$1
23206
+ };
23207
+ const shouldUseMain$1 = isUnicodeSupported$1();
23208
+ const figures$1 = shouldUseMain$1 ? mainSymbols$1 : fallbackSymbols$1;
23209
+ var esm_default = figures$1;
23210
+ const replacements$1 = Object.entries(specialMainSymbols$1);
23211
+
23212
+ //#endregion
23213
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/key.js
23214
+ const isUpKey = (key$1, keybindings = []) => key$1.name === "up" || keybindings.includes("vim") && key$1.name === "k" || keybindings.includes("emacs") && key$1.ctrl && key$1.name === "p";
23215
+ const isDownKey = (key$1, keybindings = []) => key$1.name === "down" || keybindings.includes("vim") && key$1.name === "j" || keybindings.includes("emacs") && key$1.ctrl && key$1.name === "n";
23216
+ const isSpaceKey = (key$1) => key$1.name === "space";
23217
+ const isNumberKey = (key$1) => "1234567890".includes(key$1.name);
23218
+ const isEnterKey = (key$1) => key$1.name === "enter" || key$1.name === "return";
23219
+
23220
+ //#endregion
23221
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/errors.js
23222
+ var AbortPromptError = class extends Error {
23223
+ name = "AbortPromptError";
23224
+ message = "Prompt was aborted";
23225
+ constructor(options) {
23226
+ super();
23227
+ this.cause = options?.cause;
23228
+ }
23229
+ };
23230
+ var CancelPromptError = class extends Error {
23231
+ name = "CancelPromptError";
23232
+ message = "Prompt was canceled";
23233
+ };
23234
+ var ExitPromptError = class extends Error {
23235
+ name = "ExitPromptError";
23236
+ };
23237
+ var HookError = class extends Error {
23238
+ name = "HookError";
23239
+ };
23240
+ var ValidationError = class extends Error {
23241
+ name = "ValidationError";
23242
+ };
23243
+
23244
+ //#endregion
23245
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/hook-engine.js
23246
+ const hookStorage = new AsyncLocalStorage();
23247
+ function createStore(rl) {
23248
+ return {
23249
+ rl,
23250
+ hooks: [],
23251
+ hooksCleanup: [],
23252
+ hooksEffect: [],
23253
+ index: 0,
23254
+ handleChange() {}
23255
+ };
23256
+ }
23257
+ function withHooks(rl, cb) {
23258
+ const store = createStore(rl);
23259
+ return hookStorage.run(store, () => {
23260
+ function cycle(render) {
23261
+ store.handleChange = () => {
23262
+ store.index = 0;
23263
+ render();
23264
+ };
23265
+ store.handleChange();
23266
+ }
23267
+ return cb(cycle);
23268
+ });
23269
+ }
23270
+ function getStore() {
23271
+ const store = hookStorage.getStore();
23272
+ if (!store) throw new HookError("[Inquirer] Hook functions can only be called from within a prompt");
23273
+ return store;
23274
+ }
23275
+ function readline$1() {
23276
+ return getStore().rl;
23277
+ }
23278
+ function withUpdates(fn) {
23279
+ const wrapped = (...args) => {
23280
+ const store = getStore();
23281
+ let shouldUpdate = false;
23282
+ const oldHandleChange = store.handleChange;
23283
+ store.handleChange = () => {
23284
+ shouldUpdate = true;
23285
+ };
23286
+ const returnValue = fn(...args);
23287
+ if (shouldUpdate) oldHandleChange();
23288
+ store.handleChange = oldHandleChange;
23289
+ return returnValue;
23290
+ };
23291
+ return AsyncResource.bind(wrapped);
23292
+ }
23293
+ function withPointer(cb) {
23294
+ const store = getStore();
23295
+ const { index } = store;
23296
+ const returnValue = cb({
23297
+ get() {
23298
+ return store.hooks[index];
23299
+ },
23300
+ set(value) {
23301
+ store.hooks[index] = value;
23302
+ },
23303
+ initialized: index in store.hooks
23304
+ });
23305
+ store.index++;
23306
+ return returnValue;
23307
+ }
23308
+ function handleChange() {
23309
+ getStore().handleChange();
23310
+ }
23311
+ const effectScheduler = {
23312
+ queue(cb) {
23313
+ const store = getStore();
23314
+ const { index } = store;
23315
+ store.hooksEffect.push(() => {
23316
+ store.hooksCleanup[index]?.();
23317
+ const cleanFn = cb(readline$1());
23318
+ if (cleanFn != null && typeof cleanFn !== "function") throw new ValidationError("useEffect return value must be a cleanup function or nothing.");
23319
+ store.hooksCleanup[index] = cleanFn;
23320
+ });
23321
+ },
23322
+ run() {
23323
+ const store = getStore();
23324
+ withUpdates(() => {
23325
+ store.hooksEffect.forEach((effect) => {
23326
+ effect();
23327
+ });
23328
+ store.hooksEffect.length = 0;
23329
+ })();
23330
+ },
23331
+ clearAll() {
23332
+ const store = getStore();
23333
+ store.hooksCleanup.forEach((cleanFn) => {
23334
+ cleanFn?.();
23335
+ });
23336
+ store.hooksEffect.length = 0;
23337
+ store.hooksCleanup.length = 0;
23338
+ }
23339
+ };
23340
+
23341
+ //#endregion
23342
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-state.js
23343
+ function useState(defaultValue) {
23344
+ return withPointer((pointer) => {
23345
+ const setState = AsyncResource.bind(function setState$1(newValue) {
23346
+ if (pointer.get() !== newValue) {
23347
+ pointer.set(newValue);
23348
+ handleChange();
23349
+ }
23350
+ });
23351
+ if (pointer.initialized) return [pointer.get(), setState];
23352
+ const value = typeof defaultValue === "function" ? defaultValue() : defaultValue;
23353
+ pointer.set(value);
23354
+ return [value, setState];
23355
+ });
23356
+ }
23357
+
23358
+ //#endregion
23359
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-effect.js
23360
+ function useEffect(cb, depArray) {
23361
+ withPointer((pointer) => {
23362
+ const oldDeps = pointer.get();
23363
+ if (!Array.isArray(oldDeps) || depArray.some((dep, i$3) => !Object.is(dep, oldDeps[i$3]))) effectScheduler.queue(cb);
23364
+ pointer.set(depArray);
23365
+ });
23366
+ }
23367
+
23368
+ //#endregion
23369
+ //#region node_modules/.pnpm/yoctocolors-cjs@2.1.3/node_modules/yoctocolors-cjs/index.js
23370
+ var require_yoctocolors_cjs = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/yoctocolors-cjs@2.1.3/node_modules/yoctocolors-cjs/index.js": ((exports, module) => {
23371
+ const hasColors = __require("node:tty")?.WriteStream?.prototype?.hasColors?.() ?? false;
23372
+ const format$1 = (open, close) => {
23373
+ if (!hasColors) return (input) => input;
23374
+ const openCode = `\u001B[${open}m`;
23375
+ const closeCode = `\u001B[${close}m`;
23376
+ return (input) => {
23377
+ const string = input + "";
23378
+ let index = string.indexOf(closeCode);
23379
+ if (index === -1) return openCode + string + closeCode;
23380
+ let result = openCode;
23381
+ let lastIndex = 0;
23382
+ const replaceCode = (close === 22 ? closeCode : "") + openCode;
23383
+ while (index !== -1) {
23384
+ result += string.slice(lastIndex, index) + replaceCode;
23385
+ lastIndex = index + closeCode.length;
23386
+ index = string.indexOf(closeCode, lastIndex);
23387
+ }
23388
+ result += string.slice(lastIndex) + closeCode;
23389
+ return result;
23390
+ };
23391
+ };
23392
+ const colors$2 = {};
23393
+ colors$2.reset = format$1(0, 0);
23394
+ colors$2.bold = format$1(1, 22);
23395
+ colors$2.dim = format$1(2, 22);
23396
+ colors$2.italic = format$1(3, 23);
23397
+ colors$2.underline = format$1(4, 24);
23398
+ colors$2.overline = format$1(53, 55);
23399
+ colors$2.inverse = format$1(7, 27);
23400
+ colors$2.hidden = format$1(8, 28);
23401
+ colors$2.strikethrough = format$1(9, 29);
23402
+ colors$2.black = format$1(30, 39);
23403
+ colors$2.red = format$1(31, 39);
23404
+ colors$2.green = format$1(32, 39);
23405
+ colors$2.yellow = format$1(33, 39);
23406
+ colors$2.blue = format$1(34, 39);
23407
+ colors$2.magenta = format$1(35, 39);
23408
+ colors$2.cyan = format$1(36, 39);
23409
+ colors$2.white = format$1(37, 39);
23410
+ colors$2.gray = format$1(90, 39);
23411
+ colors$2.bgBlack = format$1(40, 49);
23412
+ colors$2.bgRed = format$1(41, 49);
23413
+ colors$2.bgGreen = format$1(42, 49);
23414
+ colors$2.bgYellow = format$1(43, 49);
23415
+ colors$2.bgBlue = format$1(44, 49);
23416
+ colors$2.bgMagenta = format$1(45, 49);
23417
+ colors$2.bgCyan = format$1(46, 49);
23418
+ colors$2.bgWhite = format$1(47, 49);
23419
+ colors$2.bgGray = format$1(100, 49);
23420
+ colors$2.redBright = format$1(91, 39);
23421
+ colors$2.greenBright = format$1(92, 39);
23422
+ colors$2.yellowBright = format$1(93, 39);
23423
+ colors$2.blueBright = format$1(94, 39);
23424
+ colors$2.magentaBright = format$1(95, 39);
23425
+ colors$2.cyanBright = format$1(96, 39);
23426
+ colors$2.whiteBright = format$1(97, 39);
23427
+ colors$2.bgRedBright = format$1(101, 49);
23428
+ colors$2.bgGreenBright = format$1(102, 49);
23429
+ colors$2.bgYellowBright = format$1(103, 49);
23430
+ colors$2.bgBlueBright = format$1(104, 49);
23431
+ colors$2.bgMagentaBright = format$1(105, 49);
23432
+ colors$2.bgCyanBright = format$1(106, 49);
23433
+ colors$2.bgWhiteBright = format$1(107, 49);
23434
+ module.exports = colors$2;
23435
+ }) });
23436
+
23437
+ //#endregion
23438
+ //#region node_modules/.pnpm/@inquirer+figures@1.0.15/node_modules/@inquirer/figures/dist/esm/index.js
23439
+ function isUnicodeSupported() {
23440
+ if (process$1.platform !== "win32") return process$1.env["TERM"] !== "linux";
23441
+ return Boolean(process$1.env["WT_SESSION"]) || Boolean(process$1.env["TERMINUS_SUBLIME"]) || process$1.env["ConEmuTask"] === "{cmd::Cmder}" || process$1.env["TERM_PROGRAM"] === "Terminus-Sublime" || process$1.env["TERM_PROGRAM"] === "vscode" || process$1.env["TERM"] === "xterm-256color" || process$1.env["TERM"] === "alacritty" || process$1.env["TERMINAL_EMULATOR"] === "JetBrains-JediTerm";
23442
+ }
23443
+ const common = {
23444
+ circleQuestionMark: "(?)",
23445
+ questionMarkPrefix: "(?)",
23446
+ square: "█",
23447
+ squareDarkShade: "▓",
23448
+ squareMediumShade: "▒",
23449
+ squareLightShade: "░",
23450
+ squareTop: "▀",
23451
+ squareBottom: "▄",
23452
+ squareLeft: "▌",
23453
+ squareRight: "▐",
23454
+ squareCenter: "■",
23455
+ bullet: "●",
23456
+ dot: "․",
23457
+ ellipsis: "…",
23458
+ pointerSmall: "›",
23459
+ triangleUp: "▲",
23460
+ triangleUpSmall: "▴",
23461
+ triangleDown: "▼",
23462
+ triangleDownSmall: "▾",
23463
+ triangleLeftSmall: "◂",
23464
+ triangleRightSmall: "▸",
23465
+ home: "⌂",
23466
+ heart: "♥",
23467
+ musicNote: "♪",
23468
+ musicNoteBeamed: "♫",
23469
+ arrowUp: "↑",
23470
+ arrowDown: "↓",
23471
+ arrowLeft: "←",
23472
+ arrowRight: "→",
23473
+ arrowLeftRight: "↔",
23474
+ arrowUpDown: "↕",
23475
+ almostEqual: "≈",
23476
+ notEqual: "≠",
23477
+ lessOrEqual: "≤",
23478
+ greaterOrEqual: "≥",
23479
+ identical: "≡",
23480
+ infinity: "∞",
23481
+ subscriptZero: "₀",
23482
+ subscriptOne: "₁",
23483
+ subscriptTwo: "₂",
23484
+ subscriptThree: "₃",
23485
+ subscriptFour: "₄",
23486
+ subscriptFive: "₅",
23487
+ subscriptSix: "₆",
23488
+ subscriptSeven: "₇",
23489
+ subscriptEight: "₈",
23490
+ subscriptNine: "₉",
23491
+ oneHalf: "½",
23492
+ oneThird: "⅓",
23493
+ oneQuarter: "¼",
23494
+ oneFifth: "⅕",
23495
+ oneSixth: "⅙",
23496
+ oneEighth: "⅛",
23497
+ twoThirds: "⅔",
23498
+ twoFifths: "⅖",
23499
+ threeQuarters: "¾",
23500
+ threeFifths: "⅗",
23501
+ threeEighths: "⅜",
23502
+ fourFifths: "⅘",
23503
+ fiveSixths: "⅚",
23504
+ fiveEighths: "⅝",
23505
+ sevenEighths: "⅞",
23506
+ line: "─",
23507
+ lineBold: "━",
23508
+ lineDouble: "═",
23509
+ lineDashed0: "┄",
23510
+ lineDashed1: "┅",
23511
+ lineDashed2: "┈",
23512
+ lineDashed3: "┉",
23513
+ lineDashed4: "╌",
23514
+ lineDashed5: "╍",
23515
+ lineDashed6: "╴",
23516
+ lineDashed7: "╶",
23517
+ lineDashed8: "╸",
23518
+ lineDashed9: "╺",
23519
+ lineDashed10: "╼",
23520
+ lineDashed11: "╾",
23521
+ lineDashed12: "−",
23522
+ lineDashed13: "–",
23523
+ lineDashed14: "‐",
23524
+ lineDashed15: "⁃",
23525
+ lineVertical: "│",
23526
+ lineVerticalBold: "┃",
23527
+ lineVerticalDouble: "║",
23528
+ lineVerticalDashed0: "┆",
23529
+ lineVerticalDashed1: "┇",
23530
+ lineVerticalDashed2: "┊",
23531
+ lineVerticalDashed3: "┋",
23532
+ lineVerticalDashed4: "╎",
23533
+ lineVerticalDashed5: "╏",
23534
+ lineVerticalDashed6: "╵",
23535
+ lineVerticalDashed7: "╷",
23536
+ lineVerticalDashed8: "╹",
23537
+ lineVerticalDashed9: "╻",
23538
+ lineVerticalDashed10: "╽",
23539
+ lineVerticalDashed11: "╿",
23540
+ lineDownLeft: "┐",
23541
+ lineDownLeftArc: "╮",
23542
+ lineDownBoldLeftBold: "┓",
23543
+ lineDownBoldLeft: "┒",
23544
+ lineDownLeftBold: "┑",
23545
+ lineDownDoubleLeftDouble: "╗",
23546
+ lineDownDoubleLeft: "╖",
23547
+ lineDownLeftDouble: "╕",
23548
+ lineDownRight: "┌",
23549
+ lineDownRightArc: "╭",
23550
+ lineDownBoldRightBold: "┏",
23551
+ lineDownBoldRight: "┎",
23552
+ lineDownRightBold: "┍",
23553
+ lineDownDoubleRightDouble: "╔",
23554
+ lineDownDoubleRight: "╓",
23555
+ lineDownRightDouble: "╒",
23556
+ lineUpLeft: "┘",
23557
+ lineUpLeftArc: "╯",
23558
+ lineUpBoldLeftBold: "┛",
23559
+ lineUpBoldLeft: "┚",
23560
+ lineUpLeftBold: "┙",
23561
+ lineUpDoubleLeftDouble: "╝",
23562
+ lineUpDoubleLeft: "╜",
23563
+ lineUpLeftDouble: "╛",
23564
+ lineUpRight: "└",
23565
+ lineUpRightArc: "╰",
23566
+ lineUpBoldRightBold: "┗",
23567
+ lineUpBoldRight: "┖",
23568
+ lineUpRightBold: "┕",
23569
+ lineUpDoubleRightDouble: "╚",
23570
+ lineUpDoubleRight: "╙",
23571
+ lineUpRightDouble: "╘",
23572
+ lineUpDownLeft: "┤",
23573
+ lineUpBoldDownBoldLeftBold: "┫",
23574
+ lineUpBoldDownBoldLeft: "┨",
23575
+ lineUpDownLeftBold: "┥",
23576
+ lineUpBoldDownLeftBold: "┩",
23577
+ lineUpDownBoldLeftBold: "┪",
23578
+ lineUpDownBoldLeft: "┧",
23579
+ lineUpBoldDownLeft: "┦",
23580
+ lineUpDoubleDownDoubleLeftDouble: "╣",
23581
+ lineUpDoubleDownDoubleLeft: "╢",
23582
+ lineUpDownLeftDouble: "╡",
23583
+ lineUpDownRight: "├",
23584
+ lineUpBoldDownBoldRightBold: "┣",
23585
+ lineUpBoldDownBoldRight: "┠",
23586
+ lineUpDownRightBold: "┝",
23587
+ lineUpBoldDownRightBold: "┡",
23588
+ lineUpDownBoldRightBold: "┢",
23589
+ lineUpDownBoldRight: "┟",
23590
+ lineUpBoldDownRight: "┞",
23591
+ lineUpDoubleDownDoubleRightDouble: "╠",
23592
+ lineUpDoubleDownDoubleRight: "╟",
23593
+ lineUpDownRightDouble: "╞",
23594
+ lineDownLeftRight: "┬",
23595
+ lineDownBoldLeftBoldRightBold: "┳",
23596
+ lineDownLeftBoldRightBold: "┯",
23597
+ lineDownBoldLeftRight: "┰",
23598
+ lineDownBoldLeftBoldRight: "┱",
23599
+ lineDownBoldLeftRightBold: "┲",
23600
+ lineDownLeftRightBold: "┮",
23601
+ lineDownLeftBoldRight: "┭",
23602
+ lineDownDoubleLeftDoubleRightDouble: "╦",
23603
+ lineDownDoubleLeftRight: "╥",
23604
+ lineDownLeftDoubleRightDouble: "╤",
23605
+ lineUpLeftRight: "┴",
23606
+ lineUpBoldLeftBoldRightBold: "┻",
23607
+ lineUpLeftBoldRightBold: "┷",
23608
+ lineUpBoldLeftRight: "┸",
23609
+ lineUpBoldLeftBoldRight: "┹",
23610
+ lineUpBoldLeftRightBold: "┺",
23611
+ lineUpLeftRightBold: "┶",
23612
+ lineUpLeftBoldRight: "┵",
23613
+ lineUpDoubleLeftDoubleRightDouble: "╩",
23614
+ lineUpDoubleLeftRight: "╨",
23615
+ lineUpLeftDoubleRightDouble: "╧",
23616
+ lineUpDownLeftRight: "┼",
23617
+ lineUpBoldDownBoldLeftBoldRightBold: "╋",
23618
+ lineUpDownBoldLeftBoldRightBold: "╈",
23619
+ lineUpBoldDownLeftBoldRightBold: "╇",
23620
+ lineUpBoldDownBoldLeftRightBold: "╊",
23621
+ lineUpBoldDownBoldLeftBoldRight: "╉",
23622
+ lineUpBoldDownLeftRight: "╀",
23623
+ lineUpDownBoldLeftRight: "╁",
23624
+ lineUpDownLeftBoldRight: "┽",
23625
+ lineUpDownLeftRightBold: "┾",
23626
+ lineUpBoldDownBoldLeftRight: "╂",
23627
+ lineUpDownLeftBoldRightBold: "┿",
23628
+ lineUpBoldDownLeftBoldRight: "╃",
23629
+ lineUpBoldDownLeftRightBold: "╄",
23630
+ lineUpDownBoldLeftBoldRight: "╅",
23631
+ lineUpDownBoldLeftRightBold: "╆",
23632
+ lineUpDoubleDownDoubleLeftDoubleRightDouble: "╬",
23633
+ lineUpDoubleDownDoubleLeftRight: "╫",
23634
+ lineUpDownLeftDoubleRightDouble: "╪",
23635
+ lineCross: "╳",
23636
+ lineBackslash: "╲",
23637
+ lineSlash: "╱"
23638
+ };
23639
+ const specialMainSymbols = {
23640
+ tick: "✔",
23641
+ info: "ℹ",
23642
+ warning: "⚠",
23643
+ cross: "✘",
23644
+ squareSmall: "◻",
23645
+ squareSmallFilled: "◼",
23646
+ circle: "◯",
23647
+ circleFilled: "◉",
23648
+ circleDotted: "◌",
23649
+ circleDouble: "◎",
23650
+ circleCircle: "ⓞ",
23651
+ circleCross: "ⓧ",
23652
+ circlePipe: "Ⓘ",
23653
+ radioOn: "◉",
23654
+ radioOff: "◯",
23655
+ checkboxOn: "☒",
23656
+ checkboxOff: "☐",
23657
+ checkboxCircleOn: "ⓧ",
23658
+ checkboxCircleOff: "Ⓘ",
23659
+ pointer: "❯",
23660
+ triangleUpOutline: "△",
23661
+ triangleLeft: "◀",
23662
+ triangleRight: "▶",
23663
+ lozenge: "◆",
23664
+ lozengeOutline: "◇",
23665
+ hamburger: "☰",
23666
+ smiley: "㋡",
23667
+ mustache: "෴",
23668
+ star: "★",
23669
+ play: "▶",
23670
+ nodejs: "⬢",
23671
+ oneSeventh: "⅐",
23672
+ oneNinth: "⅑",
23673
+ oneTenth: "⅒"
23674
+ };
23675
+ const specialFallbackSymbols = {
23676
+ tick: "√",
23677
+ info: "i",
23678
+ warning: "‼",
23679
+ cross: "×",
23680
+ squareSmall: "□",
23681
+ squareSmallFilled: "■",
23682
+ circle: "( )",
23683
+ circleFilled: "(*)",
23684
+ circleDotted: "( )",
23685
+ circleDouble: "( )",
23686
+ circleCircle: "(○)",
23687
+ circleCross: "(×)",
23688
+ circlePipe: "(│)",
23689
+ radioOn: "(*)",
23690
+ radioOff: "( )",
23691
+ checkboxOn: "[×]",
23692
+ checkboxOff: "[ ]",
23693
+ checkboxCircleOn: "(×)",
23694
+ checkboxCircleOff: "( )",
23695
+ pointer: ">",
23696
+ triangleUpOutline: "∆",
23697
+ triangleLeft: "◄",
23698
+ triangleRight: "►",
23699
+ lozenge: "♦",
23700
+ lozengeOutline: "◊",
23701
+ hamburger: "≡",
23702
+ smiley: "☺",
23703
+ mustache: "┌─┐",
23704
+ star: "✶",
23705
+ play: "►",
23706
+ nodejs: "♦",
23707
+ oneSeventh: "1/7",
23708
+ oneNinth: "1/9",
23709
+ oneTenth: "1/10"
23710
+ };
23711
+ const mainSymbols = {
23712
+ ...common,
23713
+ ...specialMainSymbols
23714
+ };
23715
+ const fallbackSymbols = {
23716
+ ...common,
23717
+ ...specialFallbackSymbols
23718
+ };
23719
+ const shouldUseMain = isUnicodeSupported();
23720
+ const figures = shouldUseMain ? mainSymbols : fallbackSymbols;
23721
+ var esm_default$1 = figures;
23722
+ const replacements = Object.entries(specialMainSymbols);
23723
+
23724
+ //#endregion
23725
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/theme.js
23726
+ var import_yoctocolors_cjs$1 = /* @__PURE__ */ __toESM(require_yoctocolors_cjs(), 1);
23727
+ const defaultTheme = {
23728
+ prefix: {
23729
+ idle: import_yoctocolors_cjs$1.default.blue("?"),
23730
+ done: import_yoctocolors_cjs$1.default.green(esm_default$1.tick)
23731
+ },
23732
+ spinner: {
23733
+ interval: 80,
23734
+ frames: [
23735
+ "⠋",
23736
+ "⠙",
23737
+ "⠹",
23738
+ "⠸",
23739
+ "⠼",
23740
+ "⠴",
23741
+ "⠦",
23742
+ "⠧",
23743
+ "⠇",
23744
+ "⠏"
23745
+ ].map((frame) => import_yoctocolors_cjs$1.default.yellow(frame))
23746
+ },
23747
+ style: {
23748
+ answer: import_yoctocolors_cjs$1.default.cyan,
23749
+ message: import_yoctocolors_cjs$1.default.bold,
23750
+ error: (text) => import_yoctocolors_cjs$1.default.red(`> ${text}`),
23751
+ defaultAnswer: (text) => import_yoctocolors_cjs$1.default.dim(`(${text})`),
23752
+ help: import_yoctocolors_cjs$1.default.dim,
23753
+ highlight: import_yoctocolors_cjs$1.default.cyan,
23754
+ key: (text) => import_yoctocolors_cjs$1.default.cyan(import_yoctocolors_cjs$1.default.bold(`<${text}>`))
23755
+ }
23756
+ };
23757
+
23758
+ //#endregion
23759
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/make-theme.js
23760
+ function isPlainObject(value) {
23761
+ if (typeof value !== "object" || value === null) return false;
23762
+ let proto = value;
23763
+ while (Object.getPrototypeOf(proto) !== null) proto = Object.getPrototypeOf(proto);
23764
+ return Object.getPrototypeOf(value) === proto;
23765
+ }
23766
+ function deepMerge(...objects) {
23767
+ const output = {};
23768
+ for (const obj of objects) for (const [key$1, value] of Object.entries(obj)) {
23769
+ const prevValue = output[key$1];
23770
+ output[key$1] = isPlainObject(prevValue) && isPlainObject(value) ? deepMerge(prevValue, value) : value;
23771
+ }
23772
+ return output;
23773
+ }
23774
+ function makeTheme(...themes) {
23775
+ return deepMerge(...[defaultTheme, ...themes.filter((theme) => theme != null)]);
23776
+ }
23777
+
23778
+ //#endregion
23779
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-prefix.js
23780
+ function usePrefix({ status: status$1 = "idle", theme }) {
23781
+ const [showLoader, setShowLoader] = useState(false);
23782
+ const [tick, setTick] = useState(0);
23783
+ const { prefix, spinner } = makeTheme(theme);
23784
+ useEffect(() => {
23785
+ if (status$1 === "loading") {
23786
+ let tickInterval;
23787
+ let inc = -1;
23788
+ const delayTimeout = setTimeout(() => {
23789
+ setShowLoader(true);
23790
+ tickInterval = setInterval(() => {
23791
+ inc = inc + 1;
23792
+ setTick(inc % spinner.frames.length);
23793
+ }, spinner.interval);
23794
+ }, 300);
23795
+ return () => {
23796
+ clearTimeout(delayTimeout);
23797
+ clearInterval(tickInterval);
23798
+ };
23799
+ } else setShowLoader(false);
23800
+ }, [status$1]);
23801
+ if (showLoader) return spinner.frames[tick];
23802
+ return typeof prefix === "string" ? prefix : prefix[status$1 === "loading" ? "idle" : status$1] ?? prefix["idle"];
23803
+ }
23804
+
23805
+ //#endregion
23806
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-memo.js
23807
+ function useMemo(fn, dependencies) {
23808
+ return withPointer((pointer) => {
23809
+ const prev = pointer.get();
23810
+ if (!prev || prev.dependencies.length !== dependencies.length || prev.dependencies.some((dep, i$3) => dep !== dependencies[i$3])) {
23811
+ const value = fn();
23812
+ pointer.set({
23813
+ value,
23814
+ dependencies
23815
+ });
23816
+ return value;
23817
+ }
23818
+ return prev.value;
23819
+ });
23820
+ }
23821
+
23822
+ //#endregion
23823
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-ref.js
23824
+ function useRef(val) {
23825
+ return useState({ current: val })[0];
23826
+ }
23827
+
23828
+ //#endregion
23829
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/use-keypress.js
23830
+ function useKeypress(userHandler) {
23831
+ const signal = useRef(userHandler);
23832
+ signal.current = userHandler;
23833
+ useEffect((rl) => {
23834
+ let ignore = false;
23835
+ const handler = withUpdates((_input, event) => {
23836
+ if (ignore) return;
23837
+ signal.current(event, rl);
23838
+ });
23839
+ rl.input.on("keypress", handler);
23840
+ return () => {
23841
+ ignore = true;
23842
+ rl.input.removeListener("keypress", handler);
23843
+ };
23844
+ }, []);
23845
+ }
23846
+
23847
+ //#endregion
23848
+ //#region node_modules/.pnpm/cli-width@4.1.0/node_modules/cli-width/index.js
23849
+ var require_cli_width = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/cli-width@4.1.0/node_modules/cli-width/index.js": ((exports, module) => {
23850
+ module.exports = cliWidth$1;
23851
+ function normalizeOpts(options) {
23852
+ const defaultOpts = {
23853
+ defaultWidth: 0,
23854
+ output: process.stdout,
23855
+ tty: __require("tty")
23856
+ };
23857
+ if (!options) return defaultOpts;
23858
+ Object.keys(defaultOpts).forEach(function(key$1) {
23859
+ if (!options[key$1]) options[key$1] = defaultOpts[key$1];
23860
+ });
23861
+ return options;
23862
+ }
23863
+ function cliWidth$1(options) {
23864
+ const opts = normalizeOpts(options);
23865
+ if (opts.output.getWindowSize) return opts.output.getWindowSize()[0] || opts.defaultWidth;
23866
+ if (opts.tty.getWindowSize) return opts.tty.getWindowSize()[1] || opts.defaultWidth;
23867
+ if (opts.output.columns) return opts.output.columns;
23868
+ if (process.env.CLI_WIDTH) {
23869
+ const width = parseInt(process.env.CLI_WIDTH, 10);
23870
+ if (!isNaN(width) && width !== 0) return width;
23871
+ }
23872
+ return opts.defaultWidth;
23873
+ }
23874
+ }) });
23875
+
23876
+ //#endregion
23877
+ //#region node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js
23878
+ var require_ansi_regex = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js": ((exports, module) => {
23879
+ module.exports = ({ onlyFirst = false } = {}) => {
23880
+ const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
23881
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
23882
+ };
23883
+ }) });
23884
+
23885
+ //#endregion
23886
+ //#region node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js
23887
+ var require_strip_ansi = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js": ((exports, module) => {
23888
+ const ansiRegex = require_ansi_regex();
23889
+ module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string;
23890
+ }) });
23891
+
23892
+ //#endregion
23893
+ //#region node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js
23894
+ var require_is_fullwidth_code_point = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/is-fullwidth-code-point@3.0.0/node_modules/is-fullwidth-code-point/index.js": ((exports, module) => {
23895
+ const isFullwidthCodePoint$1 = (codePoint) => {
23896
+ if (Number.isNaN(codePoint)) return false;
23897
+ if (codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141)) return true;
23898
+ return false;
23899
+ };
23900
+ module.exports = isFullwidthCodePoint$1;
23901
+ module.exports.default = isFullwidthCodePoint$1;
23902
+ }) });
23903
+
23904
+ //#endregion
23905
+ //#region node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js
23906
+ var require_emoji_regex = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/emoji-regex@8.0.0/node_modules/emoji-regex/index.js": ((exports, module) => {
23907
+ module.exports = function() {
23908
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
23909
+ };
23910
+ }) });
23911
+
23912
+ //#endregion
23913
+ //#region node_modules/.pnpm/string-width@4.2.3/node_modules/string-width/index.js
23914
+ var require_string_width = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/string-width@4.2.3/node_modules/string-width/index.js": ((exports, module) => {
23915
+ const stripAnsi$1 = require_strip_ansi();
23916
+ const isFullwidthCodePoint = require_is_fullwidth_code_point();
23917
+ const emojiRegex = require_emoji_regex();
23918
+ const stringWidth$1 = (string) => {
23919
+ if (typeof string !== "string" || string.length === 0) return 0;
23920
+ string = stripAnsi$1(string);
23921
+ if (string.length === 0) return 0;
23922
+ string = string.replace(emojiRegex(), " ");
23923
+ let width = 0;
23924
+ for (let i$3 = 0; i$3 < string.length; i$3++) {
23925
+ const code = string.codePointAt(i$3);
23926
+ if (code <= 31 || code >= 127 && code <= 159) continue;
23927
+ if (code >= 768 && code <= 879) continue;
23928
+ if (code > 65535) i$3++;
23929
+ width += isFullwidthCodePoint(code) ? 2 : 1;
23930
+ }
23931
+ return width;
23932
+ };
23933
+ module.exports = stringWidth$1;
23934
+ module.exports.default = stringWidth$1;
23935
+ }) });
23936
+
23937
+ //#endregion
23938
+ //#region node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js
23939
+ var require_color_name = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js": ((exports, module) => {
23940
+ module.exports = {
23941
+ "aliceblue": [
23942
+ 240,
23943
+ 248,
23944
+ 255
23945
+ ],
23946
+ "antiquewhite": [
23947
+ 250,
23948
+ 235,
23949
+ 215
23950
+ ],
23951
+ "aqua": [
23952
+ 0,
23953
+ 255,
23954
+ 255
23955
+ ],
23956
+ "aquamarine": [
23957
+ 127,
23958
+ 255,
23959
+ 212
23960
+ ],
23961
+ "azure": [
23962
+ 240,
23963
+ 255,
23964
+ 255
23965
+ ],
23966
+ "beige": [
23967
+ 245,
23968
+ 245,
23969
+ 220
23970
+ ],
23971
+ "bisque": [
23972
+ 255,
23973
+ 228,
23974
+ 196
23975
+ ],
23976
+ "black": [
23977
+ 0,
23978
+ 0,
23979
+ 0
23980
+ ],
23981
+ "blanchedalmond": [
23982
+ 255,
23983
+ 235,
23984
+ 205
23985
+ ],
23986
+ "blue": [
23987
+ 0,
23988
+ 0,
23989
+ 255
23990
+ ],
23991
+ "blueviolet": [
23992
+ 138,
23993
+ 43,
23994
+ 226
23995
+ ],
23996
+ "brown": [
23997
+ 165,
23998
+ 42,
23999
+ 42
24000
+ ],
24001
+ "burlywood": [
24002
+ 222,
24003
+ 184,
24004
+ 135
24005
+ ],
24006
+ "cadetblue": [
24007
+ 95,
24008
+ 158,
24009
+ 160
24010
+ ],
24011
+ "chartreuse": [
24012
+ 127,
24013
+ 255,
24014
+ 0
24015
+ ],
24016
+ "chocolate": [
24017
+ 210,
24018
+ 105,
24019
+ 30
24020
+ ],
24021
+ "coral": [
24022
+ 255,
24023
+ 127,
24024
+ 80
24025
+ ],
24026
+ "cornflowerblue": [
24027
+ 100,
24028
+ 149,
24029
+ 237
24030
+ ],
24031
+ "cornsilk": [
24032
+ 255,
24033
+ 248,
24034
+ 220
24035
+ ],
24036
+ "crimson": [
24037
+ 220,
24038
+ 20,
24039
+ 60
24040
+ ],
24041
+ "cyan": [
24042
+ 0,
24043
+ 255,
24044
+ 255
24045
+ ],
24046
+ "darkblue": [
24047
+ 0,
24048
+ 0,
24049
+ 139
24050
+ ],
24051
+ "darkcyan": [
24052
+ 0,
24053
+ 139,
24054
+ 139
24055
+ ],
24056
+ "darkgoldenrod": [
24057
+ 184,
24058
+ 134,
24059
+ 11
24060
+ ],
24061
+ "darkgray": [
24062
+ 169,
24063
+ 169,
24064
+ 169
24065
+ ],
24066
+ "darkgreen": [
24067
+ 0,
24068
+ 100,
24069
+ 0
24070
+ ],
24071
+ "darkgrey": [
24072
+ 169,
24073
+ 169,
24074
+ 169
24075
+ ],
24076
+ "darkkhaki": [
24077
+ 189,
24078
+ 183,
24079
+ 107
24080
+ ],
24081
+ "darkmagenta": [
24082
+ 139,
24083
+ 0,
24084
+ 139
24085
+ ],
24086
+ "darkolivegreen": [
24087
+ 85,
24088
+ 107,
24089
+ 47
24090
+ ],
24091
+ "darkorange": [
24092
+ 255,
24093
+ 140,
24094
+ 0
24095
+ ],
24096
+ "darkorchid": [
24097
+ 153,
24098
+ 50,
24099
+ 204
24100
+ ],
24101
+ "darkred": [
24102
+ 139,
24103
+ 0,
24104
+ 0
24105
+ ],
24106
+ "darksalmon": [
24107
+ 233,
24108
+ 150,
24109
+ 122
24110
+ ],
24111
+ "darkseagreen": [
24112
+ 143,
24113
+ 188,
24114
+ 143
24115
+ ],
24116
+ "darkslateblue": [
24117
+ 72,
24118
+ 61,
24119
+ 139
24120
+ ],
24121
+ "darkslategray": [
24122
+ 47,
24123
+ 79,
24124
+ 79
24125
+ ],
24126
+ "darkslategrey": [
24127
+ 47,
24128
+ 79,
24129
+ 79
24130
+ ],
24131
+ "darkturquoise": [
24132
+ 0,
24133
+ 206,
24134
+ 209
24135
+ ],
24136
+ "darkviolet": [
24137
+ 148,
24138
+ 0,
24139
+ 211
24140
+ ],
24141
+ "deeppink": [
24142
+ 255,
24143
+ 20,
24144
+ 147
24145
+ ],
24146
+ "deepskyblue": [
24147
+ 0,
24148
+ 191,
24149
+ 255
24150
+ ],
24151
+ "dimgray": [
24152
+ 105,
24153
+ 105,
24154
+ 105
24155
+ ],
24156
+ "dimgrey": [
24157
+ 105,
24158
+ 105,
24159
+ 105
24160
+ ],
24161
+ "dodgerblue": [
24162
+ 30,
24163
+ 144,
24164
+ 255
24165
+ ],
24166
+ "firebrick": [
24167
+ 178,
24168
+ 34,
24169
+ 34
24170
+ ],
24171
+ "floralwhite": [
24172
+ 255,
24173
+ 250,
24174
+ 240
24175
+ ],
24176
+ "forestgreen": [
24177
+ 34,
24178
+ 139,
24179
+ 34
24180
+ ],
24181
+ "fuchsia": [
24182
+ 255,
24183
+ 0,
24184
+ 255
24185
+ ],
24186
+ "gainsboro": [
24187
+ 220,
24188
+ 220,
24189
+ 220
24190
+ ],
24191
+ "ghostwhite": [
24192
+ 248,
24193
+ 248,
24194
+ 255
24195
+ ],
24196
+ "gold": [
24197
+ 255,
24198
+ 215,
24199
+ 0
24200
+ ],
24201
+ "goldenrod": [
24202
+ 218,
24203
+ 165,
24204
+ 32
24205
+ ],
24206
+ "gray": [
24207
+ 128,
24208
+ 128,
24209
+ 128
24210
+ ],
24211
+ "green": [
24212
+ 0,
24213
+ 128,
24214
+ 0
24215
+ ],
24216
+ "greenyellow": [
24217
+ 173,
24218
+ 255,
24219
+ 47
24220
+ ],
24221
+ "grey": [
24222
+ 128,
24223
+ 128,
24224
+ 128
24225
+ ],
24226
+ "honeydew": [
24227
+ 240,
24228
+ 255,
24229
+ 240
24230
+ ],
24231
+ "hotpink": [
24232
+ 255,
24233
+ 105,
24234
+ 180
24235
+ ],
24236
+ "indianred": [
24237
+ 205,
24238
+ 92,
24239
+ 92
24240
+ ],
24241
+ "indigo": [
24242
+ 75,
24243
+ 0,
24244
+ 130
24245
+ ],
24246
+ "ivory": [
24247
+ 255,
24248
+ 255,
24249
+ 240
24250
+ ],
24251
+ "khaki": [
24252
+ 240,
24253
+ 230,
24254
+ 140
24255
+ ],
24256
+ "lavender": [
24257
+ 230,
24258
+ 230,
24259
+ 250
24260
+ ],
24261
+ "lavenderblush": [
24262
+ 255,
24263
+ 240,
24264
+ 245
24265
+ ],
24266
+ "lawngreen": [
24267
+ 124,
24268
+ 252,
24269
+ 0
24270
+ ],
24271
+ "lemonchiffon": [
24272
+ 255,
24273
+ 250,
24274
+ 205
24275
+ ],
24276
+ "lightblue": [
24277
+ 173,
24278
+ 216,
24279
+ 230
24280
+ ],
24281
+ "lightcoral": [
24282
+ 240,
24283
+ 128,
24284
+ 128
24285
+ ],
24286
+ "lightcyan": [
24287
+ 224,
24288
+ 255,
24289
+ 255
24290
+ ],
24291
+ "lightgoldenrodyellow": [
24292
+ 250,
24293
+ 250,
24294
+ 210
24295
+ ],
24296
+ "lightgray": [
24297
+ 211,
24298
+ 211,
24299
+ 211
24300
+ ],
24301
+ "lightgreen": [
24302
+ 144,
24303
+ 238,
24304
+ 144
24305
+ ],
24306
+ "lightgrey": [
24307
+ 211,
24308
+ 211,
24309
+ 211
24310
+ ],
24311
+ "lightpink": [
24312
+ 255,
24313
+ 182,
24314
+ 193
24315
+ ],
24316
+ "lightsalmon": [
24317
+ 255,
24318
+ 160,
24319
+ 122
24320
+ ],
24321
+ "lightseagreen": [
24322
+ 32,
24323
+ 178,
24324
+ 170
24325
+ ],
24326
+ "lightskyblue": [
24327
+ 135,
24328
+ 206,
24329
+ 250
24330
+ ],
24331
+ "lightslategray": [
24332
+ 119,
24333
+ 136,
24334
+ 153
24335
+ ],
24336
+ "lightslategrey": [
24337
+ 119,
24338
+ 136,
24339
+ 153
24340
+ ],
24341
+ "lightsteelblue": [
24342
+ 176,
24343
+ 196,
24344
+ 222
24345
+ ],
24346
+ "lightyellow": [
24347
+ 255,
24348
+ 255,
24349
+ 224
24350
+ ],
24351
+ "lime": [
24352
+ 0,
24353
+ 255,
24354
+ 0
24355
+ ],
24356
+ "limegreen": [
24357
+ 50,
24358
+ 205,
24359
+ 50
24360
+ ],
24361
+ "linen": [
24362
+ 250,
24363
+ 240,
24364
+ 230
24365
+ ],
24366
+ "magenta": [
24367
+ 255,
24368
+ 0,
24369
+ 255
24370
+ ],
24371
+ "maroon": [
24372
+ 128,
24373
+ 0,
24374
+ 0
24375
+ ],
24376
+ "mediumaquamarine": [
24377
+ 102,
24378
+ 205,
24379
+ 170
24380
+ ],
24381
+ "mediumblue": [
24382
+ 0,
24383
+ 0,
24384
+ 205
24385
+ ],
24386
+ "mediumorchid": [
24387
+ 186,
24388
+ 85,
24389
+ 211
24390
+ ],
24391
+ "mediumpurple": [
24392
+ 147,
24393
+ 112,
24394
+ 219
24395
+ ],
24396
+ "mediumseagreen": [
24397
+ 60,
24398
+ 179,
24399
+ 113
24400
+ ],
24401
+ "mediumslateblue": [
24402
+ 123,
24403
+ 104,
24404
+ 238
24405
+ ],
24406
+ "mediumspringgreen": [
24407
+ 0,
24408
+ 250,
24409
+ 154
24410
+ ],
24411
+ "mediumturquoise": [
24412
+ 72,
24413
+ 209,
24414
+ 204
24415
+ ],
24416
+ "mediumvioletred": [
24417
+ 199,
24418
+ 21,
24419
+ 133
24420
+ ],
24421
+ "midnightblue": [
24422
+ 25,
24423
+ 25,
24424
+ 112
24425
+ ],
24426
+ "mintcream": [
24427
+ 245,
24428
+ 255,
24429
+ 250
24430
+ ],
24431
+ "mistyrose": [
24432
+ 255,
24433
+ 228,
24434
+ 225
24435
+ ],
24436
+ "moccasin": [
24437
+ 255,
24438
+ 228,
24439
+ 181
24440
+ ],
24441
+ "navajowhite": [
24442
+ 255,
24443
+ 222,
24444
+ 173
24445
+ ],
24446
+ "navy": [
24447
+ 0,
24448
+ 0,
24449
+ 128
24450
+ ],
24451
+ "oldlace": [
24452
+ 253,
24453
+ 245,
24454
+ 230
24455
+ ],
24456
+ "olive": [
24457
+ 128,
24458
+ 128,
24459
+ 0
24460
+ ],
24461
+ "olivedrab": [
24462
+ 107,
24463
+ 142,
24464
+ 35
24465
+ ],
24466
+ "orange": [
24467
+ 255,
24468
+ 165,
24469
+ 0
24470
+ ],
24471
+ "orangered": [
24472
+ 255,
24473
+ 69,
24474
+ 0
24475
+ ],
24476
+ "orchid": [
24477
+ 218,
24478
+ 112,
24479
+ 214
24480
+ ],
24481
+ "palegoldenrod": [
24482
+ 238,
24483
+ 232,
24484
+ 170
24485
+ ],
24486
+ "palegreen": [
24487
+ 152,
24488
+ 251,
24489
+ 152
24490
+ ],
24491
+ "paleturquoise": [
24492
+ 175,
24493
+ 238,
24494
+ 238
24495
+ ],
24496
+ "palevioletred": [
24497
+ 219,
24498
+ 112,
24499
+ 147
24500
+ ],
24501
+ "papayawhip": [
24502
+ 255,
24503
+ 239,
24504
+ 213
24505
+ ],
24506
+ "peachpuff": [
24507
+ 255,
24508
+ 218,
24509
+ 185
24510
+ ],
24511
+ "peru": [
24512
+ 205,
24513
+ 133,
24514
+ 63
24515
+ ],
24516
+ "pink": [
24517
+ 255,
24518
+ 192,
24519
+ 203
24520
+ ],
24521
+ "plum": [
24522
+ 221,
24523
+ 160,
24524
+ 221
24525
+ ],
24526
+ "powderblue": [
24527
+ 176,
24528
+ 224,
24529
+ 230
24530
+ ],
24531
+ "purple": [
24532
+ 128,
24533
+ 0,
24534
+ 128
24535
+ ],
24536
+ "rebeccapurple": [
24537
+ 102,
24538
+ 51,
24539
+ 153
24540
+ ],
24541
+ "red": [
24542
+ 255,
24543
+ 0,
24544
+ 0
24545
+ ],
24546
+ "rosybrown": [
24547
+ 188,
24548
+ 143,
24549
+ 143
24550
+ ],
24551
+ "royalblue": [
24552
+ 65,
24553
+ 105,
24554
+ 225
24555
+ ],
24556
+ "saddlebrown": [
24557
+ 139,
24558
+ 69,
24559
+ 19
24560
+ ],
24561
+ "salmon": [
24562
+ 250,
24563
+ 128,
24564
+ 114
24565
+ ],
24566
+ "sandybrown": [
24567
+ 244,
24568
+ 164,
24569
+ 96
24570
+ ],
24571
+ "seagreen": [
24572
+ 46,
24573
+ 139,
24574
+ 87
24575
+ ],
24576
+ "seashell": [
24577
+ 255,
24578
+ 245,
24579
+ 238
24580
+ ],
24581
+ "sienna": [
24582
+ 160,
24583
+ 82,
24584
+ 45
24585
+ ],
24586
+ "silver": [
24587
+ 192,
24588
+ 192,
24589
+ 192
24590
+ ],
24591
+ "skyblue": [
24592
+ 135,
24593
+ 206,
24594
+ 235
24595
+ ],
24596
+ "slateblue": [
24597
+ 106,
24598
+ 90,
24599
+ 205
24600
+ ],
24601
+ "slategray": [
24602
+ 112,
24603
+ 128,
24604
+ 144
24605
+ ],
24606
+ "slategrey": [
24607
+ 112,
24608
+ 128,
24609
+ 144
24610
+ ],
24611
+ "snow": [
24612
+ 255,
24613
+ 250,
24614
+ 250
24615
+ ],
24616
+ "springgreen": [
24617
+ 0,
24618
+ 255,
24619
+ 127
24620
+ ],
24621
+ "steelblue": [
24622
+ 70,
24623
+ 130,
24624
+ 180
24625
+ ],
24626
+ "tan": [
24627
+ 210,
24628
+ 180,
24629
+ 140
24630
+ ],
24631
+ "teal": [
24632
+ 0,
24633
+ 128,
24634
+ 128
24635
+ ],
24636
+ "thistle": [
24637
+ 216,
24638
+ 191,
24639
+ 216
24640
+ ],
24641
+ "tomato": [
24642
+ 255,
24643
+ 99,
24644
+ 71
24645
+ ],
24646
+ "turquoise": [
24647
+ 64,
24648
+ 224,
24649
+ 208
24650
+ ],
24651
+ "violet": [
24652
+ 238,
24653
+ 130,
24654
+ 238
24655
+ ],
24656
+ "wheat": [
24657
+ 245,
24658
+ 222,
24659
+ 179
24660
+ ],
24661
+ "white": [
24662
+ 255,
24663
+ 255,
24664
+ 255
24665
+ ],
24666
+ "whitesmoke": [
24667
+ 245,
24668
+ 245,
24669
+ 245
24670
+ ],
24671
+ "yellow": [
24672
+ 255,
24673
+ 255,
24674
+ 0
24675
+ ],
24676
+ "yellowgreen": [
24677
+ 154,
24678
+ 205,
24679
+ 50
24680
+ ]
24681
+ };
24682
+ }) });
24683
+
24684
+ //#endregion
24685
+ //#region node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js
24686
+ var require_conversions = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js": ((exports, module) => {
24687
+ const cssKeywords = require_color_name();
24688
+ const reverseKeywords = {};
24689
+ for (const key$1 of Object.keys(cssKeywords)) reverseKeywords[cssKeywords[key$1]] = key$1;
24690
+ const convert$1 = {
24691
+ rgb: {
24692
+ channels: 3,
24693
+ labels: "rgb"
24694
+ },
24695
+ hsl: {
24696
+ channels: 3,
24697
+ labels: "hsl"
24698
+ },
24699
+ hsv: {
24700
+ channels: 3,
24701
+ labels: "hsv"
24702
+ },
24703
+ hwb: {
24704
+ channels: 3,
24705
+ labels: "hwb"
24706
+ },
24707
+ cmyk: {
24708
+ channels: 4,
24709
+ labels: "cmyk"
24710
+ },
24711
+ xyz: {
24712
+ channels: 3,
24713
+ labels: "xyz"
24714
+ },
24715
+ lab: {
24716
+ channels: 3,
24717
+ labels: "lab"
24718
+ },
24719
+ lch: {
24720
+ channels: 3,
24721
+ labels: "lch"
24722
+ },
24723
+ hex: {
24724
+ channels: 1,
24725
+ labels: ["hex"]
24726
+ },
24727
+ keyword: {
24728
+ channels: 1,
24729
+ labels: ["keyword"]
24730
+ },
24731
+ ansi16: {
24732
+ channels: 1,
24733
+ labels: ["ansi16"]
24734
+ },
24735
+ ansi256: {
24736
+ channels: 1,
24737
+ labels: ["ansi256"]
24738
+ },
24739
+ hcg: {
24740
+ channels: 3,
24741
+ labels: [
24742
+ "h",
24743
+ "c",
24744
+ "g"
24745
+ ]
24746
+ },
24747
+ apple: {
24748
+ channels: 3,
24749
+ labels: [
24750
+ "r16",
24751
+ "g16",
24752
+ "b16"
24753
+ ]
24754
+ },
24755
+ gray: {
24756
+ channels: 1,
24757
+ labels: ["gray"]
24758
+ }
24759
+ };
24760
+ module.exports = convert$1;
24761
+ for (const model of Object.keys(convert$1)) {
24762
+ if (!("channels" in convert$1[model])) throw new Error("missing channels property: " + model);
24763
+ if (!("labels" in convert$1[model])) throw new Error("missing channel labels property: " + model);
24764
+ if (convert$1[model].labels.length !== convert$1[model].channels) throw new Error("channel and label counts mismatch: " + model);
24765
+ const { channels, labels } = convert$1[model];
24766
+ delete convert$1[model].channels;
24767
+ delete convert$1[model].labels;
24768
+ Object.defineProperty(convert$1[model], "channels", { value: channels });
24769
+ Object.defineProperty(convert$1[model], "labels", { value: labels });
24770
+ }
24771
+ convert$1.rgb.hsl = function(rgb) {
24772
+ const r = rgb[0] / 255;
24773
+ const g = rgb[1] / 255;
24774
+ const b = rgb[2] / 255;
24775
+ const min = Math.min(r, g, b);
24776
+ const max = Math.max(r, g, b);
24777
+ const delta = max - min;
24778
+ let h;
24779
+ let s;
24780
+ if (max === min) h = 0;
24781
+ else if (r === max) h = (g - b) / delta;
24782
+ else if (g === max) h = 2 + (b - r) / delta;
24783
+ else if (b === max) h = 4 + (r - g) / delta;
24784
+ h = Math.min(h * 60, 360);
24785
+ if (h < 0) h += 360;
24786
+ const l = (min + max) / 2;
24787
+ if (max === min) s = 0;
24788
+ else if (l <= .5) s = delta / (max + min);
24789
+ else s = delta / (2 - max - min);
24790
+ return [
24791
+ h,
24792
+ s * 100,
24793
+ l * 100
24794
+ ];
24795
+ };
24796
+ convert$1.rgb.hsv = function(rgb) {
24797
+ let rdif;
24798
+ let gdif;
24799
+ let bdif;
24800
+ let h;
24801
+ let s;
24802
+ const r = rgb[0] / 255;
24803
+ const g = rgb[1] / 255;
24804
+ const b = rgb[2] / 255;
24805
+ const v = Math.max(r, g, b);
24806
+ const diff = v - Math.min(r, g, b);
24807
+ const diffc = function(c) {
24808
+ return (v - c) / 6 / diff + 1 / 2;
24809
+ };
24810
+ if (diff === 0) {
24811
+ h = 0;
24812
+ s = 0;
24813
+ } else {
24814
+ s = diff / v;
24815
+ rdif = diffc(r);
24816
+ gdif = diffc(g);
24817
+ bdif = diffc(b);
24818
+ if (r === v) h = bdif - gdif;
24819
+ else if (g === v) h = 1 / 3 + rdif - bdif;
24820
+ else if (b === v) h = 2 / 3 + gdif - rdif;
24821
+ if (h < 0) h += 1;
24822
+ else if (h > 1) h -= 1;
24823
+ }
24824
+ return [
24825
+ h * 360,
24826
+ s * 100,
24827
+ v * 100
24828
+ ];
24829
+ };
24830
+ convert$1.rgb.hwb = function(rgb) {
24831
+ const r = rgb[0];
24832
+ const g = rgb[1];
24833
+ let b = rgb[2];
24834
+ const h = convert$1.rgb.hsl(rgb)[0];
24835
+ const w = 1 / 255 * Math.min(r, Math.min(g, b));
24836
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
24837
+ return [
24838
+ h,
24839
+ w * 100,
24840
+ b * 100
24841
+ ];
24842
+ };
24843
+ convert$1.rgb.cmyk = function(rgb) {
24844
+ const r = rgb[0] / 255;
24845
+ const g = rgb[1] / 255;
24846
+ const b = rgb[2] / 255;
24847
+ const k = Math.min(1 - r, 1 - g, 1 - b);
24848
+ const c = (1 - r - k) / (1 - k) || 0;
24849
+ const m = (1 - g - k) / (1 - k) || 0;
24850
+ const y = (1 - b - k) / (1 - k) || 0;
24851
+ return [
24852
+ c * 100,
24853
+ m * 100,
24854
+ y * 100,
24855
+ k * 100
24856
+ ];
24857
+ };
24858
+ function comparativeDistance(x, y) {
24859
+ return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;
24860
+ }
24861
+ convert$1.rgb.keyword = function(rgb) {
24862
+ const reversed = reverseKeywords[rgb];
24863
+ if (reversed) return reversed;
24864
+ let currentClosestDistance = Infinity;
24865
+ let currentClosestKeyword;
24866
+ for (const keyword of Object.keys(cssKeywords)) {
24867
+ const value = cssKeywords[keyword];
24868
+ const distance = comparativeDistance(rgb, value);
24869
+ if (distance < currentClosestDistance) {
24870
+ currentClosestDistance = distance;
24871
+ currentClosestKeyword = keyword;
24872
+ }
24873
+ }
24874
+ return currentClosestKeyword;
24875
+ };
24876
+ convert$1.keyword.rgb = function(keyword) {
24877
+ return cssKeywords[keyword];
24878
+ };
24879
+ convert$1.rgb.xyz = function(rgb) {
24880
+ let r = rgb[0] / 255;
24881
+ let g = rgb[1] / 255;
24882
+ let b = rgb[2] / 255;
24883
+ r = r > .04045 ? ((r + .055) / 1.055) ** 2.4 : r / 12.92;
24884
+ g = g > .04045 ? ((g + .055) / 1.055) ** 2.4 : g / 12.92;
24885
+ b = b > .04045 ? ((b + .055) / 1.055) ** 2.4 : b / 12.92;
24886
+ const x = r * .4124 + g * .3576 + b * .1805;
24887
+ const y = r * .2126 + g * .7152 + b * .0722;
24888
+ const z = r * .0193 + g * .1192 + b * .9505;
24889
+ return [
24890
+ x * 100,
24891
+ y * 100,
24892
+ z * 100
24893
+ ];
24894
+ };
24895
+ convert$1.rgb.lab = function(rgb) {
24896
+ const xyz = convert$1.rgb.xyz(rgb);
24897
+ let x = xyz[0];
24898
+ let y = xyz[1];
24899
+ let z = xyz[2];
24900
+ x /= 95.047;
24901
+ y /= 100;
24902
+ z /= 108.883;
24903
+ x = x > .008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116;
24904
+ y = y > .008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
24905
+ z = z > .008856 ? z ** (1 / 3) : 7.787 * z + 16 / 116;
24906
+ return [
24907
+ 116 * y - 16,
24908
+ 500 * (x - y),
24909
+ 200 * (y - z)
24910
+ ];
24911
+ };
24912
+ convert$1.hsl.rgb = function(hsl) {
24913
+ const h = hsl[0] / 360;
24914
+ const s = hsl[1] / 100;
24915
+ const l = hsl[2] / 100;
24916
+ let t2;
24917
+ let t3;
24918
+ let val;
24919
+ if (s === 0) {
24920
+ val = l * 255;
24921
+ return [
24922
+ val,
24923
+ val,
24924
+ val
24925
+ ];
24926
+ }
24927
+ if (l < .5) t2 = l * (1 + s);
24928
+ else t2 = l + s - l * s;
24929
+ const t1 = 2 * l - t2;
24930
+ const rgb = [
24931
+ 0,
24932
+ 0,
24933
+ 0
24934
+ ];
24935
+ for (let i$3 = 0; i$3 < 3; i$3++) {
24936
+ t3 = h + 1 / 3 * -(i$3 - 1);
24937
+ if (t3 < 0) t3++;
24938
+ if (t3 > 1) t3--;
24939
+ if (6 * t3 < 1) val = t1 + (t2 - t1) * 6 * t3;
24940
+ else if (2 * t3 < 1) val = t2;
24941
+ else if (3 * t3 < 2) val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
24942
+ else val = t1;
24943
+ rgb[i$3] = val * 255;
24944
+ }
24945
+ return rgb;
24946
+ };
24947
+ convert$1.hsl.hsv = function(hsl) {
24948
+ const h = hsl[0];
24949
+ let s = hsl[1] / 100;
24950
+ let l = hsl[2] / 100;
24951
+ let smin = s;
24952
+ const lmin = Math.max(l, .01);
24953
+ l *= 2;
24954
+ s *= l <= 1 ? l : 2 - l;
24955
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
24956
+ const v = (l + s) / 2;
24957
+ return [
24958
+ h,
24959
+ (l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s)) * 100,
24960
+ v * 100
24961
+ ];
24962
+ };
24963
+ convert$1.hsv.rgb = function(hsv) {
24964
+ const h = hsv[0] / 60;
24965
+ const s = hsv[1] / 100;
24966
+ let v = hsv[2] / 100;
24967
+ const hi = Math.floor(h) % 6;
24968
+ const f = h - Math.floor(h);
24969
+ const p = 255 * v * (1 - s);
24970
+ const q = 255 * v * (1 - s * f);
24971
+ const t = 255 * v * (1 - s * (1 - f));
24972
+ v *= 255;
24973
+ switch (hi) {
24974
+ case 0: return [
24975
+ v,
24976
+ t,
24977
+ p
24978
+ ];
24979
+ case 1: return [
24980
+ q,
24981
+ v,
24982
+ p
24983
+ ];
24984
+ case 2: return [
24985
+ p,
24986
+ v,
24987
+ t
24988
+ ];
24989
+ case 3: return [
24990
+ p,
24991
+ q,
24992
+ v
24993
+ ];
24994
+ case 4: return [
24995
+ t,
24996
+ p,
24997
+ v
24998
+ ];
24999
+ case 5: return [
25000
+ v,
25001
+ p,
25002
+ q
25003
+ ];
25004
+ }
25005
+ };
25006
+ convert$1.hsv.hsl = function(hsv) {
25007
+ const h = hsv[0];
25008
+ const s = hsv[1] / 100;
25009
+ const v = hsv[2] / 100;
25010
+ const vmin = Math.max(v, .01);
25011
+ let sl;
25012
+ let l;
25013
+ l = (2 - s) * v;
25014
+ const lmin = (2 - s) * vmin;
25015
+ sl = s * vmin;
25016
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
25017
+ sl = sl || 0;
25018
+ l /= 2;
25019
+ return [
25020
+ h,
25021
+ sl * 100,
25022
+ l * 100
25023
+ ];
25024
+ };
25025
+ convert$1.hwb.rgb = function(hwb) {
25026
+ const h = hwb[0] / 360;
25027
+ let wh = hwb[1] / 100;
25028
+ let bl = hwb[2] / 100;
25029
+ const ratio = wh + bl;
25030
+ let f;
25031
+ if (ratio > 1) {
25032
+ wh /= ratio;
25033
+ bl /= ratio;
25034
+ }
25035
+ const i$3 = Math.floor(6 * h);
25036
+ const v = 1 - bl;
25037
+ f = 6 * h - i$3;
25038
+ if ((i$3 & 1) !== 0) f = 1 - f;
25039
+ const n = wh + f * (v - wh);
25040
+ let r;
25041
+ let g;
25042
+ let b;
25043
+ switch (i$3) {
25044
+ default:
25045
+ case 6:
25046
+ case 0:
25047
+ r = v;
25048
+ g = n;
25049
+ b = wh;
25050
+ break;
25051
+ case 1:
25052
+ r = n;
25053
+ g = v;
25054
+ b = wh;
25055
+ break;
25056
+ case 2:
25057
+ r = wh;
25058
+ g = v;
25059
+ b = n;
25060
+ break;
25061
+ case 3:
25062
+ r = wh;
25063
+ g = n;
25064
+ b = v;
25065
+ break;
25066
+ case 4:
25067
+ r = n;
25068
+ g = wh;
25069
+ b = v;
25070
+ break;
25071
+ case 5:
25072
+ r = v;
25073
+ g = wh;
25074
+ b = n;
25075
+ break;
25076
+ }
25077
+ return [
25078
+ r * 255,
25079
+ g * 255,
25080
+ b * 255
25081
+ ];
25082
+ };
25083
+ convert$1.cmyk.rgb = function(cmyk) {
25084
+ const c = cmyk[0] / 100;
25085
+ const m = cmyk[1] / 100;
25086
+ const y = cmyk[2] / 100;
25087
+ const k = cmyk[3] / 100;
25088
+ const r = 1 - Math.min(1, c * (1 - k) + k);
25089
+ const g = 1 - Math.min(1, m * (1 - k) + k);
25090
+ const b = 1 - Math.min(1, y * (1 - k) + k);
25091
+ return [
25092
+ r * 255,
25093
+ g * 255,
25094
+ b * 255
25095
+ ];
25096
+ };
25097
+ convert$1.xyz.rgb = function(xyz) {
25098
+ const x = xyz[0] / 100;
25099
+ const y = xyz[1] / 100;
25100
+ const z = xyz[2] / 100;
25101
+ let r;
25102
+ let g;
25103
+ let b;
25104
+ r = x * 3.2406 + y * -1.5372 + z * -.4986;
25105
+ g = x * -.9689 + y * 1.8758 + z * .0415;
25106
+ b = x * .0557 + y * -.204 + z * 1.057;
25107
+ r = r > .0031308 ? 1.055 * r ** (1 / 2.4) - .055 : r * 12.92;
25108
+ g = g > .0031308 ? 1.055 * g ** (1 / 2.4) - .055 : g * 12.92;
25109
+ b = b > .0031308 ? 1.055 * b ** (1 / 2.4) - .055 : b * 12.92;
25110
+ r = Math.min(Math.max(0, r), 1);
25111
+ g = Math.min(Math.max(0, g), 1);
25112
+ b = Math.min(Math.max(0, b), 1);
25113
+ return [
25114
+ r * 255,
25115
+ g * 255,
25116
+ b * 255
25117
+ ];
25118
+ };
25119
+ convert$1.xyz.lab = function(xyz) {
25120
+ let x = xyz[0];
25121
+ let y = xyz[1];
25122
+ let z = xyz[2];
25123
+ x /= 95.047;
25124
+ y /= 100;
25125
+ z /= 108.883;
25126
+ x = x > .008856 ? x ** (1 / 3) : 7.787 * x + 16 / 116;
25127
+ y = y > .008856 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
25128
+ z = z > .008856 ? z ** (1 / 3) : 7.787 * z + 16 / 116;
25129
+ return [
25130
+ 116 * y - 16,
25131
+ 500 * (x - y),
25132
+ 200 * (y - z)
25133
+ ];
25134
+ };
25135
+ convert$1.lab.xyz = function(lab) {
25136
+ const l = lab[0];
25137
+ const a = lab[1];
25138
+ const b = lab[2];
25139
+ let x;
25140
+ let y;
25141
+ let z;
25142
+ y = (l + 16) / 116;
25143
+ x = a / 500 + y;
25144
+ z = y - b / 200;
25145
+ const y2 = y ** 3;
25146
+ const x2 = x ** 3;
25147
+ const z2 = z ** 3;
25148
+ y = y2 > .008856 ? y2 : (y - 16 / 116) / 7.787;
25149
+ x = x2 > .008856 ? x2 : (x - 16 / 116) / 7.787;
25150
+ z = z2 > .008856 ? z2 : (z - 16 / 116) / 7.787;
25151
+ x *= 95.047;
25152
+ y *= 100;
25153
+ z *= 108.883;
25154
+ return [
25155
+ x,
25156
+ y,
25157
+ z
25158
+ ];
25159
+ };
25160
+ convert$1.lab.lch = function(lab) {
25161
+ const l = lab[0];
25162
+ const a = lab[1];
25163
+ const b = lab[2];
25164
+ let h;
25165
+ h = Math.atan2(b, a) * 360 / 2 / Math.PI;
25166
+ if (h < 0) h += 360;
25167
+ return [
25168
+ l,
25169
+ Math.sqrt(a * a + b * b),
25170
+ h
25171
+ ];
25172
+ };
25173
+ convert$1.lch.lab = function(lch) {
25174
+ const l = lch[0];
25175
+ const c = lch[1];
25176
+ const hr = lch[2] / 360 * 2 * Math.PI;
25177
+ return [
25178
+ l,
25179
+ c * Math.cos(hr),
25180
+ c * Math.sin(hr)
25181
+ ];
25182
+ };
25183
+ convert$1.rgb.ansi16 = function(args, saturation = null) {
25184
+ const [r, g, b] = args;
25185
+ let value = saturation === null ? convert$1.rgb.hsv(args)[2] : saturation;
25186
+ value = Math.round(value / 50);
25187
+ if (value === 0) return 30;
25188
+ let ansi$1 = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
25189
+ if (value === 2) ansi$1 += 60;
25190
+ return ansi$1;
25191
+ };
25192
+ convert$1.hsv.ansi16 = function(args) {
25193
+ return convert$1.rgb.ansi16(convert$1.hsv.rgb(args), args[2]);
25194
+ };
25195
+ convert$1.rgb.ansi256 = function(args) {
25196
+ const r = args[0];
25197
+ const g = args[1];
25198
+ const b = args[2];
25199
+ if (r === g && g === b) {
25200
+ if (r < 8) return 16;
25201
+ if (r > 248) return 231;
25202
+ return Math.round((r - 8) / 247 * 24) + 232;
25203
+ }
25204
+ return 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
25205
+ };
25206
+ convert$1.ansi16.rgb = function(args) {
25207
+ let color = args % 10;
25208
+ if (color === 0 || color === 7) {
25209
+ if (args > 50) color += 3.5;
25210
+ color = color / 10.5 * 255;
25211
+ return [
25212
+ color,
25213
+ color,
25214
+ color
25215
+ ];
25216
+ }
25217
+ const mult = (~~(args > 50) + 1) * .5;
25218
+ return [
25219
+ (color & 1) * mult * 255,
25220
+ (color >> 1 & 1) * mult * 255,
25221
+ (color >> 2 & 1) * mult * 255
25222
+ ];
25223
+ };
25224
+ convert$1.ansi256.rgb = function(args) {
25225
+ if (args >= 232) {
25226
+ const c = (args - 232) * 10 + 8;
25227
+ return [
25228
+ c,
25229
+ c,
25230
+ c
25231
+ ];
25232
+ }
25233
+ args -= 16;
25234
+ let rem;
25235
+ return [
25236
+ Math.floor(args / 36) / 5 * 255,
25237
+ Math.floor((rem = args % 36) / 6) / 5 * 255,
25238
+ rem % 6 / 5 * 255
25239
+ ];
25240
+ };
25241
+ convert$1.rgb.hex = function(args) {
25242
+ const string = (((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255)).toString(16).toUpperCase();
25243
+ return "000000".substring(string.length) + string;
25244
+ };
25245
+ convert$1.hex.rgb = function(args) {
25246
+ const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
25247
+ if (!match) return [
25248
+ 0,
25249
+ 0,
25250
+ 0
25251
+ ];
25252
+ let colorString = match[0];
25253
+ if (match[0].length === 3) colorString = colorString.split("").map((char) => {
25254
+ return char + char;
25255
+ }).join("");
25256
+ const integer = parseInt(colorString, 16);
25257
+ return [
25258
+ integer >> 16 & 255,
25259
+ integer >> 8 & 255,
25260
+ integer & 255
25261
+ ];
25262
+ };
25263
+ convert$1.rgb.hcg = function(rgb) {
25264
+ const r = rgb[0] / 255;
25265
+ const g = rgb[1] / 255;
25266
+ const b = rgb[2] / 255;
25267
+ const max = Math.max(Math.max(r, g), b);
25268
+ const min = Math.min(Math.min(r, g), b);
25269
+ const chroma = max - min;
25270
+ let grayscale;
25271
+ let hue;
25272
+ if (chroma < 1) grayscale = min / (1 - chroma);
25273
+ else grayscale = 0;
25274
+ if (chroma <= 0) hue = 0;
25275
+ else if (max === r) hue = (g - b) / chroma % 6;
25276
+ else if (max === g) hue = 2 + (b - r) / chroma;
25277
+ else hue = 4 + (r - g) / chroma;
25278
+ hue /= 6;
25279
+ hue %= 1;
25280
+ return [
25281
+ hue * 360,
25282
+ chroma * 100,
25283
+ grayscale * 100
25284
+ ];
25285
+ };
25286
+ convert$1.hsl.hcg = function(hsl) {
25287
+ const s = hsl[1] / 100;
25288
+ const l = hsl[2] / 100;
25289
+ const c = l < .5 ? 2 * s * l : 2 * s * (1 - l);
25290
+ let f = 0;
25291
+ if (c < 1) f = (l - .5 * c) / (1 - c);
25292
+ return [
25293
+ hsl[0],
25294
+ c * 100,
25295
+ f * 100
25296
+ ];
25297
+ };
25298
+ convert$1.hsv.hcg = function(hsv) {
25299
+ const s = hsv[1] / 100;
25300
+ const v = hsv[2] / 100;
25301
+ const c = s * v;
25302
+ let f = 0;
25303
+ if (c < 1) f = (v - c) / (1 - c);
25304
+ return [
25305
+ hsv[0],
25306
+ c * 100,
25307
+ f * 100
25308
+ ];
25309
+ };
25310
+ convert$1.hcg.rgb = function(hcg) {
25311
+ const h = hcg[0] / 360;
25312
+ const c = hcg[1] / 100;
25313
+ const g = hcg[2] / 100;
25314
+ if (c === 0) return [
25315
+ g * 255,
25316
+ g * 255,
25317
+ g * 255
25318
+ ];
25319
+ const pure = [
25320
+ 0,
25321
+ 0,
25322
+ 0
25323
+ ];
25324
+ const hi = h % 1 * 6;
25325
+ const v = hi % 1;
25326
+ const w = 1 - v;
25327
+ let mg = 0;
25328
+ switch (Math.floor(hi)) {
25329
+ case 0:
25330
+ pure[0] = 1;
25331
+ pure[1] = v;
25332
+ pure[2] = 0;
25333
+ break;
25334
+ case 1:
25335
+ pure[0] = w;
25336
+ pure[1] = 1;
25337
+ pure[2] = 0;
25338
+ break;
25339
+ case 2:
25340
+ pure[0] = 0;
25341
+ pure[1] = 1;
25342
+ pure[2] = v;
25343
+ break;
25344
+ case 3:
25345
+ pure[0] = 0;
25346
+ pure[1] = w;
25347
+ pure[2] = 1;
25348
+ break;
25349
+ case 4:
25350
+ pure[0] = v;
25351
+ pure[1] = 0;
25352
+ pure[2] = 1;
25353
+ break;
25354
+ default:
25355
+ pure[0] = 1;
25356
+ pure[1] = 0;
25357
+ pure[2] = w;
25358
+ }
25359
+ mg = (1 - c) * g;
25360
+ return [
25361
+ (c * pure[0] + mg) * 255,
25362
+ (c * pure[1] + mg) * 255,
25363
+ (c * pure[2] + mg) * 255
25364
+ ];
25365
+ };
25366
+ convert$1.hcg.hsv = function(hcg) {
25367
+ const c = hcg[1] / 100;
25368
+ const v = c + hcg[2] / 100 * (1 - c);
25369
+ let f = 0;
25370
+ if (v > 0) f = c / v;
25371
+ return [
25372
+ hcg[0],
25373
+ f * 100,
25374
+ v * 100
25375
+ ];
25376
+ };
25377
+ convert$1.hcg.hsl = function(hcg) {
25378
+ const c = hcg[1] / 100;
25379
+ const l = hcg[2] / 100 * (1 - c) + .5 * c;
25380
+ let s = 0;
25381
+ if (l > 0 && l < .5) s = c / (2 * l);
25382
+ else if (l >= .5 && l < 1) s = c / (2 * (1 - l));
25383
+ return [
25384
+ hcg[0],
25385
+ s * 100,
25386
+ l * 100
25387
+ ];
25388
+ };
25389
+ convert$1.hcg.hwb = function(hcg) {
25390
+ const c = hcg[1] / 100;
25391
+ const v = c + hcg[2] / 100 * (1 - c);
25392
+ return [
25393
+ hcg[0],
25394
+ (v - c) * 100,
25395
+ (1 - v) * 100
25396
+ ];
25397
+ };
25398
+ convert$1.hwb.hcg = function(hwb) {
25399
+ const w = hwb[1] / 100;
25400
+ const v = 1 - hwb[2] / 100;
25401
+ const c = v - w;
25402
+ let g = 0;
25403
+ if (c < 1) g = (v - c) / (1 - c);
25404
+ return [
25405
+ hwb[0],
25406
+ c * 100,
25407
+ g * 100
25408
+ ];
25409
+ };
25410
+ convert$1.apple.rgb = function(apple) {
25411
+ return [
25412
+ apple[0] / 65535 * 255,
25413
+ apple[1] / 65535 * 255,
25414
+ apple[2] / 65535 * 255
25415
+ ];
25416
+ };
25417
+ convert$1.rgb.apple = function(rgb) {
25418
+ return [
25419
+ rgb[0] / 255 * 65535,
25420
+ rgb[1] / 255 * 65535,
25421
+ rgb[2] / 255 * 65535
25422
+ ];
25423
+ };
25424
+ convert$1.gray.rgb = function(args) {
25425
+ return [
25426
+ args[0] / 100 * 255,
25427
+ args[0] / 100 * 255,
25428
+ args[0] / 100 * 255
25429
+ ];
25430
+ };
25431
+ convert$1.gray.hsl = function(args) {
25432
+ return [
25433
+ 0,
25434
+ 0,
25435
+ args[0]
25436
+ ];
25437
+ };
25438
+ convert$1.gray.hsv = convert$1.gray.hsl;
25439
+ convert$1.gray.hwb = function(gray) {
25440
+ return [
25441
+ 0,
25442
+ 100,
25443
+ gray[0]
25444
+ ];
25445
+ };
25446
+ convert$1.gray.cmyk = function(gray) {
25447
+ return [
25448
+ 0,
25449
+ 0,
25450
+ 0,
25451
+ gray[0]
25452
+ ];
25453
+ };
25454
+ convert$1.gray.lab = function(gray) {
25455
+ return [
25456
+ gray[0],
25457
+ 0,
25458
+ 0
25459
+ ];
25460
+ };
25461
+ convert$1.gray.hex = function(gray) {
25462
+ const val = Math.round(gray[0] / 100 * 255) & 255;
25463
+ const string = ((val << 16) + (val << 8) + val).toString(16).toUpperCase();
25464
+ return "000000".substring(string.length) + string;
25465
+ };
25466
+ convert$1.rgb.gray = function(rgb) {
25467
+ return [(rgb[0] + rgb[1] + rgb[2]) / 3 / 255 * 100];
25468
+ };
25469
+ }) });
25470
+
25471
+ //#endregion
25472
+ //#region node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js
25473
+ var require_route = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js": ((exports, module) => {
25474
+ const conversions$1 = require_conversions();
25475
+ function buildGraph() {
25476
+ const graph = {};
25477
+ const models$1 = Object.keys(conversions$1);
25478
+ for (let len = models$1.length, i$3 = 0; i$3 < len; i$3++) graph[models$1[i$3]] = {
25479
+ distance: -1,
25480
+ parent: null
25481
+ };
25482
+ return graph;
25483
+ }
25484
+ function deriveBFS(fromModel) {
25485
+ const graph = buildGraph();
25486
+ const queue = [fromModel];
25487
+ graph[fromModel].distance = 0;
25488
+ while (queue.length) {
25489
+ const current = queue.pop();
25490
+ const adjacents = Object.keys(conversions$1[current]);
25491
+ for (let len = adjacents.length, i$3 = 0; i$3 < len; i$3++) {
25492
+ const adjacent = adjacents[i$3];
25493
+ const node = graph[adjacent];
25494
+ if (node.distance === -1) {
25495
+ node.distance = graph[current].distance + 1;
25496
+ node.parent = current;
25497
+ queue.unshift(adjacent);
25498
+ }
25499
+ }
25500
+ }
25501
+ return graph;
25502
+ }
25503
+ function link(from, to) {
25504
+ return function(args) {
25505
+ return to(from(args));
25506
+ };
25507
+ }
25508
+ function wrapConversion(toModel, graph) {
25509
+ const path = [graph[toModel].parent, toModel];
25510
+ let fn = conversions$1[graph[toModel].parent][toModel];
25511
+ let cur = graph[toModel].parent;
25512
+ while (graph[cur].parent) {
25513
+ path.unshift(graph[cur].parent);
25514
+ fn = link(conversions$1[graph[cur].parent][cur], fn);
25515
+ cur = graph[cur].parent;
25516
+ }
25517
+ fn.conversion = path;
25518
+ return fn;
25519
+ }
25520
+ module.exports = function(fromModel) {
25521
+ const graph = deriveBFS(fromModel);
25522
+ const conversion = {};
25523
+ const models$1 = Object.keys(graph);
25524
+ for (let len = models$1.length, i$3 = 0; i$3 < len; i$3++) {
25525
+ const toModel = models$1[i$3];
25526
+ if (graph[toModel].parent === null) continue;
25527
+ conversion[toModel] = wrapConversion(toModel, graph);
25528
+ }
25529
+ return conversion;
25530
+ };
25531
+ }) });
25532
+
25533
+ //#endregion
25534
+ //#region node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js
25535
+ var require_color_convert = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js": ((exports, module) => {
25536
+ const conversions = require_conversions();
25537
+ const route = require_route();
25538
+ const convert = {};
25539
+ const models = Object.keys(conversions);
25540
+ function wrapRaw(fn) {
25541
+ const wrappedFn = function(...args) {
25542
+ const arg0 = args[0];
25543
+ if (arg0 === void 0 || arg0 === null) return arg0;
25544
+ if (arg0.length > 1) args = arg0;
25545
+ return fn(args);
25546
+ };
25547
+ if ("conversion" in fn) wrappedFn.conversion = fn.conversion;
25548
+ return wrappedFn;
25549
+ }
25550
+ function wrapRounded(fn) {
25551
+ const wrappedFn = function(...args) {
25552
+ const arg0 = args[0];
25553
+ if (arg0 === void 0 || arg0 === null) return arg0;
25554
+ if (arg0.length > 1) args = arg0;
25555
+ const result = fn(args);
25556
+ if (typeof result === "object") for (let len = result.length, i$3 = 0; i$3 < len; i$3++) result[i$3] = Math.round(result[i$3]);
25557
+ return result;
25558
+ };
25559
+ if ("conversion" in fn) wrappedFn.conversion = fn.conversion;
25560
+ return wrappedFn;
25561
+ }
25562
+ models.forEach((fromModel) => {
25563
+ convert[fromModel] = {};
25564
+ Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels });
25565
+ Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels });
25566
+ const routes = route(fromModel);
25567
+ Object.keys(routes).forEach((toModel) => {
25568
+ const fn = routes[toModel];
25569
+ convert[fromModel][toModel] = wrapRounded(fn);
25570
+ convert[fromModel][toModel].raw = wrapRaw(fn);
25571
+ });
25572
+ });
25573
+ module.exports = convert;
25574
+ }) });
25575
+
25576
+ //#endregion
25577
+ //#region node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js
25578
+ var require_ansi_styles = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js": ((exports, module) => {
25579
+ const wrapAnsi16 = (fn, offset) => (...args) => {
25580
+ return `\u001B[${fn(...args) + offset}m`;
25581
+ };
25582
+ const wrapAnsi256 = (fn, offset) => (...args) => {
25583
+ const code = fn(...args);
25584
+ return `\u001B[${38 + offset};5;${code}m`;
25585
+ };
25586
+ const wrapAnsi16m = (fn, offset) => (...args) => {
25587
+ const rgb = fn(...args);
25588
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
25589
+ };
25590
+ const ansi2ansi = (n) => n;
25591
+ const rgb2rgb = (r, g, b) => [
25592
+ r,
25593
+ g,
25594
+ b
25595
+ ];
25596
+ const setLazyProperty = (object, property, get) => {
25597
+ Object.defineProperty(object, property, {
25598
+ get: () => {
25599
+ const value = get();
25600
+ Object.defineProperty(object, property, {
25601
+ value,
25602
+ enumerable: true,
25603
+ configurable: true
25604
+ });
25605
+ return value;
25606
+ },
25607
+ enumerable: true,
25608
+ configurable: true
25609
+ });
25610
+ };
25611
+ /** @type {typeof import('color-convert')} */
25612
+ let colorConvert;
25613
+ const makeDynamicStyles = (wrap$3, targetSpace, identity, isBackground) => {
25614
+ if (colorConvert === void 0) colorConvert = require_color_convert();
25615
+ const offset = isBackground ? 10 : 0;
25616
+ const styles = {};
25617
+ for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
25618
+ const name = sourceSpace === "ansi16" ? "ansi" : sourceSpace;
25619
+ if (sourceSpace === targetSpace) styles[name] = wrap$3(identity, offset);
25620
+ else if (typeof suite === "object") styles[name] = wrap$3(suite[targetSpace], offset);
25621
+ }
25622
+ return styles;
25623
+ };
25624
+ function assembleStyles() {
25625
+ const codes$1 = /* @__PURE__ */ new Map();
25626
+ const styles = {
25627
+ modifier: {
25628
+ reset: [0, 0],
25629
+ bold: [1, 22],
25630
+ dim: [2, 22],
25631
+ italic: [3, 23],
25632
+ underline: [4, 24],
25633
+ inverse: [7, 27],
25634
+ hidden: [8, 28],
25635
+ strikethrough: [9, 29]
25636
+ },
25637
+ color: {
25638
+ black: [30, 39],
25639
+ red: [31, 39],
25640
+ green: [32, 39],
25641
+ yellow: [33, 39],
25642
+ blue: [34, 39],
25643
+ magenta: [35, 39],
25644
+ cyan: [36, 39],
25645
+ white: [37, 39],
25646
+ blackBright: [90, 39],
25647
+ redBright: [91, 39],
25648
+ greenBright: [92, 39],
25649
+ yellowBright: [93, 39],
25650
+ blueBright: [94, 39],
25651
+ magentaBright: [95, 39],
25652
+ cyanBright: [96, 39],
25653
+ whiteBright: [97, 39]
25654
+ },
25655
+ bgColor: {
25656
+ bgBlack: [40, 49],
25657
+ bgRed: [41, 49],
25658
+ bgGreen: [42, 49],
25659
+ bgYellow: [43, 49],
25660
+ bgBlue: [44, 49],
25661
+ bgMagenta: [45, 49],
25662
+ bgCyan: [46, 49],
25663
+ bgWhite: [47, 49],
25664
+ bgBlackBright: [100, 49],
25665
+ bgRedBright: [101, 49],
25666
+ bgGreenBright: [102, 49],
25667
+ bgYellowBright: [103, 49],
25668
+ bgBlueBright: [104, 49],
25669
+ bgMagentaBright: [105, 49],
25670
+ bgCyanBright: [106, 49],
25671
+ bgWhiteBright: [107, 49]
25672
+ }
25673
+ };
25674
+ styles.color.gray = styles.color.blackBright;
25675
+ styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
25676
+ styles.color.grey = styles.color.blackBright;
25677
+ styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
25678
+ for (const [groupName, group] of Object.entries(styles)) {
25679
+ for (const [styleName, style] of Object.entries(group)) {
25680
+ styles[styleName] = {
25681
+ open: `\u001B[${style[0]}m`,
25682
+ close: `\u001B[${style[1]}m`
25683
+ };
25684
+ group[styleName] = styles[styleName];
25685
+ codes$1.set(style[0], style[1]);
25686
+ }
25687
+ Object.defineProperty(styles, groupName, {
25688
+ value: group,
25689
+ enumerable: false
25690
+ });
25691
+ }
25692
+ Object.defineProperty(styles, "codes", {
25693
+ value: codes$1,
25694
+ enumerable: false
25695
+ });
25696
+ styles.color.close = "\x1B[39m";
25697
+ styles.bgColor.close = "\x1B[49m";
25698
+ setLazyProperty(styles.color, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, false));
25699
+ setLazyProperty(styles.color, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, false));
25700
+ setLazyProperty(styles.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, false));
25701
+ setLazyProperty(styles.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, true));
25702
+ setLazyProperty(styles.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, true));
25703
+ setLazyProperty(styles.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, true));
25704
+ return styles;
25705
+ }
25706
+ Object.defineProperty(module, "exports", {
25707
+ enumerable: true,
25708
+ get: assembleStyles
25709
+ });
25710
+ }) });
25711
+
25712
+ //#endregion
25713
+ //#region node_modules/.pnpm/wrap-ansi@6.2.0/node_modules/wrap-ansi/index.js
25714
+ var require_wrap_ansi = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/wrap-ansi@6.2.0/node_modules/wrap-ansi/index.js": ((exports, module) => {
25715
+ const stringWidth = require_string_width();
25716
+ const stripAnsi = require_strip_ansi();
25717
+ const ansiStyles = require_ansi_styles();
25718
+ const ESCAPES = new Set(["\x1B", "›"]);
25719
+ const END_CODE = 39;
25720
+ const wrapAnsi$1 = (code) => `${ESCAPES.values().next().value}[${code}m`;
25721
+ const wordLengths = (string) => string.split(" ").map((character) => stringWidth(character));
25722
+ const wrapWord = (rows, word, columns) => {
25723
+ const characters = [...word];
25724
+ let isInsideEscape = false;
25725
+ let visible = stringWidth(stripAnsi(rows[rows.length - 1]));
25726
+ for (const [index, character] of characters.entries()) {
25727
+ const characterLength = stringWidth(character);
25728
+ if (visible + characterLength <= columns) rows[rows.length - 1] += character;
25729
+ else {
25730
+ rows.push(character);
25731
+ visible = 0;
25732
+ }
25733
+ if (ESCAPES.has(character)) isInsideEscape = true;
25734
+ else if (isInsideEscape && character === "m") {
25735
+ isInsideEscape = false;
25736
+ continue;
25737
+ }
25738
+ if (isInsideEscape) continue;
25739
+ visible += characterLength;
25740
+ if (visible === columns && index < characters.length - 1) {
25741
+ rows.push("");
25742
+ visible = 0;
25743
+ }
25744
+ }
25745
+ if (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) rows[rows.length - 2] += rows.pop();
25746
+ };
25747
+ const stringVisibleTrimSpacesRight = (str$1) => {
25748
+ const words = str$1.split(" ");
25749
+ let last = words.length;
25750
+ while (last > 0) {
25751
+ if (stringWidth(words[last - 1]) > 0) break;
25752
+ last--;
25753
+ }
25754
+ if (last === words.length) return str$1;
25755
+ return words.slice(0, last).join(" ") + words.slice(last).join("");
25756
+ };
25757
+ const exec = (string, columns, options = {}) => {
25758
+ if (options.trim !== false && string.trim() === "") return "";
25759
+ let pre = "";
25760
+ let ret = "";
25761
+ let escapeCode;
25762
+ const lengths = wordLengths(string);
25763
+ let rows = [""];
25764
+ for (const [index, word] of string.split(" ").entries()) {
25765
+ if (options.trim !== false) rows[rows.length - 1] = rows[rows.length - 1].trimLeft();
25766
+ let rowLength = stringWidth(rows[rows.length - 1]);
25767
+ if (index !== 0) {
25768
+ if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
25769
+ rows.push("");
25770
+ rowLength = 0;
25771
+ }
25772
+ if (rowLength > 0 || options.trim === false) {
25773
+ rows[rows.length - 1] += " ";
25774
+ rowLength++;
25775
+ }
25776
+ }
25777
+ if (options.hard && lengths[index] > columns) {
25778
+ const remainingColumns = columns - rowLength;
25779
+ const breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);
25780
+ if (Math.floor((lengths[index] - 1) / columns) < breaksStartingThisLine) rows.push("");
25781
+ wrapWord(rows, word, columns);
25782
+ continue;
25783
+ }
25784
+ if (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {
25785
+ if (options.wordWrap === false && rowLength < columns) {
25786
+ wrapWord(rows, word, columns);
25787
+ continue;
25788
+ }
25789
+ rows.push("");
25790
+ }
25791
+ if (rowLength + lengths[index] > columns && options.wordWrap === false) {
25792
+ wrapWord(rows, word, columns);
25793
+ continue;
25794
+ }
25795
+ rows[rows.length - 1] += word;
25796
+ }
25797
+ if (options.trim !== false) rows = rows.map(stringVisibleTrimSpacesRight);
25798
+ pre = rows.join("\n");
25799
+ for (const [index, character] of [...pre].entries()) {
25800
+ ret += character;
25801
+ if (ESCAPES.has(character)) {
25802
+ const code$1 = parseFloat(/\d[^m]*/.exec(pre.slice(index, index + 4)));
25803
+ escapeCode = code$1 === END_CODE ? null : code$1;
25804
+ }
25805
+ const code = ansiStyles.codes.get(Number(escapeCode));
25806
+ if (escapeCode && code) {
25807
+ if (pre[index + 1] === "\n") ret += wrapAnsi$1(code);
25808
+ else if (character === "\n") ret += wrapAnsi$1(escapeCode);
25809
+ }
25810
+ }
25811
+ return ret;
25812
+ };
25813
+ module.exports = (string, columns, options) => {
25814
+ return String(string).normalize().replace(/\r\n/g, "\n").split("\n").map((line$1) => exec(line$1, columns, options)).join("\n");
25815
+ };
25816
+ }) });
25817
+
25818
+ //#endregion
25819
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/utils.js
25820
+ var import_cli_width = /* @__PURE__ */ __toESM(require_cli_width(), 1);
25821
+ var import_wrap_ansi = /* @__PURE__ */ __toESM(require_wrap_ansi(), 1);
25822
+ /**
25823
+ * Force line returns at specific width. This function is ANSI code friendly and it'll
25824
+ * ignore invisible codes during width calculation.
25825
+ * @param {string} content
25826
+ * @param {number} width
25827
+ * @return {string}
25828
+ */
25829
+ function breakLines(content, width) {
25830
+ return content.split("\n").flatMap((line$1) => (0, import_wrap_ansi.default)(line$1, width, {
25831
+ trim: false,
25832
+ hard: true
25833
+ }).split("\n").map((str$1) => str$1.trimEnd())).join("\n");
25834
+ }
25835
+ /**
25836
+ * Returns the width of the active readline, or 80 as default value.
25837
+ * @returns {number}
25838
+ */
25839
+ function readlineWidth() {
25840
+ return (0, import_cli_width.default)({
25841
+ defaultWidth: 80,
25842
+ output: readline$1().output
25843
+ });
25844
+ }
25845
+
25846
+ //#endregion
25847
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js
25848
+ function usePointerPosition({ active, renderedItems, pageSize, loop }) {
25849
+ const state = useRef({
25850
+ lastPointer: active,
25851
+ lastActive: void 0
25852
+ });
25853
+ const { lastPointer, lastActive } = state.current;
25854
+ const middle = Math.floor(pageSize / 2);
25855
+ const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);
25856
+ const defaultPointerPosition = renderedItems.slice(0, active).reduce((acc, item) => acc + item.length, 0);
25857
+ let pointer = defaultPointerPosition;
25858
+ if (renderedLength > pageSize) if (loop) {
25859
+ /**
25860
+ * Creates the next position for the pointer considering an infinitely
25861
+ * looping list of items to be rendered on the page.
25862
+ *
25863
+ * The goal is to progressively move the cursor to the middle position as the user move down, and then keep
25864
+ * the cursor there. When the user move up, maintain the cursor position.
25865
+ */
25866
+ pointer = lastPointer;
25867
+ if (lastActive != null && lastActive < active && active - lastActive < pageSize) pointer = Math.min(middle, Math.abs(active - lastActive) === 1 ? Math.min(lastPointer + (renderedItems[lastActive]?.length ?? 0), Math.max(defaultPointerPosition, lastPointer)) : lastPointer + active - lastActive);
25868
+ } else {
25869
+ /**
25870
+ * Creates the next position for the pointer considering a finite list of
25871
+ * items to be rendered on a page.
25872
+ *
25873
+ * The goal is to keep the pointer in the middle of the page whenever possible, until
25874
+ * we reach the bounds of the list (top or bottom). In which case, the cursor moves progressively
25875
+ * to the bottom or top of the list.
25876
+ */
25877
+ const spaceUnderActive = renderedItems.slice(active).reduce((acc, item) => acc + item.length, 0);
25878
+ pointer = spaceUnderActive < pageSize - middle ? pageSize - spaceUnderActive : Math.min(defaultPointerPosition, middle);
25879
+ }
25880
+ state.current.lastPointer = pointer;
25881
+ state.current.lastActive = active;
25882
+ return pointer;
25883
+ }
25884
+ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
25885
+ const width = readlineWidth();
25886
+ const bound = (num) => (num % items.length + items.length) % items.length;
25887
+ const renderedItems = items.map((item, index) => {
25888
+ if (item == null) return [];
25889
+ return breakLines(renderItem({
25890
+ item,
25891
+ index,
25892
+ isActive: index === active
25893
+ }), width).split("\n");
25894
+ });
25895
+ const renderedLength = renderedItems.reduce((acc, item) => acc + item.length, 0);
25896
+ const renderItemAtIndex = (index) => renderedItems[index] ?? [];
25897
+ const pointer = usePointerPosition({
25898
+ active,
25899
+ renderedItems,
25900
+ pageSize,
25901
+ loop
25902
+ });
25903
+ const activeItem = renderItemAtIndex(active).slice(0, pageSize);
25904
+ const activeItemPosition = pointer + activeItem.length <= pageSize ? pointer : pageSize - activeItem.length;
25905
+ const pageBuffer = Array.from({ length: pageSize });
25906
+ pageBuffer.splice(activeItemPosition, activeItem.length, ...activeItem);
25907
+ const itemVisited = new Set([active]);
25908
+ let bufferPointer = activeItemPosition + activeItem.length;
25909
+ let itemPointer = bound(active + 1);
25910
+ while (bufferPointer < pageSize && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer > active)) {
25911
+ const linesToAdd = renderItemAtIndex(itemPointer).slice(0, pageSize - bufferPointer);
25912
+ pageBuffer.splice(bufferPointer, linesToAdd.length, ...linesToAdd);
25913
+ itemVisited.add(itemPointer);
25914
+ bufferPointer += linesToAdd.length;
25915
+ itemPointer = bound(itemPointer + 1);
25916
+ }
25917
+ bufferPointer = activeItemPosition - 1;
25918
+ itemPointer = bound(active - 1);
25919
+ while (bufferPointer >= 0 && !itemVisited.has(itemPointer) && (loop && renderedLength > pageSize ? itemPointer !== active : itemPointer < active)) {
25920
+ const lines = renderItemAtIndex(itemPointer);
25921
+ const linesToAdd = lines.slice(Math.max(0, lines.length - bufferPointer - 1));
25922
+ pageBuffer.splice(bufferPointer - linesToAdd.length + 1, linesToAdd.length, ...linesToAdd);
25923
+ itemVisited.add(itemPointer);
25924
+ bufferPointer -= linesToAdd.length;
25925
+ itemPointer = bound(itemPointer - 1);
25926
+ }
25927
+ return pageBuffer.filter((line$1) => typeof line$1 === "string").join("\n");
25928
+ }
25929
+
25930
+ //#endregion
25931
+ //#region node_modules/.pnpm/mute-stream@2.0.0/node_modules/mute-stream/lib/index.js
25932
+ var require_lib = /* @__PURE__ */ __commonJS({ "node_modules/.pnpm/mute-stream@2.0.0/node_modules/mute-stream/lib/index.js": ((exports, module) => {
25933
+ const Stream = __require("stream");
25934
+ var MuteStream$1 = class extends Stream {
25935
+ #isTTY = null;
25936
+ constructor(opts = {}) {
25937
+ super(opts);
25938
+ this.writable = this.readable = true;
25939
+ this.muted = false;
25940
+ this.on("pipe", this._onpipe);
25941
+ this.replace = opts.replace;
25942
+ this._prompt = opts.prompt || null;
25943
+ this._hadControl = false;
25944
+ }
25945
+ #destSrc(key$1, def$30) {
25946
+ if (this._dest) return this._dest[key$1];
25947
+ if (this._src) return this._src[key$1];
25948
+ return def$30;
25949
+ }
25950
+ #proxy(method, ...args) {
25951
+ if (typeof this._dest?.[method] === "function") this._dest[method](...args);
25952
+ if (typeof this._src?.[method] === "function") this._src[method](...args);
25953
+ }
25954
+ get isTTY() {
25955
+ if (this.#isTTY !== null) return this.#isTTY;
25956
+ return this.#destSrc("isTTY", false);
25957
+ }
25958
+ set isTTY(val) {
25959
+ this.#isTTY = val;
25960
+ }
25961
+ get rows() {
25962
+ return this.#destSrc("rows");
25963
+ }
25964
+ get columns() {
25965
+ return this.#destSrc("columns");
25966
+ }
25967
+ mute() {
25968
+ this.muted = true;
25969
+ }
25970
+ unmute() {
25971
+ this.muted = false;
25972
+ }
25973
+ _onpipe(src) {
25974
+ this._src = src;
25975
+ }
25976
+ pipe(dest, options) {
25977
+ this._dest = dest;
25978
+ return super.pipe(dest, options);
25979
+ }
25980
+ pause() {
25981
+ if (this._src) return this._src.pause();
25982
+ }
25983
+ resume() {
25984
+ if (this._src) return this._src.resume();
25985
+ }
25986
+ write(c) {
25987
+ if (this.muted) {
25988
+ if (!this.replace) return true;
25989
+ if (c.match(/^\u001b/)) {
25990
+ if (c.indexOf(this._prompt) === 0) {
25991
+ c = c.slice(this._prompt.length);
25992
+ c = c.replace(/./g, this.replace);
25993
+ c = this._prompt + c;
25994
+ }
25995
+ this._hadControl = true;
25996
+ return this.emit("data", c);
25997
+ } else {
25998
+ if (this._prompt && this._hadControl && c.indexOf(this._prompt) === 0) {
25999
+ this._hadControl = false;
26000
+ this.emit("data", this._prompt);
26001
+ c = c.slice(this._prompt.length);
26002
+ }
26003
+ c = c.toString().replace(/./g, this.replace);
26004
+ }
26005
+ }
26006
+ this.emit("data", c);
26007
+ }
26008
+ end(c) {
26009
+ if (this.muted) if (c && this.replace) c = c.toString().replace(/./g, this.replace);
26010
+ else c = null;
26011
+ if (c) this.emit("data", c);
26012
+ this.emit("end");
26013
+ }
26014
+ destroy(...args) {
26015
+ return this.#proxy("destroy", ...args);
26016
+ }
26017
+ destroySoon(...args) {
26018
+ return this.#proxy("destroySoon", ...args);
26019
+ }
26020
+ close(...args) {
26021
+ return this.#proxy("close", ...args);
26022
+ }
26023
+ };
26024
+ module.exports = MuteStream$1;
26025
+ }) });
26026
+
26027
+ //#endregion
26028
+ //#region node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js
26029
+ /**
26030
+ * This is not the set of all possible signals.
26031
+ *
26032
+ * It IS, however, the set of all signals that trigger
26033
+ * an exit on either Linux or BSD systems. Linux is a
26034
+ * superset of the signal names supported on BSD, and
26035
+ * the unknown signals just fail to register, so we can
26036
+ * catch that easily enough.
26037
+ *
26038
+ * Windows signals are a different set, since there are
26039
+ * signals that terminate Windows processes, but don't
26040
+ * terminate (or don't even exist) on Posix systems.
26041
+ *
26042
+ * Don't bother with SIGKILL. It's uncatchable, which
26043
+ * means that we can't fire any callbacks anyway.
26044
+ *
26045
+ * If a user does happen to register a handler on a non-
26046
+ * fatal signal like SIGWINCH or something, and then
26047
+ * exit, it'll end up firing `process.emit('exit')`, so
26048
+ * the handler will be fired anyway.
26049
+ *
26050
+ * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
26051
+ * artificially, inherently leave the process in a
26052
+ * state from which it is not safe to try and enter JS
26053
+ * listeners.
26054
+ */
26055
+ const signals = [];
26056
+ signals.push("SIGHUP", "SIGINT", "SIGTERM");
26057
+ if (process.platform !== "win32") signals.push("SIGALRM", "SIGABRT", "SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
26058
+ if (process.platform === "linux") signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
26059
+
26060
+ //#endregion
26061
+ //#region node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js
26062
+ const processOk = (process$3) => !!process$3 && typeof process$3 === "object" && typeof process$3.removeListener === "function" && typeof process$3.emit === "function" && typeof process$3.reallyExit === "function" && typeof process$3.listeners === "function" && typeof process$3.kill === "function" && typeof process$3.pid === "number" && typeof process$3.on === "function";
26063
+ const kExitEmitter = Symbol.for("signal-exit emitter");
26064
+ const global$1 = globalThis;
26065
+ const ObjectDefineProperty = Object.defineProperty.bind(Object);
26066
+ var Emitter = class {
26067
+ emitted = {
26068
+ afterExit: false,
26069
+ exit: false
26070
+ };
26071
+ listeners = {
26072
+ afterExit: [],
26073
+ exit: []
26074
+ };
26075
+ count = 0;
26076
+ id = Math.random();
26077
+ constructor() {
26078
+ if (global$1[kExitEmitter]) return global$1[kExitEmitter];
26079
+ ObjectDefineProperty(global$1, kExitEmitter, {
26080
+ value: this,
26081
+ writable: false,
26082
+ enumerable: false,
26083
+ configurable: false
26084
+ });
26085
+ }
26086
+ on(ev, fn) {
26087
+ this.listeners[ev].push(fn);
26088
+ }
26089
+ removeListener(ev, fn) {
26090
+ const list = this.listeners[ev];
26091
+ const i$3 = list.indexOf(fn);
26092
+ /* c8 ignore start */
26093
+ if (i$3 === -1) return;
26094
+ /* c8 ignore stop */
26095
+ if (i$3 === 0 && list.length === 1) list.length = 0;
26096
+ else list.splice(i$3, 1);
26097
+ }
26098
+ emit(ev, code, signal) {
26099
+ if (this.emitted[ev]) return false;
26100
+ this.emitted[ev] = true;
26101
+ let ret = false;
26102
+ for (const fn of this.listeners[ev]) ret = fn(code, signal) === true || ret;
26103
+ if (ev === "exit") ret = this.emit("afterExit", code, signal) || ret;
26104
+ return ret;
26105
+ }
26106
+ };
26107
+ var SignalExitBase = class {};
26108
+ const signalExitWrap = (handler) => {
26109
+ return {
26110
+ onExit(cb, opts) {
26111
+ return handler.onExit(cb, opts);
26112
+ },
26113
+ load() {
26114
+ return handler.load();
26115
+ },
26116
+ unload() {
26117
+ return handler.unload();
26118
+ }
26119
+ };
26120
+ };
26121
+ var SignalExitFallback = class extends SignalExitBase {
26122
+ onExit() {
26123
+ return () => {};
26124
+ }
26125
+ load() {}
26126
+ unload() {}
26127
+ };
26128
+ var SignalExit = class extends SignalExitBase {
26129
+ /* c8 ignore start */
26130
+ #hupSig = process$2.platform === "win32" ? "SIGINT" : "SIGHUP";
26131
+ /* c8 ignore stop */
26132
+ #emitter = new Emitter();
26133
+ #process;
26134
+ #originalProcessEmit;
26135
+ #originalProcessReallyExit;
26136
+ #sigListeners = {};
26137
+ #loaded = false;
26138
+ constructor(process$3) {
26139
+ super();
26140
+ this.#process = process$3;
26141
+ this.#sigListeners = {};
26142
+ for (const sig of signals) this.#sigListeners[sig] = () => {
26143
+ const listeners = this.#process.listeners(sig);
26144
+ let { count } = this.#emitter;
26145
+ /* c8 ignore start */
26146
+ const p = process$3;
26147
+ if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") count += p.__signal_exit_emitter__.count;
26148
+ /* c8 ignore stop */
26149
+ if (listeners.length === count) {
26150
+ this.unload();
26151
+ const ret = this.#emitter.emit("exit", null, sig);
26152
+ /* c8 ignore start */
26153
+ const s = sig === "SIGHUP" ? this.#hupSig : sig;
26154
+ if (!ret) process$3.kill(process$3.pid, s);
26155
+ }
26156
+ };
26157
+ this.#originalProcessReallyExit = process$3.reallyExit;
26158
+ this.#originalProcessEmit = process$3.emit;
26159
+ }
26160
+ onExit(cb, opts) {
26161
+ /* c8 ignore start */
26162
+ if (!processOk(this.#process)) return () => {};
26163
+ /* c8 ignore stop */
26164
+ if (this.#loaded === false) this.load();
26165
+ const ev = opts?.alwaysLast ? "afterExit" : "exit";
26166
+ this.#emitter.on(ev, cb);
26167
+ return () => {
26168
+ this.#emitter.removeListener(ev, cb);
26169
+ if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) this.unload();
26170
+ };
26171
+ }
26172
+ load() {
26173
+ if (this.#loaded) return;
26174
+ this.#loaded = true;
26175
+ this.#emitter.count += 1;
26176
+ for (const sig of signals) try {
26177
+ const fn = this.#sigListeners[sig];
26178
+ if (fn) this.#process.on(sig, fn);
26179
+ } catch (_$1) {}
26180
+ this.#process.emit = (ev, ...a) => {
26181
+ return this.#processEmit(ev, ...a);
26182
+ };
26183
+ this.#process.reallyExit = (code) => {
26184
+ return this.#processReallyExit(code);
26185
+ };
26186
+ }
26187
+ unload() {
26188
+ if (!this.#loaded) return;
26189
+ this.#loaded = false;
26190
+ signals.forEach((sig) => {
26191
+ const listener = this.#sigListeners[sig];
26192
+ /* c8 ignore start */
26193
+ if (!listener) throw new Error("Listener not defined for signal: " + sig);
26194
+ /* c8 ignore stop */
26195
+ try {
26196
+ this.#process.removeListener(sig, listener);
26197
+ } catch (_$1) {}
26198
+ /* c8 ignore stop */
26199
+ });
26200
+ this.#process.emit = this.#originalProcessEmit;
26201
+ this.#process.reallyExit = this.#originalProcessReallyExit;
26202
+ this.#emitter.count -= 1;
26203
+ }
26204
+ #processReallyExit(code) {
26205
+ /* c8 ignore start */
26206
+ if (!processOk(this.#process)) return 0;
26207
+ this.#process.exitCode = code || 0;
26208
+ /* c8 ignore stop */
26209
+ this.#emitter.emit("exit", this.#process.exitCode, null);
26210
+ return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode);
26211
+ }
26212
+ #processEmit(ev, ...args) {
26213
+ const og = this.#originalProcessEmit;
26214
+ if (ev === "exit" && processOk(this.#process)) {
26215
+ if (typeof args[0] === "number") this.#process.exitCode = args[0];
26216
+ /* c8 ignore start */
26217
+ const ret = og.call(this.#process, ev, ...args);
26218
+ /* c8 ignore start */
26219
+ this.#emitter.emit("exit", this.#process.exitCode, null);
26220
+ /* c8 ignore stop */
26221
+ return ret;
26222
+ } else return og.call(this.#process, ev, ...args);
26223
+ }
26224
+ };
26225
+ const process$2 = globalThis.process;
26226
+ const { onExit, load, unload } = signalExitWrap(processOk(process$2) ? new SignalExit(process$2) : new SignalExitFallback());
26227
+
26228
+ //#endregion
26229
+ //#region node_modules/.pnpm/@inquirer+ansi@1.0.2/node_modules/@inquirer/ansi/dist/esm/index.js
26230
+ const ESC = "\x1B[";
26231
+ /** Move cursor to first column */
26232
+ const cursorLeft = ESC + "G";
26233
+ /** Hide the cursor */
26234
+ const cursorHide = ESC + "?25l";
26235
+ /** Show the cursor */
26236
+ const cursorShow = ESC + "?25h";
26237
+ /** Move cursor up by count rows */
26238
+ const cursorUp = (rows = 1) => rows > 0 ? `${ESC}${rows}A` : "";
26239
+ /** Move cursor down by count rows */
26240
+ const cursorDown = (rows = 1) => rows > 0 ? `${ESC}${rows}B` : "";
26241
+ /** Move cursor to position (x, y) */
26242
+ const cursorTo = (x, y) => {
26243
+ if (typeof y === "number" && !Number.isNaN(y)) return `${ESC}${y + 1};${x + 1}H`;
26244
+ return `${ESC}${x + 1}G`;
26245
+ };
26246
+ const eraseLine = ESC + "2K";
26247
+ /** Erase the specified number of lines above the cursor */
26248
+ const eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
26249
+
26250
+ //#endregion
26251
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/screen-manager.js
26252
+ const height = (content) => content.split("\n").length;
26253
+ const lastLine = (content) => content.split("\n").pop() ?? "";
26254
+ var ScreenManager = class {
26255
+ height = 0;
26256
+ extraLinesUnderPrompt = 0;
26257
+ cursorPos;
26258
+ rl;
26259
+ constructor(rl) {
26260
+ this.rl = rl;
26261
+ this.cursorPos = rl.getCursorPos();
26262
+ }
26263
+ write(content) {
26264
+ this.rl.output.unmute();
26265
+ this.rl.output.write(content);
26266
+ this.rl.output.mute();
26267
+ }
26268
+ render(content, bottomContent = "") {
26269
+ const rawPromptLine = stripVTControlCharacters(lastLine(content));
26270
+ let prompt = rawPromptLine;
26271
+ if (this.rl.line.length > 0) prompt = prompt.slice(0, -this.rl.line.length);
26272
+ this.rl.setPrompt(prompt);
26273
+ this.cursorPos = this.rl.getCursorPos();
26274
+ const width = readlineWidth();
26275
+ content = breakLines(content, width);
26276
+ bottomContent = breakLines(bottomContent, width);
26277
+ if (rawPromptLine.length % width === 0) content += "\n";
26278
+ let output = content + (bottomContent ? "\n" + bottomContent : "");
26279
+ const bottomContentHeight = Math.floor(rawPromptLine.length / width) - this.cursorPos.rows + (bottomContent ? height(bottomContent) : 0);
26280
+ if (bottomContentHeight > 0) output += cursorUp(bottomContentHeight);
26281
+ output += cursorTo(this.cursorPos.cols);
26282
+ /**
26283
+ * Render and store state for future re-rendering
26284
+ */
26285
+ this.write(cursorDown(this.extraLinesUnderPrompt) + eraseLines(this.height) + output);
26286
+ this.extraLinesUnderPrompt = bottomContentHeight;
26287
+ this.height = height(output);
26288
+ }
26289
+ checkCursorPos() {
26290
+ const cursorPos = this.rl.getCursorPos();
26291
+ if (cursorPos.cols !== this.cursorPos.cols) {
26292
+ this.write(cursorTo(cursorPos.cols));
26293
+ this.cursorPos = cursorPos;
26294
+ }
26295
+ }
26296
+ done({ clearContent }) {
26297
+ this.rl.setPrompt("");
26298
+ let output = cursorDown(this.extraLinesUnderPrompt);
26299
+ output += clearContent ? eraseLines(this.height) : "\n";
26300
+ output += cursorShow;
26301
+ this.write(output);
26302
+ this.rl.close();
26303
+ }
26304
+ };
26305
+
26306
+ //#endregion
26307
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js
26308
+ var PromisePolyfill = class extends Promise {
26309
+ static withResolver() {
26310
+ let resolve$4;
26311
+ let reject;
26312
+ return {
26313
+ promise: new Promise((res, rej) => {
26314
+ resolve$4 = res;
26315
+ reject = rej;
26316
+ }),
26317
+ resolve: resolve$4,
26318
+ reject
26319
+ };
26320
+ }
26321
+ };
26322
+
26323
+ //#endregion
26324
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
26325
+ var import_lib = /* @__PURE__ */ __toESM(require_lib(), 1);
26326
+ function getCallSites() {
26327
+ const _prepareStackTrace = Error.prepareStackTrace;
26328
+ let result = [];
26329
+ try {
26330
+ Error.prepareStackTrace = (_$1, callSites) => {
26331
+ const callSitesWithoutCurrent = callSites.slice(1);
26332
+ result = callSitesWithoutCurrent;
26333
+ return callSitesWithoutCurrent;
26334
+ };
26335
+ (/* @__PURE__ */ new Error()).stack;
26336
+ } catch {
26337
+ return result;
26338
+ }
26339
+ Error.prepareStackTrace = _prepareStackTrace;
26340
+ return result;
26341
+ }
26342
+ function createPrompt(view) {
26343
+ const callSites = getCallSites();
26344
+ const prompt = (config, context = {}) => {
26345
+ const { input = process.stdin, signal } = context;
26346
+ const cleanups = /* @__PURE__ */ new Set();
26347
+ const output = new import_lib.default();
26348
+ output.pipe(context.output ?? process.stdout);
26349
+ const rl = readline.createInterface({
26350
+ terminal: true,
26351
+ input,
26352
+ output
26353
+ });
26354
+ const screen = new ScreenManager(rl);
26355
+ const { promise, resolve: resolve$4, reject } = PromisePolyfill.withResolver();
26356
+ const cancel = () => reject(new CancelPromptError());
26357
+ if (signal) {
26358
+ const abort = () => reject(new AbortPromptError({ cause: signal.reason }));
26359
+ if (signal.aborted) {
26360
+ abort();
26361
+ return Object.assign(promise, { cancel });
26362
+ }
26363
+ signal.addEventListener("abort", abort);
26364
+ cleanups.add(() => signal.removeEventListener("abort", abort));
26365
+ }
26366
+ cleanups.add(onExit((code, signal$1) => {
26367
+ reject(new ExitPromptError(`User force closed the prompt with ${code} ${signal$1}`));
26368
+ }));
26369
+ const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));
26370
+ rl.on("SIGINT", sigint);
26371
+ cleanups.add(() => rl.removeListener("SIGINT", sigint));
26372
+ const checkCursorPos = () => screen.checkCursorPos();
26373
+ rl.input.on("keypress", checkCursorPos);
26374
+ cleanups.add(() => rl.input.removeListener("keypress", checkCursorPos));
26375
+ return withHooks(rl, (cycle) => {
26376
+ const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());
26377
+ rl.on("close", hooksCleanup);
26378
+ cleanups.add(() => rl.removeListener("close", hooksCleanup));
26379
+ cycle(() => {
26380
+ try {
26381
+ const nextView = view(config, (value) => {
26382
+ setImmediate(() => resolve$4(value));
26383
+ });
26384
+ if (nextView === void 0) {
26385
+ const callerFilename = callSites[1]?.getFileName();
26386
+ throw new Error(`Prompt functions must return a string.\n at ${callerFilename}`);
26387
+ }
26388
+ const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView;
26389
+ screen.render(content, bottomContent);
26390
+ effectScheduler.run();
26391
+ } catch (error$2) {
26392
+ reject(error$2);
26393
+ }
26394
+ });
26395
+ return Object.assign(promise.then((answer) => {
26396
+ effectScheduler.clearAll();
26397
+ return answer;
26398
+ }, (error$2) => {
26399
+ effectScheduler.clearAll();
26400
+ throw error$2;
26401
+ }).finally(() => {
26402
+ cleanups.forEach((cleanup) => cleanup());
26403
+ screen.done({ clearContent: Boolean(context.clearPromptOnDone) });
26404
+ output.end();
26405
+ }).then(() => promise), { cancel });
26406
+ });
26407
+ };
26408
+ return prompt;
26409
+ }
26410
+
26411
+ //#endregion
26412
+ //#region node_modules/.pnpm/@inquirer+core@10.3.2_@types+node@22.19.1/node_modules/@inquirer/core/dist/esm/lib/Separator.js
26413
+ var import_yoctocolors_cjs = /* @__PURE__ */ __toESM(require_yoctocolors_cjs(), 1);
26414
+ /**
26415
+ * Separator object
26416
+ * Used to space/separate choices group
26417
+ */
26418
+ var Separator = class {
26419
+ separator = import_yoctocolors_cjs.default.dim(Array.from({ length: 15 }).join(esm_default$1.line));
26420
+ type = "separator";
26421
+ constructor(separator) {
26422
+ if (separator) this.separator = separator;
26423
+ }
26424
+ static isSeparator(choice) {
26425
+ return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
26426
+ }
26427
+ };
26428
+
26429
+ //#endregion
26430
+ //#region src/cli/prompts/multiSelect.ts
26431
+ const checkboxTheme = {
26432
+ icon: {
26433
+ checked: tone.success(esm_default.circleFilled),
26434
+ unchecked: esm_default.circle,
26435
+ cursor: esm_default.pointer
26436
+ },
26437
+ style: {
26438
+ disabledChoice: (text) => tone.muted(`- ${text}`),
26439
+ renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(", "),
26440
+ description: (text) => tone.info(text),
26441
+ keysHelpTip: (keys) => keys.map(([key$1, action]) => `${tone.bold(key$1)} ${tone.muted(action)}`).join(tone.muted(" • "))
26442
+ },
26443
+ helpMode: "always",
26444
+ keybindings: []
26445
+ };
26446
+ const isSelectable = (item) => !Separator.isSeparator(item) && !item.disabled;
26447
+ const isChecked = (item) => isSelectable(item) && item.checked === true;
26448
+ function normalizeChoices(choices, defaultChecked) {
26449
+ return choices.map((choice) => ({
26450
+ value: choice.value,
26451
+ name: choice.label,
26452
+ short: choice.label,
26453
+ checkedName: choice.label,
26454
+ description: choice.description,
26455
+ checked: choice.checked ?? defaultChecked,
26456
+ disabled: false
26457
+ }));
26458
+ }
26459
+ function buildPreview(command$1, selected) {
26460
+ if (!command$1) return void 0;
26461
+ const label = command$1.label ?? "Command";
26462
+ const base = command$1.base.trim();
26463
+ const renderedArgs = [...command$1.staticArgs?.filter(Boolean) ?? [], ...selected].map((arg) => tone.primary(arg)).join(" ");
26464
+ const renderedBase = tone.bold(tone.accent(base));
26465
+ const suffix = renderedArgs.length ? ` ${renderedArgs}` : tone.muted(" <none>");
26466
+ return `${tone.info(`${label}:`)} ${renderedBase}${suffix}`;
26467
+ }
26468
+ const promptImpl = createPrompt((config, done) => {
26469
+ const { instructions, pageSize = 12, loop = false, required, validate = () => true, defaultChecked = false, command: command$1 } = config;
26470
+ const shortcuts = {
26471
+ all: "a",
26472
+ invert: "i",
26473
+ ...config.shortcuts
26474
+ };
26475
+ const theme = makeTheme(checkboxTheme, config.theme);
26476
+ const { keybindings } = theme;
26477
+ const [status$1, setStatus] = useState("idle");
26478
+ const prefix = usePrefix({
26479
+ status: status$1,
26480
+ theme
26481
+ });
26482
+ const [items, setItems] = useState(normalizeChoices(config.choices, defaultChecked));
26483
+ const bounds = useMemo(() => {
26484
+ const first = items.findIndex(isSelectable);
26485
+ let last = -1;
26486
+ for (let i$3 = items.length - 1; i$3 >= 0; i$3 -= 1) if (isSelectable(items[i$3])) {
26487
+ last = i$3;
26488
+ break;
26489
+ }
26490
+ if (first === -1) throw new ValidationError("[checkbox prompt] No selectable choices. All choices are disabled.");
26491
+ return {
26492
+ first,
26493
+ last
26494
+ };
26495
+ }, [items]);
26496
+ const [active, setActive] = useState(bounds.first);
26497
+ const [errorMsg, setError] = useState();
26498
+ useKeypress(async (key$1) => {
26499
+ if (key$1.name === shortcuts.all) {
26500
+ const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);
26501
+ setItems(items.map((choice) => isSelectable(choice) ? {
26502
+ ...choice,
26503
+ checked: selectAll
26504
+ } : choice));
26505
+ setError(void 0);
26506
+ return;
26507
+ }
26508
+ if (key$1.name === shortcuts.invert) {
26509
+ setItems(items.map((choice) => isSelectable(choice) ? {
26510
+ ...choice,
26511
+ checked: !choice.checked
26512
+ } : choice));
26513
+ setError(void 0);
26514
+ return;
26515
+ }
26516
+ if (isSpaceKey(key$1)) {
26517
+ setItems(items.map((choice, idx) => idx === active ? {
26518
+ ...choice,
26519
+ checked: !choice.checked
26520
+ } : choice));
26521
+ setError(void 0);
26522
+ return;
26523
+ }
26524
+ if (isEnterKey(key$1)) {
26525
+ const selection = items.filter(isChecked);
26526
+ const isValid = await validate([...selection]);
26527
+ if (required && !selection.length) setError("At least one choice must be selected");
26528
+ else if (isValid === true) {
26529
+ setStatus("done");
26530
+ done(selection.map((choice) => choice.value));
26531
+ } else setError(typeof isValid === "string" ? isValid : "You must select a valid value");
26532
+ return;
26533
+ }
26534
+ if (isUpKey(key$1, keybindings) || isDownKey(key$1, keybindings)) {
26535
+ if (loop || isUpKey(key$1, keybindings) && active !== bounds.first || isDownKey(key$1, keybindings) && active !== bounds.last) {
26536
+ const offset = isUpKey(key$1, keybindings) ? -1 : 1;
26537
+ let next = active;
26538
+ do
26539
+ next = (next + offset + items.length) % items.length;
26540
+ while (!isSelectable(items[next]));
26541
+ setActive(next);
26542
+ }
26543
+ return;
26544
+ }
26545
+ if (isNumberKey(key$1)) {
26546
+ const selectedIndex = Number(key$1.name) - 1;
26547
+ let selectableIndex = -1;
26548
+ const position = items.findIndex((item) => {
26549
+ if (Separator.isSeparator(item)) return false;
26550
+ selectableIndex += 1;
26551
+ return selectableIndex === selectedIndex;
26552
+ });
26553
+ const selectedItem = items[position];
26554
+ if (selectedItem && isSelectable(selectedItem)) {
26555
+ setActive(position);
26556
+ setItems(items.map((choice, i$3) => i$3 === position ? {
26557
+ ...choice,
26558
+ checked: !choice.checked
26559
+ } : choice));
26560
+ }
26561
+ }
26562
+ });
26563
+ const message = theme.style.message(config.message, status$1);
26564
+ const preview = buildPreview(command$1, items.filter(isChecked).map((c) => c.value));
26565
+ let description;
26566
+ const page = usePagination({
26567
+ items,
26568
+ active,
26569
+ renderItem({ item, isActive }) {
26570
+ if (Separator.isSeparator(item)) return ` ${item.separator}`;
26571
+ if (item.disabled) {
26572
+ const disabledLabel = typeof item.disabled === "string" ? item.disabled : "(disabled)";
26573
+ return theme.style.disabledChoice(`${item.name} ${disabledLabel}`);
26574
+ }
26575
+ if (isActive && config.showActiveDescription) description = item.description;
26576
+ const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;
26577
+ const name = item.checked ? item.checkedName : item.name;
26578
+ return (isActive ? theme.style.highlight : (x) => x)(`${isActive ? theme.icon.cursor : " "}${checkbox} ${name}`);
26579
+ },
26580
+ pageSize,
26581
+ loop
26582
+ });
26583
+ if (status$1 === "done") {
26584
+ const selection = items.filter(isChecked);
26585
+ return [
26586
+ prefix,
26587
+ message,
26588
+ theme.style.answer(theme.style.renderSelectedChoices(selection, items))
26589
+ ].filter(Boolean).join(" ");
26590
+ }
26591
+ let helpLine;
26592
+ if (theme.helpMode !== "never" && instructions !== false) if (typeof instructions === "string") helpLine = instructions;
26593
+ else {
26594
+ const keys = [["↑↓", "navigate"], ["space", "select"]];
26595
+ if (shortcuts.all) keys.push([shortcuts.all, "all"]);
26596
+ if (shortcuts.invert) keys.push([shortcuts.invert, "invert"]);
26597
+ keys.push(["⏎", "submit"]);
26598
+ helpLine = theme.style.keysHelpTip(keys);
26599
+ }
26600
+ return [
26601
+ [prefix, message].filter(Boolean).join(" "),
26602
+ page,
26603
+ " ",
26604
+ preview,
26605
+ description ? theme.style.description(description) : "",
26606
+ errorMsg ? theme.style.error(errorMsg) : "",
26607
+ helpLine
26608
+ ].filter(Boolean).join("\n").trimEnd();
26609
+ });
26610
+ function promptMultiSelect(options) {
26611
+ return promptImpl(options);
26612
+ }
26613
+
26614
+ //#endregion
26615
+ //#region src/cli/commands/install.ts
26616
+ function normalizeSourcePath(source) {
26617
+ return source.startsWith("file://") ? new URL(source).pathname : source;
26618
+ }
26619
+ function ensureDir(dir) {
26620
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
26621
+ }
26622
+ function installSkillDir(skillDir, targetRoot, force = false) {
26623
+ const skillFile = join(skillDir, "SKILL.md");
26624
+ if (!existsSync(skillFile)) throw new Error(`No SKILL.md found in ${skillDir}`);
26625
+ const skillName = parseSkillFile(skillFile).frontmatter.name;
26626
+ const destDir = join(targetRoot, skillName);
26627
+ ensureDir(targetRoot);
26628
+ if (!force && existsSync(destDir)) throw new Error(`Skill '${skillName}' already exists at ${destDir} (use --force/--override to overwrite)`);
26629
+ cpSync(skillDir, destDir, {
26630
+ recursive: true,
26631
+ force: true
26632
+ });
26633
+ return destDir;
26634
+ }
26635
+ var MultiSkillSelectionError = class extends Error {
26636
+ constructor(message, listing) {
26637
+ super(message);
26638
+ this.listing = listing;
26639
+ this.name = "MultiSkillSelectionError";
26640
+ }
26641
+ };
26642
+ async function installCommand(argv) {
26643
+ if (argv.noColor || process.env.FORCE_COLOR === "0") setColorEnabled(false);
26644
+ if (argv.color) setColorEnabled(true);
26645
+ try {
26646
+ const targetRoot = argv.global ? join(process.env.HOME ?? "~", ".claude/skills") : join(process.cwd(), ".claude/skills");
26647
+ const materialized = await materializeSource(argv.source);
26648
+ const targets = resolveInstallTargets(materialized.base, argv.use ?? materialized.useHint);
26649
+ if (targets.length === 0) throw new Error(`No skills found to install in ${materialized.base}`);
26650
+ const force = argv.force === true || argv.override === true;
26651
+ const selection = await selectSkills(targets, argv, argv.source);
26652
+ const installed = [];
26653
+ for (const entry of selection) installed.push(installSkillDir(entry.dir, targetRoot, force));
26654
+ console.log(success(`Installed ${installed.length} skill(s):`));
26655
+ installed.forEach((d) => console.log(` - ${d}`));
26656
+ } catch (err) {
26657
+ if (err instanceof MultiSkillSelectionError) {
26658
+ const advisory = warn(`Input needed: ${err.message}`);
26659
+ console.log(advisory);
26660
+ console.log(err.listing.trimEnd());
26661
+ console.log(`\n${advisory}`);
26662
+ } else console.error(error(`Install failed: ${err instanceof Error ? err.message : String(err)}`));
26663
+ process.exitCode = 1;
26664
+ }
26665
+ }
26666
+ function parseGithubTree(url) {
26667
+ const parts = url.pathname.split("/").filter(Boolean);
26668
+ if (parts.length >= 4 && parts[2] === "tree") {
26669
+ const [owner, repo, , ref, ...rest] = parts;
26670
+ return {
26671
+ repo: `https://github.com/${owner}/${repo}.git`,
26672
+ ref,
26673
+ subdir: rest.length ? rest.join("/") : void 0
26674
+ };
26675
+ }
26676
+ return null;
26677
+ }
26678
+ function parseGithubBlob(url) {
26679
+ const parts = url.pathname.split("/").filter(Boolean);
26680
+ if (parts.length >= 5 && parts[2] === "blob") {
26681
+ const [owner, repo, , ref, ...rest] = parts;
26682
+ return {
26683
+ repo: `https://github.com/${owner}/${repo}.git`,
26684
+ ref,
26685
+ path: rest.join("/")
26686
+ };
26687
+ }
26688
+ return null;
26689
+ }
26690
+ async function materializeSource(source) {
26691
+ if (source.startsWith("file://")) return { base: new URL(source).pathname };
26692
+ if (source.startsWith("http://") || source.startsWith("https://") || source.endsWith(".git")) {
26693
+ let repo = source;
26694
+ let ref;
26695
+ let subdir;
26696
+ let useHint;
26697
+ try {
26698
+ const url = new URL(source);
26699
+ const ghTree = parseGithubTree(url);
26700
+ if (ghTree) {
26701
+ repo = ghTree.repo;
26702
+ ref = ghTree.ref;
26703
+ subdir = ghTree.subdir;
26704
+ } else {
26705
+ const ghBlob = parseGithubBlob(url);
26706
+ if (ghBlob) {
26707
+ repo = ghBlob.repo;
26708
+ ref = ghBlob.ref;
26709
+ useHint = ghBlob.path;
26710
+ }
26711
+ }
26712
+ } catch {}
26713
+ const tmp = mkdtempSync(join(tmpdir(), "ccski-install-"));
26714
+ const clone = [
26715
+ "git",
26716
+ "clone",
26717
+ "--depth",
26718
+ "1"
26719
+ ];
26720
+ if (ref) clone.push("--branch", ref);
26721
+ clone.push(repo, tmp);
26722
+ execSync(clone.join(" "), { stdio: "ignore" });
26723
+ return {
26724
+ base: subdir ? join(tmp, subdir) : tmp,
26725
+ useHint
26726
+ };
26727
+ }
26728
+ return { base: normalizeSourcePath(source) };
26729
+ }
26730
+ function resolveSkillPath(baseDir, rel) {
26731
+ const cleaned = rel.replace(/^\.\//, "");
26732
+ const candidates = [];
26733
+ if (cleaned.endsWith("SKILL.md")) {
26734
+ candidates.push(dirname(join(baseDir, cleaned)));
26735
+ candidates.push(dirname(join(baseDir, "..", cleaned)));
26736
+ } else {
26737
+ candidates.push(join(baseDir, cleaned));
26738
+ candidates.push(join(baseDir, "..", cleaned));
26739
+ }
26740
+ for (const dir of candidates) if (existsSync(join(dir, "SKILL.md"))) return dir;
26741
+ return null;
26742
+ }
26743
+ function marketplaceSkills(marketplacePath) {
26744
+ const data = JSON.parse(readFileSync(marketplacePath, "utf8"));
26745
+ const dir = dirname(marketplacePath);
26746
+ const plugins = Array.isArray(data.plugins) ? data.plugins : [];
26747
+ const skillPaths = /* @__PURE__ */ new Set();
26748
+ for (const plugin of plugins) {
26749
+ if (!plugin || !Array.isArray(plugin.skills)) continue;
26750
+ for (const rel of plugin.skills) {
26751
+ if (typeof rel !== "string") continue;
26752
+ const resolved = resolveSkillPath(dir, rel);
26753
+ if (resolved) skillPaths.add(resolve(resolved));
26754
+ }
26755
+ }
26756
+ return Array.from(skillPaths);
26757
+ }
26758
+ function resolveInstallTargets(root, usePath) {
26759
+ const base = resolve(root);
26760
+ const candidatePath = usePath ? resolve(base, usePath) : base;
26761
+ if (!usePath && base.toLowerCase().endsWith("skill.md") && existsSync(base)) return [dirname(base)];
26762
+ if (usePath && candidatePath.toLowerCase().endsWith("skill.md") && existsSync(candidatePath)) return [dirname(candidatePath)];
26763
+ if (usePath && existsSync(candidatePath) && statSync(candidatePath).isDirectory()) {
26764
+ if (existsSync(join(candidatePath, "SKILL.md"))) return [candidatePath];
26765
+ if (existsSync(join(candidatePath, "marketplace.json"))) return marketplaceSkills(join(candidatePath, "marketplace.json"));
26766
+ }
26767
+ if ((usePath || !statSync(base).isDirectory()) && existsSync(candidatePath) && candidatePath.endsWith("marketplace.json")) return marketplaceSkills(candidatePath);
26768
+ if (existsSync(join(base, ".claude-plugin", "marketplace.json"))) return marketplaceSkills(join(base, ".claude-plugin", "marketplace.json"));
26769
+ if (existsSync(join(base, "SKILL.md"))) return [base];
26770
+ if (existsSync(join(base, "marketplace.json"))) return marketplaceSkills(join(base, "marketplace.json"));
26771
+ throw new Error(`No SKILL.md or marketplace.json found in ${base}${usePath ? ` (use: ${usePath})` : ""}`);
26772
+ }
26773
+ function buildSkillEntries(dirs) {
26774
+ return dirs.map((dir) => {
26775
+ const parsed = parseSkillFile(join(dir, "SKILL.md"));
26776
+ return {
26777
+ name: parsed.frontmatter.name,
26778
+ description: parsed.frontmatter.description ?? "",
26779
+ dir
26780
+ };
26781
+ });
26782
+ }
26783
+ async function promptSelectSkills(entries, sourceLabel) {
26784
+ const pickedNames = await promptMultiSelect({
26785
+ message: `Select skills to install from ${sourceLabel}`,
26786
+ choices: entries.map((e) => ({
26787
+ value: e.name,
26788
+ label: formatChoiceLabel$1(e),
26789
+ description: e.description,
26790
+ checked: true
26791
+ })),
26792
+ defaultChecked: true,
26793
+ command: {
26794
+ base: "ccski install",
26795
+ staticArgs: [sourceLabel]
26796
+ }
26797
+ });
26798
+ if (!Array.isArray(pickedNames) || pickedNames.length === 0) throw new Error("No skills selected.");
26799
+ const pickedSet = new Set(pickedNames.map((n) => n.toLowerCase()));
26800
+ return entries.filter((e) => pickedSet.has(e.name.toLowerCase()));
26801
+ }
26802
+ function parseSelectors(argv) {
26803
+ return (argv._ ? argv._.slice(1) : []).flatMap((val) => String(val).split(/[\/,]/)).map((s) => s.trim()).filter(Boolean);
26804
+ }
26805
+ async function selectSkills(targetDirs, argv, sourceLabel) {
26806
+ const entries = buildSkillEntries(targetDirs);
26807
+ if (entries.length === 1) return entries;
26808
+ const listing = formatSkillListing(entries, sourceLabel);
26809
+ const selectors = parseSelectors(argv);
26810
+ if (argv.all) return entries;
26811
+ if (argv.interactive) {
26812
+ if (!process.stdin.isTTY || !process.stdout.isTTY) throw new MultiSkillSelectionError(`Interactive mode requires a TTY. Specify names or use --all instead for ${sourceLabel}.`, listing);
26813
+ return await promptSelectSkills(entries, sourceLabel);
26814
+ }
26815
+ if (selectors.length === 0) throw new MultiSkillSelectionError(`Multiple skills found (${entries.length}) in ${sourceLabel}. Specify names, use --all, or --interactive.`, listing);
26816
+ const selected = [];
26817
+ const names$1 = entries.map((e) => e.name);
26818
+ for (const raw of selectors) {
26819
+ const sel = raw.trim();
26820
+ const lower = sel.toLowerCase();
26821
+ let match;
26822
+ const exact = entries.find((e) => e.name.toLowerCase() === lower);
26823
+ if (exact) match = exact;
26824
+ else {
26825
+ const partial = entries.filter((e) => e.name.toLowerCase().includes(lower));
26826
+ if (partial.length === 1) match = partial[0];
26827
+ }
26828
+ if (!match) {
26829
+ const rankedIdx = rankStrings(names$1, sel);
26830
+ const ranked = (rankedIdx.length ? rankedIdx : names$1.map((_$1, idx) => idx)).slice(0, 3).map((i$3) => names$1[i$3]);
26831
+ const hint = ranked.length ? ` Did you mean: ${ranked.join(", ")}?` : "";
26832
+ throw new Error(`Skill '${sel}' not found.${hint}`);
26833
+ }
26834
+ if (!selected.some((s) => s.name === match.name)) selected.push(match);
26835
+ }
26836
+ return selected;
26837
+ }
26838
+ function formatSkillListing(entries, label) {
26839
+ return `${heading(`Available skills from ${label}`)} (${entries.length})\n` + renderList(entries.map((e) => ({
26840
+ title: e.name,
26841
+ description: e.description
26842
+ })));
26843
+ }
26844
+ function formatChoiceLabel$1(entry) {
26845
+ const wrapWidth = Math.max(24, Math.min(process.stdout?.columns ?? 80, 120) - 6);
26846
+ const description = entry.description ? "\n " + wrap(entry.description, {
26847
+ width: wrapWidth,
26848
+ indent: "",
26849
+ newline: "\n",
26850
+ trim: true,
26851
+ cut: false
26852
+ }).replace(/\n/g, "\n ") : "";
26853
+ return `${tone.primary(entry.name)}${description}`;
26854
+ }
26855
+
26856
+ //#endregion
26857
+ //#region src/cli/commands/toggle.ts
26858
+ async function enableCommand(argv) {
26859
+ await toggleCommand("enable", argv);
26860
+ }
26861
+ async function disableCommand(argv) {
26862
+ await toggleCommand("disable", argv);
26863
+ }
26864
+ async function toggleCommand(mode, argv) {
26865
+ if (argv.noColor || process.env.FORCE_COLOR === "0") setColorEnabled(false);
26866
+ if (argv.color) setColorEnabled(true);
26867
+ const skills = new SkillRegistry(buildRegistryOptions(argv, { includeDisabled: true })).getAll();
26868
+ const candidates = mode === "disable" ? skills.filter((s) => !s.disabled) : skills.filter((s) => s.disabled);
26869
+ if (candidates.length === 0) {
26870
+ console.log(mode === "disable" ? warn("No enabled skills found to disable.") : warn("No disabled skills found to enable."));
26871
+ return;
26872
+ }
26873
+ try {
26874
+ const selected = await pickSkills(mode, candidates, argv);
26875
+ const force = argv.force === true || argv.override === true;
26876
+ const succeeded = [];
26877
+ const failures = [];
26878
+ for (const skill of selected) try {
26879
+ if (mode === "disable") disableSkill(skill, force);
26880
+ else enableSkill(skill, force);
26881
+ succeeded.push(skill.name);
26882
+ } catch (err) {
26883
+ failures.push(skill.name);
26884
+ console.error(error(`${capitalize(mode)} ${skill.name} failed: ${err instanceof Error ? err.message : String(err)}`));
26885
+ }
26886
+ if (succeeded.length) {
26887
+ console.log(success(`${capitalize(mode)}d ${succeeded.length} skill(s):`));
26888
+ succeeded.forEach((name) => console.log(` - ${name}`));
26889
+ }
26890
+ if (failures.length) process.exitCode = 1;
26891
+ } catch (err) {
26892
+ if (err instanceof MultiSelectError) {
26893
+ const advisory = warn(`Input needed: ${err.message}`);
26894
+ console.log(advisory);
26895
+ console.log(err.listing.trimEnd());
26896
+ console.log(`\n${advisory}`);
26897
+ process.exitCode = 1;
26898
+ return;
26899
+ }
26900
+ console.error(error(err instanceof Error ? err.message : String(err)));
26901
+ process.exitCode = 1;
26902
+ }
26903
+ }
26904
+ var MultiSelectError = class extends Error {
26905
+ constructor(message, listing) {
26906
+ super(message);
26907
+ this.listing = listing;
26908
+ this.name = "MultiSelectError";
26909
+ }
26910
+ };
26911
+ async function pickSkills(mode, candidates, argv) {
26912
+ const selectors = parseNames(argv);
26913
+ const listing = `${heading(mode === "disable" ? "Enabled skills" : "Disabled skills")} (${candidates.length})\n${renderList(toListItems(candidates))}`;
26914
+ if (argv.all) return candidates;
26915
+ if (selectors.length > 0) return resolveSelectors(selectors, candidates);
26916
+ if (argv.interactive) {
26917
+ if (!process.stdin.isTTY || !process.stdout.isTTY) throw new MultiSelectError("Interactive mode requires a TTY.", listing);
26918
+ const names$1 = await promptMultiSelect({
26919
+ message: mode === "disable" ? "Select skills to disable" : "Select skills to enable",
26920
+ choices: candidates.map((skill) => ({
26921
+ value: skill.name,
26922
+ label: formatChoiceLabel(skill),
26923
+ description: skill.description,
26924
+ checked: false
26925
+ })),
26926
+ defaultChecked: false,
26927
+ command: { base: `ccski ${mode}` }
26928
+ });
26929
+ if (!Array.isArray(names$1) || names$1.length === 0) throw new MultiSelectError("No skills selected.", listing);
26930
+ const pickedSet = new Set(names$1.map((n) => n.toLowerCase()));
26931
+ return candidates.filter((c) => pickedSet.has(c.name.toLowerCase()));
26932
+ }
26933
+ throw new MultiSelectError(`Multiple skills available. Provide names, use --all, or enable interactive mode (-i).`, listing);
26934
+ }
26935
+ function parseNames(argv) {
26936
+ return [].concat(Array.isArray(argv.names) ? argv.names : [], (argv._ ?? []).slice(1).map(String)).flatMap((item) => item.split(/[\\/,]/)).map((s) => s.trim()).filter(Boolean);
26937
+ }
26938
+ function resolveSelectors(selectors, candidates) {
26939
+ const names$1 = candidates.map((c) => c.name);
26940
+ const picked = [];
26941
+ for (const raw of selectors) {
26942
+ const lower = raw.toLowerCase();
26943
+ const exact = candidates.find((c) => c.name.toLowerCase() === lower);
26944
+ if (exact) {
26945
+ if (!picked.some((p) => p.name === exact.name)) picked.push(exact);
26946
+ continue;
26947
+ }
26948
+ const partial = candidates.filter((c) => c.name.toLowerCase().includes(lower));
26949
+ if (partial.length === 1) {
26950
+ picked.push(partial[0]);
26951
+ continue;
26952
+ }
26953
+ const rankedIdx = rankStrings(names$1, raw);
26954
+ const suggestions = (rankedIdx.length ? rankedIdx : names$1.map((_$1, idx) => idx)).slice(0, 3).map((i$3) => names$1[i$3]);
26955
+ const hint = suggestions.length ? ` Did you mean: ${suggestions.join(", ")}?` : "";
26956
+ throw new Error(`Skill '${raw}' not found among candidates.${hint}`);
26957
+ }
26958
+ return picked;
26959
+ }
26960
+ function disableSkill(skill, force) {
26961
+ const skillFile = join(skill.path, "SKILL.md");
26962
+ const disabledFile = join(skill.path, ".SKILL.md");
26963
+ const hasSkill = existsSync(skillFile);
26964
+ const hasDisabled = existsSync(disabledFile);
26965
+ if (!hasSkill && !hasDisabled) throw new Error("No SKILL.md found in directory.");
26966
+ if (!hasSkill && hasDisabled) throw new Error("Skill is already disabled.");
26967
+ if (hasSkill && hasDisabled && !force) throw new Error("Both SKILL.md and .SKILL.md exist. Use --force to overwrite the disabled copy.");
26968
+ if (hasDisabled && force) rmSync(disabledFile);
26969
+ if (hasSkill) renameSync(skillFile, disabledFile);
26970
+ }
26971
+ function enableSkill(skill, force) {
26972
+ const skillFile = join(skill.path, "SKILL.md");
26973
+ const disabledFile = join(skill.path, ".SKILL.md");
26974
+ const hasSkill = existsSync(skillFile);
26975
+ const hasDisabled = existsSync(disabledFile);
26976
+ if (!hasSkill && !hasDisabled) throw new Error("No .SKILL.md found to enable.");
26977
+ if (hasSkill && !hasDisabled) throw new Error("Skill is already enabled.");
26978
+ if (hasSkill && hasDisabled && !force) throw new Error("Both SKILL.md and .SKILL.md exist. Use --force to replace SKILL.md with the disabled copy.");
26979
+ if (hasSkill && force) rmSync(skillFile);
26980
+ if (!hasDisabled) throw new Error("No .SKILL.md found to enable.");
26981
+ renameSync(disabledFile, skillFile);
26982
+ }
26983
+ function toListItems(skills) {
26984
+ return skills.map((skill) => ({
26985
+ title: skill.name,
26986
+ color: skill.disabled ? tone.danger : void 0,
26987
+ badge: skill.disabled ? tone.danger("[disabled]") : void 0,
26988
+ meta: skill.location === "plugin" ? skill.pluginInfo?.pluginName ?? dim(skill.location) : dim(skill.location),
26989
+ description: skill.description
26990
+ }));
26991
+ }
26992
+ function formatChoiceLabel(skill) {
26993
+ const wrapWidth = Math.max(24, Math.min(process.stdout?.columns ?? 80, 120) - 6);
26994
+ const description = skill.description ? "\n " + wrap(skill.description, {
26995
+ width: wrapWidth,
26996
+ indent: "",
26997
+ newline: "\n",
26998
+ trim: true,
26999
+ cut: false
27000
+ }).replace(/\n/g, "\n ") : "";
27001
+ return `${tone.primary(skill.name)}${description}`;
27002
+ }
27003
+ function capitalize(value) {
27004
+ return value.charAt(0).toUpperCase() + value.slice(1);
27005
+ }
27006
+
27007
+ //#endregion
27008
+ //#region src/cli.ts
27009
+ const listModule = {
27010
+ command: "list",
27011
+ describe: "List all available skills",
27012
+ builder: (cmd) => cmd.option("format", {
27013
+ alias: "f",
27014
+ choices: ["plain", "json"],
27015
+ default: "plain"
27016
+ }).option("all", {
27017
+ type: "boolean",
27018
+ default: false,
27019
+ description: "Show enabled and disabled skills"
27020
+ }).option("disabled", {
27021
+ type: "boolean",
27022
+ default: false,
27023
+ description: "Show only disabled skills"
27024
+ }).option("scan-default-dirs", {
27025
+ type: "boolean",
27026
+ default: true,
27027
+ description: "Scan built-in .agent/.claude directories"
27028
+ }),
27029
+ handler: listCommand
27030
+ };
27031
+ const infoModule = {
27032
+ command: "info <name>",
27033
+ describe: "Show detailed info for a skill",
27034
+ builder: (cmd) => cmd.positional("name", {
27035
+ type: "string",
27036
+ demandOption: true
27037
+ }).option("full", {
27038
+ type: "boolean",
27039
+ default: false,
27040
+ description: "Show full SKILL.md"
27041
+ }).option("scan-default-dirs", {
27042
+ type: "boolean",
27043
+ default: true
27044
+ }),
27045
+ handler: infoCommand
27046
+ };
27047
+ const searchModule = {
27048
+ command: "search <query>",
27049
+ describe: "Search for skills",
27050
+ builder: (cmd) => cmd.positional("query", {
27051
+ type: "string",
27052
+ demandOption: true
27053
+ }).option("content", {
27054
+ type: "boolean",
27055
+ default: false,
27056
+ description: "Search inside SKILL.md content"
27057
+ }).option("format", {
27058
+ alias: "f",
27059
+ choices: ["plain", "json"],
27060
+ default: "plain"
27061
+ }).option("scan-default-dirs", {
27062
+ type: "boolean",
27063
+ default: true
27064
+ }),
27065
+ handler: searchCommand
27066
+ };
27067
+ const validateModule = {
27068
+ command: "validate <path>",
27069
+ describe: "Validate a SKILL.md or skill directory",
27070
+ builder: (cmd) => cmd.positional("path", {
27071
+ type: "string",
27072
+ demandOption: true
27073
+ }),
27074
+ handler: validateCommand
27075
+ };
27076
+ const mcpModule = {
27077
+ command: "mcp",
27078
+ describe: "Start MCP server",
27079
+ builder: (cmd) => cmd.option("refresh-interval", {
27080
+ type: "number",
27081
+ description: "Auto refresh interval (ms)",
27082
+ default: 3e4
27083
+ }).option("no-refresh", {
27084
+ type: "boolean",
27085
+ description: "Disable auto refresh"
27086
+ }).option("transport", {
27087
+ choices: [
27088
+ "stdio",
27089
+ "http",
27090
+ "sse"
27091
+ ],
27092
+ default: "stdio",
27093
+ description: "Transport for MCP server"
27094
+ }).option("port", {
22969
27095
  type: "number",
22970
27096
  description: "Port for HTTP/SSE transport",
22971
27097
  default: 3e3
@@ -22979,6 +27105,102 @@ const mcpModule = {
22979
27105
  }),
22980
27106
  handler: mcpCommand
22981
27107
  };
27108
+ const installModule = {
27109
+ command: "install <source>",
27110
+ describe: "Install a skill into .claude/skills",
27111
+ builder: (cmd) => cmd.positional("source", {
27112
+ type: "string",
27113
+ demandOption: true
27114
+ }).option("global", {
27115
+ type: "boolean",
27116
+ default: false,
27117
+ description: "Install to ~/.claude/skills"
27118
+ }).option("force", {
27119
+ type: "boolean",
27120
+ default: false,
27121
+ description: "Overwrite if skill already exists"
27122
+ }).option("override", {
27123
+ type: "boolean",
27124
+ default: false,
27125
+ description: "Alias for --force"
27126
+ }).option("use", {
27127
+ type: "string",
27128
+ description: "Explicit SKILL.md or marketplace.json path inside source"
27129
+ }).option("interactive", {
27130
+ alias: "i",
27131
+ type: "boolean",
27132
+ default: false,
27133
+ description: "Interactively choose skills (requires TTY)"
27134
+ }).option("all", {
27135
+ alias: "a",
27136
+ type: "boolean",
27137
+ default: false,
27138
+ description: "Install all discovered skills"
27139
+ }),
27140
+ handler: installCommand
27141
+ };
27142
+ const disableModule = {
27143
+ command: "disable [names...]",
27144
+ describe: "Disable skills by renaming SKILL.md to .SKILL.md",
27145
+ builder: (cmd) => cmd.positional("names", {
27146
+ type: "string",
27147
+ array: true
27148
+ }).option("interactive", {
27149
+ alias: "i",
27150
+ type: "boolean",
27151
+ default: false,
27152
+ description: "Interactively choose skills to disable"
27153
+ }).option("all", {
27154
+ alias: "a",
27155
+ type: "boolean",
27156
+ default: false,
27157
+ description: "Disable all available skills"
27158
+ }).option("force", {
27159
+ alias: "f",
27160
+ type: "boolean",
27161
+ default: false,
27162
+ description: "Overwrite when both SKILL.md and .SKILL.md exist"
27163
+ }).option("override", {
27164
+ type: "boolean",
27165
+ default: false,
27166
+ description: "Alias for --force"
27167
+ }).option("scan-default-dirs", {
27168
+ type: "boolean",
27169
+ default: true
27170
+ }),
27171
+ handler: disableCommand
27172
+ };
27173
+ const enableModule = {
27174
+ command: "enable [names...]",
27175
+ describe: "Enable skills by restoring SKILL.md from .SKILL.md",
27176
+ builder: (cmd) => cmd.positional("names", {
27177
+ type: "string",
27178
+ array: true
27179
+ }).option("interactive", {
27180
+ alias: "i",
27181
+ type: "boolean",
27182
+ default: false,
27183
+ description: "Interactively choose skills to enable"
27184
+ }).option("all", {
27185
+ alias: "a",
27186
+ type: "boolean",
27187
+ default: false,
27188
+ description: "Enable all disabled skills"
27189
+ }).option("force", {
27190
+ alias: "f",
27191
+ type: "boolean",
27192
+ default: false,
27193
+ description: "Overwrite when both SKILL.md and .SKILL.md exist"
27194
+ }).option("override", {
27195
+ type: "boolean",
27196
+ default: false,
27197
+ description: "Alias for --force"
27198
+ }).option("scan-default-dirs", {
27199
+ type: "boolean",
27200
+ default: true
27201
+ }),
27202
+ handler: enableCommand
27203
+ };
22982
27204
  await yargs_default(hideBin(process.argv)).scriptName("ccski").usage("$0 <command> [options]").option("no-color", {
22983
27205
  type: "boolean",
22984
27206
  description: "Disable colored output",
@@ -23005,7 +27227,7 @@ await yargs_default(hideBin(process.argv)).scriptName("ccski").usage("$0 <comman
23005
27227
  }).option("plugins-root", {
23006
27228
  type: "string",
23007
27229
  description: "Root directory for plugin install paths"
23008
- }).command(listModule).command(infoModule).command(searchModule).command(validateModule).command(mcpModule).demandCommand(1, "Please provide a command").strict().help().alias("h", "help").alias("v", "version").parse();
27230
+ }).command(listModule).command(infoModule).command(searchModule).command(validateModule).command(mcpModule).command(installModule).command(disableModule).command(enableModule).demandCommand(1, "Please provide a command").strict().help().alias("h", "help").alias("v", "version").parse();
23009
27231
 
23010
27232
  //#endregion
23011
27233
  export { };