local-operator-ui 0.25.16 → 0.25.18

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 (69) hide show
  1. package/out/main/index.js +341 -26
  2. package/out/renderer/assets/{_basePickBy-DBhtDEGA.js → _basePickBy-Dqo9Svot.js} +1 -1
  3. package/out/renderer/assets/{_baseUniq-B5WxfAdh.js → _baseUniq-Bqq4bH3r.js} +1 -1
  4. package/out/renderer/assets/{agent-details-page-CseZi6cR.js → agent-details-page-D5Xaqf5E.js} +1 -1
  5. package/out/renderer/assets/{agent-hub-page-_t-x78D_.js → agent-hub-page-Crnga1Hx.js} +1 -1
  6. package/out/renderer/assets/{agents-page-B6vQMI_R.js → agents-page-CXeZLL0h.js} +2 -2
  7. package/out/renderer/assets/{arc-Dcd3HzRZ.js → arc-ErJh4afL.js} +1 -1
  8. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CXwTTKVn.js → architectureDiagram-IEHRJDOE-CqPUhWwU.js} +1 -1
  9. package/out/renderer/assets/{blockDiagram-JOT3LUYC-dW5gyGl7.js → blockDiagram-JOT3LUYC-DGzBuOTu.js} +1 -1
  10. package/out/renderer/assets/browser-page-CV4u_doL.js +1 -0
  11. package/out/renderer/assets/{c4Diagram-VJAJSXHY-B1fPOy-n.js → c4Diagram-VJAJSXHY-BtVyEvMI.js} +1 -1
  12. package/out/renderer/assets/channel-B-RyHHam.js +1 -0
  13. package/out/renderer/assets/{chunk-4BMEZGHF-BjkEbeJq.js → chunk-4BMEZGHF-qHL7gFMz.js} +1 -1
  14. package/out/renderer/assets/{chunk-A2AXSNBT-CNdgDk-3.js → chunk-A2AXSNBT-CZdwXrGh.js} +1 -1
  15. package/out/renderer/assets/{chunk-AEK57VVT-DlvJjW1D.js → chunk-AEK57VVT-D3ygkjPx.js} +1 -1
  16. package/out/renderer/assets/{chunk-D6G4REZN-DUrFmr72.js → chunk-D6G4REZN-Cptud7N8.js} +1 -1
  17. package/out/renderer/assets/{chunk-RZ5BOZE2-DVV9SVAw.js → chunk-RZ5BOZE2-BW_-DH47.js} +1 -1
  18. package/out/renderer/assets/{chunk-XZIHB7SX-D5KVgy3I.js → chunk-XZIHB7SX-DVBP-wVb.js} +1 -1
  19. package/out/renderer/assets/classDiagram-GIVACNV2-_YNlHCSJ.js +1 -0
  20. package/out/renderer/assets/classDiagram-v2-COTLJTTW-_YNlHCSJ.js +1 -0
  21. package/out/renderer/assets/clone-CG632oKz.js +1 -0
  22. package/out/renderer/assets/{compact-pagination-FBuuRrOa.js → compact-pagination-DZcKP76l.js} +1 -1
  23. package/out/renderer/assets/{dagre-OKDRZEBW-U2nObwi2.js → dagre-OKDRZEBW-DmDP5q7x.js} +1 -1
  24. package/out/renderer/assets/{diagram-SSKATNLV-qATRbhkK.js → diagram-SSKATNLV-DXDXZp0c.js} +1 -1
  25. package/out/renderer/assets/{diagram-VNBRO52H-BPEwatJH.js → diagram-VNBRO52H-BADpsVut.js} +1 -1
  26. package/out/renderer/assets/{erDiagram-Q7BY3M3F-Bx5nxisD.js → erDiagram-Q7BY3M3F-S1vauM_p.js} +1 -1
  27. package/out/renderer/assets/{flowDiagram-4HSFHLVR-Do8frrTh.js → flowDiagram-4HSFHLVR-TVPZdl6u.js} +1 -1
  28. package/out/renderer/assets/{ganttDiagram-APWFNJXF-C_-yHBuP.js → ganttDiagram-APWFNJXF-DnrsPlnD.js} +1 -1
  29. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-DXTe6Uqo.js → gitGraphDiagram-7IBYFJ6S-yCY1XLln.js} +1 -1
  30. package/out/renderer/assets/{graph-BPMdi6cQ.js → graph-BxjT2eQO.js} +1 -1
  31. package/out/renderer/assets/icon-BKAmSt8B.css +1 -0
  32. package/out/renderer/assets/{index-CV6OexwP.js → index-DkR2IOFW.js} +367 -366
  33. package/out/renderer/assets/{index-DlEE2Mhu.js → index-DoRFtjYI.js} +1 -1
  34. package/out/renderer/assets/{index-fXOo37XI.js → index-tkj2FVUw.js} +1 -1
  35. package/out/renderer/assets/{infoDiagram-PH2N3AL5-7Bdo1-DK.js → infoDiagram-PH2N3AL5-D177FnZ4.js} +1 -1
  36. package/out/renderer/assets/{installer-Db9wXNQc.js → installer-DGvvq3Hw.js} +1 -1
  37. package/out/renderer/assets/{journeyDiagram-U35MCT3I-C_YNwAiC.js → journeyDiagram-U35MCT3I-GPGRSxRB.js} +1 -1
  38. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DwyjTS65.js → kanban-definition-NDS4AKOZ-BBqB4T4f.js} +1 -1
  39. package/out/renderer/assets/{layout-Dt9rFxLo.js → layout-CNsK6zbV.js} +1 -1
  40. package/out/renderer/assets/{legacy-agents-page-Ck7g4g5h.js → legacy-agents-page-C7hRXtYl.js} +1 -1
  41. package/out/renderer/assets/{mermaid.core-CTF22veB.js → mermaid.core-kFbnNRih.js} +5 -5
  42. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-hIcrIbqg.js → mindmap-definition-ALO5MXBD-nj6Nb3_d.js} +1 -1
  43. package/out/renderer/assets/{page-header-CNu3r7Wl.js → page-header-h3oV19Xt.js} +1 -1
  44. package/out/renderer/assets/{parseISO-D7fb4zbb.js → parseISO-CJS8mOux.js} +1 -1
  45. package/out/renderer/assets/{pieDiagram-IB7DONF6-CgQ8RSTq.js → pieDiagram-IB7DONF6-Bnz5mDF1.js} +1 -1
  46. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-D0u3ugSa.js → quadrantDiagram-7GDLP6J5-CccK4eoR.js} +1 -1
  47. package/out/renderer/assets/{radar-MK3ICKWK-D4NPS1yb.js → radar-MK3ICKWK-CSKEMsQ0.js} +1 -1
  48. package/out/renderer/assets/{radient-auth-buttons-6mbpShIM.js → radient-auth-buttons-BkKxA_iN.js} +1 -1
  49. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CzyA0VGV.js → requirementDiagram-KVF5MWMF-CB_BCBB3.js} +1 -1
  50. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-Bu3OPb5q.js → sankeyDiagram-QLVOVGJD-C_kUAgD4.js} +1 -1
  51. package/out/renderer/assets/{schedules-page-Z26BnqzA.js → schedules-page-Cg_9vR8_.js} +1 -1
  52. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-C1Wt7DUe.js → sequenceDiagram-X6HHIX6F-DMVr-l3j.js} +1 -1
  53. package/out/renderer/assets/{settings-page-Ds1_qi2y.js → settings-page-BVf3GbZe.js} +22 -22
  54. package/out/renderer/assets/{stateDiagram-DGXRK772-D_Odl8sh.js → stateDiagram-DGXRK772-3fvxQXpG.js} +1 -1
  55. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DILZ7L7Q.js +1 -0
  56. package/out/renderer/assets/{timeline-definition-BDJGKUSR-BlShpjPx.js → timeline-definition-BDJGKUSR-Cqc-O64D.js} +1 -1
  57. package/out/renderer/assets/{use-agent-like-mutation-DwD0kyhJ.js → use-agent-like-mutation-Da0zEmNH.js} +1 -1
  58. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-CGVDywr7.js → xychartDiagram-VJFVF3MP-DXGJHnXo.js} +1 -1
  59. package/out/renderer/index.html +3 -3
  60. package/out/renderer/installer.html +3 -3
  61. package/package.json +2 -2
  62. package/out/renderer/assets/browser-page-CbsSO9cU.js +0 -1
  63. package/out/renderer/assets/channel-CNQYu0Z5.js +0 -1
  64. package/out/renderer/assets/classDiagram-GIVACNV2-i38CMqFy.js +0 -1
  65. package/out/renderer/assets/classDiagram-v2-COTLJTTW-i38CMqFy.js +0 -1
  66. package/out/renderer/assets/clone-DyOOGQU7.js +0 -1
  67. package/out/renderer/assets/icon-C3z02Ja7.css +0 -1
  68. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-nORq9nsg.js +0 -1
  69. /package/out/renderer/assets/{icon-KrVT-csH.js → icon-BIH0o0-h.js} +0 -0
package/out/main/index.js CHANGED
@@ -2288,11 +2288,13 @@ const seedNamespace = "python-runtime-seed";
2288
2288
  const architectures = ["arm64", "x64"];
2289
2289
  const legacyResourceNames = ["python", "python_aarch64"];
2290
2290
  const checkoutSeedNames = { "arm64": "python_aarch64", "x64": "python" };
2291
+ const machOMagics = ["cffaedfe", "cefaedfe", "feedfacf", "feedface", "cafebabe", "bebafeca"];
2291
2292
  const BUNDLED_PYTHON_LAYOUT = {
2292
2293
  seedNamespace,
2293
2294
  architectures,
2294
2295
  legacyResourceNames,
2295
- checkoutSeedNames
2296
+ checkoutSeedNames,
2297
+ machOMagics
2296
2298
  };
2297
2299
  const PENDING_INSTALL_MARKER_FILE = "pending-update-install.json";
2298
2300
  const INSTALL_DISK_SLACK_BYTES = 256 * 1024 * 1024;
@@ -4507,6 +4509,7 @@ const PYVENV_HOME$1 = /^home\s*=\s*(.+)$/m;
4507
4509
  const LOCK_OWNER = /^\s*\d+\s*$/;
4508
4510
  const LEGACY_BUNDLE_PYTHON_PATH = /\.app\/Contents\/Resources\/python(?:_aarch64)?\//;
4509
4511
  const PYTHON_SEED_NAMESPACE = BUNDLED_PYTHON_LAYOUT.seedNamespace;
4512
+ const MACH_O_MAGICS = new Set(BUNDLED_PYTHON_LAYOUT.machOMagics);
4510
4513
  const FORMAT = 1;
4511
4514
  const READY = "environment-ready.json";
4512
4515
  const POINTER = "selected-environment.json";
@@ -4621,15 +4624,7 @@ async function verifyMachO(root, manifest) {
4621
4624
  } finally {
4622
4625
  fs.closeSync(fd);
4623
4626
  }
4624
- if (![
4625
- "cffaedfe",
4626
- "cefaedfe",
4627
- "feedfacf",
4628
- "feedface",
4629
- "cafebabe",
4630
- "bebafeca"
4631
- ].includes(magic.toString("hex")))
4632
- continue;
4627
+ if (!MACH_O_MAGICS.has(magic.toString("hex"))) continue;
4633
4628
  binaries++;
4634
4629
  await execute("/usr/bin/codesign", ["--verify", "--strict", path2], {
4635
4630
  timeout: 3e4
@@ -15239,6 +15234,128 @@ function rememberPickedDirectory(kind, filePaths, directoryPicked = false) {
15239
15234
  if (!first) return;
15240
15235
  lastPickedDirectory.set(kind, directoryPicked ? first : path$1.dirname(first));
15241
15236
  }
15237
+ const CHROMIUM_TRANSPORT_CODES = [
15238
+ "ERR_INTERNET_DISCONNECTED",
15239
+ "ERR_NETWORK_CHANGED",
15240
+ "ERR_NAME_NOT_RESOLVED",
15241
+ "ERR_TIMED_OUT",
15242
+ "ERR_CONNECTION_RESET",
15243
+ "ERR_CONNECTION_REFUSED",
15244
+ "ERR_CONNECTION_CLOSED",
15245
+ "ERR_CONNECTION_FAILED",
15246
+ "ERR_CONNECTION_TIMED_OUT",
15247
+ "ERR_ADDRESS_UNREACHABLE",
15248
+ "ERR_NETWORK_IO_SUSPENDED",
15249
+ "ERR_PROXY_CONNECTION_FAILED"
15250
+ ];
15251
+ const NODE_ERRNO_CODES = [
15252
+ "ENOTFOUND",
15253
+ "EAI_AGAIN",
15254
+ "ETIMEDOUT",
15255
+ "ECONNRESET",
15256
+ "ECONNREFUSED",
15257
+ "EHOSTUNREACH",
15258
+ "ENETUNREACH",
15259
+ "ENETDOWN",
15260
+ "ENETRESET",
15261
+ "ECONNABORTED",
15262
+ "EPIPE"
15263
+ ];
15264
+ const ENGINE_TRANSPORT_FAILURES = [
15265
+ "Failed to fetch",
15266
+ "Load failed",
15267
+ "NetworkError when attempting to fetch resource."
15268
+ ];
15269
+ const CHROMIUM_SET = new Set(CHROMIUM_TRANSPORT_CODES);
15270
+ const CLAUSE_END = /[:\-\u2014\n]$/;
15271
+ const CLAUSE_START = /^[:\n]/;
15272
+ const CLAUSE_BOUNDARY = /[:\uff1a\n\u2014]| - /g;
15273
+ const LEADING_ERROR_PREFIXES = /^(?:\s*Error:\s*)+/;
15274
+ const EMBEDDED_ERROR_PREFIX = /:\s+Error:\s+/g;
15275
+ const CHROMIUM_CODE_PATTERN = /\b(?:net::)?(ERR_[A-Z0-9_]+)\b/g;
15276
+ const NODE_ERRNO_PATTERNS = NODE_ERRNO_CODES.map((code) => ({
15277
+ code,
15278
+ pattern: new RegExp(`\\b${code}\\b`)
15279
+ }));
15280
+ function isClause(message, start, length) {
15281
+ const before = message.slice(0, start).trimEnd();
15282
+ const after = message.slice(start + length).trimStart();
15283
+ const beforeIsBoundary = before === "" || CLAUSE_END.test(before);
15284
+ const afterIsBoundary = after === "" || CLAUSE_START.test(after);
15285
+ return beforeIsBoundary && afterIsBoundary;
15286
+ }
15287
+ function transientTransportFragment(input) {
15288
+ const message = messageOf(input);
15289
+ if (!message) return null;
15290
+ const cleaned = stripErrorPrefixes(message);
15291
+ for (const match of cleaned.matchAll(CHROMIUM_CODE_PATTERN)) {
15292
+ const code = match[1];
15293
+ if (!CHROMIUM_SET.has(code)) continue;
15294
+ const start = match.index ?? 0;
15295
+ const end = start + match[0].length;
15296
+ return {
15297
+ code: `net::${code}`,
15298
+ start,
15299
+ end,
15300
+ clauseText: clauseTextOf(cleaned, start, end),
15301
+ clause: isClause(cleaned, start, end - start)
15302
+ };
15303
+ }
15304
+ for (const { code, pattern } of NODE_ERRNO_PATTERNS) {
15305
+ const match = pattern.exec(cleaned);
15306
+ if (match) {
15307
+ const start = match.index;
15308
+ const end = start + match[0].length;
15309
+ return {
15310
+ code,
15311
+ start,
15312
+ end,
15313
+ clauseText: clauseTextOf(cleaned, start, end),
15314
+ clause: isClause(cleaned, start, end - start)
15315
+ };
15316
+ }
15317
+ }
15318
+ for (const phrase of ENGINE_TRANSPORT_FAILURES) {
15319
+ const start = cleaned.indexOf(phrase);
15320
+ if (start === -1) continue;
15321
+ if (!isClause(cleaned, start, phrase.length)) continue;
15322
+ return {
15323
+ code: phrase,
15324
+ start,
15325
+ end: start + phrase.length,
15326
+ clauseText: clauseTextOf(cleaned, start, start + phrase.length),
15327
+ clause: true
15328
+ };
15329
+ }
15330
+ return null;
15331
+ }
15332
+ function transientTransportCode(input) {
15333
+ return transientTransportFragment(input)?.code ?? null;
15334
+ }
15335
+ function messageOf(input) {
15336
+ if (typeof input === "string") return input;
15337
+ if (input instanceof Error) return input.message || input.name || "";
15338
+ if (input && typeof input === "object" && "message" in input) {
15339
+ const message = input.message;
15340
+ return typeof message === "string" ? message : "";
15341
+ }
15342
+ return "";
15343
+ }
15344
+ function clauseTextOf(message, start, end) {
15345
+ let from = 0;
15346
+ for (const boundary of message.slice(0, start).matchAll(CLAUSE_BOUNDARY)) {
15347
+ from = (boundary.index ?? 0) + boundary[0].length;
15348
+ }
15349
+ let to = message.length;
15350
+ for (const boundary of message.slice(end).matchAll(CLAUSE_BOUNDARY)) {
15351
+ to = end + (boundary.index ?? 0);
15352
+ break;
15353
+ }
15354
+ return message.slice(from, to).trim();
15355
+ }
15356
+ function stripErrorPrefixes(message) {
15357
+ return message.replace(LEADING_ERROR_PREFIXES, "").replace(EMBEDDED_ERROR_PREFIX, ": ");
15358
+ }
15242
15359
  const READABLE_VERSION_PATTERN = /^v?\d+(\.\d+){0,3}([.-]?(?:a|b|c|rc|alpha|beta|pre|post|dev)[.-]?\d*)?(?:[-+][0-9A-Za-z.-]+)?$/i;
15243
15360
  const isReadableVersion = (value) => typeof value === "string" && READABLE_VERSION_PATTERN.test(value.trim());
15244
15361
  const UP_TO_DATE_AFFIRMATION = "The application and server are up to date";
@@ -15256,9 +15373,15 @@ const INSTALL_IN_FLIGHT_RECHECK_MS = 1e4;
15256
15373
  const LAUNCHCTL_NOT_LOADED_REGEX = /could not find|no such process/i;
15257
15374
  const SEAL_PROBE_TIMEOUT_MS = 45e3;
15258
15375
  const STARTUP_SEAL_PROBE_DELAY_MS = 15e3;
15376
+ const POST_WAKE_CHECK_DELAY_MS = 2e4;
15259
15377
  function versionSuffix(version) {
15260
15378
  return version ? ` to version ${version}` : "";
15261
15379
  }
15380
+ function offlineTransportError() {
15381
+ return new Error(
15382
+ "net::ERR_INTERNET_DISCONNECTED - the machine reported no network, so no request was made"
15383
+ );
15384
+ }
15262
15385
  function runCommand(command, args, options = {}) {
15263
15386
  return new Promise((resolve) => {
15264
15387
  node_child_process.execFile(
@@ -15313,6 +15436,47 @@ class UpdateService {
15313
15436
  * available", which is how `shouldFilterUpdateError` would otherwise read it.
15314
15437
  */
15315
15438
  updateStage = "idle";
15439
+ /**
15440
+ * How many app-channel checks are in flight right now.
15441
+ *
15442
+ * ONE OWNER PER FAILURE. The `autoUpdater` `error` event and the check that
15443
+ * caused it are two producers of the same user-facing message, and they used
15444
+ * to carry two different suppression rules: `checkForUpdates` refuses to send
15445
+ * for a silent check and the event handler sent regardless, so one transient
15446
+ * failure was reported twice and a background check was reported at all. A
15447
+ * check in flight owns its own failure report, so the handler stands down
15448
+ * while this is above zero. It is a DEPTH rather than a boolean because the
15449
+ * scheduled check and a click can overlap.
15450
+ */
15451
+ appChecksInFlight = 0;
15452
+ /**
15453
+ * The attempt sequence in flight in the app channel, so a second check rides
15454
+ * it instead of doubling it.
15455
+ *
15456
+ * WHY THIS EXISTS, measured. Two checks are started at launch by different
15457
+ * owners - the renderer's mount effect and this process's own delayed check -
15458
+ * and QA round 1 measured the cost of letting them run independently while
15459
+ * the feed is down: six fetches in 6.6 s where the base made two
15460
+ * (`Q-2`), three per check because of the retries. The fetch is the same
15461
+ * request for the same feed, so the second caller awaits the first one's
15462
+ * sequence and the result is shared; `appChecksInFlight` stays at 1 for the
15463
+ * pair, which is also what keeps the `error` events of that one sequence owned
15464
+ * by the check that started it.
15465
+ */
15466
+ appFeedFetchInFlight = null;
15467
+ /**
15468
+ * The wake-armed check, held so a second wake cannot arm a second one.
15469
+ */
15470
+ postWakeCheckTimer = null;
15471
+ /**
15472
+ * The backoff between attempts at one app-channel feed fetch, in ms.
15473
+ *
15474
+ * Two retries, so three attempts, which is the bound a transient Wi-Fi roam
15475
+ * or resolver blip needs and short enough that a check the user is waiting on
15476
+ * still answers in seconds. A test overrides it rather than waiting 4 s per
15477
+ * case; nothing else does.
15478
+ */
15479
+ appFeedRetryDelaysMs = [1e3, 3e3];
15316
15480
  /** The last update the updater told us about, for its file metadata. */
15317
15481
  lastUpdateInfo = null;
15318
15482
  /**
@@ -15427,6 +15591,25 @@ class UpdateService {
15427
15591
  }, STARTUP_SEAL_PROBE_DELAY_MS);
15428
15592
  sealProbe.unref();
15429
15593
  this.startPeriodicUpdateChecks();
15594
+ electron.powerMonitor.on("resume", () => this.armPostWakeCheck());
15595
+ }
15596
+ /**
15597
+ * Arm the single check that follows a resume, or leave the armed one alone.
15598
+ *
15599
+ * `unref`'d like the seal probe: a quit before it fires loses nothing, because
15600
+ * the next launch checks and the five-minute tick is still there.
15601
+ */
15602
+ armPostWakeCheck() {
15603
+ if (this.postWakeCheckTimer) return;
15604
+ this.postWakeCheckTimer = setTimeout(() => {
15605
+ this.postWakeCheckTimer = null;
15606
+ logger.info(
15607
+ "Running the update check this machine's wake armed",
15608
+ LogFileType.UPDATE_SERVICE
15609
+ );
15610
+ void this.checkForAllUpdates(true);
15611
+ }, POST_WAKE_CHECK_DELAY_MS);
15612
+ this.postWakeCheckTimer.unref();
15430
15613
  }
15431
15614
  /**
15432
15615
  * Start periodic update checks
@@ -16482,6 +16665,87 @@ ${heal.removed.join("\n")}`,
16482
16665
  /**
16483
16666
  * Set up event handlers for the autoUpdater
16484
16667
  */
16668
+ /**
16669
+ * One app-channel feed fetch, with its retries, as the owner of its failures.
16670
+ *
16671
+ * WHY A RETRY AND NOT A BETTER ERROR MESSAGE. The failures in the operator's
16672
+ * log are transients: a Wi-Fi change, a wake, a resolver blip. Every one of
16673
+ * them was followed by a check five minutes later that answered normally, so
16674
+ * the honest response to the first is to ask again rather than to tell the
16675
+ * user their network is down. Only a TRANSIENT failure is retried
16676
+ * (`transientTransportCode`), so a 404, a refused credential or a certificate
16677
+ * verdict still fails immediately and is not swallowed by a backoff.
16678
+ *
16679
+ * WHAT A CHECK CONCLUDES IS UNCHANGED, deliberately: a feed that never
16680
+ * arrived still reaches the caller as a rejected promise, and a check that
16681
+ * could not find out stays `unavailable` in the verdict. Retrying must not
16682
+ * turn "could not find out" into "nothing newer" - that conflation is this
16683
+ * repository's documented defect class, and it is why this is a retry rather
16684
+ * than an extra entry in `shouldFilterUpdateError` (whose filtered branch
16685
+ * emits `update-not-available`).
16686
+ *
16687
+ * The in-flight depth is held across the whole attempt sequence, so the
16688
+ * `error` events each attempt raises are owned by this call rather than
16689
+ * reported beside it.
16690
+ */
16691
+ async runAppFeedCheck(fetchFeed) {
16692
+ if (this.appFeedFetchInFlight) return this.appFeedFetchInFlight;
16693
+ const sequence = this.runAppFeedAttempts(fetchFeed);
16694
+ this.appFeedFetchInFlight = sequence;
16695
+ try {
16696
+ return await sequence;
16697
+ } finally {
16698
+ this.appFeedFetchInFlight = null;
16699
+ }
16700
+ }
16701
+ /**
16702
+ * Whether Electron believes this machine has a network at all.
16703
+ *
16704
+ * The `typeof` guard is a constraint rather than defensiveness: this module is
16705
+ * bundled with Electron STUBBED by its own contract harness
16706
+ * (`scripts/update-robustness.test.mjs`), and a stub that does not answer this
16707
+ * question must not turn every check into a skip. A missing reading is read as
16708
+ * "reachable", which is the behaviour that existed before the gate.
16709
+ */
16710
+ networkIsReachable() {
16711
+ return typeof electron.net?.isOnline === "function" ? electron.net.isOnline() : true;
16712
+ }
16713
+ /**
16714
+ * The attempt sequence itself: the retries, and the depth that owns them.
16715
+ */
16716
+ async runAppFeedAttempts(fetchFeed) {
16717
+ this.appChecksInFlight += 1;
16718
+ try {
16719
+ const delays = this.appFeedRetryDelaysMs;
16720
+ for (let attempt = 0; ; attempt += 1) {
16721
+ try {
16722
+ if (!this.networkIsReachable()) {
16723
+ logger.info(
16724
+ `The machine reports no network (net.isOnline() is false); not spending a request on the update feed${attempt < delays.length ? `, asking again in ${delays[attempt]}ms (attempt ${attempt + 2} of ${delays.length + 1})` : ""}.`,
16725
+ LogFileType.UPDATE_SERVICE
16726
+ );
16727
+ if (attempt >= delays.length) throw offlineTransportError();
16728
+ await new Promise(
16729
+ (resolve) => setTimeout(resolve, delays[attempt])
16730
+ );
16731
+ continue;
16732
+ }
16733
+ return await fetchFeed();
16734
+ } catch (error) {
16735
+ const code = transientTransportCode(error);
16736
+ if (code === null || attempt >= delays.length) throw error;
16737
+ const delay = delays[attempt];
16738
+ logger.warn(
16739
+ `Transient transport failure during the update check (${code}); retrying in ${delay}ms (attempt ${attempt + 2} of ${delays.length + 1})`,
16740
+ LogFileType.UPDATE_SERVICE
16741
+ );
16742
+ await new Promise((resolve) => setTimeout(resolve, delay));
16743
+ }
16744
+ }
16745
+ } finally {
16746
+ this.appChecksInFlight -= 1;
16747
+ }
16748
+ }
16485
16749
  setupUpdateEvents() {
16486
16750
  electronUpdater.autoUpdater.on("update-available", (info) => {
16487
16751
  logger.info("Update available:", LogFileType.UPDATE_SERVICE, info);
@@ -16513,6 +16777,17 @@ ${heal.removed.join("\n")}`,
16513
16777
  electronUpdater.autoUpdater.on("error", (err) => {
16514
16778
  logger.error("Update error:", LogFileType.UPDATE_SERVICE, err);
16515
16779
  const actionable = this.updateStage !== "idle";
16780
+ if (!actionable && this.appChecksInFlight > 0) {
16781
+ logger.info(
16782
+ // The rule, at the point it is implemented: a check in flight owns
16783
+ // its own failure report, and an app-initiated check's owner is a
16784
+ // silent one - so this is the log line that replaces the alert the
16785
+ // operator saw, not a swallowed error.
16786
+ "Update error during an availability check: the check reports its own failure",
16787
+ LogFileType.UPDATE_SERVICE
16788
+ );
16789
+ return;
16790
+ }
16516
16791
  const shouldFilter = !actionable && this.shouldFilterUpdateError(err);
16517
16792
  if (shouldFilter) {
16518
16793
  logger.info(
@@ -16522,7 +16797,7 @@ ${heal.removed.join("\n")}`,
16522
16797
  version: electron.app.getVersion()
16523
16798
  });
16524
16799
  } else {
16525
- this.sendToRenderer("update-error", err.message);
16800
+ this.sendToRenderer("update-error", stripErrorPrefixes(err.message));
16526
16801
  }
16527
16802
  });
16528
16803
  electronUpdater.autoUpdater.on("download-progress", (progressObj) => {
@@ -16586,12 +16861,18 @@ ${heal.removed.join("\n")}`,
16586
16861
  async (_event, options) => {
16587
16862
  logger.info("Checking for UI updates...", LogFileType.UPDATE_SERVICE);
16588
16863
  this.onCheckRequested(options);
16864
+ const reportFailure = options?.manual === true;
16589
16865
  try {
16590
- return await electronUpdater.autoUpdater.checkForUpdates();
16866
+ return await this.runAppFeedCheck(
16867
+ () => electronUpdater.autoUpdater.checkForUpdates()
16868
+ );
16591
16869
  } catch (error) {
16592
16870
  logger.error(
16593
16871
  "Error checking for UI updates:",
16594
16872
  LogFileType.UPDATE_SERVICE,
16873
+ // The failure is logged here whatever the caller is, because the log
16874
+ // is where an app-initiated check's failure belongs once it is not
16875
+ // reported.
16595
16876
  error
16596
16877
  );
16597
16878
  const shouldFilter = this.shouldFilterUpdateError(error);
@@ -16610,6 +16891,13 @@ ${heal.removed.join("\n")}`,
16610
16891
  cancellationToken: null
16611
16892
  };
16612
16893
  }
16894
+ if (!reportFailure) {
16895
+ logger.info(
16896
+ "An app-initiated check could not read the update feed; the failure is logged and not shown (only a check the user asked for is reported).",
16897
+ LogFileType.UPDATE_SERVICE
16898
+ );
16899
+ return null;
16900
+ }
16613
16901
  throw error;
16614
16902
  }
16615
16903
  }
@@ -16641,7 +16929,10 @@ ${heal.removed.join("\n")}`,
16641
16929
  this.onCheckRequested(options);
16642
16930
  const silent = options?.silent === true;
16643
16931
  try {
16644
- return await this.checkForAllUpdates(silent);
16932
+ return await this.checkForAllUpdates(
16933
+ silent,
16934
+ options?.manual === true
16935
+ );
16645
16936
  } catch (error) {
16646
16937
  logger.error(
16647
16938
  "Error checking for all updates:",
@@ -16789,7 +17080,7 @@ ${heal.removed.join("\n")}`,
16789
17080
  * says it with `unavailable` rather than by omission. `checkForAllUpdates`
16790
17081
  * is what turns the pair into the one sentence a user reads.
16791
17082
  */
16792
- async checkForUpdates(silent = false) {
17083
+ async checkForUpdates(silent = false, reportFailure = !silent) {
16793
17084
  logger.info(
16794
17085
  `Checking for updates... (silent mode: ${silent})`,
16795
17086
  LogFileType.UPDATE_SERVICE
@@ -16868,7 +17159,9 @@ ${heal.removed.join("\n")}`,
16868
17159
  }
16869
17160
  let result;
16870
17161
  try {
16871
- result = await electronUpdater.autoUpdater.checkForUpdates();
17162
+ result = await this.runAppFeedCheck(
17163
+ () => electronUpdater.autoUpdater.checkForUpdates()
17164
+ );
16872
17165
  } finally {
16873
17166
  if (silent) {
16874
17167
  electronUpdater.autoUpdater.removeAllListeners("update-not-available");
@@ -16897,10 +17190,16 @@ ${heal.removed.join("\n")}`,
16897
17190
  LogFileType.UPDATE_SERVICE,
16898
17191
  error
16899
17192
  );
16900
- if (this.mainWindow && !this.mainWindow.isDestroyed() && this.mainWindow.webContents && !this.mainWindow.webContents.isDestroyed() && !silent) {
17193
+ if (this.mainWindow && !this.mainWindow.isDestroyed() && this.mainWindow.webContents && !this.mainWindow.webContents.isDestroyed() && reportFailure) {
16901
17194
  this.mainWindow.webContents.send(
16902
17195
  "update-error",
16903
- error.message
17196
+ /*
17197
+ * Cleaned of the nested `Error: ` prefixes a wrapped failure carries,
17198
+ * at the source: this string is shown to a person as the machine's own
17199
+ * words under the sentence the renderer builds from the same code, and
17200
+ * `Error: Error: net::...` is a nesting nobody asked for.
17201
+ */
17202
+ stripErrorPrefixes(error.message)
16904
17203
  );
16905
17204
  }
16906
17205
  return "unavailable";
@@ -17224,7 +17523,7 @@ ${heal.removed.join("\n")}`,
17224
17523
  * proved nothing, which is why "could not determine the version" returns
17225
17524
  * `unavailable` rather than the `current` it used to read as.
17226
17525
  */
17227
- async checkForBackendUpdates(silent = false) {
17526
+ async checkForBackendUpdates(silent = false, reportFailure = !silent) {
17228
17527
  logger.info(
17229
17528
  `Checking for backend updates... (silent mode: ${silent})`,
17230
17529
  LogFileType.UPDATE_SERVICE
@@ -17251,6 +17550,13 @@ ${heal.removed.join("\n")}`,
17251
17550
  );
17252
17551
  return { status: "unavailable", info: null };
17253
17552
  }
17553
+ if (!this.networkIsReachable()) {
17554
+ logger.info(
17555
+ "Skipping the server update check: this machine reports no network right now (net.isOnline() is false). The app channel owns the report; the next scheduled check will try again.",
17556
+ LogFileType.UPDATE_SERVICE
17557
+ );
17558
+ return { status: "unavailable", info: null };
17559
+ }
17254
17560
  const installedVersion = await this.getInstalledBackendVersion();
17255
17561
  const latestVersion = await this.getLatestPypiVersion();
17256
17562
  if (latestVersion) this.lastPublishedBackendVersion = latestVersion;
@@ -17259,7 +17565,7 @@ ${heal.removed.join("\n")}`,
17259
17565
  "Unable to determine backend versions.",
17260
17566
  LogFileType.UPDATE_SERVICE
17261
17567
  );
17262
- if (!silent) {
17568
+ if (reportFailure) {
17263
17569
  this.sendToRenderer("backend-update-error", {
17264
17570
  message: "Unable to determine backend version.",
17265
17571
  phase: "check"
@@ -17272,7 +17578,7 @@ ${heal.removed.join("\n")}`,
17272
17578
  "The installed backend version could not be determined from the health endpoint.",
17273
17579
  LogFileType.UPDATE_SERVICE
17274
17580
  );
17275
- if (!silent) {
17581
+ if (reportFailure) {
17276
17582
  this.sendToRenderer("backend-update-error", {
17277
17583
  message: "The installed server version could not be determined, so no update was offered. Restart the app to try again.",
17278
17584
  phase: "check"
@@ -17291,7 +17597,7 @@ ${heal.removed.join("\n")}`,
17291
17597
  )} server version (installed: ${installedVersion}, published: ${latestVersion}); no status is reported rather than comparing an unreadable reading.`,
17292
17598
  LogFileType.UPDATE_SERVICE
17293
17599
  );
17294
- if (!silent) {
17600
+ if (reportFailure) {
17295
17601
  this.sendToRenderer("backend-update-error", {
17296
17602
  message: "Unable to determine backend version.",
17297
17603
  phase: "check"
@@ -17352,7 +17658,14 @@ ${heal.removed.join("\n")}`,
17352
17658
  );
17353
17659
  if (!silent && this.mainWindow && !this.mainWindow.isDestroyed() && this.mainWindow.webContents && !this.mainWindow.webContents.isDestroyed()) {
17354
17660
  this.mainWindow.webContents.send("backend-update-error", {
17355
- message: error.message,
17661
+ /*
17662
+ * Cleaned at the source, the same way the app channel's report is:
17663
+ * this channel's real strings are Node errno forms, and a wrapped
17664
+ * one carries the inner `Error: ` prefix into the sentence a person
17665
+ * reads. The renderer maps what is left to a sentence; this is what
17666
+ * keeps that sentence's machine line readable.
17667
+ */
17668
+ message: stripErrorPrefixes(error.message),
17356
17669
  phase: "check"
17357
17670
  });
17358
17671
  }
@@ -17676,7 +17989,9 @@ ${pipRun.stderr.trim()}`,
17676
17989
  }
17677
17990
  if (this.mainWindow && !this.mainWindow.isDestroyed() && this.mainWindow.webContents && !this.mainWindow.webContents.isDestroyed()) {
17678
17991
  this.mainWindow.webContents.send("backend-update-error", {
17679
- message: error.message,
17992
+ // Cleaned at the source, for the reason written on the check-phase
17993
+ // report above.
17994
+ message: stripErrorPrefixes(error.message),
17680
17995
  phase: "update"
17681
17996
  });
17682
17997
  }
@@ -17695,9 +18010,9 @@ ${pipRun.stderr.trim()}`,
17695
18010
  * carries it - each channel's own events are unchanged, and the verdict
17696
18011
  * crosses the IPC boundary as this call's return value.
17697
18012
  */
17698
- async checkForAllUpdates(silent = false) {
17699
- const app2 = await this.checkForUpdates(silent);
17700
- const server = await this.checkForBackendUpdates(silent);
18013
+ async checkForAllUpdates(silent = false, reportFailure = !silent) {
18014
+ const app2 = await this.checkForUpdates(silent, reportFailure);
18015
+ const server = await this.checkForBackendUpdates(silent, reportFailure);
17701
18016
  return updateCheckVerdict({ app: app2, server: server.status });
17702
18017
  }
17703
18018
  /**
@@ -1 +1 @@
1
- import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-B5WxfAdh.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-CTF22veB.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
1
+ import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-Bqq4bH3r.js";import{as as g,aa as y,at as E,au as F,av as M,aw as I,ax as _,ay as $,az as B,aA as T}from"./mermaid.core-kFbnNRih.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
@@ -1 +1 @@
1
- import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-CTF22veB.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
1
+ import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-kFbnNRih.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
@@ -1,4 +1,4 @@
1
- import{a as J,r as S,j as e,L as X,T as B,B as c,S as L,b as R,d as F,e as q,f as x,X as Z,g as j,c as U}from"./icon-KrVT-csH.js";import{g as $,aq as V,f as E,aa as f,ac as P,ar as _,as as M,at as ee,au as te,av as se,aw as ae,ax as Q,ay as ne,az as W,aA as ie,h as H,aB as re,aC as oe,u as le,aD as ce,aE as de,aF as me,aG as ue,aH as xe,B as he,aI as ge,aJ as je,aK as fe,aL as ye,aM as O,aN as pe,aO as be,aP as we}from"./index-CV6OexwP.js";import{u as ve,a as Ce,b as Ne,c as Ae}from"./use-agent-like-mutation-DwD0kyhJ.js";/**
1
+ import{a as J,r as S,j as e,L as X,T as B,B as c,S as L,b as R,d as F,e as q,f as x,X as Z,g as j,c as U}from"./icon-BIH0o0-h.js";import{g as $,aq as V,f as E,aa as f,ac as P,ar as _,as as M,at as ee,au as te,av as se,aw as ae,ax as Q,ay as ne,az as W,aA as ie,h as H,aB as re,aC as oe,u as le,aD as ce,aE as de,aF as me,aG as ue,aH as xe,B as he,aI as ge,aJ as je,aK as fe,aL as ye,aM as O,aN as pe,aO as be,aP as we}from"./index-DkR2IOFW.js";import{u as ve,a as Ce,b as Ne,c as Ae}from"./use-agent-like-mutation-Da0zEmNH.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{a as p,j as e,c as j,r as m,S as y}from"./icon-KrVT-csH.js";import{C as k}from"./compact-pagination-FBuuRrOa.js";import{P as v}from"./page-header-CNu3r7Wl.js";import{aa as b,am as A,an as h,ao as L,ap as N}from"./index-CV6OexwP.js";import{u as C,a as P,b as w,c as M}from"./use-agent-like-mutation-DwD0kyhJ.js";/**
1
+ import{a as p,j as e,c as j,r as m,S as y}from"./icon-BIH0o0-h.js";import{C as k}from"./compact-pagination-DZcKP76l.js";import{P as v}from"./page-header-h3oV19Xt.js";import{aa as b,am as A,an as h,ao as L,ap as N}from"./index-DkR2IOFW.js";import{u as C,a as P,b as w,c as M}from"./use-agent-like-mutation-Da0zEmNH.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.