local-operator-ui 0.32.2 → 0.32.4

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 (84) hide show
  1. package/out/main/index.js +34 -2
  2. package/out/preload/index.js +34 -0
  3. package/out/renderer/assets/{_basePickBy-cYQKhkqd.js → _basePickBy-CjK8J1ko.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-DV_iFc51.js → _baseUniq-iXcRyKXm.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-DFWBYRN2.js → agent-details-page-BzANbiHv.js} +1 -1
  6. package/out/renderer/assets/{agent-hub-page-m76QLpSZ.js → agent-hub-page-CO896V5d.js} +3 -3
  7. package/out/renderer/assets/{agents-page-Cx_44Kwd.js → agents-page-C1YYkATW.js} +3 -3
  8. package/out/renderer/assets/{arc-C906GJEf.js → arc-DSzdvb-p.js} +1 -1
  9. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-ClpBx9EY.js → architectureDiagram-IEHRJDOE-Btaox3jN.js} +1 -1
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-Cm19e3oQ.js → blockDiagram-JOT3LUYC-C-fhdoup.js} +1 -1
  11. package/out/renderer/assets/{book-open-CKWDSanq.js → book-open-Dm0X0_nl.js} +1 -1
  12. package/out/renderer/assets/browser-page-CXnz4yK0.js +1 -0
  13. package/out/renderer/assets/{browser-webauthn-prompt-9znRgk33.js → browser-webauthn-prompt-D60RMWTt.js} +1 -1
  14. package/out/renderer/assets/{c4Diagram-VJAJSXHY-BatP_cl8.js → c4Diagram-VJAJSXHY-BV8WjI_N.js} +1 -1
  15. package/out/renderer/assets/channel-YjlaLMSb.js +1 -0
  16. package/out/renderer/assets/{chunk-4BMEZGHF-Kx3g_XwM.js → chunk-4BMEZGHF-DLe3c9GX.js} +1 -1
  17. package/out/renderer/assets/{chunk-A2AXSNBT-uOVrAYWD.js → chunk-A2AXSNBT-2USPa4Dy.js} +1 -1
  18. package/out/renderer/assets/{chunk-AEK57VVT-CXhnQiOi.js → chunk-AEK57VVT-dVGtqA7z.js} +1 -1
  19. package/out/renderer/assets/{chunk-D6G4REZN-Cbd7toYz.js → chunk-D6G4REZN-B4_EX1rg.js} +1 -1
  20. package/out/renderer/assets/{chunk-RZ5BOZE2-hfILvgyn.js → chunk-RZ5BOZE2-Bta5D-vX.js} +1 -1
  21. package/out/renderer/assets/{chunk-XZIHB7SX-xoVq_gn1.js → chunk-XZIHB7SX-i4ArBNLI.js} +1 -1
  22. package/out/renderer/assets/classDiagram-GIVACNV2-BHFyS6ei.js +1 -0
  23. package/out/renderer/assets/classDiagram-v2-COTLJTTW-BHFyS6ei.js +1 -0
  24. package/out/renderer/assets/clone-DBH_QsN1.js +1 -0
  25. package/out/renderer/assets/{console-mirror-BTxHvEWf.js → console-mirror-CFdbeNFe.js} +1 -1
  26. package/out/renderer/assets/{consoleCapture-BhRsnRTS.js → consoleCapture-P6eV1Isn.js} +1 -1
  27. package/out/renderer/assets/{conversation-input-sync-BoZ58Pk9.js → conversation-input-sync-CyctUEWr.js} +240 -240
  28. package/out/renderer/assets/{dagre-OKDRZEBW-DQKJNI-k.js → dagre-OKDRZEBW-EyHSAPT7.js} +1 -1
  29. package/out/renderer/assets/{diagram-SSKATNLV-BwL-YgUT.js → diagram-SSKATNLV-D_Ci5F6Q.js} +1 -1
  30. package/out/renderer/assets/{diagram-VNBRO52H-DPasK4WQ.js → diagram-VNBRO52H-C8dvE9sI.js} +1 -1
  31. package/out/renderer/assets/{erDiagram-Q7BY3M3F-E6-9i_LT.js → erDiagram-Q7BY3M3F-DxjXnfZw.js} +1 -1
  32. package/out/renderer/assets/{error-boundary-58EHKVOw.js → error-boundary-Chq_L-1d.js} +1 -1
  33. package/out/renderer/assets/{flowDiagram-4HSFHLVR-BcolFOFy.js → flowDiagram-4HSFHLVR-BkJ35sqU.js} +1 -1
  34. package/out/renderer/assets/{ganttDiagram-APWFNJXF-Jvz5TJ3n.js → ganttDiagram-APWFNJXF-BgeRhVdz.js} +1 -1
  35. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-C0l4rhtr.js → gitGraphDiagram-7IBYFJ6S-CsNXwJ1Z.js} +1 -1
  36. package/out/renderer/assets/{graph-DJiR67SR.js → graph-vn67EOK3.js} +1 -1
  37. package/out/renderer/assets/{index-CbCZ4UMt.js → index-Bu7e3rSb.js} +187 -187
  38. package/out/renderer/assets/index-CUrucNe7.css +1 -0
  39. package/out/renderer/assets/{index-CoLT1SBV.js → index-Cx-WVD9G.js} +1 -1
  40. package/out/renderer/assets/{index-BqQjmSph.js → index-DS9vxVaQ.js} +1 -1
  41. package/out/renderer/assets/{infoDiagram-PH2N3AL5-JbatA-78.js → infoDiagram-PH2N3AL5-CV-g-mjS.js} +1 -1
  42. package/out/renderer/assets/{installer-DvqxeFyk.js → installer-DuK5l8cx.js} +1 -1
  43. package/out/renderer/assets/{journeyDiagram-U35MCT3I-Bqaw1cK9.js → journeyDiagram-U35MCT3I-I57ox-dW.js} +1 -1
  44. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-c_A20Iyh.js → kanban-definition-NDS4AKOZ-km2hq1fY.js} +1 -1
  45. package/out/renderer/assets/{layout-Dd9DFx7O.js → layout-CJ42RoVR.js} +1 -1
  46. package/out/renderer/assets/{legacy-agents-page-DdsQvMHh.js → legacy-agents-page-r2Xc2fks.js} +1 -1
  47. package/out/renderer/assets/{mermaid.core-DeZIq71F.js → mermaid.core-DQsftHid.js} +5 -5
  48. package/out/renderer/assets/mesh-page-DejMbpGY.js +1 -0
  49. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-CQEI8HJx.js → mindmap-definition-ALO5MXBD-B_Hx68jr.js} +1 -1
  50. package/out/renderer/assets/{mini-DND86Gqu.js → mini-BzGdxFI_.js} +1 -1
  51. package/out/renderer/assets/{org-surface-gate-DXuJUSNa.js → org-surface-gate-CNy4oo3A.js} +1 -1
  52. package/out/renderer/assets/{page-header-BM_JXCI-.js → page-header-DuslXJJm.js} +1 -1
  53. package/out/renderer/assets/{pieDiagram-IB7DONF6-DnNByHSa.js → pieDiagram-IB7DONF6-CM8q0hlY.js} +1 -1
  54. package/out/renderer/assets/{projects-page-70Gqokw6.js → projects-page-bHdWZ0Kx.js} +1 -1
  55. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-6WHzkbDp.js → quadrantDiagram-7GDLP6J5-DqoQ8lz2.js} +1 -1
  56. package/out/renderer/assets/{radar-MK3ICKWK-BptobeTV.js → radar-MK3ICKWK-C-OrPLEs.js} +1 -1
  57. package/out/renderer/assets/{radient-auth-buttons-D29xp2XC.js → radient-auth-buttons-Cju8RhKQ.js} +1 -1
  58. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-BN1rNFZK.js → requirementDiagram-KVF5MWMF-DtpTdYbV.js} +1 -1
  59. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-CglkMfUi.js → sankeyDiagram-QLVOVGJD-BFX_LBnO.js} +1 -1
  60. package/out/renderer/assets/{schedules-page-Dp3wpABF.js → schedules-page-D9mb_-BC.js} +1 -1
  61. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-5zA78i10.js → sequenceDiagram-X6HHIX6F-lUYP-LDw.js} +1 -1
  62. package/out/renderer/assets/{settings-page-BcVK_2rZ.js → settings-page-DUIyql2W.js} +7 -7
  63. package/out/renderer/assets/{settings-section-DvrafHAe.js → settings-section-BYsjs9LS.js} +1 -1
  64. package/out/renderer/assets/{stateDiagram-DGXRK772-DpdPi-40.js → stateDiagram-DGXRK772-BPJsQn4b.js} +1 -1
  65. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-DFNM7_ku.js +1 -0
  66. package/out/renderer/assets/{timeline-definition-BDJGKUSR-DDiDcnzX.js → timeline-definition-BDJGKUSR-jwbIRZBB.js} +1 -1
  67. package/out/renderer/assets/{ui-preferences-store-Gk1aDy0D.js → ui-preferences-store-BcI6fr9b.js} +1 -1
  68. package/out/renderer/assets/{use-download-agent-mutation-BUyyLZ0d.js → use-download-agent-mutation-B9PktiM4.js} +1 -1
  69. package/out/renderer/assets/{use-memberships-query-Crsdks50.js → use-memberships-query-DjBVKN3g.js} +1 -1
  70. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-Cu590dfQ.js → xychartDiagram-VJFVF3MP-C7CoMzZa.js} +1 -1
  71. package/out/renderer/console-capture.html +5 -5
  72. package/out/renderer/index.html +7 -7
  73. package/out/renderer/installer.html +4 -4
  74. package/out/renderer/mini.html +6 -6
  75. package/package.json +2 -2
  76. package/out/renderer/assets/browser-page-CSeJzk6t.js +0 -1
  77. package/out/renderer/assets/channel-BLD_NduG.js +0 -1
  78. package/out/renderer/assets/classDiagram-GIVACNV2-DbXPDoSx.js +0 -1
  79. package/out/renderer/assets/classDiagram-v2-COTLJTTW-DbXPDoSx.js +0 -1
  80. package/out/renderer/assets/clone-BI5nzBCk.js +0 -1
  81. package/out/renderer/assets/index-jkgLSnYs.css +0 -1
  82. package/out/renderer/assets/mesh-page-D1-BOy8w.js +0 -1
  83. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-D_YSao2l.js +0 -1
  84. /package/out/renderer/assets/{index-AacE334A.js → index-DkZDDEqx.js} +0 -0
package/out/main/index.js CHANGED
@@ -822,7 +822,20 @@ const desktopRequestUnion = zod.z.discriminatedUnion("op", [
822
822
  */
823
823
  answers: zod.z.record(zod.z.string(), zod.z.array(zod.z.string().max(32768))).optional(),
824
824
  /** "No answer — decide yourself", the explicit form of today's Esc. */
825
- decline: zod.z.boolean().optional()
825
+ decline: zod.z.boolean().optional(),
826
+ /**
827
+ * CHANGE a recorded answer instead of submitting a first one (design §10,
828
+ * #1936).
829
+ *
830
+ * A modifier on the SAME `{ask_id, answers}` body, and it has to be sent
831
+ * explicitly because the intent is not recoverable from the values: equal
832
+ * values are not a retry marker and different values are not a revision
833
+ * (§10 — "no layer may infer a revision by comparing values"). The backend
834
+ * accepts it only while the answer is still UNDELIVERED and refuses it with
835
+ * its own sentence once the response row exists; this client does not
836
+ * pre-judge that, it renders the owner's refusal.
837
+ */
838
+ revise: zod.z.boolean().optional()
826
839
  }).strict(),
827
840
  zod.z.object({
828
841
  op: zod.z.literal("sessions.seen"),
@@ -1982,6 +1995,12 @@ const desktopRequestSchema = desktopRequestUnion.superRefine(
1982
1995
  message: "Supply either answers or decline",
1983
1996
  path: ["decline"]
1984
1997
  });
1998
+ else if (request.revise === true && request.decline === true)
1999
+ ctx.addIssue({
2000
+ code: zod.z.ZodIssueCode.custom,
2001
+ message: "Supply either decline or revise",
2002
+ path: ["revise"]
2003
+ });
1985
2004
  else if (request.answers !== void 0 && Object.keys(request.answers).length === 0)
1986
2005
  ctx.addIssue({
1987
2006
  code: zod.z.ZodIssueCode.custom,
@@ -2002,6 +2021,12 @@ const desktopRequestSchema = desktopRequestUnion.superRefine(
2002
2021
  message: "A request id is required to answer a gate",
2003
2022
  path: ["requestId"]
2004
2023
  });
2024
+ if (request.revise === true)
2025
+ ctx.addIssue({
2026
+ code: zod.z.ZodIssueCode.custom,
2027
+ message: "revise applies to a queued ask",
2028
+ path: ["revise"]
2029
+ });
2005
2030
  return;
2006
2031
  }
2007
2032
  if (request.op === "sessions.create" && request.purpose === void 0) {
@@ -2674,7 +2699,14 @@ function desktopEndpoint(request) {
2674
2699
  body: {
2675
2700
  ask_id: request.askId,
2676
2701
  answers: request.answers,
2677
- decline: request.decline
2702
+ decline: request.decline,
2703
+ /*
2704
+ * Sent only when asked for, so the first-answer body keeps its exact
2705
+ * previous bytes: `revise` is a modifier the client has to state, and a
2706
+ * body that carried `revise: false` on every ordinary submit would be
2707
+ * asserting an intent it does not have.
2708
+ */
2709
+ ...request.revise === true ? { revise: true } : {}
2678
2710
  }
2679
2711
  };
2680
2712
  return {
@@ -427,6 +427,40 @@ const api = {
427
427
  // Add methods to open files and URLs
428
428
  openFile: (filePath) => electron.ipcRenderer.invoke("open-file", filePath),
429
429
  readFile: (filePath, encoding) => electron.ipcRenderer.invoke("read-file", filePath, encoding),
430
+ /**
431
+ * The filesystem path behind a `File` the OS handed the renderer.
432
+ *
433
+ * WHY THIS LIVES IN THE PRELOAD. Electron 44 removed the `File.path`
434
+ * augmentation that used to carry it, and its replacement,
435
+ * `webUtils.getPathForFile`, has to be called from a context that can import
436
+ * `electron` - which context isolation deliberately keeps out of the renderer.
437
+ * The `File` travels across the bridge as an argument, which is the shape
438
+ * Electron's own documentation for this API shows (`webUtils` -> "If you want
439
+ * to call this API from a renderer process with context isolation enabled,
440
+ * place the API call in your preload script and expose it using the
441
+ * contextBridge API").
442
+ *
443
+ * WHY THE RENDERER ASKS AT ALL: the composer's attach button already stores a
444
+ * real path for everything it adds, and the send reads that path's bytes in main
445
+ * (`encodeImageAttachments` -> `api.readFile`). A dropped file expressed as a
446
+ * data URL instead would be a second kind of attachment - one whose base64 copy
447
+ * is written into the persisted draft store, which is where a large image turns
448
+ * into a localStorage quota problem the path form simply does not have.
449
+ *
450
+ * NEVER THROWS, and that is the interface rather than defensiveness: the
451
+ * underlying call throws for an argument that is not a `File` and answers `""`
452
+ * for one that was constructed in JS rather than backed by a file on disk (a
453
+ * file dragged out of another page). Both are "this file has no path" for a
454
+ * caller, so both come back as an empty string and the drop handler falls back
455
+ * to reading the bytes.
456
+ */
457
+ getPathForFile: (file) => {
458
+ try {
459
+ return electron.webUtils.getPathForFile(file);
460
+ } catch {
461
+ return "";
462
+ }
463
+ },
430
464
  /**
431
465
  * Bytes for the in-app viewers. No encoding: a PDF is not text, and base64
432
466
  * would inflate it by a third on both sides of the boundary.
@@ -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-DV_iFc51.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-DeZIq71F.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-iXcRyKXm.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-DQsftHid.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-DeZIq71F.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-DQsftHid.js";var qn="[object Symbol]";function N(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function pn(n){if(typeof n=="string")return n;if(T(n))return dn(n,pn)+"";if(N(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function An(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||N(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":pn(n)}function yn(n,r){return T(n)?n:B(n,r)?[n]:ar(fr(n))}function M(n){if(typeof n=="string"||N(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function bn(n,r){r=yn(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:bn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function pr(n,r){return x(n,H(n),r)}var Ar=Object.getOwnPropertySymbols,wn=Ar?function(n){for(var r=[];n;)K(r,H(n)),n=Cn(n);return r}:hn;function yr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,H)}function br(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Nr="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",Hr="[object Uint16Array]",jr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Ir:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Nr:case Br:case Kr:case Hr:case jr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",pe="[object Float32Array]",Ae="[object Float64Array]",ye="[object Int8Array]",be="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[pe]=g[Ae]=g[ye]=g[be]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?yr(n,lr(f,n)):pr(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(p){f.add(C(p,r,e,p,n,i))}):Xr(n)&&n.forEach(function(p,A){f.set(A,C(p,r,e,A,n,i))});var y=d?u?br:G:u?U:$,b=l?void 0:y(n);return An(b||n,function(p,A){b&&(A=p,p=n[A]),Nn(f,A,C(p,r,e,A,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,a,i){var f=e&Pe,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var y=n[o],b=r[o];if(t)var p=f?t(b,y,o,r,n,i):t(y,b,o,n,r,i);if(p!==void 0){if(p)continue;c=!1;break}if(h){if(!Ie(r,function(A,O){if(!En(h,O)&&(y===A||a(y,A,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(y===b||a(y,b,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Ne="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",He="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function je(n,r,e,t,a,i,f){switch(e){case He:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ne:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=j),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=In(s(n),s(r),t,a,i,f);return f.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),y=i.get(r);if(h&&y)return h==r&&y==n;var b=!0;i.set(n,r),i.set(r,n);for(var p=f;++o<u;){c=s[o];var A=n[c],O=r[c];if(t)var q=f?t(O,A,c,r,n,i):t(A,O,c,n,r,i);if(!(q===void 0?A===O||a(A,O,e,t,i):q)){b=!1;break}p||(p=c=="constructor")}if(b&&!p){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(b=!1)}return i.delete(n),i.delete(r),b}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||Hn(n)?In(n,r,e,t,a,i):je(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),y=o&&fn.call(r,"__wrapped__");if(h||y){var b=h?n.value():n,p=y?r.value():r;return i||(i=new _),a(b,p,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,Pn(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=yn(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=M(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&jn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return B(n)&&Pn(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return bn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?An:Z;return e(n,dt(r))}function pt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:pt;return e(n,Ln(r))}function At(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:At(n,$(n))}function Et(n){return n===void 0}function yt(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function It(n,r,e){var t=T(n)?or:yt,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var bt=1/0,Tt=m&&1/j(new m([,-0]))[1]==bt?function(n){return new m(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return j(d);f=!1,a=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,pt as B,Ie as C,Xn as D,I as S,Pt as a,C as b,Ot as c,$t as d,N as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,yn as n,bn as o,dt as p,lt as q,It as r,it as s,M as t,fr as u,St as v,Vn as w,En as x,zn as y,br as z};
@@ -1,4 +1,4 @@
1
- import{r as E,j as e,c as Z}from"./index-AacE334A.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-Crsdks50.js";import{aG as ne,u as I,aM as b,aN as K,ax as Y,aO as O,aP as ie,aQ as re,aR as we,ay as be,aS as Ce,aT as J,aw as Ne,aU as Ae,aV as ke}from"./conversation-input-sync-BoZ58Pk9.js";import{c as Se,L as De,T as ee,B as l,S as z,a as oe,b as M,d as L,e as v,X as Te,f as w,A as te,g as se,h as ae}from"./error-boundary-58EHKVOw.js";import{f as W,u as Ee,i as Fe,a as _e,b as Pe,c as qe,O as Me,H as Le,A as ze}from"./use-download-agent-mutation-BUyyLZ0d.js";import{S as Ie,a as Ke,A as Oe,b as Qe,c as Ue}from"./index-CbCZ4UMt.js";import"./ui-preferences-store-Gk1aDy0D.js";import"./en-US-BcB1DWxG.js";import"./book-open-CKWDSanq.js";import"./console-mirror-BTxHvEWf.js";/**
1
+ import{r as E,j as e,c as Z}from"./index-DkZDDEqx.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-DjBVKN3g.js";import{aG as ne,u as I,aM as b,aN as K,ax as Y,aO as O,aP as ie,aQ as re,aR as we,ay as be,aS as Ce,aT as J,aw as Ne,aU as Ae,aV as ke}from"./conversation-input-sync-CyctUEWr.js";import{c as Se,L as De,T as ee,B as l,S as z,a as oe,b as M,d as L,e as v,X as Te,f as w,A as te,g as se,h as ae}from"./error-boundary-Chq_L-1d.js";import{f as W,u as Ee,i as Fe,a as _e,b as Pe,c as qe,O as Me,H as Le,A as ze}from"./use-download-agent-mutation-B9PktiM4.js";import{S as Ie,a as Ke,A as Oe,b as Qe,c as Ue}from"./index-Bu7e3rSb.js";import"./ui-preferences-store-BcI6fr9b.js";import"./en-US-BcB1DWxG.js";import"./book-open-Dm0X0_nl.js";import"./console-mirror-CFdbeNFe.js";/**
2
2
  * @license lucide-react v0.507.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,11 +1,11 @@
1
- import{r,j as e,c as C}from"./index-AacE334A.js";import{aQ as De,aM as xe,aS as Re,aG as ms,aH as hs,u as xs,aN as gs,be as fs,aO as ps,a8 as _e,bf as bs,az as js,ay as Be,b3 as vs,bg as Ns,a as ys,bh as ws,aZ as ks,bi as Ts}from"./conversation-input-sync-BoZ58Pk9.js";import{P as Cs}from"./page-header-BM_JXCI-.js";import{c as Ue,f as Q,B as f,e as x,r as Ss,A as J,g as ee,h as se,z as Rs,F as _s,G as As,H as Ps,I as Os,s as Ae,t as Pe,u as Oe,v as Ee,w as ze}from"./error-boundary-58EHKVOw.js";import{e as Es,f as zs,p as Is,P as Ms,b as Fs,h as Ls}from"./use-memberships-query-Crsdks50.js";import{O as $s,A as Ds,f as Bs,H as Us,a as Vs,b as Hs,c as qs,d as Ve,C as Ys,e as Qs,u as Ws,i as Gs}from"./use-download-agent-mutation-BUyyLZ0d.js";import{c as Zs,at as Xs,as as Ks,au as Js,av as et}from"./index-CbCZ4UMt.js";import{R as st}from"./radient-auth-buttons-D29xp2XC.js";import{o as He,u as tt,a as at,b as nt}from"./org-surface-gate-DXuJUSNa.js";import{f as it}from"./format-CZUObkkr.js";import"./ui-preferences-store-Gk1aDy0D.js";import"./en-US-BcB1DWxG.js";import"./book-open-CKWDSanq.js";import"./console-mirror-BTxHvEWf.js";/**
1
+ import{r,j as e,c as C}from"./index-DkZDDEqx.js";import{aQ as De,aM as xe,aS as Re,aG as ms,aH as hs,u as xs,aN as gs,be as fs,aO as ps,a8 as _e,bf as bs,az as js,ay as Be,aW as vs,bg as Ns,a as ys,bh as ws,a_ as ks,bi as Ts}from"./conversation-input-sync-CyctUEWr.js";import{P as Cs}from"./page-header-DuslXJJm.js";import{c as Ue,f as Q,B as f,e as x,r as Ss,A as J,g as ee,h as se,z as Rs,F as _s,G as As,H as Ps,I as Os,s as Ae,t as Pe,u as Oe,v as Ee,w as ze}from"./error-boundary-Chq_L-1d.js";import{e as Es,f as zs,p as Is,P as Ms,b as Fs,h as Ls}from"./use-memberships-query-DjBVKN3g.js";import{O as $s,A as Ds,f as Bs,H as Us,a as Vs,b as qs,c as Hs,d as Ve,C as Ys,e as Qs,u as Ws,i as Gs}from"./use-download-agent-mutation-B9PktiM4.js";import{c as Xs,ar as Zs,aq as Ks,as as Js,at as et}from"./index-Bu7e3rSb.js";import{R as st}from"./radient-auth-buttons-Cju8RhKQ.js";import{o as qe,u as tt,a as at,b as nt}from"./org-surface-gate-CNy4oo3A.js";import{f as it}from"./format-CZUObkkr.js";import"./ui-preferences-store-BcI6fr9b.js";import"./en-US-BcB1DWxG.js";import"./book-open-Dm0X0_nl.js";import"./console-mirror-CFdbeNFe.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 rt=[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]],qe=Ue("building-2",rt);/**
6
+ */const rt=[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]],He=Ue("building-2",rt);/**
7
7
  * @license lucide-react v0.507.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */const lt=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M7 12h.01",key:"eqddd0"}]],ot=Ue("circle-ellipsis",lt),ct=({agent:s,isLiked:t,isFavourited:n,onLikeToggle:i,onFavouriteToggle:l,onDownload:o,isLikeActionLoading:h=!1,isFavouriteActionLoading:j=!1,isDownloading:g=!1,actionError:u=null,onRetryAction:v,showActions:N=!0,viewerStateKnown:p=!0,orgName:b=null})=>{const y=De(),{isAuthenticated:m}=xe(),$=s.description??"",[D,I]=r.useState(!1),S=r.useRef(null),M=r.useCallback(d=>{if(S.current?.disconnect(),S.current=null,!d)return;const L=()=>I(d.scrollHeight-d.clientHeight>1);L();const P=new ResizeObserver(L);P.observe(d),S.current=P},[]),Y=m?p?t?"Unlike agent":"Like agent":"Your likes could not be read, so this is not shown as unliked.":"Log in to Radient to like agents",B=m?p?n?"Unfavourite agent":"Favourite agent":"Your favourites could not be read, so this is not shown as unfavourited.":"Log in to Radient to favourite agents",F=p?t?"Unlike agent":"Like agent":"Like state unavailable",A=p?n?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",c=s.visibility==="org";return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface transition-colors duration-fast ease-out-quart hover:bg-elevated",children:[e.jsxs("button",{type:"button",onClick:()=>y(`/agent-hub/${s.id}`),className:"flex min-h-0 flex-1 cursor-pointer flex-col gap-2 p-4 text-left","aria-label":`View details for ${s.name}`,children:[e.jsx("h3",{className:"truncate font-medium text-heading text-ink",children:s.name}),c&&e.jsx($s,{orgName:b}),e.jsx(Q,{content:D?$:"",children:e.jsx("span",{ref:M,className:"line-clamp-3 min-h-0 text-body-sm text-ink-muted",children:$})}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsx(Ds,{tags:s.tags,categories:s.categories}),e.jsxs("p",{className:"truncate text-ink-dim text-meta",children:[s.account_metadata?.name??"Unknown author",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"updated ",Bs(new Date(s.updated_at))," ago"]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-0.5","data-viewer-state":c?"org":m?p?"known":"unknown":"signed-out",children:[!c&&e.jsxs(e.Fragment,{children:[e.jsx(Q,{content:Y,children:e.jsx("span",{children:e.jsxs(f,{variant:"ghost",size:"sm",onClick:m&&p?()=>i(s.id):void 0,disabled:h||!m||!p,"aria-label":F,className:C(t&&"text-danger"),children:[e.jsx(Us,{fill:t?"currentColor":"none","data-testid":"agent-like-heart"}),e.jsx("span",{"data-testid":"agent-like-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:s.like_count??0})]})})}),e.jsx(Q,{content:B,children:e.jsx("span",{children:e.jsxs(f,{variant:"ghost",size:"sm",onClick:m?()=>l(s.id):void 0,disabled:j||!m||!p,"aria-label":A,className:C(n&&"text-warning"),children:[e.jsx(Zs,{fill:n?"currentColor":"none","data-testid":"agent-favourite-star"}),e.jsx("span",{"data-testid":"agent-favourite-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:s.favourite_count??0})]})})})]}),e.jsx(Q,{content:"Downloads",children:e.jsxs("span",{className:"ml-1 inline-flex items-center gap-1 pr-1 text-ink-dim",children:[e.jsx(Re,{"aria-hidden":"true",className:"size-3.5"}),e.jsx("span",{className:"inline-flex h-4 min-w-6 items-center font-mono text-mono-sm",children:g?e.jsx(x,{className:"h-3 w-6"}):(s.download_count??0).toLocaleString()})]})})]}),N&&o&&e.jsx("div",{className:"ml-auto flex shrink-0 items-center",children:e.jsxs(f,{variant:"secondary",size:"sm",onClick:()=>o(s),disabled:g,"aria-label":`Download ${s.name}`,"data-tour-tag":"agent-hub-download-button",children:[e.jsx(Re,{"data-testid":"agent-download"}),"Get"]})})]}),u&&e.jsxs("output",{"data-testid":"agent-card-error",className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2 text-body-sm text-danger",children:[e.jsx("span",{className:"min-w-0 flex-1",children:u}),v&&e.jsx(f,{variant:"ghost",size:"sm",onClick:v,children:"Try again"})]})]})},dt=({agent:s,status:t,viewerStateKnown:n=!0,orgName:i=null})=>{const{isAuthenticated:l}=xe(),[o,h]=r.useState(null),j=t?.liked??!1,g=t?.favourited??!1,u=Vs(),v=Hs(),N=qs(),p=()=>{!l||u.isPending||(h(null),u.mutate({agentId:s.id,isCurrentlyLiked:j},{onError:()=>h("like")}))},b=()=>{!l||v.isPending||(h(null),v.mutate({agentId:s.id,isCurrentlyFavourited:g},{onError:()=>h("favourite")}))},y=()=>{N.isPending||(h(null),N.mutate({agentId:s.id,agentName:s.name},{onError:()=>h("download")}))},m=o?o==="like"?{action:"like",error:u.error,retry:p}:o==="favourite"?{action:"favourite",error:v.error,retry:b}:{action:"download",error:N.error,retry:y}:null;return e.jsx(ct,{agent:s,isLiked:l&&j,isFavourited:l&&g,onLikeToggle:p,onFavouriteToggle:b,onDownload:y,isLikeActionLoading:u.isPending,isFavouriteActionLoading:v.isPending,isDownloading:N.isPending,viewerStateKnown:n,orgName:i,actionError:m?Es(m.action,m.error,s.name):null,onRetryAction:m?.retry})},Ie=({selected:s,onClick:t,children:n,...i})=>e.jsx("button",{type:"button",onClick:t,"aria-pressed":s,className:C("flex w-full cursor-pointer items-center gap-2.5 rounded-sm px-3 py-1.5 text-left","text-body-sm transition-colors duration-fast ease-out-quart",s?Ks:"text-ink hover:bg-row-hover"),...i,children:n}),Me=Object.keys(Ys),ut=s=>[...s].sort((t,n)=>{const i=Me.indexOf(t),l=Me.indexOf(n);return i!==-1&&l!==-1?i-l:i!==-1?-1:l!==-1?1:t.localeCompare(n)}),mt=({selectedCategory:s,onSelectCategory:t,categories:n})=>{const i=ut(s&&!n.includes(s)?[...n,s]:n);return e.jsxs("div",{className:"flex h-full flex-col overflow-y-auto",children:[e.jsx("h2",{className:"mb-2 px-3 font-medium text-ink-dim text-meta",children:"Categories"}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs(Ie,{selected:s===null,onClick:()=>t(null),"data-testid":"category-all",children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:e.jsx(Xs,{size:16,"aria-hidden":"true"})}),"All categories"]}),i.map(l=>{const o=Ve(l),h=l==="other"?e.jsx(ot,{size:16}):o.icon;return e.jsxs(Ie,{selected:s===l,onClick:()=>t(l),"data-testid":`category-${l}`,children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:h}),o.label]},l)})]})]})},ht=({page:s,count:t,onChange:n})=>{const i=r.useRef(null),l=r.useRef(null),o=r.useRef(null);return r.useEffect(()=>{const h=o.current;o.current=null,h==="previous"&&i.current?.focus(),h==="next"&&l.current?.focus()},[s]),t<=1?null:e.jsxs("nav",{"aria-label":"Agent pages",className:"mt-6 flex min-h-13 items-center justify-between gap-3 border-t border-hairline","data-testid":"agent-hub-pager",children:[e.jsxs("span",{className:"select-none text-meta text-ink-dim",children:["Page ",s," of ",t]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"secondary",size:"sm",ref:i,onClick:()=>{s-1<=1&&(o.current="next"),n(s-1)},disabled:s<=1,"aria-label":"Previous page",children:[e.jsx(Js,{"aria-hidden":"true"}),"Previous"]}),e.jsxs(f,{variant:"secondary",size:"sm",ref:l,onClick:()=>{s+1>=t&&(o.current="previous"),n(s+1)},disabled:s>=t,"aria-label":"Next page",children:["Next",e.jsx(Ss,{"aria-hidden":"true"})]})]})]})},Ye={all:["org-teams"],list:s=>[...Ye.all,"list",s]},Qe=({tenantId:s,enabled:t=!0})=>{const n=ms({queryKey:Ye.list(s??""),queryFn:async()=>(await zs(s)).result??{teams:[]},enabled:t&&!!s,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,retryOnMount:!1,retry:hs});return{...n,teams:n.data?.teams??[]}},xt=(s,t)=>{const n=s?.name?.trim()||t?.trim()||"Team",i=s?.renamed_from?.trim()||null;return s?.invalid_name===!0&&i?{level:"warning",message:`Pulled "${n}". The published name "${i}" is not usable locally, so the team was stored as "${n}".`}:i?{level:"success",message:`Pulled "${n}" (you already have a team called "${i}").`}:{level:"success",message:`Pulled team "${n}".`}},gt=()=>{const s=xs();return gs({mutationFn:async({teamId:t,tenantId:n})=>{if(!_e.baseUrl)throw new Error("Local Operator API URL is not configured.");return bs.pullOrgTeamFromRadient(_e.baseUrl,t,n)},onSuccess:(t,n)=>{const i=xt(t.result,n.name);i.level==="warning"?fs(i.message):ps(i.message),s.invalidateQueries({queryKey:["desktop","teams"]})},onError:t=>{console.error("Pulling an organization team failed:",t)}})},ft=/^v/i,pt=s=>s.members.reduce((t,n)=>t+n.count,0),bt=s=>s.count>1?`${s.role} ×${s.count}`:s.role,jt=s=>s.members.map(bt).join(", "),vt=s=>{const t=(s.version??"").trim().replace(ft,"").trim();return t===""?null:t},Nt=s=>{const t=s.account_metadata?.name?.trim();return t||null},yt=s=>{const t=(s.description??"").trim();return t===""?null:t},he=240,wt=he/2,kt=(s,t)=>{if(t||s.length<=he)return s;const n=s.slice(0,he),i=n.lastIndexOf(" ");return`${(i>=wt?n.slice(0,i):n).trimEnd()}…`},te=s=>it(s,"d MMM yyyy"),ae=s=>{if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t},Fe=(s,t,n)=>{const i=n-t.getTime();let l;return i<0?l=te(t):i<6e4?l="just now":l=`${Qs(t,new Date(n))} ago`,{label:s,when:l,iso:t.toISOString(),exact:te(t)}},Tt=(s,t=Date.now())=>{const n=ae(s.updated_at);if(n)return Fe("updated",n,t);const i=ae(s.created_date);return i?Fe("created",i,t):null},Ct=s=>{const t=ae(s.created_date),n=ae(s.updated_at);return{created:t?te(t):null,updated:n?te(n):null}},St=s=>s==="role"?"Role":s==="specialist"?"Specialist":s,Rt=["refresh-hub","retry","sign-in"],_t=({tenantId:s,orgName:t})=>{const{teams:n,isLoading:i,isFetching:l,isError:o,error:h,refetch:j}=Qe({tenantId:s}),g=He(h),u=gt(),[v,N]=r.useState(null),[p,b]=r.useState(null),y=r.useRef(new Map),m=r.useRef(null);r.useEffect(()=>{u.isPending||m.current===null||(y.current.get(m.current)?.focus(),m.current=null)},[u.isPending]);const[$,D]=r.useState(!1),[I,S]=r.useState(()=>new Set),M=(c,d)=>S(L=>{const P=new Set(L);return d?P.add(c):P.delete(c),P}),Y=(c,d)=>{c.key!=="Escape"||!I.has(d)||(c.target instanceof Element?c.target:null)?.closest('[data-testid="org-team-pull-error"]')||(M(d,!1),c.currentTarget.querySelector("button[aria-expanded]")?.focus(),c.preventDefault())},B=r.useMemo(()=>{if(!js(u.error))return null;const c=n.find(d=>d.id===v);return Is({code:u.error.code,message:u.error.message,details:u.error.details},{name:c?.name??"this team",hubAgentId:null,surface:"pull"})},[u.error,v,n]),F=(c,d)=>{switch(c){case"refresh-hub":j();break;case"retry":A(d);break;case"sign-in":D(!0);break}},A=c=>{u.isPending||(m.current=c.id,N(null),b(c.id),u.mutate({teamId:c.id,tenantId:s,name:c.name},{onSettled:()=>b(null),onError:()=>N(c.id)}))};return e.jsxs("section",{className:"mb-6 max-w-4xl rounded-md bg-surface","aria-label":`Teams shared with ${t??"this organization"}`,"data-testid":"org-teams",children:[i&&e.jsxs("div",{"aria-hidden":"true",className:"flex flex-col divide-y divide-hairline","data-testid":"org-teams-loading",children:[e.jsx(me,{}),e.jsx(me,{}),e.jsx(me,{})]}),!i&&o&&e.jsxs(J,{variant:g?"warning":"danger",className:"m-4 w-auto","data-testid":"org-teams-error",children:[e.jsx(ee,{children:g==="plan"?"That organization needs an active Team plan":g==="no_access"?"You do not have access to that organization":"Teams could not be loaded"}),e.jsx(se,{children:g==="plan"?`Reading an organization's teams is part of the Team plan. An owner of ${t??"this organization"} can activate it in the Radient console, and then its teams will be listed here.`:g==="no_access"?`You are not a member of ${t??"that organization"}, so its teams are not listed here. An owner can invite you again.`:Be("The teams shared with this organization could not be read.",h)}),g!=="no_access"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"primary",size:"sm",onClick:()=>void j(),disabled:l,"aria-busy":l,children:l?"Trying…":"Try again"})})]}),!i&&!o&&n.length===0&&e.jsx("p",{className:"p-4 text-body-sm text-ink-muted","data-testid":"org-teams-empty",children:`Teams shared into ${t??"this organization"} appear here for its members.`}),!i&&!o&&n.length>0&&e.jsx("ul",{className:"flex flex-col divide-y divide-hairline",children:n.map(c=>e.jsxs("li",{className:C(We,"transition-colors duration-fast ease-out-quart hover:bg-elevated first:rounded-t-md last:rounded-b-md"),onKeyDown:d=>Y(d,c.id),children:[e.jsx(vs,{className:"min-w-0",open:I.has(c.id),onOpenChange:d=>M(c.id,d),summaryAlign:"firstLine",triggerClassName:"min-w-0",chevronClassName:"text-ink-dim mt-1",rowClassName:"py-0",summary:e.jsx(Ot,{team:c,expanded:I.has(c.id)}),trailing:e.jsx("div",{className:"-mt-1 ml-3 shrink-0 self-start",children:e.jsx(f,{ref:d=>{d?y.current.set(c.id,d):y.current.delete(c.id)},variant:"secondary",size:"sm",onClick:()=>A(c),disabled:u.isPending,"aria-label":`Pull team ${c.name}`,children:p===c.id?"Pulling…":"Pull"})}),children:e.jsx(Et,{team:c})}),v===c.id&&e.jsxs("div",{className:"mt-1 flex flex-col items-start gap-1 pl-5","data-testid":"org-team-pull-error",children:[e.jsx("output",{className:"text-meta text-danger",children:B?.body??u.error?.message??`"${c.name}" could not be pulled.`}),B?.actions.filter(d=>Rt.includes(d)).map(d=>e.jsx(f,{variant:"primary",size:"sm",onClick:()=>F(d,c),children:Ms[d]},d)),$&&e.jsx("div",{className:"mt-1","data-testid":"org-team-pull-reauth",children:e.jsx(st,{titleText:"Sign in again",descriptionText:"",onSignInSuccess:()=>{D(!1),N(null),j()}})})]})]},c.id))})]})},We="px-4 py-3",Ge=()=>e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),e.jsx("span",{className:"sr-only",children:", "})]}),At=({team:s})=>{const t=s.manager?.trim(),n=pt(s);return e.jsxs("span",{className:"block truncate text-meta",children:[t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-ink-dim",children:"Manager:"})," ",e.jsx("span",{className:"text-ink-muted",children:t})]}):null,t?e.jsx(Ge,{}):null,s.members.length===0?e.jsx("span",{className:"text-ink-dim",children:"No members"}):e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"text-ink-dim",children:[n," ",n===1?"member":"members",":"]})," ",e.jsx("span",{className:"text-ink-muted",children:jt(s)})]})]})},Pt=({team:s})=>{const t=s.project?.trim(),n=Nt(s),i=Tt(s),l=[];return t&&l.push({key:"project",node:t}),n&&l.push({key:"author",node:n}),i&&l.push({key:"recency",node:e.jsxs(e.Fragment,{children:[i.label," ",e.jsx(Q,{content:i.exact,children:e.jsx("time",{dateTime:i.iso,children:i.when})})]})}),l.length===0?null:e.jsx("span",{className:"block truncate text-ink-dim text-meta",children:l.map((o,h)=>e.jsxs("span",{children:[h>0?e.jsx(Ge,{}):null,o.node]},o.key))})},Ot=({team:s,expanded:t})=>{const n=yt(s),i=vt(s);return e.jsxs("span",{className:"flex min-w-0 flex-col",children:[e.jsxs("span",{className:"flex min-w-0 items-baseline",children:[e.jsx("span",{className:"truncate font-medium text-body text-ink",children:s.name}),i?e.jsxs("span",{className:"ml-2 shrink-0 text-ink-dim text-meta",children:["v",i]}):null]}),n?e.jsxs(e.Fragment,{children:[e.jsx("span",{...Ns,"aria-hidden":"true",className:C("mt-1 select-text break-words text-body-sm text-ink-muted",t?"line-clamp-[12] whitespace-pre-line":"line-clamp-2"),children:n}),e.jsx("span",{className:"sr-only",children:kt(n,t)})]}):e.jsx("span",{className:"mt-1 text-body-sm text-ink-dim",children:"No description"}),e.jsxs("span",{className:"mt-1 flex min-w-0 flex-col",children:[e.jsx(At,{team:s}),e.jsx(Pt,{team:s})]})]})},Et=({team:s})=>{const t=s.manager?.trim(),n=Ct(s),i=[n.created?`Created ${n.created}`:null,n.updated?`Updated ${n.updated}`:null].filter(o=>o!==null),l=!!t||s.members.length>0;return e.jsxs("div",{className:"mt-1 flex flex-col gap-2",children:[l||i.length===0?e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("p",{className:"text-ink-dim text-meta",children:"Members"}),e.jsxs("ul",{className:"flex flex-col gap-0.5",children:[t?e.jsxs("li",{className:"flex items-baseline gap-1.5",children:[e.jsx("span",{className:"text-body-sm text-ink-muted",children:t}),e.jsx("span",{className:"text-ink-dim text-meta",children:"Manager"})]}):null,s.members.map(o=>e.jsxs("li",{className:"flex items-baseline gap-1.5",children:[e.jsx("span",{className:"text-body-sm text-ink-muted",children:o.role}),e.jsx("span",{className:"text-ink-dim text-meta",children:St(o.kind)}),o.count>1?e.jsxs("span",{className:"text-ink-dim text-meta tabular-nums",children:["×",o.count]}):null]},`${o.kind}:${o.role}`)),l?null:e.jsx("li",{className:"text-ink-dim text-meta",children:"No members"})]})]}):null,i.length>0?e.jsx("p",{className:"text-ink-dim text-meta",children:i.join(" · ")}):null]})},me=()=>e.jsxs("div",{className:C(We,"pl-9"),"data-testid":"org-team-skeleton-row",children:[e.jsx("div",{className:"flex h-[1lh] items-center text-body",children:e.jsx(x,{className:"h-4.5 w-40"})}),e.jsxs("div",{className:"mt-1 flex h-[2lh] flex-col justify-evenly text-body-sm",children:[e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-2/3"})]}),e.jsx("div",{className:"mt-1 flex h-[1lh] items-center text-meta",children:e.jsx(x,{className:"h-3 w-64"})}),e.jsx("div",{className:"flex h-[1lh] items-center text-meta",children:e.jsx(x,{className:"h-3 w-48"})})]}),zt={loading:"The public hub lists agents only. Checking your organizations…",orgs:"The public hub lists agents only. Choose an organization to see the teams it has shared with its members.","signed-out":"The public hub lists agents only. Sign in to Radient to see the teams shared with the organizations you belong to.",unavailable:"The public hub lists agents only, and this backend does not serve organizations, so there are no teams to list here.",unreadable:"The public hub lists agents only, and your organizations could not be read, so no teams can be listed.",none:"The public hub lists agents only. You are not in an organization on the Team plan yet, and an organization owner can add you or activate the plan in the Radient console."},It=({reason:s,orgs:t,onPickOrg:n,onOpenSettings:i,onRetry:l,retrying:o})=>{const h=r.useRef(null),j=r.useRef(null),g=r.useRef(!1);return r.useEffect(()=>{g.current&&(g.current=!1,(j.current??h.current)?.focus())}),e.jsxs("section",{ref:h,tabIndex:-1,className:"flex max-w-2xl flex-col items-start gap-2 rounded-md bg-surface px-6 py-8","aria-labelledby":"agent-hub-teams-public-heading","data-testid":"agent-hub-teams-public",children:[e.jsx("h2",{id:"agent-hub-teams-public-heading",className:"font-medium text-heading text-ink",children:"Teams are shared inside organizations"}),e.jsx("output",{className:"block max-w-md text-body-sm text-ink-muted",children:zt[s]}),s==="orgs"&&e.jsx("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:t.map(u=>e.jsxs(f,{variant:"secondary",onClick:()=>n(u.tenant_id),children:[e.jsx(qe,{"aria-hidden":"true"}),e.jsx("span",{className:"max-w-48 truncate",children:u.tenant_name||"Organization"})]},u.tenant_id))}),s==="signed-out"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"secondary",onClick:i,children:"Open settings to sign in"})}),s==="unreadable"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{ref:j,variant:"secondary",onClick:()=>{g.current=!0,l()},disabled:o,"aria-busy":o,children:o?"Trying…":"Try again"})})]})},Mt=(s,t)=>{const[n,i]=r.useState(s);return r.useEffect(()=>{const l=setTimeout(()=>i(s),t);return()=>clearTimeout(l)},[s,t]),n},K=[{value:"download_count:desc",label:"Most downloaded",sort:"download_count",order:"desc"},{value:"like_count:desc",label:"Most liked",sort:"like_count",order:"desc"},{value:"favourite_count:desc",label:"Most favourited",sort:"favourite_count",order:"desc"},{value:"created_at:desc",label:"Newest",sort:"created_at",order:"desc"},{value:"updated_at:desc",label:"Recently updated",sort:"updated_at",order:"desc"},{value:"name:asc",label:"Name (A to Z)",sort:"name",order:"asc"}],Ft=[{value:"name",label:"Name"},{value:"description",label:"Description"}],Lt=300,q="public",Le={agents:"agent-hub-view-agents",teams:"agent-hub-view-teams"},$e="agent-hub-view-panel",$t=()=>e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface",children:[e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 p-4",children:[e.jsx(x,{className:"h-5.5 w-2/3"}),e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-1/2"}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(x,{className:"h-5.5 w-24"}),e.jsx(x,{className:"h-5.5 w-20"})]}),e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx(x,{className:"h-5.5 w-24"})})]}),e.jsx(x,{className:"h-4.5 w-32"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 border-t border-hairline px-3 py-2",children:[e.jsx(x,{className:"size-4"}),e.jsx(x,{className:"h-4 w-6"}),e.jsx(x,{className:"size-4"}),e.jsx(x,{className:"h-4 w-6"}),e.jsx(x,{className:"ml-auto h-7 w-16"})]})]}),ea=()=>{const s=De(),{isAuthenticated:t}=xe(),[n,i]=r.useState(1),[l]=r.useState(12),[o,h]=r.useState(null),[j,g]=r.useState(""),[u,v]=r.useState("name"),[N,p]=r.useState(K[0].value),[b,y]=r.useState(q),[m,$]=r.useState("agents"),[D,I]=r.useState([]),S=Mt(j,Lt),M=K.find(a=>a.value===N)??K[0],Y=ys(),B=ws(),F=ks(Y.data,"radient_org"),A=t?at(F,B??null):null,{memberships:c,isError:d,isPending:L,isFetching:P,refetch:Ze}=Fs({enabled:nt(F)}),U=r.useMemo(()=>tt(c),[c]),ge=b===q||U.some(a=>a.tenant_id===b);r.useEffect(()=>{ge||y(q)},[ge]);const w=b===q?null:U.find(a=>a.tenant_id===b)??null,T=w?.tenant_id,fe=w?.tenant_name||null,V=o!==null||S!=="",ne=Qe({tenantId:T}),W=T&&ne.isSuccess&&!V?ne.teams.length:null,Xe=w?.role==="owner"||w?.role==="admin",Ke=r.useMemo(()=>new Map(c.map(a=>[a.tenant_id,a.tenant_name])),[c]),{data:G,agents:Je,isLoading:es,isFetching:R,error:O,refetch:pe,pagination:_}=Ls({page:n,perPage:l,categories:o?[o]:void 0,name:u==="name"&&S||void 0,description:u==="description"&&S||void 0,sort:M.sort,order:M.order,tenantId:T}),H=w?He(O):null,Z=Je??[],be=R&&G!==void 0,{statuses:je,isKnown:ss,isError:ts,isFetching:ie,refetch:as}=Ws({agentIds:T?[]:Z.map(a=>a.id)}),re=r.useRef(null),le=r.useRef(null),[ve,ns]=r.useState(0);r.useEffect(()=>{ve!==0&&(re.current??le.current)?.focus()},[ve]);const Ne=r.useRef(null),oe=r.useRef(!1),ce=r.useMemo(()=>[...new Set((G?.records??[]).flatMap(a=>a.categories??[]))],[G]);r.useEffect(()=>{I(a=>ce.every(z=>a.includes(z))?a:[...new Set([...a,...ce])])},[ce]);const is=()=>{h(null),g(""),i(1),ns(a=>a+1)},k=(es||R)&&G===void 0,ye=!k&&!V&&(O!==null||Z.length===0);r.useEffect(()=>{!oe.current||k||(oe.current=!1,O?Ne.current?.focus():(re.current??le.current)?.focus())},[k,O]);const we=r.useRef(null),rs=a=>{i(a),we.current?.scrollIntoView({block:"nearest"})},ls=a=>{h(a),i(1)},os=a=>{g(a),i(1)},ke=a=>{y(a),i(1)},de=r.useRef(new Map),X=r.useRef(null);r.useEffect(()=>{X.current!==null&&(de.current.get(X.current)?.focus(),X.current=null)},[b]);const cs=a=>{v(a),i(1)},Te=_&&!V?_.totalRecords:null,ds=U.length>0?"orgs":t?A?"unavailable":d?"unreadable":F==="unknown"||L?"loading":"none":"signed-out",ue=T?`shared with ${fe??"this organization"}`:"in the public hub",Ce=(a,z)=>`${a} ${z}${a===1?"":"s"} ${ue}`;let E;return m==="teams"?T?ne.isLoading?E="Loading teams…":W!==null?E=Ce(W,"team"):E=`Teams ${ue}`:E=" ":k?E="Loading agents…":_?E=Ce(_.totalRecords,"agent"):E=`Agents ${ue}`,e.jsxs("div",{className:"flex h-full flex-col gap-8 p-6",children:[e.jsx(Cs,{title:"Agent hub",subtitle:"Discover and download community agents on Radient",icon:et}),e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4",children:[A&&e.jsxs(J,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-unavailable",children:[e.jsx(ee,{children:"Organizations are unavailable"}),e.jsx(se,{children:A})]}),e.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-x-4 gap-y-2","data-testid":"agent-hub-browse-bar",children:[e.jsx(Rs,{value:m,onValueChange:a=>$(a),children:e.jsx(_s,{"aria-label":"Browse the hub by type",children:["agents","teams"].map(a=>e.jsxs(As,{value:a,id:Le[a],"aria-controls":m===a?$e:void 0,"data-testid":`agent-hub-view-${a}`,children:[a==="agents"?"Agents":"Teams",(a==="agents"?Te:W)!==null&&e.jsx("span",{className:"min-w-[2ch] font-normal text-ink-dim tabular-nums",children:a==="agents"?Te:W})]},a))})}),U.length>0&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[e.jsx("span",{"aria-hidden":"true",className:"text-meta text-ink-muted",children:"Showing"}),e.jsxs("fieldset",{className:"m-0 min-w-0 border-0 p-0","data-testid":"agent-hub-scope",children:[e.jsx("legend",{className:"sr-only",children:"Show the hub of"}),e.jsx("div",{className:"flex flex-wrap gap-0.5 rounded-md bg-sunken p-0.5",children:[{value:q,label:"Public hub",Icon:Ts},...U.map(a=>({value:a.tenant_id,label:a.tenant_name||"Organization",Icon:qe}))].map(({value:a,label:z,Icon:us})=>e.jsxs(f,{ref:Se=>{Se?de.current.set(a,Se):de.current.delete(a)},variant:"ghost",size:"sm","aria-pressed":b===a,onClick:()=>ke(a),title:z,"data-testid":`agent-hub-scope-${a===q?"public":`org-${a}`}`,className:C("max-w-48",b===a&&"bg-surface text-ink hover:bg-surface"),children:[e.jsx(us,{"aria-hidden":"true"}),e.jsx("span",{className:"truncate",children:z})]},a))})]})]})]}),e.jsx(Ps,{id:$e,labelledBy:Le[m],children:e.jsxs("div",{className:"flex min-h-0 flex-1 flex-row overflow-hidden",children:[m==="agents"&&e.jsx(e.Fragment,{children:e.jsx("div",{className:"mr-6 hidden w-60 shrink-0 rounded-md bg-surface p-2 md:block","data-tour-tag":"agent-hub-sidebar-container",children:!ye&&e.jsx(mt,{selectedCategory:o,onSelectCategory:ls,categories:D})})}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-y-auto",children:[m==="agents"&&!ye&&e.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.jsxs("div",{className:C("flex min-w-56 flex-1 items-center rounded-sm border border-control bg-surface","transition-colors duration-fast ease-out-quart","has-[:focus-visible]:outline-solid has-[:focus-visible]:outline-2","has-[:focus-visible]:outline-accent has-[:focus-visible]:outline-offset-2"),children:[e.jsx(Os,{ref:re,type:"search",value:j,onChange:a=>os(a.target.value),placeholder:"Search agents","aria-label":"Search agents",className:"h-8 min-w-0 flex-1 border-0 bg-transparent outline-none","data-testid":"agent-hub-search"}),e.jsxs(Ae,{value:u,onValueChange:cs,children:[e.jsx(Pe,{className:"w-auto shrink-0 border-y-0 border-l border-hairline border-r-0 bg-transparent pl-2 outline-none","aria-label":"Search in","data-testid":"agent-hub-search-scope",children:e.jsx(Oe,{})}),e.jsx(Ee,{children:Ft.map(a=>e.jsx(ze,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs(Ae,{value:N,onValueChange:p,children:[e.jsx(Pe,{className:"w-48","aria-label":"Sort agents","data-testid":"agent-hub-sort",children:e.jsx(Oe,{})}),e.jsx(Ee,{children:K.map(a=>e.jsx(ze,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("p",{ref:we,"aria-live":"polite",className:"mb-3 text-meta text-ink-dim","data-testid":"agent-hub-status",children:[E,m==="agents"&&be?e.jsxs(e.Fragment,{children:[" ",e.jsx("span",{"data-testid":"agent-hub-updating",children:"Updating…"})]}):null]}),m==="agents"&&e.jsxs(e.Fragment,{children:[t&&ts&&e.jsxs("output",{className:"mb-3 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-hub-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so no card shows a viewer state."}),e.jsx(f,{variant:"ghost",size:"sm",onClick:()=>void as(),disabled:ie,"aria-busy":ie,children:ie?"Trying…":"Try again"})]}),k&&e.jsx("div",{"data-testid":"agent-hub-loading",className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6",children:Array.from({length:6},(a,z)=>e.jsx($t,{},z))}),k&&_===void 0&&e.jsx("div",{"aria-hidden":"true",className:"mt-6 flex min-h-13 items-center justify-center","data-testid":"agent-hub-pager-placeholder",children:e.jsx(x,{className:"h-4 w-24"})}),e.jsx("output",{"aria-live":"polite","data-testid":"agent-hub-outage",className:C(!k&&O&&!H?"block":"sr-only"),children:!k&&O&&!H&&e.jsxs(J,{variant:"danger",className:"max-w-2xl","aria-busy":R,"data-testid":"agent-hub-error",children:[e.jsx(ee,{children:t?"The hub could not be loaded":"Sign in to use the hub"}),e.jsx(se,{children:t?Be("The agent list could not be loaded.",O):"You are not signed in to Radient, so the hub has no credential to read the agent list with. Sign in on the settings page, then try again."}),e.jsx("div",{className:"mt-2",children:e.jsx(f,{ref:Ne,variant:"outline",size:"sm",onClick:()=>{oe.current=!0,pe()},disabled:R,"aria-busy":R,children:R?"Trying…":"Try again"})})]})}),!k&&H&&w&&e.jsxs(J,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-no-access",children:[e.jsx(ee,{children:H==="plan"?"That organization needs an active Team plan":"You do not have access to that organization"}),e.jsx(se,{children:H==="plan"?`Sharing agents inside an organization is part of the Team plan. An owner of ${w.tenant_name||"this organization"} can activate it in the Radient console, and then its agents will be listed here.`:`You are not a member of ${w.tenant_name||"that organization"}, so its agents are not listed here. An owner can invite you again.`}),H==="plan"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"primary",size:"sm",onClick:()=>void pe(),disabled:R,"aria-busy":R,children:R?"Trying…":"Try again"})})]}),!k&&!O&&e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6","aria-busy":be,children:Z.length===0?e.jsxs("div",{"data-testid":"agent-hub-empty",className:C("col-span-full w-full flex flex-col items-center gap-2 rounded-md bg-surface px-6 py-10 text-center",!T&&"max-w-2xl justify-self-center"),children:[e.jsx("p",{className:"text-heading text-ink",children:T?"This organization has no shared agents yet.":o?`No agents in ${Ve(o).label}.`:V?"No agents match that search.":"The hub is empty."}),e.jsx("p",{className:"max-w-md text-body-sm text-ink-muted",children:T?`Agents published into ${w?.tenant_name||"this organization"} appear here for its members.`:o?"Nothing in this category yet. Clear the filter to see the whole hub.":V?"No agent's name or description carries that. Clear it to see the whole hub.":"Nobody has published an agent yet. Yours could be the first."}),e.jsx("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:V?e.jsx(f,{variant:"secondary",onClick:is,children:o?"Clear filter":"Clear search"}):T&&!Xe?null:e.jsx(f,{ref:le,variant:"secondary",onClick:()=>s("/agents"),children:"Publish an agent"})})]}):Z.map(a=>e.jsx(dt,{agent:a,status:t?je[a.id]:void 0,viewerStateKnown:t&&Gs(ss,je,a.id),orgName:a.visibility==="org"?Ke.get(a.tenant_id)??null:null},a.id))}),!k&&_&&_.totalPages>1&&e.jsx(ht,{count:_.totalPages,page:_.page,onChange:rs})]}),m==="teams"&&(w?e.jsx(_t,{tenantId:w.tenant_id,orgName:fe}):e.jsx(It,{reason:ds,orgs:U,onPickOrg:a=>{X.current=a,ke(a)},onOpenSettings:()=>s("/settings"),onRetry:()=>void Ze(),retrying:P}))]})]})})]})]})};export{ea as AgentHubPage};
11
+ */const lt=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M17 12h.01",key:"1m0b6t"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M7 12h.01",key:"eqddd0"}]],ot=Ue("circle-ellipsis",lt),ct=({agent:s,isLiked:t,isFavourited:n,onLikeToggle:i,onFavouriteToggle:l,onDownload:o,isLikeActionLoading:h=!1,isFavouriteActionLoading:j=!1,isDownloading:g=!1,actionError:u=null,onRetryAction:v,showActions:N=!0,viewerStateKnown:p=!0,orgName:b=null})=>{const y=De(),{isAuthenticated:m}=xe(),$=s.description??"",[D,I]=r.useState(!1),S=r.useRef(null),M=r.useCallback(d=>{if(S.current?.disconnect(),S.current=null,!d)return;const L=()=>I(d.scrollHeight-d.clientHeight>1);L();const P=new ResizeObserver(L);P.observe(d),S.current=P},[]),Y=m?p?t?"Unlike agent":"Like agent":"Your likes could not be read, so this is not shown as unliked.":"Log in to Radient to like agents",B=m?p?n?"Unfavourite agent":"Favourite agent":"Your favourites could not be read, so this is not shown as unfavourited.":"Log in to Radient to favourite agents",F=p?t?"Unlike agent":"Like agent":"Like state unavailable",A=p?n?"Unfavourite agent":"Favourite agent":"Favourite state unavailable",c=s.visibility==="org";return e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface transition-colors duration-fast ease-out-quart hover:bg-elevated",children:[e.jsxs("button",{type:"button",onClick:()=>y(`/agent-hub/${s.id}`),className:"flex min-h-0 flex-1 cursor-pointer flex-col gap-2 p-4 text-left","aria-label":`View details for ${s.name}`,children:[e.jsx("h3",{className:"truncate font-medium text-heading text-ink",children:s.name}),c&&e.jsx($s,{orgName:b}),e.jsx(Q,{content:D?$:"",children:e.jsx("span",{ref:M,className:"line-clamp-3 min-h-0 text-body-sm text-ink-muted",children:$})}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsx(Ds,{tags:s.tags,categories:s.categories}),e.jsxs("p",{className:"truncate text-ink-dim text-meta",children:[s.account_metadata?.name??"Unknown author",e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),"updated ",Bs(new Date(s.updated_at))," ago"]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-0.5","data-viewer-state":c?"org":m?p?"known":"unknown":"signed-out",children:[!c&&e.jsxs(e.Fragment,{children:[e.jsx(Q,{content:Y,children:e.jsx("span",{children:e.jsxs(f,{variant:"ghost",size:"sm",onClick:m&&p?()=>i(s.id):void 0,disabled:h||!m||!p,"aria-label":F,className:C(t&&"text-danger"),children:[e.jsx(Us,{fill:t?"currentColor":"none","data-testid":"agent-like-heart"}),e.jsx("span",{"data-testid":"agent-like-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:s.like_count??0})]})})}),e.jsx(Q,{content:B,children:e.jsx("span",{children:e.jsxs(f,{variant:"ghost",size:"sm",onClick:m?()=>l(s.id):void 0,disabled:j||!m||!p,"aria-label":A,className:C(n&&"text-warning"),children:[e.jsx(Xs,{fill:n?"currentColor":"none","data-testid":"agent-favourite-star"}),e.jsx("span",{"data-testid":"agent-favourite-count",className:"inline-flex h-4 min-w-4 items-center font-mono text-mono-sm text-ink-muted",children:s.favourite_count??0})]})})})]}),e.jsx(Q,{content:"Downloads",children:e.jsxs("span",{className:"ml-1 inline-flex items-center gap-1 pr-1 text-ink-dim",children:[e.jsx(Re,{"aria-hidden":"true",className:"size-3.5"}),e.jsx("span",{className:"inline-flex h-4 min-w-6 items-center font-mono text-mono-sm",children:g?e.jsx(x,{className:"h-3 w-6"}):(s.download_count??0).toLocaleString()})]})})]}),N&&o&&e.jsx("div",{className:"ml-auto flex shrink-0 items-center",children:e.jsxs(f,{variant:"secondary",size:"sm",onClick:()=>o(s),disabled:g,"aria-label":`Download ${s.name}`,"data-tour-tag":"agent-hub-download-button",children:[e.jsx(Re,{"data-testid":"agent-download"}),"Get"]})})]}),u&&e.jsxs("output",{"data-testid":"agent-card-error",className:"flex flex-wrap items-center gap-x-2 gap-y-1 border-t border-hairline px-3 py-2 text-body-sm text-danger",children:[e.jsx("span",{className:"min-w-0 flex-1",children:u}),v&&e.jsx(f,{variant:"ghost",size:"sm",onClick:v,children:"Try again"})]})]})},dt=({agent:s,status:t,viewerStateKnown:n=!0,orgName:i=null})=>{const{isAuthenticated:l}=xe(),[o,h]=r.useState(null),j=t?.liked??!1,g=t?.favourited??!1,u=Vs(),v=qs(),N=Hs(),p=()=>{!l||u.isPending||(h(null),u.mutate({agentId:s.id,isCurrentlyLiked:j},{onError:()=>h("like")}))},b=()=>{!l||v.isPending||(h(null),v.mutate({agentId:s.id,isCurrentlyFavourited:g},{onError:()=>h("favourite")}))},y=()=>{N.isPending||(h(null),N.mutate({agentId:s.id,agentName:s.name},{onError:()=>h("download")}))},m=o?o==="like"?{action:"like",error:u.error,retry:p}:o==="favourite"?{action:"favourite",error:v.error,retry:b}:{action:"download",error:N.error,retry:y}:null;return e.jsx(ct,{agent:s,isLiked:l&&j,isFavourited:l&&g,onLikeToggle:p,onFavouriteToggle:b,onDownload:y,isLikeActionLoading:u.isPending,isFavouriteActionLoading:v.isPending,isDownloading:N.isPending,viewerStateKnown:n,orgName:i,actionError:m?Es(m.action,m.error,s.name):null,onRetryAction:m?.retry})},Ie=({selected:s,onClick:t,children:n,...i})=>e.jsx("button",{type:"button",onClick:t,"aria-pressed":s,className:C("flex w-full cursor-pointer items-center gap-2.5 rounded-sm px-3 py-1.5 text-left","text-body-sm transition-colors duration-fast ease-out-quart",s?Ks:"text-ink hover:bg-row-hover"),...i,children:n}),Me=Object.keys(Ys),ut=s=>[...s].sort((t,n)=>{const i=Me.indexOf(t),l=Me.indexOf(n);return i!==-1&&l!==-1?i-l:i!==-1?-1:l!==-1?1:t.localeCompare(n)}),mt=({selectedCategory:s,onSelectCategory:t,categories:n})=>{const i=ut(s&&!n.includes(s)?[...n,s]:n);return e.jsxs("div",{className:"flex h-full flex-col overflow-y-auto",children:[e.jsx("h2",{className:"mb-2 px-3 font-medium text-ink-dim text-meta",children:"Categories"}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs(Ie,{selected:s===null,onClick:()=>t(null),"data-testid":"category-all",children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:e.jsx(Zs,{size:16,"aria-hidden":"true"})}),"All categories"]}),i.map(l=>{const o=Ve(l),h=l==="other"?e.jsx(ot,{size:16}):o.icon;return e.jsxs(Ie,{selected:s===l,onClick:()=>t(l),"data-testid":`category-${l}`,children:[e.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:h}),o.label]},l)})]})]})},ht=({page:s,count:t,onChange:n})=>{const i=r.useRef(null),l=r.useRef(null),o=r.useRef(null);return r.useEffect(()=>{const h=o.current;o.current=null,h==="previous"&&i.current?.focus(),h==="next"&&l.current?.focus()},[s]),t<=1?null:e.jsxs("nav",{"aria-label":"Agent pages",className:"mt-6 flex min-h-13 items-center justify-between gap-3 border-t border-hairline","data-testid":"agent-hub-pager",children:[e.jsxs("span",{className:"select-none text-meta text-ink-dim",children:["Page ",s," of ",t]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"secondary",size:"sm",ref:i,onClick:()=>{s-1<=1&&(o.current="next"),n(s-1)},disabled:s<=1,"aria-label":"Previous page",children:[e.jsx(Js,{"aria-hidden":"true"}),"Previous"]}),e.jsxs(f,{variant:"secondary",size:"sm",ref:l,onClick:()=>{s+1>=t&&(o.current="previous"),n(s+1)},disabled:s>=t,"aria-label":"Next page",children:["Next",e.jsx(Ss,{"aria-hidden":"true"})]})]})]})},Ye={all:["org-teams"],list:s=>[...Ye.all,"list",s]},Qe=({tenantId:s,enabled:t=!0})=>{const n=ms({queryKey:Ye.list(s??""),queryFn:async()=>(await zs(s)).result??{teams:[]},enabled:t&&!!s,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,retryOnMount:!1,retry:hs});return{...n,teams:n.data?.teams??[]}},xt=(s,t)=>{const n=s?.name?.trim()||t?.trim()||"Team",i=s?.renamed_from?.trim()||null;return s?.invalid_name===!0&&i?{level:"warning",message:`Pulled "${n}". The published name "${i}" is not usable locally, so the team was stored as "${n}".`}:i?{level:"success",message:`Pulled "${n}" (you already have a team called "${i}").`}:{level:"success",message:`Pulled team "${n}".`}},gt=()=>{const s=xs();return gs({mutationFn:async({teamId:t,tenantId:n})=>{if(!_e.baseUrl)throw new Error("Local Operator API URL is not configured.");return bs.pullOrgTeamFromRadient(_e.baseUrl,t,n)},onSuccess:(t,n)=>{const i=xt(t.result,n.name);i.level==="warning"?fs(i.message):ps(i.message),s.invalidateQueries({queryKey:["desktop","teams"]})},onError:t=>{console.error("Pulling an organization team failed:",t)}})},ft=/^v/i,pt=s=>s.members.reduce((t,n)=>t+n.count,0),bt=s=>s.count>1?`${s.role} ×${s.count}`:s.role,jt=s=>s.members.map(bt).join(", "),vt=s=>{const t=(s.version??"").trim().replace(ft,"").trim();return t===""?null:t},Nt=s=>{const t=s.account_metadata?.name?.trim();return t||null},yt=s=>{const t=(s.description??"").trim();return t===""?null:t},he=240,wt=he/2,kt=(s,t)=>{if(t||s.length<=he)return s;const n=s.slice(0,he),i=n.lastIndexOf(" ");return`${(i>=wt?n.slice(0,i):n).trimEnd()}…`},te=s=>it(s,"d MMM yyyy"),ae=s=>{if(!s)return null;const t=new Date(s);return Number.isNaN(t.getTime())?null:t},Fe=(s,t,n)=>{const i=n-t.getTime();let l;return i<0?l=te(t):i<6e4?l="just now":l=`${Qs(t,new Date(n))} ago`,{label:s,when:l,iso:t.toISOString(),exact:te(t)}},Tt=(s,t=Date.now())=>{const n=ae(s.updated_at);if(n)return Fe("updated",n,t);const i=ae(s.created_date);return i?Fe("created",i,t):null},Ct=s=>{const t=ae(s.created_date),n=ae(s.updated_at);return{created:t?te(t):null,updated:n?te(n):null}},St=s=>s==="role"?"Role":s==="specialist"?"Specialist":s,Rt=["refresh-hub","retry","sign-in"],_t=({tenantId:s,orgName:t})=>{const{teams:n,isLoading:i,isFetching:l,isError:o,error:h,refetch:j}=Qe({tenantId:s}),g=qe(h),u=gt(),[v,N]=r.useState(null),[p,b]=r.useState(null),y=r.useRef(new Map),m=r.useRef(null);r.useEffect(()=>{u.isPending||m.current===null||(y.current.get(m.current)?.focus(),m.current=null)},[u.isPending]);const[$,D]=r.useState(!1),[I,S]=r.useState(()=>new Set),M=(c,d)=>S(L=>{const P=new Set(L);return d?P.add(c):P.delete(c),P}),Y=(c,d)=>{c.key!=="Escape"||!I.has(d)||(c.target instanceof Element?c.target:null)?.closest('[data-testid="org-team-pull-error"]')||(M(d,!1),c.currentTarget.querySelector("button[aria-expanded]")?.focus(),c.preventDefault())},B=r.useMemo(()=>{if(!js(u.error))return null;const c=n.find(d=>d.id===v);return Is({code:u.error.code,message:u.error.message,details:u.error.details},{name:c?.name??"this team",hubAgentId:null,surface:"pull"})},[u.error,v,n]),F=(c,d)=>{switch(c){case"refresh-hub":j();break;case"retry":A(d);break;case"sign-in":D(!0);break}},A=c=>{u.isPending||(m.current=c.id,N(null),b(c.id),u.mutate({teamId:c.id,tenantId:s,name:c.name},{onSettled:()=>b(null),onError:()=>N(c.id)}))};return e.jsxs("section",{className:"mb-6 max-w-4xl rounded-md bg-surface","aria-label":`Teams shared with ${t??"this organization"}`,"data-testid":"org-teams",children:[i&&e.jsxs("div",{"aria-hidden":"true",className:"flex flex-col divide-y divide-hairline","data-testid":"org-teams-loading",children:[e.jsx(me,{}),e.jsx(me,{}),e.jsx(me,{})]}),!i&&o&&e.jsxs(J,{variant:g?"warning":"danger",className:"m-4 w-auto","data-testid":"org-teams-error",children:[e.jsx(ee,{children:g==="plan"?"That organization needs an active Team plan":g==="no_access"?"You do not have access to that organization":"Teams could not be loaded"}),e.jsx(se,{children:g==="plan"?`Reading an organization's teams is part of the Team plan. An owner of ${t??"this organization"} can activate it in the Radient console, and then its teams will be listed here.`:g==="no_access"?`You are not a member of ${t??"that organization"}, so its teams are not listed here. An owner can invite you again.`:Be("The teams shared with this organization could not be read.",h)}),g!=="no_access"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"primary",size:"sm",onClick:()=>void j(),disabled:l,"aria-busy":l,children:l?"Trying…":"Try again"})})]}),!i&&!o&&n.length===0&&e.jsx("p",{className:"p-4 text-body-sm text-ink-muted","data-testid":"org-teams-empty",children:`Teams shared into ${t??"this organization"} appear here for its members.`}),!i&&!o&&n.length>0&&e.jsx("ul",{className:"flex flex-col divide-y divide-hairline",children:n.map(c=>e.jsxs("li",{className:C(We,"transition-colors duration-fast ease-out-quart hover:bg-elevated first:rounded-t-md last:rounded-b-md"),onKeyDown:d=>Y(d,c.id),children:[e.jsx(vs,{className:"min-w-0",open:I.has(c.id),onOpenChange:d=>M(c.id,d),summaryAlign:"firstLine",triggerClassName:"min-w-0",chevronClassName:"text-ink-dim mt-1",rowClassName:"py-0",summary:e.jsx(Ot,{team:c,expanded:I.has(c.id)}),trailing:e.jsx("div",{className:"-mt-1 ml-3 shrink-0 self-start",children:e.jsx(f,{ref:d=>{d?y.current.set(c.id,d):y.current.delete(c.id)},variant:"secondary",size:"sm",onClick:()=>A(c),disabled:u.isPending,"aria-label":`Pull team ${c.name}`,children:p===c.id?"Pulling…":"Pull"})}),children:e.jsx(Et,{team:c})}),v===c.id&&e.jsxs("div",{className:"mt-1 flex flex-col items-start gap-1 pl-5","data-testid":"org-team-pull-error",children:[e.jsx("output",{className:"text-meta text-danger",children:B?.body??u.error?.message??`"${c.name}" could not be pulled.`}),B?.actions.filter(d=>Rt.includes(d)).map(d=>e.jsx(f,{variant:"primary",size:"sm",onClick:()=>F(d,c),children:Ms[d]},d)),$&&e.jsx("div",{className:"mt-1","data-testid":"org-team-pull-reauth",children:e.jsx(st,{titleText:"Sign in again",descriptionText:"",onSignInSuccess:()=>{D(!1),N(null),j()}})})]})]},c.id))})]})},We="px-4 py-3",Ge=()=>e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"mx-1.5",children:"·"}),e.jsx("span",{className:"sr-only",children:", "})]}),At=({team:s})=>{const t=s.manager?.trim(),n=pt(s);return e.jsxs("span",{className:"block truncate text-meta",children:[t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-ink-dim",children:"Manager:"})," ",e.jsx("span",{className:"text-ink-muted",children:t})]}):null,t?e.jsx(Ge,{}):null,s.members.length===0?e.jsx("span",{className:"text-ink-dim",children:"No members"}):e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"text-ink-dim",children:[n," ",n===1?"member":"members",":"]})," ",e.jsx("span",{className:"text-ink-muted",children:jt(s)})]})]})},Pt=({team:s})=>{const t=s.project?.trim(),n=Nt(s),i=Tt(s),l=[];return t&&l.push({key:"project",node:t}),n&&l.push({key:"author",node:n}),i&&l.push({key:"recency",node:e.jsxs(e.Fragment,{children:[i.label," ",e.jsx(Q,{content:i.exact,children:e.jsx("time",{dateTime:i.iso,children:i.when})})]})}),l.length===0?null:e.jsx("span",{className:"block truncate text-ink-dim text-meta",children:l.map((o,h)=>e.jsxs("span",{children:[h>0?e.jsx(Ge,{}):null,o.node]},o.key))})},Ot=({team:s,expanded:t})=>{const n=yt(s),i=vt(s);return e.jsxs("span",{className:"flex min-w-0 flex-col",children:[e.jsxs("span",{className:"flex min-w-0 items-baseline",children:[e.jsx("span",{className:"truncate font-medium text-body text-ink",children:s.name}),i?e.jsxs("span",{className:"ml-2 shrink-0 text-ink-dim text-meta",children:["v",i]}):null]}),n?e.jsxs(e.Fragment,{children:[e.jsx("span",{...Ns,"aria-hidden":"true",className:C("mt-1 select-text break-words text-body-sm text-ink-muted",t?"line-clamp-[12] whitespace-pre-line":"line-clamp-2"),children:n}),e.jsx("span",{className:"sr-only",children:kt(n,t)})]}):e.jsx("span",{className:"mt-1 text-body-sm text-ink-dim",children:"No description"}),e.jsxs("span",{className:"mt-1 flex min-w-0 flex-col",children:[e.jsx(At,{team:s}),e.jsx(Pt,{team:s})]})]})},Et=({team:s})=>{const t=s.manager?.trim(),n=Ct(s),i=[n.created?`Created ${n.created}`:null,n.updated?`Updated ${n.updated}`:null].filter(o=>o!==null),l=!!t||s.members.length>0;return e.jsxs("div",{className:"mt-1 flex flex-col gap-2",children:[l||i.length===0?e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("p",{className:"text-ink-dim text-meta",children:"Members"}),e.jsxs("ul",{className:"flex flex-col gap-0.5",children:[t?e.jsxs("li",{className:"flex items-baseline gap-1.5",children:[e.jsx("span",{className:"text-body-sm text-ink-muted",children:t}),e.jsx("span",{className:"text-ink-dim text-meta",children:"Manager"})]}):null,s.members.map(o=>e.jsxs("li",{className:"flex items-baseline gap-1.5",children:[e.jsx("span",{className:"text-body-sm text-ink-muted",children:o.role}),e.jsx("span",{className:"text-ink-dim text-meta",children:St(o.kind)}),o.count>1?e.jsxs("span",{className:"text-ink-dim text-meta tabular-nums",children:["×",o.count]}):null]},`${o.kind}:${o.role}`)),l?null:e.jsx("li",{className:"text-ink-dim text-meta",children:"No members"})]})]}):null,i.length>0?e.jsx("p",{className:"text-ink-dim text-meta",children:i.join(" · ")}):null]})},me=()=>e.jsxs("div",{className:C(We,"pl-9"),"data-testid":"org-team-skeleton-row",children:[e.jsx("div",{className:"flex h-[1lh] items-center text-body",children:e.jsx(x,{className:"h-4.5 w-40"})}),e.jsxs("div",{className:"mt-1 flex h-[2lh] flex-col justify-evenly text-body-sm",children:[e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-2/3"})]}),e.jsx("div",{className:"mt-1 flex h-[1lh] items-center text-meta",children:e.jsx(x,{className:"h-3 w-64"})}),e.jsx("div",{className:"flex h-[1lh] items-center text-meta",children:e.jsx(x,{className:"h-3 w-48"})})]}),zt={loading:"The public hub lists agents only. Checking your organizations…",orgs:"The public hub lists agents only. Choose an organization to see the teams it has shared with its members.","signed-out":"The public hub lists agents only. Sign in to Radient to see the teams shared with the organizations you belong to.",unavailable:"The public hub lists agents only, and this backend does not serve organizations, so there are no teams to list here.",unreadable:"The public hub lists agents only, and your organizations could not be read, so no teams can be listed.",none:"The public hub lists agents only. You are not in an organization on the Team plan yet, and an organization owner can add you or activate the plan in the Radient console."},It=({reason:s,orgs:t,onPickOrg:n,onOpenSettings:i,onRetry:l,retrying:o})=>{const h=r.useRef(null),j=r.useRef(null),g=r.useRef(!1);return r.useEffect(()=>{g.current&&(g.current=!1,(j.current??h.current)?.focus())}),e.jsxs("section",{ref:h,tabIndex:-1,className:"flex max-w-2xl flex-col items-start gap-2 rounded-md bg-surface px-6 py-8","aria-labelledby":"agent-hub-teams-public-heading","data-testid":"agent-hub-teams-public",children:[e.jsx("h2",{id:"agent-hub-teams-public-heading",className:"font-medium text-heading text-ink",children:"Teams are shared inside organizations"}),e.jsx("output",{className:"block max-w-md text-body-sm text-ink-muted",children:zt[s]}),s==="orgs"&&e.jsx("div",{className:"mt-2 flex flex-wrap items-center gap-2",children:t.map(u=>e.jsxs(f,{variant:"secondary",onClick:()=>n(u.tenant_id),children:[e.jsx(He,{"aria-hidden":"true"}),e.jsx("span",{className:"max-w-48 truncate",children:u.tenant_name||"Organization"})]},u.tenant_id))}),s==="signed-out"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"secondary",onClick:i,children:"Open settings to sign in"})}),s==="unreadable"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{ref:j,variant:"secondary",onClick:()=>{g.current=!0,l()},disabled:o,"aria-busy":o,children:o?"Trying…":"Try again"})})]})},Mt=(s,t)=>{const[n,i]=r.useState(s);return r.useEffect(()=>{const l=setTimeout(()=>i(s),t);return()=>clearTimeout(l)},[s,t]),n},K=[{value:"download_count:desc",label:"Most downloaded",sort:"download_count",order:"desc"},{value:"like_count:desc",label:"Most liked",sort:"like_count",order:"desc"},{value:"favourite_count:desc",label:"Most favourited",sort:"favourite_count",order:"desc"},{value:"created_at:desc",label:"Newest",sort:"created_at",order:"desc"},{value:"updated_at:desc",label:"Recently updated",sort:"updated_at",order:"desc"},{value:"name:asc",label:"Name (A to Z)",sort:"name",order:"asc"}],Ft=[{value:"name",label:"Name"},{value:"description",label:"Description"}],Lt=300,H="public",Le={agents:"agent-hub-view-agents",teams:"agent-hub-view-teams"},$e="agent-hub-view-panel",$t=()=>e.jsxs("div",{className:"flex h-full flex-col overflow-hidden rounded-md bg-surface",children:[e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-2 p-4",children:[e.jsx(x,{className:"h-5.5 w-2/3"}),e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-full"}),e.jsx(x,{className:"h-3.5 w-1/2"}),e.jsxs("div",{className:"mt-auto flex flex-col gap-2 pt-2",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(x,{className:"h-5.5 w-24"}),e.jsx(x,{className:"h-5.5 w-20"})]}),e.jsx("div",{className:"flex items-center gap-1.5",children:e.jsx(x,{className:"h-5.5 w-24"})})]}),e.jsx(x,{className:"h-4.5 w-32"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 border-t border-hairline px-3 py-2",children:[e.jsx(x,{className:"size-4"}),e.jsx(x,{className:"h-4 w-6"}),e.jsx(x,{className:"size-4"}),e.jsx(x,{className:"h-4 w-6"}),e.jsx(x,{className:"ml-auto h-7 w-16"})]})]}),ea=()=>{const s=De(),{isAuthenticated:t}=xe(),[n,i]=r.useState(1),[l]=r.useState(12),[o,h]=r.useState(null),[j,g]=r.useState(""),[u,v]=r.useState("name"),[N,p]=r.useState(K[0].value),[b,y]=r.useState(H),[m,$]=r.useState("agents"),[D,I]=r.useState([]),S=Mt(j,Lt),M=K.find(a=>a.value===N)??K[0],Y=ys(),B=ws(),F=ks(Y.data,"radient_org"),A=t?at(F,B??null):null,{memberships:c,isError:d,isPending:L,isFetching:P,refetch:Xe}=Fs({enabled:nt(F)}),U=r.useMemo(()=>tt(c),[c]),ge=b===H||U.some(a=>a.tenant_id===b);r.useEffect(()=>{ge||y(H)},[ge]);const w=b===H?null:U.find(a=>a.tenant_id===b)??null,T=w?.tenant_id,fe=w?.tenant_name||null,V=o!==null||S!=="",ne=Qe({tenantId:T}),W=T&&ne.isSuccess&&!V?ne.teams.length:null,Ze=w?.role==="owner"||w?.role==="admin",Ke=r.useMemo(()=>new Map(c.map(a=>[a.tenant_id,a.tenant_name])),[c]),{data:G,agents:Je,isLoading:es,isFetching:R,error:O,refetch:pe,pagination:_}=Ls({page:n,perPage:l,categories:o?[o]:void 0,name:u==="name"&&S||void 0,description:u==="description"&&S||void 0,sort:M.sort,order:M.order,tenantId:T}),q=w?qe(O):null,X=Je??[],be=R&&G!==void 0,{statuses:je,isKnown:ss,isError:ts,isFetching:ie,refetch:as}=Ws({agentIds:T?[]:X.map(a=>a.id)}),re=r.useRef(null),le=r.useRef(null),[ve,ns]=r.useState(0);r.useEffect(()=>{ve!==0&&(re.current??le.current)?.focus()},[ve]);const Ne=r.useRef(null),oe=r.useRef(!1),ce=r.useMemo(()=>[...new Set((G?.records??[]).flatMap(a=>a.categories??[]))],[G]);r.useEffect(()=>{I(a=>ce.every(z=>a.includes(z))?a:[...new Set([...a,...ce])])},[ce]);const is=()=>{h(null),g(""),i(1),ns(a=>a+1)},k=(es||R)&&G===void 0,ye=!k&&!V&&(O!==null||X.length===0);r.useEffect(()=>{!oe.current||k||(oe.current=!1,O?Ne.current?.focus():(re.current??le.current)?.focus())},[k,O]);const we=r.useRef(null),rs=a=>{i(a),we.current?.scrollIntoView({block:"nearest"})},ls=a=>{h(a),i(1)},os=a=>{g(a),i(1)},ke=a=>{y(a),i(1)},de=r.useRef(new Map),Z=r.useRef(null);r.useEffect(()=>{Z.current!==null&&(de.current.get(Z.current)?.focus(),Z.current=null)},[b]);const cs=a=>{v(a),i(1)},Te=_&&!V?_.totalRecords:null,ds=U.length>0?"orgs":t?A?"unavailable":d?"unreadable":F==="unknown"||L?"loading":"none":"signed-out",ue=T?`shared with ${fe??"this organization"}`:"in the public hub",Ce=(a,z)=>`${a} ${z}${a===1?"":"s"} ${ue}`;let E;return m==="teams"?T?ne.isLoading?E="Loading teams…":W!==null?E=Ce(W,"team"):E=`Teams ${ue}`:E=" ":k?E="Loading agents…":_?E=Ce(_.totalRecords,"agent"):E=`Agents ${ue}`,e.jsxs("div",{className:"flex h-full flex-col gap-8 p-6",children:[e.jsx(Cs,{title:"Agent hub",subtitle:"Discover and download community agents on Radient",icon:et}),e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4",children:[A&&e.jsxs(J,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-unavailable",children:[e.jsx(ee,{children:"Organizations are unavailable"}),e.jsx(se,{children:A})]}),e.jsxs("div",{className:"flex shrink-0 flex-wrap items-center gap-x-4 gap-y-2","data-testid":"agent-hub-browse-bar",children:[e.jsx(Rs,{value:m,onValueChange:a=>$(a),children:e.jsx(_s,{"aria-label":"Browse the hub by type",children:["agents","teams"].map(a=>e.jsxs(As,{value:a,id:Le[a],"aria-controls":m===a?$e:void 0,"data-testid":`agent-hub-view-${a}`,children:[a==="agents"?"Agents":"Teams",(a==="agents"?Te:W)!==null&&e.jsx("span",{className:"min-w-[2ch] font-normal text-ink-dim tabular-nums",children:a==="agents"?Te:W})]},a))})}),U.length>0&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-2",children:[e.jsx("span",{"aria-hidden":"true",className:"text-meta text-ink-muted",children:"Showing"}),e.jsxs("fieldset",{className:"m-0 min-w-0 border-0 p-0","data-testid":"agent-hub-scope",children:[e.jsx("legend",{className:"sr-only",children:"Show the hub of"}),e.jsx("div",{className:"flex flex-wrap gap-0.5 rounded-md bg-sunken p-0.5",children:[{value:H,label:"Public hub",Icon:Ts},...U.map(a=>({value:a.tenant_id,label:a.tenant_name||"Organization",Icon:He}))].map(({value:a,label:z,Icon:us})=>e.jsxs(f,{ref:Se=>{Se?de.current.set(a,Se):de.current.delete(a)},variant:"ghost",size:"sm","aria-pressed":b===a,onClick:()=>ke(a),title:z,"data-testid":`agent-hub-scope-${a===H?"public":`org-${a}`}`,className:C("max-w-48",b===a&&"bg-surface text-ink hover:bg-surface"),children:[e.jsx(us,{"aria-hidden":"true"}),e.jsx("span",{className:"truncate",children:z})]},a))})]})]})]}),e.jsx(Ps,{id:$e,labelledBy:Le[m],children:e.jsxs("div",{className:"flex min-h-0 flex-1 flex-row overflow-hidden",children:[m==="agents"&&e.jsx(e.Fragment,{children:e.jsx("div",{className:"mr-6 hidden w-60 shrink-0 rounded-md bg-surface p-2 md:block","data-tour-tag":"agent-hub-sidebar-container",children:!ye&&e.jsx(mt,{selectedCategory:o,onSelectCategory:ls,categories:D})})}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-y-auto",children:[m==="agents"&&!ye&&e.jsxs("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[e.jsxs("div",{className:C("flex min-w-56 flex-1 items-center rounded-sm border border-control bg-surface","transition-colors duration-fast ease-out-quart","has-[:focus-visible]:outline-solid has-[:focus-visible]:outline-2","has-[:focus-visible]:outline-accent has-[:focus-visible]:outline-offset-2"),children:[e.jsx(Os,{ref:re,type:"search",value:j,onChange:a=>os(a.target.value),placeholder:"Search agents","aria-label":"Search agents",className:"h-8 min-w-0 flex-1 border-0 bg-transparent outline-none","data-testid":"agent-hub-search"}),e.jsxs(Ae,{value:u,onValueChange:cs,children:[e.jsx(Pe,{className:"w-auto shrink-0 border-y-0 border-l border-hairline border-r-0 bg-transparent pl-2 outline-none","aria-label":"Search in","data-testid":"agent-hub-search-scope",children:e.jsx(Oe,{})}),e.jsx(Ee,{children:Ft.map(a=>e.jsx(ze,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs(Ae,{value:N,onValueChange:p,children:[e.jsx(Pe,{className:"w-48","aria-label":"Sort agents","data-testid":"agent-hub-sort",children:e.jsx(Oe,{})}),e.jsx(Ee,{children:K.map(a=>e.jsx(ze,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("p",{ref:we,"aria-live":"polite",className:"mb-3 text-meta text-ink-dim","data-testid":"agent-hub-status",children:[E,m==="agents"&&be?e.jsxs(e.Fragment,{children:[" ",e.jsx("span",{"data-testid":"agent-hub-updating",children:"Updating…"})]}):null]}),m==="agents"&&e.jsxs(e.Fragment,{children:[t&&ts&&e.jsxs("output",{className:"mb-3 flex flex-wrap items-center gap-2 text-meta text-warning","data-testid":"agent-hub-status-unknown",children:[e.jsx("span",{children:"Your likes and favourites could not be read, so no card shows a viewer state."}),e.jsx(f,{variant:"ghost",size:"sm",onClick:()=>void as(),disabled:ie,"aria-busy":ie,children:ie?"Trying…":"Try again"})]}),k&&e.jsx("div",{"data-testid":"agent-hub-loading",className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6",children:Array.from({length:6},(a,z)=>e.jsx($t,{},z))}),k&&_===void 0&&e.jsx("div",{"aria-hidden":"true",className:"mt-6 flex min-h-13 items-center justify-center","data-testid":"agent-hub-pager-placeholder",children:e.jsx(x,{className:"h-4 w-24"})}),e.jsx("output",{"aria-live":"polite","data-testid":"agent-hub-outage",className:C(!k&&O&&!q?"block":"sr-only"),children:!k&&O&&!q&&e.jsxs(J,{variant:"danger",className:"max-w-2xl","aria-busy":R,"data-testid":"agent-hub-error",children:[e.jsx(ee,{children:t?"The hub could not be loaded":"Sign in to use the hub"}),e.jsx(se,{children:t?Be("The agent list could not be loaded.",O):"You are not signed in to Radient, so the hub has no credential to read the agent list with. Sign in on the settings page, then try again."}),e.jsx("div",{className:"mt-2",children:e.jsx(f,{ref:Ne,variant:"outline",size:"sm",onClick:()=>{oe.current=!0,pe()},disabled:R,"aria-busy":R,children:R?"Trying…":"Try again"})})]})}),!k&&q&&w&&e.jsxs(J,{variant:"warning",className:"max-w-2xl","data-testid":"agent-hub-org-no-access",children:[e.jsx(ee,{children:q==="plan"?"That organization needs an active Team plan":"You do not have access to that organization"}),e.jsx(se,{children:q==="plan"?`Sharing agents inside an organization is part of the Team plan. An owner of ${w.tenant_name||"this organization"} can activate it in the Radient console, and then its agents will be listed here.`:`You are not a member of ${w.tenant_name||"that organization"}, so its agents are not listed here. An owner can invite you again.`}),q==="plan"&&e.jsx("div",{className:"mt-2",children:e.jsx(f,{variant:"primary",size:"sm",onClick:()=>void pe(),disabled:R,"aria-busy":R,children:R?"Trying…":"Try again"})})]}),!k&&!O&&e.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(17.5rem,1fr))] gap-6","aria-busy":be,children:X.length===0?e.jsxs("div",{"data-testid":"agent-hub-empty",className:C("col-span-full w-full flex flex-col items-center gap-2 rounded-md bg-surface px-6 py-10 text-center",!T&&"max-w-2xl justify-self-center"),children:[e.jsx("p",{className:"text-heading text-ink",children:T?"This organization has no shared agents yet.":o?`No agents in ${Ve(o).label}.`:V?"No agents match that search.":"The hub is empty."}),e.jsx("p",{className:"max-w-md text-body-sm text-ink-muted",children:T?`Agents published into ${w?.tenant_name||"this organization"} appear here for its members.`:o?"Nothing in this category yet. Clear the filter to see the whole hub.":V?"No agent's name or description carries that. Clear it to see the whole hub.":"Nobody has published an agent yet. Yours could be the first."}),e.jsx("div",{className:"mt-2 flex flex-wrap items-center justify-center gap-2",children:V?e.jsx(f,{variant:"secondary",onClick:is,children:o?"Clear filter":"Clear search"}):T&&!Ze?null:e.jsx(f,{ref:le,variant:"secondary",onClick:()=>s("/agents"),children:"Publish an agent"})})]}):X.map(a=>e.jsx(dt,{agent:a,status:t?je[a.id]:void 0,viewerStateKnown:t&&Gs(ss,je,a.id),orgName:a.visibility==="org"?Ke.get(a.tenant_id)??null:null},a.id))}),!k&&_&&_.totalPages>1&&e.jsx(ht,{count:_.totalPages,page:_.page,onChange:rs})]}),m==="teams"&&(w?e.jsx(_t,{tenantId:w.tenant_id,orgName:fe}):e.jsx(It,{reason:ds,orgs:U,onPickOrg:a=>{Z.current=a,ke(a)},onOpenSettings:()=>s("/settings"),onRetry:()=>void Xe(),retrying:P}))]})]})})]})]})};export{ea as AgentHubPage};