local-operator-ui 0.31.27 → 0.31.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/index.js +240 -39
- package/out/preload/index.js +37 -0
- package/out/renderer/assets/{_basePickBy-oM-LmypH.js → _basePickBy-D16oopNi.js} +1 -1
- package/out/renderer/assets/{_baseUniq-CfyEpPZd.js → _baseUniq-BYKYfwtj.js} +1 -1
- package/out/renderer/assets/{agent-details-page-DIBks4X5.js → agent-details-page-CpwkLhdq.js} +2 -2
- package/out/renderer/assets/{agent-hub-page-oV4gEqC4.js → agent-hub-page-BYeba0zC.js} +3 -3
- package/out/renderer/assets/{agents-page-CZrNPorc.js → agents-page-BQdR1fgV.js} +3 -3
- package/out/renderer/assets/arc-BYg3WIzZ.js +1 -0
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-np6HwkQz.js +36 -0
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-Cn1dvDZU.js → blockDiagram-JOT3LUYC-CaR7YwVl.js} +2 -2
- package/out/renderer/assets/{book-open-P6KBj9Du.js → book-open--g1VlVMp.js} +1 -1
- package/out/renderer/assets/browser-page-BPwZPQY2.js +1 -0
- package/out/renderer/assets/browser-webauthn-prompt-Bsk0eXNZ.js +1 -0
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-B8F1XGHT.js → c4Diagram-VJAJSXHY-DqBT3rl5.js} +4 -4
- package/out/renderer/assets/channel-mWTr8anL.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-CVoXO2u6.js → chunk-4BMEZGHF-B7-MzFPi.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-LFo0s6P7.js → chunk-A2AXSNBT-B9IqNrNg.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-B8s36YJo.js → chunk-AEK57VVT-DFzBJNd9.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-BKkRpyOx.js → chunk-D6G4REZN-DW-XzsAv.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-qoB87AlE.js → chunk-RZ5BOZE2-C7el6yre.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-BACgoEDe.js → chunk-XZIHB7SX-BGYrq1Wn.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-DsNAZ0y6.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-DsNAZ0y6.js +1 -0
- package/out/renderer/assets/clone-48M_nlg0.js +1 -0
- package/out/renderer/assets/{console-mirror-fXJ5fMxl.js → console-mirror-ffbsozOd.js} +1 -1
- package/out/renderer/assets/{consoleCapture-Df4uIOqu.js → consoleCapture-CiApa6fi.js} +1 -1
- package/out/renderer/assets/conversation-input-sync-CIGg7Rga.css +1 -0
- package/out/renderer/assets/conversation-input-sync-DQUYkOfh.js +911 -0
- package/out/renderer/assets/dagre-OKDRZEBW-BVScRDvj.js +4 -0
- package/out/renderer/assets/diagram-SSKATNLV-B0iQ6YY1.js +43 -0
- package/out/renderer/assets/diagram-VNBRO52H-Co6YPtUT.js +24 -0
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-CGjlhqbg.js → erDiagram-Q7BY3M3F-C9XIuSQl.js} +2 -2
- package/out/renderer/assets/error-boundary-DH4MhqhL.js +126 -0
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-rb1I18B8.js → flowDiagram-4HSFHLVR-QTHrGPk1.js} +2 -2
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-D-bSpERZ.js → ganttDiagram-APWFNJXF-qC1VnBIz.js} +2 -2
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-D7UGP8uH.js +65 -0
- package/out/renderer/assets/{graph-BkNT14na.js → graph-BIUuz2bp.js} +1 -1
- package/out/renderer/assets/index-C5Ighs_C.css +1 -0
- package/out/renderer/assets/index-Ckvy9Zge.js +1 -0
- package/out/renderer/assets/{index-_dbvHdgc.js → index-D-TXozHA.js} +1 -1
- package/out/renderer/assets/index-DHKnfVbX.css +1 -0
- package/out/renderer/assets/index-DTc-sJ8S.js +7 -0
- package/out/renderer/assets/index-vK67PDia.js +784 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-DYtVGJC7.js +2 -0
- package/out/renderer/assets/installer-BcSiJA6N.js +1 -0
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-B5bji5kb.js → journeyDiagram-U35MCT3I-vVg2sFTp.js} +6 -6
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-BGi8PMEB.js → kanban-definition-NDS4AKOZ-BE36wSk2.js} +4 -4
- package/out/renderer/assets/{layout-D3rwe0Wt.js → layout-bOQrw0b8.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-DnpWTuf8.js → legacy-agents-page-BSKz_UrV.js} +4 -4
- package/out/renderer/assets/{mermaid.core-CHiYins7.js → mermaid.core-DpvY6Bhk.js} +5 -5
- package/out/renderer/assets/mesh-page-9Q8Sc9J_.js +1 -0
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-B9PPN6sb.js +95 -0
- package/out/renderer/assets/mini-ySULdryU.js +1 -0
- package/out/renderer/assets/org-surface-gate-Dl4zcl5q.js +1 -0
- package/out/renderer/assets/{page-header-B3kbzqCp.js → page-header-DazB-GQz.js} +1 -1
- package/out/renderer/assets/pieDiagram-IB7DONF6-DkioNhQY.js +30 -0
- package/out/renderer/assets/projects-page-C37RiUJz.js +35 -0
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-BZkLgvoE.js → quadrantDiagram-7GDLP6J5-4m3m0N6F.js} +4 -4
- package/out/renderer/assets/{radar-MK3ICKWK-QB0E4nFC.js → radar-MK3ICKWK-DS8YGAOb.js} +1 -1
- package/out/renderer/assets/radient-auth-buttons-DZeHRL7u.js +1 -0
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Cb1rqfe3.js → requirementDiagram-KVF5MWMF-DsBdUu3C.js} +3 -3
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-CnaPYKR6.js +10 -0
- package/out/renderer/assets/{schedules-page-DnHKOQij.js → schedules-page-B0dSGpXt.js} +12 -12
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-Bh-yCDC0.js → sequenceDiagram-X6HHIX6F-C3eja1QY.js} +2 -2
- package/out/renderer/assets/settings-page-CrMsVX3d.js +292 -0
- package/out/renderer/assets/{settings-section-C9etJXA9.js → settings-section-BGG4XzV0.js} +1 -1
- package/out/renderer/assets/stateDiagram-DGXRK772-CjFKiyXn.js +1 -0
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BsbYpgkp.js +1 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-pgK_gxyk.js → timeline-definition-BDJGKUSR-CAXy0nQD.js} +2 -2
- package/out/renderer/assets/ui-preferences-store-B6Fr0UX9.js +1 -0
- package/out/renderer/assets/{use-download-agent-mutation-CXw_g4Rv.js → use-download-agent-mutation-LsNre_-6.js} +3 -3
- package/out/renderer/assets/use-memberships-query-BgiSfYgr.js +1 -0
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-CYYxIZAM.js → xychartDiagram-VJFVF3MP-CfNm8SWG.js} +6 -6
- package/out/renderer/console-capture.html +5 -5
- package/out/renderer/index.html +9 -9
- package/out/renderer/installer.html +4 -5
- package/out/renderer/mini.html +7 -6
- package/package.json +2 -3
- package/out/renderer/assets/aida-control-CQx1CGx-.js +0 -50
- package/out/renderer/assets/arc-DXJiD7SC.js +0 -1
- package/out/renderer/assets/architectureDiagram-IEHRJDOE-VHM5BLyo.js +0 -36
- package/out/renderer/assets/browser-page-D6eiItUp.js +0 -1
- package/out/renderer/assets/browser-webauthn-prompt-CByfVm08.js +0 -1
- package/out/renderer/assets/channel-DZQWNfux.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-jw9F6ZK-.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-jw9F6ZK-.js +0 -1
- package/out/renderer/assets/clone-DzWAH3PE.js +0 -1
- package/out/renderer/assets/dagre-OKDRZEBW-CLMw1D7m.js +0 -4
- package/out/renderer/assets/diagram-SSKATNLV-plMydQ5N.js +0 -43
- package/out/renderer/assets/diagram-VNBRO52H-BptPse7H.js +0 -24
- package/out/renderer/assets/error-boundary-D3Um1PIl.js +0 -6
- package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-DDJQIXgd.js +0 -65
- package/out/renderer/assets/index-2qmFWi_F.css +0 -1
- package/out/renderer/assets/index-BXamXVGw.js +0 -7
- package/out/renderer/assets/index-D3ICBbhi.js +0 -1642
- package/out/renderer/assets/index-DHcQTmYa.js +0 -1
- package/out/renderer/assets/index-DuUnXH9L.css +0 -1
- package/out/renderer/assets/infoDiagram-PH2N3AL5-Bg2dnJEw.js +0 -2
- package/out/renderer/assets/installer-D-IQpqXR.js +0 -1
- package/out/renderer/assets/mesh-page-B2_ZtHTQ.js +0 -1
- package/out/renderer/assets/mindmap-definition-ALO5MXBD-BwO55Ck2.js +0 -95
- package/out/renderer/assets/mini-D7VYY0xP.js +0 -1
- package/out/renderer/assets/org-surface-gate-Da1VmZbG.js +0 -1
- package/out/renderer/assets/pieDiagram-IB7DONF6-j0i7dQ2D.js +0 -30
- package/out/renderer/assets/projects-page-f-tkHojn.js +0 -35
- package/out/renderer/assets/radient-auth-buttons-2wnsv7f6.js +0 -1
- package/out/renderer/assets/sankeyDiagram-QLVOVGJD-ST_5m9Zy.js +0 -10
- package/out/renderer/assets/settings-page-D1dF4GZE.js +0 -292
- package/out/renderer/assets/stateDiagram-DGXRK772-D6MGh56o.js +0 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Dvv5Bcoz.js +0 -1
- package/out/renderer/assets/textarea-DeXGhzIK.js +0 -121
- package/out/renderer/assets/ui-preferences-store-BLiDaCIL.js +0 -1
- package/out/renderer/assets/use-memberships-query-BGPQ6jDl.js +0 -1
package/out/main/index.js
CHANGED
|
@@ -62,12 +62,14 @@ function pairingHasRemedy(cause) {
|
|
|
62
62
|
const id$1 = zod.z.string().min(1).max(128).regex(/^[a-zA-Z0-9_-]+$/);
|
|
63
63
|
const settingKey = zod.z.string().min(1).max(256).regex(/^[a-zA-Z0-9_][a-zA-Z0-9_.-]*$/);
|
|
64
64
|
const secret = zod.z.string().min(1).max(32768);
|
|
65
|
-
const
|
|
65
|
+
const sessionIdPattern = /^[a-f0-9]{12}$/;
|
|
66
|
+
const sessionId = zod.z.string().regex(sessionIdPattern);
|
|
66
67
|
const skillCwd = zod.z.string().min(1).max(4096);
|
|
67
68
|
const mcpServerName = zod.z.string().regex(/^[A-Za-z0-9_.:-]{1,100}$/);
|
|
68
69
|
const mcpSecretReference = zod.z.string().regex(/^\$\{[A-Za-z_][A-Za-z0-9_]*\}$/);
|
|
69
70
|
const mcpOperationId = zod.z.string().regex(/^[a-f0-9]{32}$/);
|
|
70
|
-
const
|
|
71
|
+
const mcpCatalogCwdPattern = /^(\/|[A-Za-z]:[\\/])/;
|
|
72
|
+
const mcpCatalogCwd = zod.z.string().min(1).max(4096).regex(mcpCatalogCwdPattern);
|
|
71
73
|
const SUBSCRIPTION_ID_PATTERN = /^[a-f0-9]{32}$/;
|
|
72
74
|
const requestId = zod.z.string().regex(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/);
|
|
73
75
|
const meshId = zod.z.string().regex(/^[A-Za-z0-9_-]{1,128}$/);
|
|
@@ -3108,6 +3110,9 @@ const MINI_VIEW_SUMMONED = "mini-view:summoned";
|
|
|
3108
3110
|
const MINI_VIEW_DISMISS = "mini-view:dismiss";
|
|
3109
3111
|
const MINI_VIEW_REGISTRATION = "mini-view:registration";
|
|
3110
3112
|
const MINI_VIEW_REGISTRATION_GET = "mini-view:registration-get";
|
|
3113
|
+
const MINI_VIEW_RESIZE = "mini-view:resize";
|
|
3114
|
+
const MINI_VIEW_DIALOG = "mini-view:dialog";
|
|
3115
|
+
const MINI_VIEW_PAINTED = "mini-view:painted";
|
|
3111
3116
|
const MINI_VIEW_DISMISS_REASONS = [
|
|
3112
3117
|
"escape",
|
|
3113
3118
|
"blur",
|
|
@@ -3119,6 +3124,10 @@ function isMiniViewDismissReason(value) {
|
|
|
3119
3124
|
}
|
|
3120
3125
|
const MINI_VIEW_WIDTH = 640;
|
|
3121
3126
|
const MINI_VIEW_HEIGHT = 168;
|
|
3127
|
+
const MINI_VIEW_MAX_HEIGHT = 560;
|
|
3128
|
+
function isMiniViewResizePayload(value) {
|
|
3129
|
+
return value !== null && typeof value === "object" && typeof value.height === "number" && Number.isFinite(value.height);
|
|
3130
|
+
}
|
|
3122
3131
|
const DEFAULT_QUICK_SEND_VALUE = "primary+alt+shift+space";
|
|
3123
3132
|
const FUNCTION_KEY_TOKEN = /^f([1-9]|1[0-9]|2[0-4])$/;
|
|
3124
3133
|
function isFunctionKeyToken(token) {
|
|
@@ -33246,17 +33255,43 @@ const MINI_DOCUMENT = "mini.html";
|
|
|
33246
33255
|
function miniViewUrlFor(rendererUrl) {
|
|
33247
33256
|
return INDEX_DOCUMENT_SUFFIX.test(rendererUrl) ? rendererUrl.replace(INDEX_DOCUMENT_SUFFIX, `/${MINI_DOCUMENT}`) : `${rendererUrl.replace(TRAILING_SLASH, "")}/${MINI_DOCUMENT}`;
|
|
33248
33257
|
}
|
|
33258
|
+
const MINI_VIEW_GROUND = "#22201c";
|
|
33259
|
+
const MINI_VIEW_PAINT_TIMEOUT_MS = 1500;
|
|
33260
|
+
function miniViewPresentationFor(input) {
|
|
33261
|
+
if (input.show !== "focus") return "present";
|
|
33262
|
+
if (input.painted) return "present";
|
|
33263
|
+
if (input.timedOut) return "error-surface";
|
|
33264
|
+
return "wait";
|
|
33265
|
+
}
|
|
33266
|
+
function miniViewErrorSurfaceHtml() {
|
|
33267
|
+
return `<!doctype html>
|
|
33268
|
+
<html><head><meta charset="utf-8" /><title>Quick send</title>
|
|
33269
|
+
<style>
|
|
33270
|
+
:root { color-scheme: dark; }
|
|
33271
|
+
html, body { margin: 0; height: 100%; background: ${MINI_VIEW_GROUND}; }
|
|
33272
|
+
body { display: flex; align-items: center; padding: 0 16px;
|
|
33273
|
+
font: 13px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
33274
|
+
color: #c2bcb0; }
|
|
33275
|
+
p { margin: 0; }
|
|
33276
|
+
strong { font-weight: 600; color: #ef8078; }
|
|
33277
|
+
</style></head>
|
|
33278
|
+
<body><p><strong>Quick send could not open.</strong> Try the hotkey again, or restart Local Operator if it keeps failing.</p></body></html>`;
|
|
33279
|
+
}
|
|
33249
33280
|
function createMiniView(options) {
|
|
33250
33281
|
const window = new electron.BrowserWindow({
|
|
33251
33282
|
width: MINI_VIEW_WIDTH,
|
|
33252
33283
|
height: MINI_VIEW_HEIGHT,
|
|
33253
33284
|
/*
|
|
33254
|
-
* Sized in content, not window, terms
|
|
33255
|
-
*
|
|
33256
|
-
*
|
|
33285
|
+
* Sized in content, not window, terms, and the content size is now the
|
|
33286
|
+
* BASE of a measured range rather than the whole story: the restyle's
|
|
33287
|
+
* chrome (previews, the readings strip, the picker sheet) asks for more
|
|
33288
|
+
* through `MINI_VIEW_RESIZE` below, and this call is what makes the
|
|
33289
|
+
* page's viewport the number every frame is captured at.
|
|
33257
33290
|
*/
|
|
33258
33291
|
useContentSize: true,
|
|
33259
33292
|
show: false,
|
|
33293
|
+
/* The dark ground under an as-yet-unpainted document; see MINI_VIEW_GROUND. */
|
|
33294
|
+
backgroundColor: MINI_VIEW_GROUND,
|
|
33260
33295
|
// A composer that floats over other apps carries no frame of its own:
|
|
33261
33296
|
// the app's own rows are the entire surface, and the one sanctioned
|
|
33262
33297
|
// elevation step is the card's ground.
|
|
@@ -33304,7 +33339,91 @@ function createMiniView(options) {
|
|
|
33304
33339
|
if (process.platform === "darwin") {
|
|
33305
33340
|
window.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true });
|
|
33306
33341
|
}
|
|
33342
|
+
let paintedForLoad = false;
|
|
33343
|
+
let paintTimer = null;
|
|
33344
|
+
let paintWaiters = [];
|
|
33345
|
+
const settlePaint = (ready) => {
|
|
33346
|
+
if (paintTimer !== null) {
|
|
33347
|
+
clearTimeout(paintTimer);
|
|
33348
|
+
paintTimer = null;
|
|
33349
|
+
}
|
|
33350
|
+
paintedForLoad = ready;
|
|
33351
|
+
const waiting = paintWaiters;
|
|
33352
|
+
paintWaiters = [];
|
|
33353
|
+
for (const resolve of waiting) resolve();
|
|
33354
|
+
};
|
|
33355
|
+
const showErrorSurface = () => {
|
|
33356
|
+
if (disposed || window.isDestroyed()) return;
|
|
33357
|
+
settlePaint(false);
|
|
33358
|
+
void window.loadURL(
|
|
33359
|
+
`data:text/html;charset=utf-8,${encodeURIComponent(miniViewErrorSurfaceHtml())}`
|
|
33360
|
+
);
|
|
33361
|
+
window.webContents.once("did-finish-load", () => {
|
|
33362
|
+
if (disposed || window.isDestroyed()) return;
|
|
33363
|
+
positionForCursorDisplay();
|
|
33364
|
+
presentMiniView(window, options.show, {
|
|
33365
|
+
trigger: "mini-view",
|
|
33366
|
+
report: options.report
|
|
33367
|
+
});
|
|
33368
|
+
if (options.show === "focus") {
|
|
33369
|
+
window.webContents.send(MINI_VIEW_SUMMONED, {
|
|
33370
|
+
at: Date.now()
|
|
33371
|
+
});
|
|
33372
|
+
}
|
|
33373
|
+
});
|
|
33374
|
+
};
|
|
33375
|
+
window.webContents.on("did-start-loading", () => {
|
|
33376
|
+
paintedForLoad = false;
|
|
33377
|
+
});
|
|
33378
|
+
window.webContents.on(
|
|
33379
|
+
"did-fail-load",
|
|
33380
|
+
(_event, errorCode, errorDescription, validatedURL, isMainFrame) => {
|
|
33381
|
+
if (!isMainFrame) return;
|
|
33382
|
+
options.report?.(
|
|
33383
|
+
`[mini-view] load failed (${errorCode} ${errorDescription}) for ${validatedURL}; showing the error card`
|
|
33384
|
+
);
|
|
33385
|
+
showErrorSurface();
|
|
33386
|
+
}
|
|
33387
|
+
);
|
|
33388
|
+
window.webContents.on("render-process-gone", (_event, details) => {
|
|
33389
|
+
options.report?.(
|
|
33390
|
+
`[mini-view] renderer gone (${details.reason}); showing the error card`
|
|
33391
|
+
);
|
|
33392
|
+
showErrorSurface();
|
|
33393
|
+
});
|
|
33307
33394
|
void window.loadURL(options.url);
|
|
33395
|
+
const onResize = (event, payload) => {
|
|
33396
|
+
if (window.isDestroyed() || event.sender !== window.webContents || event.senderFrame !== window.webContents.mainFrame) {
|
|
33397
|
+
return;
|
|
33398
|
+
}
|
|
33399
|
+
if (!isMiniViewResizePayload(payload)) return;
|
|
33400
|
+
const area = electron.screen.getDisplayMatching(window.getBounds()).workArea;
|
|
33401
|
+
const ceiling = Math.max(
|
|
33402
|
+
MINI_VIEW_HEIGHT,
|
|
33403
|
+
Math.min(MINI_VIEW_MAX_HEIGHT, area.height - 64)
|
|
33404
|
+
);
|
|
33405
|
+
const height = Math.max(
|
|
33406
|
+
MINI_VIEW_HEIGHT,
|
|
33407
|
+
Math.min(Math.round(payload.height), ceiling)
|
|
33408
|
+
);
|
|
33409
|
+
const bounds = window.getContentBounds();
|
|
33410
|
+
if (bounds.height === height) return;
|
|
33411
|
+
window.setContentSize(MINI_VIEW_WIDTH, height);
|
|
33412
|
+
const bottom = bounds.y + height;
|
|
33413
|
+
if (bottom > area.y + area.height) {
|
|
33414
|
+
window.setPosition(
|
|
33415
|
+
bounds.x,
|
|
33416
|
+
Math.max(area.y, area.y + area.height - height)
|
|
33417
|
+
);
|
|
33418
|
+
}
|
|
33419
|
+
};
|
|
33420
|
+
electron.ipcMain.on(MINI_VIEW_RESIZE, onResize);
|
|
33421
|
+
const onPainted = (event) => {
|
|
33422
|
+
if (window.isDestroyed() || event.sender !== window.webContents || event.senderFrame !== window.webContents.mainFrame)
|
|
33423
|
+
return;
|
|
33424
|
+
settlePaint(true);
|
|
33425
|
+
};
|
|
33426
|
+
electron.ipcMain.on(MINI_VIEW_PAINTED, onPainted);
|
|
33308
33427
|
let disposed = false;
|
|
33309
33428
|
function hide() {
|
|
33310
33429
|
if (disposed || window.isDestroyed()) return;
|
|
@@ -33334,21 +33453,61 @@ function createMiniView(options) {
|
|
|
33334
33453
|
}
|
|
33335
33454
|
hide();
|
|
33336
33455
|
});
|
|
33337
|
-
function
|
|
33338
|
-
if (disposed) return;
|
|
33339
|
-
|
|
33340
|
-
|
|
33456
|
+
function presentWhenReady() {
|
|
33457
|
+
if (disposed || window.isDestroyed()) return;
|
|
33458
|
+
const decision = miniViewPresentationFor({
|
|
33459
|
+
show: options.show,
|
|
33460
|
+
painted: paintedForLoad,
|
|
33461
|
+
timedOut: false
|
|
33462
|
+
});
|
|
33463
|
+
if (decision === "error-surface") {
|
|
33464
|
+
showErrorSurface();
|
|
33465
|
+
return;
|
|
33466
|
+
}
|
|
33467
|
+
if (decision === "present") {
|
|
33468
|
+
presentNow();
|
|
33341
33469
|
return;
|
|
33342
33470
|
}
|
|
33471
|
+
paintWaiters.push(() => {
|
|
33472
|
+
if (miniViewPresentationFor({
|
|
33473
|
+
show: options.show,
|
|
33474
|
+
painted: paintedForLoad,
|
|
33475
|
+
timedOut: false
|
|
33476
|
+
}) === "present")
|
|
33477
|
+
presentNow();
|
|
33478
|
+
});
|
|
33479
|
+
if (paintTimer === null) {
|
|
33480
|
+
paintTimer = setTimeout(() => {
|
|
33481
|
+
paintTimer = null;
|
|
33482
|
+
if (miniViewPresentationFor({
|
|
33483
|
+
show: options.show,
|
|
33484
|
+
painted: paintedForLoad,
|
|
33485
|
+
timedOut: true
|
|
33486
|
+
}) === "error-surface")
|
|
33487
|
+
showErrorSurface();
|
|
33488
|
+
}, MINI_VIEW_PAINT_TIMEOUT_MS);
|
|
33489
|
+
}
|
|
33490
|
+
}
|
|
33491
|
+
function presentNow() {
|
|
33492
|
+
if (disposed || window.isDestroyed()) return;
|
|
33343
33493
|
positionForCursorDisplay();
|
|
33344
33494
|
presentMiniView(window, options.show, {
|
|
33345
33495
|
trigger: "mini-view",
|
|
33346
33496
|
report: options.report
|
|
33347
33497
|
});
|
|
33348
|
-
if (options.show === "focus"
|
|
33349
|
-
|
|
33350
|
-
|
|
33498
|
+
if (options.show === "focus") {
|
|
33499
|
+
window.webContents.send(MINI_VIEW_SUMMONED, {
|
|
33500
|
+
at: Date.now()
|
|
33501
|
+
});
|
|
33502
|
+
}
|
|
33503
|
+
}
|
|
33504
|
+
function toggle() {
|
|
33505
|
+
if (disposed) return;
|
|
33506
|
+
if (!window.isDestroyed() && window.isVisible()) {
|
|
33507
|
+
hide();
|
|
33508
|
+
return;
|
|
33351
33509
|
}
|
|
33510
|
+
presentWhenReady();
|
|
33352
33511
|
}
|
|
33353
33512
|
function positionForCursorDisplay() {
|
|
33354
33513
|
if (window.isDestroyed()) return;
|
|
@@ -33356,20 +33515,24 @@ function createMiniView(options) {
|
|
|
33356
33515
|
electron.screen.getCursorScreenPoint()
|
|
33357
33516
|
);
|
|
33358
33517
|
const area = display.workArea;
|
|
33518
|
+
const height = window.isDestroyed() ? MINI_VIEW_HEIGHT : window.getContentBounds().height;
|
|
33359
33519
|
const x = Math.round(area.x + (area.width - MINI_VIEW_WIDTH) / 2);
|
|
33360
|
-
const desiredY = area.y + area.height / 3 -
|
|
33520
|
+
const desiredY = area.y + area.height / 3 - height / 2;
|
|
33361
33521
|
const y = Math.round(
|
|
33362
|
-
Math.min(
|
|
33363
|
-
Math.max(desiredY, area.y),
|
|
33364
|
-
area.y + area.height - MINI_VIEW_HEIGHT
|
|
33365
|
-
)
|
|
33522
|
+
Math.min(Math.max(desiredY, area.y), area.y + area.height - height)
|
|
33366
33523
|
);
|
|
33367
33524
|
window.setPosition(x, y);
|
|
33368
33525
|
}
|
|
33369
33526
|
function dispose() {
|
|
33370
33527
|
if (disposed) return;
|
|
33371
33528
|
disposed = true;
|
|
33529
|
+
electron.ipcMain.removeListener(MINI_VIEW_RESIZE, onResize);
|
|
33530
|
+
electron.ipcMain.removeListener(MINI_VIEW_PAINTED, onPainted);
|
|
33372
33531
|
electron.ipcMain.removeHandler(MINI_VIEW_DISMISS);
|
|
33532
|
+
if (paintTimer !== null) {
|
|
33533
|
+
clearTimeout(paintTimer);
|
|
33534
|
+
paintTimer = null;
|
|
33535
|
+
}
|
|
33373
33536
|
if (!window.isDestroyed()) window.destroy();
|
|
33374
33537
|
}
|
|
33375
33538
|
return { window, toggle, hide, dispose };
|
|
@@ -40516,9 +40679,15 @@ if (process.platform === "darwin" && electron.app.dock) {
|
|
|
40516
40679
|
if (windowLaunch.hideDock) {
|
|
40517
40680
|
electron.app.dock.hide();
|
|
40518
40681
|
} else {
|
|
40682
|
+
electron.app.dock.show();
|
|
40519
40683
|
electron.app.dock.setIcon(image);
|
|
40520
40684
|
}
|
|
40521
40685
|
}
|
|
40686
|
+
function reassertDockParticipation() {
|
|
40687
|
+
if (process.platform !== "darwin" || !electron.app.dock) return;
|
|
40688
|
+
if (windowLaunch.hideDock) return;
|
|
40689
|
+
electron.app.dock.show();
|
|
40690
|
+
}
|
|
40522
40691
|
const telemetryLaunch = resolveTelemetryLaunch({
|
|
40523
40692
|
env: launchEnv,
|
|
40524
40693
|
projectKey: backendConfig.VITE_PUBLIC_POSTHOG_KEY
|
|
@@ -41706,24 +41875,37 @@ electron.app.whenReady().then(async () => {
|
|
|
41706
41875
|
return false;
|
|
41707
41876
|
}
|
|
41708
41877
|
});
|
|
41709
|
-
electron.ipcMain.handle("show-open-dialog", async (
|
|
41710
|
-
|
|
41878
|
+
electron.ipcMain.handle("show-open-dialog", async (event, options) => {
|
|
41879
|
+
const parent = electron.BrowserWindow.fromWebContents(event.sender) ?? mainWindow;
|
|
41880
|
+
if (!parent) {
|
|
41711
41881
|
logger.error(
|
|
41712
|
-
"Cannot show open dialog:
|
|
41882
|
+
"Cannot show open dialog: no window can own it.",
|
|
41713
41883
|
LogFileType.BACKEND
|
|
41714
41884
|
);
|
|
41715
41885
|
return { canceled: true, filePaths: [] };
|
|
41716
41886
|
}
|
|
41717
|
-
const
|
|
41718
|
-
|
|
41719
|
-
|
|
41720
|
-
|
|
41721
|
-
|
|
41722
|
-
|
|
41723
|
-
|
|
41724
|
-
|
|
41725
|
-
|
|
41726
|
-
|
|
41887
|
+
const mini = miniView;
|
|
41888
|
+
const fromMini = mini !== null && !mini.window.isDestroyed() && event.sender === mini.window.webContents;
|
|
41889
|
+
const dialogPayload = { open: true };
|
|
41890
|
+
if (fromMini)
|
|
41891
|
+
mini.window.webContents.send(MINI_VIEW_DIALOG, dialogPayload);
|
|
41892
|
+
try {
|
|
41893
|
+
const result = await electron.dialog.showOpenDialog(
|
|
41894
|
+
parent,
|
|
41895
|
+
withRememberedDirectory(
|
|
41896
|
+
"open-file",
|
|
41897
|
+
options,
|
|
41898
|
+
pickerFallbackDirectory()
|
|
41899
|
+
)
|
|
41900
|
+
);
|
|
41901
|
+
rememberPickedDirectory("open-file", result.filePaths);
|
|
41902
|
+
return result;
|
|
41903
|
+
} finally {
|
|
41904
|
+
if (fromMini && mini !== null && !mini.window.isDestroyed())
|
|
41905
|
+
mini.window.webContents.send(MINI_VIEW_DIALOG, {
|
|
41906
|
+
open: false
|
|
41907
|
+
});
|
|
41908
|
+
}
|
|
41727
41909
|
});
|
|
41728
41910
|
electron.ipcMain.handle("select-directory", async () => {
|
|
41729
41911
|
if (!mainWindow) {
|
|
@@ -42132,6 +42314,7 @@ electron.app.whenReady().then(async () => {
|
|
|
42132
42314
|
};
|
|
42133
42315
|
setupMainWindowWithUpdateService(launchSession, launchCatalogue);
|
|
42134
42316
|
electron.app.on("activate", () => {
|
|
42317
|
+
reassertDockParticipation();
|
|
42135
42318
|
if (electron.BrowserWindow.getAllWindows().length === 0) {
|
|
42136
42319
|
if (quitState.isQuitting()) {
|
|
42137
42320
|
reportSkippedWhileQuitting(
|
|
@@ -42171,6 +42354,13 @@ electron.app.on("window-all-closed", () => {
|
|
|
42171
42354
|
electron.app.quit();
|
|
42172
42355
|
return;
|
|
42173
42356
|
}
|
|
42357
|
+
if (quitState.isQuitting()) {
|
|
42358
|
+
logger.info(
|
|
42359
|
+
"All windows closed as part of a quit in progress; will-quit owns the completion",
|
|
42360
|
+
LogFileType.BACKEND
|
|
42361
|
+
);
|
|
42362
|
+
return;
|
|
42363
|
+
}
|
|
42174
42364
|
logger.info(
|
|
42175
42365
|
"All windows closed, but keeping app active (macOS platform)",
|
|
42176
42366
|
LogFileType.BACKEND
|
|
@@ -42210,7 +42400,7 @@ electron.app.on("will-quit", (event) => {
|
|
|
42210
42400
|
failsafe.unref();
|
|
42211
42401
|
void backendService.stop(false).then(() => {
|
|
42212
42402
|
clearTimeout(failsafe);
|
|
42213
|
-
electron.app.
|
|
42403
|
+
electron.app.exit(0);
|
|
42214
42404
|
}).catch((error) => {
|
|
42215
42405
|
clearTimeout(failsafe);
|
|
42216
42406
|
logger.error(
|
|
@@ -42229,22 +42419,33 @@ const holdQuitForSessionCookieSnapshot = createSessionCookieQuitHold({
|
|
|
42229
42419
|
});
|
|
42230
42420
|
electron.app.on("before-quit", async (event) => {
|
|
42231
42421
|
quitState.begin();
|
|
42422
|
+
electron.globalShortcut.unregisterAll();
|
|
42423
|
+
miniViewRegistrar?.dispose();
|
|
42424
|
+
quickSendWatcher?.stop();
|
|
42425
|
+
miniView?.dispose();
|
|
42426
|
+
if (windowLaunch.mode === "headless") {
|
|
42427
|
+
launcherWatch?.stop();
|
|
42428
|
+
armHeadlessExitDeadline("the app is quitting");
|
|
42429
|
+
}
|
|
42232
42430
|
if (await holdQuitForSessionCookieSnapshot(event)) return;
|
|
42233
42431
|
logger.info("App is about to quit", LogFileType.BACKEND);
|
|
42432
|
+
if (!backendService.isOwnedCleanupComplete()) {
|
|
42433
|
+
try {
|
|
42434
|
+
await backendService.stop(false);
|
|
42435
|
+
} catch (error) {
|
|
42436
|
+
logger.error(
|
|
42437
|
+
"Owned backend stop rejected during quit; continuing the shutdown",
|
|
42438
|
+
LogFileType.BACKEND,
|
|
42439
|
+
error
|
|
42440
|
+
);
|
|
42441
|
+
}
|
|
42442
|
+
}
|
|
42234
42443
|
if (parkedLaunches.length > 0) {
|
|
42235
42444
|
reportParksAtQuit(
|
|
42236
42445
|
parkedLaunches.map((parked) => parked.session),
|
|
42237
42446
|
reportRaise
|
|
42238
42447
|
);
|
|
42239
42448
|
}
|
|
42240
|
-
if (windowLaunch.mode === "headless") {
|
|
42241
|
-
launcherWatch?.stop();
|
|
42242
|
-
armHeadlessExitDeadline("the app is quitting");
|
|
42243
|
-
}
|
|
42244
|
-
electron.globalShortcut.unregisterAll();
|
|
42245
|
-
miniViewRegistrar?.dispose();
|
|
42246
|
-
quickSendWatcher?.stop();
|
|
42247
|
-
miniView?.dispose();
|
|
42248
42449
|
activeUpdateService?.quitForInFlightInstall("app quit");
|
|
42249
42450
|
void stopBrowserHost();
|
|
42250
42451
|
});
|
package/out/preload/index.js
CHANGED
|
@@ -94,6 +94,9 @@ const MINI_VIEW_SUMMONED = "mini-view:summoned";
|
|
|
94
94
|
const MINI_VIEW_DISMISS = "mini-view:dismiss";
|
|
95
95
|
const MINI_VIEW_REGISTRATION = "mini-view:registration";
|
|
96
96
|
const MINI_VIEW_REGISTRATION_GET = "mini-view:registration-get";
|
|
97
|
+
const MINI_VIEW_RESIZE = "mini-view:resize";
|
|
98
|
+
const MINI_VIEW_DIALOG = "mini-view:dialog";
|
|
99
|
+
const MINI_VIEW_PAINTED = "mini-view:painted";
|
|
97
100
|
const MINI_VIEW_REGISTRATION_STATUSES = [
|
|
98
101
|
"registered",
|
|
99
102
|
"taken",
|
|
@@ -114,6 +117,9 @@ function isMiniViewRegistrationState(value) {
|
|
|
114
117
|
state.status
|
|
115
118
|
);
|
|
116
119
|
}
|
|
120
|
+
function isMiniViewDialogPayload(value) {
|
|
121
|
+
return value !== null && typeof value === "object" && typeof value.open === "boolean";
|
|
122
|
+
}
|
|
117
123
|
const OPEN_SESSION_FLAG = "--open-session";
|
|
118
124
|
const OPEN_CATALOGUE_FLAG = "--open-catalogue";
|
|
119
125
|
const SESSION_ID = /^[a-f0-9]{12}$/;
|
|
@@ -1019,6 +1025,37 @@ const api = {
|
|
|
1019
1025
|
},
|
|
1020
1026
|
/** This window -> main: put the mini window away, naming the act. */
|
|
1021
1027
|
dismiss: (reason) => electron.ipcRenderer.invoke(MINI_VIEW_DISMISS, reason),
|
|
1028
|
+
/**
|
|
1029
|
+
* This window -> main: the content height this frame needs (design R2's
|
|
1030
|
+
* measure -> IPC -> resize). Fire-and-forget by design: the frame measures
|
|
1031
|
+
* on every layout settle, there is no answer to await, and main owns the
|
|
1032
|
+
* clamp - see `MINI_VIEW_RESIZE` in `src/shared/mini-view.ts`.
|
|
1033
|
+
*/
|
|
1034
|
+
resize: (height) => {
|
|
1035
|
+
electron.ipcRenderer.send(MINI_VIEW_RESIZE, { height });
|
|
1036
|
+
},
|
|
1037
|
+
/**
|
|
1038
|
+
* This window -> main: the document has committed its first paint, so the
|
|
1039
|
+
* window may be shown without flashing white (see `MINI_VIEW_PAINTED`).
|
|
1040
|
+
* Fire-and-forget, and sent once per load.
|
|
1041
|
+
*/
|
|
1042
|
+
painted: () => {
|
|
1043
|
+
electron.ipcRenderer.send(MINI_VIEW_PAINTED);
|
|
1044
|
+
},
|
|
1045
|
+
/**
|
|
1046
|
+
* Main -> this window: a native dialog the window opened is up, or answered.
|
|
1047
|
+
* The frame latches its blur-hide guard for the duration (see
|
|
1048
|
+
* `MINI_VIEW_DIALOG`).
|
|
1049
|
+
*/
|
|
1050
|
+
onDialog: (callback) => {
|
|
1051
|
+
const handler = (_event, payload) => {
|
|
1052
|
+
if (isMiniViewDialogPayload(payload)) callback(payload);
|
|
1053
|
+
};
|
|
1054
|
+
electron.ipcRenderer.on(MINI_VIEW_DIALOG, handler);
|
|
1055
|
+
return () => {
|
|
1056
|
+
electron.ipcRenderer.removeListener(MINI_VIEW_DIALOG, handler);
|
|
1057
|
+
};
|
|
1058
|
+
},
|
|
1022
1059
|
/** Main -> every renderer: the live global-shortcut state. */
|
|
1023
1060
|
onRegistration: (callback) => {
|
|
1024
1061
|
const handler = (_event, state) => {
|
|
@@ -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-BYKYfwtj.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-DpvY6Bhk.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-CHiYins7.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-DpvY6Bhk.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-DIBks4X5.js → agent-details-page-CpwkLhdq.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{r as
|
|
1
|
+
import{r as E,j as e,c as G}from"./index-D-TXozHA.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-BgiSfYgr.js";import{aF as ne,u as I,aL as b,aM as K,aw as Y,aN as O,aO as ie,aP as re,aQ as we,ax as be,aR as Ce,aS as J,av as Ne,aT as Ae,aU as ke}from"./conversation-input-sync-DQUYkOfh.js";import{c as Se,L as De,T as ee,B as l,S as z,a as oe,b as L,d as M,e as v,X as Te,f as w,A as te,g as se,h as ae}from"./error-boundary-DH4MhqhL.js";import{f as W,u as Ee,i as Fe,a as _e,b as Pe,c as qe,O as Le,H as Me,A as ze}from"./use-download-agent-mutation-LsNre_-6.js";import{S as Ie,a as Ke,A as Oe,b as Qe,c as Ue}from"./index-vK67PDia.js";import"./ui-preferences-store-B6Fr0UX9.js";import"./en-US-BcB1DWxG.js";import"./book-open--g1VlVMp.js";import"./console-mirror-ffbsozOd.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 Qe=[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]],Re=_e("message-circle",Qe),F={all:["agent-comments"],list:t=>[...F.all,"list",t]},$e=({agentId:t,enabled:r=!0})=>ne({queryKey:F.list(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch comments.");return(await ue(t)).result},enabled:!!t&&r,staleTime:2*60*1e3,gcTime:5*60*1e3,refetchOnWindowFocus:!0}),We=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,data:s}=a;if(!r)throw new Error("Authentication required.");return he(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),U("Comment posted")},onError:a=>{Y(`Failed to post comment: ${a.message}`)}})},Ye=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,commentId:s,data:c}=a;if(!r)throw new Error("Authentication required.");return xe(i,s,c)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),U("Comment updated")},onError:a=>{Y(`Failed to update comment: ${a.message}`)}})},He=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,commentId:s}=a;if(!r)throw new Error("Authentication required.");return ge(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),U("Comment deleted")},onError:a=>{Y(`Failed to delete comment: ${a.message}`)}})},Ze=({agentId:t})=>{const{isAuthenticated:r,user:a}=b(),[i,s]=T.useState(""),[c,f]=T.useState(null),[h,C]=T.useState(""),{data:d,isLoading:_,error:N}=$e({agentId:t}),p=d?.records??[],A=We(),k=Ye(),S=He(),B=async n=>{if(n.preventDefault(),!(!i.trim()||!r||!t))try{await A.mutateAsync({agentId:t,data:{text:i}}),s("")}catch(o){console.error("Submit comment error caught in component:",o)}},m=(n,o)=>{f(n),C(o)},x=()=>{f(null),C("")},y=async()=>{if(!(!c||!h.trim()||!r||!t))try{await k.mutateAsync({agentId:t,commentId:c,data:{text:h}}),x()}catch(n){console.error("Update comment error caught in component:",n)}},O=async n=>{if(!(!r||!t)&&window.confirm("Are you sure you want to delete this comment?"))try{await S.mutateAsync({agentId:t,commentId:n})}catch(o){console.error("Delete comment error caught in component:",o)}},Q=n=>r&&a?.radientUser?.account?.id===n.account_id;return e.jsxs("div",{className:"mt-6",children:[e.jsx("h2",{className:"mb-4 font-semibold text-heading text-ink",children:"Comments"}),r?e.jsxs("div",{className:"mb-4 flex flex-col gap-1.5",children:[e.jsxs(Pe,{htmlFor:"new-comment",children:[e.jsx(Re,{size:14,"aria-hidden":"true"}),"Leave a comment"]}),e.jsxs("form",{onSubmit:B,className:"flex flex-col gap-3",children:[e.jsx(ee,{id:"new-comment",placeholder:"Share your thoughts...",rows:3,value:i,onChange:n=>s(n.target.value),required:!0}),e.jsx(l,{type:"submit",variant:"primary",disabled:A.isPending||!i.trim(),className:"self-end",children:A.isPending?e.jsx(z,{size:"sm",label:"Posting comment"}):"Post comment"})]})]}):e.jsx("p",{className:"mt-6 mb-4 text-body-sm text-ink-muted",children:"Sign in to leave comments."}),e.jsx(oe,{className:"my-6"}),_&&e.jsx("ul",{className:"flex flex-col",children:[...Array(3)].map((n,o)=>e.jsxs("li",{className:"flex gap-3 pb-6",children:[e.jsx(L,{children:e.jsx(M,{children:e.jsx(v,{className:"size-full"})})}),e.jsxs("div",{className:"flex w-full flex-col gap-1.5",children:[e.jsx(v,{className:"h-3.5 w-24"}),e.jsx(v,{className:"h-3 w-15"}),e.jsx(v,{className:"mt-2 h-3.5 w-full"}),e.jsx(v,{className:"h-3.5 w-4/5"})]})]},`skeleton-${o}`))}),N&&e.jsxs("p",{role:"alert",className:"my-6 text-body-sm text-danger",children:["Failed to load comments: ",N.message]}),!_&&!N&&e.jsx("ul",{className:"flex flex-col gap-6",children:p.length===0?e.jsx("li",{className:"text-body-sm text-ink-muted",children:"No comments yet. Yours would be the first."}):p.map(n=>c===n.id?e.jsxs("li",{className:"flex gap-3",children:[e.jsx(L,{children:e.jsx(M,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"flex w-full flex-col gap-2",children:[e.jsx(ee,{rows:3,value:h,onChange:o=>C(o.target.value),autoFocus:!0,"aria-label":"Edit comment"}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(l,{variant:"secondary",size:"sm",onClick:x,children:[e.jsx(qe,{}),"Cancel"]}),e.jsxs(l,{variant:"primary",size:"sm",onClick:y,disabled:k.isPending||!h.trim(),children:[k.isPending?e.jsx(z,{size:"xs",label:"Saving comment"}):e.jsx(be,{}),"Save"]})]})]})]},n.id):e.jsxs("li",{className:"flex gap-3",children:[e.jsx(L,{children:e.jsx(M,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-body text-ink",children:n.account_metadata?.name||"Anonymous"}),e.jsxs("p",{className:"text-ink-muted text-meta",children:[W(new Date(n.created_at))," ","ago"]})]}),Q(n)&&e.jsxs("div",{className:"flex gap-0.5",children:[e.jsx(w,{content:"Edit comment",children:e.jsx(l,{variant:"ghost",size:"icon-sm",onClick:()=>m(n.id,n.text),disabled:!!c,"aria-label":"Edit comment",children:e.jsx(Ce,{})})}),e.jsx(w,{content:"Delete comment",children:e.jsx(l,{variant:"ghost",size:"icon-sm",onClick:()=>O(n.id),disabled:!!c,"aria-label":"Delete comment",children:e.jsx(ie,{})})})]})]}),e.jsx("p",{className:"mt-2 text-body-sm text-ink whitespace-pre-wrap",children:n.text})]})]},n.id))})]})},H={all:["agent-details"],detail:t=>[...H.all,t]},Ve=({agentId:t,enabled:r=!0})=>ne({queryKey:H.detail(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch details.");return await je(t)},select:i=>i.result,enabled:!!t&&r,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1}),Xe=()=>{const t=I(),r=re(),{isAuthenticated:a}=b();return K({mutationFn:async({agentId:s})=>{if(!a)throw new Error("Authentication required to delist an agent.");if(!s)throw new Error("Agent ID is required to delist.");return pe(s)},onSuccess:(s,c)=>{U("Agent delisted"),t.invalidateQueries({queryKey:H.detail(c.agentId)}),fe(t),r("/agent-hub")},onError:s=>{console.error("Delist agent error:",s)}})},Ge={like:"The like did not go through",favourite:"The favourite did not go through",download:"The download did not start",delist:"The agent was not delisted"},$=({children:t})=>e.jsx("span",{className:"inline-flex h-4 min-w-5 items-center text-meta text-ink-muted",children:t}),dt=()=>{const{agentId:t}=Ne(),r=re(),{isAuthenticated:a,user:i}=b(),{data:s,isLoading:c,isFetching:f,error:h,refetch:C}=Ve({agentId:t??"",enabled:!!t}),d=s?.visibility==="org",{memberships:_}=ye({enabled:d}),N=d?_.find(me=>me.tenant_id===s?.tenant_id)?.tenant_name??null:null,{statuses:p,isKnown:A,isError:k,isFetching:S,refetch:B}=Le({agentIds:t&&!d?[t]:[]}),m=Me(A,p,t),x=m&&p[t??""]?.liked===!0,y=m&&p[t??""]?.favourited===!0,O=s?.like_count??0,Q=s?.favourite_count??0,n=s?.download_count??0,o=ze(),P=Ie(),D=Ke(),g=Xe(),[le,q]=T.useState(!1),[j,u]=T.useState(null),R=!!i&&!!s&&i.radientUser?.account?.id===s.account_id,Z=()=>{!t||!a||o.isPending||(u(null),o.mutate({agentId:t,isCurrentlyLiked:x},{onError:()=>u("like")}))},V=()=>{!t||!a||P.isPending||(u(null),P.mutate({agentId:t,isCurrentlyFavourited:y},{onError:()=>u("favourite")}))},X=()=>{!t||!s||D.isPending||(u(null),D.mutate({agentId:s.id,agentName:s.name},{onError:()=>u("download")}))},ce=()=>{!t||!R||g.isPending||(u(null),g.mutate({agentId:t},{onError:()=>u("delist")}),q(!1))},E=j?j==="like"?{action:"like",error:o.error,retry:Z}:j==="favourite"?{action:"favourite",error:P.error,retry:V}:j==="download"?{action:"download",error:D.error,retry:X}:{action:"delist",error:g.error,retry:void 0}:null,de=()=>{r("/agent-hub")};return c?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(z,{label:"Loading agent details"})}):h?e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsxs(te,{variant:"danger",className:"max-w-2xl",children:[e.jsx(se,{children:"This agent could not be loaded"}),e.jsx(ae,{children:we("The Radient agent catalogue did not answer.",h)}),e.jsx("div",{className:"mt-2",children:e.jsx(l,{variant:"outline",size:"sm",onClick:()=>void C(),disabled:f,"aria-busy":f,children:f?"Trying…":"Try again"})})]})}):s?e.jsxs("div",{className:"m-6 flex flex-1 flex-col rounded-md bg-surface p-8",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-4",children:[e.jsx(l,{variant:"ghost",size:"icon",onClick:de,"aria-label":"Back to Agent hub",children:e.jsx(Ae,{})}),e.jsx(L,{className:"size-11 shrink-0",children:e.jsx(M,{children:e.jsx(ke,{size:22,"aria-hidden":"true"})})}),e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx("h1",{className:"truncate text-display text-ink",children:s.name}),d&&e.jsx(Ue,{orgName:N})]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[!d&&e.jsxs(e.Fragment,{children:[e.jsx(w,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"sm",onClick:Z,disabled:!a||o.isPending||!m,"aria-label":m?x?"Unlike agent":"Like agent":"Like state unavailable",className:G(x&&"text-danger"),children:[e.jsx(Be,{fill:x?"currentColor":"none"}),e.jsx($,{children:O})]})})}),e.jsx(w,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"sm",onClick:V,disabled:!a||P.isPending||!m,"aria-label":m?y?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",className:G(y&&"text-warning"),children:[e.jsx(Se,{fill:y?"currentColor":"none"}),e.jsx($,{children:Q})]})})})]}),e.jsx(w,{content:"Download agent to your computer",children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"icon",onClick:X,disabled:D.isPending,"aria-label":"Download agent",className:"ml-1",children:[e.jsx(De,{}),e.jsx($,{children:D.isPending?e.jsx(v,{className:"h-3.5 w-5"}):n})]})})}),R&&!d&&e.jsx(w,{content:"Permanently delist this agent from Agent hub",children:e.jsx("span",{children:e.jsx(l,{variant:"ghost",size:"icon",onClick:()=>q(!0),disabled:g.isPending,"aria-label":"Delist agent",className:"ml-1 text-danger hover:bg-danger-wash hover:text-danger",children:e.jsx(ie,{})})})})]})]}),a&&k&&!j&&!d&&e.jsxs("output",{className:"mb-6 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-details-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so this agent's viewer state is not shown."}),e.jsx(l,{variant:"ghost",size:"sm",onClick:()=>void B(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})]}),E&&j&&e.jsxs(te,{variant:"danger",className:"mb-6","data-testid":"agent-details-error",children:[e.jsx(se,{children:Ge[j]}),e.jsx(ae,{children:ve(E.action,E.error,s.name)}),E.retry&&e.jsx("div",{className:"mt-2",children:e.jsx(l,{variant:"outline",size:"sm",onClick:E.retry,children:"Try again"})})]}),e.jsx(Oe,{tags:s.tags,categories:s.categories}),e.jsxs("div",{className:"mt-4 mb-6 flex flex-col gap-2 text-body-sm text-ink-muted",children:[e.jsxs("p",{children:["Created by: ",s.account_metadata?.name??"Unknown",s.account_metadata?.email?` (${s.account_metadata.email})`:""]}),e.jsxs("p",{children:["Created: ",W(new Date(s.created_at))," ago (",J(s.created_at),")"]}),e.jsxs("p",{children:["Last modified: ",W(new Date(s.updated_at))," ","ago (",J(s.updated_at),")"]})]}),e.jsx("div",{className:"mt-2 mb-8 leading-relaxed text-body text-ink",children:s.description||"No description provided."}),e.jsx(oe,{className:"my-6"}),!d&&e.jsx(Ze,{agentId:s.id}),e.jsx(Ee,{open:le,onClose:()=>q(!1),title:"Delist this agent?",maxWidth:"xs",actions:e.jsxs(e.Fragment,{children:[e.jsx(Te,{onClick:()=>q(!1),children:"Cancel"}),e.jsx(Fe,{onClick:()=>{!t||!R||g.isPending||ce()},disabled:g.isPending,children:g.isPending?e.jsx(z,{size:"sm",label:"Delisting agent"}):"Delist"})]}),dialogProps:{"aria-describedby":"delist-dialog-description"},children:e.jsxs("div",{id:"delist-dialog-description",className:"text-body text-ink-muted",children:['This takes "',s.name,'" off the hub straight away, and nobody will be able to download it. You can upload it again later.']})})]}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("p",{className:"text-body text-ink",children:"Agent not found."})})};export{dt as AgentDetailsPage};
|
|
6
|
+
*/const Be=[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]],Re=Se("message-circle",Be),F={all:["agent-comments"],list:t=>[...F.all,"list",t]},$e=({agentId:t,enabled:r=!0})=>ne({queryKey:F.list(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch comments.");return(await ue(t)).result},enabled:!!t&&r,staleTime:2*60*1e3,gcTime:5*60*1e3,refetchOnWindowFocus:!0}),We=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,data:s}=a;if(!r)throw new Error("Authentication required.");return he(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),O("Comment posted")},onError:a=>{Y(`Failed to post comment: ${a.message}`)}})},Ye=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,commentId:s,data:c}=a;if(!r)throw new Error("Authentication required.");return xe(i,s,c)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),O("Comment updated")},onError:a=>{Y(`Failed to update comment: ${a.message}`)}})},He=()=>{const t=I(),{isAuthenticated:r}=b();return K({mutationFn:async a=>{const{agentId:i,commentId:s}=a;if(!r)throw new Error("Authentication required.");return ge(i,s)},onSuccess:(a,i)=>{t.invalidateQueries({queryKey:F.list(i.agentId)}),O("Comment deleted")},onError:a=>{Y(`Failed to delete comment: ${a.message}`)}})},Ve=({agentId:t})=>{const{isAuthenticated:r,user:a}=b(),[i,s]=E.useState(""),[c,f]=E.useState(null),[h,C]=E.useState(""),{data:d,isLoading:_,error:N}=$e({agentId:t}),p=d?.records??[],A=We(),k=Ye(),S=He(),Q=async n=>{if(n.preventDefault(),!(!i.trim()||!r||!t))try{await A.mutateAsync({agentId:t,data:{text:i}}),s("")}catch(o){console.error("Submit comment error caught in component:",o)}},m=(n,o)=>{f(n),C(o)},x=()=>{f(null),C("")},y=async()=>{if(!(!c||!h.trim()||!r||!t))try{await k.mutateAsync({agentId:t,commentId:c,data:{text:h}}),x()}catch(n){console.error("Update comment error caught in component:",n)}},U=async n=>{if(!(!r||!t)&&window.confirm("Are you sure you want to delete this comment?"))try{await S.mutateAsync({agentId:t,commentId:n})}catch(o){console.error("Delete comment error caught in component:",o)}},B=n=>r&&a?.radientUser?.account?.id===n.account_id;return e.jsxs("div",{className:"mt-6",children:[e.jsx("h2",{className:"mb-4 font-semibold text-heading text-ink",children:"Comments"}),r?e.jsxs("div",{className:"mb-4 flex flex-col gap-1.5",children:[e.jsxs(De,{htmlFor:"new-comment",children:[e.jsx(Re,{size:14,"aria-hidden":"true"}),"Leave a comment"]}),e.jsxs("form",{onSubmit:Q,className:"flex flex-col gap-3",children:[e.jsx(ee,{id:"new-comment",placeholder:"Share your thoughts...",rows:3,value:i,onChange:n=>s(n.target.value),required:!0}),e.jsx(l,{type:"submit",variant:"primary",disabled:A.isPending||!i.trim(),className:"self-end",children:A.isPending?e.jsx(z,{size:"sm",label:"Posting comment"}):"Post comment"})]})]}):e.jsx("p",{className:"mt-6 mb-4 text-body-sm text-ink-muted",children:"Sign in to leave comments."}),e.jsx(oe,{className:"my-6"}),_&&e.jsx("ul",{className:"flex flex-col",children:[...Array(3)].map((n,o)=>e.jsxs("li",{className:"flex gap-3 pb-6",children:[e.jsx(L,{children:e.jsx(M,{children:e.jsx(v,{className:"size-full"})})}),e.jsxs("div",{className:"flex w-full flex-col gap-1.5",children:[e.jsx(v,{className:"h-3.5 w-24"}),e.jsx(v,{className:"h-3 w-15"}),e.jsx(v,{className:"mt-2 h-3.5 w-full"}),e.jsx(v,{className:"h-3.5 w-4/5"})]})]},`skeleton-${o}`))}),N&&e.jsxs("p",{role:"alert",className:"my-6 text-body-sm text-danger",children:["Failed to load comments: ",N.message]}),!_&&!N&&e.jsx("ul",{className:"flex flex-col gap-6",children:p.length===0?e.jsx("li",{className:"text-body-sm text-ink-muted",children:"No comments yet. Yours would be the first."}):p.map(n=>c===n.id?e.jsxs("li",{className:"flex gap-3",children:[e.jsx(L,{children:e.jsx(M,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"flex w-full flex-col gap-2",children:[e.jsx(ee,{rows:3,value:h,onChange:o=>C(o.target.value),autoFocus:!0,"aria-label":"Edit comment"}),e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(l,{variant:"secondary",size:"sm",onClick:x,children:[e.jsx(Te,{}),"Cancel"]}),e.jsxs(l,{variant:"primary",size:"sm",onClick:y,disabled:k.isPending||!h.trim(),children:[k.isPending?e.jsx(z,{size:"xs",label:"Saving comment"}):e.jsx(Ie,{}),"Save"]})]})]})]},n.id):e.jsxs("li",{className:"flex gap-3",children:[e.jsx(L,{children:e.jsx(M,{children:n.account_metadata?.name?.charAt(0).toUpperCase()||"?"})}),e.jsxs("div",{className:"w-full",children:[e.jsxs("div",{className:"flex w-full items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-body text-ink",children:n.account_metadata?.name||"Anonymous"}),e.jsxs("p",{className:"text-ink-muted text-meta",children:[W(new Date(n.created_at))," ","ago"]})]}),B(n)&&e.jsxs("div",{className:"flex gap-0.5",children:[e.jsx(w,{content:"Edit comment",children:e.jsx(l,{variant:"ghost",size:"icon-sm",onClick:()=>m(n.id,n.text),disabled:!!c,"aria-label":"Edit comment",children:e.jsx(Ke,{})})}),e.jsx(w,{content:"Delete comment",children:e.jsx(l,{variant:"ghost",size:"icon-sm",onClick:()=>U(n.id),disabled:!!c,"aria-label":"Delete comment",children:e.jsx(ie,{})})})]})]}),e.jsx("p",{className:"mt-2 text-body-sm text-ink whitespace-pre-wrap",children:n.text})]})]},n.id))})]})},H={all:["agent-details"],detail:t=>[...H.all,t]},Xe=({agentId:t,enabled:r=!0})=>ne({queryKey:H.detail(t||"invalid"),queryFn:async()=>{if(!t)throw new Error("Agent ID is required to fetch details.");return await je(t)},select:i=>i.result,enabled:!!t&&r,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1}),Ze=()=>{const t=I(),r=re(),{isAuthenticated:a}=b();return K({mutationFn:async({agentId:s})=>{if(!a)throw new Error("Authentication required to delist an agent.");if(!s)throw new Error("Agent ID is required to delist.");return pe(s)},onSuccess:(s,c)=>{O("Agent delisted"),t.invalidateQueries({queryKey:H.detail(c.agentId)}),fe(t),r("/agent-hub")},onError:s=>{console.error("Delist agent error:",s)}})},Ge={like:"The like did not go through",favourite:"The favourite did not go through",download:"The download did not start",delist:"The agent was not delisted"},$=({children:t})=>e.jsx("span",{className:"inline-flex h-4 min-w-5 items-center text-meta text-ink-muted",children:t}),ct=()=>{const{agentId:t}=we(),r=re(),{isAuthenticated:a,user:i}=b(),{data:s,isLoading:c,isFetching:f,error:h,refetch:C}=Xe({agentId:t??"",enabled:!!t}),d=s?.visibility==="org",{memberships:_}=ye({enabled:d}),N=d?_.find(me=>me.tenant_id===s?.tenant_id)?.tenant_name??null:null,{statuses:p,isKnown:A,isError:k,isFetching:S,refetch:Q}=Ee({agentIds:t&&!d?[t]:[]}),m=Fe(A,p,t),x=m&&p[t??""]?.liked===!0,y=m&&p[t??""]?.favourited===!0,U=s?.like_count??0,B=s?.favourite_count??0,n=s?.download_count??0,o=_e(),P=Pe(),D=qe(),g=Ze(),[le,q]=E.useState(!1),[j,u]=E.useState(null),R=!!i&&!!s&&i.radientUser?.account?.id===s.account_id,V=()=>{!t||!a||o.isPending||(u(null),o.mutate({agentId:t,isCurrentlyLiked:x},{onError:()=>u("like")}))},X=()=>{!t||!a||P.isPending||(u(null),P.mutate({agentId:t,isCurrentlyFavourited:y},{onError:()=>u("favourite")}))},Z=()=>{!t||!s||D.isPending||(u(null),D.mutate({agentId:s.id,agentName:s.name},{onError:()=>u("download")}))},ce=()=>{!t||!R||g.isPending||(u(null),g.mutate({agentId:t},{onError:()=>u("delist")}),q(!1))},T=j?j==="like"?{action:"like",error:o.error,retry:V}:j==="favourite"?{action:"favourite",error:P.error,retry:X}:j==="download"?{action:"download",error:D.error,retry:Z}:{action:"delist",error:g.error,retry:void 0}:null,de=()=>{r("/agent-hub")};return c?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx(z,{label:"Loading agent details"})}):h?e.jsx("div",{className:"flex h-full items-center justify-center p-6",children:e.jsxs(te,{variant:"danger",className:"max-w-2xl",children:[e.jsx(se,{children:"This agent could not be loaded"}),e.jsx(ae,{children:be("The Radient agent catalogue did not answer.",h)}),e.jsx("div",{className:"mt-2",children:e.jsx(l,{variant:"outline",size:"sm",onClick:()=>void C(),disabled:f,"aria-busy":f,children:f?"Trying…":"Try again"})})]})}):s?e.jsxs("div",{className:"m-6 flex flex-1 flex-col rounded-md bg-surface p-8",children:[e.jsxs("div",{className:"mb-6 flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-4",children:[e.jsx(l,{variant:"ghost",size:"icon",onClick:de,"aria-label":"Back to Agent hub",children:e.jsx(Oe,{})}),e.jsx(L,{className:"size-11 shrink-0",children:e.jsx(M,{children:e.jsx(Qe,{size:22,"aria-hidden":"true"})})}),e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx("h1",{className:"truncate text-display text-ink",children:s.name}),d&&e.jsx(Le,{orgName:N})]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[!d&&e.jsxs(e.Fragment,{children:[e.jsx(w,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"sm",onClick:V,disabled:!a||o.isPending||!m,"aria-label":m?x?"Unlike agent":"Like agent":"Like state unavailable",className:G(x&&"text-danger"),children:[e.jsx(Me,{fill:x?"currentColor":"none"}),e.jsx($,{children:U})]})})}),e.jsx(w,{content:"Sign in to Radient to use this feature",disabled:a,children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"sm",onClick:X,disabled:!a||P.isPending||!m,"aria-label":m?y?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",className:G(y&&"text-warning"),children:[e.jsx(Ue,{fill:y?"currentColor":"none"}),e.jsx($,{children:B})]})})})]}),e.jsx(w,{content:"Download agent to your computer",children:e.jsx("span",{children:e.jsxs(l,{variant:"ghost",size:"icon",onClick:Z,disabled:D.isPending,"aria-label":"Download agent",className:"ml-1",children:[e.jsx(Ce,{}),e.jsx($,{children:D.isPending?e.jsx(v,{className:"h-3.5 w-5"}):n})]})})}),R&&!d&&e.jsx(w,{content:"Permanently delist this agent from Agent hub",children:e.jsx("span",{children:e.jsx(l,{variant:"ghost",size:"icon",onClick:()=>q(!0),disabled:g.isPending,"aria-label":"Delist agent",className:"ml-1 text-danger hover:bg-danger-wash hover:text-danger",children:e.jsx(ie,{})})})})]})]}),a&&k&&!j&&!d&&e.jsxs("output",{className:"mb-6 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-details-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so this agent's viewer state is not shown."}),e.jsx(l,{variant:"ghost",size:"sm",onClick:()=>void Q(),disabled:S,"aria-busy":S,children:S?"Trying…":"Try again"})]}),T&&j&&e.jsxs(te,{variant:"danger",className:"mb-6","data-testid":"agent-details-error",children:[e.jsx(se,{children:Ge[j]}),e.jsx(ae,{children:ve(T.action,T.error,s.name)}),T.retry&&e.jsx("div",{className:"mt-2",children:e.jsx(l,{variant:"outline",size:"sm",onClick:T.retry,children:"Try again"})})]}),e.jsx(ze,{tags:s.tags,categories:s.categories}),e.jsxs("div",{className:"mt-4 mb-6 flex flex-col gap-2 text-body-sm text-ink-muted",children:[e.jsxs("p",{children:["Created by: ",s.account_metadata?.name??"Unknown",s.account_metadata?.email?` (${s.account_metadata.email})`:""]}),e.jsxs("p",{children:["Created: ",W(new Date(s.created_at))," ago (",J(s.created_at),")"]}),e.jsxs("p",{children:["Last modified: ",W(new Date(s.updated_at))," ","ago (",J(s.updated_at),")"]})]}),e.jsx("div",{className:"mt-2 mb-8 leading-relaxed text-body text-ink",children:s.description||"No description provided."}),e.jsx(oe,{className:"my-6"}),!d&&e.jsx(Ve,{agentId:s.id}),e.jsx(Ne,{open:le,onClose:()=>q(!1),title:"Delist this agent?",maxWidth:"xs",actions:e.jsxs(e.Fragment,{children:[e.jsx(Ae,{onClick:()=>q(!1),children:"Cancel"}),e.jsx(ke,{onClick:()=>{!t||!R||g.isPending||ce()},disabled:g.isPending,children:g.isPending?e.jsx(z,{size:"sm",label:"Delisting agent"}):"Delist"})]}),dialogProps:{"aria-describedby":"delist-dialog-description"},children:e.jsxs("div",{id:"delist-dialog-description",className:"text-body text-ink-muted",children:['This takes "',s.name,'" off the hub straight away, and nobody will be able to download it. You can upload it again later.']})})]}):e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsx("p",{className:"text-body text-ink",children:"Agent not found."})})};export{ct as AgentDetailsPage};
|