local-operator-ui 0.42.7 → 0.42.8

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 (104) hide show
  1. package/out/main/index.js +14340 -252
  2. package/out/preload/index.js +58 -2
  3. package/out/renderer/assets/{_basePickBy-CzIgSCTC.js → _basePickBy-D4Seo5Pz.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-Dm8qWLNb.js → _baseUniq-CgVRhJ9V.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-BCde4GYu.js → agent-details-page-DSmJIvXx.js} +1 -1
  6. package/out/renderer/assets/{agent-hub-page-3z0FBryb.js → agent-hub-page-CD_Db8P3.js} +2 -2
  7. package/out/renderer/assets/{agents-page-DgCWT1qP.js → agents-page-CUktXXX5.js} +3 -3
  8. package/out/renderer/assets/{approvalsOverlay-2dV79TsD.js → approvalsOverlay-DxEtCZZM.js} +1 -1
  9. package/out/renderer/assets/{arc-ARfG_3LB.js → arc-Ctuni3QD.js} +1 -1
  10. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-DLZi8SG_.js → architectureDiagram-IEHRJDOE-CJgH5UIr.js} +1 -1
  11. package/out/renderer/assets/{blockDiagram-JOT3LUYC-BZ0-FsMz.js → blockDiagram-JOT3LUYC-DPrJH4Ov.js} +1 -1
  12. package/out/renderer/assets/{book-open-BrntK3Uq.js → book-open-CnrMa_Lj.js} +1 -1
  13. package/out/renderer/assets/browser-page-B4X8tPFL.js +1 -0
  14. package/out/renderer/assets/{browser-webauthn-prompt-BNVEHrv9.js → browser-webauthn-prompt-CKXKeFSp.js} +1 -1
  15. package/out/renderer/assets/{building-2-Bxp0hviH.js → building-2-KNn69NZT.js} +1 -1
  16. package/out/renderer/assets/{c4Diagram-VJAJSXHY-B52-jW50.js → c4Diagram-VJAJSXHY-CXM6-guv.js} +1 -1
  17. package/out/renderer/assets/channel-DXQf2vmt.js +1 -0
  18. package/out/renderer/assets/{chunk-4BMEZGHF-IC-SKIif.js → chunk-4BMEZGHF-D1rW0otO.js} +1 -1
  19. package/out/renderer/assets/{chunk-A2AXSNBT-BOfVuPOA.js → chunk-A2AXSNBT-CpRdsZLi.js} +1 -1
  20. package/out/renderer/assets/{chunk-AEK57VVT-B7dCXqfp.js → chunk-AEK57VVT-ZpJc0SjT.js} +1 -1
  21. package/out/renderer/assets/{chunk-D6G4REZN-U8cPWlh7.js → chunk-D6G4REZN-BnbKbjb5.js} +1 -1
  22. package/out/renderer/assets/{chunk-RZ5BOZE2-BrJk5jSy.js → chunk-RZ5BOZE2-fE5orPok.js} +1 -1
  23. package/out/renderer/assets/{chunk-XZIHB7SX-Ct7sEJeN.js → chunk-XZIHB7SX-BocbG9za.js} +1 -1
  24. package/out/renderer/assets/classDiagram-GIVACNV2-wz5OSVRz.js +1 -0
  25. package/out/renderer/assets/classDiagram-v2-COTLJTTW-wz5OSVRz.js +1 -0
  26. package/out/renderer/assets/clone-VMNU3Wnj.js +1 -0
  27. package/out/renderer/assets/{console-mirror-DZYqU_Y0.js → console-mirror-Biqf_qft.js} +1 -1
  28. package/out/renderer/assets/{consoleCapture-C1mA9bas.js → consoleCapture-OrznafR2.js} +1 -1
  29. package/out/renderer/assets/{conversation-input-sync-BDD5IcnH.js → conversation-input-sync-BwzJoCux.js} +257 -260
  30. package/out/renderer/assets/{dagre-OKDRZEBW-BOaauqFt.js → dagre-OKDRZEBW-CzB91IzU.js} +1 -1
  31. package/out/renderer/assets/{diagram-SSKATNLV-uExZkj8T.js → diagram-SSKATNLV-Bg5RhMEV.js} +1 -1
  32. package/out/renderer/assets/{diagram-VNBRO52H-Cq3LidRx.js → diagram-VNBRO52H-C1BWQ4vB.js} +1 -1
  33. package/out/renderer/assets/{erDiagram-Q7BY3M3F-dZe4cj0o.js → erDiagram-Q7BY3M3F-DjPk0V9l.js} +1 -1
  34. package/out/renderer/assets/{error-boundary--NwIbr7b.js → error-boundary-vmQ5tlCX.js} +4 -4
  35. package/out/renderer/assets/{flowDiagram-4HSFHLVR-XNGjxIUH.js → flowDiagram-4HSFHLVR-DqqDHbny.js} +1 -1
  36. package/out/renderer/assets/{ganttDiagram-APWFNJXF-BmHy8No7.js → ganttDiagram-APWFNJXF-6VnttUUq.js} +1 -1
  37. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-49Keol_N.js → gitGraphDiagram-7IBYFJ6S-B2x6qu8n.js} +1 -1
  38. package/out/renderer/assets/{graph-CnkDtGXQ.js → graph-C6vbd8o2.js} +1 -1
  39. package/out/renderer/assets/{hash-BPbfeX-Z.js → hash-L2ujAC5o.js} +1 -1
  40. package/out/renderer/assets/{heart-BrZXiFCO.js → heart-DpdW9OuA.js} +1 -1
  41. package/out/renderer/assets/{index-BaGz6zcP.js → index-C6H07UMx.js} +1 -1
  42. package/out/renderer/assets/{index-BNz6rAaW.js → index-C80Kbbvh.js} +1 -1
  43. package/out/renderer/assets/index-DLDgY5fY.css +1 -0
  44. package/out/renderer/assets/{index-QsW4kELd.js → index-DOUqLzli.js} +212 -212
  45. package/out/renderer/assets/index-DZ0oVvBQ.js +55 -0
  46. package/out/renderer/assets/infoDiagram-PH2N3AL5-BNvFBjw9.js +2 -0
  47. package/out/renderer/assets/installer-ROSRHzoN.js +1 -0
  48. package/out/renderer/assets/{journeyDiagram-U35MCT3I-n_M_559I.js → journeyDiagram-U35MCT3I-iD67_k23.js} +1 -1
  49. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DMlK_O8P.js → kanban-definition-NDS4AKOZ-BOEu-vrY.js} +1 -1
  50. package/out/renderer/assets/{layout-DEDBIH-c.js → layout-B6vENNCe.js} +1 -1
  51. package/out/renderer/assets/legacy-agents-page-B7Wl6Uer.js +33 -0
  52. package/out/renderer/assets/{library-page-B63NCgBZ.js → library-page-B4nuLGOL.js} +20 -20
  53. package/out/renderer/assets/{mermaid.core-DjqyuNnS.js → mermaid.core-CIDX9z6e.js} +19 -19
  54. package/out/renderer/assets/mesh-page-CDYqDvSH.js +1 -0
  55. package/out/renderer/assets/messages-DbS1PwZU.js +27 -0
  56. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-Dupy6ZMo.js → mindmap-definition-ALO5MXBD-DZFrqoQW.js} +1 -1
  57. package/out/renderer/assets/{mini-FETdH6cx.js → mini-BXzq_AA1.js} +1 -1
  58. package/out/renderer/assets/{notebook-pen-D1EpDnlr.js → notebook-pen-CMhgSRMw.js} +1 -1
  59. package/out/renderer/assets/{org-access-CWUOPtx3.js → org-access-CGaaYfna.js} +1 -1
  60. package/out/renderer/assets/{org-surface-gate-Dfe6IW6h.js → org-surface-gate-CGfGEFG5.js} +1 -1
  61. package/out/renderer/assets/{page-header-B3bOo0UX.js → page-header-CdCjG9NV.js} +1 -1
  62. package/out/renderer/assets/path-utils-CwYffJ73.js +58 -0
  63. package/out/renderer/assets/{pieDiagram-IB7DONF6-CQyDM6gY.js → pieDiagram-IB7DONF6-DA8UkA6f.js} +1 -1
  64. package/out/renderer/assets/projects-page-Cn-KQN1u.js +45 -0
  65. package/out/renderer/assets/{publication-validation-k7S0tWBX.js → publication-validation-tcVifSwS.js} +1 -1
  66. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-Ak7UQ-OV.js → quadrantDiagram-7GDLP6J5-DfViwx-_.js} +1 -1
  67. package/out/renderer/assets/{radar-MK3ICKWK-CSn4i6lj.js → radar-MK3ICKWK-DybxyfeY.js} +1 -1
  68. package/out/renderer/assets/{radient-auth-buttons-DuGE8XTY.js → radient-auth-buttons-ByMhjwK9.js} +1 -1
  69. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CBYNrzi6.js → requirementDiagram-KVF5MWMF-BHJJn_m3.js} +1 -1
  70. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-D1Hj29Pl.js → sankeyDiagram-QLVOVGJD-DRtuiTmO.js} +1 -1
  71. package/out/renderer/assets/{schedules-page-D_-ba0FU.js → schedules-page-CWm4pp8U.js} +12 -12
  72. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-xikcZJiP.js → sequenceDiagram-X6HHIX6F-BS-1w7ox.js} +1 -1
  73. package/out/renderer/assets/settings-page-D7ZRdQEG.js +287 -0
  74. package/out/renderer/assets/{smartart-BSlwSDRE.js → smartart-D3PbCQe4.js} +1 -1
  75. package/out/renderer/assets/{stateDiagram-DGXRK772-9l_IpDEE.js → stateDiagram-DGXRK772-Bejx0VAi.js} +1 -1
  76. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-B-QCGmZj.js +1 -0
  77. package/out/renderer/assets/team-bridge-page-DrLX5SLK.js +21 -0
  78. package/out/renderer/assets/{timeline-definition-BDJGKUSR-BdXZrNNw.js → timeline-definition-BDJGKUSR-C1Rfmu0P.js} +1 -1
  79. package/out/renderer/assets/{use-download-agent-mutation-jPT3Mbn-.js → use-download-agent-mutation-BS29ofCo.js} +2 -2
  80. package/out/renderer/assets/{use-session-snapshot-DKVI2EOX.js → use-session-snapshot-DoZQzNKC.js} +1 -1
  81. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-20Xo8qRt.js → xychartDiagram-VJFVF3MP-rQhoehfj.js} +1 -1
  82. package/out/renderer/browser-approvals-overlay.html +2 -2
  83. package/out/renderer/console-capture.html +6 -6
  84. package/out/renderer/index.html +8 -8
  85. package/out/renderer/installer.html +5 -5
  86. package/out/renderer/mini.html +8 -8
  87. package/package.json +4 -4
  88. package/out/renderer/assets/browser-page-CpskeShW.js +0 -1
  89. package/out/renderer/assets/channel-BaHap1lA.js +0 -1
  90. package/out/renderer/assets/classDiagram-GIVACNV2-BQJOqAFd.js +0 -1
  91. package/out/renderer/assets/classDiagram-v2-COTLJTTW-BQJOqAFd.js +0 -1
  92. package/out/renderer/assets/clone-DrReGn3F.js +0 -1
  93. package/out/renderer/assets/index-DhltrflG.js +0 -55
  94. package/out/renderer/assets/index-UXcKfWo6.css +0 -1
  95. package/out/renderer/assets/infoDiagram-PH2N3AL5-CK-0Q3Nw.js +0 -2
  96. package/out/renderer/assets/installer-C38KNAZa.js +0 -1
  97. package/out/renderer/assets/legacy-agents-page-VA3GryfD.js +0 -33
  98. package/out/renderer/assets/mesh-page-Bqns7KLZ.js +0 -1
  99. package/out/renderer/assets/messages-iLQrQMz2.js +0 -3
  100. package/out/renderer/assets/path-utils-D4lxN8Wn.js +0 -58
  101. package/out/renderer/assets/projects-page-BjAPFYDN.js +0 -45
  102. package/out/renderer/assets/settings-page-leUbM4YH.js +0 -287
  103. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Bx04P0q6.js +0 -1
  104. package/out/renderer/assets/team-bridge-page-CKVgbNNA.js +0 -16
@@ -1,33 +0,0 @@
1
- import{r,j as e,c as $}from"./index-DhltrflG.js";import{P as Ct}from"./page-header-B3bOo0UX.js";import{c as oe,u as O,q as Xe,r as et,B as P,s as tt,w as Y,y as st,S as at,l as W,I as nt,x as St,a4 as je,L as ce,z as it,X as ot,a5 as It,a6 as Dt,a7 as Pt,A as ye,m as Se,n as le,F as Lt,G as Et,H as Tt,J as Ot,K as Ie,C as zt,a8 as Rt,i as qt,j as Ut}from"./error-boundary--NwIbr7b.js";import{bZ as $t,b_ as rt,b$ as Ee,c0 as Te,c1 as Mt,c2 as Qe,c3 as Ht,c4 as Bt,aL as lt,c5 as ae,c6 as ie,c7 as Wt,c8 as Vt,c9 as At,ca as Kt,cb as De,cc as Qt,bS as Gt,cd as Yt,y as ze,ce as ct,aK as Ft,az as Zt,x as Jt,aB as Xt,aI as es,cf as ut,cg as ts,ch as dt,aO as ss,ci as as,cj as Ge}from"./index-QsW4kELd.js";import{bt as mt,as as ns,bk as is,bu as os,a3 as Re,a4 as J,aq as ht,ar as rs,bv as ls,T as ue,b3 as cs,av as ne,aw as _e,S as pt,bc as us,bw as ds,au as ms,bn as Oe,bp as hs,b7 as ps,P as gs,ap as gt,aA as xs}from"./conversation-input-sync-BDD5IcnH.js";import{h as xt,u as bt,V as bs,Z as fs,a0 as ys,a2 as _s,A as qe,a as js,c as ks,L as vs,g as ws,x as Ns,q as ft}from"./path-utils-D4lxN8Wn.js";import{t as a}from"./messages-iLQrQMz2.js";import{N as Cs}from"./notebook-pen-D1EpDnlr.js";import{n as Pe,u as Ss,b as Is,H as Ds,p as Ps}from"./org-access-CWUOPtx3.js";import{o as Ls,a as Es}from"./org-surface-gate-Dfe6IW6h.js";import{R as Ye}from"./radient-auth-buttons-DuGE8XTY.js";import{c as Ts,i as Os,d as zs,e as Rs,t as qs,p as Fe,P as Ze}from"./publication-validation-k7S0tWBX.js";import"./console-mirror-DZYqU_Y0.js";/**
2
- * @license lucide-react v0.507.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const Us=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]],$s=oe("ellipsis-vertical",Us);/**
7
- * @license lucide-react v0.507.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const Ms=[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M2 15h10",key:"jfw4w8"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]],Je=oe("file-input",Ms);/**
12
- * @license lucide-react v0.507.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const Hs=[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 7V4a2 2 0 0 1 2-2 2 2 0 0 0-2 2",key:"1vk7w2"}],["path",{d:"M4.063 20.999a2 2 0 0 0 2 1L18 22a2 2 0 0 0 2-2V7l-5-5H6",key:"1jink5"}],["path",{d:"m5 11-3 3",key:"1dgrs4"}],["path",{d:"m5 17-3-3h10",key:"1mvvaf"}]],Bs=oe("file-output",Hs);/**
17
- * @license lucide-react v0.507.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const Ws=[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]],Vs=oe("git-branch",Ws);/**
22
- * @license lucide-react v0.507.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const As=[["path",{d:"M16 10h2",key:"8sgtl7"}],["path",{d:"M16 14h2",key:"epxaof"}],["path",{d:"M6.17 15a3 3 0 0 1 5.66 0",key:"n6f512"}],["circle",{cx:"9",cy:"11",r:"2",key:"yxgjnd"}],["rect",{x:"2",y:"5",width:"20",height:"14",rx:"2",key:"qneu4z"}]],Ks=oe("id-card",As);/**
27
- * @license lucide-react v0.507.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const Qs=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m8 11 4 4 4-4",key:"1dohi6"}],["path",{d:"M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4",key:"1ywtjm"}]],Gs=oe("import",Qs),Ys=({agentId:t,agentName:n,onAgentDeleted:s,buttonSx:o={},isAgentsPage:i=!1,onViewAgentSettings:l,onChatWithAgent:u,onExportAgent:f,onClearConversation:p,onUploadAgentToHub:k})=>{O();const[x,j]=r.useState(!1),[c,d]=r.useState(!1),[m,y]=r.useState(!1),v=r.useRef(!1),D=$t(),{clearAgentFromAllPages:S}=mt(),z=async()=>{try{await D.mutateAsync(t),S(t),s?.(t)}catch(C){console.error("Failed to delete agent:",C)}finally{d(!1)}};return e.jsxs(e.Fragment,{children:[e.jsxs(Xe,{open:x,onOpenChange:j,modal:!1,children:[e.jsx(et,{asChild:!0,children:e.jsx(P,{variant:"ghost",size:"icon-sm","aria-label":a("ui.agents.dialogs.menu.accessible"),"data-tour-tag":"agent-options-button",onClick:C=>{C.stopPropagation(),C.detail===0&&j(L=>!L)},style:o,children:e.jsx($s,{"aria-hidden":"true"})})}),e.jsxs(tt,{align:"end",className:"min-w-45",onClick:C=>C.stopPropagation(),onInteractOutside:C=>{const L=C.detail.originalEvent.target;L instanceof Element&&L.closest(".shepherd-element")&&C.preventDefault()},onCloseAutoFocus:C=>{v.current&&(v.current=!1,C.preventDefault())},children:[i&&u&&e.jsxs(Y,{onSelect:u,children:[e.jsx(rt,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.chat")})]}),!i&&l&&e.jsxs(Y,{"data-tour-tag":"view-agent-settings-menu-item",onSelect:l,children:[e.jsx(Ee,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.settings")})]}),f&&e.jsxs(Y,{onSelect:f,children:[e.jsx(Bs,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.export")})]}),k&&e.jsxs(Y,{"data-tour-tag":"upload-to-hub-menu-item",onSelect:k,children:[e.jsx(Te,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.upload")})]}),p&&e.jsxs(Y,{className:"text-warning data-[highlighted]:bg-warning-wash",onSelect:()=>{v.current=!0,y(!0)},children:[e.jsx(Mt,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.clear")})]}),e.jsxs(Y,{destructive:!0,onSelect:()=>{v.current=!0,d(!0)},children:[e.jsx(ns,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.dialogs.menu.delete")})]})]})]}),e.jsx(Qe,{open:c,title:a("ui.agents.dialogs.delete.title"),message:e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-body text-ink",children:a("ui.agents.dialogs.delete.question",{name:n})}),e.jsx("p",{className:"mt-2 text-body-sm text-ink-muted",children:a("ui.agents.dialogs.delete.warning")})]}),confirmText:a("ui.agents.dialogs.delete.confirm"),cancelText:a("ui.agents.dialogs.delete.cancel"),isDangerous:!0,onConfirm:z,onCancel:()=>d(!1)}),e.jsx(Qe,{open:m,title:a("ui.agents.dialogs.clear.title"),message:a("ui.agents.dialogs.clear.warning"),confirmText:a("ui.agents.dialogs.clear.confirm"),cancelText:a("ui.agents.dialogs.clear.cancel"),isDangerous:!0,onConfirm:()=>{p?.(),y(!1)},onCancel:()=>y(!1)})]})},Fs=({page:t,count:n,onChange:s})=>{O();const o=()=>{t>1&&s(t-1)},i=()=>{t<n&&s(t+1)};return n<=1?null:e.jsxs("div",{className:"sticky bottom-0 left-0 right-0 z-10 flex min-h-13 items-center justify-between border-t border-hairline bg-surface px-4 py-2",children:[e.jsx(P,{variant:"ghost",size:"icon-sm",onClick:o,disabled:t<=1,"aria-label":a("ui.common.forms.compact_pagination.previous_page"),children:e.jsx(is,{})}),e.jsx("span",{className:"select-none text-meta text-ink-dim",children:a("ui.common.forms.pagination.position",{page:String(t),count:String(n)})}),e.jsx(P,{variant:"ghost",size:"icon-sm",onClick:i,disabled:t>=n,"aria-label":a("ui.common.forms.compact_pagination.next_page"),children:e.jsx(st,{})})]})},yt=t=>["agent-system-prompt",t],_t=t=>{const{shouldEnableQuery:n}=os();return xt({enabled:n({bypassInternetCheck:!0})&&!!t,queryKey:yt(t),queryFn:async()=>{try{const o=await Re(J.baseUrl).agents.getAgentSystemPrompt(t);if(o.status>=400)throw new Error(o.message||"Failed to fetch agent system prompt");return o.result?.system_prompt||""}catch(s){const o=s instanceof Error?s.message:"An unknown error occurred while fetching agent system prompt";throw ue(o),s}},refetchOnWindowFocus:!1,staleTime:5e3})},Zs=t=>{const n=bt(),s=Re(J.baseUrl);return ht({mutationFn:async o=>{const i=ls(o);if(i)throw ue(i),new Error(i);try{const l=await s.agents.updateAgentSystemPrompt(t,o);if(l.status>=400)throw new Error(l.message||"Failed to update agent system prompt");return l}catch(l){const u=l instanceof Error?l.message:"An unknown error occurred while updating agent system prompt";throw ue(u),l}},onSuccess:async()=>{await n.invalidateQueries({queryKey:yt(t)}),rs("Agent system prompt updated")},onError:o=>{console.error("Error updating agent system prompt:",o)}})},Js=()=>{const[t,n]=cs(),s=bs(),o=()=>{const l=t.get("page");return l?Number.parseInt(l,10):1},i=l=>{const u=new URLSearchParams(t);l===1?u.delete("page"):u.set("page",l.toString()),n(u)};return{page:o(),setPage:i,isView:l=>s.pathname.startsWith(`/${l}`)}},Xs=({open:t,onClose:n,onAgentImported:s})=>{O();const[o,i]=r.useState(null),[l,u]=r.useState(!1),[f,p]=r.useState(null),k=r.useRef(null),x=Ht(),j=r.useCallback(_=>{_.preventDefault(),_.stopPropagation(),u(!0)},[]),c=r.useCallback(_=>{_.preventDefault(),_.stopPropagation(),u(!1)},[]),d=r.useCallback(_=>{_.preventDefault(),_.stopPropagation()},[]),m=r.useCallback(_=>_.name.toLowerCase().endsWith(".zip")?(p(null),!0):(p("ui.agents.dialogs.import.invalid_zip"),!1),[]),y=r.useCallback(_=>{if(_.preventDefault(),_.stopPropagation(),u(!1),_.dataTransfer.files&&_.dataTransfer.files.length>0){const E=_.dataTransfer.files[0];m(E)&&i(E)}},[m]),v=r.useCallback(_=>{if(_.target.files&&_.target.files.length>0){const E=_.target.files[0];m(E)&&i(E)}},[m]),D=r.useCallback(()=>{k.current?.click()},[]),S=async()=>{if(o)try{const _=await x.mutateAsync(o);i(null),p(null),s&&_&&s(_.id),n()}catch(_){console.error("Failed to import agent:",_)}},z=()=>{i(null),p(null),n()},C=x.isPending,L=C||!o,b=e.jsxs(e.Fragment,{children:[e.jsx(Je,{size:19,className:"text-accent","aria-hidden":"true"}),a("ui.agents.dialogs.import.title")]}),w=e.jsxs(e.Fragment,{children:[e.jsx(ne,{onClick:z,disabled:C,children:a("ui.agents.dialogs.import.cancel")}),e.jsx(_e,{onClick:S,disabled:L,startIcon:C?e.jsx(at,{}):null,children:a("ui.agents.dialogs.import.submit")})]});return e.jsxs(pt,{open:t,onClose:z,title:b,actions:w,maxWidth:"sm",children:[e.jsx("p",{className:"mb-4 text-body-sm text-ink-muted",children:a("ui.agents.dialogs.import.intro")}),e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsx("input",{ref:k,type:"file",accept:".zip",onChange:v,disabled:C,className:"hidden"}),e.jsx("button",{type:"button",onClick:D,onDragEnter:j,onDragLeave:c,onDragOver:d,onDrop:y,disabled:C,className:$("cursor-pointer rounded-lg border-2 border-control border-dashed bg-surface p-4 text-center","transition-colors duration-base ease-out-quart","hover:bg-accent-wash","disabled:border-hairline disabled:bg-sunken disabled:text-ink-disabled",l&&"border-accent bg-accent-wash"),children:o?e.jsxs(e.Fragment,{children:[e.jsx(Je,{size:32,className:"mx-auto mb-2 text-ink-muted","aria-hidden":"true"}),e.jsx("p",{className:"text-body text-ink",children:o.name}),e.jsx("p",{className:"text-body-sm text-ink-muted",children:a("ui.agents.dialogs.import.replace_file")})]}):e.jsxs(e.Fragment,{children:[e.jsx(Bt,{size:32,className:"mx-auto mb-2 text-ink-muted","aria-hidden":"true"}),e.jsx("p",{className:"text-body text-ink",children:a("ui.agents.dialogs.import.drop_file")}),e.jsx("p",{className:"text-body-sm text-ink-muted",children:a("ui.agents.dialogs.import.choose_file")})]})}),f&&e.jsx("p",{role:"alert",className:"text-body-sm text-danger",children:a(f)})]})]})},ea=({title:t,searchQuery:n,onSearchChange:s,onNewAgentClick:o,searchPlaceholder:i="Search agents",newAgentTooltip:l="Create a new agent",onImportAgentClick:u,importAgentTooltip:f="Import an agent from a ZIP file"})=>e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between gap-2",children:[e.jsx("h2",{className:"truncate text-heading text-ink",children:t}),e.jsxs("div",{className:"flex shrink-0 gap-1",children:[u&&e.jsx(W,{content:f,children:e.jsx(P,{variant:"ghost",size:"icon",onClick:u,"aria-label":"Import agent",children:e.jsx(Gs,{"aria-hidden":"true"})})}),e.jsx(W,{content:l,children:e.jsx(P,{variant:"primary",size:"icon",onClick:o,"aria-label":"New agent","data-tour-tag":"create-new-agent-button",children:e.jsx(lt,{"aria-hidden":"true"})})})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(us,{size:16,"aria-hidden":"true",className:"pointer-events-none absolute top-1/2 start-3 -translate-y-1/2 text-ink-dim"}),e.jsx(nt,{type:"search",inputSize:"lg",placeholder:i,value:n,onChange:p=>s(p.target.value),"aria-label":i,className:"ps-9"})]})]}),N={temperature:.2,top_p:.9,top_k:40,max_tokens:4096,frequency_penalty:0,presence_penalty:0,seed:42},G=({label:t,description:n,defaultLabel:s,onSet:o})=>(O(),e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:"text-body-sm text-ink",children:t}),e.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.agents.settings.chat.not_set_yet")})]}),e.jsx("p",{className:"mt-1 text-meta text-ink-dim",children:n})]}),e.jsx(P,{variant:"secondary",size:"sm",className:"shrink-0",onClick:o,children:a("ui.agents.settings.chat.set_to_default",{value:String(s)})})]})),Le=({title:t,children:n})=>e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx("h3",{className:"text-body-sm font-semibold text-ink-muted",children:t}),n]}),ta=({selectedAgent:t,savingField:n,setSavingField:s,updateAgentMutation:o,refetchAgent:i,initialSelectedAgentId:l})=>{O();const[u,f]=r.useState(t);r.useEffect(()=>{f(t)},[t]);const[p,k]=r.useState(!1),x=r.useId(),j=p?St:st;return e.jsxs("div",{children:[e.jsxs("h2",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>k(!p),"aria-expanded":p,"aria-controls":x,className:"group flex items-center gap-2 py-1 text-start text-heading text-ink",children:[e.jsx(j,{size:14,"aria-hidden":"true",className:"shrink-0 text-ink-dim transition-colors duration-fast ease-out-quart group-hover:text-ink rtl:-scale-x-100"}),a("ui.agents.settings.chat.advanced_chat_settings")]}),e.jsx(W,{content:a("ui.agents.settings.chat.advanced_settings_to_change_how_the_agent"),children:e.jsx(P,{variant:"ghost",size:"icon-sm","aria-label":a("ui.agents.settings.chat.about_advanced_chat_settings"),children:e.jsx(je,{})})})]}),p&&e.jsxs("div",{id:x,className:"mt-3",children:[e.jsx("p",{className:"max-w-2xl text-body-sm text-ink-muted",children:a("ui.agents.settings.chat.set_custom_values_for_any_of_these")}),e.jsxs("div",{className:"mt-6 flex flex-col gap-8",children:[e.jsxs(Le,{title:a("ui.agents.settings.chat.sampling"),children:[u.temperature===null?e.jsx(G,{label:a("ui.agents.settings.chat.temperature"),description:a("ui.agents.settings.chat.controls_randomness_in_responses_0_0_1"),defaultLabel:N.temperature,onSet:async()=>{s("temperature");try{const c={temperature:N.temperature};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,temperature:N.temperature})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.temperature??N.temperature,label:a("ui.agents.settings.chat.temperature"),description:a("ui.agents.settings.chat.controls_randomness_in_responses_0_0_1"),min:0,max:1,step:.01,isSaving:n==="temperature",onChange:async c=>{s("temperature");try{const d={temperature:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),u.top_p===null?e.jsx(G,{label:a("ui.agents.settings.chat.top_p"),description:a("ui.agents.settings.chat.controls_cumulative_probability_of_tokens_to_sample"),defaultLabel:N.top_p,onSet:async()=>{s("top_p");try{const c={top_p:N.top_p};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,top_p:N.top_p})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.top_p??N.top_p,label:a("ui.agents.settings.chat.top_p"),description:a("ui.agents.settings.chat.controls_cumulative_probability_of_tokens_to_sample"),min:0,max:1,step:.01,isSaving:n==="top_p",onChange:async c=>{s("top_p");try{const d={top_p:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),u.top_k===null?e.jsx(G,{label:a("ui.agents.settings.chat.top_k"),description:a("ui.agents.settings.chat.limits_tokens_to_sample_from_at_each"),defaultLabel:N.top_k,onSet:async()=>{s("top_k");try{const c={top_k:N.top_k};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,top_k:N.top_k})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.top_k??N.top_k,label:a("ui.agents.settings.chat.top_k"),description:a("ui.agents.settings.chat.limits_tokens_to_sample_from_at_each"),min:1,max:100,step:1,isSaving:n==="top_k",onChange:async c=>{s("top_k");try{const d={top_k:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),u.seed===null?e.jsx(G,{label:a("ui.agents.settings.chat.seed"),description:a("ui.agents.settings.chat.random_number_seed_for_deterministic_generation"),defaultLabel:N.seed,onSet:async()=>{s("seed");try{const c={seed:N.seed};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,seed:N.seed})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ie,{value:u.seed?.toString()||"",label:a("ui.agents.settings.chat.seed"),placeholder:a("ui.agents.settings.chat.random_number_seed_for_deterministic_generation_detail"),icon:e.jsx(Ee,{size:16}),isSaving:n==="seed",onSave:async c=>{s("seed");try{const d=c.trim()?Number.parseInt(c,10):void 0;if(c.trim()&&Number.isNaN(d)){ue(a("ui.agents.settings.chat.error.invalid_seed"));return}const m={seed:d};await o.mutateAsync({agentId:t.id,update:m}),t.id===l&&i&&await i()}catch{}finally{s(null)}}})]}),e.jsxs(Le,{title:a("ui.agents.settings.chat.repetition"),children:[u.frequency_penalty===null?e.jsx(G,{label:a("ui.agents.settings.chat.frequency_penalty"),description:a("ui.agents.settings.chat.reduces_repetition_by_lowering_likelihood_of_repeated"),defaultLabel:N.frequency_penalty,onSet:async()=>{s("frequency_penalty");try{const c={frequency_penalty:N.frequency_penalty};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,frequency_penalty:N.frequency_penalty})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.frequency_penalty??N.frequency_penalty,label:a("ui.agents.settings.chat.frequency_penalty"),description:a("ui.agents.settings.chat.reduces_repetition_by_lowering_likelihood_of_repeated"),min:-2,max:2,step:.01,isSaving:n==="frequency_penalty",onChange:async c=>{s("frequency_penalty");try{const d={frequency_penalty:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),u.presence_penalty===null?e.jsx(G,{label:a("ui.agents.settings.chat.presence_penalty"),description:a("ui.agents.settings.chat.increases_diversity_by_lowering_likelihood_of_prompt"),defaultLabel:N.presence_penalty,onSet:async()=>{s("presence_penalty");try{const c={presence_penalty:N.presence_penalty};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,presence_penalty:N.presence_penalty})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.presence_penalty??N.presence_penalty,label:a("ui.agents.settings.chat.presence_penalty"),description:a("ui.agents.settings.chat.increases_diversity_by_lowering_likelihood_of_prompt"),min:-2,max:2,step:.01,isSaving:n==="presence_penalty",onChange:async c=>{s("presence_penalty");try{const d={presence_penalty:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}})]}),e.jsxs(Le,{title:a("ui.agents.settings.chat.length_and_stopping"),children:[u.max_tokens===null?e.jsx(G,{label:a("ui.agents.settings.chat.max_tokens"),description:a("ui.agents.settings.chat.maximum_tokens_to_generate_in_response"),defaultLabel:N.max_tokens,onSet:async()=>{s("max_tokens");try{const c={max_tokens:N.max_tokens};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,max_tokens:N.max_tokens})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ae,{value:u.max_tokens??N.max_tokens,label:a("ui.agents.settings.chat.max_tokens"),description:a("ui.agents.settings.chat.maximum_tokens_to_generate_in_response"),min:1,max:8192,step:1,isSaving:n==="max_tokens",onChange:async c=>{s("max_tokens");try{const d={max_tokens:c};await o.mutateAsync({agentId:t.id,update:d}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),u.stop===null?e.jsx(G,{label:a("ui.agents.settings.chat.stop_sequences"),description:a("ui.agents.settings.chat.sequences_that_will_cause_the_model_to"),defaultLabel:a("ui.agents.settings.chat.empty"),onSet:async()=>{s("stop");try{const c={stop:[]};await o.mutateAsync({agentId:t.id,update:c}),f(d=>({...d,stop:[]})),t.id===l&&i&&await i()}catch{}finally{s(null)}}}):e.jsx(ie,{value:u.stop?.join(`
32
- `)||"",label:a("ui.agents.settings.chat.stop_sequences"),placeholder:a("ui.agents.settings.chat.enter_stop_sequences_one_per_line"),icon:e.jsx(Ee,{size:16}),multiline:!0,rows:3,isSaving:n==="stop",onSave:async c=>{s("stop");try{const d=c.split(`
33
- `).map(y=>y.trim()).filter(y=>y.length>0),m={stop:d.length>0?d:void 0};await o.mutateAsync({agentId:t.id,update:m}),t.id===l&&i&&await i()}catch{}finally{s(null)}}})]})]})]})]})},jt=["investment","accounting","healthcare","legal","software","security","role_play","personal_assistance","education","marketing","sales","research","analysis","management","social_media","other"],be=Object.fromEntries(jt.map(t=>[t,t.split("_").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")])),sa=({value:t,label:n,onChange:s,placeholder:o="Add category...",disabled:i=!1,icon:l})=>{const[u,f]=r.useState(""),[p,k]=r.useState(!1),[x,j]=r.useState(0),c=r.useRef(null),d=r.useRef([]),m=r.useId(),y=r.useId(),v=r.useMemo(()=>{const b=u.trim().toLowerCase();return jt.filter(w=>!t.includes(w)&&(!b||be[w].toLowerCase().includes(b)))},[t,u]);r.useEffect(()=>{p&&d.current[x]?.scrollIntoView({block:"nearest"})},[x,p]);const D=b=>{t.includes(b)||s([...t,b]),f(""),k(!1),j(0),c.current?.focus()},S=b=>{f(b.target.value),j(0),k(!0)},z=b=>{const w=v.length;switch(b.key){case"ArrowDown":if(b.preventDefault(),w===0)break;p?j((x+1)%w):(j(0),k(!0));break;case"ArrowUp":if(b.preventDefault(),w===0)break;p?j((x-1+w)%w):(j(w-1),k(!0));break;case"Enter":p&&v[x]&&(b.preventDefault(),D(v[x]));break;case"Escape":p&&(b.preventDefault(),k(!1));break;case"Home":p&&(b.preventDefault(),j(0));break;case"End":p&&(b.preventDefault(),j(v.length-1));break}},C=b=>{s(t.filter(w=>w!==b)),j(0)},L=p&&v[x]?`${y}-option-${x}`:void 0;return e.jsxs("div",{children:[e.jsxs(ce,{htmlFor:m,className:"mb-1.5 flex items-center gap-2 text-ink-muted",children:[l,n]}),e.jsxs("div",{className:$("flex min-h-11 flex-wrap items-center gap-2 rounded-sm border border-control bg-surface p-2","has-[input:focus-visible]:outline-solid has-[input:focus-visible]:outline-2","has-[input:focus-visible]:outline-accent has-[input:focus-visible]:outline-offset-2",i&&"border-hairline bg-sunken"),children:[t.map(b=>e.jsxs(it,{className:"gap-1 pe-1 text-ink",children:[be[b]||b,e.jsx("button",{type:"button","aria-label":`Remove category ${be[b]||b}`,disabled:i,onClick:()=>C(b),className:$("rounded-xs text-ink-dim","transition-colors duration-fast ease-out-quart","hover:text-danger disabled:text-ink-disabled"),children:e.jsx(ot,{})})]},b)),e.jsxs(It,{open:p,onOpenChange:k,children:[e.jsx(Dt,{asChild:!0,children:e.jsx("input",{id:m,ref:c,type:"text",role:"combobox","aria-expanded":p,"aria-controls":y,"aria-autocomplete":"list","aria-activedescendant":L,autoComplete:"off",value:u,placeholder:o,disabled:i,"aria-label":n,onChange:S,onKeyDown:z,onClick:()=>{v.length>0&&k(!0)},className:$("min-w-20 flex-1 bg-transparent px-1 py-0.5 outline-none","text-body-sm text-ink placeholder:text-ink-dim","disabled:text-ink-disabled disabled:placeholder:text-ink-disabled")})}),e.jsx(Pt,{align:"start",sideOffset:4,onOpenAutoFocus:b=>b.preventDefault(),className:"max-h-60 w-(--radix-popover-trigger-width) overflow-y-auto p-1",children:e.jsx("div",{id:y,role:"listbox","aria-label":n,children:v.map((b,w)=>e.jsx("div",{id:`${y}-option-${w}`,ref:_=>{d.current[w]=_},role:"option","aria-selected":w===x,onMouseDown:_=>{_.preventDefault()},onMouseEnter:()=>j(w),onClick:()=>D(b),className:$("cursor-pointer rounded-sm px-3 py-1.5 font-medium text-body-sm",w===x?"bg-accent-wash":void 0,"text-ink"),children:be[b]||b},b))})})]})]}),t.length===0&&e.jsx("span",{className:"mt-1 ms-1 block text-ink-dim text-meta",children:"No categories selected"})]})},aa=({value:t,label:n,onChange:s,placeholder:o="Add tag...",disabled:i=!1,icon:l})=>{const[u,f]=r.useState(""),p=r.useRef(null),k=r.useId(),x=m=>{f(m.target.value)},j=()=>{const m=u.trim().toLowerCase();m&&!t.includes(m)&&s([...t,m]),f("")},c=m=>{m.key==="Enter"&&u.trim()?(m.preventDefault(),j()):m.key==="Backspace"&&!u&&t.length>0&&s(t.slice(0,-1))},d=m=>{s(t.filter(y=>y!==m))};return e.jsxs("div",{children:[e.jsxs(ce,{htmlFor:k,className:"mb-1.5 flex items-center gap-2 text-ink-muted",children:[l,n]}),e.jsxs("div",{className:$("flex min-h-11 flex-wrap items-center gap-2 rounded-sm border border-control bg-surface p-2","has-[input:focus-visible]:outline-solid has-[input:focus-visible]:outline-2","has-[input:focus-visible]:outline-accent has-[input:focus-visible]:outline-offset-2",i&&"border-hairline bg-sunken"),children:[t.map(m=>e.jsxs(it,{className:"gap-1 pe-1 text-ink",children:[m,e.jsx("button",{type:"button","aria-label":`Remove tag ${m}`,disabled:i,onClick:()=>d(m),className:$("rounded-xs text-ink-dim","transition-colors duration-fast ease-out-quart","hover:text-danger disabled:text-ink-disabled"),children:e.jsx(ot,{})})]},m)),e.jsx("input",{id:k,ref:p,type:"text",value:u,onChange:x,onKeyDown:c,placeholder:o,disabled:i,"aria-label":n,className:$("min-w-20 flex-1 bg-transparent px-1 py-0.5 outline-none","text-body-sm text-ink placeholder:text-ink-dim","disabled:text-ink-disabled disabled:placeholder:text-ink-disabled")}),u.trim()&&e.jsx(P,{variant:"ghost",size:"icon-sm","aria-label":"Add tag",disabled:i,onClick:()=>{j(),p.current?.focus()},className:"text-accent hover:text-accent",children:e.jsx(lt,{})})]}),t.length===0&&!u&&e.jsx("span",{className:"mt-1 ms-1 block text-ink-dim text-meta",children:"No tags added"})]})},na=({selectedAgent:t,savingField:n,setSavingField:s,updateAgentMutation:o,refetchAgent:i,initialSelectedAgentId:l})=>{O();const{data:u,isLoading:f}=ds(),[p,k]=r.useState("");r.useEffect(()=>{!f&&u?.values?k(t.hosting||u.values.hosting||""):f||k(t.hosting||"")},[t,u,f]);const[x,j]=r.useState(!1),[c,d]=r.useState(!1);return e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ie,{value:t.name,label:a("ui.agents.settings.general.agent_name"),placeholder:a("ui.agents.settings.general.enter_agent_name"),isSaving:n==="name",onSave:async m=>{if(!m.trim()){ue(a("ui.agents.settings.general.error.empty_name"));return}s("name");try{const y={name:m};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx("div",{"data-tour-tag":"agent-settings-hosting-select",children:e.jsx(Wt,{value:t.hosting||(u?.values.hosting??""),isSaving:n==="hosting",onSave:async m=>{s("hosting"),k(m);try{const y={hosting:m,model:""};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{k(t.hosting||"")}finally{s(null)}},filterByCredentials:!0,allowDefault:!0},`hosting-select-${t.id}-${t.hosting||(u?.values.hosting??"default")}`)}),e.jsx("div",{"data-tour-tag":"agent-settings-model-select",children:p?e.jsx(Vt,{value:t.hosting?t.model||"":t.model||(u?.values.model_name??""),hostingId:p,isSaving:n==="model",allowDefault:!0,onSave:async m=>{s("model");try{const y={model:m};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{}finally{s(null)}}},`model-select-${t.id}-${p}-${t.model||(!t.hosting&&u?.values.model_name?u.values.model_name:"default")}`):e.jsxs("div",{className:"relative",children:[e.jsx(W,{content:a("ui.agents.settings.general.select_a_hosting_provider_first_and_then"),children:e.jsxs("div",{className:"mb-1.5 flex w-fit items-center gap-2 text-body-sm text-ink-muted",children:[e.jsx(At,{size:16,"aria-hidden":"true"}),a("ui.agents.settings.general.model")]})}),e.jsx("div",{className:"flex h-8 w-full items-center rounded-sm border border-control bg-surface px-3",children:e.jsx("span",{className:"truncate text-body-sm text-ink-disabled",children:a("ui.agents.settings.general.select_a_hosting_provider_first")})})]})})]}),e.jsxs("h2",{className:"mt-4 flex items-center gap-2 text-heading text-ink",children:[e.jsx(je,{size:16,className:"shrink-0 text-ink-dim"}),a("ui.agents.settings.general.agent_information")]}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ie,{value:t.description||"",label:a("ui.agents.settings.general.description"),placeholder:a("ui.agents.settings.general.enter_agent_description"),multiline:!0,rows:3,isSaving:n==="description",onSave:async m=>{s("description");try{const y={description:m};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{}finally{s(null)}}}),e.jsx(aa,{value:t.tags||[],label:a("ui.agents.settings.general.tags"),placeholder:a("ui.agents.settings.general.add_tag"),disabled:x,onChange:async m=>{if(!(Array.isArray(t.tags)&&m.length===t.tags.length&&m.every((y,v)=>y===t.tags?.[v]))){j(!0);try{const y={tags:m};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{}finally{j(!1)}}}}),e.jsx(sa,{value:t.categories||[],label:a("ui.agents.settings.general.categories"),placeholder:a("ui.agents.settings.general.add_category"),disabled:c,onChange:async m=>{if(!(Array.isArray(t.categories)&&m.length===t.categories.length&&m.every((y,v)=>y===t.categories?.[v]))){d(!0);try{const y={categories:m};await o.mutateAsync({agentId:t.id,update:y}),t.id===l&&i&&await i()}catch{}finally{d(!1)}}}}),e.jsxs(Kt,{children:[e.jsx(De,{label:e.jsxs(e.Fragment,{children:[e.jsx(Ks,{size:12,"aria-hidden":"true"}),a("ui.agents.settings.general.id")]}),value:e.jsx("span",{className:"font-mono text-mono-sm",children:t.id})}),e.jsx(De,{label:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{size:12,"aria-hidden":"true"}),a("ui.agents.settings.general.created")]}),value:ms(t.created_date)}),e.jsx(De,{label:e.jsxs(e.Fragment,{children:[e.jsx(Vs,{size:12,"aria-hidden":"true"}),a("ui.agents.settings.general.version")]}),value:t.version})]})]})]})},ia=({selectedAgent:t,savingField:n,setSavingField:s,updateAgentMutation:o,refetchAgent:i,initialSelectedAgentId:l})=>(O(),e.jsxs("div",{"data-tour-tag":"agent-settings-security",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-heading text-ink",children:[e.jsx(Gt,{size:16,className:"shrink-0 text-ink-dim"}),a("ui.agents.settings.security.security_instructions"),e.jsx(W,{content:a("ui.agents.settings.security.security_instructions_that_guide_the_agent_s"),children:e.jsx(P,{variant:"ghost",size:"icon-sm","aria-label":a("ui.agents.settings.security.about_security_instructions"),children:e.jsx(je,{})})})]}),e.jsx("p",{className:"mt-1 max-w-2xl text-body-sm text-ink-muted",children:a("ui.agents.settings.security.this_prompt_is_directed_to_the_ai")}),e.jsx("div",{className:"mt-4",children:e.jsx(ie,{value:t.security_prompt||"",label:"",placeholder:a("ui.agents.settings.security.enter_instructions_for_the_security_agent"),multiline:!0,rows:6,isSaving:n==="security_prompt",onSave:async u=>{s("security_prompt");try{const f={security_prompt:u};await o.mutateAsync({agentId:t.id,update:f}),t.id===l&&i&&await i()}catch{}finally{s(null)}}})})]})),oa=({selectedAgent:t,savingField:n,setSavingField:s,refetchAgent:o,initialSelectedAgentId:i})=>{O();const{data:l,isLoading:u}=_t(t.id),f=Zs(t.id),[p,k]=r.useState("");return r.useEffect(()=>{l!==void 0&&k(l)},[l]),e.jsxs("div",{"data-tour-tag":"agent-settings-system-prompt",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-heading text-ink",children:[e.jsx(Cs,{size:16,className:"shrink-0 text-ink-dim"}),a("ui.agents.settings.system_prompt.agent_instructions"),e.jsx(W,{content:a("ui.agents.settings.system_prompt.system_instructions_that_define_the_agent_s"),children:e.jsx(P,{variant:"ghost",size:"icon-sm","aria-label":a("ui.agents.settings.system_prompt.about_agent_instructions"),children:e.jsx(je,{})})})]}),e.jsx("p",{className:"mt-1 max-w-2xl text-body-sm text-ink-muted",children:a("ui.agents.settings.system_prompt.define_the_agent_s_role_personality_or")}),e.jsx("div",{className:"mt-4",children:e.jsx(ie,{value:p,label:"",placeholder:u?a("ui.agents.settings.system_prompt.loading_system_prompt"):a("ui.agents.settings.system_prompt.enter_instructions_for_the_agent"),multiline:!0,rows:6,isSaving:n==="system_prompt",onSave:async x=>{s("system_prompt");try{await f.mutateAsync(x),t.id===i&&o&&await o()}finally{s(null)}}})})]})},ra=({selectedAgent:t,refetchAgent:n,initialSelectedAgentId:s})=>{O();const[o,i]=r.useState(null),l=Yt();return e.jsx("div",{"data-tour-tag":"agent-settings-details-paper",className:"h-full overflow-hidden",children:t?e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-4xl flex-col gap-8 pb-8",children:[e.jsx(na,{selectedAgent:t,savingField:o,setSavingField:i,updateAgentMutation:l,refetchAgent:n,initialSelectedAgentId:s}),e.jsx(oa,{selectedAgent:t,savingField:o,setSavingField:i,refetchAgent:n,initialSelectedAgentId:s}),e.jsx(ia,{selectedAgent:t,savingField:o,setSavingField:i,updateAgentMutation:l,refetchAgent:n,initialSelectedAgentId:s}),e.jsx(ta,{selectedAgent:t,savingField:o,setSavingField:i,updateAgentMutation:l,refetchAgent:n,initialSelectedAgentId:s})]})}):e.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-8 text-center",children:[e.jsx(ze,{size:48,className:"text-ink-dim","aria-hidden":"true"}),e.jsx("h2",{className:"text-heading text-ink",children:a("ui.agents.settings.agent.no_agent_selected")}),e.jsx("p",{className:"max-w-md text-body-sm text-ink-muted",children:a("ui.agents.settings.agent.select_an_agent_from_the_list_on")})]})})},Ue=fs()(ys(t=>({listings:{},remember:(n,s)=>{t(o=>({listings:{...o.listings,[n]:s}}))},forget:n=>{t(s=>{if(!(n in s.listings))return s;const o={...s.listings};return delete o[n],{listings:o}})}}),{name:"published-listings-storage"})),la=t=>Ue(n=>t?n.listings[t]??null:null),ca=400,ua=2,da=t=>[...t].length>=ua;function ma(t){if(!t)return{state:"unknown",builtinName:null};if(t.available)return{state:"available",builtinName:null};const n=t.details?.builtin_name??null;return t.code==="name_taken"?{state:"taken",builtinName:null}:t.code==="name_reserved_builtin"?{state:"reserved",builtinName:n}:{state:"unknown",builtinName:null}}const ha=(t,n)=>{const s=t.trim(),o=ct(s,ca),i=n&&o===s&&da(o)&&_s(o),l=xt({queryKey:["agent-name-availability",o],enabled:i,queryFn:async()=>(await Oe.getAgentNameAvailability(J.baseUrl,o)).result,retry:!1,staleTime:15e3,refetchOnWindowFocus:!1});return!i||l.isPending?{state:i?"checking":"idle",builtinName:null}:l.isError?{state:"unknown",builtinName:null}:ma(l.data)},pa=()=>{const t=bt();return ht({mutationFn:async({agentId:n,document:s,hubAgentId:o,target:i,policy:l})=>{if(!J.baseUrl)throw new Error("Local Operator API URL is not configured.");return o?Oe.republishAgentInstructionSet(J.baseUrl,n,o,s,i,l):Oe.publishAgentInstructionSet(J.baseUrl,n,s,i,l)},onSuccess:(n,s)=>{const o=n.result;o?.agent_id&&!s.target&&Ue.getState().remember(s.agentId,{hubAgentId:o.agent_id,name:o.name,publishedAt:new Date().toISOString()}),o?.local_link_receipt&&t.invalidateQueries({queryKey:Ft}),s.target?Ts(t,s.target.tenantId):Os(t)},onError:n=>{console.error("Publishing an agent to the hub failed:",n)}})},fe="public",kt=({open:t,onClose:n,agent:s,isAuthenticated:o,onSignInSuccess:i,onPublished:l})=>{const[u,f]=r.useState(!1),[p,k]=r.useState(""),[x,j]=r.useState(null),[c,d]=r.useState(null),[m,y]=r.useState(!1),v=r.useRef(null),D=r.useRef(null),S=qe(),z=pa();O();const[C,L]=r.useState(Pe),b=r.useRef(null),w=r.useRef({open:!1,id:null}),_=la(s?.id??null),E=js(),R=ks(E.data,"hub_links"),V=Zt(t&&R),ke=hs(),de=vs(E.data,"radient_org"),ve=Es(de),me=o?Ls(de,ke??null):null,{memberships:F,isError:we}=Jt({enabled:t&&o&&ve}),X=r.useMemo(()=>Ss(F),[F]),Z=r.useMemo(()=>Is(F),[F]),[M,he]=r.useState(fe),g=M!==fe,T=(V.data?.links??[]).filter(h=>h.kind==="agent"&&h.local_id===s?.id),I=T.find(h=>h.visibility===(g?"org":"public")&&h.tenant_id===(g?M:null)),H=T.find(h=>h.link_id!==I?.link_id),K=V.data?.unresolved.some(h=>h.kind==="agent"&&h.local_id===s?.id),B=X.find(h=>h.tenant_id===M),pe=g?B?.tenant_name?a("ui.hub.links.source_private",{organization:B.tenant_name}):a("ui.hub.links.source_unavailable"):a("ui.hub.links.source_public"),re=X.find(h=>h.tenant_id===M)?.tenant_name||"this organization",ge=r.useId(),xe=r.useId(),{data:$e}=_t(t&&s?s.id:""),{data:Me}=ps(t);r.useEffect(()=>{t&&(!w.current.open||w.current.id!==(s?.id??null))&&k(s?.name??""),w.current={open:t,id:s?.id??null}},[t,s?.id,s?.name]),r.useEffect(()=>{t||(f(!1),j(null),d(null),y(!1),he(fe),L(Pe()),b.current=null)},[t]);const vt=r.useMemo(()=>(Me??[]).filter(h=>h.source==="builtin").map(h=>h.name),[Me]),He=zs(p,vt),Be=ha(p,t&&o),ee=r.useMemo(()=>{const h=Rs({name:p,description:s?.description??"",instructions:$e??null,tools:qs(s?.tags)});return He&&h.unshift({field:"name",message:Fe({code:"name_reserved_builtin",message:""},{name:p,hubAgentId:null}).body}),h},[p,s?.description,s?.tags,$e,He]),q=x?Fe(x,{name:p,hubAgentId:_?.hubAgentId??null}):null,te=z.isPending,Ne=async h=>{if(!s||te||ee.length>0||g&&!B)return;j(null);const U=h?.asNewListing?null:I?.hub_id??(g?null:_?.hubAgentId??null),Ve=!!U;if(!(R&&(!V.isSuccess||H||K)))try{const Q={name:p.trim()},Ae=JSON.stringify({agent:s.id,document:Q,hubAgentId:U,target:M,policy:I?null:C}),Ce=b.current?.tuple===Ae?b.current:{tuple:Ae,id:crypto.randomUUID()};b.current=Ce;const se=(await z.mutateAsync({agentId:s.id,document:Q,hubAgentId:U,...R?{policy:I?{requestId:Ce.id,...I.remote_revision&&Ve?{expectedRemoteRevision:I.remote_revision}:{}}:{requestId:Ce.id,...C}}:{},target:g?{visibility:"org",tenantId:M}:void 0})).result,Ke={name:se?.name??p.trim(),hubAgentId:se?.agent_id??null,republished:Ve,orgName:g?re:null,localPolicies:se?.local_link_receipt?Ps(se)?"complete":"pending":R?"pending":null};d(Ke),se&&l?.(se,Ke.republished)}catch(Q){j(gs(Q)?{code:Q.code,message:Q.message,details:Q.details}:{message:ws(Q,"The agent could not be published. Try again.")})}},We=h=>{switch(h){case"focus-name":j(null),requestAnimationFrame(()=>{v.current?.focus(),v.current?.select()});break;case"update-listing":{const U=x?.details?.existing_agent_id??_?.hubAgentId;U&&(n(),S(`/agent-hub/${U}`));break}case"install-builtin":{const U=x?.details?.builtin_name??Be.builtinName;U&&(n(),S(`/agents?kind=agent&name=${encodeURIComponent(U)}`));break}case"edit-instructions":case"edit-agent":s&&(n(),S(`/agents/${s.id}`));break;case"publish-as-new":s&&Ue.getState().forget(s.id),Ne({asNewListing:!0});break;case"sign-in":y(!0);break;case"refresh-hub":n(),S("/agent-hub");break;case"retry":Ne();break}},A=s?.name??"",wt=c?c.orgName?`Published "${A}" to ${c.orgName}`:c.republished?`Updated the Agent Hub listing for "${A}"`:`Published "${A}" to the Agent Hub`:g?`Publish "${A}" to ${re}?`:_?`Update the Agent Hub listing for "${A}"?`:`Publish "${A}" to the Agent Hub?`;r.useLayoutEffect(()=>{!x&&!c||D.current?.focus()},[x,c]);const Nt=c?e.jsxs(e.Fragment,{children:[e.jsx(ne,{onClick:n,"data-tour-tag":"upload-agent-dialog-cancel-button",children:"Close"}),c.hubAgentId&&e.jsx(_e,{onClick:()=>{n(),S(`/agent-hub/${c.hubAgentId}`)},children:"Open the listing"})]}):q?e.jsxs(e.Fragment,{children:[e.jsx(ne,{onClick:n,"data-tour-tag":"upload-agent-dialog-cancel-button",children:"Close"}),q.actions.map((h,U)=>U===0?e.jsx(_e,{onClick:()=>We(h),disabled:te,children:Ze[h]},h):e.jsx(ne,{onClick:()=>We(h),disabled:te,children:Ze[h]},h))]}):e.jsxs(e.Fragment,{children:[e.jsx(ne,{onClick:n,"data-tour-tag":"upload-agent-dialog-cancel-button",children:"Cancel"}),ee.some(h=>h.field!=="name")&&e.jsx(ne,{onClick:()=>{s&&(n(),S(`/agents/${s.id}`))},children:"Edit the agent"}),o&&e.jsx(_e,{"data-testid":"publish-submit",onClick:()=>void Ne(),disabled:g&&!B||!u||ee.length>0||!p.trim()||te||R&&(!V.isSuccess||!!H||!!K),children:te?"Publishing…":_&&!g?"Update listing":"Publish"})]});return e.jsx(pt,{open:t,onClose:n,title:wt,maxWidth:"sm",fullWidth:!0,actions:Nt,dataTourTag:"upload-agent-dialog",dialogProps:{className:"outline-none"},children:e.jsxs("div",{ref:D,tabIndex:x||c?-1:void 0,className:$("flex flex-col gap-4",(x||c)&&"outline-none"),children:[o?c?e.jsxs(ye,{variant:"success","aria-live":"polite",children:[e.jsx(Se,{children:c.orgName?`Published to ${c.orgName}`:c.republished?"Listing updated":"Published to the hub"}),e.jsx(le,{children:c.orgName?`"${c.name}" is in ${c.orgName}'s shared agents as an instruction set. Its members can read and install it; nobody outside the organization can.`:c.republished?`The hub now holds the current instruction set of "${c.name}".`:`"${c.name}" is on the hub as an instruction set. Anyone can read and install it.`}),e.jsx(le,{className:"text-ink-muted",children:"Nothing else left this machine: no conversation, no execution history, no memory, no plan and no machine-specific configuration."})]}):q&&x?e.jsxs(ye,{variant:q.variant,role:"alert",children:[e.jsx(Se,{children:q.headline}),e.jsx(le,{children:q.body}),q.note&&e.jsx(le,{className:"text-ink-muted",children:q.note})]}):null:e.jsxs("div",{className:"flex flex-col items-center gap-6 text-center",children:[e.jsx("p",{className:"text-body text-ink",children:"You need to be signed in to Radient to publish agents to the Agent hub."}),e.jsx(Ye,{titleText:"Sign in to continue",descriptionText:"",onSignInSuccess:i})]}),q&&m&&e.jsxs("div",{className:"flex flex-col items-center gap-6 text-center",children:[e.jsx("p",{className:"text-body text-ink",children:"Sign in to Radient again to replace the credential the hub refused."}),e.jsx(Ye,{titleText:"Sign in again",descriptionText:"",onSignInSuccess:()=>{y(!1),j(null),i?.()}})]}),c?.localPolicies==="pending"&&e.jsx("p",{role:"alert",className:"text-body-sm text-warning",children:a("ui.hub.skills.policy_pending")}),!c&&R&&e.jsx("div",{className:"flex flex-col gap-3",children:V.isLoading?e.jsx("p",{className:"text-meta text-ink-muted",children:a("ui.hub.links.loading")}):V.error?e.jsx("p",{role:"alert",className:"text-body-sm text-warning",children:a("ui.hub.links.load_failed")}):H?e.jsx("p",{className:"text-body-sm text-warning",children:a("ui.hub.subscriptions.source_separation",{currentSource:Xt(H),newSource:pe})}):K?e.jsx("p",{className:"text-body-sm text-warning",children:a("ui.hub.links.source_unavailable")}):I?e.jsx(es,{link:I}):e.jsx(Ds,{value:C,onChange:L,source:pe,item:p||A,visibility:g?"org":"public",organization:g?re:null,destinationKey:`${M}:${s?.id??""}`,canEnableAutoPush:!1,disabled:te||!V.isSuccess})}),!c&&!q&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-body text-ink",children:g?`You are about to publish this agent's instruction set into ${re}, where only its members can read and install it. What is published is what describes the agent:`:"You are about to publish this agent's instruction set to the public Agent Hub. What is published is what describes the agent:"}),e.jsxs("ul",{className:"list-disc space-y-1 ps-5 text-body text-ink-muted",children:[e.jsx("li",{children:"Its name and description"}),e.jsx("li",{children:"Its instructions"}),e.jsx("li",{children:"Its tool surface, effort and delegation, when it has them"})]}),e.jsx("p",{className:"text-body text-ink",children:g?`Nothing else leaves this machine: no conversation, no execution history, no memory or learnings, no plan, and no machine-specific configuration. ${re}'s members can read and install what you publish; nobody outside it can.`:"Nothing else leaves this machine: no conversation, no execution history, no memory or learnings, no plan, and no machine-specific configuration. Anyone can read and install what you publish."}),X.length>0||Z.length>0?e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(ce,{htmlFor:`${ge}-target`,children:"Publish to"}),e.jsxs(Lt,{value:M,onValueChange:h=>{he(h),L(Pe()),b.current=null},children:[e.jsx(Et,{id:`${ge}-target`,className:"w-full","data-testid":"publish-target",children:e.jsx(Tt,{})}),e.jsxs(Ot,{children:[e.jsx(Ie,{value:fe,children:"Public hub"}),X.map(h=>e.jsx(Ie,{value:h.tenant_id,children:h.tenant_name||"Organization"},h.tenant_id)),Z.map(h=>e.jsxs(Ie,{value:h.tenant_id,disabled:!0,children:[h.tenant_name||"Organization"," (upgrade needed)"]},h.tenant_id))]})]}),e.jsx("p",{className:"text-meta text-ink-muted","data-testid":"publish-target-hint",children:Z.length>0?`Sharing agents inside an organization is part of the Team plan. An owner of ${Z.length===1?Z[0].tenant_name||"this organization":"any of the organizations marked above"} can activate it in the Radient console.`:"Public hub publications are readable by anyone. An organization's agents are readable by its members only."})]}):me?e.jsx("p",{className:"text-meta text-ink-muted","data-testid":"publish-target-unavailable",children:me}):we?e.jsx("p",{className:"text-meta text-ink-muted","data-testid":"publish-target-failed",children:"Your organizations could not be read, so this publishes to the public hub. Try again in a moment to publish into an organization."}):null,ee.length>0&&e.jsxs(ye,{variant:"danger",children:[e.jsx(Se,{children:"This agent cannot be published yet"}),e.jsx("ul",{className:"list-disc space-y-1 ps-5",children:ee.map(h=>e.jsx("li",{children:h.message},`${h.field}:${h.message}`))})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(ce,{htmlFor:xe,children:"Name on the hub"}),e.jsx(nt,{id:xe,ref:v,value:p,onChange:h=>k(h.target.value),autoComplete:"off",spellCheck:!1,"aria-invalid":ee.some(h=>h.field==="name"),"aria-describedby":`${xe}-hint`}),e.jsx("p",{id:`${xe}-hint`,className:"text-meta text-ink-muted",children:'No "/", "\\" or ":". Up to 128 characters.'}),!g&&ga(Be)]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx("span",{className:"flex h-5 shrink-0 items-center",children:e.jsx(zt,{id:ge,name:"termsAgreement","data-testid":"publish-consent",checked:u,onCheckedChange:h=>f(h===!0)})}),e.jsxs(ce,{htmlFor:ge,className:"block font-normal text-body text-ink",children:["I confirm that I have read and agree to the"," ",e.jsx("a",{href:"https://radienthq.com/terms",target:"_blank",rel:"noopener noreferrer",className:"text-accent underline-offset-4 hover:text-accent-hover hover:underline",children:"terms and conditions"})," ","and that this agent does not contain malicious content or violate usage policies."]})]})]}),(c||q)&&A&&e.jsxs("p",{className:"text-meta text-ink-muted",children:["Agent: ",A]})]})})},ga=t=>{switch(t.state){case"checking":return e.jsx("p",{className:"text-meta text-ink-muted",children:"Checking whether this name is free…"});case"available":return e.jsx("p",{className:"text-meta text-ink-muted",children:"This name looks free."});case"taken":return e.jsx("p",{className:"text-meta text-ink",children:"This name is already published on the hub."});case"reserved":return e.jsx("p",{className:"text-meta text-ink-muted",children:t.builtinName?`The hub reserves "${t.builtinName}" for one of its built-in agents.`:"The hub reserves this name for one of its built-in agents."});default:return null}},xa=1200,ba=({agent:t,isSelected:n,onSelectAgent:s,onChatWithAgent:o,onExportAgent:i,onAgentDeleted:l,onUploadAgentToHub:u})=>{O();const f=t.description||a("ui.agents.navigation.sidebar.no_description");return e.jsxs("li",{className:"group relative",children:[e.jsxs("button",{type:"button",onClick:()=>s(t),"aria-current":n?"true":void 0,"data-tour-tag":"agent-list-item-button",className:$("flex w-full items-center gap-2 rounded-sm py-1.5 pe-9 ps-2 text-start","transition-colors duration-fast ease-out-quart",n?ss:"hover:bg-row-hover"),children:[e.jsx(qt,{className:"size-8 shrink-0",children:e.jsx(Ut,{className:"border border-control bg-sunken",children:e.jsx(ze,{size:16,"aria-hidden":!0})})}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx(W,{content:t.name,side:"top",align:"start",children:e.jsx("span",{className:"block truncate font-medium text-body-sm text-ink",children:t.name})}),e.jsx(W,{content:f,side:"bottom",align:"start",children:e.jsx("span",{className:"block truncate text-meta text-ink-dim",children:f})})]})]}),e.jsx("div",{className:$("pointer-events-none absolute top-0 end-1 flex h-full items-center","opacity-0 transition-opacity duration-fast ease-out-quart","group-hover:pointer-events-auto group-hover:opacity-100","group-focus-within:pointer-events-auto group-focus-within:opacity-100"),children:e.jsx(W,{content:a("ui.agents.navigation.sidebar.options"),children:e.jsx("span",{children:e.jsx(Ys,{agentId:t.id,agentName:t.name,isAgentsPage:!0,onAgentDeleted:()=>l(t.id),onChatWithAgent:()=>o(t),onExportAgent:()=>i(t.id),onUploadAgentToHub:()=>u(t),buttonSx:{width:24,height:24,borderRadius:"6px",display:"flex",justifyContent:"center",alignItems:"center"}})})})})]})},fa=(t,n)=>t.isSelected===n.isSelected&&t.agent.id===n.agent.id&&t.agent.name===n.agent.name&&t.agent.description===n.agent.description&&t.onSelectAgent===n.onSelectAgent&&t.onChatWithAgent===n.onChatWithAgent&&t.onExportAgent===n.onExportAgent&&t.onAgentDeleted===n.onAgentDeleted&&t.onUploadAgentToHub===n.onUploadAgentToHub,ya=r.memo(ba,fa),_a=({selectedAgentId:t,onSelectAgent:n})=>{const s=qe();O();const[o,i]=r.useState(""),l=Ns(g=>g.openCreateAgentDialog),u=ct(o.trim(),250),[f,p]=r.useState(!1),k=50,[x,j]=r.useState(!1),[c,d]=r.useState(null),{isAuthenticated:m}=gt(),y=r.useMemo(()=>Re(J.baseUrl),[]),v=ut(),{page:D,setPage:S}=Js(),{data:z,isLoading:C,isError:L,refetch:b}=ts(D,k,0,u||void 0,"created_date","desc"),w=z?.agents||[],_=z?.total||0,{data:E}=dt(t&&!w.find(g=>g.id===t)?t:void 0),R=r.useMemo(()=>{const g=[...w];return E&&!g.find(T=>T.id===E.id)&&g.push(E),g.sort((T,I)=>new Date(I.created_date).getTime()-new Date(T.created_date).getTime()),g},[w,E]),V=r.useCallback(g=>{S(g)},[S]),ke=r.useCallback(g=>{n(g)},[n]),de=r.useCallback(()=>{p(!0)},[]),ve=r.useCallback(()=>{p(!1)},[]),me=r.useCallback(async g=>{try{const T=await v.mutateAsync(g),I=R.find(pe=>pe.id===g),H=I?I.name.replace(/\s+/g,"-").toLowerCase():g,K=URL.createObjectURL(T),B=document.createElement("a");B.href=K,B.download=`${H}-export.zip`,document.body.appendChild(B),B.click(),URL.revokeObjectURL(K),document.body.removeChild(B)}catch(T){console.error("Failed to export agent:",T)}},[R,v]),F=r.useCallback(g=>{d(g),j(!0)},[]),we=r.useCallback(()=>{j(!1),d(null)},[]),X=r.useCallback(async g=>{try{const I=((await b()).data?.agents||[]).find(K=>K.id===g);if(I){n(I);return}const H=await y.agents.getAgent(g);H.status<400&&H.result&&n(H.result)}catch(T){console.error("Error selecting newly created agent:",T)}},[n,b,y]),Z=r.useCallback(g=>{ft.getState().stageDraft({kind:"agent",name:g.name}),s("/chat")},[s]),M=r.useCallback(g=>{b(),s("/agents")},[t,b,s]),he=r.useCallback(g=>{F(g)},[F]);return e.jsxs("div",{"data-glass-region":"page-sidebar",className:"panel-top-pad flex h-full w-full flex-col overflow-hidden bg-surface",children:[e.jsx(ea,{title:a("ui.agents.navigation.sidebar.title"),searchQuery:o,onSearchChange:g=>i(g),onNewAgentClick:l,onImportAgentClick:de,importAgentTooltip:a("ui.agents.navigation.sidebar.import_hint")}),C?e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsx(at,{size:"lg",label:a("ui.agents.navigation.sidebar.loading")})}):L?e.jsxs(ye,{variant:"danger",role:"alert",className:"m-4 w-auto",children:[e.jsx(le,{children:a("ui.agents.navigation.sidebar.error")}),e.jsx(P,{variant:"ghost",size:"sm",className:"self-start",onClick:()=>b(),children:a("ui.agents.navigation.sidebar.retry")})]}):R.length===0&&!C?e.jsx("p",{className:"p-6 text-center text-body-sm text-ink-muted",children:o?a("ui.agents.navigation.sidebar.search_empty"):a("ui.agents.navigation.sidebar.empty")}):e.jsx(Rt,{delayDuration:xa,skipDelayDuration:0,children:e.jsx("ul",{className:"flex min-h-0 flex-1 flex-col gap-1 overflow-y-auto p-2",children:R.map(g=>e.jsx(ya,{agent:g,isSelected:t===g.id||E?.id===g.id,onSelectAgent:ke,onChatWithAgent:Z,onExportAgent:me,onAgentDeleted:M,onUploadAgentToHub:he},g.id))})}),e.jsx(Xs,{open:f,onClose:ve,onAgentImported:X}),_>0&&e.jsx(Fs,{page:D,count:Math.max(1,Math.ceil(_/k)),onChange:V}),e.jsx(kt,{open:x,onClose:we,agent:c,isAuthenticated:m})]})},ja=r.memo(_a),Ra=()=>{O();const{agentId:t,navigateToAgent:n}=as(),s=qe(),{isAuthenticated:o}=gt(),[i,l]=r.useState(!1),u=ut(),{setLastAgentsPageAgentId:f,getLastAgentId:p}=mt(),k=t||p("agents"),{data:x,refetch:j}=dt(k||void 0);r.useEffect(()=>{t&&f(t)},[t,f]);const c=async()=>{if(x)try{const v=await u.mutateAsync(x.id),D=URL.createObjectURL(v),S=document.createElement("a");S.href=D,S.download=`${x.name.replace(/\s+/g,"-").toLowerCase()}-lo-agent.zip`,document.body.appendChild(S),S.click(),URL.revokeObjectURL(D),document.body.removeChild(S)}catch(v){console.error("Failed to export agent:",v)}},d=()=>{l(!0)},m=()=>{l(!1)},y=v=>{f(v.id),n(v.id,"agents")};return e.jsxs("div",{"data-glass-split":"",className:"panel-flush flex min-h-0 flex-1 overflow-hidden",children:[e.jsx("div",{className:"h-full w-70 shrink-0",children:e.jsx(ja,{selectedAgentId:x?.id,onSelectAgent:y})}),e.jsx("div",{"data-glass-region":"canvas-content",className:"panel-top-pad h-full grow overflow-hidden",children:e.jsxs("div",{className:"flex h-full flex-col gap-8 p-4 sm:p-6 lg:p-8",children:[e.jsx("div",{className:"mx-auto w-full max-w-4xl",children:e.jsx(Ct,{title:a("ui.agents.navigation.legacy.title"),icon:ze,subtitle:a("ui.agents.navigation.legacy.subtitle"),children:x&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(Xe,{children:[e.jsx(et,{asChild:!0,children:e.jsx(P,{"data-tour-tag":"upload-to-hub-header-button",variant:"secondary",size:"icon","aria-label":a("ui.agents.navigation.legacy.more_actions"),className:"@min-[400px]:hidden",children:e.jsx(xs,{"aria-hidden":"true"})})}),e.jsxs(tt,{align:"end",className:"min-w-45",children:[e.jsxs(Y,{disabled:u.isPending,onSelect:c,children:[e.jsx(Ge,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.navigation.legacy.export")})]}),e.jsxs(Y,{onSelect:d,children:[e.jsx(Te,{"aria-hidden":"true"}),e.jsx("span",{children:a("ui.agents.navigation.legacy.upload")})]})]})]}),e.jsxs(P,{variant:"secondary",onClick:c,disabled:u.isPending,className:"hidden @min-[400px]:inline-flex",children:[e.jsx(Ge,{"aria-hidden":"true"}),a("ui.agents.navigation.legacy.export")]}),e.jsxs(P,{"data-tour-tag":"upload-to-hub-header-button","data-tour-action":"open-upload-dialog",variant:"secondary",onClick:d,className:"hidden @min-[400px]:inline-flex",children:[e.jsx(Te,{"aria-hidden":"true"}),a("ui.agents.navigation.legacy.upload")]}),e.jsx(W,{content:a("ui.agents.navigation.legacy.chat_named",{name:x.name||a("ui.agents.navigation.legacy.unnamed_agent")}),children:e.jsxs(P,{variant:"primary",onClick:()=>{ft.getState().stageDraft({kind:"agent",name:x.name}),s("/chat")},children:[e.jsx(rt,{"aria-hidden":"true"}),a("ui.agents.navigation.legacy.chat")]})})]})})}),e.jsx("div",{className:"min-h-0 grow overflow-hidden",children:e.jsx(ra,{selectedAgent:x??null,refetchAgent:j,initialSelectedAgentId:t})})]})}),x&&e.jsx(kt,{open:i,onClose:m,agent:x,isAuthenticated:o})]})};export{Ra as LegacyAgentsPage};
@@ -1 +0,0 @@
1
- import{r as x,j as e,c as L}from"./index-DhltrflG.js";import{C as is,E as ee,F as rs,R as ls,G as pe,H as qe,I as Be,J as Ye,K as Ge,a as os,L as _e,q as ke,N as ds}from"./path-utils-D4lxN8Wn.js";import{P as cs}from"./page-header-B3bOo0UX.js";import{u as F,B as U,A as fe,p as us,h as oe,q as ms,r as hs,s as ps,t as xs,v as Ee,w as De,k as Re}from"./error-boundary--NwIbr7b.js";import{t as a}from"./messages-iLQrQMz2.js";import{C as he,D as fs,E as gs,F as bs,G as vs,I as _s,J as ks,K as ws,L as js,M as ys,N as Ns,O as Is,Q as Cs,R as Ss,T as Ne,U as Ms,V as Es,W as Ie,X as Ue,Y as Ke,Z as Ds,_ as xe,$ as we,a0 as Rs,a1 as As,a2 as ge,a3 as Ae,a4 as Ls,a5 as Ps,a6 as je,a7 as $s,a8 as Ve,a9 as be,aa as Ts,ab as Xe,ac as Os,ad as zs,ae as Hs,af as Ws,ag as Fs,ah as qs,ai as Bs,aj as Ys,ak as Gs,al as Us,am as Ks,an as Vs,ao as Xs,ap as Zs,aq as Js,ar as Qs,as as et,at as st,au as tt,av as me,aw as nt}from"./index-QsW4kELd.js";import{ax as Ce,ay as Se,az as at,aA as Ze}from"./conversation-input-sync-BDD5IcnH.js";import"./console-mirror-DZYqU_Y0.js";function it(s){return s==="failed"?"text-danger":he(s)?"text-ink-muted":"text-ink-dim"}function rt(s){return s==="failed"?a("ui.mesh.mesh_approvals_tray.abandon"):a("ui.mesh.mesh_approvals_tray.stop")}function lt(s){switch(s){case"requested":return[{term:a("ui.mesh.mesh_approvals_tray.signing"),text:a("ui.mesh.mesh_approvals_tray.approving_signs_with_this_machine_s_operator")}];case"approved":return[{term:a("ui.mesh.mesh_approvals_tray.next"),text:a("ui.mesh.mesh_approvals_tray.an_agent_runs_the_install_and_connect")},{term:a("ui.mesh.mesh_approvals_tray.stop"),text:a("ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_nothing_has")}];case"connecting":return[{term:a("ui.mesh.mesh_approvals_tray.stop"),text:a("ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_the_runner")}];case"failed":return[{term:a("ui.mesh.mesh_approvals_tray.after_a_stop"),text:a("ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_abandoning")}];default:return[]}}const ot=({rows:s,error:t,pending:n,refusal:l,onDecide:m,onRetry:u,nowSeconds:g,networkNames:o})=>{F();const _=n!==null,v=x.useMemo(()=>s.filter(p=>he(p.state)),[s]),j=x.useMemo(()=>s.filter(p=>!he(p.state)),[s]),[D,N]=x.useState(!1),d=x.useRef(null),c=x.useRef(null),h=x.useRef(null),I=(p,S)=>{S==="deny"&&v.some(P=>P.approvalId===p&&P.kind==="credential")&&(h.current={id:p,origin:document.activeElement,sawPending:!1}),m(p,S)};x.useLayoutEffect(()=>{const p=h.current;if(!p)return;if(n?.approvalId===p.id&&(p.sawPending=!0),l?.approvalId===p.id){h.current=null;return}const S=s.find(C=>C.approvalId===p.id);if(S?.state==="requested"){!n&&p.sawPending&&(h.current=null);return}if(S?.state==="denied"&&n||(h.current=null,S?.state!=="denied"||document.activeElement!==document.body&&document.activeElement!==p.origin))return;(v.length?d.current?.querySelector('[data-tour-tag="mesh-approval-controls"] button:not(:disabled)'):c.current?.querySelector("button"))?.focus({preventScroll:!0})},[s,n,l,v.length]);const y=j.some(p=>p.state==="failed"),E=j.filter(p=>p.state==="failed").length,f=l!==null&&s.some(p=>p.approvalId===l.approvalId&&(he(p.state)||D));return v.length===0&&j.length===0&&!t&&!l?null:e.jsxs("section",{ref:d,"aria-label":a("ui.mesh.mesh_approvals_tray.approvals"),"data-tour-tag":"mesh-approvals-tray",className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(fs,{"aria-hidden":"true",className:"size-4 text-ink-muted"}),e.jsx("h2",{className:"text-body-sm text-ink",children:a("ui.mesh.mesh_approvals_tray.approvals")}),v.length>0&&e.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_approvals_tray.waiting_count",{count:v.length})})]}),t&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("p",{className:"min-w-0 flex-1 text-meta text-ink-muted",children:t}),e.jsx(U,{variant:"secondary",size:"sm",onClick:u,children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),v.length>0&&e.jsx("ul",{className:"flex flex-col divide-y divide-hairline",children:v.map(p=>e.jsx(Le,{row:p,pending:n?.approvalId===p.approvalId?n:null,busy:_,refusal:l?.approvalId===p.approvalId?l:null,onDecide:I,nowSeconds:g,networkNames:o},p.approvalId))}),l&&!f&&e.jsx(Je,{refusal:l}),j.length>0&&e.jsx("div",{ref:c,children:e.jsx(Ce,{open:D,onOpenChange:N,chevronClassName:"text-ink-dim",className:L(v.length>0&&"border-hairline border-t pt-3"),summary:e.jsxs("span",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[a("ui.mesh.mesh_approvals_tray.settled_approvals"),e.jsxs("span",{className:"text-ink-dim",children:["(",j.length,")"]}),y&&e.jsx("span",{"aria-hidden":"true",className:"size-1.5 rounded-full bg-danger"}),E>0&&e.jsx("span",{className:"text-danger",children:a("ui.mesh.mesh_approvals_tray.failed_count",{count:E})})]}),children:e.jsx("ul",{className:"flex flex-col divide-y divide-hairline","data-tour-tag":"mesh-approvals-records",children:j.map(p=>e.jsx(Le,{row:p,pending:n?.approvalId===p.approvalId?n:null,busy:_,refusal:l?.approvalId===p.approvalId?l:null,onDecide:I,nowSeconds:g,networkNames:o},p.approvalId))})})})]})},Le=({row:s,pending:t,busy:n,refusal:l,onDecide:m,nowSeconds:u,networkNames:g})=>{F();const o=he(s.state),_=gs(s),v=bs(s,g),j=vs(s,g),D=_s(s),N=ks(s),d=ws(s),c=js(s.expiresAt,u),h=s.kind==="credential"||s.kind==="unknown",I=h||s.canApproveHere===!1,y=I?[]:lt(s.state),E=ys(s),f=Ns(s.state);return e.jsxs("li",{className:"flex flex-col gap-2 py-3 first:pt-0 last:pb-0","data-tour-tag":"mesh-approval-card",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:L("text-meta",it(s.state)),children:s.kind==="credential"&&s.state==="approved"?a("ui.mesh.approval.approved_pending_apply"):Is(s.state)}),e.jsx("div",{className:"grow"}),o&&c&&e.jsx("span",{className:"text-meta text-ink-dim",children:s.kind==="credential"?a("ui.mesh.approval.request_window",{remaining:c}):c})]}),e.jsx("p",{className:"text-body-sm text-ink [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-summary",children:o?v:_}),!I&&s.state==="failed"&&e.jsx("p",{className:"text-meta text-ink-muted","data-tour-tag":"mesh-approval-stopped-note",children:a("ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_it")}),o&&I&&e.jsx("p",{className:"text-meta text-ink-muted whitespace-pre-wrap [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-cli-remedy",children:s.approveRemedy||a("ui.mesh.approval.cli_review")}),s.kind==="credential"&&s.state==="approved"&&e.jsx("p",{className:"text-meta text-ink-muted","data-tour-tag":"mesh-approval-apply-hint",children:s.details?.length?a("ui.mesh.approval.approved_apply_hint"):a("ui.mesh.approval.approved_details_missing")}),(E||f)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[E&&e.jsx(U,{variant:"primary",size:"sm",disabled:n,onClick:()=>m(s.approvalId,"approve"),"data-tour-tag":"mesh-approval-approve",children:a("ui.mesh.mesh_approvals_tray.approve")}),f&&e.jsx(U,{variant:"ghost",size:"sm",disabled:n,onClick:()=>m(s.approvalId,"deny"),"data-tour-tag":o?"mesh-approval-deny":"mesh-approval-stop",children:o?a("ui.mesh.mesh_approvals_tray.deny"):rt(s.state)}),t&&e.jsx("span",{className:"text-meta text-ink-dim",children:t.decision==="approve"?a("ui.mesh.mesh_approvals_tray.waiting_for_the_signing_prompt"):a("ui.mesh.mesh_approvals_tray.writing_the_decision")})]}),e.jsxs(Ce,{chevronClassName:"text-ink-dim",summary:e.jsx("span",{className:"text-meta",children:a("ui.mesh.mesh_approvals_tray.details")}),children:[h&&(s.details?.length?e.jsx("ul",{className:"flex flex-col gap-1.5 text-meta text-ink-muted [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-server-details",children:s.details.map((p,S)=>e.jsx("li",{className:"whitespace-pre-wrap",children:p},`${S}:${p}`))}):e.jsx("p",{className:"text-meta text-ink-muted",children:a("ui.mesh.approval.details_unavailable")})),j.length>0&&e.jsx("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-4 gap-y-0.5 text-meta text-ink-dim","data-tour-tag":"mesh-approval-consequences",children:j.map(p=>e.jsxs(x.Fragment,{children:[e.jsx("dt",{className:"text-ink-muted",children:p.term}),e.jsx("dd",{children:p.consequence})]},p.term))}),(D||N)&&e.jsxs("p",{className:"text-meta text-ink-muted",children:[D&&e.jsx("span",{children:D}),D&&N&&e.jsx("span",{children:" · "}),N&&e.jsx("span",{className:"font-mono",children:N})]}),d&&e.jsx("p",{className:"text-meta text-ink-dim",children:d}),y.length>0&&e.jsx("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-4 gap-y-0.5 text-meta","data-tour-tag":"mesh-approval-consequence",children:y.map(p=>e.jsxs(x.Fragment,{children:[e.jsx("dt",{className:"text-ink-muted",children:p.term}),e.jsx("dd",{className:"text-ink-muted",children:p.text})]},p.term))})]}),l&&e.jsx(Je,{refusal:l})]})},Je=({refusal:s})=>(F(),e.jsx(fe,{variant:"warning",className:"text-meta","data-tour-tag":"mesh-approval-refusal",children:e.jsxs("span",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[e.jsx("span",{className:"min-w-0 flex-1",children:s.sentence}),e.jsx("span",{className:"shrink-0 font-mono text-ink-dim",children:s.code})]})})),dt=4,ve={kind:"idle"};function ct(s){switch(s.kind){case"dragging":case"settling":return s.payload.session.id;case"pressing":return null;default:return null}}function Q(s,t){switch(t.kind){case"press":return s.kind!=="idle"?s:{kind:"pressing",payload:t.payload,originX:t.x,originY:t.y,pointerId:t.pointerId};case"move":return s.kind==="pressing"?Math.max(Math.abs(t.x-s.originX),Math.abs(t.y-s.originY))<dt?s:{kind:"dragging",payload:s.payload,x:t.x,y:t.y,target:t.target,pointerId:s.pointerId}:s.kind==="dragging"?{...s,x:t.x,y:t.y,target:t.target}:s;case"release":return s.kind==="dragging"?{kind:"settling",payload:s.payload,target:s.target}:s.kind==="pressing"?ve:s;case"cancel":case"settled":return ve;default:return s}}const ut=({edges:s,geometry:t,selectedDeviceId:n})=>e.jsx("svg",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0 overflow-visible",width:t.bounds.width,height:t.bounds.height,children:s.map(l=>{const m=t.networks.get(l.networkId),u=t.devices.get(l.deviceId);if(!m||!u)return null;const g=n!==null&&l.deviceId===n;return e.jsx("path",{"data-mesh-edge":l.key,d:Cs(m,u),fill:"none",strokeWidth:g?2:1.5,className:g?"stroke-ink":"stroke-ink-dim"},l.key)})}),mt={self:"border-l-hairline",reached:"border-l-hairline","relay-down":"border-l-warning","handshake-refused":"border-l-warning","address-unreachable":"border-l-warning","no-endpoint":"border-l-hairline","not-a-member":"border-l-hairline",unanswered:"border-l-warning","not-attempted":"border-l-hairline",unknown:"border-l-hairline"};function ht(s){return s.suspect?"border-l-danger":mt[ee(s)]}const pt={self:"ring-2 ring-accent",reachable:null,relay_down:null,handshake_refused:null,unreachable:null,suspect:null},xt={accept:"border-accent bg-accent-wash",refuse:"border-warning"};function ft(s,t,n){return[s.label,Ke(s,t),n].filter(Boolean).join(", ")}function se(s){return s.name.trim()||s.id.slice(-6)}function Qe(s,t,n){if(n!=="reached"&&n!=="self"){const l=pe(n);return s.unreachable_reason?`${l} (${s.unreachable_reason})`:l}return s.live_state.trim()?s.live_state.trim():s.locality==="local"?a("ui.mesh.mesh_drop.on_this_device"):a("ui.mesh.mesh_node.on_device",{device:t})}const gt={resting:"border-l-2 border-l-hairline",attention:"border-l-2 border-l-warning"},bt=({network:s,x:t,y:n,refused:l})=>(F(),e.jsxs("li",{"data-mesh-network":s.id,"data-mesh-network-refused":l?"true":void 0,"data-glass-block":"",className:L("absolute flex items-center gap-2 rounded-md border bg-elevated px-3",l?"border-warning":"border-hairline"),style:{left:t,top:n,width:Ne,height:Ss},children:[e.jsx(Se,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate text-body-sm text-ink",children:s.label}),e.jsxs("span",{title:a("ui.mesh.mesh_list.epoch",{epoch:s.epoch}),className:"block truncate text-meta text-ink-dim",children:[a("ui.mesh.mesh_graph.device_count",{count:s.memberCount}),s.revokedCount>0?e.jsxs(e.Fragment,{children:[" · ",a("ui.mesh.mesh_list.revoked_count",{count:s.revokedCount})]}):null]})]})]})),vt=({device:s,x:t,y:n,nowSeconds:l,selected:m,sessions:u,sessionTotal:g,dropState:o,movingSessionId:_,draggedSessionId:v,onOpen:j,onChipPointerDown:D,onChipClick:N,onShowAllSessions:d})=>{F();const{activity:c}=is(s,u.rows),h=c==="working",I=ft(s,l,h?"working":null),y=ee(s);return e.jsxs("li",{"data-mesh-device":s.id,"data-mesh-state":s.state,"data-mesh-drop":o??void 0,"aria-current":m?"true":void 0,"data-glass-block":"",className:L("absolute flex flex-col rounded-md border border-l-4 border-control bg-elevated","hover:bg-row-hover",m&&"border-y-ink border-r-ink bg-row-selected",ht(s),pt[s.state],o&&xt[o]),style:{left:t,top:n,width:Ne,height:Ms},children:[e.jsxs("button",{type:"button","data-mesh-device-open":s.id,"data-mesh-reach":y,"aria-label":I,title:rs(s),onClick:()=>j(s.id),className:L("flex w-full flex-col justify-between rounded-t-[5px] px-3 pt-2 pb-2 text-start","cursor-pointer","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-[-2px]"),style:{height:Es},children:[e.jsxs("span",{className:"flex w-full min-w-0 items-center gap-2",children:[e.jsx(at,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-body-sm text-ink",children:s.label}),s.suspect&&e.jsx(Ie,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"})]}),e.jsxs("span",{className:"flex w-full min-w-0 items-baseline gap-1",children:[e.jsx("span",{className:"w-3 shrink-0 font-mono text-body-sm text-ink tabular-nums",children:s.sessionCount??"–"}),e.jsx("span",{className:L("min-w-0 truncate text-meta",s.sessionCount===null?"text-ink-dim":"text-ink-muted"),children:Ue(s.sessionCount)})]}),e.jsxs("span",{"data-mesh-state-line":"",className:"flex w-full min-w-0 items-baseline gap-1.5 text-meta",children:[e.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-ink-dim",children:ls[y]}),e.jsx("span",{className:L("shrink-0",qe[y]),children:pe(y)}),h&&e.jsx("span",{"data-mesh-working":"",className:"shrink-0 text-info",children:a("ui.mesh.mesh_node.working")}),s.memberships.length>1&&e.jsx("span",{className:"min-w-0 truncate text-ink-dim",children:a("ui.mesh.mesh_node.memberships",{count:s.memberships.length})})]})]}),e.jsxs("ul",{"aria-label":a("ui.mesh.mesh_node.conversations_on",{device:s.label}),className:L("m-0 flex h-6 list-none items-center gap-1 overflow-hidden px-3",o==="accept"&&"opacity-40"),children:[u.shown.map(E=>e.jsx(_t,{session:E,ownerLabel:s.label,ownerReach:y,ownerReachable:s.reachable,moving:_===E.id,dragging:v===E.id,onPointerDown:D,onClick:()=>N(E)},E.id)),u.hidden>0&&e.jsx("li",{className:"shrink-0",children:e.jsxs("button",{type:"button","data-mesh-more":s.id,onClick:()=>d(s.id),className:L("flex min-h-6 items-center rounded-sm px-1.5 text-meta text-ink-dim","hover:bg-row-hover hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),title:a("ui.mesh.mesh_node.shown_conversations",{shown:u.shown.length,total:g}),"aria-label":a("ui.mesh.mesh_node.show_all_conversations",{count:g}),children:["+",u.hidden]})})]})]})},_t=({session:s,ownerLabel:t,ownerReach:n,ownerReachable:l,moving:m,dragging:u,onPointerDown:g,onClick:o})=>{F();const _=Qe(s,t,n);return m?e.jsx("li",{role:"status","data-mesh-session":s.id,"data-mesh-moving":"true",children:e.jsx("span",{className:"flex min-h-6 items-center rounded-sm bg-sunken px-1.5 text-meta text-ink-muted",children:a("ui.mesh.mesh_card.moving")})}):e.jsx("li",{className:"min-w-0 flex-1","data-mesh-session-item":s.id,"data-mesh-dragging":u?"true":void 0,children:e.jsx("button",{type:"button","data-mesh-session":s.id,style:{touchAction:"none"},title:`${se(s)} · ${_}`,"aria-label":a("ui.mesh.mesh_node.open_conversation",{conversation:se(s),fact:_,owner:t}),onPointerDown:v=>g(v,s),onClick:()=>o(s),className:L("flex min-h-6 w-full max-w-32 items-center rounded-sm border border-hairline bg-surface px-1.5 text-start text-meta text-ink-muted","cursor-grab active:cursor-grabbing","hover:text-ink",gt[Ds(s,l)],u&&"opacity-60","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),children:e.jsx("span",{className:"min-w-0 flex-1 truncate",children:se(s)})})})};function Pe(s){const t=s.trim();if(!t)return null;if(t.startsWith("[")){const l=t.indexOf("]");if(l<=1)return null;const m=t.slice(1,l),u=t.slice(l+1);if(!u)return{host:m,port:null};if(!u.startsWith(":"))return null;const g=Number(u.slice(1));return{host:m,port:Number.isInteger(g)?g:null}}const n=t.lastIndexOf(":");if(n>0){const l=t.slice(n+1);if(/^\d+$/.test(l))return{host:t.slice(0,n),port:Number(l)}}return{host:t,port:null}}function $e(s){const t=s.trim().split(".");if(t.length!==4)return null;for(const n of t)if(!/^\d{1,3}$/.test(n)||Number(n)>255)return null;return`${t[0]}.${t[1]}.${t[2]}`}function kt(s){return`${s}.x`}function wt(s){const t=new Map;for(const l of s.values())for(const m of l)t.set(m,(t.get(m)??0)+1);const n=new Set;for(const[l,m]of t)m>1&&n.add(l);return n}function ye(s){return new Set(s.endpoints.map(t=>t.trim()).filter(Boolean))}function jt(s,t){const n=s.filter(d=>d.id!==t),l=s.find(d=>d.id===t)??null,m=new Map;for(const d of s)m.set(d.id,ye(d));const u=wt(m),g=new Set;for(const d of l?ye(l):[]){if(u.has(d))continue;const c=Pe(d),h=c?$e(c.host):null;h&&g.add(h)}const o=d=>{const c=new Set;for(const h of ye(d)){if(u.has(h))continue;const I=Pe(h),y=I?$e(I.host):null;y&&c.add(y)}return c},_=new Map,v=new Map;for(const d of n){const c=yt(d);if(c){_.set(c,[..._.get(c)??[],d.id]);continue}for(const h of o(d))v.set(h,[...v.get(h)??[],d.id])}const j=new Map(s.map((d,c)=>[d.id,c])),D=d=>[...d].sort((c,h)=>(j.get(c)??0)-(j.get(h)??0)),N=[];for(const[d,c]of _)N.push({prefix:d,tier:"declared",deviceIds:D(c),get words(){return a("ui.mesh.mesh_scope.declared")}});for(const[d,c]of v)g.has(d)?N.push({prefix:d,tier:"shared",deviceIds:D(c),get words(){return a("ui.mesh.mesh_scope.shared_with_this_device")}}):c.length>1&&N.push({prefix:d,tier:"probable",deviceIds:D(c),get words(){return a("ui.mesh.mesh_scope.same_prefix")}});return N.sort((d,c)=>d.tier.localeCompare(c.tier)||d.prefix.localeCompare(c.prefix))}function yt(s){for(const t of s.memberships){const n=t.scope.trim();if(n)return n}return""}const Te={declared:0,shared:1,probable:2};function Nt(s,t){const n=new Map;for(const m of s){let u=null;for(const o of m.deviceIds){const _=t.get(o);_!==void 0&&(u===null||_<u.slot)&&(u={id:o,slot:_})}if(u===null)continue;const g=n.get(u.id);g===void 0?n.set(u.id,{slot:u.slot,groups:[m]}):g.groups.push(m)}const l=m=>{let u=-1;for(const g of m.deviceIds){const o=t.get(g);o!==void 0&&o>u&&(u=o)}return u};return[...n.entries()].sort((m,u)=>m[1].slot-u[1].slot).map(([m,u])=>({deviceId:m,groups:u.groups.sort((g,o)=>l(o)-l(g)||Te[g.tier]-Te[o.tier]||g.prefix.localeCompare(o.prefix))}))}function It(s){return new Map(s.map(t=>[t.deviceId,t.groups.length]))}function Ct(s){return`${s.tier==="declared"?s.prefix:kt(s.prefix)} · ${s.words}`}const Oe=(s,t)=>s.deviceIds.map(n=>t.devices.get(n)).filter(n=>n!==void 0),St=({stacks:s,geometry:t})=>(F(),e.jsx("div",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0",children:s.map(n=>{const l=n.groups.length,m=new Array(l).fill(0);let u=null;for(let o=l-1;o>=0;o-=1){const _=Oe(n.groups[o],t),v=(_.length===0?0:Math.max(..._.map(j=>j.y+j.height)))+xe;u=u===null?v:Math.max(v,u+we),m[o]=u}const g=t.devices.get(n.deviceId);return n.groups.map((o,_)=>{const v=Oe(o,t);if(v.length===0)return null;const j=l-1-_,D=Math.min(...v.map(y=>y.x)),N=Math.max(...v.map(y=>y.x)),c=(g?.y??Math.min(...v.map(y=>y.y)))-xe-Rs*j,h=o.tier==="declared",I=Ct(o);return e.jsx("div",{"data-mesh-scope":`${o.tier}:${o.prefix}`,"data-mesh-scope-level":_,className:L("absolute rounded-lg",o.tier==="probable"?"border border-dashed border-hairline-strong":"border border-control"),style:{left:D-xe-we*j,top:c,width:N+Ne-D+(xe+we*j)*2,height:m[_]-c},children:e.jsx("span",{"data-mesh-scope-label":"",className:L("absolute bottom-full left-1 mb-0.5 whitespace-nowrap text-meta",o.tier==="probable"?"text-ink-dim":"text-ink-muted",h&&"font-medium"),children:I})},`${o.tier}:${o.prefix}`)})})})),ze=48,He=1.25,Mt=.0015,Et=({graph:s,slots:t,nowSeconds:n,selectedDeviceId:l,sessions:m,sessionTotals:u,movingSessionId:g,canMove:o,onOpenDevice:_,onAskMove:v,onDropRefused:j,onShowAllSessions:D,summaryId:N})=>{F();const d=x.useRef(null),[c,h]=x.useState({width:0,height:0,clipWidth:0,clipHeight:0,left:0,top:0}),[I,y]=x.useState({k:1,tx:0,ty:0}),E=x.useRef(!1),f=x.useRef(!1),p=x.useRef(null),S=x.useMemo(()=>jt(s.devices,s.selfDeviceId),[s.devices,s.selfDeviceId]),P=x.useMemo(()=>Nt(S,t.devices),[S,t]),C=x.useMemo(()=>As(t,It(P)),[t,P]),M=x.useMemo(()=>({selfDeviceId:s.selfDeviceId,devices:new Map(s.devices.map(i=>[i.id,i])),networks:new Map(s.networks.map(i=>[i.id,i]))}),[s]),[k,T]=x.useState(ve),de=x.useRef({kind:"ground"}),te=x.useCallback((i,r)=>{const b=document.elementFromPoint(i,r),A=b?.closest("[data-mesh-device]");if(A){const G=A.getAttribute("data-mesh-device");if(G)return{kind:"device",deviceId:G}}const H=b?.closest("[data-mesh-network]");if(H){const G=H.getAttribute("data-mesh-network");if(G)return{kind:"network",networkId:G}}return{kind:"ground"}},[]),$=x.useMemo(()=>k.kind!=="dragging"&&k.kind!=="settling"?null:ge(k.payload,k.target,M),[k,M]),K=x.useCallback(i=>{if(!$)return null;if($.kind==="plan"){const r=k.kind==="dragging"||k.kind==="settling"?k.target:null;return r&&r.kind==="device"&&r.deviceId===i?"accept":null}if($.kind==="refused"){const r=k.kind==="dragging"||k.kind==="settling"?k.target:null;return r&&r.kind==="device"&&r.deviceId===i?"refuse":null}return null},[$,k]),ne=x.useCallback((i,r)=>{if(!o||i.button!==0)return;f.current=!1;const b=r.locality==="local"?s.selfDeviceId??"":r.owner_device,A=M.devices.get(b),H={session:r,ownerDeviceId:b,ownerLabel:A?.label??r.owner_device_name};try{i.currentTarget.setPointerCapture(i.pointerId)}catch{}T(G=>Q(G,{kind:"press",payload:H,x:i.clientX,y:i.clientY,pointerId:i.pointerId}))},[o,M,s.selfDeviceId]),ae=i=>{if(k.kind==="pressing"||k.kind==="dragging"){const r=te(i.clientX,i.clientY);de.current=r,T(b=>Q(b,{kind:"move",x:i.clientX,y:i.clientY,target:r}));return}V(i)},ce=i=>{if(ue(i),k.kind!=="pressing"&&k.kind!=="dragging")return;if(k.kind==="pressing"){T(b=>Q(b,{kind:"cancel"}));return}const r=ge(k.payload,k.target,M);f.current=!0,T(b=>Q(b,{kind:"release"})),r.kind==="plan"?v({plan:r.plan,alternatives:r.alternatives,risky:r.risky}):r.kind==="refused"&&j({code:r.code,sentence:r.sentence,reach:r.reach,remedy:r.remedy,plan:r.plan??null}),T(b=>Q(b,{kind:"settled"}))};x.useEffect(()=>()=>T(ve),[]);const ie=x.useCallback(()=>{y(Ae(C.bounds,c))},[C.bounds,c]);x.useEffect(()=>{const i=d.current;if(!i)return;const r=()=>{const A=i.getBoundingClientRect();h({width:A.width,height:A.height,clipWidth:i.clientWidth,clipHeight:i.clientHeight,left:A.left,top:A.top})};r();const b=new ResizeObserver(r);return b.observe(i),()=>b.disconnect()},[]),x.useEffect(()=>{E.current||c.width<=0||c.height<=0||(E.current=!0,y(Ae(C.bounds,c)))},[c,C.bounds]),x.useEffect(()=>{const i=p.current;if(p.current={width:c.width,height:c.height},!i||!E.current||c.width<=0||c.height<=0||c.width>=i.width&&c.height>=i.height||!l)return;const r=C.devices.get(l);r&&y(b=>{const A={width:c.clipWidth,height:c.clipHeight},H=Math.max(0,Math.min(A.width-C.bounds.width*b.k,A.height-C.bounds.height*b.k));return Ls(b,r,A,Math.min($s,H))})},[c,l,C]);const q=k.kind==="dragging"?{x:k.x-c.left+12,y:k.y-c.top+12}:{x:0,y:0},re=$?Ps($):null,B=x.useRef(null),w=x.useRef(null),R=x.useRef(null),O=x.useRef(null),Y=x.useCallback(()=>{R.current=null;const i=B.current,r=w.current;if(B.current=null,w.current=null,i){const b=O.current;if(!b)return;y({k:b.transform.k,tx:b.transform.tx+(i.x-b.x),ty:b.transform.ty+(i.y-b.y)});return}r&&y(b=>je(b,{x:r.x,y:r.y},b.k*Math.exp(-r.deltaY*Mt)))},[]),z=x.useCallback(()=>{R.current===null&&(R.current=requestAnimationFrame(Y))},[Y]);x.useEffect(()=>()=>{R.current!==null&&cancelAnimationFrame(R.current)},[]);const Z=i=>{!(i.target===i.currentTarget)&&i.button!==1||i.button!==0&&i.button!==1||(O.current={x:i.clientX,y:i.clientY,transform:I},i.currentTarget.setPointerCapture(i.pointerId),i.preventDefault())},V=i=>{O.current&&(B.current={x:i.clientX,y:i.clientY},z())},ue=i=>{O.current&&(O.current=null,B.current=null,i.currentTarget.hasPointerCapture(i.pointerId)&&i.currentTarget.releasePointerCapture(i.pointerId))},J=x.useCallback(i=>{if(i.deltaY===0)return;i.preventDefault();const r=i.currentTarget.getBoundingClientRect();w.current={x:i.clientX-r.left,y:i.clientY-r.top,deltaY:i.deltaY},z()},[z]);x.useEffect(()=>{const i=d.current;if(i)return i.addEventListener("wheel",J,{passive:!1}),()=>i.removeEventListener("wheel",J)},[J]);const le=i=>{const r=i.shiftKey?ze*4:ze;switch(i.key){case"Escape":if(k.kind!=="pressing"&&k.kind!=="dragging")return;i.preventDefault(),k.kind==="dragging"&&(f.current=!0),T(b=>Q(b,{kind:"cancel"}));return;case"0":i.preventDefault(),ie();return;case"+":case"=":i.preventDefault(),y(b=>je(b,{x:c.width/2,y:c.height/2},b.k*He));return;case"-":case"_":i.preventDefault(),y(b=>je(b,{x:c.width/2,y:c.height/2},b.k/He));return;case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":{i.preventDefault();const b=i.key==="ArrowLeft"?r:i.key==="ArrowRight"?-r:0,A=i.key==="ArrowUp"?r:i.key==="ArrowDown"?-r:0;y(H=>({...H,tx:H.tx+b,ty:H.ty+A}));return}}};return e.jsxs("div",{ref:d,"data-mesh-canvas":"",role:"group","aria-labelledby":N,tabIndex:0,onPointerDown:Z,onPointerMove:ae,onPointerUp:ce,onPointerCancel:i=>{k.kind==="dragging"&&(f.current=!0),T(r=>Q(r,{kind:"cancel"})),ue(i)},"data-mesh-gesture":k.kind,"data-glass-well":"clear",onKeyDown:le,onDoubleClick:i=>{i.target===i.currentTarget&&ie()},className:L("relative min-h-0 flex-1 overflow-hidden rounded-lg border border-hairline bg-sunken","[touch-action:none]","cursor-grab active:cursor-grabbing","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-[-2px]"),children:[e.jsx("div",{"data-mesh-ground":"","aria-hidden":"true",className:"mesh-ground pointer-events-none absolute inset-0",style:{backgroundPosition:`${I.tx}px ${I.ty}px`}}),e.jsxs("div",{"data-mesh-world":"",className:"absolute top-0 left-0",style:{transform:`translate3d(${I.tx}px, ${I.ty}px, 0) scale(${I.k})`,transformOrigin:"0 0",width:C.bounds.width,height:C.bounds.height},children:[e.jsx(St,{stacks:P,geometry:C}),e.jsx(ut,{edges:s.edges,geometry:C,selectedDeviceId:l}),e.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.networks"),className:"m-0 list-none p-0",children:s.networks.map(i=>{const r=C.networks.get(i.id);return r?e.jsx(bt,{network:i,x:r.x,y:r.y,refused:$?.kind==="refused"&&k.kind==="dragging"&&k.target.kind==="network"&&k.target.networkId===i.id},i.id):null})}),e.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.devices"),className:"m-0 list-none p-0",children:s.devices.map(i=>{const r=C.devices.get(i.id);return r?e.jsx(vt,{device:i,x:r.x,y:r.y,nowSeconds:n,selected:i.id===l,sessions:m.get(i.id)??{rows:[],shown:[],hidden:0},sessionTotal:u.get(i.id)??i.sessionCount??0,dropState:K(i.id),movingSessionId:g,draggedSessionId:ct(k),onOpen:_,onChipPointerDown:ne,onChipClick:()=>{if(f.current){f.current=!1;return}_(i.id)},onShowAllSessions:D},i.id):null})})]}),k.kind==="dragging"&&e.jsx("div",{"data-mesh-ghost":"","aria-hidden":"true",className:"pointer-events-none absolute z-10 max-w-40 truncate rounded-sm border border-ink-dim bg-surface px-1.5 py-0.5 text-meta text-ink",style:{left:q.x,top:q.y},children:k.payload.session.name||"untitled"}),k.kind==="dragging"&&re&&e.jsx("div",{"data-mesh-indicator":"",className:L("pointer-events-none absolute z-10 rounded-sm border bg-surface px-2 py-1 text-meta",$?.kind==="refused"?"border-warning text-warning":"border-control text-ink"),style:{left:q.x,maxWidth:Math.max(160,c.width-q.x-12),...q.y>c.height*.6?{bottom:Math.max(12,c.height-q.y+8)}:{top:q.y+24}},children:re})]})};function Dt(s,t,n,l){const m=n.locality==="local"?t:n.owner_device,u=[];for(const g of s)if(g.id!==m){if(g.id===t){u.push({deviceId:g.id,label:l,verb:a("ui.mesh.mesh_card.recall_to_this_device"),keepVerb:a("ui.mesh.mesh_card.copy_here_leave_it_there")});continue}u.push({deviceId:g.id,label:g.label,verb:a("ui.mesh.mesh_card.move_to",{device:g.label}),keepVerb:a("ui.mesh.mesh_card.copy_to",{device:g.label})})}return u}function Rt(s,t,n){return Dt(s.devices,s.selfDeviceId,t,n)}function es(s,t,n){const l=Rt(s,t,n),m={selfDeviceId:s.selfDeviceId,devices:new Map(s.devices.map(o=>[o.id,o])),networks:new Map(s.networks.map(o=>[o.id,o]))},u=t.locality==="local"?s.selfDeviceId??"":t.owner_device,g=m.devices.get(u);return l.map(o=>{const _=ge({session:t,ownerDeviceId:u,ownerLabel:g?.label??t.owner_device_name},{kind:"device",deviceId:o.deviceId},m);return{...o,refused:_.kind==="refused"&&_.code!=="busy"?_.sentence:null}})}const ss=({session:s,destinations:t,disabled:n,onChoose:l,onOpenChange:m,trigger:u,triggerLabel:g})=>(F(),e.jsxs(ms,{onOpenChange:m,children:[e.jsx(hs,{asChild:!0,children:e.jsx("button",{type:"button","aria-label":g,"data-mesh-session-menu":s.id,disabled:n||t.length===0,className:"rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:text-ink-disabled",children:u})}),e.jsxs(ps,{align:"start",className:"min-w-56",children:[e.jsx(xs,{children:se(s)}),e.jsx(Ee,{}),t.map(o=>e.jsx(De,{"data-mesh-move-to":o.deviceId,disabled:!!o.refused,title:o.refused??void 0,onSelect:()=>l(o,!1),children:o.verb},o.deviceId)),e.jsx(Ee,{}),t.map(o=>e.jsx(De,{"data-mesh-copy-to":o.deviceId,disabled:!!o.refused,title:o.refused??void 0,onSelect:()=>l(o,!0),children:o.keepVerb},`keep-${o.deviceId}`))]})]})),At=({device:s,sessions:t,sessionTotal:n,nowSeconds:l,destinationsFor:m,movingSessionId:u,canMove:g,canInvite:o,onClose:_,onMove:v,onShowInList:j,onInvite:D,onRemoveMember:N})=>{F();const d=ee(s),c=Be(s),h=s.reachable?[]:s.attempts??[];x.useEffect(()=>{const f=p=>{p.key!=="Escape"||p.defaultPrevented||p.target?.closest('[role="menu"],[role="dialog"]')||(document.querySelector(`[data-mesh-device-open="${s.id}"]`)?.focus(),_())};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[s.id,_]);const I=s.sessionCount===null?Ue(null):a("ui.mesh.mesh_card.conversation_count",{count:s.sessionCount}),y=s.suspect?Ye():[I,pe(d)].filter(Boolean).join(" · "),E=n>t.rows.length?a("ui.mesh.mesh_card.shown_of",{shown:t.rows.length,total:n}):`${t.rows.length}`;return e.jsxs("aside",{"aria-label":a("ui.mesh.mesh_card.device_details",{device:s.label}),"data-mesh-panel":s.id,"data-glass-block":"",className:"flex w-80 shrink-0 flex-col gap-3 overflow-y-auto rounded-md border border-hairline bg-surface p-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsx(U,{size:"sm",variant:"ghost",className:"w-fit self-end","data-mesh-panel-close":"",onClick:_,children:a("ui.mesh.mesh_actions.close")}),e.jsx("h2",{className:"text-body-sm text-ink",children:s.label}),e.jsxs("p",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[s.suspect&&e.jsx(Ie,{"aria-hidden":"true",className:"size-3.5 text-danger"}),!s.suspect&&d==="unanswered"&&e.jsx(us,{"aria-hidden":"true",className:"size-3.5 text-warning"}),y]})]}),e.jsx(oe,{}),e.jsxs("section",{className:"flex flex-col gap-2",children:[e.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.memberships")}),e.jsx("ul",{className:"m-0 flex list-none flex-col gap-2 p-0",children:s.memberships.map(f=>e.jsxs("li",{className:"flex flex-col gap-1",children:[e.jsxs("span",{className:"flex items-center gap-2 text-body-sm text-ink",children:[e.jsx(Se,{"aria-hidden":"true",className:"size-3.5 text-ink-muted"}),f.networkName]}),e.jsxs("span",{className:"text-meta text-ink-dim",children:[f.role||"member",f.capabilities.length>0?` · ${f.capabilities.join(", ")}`:""]}),o&&e.jsxs(U,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-remove-member":`${f.networkId}:${s.id}`,onClick:()=>N(s,f.networkId),children:[a("ui.mesh.mesh_card.remove_from"),f.networkName,"…"]})]},f.networkId))}),o&&e.jsx(U,{size:"sm",variant:"secondary",className:"w-fit","data-mesh-invite":s.id,onClick:()=>D(s),children:a("ui.mesh.mesh_actions.invite_to_a_network")})]}),e.jsx(oe,{}),e.jsxs("section",{className:"flex shrink-0 flex-col gap-2",children:[e.jsxs("h3",{className:"text-meta text-ink-dim",children:[a("ui.mesh.mesh_card.conversations"),e.jsxs("span",{className:"text-ink-disabled",children:["(",ee(s)!=="self"&&ee(s)!=="reached"?Ve(null):E,")"]})]}),be(s,l)?e.jsx("p",{className:"text-meta text-warning",children:be(s,l)}):t.rows.length===0?e.jsx("p",{className:"text-meta text-ink-dim",children:s.sessionCount===null?a("ui.mesh.mesh_card.this_device_did_not_report_its_conversations"):a("ui.mesh.mesh_card.no_conversations_here")}):e.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:t.rows.map(f=>e.jsxs("li",{"data-mesh-panel-session":f.id,className:L("flex items-center gap-2 rounded-sm px-2 py-1","border border-hairline bg-elevated",u===f.id&&"border-control"),children:[e.jsx("span",{className:"min-w-0 flex-1 truncate text-body-sm text-ink",title:se(f),children:se(f)}),e.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:Qe(f,s.label,ee(s))}),u===f.id?e.jsx("span",{className:"shrink-0 text-meta text-ink-muted",children:a("ui.mesh.mesh_card.moving")}):e.jsx(ss,{session:f,destinations:m(f),disabled:!g,onChoose:(p,S)=>v(f,p,S),trigger:e.jsx(Ze,{"aria-hidden":"true",className:"size-4"}),triggerLabel:a("ui.mesh.mesh_card.move_conversation",{conversation:se(f)})})]},f.id))})]}),e.jsx(oe,{}),e.jsxs("section",{className:"flex flex-col gap-2",children:[e.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.network_addresses")}),s.endpoints.length===0?e.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.no_address_published")}):e.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:s.endpoints.map(f=>e.jsxs("li",{className:"flex items-baseline justify-between gap-2",children:[e.jsx("span",{className:"min-w-0 truncate font-mono text-body-sm text-ink",children:f}),e.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:a("ui.mesh.mesh_card.advertised")})]},f))})]}),e.jsx(oe,{}),e.jsxs("section",{className:"flex flex-col gap-2",children:[e.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.status")}),e.jsxs("dl",{className:"m-0 flex flex-col gap-1",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[e.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.reach")}),e.jsx("dd",{className:"m-0 text-body-sm text-ink",children:pe(d)})]}),e.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[e.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.last_status_frame")}),e.jsx("dd",{className:"m-0 text-body-sm text-ink",children:s.lastSeenAt===null?a("ui.mesh.mesh_card.never"):Ts(l-s.lastSeenAt)})]})]}),!s.reachable&&(c!==""||h.length>0)&&e.jsxs("div",{className:"flex flex-col gap-1",children:[c&&e.jsx("p",{className:"m-0 text-meta text-warning",children:c}),s.linkState==="handshake_refused"&&e.jsx("p",{className:"m-0 text-meta text-ink-dim",children:a("ui.mesh.mesh_reach.handshake_refused_hint")}),h.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{id:`mesh-attempts-label-${s.id}`,className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_reach.addresses_tried")}),e.jsx("ul",{role:"list","aria-labelledby":`mesh-attempts-label-${s.id}`,className:"m-0 flex list-none flex-col gap-0.5 p-0",children:h.map((f,p)=>{const S=Ge(f.detail);return e.jsxs("li",{"data-mesh-attempt":f.endpoint,className:"flex items-baseline justify-between gap-2",children:[e.jsx("span",{className:"min-w-0 truncate font-mono text-meta text-ink",children:f.endpoint}),e.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:S})]},`${f.endpoint}:${p}`)})})]})]}),!c&&h.length===0&&s.reason&&e.jsx("p",{className:"text-meta text-warning",children:s.reason})]}),e.jsx(oe,{}),e.jsx(U,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-show-in-list":s.id,onClick:()=>j(s.id),children:a("ui.mesh.mesh_card.show_in_list")})]})},Lt=["name","chats","state"],Pt={get name(){return a("ui.mesh.mesh_list.name")},get chats(){return a("ui.mesh.mesh_list.sort_conversations")},get state(){return a("ui.mesh.mesh_list.state")}},We={suspect:0,relay_down:1,handshake_refused:2,unreachable:3,self:4,reachable:5};function $t(s,t){const n=[...s];switch(t){case"chats":return n.sort((l,m)=>(m.sessionCount??-1)-(l.sessionCount??-1)||l.label.localeCompare(m.label)),n;case"state":return n.sort((l,m)=>We[l.state]-We[m.state]||l.label.localeCompare(m.label)),n;default:return n.sort((l,m)=>l.label.localeCompare(m.label))}}const Fe=8;function Tt(s,t){if(s.locality==="local")return s.live_state||"here";const n=s.owner_device_name||t,l=s.live_state?` · ${s.live_state}`:"";return s.reachable?a("ui.mesh.mesh_list.on_device_state",{device:n,state:l}):a("ui.mesh.mesh_list.on_device_no_answer",{device:n})}const Ot=({graph:s,nowSeconds:t,selectedDeviceId:n,sessions:l,selfLabel:m,canMove:u,onSelect:g,onMove:o,onInvite:_,onRemove:v})=>{F();const[j,D]=x.useState("name"),N=x.useMemo(()=>s.networks.map(d=>({network:d,members:$t(s.devices.filter(c=>c.memberships.some(h=>h.networkId===d.id)),j)})),[s,j]);return e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto pe-1",children:[e.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[e.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_list.sort_devices_by")}),e.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:Lt.map(d=>e.jsx("button",{type:"button","aria-pressed":j===d,onClick:()=>D(d),className:L("h-6 rounded-sm px-3 text-body-sm text-ink-muted transition-colors duration-fast ease-out-quart","hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2",j===d&&"bg-surface text-ink"),children:Pt[d]},d))})]}),N.map(({network:d,members:c})=>e.jsxs("section",{"data-mesh-network-group":d.id,className:"flex flex-col gap-2",children:[e.jsxs("h2",{className:"flex flex-wrap items-baseline gap-2 text-body-sm text-ink",title:a("ui.mesh.mesh_list.epoch",{epoch:d.epoch}),children:[d.label,e.jsxs("span",{className:"text-meta text-ink-dim",children:[d.trust," ·"," ",a("ui.mesh.mesh_graph.device_count",{count:d.memberCount}),d.revokedCount>0?e.jsxs(e.Fragment,{children:[" · ",a("ui.mesh.mesh_list.revoked_count",{count:d.revokedCount})]}):null]})]}),e.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:c.map(h=>{const I=h.memberships.find(M=>M.networkId===d.id),y=h.id===n,E=l.get(h.id),f=E?.rows??[],p=E?Xe(E,h.sessionCount):h.sessionCount??0,S=ee(h),P=Be(h),C=h.reachable?[]:h.attempts??[];return e.jsxs("li",{"data-mesh-device-row":h.id,"data-mesh-state":h.state,"aria-current":y?"true":void 0,className:L("flex flex-col gap-1 rounded-md px-3 py-2","border border-hairline bg-surface",y&&"border-ink bg-row-selected"),children:[e.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[e.jsx("button",{type:"button","data-mesh-device-open":h.id,onClick:()=>g(h.id),className:L("min-w-0 flex-1 truncate text-start text-body-sm text-ink","hover:text-ink-muted","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),children:h.label}),e.jsxs("span",{className:L("flex shrink-0 items-center gap-1 text-meta",qe[S]),"data-mesh-reach":S,children:[h.suspect&&e.jsx(Ie,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"}),h.suspect?pe(S):Ke(h,t),h.suspect&&e.jsx("span",{className:"shrink-0 rounded-sm border border-danger px-1 text-danger",children:Ye()})]}),e.jsxs("span",{className:"shrink-0 text-meta text-ink-dim",children:[I?.role?`${I.role} · `:"",a("ui.mesh.mesh_list.member")]})]}),(P!==""||C.length>0)&&!h.reachable&&e.jsxs("div",{className:"flex flex-col gap-0.5",children:[P&&e.jsx("span",{className:"text-meta text-warning",children:P}),C.map((M,k)=>{const T=Ge(M.detail);return e.jsx("span",{"data-mesh-attempt":M.endpoint,className:"text-meta text-ink-dim",children:T?`${M.endpoint} — ${T}`:M.endpoint},`${M.endpoint}:${k}`)})]}),be(h,t)?e.jsxs("span",{className:"text-meta text-warning",children:[a("ui.mesh.mesh_card.conversations")," (",Ve(null),") ·"," ",be(h,t)]}):f.length>0?e.jsxs(e.Fragment,{children:[e.jsx(oe,{className:"my-1"}),e.jsx("ul",{className:"m-0 flex list-none flex-col gap-0.5 p-0",children:f.slice(0,Fe).map(M=>e.jsxs("li",{"data-mesh-row-session":M.id,className:"flex items-center gap-2 py-0.5",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate text-meta text-ink-muted",children:M.name||M.id}),e.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:Tt(M,m)}),e.jsx(ss,{session:M,destinations:es(s,M,m),disabled:!u,onChoose:(k,T)=>o(M,k,T),trigger:e.jsx(Ze,{"aria-hidden":"true",className:"size-3.5"}),triggerLabel:a("ui.mesh.mesh_list.move_conversation",{conversation:M.name||M.id})})]},M.id))}),p>f.slice(0,Fe).length&&e.jsx("button",{type:"button",onClick:()=>g(h.id),className:"w-fit text-meta text-ink-dim hover:text-ink",children:a("ui.mesh.mesh_list.show_all_panel",{count:p})})]}):e.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_list.conversation_count",{count:p})}),(I||h.state!=="self")&&e.jsxs("div",{className:"flex flex-wrap items-center gap-1",children:[e.jsx(U,{size:"sm",variant:"ghost","data-mesh-invite":h.id,onClick:()=>_({deviceId:h.id,deviceLabel:h.label}),children:a("ui.mesh.mesh_actions.invite_to_a_network")}),I&&e.jsxs(U,{size:"sm",variant:"ghost","data-mesh-remove-member":`${d.id}:${h.id}`,onClick:()=>v({networkId:d.id,networkLabel:d.label,deviceId:h.id,deviceLabel:h.label}),children:[a("ui.mesh.mesh_card.remove_from"),d.label,"…"]})]})]},h.id)})})]},d.id)),s.unmatchedPeers.length>0&&e.jsxs("p",{className:"text-meta text-warning",children:[a("ui.mesh.mesh_graph.device_count",{count:s.unmatchedPeers.length})," ",a("ui.mesh.mesh_list.answered_the_peer_read_but_is_in")]})]})},zt=({revoked:s})=>{if(s.length===0)return null;const t=a("ui.mesh.mesh_list.revoked_count",{count:s.length});return e.jsx(Ce,{className:"contents",chevron:"trailing",chevronClassName:"text-ink-dim",rowClassName:"min-h-auto py-0",triggerClassName:"inline-flex w-auto items-center gap-1 align-baseline text-meta text-ink-dim hover:text-ink",triggerData:{"data-mesh-revoked-toggle":""},triggerLabel:a("ui.mesh.mesh_list.revoked_toggle_label"),summary:e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":"true",className:"inline-block whitespace-pre",children:" · "}),t]}),children:e.jsx("ul",{"data-mesh-revoked":"",className:"m-0 flex list-none flex-col gap-1 p-0",children:s.map(n=>e.jsxs("li",{"data-mesh-revoked-member":n.deviceId,className:"flex flex-wrap items-baseline gap-x-2 text-meta text-ink-dim",children:[e.jsx("span",{children:n.networkName}),e.jsx("span",{className:"font-mono text-body-sm text-ink",children:n.deviceId}),e.jsx("span",{className:"text-body-sm text-ink-muted",children:n.label}),e.jsxs("span",{children:[n.role?`${n.role} · `:"",a("ui.mesh.mesh_graph.revoked_membership")]})]},`${n.networkId}:${n.deviceId}`))})})},Ht=["canvas","list"],Wt={get canvas(){return a("ui.mesh.mesh_page.canvas")},get list(){return a("ui.mesh.mesh_page.list")}},Ft=({state:s,initialPresentation:t="canvas",graph:n,nowSeconds:l,checking:m,staleError:u,onRetry:g,approvals:o,sessions:_,sessionError:v,selfLabel:j,movingSessionId:D,canMove:N,pendingMove:d,onAskMove:c,onDropRefused:h,onChooseMove:I,onCancelMove:y,moveBusy:E,moveReport:f,onDismissReport:p,onWaitForIdle:S,onUndoCopy:P,invite:C,onOpenInvite:M,onInvite:k,onCloseInvite:T,inviteBusy:de,inviteReceipt:te,inviteRefusal:$,remove:K,onOpenRemove:ne,onRemove:ae,onCloseRemove:ce,removeBusy:ie,removeRefusal:q,removed:re})=>{F();const[B,w]=x.useState(t),[R,O]=x.useState(null),Y=n?Os(n):"",z="mesh-summary",Z=zs(n),V=Hs(n,_,n?.selfDeviceId??null),ue=x.useMemo(()=>{const r=new Map;for(const b of n?.devices??[]){const A=V.byDevice.get(b.id);r.set(b.id,A?Xe(A,b.sessionCount):b.sessionCount??0)}return r},[n,V]),J=x.useCallback(r=>{O(r)},[]),le=n?n.devices.find(r=>r.id===R)??null:null,i=x.useCallback((r,b,A)=>{if(!n)return null;const H={selfDeviceId:n.selfDeviceId,devices:new Map(n.devices.map(X=>[X.id,X])),networks:new Map(n.networks.map(X=>[X.id,X]))},G=r.locality==="local"?n.selfDeviceId??"":r.owner_device,ts=H.devices.get(G),W=ge({session:r,ownerDeviceId:G,ownerLabel:ts?.label??r.owner_device_name},{kind:"device",deviceId:b.deviceId},H);if(W.kind==="refused")return h({code:W.code,sentence:W.sentence,reach:W.reach,remedy:W.remedy,plan:W.plan??null}),null;if(W.kind==="none")return null;const Me=A?W.alternatives.find(X=>X.keep)??W.plan:W.plan,ns=[W.plan,...W.alternatives].filter(X=>X.keep!==Me.keep),as={plan:Me,alternatives:ns,risky:W.risky};c(as)},[n,c,h]);return e.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-6 overflow-y-auto p-6",children:[e.jsx(cs,{title:a("ui.mesh.mesh_page.mesh"),icon:Se,subtitle:a("ui.mesh.mesh_page.devices_this_app_is_paired_with_and"),children:e.jsxs("div",{className:"flex items-center gap-4",children:[m&&e.jsx("output",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.checking")}),(s.kind==="ready"||s.kind==="loading")&&e.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[e.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_page.presentation")}),e.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:Ht.map(r=>e.jsx("button",{type:"button","data-mesh-presentation":r,"aria-pressed":B===r,disabled:s.kind!=="ready",onClick:()=>w(r),className:L("h-6 rounded-sm px-3 text-body-sm text-ink-muted transition-colors duration-fast ease-out-quart","hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2","disabled:text-ink-dim disabled:hover:text-ink-dim",B===r&&"bg-surface text-ink"),children:Wt[r]},r))})]})]})}),e.jsx(ot,{rows:o.rows,error:o.error,pending:o.pending,refusal:o.decisionRefusal,onDecide:o.onDecide,onRetry:o.onRetry,nowSeconds:o.nowSeconds,networkNames:new Map((n?.networks??[]).map(r=>[r.id,r.label]))}),s.kind==="loading"&&e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[e.jsx(Re,{className:"h-4 w-64"}),e.jsx(Re,{className:"min-h-40 w-full flex-1"})]}),s.kind==="error"&&e.jsxs(fe,{variant:"warning",className:"flex-col items-start gap-2",children:[e.jsx("p",{children:s.message}),e.jsx(U,{variant:"secondary",size:"sm",onClick:g,className:"w-fit",children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),s.kind==="empty"&&e.jsx("div",{"data-glass-block":"",className:"flex min-h-0 flex-1 items-center justify-center rounded-lg border border-hairline bg-surface p-6",children:e.jsxs("div",{className:"flex flex-col items-start gap-3",children:[e.jsx("h2",{className:"text-heading text-ink",children:a("ui.mesh.mesh_page.no_network_on_this_device")}),e.jsx("p",{className:"max-w-140 text-body-sm text-ink-muted",children:a("ui.mesh.mesh_page.this_device_is_not_in_any_network")}),e.jsx("code",{className:"rounded-sm bg-sunken px-2 py-1 font-mono text-meta text-ink",children:"lop network init <name>"}),e.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.a_network_appears_here_once_this_device")})]})}),s.kind==="ready"&&n&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex min-h-[22rem] flex-1 gap-4",children:[e.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col gap-3",children:[e.jsxs("div",{id:z,className:"text-meta text-ink-muted","data-mesh-summary":"",children:[e.jsx("span",{children:Y}),e.jsx(zt,{revoked:n.revoked})]}),u&&e.jsx(fe,{variant:"warning",children:e.jsx("p",{children:u})}),v&&e.jsx(fe,{variant:"warning",children:e.jsx("p",{children:v})}),f&&e.jsx(Ws,{receipt:f.kind==="moved"?{verb:f.verb,detail:f.detail,undo:f.undo}:null,refusal:f.kind==="refused"?f.refusal:null,canWait:f.kind==="refused"&&f.plan!==null,onWait:S,onRecheck:g,onUndo:P,onDismiss:p,pending:E}),B==="canvas"?e.jsx(Et,{graph:n,slots:Z,nowSeconds:l,selectedDeviceId:R,sessions:V.byDevice,sessionTotals:ue,movingSessionId:D,canMove:N,onOpenDevice:J,onAskMove:c,onDropRefused:h,onShowAllSessions:J,summaryId:z}):e.jsx(Ot,{graph:n,nowSeconds:l,selectedDeviceId:R,sessions:V.byDevice,selfLabel:j,canMove:N,onSelect:J,onMove:i,onInvite:M,onRemove:ne})]}),le&&e.jsx(At,{device:le,sessions:V.byDevice.get(le.id)??{rows:[],shown:[],hidden:0},sessionTotal:ue.get(le.id)??0,nowSeconds:l,canMove:N,canInvite:s.kind==="ready",movingSessionId:D,destinationsFor:r=>es(n,r,j),onClose:()=>O(null),onMove:i,onInvite:r=>M({deviceId:r.id,deviceLabel:r.label}),onRemoveMember:(r,b)=>{const A=n.networks.find(H=>H.id===b);ne({networkId:b,networkLabel:A?.label??b,deviceId:r.id,deviceLabel:r.label})},onShowInList:r=>{J(r),w("list")}})]})}),e.jsx(Fs,{open:d!==null,plan:d?.plan??qt,alternatives:d?.alternatives??[],risky:d?.risky??!1,busy:E,onCancel:y,onChoose:I}),C&&e.jsx(qs,{open:C.open,options:C.options,deviceId:C.deviceId,deviceLabel:C.deviceLabel,onClose:T,onInvite:k,pending:de,receipt:te,refusal:$}),K&&e.jsx(Bs,{open:K.open,networkLabel:K.networkLabel,deviceLabel:K.deviceLabel,onClose:ce,onConfirm:ae,pending:ie,refusal:q,removed:re})]})},qt={sessionId:"",to:"",keep:!1,verb:"",waitS:0,lost:null},Qt=({initialPresentation:s})=>{F();const t=os(),n=_e(t.data,"peers")==="enabled",l=_e(t.data,"session_transfer")==="enabled",m=Ys(n,{stamp:()=>ke.getState().beginAnswer()}),u=Gs(n),g=Us(n,{poll:!1,stamp:()=>ke.getState().beginAnswer()}),o=x.useMemo(()=>({peers:m,networks:u}),[m,u]),_=Ks(o),v=Vs(o),j=Xs(),D=_e(t.data,"approvals")==="enabled",N=Zs(n&&D,{poll:!1}),d=Js(),c=d.isError?{approvalId:d.variables?.approvalId??null,...Qs(d.error)}:null,h=x.useMemo(()=>Math.floor((N.dataUpdatedAt||Date.now())/1e3),[N.dataUpdatedAt]),I=ke(w=>w.settlePlacement),y=et(),E=st(),[f,p]=x.useState(null),[S,P]=x.useState(null),[C,M]=x.useState(null),[k,T]=x.useState(null),[de,te]=x.useState(null),[$,K]=x.useState(null),[ne,ae]=x.useState(null),ce=x.useMemo(()=>{const w=Math.max(m.dataUpdatedAt,u.dataUpdatedAt);return Math.floor((w||Date.now())/1e3)},[m.dataUpdatedAt,u.dataUpdatedAt]),ie=x.useCallback(()=>{m.refetch(),u.refetch(),g.refetch()},[m,u,g]),q=x.useCallback((w,R)=>{p(null);const O={sessionId:w.sessionId,to:w.to,keep:w.keep,waitS:R??w.waitS};j.mutate(O,{onSuccess:Y=>{if(Y.kind==="moved"){const{receipt:z}=Y;I(w.sessionId,z);const Z=z.locality==="local"?a("ui.mesh.mesh_drop.this_device"):v?.devices.find(V=>V.id===z.owner_device)?.label??z.owner_device;P({kind:"moved",verb:z.mode==="keep"?a("ui.mesh.mesh_page.copied"):a("ui.mesh.mesh_page.moved"),detail:z.mode==="keep"?a("ui.mesh.mesh_page.copy_receipt",{destination:Z,suffix:z.new_session_id.slice(-6)}):a("ui.mesh.mesh_page.move_receipt",{destination:Z,retirement:z.source_retired?a("ui.mesh.mesh_page.the_copy_here_is_gone"):""}),undo:z.mode==="keep"?{sessionId:z.new_session_id,to:"local",keep:!1,verb:a("ui.mesh.mesh_page.bring_copy_back",{device:Z}),waitS:0,lost:tt(Z,a("ui.mesh.mesh_drop.this_device"))}:null});return}P({kind:"refused",refusal:Y.refusal,plan:w})},onError:()=>{P({kind:"refused",refusal:{code:"move_failed",sentence:a("ui.mesh.mesh_page.the_move_could_not_be_sent_nothing"),status:null,unconfirmed:!1},plan:w})}})},[v,j,I]),re=x.useMemo(()=>{if(!v)return[];const w=C?.deviceId,R=w?v.devices.find(O=>O.id===w):void 0;return v.networks.filter(O=>R?!R.memberships.some(Y=>Y.networkId===O.id):!0).map(O=>({id:O.id,label:O.label}))},[v,C]);if(!n)return e.jsx(ds,{to:"/chat",replace:!0});const B=_.kind==="ready"?m.error?me(m.error):u.error?me(u.error):null:null;return e.jsx(Ft,{initialPresentation:s,state:_,graph:v,nowSeconds:ce,checking:m.isFetching||u.isFetching,staleError:B,onRetry:ie,approvals:{rows:N.data??[],error:N.isError?nt(N.error):null,pending:d.isPending?d.variables??null:null,decisionRefusal:c,onDecide:(w,R)=>d.mutate({approvalId:w,decision:R}),onRetry:()=>void N.refetch(),nowSeconds:h},sessions:g.data?.rows??[],movingSessionId:j.isPending?j.variables?.sessionId??null:null,sessionError:g.isError?me(g.error):null,selfLabel:v?.devices.find(w=>w.state==="self")?.label??a("ui.mesh.mesh_drop.this_device"),canMove:l,pendingMove:f,onAskMove:p,onDropRefused:w=>P({kind:"refused",refusal:{code:w.code,sentence:w.sentence,reach:w.reach,status:null,unconfirmed:!1},plan:w.plan}),onChooseMove:w=>q(w),onCancelMove:()=>p(null),moveBusy:j.isPending,moveReport:S,onDismissReport:()=>P(null),onWaitForIdle:()=>{S?.kind!=="refused"||!S.plan||q(S.plan,Bt)},onUndoCopy:()=>{S?.kind!=="moved"||!S.undo||p({plan:S.undo,alternatives:[],risky:!1})},invite:C===null?null:{open:!0,deviceId:C.deviceId,deviceLabel:C.deviceLabel,options:re},onOpenInvite:w=>{T(null),te(null),M(w)},onInvite:w=>{y.mutate(w,{onSuccess:R=>T(R),onError:R=>te({code:"invite_refused",sentence:me(R),status:null,unconfirmed:!1})})},onCloseInvite:()=>M(null),inviteBusy:y.isPending,inviteReceipt:k,inviteRefusal:de,remove:$===null?null:{open:!0,networkId:$.networkId,networkLabel:$.networkLabel,deviceId:$.deviceId,deviceLabel:$.deviceLabel},onOpenRemove:w=>{ae(null),K(w)},onRemove:w=>{$&&E.mutate({networkId:$.networkId,deviceId:$.deviceId,confirm:w},{onSuccess:R=>ae(R)})},onCloseRemove:()=>K(null),removeBusy:E.isPending,removeRefusal:E.isError?{code:"remove_refused",sentence:me(E.error),status:null,unconfirmed:!1}:null,removed:ne})},Bt=300;export{Qt as MeshPage,Ft as MeshSurface,Qt as default};