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.
Files changed (113) hide show
  1. package/out/main/index.js +240 -39
  2. package/out/preload/index.js +37 -0
  3. package/out/renderer/assets/{_basePickBy-oM-LmypH.js → _basePickBy-D16oopNi.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-CfyEpPZd.js → _baseUniq-BYKYfwtj.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-DIBks4X5.js → agent-details-page-CpwkLhdq.js} +2 -2
  6. package/out/renderer/assets/{agent-hub-page-oV4gEqC4.js → agent-hub-page-BYeba0zC.js} +3 -3
  7. package/out/renderer/assets/{agents-page-CZrNPorc.js → agents-page-BQdR1fgV.js} +3 -3
  8. package/out/renderer/assets/arc-BYg3WIzZ.js +1 -0
  9. package/out/renderer/assets/architectureDiagram-IEHRJDOE-np6HwkQz.js +36 -0
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-Cn1dvDZU.js → blockDiagram-JOT3LUYC-CaR7YwVl.js} +2 -2
  11. package/out/renderer/assets/{book-open-P6KBj9Du.js → book-open--g1VlVMp.js} +1 -1
  12. package/out/renderer/assets/browser-page-BPwZPQY2.js +1 -0
  13. package/out/renderer/assets/browser-webauthn-prompt-Bsk0eXNZ.js +1 -0
  14. package/out/renderer/assets/{c4Diagram-VJAJSXHY-B8F1XGHT.js → c4Diagram-VJAJSXHY-DqBT3rl5.js} +4 -4
  15. package/out/renderer/assets/channel-mWTr8anL.js +1 -0
  16. package/out/renderer/assets/{chunk-4BMEZGHF-CVoXO2u6.js → chunk-4BMEZGHF-B7-MzFPi.js} +1 -1
  17. package/out/renderer/assets/{chunk-A2AXSNBT-LFo0s6P7.js → chunk-A2AXSNBT-B9IqNrNg.js} +1 -1
  18. package/out/renderer/assets/{chunk-AEK57VVT-B8s36YJo.js → chunk-AEK57VVT-DFzBJNd9.js} +1 -1
  19. package/out/renderer/assets/{chunk-D6G4REZN-BKkRpyOx.js → chunk-D6G4REZN-DW-XzsAv.js} +1 -1
  20. package/out/renderer/assets/{chunk-RZ5BOZE2-qoB87AlE.js → chunk-RZ5BOZE2-C7el6yre.js} +1 -1
  21. package/out/renderer/assets/{chunk-XZIHB7SX-BACgoEDe.js → chunk-XZIHB7SX-BGYrq1Wn.js} +1 -1
  22. package/out/renderer/assets/classDiagram-GIVACNV2-DsNAZ0y6.js +1 -0
  23. package/out/renderer/assets/classDiagram-v2-COTLJTTW-DsNAZ0y6.js +1 -0
  24. package/out/renderer/assets/clone-48M_nlg0.js +1 -0
  25. package/out/renderer/assets/{console-mirror-fXJ5fMxl.js → console-mirror-ffbsozOd.js} +1 -1
  26. package/out/renderer/assets/{consoleCapture-Df4uIOqu.js → consoleCapture-CiApa6fi.js} +1 -1
  27. package/out/renderer/assets/conversation-input-sync-CIGg7Rga.css +1 -0
  28. package/out/renderer/assets/conversation-input-sync-DQUYkOfh.js +911 -0
  29. package/out/renderer/assets/dagre-OKDRZEBW-BVScRDvj.js +4 -0
  30. package/out/renderer/assets/diagram-SSKATNLV-B0iQ6YY1.js +43 -0
  31. package/out/renderer/assets/diagram-VNBRO52H-Co6YPtUT.js +24 -0
  32. package/out/renderer/assets/{erDiagram-Q7BY3M3F-CGjlhqbg.js → erDiagram-Q7BY3M3F-C9XIuSQl.js} +2 -2
  33. package/out/renderer/assets/error-boundary-DH4MhqhL.js +126 -0
  34. package/out/renderer/assets/{flowDiagram-4HSFHLVR-rb1I18B8.js → flowDiagram-4HSFHLVR-QTHrGPk1.js} +2 -2
  35. package/out/renderer/assets/{ganttDiagram-APWFNJXF-D-bSpERZ.js → ganttDiagram-APWFNJXF-qC1VnBIz.js} +2 -2
  36. package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-D7UGP8uH.js +65 -0
  37. package/out/renderer/assets/{graph-BkNT14na.js → graph-BIUuz2bp.js} +1 -1
  38. package/out/renderer/assets/index-C5Ighs_C.css +1 -0
  39. package/out/renderer/assets/index-Ckvy9Zge.js +1 -0
  40. package/out/renderer/assets/{index-_dbvHdgc.js → index-D-TXozHA.js} +1 -1
  41. package/out/renderer/assets/index-DHKnfVbX.css +1 -0
  42. package/out/renderer/assets/index-DTc-sJ8S.js +7 -0
  43. package/out/renderer/assets/index-vK67PDia.js +784 -0
  44. package/out/renderer/assets/infoDiagram-PH2N3AL5-DYtVGJC7.js +2 -0
  45. package/out/renderer/assets/installer-BcSiJA6N.js +1 -0
  46. package/out/renderer/assets/{journeyDiagram-U35MCT3I-B5bji5kb.js → journeyDiagram-U35MCT3I-vVg2sFTp.js} +6 -6
  47. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-BGi8PMEB.js → kanban-definition-NDS4AKOZ-BE36wSk2.js} +4 -4
  48. package/out/renderer/assets/{layout-D3rwe0Wt.js → layout-bOQrw0b8.js} +1 -1
  49. package/out/renderer/assets/{legacy-agents-page-DnpWTuf8.js → legacy-agents-page-BSKz_UrV.js} +4 -4
  50. package/out/renderer/assets/{mermaid.core-CHiYins7.js → mermaid.core-DpvY6Bhk.js} +5 -5
  51. package/out/renderer/assets/mesh-page-9Q8Sc9J_.js +1 -0
  52. package/out/renderer/assets/mindmap-definition-ALO5MXBD-B9PPN6sb.js +95 -0
  53. package/out/renderer/assets/mini-ySULdryU.js +1 -0
  54. package/out/renderer/assets/org-surface-gate-Dl4zcl5q.js +1 -0
  55. package/out/renderer/assets/{page-header-B3kbzqCp.js → page-header-DazB-GQz.js} +1 -1
  56. package/out/renderer/assets/pieDiagram-IB7DONF6-DkioNhQY.js +30 -0
  57. package/out/renderer/assets/projects-page-C37RiUJz.js +35 -0
  58. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-BZkLgvoE.js → quadrantDiagram-7GDLP6J5-4m3m0N6F.js} +4 -4
  59. package/out/renderer/assets/{radar-MK3ICKWK-QB0E4nFC.js → radar-MK3ICKWK-DS8YGAOb.js} +1 -1
  60. package/out/renderer/assets/radient-auth-buttons-DZeHRL7u.js +1 -0
  61. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-Cb1rqfe3.js → requirementDiagram-KVF5MWMF-DsBdUu3C.js} +3 -3
  62. package/out/renderer/assets/sankeyDiagram-QLVOVGJD-CnaPYKR6.js +10 -0
  63. package/out/renderer/assets/{schedules-page-DnHKOQij.js → schedules-page-B0dSGpXt.js} +12 -12
  64. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-Bh-yCDC0.js → sequenceDiagram-X6HHIX6F-C3eja1QY.js} +2 -2
  65. package/out/renderer/assets/settings-page-CrMsVX3d.js +292 -0
  66. package/out/renderer/assets/{settings-section-C9etJXA9.js → settings-section-BGG4XzV0.js} +1 -1
  67. package/out/renderer/assets/stateDiagram-DGXRK772-CjFKiyXn.js +1 -0
  68. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BsbYpgkp.js +1 -0
  69. package/out/renderer/assets/{timeline-definition-BDJGKUSR-pgK_gxyk.js → timeline-definition-BDJGKUSR-CAXy0nQD.js} +2 -2
  70. package/out/renderer/assets/ui-preferences-store-B6Fr0UX9.js +1 -0
  71. package/out/renderer/assets/{use-download-agent-mutation-CXw_g4Rv.js → use-download-agent-mutation-LsNre_-6.js} +3 -3
  72. package/out/renderer/assets/use-memberships-query-BgiSfYgr.js +1 -0
  73. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-CYYxIZAM.js → xychartDiagram-VJFVF3MP-CfNm8SWG.js} +6 -6
  74. package/out/renderer/console-capture.html +5 -5
  75. package/out/renderer/index.html +9 -9
  76. package/out/renderer/installer.html +4 -5
  77. package/out/renderer/mini.html +7 -6
  78. package/package.json +2 -3
  79. package/out/renderer/assets/aida-control-CQx1CGx-.js +0 -50
  80. package/out/renderer/assets/arc-DXJiD7SC.js +0 -1
  81. package/out/renderer/assets/architectureDiagram-IEHRJDOE-VHM5BLyo.js +0 -36
  82. package/out/renderer/assets/browser-page-D6eiItUp.js +0 -1
  83. package/out/renderer/assets/browser-webauthn-prompt-CByfVm08.js +0 -1
  84. package/out/renderer/assets/channel-DZQWNfux.js +0 -1
  85. package/out/renderer/assets/classDiagram-GIVACNV2-jw9F6ZK-.js +0 -1
  86. package/out/renderer/assets/classDiagram-v2-COTLJTTW-jw9F6ZK-.js +0 -1
  87. package/out/renderer/assets/clone-DzWAH3PE.js +0 -1
  88. package/out/renderer/assets/dagre-OKDRZEBW-CLMw1D7m.js +0 -4
  89. package/out/renderer/assets/diagram-SSKATNLV-plMydQ5N.js +0 -43
  90. package/out/renderer/assets/diagram-VNBRO52H-BptPse7H.js +0 -24
  91. package/out/renderer/assets/error-boundary-D3Um1PIl.js +0 -6
  92. package/out/renderer/assets/gitGraphDiagram-7IBYFJ6S-DDJQIXgd.js +0 -65
  93. package/out/renderer/assets/index-2qmFWi_F.css +0 -1
  94. package/out/renderer/assets/index-BXamXVGw.js +0 -7
  95. package/out/renderer/assets/index-D3ICBbhi.js +0 -1642
  96. package/out/renderer/assets/index-DHcQTmYa.js +0 -1
  97. package/out/renderer/assets/index-DuUnXH9L.css +0 -1
  98. package/out/renderer/assets/infoDiagram-PH2N3AL5-Bg2dnJEw.js +0 -2
  99. package/out/renderer/assets/installer-D-IQpqXR.js +0 -1
  100. package/out/renderer/assets/mesh-page-B2_ZtHTQ.js +0 -1
  101. package/out/renderer/assets/mindmap-definition-ALO5MXBD-BwO55Ck2.js +0 -95
  102. package/out/renderer/assets/mini-D7VYY0xP.js +0 -1
  103. package/out/renderer/assets/org-surface-gate-Da1VmZbG.js +0 -1
  104. package/out/renderer/assets/pieDiagram-IB7DONF6-j0i7dQ2D.js +0 -30
  105. package/out/renderer/assets/projects-page-f-tkHojn.js +0 -35
  106. package/out/renderer/assets/radient-auth-buttons-2wnsv7f6.js +0 -1
  107. package/out/renderer/assets/sankeyDiagram-QLVOVGJD-ST_5m9Zy.js +0 -10
  108. package/out/renderer/assets/settings-page-D1dF4GZE.js +0 -292
  109. package/out/renderer/assets/stateDiagram-DGXRK772-D6MGh56o.js +0 -1
  110. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Dvv5Bcoz.js +0 -1
  111. package/out/renderer/assets/textarea-DeXGhzIK.js +0 -121
  112. package/out/renderer/assets/ui-preferences-store-BLiDaCIL.js +0 -1
  113. 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 sessionId = zod.z.string().regex(/^[a-f0-9]{12}$/);
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 mcpCatalogCwd = zod.z.string().min(1).max(4096).regex(/^(\/|[A-Za-z]:[\\/])/);
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: the design fixes the COMPOSER at
33255
- * 640x168 and the frames are captured and reviewed at that size, so the
33256
- * page's viewport is the number that must be exact on every platform.
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 toggle() {
33338
- if (disposed) return;
33339
- if (!window.isDestroyed() && window.isVisible()) {
33340
- hide();
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" && !window.isDestroyed()) {
33349
- const payload = { at: Date.now() };
33350
- window.webContents.send(MINI_VIEW_SUMMONED, payload);
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 - MINI_VIEW_HEIGHT / 2;
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 (_, options) => {
41710
- if (!mainWindow) {
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: mainWindow is not available.",
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 result = await electron.dialog.showOpenDialog(
41718
- mainWindow,
41719
- withRememberedDirectory(
41720
- "open-file",
41721
- options,
41722
- pickerFallbackDirectory()
41723
- )
41724
- );
41725
- rememberPickedDirectory("open-file", result.filePaths);
41726
- return result;
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.quit();
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
  });
@@ -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-CfyEpPZd.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-CHiYins7.js";var S=/\s/;function z(n){for(var r=n.length;r--&&S.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,z(n)+1).replace(G,"")}var m=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,C=parseInt;function K(n){if(typeof n=="number")return n;if(o(n))return m;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?C(n.slice(2),t?2:8):L.test(n)?m:+n}var W=1/0,X=17976931348623157e292;function Y(n){if(!n)return n===0?n:0;if(n=K(n),n===W||n===-1/0){var r=n<0?-1:1;return r*X}return n===n?n:0}function D(n){var r=Y(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var l=Object.prototype,J=l.hasOwnProperty,dn=y(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||M(h,l[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=v(t);r=O(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:D(t);return a<0&&(a=U(e+a,0)),P(n,v(r),a)}var hn=Q(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=_(n)?w:V;return t(n,v(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function vn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!o(i):t(i,s)))var s=i,d=f}return d}function mn(n){return n&&n.length?tn(n,$,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function on(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=N(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,on as d,mn as e,fn as f,hn as g,vn as h,dn as i,D as j,un as l,gn as m,Y as t};
1
+ import{e as o,c as b,g as v,k as O,h as P,j as p,l as w,m as A,n as x,t as c,o as N}from"./_baseUniq-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&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
1
+ import{aH as S,aI as Rn,ax as T,aJ as w,aK as xn,aL as Mn,aw as sn,aM as mn,aN as un,aO as x,au as U,aP as Cn,aQ as on,aR as Fn,aS as E,aF as gn,aT as R,as as ln,aU as Dn,aV as D,aW as Gn,aX as Un,aY as _,aA as Nn,aZ as Bn,av as Kn,a_ as X,a$ as Hn,b0 as jn,az as Yn,ay as cn,aD as Zn,b1 as m}from"./mermaid.core-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&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
@@ -1,6 +1,6 @@
1
- import{r as T,j as e,c as G}from"./index-_dbvHdgc.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-BGPQ6jDl.js";import{B as ne,u as I,x as we}from"./aida-control-CQx1CGx-.js";import{Z as b,_ as K,U as Y,$ as U,a0 as be,a1 as Ce,a2 as ie,a3 as re,a4 as Ne,a5 as Ae,a6 as ke,a7 as Se,a8 as De,a9 as J,T as Ee,aa as Te,ab as Fe}from"./index-D3ICBbhi.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-DeXGhzIK.js";import{f as W,u as Le,i as Me,a as ze,b as Ie,c as Ke,O as Ue,H as Be,A as Oe}from"./use-download-agent-mutation-CXw_g4Rv.js";import"./ui-preferences-store-BLiDaCIL.js";import"./error-boundary-D3Um1PIl.js";import"./console-mirror-fXJ5fMxl.js";import"./en-US-BcB1DWxG.js";import"./book-open-P6KBj9Du.js";/**
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};