local-operator-ui 0.34.10 → 0.34.12

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 (84) hide show
  1. package/out/main/index.js +363 -6
  2. package/out/renderer/assets/{_basePickBy-87gLtqNI.js → _basePickBy-0FuZakDO.js} +1 -1
  3. package/out/renderer/assets/{_baseUniq-CqMuzMm5.js → _baseUniq-DF-R-zk_.js} +1 -1
  4. package/out/renderer/assets/{agent-details-page-BKP0lejX.js → agent-details-page-Cpmz3DTx.js} +1 -1
  5. package/out/renderer/assets/{agent-hub-page-_Sp-muKS.js → agent-hub-page-BjdZHs7N.js} +1 -1
  6. package/out/renderer/assets/{agents-page-DI31kPGh.js → agents-page-CFI7y-mh.js} +3 -3
  7. package/out/renderer/assets/{arc-CfI0S5oW.js → arc-hMevLt8i.js} +1 -1
  8. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CRi1KQTE.js → architectureDiagram-IEHRJDOE-B5fNwTBg.js} +1 -1
  9. package/out/renderer/assets/{blockDiagram-JOT3LUYC-DYSufKZ4.js → blockDiagram-JOT3LUYC-C0eifn71.js} +1 -1
  10. package/out/renderer/assets/{book-open--Rkaye1b.js → book-open-Cpx7b4xU.js} +1 -1
  11. package/out/renderer/assets/browser-page-DOvqhWYH.js +1 -0
  12. package/out/renderer/assets/{browser-webauthn-prompt-B9Ss4ckW.js → browser-webauthn-prompt-BInNSrH7.js} +1 -1
  13. package/out/renderer/assets/{c4Diagram-VJAJSXHY-gqkI3IW0.js → c4Diagram-VJAJSXHY-B7AqGR0S.js} +1 -1
  14. package/out/renderer/assets/channel-JotcBz3R.js +1 -0
  15. package/out/renderer/assets/{chunk-4BMEZGHF-huDDMh_S.js → chunk-4BMEZGHF-DRgWg1wB.js} +1 -1
  16. package/out/renderer/assets/{chunk-A2AXSNBT-B-GhfH1y.js → chunk-A2AXSNBT-QkYdfOR_.js} +1 -1
  17. package/out/renderer/assets/{chunk-AEK57VVT-CbZOTTd-.js → chunk-AEK57VVT-CCQ--tm8.js} +1 -1
  18. package/out/renderer/assets/{chunk-D6G4REZN-BnVLRwsH.js → chunk-D6G4REZN-Czu2dN7h.js} +1 -1
  19. package/out/renderer/assets/{chunk-RZ5BOZE2-RhGZ6jkt.js → chunk-RZ5BOZE2-DYG4fw8w.js} +1 -1
  20. package/out/renderer/assets/{chunk-XZIHB7SX-xw0vsSno.js → chunk-XZIHB7SX-CrsWczXN.js} +1 -1
  21. package/out/renderer/assets/classDiagram-GIVACNV2-CksS_rYL.js +1 -0
  22. package/out/renderer/assets/classDiagram-v2-COTLJTTW-CksS_rYL.js +1 -0
  23. package/out/renderer/assets/clone-BzHauEn5.js +1 -0
  24. package/out/renderer/assets/{console-mirror-m4iYesBg.js → console-mirror-BEedSAfE.js} +1 -1
  25. package/out/renderer/assets/{consoleCapture-dpX-dZJb.js → consoleCapture-CJpzUlSd.js} +1 -1
  26. package/out/renderer/assets/{conversation-input-sync-BIBmcJ7f.js → conversation-input-sync-jHBqtt9M.js} +231 -231
  27. package/out/renderer/assets/{dagre-OKDRZEBW-CjgoxeFb.js → dagre-OKDRZEBW-V_2TdXms.js} +1 -1
  28. package/out/renderer/assets/{diagram-SSKATNLV-yh_yVCAQ.js → diagram-SSKATNLV-DmHiewpC.js} +1 -1
  29. package/out/renderer/assets/{diagram-VNBRO52H-D1Dhgou4.js → diagram-VNBRO52H-BBaLkKUI.js} +1 -1
  30. package/out/renderer/assets/{erDiagram-Q7BY3M3F-dsrnU-pX.js → erDiagram-Q7BY3M3F-gzrT0OQq.js} +1 -1
  31. package/out/renderer/assets/{error-boundary-XLnRMwpt.js → error-boundary-DexrfAEk.js} +1 -1
  32. package/out/renderer/assets/{flowDiagram-4HSFHLVR-CTZdBke2.js → flowDiagram-4HSFHLVR-WtEIG1SZ.js} +1 -1
  33. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BtCV5cXe.js → ganttDiagram-APWFNJXF-B1jWM42b.js} +1 -1
  34. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-XsCbug4G.js → gitGraphDiagram-7IBYFJ6S-_mbC-N8Q.js} +1 -1
  35. package/out/renderer/assets/{graph-0PvsItJa.js → graph--j_bjGDp.js} +1 -1
  36. package/out/renderer/assets/{index-DkUXUtZb.js → index-78Pu8oX4.js} +1 -1
  37. package/out/renderer/assets/index-BXFAcfHW.js +812 -0
  38. package/out/renderer/assets/index-BhJCtYke.css +1 -0
  39. package/out/renderer/assets/{index-Bg8B03Ac.js → index-SDz2HLAt.js} +1 -1
  40. package/out/renderer/assets/{infoDiagram-PH2N3AL5-DF6_qC_k.js → infoDiagram-PH2N3AL5-ZAxI5P-K.js} +1 -1
  41. package/out/renderer/assets/{installer-D3e1sYLn.js → installer-BDvScYgZ.js} +1 -1
  42. package/out/renderer/assets/{journeyDiagram-U35MCT3I-QQ16CihS.js → journeyDiagram-U35MCT3I-DZ4RyZqB.js} +1 -1
  43. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DSkKmSpu.js → kanban-definition-NDS4AKOZ-kW-9JUyI.js} +1 -1
  44. package/out/renderer/assets/{layout-CWxVFBzx.js → layout-hBM56uFl.js} +1 -1
  45. package/out/renderer/assets/{legacy-agents-page-QSPKAo8s.js → legacy-agents-page-lsbEk2J1.js} +1 -1
  46. package/out/renderer/assets/{mermaid.core-DWBeiNZ0.js → mermaid.core-DUwwjyuA.js} +5 -5
  47. package/out/renderer/assets/{mesh-page-DVa98ZHr.js → mesh-page-R-moWtJ_.js} +1 -1
  48. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-D7747b9i.js → mindmap-definition-ALO5MXBD-CabAvvHv.js} +1 -1
  49. package/out/renderer/assets/{mini-CjuRvrnE.js → mini-Bk-Elwan.js} +1 -1
  50. package/out/renderer/assets/{org-surface-gate-DCi6_C8i.js → org-surface-gate-BblILKma.js} +1 -1
  51. package/out/renderer/assets/{page-header-Diz2YHGd.js → page-header-Ce0OVEd3.js} +1 -1
  52. package/out/renderer/assets/{pieDiagram-IB7DONF6-vG7lnoIX.js → pieDiagram-IB7DONF6-DfPuydQj.js} +1 -1
  53. package/out/renderer/assets/{projects-page-DxE4tUyq.js → projects-page-vD-RuTFH.js} +1 -1
  54. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-CvD85uCx.js → quadrantDiagram-7GDLP6J5-miOaNOa0.js} +1 -1
  55. package/out/renderer/assets/{radar-MK3ICKWK-DPYWAkTG.js → radar-MK3ICKWK-6uN5Oz3u.js} +1 -1
  56. package/out/renderer/assets/{radient-auth-buttons-DDmeFhYp.js → radient-auth-buttons-COiSnA2S.js} +1 -1
  57. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-7uKyBIZv.js → requirementDiagram-KVF5MWMF-ZcBG_T3L.js} +1 -1
  58. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-BkA-88Et.js → sankeyDiagram-QLVOVGJD-B0yXArdY.js} +1 -1
  59. package/out/renderer/assets/{schedules-page-BIC0_EGx.js → schedules-page-BNxF_SHU.js} +1 -1
  60. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-BEieUvPH.js → sequenceDiagram-X6HHIX6F-Cy6KDW6o.js} +1 -1
  61. package/out/renderer/assets/{settings-page-CziZpujA.js → settings-page-478PcsAW.js} +1 -1
  62. package/out/renderer/assets/{settings-section-CMKRYEph.js → settings-section-n-j-LSaI.js} +1 -1
  63. package/out/renderer/assets/{stateDiagram-DGXRK772-C9R8my4L.js → stateDiagram-DGXRK772-SpJc3S_A.js} +1 -1
  64. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CBW1IyeW.js +1 -0
  65. package/out/renderer/assets/{timeline-definition-BDJGKUSR-C4hIkLDF.js → timeline-definition-BDJGKUSR-BSbru3ra.js} +1 -1
  66. package/out/renderer/assets/{ui-preferences-store-B23VrKBG.js → ui-preferences-store-DNhiasP6.js} +1 -1
  67. package/out/renderer/assets/{use-download-agent-mutation-DtMK1HJL.js → use-download-agent-mutation-CfvFFmrZ.js} +1 -1
  68. package/out/renderer/assets/{use-memberships-query-DB9G-4zz.js → use-memberships-query-B__m4YCP.js} +1 -1
  69. package/out/renderer/assets/{use-session-snapshot-CWNo7e8t.js → use-session-snapshot-CF9Y72Da.js} +1 -1
  70. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Dty-8Wzs.js → xychartDiagram-VJFVF3MP-6d774UsI.js} +1 -1
  71. package/out/renderer/console-capture.html +5 -5
  72. package/out/renderer/index.html +7 -7
  73. package/out/renderer/installer.html +4 -4
  74. package/out/renderer/mini.html +7 -7
  75. package/package.json +2 -3
  76. package/out/renderer/assets/browser-page-Gw7aGgb_.js +0 -1
  77. package/out/renderer/assets/channel-CIhQ-C1y.js +0 -1
  78. package/out/renderer/assets/classDiagram-GIVACNV2-DZl4_Kix.js +0 -1
  79. package/out/renderer/assets/classDiagram-v2-COTLJTTW-DZl4_Kix.js +0 -1
  80. package/out/renderer/assets/clone-BzhWUOzU.js +0 -1
  81. package/out/renderer/assets/index-CMmcCNTr.js +0 -807
  82. package/out/renderer/assets/index-CV4EKbhw.css +0 -1
  83. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Cg8UNBbu.js +0 -1
  84. /package/out/renderer/assets/{index-DYPQY4Aq.js → index-CMRW4pU4.js} +0 -0
package/out/main/index.js CHANGED
@@ -4484,6 +4484,9 @@ const SHIPIT_RELATIVE_PATH = path$1.join(
4484
4484
  const INSTALLER_TOKEN = "local-operator-update-installer";
4485
4485
  const UPDATE_STAGING_DIR = "update-staging";
4486
4486
  const INSTALLER_POLL_SECONDS = "0.2";
4487
+ const INSTALLER_FIRST_GRACE_SECONDS = 60;
4488
+ const INSTALLER_SECOND_GRACE_SECONDS = 20;
4489
+ const INSTALLER_KILL_SETTLE_SECONDS = "0.5";
4487
4490
  const EXTRACTION_TIMEOUT_MS = 10 * 6e4;
4488
4491
  function shipItPathInBundle(bundlePath) {
4489
4492
  if (!bundlePath) return null;
@@ -4563,6 +4566,8 @@ function shipItStatePlist(input) {
4563
4566
  };
4564
4567
  }
4565
4568
  function buildInstallerSpawn(input) {
4569
+ const firstGrace = input.graceSeconds?.first ?? INSTALLER_FIRST_GRACE_SECONDS;
4570
+ const secondGrace = input.graceSeconds?.second ?? INSTALLER_SECOND_GRACE_SECONDS;
4566
4571
  const script = `#!/bin/sh
4567
4572
  # ${INSTALLER_TOKEN}
4568
4573
  #
@@ -4573,10 +4578,74 @@ function buildInstallerSpawn(input) {
4573
4578
  # (SQRLInstallerErrorDomain Code=-9, the 2026-09-18 09:37 install). So this waits
4574
4579
  # for the app's pid to go, and then replaces itself with the installer: one
4575
4580
  # process, one pid for the app to record, and no shell left in the way.
4576
- while kill -0 "$1" 2>/dev/null; do
4581
+ #
4582
+ # THE WAIT IS BOUNDED AND LOGGED (2026-10-11): the unbounded shape waited 26 m
4583
+ # 49 s while the app sat alive with no window, and logged nothing anywhere. Each
4584
+ # stage below is bounded and writes one timestamped line to the installer's log;
4585
+ # the last stage starts the installer regardless, because a pid that survives
4586
+ # SIGKILL is a zombie and nothing more exists to wait for.
4587
+ app_pid=$1
4588
+ started=$(date +%s)
4589
+ log_stage() {
4590
+ printf '%s ${INSTALLER_TOKEN}: %s\\n' "$(date '+%Y-%m-%dT%H:%M:%S')" "$1" >>"$LO_UPDATE_INSTALLER_LOG"
4591
+ }
4592
+ elapsed() {
4593
+ printf '%d' "$(( $(date +%s) - started ))"
4594
+ }
4595
+ # A recycled pid is never signalled: before any kill, the target's command line
4596
+ # must still name the app's own executable ($LO_UPDATE_INSTALLER_APP_EXEC,
4597
+ # environment only - see the args comment at the callers).
4598
+ target_is_app() {
4599
+ [ -n "$LO_UPDATE_INSTALLER_APP_EXEC" ] || return 1
4600
+ _line=$(ps -o command= -p "$app_pid" 2>/dev/null) || return 1
4601
+ case "$_line" in
4602
+ *"$LO_UPDATE_INSTALLER_APP_EXEC"*) return 0 ;;
4603
+ esac
4604
+ return 1
4605
+ }
4606
+ start_installer() {
4607
+ log_stage "starting the installer ($(elapsed)s in)"
4608
+ exec "$LO_UPDATE_INSTALLER_SHIPIT" "$LO_UPDATE_INSTALLER_LABEL" "$LO_UPDATE_INSTALLER_STATE" >>"$LO_UPDATE_INSTALLER_LOG" 2>&1
4609
+ }
4610
+ log_stage "waiting up to ${firstGrace}s for the app to exit on its own"
4611
+ _end=$((started + ${firstGrace}))
4612
+ while kill -0 "$app_pid" 2>/dev/null; do
4613
+ if [ "$(date +%s)" -ge "$_end" ]; then break; fi
4577
4614
  sleep ${INSTALLER_POLL_SECONDS}
4578
4615
  done
4579
- exec "$LO_UPDATE_INSTALLER_SHIPIT" "$LO_UPDATE_INSTALLER_LABEL" "$LO_UPDATE_INSTALLER_STATE" >>"$LO_UPDATE_INSTALLER_LOG" 2>&1
4616
+ if ! kill -0 "$app_pid" 2>/dev/null; then
4617
+ log_stage "the app exited on its own ($(elapsed)s in)"
4618
+ start_installer
4619
+ fi
4620
+ log_stage "the first grace expired with the app still there"
4621
+ if target_is_app; then
4622
+ log_stage "asking the app to stop (SIGTERM)"
4623
+ kill -TERM "$app_pid" 2>/dev/null
4624
+ _end=$(( $(date +%s) + ${secondGrace} ))
4625
+ while kill -0 "$app_pid" 2>/dev/null; do
4626
+ if [ "$(date +%s)" -ge "$_end" ]; then break; fi
4627
+ sleep ${INSTALLER_POLL_SECONDS}
4628
+ done
4629
+ if ! kill -0 "$app_pid" 2>/dev/null; then
4630
+ log_stage "the app exited after SIGTERM ($(elapsed)s in)"
4631
+ start_installer
4632
+ fi
4633
+ if target_is_app; then
4634
+ log_stage "the second grace expired; forcing the pid gone (SIGKILL)"
4635
+ kill -KILL "$app_pid" 2>/dev/null
4636
+ sleep ${INSTALLER_KILL_SETTLE_SECONDS}
4637
+ if kill -0 "$app_pid" 2>/dev/null; then
4638
+ log_stage "the pid survived SIGKILL (a zombie or unkillable); nothing left to wait for"
4639
+ else
4640
+ log_stage "the app is gone after SIGKILL ($(elapsed)s in)"
4641
+ fi
4642
+ else
4643
+ log_stage "target is not the app after SIGTERM; starting the installer"
4644
+ fi
4645
+ start_installer
4646
+ fi
4647
+ log_stage "target is not the app; starting the installer without signalling"
4648
+ start_installer
4580
4649
  `;
4581
4650
  return {
4582
4651
  script,
@@ -4584,7 +4653,8 @@ exec "$LO_UPDATE_INSTALLER_SHIPIT" "$LO_UPDATE_INSTALLER_LABEL" "$LO_UPDATE_INST
4584
4653
  LO_UPDATE_INSTALLER_SHIPIT: input.shipItPath,
4585
4654
  LO_UPDATE_INSTALLER_LABEL: input.label,
4586
4655
  LO_UPDATE_INSTALLER_STATE: input.statePath,
4587
- LO_UPDATE_INSTALLER_LOG: input.logPath
4656
+ LO_UPDATE_INSTALLER_LOG: input.logPath,
4657
+ LO_UPDATE_INSTALLER_APP_EXEC: input.appExecPath
4588
4658
  },
4589
4659
  // `sh -c <script> <name> <pid>`: the name is $0 and the pid is $1, so the
4590
4660
  // script text carries no path and no number that a process listing of it
@@ -4611,6 +4681,8 @@ const INSTALL_DISK_SLACK_BYTES = 256 * 1024 * 1024;
4611
4681
  const DOWNLOAD_PAGE_URL = "https://local-operator.com/download";
4612
4682
  const WATCHDOG_TIMEOUT_SECONDS = 600;
4613
4683
  const WATCHDOG_HARD_TIMEOUT_SECONDS = 1800;
4684
+ const WATCHDOG_APP_WAIT_NOTICE_SECONDS = 15;
4685
+ const WATCHDOG_APP_WAIT_FALLBACK_SECONDS = 2 * (INSTALLER_FIRST_GRACE_SECONDS + INSTALLER_SECOND_GRACE_SECONDS);
4614
4686
  const PENDING_INSTALL_RECENCY_MARGIN_SECONDS = 300;
4615
4687
  const PENDING_INSTALL_RECENCY_SECONDS = WATCHDOG_HARD_TIMEOUT_SECONDS + PENDING_INSTALL_RECENCY_MARGIN_SECONDS;
4616
4688
  const LAUNCH_HOLD_END_MARGIN_SECONDS = 60;
@@ -5346,13 +5418,15 @@ function watchdogSignals(platform) {
5346
5418
  return { jobProbe: "launchctl", plistReader: "/usr/bin/plutil" };
5347
5419
  }
5348
5420
  function buildWatchdogPlan(input) {
5349
- const signals = input.signals ?? watchdogSignals(input.platform);
5421
+ const signals = input.signals ?? watchdogSignals(input.platform ?? "darwin");
5350
5422
  const timeoutSeconds = input.timeoutSeconds ?? WATCHDOG_TIMEOUT_SECONDS;
5351
5423
  const hardTimeoutSeconds = input.hardTimeoutSeconds ?? WATCHDOG_HARD_TIMEOUT_SECONDS;
5352
5424
  const intervalSeconds = input.intervalSeconds ?? 3;
5353
5425
  const settleSeconds = input.settleSeconds ?? 5;
5354
5426
  const appearSeconds = input.appearSeconds ?? 30;
5355
5427
  const announceSeconds = input.announceSeconds ?? 5;
5428
+ const appWaitNoticeSeconds = input.appWaitNoticeSeconds ?? WATCHDOG_APP_WAIT_NOTICE_SECONDS;
5429
+ const appWaitFallbackSeconds = input.appWaitFallbackSeconds ?? WATCHDOG_APP_WAIT_FALLBACK_SECONDS;
5356
5430
  const plistTimeoutSeconds = input.plistReadTimeoutSeconds ?? PLIST_READ_TIMEOUT_SECONDS;
5357
5431
  const script = `#!/bin/sh
5358
5432
  # ${WATCHDOG_TOKEN}
@@ -5450,6 +5524,27 @@ if [ -z "$APP_PID" ] || [ -z "$BUNDLE" ]; then
5450
5524
  fi
5451
5525
  now() { date +%s; }
5452
5526
  app_running() { kill -0 "$APP_PID" 2>/dev/null; }
5527
+ # THE WAIT'S OWN CLOCK (2026-10-11). The script is spawned as the quit begins, so
5528
+ # its own start IS the wait's start - elapsed is measured from here rather than
5529
+ # from the marker's startedAt, which is written before the quit and would need a
5530
+ # new seam through two collaborators for a difference of seconds.
5531
+ started=$(now)
5532
+ # "waiting 15 s" / "waiting 2 min 30 s": elapsed in the units a person reads,
5533
+ # with the seconds term dropped at an exact minute ("waiting 30 min") - "30 min
5534
+ # 0 s" reads like a clock fault rather than a wait (round-1 D2).
5535
+ elapsed_text() {
5536
+ _seconds=$(( $(now) - started ))
5537
+ if [ "$_seconds" -lt 0 ]; then _seconds=0; fi
5538
+ if [ "$_seconds" -ge 60 ]; then
5539
+ if [ $((_seconds % 60)) -eq 0 ]; then
5540
+ printf '%d min' "$((_seconds / 60))"
5541
+ else
5542
+ printf '%d min %d s' "$((_seconds / 60))" "$((_seconds % 60))"
5543
+ fi
5544
+ else
5545
+ printf '%d s' "$_seconds"
5546
+ fi
5547
+ }
5453
5548
  # Whether ANY process is this install's ShipIt, for the pid that stopped being it.
5454
5549
  #
5455
5550
  # The same two facts installerElsewhere requires of a line in its listing: this
@@ -5676,8 +5771,31 @@ decided() {
5676
5771
  deadline=$(( $(now) + ${timeoutSeconds} ))
5677
5772
  hard_deadline=$(( $(now) + ${hardTimeoutSeconds} ))
5678
5773
  # 1. The install only starts once the old app has exited.
5774
+ #
5775
+ # AND THE WAIT SPEAKS, INSTEAD OF LEAVING THE PERSON IN SILENCE (2026-10-11).
5776
+ # The incident's app sat alive with no window for 26 m 49 s; this script was
5777
+ # the only process left that could say anything, and its first step was
5778
+ # silent until the soft bound - the person watched nothing happen and
5779
+ # resolved it by hand ('kill -TERM', which is what let ShipIt exec). So the
5780
+ # wait now says what it is waiting for and for how long, well before the
5781
+ # installer's own escalation signals the app
5782
+ # (WATCHDOG_APP_WAIT_NOTICE_SECONDS), and after the escalation has
5783
+ # provably failed it hands over the action that works
5784
+ # (WATCHDOG_APP_WAIT_FALLBACK_SECONDS). Each fires at most once; the
5785
+ # kill switch silences both like every other notice (notify's own guard).
5786
+ app_wait_notice=0
5787
+ app_wait_fallback=0
5679
5788
  while app_running; do
5680
5789
  if [ "$(now)" -ge "$deadline" ]; then break; fi
5790
+ _waited=$(( $(now) - started ))
5791
+ if [ "$app_wait_notice" -eq 0 ] && [ "$_waited" -ge ${appWaitNoticeSeconds} ]; then
5792
+ app_wait_notice=1
5793
+ notify "Waiting for Local Operator to close so the update can install (waiting $(elapsed_text)). No action is needed yet."
5794
+ fi
5795
+ if [ "$app_wait_fallback" -eq 0 ] && [ "$_waited" -ge ${appWaitFallbackSeconds} ]; then
5796
+ app_wait_fallback=1
5797
+ notify "The update is still waiting for Local Operator to close (waiting $(elapsed_text)). If nothing happens, quit Local Operator (Force Quit if it does not respond) and leave it closed until it opens again by itself."
5798
+ fi
5681
5799
  sleep ${intervalSeconds}
5682
5800
  done
5683
5801
  # 1b. The app is gone and an install is at work, so the window that just
@@ -5752,7 +5870,16 @@ while :; do
5752
5870
  if [ "$(now)" -ge "$deadline" ]; then
5753
5871
  if [ "$signal_known" -eq 1 ] && install_live; then
5754
5872
  holding=1
5755
- notify "The update is still installing. Keep Local Operator closed; it will open again when the install finishes."
5873
+ # THE SOFT BOUND BRANCHES TOO (round-1 UX U4): it fires while the app
5874
+ # may still be RUNNING, where "keep it closed" describes a state the
5875
+ # person is not in. App running -> the wait/fallback copy with a fresh
5876
+ # elapsed reading; app gone -> the stay-closed copy, which is true there
5877
+ # (an install this app spawned is live and the swap still needs quiet).
5878
+ if app_running; then
5879
+ notify "The update is still waiting for Local Operator to close (waiting $(elapsed_text)). If nothing happens, quit Local Operator (Force Quit if it does not respond) and leave it closed until it opens again by itself."
5880
+ else
5881
+ notify "The update is still installing. Keep Local Operator closed; it will open again when the install finishes."
5882
+ fi
5756
5883
  fi
5757
5884
  break
5758
5885
  fi
@@ -5780,7 +5907,20 @@ if [ "$holding" -eq 1 ]; then
5780
5907
  while :; do
5781
5908
  if decided; then break; fi
5782
5909
  if [ "$(now)" -ge "$hard_deadline" ]; then
5783
- notify "The update is taking longer than expected. Local Operator is opening again so you are not left without it — if it says the update is still installing, quit it and leave it closed until the install finishes."
5910
+ # TRUTHFUL ON BOTH ARMS (2026-10-11). The notice that used to stand
5911
+ # here promised "Local Operator is opening again" unconditionally, and
5912
+ # the path below with the app STILL RUNNING ('if app_running; then
5913
+ # exit 0') is exactly where that promise is false - the watchdog
5914
+ # exits without launching, because launching into a running app is
5915
+ # what aborts a swap. So the app-still-running arm now says the true
5916
+ # thing and hands over the action that resolves it, the same fallback
5917
+ # the wait's own notices use; the app-gone arm keeps the notice the
5918
+ # panel's copy expects (UX U10).
5919
+ if app_running; then
5920
+ notify "The update is still waiting for Local Operator to close (waiting $(elapsed_text)). If nothing happens, quit Local Operator (Force Quit if it does not respond) and leave it closed until it opens again by itself."
5921
+ else
5922
+ notify "The update is taking longer than expected. Local Operator is opening again so you are not left without it — if it says the update is still installing, quit it and leave it closed until the install finishes."
5923
+ fi
5784
5924
  break
5785
5925
  fi
5786
5926
  sleep ${intervalSeconds}
@@ -35442,6 +35582,32 @@ function rememberPickedDirectory(kind, filePaths, directoryPicked = false) {
35442
35582
  if (!first) return;
35443
35583
  lastPickedDirectory.set(kind, directoryPicked ? first : path$1.dirname(first));
35444
35584
  }
35585
+ const QUIT_EXIT_DEADLINE_MARGIN_MS = 5e3;
35586
+ function quitExitDeadlineMs(input) {
35587
+ return SESSION_COOKIE_QUIT_BUDGET_MS + input.quitCleanupFailsafeMs + QUIT_EXIT_DEADLINE_MARGIN_MS;
35588
+ }
35589
+ function createQuitExitDeadline(input) {
35590
+ let timer = null;
35591
+ let stage = "";
35592
+ return {
35593
+ arm(next) {
35594
+ if (timer) return;
35595
+ stage = next;
35596
+ timer = setTimeout(() => {
35597
+ timer = null;
35598
+ input.onFire(stage);
35599
+ }, input.timeoutMs);
35600
+ timer.unref();
35601
+ },
35602
+ phase(next) {
35603
+ stage = next;
35604
+ },
35605
+ release() {
35606
+ if (timer) clearTimeout(timer);
35607
+ timer = null;
35608
+ }
35609
+ };
35610
+ }
35445
35611
  function createQuitState() {
35446
35612
  let quitting = false;
35447
35613
  return {
@@ -36440,6 +36606,9 @@ const GLOBAL_UPDATE_TIMEOUT_MS = 15 * 60 * 1e3;
36440
36606
  const SOURCE_REBUILD_TIMEOUT_MS = 30 * 60 * 1e3;
36441
36607
  const UPDATE_RESTART_STOP_GRACE_MS = 5e3;
36442
36608
  const BUNDLE_ID_REGEX = /^[\w.-]+$/;
36609
+ const APP_UPDATE_CACHE_DIR_NAME_REGEX = /^updaterCacheDirName:[ \t]*(\S+)[ \t]*$/m;
36610
+ const CACHE_DIR_NAME_OK_REGEX = /^[A-Za-z0-9._-]+$/;
36611
+ const UPDATER_CACHE_PENDING_FILE_REGEX = /\.zip$/i;
36443
36612
  const INSTALL_IN_FLIGHT_RECHECK_MS = 1e4;
36444
36613
  const LAUNCHCTL_NOT_LOADED_REGEX = /could not find|no such process/i;
36445
36614
  const APP_OWNED_PUBLISH_HEADROOM_BYTES = 450 * 1024 * 1024;
@@ -37446,6 +37615,7 @@ class UpdateService {
37446
37615
  );
37447
37616
  this.reapWatchdog(outcome.marker, true);
37448
37617
  this.reapStagedUpdateTrees();
37618
+ this.reapUpdaterCache();
37449
37619
  clearPendingInstallMarker(this.markerDir());
37450
37620
  this.retireSupersededInstallRecord();
37451
37621
  this.pendingInstallSucceeded = {
@@ -37460,6 +37630,7 @@ class UpdateService {
37460
37630
  );
37461
37631
  this.reapWatchdog(outcome.marker, true);
37462
37632
  this.reapStagedUpdateTrees();
37633
+ this.reapUpdaterCache();
37463
37634
  clearPendingInstallMarker(this.markerDir());
37464
37635
  this.retireSupersededInstallRecord();
37465
37636
  return;
@@ -37512,6 +37683,7 @@ class UpdateService {
37512
37683
  this.reapWatchdog(outcome.marker, false);
37513
37684
  this.reapFailedInstallLeftovers();
37514
37685
  this.reapStagedUpdateTrees();
37686
+ this.reapUpdaterCache();
37515
37687
  this.schedulePendingInstallFailureDelivery();
37516
37688
  }
37517
37689
  }
@@ -38643,6 +38815,16 @@ ${heal.removed.join("\n")}`,
38643
38815
  startInstaller(handoff) {
38644
38816
  const plan = buildInstallerSpawn({
38645
38817
  appPid: process.pid,
38818
+ /*
38819
+ * The path the spawner's identity check matches before it signals
38820
+ * anything: this process's own executable. `process.execPath` is
38821
+ * `/Applications/Local Operator.app/Contents/MacOS/Local Operator`
38822
+ * in the packaged app, and the running main process's command line
38823
+ * starts with exactly that path - which is the question
38824
+ * `ps -o command= -p <pid>` answers. It travels in the environment,
38825
+ * never in the script text (see the callee's own note).
38826
+ */
38827
+ appExecPath: process.execPath,
38646
38828
  shipItPath: handoff.shipItPath,
38647
38829
  label: handoff.label,
38648
38830
  statePath: handoff.statePath,
@@ -38728,6 +38910,146 @@ ${heal.removed.join("\n")}`,
38728
38910
  }
38729
38911
  }
38730
38912
  }
38913
+ /**
38914
+ * The updater's own cache directory for this app, or null when it cannot be
38915
+ * resolved.
38916
+ *
38917
+ * WHY THE APP NEEDS THIS PATH AT ALL (2026-10-11 cache hygiene): nothing ever
38918
+ * clears `~/Library/Caches/<updater cache dir>/` - measured residue after one
38919
+ * successful install: `update.zip` (~180 MB), `pending/<artifact>.zip` (~180
38920
+ * MB, the SAME bytes) and `pending/update-info.json`, all three left behind by
38921
+ * a download that has already been used or replaced. electron-updater clears
38922
+ * `pending/` on a failed DOWNLOAD and never clears `update.zip` - by design,
38923
+ * because `update.zip` is the differential base its next download patches
38924
+ * against (`MacUpdater`'s `canDifferentialDownload`), so deleting it buys disk
38925
+ * at the cost of a full ~180 MB re-download. `reapUpdaterCache` below is the
38926
+ * bounded-retention answer; this resolver is how it finds the directory.
38927
+ *
38928
+ * TWO SOURCES, in order. The download helper is authoritative for a download
38929
+ * THIS run performed (the same private surface `ensureStagedArtifactVerified`
38930
+ * already reads). It does not survive a restart, and the reap runs at
38931
+ * start-up, so the fallback reads the name electron-updater itself would
38932
+ * read: `updaterCacheDirName` from `app-update.yml` beside the packaged app,
38933
+ * under the base cache path its own adapter computes (`~/Library/Caches` on
38934
+ * macOS). ONE key on ONE line is parsed rather than adding a YAML dependency
38935
+ * on a package that is a transitive dependency of the updater rather than
38936
+ * ours.
38937
+ *
38938
+ * A DELETION ROOT IS NEVER TAKEN FROM THE MARKER or any other mutable record:
38939
+ * a corrupted record would then choose what gets deleted. Null means
38940
+ * "declined to reap", never a guess.
38941
+ */
38942
+ updaterCacheRoot() {
38943
+ const helper = this.downloadHelper();
38944
+ if (helper?.cacheDirForPendingUpdate) {
38945
+ return path$1.dirname(helper.cacheDirForPendingUpdate);
38946
+ }
38947
+ try {
38948
+ const config = fs.readFileSync(
38949
+ path$1.join(process.resourcesPath, "app-update.yml"),
38950
+ "utf8"
38951
+ );
38952
+ const name = config.match(APP_UPDATE_CACHE_DIR_NAME_REGEX)?.[1];
38953
+ if (!name || !CACHE_DIR_NAME_OK_REGEX.test(name)) return null;
38954
+ return path$1.join(electron.app.getPath("home"), "Library", "Caches", name);
38955
+ } catch {
38956
+ return null;
38957
+ }
38958
+ }
38959
+ /**
38960
+ * Reduce the updater's cache to at most ONE artifact's worth, once an install
38961
+ * is settled (2026-10-11).
38962
+ *
38963
+ * THE RETENTION RULE, and its reasoning. After every settled verdict the cache
38964
+ * is DEDUPED, not emptied: `update.zip` and `pending/<artifact>.zip` are the
38965
+ * same bytes, and only one of them has future value - `update.zip`, the
38966
+ * differential base the next download patches against (`MacUpdater` copies
38967
+ * every download to it, and falls back to a FULL download without it). So:
38968
+ * when `update.zip` exists, the pending artifact and the `update-info.json`
38969
+ * that describes it go (the bytes survive in the base), and when it does not,
38970
+ * nothing is deleted - there is nothing to dedupe, and the pending artifact is
38971
+ * the only copy. The retention window is bounded by the next download, which
38972
+ * overwrites the base in place; there is deliberately NO day-count constant,
38973
+ * because a clock cannot tell a live delta base from a dead one and would
38974
+ * either delete the base the next update needs or count forever on an idle
38975
+ * machine. ROLLBACK STORY: nothing here is a rollback artifact - `update.zip`
38976
+ * cannot be installed by itself, and the app's reinstall and recovery paths
38977
+ * re-fetch from the feed; the retained copy exists for the next update's
38978
+ * DELTA (worth ~180 MB of transfer), not for restoring anything older.
38979
+ *
38980
+ * SAFETY RAILS, re-asked at the point of deletion rather than trusted from the
38981
+ * caller: the three branches that call this have already decided the install
38982
+ * is not in flight, but the machine is asked ONCE more - a live marker, a
38983
+ * running installer, or a relaunch watchdog that is still OURS all mean
38984
+ * something else may still be reading this cache, and the reap stands down
38985
+ * with a log line. A registered-but-idle ShipIt job is NOT one of those
38986
+ * signals (the 0.17.0 lessons: the job outlives finished installs by design),
38987
+ * and the in-flight branch above NEVER calls here.
38988
+ */
38989
+ reapUpdaterCache() {
38990
+ const note = (message) => logger.info(message, LogFileType.UPDATE_SERVICE);
38991
+ const marker = readPendingInstallMarker(this.markerDir());
38992
+ const liveness = this.installLiveness(marker);
38993
+ if (liveness.installerRunning || marker !== null && isInstallInFlight({
38994
+ marker,
38995
+ jobState: liveness.jobState,
38996
+ installerRunning: liveness.installerRunning
38997
+ })) {
38998
+ note(
38999
+ "Not reaping the updater cache: the machine still reports an install in flight."
39000
+ );
39001
+ return;
39002
+ }
39003
+ const watchdogPid = marker?.watchdogPid ?? null;
39004
+ if (watchdogPid != null) {
39005
+ const commandLine = readCommandOutput("/bin/ps", [
39006
+ "-o",
39007
+ "command=",
39008
+ "-p",
39009
+ String(watchdogPid)
39010
+ ]);
39011
+ if (watchdogIsOurs({
39012
+ alive: commandLine != null,
39013
+ commandLine,
39014
+ installSucceeded: true
39015
+ })) {
39016
+ note(
39017
+ `Not reaping the updater cache while relaunch watchdog ${watchdogPid} is still running.`
39018
+ );
39019
+ return;
39020
+ }
39021
+ }
39022
+ const root = this.updaterCacheRoot();
39023
+ if (!root) {
39024
+ note("Updater cache not reaped: its directory could not be resolved.");
39025
+ return;
39026
+ }
39027
+ const base = path$1.join(root, "update.zip");
39028
+ if (!fs.existsSync(base)) {
39029
+ note(
39030
+ "Updater cache left alone: no differential base to dedupe the pending artifact against."
39031
+ );
39032
+ return;
39033
+ }
39034
+ const pendingDir = path$1.join(root, "pending");
39035
+ if (!fs.existsSync(pendingDir)) return;
39036
+ for (const entry of fs.readdirSync(pendingDir)) {
39037
+ if (!UPDATER_CACHE_PENDING_FILE_REGEX.test(entry) && entry !== "update-info.json")
39038
+ continue;
39039
+ const target2 = path$1.join(pendingDir, entry);
39040
+ try {
39041
+ fs.rmSync(target2, { force: true });
39042
+ note(
39043
+ `Reaped the updater cache's duplicate of the differential base: ${target2}.`
39044
+ );
39045
+ } catch (error) {
39046
+ logger.warn(
39047
+ `Could not reap ${target2}: ${String(error)}`,
39048
+ LogFileType.UPDATE_SERVICE
39049
+ );
39050
+ }
39051
+ }
39052
+ }
38731
39053
  /**
38732
39054
  * Both of the machine's liveness answers for this marker.
38733
39055
  *
@@ -43859,6 +44181,7 @@ const backendInstaller = new BackendInstaller({
43859
44181
  // (`./relaunch-pending` owns why scheduling happens only at the terminal).
43860
44182
  onQuitCancelled: () => {
43861
44183
  quitState.cancel();
44184
+ quitExitDeadline.release();
43862
44185
  relaunchPending.clear();
43863
44186
  }
43864
44187
  });
@@ -44178,6 +44501,22 @@ electron.app.whenReady().then(async () => {
44178
44501
  process.on(signal, () => endHeadlessRun(`received ${signal}`));
44179
44502
  }
44180
44503
  }
44504
+ if (windowLaunch.mode !== "headless") {
44505
+ const onSigtermDuringQuit = () => {
44506
+ if (!quitState.isQuitting()) {
44507
+ process.removeListener("SIGTERM", onSigtermDuringQuit);
44508
+ process.kill(process.pid, "SIGTERM");
44509
+ return;
44510
+ }
44511
+ logger.info(
44512
+ "Received SIGTERM during a quit; exiting so the quit reaches its terminal (an update installer may be waiting on this pid).",
44513
+ LogFileType.BACKEND
44514
+ );
44515
+ scheduleReopenAtQuitTerminal();
44516
+ electron.app.exit(0);
44517
+ };
44518
+ process.on("SIGTERM", onSigtermDuringQuit);
44519
+ }
44181
44520
  electron.app.on("browser-window-created", (_, window) => {
44182
44521
  utils.optimizer.watchWindowShortcuts(window);
44183
44522
  });
@@ -45184,7 +45523,22 @@ const scheduleReopenAtQuitTerminal = () => {
45184
45523
  }
45185
45524
  });
45186
45525
  };
45526
+ const QUIT_EXIT_DEADLINE_MS = quitExitDeadlineMs({
45527
+ quitCleanupFailsafeMs: QUIT_CLEANUP_FAILSAFE_MS
45528
+ });
45529
+ const quitExitDeadline = createQuitExitDeadline({
45530
+ timeoutMs: QUIT_EXIT_DEADLINE_MS,
45531
+ onFire: (firedInStage) => {
45532
+ logger.error(
45533
+ `The quit did not finish within ${QUIT_EXIT_DEADLINE_MS} ms (stalled ${firedInStage}); exiting with failure so the process cannot sit alive with no window`,
45534
+ LogFileType.BACKEND
45535
+ );
45536
+ scheduleReopenAtQuitTerminal();
45537
+ electron.app.exit(1);
45538
+ }
45539
+ });
45187
45540
  electron.app.on("will-quit", (event) => {
45541
+ quitExitDeadline.phase("will-quit");
45188
45542
  viewerEndpoint?.close();
45189
45543
  viewerRecord?.stop();
45190
45544
  scheduleReopenAtQuitTerminal();
@@ -45224,6 +45578,7 @@ const holdQuitForSessionCookieSnapshot = createSessionCookieQuitHold({
45224
45578
  });
45225
45579
  electron.app.on("before-quit", async (event) => {
45226
45580
  quitState.begin();
45581
+ quitExitDeadline.arm("before the session-cookie hold");
45227
45582
  electron.globalShortcut.unregisterAll();
45228
45583
  miniViewRegistrar?.dispose();
45229
45584
  quickSendWatcher?.stop();
@@ -45233,6 +45588,7 @@ electron.app.on("before-quit", async (event) => {
45233
45588
  armHeadlessExitDeadline("the app is quitting");
45234
45589
  }
45235
45590
  if (await holdQuitForSessionCookieSnapshot(event)) return;
45591
+ quitExitDeadline.phase("after the session-cookie hold");
45236
45592
  logger.info("App is about to quit", LogFileType.BACKEND);
45237
45593
  if (!backendService.isOwnedCleanupComplete()) {
45238
45594
  try {
@@ -45253,6 +45609,7 @@ electron.app.on("before-quit", async (event) => {
45253
45609
  }
45254
45610
  activeUpdateService?.quitForInFlightInstall("app quit");
45255
45611
  void stopBrowserHost();
45612
+ quitExitDeadline.phase("awaiting the window close");
45256
45613
  });
45257
45614
  process.on("exit", () => {
45258
45615
  try {
@@ -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-CqMuzMm5.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-DWBeiNZ0.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-DF-R-zk_.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-DUwwjyuA.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-DWBeiNZ0.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-DUwwjyuA.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{r as E,j as e,c as J}from"./index-DYPQY4Aq.js";import{l as he,c as xe,u as ge,d as je,g as fe,i as pe,a as ye,b as ve,e as we}from"./use-memberships-query-DB9G-4zz.js";import{aH as ie,u as K,aN as C,aO as O,ay as Y,aP as Q,aQ as re,aR as oe,aS as be,az as Ce,aT as Ne,aU as ee,ax as Ae,aV as ke,aW as Se}from"./conversation-input-sync-BIBmcJ7f.js";import{c as De,L as Te,T as te,B as o,S as I,a as le,b as L,d as M,e as w,X as Ee,f as b,A as se,g as ae,h as ne}from"./error-boundary-XLnRMwpt.js";import{f as H,h as Fe,u as _e,i as Pe,a as qe,b as ze,c as Le,O as Me,H as Ie,A as Ke}from"./use-download-agent-mutation-DtMK1HJL.js";import{S as Oe,a as Qe,A as Ue,b as Be,c as Re}from"./index-CMmcCNTr.js";import"./ui-preferences-store-B23VrKBG.js";import"./en-US-BcB1DWxG.js";import"./book-open--Rkaye1b.js";import"./console-mirror-m4iYesBg.js";/**
1
+ import{r as E,j as e,c as J}from"./index-CMRW4pU4.js";import{l as he,c as xe,u as ge,d as je,g as fe,i as pe,a as ye,b as ve,e as we}from"./use-memberships-query-B__m4YCP.js";import{aH as ie,u as K,aN as C,aO as O,ay as Y,aP as Q,aQ as re,aR as oe,aS as be,az as Ce,aT as Ne,aU as ee,ax as Ae,aV as ke,aW as Se}from"./conversation-input-sync-jHBqtt9M.js";import{c as De,L as Te,T as te,B as o,S as I,a as le,b as L,d as M,e as w,X as Ee,f as b,A as se,g as ae,h as ne}from"./error-boundary-DexrfAEk.js";import{f as H,h as Fe,u as _e,i as Pe,a as qe,b as ze,c as Le,O as Me,H as Ie,A as Ke}from"./use-download-agent-mutation-CfvFFmrZ.js";import{S as Oe,a as Qe,A as Ue,b as Be,c as Re}from"./index-BXFAcfHW.js";import"./ui-preferences-store-DNhiasP6.js";import"./en-US-BcB1DWxG.js";import"./book-open-Cpx7b4xU.js";import"./console-mirror-BEedSAfE.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{r as l,j as e,c as I}from"./index-DYPQY4Aq.js";import{aR as qe,aN as pe,aT as _e,aH as be,aI as Ss,u as Cs,aO as Ps,bH as Rs,aP as As,a8 as te,bI as _s,aA as Ue,az as je,aX as He,bJ as ae,bK as Os,bh as Es,a as Is,bL as $s,a$ as Fs,bM as Ls}from"./conversation-input-sync-BIBmcJ7f.js";import{P as Ms}from"./page-header-Diz2YHGd.js";import{c as Ve,f as K,B as y,e as f,r as zs,A as G,g as X,h as Z,I as Qe,N as Ds,O as Bs,P as qs,Q as Us,s as Oe,t as Ee,u as Ie,v as $e,w as Fe}from"./error-boundary-XLnRMwpt.js";import{e as Hs,f as Vs,p as Ye,P as We,h as Qs,j as Ys,k as Ke,b as Ws,m as Ks}from"./use-memberships-query-DB9G-4zz.js";import{h as V,O as Gs,A as Xs,f as Zs,H as Js,a as et,b as st,c as tt,d as Ge,C as at,e as nt,n as it,u as rt,i as lt}from"./use-download-agent-mutation-DtMK1HJL.js";import{c as ct,ar as ot,aq as dt,as as ut,at as mt}from"./index-CMmcCNTr.js";import{R as Xe}from"./radient-auth-buttons-DDmeFhYp.js";import{o as Ze,u as ht,a as xt,b as gt}from"./org-surface-gate-DCi6_C8i.js";import{f as ft}from"./format-CZUObkkr.js";import"./ui-preferences-store-B23VrKBG.js";import"./en-US-BcB1DWxG.js";import"./book-open--Rkaye1b.js";import"./console-mirror-m4iYesBg.js";/**
1
+ import{r as l,j as e,c as I}from"./index-CMRW4pU4.js";import{aR as qe,aN as pe,aT as _e,aH as be,aI as Ss,u as Cs,aO as Ps,bH as Rs,aP as As,a8 as te,bI as _s,aA as Ue,az as je,aX as He,bJ as ae,bK as Os,bh as Es,a as Is,bL as $s,a$ as Fs,bM as Ls}from"./conversation-input-sync-jHBqtt9M.js";import{P as Ms}from"./page-header-Ce0OVEd3.js";import{c as Ve,f as K,B as y,e as f,r as zs,A as G,g as X,h as Z,I as Qe,N as Ds,O as Bs,P as qs,Q as Us,s as Oe,t as Ee,u as Ie,v as $e,w as Fe}from"./error-boundary-DexrfAEk.js";import{e as Hs,f as Vs,p as Ye,P as We,h as Qs,j as Ys,k as Ke,b as Ws,m as Ks}from"./use-memberships-query-B__m4YCP.js";import{h as V,O as Gs,A as Xs,f as Zs,H as Js,a as et,b as st,c as tt,d as Ge,C as at,e as nt,n as it,u as rt,i as lt}from"./use-download-agent-mutation-CfvFFmrZ.js";import{c as ct,ar as ot,aq as dt,as as ut,at as mt}from"./index-BXFAcfHW.js";import{R as Xe}from"./radient-auth-buttons-COiSnA2S.js";import{o as Ze,u as ht,a as xt,b as gt}from"./org-surface-gate-BblILKma.js";import{f as ft}from"./format-CZUObkkr.js";import"./ui-preferences-store-DNhiasP6.js";import"./en-US-BcB1DWxG.js";import"./book-open-Cpx7b4xU.js";import"./console-mirror-BEedSAfE.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.