cc-zh-watcher 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +15 -4
  2. package/dist/cli.js +352 -264
  3. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -47,7 +47,7 @@ var __export = (target, all) => {
47
47
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
48
48
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
49
49
 
50
- // node_modules/commander/lib/error.js
50
+ // ../../../node_modules/commander/lib/error.js
51
51
  var require_error = __commonJS((exports) => {
52
52
  class CommanderError extends Error {
53
53
  constructor(exitCode, code, message) {
@@ -71,7 +71,7 @@ var require_error = __commonJS((exports) => {
71
71
  exports.InvalidArgumentError = InvalidArgumentError;
72
72
  });
73
73
 
74
- // node_modules/commander/lib/argument.js
74
+ // ../../../node_modules/commander/lib/argument.js
75
75
  var require_argument = __commonJS((exports) => {
76
76
  var { InvalidArgumentError } = require_error();
77
77
 
@@ -150,7 +150,7 @@ var require_argument = __commonJS((exports) => {
150
150
  exports.humanReadableArgName = humanReadableArgName;
151
151
  });
152
152
 
153
- // node_modules/commander/lib/help.js
153
+ // ../../../node_modules/commander/lib/help.js
154
154
  var require_help = __commonJS((exports) => {
155
155
  var { humanReadableArgName } = require_argument();
156
156
 
@@ -399,7 +399,7 @@ var require_help = __commonJS((exports) => {
399
399
  exports.Help = Help;
400
400
  });
401
401
 
402
- // node_modules/commander/lib/option.js
402
+ // ../../../node_modules/commander/lib/option.js
403
403
  var require_option = __commonJS((exports) => {
404
404
  var { InvalidArgumentError } = require_error();
405
405
 
@@ -550,7 +550,7 @@ var require_option = __commonJS((exports) => {
550
550
  exports.DualOptions = DualOptions;
551
551
  });
552
552
 
553
- // node_modules/commander/lib/suggestSimilar.js
553
+ // ../../../node_modules/commander/lib/suggestSimilar.js
554
554
  var require_suggestSimilar = __commonJS((exports) => {
555
555
  var maxDistance = 3;
556
556
  function editDistance(a, b) {
@@ -623,7 +623,7 @@ var require_suggestSimilar = __commonJS((exports) => {
623
623
  exports.suggestSimilar = suggestSimilar;
624
624
  });
625
625
 
626
- // node_modules/commander/lib/command.js
626
+ // ../../../node_modules/commander/lib/command.js
627
627
  var require_command = __commonJS((exports) => {
628
628
  var EventEmitter = __require("node:events").EventEmitter;
629
629
  var childProcess = __require("node:child_process");
@@ -1866,7 +1866,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
1866
1866
  exports.Command = Command;
1867
1867
  });
1868
1868
 
1869
- // node_modules/commander/index.js
1869
+ // ../../../node_modules/commander/index.js
1870
1870
  var require_commander = __commonJS((exports) => {
1871
1871
  var { Argument } = require_argument();
1872
1872
  var { Command } = require_command();
@@ -1886,7 +1886,7 @@ var require_commander = __commonJS((exports) => {
1886
1886
  exports.InvalidOptionArgumentError = InvalidArgumentError;
1887
1887
  });
1888
1888
 
1889
- // node_modules/react/cjs/react.development.js
1889
+ // ../../../node_modules/react/cjs/react.development.js
1890
1890
  var require_react_development = __commonJS((exports, module) => {
1891
1891
  if (true) {
1892
1892
  (function() {
@@ -3689,7 +3689,7 @@ Check the top-level render call using <` + parentName + ">.";
3689
3689
  }
3690
3690
  });
3691
3691
 
3692
- // node_modules/react/index.js
3692
+ // ../../../node_modules/react/index.js
3693
3693
  var require_react = __commonJS((exports, module) => {
3694
3694
  var react_development = __toESM(require_react_development());
3695
3695
  if (false) {} else {
@@ -3697,7 +3697,7 @@ var require_react = __commonJS((exports, module) => {
3697
3697
  }
3698
3698
  });
3699
3699
 
3700
- // node_modules/signal-exit/signals.js
3700
+ // ../../../node_modules/signal-exit/signals.js
3701
3701
  var require_signals = __commonJS((exports, module) => {
3702
3702
  module.exports = [
3703
3703
  "SIGABRT",
@@ -3714,7 +3714,7 @@ var require_signals = __commonJS((exports, module) => {
3714
3714
  }
3715
3715
  });
3716
3716
 
3717
- // node_modules/signal-exit/index.js
3717
+ // ../../../node_modules/signal-exit/index.js
3718
3718
  var require_signal_exit = __commonJS((exports, module) => {
3719
3719
  var process3 = global.process;
3720
3720
  var processOk = function(process4) {
@@ -3867,7 +3867,7 @@ var require_signal_exit = __commonJS((exports, module) => {
3867
3867
  var processEmit;
3868
3868
  });
3869
3869
 
3870
- // node_modules/scheduler/cjs/scheduler.development.js
3870
+ // ../../../node_modules/scheduler/cjs/scheduler.development.js
3871
3871
  var require_scheduler_development = __commonJS((exports) => {
3872
3872
  if (true) {
3873
3873
  (function() {
@@ -4310,7 +4310,7 @@ var require_scheduler_development = __commonJS((exports) => {
4310
4310
  }
4311
4311
  });
4312
4312
 
4313
- // node_modules/scheduler/index.js
4313
+ // ../../../node_modules/scheduler/index.js
4314
4314
  var require_scheduler = __commonJS((exports, module) => {
4315
4315
  var scheduler_development = __toESM(require_scheduler_development());
4316
4316
  if (false) {} else {
@@ -4318,7 +4318,7 @@ var require_scheduler = __commonJS((exports, module) => {
4318
4318
  }
4319
4319
  });
4320
4320
 
4321
- // node_modules/react-reconciler/cjs/react-reconciler.development.js
4321
+ // ../../../node_modules/react-reconciler/cjs/react-reconciler.development.js
4322
4322
  var require_react_reconciler_development = __commonJS((exports, module) => {
4323
4323
  var React = __toESM(require_react());
4324
4324
  var Scheduler = __toESM(require_scheduler());
@@ -19064,14 +19064,14 @@ Check the render method of \`` + ownerName + "`.";
19064
19064
  }
19065
19065
  });
19066
19066
 
19067
- // node_modules/react-reconciler/index.js
19067
+ // ../../../node_modules/react-reconciler/index.js
19068
19068
  var require_react_reconciler = __commonJS((exports, module) => {
19069
19069
  if (false) {} else {
19070
19070
  module.exports = require_react_reconciler_development();
19071
19071
  }
19072
19072
  });
19073
19073
 
19074
- // node_modules/react-reconciler/cjs/react-reconciler-constants.development.js
19074
+ // ../../../node_modules/react-reconciler/cjs/react-reconciler-constants.development.js
19075
19075
  var require_react_reconciler_constants_development = __commonJS((exports) => {
19076
19076
  if (true) {
19077
19077
  (function() {
@@ -19095,21 +19095,21 @@ var require_react_reconciler_constants_development = __commonJS((exports) => {
19095
19095
  }
19096
19096
  });
19097
19097
 
19098
- // node_modules/react-reconciler/constants.js
19098
+ // ../../../node_modules/react-reconciler/constants.js
19099
19099
  var require_constants = __commonJS((exports, module) => {
19100
19100
  if (false) {} else {
19101
19101
  module.exports = require_react_reconciler_constants_development();
19102
19102
  }
19103
19103
  });
19104
19104
 
19105
- // node_modules/emoji-regex/index.js
19105
+ // ../../../node_modules/emoji-regex/index.js
19106
19106
  var require_emoji_regex = __commonJS((exports, module) => {
19107
19107
  module.exports = () => {
19108
19108
  return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
19109
19109
  };
19110
19110
  });
19111
19111
 
19112
- // node_modules/ink/node_modules/ws/lib/constants.js
19112
+ // ../../../node_modules/ink/node_modules/ws/lib/constants.js
19113
19113
  var require_constants2 = __commonJS((exports, module) => {
19114
19114
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
19115
19115
  var hasBlob = typeof Blob !== "undefined";
@@ -19129,7 +19129,7 @@ var require_constants2 = __commonJS((exports, module) => {
19129
19129
  };
19130
19130
  });
19131
19131
 
19132
- // node_modules/ink/node_modules/ws/lib/buffer-util.js
19132
+ // ../../../node_modules/ink/node_modules/ws/lib/buffer-util.js
19133
19133
  var require_buffer_util = __commonJS((exports, module) => {
19134
19134
  var { EMPTY_BUFFER } = require_constants2();
19135
19135
  var FastBuffer = Buffer[Symbol.species];
@@ -19207,7 +19207,7 @@ var require_buffer_util = __commonJS((exports, module) => {
19207
19207
  }
19208
19208
  });
19209
19209
 
19210
- // node_modules/ink/node_modules/ws/lib/limiter.js
19210
+ // ../../../node_modules/ink/node_modules/ws/lib/limiter.js
19211
19211
  var require_limiter = __commonJS((exports, module) => {
19212
19212
  var kDone = Symbol("kDone");
19213
19213
  var kRun = Symbol("kRun");
@@ -19239,7 +19239,7 @@ var require_limiter = __commonJS((exports, module) => {
19239
19239
  module.exports = Limiter;
19240
19240
  });
19241
19241
 
19242
- // node_modules/ink/node_modules/ws/lib/permessage-deflate.js
19242
+ // ../../../node_modules/ink/node_modules/ws/lib/permessage-deflate.js
19243
19243
  var require_permessage_deflate = __commonJS((exports, module) => {
19244
19244
  var zlib = __require("zlib");
19245
19245
  var bufferUtil = require_buffer_util();
@@ -19503,7 +19503,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
19503
19503
  }
19504
19504
  });
19505
19505
 
19506
- // node_modules/ink/node_modules/ws/lib/validation.js
19506
+ // ../../../node_modules/ink/node_modules/ws/lib/validation.js
19507
19507
  var require_validation = __commonJS((exports, module) => {
19508
19508
  var { isUtf8 } = __require("buffer");
19509
19509
  var { hasBlob } = require_constants2();
@@ -19690,7 +19690,7 @@ var require_validation = __commonJS((exports, module) => {
19690
19690
  }
19691
19691
  });
19692
19692
 
19693
- // node_modules/ink/node_modules/ws/lib/receiver.js
19693
+ // ../../../node_modules/ink/node_modules/ws/lib/receiver.js
19694
19694
  var require_receiver = __commonJS((exports, module) => {
19695
19695
  var { Writable } = __require("stream");
19696
19696
  var PerMessageDeflate = require_permessage_deflate();
@@ -20071,7 +20071,7 @@ var require_receiver = __commonJS((exports, module) => {
20071
20071
  module.exports = Receiver;
20072
20072
  });
20073
20073
 
20074
- // node_modules/ink/node_modules/ws/lib/sender.js
20074
+ // ../../../node_modules/ink/node_modules/ws/lib/sender.js
20075
20075
  var require_sender = __commonJS((exports, module) => {
20076
20076
  var { Duplex } = __require("stream");
20077
20077
  var { randomFillSync } = __require("crypto");
@@ -20425,7 +20425,7 @@ var require_sender = __commonJS((exports, module) => {
20425
20425
  }
20426
20426
  });
20427
20427
 
20428
- // node_modules/ink/node_modules/ws/lib/event-target.js
20428
+ // ../../../node_modules/ink/node_modules/ws/lib/event-target.js
20429
20429
  var require_event_target = __commonJS((exports, module) => {
20430
20430
  var { kForOnEventAttribute, kListener } = require_constants2();
20431
20431
  var kCode = Symbol("kCode");
@@ -20576,7 +20576,7 @@ var require_event_target = __commonJS((exports, module) => {
20576
20576
  }
20577
20577
  });
20578
20578
 
20579
- // node_modules/ink/node_modules/ws/lib/extension.js
20579
+ // ../../../node_modules/ink/node_modules/ws/lib/extension.js
20580
20580
  var require_extension = __commonJS((exports, module) => {
20581
20581
  var { tokenChars } = require_validation();
20582
20582
  function push(dest, name, elem) {
@@ -20741,7 +20741,7 @@ var require_extension = __commonJS((exports, module) => {
20741
20741
  module.exports = { format, parse };
20742
20742
  });
20743
20743
 
20744
- // node_modules/ink/node_modules/ws/lib/websocket.js
20744
+ // ../../../node_modules/ink/node_modules/ws/lib/websocket.js
20745
20745
  var require_websocket = __commonJS((exports, module) => {
20746
20746
  var EventEmitter = __require("events");
20747
20747
  var https = __require("https");
@@ -21507,7 +21507,7 @@ var require_websocket = __commonJS((exports, module) => {
21507
21507
  }
21508
21508
  });
21509
21509
 
21510
- // node_modules/ink/node_modules/ws/lib/stream.js
21510
+ // ../../../node_modules/ink/node_modules/ws/lib/stream.js
21511
21511
  var require_stream = __commonJS((exports, module) => {
21512
21512
  var WebSocket = require_websocket();
21513
21513
  var { Duplex } = __require("stream");
@@ -21610,7 +21610,7 @@ var require_stream = __commonJS((exports, module) => {
21610
21610
  module.exports = createWebSocketStream;
21611
21611
  });
21612
21612
 
21613
- // node_modules/ink/node_modules/ws/lib/subprotocol.js
21613
+ // ../../../node_modules/ink/node_modules/ws/lib/subprotocol.js
21614
21614
  var require_subprotocol = __commonJS((exports, module) => {
21615
21615
  var { tokenChars } = require_validation();
21616
21616
  function parse(header) {
@@ -21655,7 +21655,7 @@ var require_subprotocol = __commonJS((exports, module) => {
21655
21655
  module.exports = { parse };
21656
21656
  });
21657
21657
 
21658
- // node_modules/ink/node_modules/ws/lib/websocket-server.js
21658
+ // ../../../node_modules/ink/node_modules/ws/lib/websocket-server.js
21659
21659
  var require_websocket_server = __commonJS((exports, module) => {
21660
21660
  var EventEmitter = __require("events");
21661
21661
  var http = __require("http");
@@ -21961,7 +21961,7 @@ var require_websocket_server = __commonJS((exports, module) => {
21961
21961
  }
21962
21962
  });
21963
21963
 
21964
- // node_modules/ink/node_modules/ws/wrapper.mjs
21964
+ // ../../../node_modules/ink/node_modules/ws/wrapper.mjs
21965
21965
  var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
21966
21966
  var init_wrapper = __esm(() => {
21967
21967
  import_stream = __toESM(require_stream(), 1);
@@ -21975,7 +21975,7 @@ var init_wrapper = __esm(() => {
21975
21975
  wrapper_default = import_websocket.default;
21976
21976
  });
21977
21977
 
21978
- // node_modules/ink/build/devtools-window-polyfill.js
21978
+ // ../../../node_modules/ink/build/devtools-window-polyfill.js
21979
21979
  var customGlobal;
21980
21980
  var init_devtools_window_polyfill = __esm(() => {
21981
21981
  init_wrapper();
@@ -22028,7 +22028,7 @@ var init_devtools_window_polyfill = __esm(() => {
22028
22028
  ];
22029
22029
  });
22030
22030
 
22031
- // node_modules/react-devtools-core/dist/backend.js
22031
+ // ../../../node_modules/react-devtools-core/dist/backend.js
22032
22032
  var require_backend = __commonJS((exports, module) => {
22033
22033
  (function webpackUniversalModuleDefinition(root, factory) {
22034
22034
  if (typeof exports === "object" && typeof module === "object")
@@ -38822,7 +38822,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
38822
38822
  });
38823
38823
  });
38824
38824
 
38825
- // node_modules/ink/build/devtools.js
38825
+ // ../../../node_modules/ink/build/devtools.js
38826
38826
  var exports_devtools = {};
38827
38827
  var import_react_devtools_core;
38828
38828
  var init_devtools = __esm(() => {
@@ -38831,7 +38831,7 @@ var init_devtools = __esm(() => {
38831
38831
  import_react_devtools_core.default.connectToDevTools();
38832
38832
  });
38833
38833
 
38834
- // node_modules/cli-boxes/boxes.json
38834
+ // ../../../node_modules/cli-boxes/boxes.json
38835
38835
  var require_boxes = __commonJS((exports, module) => {
38836
38836
  module.exports = {
38837
38837
  single: {
@@ -38917,14 +38917,14 @@ var require_boxes = __commonJS((exports, module) => {
38917
38917
  };
38918
38918
  });
38919
38919
 
38920
- // node_modules/cli-boxes/index.js
38920
+ // ../../../node_modules/cli-boxes/index.js
38921
38921
  var require_cli_boxes = __commonJS((exports, module) => {
38922
38922
  var cliBoxes = require_boxes();
38923
38923
  module.exports = cliBoxes;
38924
38924
  module.exports.default = cliBoxes;
38925
38925
  });
38926
38926
 
38927
- // node_modules/mimic-fn/index.js
38927
+ // ../../../node_modules/mimic-fn/index.js
38928
38928
  var require_mimic_fn = __commonJS((exports, module) => {
38929
38929
  var mimicFn = (to, from) => {
38930
38930
  for (const prop of Reflect.ownKeys(from)) {
@@ -38936,7 +38936,7 @@ var require_mimic_fn = __commonJS((exports, module) => {
38936
38936
  module.exports.default = mimicFn;
38937
38937
  });
38938
38938
 
38939
- // node_modules/onetime/index.js
38939
+ // ../../../node_modules/onetime/index.js
38940
38940
  var require_onetime = __commonJS((exports, module) => {
38941
38941
  var mimicFn = require_mimic_fn();
38942
38942
  var calledFunctions = new WeakMap;
@@ -38971,7 +38971,7 @@ var require_onetime = __commonJS((exports, module) => {
38971
38971
  };
38972
38972
  });
38973
38973
 
38974
- // node_modules/escape-string-regexp/index.js
38974
+ // ../../../node_modules/escape-string-regexp/index.js
38975
38975
  var require_escape_string_regexp = __commonJS((exports, module) => {
38976
38976
  var matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g;
38977
38977
  module.exports = (string) => {
@@ -38982,7 +38982,7 @@ var require_escape_string_regexp = __commonJS((exports, module) => {
38982
38982
  };
38983
38983
  });
38984
38984
 
38985
- // node_modules/stack-utils/index.js
38985
+ // ../../../node_modules/stack-utils/index.js
38986
38986
  var require_stack_utils = __commonJS((exports, module) => {
38987
38987
  var escapeStringRegexp = require_escape_string_regexp();
38988
38988
  var cwd = typeof process === "object" && process && typeof process.cwd === "function" ? process.cwd() : ".";
@@ -39220,7 +39220,7 @@ var require_stack_utils = __commonJS((exports, module) => {
39220
39220
  module.exports = StackUtils;
39221
39221
  });
39222
39222
 
39223
- // node_modules/commander/esm.mjs
39223
+ // ../../../node_modules/commander/esm.mjs
39224
39224
  var import__ = __toESM(require_commander(), 1);
39225
39225
  var {
39226
39226
  program,
@@ -39241,14 +39241,14 @@ import { existsSync as existsSync8, readFileSync as readFileSync8 } from "node:f
39241
39241
  import { createInterface } from "node:readline/promises";
39242
39242
  import { stdin as input, stdout as output } from "node:process";
39243
39243
 
39244
- // node_modules/ink/build/render.js
39244
+ // ../../../node_modules/ink/build/render.js
39245
39245
  import { Stream } from "node:stream";
39246
39246
  import process12 from "node:process";
39247
39247
 
39248
- // node_modules/ink/build/ink.js
39248
+ // ../../../node_modules/ink/build/ink.js
39249
39249
  var import_react10 = __toESM(require_react(), 1);
39250
39250
  import process11 from "node:process";
39251
- // node_modules/es-toolkit/dist/function/debounce.mjs
39251
+ // ../../../node_modules/es-toolkit/dist/function/debounce.mjs
39252
39252
  function debounce(func, debounceMs, { signal, edges } = {}) {
39253
39253
  let pendingThis = undefined;
39254
39254
  let pendingArgs = null;
@@ -39310,7 +39310,7 @@ function debounce(func, debounceMs, { signal, edges } = {}) {
39310
39310
  return debounced;
39311
39311
  }
39312
39312
 
39313
- // node_modules/es-toolkit/dist/compat/function/debounce.mjs
39313
+ // ../../../node_modules/es-toolkit/dist/compat/function/debounce.mjs
39314
39314
  function debounce2(func, debounceMs = 0, options = {}) {
39315
39315
  if (typeof options !== "object") {
39316
39316
  options = {};
@@ -39354,7 +39354,7 @@ function debounce2(func, debounceMs = 0, options = {}) {
39354
39354
  return debounced;
39355
39355
  }
39356
39356
 
39357
- // node_modules/es-toolkit/dist/compat/function/throttle.mjs
39357
+ // ../../../node_modules/es-toolkit/dist/compat/function/throttle.mjs
39358
39358
  function throttle(func, throttleMs = 0, options = {}) {
39359
39359
  const { leading = true, trailing = true } = options;
39360
39360
  return debounce2(func, throttleMs, {
@@ -39363,7 +39363,7 @@ function throttle(func, throttleMs = 0, options = {}) {
39363
39363
  trailing
39364
39364
  });
39365
39365
  }
39366
- // node_modules/ansi-escapes/base.js
39366
+ // ../../../node_modules/ansi-escapes/base.js
39367
39367
  var exports_base = {};
39368
39368
  __export(exports_base, {
39369
39369
  synchronizedOutput: () => synchronizedOutput,
@@ -39407,7 +39407,7 @@ __export(exports_base, {
39407
39407
  import process2 from "node:process";
39408
39408
  import os from "node:os";
39409
39409
 
39410
- // node_modules/environment/index.js
39410
+ // ../../../node_modules/environment/index.js
39411
39411
  var isBrowser = globalThis.window?.document !== undefined;
39412
39412
  var isNode = globalThis.process?.versions?.node !== undefined;
39413
39413
  var isBun = globalThis.process?.versions?.bun !== undefined;
@@ -39425,7 +39425,7 @@ var isLinux = platform === "Linux" || globalThis.navigator?.platform?.startsWith
39425
39425
  var isIos = platform === "iOS" || globalThis.navigator?.platform === "MacIntel" && globalThis.navigator?.maxTouchPoints > 1 || /iPad|iPhone|iPod/.test(globalThis.navigator?.platform);
39426
39426
  var isAndroid = platform === "Android" || globalThis.navigator?.platform === "Android" || globalThis.navigator?.userAgent?.includes(" Android ") === true || globalThis.process?.platform === "android";
39427
39427
 
39428
- // node_modules/ansi-escapes/base.js
39428
+ // ../../../node_modules/ansi-escapes/base.js
39429
39429
  var ESC = "\x1B[";
39430
39430
  var OSC = "\x1B]";
39431
39431
  var BEL = "\x07";
@@ -39564,12 +39564,12 @@ var ConEmu = {
39564
39564
  setCwd: (cwd = cwdFunction()) => wrapOsc(`${OSC}9;9;${cwd}${BEL}`)
39565
39565
  };
39566
39566
  var setCwd = (cwd = cwdFunction()) => iTerm.setCwd(cwd) + ConEmu.setCwd(cwd);
39567
- // node_modules/is-in-ci/index.js
39567
+ // ../../../node_modules/is-in-ci/index.js
39568
39568
  import { env } from "node:process";
39569
39569
  var isInCi = env.CI !== "0" && env.CI !== "false" && (("CI" in env) || ("CONTINUOUS_INTEGRATION" in env) || Object.keys(env).some((key) => key.startsWith("CI_")));
39570
39570
  var is_in_ci_default = isInCi;
39571
39571
 
39572
- // node_modules/auto-bind/index.js
39572
+ // ../../../node_modules/auto-bind/index.js
39573
39573
  var getAllProperties = (object) => {
39574
39574
  const properties = new Set;
39575
39575
  do {
@@ -39602,10 +39602,10 @@ function autoBind(self2, { include, exclude } = {}) {
39602
39602
  return self2;
39603
39603
  }
39604
39604
 
39605
- // node_modules/ink/build/ink.js
39605
+ // ../../../node_modules/ink/build/ink.js
39606
39606
  var import_signal_exit2 = __toESM(require_signal_exit(), 1);
39607
39607
 
39608
- // node_modules/patch-console/dist/index.js
39608
+ // ../../../node_modules/patch-console/dist/index.js
39609
39609
  import { PassThrough } from "node:stream";
39610
39610
  var consoleMethods = [
39611
39611
  "assert",
@@ -39651,7 +39651,7 @@ var patchConsole = (callback) => {
39651
39651
  };
39652
39652
  var dist_default = patchConsole;
39653
39653
 
39654
- // node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js
39654
+ // ../../../node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js
39655
39655
  var loadYoga = (() => {
39656
39656
  var _scriptDir = import.meta.url;
39657
39657
  return function(loadYoga2) {
@@ -40956,7 +40956,7 @@ var loadYoga = (() => {
40956
40956
  })();
40957
40957
  var yoga_wasm_base64_esm_default = loadYoga;
40958
40958
 
40959
- // node_modules/yoga-layout/dist/src/generated/YGEnums.js
40959
+ // ../../../node_modules/yoga-layout/dist/src/generated/YGEnums.js
40960
40960
  var Align = /* @__PURE__ */ function(Align2) {
40961
40961
  Align2[Align2["Auto"] = 0] = "Auto";
40962
40962
  Align2[Align2["FlexStart"] = 1] = "FlexStart";
@@ -41159,7 +41159,7 @@ var constants = {
41159
41159
  };
41160
41160
  var YGEnums_default = constants;
41161
41161
 
41162
- // node_modules/yoga-layout/dist/src/wrapAssembly.js
41162
+ // ../../../node_modules/yoga-layout/dist/src/wrapAssembly.js
41163
41163
  function wrapAssembly(lib) {
41164
41164
  function patch(prototype, name, fn) {
41165
41165
  const original = prototype[name];
@@ -41261,16 +41261,16 @@ function wrapAssembly(lib) {
41261
41261
  };
41262
41262
  }
41263
41263
 
41264
- // node_modules/yoga-layout/dist/src/index.js
41264
+ // ../../../node_modules/yoga-layout/dist/src/index.js
41265
41265
  var Yoga = wrapAssembly(await yoga_wasm_base64_esm_default());
41266
41266
  var src_default = Yoga;
41267
41267
 
41268
- // node_modules/ink/build/reconciler.js
41268
+ // ../../../node_modules/ink/build/reconciler.js
41269
41269
  var import_react_reconciler = __toESM(require_react_reconciler(), 1);
41270
41270
  var import_constants = __toESM(require_constants(), 1);
41271
41271
  import process3 from "node:process";
41272
41272
 
41273
- // node_modules/ansi-regex/index.js
41273
+ // ../../../node_modules/ansi-regex/index.js
41274
41274
  function ansiRegex({ onlyFirst = false } = {}) {
41275
41275
  const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
41276
41276
  const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
@@ -41279,7 +41279,7 @@ function ansiRegex({ onlyFirst = false } = {}) {
41279
41279
  return new RegExp(pattern, onlyFirst ? undefined : "g");
41280
41280
  }
41281
41281
 
41282
- // node_modules/strip-ansi/index.js
41282
+ // ../../../node_modules/strip-ansi/index.js
41283
41283
  var regex = ansiRegex();
41284
41284
  function stripAnsi(string) {
41285
41285
  if (typeof string !== "string") {
@@ -41291,7 +41291,7 @@ function stripAnsi(string) {
41291
41291
  return string.replace(regex, "");
41292
41292
  }
41293
41293
 
41294
- // node_modules/get-east-asian-width/lookup-data.js
41294
+ // ../../../node_modules/get-east-asian-width/lookup-data.js
41295
41295
  var ambiguousMinimalCodePoint = 161;
41296
41296
  var ambiguousMaximumCodePoint = 1114109;
41297
41297
  var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
@@ -41302,7 +41302,7 @@ var wideMinimalCodePoint = 4352;
41302
41302
  var wideMaximumCodePoint = 262141;
41303
41303
  var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
41304
41304
 
41305
- // node_modules/get-east-asian-width/utilities.js
41305
+ // ../../../node_modules/get-east-asian-width/utilities.js
41306
41306
  var isInRange = (ranges, codePoint) => {
41307
41307
  let low = 0;
41308
41308
  let high = Math.floor(ranges.length / 2) - 1;
@@ -41320,7 +41320,7 @@ var isInRange = (ranges, codePoint) => {
41320
41320
  return false;
41321
41321
  };
41322
41322
 
41323
- // node_modules/get-east-asian-width/lookup.js
41323
+ // ../../../node_modules/get-east-asian-width/lookup.js
41324
41324
  var commonCjkCodePoint = 19968;
41325
41325
  var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
41326
41326
  function findWideFastPathRange(ranges) {
@@ -41361,7 +41361,7 @@ var isWide = (codePoint) => {
41361
41361
  return isInRange(wideRanges, codePoint);
41362
41362
  };
41363
41363
 
41364
- // node_modules/get-east-asian-width/index.js
41364
+ // ../../../node_modules/get-east-asian-width/index.js
41365
41365
  function validate(codePoint) {
41366
41366
  if (!Number.isSafeInteger(codePoint)) {
41367
41367
  throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
@@ -41375,7 +41375,7 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
41375
41375
  return 1;
41376
41376
  }
41377
41377
 
41378
- // node_modules/string-width/index.js
41378
+ // ../../../node_modules/string-width/index.js
41379
41379
  var import_emoji_regex = __toESM(require_emoji_regex(), 1);
41380
41380
  var segmenter = new Intl.Segmenter;
41381
41381
  var defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
@@ -41424,7 +41424,7 @@ function stringWidth(string, options = {}) {
41424
41424
  return width;
41425
41425
  }
41426
41426
 
41427
- // node_modules/widest-line/index.js
41427
+ // ../../../node_modules/widest-line/index.js
41428
41428
  function widestLine(string) {
41429
41429
  let lineWidth = 0;
41430
41430
  for (const line of string.split(`
@@ -41434,7 +41434,7 @@ function widestLine(string) {
41434
41434
  return lineWidth;
41435
41435
  }
41436
41436
 
41437
- // node_modules/ink/build/measure-text.js
41437
+ // ../../../node_modules/ink/build/measure-text.js
41438
41438
  var cache = {};
41439
41439
  var measureText = (text) => {
41440
41440
  if (text.length === 0) {
@@ -41455,7 +41455,7 @@ var measureText = (text) => {
41455
41455
  };
41456
41456
  var measure_text_default = measureText;
41457
41457
 
41458
- // node_modules/ansi-styles/index.js
41458
+ // ../../../node_modules/ansi-styles/index.js
41459
41459
  var ANSI_BACKGROUND_OFFSET = 10;
41460
41460
  var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
41461
41461
  var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
@@ -41632,7 +41632,7 @@ function assembleStyles() {
41632
41632
  var ansiStyles = assembleStyles();
41633
41633
  var ansi_styles_default = ansiStyles;
41634
41634
 
41635
- // node_modules/wrap-ansi/index.js
41635
+ // ../../../node_modules/wrap-ansi/index.js
41636
41636
  var ESCAPES = new Set([
41637
41637
  "\x1B",
41638
41638
  "›"
@@ -41794,7 +41794,7 @@ function wrapAnsi(string, columns, options) {
41794
41794
  `);
41795
41795
  }
41796
41796
 
41797
- // node_modules/is-fullwidth-code-point/index.js
41797
+ // ../../../node_modules/is-fullwidth-code-point/index.js
41798
41798
  function isFullwidthCodePoint(codePoint) {
41799
41799
  if (!Number.isInteger(codePoint)) {
41800
41800
  return false;
@@ -41802,7 +41802,7 @@ function isFullwidthCodePoint(codePoint) {
41802
41802
  return 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);
41803
41803
  }
41804
41804
 
41805
- // node_modules/cli-truncate/node_modules/slice-ansi/index.js
41805
+ // ../../../node_modules/cli-truncate/node_modules/slice-ansi/index.js
41806
41806
  var astralRegex = /^[\uD800-\uDBFF][\uDC00-\uDFFF]$/;
41807
41807
  var ESCAPES2 = [
41808
41808
  "\x1B",
@@ -41885,7 +41885,7 @@ function sliceAnsi(string, begin, end) {
41885
41885
  return output;
41886
41886
  }
41887
41887
 
41888
- // node_modules/cli-truncate/index.js
41888
+ // ../../../node_modules/cli-truncate/index.js
41889
41889
  function getIndexOfNearestSpace(string, wantedIndex, shouldSearchRight) {
41890
41890
  if (string.charAt(wantedIndex) === " ") {
41891
41891
  return wantedIndex;
@@ -41957,7 +41957,7 @@ function cliTruncate(text, columns, options = {}) {
41957
41957
  throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${position}`);
41958
41958
  }
41959
41959
 
41960
- // node_modules/ink/build/wrap-text.js
41960
+ // ../../../node_modules/ink/build/wrap-text.js
41961
41961
  var cache2 = {};
41962
41962
  var wrapText = (text, maxWidth, wrapType) => {
41963
41963
  const cacheKey = text + String(maxWidth) + String(wrapType);
@@ -41987,7 +41987,7 @@ var wrapText = (text, maxWidth, wrapType) => {
41987
41987
  };
41988
41988
  var wrap_text_default = wrapText;
41989
41989
 
41990
- // node_modules/ink/build/squash-text-nodes.js
41990
+ // ../../../node_modules/ink/build/squash-text-nodes.js
41991
41991
  var squashTextNodes = (node) => {
41992
41992
  let text = "";
41993
41993
  for (let index = 0;index < node.childNodes.length; index++) {
@@ -42012,7 +42012,7 @@ var squashTextNodes = (node) => {
42012
42012
  };
42013
42013
  var squash_text_nodes_default = squashTextNodes;
42014
42014
 
42015
- // node_modules/ink/build/dom.js
42015
+ // ../../../node_modules/ink/build/dom.js
42016
42016
  var createNode = (nodeName) => {
42017
42017
  const node = {
42018
42018
  nodeName,
@@ -42122,7 +42122,7 @@ var setTextNodeValue = (node, text) => {
42122
42122
  markNodeAsDirty(node);
42123
42123
  };
42124
42124
 
42125
- // node_modules/ink/build/styles.js
42125
+ // ../../../node_modules/ink/build/styles.js
42126
42126
  var applyPositionStyles = (node, style) => {
42127
42127
  if ("position" in style) {
42128
42128
  node.setPositionType(style.position === "absolute" ? src_default.POSITION_TYPE_ABSOLUTE : src_default.POSITION_TYPE_RELATIVE);
@@ -42343,7 +42343,7 @@ var styles2 = (node, style = {}) => {
42343
42343
  };
42344
42344
  var styles_default = styles2;
42345
42345
 
42346
- // node_modules/ink/build/reconciler.js
42346
+ // ../../../node_modules/ink/build/reconciler.js
42347
42347
  if (process3.env["DEV"] === "true") {
42348
42348
  try {
42349
42349
  await Promise.resolve().then(() => (init_devtools(), exports_devtools));
@@ -42545,7 +42545,7 @@ var reconciler_default = import_react_reconciler.default({
42545
42545
  }
42546
42546
  });
42547
42547
 
42548
- // node_modules/indent-string/index.js
42548
+ // ../../../node_modules/indent-string/index.js
42549
42549
  function indentString(string, count = 1, options = {}) {
42550
42550
  const {
42551
42551
  indent = " ",
@@ -42570,16 +42570,16 @@ function indentString(string, count = 1, options = {}) {
42570
42570
  return string.replace(regex2, indent.repeat(count));
42571
42571
  }
42572
42572
 
42573
- // node_modules/ink/build/get-max-width.js
42573
+ // ../../../node_modules/ink/build/get-max-width.js
42574
42574
  var getMaxWidth = (yogaNode) => {
42575
42575
  return yogaNode.getComputedWidth() - yogaNode.getComputedPadding(src_default.EDGE_LEFT) - yogaNode.getComputedPadding(src_default.EDGE_RIGHT) - yogaNode.getComputedBorder(src_default.EDGE_LEFT) - yogaNode.getComputedBorder(src_default.EDGE_RIGHT);
42576
42576
  };
42577
42577
  var get_max_width_default = getMaxWidth;
42578
42578
 
42579
- // node_modules/ink/build/render-border.js
42579
+ // ../../../node_modules/ink/build/render-border.js
42580
42580
  var import_cli_boxes = __toESM(require_cli_boxes(), 1);
42581
42581
 
42582
- // node_modules/chalk/source/vendor/ansi-styles/index.js
42582
+ // ../../../node_modules/chalk/source/vendor/ansi-styles/index.js
42583
42583
  var ANSI_BACKGROUND_OFFSET2 = 10;
42584
42584
  var wrapAnsi162 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
42585
42585
  var wrapAnsi2562 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
@@ -42756,7 +42756,7 @@ function assembleStyles2() {
42756
42756
  var ansiStyles2 = assembleStyles2();
42757
42757
  var ansi_styles_default2 = ansiStyles2;
42758
42758
 
42759
- // node_modules/chalk/source/vendor/supports-color/index.js
42759
+ // ../../../node_modules/chalk/source/vendor/supports-color/index.js
42760
42760
  import process4 from "node:process";
42761
42761
  import os2 from "node:os";
42762
42762
  import tty from "node:tty";
@@ -42888,7 +42888,7 @@ var supportsColor = {
42888
42888
  };
42889
42889
  var supports_color_default = supportsColor;
42890
42890
 
42891
- // node_modules/chalk/source/utilities.js
42891
+ // ../../../node_modules/chalk/source/utilities.js
42892
42892
  function stringReplaceAll(string, substring, replacer) {
42893
42893
  let index = string.indexOf(substring);
42894
42894
  if (index === -1) {
@@ -42921,7 +42921,7 @@ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
42921
42921
  return returnValue;
42922
42922
  }
42923
42923
 
42924
- // node_modules/chalk/source/index.js
42924
+ // ../../../node_modules/chalk/source/index.js
42925
42925
  var { stdout: stdoutColor, stderr: stderrColor } = supports_color_default;
42926
42926
  var GENERATOR = Symbol("GENERATOR");
42927
42927
  var STYLER = Symbol("STYLER");
@@ -43068,7 +43068,7 @@ var chalk = createChalk();
43068
43068
  var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
43069
43069
  var source_default = chalk;
43070
43070
 
43071
- // node_modules/ink/build/colorize.js
43071
+ // ../../../node_modules/ink/build/colorize.js
43072
43072
  var rgbRegex = /^rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/;
43073
43073
  var ansiRegex2 = /^ansi256\(\s?(\d+)\s?\)$/;
43074
43074
  var isNamedColor = (color) => {
@@ -43110,7 +43110,7 @@ var colorize = (str, color, type) => {
43110
43110
  };
43111
43111
  var colorize_default = colorize;
43112
43112
 
43113
- // node_modules/ink/build/render-border.js
43113
+ // ../../../node_modules/ink/build/render-border.js
43114
43114
  var renderBorder = (x, y, node, output) => {
43115
43115
  if (node.style.borderStyle) {
43116
43116
  const width = node.yogaNode.getComputedWidth();
@@ -43173,7 +43173,7 @@ var renderBorder = (x, y, node, output) => {
43173
43173
  };
43174
43174
  var render_border_default = renderBorder;
43175
43175
 
43176
- // node_modules/ink/build/render-node-to-output.js
43176
+ // ../../../node_modules/ink/build/render-node-to-output.js
43177
43177
  var applyPaddingToText = (node, text) => {
43178
43178
  const yogaNode = node.childNodes[0]?.yogaNode;
43179
43179
  if (yogaNode) {
@@ -43245,7 +43245,7 @@ var renderNodeToOutput = (node, output, options) => {
43245
43245
  };
43246
43246
  var render_node_to_output_default = renderNodeToOutput;
43247
43247
 
43248
- // node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js
43248
+ // ../../../node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js
43249
43249
  function isFullwidthCodePoint2(codePoint) {
43250
43250
  if (!Number.isInteger(codePoint)) {
43251
43251
  return false;
@@ -43253,7 +43253,7 @@ function isFullwidthCodePoint2(codePoint) {
43253
43253
  return isFullWidth(codePoint) || isWide(codePoint);
43254
43254
  }
43255
43255
 
43256
- // node_modules/slice-ansi/index.js
43256
+ // ../../../node_modules/slice-ansi/index.js
43257
43257
  var ESCAPES3 = new Set([27, 155]);
43258
43258
  var CODE_POINT_0 = "0".codePointAt(0);
43259
43259
  var CODE_POINT_9 = "9".codePointAt(0);
@@ -43384,7 +43384,7 @@ function sliceAnsi2(string, start, end) {
43384
43384
  return returnValue;
43385
43385
  }
43386
43386
 
43387
- // node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js
43387
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js
43388
43388
  var ESCAPES4 = new Set([27, 155]);
43389
43389
  var endCodesSet2 = new Set;
43390
43390
  var endCodesMap2 = new Map;
@@ -43418,7 +43418,7 @@ function getEndCode2(code) {
43418
43418
  function ansiCodesToString(codes) {
43419
43419
  return codes.map((code) => code.code).join("");
43420
43420
  }
43421
- // node_modules/@alcalzone/ansi-tokenize/build/reduce.js
43421
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/reduce.js
43422
43422
  function reduceAnsiCodes2(codes) {
43423
43423
  return reduceAnsiCodesIncremental([], codes);
43424
43424
  }
@@ -43437,7 +43437,7 @@ function reduceAnsiCodesIncremental(codes, newCodes) {
43437
43437
  return ret;
43438
43438
  }
43439
43439
 
43440
- // node_modules/@alcalzone/ansi-tokenize/build/undo.js
43440
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/undo.js
43441
43441
  function undoAnsiCodes2(codes) {
43442
43442
  return reduceAnsiCodes2(codes).reverse().map((code) => ({
43443
43443
  ...code,
@@ -43445,7 +43445,7 @@ function undoAnsiCodes2(codes) {
43445
43445
  }));
43446
43446
  }
43447
43447
 
43448
- // node_modules/@alcalzone/ansi-tokenize/build/diff.js
43448
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/diff.js
43449
43449
  function diffAnsiCodes(from, to) {
43450
43450
  const endCodesInTo = new Set(to.map((code) => code.endCode));
43451
43451
  const startCodesInFrom = new Set(from.map((code) => code.code));
@@ -43454,7 +43454,7 @@ function diffAnsiCodes(from, to) {
43454
43454
  ...to.filter((code) => !startCodesInFrom.has(code.code))
43455
43455
  ];
43456
43456
  }
43457
- // node_modules/@alcalzone/ansi-tokenize/build/styledChars.js
43457
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/styledChars.js
43458
43458
  function styledCharsFromTokens(tokens) {
43459
43459
  let codes = [];
43460
43460
  const ret = [];
@@ -43486,7 +43486,7 @@ function styledCharsToString(chars) {
43486
43486
  }
43487
43487
  return ret;
43488
43488
  }
43489
- // node_modules/@alcalzone/ansi-tokenize/build/tokenize.js
43489
+ // ../../../node_modules/@alcalzone/ansi-tokenize/build/tokenize.js
43490
43490
  function findNumberIndex2(str) {
43491
43491
  for (let index = 0;index < str.length; index++) {
43492
43492
  const charCode = str.charCodeAt(index);
@@ -43552,7 +43552,7 @@ function tokenize2(str, endChar = Number.POSITIVE_INFINITY) {
43552
43552
  }
43553
43553
  return ret;
43554
43554
  }
43555
- // node_modules/ink/build/output.js
43555
+ // ../../../node_modules/ink/build/output.js
43556
43556
  class Output {
43557
43557
  width;
43558
43558
  height;
@@ -43690,7 +43690,7 @@ class Output {
43690
43690
  }
43691
43691
  }
43692
43692
 
43693
- // node_modules/ink/build/renderer.js
43693
+ // ../../../node_modules/ink/build/renderer.js
43694
43694
  var renderer = (node) => {
43695
43695
  if (node.yogaNode) {
43696
43696
  const output = new Output({
@@ -43724,10 +43724,10 @@ var renderer = (node) => {
43724
43724
  };
43725
43725
  var renderer_default = renderer;
43726
43726
 
43727
- // node_modules/cli-cursor/index.js
43727
+ // ../../../node_modules/cli-cursor/index.js
43728
43728
  import process6 from "node:process";
43729
43729
 
43730
- // node_modules/restore-cursor/index.js
43730
+ // ../../../node_modules/restore-cursor/index.js
43731
43731
  var import_onetime = __toESM(require_onetime(), 1);
43732
43732
  var import_signal_exit = __toESM(require_signal_exit(), 1);
43733
43733
  import process5 from "node:process";
@@ -43738,7 +43738,7 @@ var restoreCursor = import_onetime.default(() => {
43738
43738
  });
43739
43739
  var restore_cursor_default = restoreCursor;
43740
43740
 
43741
- // node_modules/cli-cursor/index.js
43741
+ // ../../../node_modules/cli-cursor/index.js
43742
43742
  var isHidden = false;
43743
43743
  var cliCursor = {};
43744
43744
  cliCursor.show = (writableStream = process6.stderr) => {
@@ -43768,7 +43768,7 @@ cliCursor.toggle = (force, writableStream) => {
43768
43768
  };
43769
43769
  var cli_cursor_default = cliCursor;
43770
43770
 
43771
- // node_modules/ink/build/log-update.js
43771
+ // ../../../node_modules/ink/build/log-update.js
43772
43772
  var create2 = (stream, { showCursor = false } = {}) => {
43773
43773
  let previousLineCount = 0;
43774
43774
  let previousOutput = "";
@@ -43806,16 +43806,16 @@ var create2 = (stream, { showCursor = false } = {}) => {
43806
43806
  var logUpdate = { create: create2 };
43807
43807
  var log_update_default = logUpdate;
43808
43808
 
43809
- // node_modules/ink/build/instances.js
43809
+ // ../../../node_modules/ink/build/instances.js
43810
43810
  var instances = new WeakMap;
43811
43811
  var instances_default = instances;
43812
43812
 
43813
- // node_modules/ink/build/components/App.js
43813
+ // ../../../node_modules/ink/build/components/App.js
43814
43814
  var import_react9 = __toESM(require_react(), 1);
43815
43815
  import { EventEmitter as EventEmitter2 } from "node:events";
43816
43816
  import process10 from "node:process";
43817
43817
 
43818
- // node_modules/ink/build/components/AppContext.js
43818
+ // ../../../node_modules/ink/build/components/AppContext.js
43819
43819
  var import_react = __toESM(require_react(), 1);
43820
43820
  var AppContext = import_react.createContext({
43821
43821
  exit() {}
@@ -43823,7 +43823,7 @@ var AppContext = import_react.createContext({
43823
43823
  AppContext.displayName = "InternalAppContext";
43824
43824
  var AppContext_default = AppContext;
43825
43825
 
43826
- // node_modules/ink/build/components/StdinContext.js
43826
+ // ../../../node_modules/ink/build/components/StdinContext.js
43827
43827
  var import_react2 = __toESM(require_react(), 1);
43828
43828
  import { EventEmitter } from "node:events";
43829
43829
  import process7 from "node:process";
@@ -43837,7 +43837,7 @@ var StdinContext = import_react2.createContext({
43837
43837
  StdinContext.displayName = "InternalStdinContext";
43838
43838
  var StdinContext_default = StdinContext;
43839
43839
 
43840
- // node_modules/ink/build/components/StdoutContext.js
43840
+ // ../../../node_modules/ink/build/components/StdoutContext.js
43841
43841
  var import_react3 = __toESM(require_react(), 1);
43842
43842
  import process8 from "node:process";
43843
43843
  var StdoutContext = import_react3.createContext({
@@ -43847,7 +43847,7 @@ var StdoutContext = import_react3.createContext({
43847
43847
  StdoutContext.displayName = "InternalStdoutContext";
43848
43848
  var StdoutContext_default = StdoutContext;
43849
43849
 
43850
- // node_modules/ink/build/components/StderrContext.js
43850
+ // ../../../node_modules/ink/build/components/StderrContext.js
43851
43851
  var import_react4 = __toESM(require_react(), 1);
43852
43852
  import process9 from "node:process";
43853
43853
  var StderrContext = import_react4.createContext({
@@ -43857,7 +43857,7 @@ var StderrContext = import_react4.createContext({
43857
43857
  StderrContext.displayName = "InternalStderrContext";
43858
43858
  var StderrContext_default = StderrContext;
43859
43859
 
43860
- // node_modules/ink/build/components/FocusContext.js
43860
+ // ../../../node_modules/ink/build/components/FocusContext.js
43861
43861
  var import_react5 = __toESM(require_react(), 1);
43862
43862
  var FocusContext = import_react5.createContext({
43863
43863
  activeId: undefined,
@@ -43874,19 +43874,19 @@ var FocusContext = import_react5.createContext({
43874
43874
  FocusContext.displayName = "InternalFocusContext";
43875
43875
  var FocusContext_default = FocusContext;
43876
43876
 
43877
- // node_modules/ink/build/components/ErrorOverview.js
43877
+ // ../../../node_modules/ink/build/components/ErrorOverview.js
43878
43878
  var import_react8 = __toESM(require_react(), 1);
43879
43879
  var import_stack_utils = __toESM(require_stack_utils(), 1);
43880
43880
  import * as fs from "node:fs";
43881
43881
  import { cwd } from "node:process";
43882
43882
 
43883
- // node_modules/convert-to-spaces/dist/index.js
43883
+ // ../../../node_modules/convert-to-spaces/dist/index.js
43884
43884
  var convertToSpaces = (input, spaces = 2) => {
43885
43885
  return input.replace(/^\t+/gm, ($1) => " ".repeat($1.length * spaces));
43886
43886
  };
43887
43887
  var dist_default2 = convertToSpaces;
43888
43888
 
43889
- // node_modules/code-excerpt/dist/index.js
43889
+ // ../../../node_modules/code-excerpt/dist/index.js
43890
43890
  var generateLineNumbers = (line, around) => {
43891
43891
  const lineNumbers = [];
43892
43892
  const min2 = line - around;
@@ -43912,7 +43912,7 @@ var codeExcerpt = (source, line, options = {}) => {
43912
43912
  };
43913
43913
  var dist_default3 = codeExcerpt;
43914
43914
 
43915
- // node_modules/ink/build/components/Box.js
43915
+ // ../../../node_modules/ink/build/components/Box.js
43916
43916
  var import_react6 = __toESM(require_react(), 1);
43917
43917
  var Box = import_react6.forwardRef(({ children, ...style }, ref) => {
43918
43918
  return import_react6.default.createElement("ink-box", { ref, style: {
@@ -43930,7 +43930,7 @@ Box.defaultProps = {
43930
43930
  };
43931
43931
  var Box_default = Box;
43932
43932
 
43933
- // node_modules/ink/build/components/Text.js
43933
+ // ../../../node_modules/ink/build/components/Text.js
43934
43934
  var import_react7 = __toESM(require_react(), 1);
43935
43935
  function Text({ color, backgroundColor, dimColor = false, bold = false, italic = false, underline = false, strikethrough = false, inverse = false, wrap: wrap2 = "wrap", children }) {
43936
43936
  if (children === undefined || children === null) {
@@ -43966,7 +43966,7 @@ function Text({ color, backgroundColor, dimColor = false, bold = false, italic =
43966
43966
  return import_react7.default.createElement("ink-text", { style: { flexGrow: 0, flexShrink: 1, flexDirection: "row", textWrap: wrap2 }, internal_transform: transform2 }, children);
43967
43967
  }
43968
43968
 
43969
- // node_modules/ink/build/components/ErrorOverview.js
43969
+ // ../../../node_modules/ink/build/components/ErrorOverview.js
43970
43970
  var cleanupPath = (path) => {
43971
43971
  return path?.replace(`file://${cwd()}/`, "");
43972
43972
  };
@@ -44000,7 +44000,7 @@ function ErrorOverview({ error }) {
44000
44000
  })));
44001
44001
  }
44002
44002
 
44003
- // node_modules/ink/build/components/App.js
44003
+ // ../../../node_modules/ink/build/components/App.js
44004
44004
  var tab = "\t";
44005
44005
  var shiftTab = "\x1B[Z";
44006
44006
  var escape2 = "\x1B";
@@ -44245,7 +44245,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
44245
44245
  };
44246
44246
  }
44247
44247
 
44248
- // node_modules/ink/build/ink.js
44248
+ // ../../../node_modules/ink/build/ink.js
44249
44249
  var noop2 = () => {};
44250
44250
 
44251
44251
  class Ink {
@@ -44443,7 +44443,7 @@ class Ink {
44443
44443
  }
44444
44444
  }
44445
44445
 
44446
- // node_modules/ink/build/render.js
44446
+ // ../../../node_modules/ink/build/render.js
44447
44447
  var render = (node, options) => {
44448
44448
  const inkOptions = {
44449
44449
  stdout: process12.stdout,
@@ -44484,7 +44484,7 @@ var getInstance = (stdout, createInstance) => {
44484
44484
  }
44485
44485
  return instance;
44486
44486
  };
44487
- // node_modules/ink/build/components/Static.js
44487
+ // ../../../node_modules/ink/build/components/Static.js
44488
44488
  var import_react11 = __toESM(require_react(), 1);
44489
44489
  function Static(props) {
44490
44490
  const { items, children: render2, style: customStyle } = props;
@@ -44505,16 +44505,16 @@ function Static(props) {
44505
44505
  }), [customStyle]);
44506
44506
  return import_react11.default.createElement("ink-box", { internal_static: true, style }, children);
44507
44507
  }
44508
- // node_modules/ink/build/components/Transform.js
44508
+ // ../../../node_modules/ink/build/components/Transform.js
44509
44509
  var import_react12 = __toESM(require_react(), 1);
44510
- // node_modules/ink/build/components/Newline.js
44510
+ // ../../../node_modules/ink/build/components/Newline.js
44511
44511
  var import_react13 = __toESM(require_react(), 1);
44512
- // node_modules/ink/build/components/Spacer.js
44512
+ // ../../../node_modules/ink/build/components/Spacer.js
44513
44513
  var import_react14 = __toESM(require_react(), 1);
44514
- // node_modules/ink/build/hooks/use-input.js
44514
+ // ../../../node_modules/ink/build/hooks/use-input.js
44515
44515
  var import_react16 = __toESM(require_react(), 1);
44516
44516
 
44517
- // node_modules/ink/build/parse-keypress.js
44517
+ // ../../../node_modules/ink/build/parse-keypress.js
44518
44518
  import { Buffer as Buffer2 } from "node:buffer";
44519
44519
  var metaKeyCodeRe = /^(?:\x1b)([a-zA-Z0-9])$/;
44520
44520
  var fnKeyRe = /^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/;
@@ -44696,12 +44696,12 @@ var parseKeypress = (s = "") => {
44696
44696
  };
44697
44697
  var parse_keypress_default = parseKeypress;
44698
44698
 
44699
- // node_modules/ink/build/hooks/use-stdin.js
44699
+ // ../../../node_modules/ink/build/hooks/use-stdin.js
44700
44700
  var import_react15 = __toESM(require_react(), 1);
44701
44701
  var useStdin = () => import_react15.useContext(StdinContext_default);
44702
44702
  var use_stdin_default = useStdin;
44703
44703
 
44704
- // node_modules/ink/build/hooks/use-input.js
44704
+ // ../../../node_modules/ink/build/hooks/use-input.js
44705
44705
  var useInput = (inputHandler, options = {}) => {
44706
44706
  const { stdin, setRawMode, internal_exitOnCtrlC, internal_eventEmitter } = use_stdin_default();
44707
44707
  import_react16.useEffect(() => {
@@ -44758,17 +44758,17 @@ var useInput = (inputHandler, options = {}) => {
44758
44758
  }, [options.isActive, stdin, internal_exitOnCtrlC, inputHandler]);
44759
44759
  };
44760
44760
  var use_input_default = useInput;
44761
- // node_modules/ink/build/hooks/use-app.js
44761
+ // ../../../node_modules/ink/build/hooks/use-app.js
44762
44762
  var import_react17 = __toESM(require_react(), 1);
44763
44763
  var useApp = () => import_react17.useContext(AppContext_default);
44764
44764
  var use_app_default = useApp;
44765
- // node_modules/ink/build/hooks/use-stdout.js
44765
+ // ../../../node_modules/ink/build/hooks/use-stdout.js
44766
44766
  var import_react18 = __toESM(require_react(), 1);
44767
- // node_modules/ink/build/hooks/use-stderr.js
44767
+ // ../../../node_modules/ink/build/hooks/use-stderr.js
44768
44768
  var import_react19 = __toESM(require_react(), 1);
44769
- // node_modules/ink/build/hooks/use-focus.js
44769
+ // ../../../node_modules/ink/build/hooks/use-focus.js
44770
44770
  var import_react20 = __toESM(require_react(), 1);
44771
- // node_modules/ink/build/hooks/use-focus-manager.js
44771
+ // ../../../node_modules/ink/build/hooks/use-focus-manager.js
44772
44772
  var import_react21 = __toESM(require_react(), 1);
44773
44773
  // src/cli.ts
44774
44774
  var import_react31 = __toESM(require_react(), 1);
@@ -45368,7 +45368,51 @@ function projectsTranscriptDir(projectDir) {
45368
45368
  return join4(homedir2(), ".claude", "projects", projectHash(projectDir));
45369
45369
  }
45370
45370
  function listSessions(projectDir) {
45371
- const dir = projectsTranscriptDir(projectDir);
45371
+ return sortByActivityDesc(readSessionsInProjectHashDir(projectsTranscriptDir(projectDir)));
45372
+ }
45373
+ function listAllSessions() {
45374
+ const projectsRoot = join4(homedir2(), ".claude", "projects");
45375
+ if (!existsSync4(projectsRoot))
45376
+ return [];
45377
+ const all = [];
45378
+ for (const entry of readdirSync(projectsRoot)) {
45379
+ const dir = join4(projectsRoot, entry);
45380
+ try {
45381
+ if (!statSync(dir).isDirectory())
45382
+ continue;
45383
+ } catch {
45384
+ continue;
45385
+ }
45386
+ all.push(...readSessionsInProjectHashDir(dir));
45387
+ }
45388
+ return sortByActivityDesc(all);
45389
+ }
45390
+ function loadSession(path) {
45391
+ if (!existsSync4(path))
45392
+ return null;
45393
+ const id = basename(path, ".jsonl");
45394
+ try {
45395
+ const meta = parseSessionMeta(path);
45396
+ return { id, path, ...meta };
45397
+ } catch {
45398
+ try {
45399
+ const stat = statSync(path);
45400
+ return {
45401
+ id,
45402
+ path,
45403
+ started_at: null,
45404
+ last_activity_at: null,
45405
+ turn_count: 0,
45406
+ first_message: null,
45407
+ mtime_ms: stat.mtimeMs,
45408
+ cwd: null
45409
+ };
45410
+ } catch {
45411
+ return null;
45412
+ }
45413
+ }
45414
+ }
45415
+ function readSessionsInProjectHashDir(dir) {
45372
45416
  if (!existsSync4(dir))
45373
45417
  return [];
45374
45418
  const out = [];
@@ -45376,6 +45420,12 @@ function listSessions(projectDir) {
45376
45420
  if (!entry.endsWith(".jsonl"))
45377
45421
  continue;
45378
45422
  const path = join4(dir, entry);
45423
+ try {
45424
+ if (!statSync(path).isFile())
45425
+ continue;
45426
+ } catch {
45427
+ continue;
45428
+ }
45379
45429
  const id = basename(entry, ".jsonl");
45380
45430
  try {
45381
45431
  const meta = parseSessionMeta(path);
@@ -45394,12 +45444,15 @@ function listSessions(projectDir) {
45394
45444
  });
45395
45445
  }
45396
45446
  }
45397
- out.sort((a, b) => {
45447
+ return out;
45448
+ }
45449
+ function sortByActivityDesc(sessions) {
45450
+ sessions.sort((a, b) => {
45398
45451
  const aKey = a.last_activity_at ?? new Date(a.mtime_ms).toISOString();
45399
45452
  const bKey = b.last_activity_at ?? new Date(b.mtime_ms).toISOString();
45400
45453
  return bKey.localeCompare(aKey);
45401
45454
  });
45402
- return out;
45455
+ return sessions;
45403
45456
  }
45404
45457
  function parseSessionMeta(path) {
45405
45458
  const stat = statSync(path);
@@ -45582,6 +45635,42 @@ function uninstallSlashCommand(projectDir, opts) {
45582
45635
  var import_react30 = __toESM(require_react(), 1);
45583
45636
  import { existsSync as existsSync7, readFileSync as readFileSync7 } from "node:fs";
45584
45637
 
45638
+ // src/clipboard.ts
45639
+ import { spawn } from "node:child_process";
45640
+ function copyToClipboard(text) {
45641
+ const cmd = pickCmd();
45642
+ if (!cmd) {
45643
+ return Promise.reject(new Error(`no clipboard tool wired up for platform=${process.platform}`));
45644
+ }
45645
+ return new Promise((resolve, reject2) => {
45646
+ const proc = spawn(cmd.bin, cmd.args, {
45647
+ stdio: ["pipe", "ignore", "ignore"]
45648
+ });
45649
+ proc.on("error", (err) => {
45650
+ const msg = err.code === "ENOENT" ? `${cmd.bin} not found on PATH${process.platform === "linux" ? " — install xclip or wl-copy" : ""}` : `${cmd.bin}: ${err.message}`;
45651
+ reject2(new Error(msg));
45652
+ });
45653
+ proc.on("close", (code) => {
45654
+ if (code === 0)
45655
+ resolve();
45656
+ else
45657
+ reject2(new Error(`${cmd.bin} exited with code ${code}`));
45658
+ });
45659
+ proc.stdin.write(text);
45660
+ proc.stdin.end();
45661
+ });
45662
+ }
45663
+ function pickCmd() {
45664
+ if (process.platform === "darwin")
45665
+ return { bin: "pbcopy", args: [] };
45666
+ if (process.platform === "win32")
45667
+ return { bin: "clip", args: [] };
45668
+ if (process.platform === "linux") {
45669
+ return { bin: "xclip", args: ["-selection", "clipboard"] };
45670
+ }
45671
+ return null;
45672
+ }
45673
+
45585
45674
  // src/tail.ts
45586
45675
  import {
45587
45676
  closeSync,
@@ -45755,6 +45844,8 @@ function parseAssistantContent(line) {
45755
45844
  }
45756
45845
  const ts = typeof obj["timestamp"] === "string" ? obj["timestamp"] : new Date().toISOString();
45757
45846
  const uuid = typeof obj["uuid"] === "string" ? obj["uuid"] : null;
45847
+ const rawStopReason = message?.["stop_reason"];
45848
+ const stopReason = typeof rawStopReason === "string" ? rawStopReason : undefined;
45758
45849
  const out = [];
45759
45850
  if (textParts.length > 0) {
45760
45851
  const text = textParts.join(`
@@ -45764,7 +45855,8 @@ function parseAssistantContent(line) {
45764
45855
  kind: "text",
45765
45856
  timestamp: ts,
45766
45857
  text,
45767
- id: uuid ?? `${ts}-${textParts[0].slice(0, 16)}`
45858
+ id: uuid ?? `${ts}-${textParts[0].slice(0, 16)}`,
45859
+ ...stopReason !== undefined ? { stopReason } : {}
45768
45860
  });
45769
45861
  }
45770
45862
  if (thinkingParts.length > 0) {
@@ -45775,7 +45867,8 @@ function parseAssistantContent(line) {
45775
45867
  kind: "thinking",
45776
45868
  timestamp: ts,
45777
45869
  text,
45778
- id: uuid ? `${uuid}#thinking` : `${ts}-thinking-${thinkingParts[0].slice(0, 16)}`
45870
+ id: uuid ? `${uuid}#thinking` : `${ts}-thinking-${thinkingParts[0].slice(0, 16)}`,
45871
+ ...stopReason !== undefined ? { stopReason } : {}
45779
45872
  });
45780
45873
  }
45781
45874
  for (const q of questions) {
@@ -45924,35 +46017,6 @@ function ringBell() {
45924
46017
  } catch {}
45925
46018
  }
45926
46019
 
45927
- class DebouncedBell {
45928
- delayMs;
45929
- playFn;
45930
- timer = null;
45931
- constructor(delayMs, playFn = ringBell) {
45932
- this.delayMs = delayMs;
45933
- this.playFn = playFn;
45934
- }
45935
- schedule() {
45936
- if (this.timer)
45937
- clearTimeout(this.timer);
45938
- this.timer = setTimeout(() => {
45939
- this.timer = null;
45940
- try {
45941
- this.playFn();
45942
- } catch {}
45943
- }, this.delayMs);
45944
- }
45945
- cancel() {
45946
- if (this.timer) {
45947
- clearTimeout(this.timer);
45948
- this.timer = null;
45949
- }
45950
- }
45951
- get pending() {
45952
- return this.timer !== null;
45953
- }
45954
- }
45955
-
45956
46020
  // src/queue.ts
45957
46021
  class SerialQueue {
45958
46022
  chain = Promise.resolve();
@@ -46165,7 +46229,7 @@ function StatusBar({
46165
46229
  // src/components/input-pane.tsx
46166
46230
  var import_react24 = __toESM(require_react(), 1);
46167
46231
 
46168
- // node_modules/ink-text-input/build/index.js
46232
+ // ../../../node_modules/ink-text-input/build/index.js
46169
46233
  var import_react23 = __toESM(require_react(), 1);
46170
46234
  function TextInput({ value: originalValue, placeholder = "", focus = true, mask, highlightPastedText = false, showCursor = true, onChange, onSubmit }) {
46171
46235
  const [state, setState] = import_react23.useState({
@@ -46290,7 +46354,8 @@ function PreviewPane({
46290
46354
  translating,
46291
46355
  streamingText,
46292
46356
  error,
46293
- concern
46357
+ concern,
46358
+ isDesktopAppSession
46294
46359
  }) {
46295
46360
  let body;
46296
46361
  let borderColor;
@@ -46345,7 +46410,15 @@ function PreviewPane({
46345
46410
  }, /* @__PURE__ */ import_react25.default.createElement(Text, null, /* @__PURE__ */ import_react25.default.createElement(Text, {
46346
46411
  color: "green",
46347
46412
  bold: true
46348
- }, "✓ [zh→en] sent:", " "), text), /* @__PURE__ */ import_react25.default.createElement(Text, {
46413
+ }, "✓ [zh→en] sent:", " "), text), isDesktopAppSession ? /* @__PURE__ */ import_react25.default.createElement(Box_default, {
46414
+ marginTop: 1
46415
+ }, /* @__PURE__ */ import_react25.default.createElement(Text, {
46416
+ dimColor: true
46417
+ }, "切到 Claude APP 粘贴: "), /* @__PURE__ */ import_react25.default.createElement(Text, {
46418
+ color: "cyan"
46419
+ }, "@.claude/cache/user-input.md"), /* @__PURE__ */ import_react25.default.createElement(Text, {
46420
+ dimColor: true
46421
+ }, " [Ctrl+Y 复制此命令]")) : /* @__PURE__ */ import_react25.default.createElement(Text, {
46349
46422
  dimColor: true
46350
46423
  }, "现在切到 Claude Code 终端,输入 /i ↵ 即可发送给 Claude"));
46351
46424
  borderColor = "green";
@@ -46355,14 +46428,19 @@ function PreviewPane({
46355
46428
  }, "等待中文输入…");
46356
46429
  borderColor = "gray";
46357
46430
  }
46431
+ const showCopyEnglishHint = !!text;
46358
46432
  return /* @__PURE__ */ import_react25.default.createElement(Box_default, {
46359
46433
  borderStyle: "round",
46360
46434
  borderColor,
46361
46435
  paddingX: 1,
46362
46436
  flexDirection: "column"
46437
+ }, /* @__PURE__ */ import_react25.default.createElement(Box_default, {
46438
+ justifyContent: "space-between"
46363
46439
  }, /* @__PURE__ */ import_react25.default.createElement(Text, {
46364
46440
  dimColor: true
46365
- }, "翻译结果"), /* @__PURE__ */ import_react25.default.createElement(Box_default, {
46441
+ }, "翻译结果"), showCopyEnglishHint ? /* @__PURE__ */ import_react25.default.createElement(Text, {
46442
+ dimColor: true
46443
+ }, "复制英文翻译粘贴到任何地方 [Ctrl+B 复制英文]") : null), /* @__PURE__ */ import_react25.default.createElement(Box_default, {
46366
46444
  marginTop: 0
46367
46445
  }, body));
46368
46446
  }
@@ -46414,7 +46492,7 @@ function summarizeToolInput(name, input) {
46414
46492
  return genericSummary(i);
46415
46493
  }
46416
46494
  }
46417
- var LINE_LIMIT = 5;
46495
+ var LINE_LIMIT = 3;
46418
46496
  function formatToolResult(content) {
46419
46497
  const text = stringifyResult(content);
46420
46498
  const all = text.split(`
@@ -46829,14 +46907,19 @@ function AgentBody({
46829
46907
  color: "yellow"
46830
46908
  }, "⏳")) : /* @__PURE__ */ import_react26.default.createElement(Text, null, prompt.text))));
46831
46909
  }
46910
+ var TOOL_USE_LINE_CAP = 2;
46832
46911
  function ToolUseRow({ toolUse }) {
46833
46912
  const summary = summarizeToolInput(toolUse.name, toolUse.input);
46834
- const lines = summary.length > 0 ? summary.split(`
46913
+ const allLines = summary.length > 0 ? summary.split(`
46835
46914
  `) : [""];
46915
+ const truncated = allLines.length > TOOL_USE_LINE_CAP;
46916
+ const lines = truncated ? allLines.slice(0, TOOL_USE_LINE_CAP) : allLines;
46917
+ const closer = truncated ? "…)" : ")";
46836
46918
  const continuationIndent = " ".repeat(2 + toolUse.name.length + 1);
46837
46919
  return /* @__PURE__ */ import_react26.default.createElement(Box_default, {
46838
46920
  flexDirection: "column",
46839
- marginY: 1,
46921
+ marginTop: 1,
46922
+ marginBottom: 0,
46840
46923
  paddingX: 1
46841
46924
  }, lines.map((line, i) => {
46842
46925
  const isLast = i === lines.length - 1;
@@ -46848,13 +46931,13 @@ function ToolUseRow({ toolUse }) {
46848
46931
  bold: true
46849
46932
  }, "●"), /* @__PURE__ */ import_react26.default.createElement(Text, {
46850
46933
  bold: true
46851
- }, " ", toolUse.name, "(", line, isLast ? ")" : ""));
46934
+ }, " ", toolUse.name, "(", line, isLast ? closer : ""));
46852
46935
  }
46853
46936
  return /* @__PURE__ */ import_react26.default.createElement(Box_default, {
46854
46937
  key: i
46855
46938
  }, /* @__PURE__ */ import_react26.default.createElement(Text, null, continuationIndent), /* @__PURE__ */ import_react26.default.createElement(Text, {
46856
46939
  bold: true
46857
- }, line, isLast ? ")" : ""));
46940
+ }, line, isLast ? closer : ""));
46858
46941
  }));
46859
46942
  }
46860
46943
  function ToolResultRow({
@@ -47101,6 +47184,16 @@ function shortId2(id) {
47101
47184
  return id;
47102
47185
  return id.slice(0, 8) + "..." + id.slice(-4);
47103
47186
  }
47187
+ function shortPath(p) {
47188
+ if (!p)
47189
+ return "(unknown — old session)";
47190
+ if (p.length <= 60)
47191
+ return p;
47192
+ const parts = p.split("/").filter(Boolean);
47193
+ if (parts.length <= 2)
47194
+ return p;
47195
+ return ".../" + parts.slice(-2).join("/");
47196
+ }
47104
47197
  function SessionPicker({ sessions, onPick, onCancel }) {
47105
47198
  const [cursor, setCursor] = import_react28.useState(0);
47106
47199
  const [search, setSearch] = import_react28.useState("");
@@ -47109,6 +47202,7 @@ function SessionPicker({ sessions, onPick, onCancel }) {
47109
47202
  const haystack = [
47110
47203
  s.id,
47111
47204
  s.first_message ?? "",
47205
+ s.cwd ?? "",
47112
47206
  s.started_at ?? "",
47113
47207
  s.last_activity_at ?? ""
47114
47208
  ].join(" ").toLowerCase();
@@ -47162,13 +47256,14 @@ function SessionPicker({ sessions, onPick, onCancel }) {
47162
47256
  padding: 1
47163
47257
  }, /* @__PURE__ */ import_react28.default.createElement(Text, {
47164
47258
  color: "yellow"
47165
- }, "No Claude Code sessions found in this project."), /* @__PURE__ */ import_react28.default.createElement(Text, {
47259
+ }, "No Claude Code sessions found anywhere on this machine."), /* @__PURE__ */ import_react28.default.createElement(Text, {
47166
47260
  dimColor: true
47167
- }, "Start `claude` in this project first, then run `cc-zh-watcher` again."), /* @__PURE__ */ import_react28.default.createElement(Text, {
47261
+ }, "Run `claude` in any project first, then re-launch `cc-zh-watcher`."), /* @__PURE__ */ import_react28.default.createElement(Text, {
47168
47262
  dimColor: true
47169
47263
  }, "Press Esc to exit."));
47170
47264
  }
47171
47265
  const visible = filtered.slice(0, 8);
47266
+ const projectCount = new Set(sessions.map((s) => s.cwd ?? "(unknown)")).size;
47172
47267
  return /* @__PURE__ */ import_react28.default.createElement(Box_default, {
47173
47268
  flexDirection: "column"
47174
47269
  }, /* @__PURE__ */ import_react28.default.createElement(Box_default, {
@@ -47181,7 +47276,7 @@ function SessionPicker({ sessions, onPick, onCancel }) {
47181
47276
  color: "cyan"
47182
47277
  }, "Select a Claude Code session to watch"), /* @__PURE__ */ import_react28.default.createElement(Text, {
47183
47278
  dimColor: true
47184
- }, "project: ", process.cwd(), " · ", sessions.length, " session", sessions.length === 1 ? "" : "s"), /* @__PURE__ */ import_react28.default.createElement(Box_default, {
47279
+ }, sessions.length, " session", sessions.length === 1 ? "" : "s", " across", " ", projectCount, " project", projectCount === 1 ? "" : "s", " · most recent first"), /* @__PURE__ */ import_react28.default.createElement(Box_default, {
47185
47280
  marginTop: 1,
47186
47281
  flexDirection: "column"
47187
47282
  }, visible.map((s, i) => {
@@ -47195,6 +47290,8 @@ function SessionPicker({ sessions, onPick, onCancel }) {
47195
47290
  bold: selected
47196
47291
  }, selected ? "⮕ " : " ", i + 1, ". ", shortId2(s.id), " [active", " ", relativeTime(s.last_activity_at), " · ", s.turn_count, " turn", s.turn_count === 1 ? "" : "s", "]"), /* @__PURE__ */ import_react28.default.createElement(Text, {
47197
47292
  dimColor: true
47293
+ }, " project: ", shortPath(s.cwd)), /* @__PURE__ */ import_react28.default.createElement(Text, {
47294
+ dimColor: true
47198
47295
  }, " started: ", formatLocalTime(s.started_at)), s.first_message ? /* @__PURE__ */ import_react28.default.createElement(Text, {
47199
47296
  dimColor: true
47200
47297
  }, " first msg: ", JSON.stringify(s.first_message)) : null);
@@ -47636,6 +47733,7 @@ function App2({
47636
47733
  projectDir
47637
47734
  }) {
47638
47735
  const { exit } = use_app_default();
47736
+ const isDesktopAppSession = projectDir.includes("/.claude/worktrees/");
47639
47737
  const [session, setSession] = import_react30.useState(() => initialSession);
47640
47738
  const [config, setConfig] = import_react30.useState(() => initialConfig);
47641
47739
  const [showSettings, setShowSettings] = import_react30.useState(false);
@@ -47676,19 +47774,16 @@ function App2({
47676
47774
  import_react30.useEffect(() => {
47677
47775
  showToolCallsRef.current = config.show_tool_calls;
47678
47776
  }, [config.show_tool_calls]);
47679
- const bellRef = import_react30.useRef(null);
47680
- if (bellRef.current === null) {
47681
- bellRef.current = new DebouncedBell(2000, () => {
47682
- if (notifyEnabledRef.current)
47683
- ringBell();
47684
- });
47777
+ const wantBellRef = import_react30.useRef(false);
47778
+ function maybeRingBell() {
47779
+ if (!wantBellRef.current)
47780
+ return;
47781
+ if ((enToZhQueueRef.current?.pending ?? 0) > 0)
47782
+ return;
47783
+ wantBellRef.current = false;
47784
+ if (notifyEnabledRef.current)
47785
+ ringBell();
47685
47786
  }
47686
- import_react30.useEffect(() => {
47687
- const bell = bellRef.current;
47688
- return () => {
47689
- bell?.cancel();
47690
- };
47691
- }, []);
47692
47787
  const [lastAssistantText, setLastAssistantText] = import_react30.useState("");
47693
47788
  const [lastRequest, setLastRequest] = import_react30.useState(null);
47694
47789
  const [sessionMetrics, setSessionMetrics] = import_react30.useState({
@@ -47699,16 +47794,28 @@ function App2({
47699
47794
  total_tokens: 0
47700
47795
  });
47701
47796
  import_react30.useEffect(() => {
47797
+ const enqueueAndCheckBell = (task) => {
47798
+ enToZhQueueRef.current.enqueue(task).finally(() => maybeRingBell());
47799
+ };
47702
47800
  const tail2 = new TranscriptTail(session.path, {
47703
47801
  onContent: (ev) => {
47704
47802
  if (seenIdsRef.current.has(ev.id))
47705
47803
  return;
47706
47804
  seenIdsRef.current.add(ev.id);
47707
- bellRef.current?.schedule();
47805
+ if (ev.kind === "text" || ev.kind === "thinking") {
47806
+ if (ev.stopReason === "end_turn") {
47807
+ wantBellRef.current = true;
47808
+ } else if (ev.stopReason !== undefined) {
47809
+ wantBellRef.current = false;
47810
+ }
47811
+ } else {
47812
+ wantBellRef.current = false;
47813
+ }
47708
47814
  if (ev.kind === "text") {
47709
47815
  setLastAssistantText(ev.text);
47710
47816
  }
47711
47817
  if (ev.kind === "thinking" && !translateThinkingRef.current) {
47818
+ maybeRingBell();
47712
47819
  return;
47713
47820
  }
47714
47821
  if (ev.kind === "question") {
@@ -47723,7 +47830,7 @@ function App2({
47723
47830
  chineseQuestion: seed
47724
47831
  }
47725
47832
  ]);
47726
- enToZhQueueRef.current.enqueue(() => translateQuestionAndAppend(ev, seed));
47833
+ enqueueAndCheckBell(() => translateQuestionAndAppend(ev, seed));
47727
47834
  return;
47728
47835
  }
47729
47836
  if (ev.kind === "todo") {
@@ -47740,7 +47847,7 @@ function App2({
47740
47847
  chineseTodo: seed
47741
47848
  }
47742
47849
  ]);
47743
- enToZhQueueRef.current.enqueue(() => translateTodoAndAppend(ev, seed));
47850
+ enqueueAndCheckBell(() => translateTodoAndAppend(ev, seed));
47744
47851
  return;
47745
47852
  }
47746
47853
  if (ev.kind === "agent") {
@@ -47757,13 +47864,13 @@ function App2({
47757
47864
  chineseAgent: seed
47758
47865
  }
47759
47866
  ]);
47760
- enToZhQueueRef.current.enqueue(() => translateAgentAndAppend(ev, seed));
47867
+ enqueueAndCheckBell(() => translateAgentAndAppend(ev, seed));
47761
47868
  return;
47762
47869
  }
47763
47870
  if (ev.kind === "tool_use" || ev.kind === "tool_result") {
47764
47871
  if (!showToolCallsRef.current)
47765
47872
  return;
47766
- enToZhQueueRef.current.enqueue(async () => {
47873
+ enqueueAndCheckBell(async () => {
47767
47874
  appendRawToolEntry(ev);
47768
47875
  });
47769
47876
  return;
@@ -47778,7 +47885,7 @@ function App2({
47778
47885
  chineseSoFar: ""
47779
47886
  }
47780
47887
  ]);
47781
- enToZhQueueRef.current.enqueue(() => translateAndAppend(ev));
47888
+ enqueueAndCheckBell(() => translateAndAppend(ev));
47782
47889
  },
47783
47890
  onError: (err) => {
47784
47891
  setTailError(err.message);
@@ -48107,7 +48214,7 @@ function App2({
48107
48214
  }
48108
48215
  seenIdsRef.current.clear();
48109
48216
  setLastAssistantText("");
48110
- bellRef.current?.cancel();
48217
+ wantBellRef.current = false;
48111
48218
  const shortPrev = session.id.slice(0, 8);
48112
48219
  const shortNext = next.id.slice(0, 8);
48113
48220
  setOutputEntries((entries) => [
@@ -48215,6 +48322,19 @@ function App2({
48215
48322
  setShowSettings(true);
48216
48323
  return;
48217
48324
  }
48325
+ if (key.ctrl && input === "y") {
48326
+ if (lastEnglish) {
48327
+ const cmd = isDesktopAppSession ? "@.claude/cache/user-input.md" : "/i";
48328
+ copyToClipboard(cmd).then(() => setStatusLine(`✓ 已复制 "${cmd}" 到剪贴板`)).catch((err) => setStatusLine(`✗ 复制失败: ${err.message}`));
48329
+ }
48330
+ return;
48331
+ }
48332
+ if (key.ctrl && input === "b") {
48333
+ if (lastEnglish) {
48334
+ copyToClipboard(lastEnglish).then(() => setStatusLine(`✓ 已复制英文翻译到剪贴板 (${lastEnglish.length} chars)`)).catch((err) => setStatusLine(`✗ 复制失败: ${err.message}`));
48335
+ }
48336
+ return;
48337
+ }
48218
48338
  if (key.escape) {
48219
48339
  setChineseInput("");
48220
48340
  setLastEnglish("");
@@ -48367,7 +48487,8 @@ function App2({
48367
48487
  translating: appState === "translating",
48368
48488
  streamingText: streamingEnglish,
48369
48489
  error: appState === "error" ? error : null,
48370
- concern: pendingConcern
48490
+ concern: pendingConcern,
48491
+ isDesktopAppSession
48371
48492
  })));
48372
48493
  }
48373
48494
  function stripEmpty(map2) {
@@ -48448,7 +48569,7 @@ function patchTodoField(payload, i, which, zh) {
48448
48569
  // package.json
48449
48570
  var package_default = {
48450
48571
  name: "cc-zh-watcher",
48451
- version: "0.2.0",
48572
+ version: "0.3.0",
48452
48573
  description: "Side-channel Chinese ↔ English bridge for Claude Code (single-watcher TUI). Type Chinese, Claude sees English; Claude replies in English, you see Chinese.",
48453
48574
  type: "module",
48454
48575
  bin: {
@@ -48527,61 +48648,36 @@ function ok(msg) {
48527
48648
  }
48528
48649
  async function pickSessionInteractive(sessions) {
48529
48650
  return new Promise((resolve) => {
48651
+ let result2 = null;
48530
48652
  const { unmount, waitUntilExit } = render_default(import_react31.default.createElement(SessionPicker, {
48531
48653
  sessions,
48532
48654
  onPick: (s) => {
48655
+ result2 = s;
48533
48656
  unmount();
48534
- resolve(s);
48535
48657
  },
48536
48658
  onCancel: () => {
48659
+ result2 = null;
48537
48660
  unmount();
48538
- resolve(null);
48539
48661
  }
48540
48662
  }));
48541
- waitUntilExit();
48663
+ waitUntilExit().then(() => resolve(result2));
48542
48664
  });
48543
48665
  }
48544
48666
  async function resolveSession(opts) {
48545
- const sessions = listSessions(opts.projectDir);
48546
48667
  if (opts.sessionPrefix) {
48547
- const found = resolveSessionByPrefix(sessions, opts.sessionPrefix);
48548
- writeState(opts.projectDir, {
48549
- selected_session_id: found.id,
48550
- selected_at: new Date().toISOString(),
48551
- transcript_path: found.path
48552
- });
48553
- return found;
48554
- }
48555
- if (opts.pick) {
48556
- const picked2 = await pickSessionInteractive(sessions);
48557
- if (picked2) {
48558
- writeState(opts.projectDir, {
48559
- selected_session_id: picked2.id,
48560
- selected_at: new Date().toISOString(),
48561
- transcript_path: picked2.path
48562
- });
48563
- }
48564
- return picked2;
48565
- }
48566
- const state = readState(opts.projectDir);
48567
- if (state && existsSync8(state.transcript_path)) {
48568
- const match = sessions.find((s) => s.id === state.selected_session_id);
48569
- if (match)
48570
- return match;
48571
- }
48572
- if (state) {
48573
- process.stderr.write(`note: saved session ${state.selected_session_id.slice(0, 8)}... not found, ` + `falling back to picker
48668
+ return resolveSessionByPrefix(listAllSessions(), opts.sessionPrefix);
48669
+ }
48670
+ if (!opts.pick) {
48671
+ const state = readState(opts.cwd);
48672
+ if (state) {
48673
+ const session = loadSession(state.transcript_path);
48674
+ if (session)
48675
+ return session;
48676
+ process.stderr.write(`note: saved session ${state.selected_session_id.slice(0, 8)}... ` + `no longer on disk, opening picker
48574
48677
  `);
48678
+ }
48575
48679
  }
48576
- const picked = await pickSessionInteractive(sessions);
48577
- if (picked) {
48578
- writeState(opts.projectDir, {
48579
- selected_session_id: picked.id,
48580
- selected_at: new Date().toISOString(),
48581
- transcript_path: picked.path
48582
- });
48583
- }
48584
- return picked;
48680
+ return await pickSessionInteractive(listAllSessions());
48585
48681
  }
48586
48682
  async function runWatch(opts) {
48587
48683
  const cwd2 = process.cwd();
@@ -48604,17 +48700,30 @@ async function runWatch(opts) {
48604
48700
  const session = await resolveSession({
48605
48701
  pick: opts.pick,
48606
48702
  sessionPrefix: opts.session,
48607
- projectDir: cwd2
48703
+ cwd: cwd2
48608
48704
  });
48609
48705
  if (!session) {
48610
48706
  fail("no session selected", 0);
48611
48707
  }
48612
48708
  const projectDir = session.cwd ?? cwd2;
48709
+ try {
48710
+ writeState(projectDir, {
48711
+ selected_session_id: session.id,
48712
+ selected_at: new Date().toISOString(),
48713
+ transcript_path: session.path
48714
+ });
48715
+ } catch (err) {
48716
+ process.stderr.write(`note: couldn't persist session pick: ${err.message}
48717
+ `);
48718
+ }
48613
48719
  if (!existsSync8(slashCommandPath(projectDir))) {
48614
- const accepted = await promptInstallSlashCommand(projectDir);
48615
- if (!accepted) {
48616
- process.stderr.write(`note: /i not installed you'll need to manually paste the
48617
- ` + ` translated English into Claude Code each turn.
48720
+ try {
48721
+ const { installedPath } = installSlashCommand(projectDir);
48722
+ process.stderr.write(`✓ installed /i slash command at ${installedPath}
48723
+ `);
48724
+ } catch (err) {
48725
+ process.stderr.write(`note: couldn't install /i at ${slashCommandPath(projectDir)}: ` + `${err.message}
48726
+ ` + ` You can copy assets/i.md into the project's .claude/commands/ manually.
48618
48727
  `);
48619
48728
  }
48620
48729
  }
@@ -48671,27 +48780,6 @@ async function runInlineConfigure() {
48671
48780
  ok(`✓ wrote ${path}`);
48672
48781
  ok("");
48673
48782
  }
48674
- async function promptInstallSlashCommand(projectDir) {
48675
- const target = slashCommandPath(projectDir);
48676
- const rl = createInterface({ input, output });
48677
- const ans = (await rl.question(`
48678
- /i slash command not yet installed in this project.
48679
- ` + ` project: ${projectDir}
48680
- ` + ` will write: ${target}
48681
- ` + `Install now? [Y/n] `)).trim().toLowerCase();
48682
- rl.close();
48683
- if (ans === "n" || ans === "no")
48684
- return false;
48685
- try {
48686
- installSlashCommand(projectDir);
48687
- ok(`✓ installed ${target}`);
48688
- return true;
48689
- } catch (err) {
48690
- process.stderr.write(`✗ install failed: ${err.message}
48691
- `);
48692
- return false;
48693
- }
48694
- }
48695
48783
  function runPromptsShow(opts) {
48696
48784
  let config = null;
48697
48785
  try {