local-operator-ui 0.42.2 → 0.42.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main/index.js +104 -33
- package/out/preload/index.js +39 -1
- package/out/renderer/assets/{_basePickBy-BA9uepHv.js → _basePickBy-C-uJ_4_H.js} +1 -1
- package/out/renderer/assets/{_baseUniq-CVACH15m.js → _baseUniq-DsbREs0d.js} +1 -1
- package/out/renderer/assets/{agent-details-page-xNTNJ7kP.js → agent-details-page-DqircW79.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-B-zE3Ln0.js → agent-hub-page-DW0ykyen.js} +1 -1
- package/out/renderer/assets/agents-page-DfghpQsj.js +7 -0
- package/out/renderer/assets/{approvalsOverlay-BmSmF8Ga.js → approvalsOverlay-Bb-_GvbK.js} +1 -1
- package/out/renderer/assets/{arc-DYIy54Kn.js → arc-BQFx264l.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CmfaKw-J.js → architectureDiagram-IEHRJDOE-CwEdIQqF.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-bQf90tJr.js → blockDiagram-JOT3LUYC-D2fu5TLW.js} +1 -1
- package/out/renderer/assets/{book-open-iGajLTwQ.js → book-open-CXRG7kmQ.js} +1 -1
- package/out/renderer/assets/browser-page-BbCJ4Kqg.js +1 -0
- package/out/renderer/assets/{browser-webauthn-prompt-DX5l4JNA.js → browser-webauthn-prompt-BG_diNFj.js} +1 -1
- package/out/renderer/assets/{building-2-bjja6JTC.js → building-2-BSZ0T67J.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-BxIFIYVW.js → c4Diagram-VJAJSXHY-B4F6kAAa.js} +1 -1
- package/out/renderer/assets/channel-DlvTVSBZ.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-C2LQ_mlD.js → chunk-4BMEZGHF-Gvas_grr.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-BKH53MbC.js → chunk-A2AXSNBT-W3cPWgPw.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-CuB5dlAL.js → chunk-AEK57VVT-DzoSrMRs.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-CECeg3Wn.js → chunk-D6G4REZN-BkZWDlS1.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-D-zkJWYc.js → chunk-RZ5BOZE2-gmzFxQwc.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-DstteBuH.js → chunk-XZIHB7SX-BrbU5SuY.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-D6tpardR.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-D6tpardR.js +1 -0
- package/out/renderer/assets/clone-DAFDyYLt.js +1 -0
- package/out/renderer/assets/{console-mirror-gqAdwBWl.js → console-mirror-EdmGKGTJ.js} +1 -1
- package/out/renderer/assets/{consoleCapture-BQQVRcXT.js → consoleCapture-DxGNu1ME.js} +1 -1
- package/out/renderer/assets/{conversation-input-sync-grry80zS.js → conversation-input-sync-DwcHJyBH.js} +253 -253
- package/out/renderer/assets/{dagre-OKDRZEBW-D6RBxeJd.js → dagre-OKDRZEBW-DYuthQOj.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV--xUREIPn.js → diagram-SSKATNLV-BloU54ZK.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-BYjZ86BM.js → diagram-VNBRO52H-BGuheJEu.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-CmajcoOO.js → erDiagram-Q7BY3M3F-COWp-n7n.js} +1 -1
- package/out/renderer/assets/{error-boundary-DfTTKe65.js → error-boundary-DRSRl09t.js} +1 -1
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-CtQab7ap.js → flowDiagram-4HSFHLVR-D3etxTbr.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-CuKez3d0.js → ganttDiagram-APWFNJXF-C85T-bBk.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-D9QOaWwN.js → gitGraphDiagram-7IBYFJ6S-DR8rSdMP.js} +1 -1
- package/out/renderer/assets/{graph-Ccifoj7G.js → graph-9RwMEpzp.js} +1 -1
- package/out/renderer/assets/{hash-EZ0d40pW.js → hash-DyArWvVk.js} +1 -1
- package/out/renderer/assets/{heart-Bo3ZudoI.js → heart-wR8xxfkl.js} +1 -1
- package/out/renderer/assets/{index-CLJ4-1jd.js → index-B6JvVM0y.js} +1 -1
- package/out/renderer/assets/{index-Dw4hyitu.js → index-C-q9Saz2.js} +1 -1
- package/out/renderer/assets/index-DH2Wdo12.css +1 -0
- package/out/renderer/assets/index-XnmeTeQi.js +830 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-B0dF0UUr.js +2 -0
- package/out/renderer/assets/{installer-B7DhTrnG.js → installer-DLt9j6P5.js} +1 -1
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-YTjOSo-b.js → journeyDiagram-U35MCT3I-Bi5S21jG.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-C1UmNEaT.js → kanban-definition-NDS4AKOZ-3yXRNVxM.js} +1 -1
- package/out/renderer/assets/{layout-CWPZ7noV.js → layout-V9S6bEAP.js} +1 -1
- package/out/renderer/assets/{legacy-agents-page-ikCownYN.js → legacy-agents-page-DlXcMI3d.js} +8 -8
- package/out/renderer/assets/{library-page-DBSSkZvn.js → library-page-Z2ycLLgX.js} +3 -3
- package/out/renderer/assets/{mermaid.core-B_nZt27J.js → mermaid.core-1ZZxL94e.js} +5 -5
- package/out/renderer/assets/mesh-page-VN5YlOig.js +1 -0
- package/out/renderer/assets/messages-UU62OcMx.js +3 -0
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-D-Y3n0RT.js → mindmap-definition-ALO5MXBD-BqNXJ5iP.js} +1 -1
- package/out/renderer/assets/{mini-BdCfujvn.js → mini-BpZoZmwc.js} +1 -1
- package/out/renderer/assets/{notebook-pen-BvZPJ7Yv.js → notebook-pen-BRGyo6qe.js} +1 -1
- package/out/renderer/assets/{org-access-C1u_2VVY.js → org-access-DL4sfC5o.js} +1 -1
- package/out/renderer/assets/{org-surface-gate-CyIC6H59.js → org-surface-gate-DzVZOCgc.js} +1 -1
- package/out/renderer/assets/{page-header-C9IFgiIB.js → page-header-CsJwSRXG.js} +1 -1
- package/out/renderer/assets/path-utils-Bslmu3x5.js +58 -0
- package/out/renderer/assets/{pieDiagram-IB7DONF6-BJ2PZoWa.js → pieDiagram-IB7DONF6-FSpbUZa3.js} +1 -1
- package/out/renderer/assets/{projects-page-CwwrR-j7.js → projects-page-CyfiN3pO.js} +1 -1
- package/out/renderer/assets/{publication-validation-DAffiuLy.js → publication-validation-C5mxv51G.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-Dpr0N86G.js → quadrantDiagram-7GDLP6J5-Dl1CxU0W.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-CwLLK6fK.js → radar-MK3ICKWK-BSuQo5KN.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-DN7K_uGZ.js → radient-auth-buttons-BZe_OZtZ.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-LI2fP6nJ.js → requirementDiagram-KVF5MWMF-t8Dz-7Kp.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-uUOWgFO1.js → sankeyDiagram-QLVOVGJD-q0DLuZVj.js} +1 -1
- package/out/renderer/assets/{schedules-page-Cf1PQGDR.js → schedules-page-6TSgJ8gq.js} +1 -1
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-DperbqVG.js → sequenceDiagram-X6HHIX6F-CXU3BFHj.js} +1 -1
- package/out/renderer/assets/{settings-page-CrnST8YF.js → settings-page-Cr3wqA95.js} +3 -3
- package/out/renderer/assets/{smartart-qEAWtDlk.js → smartart-sc0B4J9V.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-RvRbNkSX.js → stateDiagram-DGXRK772-BSXJAxkU.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-TeEHL_JN.js +1 -0
- package/out/renderer/assets/{team-bridge-page-BgcLwc5M.js → team-bridge-page-1N2Nu5OI.js} +1 -1
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-CeQ3AsWj.js → timeline-definition-BDJGKUSR-BJBU8NFV.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-C_zDZ6-1.js → use-download-agent-mutation-DSNRIoxY.js} +1 -1
- package/out/renderer/assets/{use-session-snapshot-BMDB4uZ0.js → use-session-snapshot-Cv3MIHrU.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-C6-d6maF.js → xychartDiagram-VJFVF3MP-CFJkfmsL.js} +1 -1
- package/out/renderer/browser-approvals-overlay.html +2 -2
- package/out/renderer/console-capture.html +6 -6
- package/out/renderer/index.html +8 -8
- package/out/renderer/installer.html +5 -5
- package/out/renderer/mini.html +8 -8
- package/package.json +3 -3
- package/out/renderer/assets/agents-page-BeZQ1S7f.js +0 -7
- package/out/renderer/assets/browser-page-B63Z8oE2.js +0 -1
- package/out/renderer/assets/channel-Blax8LQd.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-DA1IQG_V.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-DA1IQG_V.js +0 -1
- package/out/renderer/assets/clone-mVVuLCMS.js +0 -1
- package/out/renderer/assets/index-ByZv232u.css +0 -1
- package/out/renderer/assets/index-LBzSehKd.js +0 -830
- package/out/renderer/assets/infoDiagram-PH2N3AL5-DrTRSok5.js +0 -2
- package/out/renderer/assets/mesh-page-CgjL4HIw.js +0 -1
- package/out/renderer/assets/messages-Bswe4yCX.js +0 -3
- package/out/renderer/assets/path-utils-DC6z9Ymz.js +0 -58
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-fK1yLl-v.js +0 -1
- /package/out/renderer/assets/{index-DXk6NfLu.js → index-C4JJ-uY-.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as x,j as e,c as L}from"./index-C4JJ-uY-.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-Bslmu3x5.js";import{P as cs}from"./page-header-CsJwSRXG.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-DRSRl09t.js";import{t as a}from"./messages-UU62OcMx.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-XnmeTeQi.js";import{ax as Ce,ay as Se,az as at,aA as Ze}from"./conversation-input-sync-DwcHJyBH.js";import"./console-mirror-EdmGKGTJ.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-left","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-left 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 pr-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-left 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};
|