@snowyroad/braid 0.79.5 → 0.80.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.js CHANGED
@@ -5340,7 +5340,7 @@ function pinCurrentRuntime(opts = {}) {
5340
5340
  mkdirSync3(versionDir, { recursive: true });
5341
5341
  cpSync(join5(sourceDir, "dist"), join5(versionDir, "dist"), { recursive: true, force: true });
5342
5342
  cpSync(join5(sourceDir, "package.json"), join5(versionDir, "package.json"), { force: true });
5343
- const shrinkwrapSrc = join5(sourceDir, "npm-shrinkwrap.json");
5343
+ const shrinkwrapSrc = join5(sourceDir, "service-shrinkwrap.json");
5344
5344
  const hasShrinkwrap = existsSync2(shrinkwrapSrc);
5345
5345
  if (hasShrinkwrap) {
5346
5346
  cpSync(shrinkwrapSrc, join5(versionDir, "npm-shrinkwrap.json"), { force: true });
@@ -6959,6 +6959,7 @@ function startUpdateNotifier(opts) {
6959
6959
 
6960
6960
  // src/cli.ts
6961
6961
  import { readFileSync as readFileSync9 } from "fs";
6962
+ import { fileURLToPath as fileURLToPath3 } from "url";
6962
6963
 
6963
6964
  // src/cliArgs.ts
6964
6965
  var USAGE = `Usage: braid <command>
@@ -7189,10 +7190,42 @@ function parseCliArgs(argv) {
7189
7190
  if (!parsed.ok) return { kind: "usage", error: parsed.error };
7190
7191
  return { kind: "run", argv };
7191
7192
  }
7192
- if (first === void 0) return { kind: "usage" };
7193
+ if (first === "tui") {
7194
+ return { kind: "tui", bare: false, args: argv.slice(1) };
7195
+ }
7196
+ if (first === void 0) return { kind: "tui", bare: true, args: [] };
7193
7197
  return { kind: "usage", error: `Unknown command: ${first}` };
7194
7198
  }
7195
7199
 
7200
+ // src/launchTui.ts
7201
+ import { spawn as spawn2 } from "child_process";
7202
+ import { createRequire } from "module";
7203
+ import { dirname as dirname6, join as join8 } from "path";
7204
+ function resolveTuiEntry() {
7205
+ try {
7206
+ const require2 = createRequire(import.meta.url);
7207
+ const pkgPath = require2.resolve("arp-tui/package.json");
7208
+ const pkg = require2("arp-tui/package.json");
7209
+ const rel = typeof pkg.bin === "string" ? pkg.bin : pkg.bin?.["arp-tui"];
7210
+ return rel ? join8(dirname6(pkgPath), rel) : null;
7211
+ } catch {
7212
+ return null;
7213
+ }
7214
+ }
7215
+ function runTui(args, env, selfCliPath) {
7216
+ const entry = resolveTuiEntry();
7217
+ if (!entry) {
7218
+ console.error("[braid] the interactive UI is not installed \u2014 reinstall @snowyroad/braid");
7219
+ return Promise.resolve(1);
7220
+ }
7221
+ const childEnv = { ...env, ARP_TUI_BRIDGE_CMD: `${process.execPath} ${selfCliPath}` };
7222
+ return new Promise((resolve2) => {
7223
+ const child = spawn2(process.execPath, [entry, ...args], { stdio: "inherit", env: childEnv });
7224
+ child.on("error", () => resolve2(1));
7225
+ child.on("close", (code) => resolve2(code ?? 1));
7226
+ });
7227
+ }
7228
+
7196
7229
  // src/enroll.ts
7197
7230
  var ENROLL_STDIN_MAX_BYTES = 16 * 1024;
7198
7231
  function readBoundedStdin(stream, maxBytes) {
@@ -8477,7 +8510,7 @@ import { homedir as homedir6 } from "os";
8477
8510
 
8478
8511
  // src/service/manager.ts
8479
8512
  import { mkdirSync as mkdirSync7, writeFileSync as writeFileSync7, rmSync as rmSync2, existsSync as existsSync6 } from "fs";
8480
- import { join as join9 } from "path";
8513
+ import { join as join10 } from "path";
8481
8514
 
8482
8515
  // src/service/templates.ts
8483
8516
  function escapeXml(s) {
@@ -8649,17 +8682,17 @@ function schtasksXml(p) {
8649
8682
 
8650
8683
  // src/service/win32.ts
8651
8684
  import { mkdirSync as mkdirSync6, writeFileSync as writeFileSync6, readdirSync as readdirSync4, readFileSync as readFileSync7, unlinkSync as unlinkSync3 } from "fs";
8652
- import { join as join8 } from "path";
8685
+ import { join as join9 } from "path";
8653
8686
  function win32LogDir(homeDir) {
8654
- return join8(homeDir, "AppData", "Local", "braid", "logs");
8687
+ return join9(homeDir, "AppData", "Local", "braid", "logs");
8655
8688
  }
8656
8689
  function win32Manager(ctx) {
8657
- const serviceDir = join8(ctx.braidDir, "service");
8690
+ const serviceDir = join9(ctx.braidDir, "service");
8658
8691
  const task = (name) => schtasksLabel(name);
8659
8692
  const legacyTask = (name) => legacySchtasksLabel(name);
8660
- const xmlPath = (name) => join8(serviceDir, `${task(name)}.xml`);
8661
- const wrapperPath = (name) => join8(serviceDir, `${task(name)}.cmd`);
8662
- const launcherPath = (name) => join8(serviceDir, `${task(name)}.vbs`);
8693
+ const xmlPath = (name) => join9(serviceDir, `${task(name)}.xml`);
8694
+ const wrapperPath = (name) => join9(serviceDir, `${task(name)}.cmd`);
8695
+ const launcherPath = (name) => join9(serviceDir, `${task(name)}.vbs`);
8663
8696
  const st = (...args) => ctx.exec("schtasks", args);
8664
8697
  const stx = async (...args) => {
8665
8698
  const res = await st(...args);
@@ -8670,18 +8703,18 @@ function win32Manager(ctx) {
8670
8703
  };
8671
8704
  const killBridgeProcess = async (name) => {
8672
8705
  const legacyAgents = legacyTwinPath(ctx.braidDir, ["agents"]);
8673
- const agentDirs = [join8(ctx.braidDir, "agents"), ...legacyAgents ? [legacyAgents] : []];
8706
+ const agentDirs = [join9(ctx.braidDir, "agents"), ...legacyAgents ? [legacyAgents] : []];
8674
8707
  const hostDirs = [];
8675
8708
  for (const agentsDir of agentDirs) {
8676
8709
  try {
8677
- for (const host of readdirSync4(agentsDir)) hostDirs.push(join8(agentsDir, host));
8710
+ for (const host of readdirSync4(agentsDir)) hostDirs.push(join9(agentsDir, host));
8678
8711
  } catch {
8679
8712
  }
8680
8713
  }
8681
8714
  for (const hostDir of hostDirs) {
8682
8715
  let pid = NaN;
8683
8716
  try {
8684
- pid = Number(readFileSync7(join8(hostDir, `${name}.json.lock`), "utf8").trim());
8717
+ pid = Number(readFileSync7(join9(hostDir, `${name}.json.lock`), "utf8").trim());
8685
8718
  } catch {
8686
8719
  continue;
8687
8720
  }
@@ -8725,7 +8758,7 @@ function win32Manager(ctx) {
8725
8758
  await st("/delete", "/tn", task(name), "/f");
8726
8759
  await st("/delete", "/tn", legacyTask(name), "/f");
8727
8760
  try {
8728
- unlinkSync3(join8(runDir(ctx.braidDir), `${name}.token`));
8761
+ unlinkSync3(join9(runDir(ctx.braidDir), `${name}.token`));
8729
8762
  } catch {
8730
8763
  }
8731
8764
  const legacyToken = legacyTwinPath(ctx.braidDir, ["run", `${name}.token`]);
@@ -8763,7 +8796,7 @@ function win32Manager(ctx) {
8763
8796
  return { installed, loaded, running };
8764
8797
  },
8765
8798
  logsPath(name) {
8766
- return join8(win32LogDir(ctx.homeDir), `${name}.err.log`);
8799
+ return join9(win32LogDir(ctx.homeDir), `${name}.err.log`);
8767
8800
  }
8768
8801
  };
8769
8802
  }
@@ -8777,7 +8810,7 @@ var NotSupportedError = class extends Error {
8777
8810
  };
8778
8811
  function makeServiceManager(platform, exec, deps = {}) {
8779
8812
  const homeDir = deps.homeDir ?? process.env.HOME ?? "";
8780
- const braidDir = deps.braidDir ?? join9(homeDir, ".braid");
8813
+ const braidDir = deps.braidDir ?? join10(homeDir, ".braid");
8781
8814
  const uid = deps.uid ?? (typeof process.getuid === "function" ? process.getuid() : 0);
8782
8815
  const nodePath = deps.nodePath ?? process.execPath;
8783
8816
  const entryPath = pinnedEntryPath({ braidDir });
@@ -8802,11 +8835,11 @@ function notSupportedManager(platform) {
8802
8835
  };
8803
8836
  }
8804
8837
  function darwinManager(ctx) {
8805
- const launchAgentsDir = join9(ctx.homeDir, "Library", "LaunchAgents");
8806
- const logDir = join9(ctx.homeDir, "Library", "Logs", "braid");
8807
- const legacyLogDir = join9(ctx.homeDir, "Library", "Logs", "arp-bridge");
8808
- const plistPath = (name) => join9(launchAgentsDir, `${launchdLabel(name)}.plist`);
8809
- const legacyPlistPath = (name) => join9(launchAgentsDir, `${legacyLaunchdLabel(name)}.plist`);
8838
+ const launchAgentsDir = join10(ctx.homeDir, "Library", "LaunchAgents");
8839
+ const logDir = join10(ctx.homeDir, "Library", "Logs", "braid");
8840
+ const legacyLogDir = join10(ctx.homeDir, "Library", "Logs", "arp-bridge");
8841
+ const plistPath = (name) => join10(launchAgentsDir, `${launchdLabel(name)}.plist`);
8842
+ const legacyPlistPath = (name) => join10(launchAgentsDir, `${legacyLaunchdLabel(name)}.plist`);
8810
8843
  const legacyInstalled = (name) => !existsSync6(plistPath(name)) && existsSync6(legacyPlistPath(name));
8811
8844
  const domainTarget = `gui/${ctx.uid}`;
8812
8845
  const serviceTarget = (name) => `${domainTarget}/${legacyInstalled(name) ? legacyLaunchdLabel(name) : launchdLabel(name)}`;
@@ -8871,16 +8904,16 @@ function darwinManager(ctx) {
8871
8904
  };
8872
8905
  },
8873
8906
  logsPath(name) {
8874
- return join9(legacyInstalled(name) ? legacyLogDir : logDir, `${name}.err.log`);
8907
+ return join10(legacyInstalled(name) ? legacyLogDir : logDir, `${name}.err.log`);
8875
8908
  }
8876
8909
  };
8877
8910
  }
8878
8911
  function linuxManager(ctx) {
8879
- const unitDir = join9(ctx.homeDir, ".config", "systemd", "user");
8912
+ const unitDir = join10(ctx.homeDir, ".config", "systemd", "user");
8880
8913
  const newUnitName = (name) => `braid-${name}.service`;
8881
8914
  const legacyUnitName = (name) => `arp-bridge-${name}.service`;
8882
- const newUnitPath = (name) => join9(unitDir, newUnitName(name));
8883
- const legacyUnitPath = (name) => join9(unitDir, legacyUnitName(name));
8915
+ const newUnitPath = (name) => join10(unitDir, newUnitName(name));
8916
+ const legacyUnitPath = (name) => join10(unitDir, legacyUnitName(name));
8884
8917
  const legacyInstalled = (name) => !existsSync6(newUnitPath(name)) && existsSync6(legacyUnitPath(name));
8885
8918
  const unitName = (name) => legacyInstalled(name) ? legacyUnitName(name) : newUnitName(name);
8886
8919
  const unitPath = (name) => legacyInstalled(name) ? legacyUnitPath(name) : newUnitPath(name);
@@ -9162,7 +9195,7 @@ function printStatusHuman(name, st, logsPath) {
9162
9195
 
9163
9196
  // src/service/serviceLog.ts
9164
9197
  import { createWriteStream, mkdirSync as mkdirSync8 } from "fs";
9165
- import { dirname as dirname6, join as join10 } from "path";
9198
+ import { dirname as dirname7, join as join11 } from "path";
9166
9199
 
9167
9200
  // src/service/logRotation.ts
9168
9201
  import {
@@ -9215,16 +9248,16 @@ function rotateLogFileIfNeeded(logPath, opts = {}) {
9215
9248
 
9216
9249
  // src/service/serviceLog.ts
9217
9250
  function darwinLogDir(homeDir) {
9218
- return join10(homeDir, "Library", "Logs", "braid");
9251
+ return join11(homeDir, "Library", "Logs", "braid");
9219
9252
  }
9220
9253
  function serviceLogTargets(name, platform, homeDir) {
9221
9254
  if (platform === "darwin") {
9222
9255
  const d = darwinLogDir(homeDir);
9223
- return [join10(d, `${name}.out.log`), join10(d, `${name}.err.log`)];
9256
+ return [join11(d, `${name}.out.log`), join11(d, `${name}.err.log`)];
9224
9257
  }
9225
9258
  if (platform === "win32") {
9226
9259
  const d = win32LogDir(homeDir);
9227
- return [join10(d, `${name}.out.log`), join10(d, `${name}.err.log`)];
9260
+ return [join11(d, `${name}.out.log`), join11(d, `${name}.err.log`)];
9228
9261
  }
9229
9262
  return [];
9230
9263
  }
@@ -9274,7 +9307,7 @@ function initServiceLogging(opts) {
9274
9307
  };
9275
9308
  }
9276
9309
  function defaultTeeStream(path4) {
9277
- mkdirSync8(dirname6(path4), { recursive: true });
9310
+ mkdirSync8(dirname7(path4), { recursive: true });
9278
9311
  const stream = createWriteStream(path4, { flags: "a" });
9279
9312
  stream.on("error", () => {
9280
9313
  });
@@ -9486,6 +9519,14 @@ async function main() {
9486
9519
  applyEnvAliases();
9487
9520
  installCrashGuard();
9488
9521
  const invocation = parseCliArgs(process.argv.slice(2));
9522
+ if (invocation.kind === "tui") {
9523
+ if (invocation.bare && !process.stdout.isTTY) {
9524
+ console.error(USAGE);
9525
+ process.exit(1);
9526
+ }
9527
+ const selfCli = fileURLToPath3(import.meta.url);
9528
+ process.exit(await runTui(invocation.args, process.env, selfCli));
9529
+ }
9489
9530
  if (invocation.kind === "usage") {
9490
9531
  if (invocation.error) console.error(`[braid] ${invocation.error}`);
9491
9532
  console.error(USAGE);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snowyroad/braid",
3
- "version": "0.79.5",
3
+ "version": "0.80.1",
4
4
  "description": "Braid: connect your own coding agent (Claude Code, Codex, Gemini, Grok) to a Braid channel and collaborate with other agents and humans.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "SnowyRoad",
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "files": [
32
32
  "dist",
33
- "npm-shrinkwrap.json",
33
+ "service-shrinkwrap.json",
34
34
  "README.md",
35
35
  "LICENSE.md"
36
36
  ],
@@ -51,6 +51,7 @@
51
51
  "@anthropic-ai/sandbox-runtime": "0.0.63",
52
52
  "@anthropic-ai/sdk": "0.104.1",
53
53
  "@modelcontextprotocol/sdk": "1.29.0",
54
+ "arp-tui": "0.0.15",
54
55
  "canonicalize": "^3.0.0",
55
56
  "jose": "^6.2.3",
56
57
  "ws": "8.21.0",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@snowyroad/braid",
3
- "version": "0.79.5",
3
+ "version": "0.80.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@snowyroad/braid",
9
- "version": "0.79.5",
9
+ "version": "0.80.1",
10
10
  "license": "SEE LICENSE IN LICENSE.md",
11
11
  "dependencies": {
12
12
  "@agentclientprotocol/sdk": "0.25.1",
@@ -14,6 +14,7 @@
14
14
  "@anthropic-ai/sandbox-runtime": "0.0.63",
15
15
  "@anthropic-ai/sdk": "0.104.1",
16
16
  "@modelcontextprotocol/sdk": "1.29.0",
17
+ "arp-tui": "0.0.15",
17
18
  "canonicalize": "^3.0.0",
18
19
  "jose": "^6.2.3",
19
20
  "ws": "8.21.0",
@@ -43,6 +44,19 @@
43
44
  "zod": "^3.25.0 || ^4.0.0"
44
45
  }
45
46
  },
47
+ "node_modules/@alcalzone/ansi-tokenize": {
48
+ "version": "0.1.3",
49
+ "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz",
50
+ "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==",
51
+ "license": "MIT",
52
+ "dependencies": {
53
+ "ansi-styles": "^6.2.1",
54
+ "is-fullwidth-code-point": "^4.0.0"
55
+ },
56
+ "engines": {
57
+ "node": ">=14.13.1"
58
+ }
59
+ },
46
60
  "node_modules/@anthropic-ai/claude-agent-sdk": {
47
61
  "version": "0.3.177",
48
62
  "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.177.tgz",
@@ -1387,6 +1401,45 @@
1387
1401
  }
1388
1402
  }
1389
1403
  },
1404
+ "node_modules/ansi-escapes": {
1405
+ "version": "7.3.0",
1406
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
1407
+ "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
1408
+ "license": "MIT",
1409
+ "dependencies": {
1410
+ "environment": "^1.0.0"
1411
+ },
1412
+ "engines": {
1413
+ "node": ">=18"
1414
+ },
1415
+ "funding": {
1416
+ "url": "https://github.com/sponsors/sindresorhus"
1417
+ }
1418
+ },
1419
+ "node_modules/ansi-regex": {
1420
+ "version": "6.2.2",
1421
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
1422
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
1423
+ "license": "MIT",
1424
+ "engines": {
1425
+ "node": ">=12"
1426
+ },
1427
+ "funding": {
1428
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
1429
+ }
1430
+ },
1431
+ "node_modules/ansi-styles": {
1432
+ "version": "6.2.3",
1433
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
1434
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
1435
+ "license": "MIT",
1436
+ "engines": {
1437
+ "node": ">=12"
1438
+ },
1439
+ "funding": {
1440
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1441
+ }
1442
+ },
1390
1443
  "node_modules/any-promise": {
1391
1444
  "version": "1.3.0",
1392
1445
  "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -1394,6 +1447,23 @@
1394
1447
  "dev": true,
1395
1448
  "license": "MIT"
1396
1449
  },
1450
+ "node_modules/arp-tui": {
1451
+ "version": "0.0.15",
1452
+ "resolved": "https://registry.npmjs.org/arp-tui/-/arp-tui-0.0.15.tgz",
1453
+ "integrity": "sha512-2mFRK5QUJcUZLUhtTUFCi3G+kiYFk0L2TXu3u1i/yEf29RIQLJ2vuS5Q1QQPEpBjUoA34+TiV8Qj/QDZiUjmsA==",
1454
+ "license": "SEE LICENSE IN LICENSE.md",
1455
+ "dependencies": {
1456
+ "ink": "^5.2.0",
1457
+ "react": "^18.3.1",
1458
+ "ws": "^8.21.0"
1459
+ },
1460
+ "bin": {
1461
+ "arp-tui": "dist/index.js"
1462
+ },
1463
+ "engines": {
1464
+ "node": ">=20"
1465
+ }
1466
+ },
1397
1467
  "node_modules/assertion-error": {
1398
1468
  "version": "2.0.1",
1399
1469
  "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
@@ -1404,6 +1474,18 @@
1404
1474
  "node": ">=12"
1405
1475
  }
1406
1476
  },
1477
+ "node_modules/auto-bind": {
1478
+ "version": "5.0.1",
1479
+ "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz",
1480
+ "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==",
1481
+ "license": "MIT",
1482
+ "engines": {
1483
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1484
+ },
1485
+ "funding": {
1486
+ "url": "https://github.com/sponsors/sindresorhus"
1487
+ }
1488
+ },
1407
1489
  "node_modules/body-parser": {
1408
1490
  "version": "2.3.0",
1409
1491
  "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
@@ -1534,6 +1616,18 @@
1534
1616
  "node": ">=18"
1535
1617
  }
1536
1618
  },
1619
+ "node_modules/chalk": {
1620
+ "version": "5.6.2",
1621
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
1622
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
1623
+ "license": "MIT",
1624
+ "engines": {
1625
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
1626
+ },
1627
+ "funding": {
1628
+ "url": "https://github.com/chalk/chalk?sponsor=1"
1629
+ }
1630
+ },
1537
1631
  "node_modules/check-error": {
1538
1632
  "version": "2.1.3",
1539
1633
  "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz",
@@ -1560,6 +1654,77 @@
1560
1654
  "url": "https://paulmillr.com/funding/"
1561
1655
  }
1562
1656
  },
1657
+ "node_modules/cli-boxes": {
1658
+ "version": "3.0.0",
1659
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
1660
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
1661
+ "license": "MIT",
1662
+ "engines": {
1663
+ "node": ">=10"
1664
+ },
1665
+ "funding": {
1666
+ "url": "https://github.com/sponsors/sindresorhus"
1667
+ }
1668
+ },
1669
+ "node_modules/cli-cursor": {
1670
+ "version": "4.0.0",
1671
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
1672
+ "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
1673
+ "license": "MIT",
1674
+ "dependencies": {
1675
+ "restore-cursor": "^4.0.0"
1676
+ },
1677
+ "engines": {
1678
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1679
+ },
1680
+ "funding": {
1681
+ "url": "https://github.com/sponsors/sindresorhus"
1682
+ }
1683
+ },
1684
+ "node_modules/cli-truncate": {
1685
+ "version": "4.0.0",
1686
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
1687
+ "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
1688
+ "license": "MIT",
1689
+ "dependencies": {
1690
+ "slice-ansi": "^5.0.0",
1691
+ "string-width": "^7.0.0"
1692
+ },
1693
+ "engines": {
1694
+ "node": ">=18"
1695
+ },
1696
+ "funding": {
1697
+ "url": "https://github.com/sponsors/sindresorhus"
1698
+ }
1699
+ },
1700
+ "node_modules/cli-truncate/node_modules/slice-ansi": {
1701
+ "version": "5.0.0",
1702
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
1703
+ "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
1704
+ "license": "MIT",
1705
+ "dependencies": {
1706
+ "ansi-styles": "^6.0.0",
1707
+ "is-fullwidth-code-point": "^4.0.0"
1708
+ },
1709
+ "engines": {
1710
+ "node": ">=12"
1711
+ },
1712
+ "funding": {
1713
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
1714
+ }
1715
+ },
1716
+ "node_modules/code-excerpt": {
1717
+ "version": "4.0.0",
1718
+ "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz",
1719
+ "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==",
1720
+ "license": "MIT",
1721
+ "dependencies": {
1722
+ "convert-to-spaces": "^2.0.1"
1723
+ },
1724
+ "engines": {
1725
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1726
+ }
1727
+ },
1563
1728
  "node_modules/commander": {
1564
1729
  "version": "12.1.0",
1565
1730
  "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
@@ -1608,6 +1773,15 @@
1608
1773
  "node": ">= 0.6"
1609
1774
  }
1610
1775
  },
1776
+ "node_modules/convert-to-spaces": {
1777
+ "version": "2.0.1",
1778
+ "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz",
1779
+ "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==",
1780
+ "license": "MIT",
1781
+ "engines": {
1782
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1783
+ }
1784
+ },
1611
1785
  "node_modules/cookie": {
1612
1786
  "version": "0.7.2",
1613
1787
  "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
@@ -1713,6 +1887,12 @@
1713
1887
  "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
1714
1888
  "license": "MIT"
1715
1889
  },
1890
+ "node_modules/emoji-regex": {
1891
+ "version": "10.6.0",
1892
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
1893
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
1894
+ "license": "MIT"
1895
+ },
1716
1896
  "node_modules/encodeurl": {
1717
1897
  "version": "2.0.0",
1718
1898
  "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
@@ -1722,6 +1902,18 @@
1722
1902
  "node": ">= 0.8"
1723
1903
  }
1724
1904
  },
1905
+ "node_modules/environment": {
1906
+ "version": "1.1.0",
1907
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
1908
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
1909
+ "license": "MIT",
1910
+ "engines": {
1911
+ "node": ">=18"
1912
+ },
1913
+ "funding": {
1914
+ "url": "https://github.com/sponsors/sindresorhus"
1915
+ }
1916
+ },
1725
1917
  "node_modules/es-define-property": {
1726
1918
  "version": "1.0.1",
1727
1919
  "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
@@ -1759,6 +1951,16 @@
1759
1951
  "node": ">= 0.4"
1760
1952
  }
1761
1953
  },
1954
+ "node_modules/es-toolkit": {
1955
+ "version": "1.49.0",
1956
+ "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz",
1957
+ "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==",
1958
+ "license": "MIT",
1959
+ "workspaces": [
1960
+ "docs",
1961
+ "benchmarks"
1962
+ ]
1963
+ },
1762
1964
  "node_modules/esbuild": {
1763
1965
  "version": "0.27.7",
1764
1966
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
@@ -1807,6 +2009,15 @@
1807
2009
  "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
1808
2010
  "license": "MIT"
1809
2011
  },
2012
+ "node_modules/escape-string-regexp": {
2013
+ "version": "2.0.0",
2014
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
2015
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
2016
+ "license": "MIT",
2017
+ "engines": {
2018
+ "node": ">=8"
2019
+ }
2020
+ },
1810
2021
  "node_modules/estree-walker": {
1811
2022
  "version": "3.0.3",
1812
2023
  "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -2039,6 +2250,18 @@
2039
2250
  "url": "https://github.com/sponsors/ljharb"
2040
2251
  }
2041
2252
  },
2253
+ "node_modules/get-east-asian-width": {
2254
+ "version": "1.6.0",
2255
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
2256
+ "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
2257
+ "license": "MIT",
2258
+ "engines": {
2259
+ "node": ">=18"
2260
+ },
2261
+ "funding": {
2262
+ "url": "https://github.com/sponsors/sindresorhus"
2263
+ }
2264
+ },
2042
2265
  "node_modules/get-intrinsic": {
2043
2266
  "version": "1.3.0",
2044
2267
  "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@@ -2157,12 +2380,72 @@
2157
2380
  "url": "https://opencollective.com/express"
2158
2381
  }
2159
2382
  },
2383
+ "node_modules/indent-string": {
2384
+ "version": "5.0.0",
2385
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
2386
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
2387
+ "license": "MIT",
2388
+ "engines": {
2389
+ "node": ">=12"
2390
+ },
2391
+ "funding": {
2392
+ "url": "https://github.com/sponsors/sindresorhus"
2393
+ }
2394
+ },
2160
2395
  "node_modules/inherits": {
2161
2396
  "version": "2.0.4",
2162
2397
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2163
2398
  "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2164
2399
  "license": "ISC"
2165
2400
  },
2401
+ "node_modules/ink": {
2402
+ "version": "5.2.1",
2403
+ "resolved": "https://registry.npmjs.org/ink/-/ink-5.2.1.tgz",
2404
+ "integrity": "sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==",
2405
+ "license": "MIT",
2406
+ "dependencies": {
2407
+ "@alcalzone/ansi-tokenize": "^0.1.3",
2408
+ "ansi-escapes": "^7.0.0",
2409
+ "ansi-styles": "^6.2.1",
2410
+ "auto-bind": "^5.0.1",
2411
+ "chalk": "^5.3.0",
2412
+ "cli-boxes": "^3.0.0",
2413
+ "cli-cursor": "^4.0.0",
2414
+ "cli-truncate": "^4.0.0",
2415
+ "code-excerpt": "^4.0.0",
2416
+ "es-toolkit": "^1.22.0",
2417
+ "indent-string": "^5.0.0",
2418
+ "is-in-ci": "^1.0.0",
2419
+ "patch-console": "^2.0.0",
2420
+ "react-reconciler": "^0.29.0",
2421
+ "scheduler": "^0.23.0",
2422
+ "signal-exit": "^3.0.7",
2423
+ "slice-ansi": "^7.1.0",
2424
+ "stack-utils": "^2.0.6",
2425
+ "string-width": "^7.2.0",
2426
+ "type-fest": "^4.27.0",
2427
+ "widest-line": "^5.0.0",
2428
+ "wrap-ansi": "^9.0.0",
2429
+ "ws": "^8.18.0",
2430
+ "yoga-layout": "~3.2.1"
2431
+ },
2432
+ "engines": {
2433
+ "node": ">=18"
2434
+ },
2435
+ "peerDependencies": {
2436
+ "@types/react": ">=18.0.0",
2437
+ "react": ">=18.0.0",
2438
+ "react-devtools-core": "^4.19.1"
2439
+ },
2440
+ "peerDependenciesMeta": {
2441
+ "@types/react": {
2442
+ "optional": true
2443
+ },
2444
+ "react-devtools-core": {
2445
+ "optional": true
2446
+ }
2447
+ }
2448
+ },
2166
2449
  "node_modules/ip-address": {
2167
2450
  "version": "10.2.0",
2168
2451
  "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
@@ -2181,6 +2464,33 @@
2181
2464
  "node": ">= 0.10"
2182
2465
  }
2183
2466
  },
2467
+ "node_modules/is-fullwidth-code-point": {
2468
+ "version": "4.0.0",
2469
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
2470
+ "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
2471
+ "license": "MIT",
2472
+ "engines": {
2473
+ "node": ">=12"
2474
+ },
2475
+ "funding": {
2476
+ "url": "https://github.com/sponsors/sindresorhus"
2477
+ }
2478
+ },
2479
+ "node_modules/is-in-ci": {
2480
+ "version": "1.0.0",
2481
+ "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz",
2482
+ "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==",
2483
+ "license": "MIT",
2484
+ "bin": {
2485
+ "is-in-ci": "cli.js"
2486
+ },
2487
+ "engines": {
2488
+ "node": ">=18"
2489
+ },
2490
+ "funding": {
2491
+ "url": "https://github.com/sponsors/sindresorhus"
2492
+ }
2493
+ },
2184
2494
  "node_modules/is-promise": {
2185
2495
  "version": "4.0.0",
2186
2496
  "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
@@ -2212,6 +2522,12 @@
2212
2522
  "node": ">=10"
2213
2523
  }
2214
2524
  },
2525
+ "node_modules/js-tokens": {
2526
+ "version": "4.0.0",
2527
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2528
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2529
+ "license": "MIT"
2530
+ },
2215
2531
  "node_modules/json-schema-to-ts": {
2216
2532
  "version": "3.1.1",
2217
2533
  "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz",
@@ -2267,6 +2583,18 @@
2267
2583
  "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2268
2584
  }
2269
2585
  },
2586
+ "node_modules/loose-envify": {
2587
+ "version": "1.4.0",
2588
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2589
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2590
+ "license": "MIT",
2591
+ "dependencies": {
2592
+ "js-tokens": "^3.0.0 || ^4.0.0"
2593
+ },
2594
+ "bin": {
2595
+ "loose-envify": "cli.js"
2596
+ }
2597
+ },
2270
2598
  "node_modules/loupe": {
2271
2599
  "version": "3.2.1",
2272
2600
  "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
@@ -2339,6 +2667,15 @@
2339
2667
  "url": "https://opencollective.com/express"
2340
2668
  }
2341
2669
  },
2670
+ "node_modules/mimic-fn": {
2671
+ "version": "2.1.0",
2672
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
2673
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
2674
+ "license": "MIT",
2675
+ "engines": {
2676
+ "node": ">=6"
2677
+ }
2678
+ },
2342
2679
  "node_modules/mlly": {
2343
2680
  "version": "1.8.2",
2344
2681
  "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz",
@@ -2449,6 +2786,21 @@
2449
2786
  "wrappy": "1"
2450
2787
  }
2451
2788
  },
2789
+ "node_modules/onetime": {
2790
+ "version": "5.1.2",
2791
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
2792
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
2793
+ "license": "MIT",
2794
+ "dependencies": {
2795
+ "mimic-fn": "^2.1.0"
2796
+ },
2797
+ "engines": {
2798
+ "node": ">=6"
2799
+ },
2800
+ "funding": {
2801
+ "url": "https://github.com/sponsors/sindresorhus"
2802
+ }
2803
+ },
2452
2804
  "node_modules/parseurl": {
2453
2805
  "version": "1.3.3",
2454
2806
  "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -2458,6 +2810,15 @@
2458
2810
  "node": ">= 0.8"
2459
2811
  }
2460
2812
  },
2813
+ "node_modules/patch-console": {
2814
+ "version": "2.0.0",
2815
+ "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz",
2816
+ "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==",
2817
+ "license": "MIT",
2818
+ "engines": {
2819
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2820
+ }
2821
+ },
2461
2822
  "node_modules/path-key": {
2462
2823
  "version": "3.1.1",
2463
2824
  "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -2674,6 +3035,34 @@
2674
3035
  "node": ">= 0.10"
2675
3036
  }
2676
3037
  },
3038
+ "node_modules/react": {
3039
+ "version": "18.3.1",
3040
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
3041
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
3042
+ "license": "MIT",
3043
+ "dependencies": {
3044
+ "loose-envify": "^1.1.0"
3045
+ },
3046
+ "engines": {
3047
+ "node": ">=0.10.0"
3048
+ }
3049
+ },
3050
+ "node_modules/react-reconciler": {
3051
+ "version": "0.29.2",
3052
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.2.tgz",
3053
+ "integrity": "sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==",
3054
+ "license": "MIT",
3055
+ "dependencies": {
3056
+ "loose-envify": "^1.1.0",
3057
+ "scheduler": "^0.23.2"
3058
+ },
3059
+ "engines": {
3060
+ "node": ">=0.10.0"
3061
+ },
3062
+ "peerDependencies": {
3063
+ "react": "^18.3.1"
3064
+ }
3065
+ },
2677
3066
  "node_modules/readdirp": {
2678
3067
  "version": "4.1.2",
2679
3068
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -2707,6 +3096,22 @@
2707
3096
  "node": ">=8"
2708
3097
  }
2709
3098
  },
3099
+ "node_modules/restore-cursor": {
3100
+ "version": "4.0.0",
3101
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
3102
+ "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
3103
+ "license": "MIT",
3104
+ "dependencies": {
3105
+ "onetime": "^5.1.0",
3106
+ "signal-exit": "^3.0.2"
3107
+ },
3108
+ "engines": {
3109
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
3110
+ },
3111
+ "funding": {
3112
+ "url": "https://github.com/sponsors/sindresorhus"
3113
+ }
3114
+ },
2710
3115
  "node_modules/rollup": {
2711
3116
  "version": "4.62.2",
2712
3117
  "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz",
@@ -2774,6 +3179,15 @@
2774
3179
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2775
3180
  "license": "MIT"
2776
3181
  },
3182
+ "node_modules/scheduler": {
3183
+ "version": "0.23.2",
3184
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
3185
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
3186
+ "license": "MIT",
3187
+ "dependencies": {
3188
+ "loose-envify": "^1.1.0"
3189
+ }
3190
+ },
2777
3191
  "node_modules/send": {
2778
3192
  "version": "1.2.1",
2779
3193
  "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
@@ -2925,6 +3339,43 @@
2925
3339
  "dev": true,
2926
3340
  "license": "ISC"
2927
3341
  },
3342
+ "node_modules/signal-exit": {
3343
+ "version": "3.0.7",
3344
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
3345
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
3346
+ "license": "ISC"
3347
+ },
3348
+ "node_modules/slice-ansi": {
3349
+ "version": "7.1.2",
3350
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
3351
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
3352
+ "license": "MIT",
3353
+ "dependencies": {
3354
+ "ansi-styles": "^6.2.1",
3355
+ "is-fullwidth-code-point": "^5.0.0"
3356
+ },
3357
+ "engines": {
3358
+ "node": ">=18"
3359
+ },
3360
+ "funding": {
3361
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
3362
+ }
3363
+ },
3364
+ "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
3365
+ "version": "5.1.0",
3366
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
3367
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
3368
+ "license": "MIT",
3369
+ "dependencies": {
3370
+ "get-east-asian-width": "^1.3.1"
3371
+ },
3372
+ "engines": {
3373
+ "node": ">=18"
3374
+ },
3375
+ "funding": {
3376
+ "url": "https://github.com/sponsors/sindresorhus"
3377
+ }
3378
+ },
2928
3379
  "node_modules/source-map": {
2929
3380
  "version": "0.7.6",
2930
3381
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
@@ -2945,6 +3396,18 @@
2945
3396
  "node": ">=0.10.0"
2946
3397
  }
2947
3398
  },
3399
+ "node_modules/stack-utils": {
3400
+ "version": "2.0.6",
3401
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
3402
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
3403
+ "license": "MIT",
3404
+ "dependencies": {
3405
+ "escape-string-regexp": "^2.0.0"
3406
+ },
3407
+ "engines": {
3408
+ "node": ">=10"
3409
+ }
3410
+ },
2948
3411
  "node_modules/stackback": {
2949
3412
  "version": "0.0.2",
2950
3413
  "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -2978,6 +3441,38 @@
2978
3441
  "dev": true,
2979
3442
  "license": "MIT"
2980
3443
  },
3444
+ "node_modules/string-width": {
3445
+ "version": "7.2.0",
3446
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
3447
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
3448
+ "license": "MIT",
3449
+ "dependencies": {
3450
+ "emoji-regex": "^10.3.0",
3451
+ "get-east-asian-width": "^1.0.0",
3452
+ "strip-ansi": "^7.1.0"
3453
+ },
3454
+ "engines": {
3455
+ "node": ">=18"
3456
+ },
3457
+ "funding": {
3458
+ "url": "https://github.com/sponsors/sindresorhus"
3459
+ }
3460
+ },
3461
+ "node_modules/strip-ansi": {
3462
+ "version": "7.2.0",
3463
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
3464
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
3465
+ "license": "MIT",
3466
+ "dependencies": {
3467
+ "ansi-regex": "^6.2.2"
3468
+ },
3469
+ "engines": {
3470
+ "node": ">=12"
3471
+ },
3472
+ "funding": {
3473
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
3474
+ }
3475
+ },
2981
3476
  "node_modules/sucrase": {
2982
3477
  "version": "3.35.1",
2983
3478
  "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
@@ -3683,6 +4178,18 @@
3683
4178
  "@esbuild/win32-x64": "0.28.1"
3684
4179
  }
3685
4180
  },
4181
+ "node_modules/type-fest": {
4182
+ "version": "4.41.0",
4183
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
4184
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
4185
+ "license": "(MIT OR CC0-1.0)",
4186
+ "engines": {
4187
+ "node": ">=16"
4188
+ },
4189
+ "funding": {
4190
+ "url": "https://github.com/sponsors/sindresorhus"
4191
+ }
4192
+ },
3686
4193
  "node_modules/type-is": {
3687
4194
  "version": "2.1.0",
3688
4195
  "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
@@ -4385,6 +4892,38 @@
4385
4892
  "node": ">=8"
4386
4893
  }
4387
4894
  },
4895
+ "node_modules/widest-line": {
4896
+ "version": "5.0.0",
4897
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
4898
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==",
4899
+ "license": "MIT",
4900
+ "dependencies": {
4901
+ "string-width": "^7.0.0"
4902
+ },
4903
+ "engines": {
4904
+ "node": ">=18"
4905
+ },
4906
+ "funding": {
4907
+ "url": "https://github.com/sponsors/sindresorhus"
4908
+ }
4909
+ },
4910
+ "node_modules/wrap-ansi": {
4911
+ "version": "9.0.2",
4912
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
4913
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
4914
+ "license": "MIT",
4915
+ "dependencies": {
4916
+ "ansi-styles": "^6.2.1",
4917
+ "string-width": "^7.0.0",
4918
+ "strip-ansi": "^7.1.0"
4919
+ },
4920
+ "engines": {
4921
+ "node": ">=18"
4922
+ },
4923
+ "funding": {
4924
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
4925
+ }
4926
+ },
4388
4927
  "node_modules/wrappy": {
4389
4928
  "version": "1.0.2",
4390
4929
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -4412,6 +4951,12 @@
4412
4951
  }
4413
4952
  }
4414
4953
  },
4954
+ "node_modules/yoga-layout": {
4955
+ "version": "3.2.1",
4956
+ "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz",
4957
+ "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==",
4958
+ "license": "MIT"
4959
+ },
4415
4960
  "node_modules/zod": {
4416
4961
  "version": "4.4.3",
4417
4962
  "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",