local-operator-ui 0.31.18 → 0.31.19
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/README.md +24 -0
- package/out/main/index.js +149 -8
- package/out/renderer/assets/{_basePickBy-D1XXNWdy.js → _basePickBy-BjXXwW6E.js} +1 -1
- package/out/renderer/assets/{_baseUniq-DD_DKvaU.js → _baseUniq-xIg3idQF.js} +1 -1
- package/out/renderer/assets/{agent-details-page-Q8dgdQp2.js → agent-details-page-D2QdVqJp.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-CBHsotVj.js → agent-hub-page-BitfELv8.js} +2 -2
- package/out/renderer/assets/agents-page-Cl1j7rwO.js +2 -0
- package/out/renderer/assets/{renderer-platform-RsXXlY5x.js → aida-control-BqbEHtVs.js} +19 -19
- package/out/renderer/assets/{arc-BII0LAll.js → arc-Ceouzeia.js} +1 -1
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-BGSLJh-o.js +36 -0
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BsfIO03o.js → blockDiagram-JOT3LUYC-BmQJgCM-.js} +6 -6
- package/out/renderer/assets/{book-open-Bau36KjM.js → book-open-tLP18D-k.js} +1 -1
- package/out/renderer/assets/browser-page-ChmnhnuO.js +1 -0
- package/out/renderer/assets/browser-webauthn-prompt-k5jzjWeZ.js +1 -0
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-CHKu8u4B.js → c4Diagram-VJAJSXHY-Yk9CQYyQ.js} +1 -1
- package/out/renderer/assets/channel-CoXp_5DQ.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-Do_SeY3I.js → chunk-4BMEZGHF-DizR_fDb.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-C7_NoYUm.js → chunk-A2AXSNBT-BtTz6zUt.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-C3I1E4qy.js → chunk-AEK57VVT-D1a4VfuY.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-BEkTCb-4.js → chunk-D6G4REZN-bed23kTE.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-Ccs-Kaym.js → chunk-RZ5BOZE2-KfGYL-ag.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-Db28vmME.js → chunk-XZIHB7SX-B1igQQgc.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-DLxyNS1q.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-DLxyNS1q.js +1 -0
- package/out/renderer/assets/clone-1ZAhWRhd.js +1 -0
- package/out/renderer/assets/{console-mirror-CUQyeXIE.js → console-mirror-CqlxE8VR.js} +1 -1
- package/out/renderer/assets/{consoleCapture-emgU7WyW.js → consoleCapture-Bgq6O6hd.js} +1 -1
- package/out/renderer/assets/dagre-OKDRZEBW-BlwfTwwA.js +4 -0
- package/out/renderer/assets/diagram-SSKATNLV-jsDlGkgc.js +43 -0
- package/out/renderer/assets/diagram-VNBRO52H-DP8qnarm.js +24 -0
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-BYRglvp5.js → erDiagram-Q7BY3M3F-Tc8DPglp.js} +1 -1
- package/out/renderer/assets/{error-boundary-BFYdHP26.js → error-boundary-X9vF0zez.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-C6ReCJC9.js → flowDiagram-4HSFHLVR-C0iWuz_e.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-CMDShfzg.js → ganttDiagram-APWFNJXF-CXzAhOwO.js} +3 -3
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-c3OKkh69.js +65 -0
- package/out/renderer/assets/{graph-BK-Vf19N.js → graph-BNpclJqw.js} +1 -1
- package/out/renderer/assets/index-BgDCWTEy.js +7 -0
- package/out/renderer/assets/{index-BDPyvriR.js → index-BsveCKct.js} +385 -375
- package/out/renderer/assets/index-D4_JjH_R.js +1 -0
- package/out/renderer/assets/index-R0cHU6YS.css +1 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-C6rpQuUJ.js +2 -0
- package/out/renderer/assets/{installer-DfFRjYBs.js → installer-Durl4Nt6.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-CeBVrNEA.js → journeyDiagram-U35MCT3I-DdWl9wJG.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DnIH3R0V.js → kanban-definition-NDS4AKOZ-D6rkiZvG.js} +1 -1
- package/out/renderer/assets/{layout-IqcTjCQI.js → layout-BQqWsgv9.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-DbLTVwq0.js → legacy-agents-page-xSUV6wUg.js} +3 -3
- package/out/renderer/assets/{mermaid.core-BrRc254F.js → mermaid.core-DLc2GDBk.js} +5 -5
- package/out/renderer/assets/mesh-page-D1Hn61zc.js +2 -0
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-BPp31SFM.js +95 -0
- package/out/renderer/assets/mini-dIYd4lBf.js +1 -0
- package/out/renderer/assets/org-surface-gate-CQZDYvz1.js +1 -0
- package/out/renderer/assets/{page-header-BtO13sx8.js → page-header-Ct_E4hXM.js} +1 -1
- package/out/renderer/assets/{pieDiagram-IB7DONF6-CnRMxjLj.js → pieDiagram-IB7DONF6-InajJAb7.js} +1 -1
- package/out/renderer/assets/{projects-page-BgRRDkEz.js → projects-page-Cq4-43oz.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-bRLUBm5r.js → quadrantDiagram-7GDLP6J5-DllpcIGZ.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-BV3WfB2Y.js → radar-MK3ICKWK-o49sXvJd.js} +1 -1
- package/out/renderer/assets/radient-auth-buttons-DCKuV_IZ.js +1 -0
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Bzqys165.js → requirementDiagram-KVF5MWMF-DEB_P2Er.js} +1 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-1sqsEoj5.js +10 -0
- package/out/renderer/assets/{schedules-page-CbOATI1U.js → schedules-page-D6uKCgBE.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-bfcEv3LN.js → sequenceDiagram-X6HHIX6F-DBKLSCMO.js} +1 -1
- package/out/renderer/assets/settings-page-DuO8dHwe.js +297 -0
- package/out/renderer/assets/{settings-section-BXGO9Lv0.js → settings-section-yg8wX_kN.js} +1 -1
- package/out/renderer/assets/stateDiagram-DGXRK772-CirIxYQ4.js +1 -0
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BektpfMe.js +1 -0
- package/out/renderer/assets/{textarea-B83uQCj2.js → textarea-CPyoWJfR.js} +1 -1
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-BlN_DgVS.js → timeline-definition-BDJGKUSR-HxrDshvA.js} +1 -1
- package/out/renderer/assets/{ui-preferences-store-DzXZGWGz.js → ui-preferences-store-CyKvDymq.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-DrENBWNa.js → use-download-agent-mutation-CJP2OhpP.js} +2 -2
- package/out/renderer/assets/use-memberships-query-Q96GogTV.js +1 -0
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-C1DOS4ES.js → xychartDiagram-VJFVF3MP-BXsPMfju.js} +1 -1
- package/out/renderer/console-capture.html +5 -5
- package/out/renderer/index.html +8 -8
- package/out/renderer/installer.html +5 -5
- package/out/renderer/mini.html +6 -6
- package/package.json +2 -2
- package/out/renderer/assets/agents-page-9zkhLfa8.js +0 -2
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-Yh4i0oDy.js +0 -36
- package/out/renderer/assets/browser-page-CrHmmBk0.js +0 -1
- package/out/renderer/assets/browser-webauthn-prompt-_nNd3iSK.js +0 -1
- package/out/renderer/assets/channel-DXiH5yDB.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-D2MG4USX.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-D2MG4USX.js +0 -1
- package/out/renderer/assets/clone-BDi6ICAs.js +0 -1
- package/out/renderer/assets/dagre-OKDRZEBW-k4D1AM8X.js +0 -4
- package/out/renderer/assets/diagram-SSKATNLV-B0DOtyf9.js +0 -43
- package/out/renderer/assets/diagram-VNBRO52H-BmzuI3Lr.js +0 -24
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-pvPc8CHP.js +0 -65
- package/out/renderer/assets/index-B5DwqFlK.js +0 -7
- package/out/renderer/assets/index-DITdBETY.css +0 -1
- package/out/renderer/assets/index-_oyU7kmX.js +0 -1
- package/out/renderer/assets/infoDiagram-PH2N3AL5-COePE42k.js +0 -2
- package/out/renderer/assets/mesh-page-W9oV_bPF.js +0 -2
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-BMHndK7E.js +0 -95
- package/out/renderer/assets/mini-CbmMlUkq.js +0 -1
- package/out/renderer/assets/org-surface-gate-BgtTWHt3.js +0 -1
- package/out/renderer/assets/radient-auth-buttons-Briy2cZb.js +0 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD--IgSaXgN.js +0 -10
- package/out/renderer/assets/settings-page-Bn87mGZ1.js +0 -307
- package/out/renderer/assets/stateDiagram-DGXRK772-CDJAoYUf.js +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Di7PMVrt.js +0 -1
- package/out/renderer/assets/use-memberships-query-C2Yus1QJ.js +0 -1
- /package/out/renderer/assets/{index-CDaH3A1m.js → index-C17iOszj.js} +0 -0
package/README.md
CHANGED
|
@@ -86,6 +86,30 @@ The Local Operator backend is bundled with the application and is installed auto
|
|
|
86
86
|
|
|
87
87
|
<sub><code>chat</code> — a working agent's tool rows, a blocked risky action, and the question it asked before continuing.</sub>
|
|
88
88
|
|
|
89
|
+
### Subagents
|
|
90
|
+
|
|
91
|
+
| Light | Dark |
|
|
92
|
+
| :---: | :---: |
|
|
93
|
+
| <img src="./resources/readme/subagents-light.webp" alt="Light theme: the run details panel, two subagents running with their elapsed time and cost, a third child queued behind the capacity gate, and the shared to-do list." width="420"> | <img src="./resources/readme/subagents-dark.webp" alt="Dark theme: the same run details panel." width="420"> |
|
|
94
|
+
|
|
95
|
+
<sub><code>subagents</code> — two helpers working one request, each with its own elapsed time, context use and cost, and the next child queued behind the capacity gate.</sub>
|
|
96
|
+
|
|
97
|
+
### Teams
|
|
98
|
+
|
|
99
|
+
| Light | Dark |
|
|
100
|
+
| :---: | :---: |
|
|
101
|
+
| <img src="./resources/readme/teams-light.webp" alt="Light theme: the agents and teams page, with the release-crew roster: its manager agent, members and collaboration instructions." width="420"> | <img src="./resources/readme/teams-dark.webp" alt="Dark theme: the same teams page." width="420"> |
|
|
102
|
+
|
|
103
|
+
<sub><code>teams</code> — agents grouped under a manager, with a roster, collaboration instructions and a project brief.</sub>
|
|
104
|
+
|
|
105
|
+
### Media in a conversation
|
|
106
|
+
|
|
107
|
+
| Light | Dark |
|
|
108
|
+
| :---: | :---: |
|
|
109
|
+
| <img src="./resources/readme/media-in-conversation-light.webp" alt="Light theme: a conversation holding a pasted chart and a bar chart the agent plotted, rendered under the tool row that made it." width="420"> | <img src="./resources/readme/media-in-conversation-dark.webp" alt="Dark theme: the same conversation." width="420"> |
|
|
110
|
+
|
|
111
|
+
<sub><code>media</code> — a chart pasted in by hand and one the agent plotted, both rendered inline in the transcript.</sub>
|
|
112
|
+
|
|
89
113
|
### Agent hub
|
|
90
114
|
|
|
91
115
|
| Light | Dark |
|
package/out/main/index.js
CHANGED
|
@@ -78,6 +78,9 @@ const DESKTOP_MESSAGE_MAX_CHARS = 2e5;
|
|
|
78
78
|
const SESSION_SEARCH_MAX_CHARS = 256;
|
|
79
79
|
const SESSION_SEARCH_DEFAULT_LIMIT = 100;
|
|
80
80
|
const CHECKPOINT_WARM_MAX_IDS = 16;
|
|
81
|
+
const THREAD_FIND_MAX_CHARS = 256;
|
|
82
|
+
const THREAD_FIND_DEFAULT_LIMIT = 100;
|
|
83
|
+
const THREAD_FIND_MAX_LIMIT = 200;
|
|
81
84
|
const DESKTOP_SYSTEM_PROMPT_MAX_CHARS = 1e6;
|
|
82
85
|
const profileName = zod.z.string().min(1).max(128).refine(
|
|
83
86
|
(name) => name !== "." && name !== ".." && !name.includes("/") && !name.includes("\\") && [...name].every(
|
|
@@ -561,6 +564,30 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
|
|
|
561
564
|
ids: zod.z.array(id$1).max(CHECKPOINT_WARM_MAX_IDS).optional(),
|
|
562
565
|
limit: zod.z.number().int().min(1).max(CHECKPOINT_WARM_MAX_IDS).optional()
|
|
563
566
|
}).strict(),
|
|
567
|
+
/*
|
|
568
|
+
* In-thread find (D9): messages of ONE conversation matching `q`, best
|
|
569
|
+
* first, served from the per-session transcript index.
|
|
570
|
+
*
|
|
571
|
+
* A READ like `history` and `checkpoints` beside it. The answer's `state` is
|
|
572
|
+
* the checkpoint manifest's own ladder: a cold or stale index answers
|
|
573
|
+
* `building` inside the first-paint budget (with hits ranked from the
|
|
574
|
+
* previous scan marked `partial`) while the background refresh runs, so the
|
|
575
|
+
* overlay's first paint is immediate; `unsupported` is a peer conversation
|
|
576
|
+
* whose journal is not on this device; `error` is a failed refresh inside
|
|
577
|
+
* its cooldown. The overlay renders both tiers (`exact`/`soft`) and treats
|
|
578
|
+
* `ranges` as snippet-relative — empty on a soft hit, which has no literal
|
|
579
|
+
* occurrence of the query by construction.
|
|
580
|
+
*/
|
|
581
|
+
zod.z.object({
|
|
582
|
+
op: zod.z.literal("sessions.find"),
|
|
583
|
+
sessionId,
|
|
584
|
+
// `.min(1)`: an empty query is not a search. The overlay's client never
|
|
585
|
+
// sends one — it answers an empty query locally, without a request — so
|
|
586
|
+
// refusing it by name keeps the vocabulary closed rather than paying a
|
|
587
|
+
// round trip for an answer the box already knows.
|
|
588
|
+
q: zod.z.string().min(1).max(THREAD_FIND_MAX_CHARS),
|
|
589
|
+
limit: zod.z.number().int().min(1).max(THREAD_FIND_MAX_LIMIT).optional()
|
|
590
|
+
}).strict(),
|
|
564
591
|
/*
|
|
565
592
|
* One child's durable transcript, for the run panel's reader
|
|
566
593
|
* (`docs/run-sidebar.md` § 10.1, § 10.3).
|
|
@@ -1794,6 +1821,7 @@ const READ_ONLY_OPS = /* @__PURE__ */ new Set([
|
|
|
1794
1821
|
"sessions.aside.get",
|
|
1795
1822
|
"sessions.checkpoints",
|
|
1796
1823
|
"sessions.failovers",
|
|
1824
|
+
"sessions.find",
|
|
1797
1825
|
"sessions.get",
|
|
1798
1826
|
"sessions.history",
|
|
1799
1827
|
"sessions.list",
|
|
@@ -2086,6 +2114,16 @@ function desktopEndpoint(request) {
|
|
|
2086
2114
|
...request.limit !== void 0 ? { limit: request.limit } : {}
|
|
2087
2115
|
}
|
|
2088
2116
|
};
|
|
2117
|
+
case "sessions.find": {
|
|
2118
|
+
const query = new URLSearchParams({
|
|
2119
|
+
q: request.q,
|
|
2120
|
+
limit: String(request.limit ?? THREAD_FIND_DEFAULT_LIMIT)
|
|
2121
|
+
});
|
|
2122
|
+
return {
|
|
2123
|
+
path: `/v1/desktop/sessions/${request.sessionId}/find?${query}`,
|
|
2124
|
+
method: "GET"
|
|
2125
|
+
};
|
|
2126
|
+
}
|
|
2089
2127
|
case "subagents.transcript": {
|
|
2090
2128
|
const query = new URLSearchParams({
|
|
2091
2129
|
limit: String(request.limit ?? 100)
|
|
@@ -2827,7 +2865,7 @@ function isMiniViewDismissReason(value) {
|
|
|
2827
2865
|
}
|
|
2828
2866
|
const MINI_VIEW_WIDTH = 640;
|
|
2829
2867
|
const MINI_VIEW_HEIGHT = 168;
|
|
2830
|
-
const DEFAULT_QUICK_SEND_VALUE = "primary+alt+space";
|
|
2868
|
+
const DEFAULT_QUICK_SEND_VALUE = "primary+alt+shift+space";
|
|
2831
2869
|
const FUNCTION_KEY_TOKEN = /^f([1-9]|1[0-9]|2[0-4])$/;
|
|
2832
2870
|
function isFunctionKeyToken(token) {
|
|
2833
2871
|
return FUNCTION_KEY_TOKEN.test(token);
|
|
@@ -11742,6 +11780,11 @@ const REFUSABLE_DELIVERY = {
|
|
|
11742
11780
|
// THE ONE REFUSAL. The residual above says what it rests on and what it cannot
|
|
11743
11781
|
// see.
|
|
11744
11782
|
"second-instance": "when-its-plan-is-silent",
|
|
11783
|
+
// A Dock click carries no conversation and installs nothing: it only ever
|
|
11784
|
+
// opens this process's own window, so there is no delivery here to refuse or
|
|
11785
|
+
// to park. (The refusal a QUITTING process answers it with is not this gate's;
|
|
11786
|
+
// it has a line of its own, `applied=skipped+quitting`.)
|
|
11787
|
+
activate: "never",
|
|
11745
11788
|
// A person clicked a real banner, so refusing it and applying it must not
|
|
11746
11789
|
// differ — and with a window up it does not even reach this gate.
|
|
11747
11790
|
"banner-click": "never",
|
|
@@ -11810,6 +11853,17 @@ function reportParksAtQuit(sessions, report) {
|
|
|
11810
11853
|
].join(" ")
|
|
11811
11854
|
);
|
|
11812
11855
|
}
|
|
11856
|
+
function reportSkippedWhileQuitting(context, requested) {
|
|
11857
|
+
context.report?.(
|
|
11858
|
+
[
|
|
11859
|
+
`trigger=${context.trigger}`,
|
|
11860
|
+
`mode=${MODE_OF_SHOW[requested]}`,
|
|
11861
|
+
`requested=${requested}`,
|
|
11862
|
+
...requesterFields(context),
|
|
11863
|
+
"applied=skipped+quitting"
|
|
11864
|
+
].join(" ")
|
|
11865
|
+
);
|
|
11866
|
+
}
|
|
11813
11867
|
function raiseWindow(window, show, context) {
|
|
11814
11868
|
if (show === "never") return;
|
|
11815
11869
|
const applied = [];
|
|
@@ -11848,6 +11902,17 @@ function readSecondLaunchRequest(input) {
|
|
|
11848
11902
|
};
|
|
11849
11903
|
}
|
|
11850
11904
|
function applySecondLaunch(request, target2) {
|
|
11905
|
+
if (target2.quitting) {
|
|
11906
|
+
reportSkippedWhileQuitting(
|
|
11907
|
+
{
|
|
11908
|
+
trigger: "second-instance",
|
|
11909
|
+
requester: request.requester ?? void 0,
|
|
11910
|
+
report: target2.report
|
|
11911
|
+
},
|
|
11912
|
+
request.show
|
|
11913
|
+
);
|
|
11914
|
+
return;
|
|
11915
|
+
}
|
|
11851
11916
|
if (request.session !== null) {
|
|
11852
11917
|
if (target2.openConversation) {
|
|
11853
11918
|
target2.openConversation(request.session, request);
|
|
@@ -12092,6 +12157,23 @@ class BackendInstaller {
|
|
|
12092
12157
|
* and never resolves at all.
|
|
12093
12158
|
*/
|
|
12094
12159
|
settleUserDecision = null;
|
|
12160
|
+
/**
|
|
12161
|
+
* What to tell the app when THIS window's question cancels a running quit.
|
|
12162
|
+
*
|
|
12163
|
+
* WHY THE INSTALLER CARRIES IT AND `index.ts` OWNS IT (round-1 review,
|
|
12164
|
+
* F-1). The declined "Quit without setup?" - `cancelId: 0`, the default -
|
|
12165
|
+
* lets a quit abort and leaves the process serving, which means any quit
|
|
12166
|
+
* that was in flight is now CANCELLED and the app must stop claiming
|
|
12167
|
+
* otherwise: without a release, `index.ts`'s quit state stays set and every
|
|
12168
|
+
* later second launch and Dock click is refused for the process's life
|
|
12169
|
+
* although the app is running normally. The dialog is the ONE cancellation
|
|
12170
|
+
* a running quit has (see `../quit-state` for the sweep); this module never
|
|
12171
|
+
* reaches for the app's state itself, so the installer stays drivable in a
|
|
12172
|
+
* test and the single release site stays greppable. Optional because the
|
|
12173
|
+
* harness constructs installers with no app around them, and a release that
|
|
12174
|
+
* fires where no quit exists clears an already-false state.
|
|
12175
|
+
*/
|
|
12176
|
+
onQuitCancelled;
|
|
12095
12177
|
/*
|
|
12096
12178
|
* The last phase announced to the setup window, and whether a failure is
|
|
12097
12179
|
* currently on screen with nobody's answer yet.
|
|
@@ -12203,8 +12285,14 @@ ${error instanceof Error ? error.message : String(error ?? "")}`;
|
|
|
12203
12285
|
}
|
|
12204
12286
|
/**
|
|
12205
12287
|
* Constructor
|
|
12288
|
+
*
|
|
12289
|
+
* `options.onQuitCancelled` is `index.ts`'s one release for the app's quit
|
|
12290
|
+
* state (see the field's own note); it is handed in rather than imported so
|
|
12291
|
+
* this module never depends on the app's lifecycle and its test can drive
|
|
12292
|
+
* the declined answer with a spy.
|
|
12206
12293
|
*/
|
|
12207
|
-
constructor() {
|
|
12294
|
+
constructor(options = {}) {
|
|
12295
|
+
this.onQuitCancelled = options.onQuitCancelled;
|
|
12208
12296
|
this.venvPath = managedVenvPath({
|
|
12209
12297
|
platform: process.platform,
|
|
12210
12298
|
home: electron.app.getPath("home"),
|
|
@@ -12851,6 +12939,7 @@ ${result.stdout}`,
|
|
|
12851
12939
|
"Setup quit declined from the setup window",
|
|
12852
12940
|
LogFileType.INSTALLER
|
|
12853
12941
|
);
|
|
12942
|
+
this.onQuitCancelled?.();
|
|
12854
12943
|
return;
|
|
12855
12944
|
}
|
|
12856
12945
|
this.attemptCancelled = inFlight;
|
|
@@ -32512,8 +32601,8 @@ function createMiniView(options) {
|
|
|
32512
32601
|
backgroundThrottling: false,
|
|
32513
32602
|
/*
|
|
32514
32603
|
* The argv the preload reads SYNCHRONOUSLY, and both entries are
|
|
32515
|
-
* deliberate: the chrome facts because the keycap's spelling (
|
|
32516
|
-
* against Ctrl+Alt) is a first-frame fact with no IPC round trip to
|
|
32604
|
+
* deliberate: the chrome facts because the keycap's spelling (⌘⌥⇧
|
|
32605
|
+
* against Ctrl+Alt+Shift) is a first-frame fact with no IPC round trip to
|
|
32517
32606
|
* wait for — the main window composes the same entry through
|
|
32518
32607
|
* `windowChromeArgumentFor` — and an EXPLICIT telemetry `off` because
|
|
32519
32608
|
* this window mounts no telemetry surface at all (§D.1), and the
|
|
@@ -32613,6 +32702,18 @@ function rememberPickedDirectory(kind, filePaths, directoryPicked = false) {
|
|
|
32613
32702
|
if (!first) return;
|
|
32614
32703
|
lastPickedDirectory.set(kind, directoryPicked ? first : path$1.dirname(first));
|
|
32615
32704
|
}
|
|
32705
|
+
function createQuitState() {
|
|
32706
|
+
let quitting = false;
|
|
32707
|
+
return {
|
|
32708
|
+
begin: () => {
|
|
32709
|
+
quitting = true;
|
|
32710
|
+
},
|
|
32711
|
+
cancel: () => {
|
|
32712
|
+
quitting = false;
|
|
32713
|
+
},
|
|
32714
|
+
isQuitting: () => quitting
|
|
32715
|
+
};
|
|
32716
|
+
}
|
|
32616
32717
|
function titlebarOptions(platform, chrome) {
|
|
32617
32718
|
if (platform === "darwin") {
|
|
32618
32719
|
return { titleBarStyle: "hidden" };
|
|
@@ -40166,7 +40267,12 @@ const userShellPath = createUserShellPath({
|
|
|
40166
40267
|
log: (message) => logger.info(message, LogFileType.BACKEND)
|
|
40167
40268
|
});
|
|
40168
40269
|
const backendService = new BackendServiceManager({ userShellPath });
|
|
40169
|
-
const
|
|
40270
|
+
const quitState = createQuitState();
|
|
40271
|
+
const backendInstaller = new BackendInstaller({
|
|
40272
|
+
// The installer's one route back from a cancelled quit: the declined dialog
|
|
40273
|
+
// answer (`./quit-state` owns why there is exactly one such site).
|
|
40274
|
+
onQuitCancelled: () => quitState.cancel()
|
|
40275
|
+
});
|
|
40170
40276
|
const reportBackendFailure = (message, fileType) => {
|
|
40171
40277
|
if (backendService.isShuttingDown()) {
|
|
40172
40278
|
logger.error(
|
|
@@ -40380,6 +40486,16 @@ if (!gotTheLock) {
|
|
|
40380
40486
|
}),
|
|
40381
40487
|
{
|
|
40382
40488
|
window: mainWindow,
|
|
40489
|
+
/*
|
|
40490
|
+
* Read PER REQUEST rather than captured once: this handler outlives every
|
|
40491
|
+
* window, and the state is LIVE — set at each quit's first `before-quit`
|
|
40492
|
+
* entry, released when the setup dialog declines to stop a run — so a
|
|
40493
|
+
* request that arrives during a quit is refused instead of answered with
|
|
40494
|
+
* a window the shutdown would take down, and a request after a CANCELLED
|
|
40495
|
+
* quit is answered normally (`./quit-state` owns the transitions;
|
|
40496
|
+
* `window-raise.ts` owns the refusal and its line).
|
|
40497
|
+
*/
|
|
40498
|
+
quitting: quitState.isQuitting(),
|
|
40383
40499
|
openConversation: openConversationInWindow ? (session, request) => openConversationInWindow?.(
|
|
40384
40500
|
session,
|
|
40385
40501
|
secondInstanceRequest(request)
|
|
@@ -40559,7 +40675,10 @@ electron.app.whenReady().then(async () => {
|
|
|
40559
40675
|
});
|
|
40560
40676
|
return "raised the window";
|
|
40561
40677
|
}
|
|
40562
|
-
setupMainWindowWithUpdateService(
|
|
40678
|
+
setupMainWindowWithUpdateService(null, false, {
|
|
40679
|
+
show: windowLaunch.show,
|
|
40680
|
+
trigger: "viewer-focus"
|
|
40681
|
+
});
|
|
40563
40682
|
return "opened a window";
|
|
40564
40683
|
}
|
|
40565
40684
|
},
|
|
@@ -40609,7 +40728,7 @@ electron.app.whenReady().then(async () => {
|
|
|
40609
40728
|
* this feature's slice for a value that is a launch fact (argv, the
|
|
40610
40729
|
* launch env, the persisted file) and cannot differ between the two
|
|
40611
40730
|
* calls. The mini view's visible consumer of it is the platform
|
|
40612
|
-
* half: the header's keycap spells
|
|
40731
|
+
* half: the header's keycap spells ⌘⌥⇧Space against Ctrl+Alt+Shift+Space
|
|
40613
40732
|
* from exactly this entry.
|
|
40614
40733
|
*/
|
|
40615
40734
|
chromeMode: resolveLaunchWindowChrome({
|
|
@@ -41151,6 +41270,10 @@ electron.app.whenReady().then(async () => {
|
|
|
41151
41270
|
});
|
|
41152
41271
|
}
|
|
41153
41272
|
function setupMainWindowWithUpdateService(initialSession = null, openCatalogue = false, request = ownLaunchRequest()) {
|
|
41273
|
+
if (quitState.isQuitting()) {
|
|
41274
|
+
reportSkippedWhileQuitting(request, request.show);
|
|
41275
|
+
return;
|
|
41276
|
+
}
|
|
41154
41277
|
const parked = initialSession === null && !openCatalogue ? parkedLaunches[0] : void 0;
|
|
41155
41278
|
mainWindow = createWindow(
|
|
41156
41279
|
parked?.session ?? initialSession,
|
|
@@ -41314,6 +41437,10 @@ electron.app.whenReady().then(async () => {
|
|
|
41314
41437
|
});
|
|
41315
41438
|
return;
|
|
41316
41439
|
}
|
|
41440
|
+
if (quitState.isQuitting()) {
|
|
41441
|
+
reportSkippedWhileQuitting(request, request.show);
|
|
41442
|
+
return;
|
|
41443
|
+
}
|
|
41317
41444
|
if (!canCreateWindowFor(request.show)) {
|
|
41318
41445
|
if (sessionId2 !== null) parkLaunch(sessionId2, request);
|
|
41319
41446
|
return;
|
|
@@ -41328,9 +41455,22 @@ electron.app.whenReady().then(async () => {
|
|
|
41328
41455
|
setupMainWindowWithUpdateService(launchSession, launchCatalogue);
|
|
41329
41456
|
electron.app.on("activate", () => {
|
|
41330
41457
|
if (electron.BrowserWindow.getAllWindows().length === 0) {
|
|
41458
|
+
if (quitState.isQuitting()) {
|
|
41459
|
+
reportSkippedWhileQuitting(
|
|
41460
|
+
{ trigger: "activate", report: reportRaise },
|
|
41461
|
+
OPERATOR_SHOW
|
|
41462
|
+
);
|
|
41463
|
+
return;
|
|
41464
|
+
}
|
|
41331
41465
|
setupMainWindowWithUpdateService(null, false, {
|
|
41332
41466
|
show: OPERATOR_SHOW,
|
|
41333
|
-
|
|
41467
|
+
/*
|
|
41468
|
+
* The request names itself on its raise line. It used to present as
|
|
41469
|
+
* `initial-present` — this process's own launch — which is what a Dock
|
|
41470
|
+
* click is not, and the log's whole job is attribution; the refusal
|
|
41471
|
+
* above is the same request and must carry the same name.
|
|
41472
|
+
*/
|
|
41473
|
+
trigger: "activate"
|
|
41334
41474
|
});
|
|
41335
41475
|
}
|
|
41336
41476
|
});
|
|
@@ -41410,6 +41550,7 @@ const holdQuitForSessionCookieSnapshot = createSessionCookieQuitHold({
|
|
|
41410
41550
|
log: (message) => logger.warn(message, LogFileType.BACKEND)
|
|
41411
41551
|
});
|
|
41412
41552
|
electron.app.on("before-quit", async (event) => {
|
|
41553
|
+
quitState.begin();
|
|
41413
41554
|
if (await holdQuitForSessionCookieSnapshot(event)) return;
|
|
41414
41555
|
logger.info("App is about to quit", LogFileType.BACKEND);
|
|
41415
41556
|
if (parkedLaunches.length > 0) {
|
|
@@ -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-xIg3idQF.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-DLc2GDBk.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-BrRc254F.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-DLc2GDBk.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-Q8dgdQp2.js → agent-details-page-D2QdVqJp.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as F,j as e,c as G}from"./index-
|
|
1
|
+
import{r as F,j as e,c as G}from"./index-C17iOszj.js";import{l as ue,c as he,u as xe,d as ge,g as je,i as fe,a as pe,b as ye,e as ve}from"./use-memberships-query-Q96GogTV.js";import{b as ne,a as I,y as we}from"./aida-control-BqbEHtVs.js";import{a9 as b,aa as K,a4 as Y,ab as B,ac as be,ad as Ce,ae as ie,e as re,a as Ne,af as Ae,B as ke,ag as Se,ah as De,ai as J,a3 as Ee,aj as Fe,ak as Te}from"./index-BsveCKct.js";import{c as _e,L as Pe,a as ee,B as l,S as z,b as oe,d as L,e as M,f as v,X as qe,g as w,A as te,h as se,i as ae}from"./textarea-CPyoWJfR.js";import{f as W,u as Le,i as Me,a as ze,b as Ie,c as Ke,O as Be,H as Oe,A as Qe}from"./use-download-agent-mutation-CJP2OhpP.js";import"./ui-preferences-store-CyKvDymq.js";import"./error-boundary-X9vF0zez.js";import"./console-mirror-CqlxE8VR.js";import"./en-US-BkS8Ixxl.js";import"./book-open-tLP18D-k.js";/**
|
|
2
2
|
* @license lucide-react v0.507.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{r,j as e,c as L}from"./index-
|
|
1
|
+
import{r,j as e,c as L}from"./index-C17iOszj.js";import{b as Ee,C as Ie,a as Le,i as he,y as pe,u as Fe,I as Me}from"./aida-control-BqbEHtVs.js";import{o as be,u as $e,a as De,C as Ue,b as Ye}from"./org-surface-gate-CQZDYvz1.js";import{P as qe}from"./page-header-Ct_E4hXM.js";import{c as Ve,g as V,B as N,f as m,A as Q,h as W,i as G,q as se,r as te,s as ne,t as ie,u as B,I as Be}from"./textarea-CPyoWJfR.js";import{e as je,a9 as re,ag as He,ah as ge,aV as Qe,r as We,aa as Ge,aW as Ze,ab as Xe,aX as Je,a5 as Ke,aY as ea,aZ as aa}from"./index-BsveCKct.js";import{e as sa,f as ta,p as na,P as ia,b as ra,h as la}from"./use-memberships-query-Q96GogTV.js";import{O as oa,A as ca,f as da,H as ua,a as ma,b as ha,c as ga,d as ve,C as xa,u as fa,i as pa}from"./use-download-agent-mutation-CJP2OhpP.js";import{R as ba}from"./radient-auth-buttons-DCKuV_IZ.js";import"./ui-preferences-store-CyKvDymq.js";import"./error-boundary-X9vF0zez.js";import"./console-mirror-CqlxE8VR.js";import"./en-US-BkS8Ixxl.js";import"./book-open-tLP18D-k.js";/**
|
|
2
2
|
* @license lucide-react v0.507.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const ja=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M7 12h.01",key:"eqddd0"}]],va=Ve("circle-ellipsis",ja),Na=({agent:a,isLiked:t,isFavourited:n,onLikeToggle:i,onFavouriteToggle:o,onDownload:c,isLikeActionLoading:h=!1,isFavouriteActionLoading:y=!1,isDownloading:x=!1,actionError:d=null,onRetryAction:p,showActions:b=!0,viewerStateKnown:f=!0,orgName:j=null})=>{const k=je(),{isAuthenticated:u}=re(),_=a.description??"",[P,R]=r.useState(!1),l=r.useRef(null),v=r.useCallback(g=>{if(l.current?.disconnect(),l.current=null,!g)return;const C=()=>R(g.scrollHeight-g.clientHeight>1);C();const D=new ResizeObserver(C);D.observe(g),l.current=D},[]),M=u?f?t?"Unlike agent":"Like agent":"Your likes could not be read, so this is not shown as unliked.":"Log in to Radient to like agents",$=u?f?n?"Unfavourite agent":"Favourite agent":"Your favourites could not be read, so this is not shown as unfavourited.":"Log in to Radient to favourite agents",z=f?t?"Unlike agent":"Like agent":"Like state unavailable",O=f?n?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",E=a.visibility==="org";return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface transition-colors duration-fast ease-out-quart hover:bg-elevated",children:[e.jsxs("button",{type:"button",onClick:()=>k(`/agent-hub/${a.id}`),className:"flex min-h-0 flex-1 cursor-pointer flex-col gap-2 p-4 text-left","aria-label":`View details for ${a.name}`,children:[e.jsx("h3",{className:"truncate font-medium text-heading text-ink",children:a.name}),E&&e.jsx(ca,{orgName:j}),e.jsx(V,{content:P?_:"",children:e.jsx("span",{ref:v,className:"line-clamp-3 min-h-0 text-body-sm text-ink-muted",children:_})}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsx(da,{tags:a.tags,categories:a.categories}),e.jsxs("p",{className:"truncate text-ink-dim text-meta",children:[a.account_metadata?.name??"Unknown author",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"updated ",ua(new Date(a.updated_at))," ago"]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-0.5","data-viewer-state":E?"org":u?f?"known":"unknown":"signed-out",children:[!E&&e.jsxs(e.Fragment,{children:[e.jsx(V,{content:M,children:e.jsx("span",{children:e.jsxs(N,{variant:"ghost",size:"sm",onClick:u&&f?()=>i(a.id):void 0,disabled:h||!u||!f,"aria-label":z,className:L(t&&"text-danger"),children:[e.jsx(ma,{fill:t?"currentColor":"none","data-testid":"agent-like-heart"}),e.jsx("span",{"data-testid":"agent-like-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:a.like_count??0})]})})}),e.jsx(V,{content:$,children:e.jsx("span",{children:e.jsxs(N,{variant:"ghost",size:"sm",onClick:u?()=>o(a.id):void 0,disabled:y||!u||!f,"aria-label":O,className:L(n&&"text-warning"),children:[e.jsx(We,{fill:n?"currentColor":"none","data-testid":"agent-favourite-star"}),e.jsx("span",{"data-testid":"agent-favourite-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:a.favourite_count??0})]})})})]}),e.jsx(V,{content:"Downloads",children:e.jsxs("span",{className:"ml-1 inline-flex items-center gap-1 pr-1 text-ink-dim",children:[e.jsx(ge,{"aria-hidden":"true",className:"size-3.5"}),e.jsx("span",{className:"inline-flex h-4 min-w-6 items-center font-mono text-mono-sm",children:x?e.jsx(m,{className:"h-3 w-6"}):(a.download_count??0).toLocaleString()})]})})]}),b&&c&&e.jsx("div",{className:"ml-auto flex shrink-0 items-center",children:e.jsxs(N,{variant:"secondary",size:"sm",onClick:()=>c(a),disabled:x,"aria-label":`Download ${a.name}`,"data-tour-tag":"agent-hub-download-button",children:[e.jsx(ge,{"data-testid":"agent-download"}),"Get"]})})]}),d&&e.jsxs("output",{"data-testid":"agent-card-error",className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2 text-body-sm text-danger",children:[e.jsx("span",{className:"min-w-0 flex-1",children:d}),p&&e.jsx(N,{variant:"ghost",size:"sm",onClick:p,children:"Try again"})]})]})},ya=({agent:a,status:t,viewerStateKnown:n=!0,orgName:i=null})=>{const{isAuthenticated:o}=re(),[c,h]=r.useState(null),y=t?.liked??!1,x=t?.favourited??!1,d=ha(),p=ga(),b=xa(),f=()=>{!o||d.isPending||(h(null),d.mutate({agentId:a.id,isCurrentlyLiked:y},{onError:()=>h("like")}))},j=()=>{!o||p.isPending||(h(null),p.mutate({agentId:a.id,isCurrentlyFavourited:x},{onError:()=>h("favourite")}))},k=()=>{b.isPending||(h(null),b.mutate({agentId:a.id,agentName:a.name},{onError:()=>h("download")}))},u=c?c==="like"?{action:"like",error:d.error,retry:f}:c==="favourite"?{action:"favourite",error:p.error,retry:j}:{action:"download",error:b.error,retry:k}:null;return e.jsx(Na,{agent:a,isLiked:o&&y,isFavourited:o&&x,onLikeToggle:f,onFavouriteToggle:j,onDownload:k,isLikeActionLoading:d.isPending,isFavouriteActionLoading:p.isPending,isDownloading:b.isPending,viewerStateKnown:n,orgName:i,actionError:u?ta(u.action,u.error,a.name):null,onRetryAction:u?.retry})},xe=({selected:a,onClick:t,children:n,...i})=>e.jsx("button",{type:"button",onClick:t,"aria-pressed":a,className:L("flex w-full cursor-pointer items-center gap-2.5 rounded-sm px-3 py-1.5 text-left","text-body-sm transition-colors duration-fast ease-out-quart",a?Xe:"text-ink hover:bg-row-hover"),...i,children:n}),fe=Object.keys(fa),wa=a=>[...a].sort((t,n)=>{const i=fe.indexOf(t),o=fe.indexOf(n);return i!==-1&&o!==-1?i-o:i!==-1?-1:o!==-1?1:t.localeCompare(n)}),ka=({selectedCategory:a,onSelectCategory:t,categories:n})=>{const i=wa(a&&!n.includes(a)?[...n,a]:n);return e.jsxs("div",{className:"flex h-full flex-col overflow-y-auto",children:[e.jsx("h2",{className:"mb-2 px-3 font-medium text-ink-dim text-meta",children:"Categories"}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs(xe,{selected:a===null,onClick:()=>t(null),"data-testid":"category-all",children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:e.jsx(Ge,{size:16,"aria-hidden":"true"})}),"All categories"]}),i.map(o=>{const c=ve(o),h=o==="other"?e.jsx(va,{size:16}):c.icon;return e.jsxs(xe,{selected:a===o,onClick:()=>t(o),"data-testid":`category-${o}`,children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:h}),c.label]},o)})]})]})},Ne={all:["org-teams"],list:a=>[...Ne.all,"list",a]},Ca=({tenantId:a,enabled:t=!0})=>{const n=Ee({queryKey:Ne.list(a??""),queryFn:async()=>(await na(a)).result??{teams:[]},enabled:t&&!!a,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,retry:Ie});return{...n,teams:n.data?.teams??[]}},Sa=(a,t)=>{const n=a?.name?.trim()||t?.trim()||"Team",i=a?.renamed_from?.trim()||null;return a?.invalid_name===!0&&i?{level:"warning",message:`Pulled "${n}". The published name "${i}" is not usable locally, so the team was stored as "${n}".`}:i?{level:"success",message:`Pulled "${n}" (you already have a team called "${i}").`}:{level:"success",message:`Pulled team "${n}".`}},Ta=()=>{const a=Le();return Ze({mutationFn:async({teamId:t,tenantId:n})=>{if(!he.baseUrl)throw new Error("Local Operator API URL is not configured.");return ea.pullOrgTeamFromRadient(he.baseUrl,t,n)},onSuccess:(t,n)=>{const i=Sa(t.result,n.name);i.level==="warning"?Je(i.message):Ke(i.message),a.invalidateQueries({queryKey:["desktop","teams"]})},onError:t=>{console.error("Pulling an organization team failed:",t)}})},Aa=["refresh-hub","retry","sign-in"],_a=({tenantId:a,orgName:t})=>{const{teams:n,isLoading:i,isFetching:o,isError:c,error:h,refetch:y}=Ca({tenantId:a}),x=be(h),d=Ta(),[p,b]=r.useState(null),[f,j]=r.useState(null),[k,u]=r.useState(!1),_=r.useMemo(()=>{if(!aa(d.error))return null;const l=n.find(v=>v.id===p);return ia({code:d.error.code,message:d.error.message,details:d.error.details},{name:l?.name??"this team",hubAgentId:null,surface:"pull"})},[d.error,p,n]),P=(l,v)=>{switch(l){case"refresh-hub":y();break;case"retry":R(v);break;case"sign-in":u(!0);break}},R=l=>{d.isPending||(b(null),j(l.id),d.mutate({teamId:l.id,tenantId:a,name:l.name},{onSettled:()=>j(null),onError:()=>b(l.id)}))};return e.jsxs("section",{className:"mb-6 rounded-md bg-surface","aria-labelledby":"org-teams-heading","data-testid":"org-teams",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-2 px-4 pt-3 pb-2",children:[e.jsx("h2",{id:"org-teams-heading",className:"font-medium text-heading text-ink",children:"Teams"}),!i&&!c&&e.jsxs("p",{className:"text-meta text-ink-dim","data-testid":"org-teams-count",children:[n.length," ",n.length===1?"team":"teams"," shared with"," ",t??"this organization"]})]}),i&&e.jsxs("div",{className:"flex flex-col gap-2 px-4 pb-4","data-testid":"org-teams-loading",children:[e.jsx("span",{className:"sr-only",children:"Loading teams…"}),e.jsxs("div",{"aria-hidden":"true",className:"flex flex-col gap-2",children:[e.jsx(m,{className:"h-4.5 w-40"}),e.jsx(m,{className:"h-3.5 w-64"})]})]}),!i&&c&&e.jsxs(Q,{variant:x?"warning":"danger",className:"mx-4 mb-4","data-testid":"org-teams-error",children:[e.jsx(W,{children:x==="plan"?"That organization needs an active Team plan":x==="no_access"?"You do not have access to that organization":"Teams could not be loaded"}),e.jsx(G,{children:x==="plan"?`Reading an organization's teams is part of the Team plan. An owner of ${t??"this organization"} can activate it in the Radient console, and then its teams will be listed here.`:x==="no_access"?`You are not a member of ${t??"that organization"}, so its teams are not listed here. An owner can invite you again.`:pe("The teams shared with this organization could not be read.",h)}),x!=="no_access"&&e.jsx("div",{className:"mt-2",children:e.jsx(N,{variant:"primary",size:"sm",onClick:()=>void y(),disabled:o,"aria-busy":o,children:o?"Trying…":"Try again"})})]}),!i&&!c&&n.length===0&&e.jsx("p",{className:"px-4 pb-4 text-body-sm text-ink-muted","data-testid":"org-teams-empty",children:"No teams have been shared with this organization yet."}),!i&&!c&&n.length>0&&e.jsx("ul",{className:"flex flex-col divide-y divide-hairline border-t border-hairline",children:n.map(l=>e.jsxs("li",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-4 py-2.5",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("span",{className:"truncate font-medium text-body text-ink",children:l.name}),e.jsxs("span",{className:"truncate text-meta text-ink-muted",children:[l.project||"No project",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),Pa(l),l.version?e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"v",l.version]}):null]}),p===l.id&&e.jsxs("div",{className:"mt-1 flex flex-col items-start gap-1","data-testid":"org-team-pull-error",children:[e.jsx("output",{className:"text-meta text-danger",children:_?.body??d.error?.message??`"${l.name}" could not be pulled.`}),_?.actions.filter(v=>Aa.includes(v)).map(v=>e.jsx(N,{variant:"primary",size:"sm",onClick:()=>P(v,l),children:ra[v]},v)),k&&e.jsx("div",{className:"mt-1","data-testid":"org-team-pull-reauth",children:e.jsx(He,{titleText:"Sign in again",descriptionText:"",onSignInSuccess:()=>{u(!1),b(null),y()}})})]})]}),e.jsx(N,{variant:"secondary",size:"sm",onClick:()=>R(l),disabled:d.isPending,"aria-label":`Pull team ${l.name}`,children:f===l.id?"Pulling…":"Pull"})]},l.id))})]})},Pa=a=>a.members.length===0?"No members":a.members.map(t=>t.count>1?`${t.role} ×${t.count}`:t.role).join(", "),Ra=(a,t)=>{const[n,i]=r.useState(a);return r.useEffect(()=>{const o=setTimeout(()=>i(a),t);return()=>clearTimeout(o)},[a,t]),n},H=[{value:"download_count:desc",label:"Most downloaded",sort:"download_count",order:"desc"},{value:"like_count:desc",label:"Most liked",sort:"like_count",order:"desc"},{value:"favourite_count:desc",label:"Most favourited",sort:"favourite_count",order:"desc"},{value:"created_at:desc",label:"Newest",sort:"created_at",order:"desc"},{value:"updated_at:desc",label:"Recently updated",sort:"updated_at",order:"desc"},{value:"name:asc",label:"Name (A to Z)",sort:"name",order:"asc"}],za=[{value:"name",label:"Name"},{value:"description",label:"Description"}],Oa=300,F="public",Ea=()=>e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface",children:[e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 p-4",children:[e.jsx(m,{className:"h-5.5 w-2/3"}),e.jsx(m,{className:"h-3.5 w-full"}),e.jsx(m,{className:"h-3.5 w-full"}),e.jsx(m,{className:"h-3.5 w-1/2"}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(m,{className:"h-5.5 w-24"}),e.jsx(m,{className:"h-5.5 w-20"})]}),e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx(m,{className:"h-5.5 w-24"})})]}),e.jsx(m,{className:"h-4.5 w-32"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 border-t border-hairline px-3 py-2",children:[e.jsx(m,{className:"size-4"}),e.jsx(m,{className:"h-4 w-6"}),e.jsx(m,{className:"size-4"}),e.jsx(m,{className:"h-4 w-6"}),e.jsx(m,{className:"ml-auto h-7 w-16"})]})]}),Ga=()=>{const a=je(),{isAuthenticated:t}=re(),[n,i]=r.useState(1),[o]=r.useState(12),[c,h]=r.useState(null),[y,x]=r.useState(""),[d,p]=r.useState("name"),[b,f]=r.useState(H[0].value),[j,k]=r.useState(F),[u,_]=r.useState([]),P=Ra(y,Oa),R=H.find(s=>s.value===b)??H[0],l=Fe(),v=Qe(),M=Me(l.data,"radient_org"),$=t?De(M,v):null,{memberships:z}=la({enabled:Ye(M)}),O=r.useMemo(()=>$e(z),[z]),E=j===F||O.some(s=>s.tenant_id===j);r.useEffect(()=>{E||k(F)},[E]);const g=j===F?null:O.find(s=>s.tenant_id===j)??null,C=g?.tenant_id,D=g?.role==="owner"||g?.role==="admin",ye=r.useMemo(()=>new Map(z.map(s=>[s.tenant_id,s.tenant_name])),[z]),{data:U,agents:we,isLoading:ke,isFetching:S,error:T,refetch:le,pagination:A}=oa({page:n,perPage:o,categories:c?[c]:void 0,name:d==="name"&&P||void 0,description:d==="description"&&P||void 0,sort:R.sort,order:R.order,tenantId:C}),I=g?be(T):null,Y=we??[],oe=S&&U!==void 0,{statuses:ce,isKnown:Ce,isError:Se,isFetching:X,refetch:Te}=pa({agentIds:C?[]:Y.map(s=>s.id)}),Z=r.useRef(null),J=r.useRef(null),[de,Ae]=r.useState(0);r.useEffect(()=>{de!==0&&(Z.current??J.current)?.focus()},[de]);const ue=r.useRef(null),K=r.useRef(!1),ee=r.useMemo(()=>[...new Set((U?.records??[]).flatMap(s=>s.categories??[]))],[U]);r.useEffect(()=>{_(s=>ee.every(ae=>s.includes(ae))?s:[...new Set([...s,...ee])])},[ee]);const q=c!==null||P!=="",_e=()=>{h(null),x(""),i(1),Ae(s=>s+1)},w=(ke||S)&&U===void 0,me=!w&&!q&&(T!==null||Y.length===0);r.useEffect(()=>{!K.current||w||(K.current=!1,T?ue.current?.focus():(Z.current??J.current)?.focus())},[w,T]);const Pe=s=>{i(s)},Re=s=>{h(s),i(1)},ze=s=>{x(s),i(1)},Oe=s=>{p(s),i(1)};return e.jsxs("div",{className:"flex h-full flex-col gap-8 p-6",children:[e.jsx(qe,{title:"Agent hub",subtitle:"Discover and download community agents on Radient",icon:sa}),e.jsxs("div",{className:"flex min-h-0 flex-1 flex-row overflow-hidden",children:[e.jsx("div",{className:"mr-6 hidden w-60 shrink-0 rounded-md bg-surface p-2 md:block","data-tour-tag":"agent-hub-sidebar-container",children:!me&&e.jsx(ka,{selectedCategory:c,onSelectCategory:Re,categories:u})}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-y-auto",children:[$&&e.jsxs(Q,{variant:"warning",className:"mb-3 max-w-2xl","data-testid":"agent-hub-org-unavailable",children:[e.jsx(W,{children:"Organizations are unavailable"}),e.jsx(G,{children:$})]}),O.length>0&&e.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[e.jsx("span",{id:"agent-hub-scope-label",className:"text-meta text-ink-muted",children:"Showing"}),e.jsxs(se,{value:j,onValueChange:s=>{k(s),i(1)},children:[e.jsx(te,{className:"w-56","aria-labelledby":"agent-hub-scope-label","data-testid":"agent-hub-scope",children:e.jsx(ne,{})}),e.jsxs(ie,{children:[e.jsx(B,{value:F,children:"Public hub"}),O.map(s=>e.jsx(B,{value:s.tenant_id,children:s.tenant_name||"Organization"},s.tenant_id))]})]})]}),!me&&e.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.jsxs("div",{className:L("flex min-w-56 flex-1 items-center rounded-sm border border-control bg-surface","transition-colors duration-fast ease-out-quart","has-[:focus-visible]:outline-solid has-[:focus-visible]:outline-2","has-[:focus-visible]:outline-accent has-[:focus-visible]:outline-offset-2"),children:[e.jsx(Be,{ref:Z,type:"search",value:y,onChange:s=>ze(s.target.value),placeholder:"Search agents","aria-label":"Search agents",className:"h-8 min-w-0 flex-1 border-0 bg-transparent outline-none","data-testid":"agent-hub-search"}),e.jsxs(se,{value:d,onValueChange:Oe,children:[e.jsx(te,{className:"w-auto shrink-0 border-y-0 border-l border-hairline border-r-0 bg-transparent pl-2 outline-none","aria-label":"Search in","data-testid":"agent-hub-search-scope",children:e.jsx(ne,{})}),e.jsx(ie,{children:za.map(s=>e.jsx(B,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs(se,{value:b,onValueChange:f,children:[e.jsx(te,{className:"w-48","aria-label":"Sort agents","data-testid":"agent-hub-sort",children:e.jsx(ne,{})}),e.jsx(ie,{children:H.map(s=>e.jsx(B,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs("p",{"aria-live":"polite",className:"mb-3 text-meta text-ink-dim","data-testid":"agent-hub-status",children:[w?"Loading agents…":A?`${A.totalRecords} ${A.totalRecords===1?"agent":"agents"}`:"",oe?e.jsx(e.Fragment,{children:" Updating…"}):null]}),t&&Se&&e.jsxs("output",{className:"mb-3 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-hub-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so no card shows a viewer state."}),e.jsx(N,{variant:"ghost",size:"sm",onClick:()=>void Te(),disabled:X,"aria-busy":X,children:X?"Trying…":"Try again"})]}),w&&e.jsx("div",{"data-testid":"agent-hub-loading",className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6",children:Array.from({length:6},(s,ae)=>e.jsx(Ea,{},ae))}),w&&A===void 0&&e.jsx("div",{"aria-hidden":"true",className:"mt-6 flex min-h-13 items-center justify-center","data-testid":"agent-hub-pager-placeholder",children:e.jsx(m,{className:"h-4 w-24"})}),e.jsx("output",{"aria-live":"polite","data-testid":"agent-hub-outage",className:L(!w&&T&&!I?"block":"sr-only"),children:!w&&T&&!I&&e.jsxs(Q,{variant:"danger",className:"max-w-2xl","aria-busy":S,"data-testid":"agent-hub-error",children:[e.jsx(W,{children:t?"The hub could not be loaded":"Sign in to use the hub"}),e.jsx(G,{children:t?pe("The agent list could not be loaded.",T):"You are not signed in to Radient, so the hub has no credential to read the agent list with. Sign in on the settings page, then try again."}),e.jsx("div",{className:"mt-2",children:e.jsx(N,{ref:ue,variant:"outline",size:"sm",onClick:()=>{K.current=!0,le()},disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})})]})}),!w&&I&&g&&e.jsxs(Q,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-no-access",children:[e.jsx(W,{children:I==="plan"?"That organization needs an active Team plan":"You do not have access to that organization"}),e.jsx(G,{children:I==="plan"?`Sharing agents inside an organization is part of the Team plan. An owner of ${g.tenant_name||"this organization"} can activate it in the Radient console, and then its agents will be listed here.`:`You are not a member of ${g.tenant_name||"that organization"}, so its agents are not listed here. An owner can invite you again.`}),I==="plan"&&e.jsx("div",{className:"mt-2",children:e.jsx(N,{variant:"primary",size:"sm",onClick:()=>void le(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})})]}),!w&&!T&&e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6","aria-busy":oe,children:Y.length===0?e.jsxs("div",{"data-testid":"agent-hub-empty",className:L("col-span-full w-full flex flex-col items-center gap-2 rounded-md bg-surface px-6 py-10 text-center",!C&&"max-w-2xl justify-self-center"),children:[e.jsx("p",{className:"text-heading text-ink",children:C?"This organization has no shared agents yet.":c?`No agents in ${ve(c).label}.`:q?"No agents match that search.":"The hub is empty."}),e.jsx("p",{className:"max-w-md text-body-sm text-ink-muted",children:C?`Agents published into ${g?.tenant_name||"this organization"} appear here for its members.`:c?"Nothing in this category yet. Clear the filter to see the whole hub.":q?"No agent's name or description carries that. Clear it to see the whole hub.":"Nobody has published an agent yet. Yours could be the first."}),e.jsx("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:q?e.jsx(N,{variant:"secondary",onClick:_e,children:c?"Clear filter":"Clear search"}):C&&!D?null:e.jsx(N,{ref:J,variant:"secondary",onClick:()=>a("/agents"),children:"Publish an agent"})})]}):Y.map(s=>e.jsx(ya,{agent:s,status:t?ce[s.id]:void 0,viewerStateKnown:t&&ba(Ce,ce,s.id),orgName:s.visibility==="org"?ye.get(s.tenant_id)??null:null},s.id))}),!w&&A&&A.totalPages>1&&e.jsx("div",{className:"mt-6 flex justify-center",children:e.jsx(Ue,{count:A.totalPages,page:A.page,onChange:Pe})}),g&&e.jsx(_a,{tenantId:g.tenant_id,orgName:g.tenant_name||null})]})]})]})};export{Ga as AgentHubPage};
|
|
6
|
+
*/const ja=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M7 12h.01",key:"eqddd0"}]],va=Ve("circle-ellipsis",ja),Na=({agent:a,isLiked:t,isFavourited:n,onLikeToggle:i,onFavouriteToggle:o,onDownload:c,isLikeActionLoading:h=!1,isFavouriteActionLoading:y=!1,isDownloading:x=!1,actionError:d=null,onRetryAction:p,showActions:b=!0,viewerStateKnown:f=!0,orgName:j=null})=>{const k=je(),{isAuthenticated:u}=re(),_=a.description??"",[P,R]=r.useState(!1),l=r.useRef(null),v=r.useCallback(g=>{if(l.current?.disconnect(),l.current=null,!g)return;const C=()=>R(g.scrollHeight-g.clientHeight>1);C();const D=new ResizeObserver(C);D.observe(g),l.current=D},[]),M=u?f?t?"Unlike agent":"Like agent":"Your likes could not be read, so this is not shown as unliked.":"Log in to Radient to like agents",$=u?f?n?"Unfavourite agent":"Favourite agent":"Your favourites could not be read, so this is not shown as unfavourited.":"Log in to Radient to favourite agents",z=f?t?"Unlike agent":"Like agent":"Like state unavailable",O=f?n?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",E=a.visibility==="org";return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface transition-colors duration-fast ease-out-quart hover:bg-elevated",children:[e.jsxs("button",{type:"button",onClick:()=>k(`/agent-hub/${a.id}`),className:"flex min-h-0 flex-1 cursor-pointer flex-col gap-2 p-4 text-left","aria-label":`View details for ${a.name}`,children:[e.jsx("h3",{className:"truncate font-medium text-heading text-ink",children:a.name}),E&&e.jsx(oa,{orgName:j}),e.jsx(V,{content:P?_:"",children:e.jsx("span",{ref:v,className:"line-clamp-3 min-h-0 text-body-sm text-ink-muted",children:_})}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsx(ca,{tags:a.tags,categories:a.categories}),e.jsxs("p",{className:"truncate text-ink-dim text-meta",children:[a.account_metadata?.name??"Unknown author",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"updated ",da(new Date(a.updated_at))," ago"]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-0.5","data-viewer-state":E?"org":u?f?"known":"unknown":"signed-out",children:[!E&&e.jsxs(e.Fragment,{children:[e.jsx(V,{content:M,children:e.jsx("span",{children:e.jsxs(N,{variant:"ghost",size:"sm",onClick:u&&f?()=>i(a.id):void 0,disabled:h||!u||!f,"aria-label":z,className:L(t&&"text-danger"),children:[e.jsx(ua,{fill:t?"currentColor":"none","data-testid":"agent-like-heart"}),e.jsx("span",{"data-testid":"agent-like-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:a.like_count??0})]})})}),e.jsx(V,{content:$,children:e.jsx("span",{children:e.jsxs(N,{variant:"ghost",size:"sm",onClick:u?()=>o(a.id):void 0,disabled:y||!u||!f,"aria-label":O,className:L(n&&"text-warning"),children:[e.jsx(He,{fill:n?"currentColor":"none","data-testid":"agent-favourite-star"}),e.jsx("span",{"data-testid":"agent-favourite-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:a.favourite_count??0})]})})})]}),e.jsx(V,{content:"Downloads",children:e.jsxs("span",{className:"ml-1 inline-flex items-center gap-1 pr-1 text-ink-dim",children:[e.jsx(ge,{"aria-hidden":"true",className:"size-3.5"}),e.jsx("span",{className:"inline-flex h-4 min-w-6 items-center font-mono text-mono-sm",children:x?e.jsx(m,{className:"h-3 w-6"}):(a.download_count??0).toLocaleString()})]})})]}),b&&c&&e.jsx("div",{className:"ml-auto flex shrink-0 items-center",children:e.jsxs(N,{variant:"secondary",size:"sm",onClick:()=>c(a),disabled:x,"aria-label":`Download ${a.name}`,"data-tour-tag":"agent-hub-download-button",children:[e.jsx(ge,{"data-testid":"agent-download"}),"Get"]})})]}),d&&e.jsxs("output",{"data-testid":"agent-card-error",className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2 text-body-sm text-danger",children:[e.jsx("span",{className:"min-w-0 flex-1",children:d}),p&&e.jsx(N,{variant:"ghost",size:"sm",onClick:p,children:"Try again"})]})]})},ya=({agent:a,status:t,viewerStateKnown:n=!0,orgName:i=null})=>{const{isAuthenticated:o}=re(),[c,h]=r.useState(null),y=t?.liked??!1,x=t?.favourited??!1,d=ma(),p=ha(),b=ga(),f=()=>{!o||d.isPending||(h(null),d.mutate({agentId:a.id,isCurrentlyLiked:y},{onError:()=>h("like")}))},j=()=>{!o||p.isPending||(h(null),p.mutate({agentId:a.id,isCurrentlyFavourited:x},{onError:()=>h("favourite")}))},k=()=>{b.isPending||(h(null),b.mutate({agentId:a.id,agentName:a.name},{onError:()=>h("download")}))},u=c?c==="like"?{action:"like",error:d.error,retry:f}:c==="favourite"?{action:"favourite",error:p.error,retry:j}:{action:"download",error:b.error,retry:k}:null;return e.jsx(Na,{agent:a,isLiked:o&&y,isFavourited:o&&x,onLikeToggle:f,onFavouriteToggle:j,onDownload:k,isLikeActionLoading:d.isPending,isFavouriteActionLoading:p.isPending,isDownloading:b.isPending,viewerStateKnown:n,orgName:i,actionError:u?sa(u.action,u.error,a.name):null,onRetryAction:u?.retry})},xe=({selected:a,onClick:t,children:n,...i})=>e.jsx("button",{type:"button",onClick:t,"aria-pressed":a,className:L("flex w-full cursor-pointer items-center gap-2.5 rounded-sm px-3 py-1.5 text-left","text-body-sm transition-colors duration-fast ease-out-quart",a?We:"text-ink hover:bg-row-hover"),...i,children:n}),fe=Object.keys(xa),wa=a=>[...a].sort((t,n)=>{const i=fe.indexOf(t),o=fe.indexOf(n);return i!==-1&&o!==-1?i-o:i!==-1?-1:o!==-1?1:t.localeCompare(n)}),ka=({selectedCategory:a,onSelectCategory:t,categories:n})=>{const i=wa(a&&!n.includes(a)?[...n,a]:n);return e.jsxs("div",{className:"flex h-full flex-col overflow-y-auto",children:[e.jsx("h2",{className:"mb-2 px-3 font-medium text-ink-dim text-meta",children:"Categories"}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs(xe,{selected:a===null,onClick:()=>t(null),"data-testid":"category-all",children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:e.jsx(Qe,{size:16,"aria-hidden":"true"})}),"All categories"]}),i.map(o=>{const c=ve(o),h=o==="other"?e.jsx(va,{size:16}):c.icon;return e.jsxs(xe,{selected:a===o,onClick:()=>t(o),"data-testid":`category-${o}`,children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:h}),c.label]},o)})]})]})},Ne={all:["org-teams"],list:a=>[...Ne.all,"list",a]},Ca=({tenantId:a,enabled:t=!0})=>{const n=Ee({queryKey:Ne.list(a??""),queryFn:async()=>(await ta(a)).result??{teams:[]},enabled:t&&!!a,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,retry:Ie});return{...n,teams:n.data?.teams??[]}},Sa=(a,t)=>{const n=a?.name?.trim()||t?.trim()||"Team",i=a?.renamed_from?.trim()||null;return a?.invalid_name===!0&&i?{level:"warning",message:`Pulled "${n}". The published name "${i}" is not usable locally, so the team was stored as "${n}".`}:i?{level:"success",message:`Pulled "${n}" (you already have a team called "${i}").`}:{level:"success",message:`Pulled team "${n}".`}},Ta=()=>{const a=Le();return Ge({mutationFn:async({teamId:t,tenantId:n})=>{if(!he.baseUrl)throw new Error("Local Operator API URL is not configured.");return Je.pullOrgTeamFromRadient(he.baseUrl,t,n)},onSuccess:(t,n)=>{const i=Sa(t.result,n.name);i.level==="warning"?Ze(i.message):Xe(i.message),a.invalidateQueries({queryKey:["desktop","teams"]})},onError:t=>{console.error("Pulling an organization team failed:",t)}})},Aa=["refresh-hub","retry","sign-in"],_a=({tenantId:a,orgName:t})=>{const{teams:n,isLoading:i,isFetching:o,isError:c,error:h,refetch:y}=Ca({tenantId:a}),x=be(h),d=Ta(),[p,b]=r.useState(null),[f,j]=r.useState(null),[k,u]=r.useState(!1),_=r.useMemo(()=>{if(!Ke(d.error))return null;const l=n.find(v=>v.id===p);return na({code:d.error.code,message:d.error.message,details:d.error.details},{name:l?.name??"this team",hubAgentId:null,surface:"pull"})},[d.error,p,n]),P=(l,v)=>{switch(l){case"refresh-hub":y();break;case"retry":R(v);break;case"sign-in":u(!0);break}},R=l=>{d.isPending||(b(null),j(l.id),d.mutate({teamId:l.id,tenantId:a,name:l.name},{onSettled:()=>j(null),onError:()=>b(l.id)}))};return e.jsxs("section",{className:"mb-6 rounded-md bg-surface","aria-labelledby":"org-teams-heading","data-testid":"org-teams",children:[e.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-2 px-4 pt-3 pb-2",children:[e.jsx("h2",{id:"org-teams-heading",className:"font-medium text-heading text-ink",children:"Teams"}),!i&&!c&&e.jsxs("p",{className:"text-meta text-ink-dim","data-testid":"org-teams-count",children:[n.length," ",n.length===1?"team":"teams"," shared with"," ",t??"this organization"]})]}),i&&e.jsxs("div",{className:"flex flex-col gap-2 px-4 pb-4","data-testid":"org-teams-loading",children:[e.jsx("span",{className:"sr-only",children:"Loading teams…"}),e.jsxs("div",{"aria-hidden":"true",className:"flex flex-col gap-2",children:[e.jsx(m,{className:"h-4.5 w-40"}),e.jsx(m,{className:"h-3.5 w-64"})]})]}),!i&&c&&e.jsxs(Q,{variant:x?"warning":"danger",className:"mx-4 mb-4","data-testid":"org-teams-error",children:[e.jsx(W,{children:x==="plan"?"That organization needs an active Team plan":x==="no_access"?"You do not have access to that organization":"Teams could not be loaded"}),e.jsx(G,{children:x==="plan"?`Reading an organization's teams is part of the Team plan. An owner of ${t??"this organization"} can activate it in the Radient console, and then its teams will be listed here.`:x==="no_access"?`You are not a member of ${t??"that organization"}, so its teams are not listed here. An owner can invite you again.`:pe("The teams shared with this organization could not be read.",h)}),x!=="no_access"&&e.jsx("div",{className:"mt-2",children:e.jsx(N,{variant:"primary",size:"sm",onClick:()=>void y(),disabled:o,"aria-busy":o,children:o?"Trying…":"Try again"})})]}),!i&&!c&&n.length===0&&e.jsx("p",{className:"px-4 pb-4 text-body-sm text-ink-muted","data-testid":"org-teams-empty",children:"No teams have been shared with this organization yet."}),!i&&!c&&n.length>0&&e.jsx("ul",{className:"flex flex-col divide-y divide-hairline border-t border-hairline",children:n.map(l=>e.jsxs("li",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 px-4 py-2.5",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[e.jsx("span",{className:"truncate font-medium text-body text-ink",children:l.name}),e.jsxs("span",{className:"truncate text-meta text-ink-muted",children:[l.project||"No project",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),Pa(l),l.version?e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"v",l.version]}):null]}),p===l.id&&e.jsxs("div",{className:"mt-1 flex flex-col items-start gap-1","data-testid":"org-team-pull-error",children:[e.jsx("output",{className:"text-meta text-danger",children:_?.body??d.error?.message??`"${l.name}" could not be pulled.`}),_?.actions.filter(v=>Aa.includes(v)).map(v=>e.jsx(N,{variant:"primary",size:"sm",onClick:()=>P(v,l),children:ia[v]},v)),k&&e.jsx("div",{className:"mt-1","data-testid":"org-team-pull-reauth",children:e.jsx(ba,{titleText:"Sign in again",descriptionText:"",onSignInSuccess:()=>{u(!1),b(null),y()}})})]})]}),e.jsx(N,{variant:"secondary",size:"sm",onClick:()=>R(l),disabled:d.isPending,"aria-label":`Pull team ${l.name}`,children:f===l.id?"Pulling…":"Pull"})]},l.id))})]})},Pa=a=>a.members.length===0?"No members":a.members.map(t=>t.count>1?`${t.role} ×${t.count}`:t.role).join(", "),Ra=(a,t)=>{const[n,i]=r.useState(a);return r.useEffect(()=>{const o=setTimeout(()=>i(a),t);return()=>clearTimeout(o)},[a,t]),n},H=[{value:"download_count:desc",label:"Most downloaded",sort:"download_count",order:"desc"},{value:"like_count:desc",label:"Most liked",sort:"like_count",order:"desc"},{value:"favourite_count:desc",label:"Most favourited",sort:"favourite_count",order:"desc"},{value:"created_at:desc",label:"Newest",sort:"created_at",order:"desc"},{value:"updated_at:desc",label:"Recently updated",sort:"updated_at",order:"desc"},{value:"name:asc",label:"Name (A to Z)",sort:"name",order:"asc"}],za=[{value:"name",label:"Name"},{value:"description",label:"Description"}],Oa=300,F="public",Ea=()=>e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface",children:[e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 p-4",children:[e.jsx(m,{className:"h-5.5 w-2/3"}),e.jsx(m,{className:"h-3.5 w-full"}),e.jsx(m,{className:"h-3.5 w-full"}),e.jsx(m,{className:"h-3.5 w-1/2"}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(m,{className:"h-5.5 w-24"}),e.jsx(m,{className:"h-5.5 w-20"})]}),e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx(m,{className:"h-5.5 w-24"})})]}),e.jsx(m,{className:"h-4.5 w-32"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 border-t border-hairline px-3 py-2",children:[e.jsx(m,{className:"size-4"}),e.jsx(m,{className:"h-4 w-6"}),e.jsx(m,{className:"size-4"}),e.jsx(m,{className:"h-4 w-6"}),e.jsx(m,{className:"ml-auto h-7 w-16"})]})]}),Ga=()=>{const a=je(),{isAuthenticated:t}=re(),[n,i]=r.useState(1),[o]=r.useState(12),[c,h]=r.useState(null),[y,x]=r.useState(""),[d,p]=r.useState("name"),[b,f]=r.useState(H[0].value),[j,k]=r.useState(F),[u,_]=r.useState([]),P=Ra(y,Oa),R=H.find(s=>s.value===b)??H[0],l=Fe(),v=ea(),M=Me(l.data,"radient_org"),$=t?De(M,v):null,{memberships:z}=ra({enabled:Ye(M)}),O=r.useMemo(()=>$e(z),[z]),E=j===F||O.some(s=>s.tenant_id===j);r.useEffect(()=>{E||k(F)},[E]);const g=j===F?null:O.find(s=>s.tenant_id===j)??null,C=g?.tenant_id,D=g?.role==="owner"||g?.role==="admin",ye=r.useMemo(()=>new Map(z.map(s=>[s.tenant_id,s.tenant_name])),[z]),{data:U,agents:we,isLoading:ke,isFetching:S,error:T,refetch:le,pagination:A}=la({page:n,perPage:o,categories:c?[c]:void 0,name:d==="name"&&P||void 0,description:d==="description"&&P||void 0,sort:R.sort,order:R.order,tenantId:C}),I=g?be(T):null,Y=we??[],oe=S&&U!==void 0,{statuses:ce,isKnown:Ce,isError:Se,isFetching:Z,refetch:Te}=fa({agentIds:C?[]:Y.map(s=>s.id)}),X=r.useRef(null),J=r.useRef(null),[de,Ae]=r.useState(0);r.useEffect(()=>{de!==0&&(X.current??J.current)?.focus()},[de]);const ue=r.useRef(null),K=r.useRef(!1),ee=r.useMemo(()=>[...new Set((U?.records??[]).flatMap(s=>s.categories??[]))],[U]);r.useEffect(()=>{_(s=>ee.every(ae=>s.includes(ae))?s:[...new Set([...s,...ee])])},[ee]);const q=c!==null||P!=="",_e=()=>{h(null),x(""),i(1),Ae(s=>s+1)},w=(ke||S)&&U===void 0,me=!w&&!q&&(T!==null||Y.length===0);r.useEffect(()=>{!K.current||w||(K.current=!1,T?ue.current?.focus():(X.current??J.current)?.focus())},[w,T]);const Pe=s=>{i(s)},Re=s=>{h(s),i(1)},ze=s=>{x(s),i(1)},Oe=s=>{p(s),i(1)};return e.jsxs("div",{className:"flex h-full flex-col gap-8 p-6",children:[e.jsx(qe,{title:"Agent hub",subtitle:"Discover and download community agents on Radient",icon:aa}),e.jsxs("div",{className:"flex min-h-0 flex-1 flex-row overflow-hidden",children:[e.jsx("div",{className:"mr-6 hidden w-60 shrink-0 rounded-md bg-surface p-2 md:block","data-tour-tag":"agent-hub-sidebar-container",children:!me&&e.jsx(ka,{selectedCategory:c,onSelectCategory:Re,categories:u})}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-y-auto",children:[$&&e.jsxs(Q,{variant:"warning",className:"mb-3 max-w-2xl","data-testid":"agent-hub-org-unavailable",children:[e.jsx(W,{children:"Organizations are unavailable"}),e.jsx(G,{children:$})]}),O.length>0&&e.jsxs("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[e.jsx("span",{id:"agent-hub-scope-label",className:"text-meta text-ink-muted",children:"Showing"}),e.jsxs(se,{value:j,onValueChange:s=>{k(s),i(1)},children:[e.jsx(te,{className:"w-56","aria-labelledby":"agent-hub-scope-label","data-testid":"agent-hub-scope",children:e.jsx(ne,{})}),e.jsxs(ie,{children:[e.jsx(B,{value:F,children:"Public hub"}),O.map(s=>e.jsx(B,{value:s.tenant_id,children:s.tenant_name||"Organization"},s.tenant_id))]})]})]}),!me&&e.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.jsxs("div",{className:L("flex min-w-56 flex-1 items-center rounded-sm border border-control bg-surface","transition-colors duration-fast ease-out-quart","has-[:focus-visible]:outline-solid has-[:focus-visible]:outline-2","has-[:focus-visible]:outline-accent has-[:focus-visible]:outline-offset-2"),children:[e.jsx(Be,{ref:X,type:"search",value:y,onChange:s=>ze(s.target.value),placeholder:"Search agents","aria-label":"Search agents",className:"h-8 min-w-0 flex-1 border-0 bg-transparent outline-none","data-testid":"agent-hub-search"}),e.jsxs(se,{value:d,onValueChange:Oe,children:[e.jsx(te,{className:"w-auto shrink-0 border-y-0 border-l border-hairline border-r-0 bg-transparent pl-2 outline-none","aria-label":"Search in","data-testid":"agent-hub-search-scope",children:e.jsx(ne,{})}),e.jsx(ie,{children:za.map(s=>e.jsx(B,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs(se,{value:b,onValueChange:f,children:[e.jsx(te,{className:"w-48","aria-label":"Sort agents","data-testid":"agent-hub-sort",children:e.jsx(ne,{})}),e.jsx(ie,{children:H.map(s=>e.jsx(B,{value:s.value,children:s.label},s.value))})]})]}),e.jsxs("p",{"aria-live":"polite",className:"mb-3 text-meta text-ink-dim","data-testid":"agent-hub-status",children:[w?"Loading agents…":A?`${A.totalRecords} ${A.totalRecords===1?"agent":"agents"}`:"",oe?e.jsx(e.Fragment,{children:" Updating…"}):null]}),t&&Se&&e.jsxs("output",{className:"mb-3 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-hub-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so no card shows a viewer state."}),e.jsx(N,{variant:"ghost",size:"sm",onClick:()=>void Te(),disabled:Z,"aria-busy":Z,children:Z?"Trying…":"Try again"})]}),w&&e.jsx("div",{"data-testid":"agent-hub-loading",className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6",children:Array.from({length:6},(s,ae)=>e.jsx(Ea,{},ae))}),w&&A===void 0&&e.jsx("div",{"aria-hidden":"true",className:"mt-6 flex min-h-13 items-center justify-center","data-testid":"agent-hub-pager-placeholder",children:e.jsx(m,{className:"h-4 w-24"})}),e.jsx("output",{"aria-live":"polite","data-testid":"agent-hub-outage",className:L(!w&&T&&!I?"block":"sr-only"),children:!w&&T&&!I&&e.jsxs(Q,{variant:"danger",className:"max-w-2xl","aria-busy":S,"data-testid":"agent-hub-error",children:[e.jsx(W,{children:t?"The hub could not be loaded":"Sign in to use the hub"}),e.jsx(G,{children:t?pe("The agent list could not be loaded.",T):"You are not signed in to Radient, so the hub has no credential to read the agent list with. Sign in on the settings page, then try again."}),e.jsx("div",{className:"mt-2",children:e.jsx(N,{ref:ue,variant:"outline",size:"sm",onClick:()=>{K.current=!0,le()},disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})})]})}),!w&&I&&g&&e.jsxs(Q,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-no-access",children:[e.jsx(W,{children:I==="plan"?"That organization needs an active Team plan":"You do not have access to that organization"}),e.jsx(G,{children:I==="plan"?`Sharing agents inside an organization is part of the Team plan. An owner of ${g.tenant_name||"this organization"} can activate it in the Radient console, and then its agents will be listed here.`:`You are not a member of ${g.tenant_name||"that organization"}, so its agents are not listed here. An owner can invite you again.`}),I==="plan"&&e.jsx("div",{className:"mt-2",children:e.jsx(N,{variant:"primary",size:"sm",onClick:()=>void le(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})})]}),!w&&!T&&e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6","aria-busy":oe,children:Y.length===0?e.jsxs("div",{"data-testid":"agent-hub-empty",className:L("col-span-full w-full flex flex-col items-center gap-2 rounded-md bg-surface px-6 py-10 text-center",!C&&"max-w-2xl justify-self-center"),children:[e.jsx("p",{className:"text-heading text-ink",children:C?"This organization has no shared agents yet.":c?`No agents in ${ve(c).label}.`:q?"No agents match that search.":"The hub is empty."}),e.jsx("p",{className:"max-w-md text-body-sm text-ink-muted",children:C?`Agents published into ${g?.tenant_name||"this organization"} appear here for its members.`:c?"Nothing in this category yet. Clear the filter to see the whole hub.":q?"No agent's name or description carries that. Clear it to see the whole hub.":"Nobody has published an agent yet. Yours could be the first."}),e.jsx("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:q?e.jsx(N,{variant:"secondary",onClick:_e,children:c?"Clear filter":"Clear search"}):C&&!D?null:e.jsx(N,{ref:J,variant:"secondary",onClick:()=>a("/agents"),children:"Publish an agent"})})]}):Y.map(s=>e.jsx(ya,{agent:s,status:t?ce[s.id]:void 0,viewerStateKnown:t&&pa(Ce,ce,s.id),orgName:s.visibility==="org"?ye.get(s.tenant_id)??null:null},s.id))}),!w&&A&&A.totalPages>1&&e.jsx("div",{className:"mt-6 flex justify-center",children:e.jsx(Ue,{count:A.totalPages,page:A.page,onChange:Pe})}),g&&e.jsx(_a,{tenantId:g.tenant_id,orgName:g.tenant_name||null})]})]})]})};export{Ga as AgentHubPage};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./legacy-agents-page-xSUV6wUg.js","./index-C17iOszj.js","./index-R0cHU6YS.css","./index-BsveCKct.js","./aida-control-BqbEHtVs.js","./ui-preferences-store-CyKvDymq.js","./textarea-CPyoWJfR.js","./error-boundary-X9vF0zez.js","./console-mirror-CqlxE8VR.js","./console-mirror-DOrYoP_4.css","./index-CSPo12AE.css","./page-header-Ct_E4hXM.js","./settings-section-yg8wX_kN.js","./org-surface-gate-CQZDYvz1.js","./use-memberships-query-Q96GogTV.js","./radient-auth-buttons-DCKuV_IZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{u as O,a as Q,b as J,c as V,d as W,B as G,U as H,P as X,r as Y,_ as Z,e as $}from"./index-BsveCKct.js";import{j as e,r as n,c as w}from"./index-C17iOszj.js";import{u as ee,d as te,a as ae,b as se,c as z,e as L}from"./aida-control-BqbEHtVs.js";import{B as h}from"./textarea-CPyoWJfR.js";import"./ui-preferences-store-CyKvDymq.js";import"./error-boundary-X9vF0zez.js";import"./console-mirror-CqlxE8VR.js";const ne=n.lazy(()=>Z(()=>import("./legacy-agents-page-xSUV6wUg.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url).then(t=>({default:t.LegacyAgentsPage}))),m="w-full rounded-md border border-control bg-surface px-3 py-2 text-body-sm text-ink";function T({profile:t,creating:E,onSaved:b}){const[j,r]=n.useState(!1),[v,c]=n.useState(E),[p,x]=n.useState(t?.name??""),[g,y]=n.useState(t?.kind??"role"),[P,d]=n.useState(t?.description??""),[N,u]=n.useState(t?.instructions??""),[_,D]=n.useState(t?.tools?.join(", ")??""),[I,k]=n.useState(t?.effort??"inherit"),[U,R]=n.useState(t?.delegate??!1),[f,a]=n.useState(!1),[o,l]=n.useState(null),i=n.useRef(null),C=$(),S=E||j,K=async s=>{if(s.preventDefault(),f)return;const M={kind:g,description:P,instructions:N,tools:_.split(",").map(q=>q.trim()).filter(Boolean),effort:I,delegate:U},A=JSON.stringify({name:p,fields:M,fresh:S});if(i.current&&i.current.body!==A){l("The previous save has not been confirmed. Retry it unchanged or reload the profile to reconcile before editing again.");return}i.current??={id:crypto.randomUUID(),body:A},a(!0),l(null);try{const q=await L({op:S?"profiles.create":"profiles.update",requestId:i.current.id,name:p,fields:M});i.current=null,c(!1),b(q.name)}catch(q){l(q instanceof Error?q.message:"Profile could not be saved.")}finally{a(!1)}},F=async()=>{if(!(!t||f)){a(!0),l(null);try{const s=await L({op:"profiles.install",name:t.name,requestId:crypto.randomUUID()});c(!1),r(!1),i.current=null,x(s.name),y(s.kind),d(s.description??""),u(s.instructions??""),D(s.tools?.join(", ")??""),k(s.effort??"inherit"),R(s.delegate??!1),b(s.name)}catch(s){l(s instanceof Error?s.message:"Profile could not be installed.")}finally{a(!1)}}};return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:S?j?"Extend agent":"Create agent":t?.name}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"Reusable instructions shared by agent commands, subagents and teams. Chats remain separate."})]}),t&&!S&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("span",{className:"text-meta text-ink-muted",children:[t.source==="builtin"?"Built-in":t.source==="installed"?"Installed":"Custom",t.divergent_fields?.length?" · Modified":""," ·"," ",t.kind]}),t.source==="builtin"?e.jsx(h,{variant:"outline",onClick:F,disabled:f,children:"Install"}):e.jsx(h,{variant:"outline",onClick:()=>c(!0),children:"Edit"}),e.jsx(h,{variant:"outline",onClick:()=>{r(!0),c(!0),x(""),i.current=null},children:"Extend"}),e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"agent",name:t.name}),C("/chat")},children:"New chat"})]}),o&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:o}),!v&&t?.source==="builtin"&&e.jsx("p",{id:"builtin-readonly",className:"text-body-sm text-ink-muted",children:"Built-in agents are read-only. Install this one to edit it, or Extend it to start a separate agent from its instructions."}),e.jsxs("form",{onSubmit:K,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:!v||f,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,value:p,disabled:!S,required:!0,"aria-describedby":t?.source==="builtin"?"builtin-readonly":void 0,onChange:s=>x(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Kind"}),e.jsxs("select",{className:m,value:g,disabled:!S,onChange:s=>y(s.target.value),children:[e.jsx("option",{value:"role",children:"Role"}),e.jsx("option",{value:"specialist",children:"Specialist"})]})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"When to use this agent"}),e.jsx("input",{className:m,value:P,maxLength:8e3,onChange:s=>d(s.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Instructions"}),e.jsx("textarea",{className:w(m,"min-h-52"),value:N,required:!0,maxLength:8e3,onChange:s=>u(s.target.value)})]}),g==="role"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Allowed tools"}),e.jsx("input",{className:m,value:_,onChange:s=>D(s.target.value),placeholder:"All tools when empty; otherwise comma-separated names"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Effort tier"}),e.jsx("input",{className:m,value:I,onChange:s=>k(s.target.value),"aria-describedby":"effort-help"}),e.jsx("span",{id:"effort-help",className:"text-meta text-ink-muted",children:"Use inherit, or a tier configured in backend settings. Unsupported tiers are rejected before saving."})]}),e.jsxs("label",{className:"flex cursor-pointer items-center gap-2 text-body-sm",children:[e.jsx("input",{type:"checkbox",checked:U,onChange:s=>R(s.target.checked)}),"May delegate to subagents"]})]})]}),v&&e.jsx(h,{type:"submit",disabled:f,children:f?"Saving…":S?"Create agent":"Save changes"})]}),!v&&t?.packaged_instructions&&t.divergent_fields?.length?e.jsxs("details",{className:"text-body-sm",children:[e.jsx("summary",{children:"Compare packaged instructions"}),e.jsx("pre",{className:"mt-2 whitespace-pre-wrap text-body-sm text-ink-muted",children:t.packaged_instructions})]}):null]})}function B({team:t,onSaved:E}){const[b,j]=n.useState(t?.name??""),[r,v]=n.useState(t?.description??""),[c,p]=n.useState(t?.manager??"manager"),[x,g]=n.useState((t?.members??[]).map(a=>({...a,key:crypto.randomUUID()}))),[y,P]=n.useState(t?.instructions??""),[d,N]=n.useState(t?.project??""),[u,_]=n.useState(!1),[D,I]=n.useState(null),k=n.useRef(null),U=$(),R=async a=>{if(a.preventDefault(),u)return;const o={name:b,description:r,manager:c,members:x.map(({key:i,...C})=>C),instructions:y,project:d},l=JSON.stringify(o);if(k.current&&k.current.body!==l){I("The previous save has not been confirmed. Reload the team before changing that request.");return}k.current??={id:crypto.randomUUID(),body:l},_(!0),I(null);try{const i=t?await L({op:"teams.update",name:t.name,requestId:k.current.id,fields:o}):await L({op:"teams.create",requestId:k.current.id,fields:o});k.current=null,E(i.name)}catch(i){I(i instanceof Error?i.message:"Team could not be saved.")}finally{_(!1)}},f=(a,o)=>g(l=>l.map((i,C)=>C===a?{...i,...o}:i));return e.jsxs("div",{className:"max-w-3xl space-y-6",children:[e.jsxs("header",{children:[e.jsx("h1",{className:"text-title",children:t?t.name:"Create team"}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:"The manager leads the chat. Members retain their own instructions and start only when delegated work."})]}),t&&e.jsx(h,{onClick:()=>{z.getState().stageDraft({kind:"team",name:t.name}),U("/chat")},children:"New team chat"}),D&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:D}),e.jsxs("form",{onSubmit:R,className:"space-y-4",children:[e.jsxs("fieldset",{disabled:u,className:"space-y-4",children:[e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Name"}),e.jsx("input",{className:m,required:!0,maxLength:64,value:b,onChange:a=>j(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Description"}),e.jsx("input",{className:m,value:r,onChange:a=>v(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Manager agent"}),e.jsx("input",{className:m,required:!0,value:c,onChange:a=>p(a.target.value)})]}),e.jsxs("section",{className:"space-y-2",children:[e.jsx("h2",{className:"text-heading",children:"Members"}),x.map((a,o)=>e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("input",{className:w(m,"w-48 flex-1"),"aria-label":`Member ${o+1} name`,required:!0,value:a.role,onChange:l=>f(o,{role:l.target.value})}),e.jsxs("select",{className:w(m,"w-32"),"aria-label":`Member ${o+1} kind`,value:a.kind,onChange:l=>f(o,{kind:l.target.value}),children:[e.jsx("option",{value:"agent",children:"Agent"}),e.jsx("option",{value:"team",children:"Nested team"})]}),e.jsx("input",{className:w(m,"w-20"),"aria-label":`Member ${o+1} count`,type:"number",min:1,max:16,value:a.count,onChange:l=>f(o,{count:Number(l.target.value)})}),e.jsx(h,{type:"button",variant:"ghost",onClick:()=>g(l=>l.filter((i,C)=>C!==o)),children:"Remove"})]},a.key)),e.jsx(h,{type:"button",variant:"outline",onClick:()=>g(a=>[...a,{role:"",count:1,kind:"agent",key:crypto.randomUUID()}]),children:"Add member"})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Collaboration instructions"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:y,onChange:a=>P(a.target.value)})]}),e.jsxs("label",{className:"block space-y-1 text-body-sm",children:[e.jsx("span",{children:"Project brief"}),e.jsx("textarea",{className:w(m,"min-h-36"),maxLength:8e3,value:d,onChange:a=>N(a.target.value)})]})]}),e.jsx(h,{type:"submit",disabled:u,children:u?"Saving…":t?"Save team":"Create team"})]})]})}function me(){const t=O(),{agentId:E}=Q(),[b,j]=J(),r=b.get("kind")==="team"||b.get("create")==="team",v=b.has("create"),c=b.get("name"),p=ee(),x=te(p.data,r?"team_catalogue":"profile_catalogue"),g=V(x&&!r),y=W(x&&r),P=ae(),d=se({queryKey:["desktop",r?"team":"profile",c],enabled:x&&!!c&&!v,queryFn:()=>L({op:r?"teams.get":"profiles.get",name:c??""}),retry:!1}),N=async u=>{await P.invalidateQueries({queryKey:["desktop"]}),j({kind:r?"team":"agent",name:u})};return E?e.jsx(n.Suspense,{fallback:e.jsx("p",{className:"p-6 text-body",children:"Loading saved agent…"}),children:e.jsx(ne,{})}):e.jsxs("div",{className:"flex h-full min-h-0 bg-canvas text-ink",children:[e.jsxs("aside",{ref:t,className:"flex w-64 shrink-0 flex-col gap-4 border-r border-hairline bg-surface p-4",children:[e.jsx("h1",{className:"text-heading",children:"Agents and teams"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(h,{variant:r?"ghost":"outline",onClick:()=>j({kind:"agent"}),children:[e.jsx(G,{className:"size-4"}),"Agents"]}),e.jsxs(h,{variant:r?"outline":"ghost",onClick:()=>j({kind:"team"}),children:[e.jsx(H,{className:"size-4"}),"Teams"]})]}),e.jsxs(h,{variant:"outline",disabled:!x,onClick:()=>j({create:r?"team":"agent"}),children:[e.jsx(X,{className:"size-4"}),r?"Create team":"Create agent"]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(r?y.data:g.data)?.map(u=>e.jsx("button",{type:"button",className:w("flex h-8 w-full items-center rounded-md px-2 text-left text-body-sm hover:bg-row-hover",u.name===c&&Y),onClick:()=>j({kind:r?"team":"agent",name:u.name}),children:e.jsx("span",{className:"truncate",children:u.name})},u.name))})]}),e.jsx("main",{className:"min-w-0 flex-1 overflow-auto p-6",children:x?g.error||y.error||d.error?e.jsxs("div",{role:"alert",children:[e.jsx("p",{className:"text-danger",children:g.error?.message||y.error?.message||d.error?.message}),e.jsx(h,{variant:"outline",onClick:()=>{g.refetch(),y.refetch(),d.refetch()},children:"Retry"})]}):v?r?e.jsx(B,{onSaved:N},"create-team"):e.jsx(T,{creating:!0,onSaved:N},"create-agent"):c&&d.isLoading?e.jsx("p",{"aria-live":"polite",children:"Loading details…"}):c&&d.data?r?e.jsx(B,{team:d.data,onSaved:N},c):e.jsx(T,{profile:d.data,creating:!1,onSaved:N},`${c}:${d.data.source}`):e.jsxs("div",{children:[e.jsx("h2",{className:"text-title",children:r?"Reusable teams":"Reusable agents"}),e.jsx("p",{className:"mt-2 text-body text-ink-muted",children:"Select a definition to view or edit it. A new chat does not change its definition."})]}):e.jsxs("div",{"aria-live":"polite",className:"space-y-3 text-body-sm",children:[e.jsx("p",{children:p.isLoading?"Connecting to the backend…":p.error?p.error.message:"Update the backend to manage reusable agents and teams. Saved chats are unchanged."}),e.jsx(h,{variant:"outline",onClick:()=>void p.refetch(),children:"Retry connection"})]})})]})}export{me as AgentsPage};
|