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.
- package/out/main/index.js +329 -30
- package/out/preload/index.js +15 -1
- package/out/renderer/assets/{_basePickBy-KgTp-VQT.js → _basePickBy-Bc8mqN6i.js} +1 -1
- package/out/renderer/assets/{_baseUniq-CBruFUKN.js → _baseUniq-CJFnmQVQ.js} +1 -1
- package/out/renderer/assets/{agent-details-page-DUJWr0nk.js → agent-details-page-DkshJZak.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-CUOpdBbY.js → agent-hub-page-BNgJSDD-.js} +1 -1
- package/out/renderer/assets/{agents-page-BndyKDDa.js → agents-page-CZhbc7M_.js} +2 -2
- package/out/renderer/assets/{arc-B0tfb9xr.js → arc-_VNZ7Lk1.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CmF_gkgw.js → architectureDiagram-IEHRJDOE-DTpnyiCl.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-DFxDxf9Z.js → blockDiagram-JOT3LUYC-WRMQhKcT.js} +1 -1
- package/out/renderer/assets/browser-page-DxvaF_od.js +1 -0
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-C9nU4OeA.js → c4Diagram-VJAJSXHY-Dqr2t_SX.js} +1 -1
- package/out/renderer/assets/channel-DWyvkgwR.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-D_Fu4H98.js → chunk-4BMEZGHF-VrQLaWOX.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-COW6Bwe4.js → chunk-A2AXSNBT-JbtRYOmY.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-BaUp98R9.js → chunk-AEK57VVT-D5ZhImUH.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-57U3-Inw.js → chunk-D6G4REZN-DUc5G8Qu.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-js60eu5h.js → chunk-RZ5BOZE2-torZvZ85.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-QmHaQSs-.js → chunk-XZIHB7SX-CkRX9XJ3.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-CjbYXD4Y.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-CjbYXD4Y.js +1 -0
- package/out/renderer/assets/clone-BLuae6Q5.js +1 -0
- package/out/renderer/assets/{compact-pagination-DQbBnfcl.js → compact-pagination-C8j5ZOjD.js} +1 -1
- package/out/renderer/assets/{dagre-OKDRZEBW-DEqgIkU3.js → dagre-OKDRZEBW-BeSeozND.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-CxNz5VAB.js → diagram-SSKATNLV-B1DwVFDf.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-D3135Hkb.js → diagram-VNBRO52H-D-c30ym_.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-BfzTxXev.js → erDiagram-Q7BY3M3F-DIssMOat.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-BxSKbFg3.js → flowDiagram-4HSFHLVR-CdTNf2L5.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-BchpAsol.js → ganttDiagram-APWFNJXF-DGl__V69.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-ChpYzyhP.js → gitGraphDiagram-7IBYFJ6S-CDEvouMR.js} +1 -1
- package/out/renderer/assets/{graph-BaM2-R0j.js → graph-DcplOFs2.js} +1 -1
- package/out/renderer/assets/icon-DITfm2jL.css +1 -0
- package/out/renderer/assets/{index-C1rZmxpR.js → index-BRiWNQSn.js} +1 -1
- package/out/renderer/assets/{index-Ba829AeI.js → index-DDuEnqhv.js} +390 -383
- package/out/renderer/assets/{index-B6O3fd1b.js → index-DrNa2kYY.js} +1 -1
- package/out/renderer/assets/{infoDiagram-PH2N3AL5-BViCBjXE.js → infoDiagram-PH2N3AL5-Fj0-QRyo.js} +1 -1
- package/out/renderer/assets/{installer-4h4LLMom.js → installer-C5Cni-NB.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-Byhicd-h.js → journeyDiagram-U35MCT3I-DuqPXQA0.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-B0cmwkRj.js → kanban-definition-NDS4AKOZ-BNm-Nc45.js} +1 -1
- package/out/renderer/assets/{layout-DOYNFXjp.js → layout-Bf7tY41L.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-BqQPW3EG.js → legacy-agents-page-Zsh4wkfD.js} +1 -1
- package/out/renderer/assets/{mermaid.core-BfATCTCs.js → mermaid.core-ovJ-Ftst.js} +5 -5
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-CvOg65nu.js → mindmap-definition-ALO5MXBD-DeoEktqp.js} +1 -1
- package/out/renderer/assets/{page-header-btUpACRL.js → page-header-dhdkzSOM.js} +1 -1
- package/out/renderer/assets/{parseISO-Cs1q9DA1.js → parseISO-X5g1SrZ4.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-C23O9t5a.js → pieDiagram-IB7DONF6-DZVzWOqr.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-B7f-I3sq.js → quadrantDiagram-7GDLP6J5-C3XUFEBW.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-BAeYnhMg.js → radar-MK3ICKWK-BUR-aXwF.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-L_-moF-c.js → radient-auth-buttons-BQxlFLQk.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CftPQIJT.js → requirementDiagram-KVF5MWMF-BToLYBNy.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-BA6y-aUP.js → sankeyDiagram-QLVOVGJD-DnLYPQYY.js} +1 -1
- package/out/renderer/assets/{schedules-page-DuQNQrbM.js → schedules-page-BzekBI69.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-mn2OTt1l.js → sequenceDiagram-X6HHIX6F--PfZO0A5.js} +1 -1
- package/out/renderer/assets/{settings-page-2AiwDdNt.js → settings-page-A2CdEifL.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-kvvEEIAQ.js → stateDiagram-DGXRK772-D5HQXkE9.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Dy6Q4aId.js +1 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-DM3pQ5My.js → timeline-definition-BDJGKUSR-BqRqVKHe.js} +1 -1
- package/out/renderer/assets/{use-agent-like-mutation-CQ4d8RPj.js → use-agent-like-mutation-CznWOMhh.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Co-jAGyd.js → xychartDiagram-VJFVF3MP-Co3C9GP-.js} +1 -1
- package/out/renderer/index.html +3 -3
- package/out/renderer/installer.html +3 -3
- package/package.json +2 -2
- package/out/renderer/assets/browser-page-B8OTBLip.js +0 -1
- package/out/renderer/assets/channel-Bt6xK8L7.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-Ch-QbDW6.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-Ch-QbDW6.js +0 -1
- package/out/renderer/assets/clone-CIWrRoUX.js +0 -1
- package/out/renderer/assets/icon-DTjgDw4E.css +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CZ3jPqhK.js +0 -1
- /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 =
|
|
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
|
|
11086
|
-
*
|
|
11087
|
-
*
|
|
11088
|
-
*
|
|
11089
|
-
*
|
|
11090
|
-
*
|
|
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
|
-
|
|
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
|
|
11720
|
-
//
|
|
11721
|
-
//
|
|
11722
|
-
// scope
|
|
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
|
-
/**
|
|
11795
|
-
*
|
|
11796
|
-
|
|
11797
|
-
|
|
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) =>
|
|
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
|
|
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) => {
|
package/out/preload/index.js
CHANGED
|
@@ -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
|
-
|
|
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-
|
|
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ℜ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ℜ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};
|
package/out/renderer/assets/{agent-details-page-DUJWr0nk.js → agent-details-page-DkshJZak.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
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.
|