local-operator-ui 0.36.5 → 0.36.7

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 (96) hide show
  1. package/out/main/index.js +3659 -13
  2. package/out/renderer/assets/{_basePickBy-CxqDmmHv.js → _basePickBy-Cp4-k2Ra.js} +1 -1
  3. package/out/renderer/assets/{_baseUniq-DZ5q-4MO.js → _baseUniq-SW_cXbV_.js} +1 -1
  4. package/out/renderer/assets/{agent-details-page-BBaVqJ-k.js → agent-details-page-N3zxLs5x.js} +1 -1
  5. package/out/renderer/assets/{agent-hub-page-TSnDpkEN.js → agent-hub-page-BlZWarvE.js} +2 -2
  6. package/out/renderer/assets/agents-page-C7c-PG8v.js +7 -0
  7. package/out/renderer/assets/{arc-Cj5oOdNk.js → arc-CH4PDipB.js} +1 -1
  8. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-BLG-Rki4.js → architectureDiagram-IEHRJDOE-YJo8Ggxb.js} +1 -1
  9. package/out/renderer/assets/{arrow-up-B9XooY3R.js → arrow-up-BB9CxXVA.js} +1 -1
  10. package/out/renderer/assets/{blockDiagram-JOT3LUYC-DJkmqNYL.js → blockDiagram-JOT3LUYC-rOqQnp0E.js} +1 -1
  11. package/out/renderer/assets/{book-open-CSxa_YmK.js → book-open-DkVxCJ61.js} +1 -1
  12. package/out/renderer/assets/browser-page-Dr5j9bQE.js +1 -0
  13. package/out/renderer/assets/{browser-webauthn-prompt-CuaS1ZyY.js → browser-webauthn-prompt-Dna4BiM9.js} +1 -1
  14. package/out/renderer/assets/{building-2-BgiPDMo-.js → building-2-CavXM_-r.js} +1 -1
  15. package/out/renderer/assets/{c4Diagram-VJAJSXHY-sgmFcnZ9.js → c4Diagram-VJAJSXHY-DEPLadlT.js} +1 -1
  16. package/out/renderer/assets/channel-BUsgjri2.js +1 -0
  17. package/out/renderer/assets/{chunk-4BMEZGHF-BBWXJqFy.js → chunk-4BMEZGHF-klJwtJH4.js} +1 -1
  18. package/out/renderer/assets/{chunk-A2AXSNBT-q8UkjaB1.js → chunk-A2AXSNBT-DRT8OSGB.js} +1 -1
  19. package/out/renderer/assets/{chunk-AEK57VVT-qKzkVDpt.js → chunk-AEK57VVT-kqK_zO-a.js} +1 -1
  20. package/out/renderer/assets/{chunk-D6G4REZN-Cnve3iPN.js → chunk-D6G4REZN-CJZaq5OR.js} +1 -1
  21. package/out/renderer/assets/{chunk-RZ5BOZE2-CXlNa1ns.js → chunk-RZ5BOZE2-D4tpPnZf.js} +1 -1
  22. package/out/renderer/assets/{chunk-XZIHB7SX-CH_n0WpC.js → chunk-XZIHB7SX-D4Kppo6Q.js} +1 -1
  23. package/out/renderer/assets/classDiagram-GIVACNV2-YCOFP_Sl.js +1 -0
  24. package/out/renderer/assets/classDiagram-v2-COTLJTTW-YCOFP_Sl.js +1 -0
  25. package/out/renderer/assets/clone-DVoefRFN.js +1 -0
  26. package/out/renderer/assets/{console-mirror-Cb5yLix0.js → console-mirror-BOyWikJU.js} +1 -1
  27. package/out/renderer/assets/{consoleCapture-DTUn8btA.js → consoleCapture-Ctr4ZgwO.js} +1 -1
  28. package/out/renderer/assets/{conversation-input-sync-BWiC2ZNQ.js → conversation-input-sync-DdFRR8Sk.js} +291 -261
  29. package/out/renderer/assets/{dagre-OKDRZEBW-CcLBj9dR.js → dagre-OKDRZEBW-ZzTMDgQF.js} +1 -1
  30. package/out/renderer/assets/{diagram-SSKATNLV-BnBuzUHq.js → diagram-SSKATNLV-D-OEK7di.js} +1 -1
  31. package/out/renderer/assets/{diagram-VNBRO52H-B4nIkHdB.js → diagram-VNBRO52H-CM6lMapK.js} +1 -1
  32. package/out/renderer/assets/{erDiagram-Q7BY3M3F-D5sW3c1J.js → erDiagram-Q7BY3M3F-2khnybxo.js} +1 -1
  33. package/out/renderer/assets/{error-boundary-DxVWsYpy.js → error-boundary-B2fmvLyi.js} +2 -2
  34. package/out/renderer/assets/{flowDiagram-4HSFHLVR-q9AjGiBl.js → flowDiagram-4HSFHLVR-PmXhc4g8.js} +1 -1
  35. package/out/renderer/assets/{ganttDiagram-APWFNJXF-y0u1sOsY.js → ganttDiagram-APWFNJXF-DXqSjI8D.js} +1 -1
  36. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-Av-mS9kO.js → gitGraphDiagram-7IBYFJ6S-CE0xYGI6.js} +1 -1
  37. package/out/renderer/assets/{graph-D0BldG7q.js → graph-ydqZFY1l.js} +1 -1
  38. package/out/renderer/assets/{hash-yZIrwUE4.js → hash-Dc3JifaZ.js} +1 -1
  39. package/out/renderer/assets/{index-FVvzpk9i.js → index-BHi1lUGF.js} +1 -1
  40. package/out/renderer/assets/{index-C6Pn32aB.js → index-BoPP-Dip.js} +1 -1
  41. package/out/renderer/assets/index-DY17TKlm.js +824 -0
  42. package/out/renderer/assets/index-Doo51Mbi.js +57 -0
  43. package/out/renderer/assets/index-JreDTE2U.css +1 -0
  44. package/out/renderer/assets/{infoDiagram-PH2N3AL5-CLYc4y61.js → infoDiagram-PH2N3AL5-DOZ3-Qro.js} +1 -1
  45. package/out/renderer/assets/{installer-D3I6JJnd.js → installer-DWToCmOf.js} +1 -1
  46. package/out/renderer/assets/{journeyDiagram-U35MCT3I-o0YPT9KT.js → journeyDiagram-U35MCT3I-DWis6Sd2.js} +1 -1
  47. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-B1WRSBgd.js → kanban-definition-NDS4AKOZ-B9e7wrf9.js} +1 -1
  48. package/out/renderer/assets/{layout-6qCmOzEc.js → layout-CAcs3Q5o.js} +1 -1
  49. package/out/renderer/assets/{legacy-agents-page-DlYBCvv7.js → legacy-agents-page-DrGkO870.js} +6 -6
  50. package/out/renderer/assets/{library-page-CjhrFVEo.js → library-page-J-oYtewu.js} +16 -16
  51. package/out/renderer/assets/{mermaid.core-DePJ3QoR.js → mermaid.core-BKDqOsvz.js} +5 -5
  52. package/out/renderer/assets/mesh-page-CHZ2qVtJ.js +1 -0
  53. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-BgpnkVkf.js → mindmap-definition-ALO5MXBD-B8ubJP7r.js} +1 -1
  54. package/out/renderer/assets/{mini-Csq--Wlq.js → mini-CSnAsFlT.js} +1 -1
  55. package/out/renderer/assets/{notebook-pen-Bt8ewXE9.js → notebook-pen-eF7NwmC0.js} +1 -1
  56. package/out/renderer/assets/{org-access-BzNFiBDx.js → org-access-CJDIOfTA.js} +1 -1
  57. package/out/renderer/assets/{org-surface-gate-CIJNYTYB.js → org-surface-gate-BFLSYyz1.js} +1 -1
  58. package/out/renderer/assets/{page-header-DM0jhCF2.js → page-header-BMDtYfV0.js} +1 -1
  59. package/out/renderer/assets/{pieDiagram-IB7DONF6-WDOJ33Hk.js → pieDiagram-IB7DONF6-C4Lho4yQ.js} +1 -1
  60. package/out/renderer/assets/{projects-page-CcNU6_X8.js → projects-page-CNUJUnDM.js} +7 -7
  61. package/out/renderer/assets/{publication-validation-BcIDRO_Q.js → publication-validation-5oR6aluM.js} +1 -1
  62. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-qxT7WPZD.js → quadrantDiagram-7GDLP6J5-DauXMmcp.js} +1 -1
  63. package/out/renderer/assets/{radar-MK3ICKWK-xGtvrCw2.js → radar-MK3ICKWK-_FJ6NjKi.js} +1 -1
  64. package/out/renderer/assets/{radient-auth-buttons-D9Y-bems.js → radient-auth-buttons-B4LrTMwy.js} +1 -1
  65. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CX_IrGLA.js → requirementDiagram-KVF5MWMF-BBMnxRwM.js} +1 -1
  66. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-DV1ZdXxS.js → sankeyDiagram-QLVOVGJD-ZAgJNulV.js} +1 -1
  67. package/out/renderer/assets/{schedules-page-Ce0-woL0.js → schedules-page-BDxSAX-g.js} +1 -1
  68. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-DKqwb67S.js → sequenceDiagram-X6HHIX6F-ixhBbax-.js} +1 -1
  69. package/out/renderer/assets/{settings-page-JTZ4QBJW.js → settings-page-DpSl6AZf.js} +11 -11
  70. package/out/renderer/assets/{smartart-BNasG3UO.js → smartart-CsYIjueA.js} +1 -1
  71. package/out/renderer/assets/{stateDiagram-DGXRK772-B7kjPArX.js → stateDiagram-DGXRK772-Cyo1D1sd.js} +1 -1
  72. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BylkQbLa.js +1 -0
  73. package/out/renderer/assets/{tags-input-chips-Cv0lsEDt.js → tags-input-chips-DeSDZmGf.js} +1 -1
  74. package/out/renderer/assets/{team-bridge-page-XaIwS8Qz.js → team-bridge-page-BnsNoiEd.js} +1 -1
  75. package/out/renderer/assets/{timeline-definition-BDJGKUSR-84zVvGlx.js → timeline-definition-BDJGKUSR-dHKNC0_-.js} +1 -1
  76. package/out/renderer/assets/{ui-preferences-store-D0NZNchc.js → ui-preferences-store-CFbBU1td.js} +1 -1
  77. package/out/renderer/assets/{use-download-agent-mutation-DeuSzNhw.js → use-download-agent-mutation-Du8Okjj5.js} +2 -2
  78. package/out/renderer/assets/{use-memberships-query-yUmGp-Y1.js → use-memberships-query-C0ico4nv.js} +1 -1
  79. package/out/renderer/assets/{use-session-snapshot-D70s2vL7.js → use-session-snapshot-hoogT7-L.js} +1 -1
  80. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-BhpruKGF.js → xychartDiagram-VJFVF3MP-y9FbutsK.js} +1 -1
  81. package/out/renderer/console-capture.html +5 -5
  82. package/out/renderer/index.html +7 -7
  83. package/out/renderer/installer.html +4 -4
  84. package/out/renderer/mini.html +7 -7
  85. package/package.json +2 -2
  86. package/out/renderer/assets/agents-page-BpAcSHU9.js +0 -7
  87. package/out/renderer/assets/browser-page-C9MH7MXX.js +0 -1
  88. package/out/renderer/assets/channel-Ccp6y6yN.js +0 -1
  89. package/out/renderer/assets/classDiagram-GIVACNV2-DWJzEShu.js +0 -1
  90. package/out/renderer/assets/classDiagram-v2-COTLJTTW-DWJzEShu.js +0 -1
  91. package/out/renderer/assets/clone-PErpKu4z.js +0 -1
  92. package/out/renderer/assets/index-CjToIHDL.js +0 -57
  93. package/out/renderer/assets/index-Ctcid6gL.css +0 -1
  94. package/out/renderer/assets/index-lLn4-su7.js +0 -829
  95. package/out/renderer/assets/mesh-page-BSJFgFCr.js +0 -1
  96. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-BAZmozFm.js +0 -1
@@ -1 +0,0 @@
1
- import{r as g,j as t,t as a,c as L}from"./index-CjToIHDL.js";import{aW as We,aX as ye,aY as et,aZ as qe,a as tt,a_ as be,au as Ce,a$ as st}from"./conversation-input-sync-BWiC2ZNQ.js";import{P as nt}from"./page-header-DM0jhCF2.js";import{u as H,a as G,A as fe,H as at,t as re,h as it,i as rt,k as lt,l as ot,p as Se,q as Me,x as Ee}from"./error-boundary-DxVWsYpy.js";import{G as ce,H as dt,I as ct,J as ut,K as mt,L as ht,M as pt,N as xt,O as ft,Q as gt,R as vt,U as bt,V as _t,W as kt,X as je,Y as wt,Z as ue,_ as yt,$ as jt,a0 as Nt,a1 as Ne,a2 as Fe,a3 as It,a4 as me,a5 as Ye,a6 as Be,a7 as Ct,a8 as xe,a9 as _e,aa as St,ab as Mt,ac as ge,ad as De,ae as Et,af as Dt,ag as ke,ah as Rt,ai as Ue,aj as At,ak as Ge,al as Lt,am as Pt,an as Tt,ao as Ot,ap as $t,aq as zt,ar as Ht,as as Wt,at as qt,au as Ft,av as Yt,aw as Bt,ax as Ut,ay as Gt,az as Kt,aA as Vt,aB as Xt,aC as Zt,aD as Jt,aE as de,aF as Qt}from"./index-lLn4-su7.js";import"./ui-preferences-store-D0NZNchc.js";import"./console-mirror-Cb5yLix0.js";function es(e){return e==="failed"?"text-danger":ce(e)?"text-ink-muted":"text-ink-dim"}function ts(e){return e==="failed"?a("ui.mesh.mesh_approvals_tray.abandon"):a("ui.mesh.mesh_approvals_tray.stop")}function ss(e){switch(e){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 ns=({rows:e,error:s,pending:r,refusal:i,onDecide:d,onRetry:u,nowSeconds:x,networkNames:l})=>{H();const v=r!==null,_=g.useMemo(()=>e.filter(h=>ce(h.state)),[e]),j=g.useMemo(()=>e.filter(h=>!ce(h.state)),[e]),[I,C]=g.useState(!1),o=g.useRef(null),c=g.useRef(null),f=g.useRef(null),N=(h,D)=>{D==="deny"&&_.some(S=>S.approvalId===h&&S.kind==="credential")&&(f.current={id:h,origin:document.activeElement,sawPending:!1}),d(h,D)};g.useLayoutEffect(()=>{const h=f.current;if(!h)return;if(r?.approvalId===h.id&&(h.sawPending=!0),i?.approvalId===h.id){f.current=null;return}const D=e.find(E=>E.approvalId===h.id);if(D?.state==="requested"){!r&&h.sawPending&&(f.current=null);return}if(D?.state==="denied"&&r||(f.current=null,D?.state!=="denied"||document.activeElement!==document.body&&document.activeElement!==h.origin))return;(_.length?o.current?.querySelector('[data-tour-tag="mesh-approval-controls"] button:not(:disabled)'):c.current?.querySelector("button"))?.focus({preventScroll:!0})},[e,r,i,_.length]);const k=j.some(h=>h.state==="failed"),p=j.filter(h=>h.state==="failed").length,M=i!==null&&e.some(h=>h.approvalId===i.approvalId&&(ce(h.state)||I));return _.length===0&&j.length===0&&!s&&!i?null:t.jsxs("section",{ref:o,"aria-label":a("ui.mesh.mesh_approvals_tray.approvals"),"data-tour-tag":"mesh-approvals-tray",className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx(dt,{"aria-hidden":"true",className:"size-4 text-ink-muted"}),t.jsx("h2",{className:"text-body-sm text-ink",children:a("ui.mesh.mesh_approvals_tray.approvals")}),_.length>0&&t.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_approvals_tray.waiting_count",{count:_.length})})]}),s&&t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("p",{className:"min-w-0 flex-1 text-meta text-ink-muted",children:s}),t.jsx(G,{variant:"secondary",size:"sm",onClick:u,children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),_.length>0&&t.jsx("ul",{className:"flex flex-col divide-y divide-hairline",children:_.map(h=>t.jsx(Re,{row:h,pending:r?.approvalId===h.approvalId?r:null,busy:v,refusal:i?.approvalId===h.approvalId?i:null,onDecide:N,nowSeconds:x,networkNames:l},h.approvalId))}),i&&!M&&t.jsx(Ke,{refusal:i}),j.length>0&&t.jsx("div",{ref:c,children:t.jsx(We,{open:I,onOpenChange:C,chevronClassName:"text-ink-dim",className:L(_.length>0&&"border-hairline border-t pt-3"),summary:t.jsxs("span",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[a("ui.mesh.mesh_approvals_tray.settled_approvals"),t.jsxs("span",{className:"text-ink-dim",children:["(",j.length,")"]}),k&&t.jsx("span",{"aria-hidden":"true",className:"size-1.5 rounded-full bg-danger"}),p>0&&t.jsx("span",{className:"text-danger",children:a("ui.mesh.mesh_approvals_tray.failed_count",{count:p})})]}),children:t.jsx("ul",{className:"flex flex-col divide-y divide-hairline","data-tour-tag":"mesh-approvals-records",children:j.map(h=>t.jsx(Re,{row:h,pending:r?.approvalId===h.approvalId?r:null,busy:v,refusal:i?.approvalId===h.approvalId?i:null,onDecide:N,nowSeconds:x,networkNames:l},h.approvalId))})})})]})},Re=({row:e,pending:s,busy:r,refusal:i,onDecide:d,nowSeconds:u,networkNames:x})=>{H();const l=ce(e.state),v=ct(e),_=ut(e,x),j=mt(e,x),I=ht(e),C=pt(e),o=xt(e),c=ft(e.expiresAt,u),f=e.kind==="credential"||e.kind==="unknown",N=f||e.canApproveHere===!1,k=N?[]:ss(e.state),p=gt(e),M=vt(e.state);return t.jsxs("li",{className:"flex flex-col gap-2 py-3 first:pt-0 last:pb-0","data-tour-tag":"mesh-approval-card",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("span",{className:L("text-meta",es(e.state)),children:e.kind==="credential"&&e.state==="approved"?a("ui.mesh.approval.approved_pending_apply"):bt(e.state)}),t.jsx("div",{className:"grow"}),l&&c&&t.jsx("span",{className:"text-meta text-ink-dim",children:e.kind==="credential"?a("ui.mesh.approval.request_window",{remaining:c}):c})]}),t.jsx("p",{className:"text-body-sm text-ink [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-summary",children:l?_:v}),!N&&e.state==="failed"&&t.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")}),l&&N&&t.jsx("p",{className:"text-meta text-ink-muted whitespace-pre-wrap [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-cli-remedy",children:e.approveRemedy||a("ui.mesh.approval.cli_review")}),e.kind==="credential"&&e.state==="approved"&&t.jsx("p",{className:"text-meta text-ink-muted","data-tour-tag":"mesh-approval-apply-hint",children:e.details?.length?a("ui.mesh.approval.approved_apply_hint"):a("ui.mesh.approval.approved_details_missing")}),(p||M)&&t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[p&&t.jsx(G,{variant:"primary",size:"sm",disabled:r,onClick:()=>d(e.approvalId,"approve"),"data-tour-tag":"mesh-approval-approve",children:a("ui.mesh.mesh_approvals_tray.approve")}),M&&t.jsx(G,{variant:"ghost",size:"sm",disabled:r,onClick:()=>d(e.approvalId,"deny"),"data-tour-tag":l?"mesh-approval-deny":"mesh-approval-stop",children:l?a("ui.mesh.mesh_approvals_tray.deny"):ts(e.state)}),s&&t.jsx("span",{className:"text-meta text-ink-dim",children:s.decision==="approve"?a("ui.mesh.mesh_approvals_tray.waiting_for_the_signing_prompt"):a("ui.mesh.mesh_approvals_tray.writing_the_decision")})]}),t.jsxs(We,{chevronClassName:"text-ink-dim",summary:t.jsx("span",{className:"text-meta",children:a("ui.mesh.mesh_approvals_tray.details")}),children:[f&&(e.details?.length?t.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:e.details.map((h,D)=>t.jsx("li",{className:"whitespace-pre-wrap",children:h},`${D}:${h}`))}):t.jsx("p",{className:"text-meta text-ink-muted",children:a("ui.mesh.approval.details_unavailable")})),j.length>0&&t.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(h=>t.jsxs(g.Fragment,{children:[t.jsx("dt",{className:"text-ink-muted",children:h.term}),t.jsx("dd",{children:h.consequence})]},h.term))}),(I||C)&&t.jsxs("p",{className:"text-meta text-ink-muted",children:[I&&t.jsx("span",{children:I}),I&&C&&t.jsx("span",{children:" · "}),C&&t.jsx("span",{className:"font-mono",children:C})]}),o&&t.jsx("p",{className:"text-meta text-ink-dim",children:o}),k.length>0&&t.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:k.map(h=>t.jsxs(g.Fragment,{children:[t.jsx("dt",{className:"text-ink-muted",children:h.term}),t.jsx("dd",{className:"text-ink-muted",children:h.text})]},h.term))})]}),i&&t.jsx(Ke,{refusal:i})]})},Ke=({refusal:e})=>(H(),t.jsx(fe,{variant:"warning",className:"text-meta","data-tour-tag":"mesh-approval-refusal",children:t.jsxs("span",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[t.jsx("span",{className:"min-w-0 flex-1",children:e.sentence}),t.jsx("span",{className:"shrink-0 font-mono text-ink-dim",children:e.code})]})})),as=4,ve={kind:"idle"};function is(e){switch(e.kind){case"dragging":case"settling":return e.payload.session.id;case"pressing":return null;default:return null}}function te(e,s){switch(s.kind){case"press":return e.kind!=="idle"?e:{kind:"pressing",payload:s.payload,originX:s.x,originY:s.y,pointerId:s.pointerId};case"move":return e.kind==="pressing"?Math.max(Math.abs(s.x-e.originX),Math.abs(s.y-e.originY))<as?e:{kind:"dragging",payload:e.payload,x:s.x,y:s.y,target:s.target,pointerId:e.pointerId}:e.kind==="dragging"?{...e,x:s.x,y:s.y,target:s.target}:e;case"release":return e.kind==="dragging"?{kind:"settling",payload:e.payload,target:e.target}:e.kind==="pressing"?ve:e;case"cancel":case"settled":return ve;default:return e}}const rs=({edges:e,geometry:s,selectedDeviceId:r})=>t.jsx("svg",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0 overflow-visible",width:s.bounds.width,height:s.bounds.height,children:e.map(i=>{const d=s.networks.get(i.networkId),u=s.devices.get(i.deviceId);if(!d||!u)return null;const x=r!==null&&i.deviceId===r;return t.jsx("path",{"data-mesh-edge":i.key,d:_t(d,u),fill:"none",strokeWidth:x?2:1.5,strokeDasharray:i.active?void 0:"4 4",className:x?"stroke-ink":"stroke-ink-dim"},i.key)})}),ls={self:"border-l-hairline",reached:"border-l-hairline",unanswered:"border-l-warning","not-attempted":"border-l-hairline",unknown:"border-l-hairline"};function os(e){return e.suspect?"border-l-danger":ls[ue(e)]}const ds={self:"ring-2 ring-accent",reachable:null,unreachable:null,suspect:null},cs={accept:"border-accent bg-accent-wash",refuse:"border-warning"};function us(e,s,r){return[e.label,Be(e,s),r].filter(Boolean).join(", ")}function se(e){return e.name.trim()||e.id.slice(-6)}function Ve(e,s,r){if(r!=="reached"&&r!=="self"){const i=me(r);return e.unreachable_reason?`${i} (${e.unreachable_reason})`:i}return e.live_state.trim()?e.live_state.trim():e.locality==="local"?a("ui.mesh.mesh_drop.on_this_device"):a("ui.mesh.mesh_node.on_device",{device:s})}const ms={resting:"border-l-2 border-l-hairline",attention:"border-l-2 border-l-warning"},hs=({network:e,x:s,y:r,refused:i})=>(H(),t.jsxs("li",{"data-mesh-network":e.id,"data-mesh-network-refused":i?"true":void 0,"data-glass-block":"",className:L("absolute flex items-center gap-2 rounded-md border bg-elevated px-3",i?"border-warning":"border-hairline"),style:{left:s,top:r,width:je,height:kt},children:[t.jsx(ye,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block truncate text-body-sm text-ink",children:e.label}),t.jsxs("span",{title:a("ui.mesh.mesh_list.epoch",{epoch:e.epoch}),className:"block truncate text-meta text-ink-dim",children:[a("ui.mesh.mesh_graph.device_count",{count:e.memberCount}),e.revokedCount>0?a("ui.mesh.mesh_list.revoked_count",{count:e.revokedCount}):""]})]})]})),ps=({device:e,x:s,y:r,nowSeconds:i,selected:d,sessions:u,sessionTotal:x,dropState:l,movingSessionId:v,draggedSessionId:_,onOpen:j,onChipPointerDown:I,onChipClick:C,onShowAllSessions:o})=>{H();const{activity:c}=wt(e,u.rows),f=c==="working",N=us(e,i,f?"working":null),k=ue(e);return t.jsxs("li",{"data-mesh-device":e.id,"data-mesh-state":e.state,"data-mesh-drop":l??void 0,"aria-current":d?"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",d&&"border-y-ink border-r-ink bg-row-selected",os(e),ds[e.state],l&&cs[l]),style:{left:s,top:r,width:je,height:yt},children:[t.jsxs("button",{type:"button","data-mesh-device-open":e.id,"data-mesh-reach":k,"aria-label":N,title:Nt(e),onClick:()=>j(e.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:jt},children:[t.jsxs("span",{className:"flex w-full min-w-0 items-center gap-2",children:[t.jsx(et,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),t.jsx("span",{className:"min-w-0 flex-1 truncate text-body-sm text-ink",children:e.label}),e.suspect&&t.jsx(Ne,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"})]}),t.jsxs("span",{className:"flex w-full min-w-0 items-baseline gap-1",children:[t.jsx("span",{className:"w-3 shrink-0 font-mono text-body-sm text-ink tabular-nums",children:e.sessionCount??"–"}),t.jsx("span",{className:L("min-w-0 truncate text-meta",e.sessionCount===null?"text-ink-dim":"text-ink-muted"),children:Fe(e.sessionCount)})]}),t.jsxs("span",{"data-mesh-state-line":"",className:"flex w-full min-w-0 items-baseline gap-1.5 text-meta",children:[t.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-ink-dim",children:It[k]}),t.jsx("span",{className:L("shrink-0",Ye[k]),children:me(k)}),f&&t.jsx("span",{"data-mesh-working":"",className:"shrink-0 text-info",children:a("ui.mesh.mesh_node.working")}),e.memberships.length>1&&t.jsx("span",{className:"min-w-0 truncate text-ink-dim",children:a("ui.mesh.mesh_node.memberships",{count:e.memberships.length})})]})]}),t.jsxs("ul",{"aria-label":a("ui.mesh.mesh_node.conversations_on",{device:e.label}),className:L("m-0 flex h-6 list-none items-center gap-1 overflow-hidden px-3",l==="accept"&&"opacity-40"),children:[u.shown.map(p=>t.jsx(xs,{session:p,ownerLabel:e.label,ownerReach:k,ownerReachable:e.reachable,moving:v===p.id,dragging:_===p.id,onPointerDown:I,onClick:()=>C(p)},p.id)),u.hidden>0&&t.jsx("li",{className:"shrink-0",children:t.jsxs("button",{type:"button","data-mesh-more":e.id,onClick:()=>o(e.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:x}),"aria-label":a("ui.mesh.mesh_node.show_all_conversations",{count:x}),children:["+",u.hidden]})})]})]})},xs=({session:e,ownerLabel:s,ownerReach:r,ownerReachable:i,moving:d,dragging:u,onPointerDown:x,onClick:l})=>{H();const v=Ve(e,s,r);return d?t.jsx("li",{role:"status","data-mesh-session":e.id,"data-mesh-moving":"true",children:t.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")})}):t.jsx("li",{className:"min-w-0 flex-1","data-mesh-session-item":e.id,"data-mesh-dragging":u?"true":void 0,children:t.jsx("button",{type:"button","data-mesh-session":e.id,style:{touchAction:"none"},title:`${se(e)} · ${v}`,"aria-label":a("ui.mesh.mesh_node.open_conversation",{conversation:se(e),fact:v,owner:s}),onPointerDown:_=>x(_,e),onClick:()=>l(e),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",ms[Ct(e,i)],u&&"opacity-60","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),children:t.jsx("span",{className:"min-w-0 flex-1 truncate",children:se(e)})})})};function Ae(e){const s=e.trim();if(!s)return null;if(s.startsWith("[")){const i=s.indexOf("]");if(i<=1)return null;const d=s.slice(1,i),u=s.slice(i+1);if(!u)return{host:d,port:null};if(!u.startsWith(":"))return null;const x=Number(u.slice(1));return{host:d,port:Number.isInteger(x)?x:null}}const r=s.lastIndexOf(":");if(r>0){const i=s.slice(r+1);if(/^\d+$/.test(i))return{host:s.slice(0,r),port:Number(i)}}return{host:s,port:null}}function Le(e){const s=e.trim().split(".");if(s.length!==4)return null;for(const r of s)if(!/^\d{1,3}$/.test(r)||Number(r)>255)return null;return`${s[0]}.${s[1]}.${s[2]}`}function fs(e){return`${e}.x`}function gs(e){const s=new Map;for(const i of e.values())for(const d of i)s.set(d,(s.get(d)??0)+1);const r=new Set;for(const[i,d]of s)d>1&&r.add(i);return r}function we(e){return new Set(e.endpoints.map(s=>s.trim()).filter(Boolean))}function vs(e,s){const r=e.filter(o=>o.id!==s),i=e.find(o=>o.id===s)??null,d=new Map;for(const o of e)d.set(o.id,we(o));const u=gs(d),x=new Set;for(const o of i?we(i):[]){if(u.has(o))continue;const c=Ae(o),f=c?Le(c.host):null;f&&x.add(f)}const l=o=>{const c=new Set;for(const f of we(o)){if(u.has(f))continue;const N=Ae(f),k=N?Le(N.host):null;k&&c.add(k)}return c},v=new Map,_=new Map;for(const o of r){const c=bs(o);if(c){v.set(c,[...v.get(c)??[],o.id]);continue}for(const f of l(o))_.set(f,[..._.get(f)??[],o.id])}const j=new Map(e.map((o,c)=>[o.id,c])),I=o=>[...o].sort((c,f)=>(j.get(c)??0)-(j.get(f)??0)),C=[];for(const[o,c]of v)C.push({prefix:o,tier:"declared",deviceIds:I(c),get words(){return a("ui.mesh.mesh_scope.declared")}});for(const[o,c]of _)x.has(o)?C.push({prefix:o,tier:"shared",deviceIds:I(c),get words(){return a("ui.mesh.mesh_scope.shared_with_this_device")}}):c.length>1&&C.push({prefix:o,tier:"probable",deviceIds:I(c),get words(){return a("ui.mesh.mesh_scope.same_prefix")}});return C.sort((o,c)=>o.tier.localeCompare(c.tier)||o.prefix.localeCompare(c.prefix))}function bs(e){for(const s of e.memberships){const r=s.scope.trim();if(r)return r}return""}const Pe={declared:0,shared:1,probable:2};function _s(e,s){const r=new Map;for(const d of e){let u=null;for(const l of d.deviceIds){const v=s.get(l);v!==void 0&&(u===null||v<u.slot)&&(u={id:l,slot:v})}if(u===null)continue;const x=r.get(u.id);x===void 0?r.set(u.id,{slot:u.slot,groups:[d]}):x.groups.push(d)}const i=d=>{let u=-1;for(const x of d.deviceIds){const l=s.get(x);l!==void 0&&l>u&&(u=l)}return u};return[...r.entries()].sort((d,u)=>d[1].slot-u[1].slot).map(([d,u])=>({deviceId:d,groups:u.groups.sort((x,l)=>i(l)-i(x)||Pe[x.tier]-Pe[l.tier]||x.prefix.localeCompare(l.prefix))}))}function ks(e){return new Map(e.map(s=>[s.deviceId,s.groups.length]))}function ws(e){return`${e.tier==="declared"?e.prefix:fs(e.prefix)} · ${e.words}`}const Te=(e,s)=>e.deviceIds.map(r=>s.devices.get(r)).filter(r=>r!==void 0),ys=({stacks:e,geometry:s})=>(H(),t.jsx("div",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0",children:e.map(r=>{const i=r.groups.length,d=new Array(i).fill(0);let u=null;for(let l=i-1;l>=0;l-=1){const v=Te(r.groups[l],s),_=(v.length===0?0:Math.max(...v.map(j=>j.y+j.height)))+xe;u=u===null?_:Math.max(_,u+_e),d[l]=u}const x=s.devices.get(r.deviceId);return r.groups.map((l,v)=>{const _=Te(l,s);if(_.length===0)return null;const j=i-1-v,I=Math.min(..._.map(k=>k.x)),C=Math.max(..._.map(k=>k.x)),c=(x?.y??Math.min(..._.map(k=>k.y)))-xe-St*j,f=l.tier==="declared",N=ws(l);return t.jsx("div",{"data-mesh-scope":`${l.tier}:${l.prefix}`,"data-mesh-scope-level":v,className:L("absolute rounded-lg",l.tier==="probable"?"border border-dashed border-hairline-strong":"border border-control"),style:{left:I-xe-_e*j,top:c,width:C+je-I+(xe+_e*j)*2,height:d[v]-c},children:t.jsx("span",{"data-mesh-scope-label":"",className:L("absolute bottom-full left-1 mb-0.5 whitespace-nowrap text-meta",l.tier==="probable"?"text-ink-dim":"text-ink-muted",f&&"font-medium"),children:N})},`${l.tier}:${l.prefix}`)})})})),Oe=48,$e=1.25,js=.0015,Ns=({graph:e,slots:s,nowSeconds:r,selectedDeviceId:i,sessions:d,sessionTotals:u,movingSessionId:x,canMove:l,onOpenDevice:v,onAskMove:_,onDropRefused:j,onShowAllSessions:I,summaryId:C})=>{H();const o=g.useRef(null),[c,f]=g.useState({width:0,height:0,clipWidth:0,clipHeight:0,left:0,top:0}),[N,k]=g.useState({k:1,tx:0,ty:0}),p=g.useRef(!1),M=g.useRef(!1),h=g.useRef(null),D=g.useMemo(()=>vs(e.devices,e.selfDeviceId),[e.devices,e.selfDeviceId]),S=g.useMemo(()=>_s(D,s.devices),[D,s]),E=g.useMemo(()=>Mt(s,ks(S)),[s,S]),Y=g.useMemo(()=>({selfDeviceId:e.selfDeviceId,devices:new Map(e.devices.map(n=>[n.id,n])),networks:new Map(e.networks.map(n=>[n.id,n]))}),[e]),[y,W]=g.useState(ve),ne=g.useRef({kind:"ground"}),q=g.useCallback((n,m)=>{const b=document.elementFromPoint(n,m),A=b?.closest("[data-mesh-device]");if(A){const V=A.getAttribute("data-mesh-device");if(V)return{kind:"device",deviceId:V}}const z=b?.closest("[data-mesh-network]");if(z){const V=z.getAttribute("data-mesh-network");if(V)return{kind:"network",networkId:V}}return{kind:"ground"}},[]),O=g.useMemo(()=>y.kind!=="dragging"&&y.kind!=="settling"?null:ge(y.payload,y.target,Y),[y,Y]),ae=g.useCallback(n=>{if(!O)return null;if(O.kind==="plan"){const m=y.kind==="dragging"||y.kind==="settling"?y.target:null;return m&&m.kind==="device"&&m.deviceId===n?"accept":null}if(O.kind==="refused"){const m=y.kind==="dragging"||y.kind==="settling"?y.target:null;return m&&m.kind==="device"&&m.deviceId===n?"refuse":null}return null},[O,y]),ie=g.useCallback((n,m)=>{if(!l||n.button!==0)return;M.current=!1;const b=m.locality==="local"?e.selfDeviceId??"":m.owner_device,A=Y.devices.get(b),z={session:m,ownerDeviceId:b,ownerLabel:A?.label??m.owner_device_name};try{n.currentTarget.setPointerCapture(n.pointerId)}catch{}W(V=>te(V,{kind:"press",payload:z,x:n.clientX,y:n.clientY,pointerId:n.pointerId}))},[l,Y,e.selfDeviceId]),le=n=>{if(y.kind==="pressing"||y.kind==="dragging"){const m=q(n.clientX,n.clientY);ne.current=m,W(b=>te(b,{kind:"move",x:n.clientX,y:n.clientY,target:m}));return}he(n)},oe=n=>{if(ee(n),y.kind!=="pressing"&&y.kind!=="dragging")return;if(y.kind==="pressing"){W(b=>te(b,{kind:"cancel"}));return}const m=ge(y.payload,y.target,Y);M.current=!0,W(b=>te(b,{kind:"release"})),m.kind==="plan"?_({plan:m.plan,alternatives:m.alternatives,risky:m.risky}):m.kind==="refused"&&j({code:m.code,sentence:m.sentence,remedy:m.remedy,plan:m.plan??null}),W(b=>te(b,{kind:"settled"}))};g.useEffect(()=>()=>W(ve),[]);const Q=g.useCallback(()=>{k(De(E.bounds,c))},[E.bounds,c]);g.useEffect(()=>{const n=o.current;if(!n)return;const m=()=>{const A=n.getBoundingClientRect();f({width:A.width,height:A.height,clipWidth:n.clientWidth,clipHeight:n.clientHeight,left:A.left,top:A.top})};m();const b=new ResizeObserver(m);return b.observe(n),()=>b.disconnect()},[]),g.useEffect(()=>{p.current||c.width<=0||c.height<=0||(p.current=!0,k(De(E.bounds,c)))},[c,E.bounds]),g.useEffect(()=>{const n=h.current;if(h.current={width:c.width,height:c.height},!n||!p.current||c.width<=0||c.height<=0||c.width>=n.width&&c.height>=n.height||!i)return;const m=E.devices.get(i);m&&k(b=>{const A={width:c.clipWidth,height:c.clipHeight},z=Math.max(0,Math.min(A.width-E.bounds.width*b.k,A.height-E.bounds.height*b.k));return Et(b,m,A,Math.min(Rt,z))})},[c,i,E]);const B=y.kind==="dragging"?{x:y.x-c.left+12,y:y.y-c.top+12}:{x:0,y:0},Z=O?Dt(O):null,w=g.useRef(null),R=g.useRef(null),T=g.useRef(null),$=g.useRef(null),P=g.useCallback(()=>{T.current=null;const n=w.current,m=R.current;if(w.current=null,R.current=null,n){const b=$.current;if(!b)return;k({k:b.transform.k,tx:b.transform.tx+(n.x-b.x),ty:b.transform.ty+(n.y-b.y)});return}m&&k(b=>ke(b,{x:m.x,y:m.y},b.k*Math.exp(-m.deltaY*js)))},[]),U=g.useCallback(()=>{T.current===null&&(T.current=requestAnimationFrame(P))},[P]);g.useEffect(()=>()=>{T.current!==null&&cancelAnimationFrame(T.current)},[]);const K=n=>{!(n.target===n.currentTarget)&&n.button!==1||n.button!==0&&n.button!==1||($.current={x:n.clientX,y:n.clientY,transform:N},n.currentTarget.setPointerCapture(n.pointerId),n.preventDefault())},he=n=>{$.current&&(w.current={x:n.clientX,y:n.clientY},U())},ee=n=>{$.current&&($.current=null,w.current=null,n.currentTarget.hasPointerCapture(n.pointerId)&&n.currentTarget.releasePointerCapture(n.pointerId))},J=g.useCallback(n=>{if(n.deltaY===0)return;n.preventDefault();const m=n.currentTarget.getBoundingClientRect();R.current={x:n.clientX-m.left,y:n.clientY-m.top,deltaY:n.deltaY},U()},[U]);g.useEffect(()=>{const n=o.current;if(n)return n.addEventListener("wheel",J,{passive:!1}),()=>n.removeEventListener("wheel",J)},[J]);const pe=n=>{const m=n.shiftKey?Oe*4:Oe;switch(n.key){case"Escape":if(y.kind!=="pressing"&&y.kind!=="dragging")return;n.preventDefault(),y.kind==="dragging"&&(M.current=!0),W(b=>te(b,{kind:"cancel"}));return;case"0":n.preventDefault(),Q();return;case"+":case"=":n.preventDefault(),k(b=>ke(b,{x:c.width/2,y:c.height/2},b.k*$e));return;case"-":case"_":n.preventDefault(),k(b=>ke(b,{x:c.width/2,y:c.height/2},b.k/$e));return;case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":{n.preventDefault();const b=n.key==="ArrowLeft"?m:n.key==="ArrowRight"?-m:0,A=n.key==="ArrowUp"?m:n.key==="ArrowDown"?-m:0;k(z=>({...z,tx:z.tx+b,ty:z.ty+A}));return}}};return t.jsxs("div",{ref:o,"data-mesh-canvas":"",role:"group","aria-labelledby":C,tabIndex:0,onPointerDown:K,onPointerMove:le,onPointerUp:oe,onPointerCancel:n=>{y.kind==="dragging"&&(M.current=!0),W(m=>te(m,{kind:"cancel"})),ee(n)},"data-mesh-gesture":y.kind,"data-glass-well":"clear",onKeyDown:pe,onDoubleClick:n=>{n.target===n.currentTarget&&Q()},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:[t.jsx("div",{"data-mesh-ground":"","aria-hidden":"true",className:"mesh-ground pointer-events-none absolute inset-0",style:{backgroundPosition:`${N.tx}px ${N.ty}px`}}),t.jsxs("div",{"data-mesh-world":"",className:"absolute top-0 left-0",style:{transform:`translate3d(${N.tx}px, ${N.ty}px, 0) scale(${N.k})`,transformOrigin:"0 0",width:E.bounds.width,height:E.bounds.height},children:[t.jsx(ys,{stacks:S,geometry:E}),t.jsx(rs,{edges:e.edges,geometry:E,selectedDeviceId:i}),t.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.networks"),className:"m-0 list-none p-0",children:e.networks.map(n=>{const m=E.networks.get(n.id);return m?t.jsx(hs,{network:n,x:m.x,y:m.y,refused:O?.kind==="refused"&&y.kind==="dragging"&&y.target.kind==="network"&&y.target.networkId===n.id},n.id):null})}),t.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.devices"),className:"m-0 list-none p-0",children:e.devices.map(n=>{const m=E.devices.get(n.id);return m?t.jsx(ps,{device:n,x:m.x,y:m.y,nowSeconds:r,selected:n.id===i,sessions:d.get(n.id)??{rows:[],shown:[],hidden:0},sessionTotal:u.get(n.id)??n.sessionCount??0,dropState:ae(n.id),movingSessionId:x,draggedSessionId:is(y),onOpen:v,onChipPointerDown:ie,onChipClick:()=>{if(M.current){M.current=!1;return}v(n.id)},onShowAllSessions:I},n.id):null})})]}),y.kind==="dragging"&&t.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:B.x,top:B.y},children:y.payload.session.name||"untitled"}),y.kind==="dragging"&&Z&&t.jsx("div",{"data-mesh-indicator":"",className:L("pointer-events-none absolute z-10 rounded-sm border bg-surface px-2 py-1 text-meta",O?.kind==="refused"?"border-warning text-warning":"border-control text-ink"),style:{left:B.x,maxWidth:Math.max(160,c.width-B.x-12),...B.y>c.height*.6?{bottom:Math.max(12,c.height-B.y+8)}:{top:B.y+24}},children:Z})]})};function Is(e,s,r,i){const d=r.locality==="local"?s:r.owner_device,u=[];for(const x of e)if(x.id!==d){if(x.id===s){u.push({deviceId:x.id,label:i,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:x.id,label:x.label,verb:a("ui.mesh.mesh_card.move_to",{device:x.label}),keepVerb:a("ui.mesh.mesh_card.copy_to",{device:x.label})})}return u}function Cs(e,s,r){return Is(e.devices,e.selfDeviceId,s,r)}function Xe(e,s,r){const i=Cs(e,s,r),d={selfDeviceId:e.selfDeviceId,devices:new Map(e.devices.map(l=>[l.id,l])),networks:new Map(e.networks.map(l=>[l.id,l]))},u=s.locality==="local"?e.selfDeviceId??"":s.owner_device,x=d.devices.get(u);return i.map(l=>{const v=ge({session:s,ownerDeviceId:u,ownerLabel:x?.label??s.owner_device_name},{kind:"device",deviceId:l.deviceId},d);return{...l,refused:v.kind==="refused"&&v.code!=="busy"?v.sentence:null}})}const Ze=({session:e,destinations:s,disabled:r,onChoose:i,onOpenChange:d,trigger:u,triggerLabel:x})=>(H(),t.jsxs(it,{onOpenChange:d,children:[t.jsx(rt,{asChild:!0,children:t.jsx("button",{type:"button","aria-label":x,"data-mesh-session-menu":e.id,disabled:r||s.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})}),t.jsxs(lt,{align:"start",className:"min-w-56",children:[t.jsx(ot,{children:se(e)}),t.jsx(Se,{}),s.map(l=>t.jsx(Me,{"data-mesh-move-to":l.deviceId,disabled:!!l.refused,title:l.refused??void 0,onSelect:()=>i(l,!1),children:l.verb},l.deviceId)),t.jsx(Se,{}),s.map(l=>t.jsx(Me,{"data-mesh-copy-to":l.deviceId,disabled:!!l.refused,title:l.refused??void 0,onSelect:()=>i(l,!0),children:l.keepVerb},`keep-${l.deviceId}`))]})]})),Ss=({device:e,sessions:s,sessionTotal:r,nowSeconds:i,destinationsFor:d,movingSessionId:u,canMove:x,canInvite:l,onClose:v,onMove:_,onShowInList:j,onInvite:I,onRemoveMember:C})=>{H();const o=ue(e);g.useEffect(()=>{const p=M=>{M.key!=="Escape"||M.defaultPrevented||M.target?.closest('[role="menu"],[role="dialog"]')||(document.querySelector(`[data-mesh-device-open="${e.id}"]`)?.focus(),v())};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[e.id,v]);const c=e.memberships.every(p=>!p.active),f=e.sessionCount===null?Fe(null):a("ui.mesh.mesh_card.conversation_count",{count:e.sessionCount}),N=e.suspect?Ue():[c?a("ui.mesh.mesh_card.revoked_membership"):f,me(o)].filter(Boolean).join(" · "),k=r>s.rows.length?a("ui.mesh.mesh_card.shown_of",{shown:s.rows.length,total:r}):`${s.rows.length}`;return t.jsxs("aside",{"aria-label":a("ui.mesh.mesh_card.device_details",{device:e.label}),"data-mesh-panel":e.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:[t.jsxs("header",{className:"flex flex-col gap-1",children:[t.jsx(G,{size:"sm",variant:"ghost",className:"w-fit self-end","data-mesh-panel-close":"",onClick:v,children:a("ui.mesh.mesh_actions.close")}),t.jsx("h2",{className:"text-body-sm text-ink",children:e.label}),t.jsxs("p",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[e.suspect&&t.jsx(Ne,{"aria-hidden":"true",className:"size-3.5 text-danger"}),!e.suspect&&o==="unanswered"&&t.jsx(at,{"aria-hidden":"true",className:"size-3.5 text-warning"}),N]})]}),t.jsx(re,{}),t.jsxs("section",{className:"flex flex-col gap-2",children:[t.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.memberships")}),t.jsx("ul",{className:"m-0 flex list-none flex-col gap-2 p-0",children:e.memberships.map(p=>t.jsxs("li",{className:"flex flex-col gap-1",children:[t.jsxs("span",{className:"flex items-center gap-2 text-body-sm text-ink",children:[t.jsx(ye,{"aria-hidden":"true",className:"size-3.5 text-ink-muted"}),p.networkName]}),t.jsxs("span",{className:"text-meta text-ink-dim",children:[p.role||"member",p.capabilities.length>0?` · ${p.capabilities.join(", ")}`:"",p.active?"":a("ui.mesh.mesh_card.revoked")]}),l&&p.active&&t.jsxs(G,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-remove-member":`${p.networkId}:${e.id}`,onClick:()=>C(e,p.networkId),children:[a("ui.mesh.mesh_card.remove_from"),p.networkName,"…"]})]},p.networkId))}),l&&t.jsx(G,{size:"sm",variant:"secondary",className:"w-fit","data-mesh-invite":e.id,onClick:()=>I(e),children:a("ui.mesh.mesh_actions.invite_to_a_network")})]}),t.jsx(re,{}),t.jsxs("section",{className:"flex shrink-0 flex-col gap-2",children:[t.jsxs("h3",{className:"text-meta text-ink-dim",children:[a("ui.mesh.mesh_card.conversations"),t.jsxs("span",{className:"text-ink-disabled",children:["(",k,")"]})]}),s.rows.length===0?t.jsx("p",{className:"text-meta text-ink-dim",children:e.sessionCount===null?a("ui.mesh.mesh_card.this_device_did_not_report_its_conversations"):a("ui.mesh.mesh_card.no_conversations_here")}):t.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:s.rows.map(p=>t.jsxs("li",{"data-mesh-panel-session":p.id,className:L("flex items-center gap-2 rounded-sm px-2 py-1","border border-hairline bg-elevated",u===p.id&&"border-control"),children:[t.jsx("span",{className:"min-w-0 flex-1 truncate text-body-sm text-ink",title:se(p),children:se(p)}),t.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:Ve(p,e.label,ue(e))}),u===p.id?t.jsx("span",{className:"shrink-0 text-meta text-ink-muted",children:a("ui.mesh.mesh_card.moving")}):t.jsx(Ze,{session:p,destinations:d(p),disabled:!x,onChoose:(M,h)=>_(p,M,h),trigger:t.jsx(qe,{"aria-hidden":"true",className:"size-4"}),triggerLabel:a("ui.mesh.mesh_card.move_conversation",{conversation:se(p)})})]},p.id))})]}),t.jsx(re,{}),t.jsxs("section",{className:"flex flex-col gap-2",children:[t.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.network_addresses")}),e.endpoints.length===0?t.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.no_address_published")}):t.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:e.endpoints.map(p=>t.jsxs("li",{className:"flex items-baseline justify-between gap-2",children:[t.jsx("span",{className:"min-w-0 truncate font-mono text-body-sm text-ink",children:p}),t.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:a("ui.mesh.mesh_card.advertised")})]},p))})]}),t.jsx(re,{}),t.jsxs("section",{className:"flex flex-col gap-2",children:[t.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.status")}),t.jsxs("dl",{className:"m-0 flex flex-col gap-1",children:[t.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[t.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.reach")}),t.jsx("dd",{className:"m-0 text-body-sm text-ink",children:me(o)})]}),t.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[t.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.last_status_frame")}),t.jsx("dd",{className:"m-0 text-body-sm text-ink",children:e.lastSeenAt===null?a("ui.mesh.mesh_card.never"):At(i-e.lastSeenAt)})]})]}),e.reason&&t.jsx("p",{className:"text-meta text-warning",children:e.reason})]}),t.jsx(re,{}),t.jsx(G,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-show-in-list":e.id,onClick:()=>j(e.id),children:a("ui.mesh.mesh_card.show_in_list")})]})},Ms=["name","chats","state"],Es={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")}},ze={suspect:0,unreachable:1,self:2,reachable:3};function Ds(e,s){const r=[...e];switch(s){case"chats":return r.sort((i,d)=>(d.sessionCount??-1)-(i.sessionCount??-1)||i.label.localeCompare(d.label)),r;case"state":return r.sort((i,d)=>ze[i.state]-ze[d.state]||i.label.localeCompare(d.label)),r;default:return r.sort((i,d)=>i.label.localeCompare(d.label))}}const He=8;function Rs(e,s){if(e.locality==="local")return e.live_state||"here";const r=e.owner_device_name||s,i=e.live_state?` · ${e.live_state}`:"";return e.reachable?a("ui.mesh.mesh_list.on_device_state",{device:r,state:i}):a("ui.mesh.mesh_list.on_device_no_answer",{device:r})}const As=({graph:e,nowSeconds:s,selectedDeviceId:r,sessions:i,selfLabel:d,canMove:u,onSelect:x,onMove:l,onInvite:v,onRemove:_})=>{H();const[j,I]=g.useState("name"),C=g.useMemo(()=>e.networks.map(o=>({network:o,members:Ds(e.devices.filter(c=>c.memberships.some(f=>f.networkId===o.id)),j)})),[e,j]);return t.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto pr-1",children:[t.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[t.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_list.sort_devices_by")}),t.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:Ms.map(o=>t.jsx("button",{type:"button","aria-pressed":j===o,onClick:()=>I(o),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===o&&"bg-surface text-ink"),children:Es[o]},o))})]}),C.map(({network:o,members:c})=>t.jsxs("section",{"data-mesh-network-group":o.id,className:"flex flex-col gap-2",children:[t.jsxs("h2",{className:"flex flex-wrap items-baseline gap-2 text-body-sm text-ink",title:a("ui.mesh.mesh_list.epoch",{epoch:o.epoch}),children:[o.label,t.jsxs("span",{className:"text-meta text-ink-dim",children:[o.trust," ·"," ",a("ui.mesh.mesh_graph.device_count",{count:o.memberCount}),o.revokedCount>0?a("ui.mesh.mesh_list.revoked_count",{count:o.revokedCount}):""]})]}),t.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:c.map(f=>{const N=f.memberships.find(S=>S.networkId===o.id),k=f.id===r,p=i.get(f.id),M=p?.rows??[],h=p?Ge(p,f.sessionCount):f.sessionCount??0,D=ue(f);return t.jsxs("li",{"data-mesh-device-row":f.id,"data-mesh-state":f.state,"aria-current":k?"true":void 0,className:L("flex flex-col gap-1 rounded-md px-3 py-2","border border-hairline bg-surface",k&&"border-ink bg-row-selected"),children:[t.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[t.jsx("button",{type:"button","data-mesh-device-open":f.id,onClick:()=>x(f.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:f.label}),t.jsxs("span",{className:L("flex shrink-0 items-center gap-1 text-meta",Ye[D]),"data-mesh-reach":D,children:[f.suspect&&t.jsx(Ne,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"}),f.suspect?me(D):Be(f,s),f.suspect&&t.jsx("span",{className:"shrink-0 rounded-sm border border-danger px-1 text-danger",children:Ue()})]}),t.jsxs("span",{className:"shrink-0 text-meta text-ink-dim",children:[N?.role?`${N.role} · `:"",N&&!N.active?a("ui.mesh.mesh_list.revoked"):a("ui.mesh.mesh_list.member")]})]}),M.length>0?t.jsxs(t.Fragment,{children:[t.jsx(re,{className:"my-1"}),t.jsx("ul",{className:"m-0 flex list-none flex-col gap-0.5 p-0",children:M.slice(0,He).map(S=>t.jsxs("li",{"data-mesh-row-session":S.id,className:"flex items-center gap-2 py-0.5",children:[t.jsx("span",{className:"min-w-0 flex-1 truncate text-meta text-ink-muted",children:S.name||S.id}),t.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:Rs(S,d)}),t.jsx(Ze,{session:S,destinations:Xe(e,S,d),disabled:!u,onChoose:(E,Y)=>l(S,E,Y),trigger:t.jsx(qe,{"aria-hidden":"true",className:"size-3.5"}),triggerLabel:a("ui.mesh.mesh_list.move_conversation",{conversation:S.name||S.id})})]},S.id))}),h>M.slice(0,He).length&&t.jsx("button",{type:"button",onClick:()=>x(f.id),className:"w-fit text-meta text-ink-dim hover:text-ink",children:a("ui.mesh.mesh_list.show_all_panel",{count:h})})]}):t.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_list.conversation_count",{count:h})}),(N?.active||f.state!=="self")&&t.jsxs("div",{className:"flex flex-wrap items-center gap-1",children:[t.jsx(G,{size:"sm",variant:"ghost","data-mesh-invite":f.id,onClick:()=>v({deviceId:f.id,deviceLabel:f.label}),children:a("ui.mesh.mesh_actions.invite_to_a_network")}),N?.active&&t.jsxs(G,{size:"sm",variant:"ghost","data-mesh-remove-member":`${o.id}:${f.id}`,onClick:()=>_({networkId:o.id,networkLabel:o.label,deviceId:f.id,deviceLabel:f.label}),children:[a("ui.mesh.mesh_card.remove_from"),o.label,"…"]})]})]},f.id)})})]},o.id)),e.unmatchedPeers.length>0&&t.jsxs("p",{className:"text-meta text-warning",children:[a("ui.mesh.mesh_graph.device_count",{count:e.unmatchedPeers.length})," ",a("ui.mesh.mesh_list.answered_the_peer_read_but_is_in")]})]})},Ls=["canvas","list"],Ps={get canvas(){return a("ui.mesh.mesh_page.canvas")},get list(){return a("ui.mesh.mesh_page.list")}},Ts=({state:e,graph:s,nowSeconds:r,checking:i,staleError:d,onRetry:u,approvals:x,sessions:l,sessionError:v,selfLabel:_,movingSessionId:j,canMove:I,pendingMove:C,onAskMove:o,onDropRefused:c,onChooseMove:f,onCancelMove:N,moveBusy:k,moveReport:p,onDismissReport:M,onWaitForIdle:h,onUndoCopy:D,invite:S,onOpenInvite:E,onInvite:Y,onCloseInvite:y,inviteBusy:W,inviteReceipt:ne,inviteRefusal:q,remove:O,onOpenRemove:ae,onRemove:ie,onCloseRemove:le,removeBusy:oe,removeRefusal:Q,removed:B})=>{H();const[Z,w]=g.useState("canvas"),[R,T]=g.useState(null),$=s?Lt(s):"",P="mesh-summary",U=Pt(s),K=Tt(s,l,s?.selfDeviceId??null),he=g.useMemo(()=>{const n=new Map;for(const m of s?.devices??[]){const b=K.byDevice.get(m.id);n.set(m.id,b?Ge(b,m.sessionCount):m.sessionCount??0)}return n},[s,K]),ee=g.useCallback(n=>{T(n)},[]),J=s?s.devices.find(n=>n.id===R)??null:null,pe=g.useCallback((n,m,b)=>{if(!s)return null;const A={selfDeviceId:s.selfDeviceId,devices:new Map(s.devices.map(X=>[X.id,X])),networks:new Map(s.networks.map(X=>[X.id,X]))},z=n.locality==="local"?s.selfDeviceId??"":n.owner_device,V=A.devices.get(z),F=ge({session:n,ownerDeviceId:z,ownerLabel:V?.label??n.owner_device_name},{kind:"device",deviceId:m.deviceId},A);if(F.kind==="refused")return c({code:F.code,sentence:F.sentence,remedy:F.remedy,plan:F.plan??null}),null;if(F.kind==="none")return null;const Ie=b?F.alternatives.find(X=>X.keep)??F.plan:F.plan,Je=[F.plan,...F.alternatives].filter(X=>X.keep!==Ie.keep),Qe={plan:Ie,alternatives:Je,risky:F.risky};o(Qe)},[s,o,c]);return t.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-6 overflow-y-auto p-6",children:[t.jsx(nt,{title:a("ui.mesh.mesh_page.mesh"),icon:ye,subtitle:a("ui.mesh.mesh_page.devices_this_app_is_paired_with_and"),children:t.jsxs("div",{className:"flex items-center gap-4",children:[i&&t.jsx("output",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.checking")}),(e.kind==="ready"||e.kind==="loading")&&t.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[t.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_page.presentation")}),t.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:Ls.map(n=>t.jsx("button",{type:"button","aria-pressed":Z===n,disabled:e.kind!=="ready",onClick:()=>w(n),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",Z===n&&"bg-surface text-ink"),children:Ps[n]},n))})]})]})}),t.jsx(ns,{rows:x.rows,error:x.error,pending:x.pending,refusal:x.decisionRefusal,onDecide:x.onDecide,onRetry:x.onRetry,nowSeconds:x.nowSeconds,networkNames:new Map((s?.networks??[]).map(n=>[n.id,n.label]))}),e.kind==="loading"&&t.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[t.jsx(Ee,{className:"h-4 w-64"}),t.jsx(Ee,{className:"min-h-40 w-full flex-1"})]}),e.kind==="error"&&t.jsxs(fe,{variant:"warning",className:"flex-col items-start gap-2",children:[t.jsx("p",{children:e.message}),t.jsx(G,{variant:"secondary",size:"sm",onClick:u,className:"w-fit",children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),e.kind==="empty"&&t.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:t.jsxs("div",{className:"flex flex-col items-start gap-3",children:[t.jsx("h2",{className:"text-heading text-ink",children:a("ui.mesh.mesh_page.no_network_on_this_device")}),t.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")}),t.jsx("code",{className:"rounded-sm bg-sunken px-2 py-1 font-mono text-meta text-ink",children:"lop network init <name>"}),t.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.a_network_appears_here_once_this_device")})]})}),e.kind==="ready"&&s&&t.jsx(t.Fragment,{children:t.jsxs("div",{className:"flex min-h-[22rem] flex-1 gap-4",children:[t.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col gap-3",children:[t.jsx("p",{id:P,className:"text-meta text-ink-muted","data-mesh-summary":"",children:$}),d&&t.jsx(fe,{variant:"warning",children:t.jsx("p",{children:d})}),v&&t.jsx(fe,{variant:"warning",children:t.jsx("p",{children:v})}),p&&t.jsx(Ot,{receipt:p.kind==="moved"?{verb:p.verb,detail:p.detail,undo:p.undo}:null,refusal:p.kind==="refused"?p.refusal:null,canWait:p.kind==="refused"&&p.plan!==null,onWait:h,onRecheck:u,onUndo:D,onDismiss:M,pending:k}),Z==="canvas"?t.jsx(Ns,{graph:s,slots:U,nowSeconds:r,selectedDeviceId:R,sessions:K.byDevice,sessionTotals:he,movingSessionId:j,canMove:I,onOpenDevice:ee,onAskMove:o,onDropRefused:c,onShowAllSessions:ee,summaryId:P}):t.jsx(As,{graph:s,nowSeconds:r,selectedDeviceId:R,sessions:K.byDevice,selfLabel:_,canMove:I,onSelect:ee,onMove:pe,onInvite:E,onRemove:ae})]}),J&&t.jsx(Ss,{device:J,sessions:K.byDevice.get(J.id)??{rows:[],shown:[],hidden:0},sessionTotal:he.get(J.id)??0,nowSeconds:r,canMove:I,canInvite:e.kind==="ready",movingSessionId:j,destinationsFor:n=>Xe(s,n,_),onClose:()=>T(null),onMove:pe,onInvite:n=>E({deviceId:n.id,deviceLabel:n.label}),onRemoveMember:(n,m)=>{const b=s.networks.find(A=>A.id===m);ae({networkId:m,networkLabel:b?.label??m,deviceId:n.id,deviceLabel:n.label})},onShowInList:n=>{ee(n),w("list")}})]})}),t.jsx($t,{open:C!==null,plan:C?.plan??Os,alternatives:C?.alternatives??[],risky:C?.risky??!1,busy:k,onCancel:N,onChoose:f}),S&&t.jsx(zt,{open:S.open,options:S.options,deviceId:S.deviceId,deviceLabel:S.deviceLabel,onClose:y,onInvite:Y,pending:W,receipt:ne,refusal:q}),O&&t.jsx(Ht,{open:O.open,networkLabel:O.networkLabel,deviceLabel:O.deviceLabel,onClose:le,onConfirm:ie,pending:oe,refusal:Q,removed:B})]})},Os={sessionId:"",to:"",keep:!1,verb:"",waitS:0,lost:null},Us=()=>{H();const e=tt(),s=be(e.data,"peers")==="enabled",r=be(e.data,"session_transfer")==="enabled",i=Wt(s),d=qt(s),u=Ft(s,{poll:!1,stamp:()=>Ce.getState().beginAnswer()}),x=g.useMemo(()=>({peers:i,networks:d}),[i,d]),l=Yt(x),v=Bt(x),_=Ut(),j=be(e.data,"approvals")==="enabled",I=Gt(s&&j,{poll:!1}),C=Kt(),o=C.isError?{approvalId:C.variables?.approvalId??null,...Vt(C.error)}:null,c=g.useMemo(()=>Math.floor((I.dataUpdatedAt||Date.now())/1e3),[I.dataUpdatedAt]),f=Ce(w=>w.settlePlacement),N=Xt(),k=Zt(),[p,M]=g.useState(null),[h,D]=g.useState(null),[S,E]=g.useState(null),[Y,y]=g.useState(null),[W,ne]=g.useState(null),[q,O]=g.useState(null),[ae,ie]=g.useState(null),le=g.useMemo(()=>{const w=Math.max(i.dataUpdatedAt,d.dataUpdatedAt);return Math.floor((w||Date.now())/1e3)},[i.dataUpdatedAt,d.dataUpdatedAt]),oe=g.useCallback(()=>{i.refetch(),d.refetch(),u.refetch()},[i,d,u]),Q=g.useCallback((w,R)=>{M(null);const T={sessionId:w.sessionId,to:w.to,keep:w.keep,waitS:R??w.waitS};_.mutate(T,{onSuccess:$=>{if($.kind==="moved"){const{receipt:P}=$;f(w.sessionId,P);const U=P.locality==="local"?a("ui.mesh.mesh_drop.this_device"):v?.devices.find(K=>K.id===P.owner_device)?.label??P.owner_device;D({kind:"moved",verb:P.mode==="keep"?a("ui.mesh.mesh_page.copied"):a("ui.mesh.mesh_page.moved"),detail:P.mode==="keep"?a("ui.mesh.mesh_page.copy_receipt",{destination:U,suffix:P.new_session_id.slice(-6)}):a("ui.mesh.mesh_page.move_receipt",{destination:U,retirement:P.source_retired?a("ui.mesh.mesh_page.the_copy_here_is_gone"):""}),undo:P.mode==="keep"?{sessionId:P.new_session_id,to:"local",keep:!1,verb:a("ui.mesh.mesh_page.bring_copy_back",{device:U}),waitS:0,lost:Jt(U,a("ui.mesh.mesh_drop.this_device"))}:null});return}D({kind:"refused",refusal:$.refusal,plan:w})},onError:()=>{D({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,_,f]),B=g.useMemo(()=>{if(!v)return[];const w=S?.deviceId,R=w?v.devices.find(T=>T.id===w):void 0;return v.networks.filter(T=>{if(!R)return!0;const $=R.memberships.find(P=>P.networkId===T.id);return!$||!$.active}).map(T=>({id:T.id,label:T.label}))},[v,S]);if(!s)return t.jsx(st,{to:"/chat",replace:!0});const Z=l.kind==="ready"?i.error?de(i.error):d.error?de(d.error):null:null;return t.jsx(Ts,{state:l,graph:v,nowSeconds:le,checking:i.isFetching||d.isFetching,staleError:Z,onRetry:oe,approvals:{rows:I.data??[],error:I.isError?Qt(I.error):null,pending:C.isPending?C.variables??null:null,decisionRefusal:o,onDecide:(w,R)=>C.mutate({approvalId:w,decision:R}),onRetry:()=>void I.refetch(),nowSeconds:c},sessions:u.data?.rows??[],movingSessionId:_.isPending?_.variables?.sessionId??null:null,sessionError:u.isError?de(u.error):null,selfLabel:v?.devices.find(w=>w.state==="self")?.label??a("ui.mesh.mesh_drop.this_device"),canMove:r,pendingMove:p,onAskMove:M,onDropRefused:w=>D({kind:"refused",refusal:{code:w.code,sentence:w.sentence,status:null,unconfirmed:!1},plan:w.plan}),onChooseMove:w=>Q(w),onCancelMove:()=>M(null),moveBusy:_.isPending,moveReport:h,onDismissReport:()=>D(null),onWaitForIdle:()=>{h?.kind!=="refused"||!h.plan||Q(h.plan,$s)},onUndoCopy:()=>{h?.kind!=="moved"||!h.undo||M({plan:h.undo,alternatives:[],risky:!1})},invite:S===null?null:{open:!0,deviceId:S.deviceId,deviceLabel:S.deviceLabel,options:B},onOpenInvite:w=>{y(null),ne(null),E(w)},onInvite:w=>{N.mutate(w,{onSuccess:R=>y(R),onError:R=>ne({code:"invite_refused",sentence:de(R),status:null,unconfirmed:!1})})},onCloseInvite:()=>E(null),inviteBusy:N.isPending,inviteReceipt:Y,inviteRefusal:W,remove:q===null?null:{open:!0,networkId:q.networkId,networkLabel:q.networkLabel,deviceId:q.deviceId,deviceLabel:q.deviceLabel},onOpenRemove:w=>{ie(null),O(w)},onRemove:w=>{q&&k.mutate({networkId:q.networkId,deviceId:q.deviceId,confirm:w},{onSuccess:R=>ie(R)})},onCloseRemove:()=>O(null),removeBusy:k.isPending,removeRefusal:k.isError?{code:"remove_refused",sentence:de(k.error),status:null,unconfirmed:!1}:null,removed:ae})},$s=300;export{Us as MeshPage,Ts as MeshSurface,Us as default};
@@ -1 +0,0 @@
1
- import{s as r,b as e,a,S as s}from"./chunk-AEK57VVT-qKzkVDpt.js";import{_ as i}from"./mermaid.core-DePJ3QoR.js";import"./chunk-RZ5BOZE2-CXlNa1ns.js";import"./conversation-input-sync-BWiC2ZNQ.js";import"./index-CjToIHDL.js";import"./ui-preferences-store-D0NZNchc.js";import"./error-boundary-DxVWsYpy.js";var n={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{n as diagram};