chatroom-cli 1.95.0 → 1.96.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -32087,10 +32087,10 @@ var init_cursor_sdk = __esm(() => {
32087
32087
  init_cursor_sdk_stream_adapter();
32088
32088
  });
32089
32089
 
32090
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/types.gen.js
32090
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/types.gen.js
32091
32091
  var init_types_gen = () => {};
32092
32092
 
32093
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/serverSentEvents.gen.js
32093
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/serverSentEvents.gen.js
32094
32094
  var createSseClient = ({ onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {
32095
32095
  let lastEventId;
32096
32096
  const sleep5 = sseSleepFn ?? ((ms) => new Promise((resolve2) => setTimeout(resolve2, ms)));
@@ -32199,7 +32199,7 @@ var createSseClient = ({ onSseError, onSseEvent, responseTransformer, responseVa
32199
32199
  return { stream };
32200
32200
  };
32201
32201
 
32202
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/auth.gen.js
32202
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/auth.gen.js
32203
32203
  var getAuthToken = async (auth, callback) => {
32204
32204
  const token = typeof callback === "function" ? await callback(auth) : callback;
32205
32205
  if (!token) {
@@ -32214,7 +32214,7 @@ var getAuthToken = async (auth, callback) => {
32214
32214
  return token;
32215
32215
  };
32216
32216
 
32217
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/bodySerializer.gen.js
32217
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/bodySerializer.gen.js
32218
32218
  var jsonBodySerializer;
32219
32219
  var init_bodySerializer_gen = __esm(() => {
32220
32220
  jsonBodySerializer = {
@@ -32222,7 +32222,7 @@ var init_bodySerializer_gen = __esm(() => {
32222
32222
  };
32223
32223
  });
32224
32224
 
32225
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/pathSerializer.gen.js
32225
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/pathSerializer.gen.js
32226
32226
  var separatorArrayExplode = (style) => {
32227
32227
  switch (style) {
32228
32228
  case "label":
@@ -32320,7 +32320,7 @@ var separatorArrayExplode = (style) => {
32320
32320
  return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
32321
32321
  };
32322
32322
 
32323
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/utils.gen.js
32323
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/utils.gen.js
32324
32324
  var PATH_PARAM_RE, defaultPathSerializer = ({ path, url: _url }) => {
32325
32325
  let url = _url;
32326
32326
  const matches = _url.match(PATH_PARAM_RE);
@@ -32389,7 +32389,7 @@ var init_utils_gen = __esm(() => {
32389
32389
  PATH_PARAM_RE = /\{[^{}]+\}/g;
32390
32390
  });
32391
32391
 
32392
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/client/utils.gen.js
32392
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/client/utils.gen.js
32393
32393
  class Interceptors {
32394
32394
  _fns;
32395
32395
  constructor() {
@@ -32592,7 +32592,7 @@ var init_utils_gen2 = __esm(() => {
32592
32592
  };
32593
32593
  });
32594
32594
 
32595
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/client/client.gen.js
32595
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/client/client.gen.js
32596
32596
  var createClient = (config2 = {}) => {
32597
32597
  let _config = mergeConfigs(createConfig(), config2);
32598
32598
  const getConfig2 = () => ({ ..._config });
@@ -32743,7 +32743,7 @@ var init_client_gen = __esm(() => {
32743
32743
  init_utils_gen2();
32744
32744
  });
32745
32745
 
32746
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/core/params.gen.js
32746
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/core/params.gen.js
32747
32747
  var extraPrefixesMap, extraPrefixes;
32748
32748
  var init_params_gen = __esm(() => {
32749
32749
  extraPrefixesMap = {
@@ -32755,7 +32755,7 @@ var init_params_gen = __esm(() => {
32755
32755
  extraPrefixes = Object.entries(extraPrefixesMap);
32756
32756
  });
32757
32757
 
32758
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/client/index.js
32758
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/client/index.js
32759
32759
  var init_client3 = __esm(() => {
32760
32760
  init_bodySerializer_gen();
32761
32761
  init_params_gen();
@@ -32763,7 +32763,7 @@ var init_client3 = __esm(() => {
32763
32763
  init_utils_gen2();
32764
32764
  });
32765
32765
 
32766
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/client.gen.js
32766
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/client.gen.js
32767
32767
  var client2;
32768
32768
  var init_client_gen2 = __esm(() => {
32769
32769
  init_client3();
@@ -32772,7 +32772,7 @@ var init_client_gen2 = __esm(() => {
32772
32772
  }));
32773
32773
  });
32774
32774
 
32775
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/gen/sdk.gen.js
32775
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/gen/sdk.gen.js
32776
32776
  class _HeyApiClient {
32777
32777
  _client = client2;
32778
32778
  constructor(args2) {
@@ -33423,7 +33423,7 @@ var init_sdk_gen = __esm(() => {
33423
33423
  };
33424
33424
  });
33425
33425
 
33426
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
33426
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/error-interceptor.js
33427
33427
  function wrapClientError(error, response, request2, opts) {
33428
33428
  if (!opts?.throwOnError)
33429
33429
  return error;
@@ -33450,7 +33450,7 @@ function describe(request2, response) {
33450
33450
  return `${method} ${url}${status3 ? " → " + status3 : ""}${statusText ? " " + statusText : ""}`;
33451
33451
  }
33452
33452
 
33453
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/client.js
33453
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/client.js
33454
33454
  function pick3(value, fallback) {
33455
33455
  if (!value)
33456
33456
  return;
@@ -33960,17 +33960,17 @@ var require_cross_spawn = __commonJS((exports, module) => {
33960
33960
  module.exports._enoent = enoent;
33961
33961
  });
33962
33962
 
33963
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/process.js
33963
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/process.js
33964
33964
  var init_process2 = () => {};
33965
33965
 
33966
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/server.js
33966
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/server.js
33967
33967
  var import_cross_spawn;
33968
33968
  var init_server2 = __esm(() => {
33969
33969
  init_process2();
33970
33970
  import_cross_spawn = __toESM(require_cross_spawn(), 1);
33971
33971
  });
33972
33972
 
33973
- // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.10/node_modules/@opencode-ai/sdk/dist/index.js
33973
+ // ../../node_modules/.pnpm/@opencode-ai+sdk@1.18.18/node_modules/@opencode-ai/sdk/dist/index.js
33974
33974
  var init_dist = __esm(() => {
33975
33975
  init_client4();
33976
33976
  init_server2();
@@ -42724,13 +42724,13 @@ var require_detect_libc = __commonJS((exports, module) => {
42724
42724
  };
42725
42725
  });
42726
42726
 
42727
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/debug.js
42727
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js
42728
42728
  var require_debug = __commonJS((exports, module) => {
42729
42729
  var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args2) => console.error("SEMVER", ...args2) : () => {};
42730
42730
  module.exports = debug;
42731
42731
  });
42732
42732
 
42733
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js
42733
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js
42734
42734
  var require_constants2 = __commonJS((exports, module) => {
42735
42735
  var SEMVER_SPEC_VERSION = "2.0.0";
42736
42736
  var MAX_LENGTH = 256;
@@ -42758,7 +42758,7 @@ var require_constants2 = __commonJS((exports, module) => {
42758
42758
  };
42759
42759
  });
42760
42760
 
42761
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/re.js
42761
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js
42762
42762
  var require_re = __commonJS((exports, module) => {
42763
42763
  var {
42764
42764
  MAX_SAFE_COMPONENT_LENGTH,
@@ -42843,7 +42843,7 @@ var require_re = __commonJS((exports, module) => {
42843
42843
  createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
42844
42844
  });
42845
42845
 
42846
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/parse-options.js
42846
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js
42847
42847
  var require_parse_options = __commonJS((exports, module) => {
42848
42848
  var looseOption = Object.freeze({ loose: true });
42849
42849
  var emptyOpts = Object.freeze({});
@@ -42859,7 +42859,7 @@ var require_parse_options = __commonJS((exports, module) => {
42859
42859
  module.exports = parseOptions;
42860
42860
  });
42861
42861
 
42862
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/identifiers.js
42862
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js
42863
42863
  var require_identifiers = __commonJS((exports, module) => {
42864
42864
  var numeric = /^[0-9]+$/;
42865
42865
  var compareIdentifiers = (a, b) => {
@@ -42881,13 +42881,25 @@ var require_identifiers = __commonJS((exports, module) => {
42881
42881
  };
42882
42882
  });
42883
42883
 
42884
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/semver.js
42884
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js
42885
42885
  var require_semver = __commonJS((exports, module) => {
42886
42886
  var debug = require_debug();
42887
42887
  var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants2();
42888
42888
  var { safeRe: re, t } = require_re();
42889
42889
  var parseOptions = require_parse_options();
42890
42890
  var { compareIdentifiers } = require_identifiers();
42891
+ var isPrereleaseIdentifier = (prerelease, identifier2) => {
42892
+ const identifiers = identifier2.split(".");
42893
+ if (identifiers.length > prerelease.length) {
42894
+ return false;
42895
+ }
42896
+ for (let i2 = 0;i2 < identifiers.length; i2++) {
42897
+ if (compareIdentifiers(prerelease[i2], identifiers[i2]) !== 0) {
42898
+ return false;
42899
+ }
42900
+ }
42901
+ return true;
42902
+ };
42891
42903
 
42892
42904
  class SemVer {
42893
42905
  constructor(version2, options) {
@@ -43127,8 +43139,9 @@ var require_semver = __commonJS((exports, module) => {
43127
43139
  if (identifierBase === false) {
43128
43140
  prerelease = [identifier2];
43129
43141
  }
43130
- if (compareIdentifiers(this.prerelease[0], identifier2) === 0) {
43131
- if (isNaN(this.prerelease[1])) {
43142
+ if (isPrereleaseIdentifier(this.prerelease, identifier2)) {
43143
+ const prereleaseBase = this.prerelease[identifier2.split(".").length];
43144
+ if (isNaN(prereleaseBase)) {
43132
43145
  this.prerelease = prerelease;
43133
43146
  }
43134
43147
  } else {
@@ -43150,7 +43163,7 @@ var require_semver = __commonJS((exports, module) => {
43150
43163
  module.exports = SemVer;
43151
43164
  });
43152
43165
 
43153
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/parse.js
43166
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js
43154
43167
  var require_parse2 = __commonJS((exports, module) => {
43155
43168
  var SemVer = require_semver();
43156
43169
  var parse2 = (version2, options, throwErrors = false) => {
@@ -43169,7 +43182,7 @@ var require_parse2 = __commonJS((exports, module) => {
43169
43182
  module.exports = parse2;
43170
43183
  });
43171
43184
 
43172
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/coerce.js
43185
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js
43173
43186
  var require_coerce = __commonJS((exports, module) => {
43174
43187
  var SemVer = require_semver();
43175
43188
  var parse2 = require_parse2();
@@ -43212,21 +43225,21 @@ var require_coerce = __commonJS((exports, module) => {
43212
43225
  module.exports = coerce;
43213
43226
  });
43214
43227
 
43215
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/compare.js
43228
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js
43216
43229
  var require_compare = __commonJS((exports, module) => {
43217
43230
  var SemVer = require_semver();
43218
43231
  var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
43219
43232
  module.exports = compare;
43220
43233
  });
43221
43234
 
43222
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gte.js
43235
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js
43223
43236
  var require_gte = __commonJS((exports, module) => {
43224
43237
  var compare = require_compare();
43225
43238
  var gte = (a, b, loose) => compare(a, b, loose) >= 0;
43226
43239
  module.exports = gte;
43227
43240
  });
43228
43241
 
43229
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/lrucache.js
43242
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js
43230
43243
  var require_lrucache = __commonJS((exports, module) => {
43231
43244
  class LRUCache {
43232
43245
  constructor() {
@@ -43261,42 +43274,42 @@ var require_lrucache = __commonJS((exports, module) => {
43261
43274
  module.exports = LRUCache;
43262
43275
  });
43263
43276
 
43264
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/eq.js
43277
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js
43265
43278
  var require_eq = __commonJS((exports, module) => {
43266
43279
  var compare = require_compare();
43267
43280
  var eq = (a, b, loose) => compare(a, b, loose) === 0;
43268
43281
  module.exports = eq;
43269
43282
  });
43270
43283
 
43271
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/neq.js
43284
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js
43272
43285
  var require_neq = __commonJS((exports, module) => {
43273
43286
  var compare = require_compare();
43274
43287
  var neq = (a, b, loose) => compare(a, b, loose) !== 0;
43275
43288
  module.exports = neq;
43276
43289
  });
43277
43290
 
43278
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/gt.js
43291
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js
43279
43292
  var require_gt = __commonJS((exports, module) => {
43280
43293
  var compare = require_compare();
43281
43294
  var gt = (a, b, loose) => compare(a, b, loose) > 0;
43282
43295
  module.exports = gt;
43283
43296
  });
43284
43297
 
43285
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lt.js
43298
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js
43286
43299
  var require_lt = __commonJS((exports, module) => {
43287
43300
  var compare = require_compare();
43288
43301
  var lt = (a, b, loose) => compare(a, b, loose) < 0;
43289
43302
  module.exports = lt;
43290
43303
  });
43291
43304
 
43292
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/lte.js
43305
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js
43293
43306
  var require_lte = __commonJS((exports, module) => {
43294
43307
  var compare = require_compare();
43295
43308
  var lte = (a, b, loose) => compare(a, b, loose) <= 0;
43296
43309
  module.exports = lte;
43297
43310
  });
43298
43311
 
43299
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/cmp.js
43312
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js
43300
43313
  var require_cmp = __commonJS((exports, module) => {
43301
43314
  var eq = require_eq();
43302
43315
  var neq = require_neq();
@@ -43343,7 +43356,7 @@ var require_cmp = __commonJS((exports, module) => {
43343
43356
  module.exports = cmp;
43344
43357
  });
43345
43358
 
43346
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/comparator.js
43359
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js
43347
43360
  var require_comparator = __commonJS((exports, module) => {
43348
43361
  var ANY = Symbol("SemVer ANY");
43349
43362
 
@@ -43454,7 +43467,7 @@ var require_comparator = __commonJS((exports, module) => {
43454
43467
  var Range = require_range();
43455
43468
  });
43456
43469
 
43457
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/classes/range.js
43470
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js
43458
43471
  var require_range = __commonJS((exports, module) => {
43459
43472
  var SPACE_CHARACTERS = /\s+/g;
43460
43473
 
@@ -43523,6 +43536,7 @@ var require_range = __commonJS((exports, module) => {
43523
43536
  return this.range;
43524
43537
  }
43525
43538
  parseRange(range) {
43539
+ range = range.replace(BUILDSTRIPRE, "");
43526
43540
  const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
43527
43541
  const memoKey = memoOpts + ":" + range;
43528
43542
  const cached4 = cache.get(memoKey);
@@ -43604,12 +43618,14 @@ var require_range = __commonJS((exports, module) => {
43604
43618
  var SemVer = require_semver();
43605
43619
  var {
43606
43620
  safeRe: re,
43621
+ src,
43607
43622
  t,
43608
43623
  comparatorTrimReplace,
43609
43624
  tildeTrimReplace,
43610
43625
  caretTrimReplace
43611
43626
  } = require_re();
43612
43627
  var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants2();
43628
+ var BUILDSTRIPRE = new RegExp(src[t.BUILD], "g");
43613
43629
  var isNullSet = (c) => c.value === "<0.0.0-0";
43614
43630
  var isAny = (c) => c.value === "";
43615
43631
  var isSatisfiable = (comparators, options) => {
@@ -43638,20 +43654,22 @@ var require_range = __commonJS((exports, module) => {
43638
43654
  return comp;
43639
43655
  };
43640
43656
  var isX = (id3) => !id3 || id3.toLowerCase() === "x" || id3 === "*";
43657
+ var invalidXRangeOrder = (M, m, p) => isX(M) && !isX(m) || isX(m) && p && !isX(p);
43641
43658
  var replaceTildes = (comp, options) => {
43642
43659
  return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
43643
43660
  };
43644
43661
  var replaceTilde = (comp, options) => {
43645
43662
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
43663
+ const z = options.includePrerelease ? "-0" : "";
43646
43664
  return comp.replace(r, (_, M, m, p, pr) => {
43647
43665
  debug("tilde", comp, _, M, m, p, pr);
43648
43666
  let ret;
43649
43667
  if (isX(M)) {
43650
43668
  ret = "";
43651
43669
  } else if (isX(m)) {
43652
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
43670
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
43653
43671
  } else if (isX(p)) {
43654
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
43672
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
43655
43673
  } else if (pr) {
43656
43674
  debug("replaceTilde pr", pr);
43657
43675
  ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
@@ -43697,9 +43715,9 @@ var require_range = __commonJS((exports, module) => {
43697
43715
  debug("no pr");
43698
43716
  if (M === "0") {
43699
43717
  if (m === "0") {
43700
- ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
43718
+ ret = `>=${M}.${m}.${p} <${M}.${m}.${+p + 1}-0`;
43701
43719
  } else {
43702
- ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
43720
+ ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
43703
43721
  }
43704
43722
  } else {
43705
43723
  ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
@@ -43718,6 +43736,9 @@ var require_range = __commonJS((exports, module) => {
43718
43736
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
43719
43737
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
43720
43738
  debug("xRange", comp, ret, gtlt, M, m, p, pr);
43739
+ if (invalidXRangeOrder(M, m, p)) {
43740
+ return comp;
43741
+ }
43721
43742
  const xM = isX(M);
43722
43743
  const xm = xM || isX(m);
43723
43744
  const xp = xm || isX(p);
@@ -43828,7 +43849,7 @@ var require_range = __commonJS((exports, module) => {
43828
43849
  };
43829
43850
  });
43830
43851
 
43831
- // ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/satisfies.js
43852
+ // ../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js
43832
43853
  var require_satisfies = __commonJS((exports, module) => {
43833
43854
  var Range = require_range();
43834
43855
  var satisfies = (version2, range, options) => {
@@ -79075,84 +79096,22 @@ function renderWebappUxHandoffReference() {
79075
79096
  "### UX review checklist",
79076
79097
  'Complete the optional **UX** section in your output when the planner proposes UI changes. Write exactly "Not Applicable." for non-UI tasks. Put code snippets in **Suggested edits** only.',
79077
79098
  "",
79078
- "1. **Flows** — primary action ≤3 clicks? simpler path exists?",
79079
- "2. **Patterns** — matches existing components? recommend one if multiple. mobile vs desktop (responsive variants vs separate mobile UI)?",
79080
- "3. **Layout** — compact title+menu row, description, trailing end-aligned CTA? unnecessary wrappers?",
79081
- "4. **Shortcuts** — consistent with project conventions? gaps or conflicts?",
79082
- "5. **States** — loading spinners/skeletons for async data? error messages on failure? empty states?",
79083
- "6. **Error boundaries** — risky subtrees wrapped so a throw does not crash the whole app? failure isolated from the shell?",
79084
- "7. **Alignment** — traced parent layout before leaf styles? position/height match siblings?",
79085
- '8. **Feedback** — immediate pending state on async actions (e.g. save button "Saving...")?',
79086
- "9. **Destructive actions** — confirmation dialog before delete/remove/archive/reset/clear or other irreversible/high-impact single actions?",
79087
- "10. **Bulk actions** — confirmation before batch/multi-item operations (with count or impact summary)?",
79088
- "",
79089
- "### Flow complexity",
79090
- "- Primary action ≤3 clicks from entry point",
79091
- "- Extend existing surfaces (palette, settings tab, row action) before new navigation",
79092
- "- Avoid nested modal chains and unjustified multi-step wizards",
79093
- "- Prefer inline actions over navigate-away-and-back",
79099
+ "1. **Flows** — is the primary path straightforward? simpler alternatives exist?",
79100
+ "2. **Patterns** — consistent with existing project components and conventions? recommend one when multiple exist.",
79101
+ "3. **Layout** — unnecessary complexity or wrappers? layout stable across loading/empty/error transitions (no layout shift when async content arrives or state changes)?",
79102
+ "4. **Shortcuts** — aligned with the project keyboard/shortcut conventions? gaps or conflicts?",
79103
+ "5. **States** — loading, error, and empty states explicitly handled for async surfaces (no blank panels, silent failures, or missing retry affordances)?",
79104
+ "6. **Error boundaries** — failures scoped so one subtree does not crash the whole app?",
79105
+ "7. **Feedback** — timely response for async user actions?",
79106
+ "8. **Interaction affordance** — clickable/interactive elements use pointer cursor (or the project's established equivalent) where applicable?",
79107
+ "9. **Destructive actions** — irreversible or high-impact single actions gated by confirmation?",
79108
+ "10. **Bulk actions** — batch/multi-item operations confirmed with scope or impact summary?",
79094
79109
  "",
79095
- "### Presentation & responsive patterns",
79096
- "- Reuse existing design-system components and established UI patterns before introducing new abstractions",
79097
- "- Match badge/button styling from similar surfaces in the app",
79098
- "- When multiple valid patterns exist, recommend one and explain tradeoff",
79099
- "- Use the project's standard breakpoint(s) for mobile vs desktop",
79100
- "- **Hide/show:** responsive utility classes or equivalent for alternate chrome per viewport",
79101
- "- **Mobile overlay:** full-screen or sheet overlay with backdrop when desktop uses persistent panels",
79102
- "- **Separate mobile UI:** dedicated mobile modal/picker when desktop uses side panel or split view",
79103
- "- **Shared responsive density:** same component with size/density variants per breakpoint",
79104
- "- **Command/search dialogs:** match existing modal/dialog styling; sensible max-width on small screens",
79105
- "",
79106
- "### Layout simplification",
79107
- "- Review card/section layouts for unnecessary rows, nested wrappers, or misaligned actions",
79108
- "- Prefer compact rows: title and overflow menu on one line via flex/grid",
79109
- "- Description on the next line; primary CTA on a trailing row aligned end",
79110
- "- Canonical simplified card pattern:",
79111
- " ```",
79112
- " <title> <overflow-menu>",
79113
- " <description>",
79114
- " <primary-cta aligned end>",
79115
- " ```",
79116
- "- Use header + action grid or equivalent flex `justify-between`",
79117
- "- Flag multi-row chrome that could collapse (menu on its own row, CTA misaligned vs similar cards)",
79118
- "",
79119
- "### Error & loading states",
79120
- "- Initial fetch: centered loader or skeleton for the content area",
79121
- "- Pagination/infinite scroll: inline loader at scroll edge",
79122
- "- Save/submit mutations: inline success/error feedback beside the trigger control",
79123
- "- Never leave blank panels on fetch failure — show error message or retry affordance",
79124
- "- Disable interactive controls while loading or pending",
79125
- "",
79126
- "### Error boundaries",
79127
- "- Wrap data-dependent or third-party subtrees with error boundaries so a single failure does not unmount the whole app",
79128
- "- Scope boundaries to the failing panel/section, not the entire shell",
79129
- "- Provide fallback UI with a recovery action (retry, reload, or navigate away)",
79130
- "",
79131
- "### Alignment & component hierarchy",
79132
- "- Before styling a leaf component, trace parent flex/grid context",
79133
- "- Match sibling heights and vertical rhythm",
79134
- "- Flag absolute positioning or fixed heights that fight parent layout",
79135
- "- When hierarchy is unclear, inspect the rendered component tree (e.g. DOM inspector or component test snapshot) before deciding leaf styles",
79136
- "",
79137
- "### Fast user feedback",
79138
- "- Async actions triggered by keyboard shortcut or click must show **immediate** UI response",
79139
- '- Canonical pattern: pending local state → button label changes (e.g. "Saving..."), control disabled while in flight',
79140
- "- Show inline error on failure; brief success confirmation optional",
79141
- "- Pair shortcut hints with pending state only when the action shows pending feedback",
79142
- "",
79143
- "### Destructive & bulk action safeguards",
79144
- "- **Destructive actions** (delete, remove, archive, reset, clear, disable) require an explicit confirmation step — never fire immediately from a menu item or button without a dialog",
79145
- "- Use the project's standard confirmation dialog/modal pattern",
79146
- "- Confirmation includes clear title + description of what will happen; primary action styled as destructive when appropriate",
79147
- "- **Bulk actions** (multi-select delete, batch disable, clear-all) require confirmation before execution — show how many items are affected",
79148
- '- Bulk confirm should summarize scope (e.g. "Delete 12 items?") and list material impact when non-obvious',
79149
- "- Flag plans that wire bulk/destructive handlers directly to mutations/API calls without a confirm gate",
79150
- "",
79151
- "### Keyboard shortcuts",
79152
- "- Align proposed shortcuts with the project's existing shortcut catalog and platform conventions (⌘ on macOS, Ctrl on Windows/Linux)",
79153
- "- Avoid conflicting bindings; document new shortcuts when introducing them",
79154
- "- Common patterns: modifier+letter for global commands, Enter to confirm in dialogs, Escape to cancel/close, Shift+Enter for multiline input where applicable",
79155
- "- Flag plans that add shortcuts without checking for conflicts or omit keyboard access for primary actions"
79110
+ "### Review principles",
79111
+ "- Ground feedback in the planner check-in and the project codebase — cite existing patterns rather than inventing generic UI preferences.",
79112
+ "- Flag missing states, layout-shift risk, and missing interaction affordances when the plan omits them; recommend consistency with established project conventions.",
79113
+ "- Do **not** prescribe style choices the project has not adopted (e.g. specific flex layouts, canonical card chrome, responsive utility patterns, button label copy).",
79114
+ "- When multiple valid patterns exist in the codebase, recommend one and explain the tradeoff."
79156
79115
  ].join(`
79157
79116
  `);
79158
79117
  }
@@ -79182,16 +79141,16 @@ function getEnhancerFeedbackTemplateBody() {
79182
79141
  <handoff-ux>
79183
79142
  <!-- Optional — write exactly "Not Applicable." when no UI changes are proposed -->
79184
79143
  <!-- When UI is proposed: specific findings tied to the planner's proposal. No code blocks (use Suggested edits). -->
79185
- - **Flows:** <specific finding — click count, nested modals, simpler alternatives>
79186
- - **Patterns:** <which existing pattern fits; recommend one if multiple; mobile vs desktop>
79187
- - **Layout:** <compact rows, trailing CTAs, unnecessary wrappers>
79144
+ - **Flows:** <click count, nested modals, simpler alternatives>
79145
+ - **Patterns:** <consistency with existing project components; recommend one when multiple>
79146
+ - **Layout:** <complexity, wrappers, layout stable across state transitions — no layout shift>
79188
79147
  - **Shortcuts:** <alignment with catalog; gaps or conflicts>
79189
- - **States:** <loading/error/empty coverage for async surfaces>
79148
+ - **States:** <loading/error/empty explicitly handled; no blank panels or silent failures>
79190
79149
  - **Error boundaries:** <error boundary placement; failure isolated from the whole app>
79191
- - **Alignment:** <hierarchy traced; position/height issues; inline snapshot consideration>
79192
- - **Feedback:** <immediate pending state on async actions; ⌘Enter + button state>
79193
- - **Destructive safeguards:** <single-item irreversible/high-impact actions gated by confirm dialog; cite missing confirms>
79194
- - **Bulk safeguards:** <batch/multi-item operations gated by confirm with count/impact summary; cite missing confirms>
79150
+ - **Feedback:** <timely response for async actions>
79151
+ - **Interaction affordance:** <pointer cursor or project equivalent on clickable elements where applicable>
79152
+ - **Destructive safeguards:** <confirmation before irreversible/high-impact actions>
79153
+ - **Bulk safeguards:** <confirmation with scope summary for batch operations>
79195
79154
  </handoff-ux>
79196
79155
 
79197
79156
  <handoff-defragmentation>
@@ -110577,16 +110536,14 @@ var init_git_workspace_hierarchy = __esm(() => {
110577
110536
  init_run_command();
110578
110537
  });
110579
110538
 
110580
- // ../../node_modules/.pnpm/readdirp@5.0.0/node_modules/readdirp/index.js
110539
+ // ../../node_modules/.pnpm/readdirp@5.1.1/node_modules/readdirp/index.js
110581
110540
  import { lstat, readdir as readdir2, realpath as realpath2, stat as stat4 } from "node:fs/promises";
110582
- import { join as pjoin, relative as prelative, resolve as presolve, sep as psep } from "node:path";
110541
+ import { join as pjoin, resolve as presolve, sep as psep } from "node:path";
110583
110542
  import { Readable as Readable4 } from "node:stream";
110584
110543
  function readdirp(root, options = {}) {
110585
110544
  let type = options.entryType || options.type;
110586
110545
  if (type === "both")
110587
110546
  type = EntryTypes.FILE_DIR_TYPE;
110588
- if (type)
110589
- options.type = type;
110590
110547
  if (!root) {
110591
110548
  throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");
110592
110549
  } else if (typeof root !== "string") {
@@ -110594,8 +110551,10 @@ function readdirp(root, options = {}) {
110594
110551
  } else if (type && !ALL_TYPES.includes(type)) {
110595
110552
  throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(", ")}`);
110596
110553
  }
110597
- options.root = root;
110598
- return new ReaddirpStream(options);
110554
+ const opts = { ...options, root };
110555
+ if (type)
110556
+ opts.type = type;
110557
+ return new ReaddirpStream(opts);
110599
110558
  }
110600
110559
  var EntryTypes, defaultOptions, RECURSIVE_ERROR_CODE = "READDIRP_RECURSIVE_ERROR", NORMAL_FLOW_ERRORS, ALL_TYPES, DIR_TYPES, FILE_TYPES, isNormalFlowError = (error51) => NORMAL_FLOW_ERRORS.has(error51.code), wantBigintFsStats, emptyFn = (_entryInfo) => true, normalizeFilter = (filter9) => {
110601
110560
  if (filter9 === undefined)
@@ -110627,7 +110586,7 @@ var init_readdirp = __esm(() => {
110627
110586
  lstat: false,
110628
110587
  depth: 2147483648,
110629
110588
  alwaysStat: false,
110630
- highWaterMark: 4096
110589
+ highWaterMark: 256
110631
110590
  };
110632
110591
  Object.freeze(defaultOptions);
110633
110592
  NORMAL_FLOW_ERRORS = new Set(["ENOENT", "EPERM", "EACCES", "ELOOP", RECURSIVE_ERROR_CODE]);
@@ -110663,14 +110622,16 @@ var init_readdirp = __esm(() => {
110663
110622
  _rdOptions;
110664
110623
  _fileFilter;
110665
110624
  _directoryFilter;
110625
+ _relStart;
110666
110626
  constructor(options = {}) {
110667
110627
  super({
110668
110628
  objectMode: true,
110669
110629
  autoDestroy: true,
110670
- highWaterMark: options.highWaterMark
110630
+ highWaterMark: options.highWaterMark ?? defaultOptions.highWaterMark
110671
110631
  });
110672
110632
  const opts = { ...defaultOptions, ...options };
110673
- const { root, type } = opts;
110633
+ const root = opts.root ?? defaultOptions.root;
110634
+ const type = opts.type ?? defaultOptions.type;
110674
110635
  this._fileFilter = normalizeFilter(opts.fileFilter);
110675
110636
  this._directoryFilter = normalizeFilter(opts.directoryFilter);
110676
110637
  const statMethod = opts.lstat ? lstat : stat4;
@@ -110680,14 +110641,17 @@ var init_readdirp = __esm(() => {
110680
110641
  this._stat = statMethod;
110681
110642
  }
110682
110643
  this._maxDepth = opts.depth != null && Number.isSafeInteger(opts.depth) ? opts.depth : defaultOptions.depth;
110683
- this._wantsDir = type ? DIR_TYPES.has(type) : false;
110684
- this._wantsFile = type ? FILE_TYPES.has(type) : false;
110644
+ this._wantsDir = DIR_TYPES.has(type);
110645
+ this._wantsFile = FILE_TYPES.has(type);
110685
110646
  this._wantsEverything = type === EntryTypes.EVERYTHING_TYPE;
110686
110647
  this._root = presolve(root);
110648
+ this._relStart = this._root.endsWith(psep) ? this._root.length : this._root.length + 1;
110687
110649
  this._isDirent = !opts.alwaysStat;
110688
110650
  this._statsProp = this._isDirent ? "dirent" : "stats";
110689
110651
  this._rdOptions = { encoding: "utf8", withFileTypes: this._isDirent };
110690
- this.parents = [this._exploreDir(root, 1)];
110652
+ const rootDir = { path: this._root, depth: 1 };
110653
+ rootDir.pending = this._exploreDir(this._root, 1);
110654
+ this.parents = [rootDir];
110691
110655
  this.reading = false;
110692
110656
  this.parent = undefined;
110693
110657
  }
@@ -110702,16 +110666,18 @@ var init_readdirp = __esm(() => {
110702
110666
  if (fil && fil.length > 0) {
110703
110667
  const { path: path6, depth } = par2;
110704
110668
  const slice = fil.splice(0, batch).map((dirent) => this._formatEntry(dirent, path6));
110705
- const awaited = await Promise.all(slice);
110669
+ const awaited = this._isDirent ? slice : await Promise.all(slice);
110706
110670
  for (const entry of awaited) {
110707
110671
  if (!entry)
110708
110672
  continue;
110709
110673
  if (this.destroyed)
110710
110674
  return;
110711
- const entryType = await this._getEntryType(entry);
110675
+ let entryType = this._getEntryType(entry);
110676
+ if (typeof entryType !== "string")
110677
+ entryType = await entryType;
110712
110678
  if (entryType === "directory" && this._directoryFilter(entry)) {
110713
110679
  if (depth <= this._maxDepth) {
110714
- this.parents.push(this._exploreDir(entry.fullPath, depth + 1));
110680
+ this.parents.push({ path: entry.fullPath, depth: depth + 1 });
110715
110681
  }
110716
110682
  if (this._wantsDir) {
110717
110683
  this.push(entry);
@@ -110730,7 +110696,12 @@ var init_readdirp = __esm(() => {
110730
110696
  this.push(null);
110731
110697
  break;
110732
110698
  }
110733
- this.parent = await parent;
110699
+ const dir = parent.pending ?? this._exploreDir(parent.path, parent.depth);
110700
+ const next4 = this.parents[this.parents.length - 1];
110701
+ if (next4 && !next4.pending) {
110702
+ next4.pending = this._exploreDir(next4.path, next4.depth);
110703
+ }
110704
+ this.parent = await dir;
110734
110705
  if (this.destroyed)
110735
110706
  return;
110736
110707
  }
@@ -110750,18 +110721,21 @@ var init_readdirp = __esm(() => {
110750
110721
  }
110751
110722
  return { files, depth, path: path6 };
110752
110723
  }
110753
- async _formatEntry(dirent, path6) {
110754
- let entry;
110724
+ _formatEntry(dirent, path6) {
110755
110725
  const basename3 = this._isDirent ? dirent.name : dirent;
110756
- try {
110757
- const fullPath = presolve(pjoin(path6, basename3));
110758
- entry = { path: prelative(this._root, fullPath), fullPath, basename: basename3 };
110759
- entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
110760
- } catch (err) {
110726
+ const fullPath = pjoin(path6, basename3);
110727
+ const entry = { path: fullPath.slice(this._relStart), fullPath, basename: basename3 };
110728
+ if (this._isDirent) {
110729
+ entry.dirent = dirent;
110730
+ return entry;
110731
+ }
110732
+ return this._stat(fullPath).then((stats) => {
110733
+ entry.stats = stats;
110734
+ return entry;
110735
+ }, (err) => {
110761
110736
  this._onError(err);
110762
110737
  return;
110763
- }
110764
- return entry;
110738
+ });
110765
110739
  }
110766
110740
  _onError(err) {
110767
110741
  if (isNormalFlowError(err) && !this.destroyed) {
@@ -110770,8 +110744,8 @@ var init_readdirp = __esm(() => {
110770
110744
  this.destroy(err);
110771
110745
  }
110772
110746
  }
110773
- async _getEntryType(entry) {
110774
- if (!entry && this._statsProp in entry) {
110747
+ _getEntryType(entry) {
110748
+ if (!entry || !(this._statsProp in entry)) {
110775
110749
  return "";
110776
110750
  }
110777
110751
  const stats = entry[this._statsProp];
@@ -110779,28 +110753,32 @@ var init_readdirp = __esm(() => {
110779
110753
  return "file";
110780
110754
  if (stats.isDirectory())
110781
110755
  return "directory";
110782
- if (stats && stats.isSymbolicLink()) {
110783
- const full = entry.fullPath;
110784
- try {
110785
- const entryRealPath = await realpath2(full);
110786
- const entryRealPathStats = await lstat(entryRealPath);
110787
- if (entryRealPathStats.isFile()) {
110788
- return "file";
110789
- }
110790
- if (entryRealPathStats.isDirectory()) {
110791
- const len2 = entryRealPath.length;
110792
- if (full.startsWith(entryRealPath) && full.substr(len2, 1) === psep) {
110793
- const recursiveError = new Error(`Circular symlink detected: "${full}" points to "${entryRealPath}"`);
110794
- recursiveError.code = RECURSIVE_ERROR_CODE;
110795
- return this._onError(recursiveError);
110796
- }
110797
- return "directory";
110756
+ if (stats.isSymbolicLink())
110757
+ return this._getSymlinkEntryType(entry);
110758
+ return "";
110759
+ }
110760
+ async _getSymlinkEntryType(entry) {
110761
+ const full = entry.fullPath;
110762
+ try {
110763
+ const entryRealPath = await realpath2(full);
110764
+ const entryRealPathStats = await lstat(entryRealPath);
110765
+ if (entryRealPathStats.isFile()) {
110766
+ return "file";
110767
+ }
110768
+ if (entryRealPathStats.isDirectory()) {
110769
+ const len2 = entryRealPath.length;
110770
+ if (full.startsWith(entryRealPath) && full[len2] === psep) {
110771
+ const recursiveError = new Error(`Circular symlink detected: "${full}" points to "${entryRealPath}"`);
110772
+ recursiveError.code = RECURSIVE_ERROR_CODE;
110773
+ this._onError(recursiveError);
110774
+ return "";
110798
110775
  }
110799
- } catch (error51) {
110800
- this._onError(error51);
110801
- return "";
110776
+ return "directory";
110802
110777
  }
110778
+ } catch (error51) {
110779
+ this._onError(error51);
110803
110780
  }
110781
+ return "";
110804
110782
  }
110805
110783
  _includeAsFile(entry) {
110806
110784
  const stats = entry && entry[this._statsProp];
@@ -127723,8 +127701,14 @@ async function startLocalWebServer(config4, deps = {}) {
127723
127701
  streamHub,
127724
127702
  stop() {
127725
127703
  return new Promise((resolve8, reject) => {
127726
- io2.close();
127727
- server2.close((err) => err ? reject(err) : resolve8());
127704
+ io2.close((err) => {
127705
+ if (err) {
127706
+ reject(err);
127707
+ return;
127708
+ }
127709
+ resolve8();
127710
+ });
127711
+ server2.closeAllConnections();
127728
127712
  });
127729
127713
  }
127730
127714
  };
@@ -129025,4 +129009,4 @@ program2.hook("preAction", async (_thisCommand, actionCommand) => {
129025
129009
  });
129026
129010
  program2.parse();
129027
129011
 
129028
- //# debugId=3C5E79A2AC47FADE64756E2164756E21
129012
+ //# debugId=BCEF43321DDB187C64756E2164756E21