local-operator-ui 0.26.11 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/out/main/index.js +329 -30
  2. package/out/preload/index.js +15 -1
  3. package/out/renderer/assets/{_basePickBy-KgTp-VQT.js → _basePickBy-Bc8mqN6i.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-CBruFUKN.js → _baseUniq-CJFnmQVQ.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-DUJWr0nk.js → agent-details-page-DkshJZak.js} +1 -1
  6. package/out/renderer/assets/{agent-hub-page-CUOpdBbY.js → agent-hub-page-BNgJSDD-.js} +1 -1
  7. package/out/renderer/assets/{agents-page-BndyKDDa.js → agents-page-CZhbc7M_.js} +2 -2
  8. package/out/renderer/assets/{arc-B0tfb9xr.js → arc-_VNZ7Lk1.js} +1 -1
  9. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CmF_gkgw.js → architectureDiagram-IEHRJDOE-DTpnyiCl.js} +1 -1
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-DFxDxf9Z.js → blockDiagram-JOT3LUYC-WRMQhKcT.js} +1 -1
  11. package/out/renderer/assets/browser-page-DxvaF_od.js +1 -0
  12. package/out/renderer/assets/{c4Diagram-VJAJSXHY-C9nU4OeA.js → c4Diagram-VJAJSXHY-Dqr2t_SX.js} +1 -1
  13. package/out/renderer/assets/channel-DWyvkgwR.js +1 -0
  14. package/out/renderer/assets/{chunk-4BMEZGHF-D_Fu4H98.js → chunk-4BMEZGHF-VrQLaWOX.js} +1 -1
  15. package/out/renderer/assets/{chunk-A2AXSNBT-COW6Bwe4.js → chunk-A2AXSNBT-JbtRYOmY.js} +1 -1
  16. package/out/renderer/assets/{chunk-AEK57VVT-BaUp98R9.js → chunk-AEK57VVT-D5ZhImUH.js} +1 -1
  17. package/out/renderer/assets/{chunk-D6G4REZN-57U3-Inw.js → chunk-D6G4REZN-DUc5G8Qu.js} +1 -1
  18. package/out/renderer/assets/{chunk-RZ5BOZE2-js60eu5h.js → chunk-RZ5BOZE2-torZvZ85.js} +1 -1
  19. package/out/renderer/assets/{chunk-XZIHB7SX-QmHaQSs-.js → chunk-XZIHB7SX-CkRX9XJ3.js} +1 -1
  20. package/out/renderer/assets/classDiagram-GIVACNV2-CjbYXD4Y.js +1 -0
  21. package/out/renderer/assets/classDiagram-v2-COTLJTTW-CjbYXD4Y.js +1 -0
  22. package/out/renderer/assets/clone-BLuae6Q5.js +1 -0
  23. package/out/renderer/assets/{compact-pagination-DQbBnfcl.js → compact-pagination-C8j5ZOjD.js} +1 -1
  24. package/out/renderer/assets/{dagre-OKDRZEBW-DEqgIkU3.js → dagre-OKDRZEBW-BeSeozND.js} +1 -1
  25. package/out/renderer/assets/{diagram-SSKATNLV-CxNz5VAB.js → diagram-SSKATNLV-B1DwVFDf.js} +1 -1
  26. package/out/renderer/assets/{diagram-VNBRO52H-D3135Hkb.js → diagram-VNBRO52H-D-c30ym_.js} +1 -1
  27. package/out/renderer/assets/{erDiagram-Q7BY3M3F-BfzTxXev.js → erDiagram-Q7BY3M3F-DIssMOat.js} +1 -1
  28. package/out/renderer/assets/{flowDiagram-4HSFHLVR-BxSKbFg3.js → flowDiagram-4HSFHLVR-CdTNf2L5.js} +1 -1
  29. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BchpAsol.js → ganttDiagram-APWFNJXF-DGl__V69.js} +1 -1
  30. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-ChpYzyhP.js → gitGraphDiagram-7IBYFJ6S-CDEvouMR.js} +1 -1
  31. package/out/renderer/assets/{graph-BaM2-R0j.js → graph-DcplOFs2.js} +1 -1
  32. package/out/renderer/assets/icon-DITfm2jL.css +1 -0
  33. package/out/renderer/assets/{index-C1rZmxpR.js → index-BRiWNQSn.js} +1 -1
  34. package/out/renderer/assets/{index-Ba829AeI.js → index-DDuEnqhv.js} +390 -383
  35. package/out/renderer/assets/{index-B6O3fd1b.js → index-DrNa2kYY.js} +1 -1
  36. package/out/renderer/assets/{infoDiagram-PH2N3AL5-BViCBjXE.js → infoDiagram-PH2N3AL5-Fj0-QRyo.js} +1 -1
  37. package/out/renderer/assets/{installer-4h4LLMom.js → installer-C5Cni-NB.js} +1 -1
  38. package/out/renderer/assets/{journeyDiagram-U35MCT3I-Byhicd-h.js → journeyDiagram-U35MCT3I-DuqPXQA0.js} +1 -1
  39. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-B0cmwkRj.js → kanban-definition-NDS4AKOZ-BNm-Nc45.js} +1 -1
  40. package/out/renderer/assets/{layout-DOYNFXjp.js → layout-Bf7tY41L.js} +1 -1
  41. package/out/renderer/assets/{legacy-agents-page-BqQPW3EG.js → legacy-agents-page-Zsh4wkfD.js} +1 -1
  42. package/out/renderer/assets/{mermaid.core-BfATCTCs.js → mermaid.core-ovJ-Ftst.js} +5 -5
  43. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-CvOg65nu.js → mindmap-definition-ALO5MXBD-DeoEktqp.js} +1 -1
  44. package/out/renderer/assets/{page-header-btUpACRL.js → page-header-dhdkzSOM.js} +1 -1
  45. package/out/renderer/assets/{parseISO-Cs1q9DA1.js → parseISO-X5g1SrZ4.js} +1 -1
  46. package/out/renderer/assets/{pieDiagram-IB7DONF6-C23O9t5a.js → pieDiagram-IB7DONF6-DZVzWOqr.js} +1 -1
  47. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-B7f-I3sq.js → quadrantDiagram-7GDLP6J5-C3XUFEBW.js} +1 -1
  48. package/out/renderer/assets/{radar-MK3ICKWK-BAeYnhMg.js → radar-MK3ICKWK-BUR-aXwF.js} +1 -1
  49. package/out/renderer/assets/{radient-auth-buttons-L_-moF-c.js → radient-auth-buttons-BQxlFLQk.js} +1 -1
  50. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CftPQIJT.js → requirementDiagram-KVF5MWMF-BToLYBNy.js} +1 -1
  51. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-BA6y-aUP.js → sankeyDiagram-QLVOVGJD-DnLYPQYY.js} +1 -1
  52. package/out/renderer/assets/{schedules-page-DuQNQrbM.js → schedules-page-BzekBI69.js} +1 -1
  53. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-mn2OTt1l.js → sequenceDiagram-X6HHIX6F--PfZO0A5.js} +1 -1
  54. package/out/renderer/assets/{settings-page-2AiwDdNt.js → settings-page-A2CdEifL.js} +1 -1
  55. package/out/renderer/assets/{stateDiagram-DGXRK772-kvvEEIAQ.js → stateDiagram-DGXRK772-D5HQXkE9.js} +1 -1
  56. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Dy6Q4aId.js +1 -0
  57. package/out/renderer/assets/{timeline-definition-BDJGKUSR-DM3pQ5My.js → timeline-definition-BDJGKUSR-BqRqVKHe.js} +1 -1
  58. package/out/renderer/assets/{use-agent-like-mutation-CQ4d8RPj.js → use-agent-like-mutation-CznWOMhh.js} +1 -1
  59. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Co-jAGyd.js → xychartDiagram-VJFVF3MP-Co3C9GP-.js} +1 -1
  60. package/out/renderer/index.html +3 -3
  61. package/out/renderer/installer.html +3 -3
  62. package/package.json +2 -2
  63. package/out/renderer/assets/browser-page-B8OTBLip.js +0 -1
  64. package/out/renderer/assets/channel-Bt6xK8L7.js +0 -1
  65. package/out/renderer/assets/classDiagram-GIVACNV2-Ch-QbDW6.js +0 -1
  66. package/out/renderer/assets/classDiagram-v2-COTLJTTW-Ch-QbDW6.js +0 -1
  67. package/out/renderer/assets/clone-CIWrRoUX.js +0 -1
  68. package/out/renderer/assets/icon-DTjgDw4E.css +0 -1
  69. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CZ3jPqhK.js +0 -1
  70. /package/out/renderer/assets/{icon-DuatEuVI.js → icon-CIk6DTWl.js} +0 -0
package/out/main/index.js CHANGED
@@ -1555,6 +1555,7 @@ function desktopEndpoint(request) {
1555
1555
  }
1556
1556
  }
1557
1557
  const MAX_PROBE_PATHS = 64;
1558
+ const DIRECTORY_ENTRY_LIMIT = 200;
1558
1559
  const MAX_FILE_READ_BYTES = 64 * 1024 * 1024;
1559
1560
  const OPEN_SESSION_FLAG = "--open-session";
1560
1561
  const OPEN_CATALOGUE_FLAG = "--open-catalogue";
@@ -4577,7 +4578,7 @@ function compareVersions(a, b) {
4577
4578
  }
4578
4579
  return 0;
4579
4580
  }
4580
- function compareCandidates(a, b, preferredPrefix) {
4581
+ function compareCandidates$1(a, b, preferredPrefix) {
4581
4582
  const sameInstall = (candidate) => preferredPrefix !== null && preferredPrefix !== "" && candidate.record.prefix === preferredPrefix;
4582
4583
  if (sameInstall(a) !== sameInstall(b)) return sameInstall(a) ? -1 : 1;
4583
4584
  if (a.source !== b.source) return a.source === "record" ? -1 : 1;
@@ -4590,7 +4591,7 @@ function compareCandidates(a, b, preferredPrefix) {
4590
4591
  }
4591
4592
  function rankCandidates(candidates, preferredPrefix) {
4592
4593
  return [...candidates].sort(
4593
- (a, b) => compareCandidates(a, b, preferredPrefix)
4594
+ (a, b) => compareCandidates$1(a, b, preferredPrefix)
4594
4595
  );
4595
4596
  }
4596
4597
  async function discoverDaemons(options = {}) {
@@ -10851,6 +10852,10 @@ class TabRegistry {
10851
10852
  // silently reclaim the tab it owned in a previous app run.
10852
10853
  owner: restored ? "user" : options.owner,
10853
10854
  sessionId: restored ? null : options.sessionId ?? null,
10855
+ // The same value `sessionId` gets at creation, kept because a hand-over
10856
+ // overwrites `sessionId` and a revocation has to put the conversation back
10857
+ // (see the field's own note).
10858
+ homeSessionId: restored ? null : options.sessionId ?? null,
10854
10859
  nonce: restored || options.owner === "user" ? null : mintNonce(),
10855
10860
  handedTo: null,
10856
10861
  restored,
@@ -10974,13 +10979,23 @@ class TabRegistry {
10974
10979
  this.onChanged();
10975
10980
  }
10976
10981
  /** Revoke a hand-over: nulls the nonce, so the session's next action on that
10977
- * handle gets the ordinary `tab_closed` refusal. */
10982
+ * handle gets the ordinary `tab_closed` refusal, and puts the tab back in the
10983
+ * conversation the user opened it in.
10984
+ *
10985
+ * THE ATTRIBUTION COMES BACK, NOT JUST THE OWNERSHIP (review round 1, Q2): the
10986
+ * revocation used to null `sessionId` outright, which took the tab out of the
10987
+ * conversation it was opened in (`tabsInScope` reads that field, and so does the
10988
+ * conversation's own tab count) — so revoking a hand-over silently lost the
10989
+ * conversation, and the design's §5.1 row 6 says a revoke is a true inverse. The
10990
+ * ownership and the capability still go, and `mayDrive` still refuses without the
10991
+ * nonce. A tab with no home (the route, a draft, a restored tab) still lands on
10992
+ * `null`, which is the behaviour it always had. */
10978
10993
  revokeHandOver(tabId) {
10979
10994
  const record = this.tabs.get(tabId);
10980
10995
  if (!record) return;
10981
10996
  record.nonce = null;
10982
10997
  record.owner = "user";
10983
- record.sessionId = null;
10998
+ record.sessionId = record.homeSessionId;
10984
10999
  record.handedTo = null;
10985
11000
  record.allocationId = "";
10986
11001
  this.bumpEpoch(record.tabId);
@@ -11082,24 +11097,89 @@ class TabRegistry {
11082
11097
  }
11083
11098
  // ---- removal -------------------------------------------------------------
11084
11099
  /**
11085
- * Drop a tab and hand its webContents id to `onRemove`, which is where the
11086
- * debugger session, the log buffer and the child view are released.
11087
- *
11088
- * `forget` is the registry-local half, used by the fail-closed handle check
11089
- * where the caller has no cleanup work to do (the webContents is already
11090
- * destroyed) and by `destroy` below.
11100
+ * Drop one tab's record WITHOUT notifying: the registry-local half of every removal.
11101
+ *
11102
+ * EXTRACTED FROM `forget` FOR `destroyMany` (design R5), and the split is what makes a
11103
+ * batch one change rather than N: `destroyMany` drops every record first, then runs
11104
+ * ONE `applyLayout()` and ONE `onChanged()`, and the notify-free half is the only way
11105
+ * to do that without N full state builds, N IPC broadcasts and N `session.json`
11106
+ * writes — which is what N sequential closes cost today (`host.closeTab` →
11107
+ * `registry.destroy` → `onChanged` per tab).
11091
11108
  */
11092
- forget(tabId) {
11109
+ drop(tabId) {
11093
11110
  const record = this.tabs.get(tabId);
11094
11111
  if (!record) return void 0;
11095
11112
  this.tabs.delete(tabId);
11096
11113
  if (this.activeTabId === tabId) {
11097
11114
  this.activeTabId = this.list().filter((candidate) => candidate.owner === "user").at(-1)?.tabId ?? null;
11098
11115
  }
11116
+ return record;
11117
+ }
11118
+ /**
11119
+ * Drop a tab and hand its webContents id to `onRemove`, which is where the
11120
+ * debugger session, the log buffer and the child view are released.
11121
+ *
11122
+ * `forget` is the registry-local half PLUS the notification: `drop` above removes the
11123
+ * record, and this runs the one `applyLayout()`/`onChanged()` pair every single-tab
11124
+ * removal has always run. It is what `destroy` below and the fail-closed handle check
11125
+ * use (where the caller has no cleanup work to do — the webContents is already
11126
+ * destroyed), while `destroyMany` uses `drop` for the same reason one level down: it
11127
+ * wants N removals under ONE notification rather than N of each.
11128
+ *
11129
+ * WHAT IT IS NOT, because this file is where a reader learns which removal path
11130
+ * notifies and it used to say the opposite of `drop`'s note (review round 1, A8):
11131
+ * `forget` is NOT the registry-local half — `drop` above is — and a caller that wants
11132
+ * the removal without the notification wants `drop`.
11133
+ */
11134
+ forget(tabId) {
11135
+ const record = this.drop(tabId);
11136
+ if (!record) return void 0;
11099
11137
  this.applyLayout();
11100
11138
  this.onChanged();
11101
11139
  return record;
11102
11140
  }
11141
+ /**
11142
+ * Close SEVERAL tabs as one change: the registry half of the renderer's bulk closes
11143
+ * (design R5).
11144
+ *
11145
+ * WHY ONE INTENT RATHER THAN N `destroy` CALLS, in the order the design weighs it:
11146
+ *
11147
+ * 1. "Close all tabs in this conversation" cannot be expressed as a list without
11148
+ * racing. A list computed from a projection the renderer read up to seconds ago
11149
+ * misses a tab an agent opened in that conversation in the meantime, and the user
11150
+ * pressed something that said ALL. (The renderer resolves that mode HERE, at
11151
+ * execution time, for exactly this reason.)
11152
+ * 2. N round trips are N full `chromeState()` builds, N IPC broadcasts and N
11153
+ * `session.json` writes, each of which re-renders the strip. A batch is one of
11154
+ * each.
11155
+ * 3. `destroy` is synchronous and the chrome's closes do not take the per-tab lane
11156
+ * (`registry.lane` is the dispatcher's), so there is no interleaving to reason
11157
+ * about within one intent — and N separate intents are N separate windows in which
11158
+ * an agent can create a tab. One intent, one window, one decision.
11159
+ *
11160
+ * IDS THAT ARE ALREADY GONE ARE SKIPPED RATHER THAN REFUSED: the user's intent was
11161
+ * that they be closed, and they are. Refusing the batch because one tab was closed
11162
+ * twice — by a second press, or by an agent's own `close` — would leave the other
11163
+ * tabs open, which is the one outcome nobody asked for.
11164
+ *
11165
+ * `onRemove` STILL RUNS PER RECORD and after the single notification, so the
11166
+ * webContents/debugger/log release path stays the single one it has always been
11167
+ * (design 11.1: with `WebContentsView`, nothing destroys the webContents for you).
11168
+ */
11169
+ destroyMany(tabIds) {
11170
+ const removed = [];
11171
+ for (const tabId of tabIds) {
11172
+ const record = this.drop(tabId);
11173
+ if (record) removed.push(record);
11174
+ }
11175
+ if (removed.length === 0) return 0;
11176
+ this.applyLayout();
11177
+ this.onChanged();
11178
+ for (const record of removed) {
11179
+ this.onRemove(record.tabId, record.view.webContents.id);
11180
+ }
11181
+ return removed.length;
11182
+ }
11103
11183
  /** Destroy a tab: forget it, then release its resources. `onRemove` is
11104
11184
  * called for every removal path so a tab can never be forgotten while its
11105
11185
  * webContents, debugger session or log buffer leak (design 11.1: with
@@ -11716,10 +11796,15 @@ class BrowserHost {
11716
11796
  owner: entry.owner,
11717
11797
  // WHICH CONVERSATION THIS TAB BELONGS TO, and the ONLY new field this
11718
11798
  // change adds to the wire. `null` is a real and common value — a restored
11719
- // tab is nobody's (`registry.ts:231`), a user tab that was never handed
11720
- // over is nobody's, and a tab handed back goes back to `null` (`:386`) —
11721
- // and it means "not any conversation's", which is why a conversation's
11722
- // scope shows it under no scope but `"all"` (spec 7.2).
11799
+ // tab is nobody's (`registry.ts:231`), a user tab never handed over and
11800
+ // opened from the route or a draft is nobody's — and it means "not any
11801
+ // conversation's", which is why a conversation's scope shows it under no
11802
+ // scope but `"all"` (spec 7.2).
11803
+ //
11804
+ // A TAB HANDED BACK KEEPS ITS CONVERSATION (review round 1, Q2):
11805
+ // revocation restores `homeSessionId` rather than writing `null`, so the
11806
+ // field is "which conversation this belongs to", not "which session is
11807
+ // driving it" — the second question is `handedOver` and `owner`.
11723
11808
  sessionId: entry.sessionId,
11724
11809
  active: entry.active,
11725
11810
  restored: entry.restored,
@@ -11791,10 +11876,32 @@ class BrowserHost {
11791
11876
  }))
11792
11877
  };
11793
11878
  }
11794
- /** A user tab: created active, at about:blank, owned by the user and with no
11795
- * capability until the user hands it over (design 6.1, 6.3). */
11796
- async newTab() {
11797
- const record = this.registry.create({ owner: "user" });
11879
+ /**
11880
+ * A user tab: created active, at about:blank, owned by the user and with no
11881
+ * capability until the user hands it over (design 6.1, 6.3).
11882
+ *
11883
+ * ATTRIBUTED TO THE CONVERSATION IT WAS OPENED FROM when it has one (design R1).
11884
+ * That is the whole of the main-process half and it takes no new mechanism:
11885
+ * `registry.create` already stores a non-restored tab's `sessionId`
11886
+ * (`registry.ts:231`) and already leaves every user tab's `nonce` null (`:232`).
11887
+ *
11888
+ * WHY THIS CHANGES NO CAPABILITY, and the test that pins it
11889
+ * (`scripts/browser-host.test.mjs`): `mayDrive` requires the session id AND a
11890
+ * nonce (`registry.ts:395-397`), and this tab has the first and not the second, so
11891
+ * an agent in that conversation still cannot drive a tab the user opened. The
11892
+ * `tabs` listing redacts its handle, `agentTabCount()` filters on `owner` and is
11893
+ * unmoved, the agent cap is unmoved, and hand-over stays the only authority
11894
+ * transfer.
11895
+ *
11896
+ * Before this, all three ways a user could open a tab produced one the pane's
11897
+ * "This conversation" scope would never show, because the scope filter reads this
11898
+ * one field.
11899
+ */
11900
+ async newTab(sessionId2) {
11901
+ const record = this.registry.create({
11902
+ owner: "user",
11903
+ sessionId: sessionId2 ?? null
11904
+ });
11798
11905
  await record.view.webContents.loadURL("about:blank");
11799
11906
  await this.cdp.attach(record.view.webContents);
11800
11907
  this.onChanged();
@@ -11807,6 +11914,32 @@ class BrowserHost {
11807
11914
  this.onChanged();
11808
11915
  return this.chromeState();
11809
11916
  }
11917
+ /**
11918
+ * Close several tabs as ONE intent (design R5): resolve it, close them, notify once.
11919
+ *
11920
+ * TWO MODES RATHER THAN ONE LIST, and the difference is the race the design names:
11921
+ *
11922
+ * - `ids` is positional — "these tabs, the ones I could see" — and main closes
11923
+ * exactly those, skipping any that are already gone. A tab an agent opened after the
11924
+ * press is not in the list and survives, which the strip then shows honestly.
11925
+ * - `conversation` is resolved HERE, at execution time, against the live registry. A
11926
+ * list computed from a projection the renderer read seconds ago (the band stays open
11927
+ * while the user reads it) would miss a tab an agent opened in that conversation in
11928
+ * the meantime — and the user pressed something that said ALL.
11929
+ *
11930
+ * ONE `onChanged()` EITHER WAY, which is the whole point of `registry.destroyMany`: N
11931
+ * closes are N full `chromeState()` builds, N IPC broadcasts, N renderer re-reads and
11932
+ * N `session.json` writes.
11933
+ */
11934
+ closeTabs(intent) {
11935
+ const tabIds = intent.mode === "ids" ? intent.tabIds : this.registry.list().filter((record) => record.sessionId === intent.sessionId).map((record) => record.tabId);
11936
+ for (const tabId of tabIds) {
11937
+ this.dropReceipt(tabId);
11938
+ this.loadFailures.delete(tabId);
11939
+ }
11940
+ this.registry.destroyMany(tabIds);
11941
+ return this.chromeState();
11942
+ }
11810
11943
  /**
11811
11944
  * Re-create the tabs a previous run recorded (design 7).
11812
11945
  *
@@ -12094,6 +12227,7 @@ const BROWSER_IPC_CHANNELS = [
12094
12227
  "browser-state",
12095
12228
  "browser-new-tab",
12096
12229
  "browser-close-tab",
12230
+ "browser-close-tabs",
12097
12231
  "browser-activate-tab",
12098
12232
  "browser-navigate",
12099
12233
  "browser-reload",
@@ -12120,11 +12254,18 @@ function registerBrowserIpc(options) {
12120
12254
  return host;
12121
12255
  }
12122
12256
  electron.ipcMain.handle("browser-state", (event) => authorize(event).chromeState());
12123
- electron.ipcMain.handle("browser-new-tab", async (event) => authorize(event).newTab());
12257
+ electron.ipcMain.handle("browser-new-tab", async (event, sessionId2) => {
12258
+ const host = authorize(event);
12259
+ return host.newTab(optionalConversationOrThrow(sessionId2));
12260
+ });
12124
12261
  electron.ipcMain.handle("browser-close-tab", (event, tabId) => {
12125
12262
  const host = authorize(event);
12126
12263
  return host.closeTab(numberOrThrow(tabId, "tabId"));
12127
12264
  });
12265
+ electron.ipcMain.handle("browser-close-tabs", (event, intent) => {
12266
+ const host = authorize(event);
12267
+ return host.closeTabs(closeTabsIntentOrThrow(intent));
12268
+ });
12128
12269
  electron.ipcMain.handle("browser-activate-tab", (event, tabId) => {
12129
12270
  const host = authorize(event);
12130
12271
  return host.activateTab(numberOrThrow(tabId, "tabId"));
@@ -12220,6 +12361,38 @@ function numberOrThrow(value, name) {
12220
12361
  }
12221
12362
  return value;
12222
12363
  }
12364
+ function closeTabsIntentOrThrow(value) {
12365
+ if (!value || typeof value !== "object") {
12366
+ throw new Error("A close request is required.");
12367
+ }
12368
+ const intent = value;
12369
+ if (intent.mode === "ids") {
12370
+ if (!Array.isArray(intent.tabIds) || intent.tabIds.length === 0) {
12371
+ throw new Error("Closing tabs by id needs at least one tab id.");
12372
+ }
12373
+ const tabIds = intent.tabIds.map(
12374
+ (tabId) => numberOrThrow(tabId, "each tab id")
12375
+ );
12376
+ return { mode: "ids", tabIds };
12377
+ }
12378
+ if (intent.mode === "conversation") {
12379
+ const sessionId2 = optionalConversationOrThrow(intent.sessionId);
12380
+ if (sessionId2 === null) {
12381
+ throw new Error("Closing a conversation's tabs needs a conversation id.");
12382
+ }
12383
+ return { mode: "conversation", sessionId: sessionId2 };
12384
+ }
12385
+ throw new Error("Unsupported close request.");
12386
+ }
12387
+ function optionalConversationOrThrow(value) {
12388
+ if (value === null || value === void 0) return null;
12389
+ if (typeof value !== "string") {
12390
+ throw new Error("A conversation id must be a string.");
12391
+ }
12392
+ const sessionId2 = value.trim();
12393
+ if (!sessionId2) throw new Error("A conversation id cannot be empty.");
12394
+ return sessionId2;
12395
+ }
12223
12396
  function contentRectOrNull(value) {
12224
12397
  if (value === null || value === void 0) return null;
12225
12398
  if (typeof value !== "object")
@@ -15604,6 +15777,122 @@ function registerDevDriverIPC(options) {
15604
15777
  };
15605
15778
  });
15606
15779
  }
15780
+ const PRUNE_NAMES = [
15781
+ "__pycache__",
15782
+ "node_modules",
15783
+ "dist",
15784
+ "build",
15785
+ ".git",
15786
+ ".venv"
15787
+ ];
15788
+ function excluded(name) {
15789
+ if (name.startsWith(".")) return true;
15790
+ return PRUNE_NAMES.includes(name);
15791
+ }
15792
+ function resolveUserPath$1(filePath, cwd, home) {
15793
+ if (filePath === "~") return home;
15794
+ if (filePath.startsWith("~/")) return path$1.join(home, filePath.slice(2));
15795
+ if (cwd && !filePath.startsWith("/")) {
15796
+ const base = cwd === "~" || cwd.startsWith("~/") ? resolveUserPath$1(cwd, void 0, home) : cwd;
15797
+ return path$1.join(base, filePath);
15798
+ }
15799
+ return filePath;
15800
+ }
15801
+ const DIRECTORY_SCAN_LIMIT = 2e3;
15802
+ const collator = new Intl.Collator();
15803
+ function compareCandidates(a, b) {
15804
+ const display = collator.compare(a.name, b.name);
15805
+ if (display !== 0) return display;
15806
+ return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
15807
+ }
15808
+ function offerCandidate(heap, candidate) {
15809
+ if (heap.length < DIRECTORY_SCAN_LIMIT) {
15810
+ heap.push(candidate);
15811
+ siftUp(heap, heap.length - 1);
15812
+ return true;
15813
+ }
15814
+ if (compareCandidates(candidate, heap[0]) >= 0) return false;
15815
+ heap[0] = candidate;
15816
+ siftDown(heap, 0);
15817
+ return true;
15818
+ }
15819
+ function siftUp(heap, from) {
15820
+ let index = from;
15821
+ while (index > 0) {
15822
+ const parent = index - 1 >> 1;
15823
+ if (compareCandidates(heap[index], heap[parent]) <= 0) return;
15824
+ [heap[parent], heap[index]] = [heap[index], heap[parent]];
15825
+ index = parent;
15826
+ }
15827
+ }
15828
+ function siftDown(heap, from) {
15829
+ let index = from;
15830
+ for (; ; ) {
15831
+ const left = index * 2 + 1;
15832
+ const right = left + 1;
15833
+ let largest = index;
15834
+ if (left < heap.length && compareCandidates(heap[left], heap[largest]) > 0)
15835
+ largest = left;
15836
+ if (right < heap.length && compareCandidates(heap[right], heap[largest]) > 0)
15837
+ largest = right;
15838
+ if (largest === index) return;
15839
+ [heap[largest], heap[index]] = [heap[index], heap[largest]];
15840
+ index = largest;
15841
+ }
15842
+ }
15843
+ async function listDirectory(dir) {
15844
+ try {
15845
+ const candidates = [];
15846
+ let overflow = false;
15847
+ const stream = await promises.opendir(dir);
15848
+ for await (const entry of stream) {
15849
+ if (excluded(entry.name)) continue;
15850
+ if (!offerCandidate(candidates, {
15851
+ name: entry.name,
15852
+ directory: entry.isDirectory(),
15853
+ link: entry.isSymbolicLink()
15854
+ }))
15855
+ overflow = true;
15856
+ }
15857
+ candidates.sort(compareCandidates);
15858
+ const kept = candidates.slice(0, DIRECTORY_ENTRY_LIMIT);
15859
+ const entries = kept.map((candidate) => ({
15860
+ name: candidate.name,
15861
+ directory: candidate.link ? fs.statSync(path$1.join(dir, candidate.name), {
15862
+ throwIfNoEntry: false
15863
+ })?.isDirectory() ?? false : candidate.directory
15864
+ }));
15865
+ return {
15866
+ dir,
15867
+ entries,
15868
+ // Either bound withheld something. `overflow` is the scan cap, which
15869
+ // means the kept set is the smallest ALPHABETICAL
15870
+ // `DIRECTORY_SCAN_LIMIT` names of a directory nobody finished reading —
15871
+ // the same rows a full sort-then-truncate would have answered with — and
15872
+ // the second term is the answer's own `DIRECTORY_ENTRY_LIMIT`-row limit.
15873
+ truncated: overflow || candidates.length > DIRECTORY_ENTRY_LIMIT
15874
+ };
15875
+ } catch (error) {
15876
+ return {
15877
+ dir,
15878
+ entries: [],
15879
+ truncated: false,
15880
+ error: error instanceof Error ? error.message : String(error)
15881
+ };
15882
+ }
15883
+ }
15884
+ function realPathOrNull(path2) {
15885
+ try {
15886
+ return fs.realpathSync(path2);
15887
+ } catch {
15888
+ return null;
15889
+ }
15890
+ }
15891
+ function outsideWorkspace(realTarget, realRoot) {
15892
+ if (realRoot === null) return void 0;
15893
+ if (realTarget === null) return true;
15894
+ return realTarget !== realRoot && !realTarget.startsWith(`${realRoot}${path$1.sep}`);
15895
+ }
15607
15896
  const LAUNCHER_MISSES_BEFORE_GONE = 2;
15608
15897
  function createLauncherWatch(input) {
15609
15898
  const threshold = input.missesBeforeGone ?? LAUNCHER_MISSES_BEFORE_GONE;
@@ -19439,14 +19728,7 @@ class ViewerRecordPublisher {
19439
19728
  }
19440
19729
  }
19441
19730
  const BASE64_FILE_EXTENSIONS = ["csv", "tsv", "xls", "xlsx", "ods"];
19442
- const resolveUserPath = (filePath, cwd) => {
19443
- if (filePath === "~") return electron.app.getPath("home");
19444
- if (filePath.startsWith("~/"))
19445
- return path$1.join(electron.app.getPath("home"), filePath.slice(2));
19446
- if (cwd && !filePath.startsWith("/"))
19447
- return path$1.join(cwd.startsWith("~/") ? resolveUserPath(cwd) : cwd, filePath);
19448
- return filePath;
19449
- };
19731
+ const resolveUserPath = (filePath, cwd) => resolveUserPath$1(filePath, cwd, electron.app.getPath("home"));
19450
19732
  const windowLaunch = resolveWindowLaunchPlan({
19451
19733
  env: launchEnv,
19452
19734
  argv: process.argv,
@@ -20263,18 +20545,28 @@ electron.app.whenReady().then(async () => {
20263
20545
  "probe-files",
20264
20546
  async (_, paths, cwd) => {
20265
20547
  const asked = Array.isArray(paths) ? paths.filter((path2) => typeof path2 === "string") : [];
20548
+ const realRoot = cwd ? realPathOrNull(resolveUserPath(cwd)) : null;
20266
20549
  return asked.slice(0, MAX_PROBE_PATHS).map((input) => {
20267
20550
  let resolved = input;
20268
20551
  try {
20269
20552
  resolved = resolveUserPath(input, cwd);
20270
20553
  const stat = fs.statSync(resolved, { throwIfNoEntry: false });
20554
+ const exists = stat !== void 0;
20271
20555
  return {
20272
20556
  input,
20273
20557
  resolved,
20274
- exists: stat !== void 0,
20558
+ exists,
20275
20559
  isFile: stat?.isFile() ?? false,
20276
20560
  sizeBytes: stat?.isFile() ? stat.size : null,
20277
- mtimeMs: stat?.isFile() ? stat.mtimeMs : null
20561
+ mtimeMs: stat?.isFile() ? stat.mtimeMs : null,
20562
+ /*
20563
+ * The containment verdict, and the reason it is asked ONLY of a path
20564
+ * that exists: the one caller that reads it (the composer's `@` chip)
20565
+ * asks the question about a candidate reference, so a path that is not
20566
+ * there costs no second syscall — and a miss is the common case on the
20567
+ * keystroke path this runs on.
20568
+ */
20569
+ outsideWorkspace: exists ? outsideWorkspace(realPathOrNull(resolved), realRoot) : void 0
20278
20570
  };
20279
20571
  } catch (error) {
20280
20572
  return {
@@ -20290,6 +20582,13 @@ electron.app.whenReady().then(async () => {
20290
20582
  });
20291
20583
  }
20292
20584
  );
20585
+ electron.ipcMain.handle(
20586
+ "list-directory",
20587
+ async (_, dir, cwd) => {
20588
+ const target2 = typeof dir === "string" && dir.length > 0 ? dir : ".";
20589
+ return await listDirectory(resolveUserPath(target2, cwd));
20590
+ }
20591
+ );
20293
20592
  electron.ipcMain.handle(
20294
20593
  "read-file-bytes",
20295
20594
  async (_, filePath, maxBytes = MAX_FILE_READ_BYTES) => {
@@ -268,6 +268,12 @@ const api = {
268
268
  * which is the Files panel's identity for a file.
269
269
  */
270
270
  probeFiles: (paths, cwd) => electron.ipcRenderer.invoke("probe-files", paths, cwd),
271
+ /**
272
+ * One directory's listable entries, for a picker that offers rows from the
273
+ * filesystem. One level per call; deepening is the caller asking again for the
274
+ * directory the user typed a `/` into.
275
+ */
276
+ listDirectory: (dir, cwd) => electron.ipcRenderer.invoke("list-directory", dir, cwd),
271
277
  openExternal: (url) => electron.ipcRenderer.invoke("open-external", url),
272
278
  showItemInFolder: (filePath) => electron.ipcRenderer.invoke("show-item-in-folder", filePath),
273
279
  // System information
@@ -528,8 +534,16 @@ const api = {
528
534
  */
529
535
  browser: {
530
536
  state: () => electron.ipcRenderer.invoke("browser-state"),
531
- newTab: () => electron.ipcRenderer.invoke("browser-new-tab"),
537
+ /** `sessionId` attributes the tab to the conversation it was opened from
538
+ * (design R1); `null` is a tab that belongs to no conversation, which is what
539
+ * the route and a draft pane open. Main validates it rather than trusting it. */
540
+ newTab: (sessionId) => electron.ipcRenderer.invoke("browser-new-tab", sessionId ?? null),
532
541
  closeTab: (tabId) => electron.ipcRenderer.invoke("browser-close-tab", tabId),
542
+ /** A bulk close: `{ mode: "ids", tabIds }` for tabs the user could see, or
543
+ * `{ mode: "conversation", sessionId }` which MAIN resolves at execution time
544
+ * (design R5 — a list computed in the renderer would miss a tab an agent opened
545
+ * while the band was open). Main validates the shape rather than trusting it. */
546
+ closeTabs: (intent) => electron.ipcRenderer.invoke("browser-close-tabs", intent),
533
547
  activateTab: (tabId) => electron.ipcRenderer.invoke("browser-activate-tab", tabId),
534
548
  navigate: (url) => electron.ipcRenderer.invoke("browser-navigate", url),
535
549
  reload: () => electron.ipcRenderer.invoke("browser-reload"),
@@ -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-CBruFUKN.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-BfATCTCs.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-CJFnmQVQ.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-ovJ-Ftst.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-BfATCTCs.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-ovJ-Ftst.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-DuatEuVI.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-Ba829AeI.js";import{u as ve,a as Ce,b as Ne,c as Ae}from"./use-agent-like-mutation-CQ4d8RPj.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-CIk6DTWl.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-DDuEnqhv.js";import{u as ve,a as Ce,b as Ne,c as Ae}from"./use-agent-like-mutation-CznWOMhh.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-DuatEuVI.js";import{C as k}from"./compact-pagination-DQbBnfcl.js";import{P as v}from"./page-header-btUpACRL.js";import{aa as b,am as A,an as h,ao as L,ap as N}from"./index-Ba829AeI.js";import{u as C,a as P,b as w,c as M}from"./use-agent-like-mutation-CQ4d8RPj.js";/**
1
+ import{a as p,j as e,c as j,r as m,S as y}from"./icon-CIk6DTWl.js";import{C as k}from"./compact-pagination-C8j5ZOjD.js";import{P as v}from"./page-header-dhdkzSOM.js";import{aa as b,am as A,an as h,ao as L,ap as N}from"./index-DDuEnqhv.js";import{u as C,a as P,b as w,c as M}from"./use-agent-like-mutation-CznWOMhh.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.