ryco-cli 0.1.11 → 0.1.13

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 (68) hide show
  1. package/dist/bin.cjs +1 -1
  2. package/dist/bin.mjs +1 -1
  3. package/dist/client/assets/{AccountSettings-BUoiS8x1.js → AccountSettings-Be5_48k0.js} +1 -1
  4. package/dist/client/assets/{AiFocusSettings-Cz1Uqn7a.js → AiFocusSettings-DIpQXLW2.js} +1 -1
  5. package/dist/client/assets/{BranchToolbar.logic-LIanCEVr.js → BranchToolbar.logic-D7slG_zJ.js} +1 -1
  6. package/dist/client/assets/{ChatRightPanel-CKEjpQ_x.js → ChatRightPanel-BIS1DPGa.js} +3 -3
  7. package/dist/client/assets/{ChatThreadRouteView-D50onHY2.js → ChatThreadRouteView-CocRstME.js} +1 -1
  8. package/dist/client/assets/{CommandPaletteDialog-DdRKgZ8m.js → CommandPaletteDialog-C5xAo65V.js} +1 -1
  9. package/dist/client/assets/ConnectionsSettings-CXabxSaH.js +7 -0
  10. package/dist/client/assets/{DiagnosticsSettings-C74u3ce5.js → DiagnosticsSettings-CZ3vY43G.js} +1 -1
  11. package/dist/client/assets/{DraftChatThreadRouteView-RTmLGTl0.js → DraftChatThreadRouteView-D8Bt3Qnq.js} +1 -1
  12. package/dist/client/assets/{HostedConnectionControls-CKiC01ju.js → HostedConnectionControls-DxAXv0Hd.js} +1 -1
  13. package/dist/client/assets/{HostedHubRoot-BS3rAYTy.js → HostedHubRoot-Cc8GYcK6.js} +1 -1
  14. package/dist/client/assets/{HostedNativeAuthorizationRoute-BFTDyh4N.js → HostedNativeAuthorizationRoute-CTQe7Vjt.js} +1 -1
  15. package/dist/client/assets/{HostedRelayTrustNotice-eEOPKsBg.js → HostedRelayTrustNotice-BldMySVi.js} +1 -1
  16. package/dist/client/assets/{IntegrationsSettingsPanel-Cg4eRHm_.js → IntegrationsSettingsPanel-D6f3KoqM.js} +1 -1
  17. package/dist/client/assets/{KeybindingsSettings-CYj67N2D.js → KeybindingsSettings-D2bNQPI-.js} +1 -1
  18. package/dist/client/assets/{McpServersSettings-Bc61hRUY.js → McpServersSettings-B7YqVvV4.js} +1 -1
  19. package/dist/client/assets/{NewWorktreeDialog-CTlFjKa4.js → NewWorktreeDialog-CKr2ioue.js} +1 -1
  20. package/dist/client/assets/{NoActiveThreadState-Dw9aoU2J.js → NoActiveThreadState-BD-eNmfn.js} +1 -1
  21. package/dist/client/assets/{NodeSecuritySettings-DMkkTgfg.js → NodeSecuritySettings-FWM_SeDi.js} +1 -1
  22. package/dist/client/assets/{OpinionatedPluginsSettings-CeoSmZ90.js → OpinionatedPluginsSettings-BtZQF4Ze.js} +1 -1
  23. package/dist/client/assets/{PhoneGetAppInterstitial-7ZxxVbUB.js → PhoneGetAppInterstitial-CooQgpSw.js} +1 -1
  24. package/dist/client/assets/{PhoneHome-DRRoCd_y.js → PhoneHome-BtPE7bQn.js} +1 -1
  25. package/dist/client/assets/{PhoneSettingsSurface-LNEaPHQC.js → PhoneSettingsSurface-tcFCccEL.js} +1 -1
  26. package/dist/client/assets/{ProjectFavicon-BIMdZxK6.js → ProjectFavicon-qZGdjYCM.js} +1 -1
  27. package/dist/client/assets/{ProviderModelPicker-jd6GjQkO.js → ProviderModelPicker-D0w23uWo.js} +1 -1
  28. package/dist/client/assets/{ProvidersSettingsPanel-v2SvoEGx.js → ProvidersSettingsPanel-B3aBKY--.js} +1 -1
  29. package/dist/client/assets/{RootAppShell-CFjrYjtn.js → RootAppShell-C-0ChFVJ.js} +2 -2
  30. package/dist/client/assets/SettingsDialog-Bbuoh793.js +1 -0
  31. package/dist/client/assets/{SettingsPanels-BmhZ8u4B.js → SettingsPanels-Dr4f2y9l.js} +1 -1
  32. package/dist/client/assets/{SourceControlSettings-DvPydmxX.js → SourceControlSettings-CkiYR4lR.js} +1 -1
  33. package/dist/client/assets/{StatisticsPage-Duk2cHVH.js → StatisticsPage-Bjouapmf.js} +1 -1
  34. package/dist/client/assets/{StatisticsPanel-D-uNJcdj.js → StatisticsPanel-D_khPph6.js} +1 -1
  35. package/dist/client/assets/{ThreadStatusIndicators-D0xoATCw.js → ThreadStatusIndicators-ZImeLExQ.js} +0 -0
  36. package/dist/client/assets/{ThreadTerminalDrawer-DjX8p7IH.js → ThreadTerminalDrawer-DDHEuRGB.js} +1 -1
  37. package/dist/client/assets/{ThreadWorkspacePanel-DI0GXPBf.js → ThreadWorkspacePanel-QF3KwbGm.js} +1 -1
  38. package/dist/client/assets/{WorkItemsTab-ow45makA.js → WorkItemsTab-AOVwVvb7.js} +1 -1
  39. package/dist/client/assets/{branding-C8SLy6Af.js → branding-BDfN6Spd.js} +1 -1
  40. package/dist/client/assets/{capabilities-BQuqC7jg.js → capabilities-3zgirmmI.js} +1 -1
  41. package/dist/client/assets/{desktopUpdateAtoms-C82GmR67.js → desktopUpdateAtoms-CyfPW2jg.js} +1 -1
  42. package/dist/client/assets/{desktopWorkspace-G5Z_JRbm.js → desktopWorkspace-DHUZEpfy.js} +1 -1
  43. package/dist/client/assets/{device-B56cBWWt.js → device-B_qvyvtW.js} +1 -1
  44. package/dist/client/assets/{editorPreferences-CTDEj79K.js → editorPreferences-DHIJntKF.js} +1 -1
  45. package/dist/client/assets/{index-Bbz4fkK_.js → index-CQmEMMQH.js} +1 -1
  46. package/dist/client/assets/{main-Dwu2cT6v.js → main-BKS5Nf2_.js} +2 -2
  47. package/dist/client/assets/primary-BzLEg2w1.js +2 -0
  48. package/dist/client/assets/{projectPaths-lDhAE9o_.js → projectPaths-BAd6NFcE.js} +1 -1
  49. package/dist/client/assets/{providerIconUtils-DnSYUN9l.js → providerIconUtils-X0Z3EK-Q.js} +1 -1
  50. package/dist/client/assets/runtime-CXut_g4p.js +1 -0
  51. package/dist/client/assets/{session-logic-DElAta-Z.js → session-logic-GZix7S2I.js} +1 -1
  52. package/dist/client/assets/{sidebarProjectFolders-Cs13ZUN8.js → sidebarProjectFolders-cnmz3B_-.js} +1 -1
  53. package/dist/client/assets/storeSelectors-DYekgeHu.js +1 -0
  54. package/dist/client/assets/{threadPriorityRefreshRuntime-DJF5drVD.js → threadPriorityRefreshRuntime-Ct5pnIbX.js} +1 -1
  55. package/dist/client/assets/types-DYekgeHu.js +1 -0
  56. package/dist/client/assets/{useAtlassian-Bx2ua3JV.js → useAtlassian-9-hy2f8z.js} +0 -0
  57. package/dist/client/assets/{useHandleNewThread-DHO0PWGZ.js → useHandleNewThread-DX2FtXcP.js} +1 -1
  58. package/dist/client/assets/{usePhoneThreadActions-OTf7yIbN.js → usePhoneThreadActions-BEa3VzGG.js} +1 -1
  59. package/dist/client/assets/{useStatistics-DEtKeVPP.js → useStatistics-CtunoTE-.js} +1 -1
  60. package/dist/client/assets/{useThreadActions-DLxhOMkz.js → useThreadActions-fN-Al13y.js} +1 -1
  61. package/dist/client/index.html +1 -1
  62. package/package.json +1 -1
  63. package/dist/client/assets/ConnectionsSettings--CbTzkTn.js +0 -7
  64. package/dist/client/assets/SettingsDialog-CvGTsSV0.js +0 -1
  65. package/dist/client/assets/primary-OskAInOO.js +0 -2
  66. package/dist/client/assets/runtime-DKwoXpJv.js +0 -1
  67. package/dist/client/assets/storeSelectors-Cq_JKyiF.js +0 -1
  68. package/dist/client/assets/types-Cq_JKyiF.js +0 -1
@@ -1,7 +0,0 @@
1
- import{i as e,t}from"./react-SIfiwpqq.js";import{t as n}from"./compiler-runtime-qmuS0Svy.js";import{Nr as r,xa as i}from"./src-Vf4LVnMX.js";import{Jt as a,Vn as o,bn as s,c,m as l,n as u,o as d,p as f,r as p,xt as m,yn as h}from"./runtime-DKwoXpJv.js";import{A as g,C as _,F as v,M as y,T as b,U as x,g as S,h as C,j as w,k as T,m as E,p as D,u as O}from"./primary-OskAInOO.js";import{It as k}from"./composerDraftStore-CdJJZe42.js";import{n as A,t as j}from"./pairingUrl-rQM9kSGT.js";import{n as M,t as N}from"./visibilityPolling-BwzZdaSN.js";import{r as P,t as F}from"./hostedPairing-PogXRAb7.js";import{t as I}from"./settingsDialogStore-ygYoScKe.js";import{i as ee}from"./uiStateStore-B6pjzSjj.js";import{n as L,o as R,t as z}from"./desktopWorkspace-G5Z_JRbm.js";import{f as B}from"./useRenderElement-DchFnsR8.js";import{t as te}from"./arrow-up-right-DGeet8e6.js";import{t as ne}from"./chevron-down-B7C6FKzM.js";import{i as V}from"./toast-CcSCAm4B.js";import{t as H}from"./plus-B2h-VEqh.js";import{t as U}from"./qr-code-ScYULAuR.js";import{t as W}from"./refresh-cw-DopCMrtR.js";import{t as re}from"./terminal-C_CyIsDD.js";import{t as ie}from"./triangle-alert-RL_T3KLo.js";import{t as G}from"./utils-BofFIn5Y.js";import{n as ae,t as oe}from"./timestampFormat-8uPXS812.js";import{i as K,n as se,t as ce}from"./tooltip-C8sAONBj.js";import{t as le}from"./switch-BTGo9Yip.js";import{t as ue}from"./input-CHEwW3oH.js";import{t as de}from"./scroll-area-Drsa8bNB.js";import{t as q}from"./button-BAbJxRzt.js";import{t as fe}from"./useCopyToClipboard-BTpWxumf.js";import{t as pe}from"./toastHelpers-CSQRKo4F.js";import{a as me,c as he,i as ge,l as _e,n as ve,o as ye,r as be,s as xe,t as Se}from"./dialog-DQsYchqu.js";import{a as Ce,c as J,d as we,i as Te,o as Ee,p as De,s as Oe}from"./menu-Dvxh8sD5.js";import{t as ke}from"./spinner-ClF0jOcX.js";import{t as Ae}from"./textarea-RFPODxWW.js";import{a as je,i as Me,n as Ne,o as Pe,r as Fe,s as Ie,t as Le}from"./alert-dialog-DxoA6ky8.js";import{n as Re,r as ze,t as Be}from"./popover-CuH9Yrj3.js";import{a as Ve,i as He,n as Ue,r as Y}from"./settingsLayout-D8glO7f1.js";import{n as We,t as Ge}from"./data-list-CYKBxN62.js";import{t as Ke}from"./AnimatedHeight-BIsV_Z3J.js";import{n as qe,t as Je}from"./group-D9ER9giz.js";import{t as Ye}from"./qr-code-Bddq6K7S.js";import{n as Xe,r as Ze,t as Qe}from"./collapsible-dxy6kc2k.js";var $e=B(`chevrons-left-right-ellipsis`,[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`m17 7 5 5-5 5`,key:`1xlxn0`}],[`path`,{d:`m7 7-5 5 5 5`,key:`19njba`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}]]),X=e(t(),1),Z=n();function et(e,t){let n=new URL(e);return n.pathname=`/pair`,A(n,t).toString()}function tt(e,t){return new URL(e).protocol===`https:`?F({host:e,token:t}):null}var nt=`/assets/relay-architecture-YeimmXuP.html`,Q=k();function $(e,t){return e===null||t===null||!e.fileSecretStoreFallbackSupported?!1:t.enrolled===`none`||t.enrolled===`unknown`&&!e.allowFileSecretStore}function rt(e,t){return e===null||t===null?`Loading local launch configuration and identity state.`:e.fileSecretStoreFallbackSupported?t.enrolled===`active`||t.enrolled===`pending`?`Locked while this machine holds Hub identity material. Leave the Hub before changing it.`:t.enrolled===`unknown`?e.allowFileSecretStore?`Identity custody is unreadable, so an enabled fallback cannot be turned off.`:`Enable this only as a recovery action when an existing file-backed identity cannot be read.`:`Ryco still prefers the system credential store. This only permits the hardened POSIX file fallback when that store is unavailable.`:`Unavailable on Windows. Ryco requires the system credential store on this host.`}function it(e){return e<1024?`${e} B`:`${(e/1024).toFixed(+(e<10240))} KiB`}function at(e,t){if(e===null)return[{label:`Protocol`,value:`Loading`},{label:`Channels`,value:`Loading`},{label:`Relay queue`,value:`Loading`},{label:`Reconnect`,value:`Loading`}];let n=e.state===`online`&&e.protocolMajor!==void 0&&e.protocolMinor!==void 0?`${e.protocolMajor}.${e.protocolMinor}`:`Not negotiated`,r=e.nextRetryAt===void 0?e.reconnectAttempt===void 0?`Not scheduled`:`Attempt ${e.reconnectAttempt}`:`Attempt ${e.reconnectAttempt??0}, ${Math.max(0,Math.ceil((Date.parse(e.nextRetryAt)-t)/1e3))}s`;return[{label:`Protocol`,value:n},{label:`Channels`,value:String(e.activeChannels)},{label:`Relay queue`,value:it(e.queuedBytes)},{label:`Reconnect`,value:r}]}function ot(e){let t=(0,Z.c)(84),{config:n,identity:r,status:i,nowMs:a,savingFileFallback:o,configError:s,onFileFallbackChange:c,onOpenGuide:l}=e,[u,d]=(0,X.useState)(!1),f;t[0]!==n||t[1]!==r?(f=$(n,r),t[0]=n,t[1]=r,t[2]=f):f=t[2];let p=f,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k;if(t[3]!==p||t[4]!==n||t[5]!==s||t[6]!==r||t[7]!==a||t[8]!==c||t[9]!==l||t[10]!==u||t[11]!==o||t[12]!==i){let e=at(i,a);g=Qe,y=u,b=d;let f=u?`Hide advanced options`:`Show advanced options`,A;t[29]===f?A=t[30]:(A=(0,Q.jsx)(`span`,{className:`block text-[13px] font-semibold tracking-[-0.01em] text-foreground`,children:f}),t[29]=f,t[30]=A);let j;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Q.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground/80`,children:`Key custody, startup ownership, CLI flags, and bounded relay diagnostics.`}),t[31]=j):j=t[31];let M;t[32]===s?M=t[33]:(M=s?(0,Q.jsx)(`span`,{className:`mt-1 block text-[11px] text-destructive`,children:s}):null,t[32]=s,t[33]=M);let N;t[34]!==A||t[35]!==M?(N=(0,Q.jsxs)(`span`,{children:[A,j,M]}),t[34]=A,t[35]=M,t[36]=N):N=t[36];let P=`size-4 shrink-0 text-muted-foreground transition-transform duration-200 motion-reduce:transition-none ${u?`rotate-180`:``}`,F;t[37]===P?F=t[38]:(F=(0,Q.jsx)(ne,{className:P,"aria-hidden":!0}),t[37]=P,t[38]=F),t[39]!==N||t[40]!==F?(x=(0,Q.jsxs)(Ze,{className:`group flex w-full items-center justify-between gap-4 border-t border-border/60 px-4 py-3.5 text-left transition-colors hover:bg-muted/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring sm:px-5`,children:[N,F]}),t[39]=N,t[40]=F,t[41]=x):x=t[41],h=Xe,v=`motion-reduce:transition-none`,D=`border-t border-border/60 bg-muted/10`;let I;t[42]!==n||t[43]!==r?(I=rt(n,r),t[42]=n,t[43]=r,t[44]=I):I=t[44];let ee=n?.allowFileSecretStore??!1,L=!p||o,R;t[45]===c?R=t[46]:(R=e=>c(!!e),t[45]=c,t[46]=R);let z;t[47]!==ee||t[48]!==L||t[49]!==R?(z=(0,Q.jsx)(le,{checked:ee,disabled:L,onCheckedChange:R,"aria-label":`Allow permissioned-file Hub key storage`}),t[47]=ee,t[48]=L,t[49]=R,t[50]=z):z=t[50],t[51]!==I||t[52]!==z?(O=(0,Q.jsx)(Y,{title:`Protected key fallback`,description:I,status:`Changing this launch setting restarts Ryco. It never moves or exports an existing key.`,control:z}),t[51]=I,t[52]=z,t[53]=O):O=t[53],t[54]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,Q.jsx)(Y,{title:`Who owns startup`,description:`The desktop app owns Hub launch values for its bundled server and restarts that server to apply them. Exported Hub environment variables do not override this panel.`,status:`The Hub address stays outside ordinary server settings, diagnostics, and support output.`}),t[54]=k):k=t[54],t[55]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,Q.jsx)(Y,{title:`CLI equivalents`,description:`Use these flags for a headless Ryco node. Explicit flags override matching environment variables.`,status:`Use RYCO_HUB_NODE_NAME instead of --hub-node-name when environment configuration is preferable. Boolean flags also support canonical --no-... forms.`,children:(0,Q.jsx)(`div`,{className:`pb-3.5 pt-3`,children:(0,Q.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border border-border/60 bg-background/70 px-3 py-2.5 font-mono text-[11px] leading-5 text-foreground`,children:(0,Q.jsx)(`code`,{children:`ryco serve \\
2
- --hub-connector-enabled \\
3
- --hub-origin https://app.ryco.space \\
4
- --hub-node-name "Build node"
5
-
6
- # Optional on supported POSIX hosts
7
- ryco serve --hub-allow-file-secret-store`})})})}),t[55]=_):_=t[55],m=Y,w=`Relay diagnostics`,T=`Bounded local counters only. No Hub address, key, ticket, project, path, or payload is exposed here.`;let B;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,Q.jsx)(te,{className:`size-3`}),t[56]=B):B=t[56],t[57]===l?E=t[58]:(E=(0,Q.jsxs)(q,{size:`xs`,variant:`outline`,onClick:l,children:[`Open relay guide`,B]}),t[57]=l,t[58]=E),S=`grid grid-cols-2 gap-x-6 gap-y-3 pb-3.5 pt-3 sm:grid-cols-4`,C=e.map(st),t[3]=p,t[4]=n,t[5]=s,t[6]=r,t[7]=a,t[8]=c,t[9]=l,t[10]=u,t[11]=o,t[12]=i,t[13]=m,t[14]=h,t[15]=g,t[16]=_,t[17]=v,t[18]=y,t[19]=b,t[20]=x,t[21]=S,t[22]=C,t[23]=w,t[24]=T,t[25]=E,t[26]=D,t[27]=O,t[28]=k}else m=t[13],h=t[14],g=t[15],_=t[16],v=t[17],y=t[18],b=t[19],x=t[20],S=t[21],C=t[22],w=t[23],T=t[24],E=t[25],D=t[26],O=t[27],k=t[28];let A;t[59]!==S||t[60]!==C?(A=(0,Q.jsx)(`dl`,{className:S,children:C}),t[59]=S,t[60]=C,t[61]=A):A=t[61];let j;t[62]!==m||t[63]!==A||t[64]!==w||t[65]!==T||t[66]!==E?(j=(0,Q.jsx)(m,{title:w,description:T,control:E,children:A}),t[62]=m,t[63]=A,t[64]=w,t[65]=T,t[66]=E,t[67]=j):j=t[67];let M;t[68]!==_||t[69]!==j||t[70]!==D||t[71]!==O||t[72]!==k?(M=(0,Q.jsxs)(`div`,{className:D,children:[O,k,_,j]}),t[68]=_,t[69]=j,t[70]=D,t[71]=O,t[72]=k,t[73]=M):M=t[73];let N;t[74]!==h||t[75]!==v||t[76]!==M?(N=(0,Q.jsx)(h,{className:v,children:M}),t[74]=h,t[75]=v,t[76]=M,t[77]=N):N=t[77];let P;return t[78]!==g||t[79]!==y||t[80]!==b||t[81]!==x||t[82]!==N?(P=(0,Q.jsxs)(g,{open:y,onOpenChange:b,children:[x,N]}),t[78]=g,t[79]=y,t[80]=b,t[81]=x,t[82]=N,t[83]=P):P=t[83],P}function st(e){return(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`dt`,{className:`text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground/65`,children:e.label}),(0,Q.jsx)(`dd`,{className:`mt-1 truncate font-mono text-[11px] text-foreground`,children:e.value})]},e.label)}var ct={configuration_invalid:{headline:`Hub configuration is invalid`,detail:`The address this backend started with was rejected. Check it and restart.`,action:`none`},identity_unavailable:{headline:`Can't read this machine's Hub key`,detail:`The system keychain is locked or unavailable. Unlock it, then try again.`,action:`retry`},identity_store_unavailable:{headline:`Can't read this machine's Hub key`,detail:`The keychain was unavailable when Ryco started. Restart Ryco to try again.`,action:`restart`},identity_origin_mismatch:{headline:`Enrolled with a different Hub`,detail:`This machine's key belongs to another Hub. Leave that Hub to enrol here.`,action:`leave`},enrollment_unavailable:{headline:`Enrollment was denied`,detail:`Someone declined this request on the Hub. Check with them before trying again.`,action:`enroll`},enrollment_expired:{headline:`Enrollment expired`,detail:`The request timed out before it was approved.`,action:`enroll`},authentication_failed:{headline:`The Hub rejected this machine's key`,detail:`Check this node's status on the Hub. Leaving lets you enrol again from scratch.`,action:`open-hub`},connection_replaced:{headline:`Another process connected as this machine`,detail:`Two copies of Ryco can't share one Hub identity. Stop the other one, then retry.`,action:`retry`},protocol_invalid:{headline:`The Hub connection kept failing`,detail:`Ryco stopped retrying after repeated protocol errors. Update Ryco and the Hub.`,action:`retry`},network_unavailable:{headline:`Can't reach the Hub`,detail:null,action:`none`},tls_unavailable:{headline:`Can't reach the Hub securely`,detail:null,action:`none`},authentication_timeout:{headline:`The Hub didn't respond`,detail:null,action:`none`},server_draining:{headline:`The Hub is restarting`,detail:null,action:`none`},rate_limited:{headline:`The Hub is rate limiting`,detail:null,action:`none`},heartbeat_timeout:{headline:`The Hub stopped responding`,detail:null,action:`none`},slow_consumer:{headline:`The connection fell behind`,detail:null,action:`none`},internal_error:{headline:`The Hub connection failed`,detail:null,action:`none`}},lt=(e,t)=>{let n=new Date(e).getTime()-t;if(Number.isNaN(n))return null;if(n<=0)return`now`;let r=Math.ceil(n/1e3);return r<60?`${r}s`:`${Math.ceil(r/60)}m`};function ut(e,t,n){switch(e.state){case`disabled`:return t.enrolled===`none`?{dot:`idle`,ping:!1,headline:`Not connected`,detail:null,action:`enable`,secondaryAction:`none`,retrying:!1}:{dot:`idle`,ping:!1,headline:`Turned off`,detail:`This machine stays enrolled.`,action:`enable`,secondaryAction:`leave`,retrying:!1};case`enrolling`:return{dot:`warning`,ping:!1,headline:`Ready to enrol`,detail:`Start enrollment, then approve this machine on your Hub.`,action:`enroll`,secondaryAction:`disable`,retrying:!1};case`awaiting_approval`:return{dot:`warning`,ping:!0,headline:`Waiting for approval on the Hub`,detail:`Compare every field below before approving.`,action:`open-hub`,secondaryAction:`cancel-enrollment`,retrying:!1};case`connecting`:return{dot:`warning`,ping:!0,headline:`Connecting`,detail:null,action:`none`,secondaryAction:`none`,retrying:!1};case`authenticating`:return{dot:`warning`,ping:!0,headline:`Authenticating`,detail:null,action:`none`,secondaryAction:`none`,retrying:!1};case`online`:return{dot:`success`,ping:!0,headline:`Connected`,detail:e.activeChannels===1?`1 active session`:`${e.activeChannels} active sessions`,action:`disable`,secondaryAction:`none`,retrying:!1};case`degraded`:{if(e.degradedMode===`backing_off`){let t=e.nextRetryAt===void 0?null:lt(e.nextRetryAt,n),r=e.reconnectAttempt;return{dot:`warning`,ping:!0,headline:`Reconnecting`,detail:[t===null?null:t===`now`?`Retrying now`:`Next attempt in ${t}`,r===void 0||r===0?null:`attempt ${r}`].filter(e=>e!==null).join(` · `),action:`none`,secondaryAction:`none`,retrying:!0}}let t=ct[e.failure??`internal_error`];return{dot:`destructive`,ping:!1,headline:t.headline,detail:t.detail,action:t.action,secondaryAction:t.action===`leave`?`none`:`leave`,retrying:!1}}case`revoked`:return{dot:`destructive`,ping:!1,headline:`Revoked at the Hub`,detail:`This will not retry. Leaving erases this machine's key so you can enrol again.`,action:`leave`,secondaryAction:`open-hub`,retrying:!1};case`version_incompatible`:return{dot:`destructive`,ping:!1,headline:`Incompatible Hub version`,detail:`This will not retry. Update Ryco, or the Hub, so both speak the same protocol.`,action:`none`,secondaryAction:`none`,retrying:!1};case`stopping`:return{dot:`idle`,ping:!1,headline:`Shutting down`,detail:null,action:`none`,secondaryAction:`none`,retrying:!1}}}function dt(e){return e.enrolled===`none`}var ft=5e3,pt=15e3,mt={enable:`Enable`,disable:`Turn off`,enroll:`Start enrollment`,"cancel-enrollment":`Cancel`,"open-hub":`Open Hub`,retry:`Retry now`,leave:`Leave this Hub`,restart:`Restart Ryco`},ht=1e4;function gt({desktopBridge:e}){let t=Ve(1e3),n=R(),[i,o]=(0,X.useState)(null),[s,c]=(0,X.useState)(null),l=(0,X.useRef)(new Map),u=I(e=>e.closeSettings),[d,f]=(0,X.useState)(null),[p,m]=(0,X.useState)(``),[h,g]=(0,X.useState)(null),[_,y]=(0,X.useState)(``),[x,w]=(0,X.useState)(null),[D,k]=(0,X.useState)(null),[A,j]=(0,X.useState)(``),[P,F]=(0,X.useState)(null),[ee,B]=(0,X.useState)(!1),[te,ne]=(0,X.useState)(null),[V,H]=(0,X.useState)(null),[U,W]=(0,X.useState)(null),[re,G]=(0,X.useState)(!1),[ae,oe]=(0,X.useState)(!1),[K,se]=(0,X.useState)(null),[ce,le]=(0,X.useState)(!1),[de,pe]=(0,X.useState)(null),[me,he]=(0,X.useState)(!1),[ge,_e]=(0,X.useState)(null),[ve,ye]=(0,X.useState)(!1),[be,xe]=(0,X.useState)(null),[Se,Ce]=(0,X.useState)(``),J=(0,X.useRef)(!0),we=(0,X.useRef)(null),{copyToClipboard:Te}=fe(),Ee=typeof window<`u`&&window.isSecureContext&&navigator.clipboard?.writeText!=null;(0,X.useEffect)(()=>(J.current=!0,()=>{J.current=!1}),[]);let De=(0,X.useCallback)(async()=>{try{let[e,t]=await Promise.all([S(),C()]),n=e.state===`awaiting_approval`?await E():null;if(!J.current)return;o({status:e,identity:t,enrollment:n,readAt:Date.now()}),ne(null)}catch(e){if(!J.current)return;ne(e instanceof Error?e.message:`Unable to read Hub status.`)}},[]);(0,X.useEffect)(()=>{let e=N({lifecycle:M,run:De,resolveDelayMs:()=>ft,jitterRatio:.1});return we.current=e,()=>{we.current===e&&(we.current=null),e.stop()}},[De]);let Oe=(0,X.useCallback)(()=>we.current?.refresh()??De(),[De]);(0,X.useEffect)(()=>{e&&e.getHubLaunchConfig().then(e=>{J.current&&(g(e),y(e.origin??``),j(e.nodeName??``),H(null))}).catch(e=>{J.current&&H(e instanceof Error?e.message:`Unable to read Hub launch configuration.`)})},[e]),(0,X.useEffect)(()=>()=>{for(let e of l.current.values())e();l.current.clear()}),(0,X.useEffect)(()=>{e?.getHostedIdentityState&&e.getHostedIdentityState().then(e=>{J.current&&(se(e),pe(null))}).catch(()=>{J.current&&(se({status:`unavailable`}),pe(`Unable to read the native account setup state.`))})},[e]);let ke=(0,X.useCallback)(async t=>{let n=t===`connect`?e?.connectHostedIdentity:e?.disconnectHostedIdentity;if(n){le(!0),pe(null);try{let e=await n();if(!J.current)return;se(e)}catch{if(!J.current)return;se({status:`unavailable`}),pe(t===`connect`?`Automatic secure setup did not finish. Retry when the Hub is reachable.`:`Unable to clear the native account session.`)}finally{J.current&&le(!1)}}},[e]),Ae=(0,X.useCallback)(async()=>{if(e?.refreshDesktopWorkspaceCatalog){c(null);try{await e.refreshDesktopWorkspaceCatalog()}catch{c(`Unable to refresh this account's machine directory.`)}}},[e]);(0,X.useEffect)(()=>{K?.status===`ready`&&Ae()},[K?.status,Ae]);let Re=(0,X.useCallback)(e=>{l.current.has(e)||l.current.set(e,z(e))},[]),ze=(0,X.useCallback)(e=>{l.current.get(e)?.(),l.current.delete(e)},[]),Be=(0,X.useCallback)(e=>{Re(e),a.getState().setActiveEnvironmentId(e),u()},[u,Re]),Ue=(0,X.useCallback)(async()=>{if(!(!e?.verifyDesktopWorkspaceApproval||!d)){c(null);try{await e.verifyDesktopWorkspaceApproval({nodeId:d.nodeId,environmentId:r.make(d.environmentId),payload:p.trim()});let t=L(r.make(d.environmentId));globalThis.setTimeout(t,ht),await e.cancelDesktopWorkspaceVerification?.(d.handle).catch(()=>void 0),f(null),m(``)}catch{c(`That approval code does not match this Desktop client, machine, account, or current node security state.`)}}},[e,p,d]),qe=(0,X.useCallback)(async t=>{if(e?.beginDesktopWorkspaceVerification){c(null);try{d&&await e.cancelDesktopWorkspaceVerification?.(d.handle).catch(()=>void 0);let n=await e.beginDesktopWorkspaceVerification({nodeId:t.nodeId,environmentId:r.make(t.environmentId)});f({...t,handle:n.handle}),m(``)}catch{c(`Unable to introduce this Desktop client to that machine. Confirm it is online and retry.`)}}},[e,d]),Je=(0,X.useCallback)(async(t,n)=>{let r=t===`connect`?e?.connectHostedGitHub:e?.disconnectHostedGitHub;if(r){he(!0),_e(null);try{let e=await r(n?{totpCode:n}:void 0);if(!J.current)return;se(e.state),e.outcome===`step-up-required`?(xe(t),Ce(``)):(xe(null),Ce(``),ye(!1),e.outcome===`last-primary-credential`?_e(`Add another primary sign-in method before disconnecting GitHub.`):e.outcome===`unavailable`&&_e(`GitHub account access is temporarily unavailable.`))}catch{J.current&&_e(`GitHub account access is temporarily unavailable.`)}finally{J.current&&he(!1)}}},[e]),Ye=(0,X.useCallback)(async t=>{W(t),ne(null);try{switch(t){case`enroll`:await v();break;case`cancel-enrollment`:await O();break;case`retry`:await T();break;case`leave`:await b();break;case`enable`:case`disable`:await e?.setHubLaunchConfig({enabled:t===`enable`});return;case`restart`:if(!e?.restartApp)throw Error(`Desktop restart is unavailable.`);await e.restartApp();return;case`open-hub`:{let e=h?.origin;e&&window.open(e,`_blank`,`noopener,noreferrer`);return}default:return}await Oe()}catch(e){if(!J.current)return;ne(e instanceof Error?e.message:`That didn't work.`)}finally{J.current&&W(null)}},[h,e,Oe]),Xe=(0,X.useCallback)(async()=>{if(!e||_.trim()===``){w(null),k(null);return}let t=await e.validateHubOrigin(_);if(J.current){if(t.ok){y(t.origin),w(null),k(null);return}k(t.suggestion??null),w({empty:`Enter a Hub address.`,too_long:`That address is too long.`,not_a_url:`That doesn't look like an address.`,insecure_scheme:`A Hub address must use https.`,has_credentials:`Remove the username and password from the address.`,has_path:`Use the Hub's address only, without a path.`,invalid:`That address can't be used.`}[t.reason])}},[e,_]),Ze=(0,X.useCallback)(async t=>{if(e){W(`enable`);try{await e.setHubLaunchConfig({origin:t})}catch(e){if(!J.current)return;ne(e instanceof Error?e.message:`Unable to save the Hub address.`),W(null)}}},[e]),Qe=(0,X.useCallback)(e=>{j(e),F(e.trim().length>100?`Use 100 characters or fewer.`:null)},[]),$e=(0,X.useCallback)(async()=>{if(!e)return;let t=A.trim();if(t.length>100){F(`Use 100 characters or fewer.`);return}B(!0),F(null);try{await e.setHubLaunchConfig({nodeName:t===``?null:t})}catch(e){if(!J.current)return;F(e instanceof Error?e.message:`Unable to save the Hub node name.`),B(!1)}},[e,A]),Z=(0,X.useCallback)(async t=>{if(e&&!(!await e.confirm(t?`Allow permissioned-file storage when the system credential store is unavailable? Ryco will restart. Existing keys are not moved.`:`Stop allowing permissioned-file Hub key storage? Ryco will restart.`)||!J.current)){G(!0),H(null);try{await e.setHubLaunchConfig({allowFileSecretStore:t})}catch(e){if(!J.current)return;H(e instanceof Error?e.message:`Unable to save the key storage setting.`),G(!1)}}},[e]),et=(0,X.useCallback)(async()=>{if(e)try{let t=new URL(nt,window.location.href).toString();if(!await e.openExternal(t))throw Error(`The relay guide could not be opened.`);H(null)}catch(e){if(!J.current)return;H(e instanceof Error?e.message:`Unable to open the relay guide.`)}},[e]);if(!e)return null;let tt=i!==null&&t-i.readAt>pt,$=i===null?null:ut(i.status,i.identity,t),rt=i!==null&&dt(i.identity),it=_.trim()!==(h?.origin??``),at=A.trim()!==(h?.nodeName??``),st=h!==null&&h.origin!==null&&e.getHostedIdentityState!==void 0&&e.connectHostedIdentity!==void 0&&i?.identity.enrolled===`none`&&($?.action===`enable`||$?.action===`enroll`),ct=(e,t)=>e===`none`?null:(0,Q.jsx)(q,{size:`xs`,variant:t,disabled:U!==null,onClick:()=>{if(e===`leave`){oe(!0);return}Ye(e)},children:U===e?`Working…`:mt[e]});return(0,Q.jsxs)(He,{title:`Hub`,children:[(0,Q.jsx)(Y,{title:`Connection`,description:st?`Connect your Ryco account below. Ryco will register this Mac with this Hub automatically.`:$===null?`Loading…`:$.detail===null?`Reach this Mac from anywhere, including behind NAT or CGNAT, without opening a port.`:$.detail,status:(0,Q.jsxs)(Q.Fragment,{children:[$===null?null:(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`inline-block size-2 shrink-0 rounded-full ${tt?`bg-muted-foreground/40`:$.dot===`success`?`bg-success`:$.dot===`warning`?`bg-warning`:$.dot===`destructive`?`bg-destructive`:`bg-muted-foreground/40`}`,"aria-hidden":!0}),tt?`${$.headline} · last checked ${Math.round((t-i.readAt)/1e3)}s ago`:st?`Ready for account setup`:$.headline]}),te?(0,Q.jsx)(`span`,{className:`block text-destructive`,children:te}):null]}),control:$===null?null:(0,Q.jsxs)(Q.Fragment,{children:[ct(st?`none`:$.action,$.action===`leave`?`destructive-outline`:`outline`),ct(st?`none`:$.secondaryAction,$.secondaryAction===`leave`?`destructive-outline`:`outline`)]}),children:(0,Q.jsx)(Ke,{children:i?.enrollment?(0,Q.jsxs)(`div`,{className:`pb-3.5`,children:[(0,Q.jsx)(`p`,{className:`pb-2 text-xs text-muted-foreground/80`,children:`Compare every field with the Hub's approval screen before approving.`}),(0,Q.jsxs)(Ge,{className:`rounded-xl border border-border/60 bg-muted/20 p-3`,children:[(0,Q.jsx)(We,{term:`Label`,children:i.enrollment.label}),(0,Q.jsx)(We,{term:`Platform`,children:`${i.enrollment.platformOs} · ${i.enrollment.platformArch}`}),(0,Q.jsx)(We,{term:`Version`,mono:!0,children:i.enrollment.clientVersion}),(0,Q.jsx)(We,{term:`Algorithm`,children:i.enrollment.algorithm}),(0,Q.jsx)(We,{term:`Fingerprint`,mono:!0,children:i.enrollment.fingerprint}),(0,Q.jsx)(We,{term:`Expires`,children:new Date(i.enrollment.expiresAt).toLocaleString()}),(0,Q.jsx)(We,{term:`Device code`,mono:!0,action:Ee?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>Te(i.enrollment.deviceCode),children:`Copy`}):null,children:i.enrollment.deviceCode})]}),(0,Q.jsx)(`p`,{className:`pt-2 text-[11px] text-muted-foreground/70`,children:`The device code only routes the request. It does not prove which machine you are approving.`}),(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 pt-2 text-xs text-warning`,children:[(0,Q.jsx)(ie,{className:`size-3.5 shrink-0`}),`If the fingerprint on the Hub differs by even one character, deny it there and cancel here.`]})]}):null})}),h!==null&&h.origin!==null&&e.getHostedIdentityState!==void 0?(0,Q.jsx)(Y,{title:`Ryco account`,description:K===null?`Checking this Mac's native account setup…`:st&&K.status===`ready`?`You are signed in. Finish setup to register this Mac with the Hub and verify local trust automatically.`:K.status===`ready`?`Your native account session and this Mac's automatic node claim are ready. Local trust introduction is verified.`:K.status===`signed-out`?`Sign in in your browser. Ryco will claim this Mac's node and verify its local trust automatically.`:`Automatic secure setup did not finish. Existing node and trust state are preserved while you retry.`,status:(0,Q.jsxs)(Q.Fragment,{children:[K===null?null:(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`inline-block size-2 shrink-0 rounded-full ${st&&K.status===`ready`?`bg-warning`:K.status===`ready`?`bg-success`:K.status===`unavailable`?`bg-warning`:`bg-muted-foreground/40`}`,"aria-hidden":!0}),K.status===`ready`?st?`Signed in · Node setup needed`:`Secure setup complete`:K.status===`unavailable`?`Setup needs attention`:`Not signed in`]}),de?(0,Q.jsx)(`span`,{className:`block text-destructive`,children:de}):null]}),control:K===null?null:st&&K.status===`ready`?(0,Q.jsx)(q,{size:`xs`,disabled:ce||!e.connectHostedIdentity,onClick:()=>void ke(`connect`),children:ce?`Finishing setup…`:`Finish setup`}):K.status===`ready`?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:ce||!e.disconnectHostedIdentity,onClick:()=>void ke(`disconnect`),children:ce?`Working…`:`Sign out`}):(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:ce||!e.connectHostedIdentity,onClick:()=>void ke(`connect`),children:ce?`Opening browser…`:K.status===`unavailable`?`Retry secure setup`:`Connect account`})}):null,K?.status===`ready`&&e?.getDesktopWorkspaceState?(0,Q.jsxs)(Y,{title:`Workspace machines`,description:`Connect, open, and manage each machine independently. Cached lists remain read-only until connected.`,status:s??`${n.machines.filter(e=>e.online).length} online · ${n.activeConnectionCount} connected`,control:(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>void Ae(),children:`Refresh`}),children:[(0,Q.jsx)(Ge,{children:n.machines.map(e=>(0,Q.jsx)(We,{term:e.label,action:(0,Q.jsx)(`div`,{className:`flex flex-wrap justify-end gap-1.5`,children:e.nodeId&&e.online&&(e.nativeTrust===`unverified`||e.nativeTrust===`unknown`)?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>{qe({nodeId:e.nodeId,environmentId:e.environmentId})},children:`Verify`}):e.nativeTrust===`verified`&&e.online?e.connectionState===`connected`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>Be(e.environmentId),children:`Open`}),(0,Q.jsx)(q,{size:`xs`,variant:`ghost`,onClick:()=>ze(e.environmentId),children:`Disconnect`})]}):(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>Re(e.environmentId),children:`Connect`}):null}),children:e.nativeTrust===`verified`?e.online?`Verified · ${e.connectionState===`connected`?`Connected`:`Online`}`:`Verified · Offline`:e.nativeTrust===`identity-conflict`?`Identity changed · Locked`:e.online?`Needs verification`:`Needs verification · Offline`},`${e.nodeId??`unknown`}:${e.environmentId}`))}),d?(0,Q.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2 border-t border-border/60 py-3 sm:flex-row`,children:[(0,Q.jsx)(ue,{value:p,onChange:e=>m(e.target.value),placeholder:`Paste the approval code shown by this exact node`,"aria-label":`Machine approval code`}),(0,Q.jsx)(q,{size:`sm`,disabled:p.trim().length===0,onClick:()=>void Ue(),children:`Verify`}),(0,Q.jsx)(q,{size:`sm`,variant:`ghost`,onClick:()=>{e.cancelDesktopWorkspaceVerification?.(d.handle).catch(()=>void 0),f(null),m(``)},children:`Cancel`})]}):null]}):null,K?.status===`ready`&&K.github!==void 0?(0,Q.jsx)(Y,{title:K.github.identity?`GitHub · @${K.github.identity.login}`:`GitHub`,description:K.github.identity?`Use this GitHub identity to sign in to Ryco. Repository access remains separate.`:`Connect GitHub as another way to sign in. Ryco requests no repository access.`,status:ge?(0,Q.jsx)(`span`,{className:`block text-destructive`,children:ge}):K.github.identity?.displayName?K.github.identity.displayName:null,control:K.github.linkAvailable?K.github.identity?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:me||!e?.disconnectHostedGitHub,onClick:()=>ye(!0),children:me?`Working…`:`Disconnect`}):(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:me||!e?.connectHostedGitHub,onClick:()=>void Je(`connect`),children:me?`Opening browser…`:`Connect GitHub`}):null}):null,(0,Q.jsx)(Y,{title:`Hub address`,description:rt?`The address of the Hub you or your team operate.`:`Locked while this machine is enrolled. Leave this Hub to change it.`,status:x?(0,Q.jsxs)(`span`,{className:`block text-destructive`,children:[x,D?(0,Q.jsxs)(`button`,{type:`button`,className:`ml-1 underline underline-offset-2`,onClick:()=>{y(D),w(null),k(null)},children:[`Use `,D]}):null]}):null,control:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ue,{value:_,disabled:!rt||U!==null,placeholder:`https://…`,className:`w-64 font-mono text-xs`,onChange:e=>y(e.currentTarget.value),onBlur:()=>void Xe()}),rt&&it&&x===null&&_.trim()!==``?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:U!==null,onClick:()=>void Ze(_.trim()),children:`Save and restart`}):null]})}),(0,Q.jsx)(Y,{title:`Node name`,description:rt?`Choose the name proposed on the Hub approval screen. Leave it blank for a stable automatic name.`:i?.identity.enrolled===`pending`?`Locked while enrollment is pending. Cancel enrollment to change the proposed name.`:`Managed on the Hub after enrollment. An owner can rename this node from its Hub details.`,status:P?(0,Q.jsx)(`span`,{className:`block text-destructive`,children:P}):null,control:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ue,{value:A,disabled:!rt||U!==null||ee,placeholder:`Automatic: machine name · node code`,"aria-label":`Hub node name`,className:`w-64 text-xs`,onChange:e=>Qe(e.currentTarget.value)}),rt&&at&&P===null?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:U!==null||ee,onClick:()=>void $e(),children:ee?`Saving…`:`Save and restart`}):null]})}),i!==null&&i.status.state===`online`?(0,Q.jsx)(Y,{title:`Who can connect`,description:`Managed on the Hub, not here. Sessions arriving through the Hub carry a role: viewer reads, operator edits files and runs terminals, owner also changes credentials and server policy.`}):null,(0,Q.jsx)(ot,{config:h,identity:i?.identity??null,status:i?.status??null,nowMs:t,savingFileFallback:re||U!==null,configError:V,onFileFallbackChange:e=>void Z(e),onOpenGuide:()=>void et()}),(0,Q.jsx)(Le,{open:ae,onOpenChange:oe,children:(0,Q.jsxs)(Pe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ie,{children:`Leave this Hub?`}),(0,Q.jsxs)(Fe,{children:[`This erases this machine's Hub key. You can enrol again afterwards, but it will join as a new machine and needs a new approval.`,(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`br`,{}),`It does `,(0,Q.jsx)(`strong`,{children:`not`}),` revoke anything on the Hub. The old entry stays there until an owner removes it.`]})]}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(Ne,{children:`Keep it`}),(0,Q.jsx)(q,{variant:`destructive`,disabled:U!==null,onClick:()=>{oe(!1),Ye(`leave`)},children:`Erase this machine's key`})]})]})}),(0,Q.jsx)(Le,{open:ve,onOpenChange:ye,children:(0,Q.jsxs)(Pe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ie,{children:`Disconnect GitHub?`}),(0,Q.jsx)(Fe,{children:`GitHub stops working as a Ryco sign-in method. Ryco refuses this change when it is your only primary sign-in method. Repository access is separate.`})]}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(Ne,{children:`Cancel`}),(0,Q.jsx)(q,{variant:`destructive`,disabled:me,onClick:()=>void Je(`disconnect`),children:`Disconnect GitHub`})]})]})}),(0,Q.jsx)(Le,{open:be!==null,onOpenChange:t=>{!t&&!me&&(be===`connect`&&e?.cancelHostedGitHubConnection?.(),xe(null),Ce(``))},children:(0,Q.jsxs)(Pe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ie,{children:`Confirm this account change`}),(0,Q.jsx)(Fe,{children:`Enter a current code from your authenticator app. The pending GitHub authorization is reused; Ryco does not reopen the browser.`})]}),(0,Q.jsx)(ue,{"aria-label":`Authenticator code`,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:16,value:Se,onChange:e=>Ce(e.currentTarget.value.replace(/\D/gu,``))}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(Ne,{children:`Cancel`}),(0,Q.jsx)(q,{disabled:me||Se.length<6,onClick:()=>{be!==null&&Je(be,Se)},children:`Confirm`})]})]})})]})}var _t=443,vt=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function yt(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:vt.format(t)}function bt(e){let t=(0,Z.c)(21),{tooltipText:n,dotClassName:r,pingClassName:i}=e,a;t[0]===i?a=t[1]:(a=i?(0,Q.jsx)(`span`,{className:G(`absolute inline-flex h-full w-full animate-status-ping rounded-full`,i)}):null,t[0]=i,t[1]=a);let o;t[2]===r?o=t[3]:(o=G(`relative inline-flex size-2 rounded-full`,r),t[2]=r,t[3]=o);let s;t[4]===o?s=t[5]:(s=(0,Q.jsx)(`span`,{className:o}),t[4]=o,t[5]=s);let c;t[6]!==a||t[7]!==s?(c=(0,Q.jsxs)(Q.Fragment,{children:[a,s]}),t[6]=a,t[7]=s,t[8]=c):c=t[8];let l=c;if(!n){let e;return t[9]===l?e=t[10]:(e=(0,Q.jsx)(`span`,{className:`relative flex size-3 shrink-0 items-center justify-center`,children:l}),t[9]=l,t[10]=e),e}let u;t[11]!==l||t[12]!==n?(u=(0,Q.jsx)(`button`,{type:`button`,title:n,"aria-label":n,className:`relative flex size-3 shrink-0 cursor-help items-center justify-center rounded-full outline-hidden`,children:l}),t[11]=l,t[12]=n,t[13]=u):u=t[13];let d=u,f;t[14]===d?f=t[15]:(f=(0,Q.jsx)(K,{render:d}),t[14]=d,t[15]=f);let p;t[16]===n?p=t[17]:(p=(0,Q.jsx)(se,{side:`top`,className:`max-w-80 whitespace-pre-wrap leading-tight`,children:n}),t[16]=n,t[17]=p);let m;return t[18]!==f||t[19]!==p?(m=(0,Q.jsxs)(ce,{children:[f,p]}),t[18]=f,t[19]=p,t[20]=m):m=t[20],m}function xt(e,t,n){let r=e?.connectionState??`disconnected`;if(r===`connected`){let r=e?.connectedAt??t.lastConnectedAt;return r?`Connected for ${oe(r,n)}`:null}return r===`connecting`?null:r===`error`?e?.lastError??`An unknown connection error occurred.`:t.lastConnectedAt?`Last connected at ${yt(t.lastConnectedAt)}`:`Not connected yet.`}function St(e){let t=e.username?`${e.username}@${e.hostname}`:e.hostname;return e.port?`${t}:${e.port}`:t}function Ct(e){let t=e.host.trim();if(t.length===0)throw Error(`SSH host or alias is required.`);let n=t,r=e.username.trim()||null,i=null,a=n.lastIndexOf(`@`);if(a>0){let e=n.slice(0,a).trim();n=n.slice(a+1).trim(),!r&&e.length>0&&(r=e)}let o=/^\[([^\]]+)\](?::(\d+))?$/u.exec(n);if(o)n=o[1].trim(),o[2]&&(i=Number.parseInt(o[2],10));else{let e=n.split(`:`);e.length===2&&/^\d+$/u.test(e[1]??``)&&(n=e[0].trim(),i=Number.parseInt(e[1],10))}let s=e.port.trim();if(s.length>0&&(i=Number.parseInt(s,10)),n.length===0)throw Error(`SSH host or alias is required.`);if(i!==null&&(!Number.isInteger(i)||i<=0||i>65535))throw Error(`SSH port must be between 1 and 65535.`);return{alias:n,hostname:n,username:r,port:i}}function wt(e){let t=e.trim();if(!t)return null;try{let e=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//u.test(t)||t.startsWith(`//`)?t:`https://${t}`,n=new URL(e,window.location.origin),r=P(n);if(r)return{host:r.host,pairingCode:r.token};let i=j(n);return i?{host:n.origin,pairingCode:i}:null}catch{return null}}function Tt(e){let t=wt(e.host);if(t)return t;let n=e.host.trim(),r=e.pairingCode.trim();if(!n)throw Error(`Enter a backend host.`);if(!r)throw Error(`Enter a pairing code.`);return{host:n,pairingCode:r}}function Et(e){let t=`Failed to connect SSH host.`;return(e instanceof Error?e.message:t).replace(/^Error invoking remote method 'desktop:ensure-ssh-environment':\s*/u,``).replace(/^Ssh[A-Za-z]+Error:\s*/u,``).trim()||t}var Dt=`border-t border-border/60 px-4 py-4 first:border-t-0 sm:px-5`,Ot=`border-t border-border/60 px-4 py-2.5 first:border-t-0 sm:px-5`,kt=`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`;function At(e){return Dt}function jt(e,t){return e===`endpoint-rail`?G(`relative border-t border-border/60 px-4 py-3 first:border-t-0 sm:px-5`,!t&&`bg-muted/20`):G(Ot,!t&&`bg-muted/24`)}function Mt(e){return[...e].toSorted((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime())}function Nt(e){return[...e].toSorted((e,t)=>e.current===t.current?e.connected===t.connected?new Date(t.issuedAt).getTime()-new Date(e.issuedAt).getTime():e.connected?-1:1:e.current?-1:1)}function Pt(e){return{...e,createdAt:i(e.createdAt),expiresAt:i(e.expiresAt)}}function Ft(e){return{...e,issuedAt:i(e.issuedAt),expiresAt:i(e.expiresAt),lastConnectedAt:e.lastConnectedAt===null?null:i(e.lastConnectedAt)}}function It(e,t){let n=e.findIndex(e=>e.id===t.id);if(n===-1)return Mt([...e,t]);let r=[...e];return r[n]=t,Mt(r)}function Lt(e,t){return e.filter(e=>e.id!==t)}function Rt(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);if(n===-1)return Nt([...e,t]);let r=[...e];return r[n]=t,Nt(r)}function zt(e,t){return e.filter(e=>e.sessionId!==t)}function Bt(e,t){let n=e.filter(e=>e.status!==`unavailable`);if(t){let e=n.find(e=>Ht(e)===t);if(e)return e}return n.find(e=>e.isDefault)??n.find(e=>e.reachability!==`loopback`)??n.find(e=>e.compatibility.hostedHttpsApp===`compatible`)??null}function Vt(e){return e.id.startsWith(`tailscale-magicdns:`)}function Ht(e){if(e.id.startsWith(`desktop-loopback:`)||e.id.startsWith(`server-loopback:`))return`desktop-core:loopback:http`;if(e.id.startsWith(`desktop-lan:`)||e.id.startsWith(`server-network:`))return`desktop-core:lan:http`;if(e.id.startsWith(`tailscale-ip:`))return`tailscale:ip:http`;if(Vt(e))return`tailscale:magicdns:https`;let t=`unknown`;try{t=new URL(e.httpBaseUrl).protocol.replace(/:$/u,``)}catch{}return`${e.provider.id}:${e.reachability}:${t}:${e.label}`}function Ut(e){switch(e){case`mixed-content-blocked`:return`Hosted app blocked`;case`requires-configuration`:return`Setup required for hosted app`;default:return null}}function Wt(e){switch(e){case`mixed-content-blocked`:return`The hosted HTTPS app cannot connect to HTTP endpoints because browsers block mixed content.`;case`requires-configuration`:return`Configure HTTPS access before using this endpoint from the hosted app.`;default:return null}}function Gt(e,t){return e.compatibility.hostedHttpsApp===`compatible`?tt(e.httpBaseUrl,t)??et(e.httpBaseUrl,t):et(e.httpBaseUrl,t)}function Kt(e){let t=new URL(`/pair`,window.location.href);return A(t,e).toString()}function qt(e){try{let t=new URL(e);return t.pathname===`/pair`&&t.searchParams.has(`host`)}catch{return!1}}var Jt=(0,X.memo)(function(e){let t=(0,Z.c)(146),{pairingLink:n,endpointUrl:r,endpoints:i,defaultEndpointKey:a,presentation:o,revokingPairingLinkId:s,onRevoke:c}=e,l=o===void 0?`current`:o,u=Ve(1e3),d;t[0]===n.expiresAt?d=t[1]:(d=new Date(n.expiresAt).getTime(),t[0]=n.expiresAt,t[1]=d);let f=d,[p,m]=(0,X.useState)(!1),h;t[2]===n.credential?h=t[3]:(h=Kt(n.credential),t[2]=n.credential,t[3]=h);let g=h,_;t[4]!==r||t[5]!==n.credential?(_=r!=null&&r!==``?tt(r,n.credential):null,t[4]=r,t[5]=n.credential,t[6]=_):_=t[6];let v=_,y;if(t[7]!==a||t[8]!==i||t[9]!==n.credential){let e=Bt(i,a);y=e?Gt(e,n.credential):null,t[7]=a,t[8]=i,t[9]=n.credential,t[10]=y}else y=t[10];let b=y,S;if(t[11]!==i||t[12]!==n.credential){let e;t[14]===n.credential?e=t[15]:(e=e=>{let t=Gt(e,n.credential);return{key:Ht(e),label:e.label,url:t,detail:qt(t)?`Hosted app link`:`Backend pairing URL`}},t[14]=n.credential,t[15]=e),S=i.filter(an).map(e),t[11]=i,t[12]=n.credential,t[13]=S}else S=t[13];let C=S,w;t[16]!==g||t[17]!==b||t[18]!==r||t[19]!==v||t[20]!==n.credential?(w=b??(r!=null&&r!==``?v??et(r,n.credential):x(window.location.hostname)?null:g),t[16]=g,t[17]=b,t[18]=r,t[19]=v,t[20]=n.credential,t[21]=w):w=t[21];let T=w,E=T??n.credential,D=T!==null&&qt(T),O=typeof window<`u`&&window.isSecureContext&&navigator.clipboard?.writeText!=null,k;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(k={onCopy:on,onError:(e,t)=>{m(!0),V.add(pe({type:`error`,title:O?t===`hosted-link`?`Could not copy hosted app link`:t===`link`?`Could not copy pairing URL`:`Could not copy pairing code`:`Clipboard copy unavailable`,description:O?e.message:`Showing the full value instead.`}))}},t[22]=k):k=t[22];let{copyToClipboard:A}=fe(k),j;t[23]===A?j=t[24]:(j=(e,t)=>{A(e,t)},t[23]=A,t[24]=j);let M=j,N=sn,P;t[25]!==M||t[26]!==n.credential?(P=()=>{M(n.credential,`code`)},t[25]=M,t[26]=n.credential,t[27]=P):P=t[27];let F=P,I;t[28]!==M||t[29]!==T?(I=()=>{T&&M(T,N(T))},t[28]=M,t[29]=T,t[30]=I):I=t[30];let ee=I,L;t[31]===n.expiresAt?L=t[32]:(L=yt(n.expiresAt),t[31]=n.expiresAt,t[32]=L);let R=L,z=n.role===`owner`?`Owner`:`Client`,B=n.label??`${z} link`,te;t[33]!==a||t[34]!==C?(te=C.find(e=>e.key===a)??C[0]??null,t[33]=a,t[34]=C,t[35]=te):te=t[35];let H=te?.label??`URL`,W,re,ie,G,oe,K,se,ce,le;if(t[36]!==M||t[37]!==H||t[38]!==C||t[39]!==R||t[40]!==f||t[41]!==F||t[42]!==ee||t[43]!==p||t[44]!==u||t[45]!==n.createdAt||t[46]!==n.expiresAt||t[47]!==l||t[48]!==B||t[49]!==z||t[50]!==T){le=Symbol.for(`react.early_return_sentinel`);bb0:{let e=C.filter(cn),r=C.filter(ln),i;t[60]!==M||t[61]!==C?(i=(e,t)=>{let n=e===void 0?C:e,r=t===void 0||t;return n.map(e=>(0,Q.jsx)(Oe,{onClick:()=>M(e.url,N(e.url)),children:(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate`,children:e.label}),r?(0,Q.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:e.detail}):null]})},e.key))},t[60]=M,t[61]=C,t[62]=i):i=t[62];let a=i,o;t[63]===F?o=t[64]:(o=e=>(0,Q.jsx)(Oe,{onClick:F,children:(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate`,children:`Copy code`}),e===void 0||e?(0,Q.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:`Token only`}):null]})}),t[63]=F,t[64]=o);let s=o,c;t[65]===a?c=t[66]:(c=(e,t,n)=>t.length>0?(0,Q.jsxs)(Q.Fragment,{children:[n?(0,Q.jsx)(we,{}):null,(0,Q.jsxs)(Ce,{children:[(0,Q.jsx)(Ee,{children:e}),a(t,!1)]})]}):null,t[65]=a,t[66]=c);let d=c,h=t=>(0,Q.jsxs)(Q.Fragment,{children:[t?.codeFirst?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(Ce,{children:[(0,Q.jsx)(Ee,{children:`Pairing code`}),s(!1)]}),C.length>0?(0,Q.jsx)(we,{}):null]}):null,d(`Pairing URLs`,e,!1),d(`Hosted app link`,r,e.length>0),t?.codeFirst?null:(0,Q.jsxs)(Q.Fragment,{children:[C.length>0?(0,Q.jsx)(we,{}):null,(0,Q.jsxs)(Ce,{children:[(0,Q.jsx)(Ee,{children:`Pairing code`}),s(!1)]})]})]});if(f<=u){le=null;break bb0}t[67]===l?ce=t[68]:(ce=At(l),t[67]=l,t[68]=ce),K=kt;let g;t[69]===n.createdAt?g=t[70]:(g=yt(n.createdAt),t[69]=n.createdAt,t[70]=g);let _=`Link created at ${g}`,v;t[71]===_?v=t[72]:(v=(0,Q.jsx)(bt,{tooltipText:_,dotClassName:`bg-amber-400`}),t[71]=_,t[72]=v);let y;t[73]===B?y=t[74]:(y=(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:B}),t[73]=B,t[74]=y);let b;t[75]===T?b=t[76]:(b=T?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ze,{openOnHover:!0,delay:250,closeDelay:100,render:(0,Q.jsx)(`button`,{type:`button`,className:`inline-flex size-4 shrink-0 items-center justify-center rounded-sm text-muted-foreground/50 outline-none hover:text-foreground`,"aria-label":`Show QR code`}),children:(0,Q.jsx)(U,{"aria-hidden":!0,className:`size-3`})}),(0,Q.jsx)(Re,{side:`top`,align:`start`,tooltipStyle:!0,className:`w-max`,children:(0,Q.jsx)(Ye,{value:T,size:88,level:`M`,marginSize:2,title:`Pairing link — scan to open on another device`})})]}):null,t[75]=T,t[76]=b);let x;t[77]===b?x=t[78]:(x=(0,Q.jsx)(Be,{children:b}),t[77]=b,t[78]=x);let S;t[79]!==v||t[80]!==y||t[81]!==x?(S=(0,Q.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[v,y,x]}),t[79]=v,t[80]=y,t[81]=x,t[82]=S):S=t[82];let w;t[83]!==u||t[84]!==n.expiresAt?(w=ae(n.expiresAt,u),t[83]=u,t[84]=n.expiresAt,t[85]=w):w=t[85];let E;t[86]!==z||t[87]!==w?(E=[z,w],t[86]=z,t[87]=w,t[88]=E):E=t[88];let D=E.join(` · `),k;t[89]!==R||t[90]!==D?(k=(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,title:R,children:D}),t[89]=R,t[90]=D,t[91]=k):k=t[91];let A;t[92]===T?A=t[93]:(A=T===null?(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground/70`,children:`Copy the token and pair from another client using this backend's reachable host.`}):null,t[92]=T,t[93]=A),t[94]!==S||t[95]!==k||t[96]!==A?(se=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[S,k,A]}),t[94]=S,t[95]=k,t[96]=A,t[97]=se):se=t[97],oe=`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,W=Se,re=p,ie=m,G=O?(0,Q.jsx)(Q.Fragment,{children:T?(0,Q.jsxs)(Je,{"aria-label":`Copy selected endpoint`,children:[(0,Q.jsx)(q,{size:`xs`,variant:`outline`,className:`max-w-56`,title:`Copy pairing URL for: ${H}`,onClick:ee,children:(0,Q.jsxs)(`span`,{className:`truncate`,children:[`Copy pairing URL for: `,H]})}),(0,Q.jsx)(qe,{}),(0,Q.jsxs)(Te,{children:[(0,Q.jsx)(De,{render:(0,Q.jsx)(q,{size:`icon-xs`,variant:`outline`,"aria-label":`Choose endpoint to copy`}),children:(0,Q.jsx)(ne,{className:`size-3.5`})}),(0,Q.jsx)(J,{align:`end`,className:`min-w-60`,children:h()})]})]}):(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:F,children:`Copy code`})}):(0,Q.jsx)(_e,{render:(0,Q.jsx)(q,{size:`xs`,variant:`outline`}),children:T?`Show link`:`Show code`})}t[36]=M,t[37]=H,t[38]=C,t[39]=R,t[40]=f,t[41]=F,t[42]=ee,t[43]=p,t[44]=u,t[45]=n.createdAt,t[46]=n.expiresAt,t[47]=l,t[48]=B,t[49]=z,t[50]=T,t[51]=W,t[52]=re,t[53]=ie,t[54]=G,t[55]=oe,t[56]=K,t[57]=se,t[58]=ce,t[59]=le}else W=t[51],re=t[52],ie=t[53],G=t[54],oe=t[55],K=t[56],se=t[57],ce=t[58],le=t[59];if(le!==Symbol.for(`react.early_return_sentinel`))return le;let ue=T?D?`Hosted app pairing link`:`Pairing link`:`Pairing code`,de;t[98]===ue?de=t[99]:(de=(0,Q.jsx)(he,{children:ue}),t[98]=ue,t[99]=de);let ve=T?D?`Clipboard copy is unavailable here. Open or manually copy this hosted app link on the device you want to connect.`:`Clipboard copy is unavailable here. Open or manually copy this full pairing URL on the device you want to connect.`:`Clipboard copy is unavailable here. Manually copy this code into another client.`,ke;t[100]===ve?ke=t[101]:(ke=(0,Q.jsx)(be,{children:ve}),t[100]=ve,t[101]=ke);let je;t[102]!==de||t[103]!==ke?(je=(0,Q.jsxs)(me,{children:[de,ke]}),t[102]=de,t[103]=ke,t[104]=je):je=t[104];let Me=T?4:3,Ne;t[105]!==E||t[106]!==Me?(Ne=(0,Q.jsx)(Ae,{readOnly:!0,value:E,rows:Me,className:`text-xs leading-relaxed`,onFocus:un,onClick:dn}),t[105]=E,t[106]=Me,t[107]=Ne):Ne=t[107];let Pe;t[108]===T?Pe=t[109]:(Pe=T?(0,Q.jsx)(`div`,{className:`flex justify-center rounded-xl border border-border/60 bg-muted/30 p-4`,children:(0,Q.jsx)(Ye,{value:T,size:132,level:`M`,marginSize:2,title:`Pairing link — scan to open on another device`})}):null,t[108]=T,t[109]=Pe);let Fe;t[110]!==Ne||t[111]!==Pe?(Fe=(0,Q.jsxs)(ye,{className:`space-y-4`,children:[Ne,Pe]}),t[110]=Ne,t[111]=Pe,t[112]=Fe):Fe=t[112];let Ie;t[113]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=(0,Q.jsx)(q,{variant:`outline`,onClick:()=>m(!1),children:`Done`}),t[113]=Ie):Ie=t[113];let Le;t[114]===F?Le=t[115]:(Le=O?(0,Q.jsx)(q,{variant:`outline`,size:`xs`,onClick:F,children:`Copy code`}):null,t[114]=F,t[115]=Le);let He;t[116]===Le?He=t[117]:(He=(0,Q.jsxs)(ge,{variant:`bare`,children:[Ie,Le]}),t[116]=Le,t[117]=He);let Ue;t[118]!==je||t[119]!==Fe||t[120]!==He?(Ue=(0,Q.jsxs)(xe,{className:`max-w-md`,children:[je,Fe,He]}),t[118]=je,t[119]=Fe,t[120]=He,t[121]=Ue):Ue=t[121];let Y;t[122]!==W||t[123]!==re||t[124]!==ie||t[125]!==G||t[126]!==Ue?(Y=(0,Q.jsxs)(W,{open:re,onOpenChange:ie,children:[G,Ue]}),t[122]=W,t[123]=re,t[124]=ie,t[125]=G,t[126]=Ue,t[127]=Y):Y=t[127];let We=s===n.id,Ge;t[128]!==c||t[129]!==n.id?(Ge=()=>void c(n.id),t[128]=c,t[129]=n.id,t[130]=Ge):Ge=t[130];let Ke=s===n.id?`Revoking…`:`Revoke`,Xe;t[131]!==We||t[132]!==Ge||t[133]!==Ke?(Xe=(0,Q.jsx)(q,{size:`xs`,variant:`destructive-outline`,disabled:We,onClick:Ge,children:Ke}),t[131]=We,t[132]=Ge,t[133]=Ke,t[134]=Xe):Xe=t[134];let Ze;t[135]!==oe||t[136]!==Y||t[137]!==Xe?(Ze=(0,Q.jsxs)(`div`,{className:oe,children:[Y,Xe]}),t[135]=oe,t[136]=Y,t[137]=Xe,t[138]=Ze):Ze=t[138];let Qe;t[139]!==K||t[140]!==se||t[141]!==Ze?(Qe=(0,Q.jsxs)(`div`,{className:K,children:[se,Ze]}),t[139]=K,t[140]=se,t[141]=Ze,t[142]=Qe):Qe=t[142];let $e;return t[143]!==ce||t[144]!==Qe?($e=(0,Q.jsx)(`div`,{className:ce,children:Qe}),t[143]=ce,t[144]=Qe,t[145]=$e):$e=t[145],$e}),Yt=(0,X.memo)(function(e){let t=(0,Z.c)(50),{clientSession:n,presentation:r,revokingClientSessionId:i,onRevokeSession:a}=e,o=r===void 0?`current`:r,s=Ve(1e3),c=n.current||n.connected,l=n.lastConnectedAt,u;t[0]!==c||t[1]!==l||t[2]!==s?(u=c?l?`Connected for ${oe(l,s)}`:`Connected`:l?`Last connected at ${yt(l)}`:`Not connected yet.`,t[0]=c,t[1]=l,t[2]=s,t[3]=u):u=t[3];let d=u,f=n.role===`owner`?`Owner`:`Client`,p;t[4]===n.client.deviceType?p=t[5]:(p=n.client.deviceType===`unknown`?null:n.client.deviceType[0]?.toUpperCase()+n.client.deviceType.slice(1),t[4]=n.client.deviceType,t[5]=p);let m=n.client.os??null,h=n.client.browser??null,g=n.client.ipAddress??null,_;t[6]!==p||t[7]!==m||t[8]!==h||t[9]!==g?(_=[p,m,h,g].filter(fn),t[6]=p,t[7]=m,t[8]=h,t[9]=g,t[10]=_):_=t[10];let v=_,y;t[11]!==n.client.browser||t[12]!==n.client.label||t[13]!==n.client.os||t[14]!==n.subject?(y=n.client.label??([n.client.os,n.client.browser].filter(Boolean).join(` · `)||n.subject),t[11]=n.client.browser,t[12]=n.client.label,t[13]=n.client.os,t[14]=n.subject,t[15]=y):y=t[15];let b=y,x;t[16]===o?x=t[17]:(x=At(o),t[16]=o,t[17]=x);let S=c?`bg-success`:`bg-muted-foreground/30`,C;t[18]!==d||t[19]!==S?(C=(0,Q.jsx)(bt,{tooltipText:d,dotClassName:S,pingClassName:null}),t[18]=d,t[19]=S,t[20]=C):C=t[20];let w;t[21]===b?w=t[22]:(w=(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:b}),t[21]=b,t[22]=w);let T;t[23]===n.current?T=t[24]:(T=n.current?(0,Q.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 rounded-md border border-border/50 bg-muted/50 px-1 py-0.5`,children:`This device`}):null,t[23]=n.current,t[24]=T);let E;t[25]!==C||t[26]!==w||t[27]!==T?(E=(0,Q.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[C,w,T]}),t[25]=C,t[26]=w,t[27]=T,t[28]=E):E=t[28];let D;t[29]!==v||t[30]!==f?(D=[f,...v],t[29]=v,t[30]=f,t[31]=D):D=t[31];let O=D.join(` · `),k;t[32]===O?k=t[33]:(k=(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:O}),t[32]=O,t[33]=k);let A;t[34]!==E||t[35]!==k?(A=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[E,k]}),t[34]=E,t[35]=k,t[36]=A):A=t[36];let j;t[37]!==n.current||t[38]!==n.sessionId||t[39]!==a||t[40]!==i?(j=n.current?null:(0,Q.jsx)(q,{size:`xs`,variant:`destructive-outline`,disabled:i===n.sessionId,onClick:()=>void a(n.sessionId),children:i===n.sessionId?`Revoking…`:`Revoke`}),t[37]=n.current,t[38]=n.sessionId,t[39]=a,t[40]=i,t[41]=j):j=t[41];let M;t[42]===j?M=t[43]:(M=(0,Q.jsx)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:j}),t[42]=j,t[43]=M);let N;t[44]!==A||t[45]!==M?(N=(0,Q.jsxs)(`div`,{className:kt,children:[A,M]}),t[44]=A,t[45]=M,t[46]=N):N=t[46];let P;return t[47]!==N||t[48]!==x?(P=(0,Q.jsx)(`div`,{className:x,children:N}),t[47]=N,t[48]=x,t[49]=P):P=t[49],P}),Xt=(0,X.memo)(function({clientSessions:e,isRevokingOtherClients:t,onRevokeOtherClients:n}){let[r,i]=(0,X.useState)(!1),[a,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(!1),l=(0,X.useCallback)(async()=>{c(!0);try{await D(a),o(``),i(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to create pairing URL.`;V.add(pe({type:`error`,title:`Could not create pairing URL`,description:t}))}finally{c(!1)}},[a]);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(q,{size:`xs`,variant:`destructive-outline`,disabled:t||e.every(e=>e.current),onClick:()=>void n(),children:t?`Revoking…`:`Revoke others`}),(0,Q.jsxs)(Se,{open:r,onOpenChange:e=>{i(e),e||o(``)},children:[(0,Q.jsx)(_e,{render:(0,Q.jsxs)(q,{size:`xs`,variant:`default`,children:[(0,Q.jsx)(H,{className:`size-3`}),`Create link`]})}),(0,Q.jsxs)(xe,{className:`max-w-sm`,children:[(0,Q.jsxs)(me,{children:[(0,Q.jsx)(he,{children:`Create pairing link`}),(0,Q.jsx)(be,{children:`Generate a one-time link that another device can use to pair with this backend as an authorized client.`})]}),(0,Q.jsx)(ye,{children:(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Client label (optional)`}),(0,Q.jsx)(ue,{value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Living room iPad`,disabled:s,autoFocus:!0})]})}),(0,Q.jsxs)(ge,{variant:`bare`,children:[(0,Q.jsx)(q,{variant:`outline`,disabled:s,onClick:()=>i(!1),children:`Cancel`}),(0,Q.jsx)(q,{disabled:s,onClick:()=>void l(),children:s?`Creating…`:`Create link`})]})]})]})]})}),Zt=(0,X.memo)(function(e){let t=(0,Z.c)(33),{endpointUrl:n,endpoints:r,defaultEndpointKey:i,presentation:a,isLoading:o,pairingLinks:s,clientSessions:c,revokingPairingLinkId:l,revokingClientSessionId:u,onRevokePairingLink:d,onRevokeClientSession:f}=e,p=a===void 0?`current`:a,m;if(t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==d||t[4]!==s||t[5]!==p||t[6]!==l){let e;t[8]!==i||t[9]!==n||t[10]!==r||t[11]!==d||t[12]!==p||t[13]!==l?(e=e=>(0,Q.jsx)(Jt,{pairingLink:e,endpointUrl:n,endpoints:r,defaultEndpointKey:i,presentation:p,revokingPairingLinkId:l,onRevoke:d},e.id),t[8]=i,t[9]=n,t[10]=r,t[11]=d,t[12]=p,t[13]=l,t[14]=e):e=t[14],m=s.map(e),t[0]=i,t[1]=n,t[2]=r,t[3]=d,t[4]=s,t[5]=p,t[6]=l,t[7]=m}else m=t[7];let h;if(t[15]!==c||t[16]!==f||t[17]!==p||t[18]!==u){let e;t[20]!==f||t[21]!==p||t[22]!==u?(e=e=>(0,Q.jsx)(Yt,{clientSession:e,presentation:p,revokingClientSessionId:u,onRevokeSession:f},e.sessionId),t[20]=f,t[21]=p,t[22]=u,t[23]=e):e=t[23],h=c.map(e),t[15]=c,t[16]=f,t[17]=p,t[18]=u,t[19]=h}else h=t[19];let g;t[24]!==c.length||t[25]!==o||t[26]!==s.length||t[27]!==p?(g=s.length===0&&c.length===0&&!o?(0,Q.jsx)(`div`,{className:At(p),children:(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground/60`,children:`No pairing links or client sessions.`})}):null,t[24]=c.length,t[25]=o,t[26]=s.length,t[27]=p,t[28]=g):g=t[28];let _;return t[29]!==m||t[30]!==h||t[31]!==g?(_=(0,Q.jsxs)(Q.Fragment,{children:[m,h,g]}),t[29]=m,t[30]=h,t[31]=g,t[32]=_):_=t[32],_}),Qt=(0,X.memo)(function(e){let t=(0,Z.c)(58),{endpoint:n,isDefault:r,presentation:i,onSetDefault:a,onSetupTailscaleServe:o,onDisableTailscaleServe:s,isUpdatingTailscaleServe:c}=e,l=i===void 0?`current`:i,u=n.status===`available`,d;t[0]===n?d=t[1]:(d=Vt(n)&&n.status!==`available`,t[0]=n,t[1]=d);let f=d,p;t[2]===n.compatibility.hostedHttpsApp?p=t[3]:(p=Ut(n.compatibility.hostedHttpsApp),t[2]=n.compatibility.hostedHttpsApp,t[3]=p);let m=p,h;t[4]===n.compatibility.hostedHttpsApp?h=t[5]:(h=Wt(n.compatibility.hostedHttpsApp),t[4]=n.compatibility.hostedHttpsApp,t[5]=h);let g=h,_;t[6]===n?_=t[7]:(_=Vt(n)&&n.status===`available`,t[6]=n,t[7]=_);let v=_,y=!f,b=l===`endpoint-rail`,x;t[8]!==u||t[9]!==l?(x=jt(l,u),t[8]=u,t[9]=l,t[10]=x):x=t[10];let S;t[11]!==r||t[12]!==b?(S=b&&r?(0,Q.jsx)(`span`,{className:`absolute inset-y-2 left-0 w-1 rounded-r-full bg-primary`,"aria-hidden":!0}):null,t[11]=r,t[12]=b,t[13]=S):S=t[13];let C;t[14]===n.label?C=t[15]:(C=(0,Q.jsx)(`h3`,{className:`shrink-0 text-sm leading-5 font-medium text-foreground`,children:n.label}),t[14]=n.label,t[15]=C);let w;t[16]!==n.httpBaseUrl||t[17]!==y?(w=y?(0,Q.jsx)(`p`,{className:`min-w-0 truncate text-xs leading-5 text-muted-foreground`,title:n.httpBaseUrl,children:n.httpBaseUrl}):null,t[16]=n.httpBaseUrl,t[17]=y,t[18]=w):w=t[18];let T;t[19]===u?T=t[20]:(T=u?null:(0,Q.jsx)(`span`,{className:`shrink-0 rounded-md border border-border/70 px-1 py-0.5 text-[10px] text-muted-foreground`,children:`Setup required`}),t[19]=u,t[20]=T);let E;t[21]!==g||t[22]!==m?(E=m?(0,Q.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 rounded-md border border-amber-500/30 bg-amber-500/10 px-1 py-0.5 text-[10px] text-amber-700 dark:text-amber-300`,title:g??void 0,children:[(0,Q.jsx)(ie,{"aria-hidden":!0,className:`size-3`}),m]}):null,t[21]=g,t[22]=m,t[23]=E):E=t[23];let D;t[24]!==T||t[25]!==E||t[26]!==C||t[27]!==w?(D=(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-3`,children:[C,w,T,E]}),t[24]=T,t[25]=E,t[26]=C,t[27]=w,t[28]=D):D=t[28];let O;t[29]===r?O=t[30]:(O=r?(0,Q.jsx)(`span`,{className:`rounded-md border border-primary/30 bg-primary/10 px-1 py-0.5 text-[10px] text-primary`,children:`Default`}):null,t[29]=r,t[30]=O);let k;t[31]!==n||t[32]!==c||t[33]!==f||t[34]!==o?(k=f?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>o(n),disabled:c,children:c?`Restarting…`:`Setup`}):null,t[31]=n,t[32]=c,t[33]=f,t[34]=o,t[35]=k):k=t[35];let A;t[36]!==v||t[37]!==n||t[38]!==c||t[39]!==s?(A=v?(0,Q.jsx)(q,{size:`xs`,variant:`destructive-outline`,onClick:()=>s(n),disabled:c,children:c?`Restarting…`:`Disable`}):null,t[36]=v,t[37]=n,t[38]=c,t[39]=s,t[40]=A):A=t[40];let j;t[41]!==n||t[42]!==r||t[43]!==f||t[44]!==a?(j=!f&&!r?(0,Q.jsx)(q,{size:`xs`,variant:`outline`,onClick:()=>a(n),children:`Set as default`}):null,t[41]=n,t[42]=r,t[43]=f,t[44]=a,t[45]=j):j=t[45];let M;t[46]!==O||t[47]!==k||t[48]!==A||t[49]!==j?(M=(0,Q.jsxs)(`div`,{className:`ml-auto flex min-h-6 shrink-0 items-center justify-end gap-2`,children:[O,k,A,j]}),t[46]=O,t[47]=k,t[48]=A,t[49]=j,t[50]=M):M=t[50];let N;t[51]!==D||t[52]!==M?(N=(0,Q.jsxs)(`div`,{className:`flex min-h-6 min-w-0 flex-col gap-2 sm:-my-0.5 sm:flex-row sm:items-center`,children:[D,M]}),t[51]=D,t[52]=M,t[53]=N):N=t[53];let P;return t[54]!==N||t[55]!==x||t[56]!==S?(P=(0,Q.jsxs)(`div`,{className:x,children:[S,N]}),t[54]=N,t[55]=x,t[56]=S,t[57]=P):P=t[57],P});function $t(e){let t=(0,Z.c)(17),{endpoint:n,hiddenEndpointCount:r,expanded:i,onToggleExpanded:a,fallback:o}=e;if(!n)return o;let s;t[0]===n.httpBaseUrl?s=t[1]:(s=(0,Q.jsx)(`span`,{className:`min-w-0 truncate`,children:n.httpBaseUrl}),t[0]=n.httpBaseUrl,t[1]=s);let c;t[2]===n.compatibility.hostedHttpsApp?c=t[3]:(c=Ut(n.compatibility.hostedHttpsApp)?(0,Q.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,title:Wt(n.compatibility.hostedHttpsApp)??void 0,children:[(0,Q.jsx)(ie,{"aria-hidden":!0,className:`size-3`}),Ut(n.compatibility.hostedHttpsApp)]}):null,t[2]=n.compatibility.hostedHttpsApp,t[3]=c);let l;t[4]!==i||t[5]!==r?(l=r>0?(0,Q.jsx)(`span`,{className:`shrink-0 text-xs font-medium`,children:i?`Hide`:`+${r}`}):null,t[4]=i,t[5]=r,t[6]=l):l=t[6];let u;t[7]!==s||t[8]!==c||t[9]!==l?(u=(0,Q.jsxs)(Q.Fragment,{children:[s,c,l]}),t[7]=s,t[8]=c,t[9]=l,t[10]=u):u=t[10];let d=u,f;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Q.jsx)(`span`,{className:`shrink-0`,children:`Reachable at`}),t[11]=f):f=t[11];let p;return t[12]!==i||t[13]!==r||t[14]!==a||t[15]!==d?(p=(0,Q.jsxs)(`span`,{className:`inline-flex min-w-0 max-w-full items-baseline gap-1`,children:[f,r>0?(0,Q.jsx)(`button`,{type:`button`,className:`inline-flex min-w-0 max-w-full items-baseline gap-2 border-b border-dotted border-muted-foreground/60 text-left text-muted-foreground underline-offset-4 hover:border-foreground hover:text-foreground`,onClick:a,"aria-expanded":i,children:d}):(0,Q.jsx)(`span`,{className:`inline-flex min-w-0 max-w-full items-baseline gap-2`,children:d})]}),t[12]=i,t[13]=r,t[14]=a,t[15]=d,t[16]=p):p=t[16],p}function en(e){let t=(0,Z.c)(57),{environmentId:n,reconnectingEnvironmentId:r,disconnectingEnvironmentId:i,removingEnvironmentId:a,onConnect:o,onDisconnect:c,onRemove:l}=e,u=Ve(1e3),d;t[0]===n?d=t[1]:(d=e=>e.byId[n]??null,t[0]=n,t[1]=d);let f=h(d),p;t[2]===n?p=t[3]:(p=e=>e.byId[n]??null,t[2]=n,t[3]=p);let g=s(p);if(!f)return null;let _=g?.connectionState??`disconnected`,v=_===`connected`,y=_===`connecting`||r===n,b=i===n,x=_===`connected`?`bg-success`:_===`connecting`?`bg-warning`:_===`error`?`bg-destructive`:`bg-muted-foreground/40`,S=g?.role?g.role===`owner`?`Owner`:`Client`:null,C=g?.descriptor?.label??null??f.label,w;t[4]!==u||t[5]!==f||t[6]!==g?(w=xt(g,f,u),t[4]=u,t[5]=f,t[6]=g,t[7]=w):w=t[7];let T=w,E=g?.serverConfig,D;t[8]===E?D=t[9]:(D=m(E),t[8]=E,t[9]=D);let O=D,k;t[10]===f.desktopSsh?k=t[11]:(k=f.desktopSsh?`SSH ${St(f.desktopSsh)}`:null,t[10]=f.desktopSsh,t[11]=k);let A;t[12]===f.lastConnectedAt?A=t[13]:(A=f.lastConnectedAt?`Last connected ${yt(f.lastConnectedAt)}`:null,t[12]=f.lastConnectedAt,t[13]=A);let j;t[14]!==S||t[15]!==k||t[16]!==A?(j=[k,S,A].filter(tn),t[14]=S,t[15]=k,t[16]=A,t[17]=j):j=t[17];let M=j,N=_===`connecting`?`bg-warning/60 duration-2000`:null,P;t[18]!==x||t[19]!==T||t[20]!==N?(P=(0,Q.jsx)(bt,{tooltipText:T,dotClassName:x,pingClassName:N}),t[18]=x,t[19]=T,t[20]=N,t[21]=P):P=t[21];let F;t[22]===C?F=t[23]:(F=(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:C}),t[22]=C,t[23]=F);let I;t[24]!==P||t[25]!==F?(I=(0,Q.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[P,F]}),t[24]=P,t[25]=F,t[26]=I):I=t[26];let ee;t[27]===M?ee=t[28]:(ee=M.length>0?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:M.join(` · `)}):null,t[27]=M,t[28]=ee);let L;t[29]===O?L=t[30]:(L=O?(0,Q.jsxs)(`p`,{className:`flex items-center gap-1 text-warning text-xs`,children:[(0,Q.jsx)(ie,{className:`size-3.5 shrink-0`}),`Version drift: client `,O.clientVersion,`, server`,` `,O.serverVersion,`.`]}):null,t[29]=O,t[30]=L);let R;t[31]!==I||t[32]!==ee||t[33]!==L?(R=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[I,ee,L]}),t[31]=I,t[32]=ee,t[33]=L,t[34]=R):R=t[34];let z=v?b:y,B;t[35]!==n||t[36]!==v||t[37]!==o||t[38]!==c?(B=()=>void(v?c(n):o(n)),t[35]=n,t[36]=v,t[37]=o,t[38]=c,t[39]=B):B=t[39];let te=v?b?`Disconnecting…`:`Disconnect`:y?`Connecting…`:`Connect`,ne;t[40]!==z||t[41]!==B||t[42]!==te?(ne=(0,Q.jsx)(q,{size:`xs`,variant:`outline`,disabled:z,onClick:B,children:te}),t[40]=z,t[41]=B,t[42]=te,t[43]=ne):ne=t[43];let V=a===n,H;t[44]!==n||t[45]!==l?(H=()=>void l(n),t[44]=n,t[45]=l,t[46]=H):H=t[46];let U=a===n?`Removing…`:`Remove`,W;t[47]!==V||t[48]!==H||t[49]!==U?(W=(0,Q.jsx)(q,{size:`xs`,variant:`destructive-outline`,disabled:V,onClick:H,children:U}),t[47]=V,t[48]=H,t[49]=U,t[50]=W):W=t[50];let re;t[51]!==ne||t[52]!==W?(re=(0,Q.jsxs)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:[ne,W]}),t[51]=ne,t[52]=W,t[53]=re):re=t[53];let G;return t[54]!==R||t[55]!==re?(G=(0,Q.jsx)(`div`,{className:Dt,children:(0,Q.jsxs)(`div`,{className:kt,children:[R,re]})}),t[54]=R,t[55]=re,t[56]=G):G=t[56],G}function tn(e){return e!==null}var nn=(0,X.memo)(function(e){let t=(0,Z.c)(24),{target:n,connectingHostAlias:r,onConnect:i}=e,a;t[0]===n?a=t[1]:(a=St(n),t[0]=n,t[1]=a);let o=a,s=o!==n.alias,c=r===n.alias?`Adding…`:`Add environment`,l;t[2]===n.alias?l=t[3]:(l=(0,Q.jsx)(`h3`,{className:`truncate text-sm font-medium text-foreground`,children:n.alias}),t[2]=n.alias,t[3]=l);let u;t[4]!==o||t[5]!==s?(u=s?(0,Q.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:o}):null,t[4]=o,t[5]=s,t[6]=u):u=t[6];let d;t[7]!==l||t[8]!==u?(d=(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[l,u]}),t[7]=l,t[8]=u,t[9]=d):d=t[9];let f=r===n.alias,p;t[10]!==i||t[11]!==n?(p=()=>i(n),t[10]=i,t[11]=n,t[12]=p):p=t[12];let m;t[13]!==r||t[14]!==n.alias?(m=r===n.alias?(0,Q.jsx)(W,{className:`size-3 animate-spin`}):null,t[13]=r,t[14]=n.alias,t[15]=m):m=t[15];let h;t[16]!==c||t[17]!==f||t[18]!==p||t[19]!==m?(h=(0,Q.jsx)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:(0,Q.jsxs)(q,{size:`xs`,variant:`outline`,disabled:f,onClick:p,children:[m,c]})}),t[16]=c,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;return t[21]!==d||t[22]!==h?(g=(0,Q.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 first:border-t-0 sm:px-5`,children:(0,Q.jsxs)(`div`,{className:kt,children:[d,h]})}),t[21]=d,t[22]=h,t[23]=g):g=t[23],g});function rn(){let e=window.desktopBridge,[t,n]=(0,X.useState)(e?`owner`:null),[r,i]=(0,X.useState)(null),a=h(e=>e.byId),s=(0,X.useMemo)(()=>Object.values(a).toSorted((e,t)=>e.label.localeCompare(t.label)).map(e=>e.environmentId),[a]),v=(0,X.useMemo)(()=>Object.values(a).reduce((e,t)=>(t.desktopSsh?.alias&&(e[t.desktopSsh.alias]=t),e),{}),[a]),b=(0,X.useMemo)(()=>{let e=new Set;for(let t of Object.values(a)){let n=t.desktopSsh;n&&(e.add(n.alias),e.add(St(n)))}return e},[a]),[x,S]=(0,X.useState)([]),[C,T]=(0,X.useState)(!1),[E,D]=(0,X.useState)(!1),[O,k]=(0,X.useState)(null),[A,j]=(0,X.useState)(null),[M,N]=(0,X.useState)(null),[P,F]=(0,X.useState)([]),[I,L]=(0,X.useState)(null),[R,z]=(0,X.useState)([]),[B,te]=(0,X.useState)([]),[ne,U]=(0,X.useState)(null),[ae,oe]=(0,X.useState)(!1),[fe,Ce]=(0,X.useState)(null),[J,we]=(0,X.useState)(null),[Te,Ee]=(0,X.useState)(!1),[De,Oe]=(0,X.useState)(!1),[Ae,Re]=(0,X.useState)(`remote`),[ze,Be]=(0,X.useState)(``),[Ve,We]=(0,X.useState)(``),[Ge,qe]=(0,X.useState)(``),[Je,Ye]=(0,X.useState)(``),[Xe,Ze]=(0,X.useState)(``),[Qe,Z]=(0,X.useState)(null),[et,tt]=(0,X.useState)(!1),nt=(0,X.useMemo)(()=>x.filter(e=>{let t=St(e);return!b.has(e.alias)&&!b.has(t)}),[x,b]),[$,rt]=(0,X.useState)(null),[it,at]=(0,X.useState)(null),[ot,st]=(0,X.useState)(null),[ct,lt]=(0,X.useState)(!1),[ut,dt]=(0,X.useState)(!1),[ft,pt]=(0,X.useState)(!1),[mt,ht]=(0,X.useState)(null),[vt,yt]=(0,X.useState)(!1),[bt,xt]=(0,X.useState)(String(_t)),[Ot,kt]=(0,X.useState)(null),jt=o(),Ut=m(jt),[Wt,Gt]=(0,X.useState)(!1),Kt=ee(e=>e.defaultAdvertisedEndpointKey),qt=ee(e=>e.setDefaultAdvertisedEndpointKey),Jt=t===`owner`,Yt=e?M?.mode===`network-accessible`:r===`remote-reachable`,tn=bt.trim(),rn=Number(tn),an=/^\d+$/u.test(tn)&&Number.isInteger(rn)&&rn>=1&&rn<=65535,on=(0,X.useMemo)(()=>{if(!mt)return null;if(!an||rn===_t)return mt.httpBaseUrl;try{let e=new URL(mt.httpBaseUrl);return e.port=String(rn),e.toString().replace(/\/$/u,``)}catch{return mt.httpBaseUrl}},[an,rn,mt]),sn=(0,X.useCallback)(async t=>{if(e){lt(!0),L(null);try{let n=await e.setServerExposureMode(t?`network-accessible`:`local-only`);N(n),dt(!1),lt(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to update network exposure.`;dt(!1),L(t),V.add(pe({type:`error`,title:`Could not update network access`,description:t})),lt(!1)}}},[e]),cn=(0,X.useCallback)(()=>{Ot!==null&&sn(Ot===`network-accessible`)},[sn,Ot]),ln=(0,X.useCallback)(async()=>{if(e&&an){pt(!0),L(null);try{let t=await e.setTailscaleServeEnabled({enabled:!0,port:rn});N(t),ht(null)}catch(e){let t=e instanceof Error?e.message:`Failed to configure Tailscale HTTPS.`;L(t),V.add(pe({type:`error`,title:`Could not set up Tailscale HTTPS`,description:t}))}finally{pt(!1)}}},[e,an,rn]),un=(0,X.useCallback)(e=>{xt(String(M?.tailscaleServePort??_t)),ht(e)},[M?.tailscaleServePort]),dn=(0,X.useCallback)(async()=>{if(e){pt(!0),L(null);try{let t=await e.setTailscaleServeEnabled({enabled:!1,port:M?.tailscaleServePort??_t});N(t),yt(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to disable Tailscale HTTPS.`;L(t),V.add(pe({type:`error`,title:`Could not disable Tailscale HTTPS`,description:t}))}finally{pt(!1)}}},[e,M?.tailscaleServePort]),fn=(0,X.useCallback)(e=>{yt(!0)},[]),pn=(0,X.useCallback)(async e=>{Ce(e),U(null);try{await y(e)}catch(e){let t=e instanceof Error?e.message:`Failed to revoke pairing link.`;U(t),V.add(pe({type:`error`,title:`Could not revoke pairing link`,description:t}))}finally{Ce(null)}},[]),mn=(0,X.useCallback)(async e=>{we(e),U(null);try{await w(e)}catch(e){let t=e instanceof Error?e.message:`Failed to revoke client access.`;U(t),V.add(pe({type:`error`,title:`Could not revoke client access`,description:t}))}finally{we(null)}},[]),hn=(0,X.useCallback)(async()=>{Ee(!0),U(null);try{let e=await g();V.add({type:`success`,title:e===1?`Revoked 1 other client`:`Revoked ${e} clients`,description:`Other paired clients will need a new pairing link before reconnecting.`})}catch(e){let t=e instanceof Error?e.message:`Failed to revoke other clients.`;U(t),V.add(pe({type:`error`,title:`Could not revoke other clients`,description:t}))}finally{Ee(!1)}},[]),gn=(0,X.useCallback)(async()=>{if(Ae===`ssh`){tt(!0),Z(null);try{let e=Ct({host:Ge,username:Je,port:Xe}),t=await p(e,{label:``});Be(``),We(``),qe(``),Ye(``),Ze(``),Oe(!1),V.add({type:`success`,title:`Environment connected`,description:`${t.label} is ready over an SSH-managed tunnel.`})}catch(e){let t=Et(e);Z(t)}finally{tt(!1)}return}tt(!0),Z(null);try{let e=Tt({host:ze,pairingCode:Ve}),t=await u({label:``,...e});Be(``),We(``),qe(``),Ye(``),Ze(``),Oe(!1),V.add({type:`success`,title:`Backend added`,description:`${t.label} is now saved and will reconnect on app startup.`})}catch(e){let t=e instanceof Error?e.message:`Failed to add backend.`;Z(t),V.add(pe({type:`error`,title:`Could not add backend`,description:t}))}finally{tt(!1)}},[ze,Ae,Ve,Ge,Xe,Je]),_n=(0,X.useCallback)(async e=>{rt(e),Z(null);try{await f(e)}catch(e){let t=e instanceof Error?e.message:`Failed to connect backend.`;Z(t),V.add(pe({type:`error`,title:`Could not connect backend`,description:t}))}finally{rt(null)}},[]),vn=(0,X.useCallback)(async e=>{at(e),Z(null);try{await d(e)}catch(e){let t=e instanceof Error?e.message:`Failed to disconnect backend.`;Z(t),V.add(pe({type:`error`,title:`Could not disconnect backend`,description:t}))}finally{at(null)}},[]),yn=(0,X.useCallback)(async e=>{st(e),Z(null);try{await l(e)}catch(e){let t=e instanceof Error?e.message:`Failed to remove backend.`;Z(t),V.add(pe({type:`error`,title:`Could not remove backend`,description:t}))}finally{st(null)}},[]),bn=(0,X.useCallback)(async()=>{if(!e){S([]),T(!1),k(null);return}D(!0),k(null);try{let t=await e.discoverSshHosts();S(t),T(!0)}catch(e){let t=e instanceof Error?e.message:`Failed to discover SSH hosts.`;k(t),T(!0)}finally{D(!1)}},[e]),xn=(0,X.useCallback)(async(e,t)=>{j(e.alias),Ae===`ssh`?Z(null):k(null);try{let n=await p(e,t===void 0?void 0:{label:t});qe(``),Ye(``),Ze(``),Oe(!1),V.add({type:`success`,title:v[e.alias]?`Environment reconnected`:`Environment connected`,description:`${n.label} is ready over an SSH-managed tunnel.`})}catch(e){let t=Et(e);Ae===`ssh`?Z(t):k(t)}finally{j(null)}},[Ae,v]);(0,X.useEffect)(()=>{!e||!De||Ae!==`ssh`||C||E||bn()},[De,e,C,E,bn,Ae]),(0,X.useEffect)(()=>{if(e){n(`owner`);return}let t=!1;return _().then(e=>{t||(n(e.authenticated?e.role??null:null),i(e.auth.policy))}).catch(()=>{t||(n(null),i(null))}),()=>{t=!0}},[e]),(0,X.useEffect)(()=>{if(!Jt)return;let t=!1;oe(!0);let n=c().client.server.subscribeAuthAccess(e=>{if(!t){switch(e.type){case`snapshot`:z(Mt(e.payload.pairingLinks.map(e=>Pt(e)))),te(Nt(e.payload.clientSessions.map(e=>Ft(e))));break;case`pairingLinkUpserted`:z(t=>It(t,Pt(e.payload)));break;case`pairingLinkRemoved`:z(t=>Lt(t,e.payload.id));break;case`clientUpserted`:te(t=>Rt(t,Ft(e.payload)));break;case`clientRemoved`:te(t=>zt(t,e.payload.sessionId))}U(null),oe(!1)}},{onResubscribe:()=>{t||oe(!0)}});return e?(e.getServerExposureState().then(e=>{t||N(e)}).catch(e=>{if(t)return;let n=e instanceof Error?e.message:`Failed to load network exposure state.`;L(n)}),e.getAdvertisedEndpoints().then(e=>{t||F(e)}).catch(e=>{if(t)return;let n=e instanceof Error?e.message:`Failed to load reachable endpoints.`;L(n)})):(N(null),c().client.server.getAdvertisedEndpoints().then(e=>{t||F(e)}).catch(e=>{if(t)return;let n=e instanceof Error?e.message:`Failed to load reachable endpoints.`;L(n)})),()=>{t=!0,n()}},[Jt,e]),(0,X.useEffect)(()=>{Jt||(oe(!1),z([]),te([]),U(null),N(null),F([]),L(null))},[Jt]);let Sn=(0,X.useMemo)(()=>R.filter(e=>e.role===`client`),[R]),Cn=(0,X.useMemo)(()=>P.find(Vt)??null,[P]),wn=(0,X.useMemo)(()=>Yt?P.filter(e=>!Vt(e)):[],[P,Yt]),Tn=(0,X.useMemo)(()=>Cn?[...wn,Cn]:wn,[Cn,wn]),En=Yt||Cn?.status===`available`,Dn=(0,X.useMemo)(()=>Bt(wn,Kt),[Kt,wn]),On=(0,X.useMemo)(()=>Dn??Bt(Cn?[Cn]:[],Kt),[Kt,Dn,Cn]),kn=On?Ht(On):null,An=(0,X.useCallback)(e=>{qt(Ht(e))},[qt]),jn=(0,X.useCallback)(e=>{let t=wt(e);if(t){Be(t.host),We(t.pairingCode);return}Be(e)},[]),Mn=e=>{let t=Ae===e.mode;return(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":t,className:G(`group flex min-h-24 items-start gap-3 rounded-lg border p-4 text-left`,t?`border-primary/50 bg-primary/5`:`border-border/60 hover:bg-muted/40`),disabled:et,onClick:()=>{Re(e.mode)},children:[e.icon?(0,Q.jsx)(`span`,{className:G(`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border`,t?`border-primary/30 bg-primary/10 text-primary`:`border-border/70 bg-background text-muted-foreground group-hover:text-foreground`),children:e.icon}):null,(0,Q.jsxs)(`span`,{className:`min-w-0`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.title}),(0,Q.jsx)(`span`,{className:`mt-1 block text-xs leading-relaxed text-muted-foreground`,children:e.description})]})]})};return(0,Q.jsxs)(Ue,{children:[Jt?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(He,{title:`Manage local backend`,children:[Ut?(0,Q.jsx)(Y,{title:`Version drift`,description:(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 text-warning`,children:[(0,Q.jsx)(ie,{className:`size-3.5 shrink-0`}),`Client `,Ut.clientVersion,`, server`,` `,Ut.serverVersion,`. Sync them if RPC calls or reconnects fail.`]})}):null,e?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{title:`Network access`,description:Yt?(0,Q.jsx)($t,{endpoint:Dn,hiddenEndpointCount:Math.max(wn.length-1,0),expanded:Wt,onToggleExpanded:()=>Gt(e=>!e),fallback:M?.endpointUrl?`Reachable at ${M.endpointUrl}`:M?.advertisedHost?`Exposed on all interfaces. Pairing links use ${M.advertisedHost}.`:`Exposed on all interfaces.`}):M?`Limited to this machine.`:`Loading…`,status:I?(0,Q.jsx)(`span`,{className:`block text-destructive`,children:I}):null,control:(0,Q.jsx)(le,{checked:M?.mode===`network-accessible`,disabled:!M||ct,onCheckedChange:e=>{kt(e?`network-accessible`:`local-only`),dt(!0)},"aria-label":`Enable network access`})}),(e=>Wt?wn.map(t=>{let n=Ht(t);return(0,Q.jsx)(Qt,{endpoint:t,isDefault:n===kn,presentation:e,onSetDefault:An,onSetupTailscaleServe:un,onDisableTailscaleServe:fn,isUpdatingTailscaleServe:ft},t.id)}):null)(`endpoint-rail`),(0,Q.jsx)(Y,{title:`Tailscale HTTPS`,description:Cn?Cn.status===`available`?Cn.httpBaseUrl:`Use Tailscale Serve to expose this backend through a MagicDNS HTTPS URL.`:`Start Tailscale to set up HTTPS access through MagicDNS.`,control:Cn?(0,Q.jsx)(le,{checked:Cn.status===`available`,disabled:ft,onCheckedChange:e=>{if(e){un(Cn);return}fn(Cn)},"aria-label":`Enable Tailscale HTTPS`}):null})]}):(0,Q.jsx)(Y,{title:`Network access`,description:r===`remote-reachable`?`This backend is already configured for remote access. Network exposure changes must be made where the server is launched.`:`This backend is only reachable on this machine. Restart it with a non-loopback host to enable remote pairing.`,control:(0,Q.jsxs)(ce,{children:[(0,Q.jsx)(K,{render:(0,Q.jsx)(`span`,{className:`inline-flex`,children:(0,Q.jsx)(le,{checked:Yt,disabled:!0,"aria-label":`Enable network access`})})}),(0,Q.jsx)(se,{side:`top`,children:`Network exposure changes restart the backend and must be controlled where the server process is launched.`})]})})]}),En?(0,Q.jsx)(He,{title:`Authorized clients`,headerAction:(0,Q.jsx)(Xt,{clientSessions:B,isRevokingOtherClients:Te,onRevokeOtherClients:hn}),children:(e=>(0,Q.jsxs)(Q.Fragment,{children:[ne?(0,Q.jsx)(`div`,{className:At(e),children:(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:ne})}):null,(0,Q.jsx)(Zt,{endpointUrl:M?.endpointUrl,endpoints:Tn,defaultEndpointKey:kn,presentation:e,isLoading:ae,pairingLinks:Sn,clientSessions:B,revokingPairingLinkId:fe,revokingClientSessionId:J,onRevokePairingLink:pn,onRevokeClientSession:mn})]}))(`current`)}):null,(0,Q.jsx)(Le,{open:ut,onOpenChange:e=>{ct||dt(e)},onOpenChangeComplete:e=>{e||kt(null)},children:(0,Q.jsxs)(Pe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ie,{children:Ot===`network-accessible`?`Enable network access?`:`Disable network access?`}),(0,Q.jsx)(Fe,{children:Ot===`network-accessible`?`Ryco will restart to expose this environment over the network.`:`Ryco will restart and limit this environment back to this machine.`})]}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(Ne,{disabled:ct,render:(0,Q.jsx)(q,{variant:`outline`,disabled:ct}),children:`Cancel`}),(0,Q.jsx)(q,{variant:Ot===`local-only`?`destructive`:`default`,onClick:cn,disabled:Ot===null||ct,children:ct?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ke,{className:`size-3.5`}),`Restarting…`]}):Ot===`network-accessible`?`Restart and enable`:`Restart and disable`})]})]})}),(0,Q.jsx)(Le,{open:vt,onOpenChange:e=>{ft||yt(e)},children:(0,Q.jsxs)(Pe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsx)(Ie,{children:`Disable Tailscale HTTPS?`}),(0,Q.jsx)(Fe,{children:`Ryco will restart the local backend without Tailscale Serve.`})]}),(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(Ne,{disabled:ft,render:(0,Q.jsx)(q,{variant:`outline`,disabled:ft}),children:`Cancel`}),(0,Q.jsx)(q,{variant:`destructive`,onClick:()=>void dn(),disabled:ft,children:ft?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ke,{className:`size-3.5`}),`Restarting…`]}):`Restart and disable`})]})]})}),(0,Q.jsx)(Se,{open:mt!==null,onOpenChange:e=>{ft||e||ht(null)},children:(0,Q.jsxs)(xe,{className:`max-w-md`,children:[(0,Q.jsxs)(me,{children:[(0,Q.jsx)(he,{children:`Set up Tailscale HTTPS?`}),(0,Q.jsx)(be,{children:`Ryco will restart the local backend with Tailscale Serve enabled and ask Tailscale to proxy HTTPS traffic to this backend.`})]}),(0,Q.jsxs)(ye,{className:`space-y-4`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:`HTTPS port`}),(0,Q.jsx)(ue,{className:`mt-2`,type:`number`,inputMode:`numeric`,min:1,max:65535,step:1,value:bt,onChange:e=>xt(e.target.value),disabled:ft})]}),an?null:(0,Q.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:`Enter a port from 1 to 65535.`}),(0,Q.jsxs)(`div`,{className:`rounded-md border border-border/70 bg-muted/20 px-3 py-2`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:`HTTPS endpoint`}),(0,Q.jsx)(`p`,{className:`mt-1 truncate text-sm text-foreground`,title:on??void 0,children:on??`Pending MagicDNS endpoint`})]})]}),(0,Q.jsxs)(ge,{children:[(0,Q.jsx)(ve,{disabled:ft,render:(0,Q.jsx)(q,{variant:`outline`,disabled:ft}),children:`Cancel`}),(0,Q.jsx)(q,{onClick:()=>void ln(),disabled:ft||!an,children:ft?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ke,{className:`size-3.5`}),`Restarting…`]}):`Enable`})]})]})})]}):(0,Q.jsx)(He,{title:`Local backend access`,children:(0,Q.jsx)(Y,{title:`Owner tools`,description:`Pairing links and client-session management are only available to owner sessions for this backend.`})}),e?(0,Q.jsx)(gt,{desktopBridge:e}):null,(0,Q.jsxs)(He,{title:`Remote environments`,headerAction:(0,Q.jsxs)(Se,{open:De,onOpenChange:e=>{Oe(e),e||Z(null)},children:[(0,Q.jsx)(_e,{render:(0,Q.jsxs)(q,{size:`xs`,variant:`outline`,children:[(0,Q.jsx)(H,{className:`size-3`}),`Add environment`]})}),(0,Q.jsxs)(xe,{className:`max-h-[80dvh] sm:max-w-3xl`,children:[(0,Q.jsxs)(me,{children:[(0,Q.jsx)(he,{children:`Add Environment`}),(0,Q.jsx)(be,{children:`Pair another environment to this client.`})]}),(0,Q.jsx)(ye,{children:(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[Mn({mode:`remote`,title:`Remote link`,description:`Enter a backend host and pairing code.`,icon:(0,Q.jsx)($e,{"aria-hidden":!0,className:`size-4`})}),e?Mn({mode:`ssh`,title:`SSH`,description:`Use local SSH config, agent, and tunnels for the backend.`,icon:(0,Q.jsx)(re,{"aria-hidden":!0,className:`size-4`})}):null]}),(0,Q.jsx)(Ke,{children:Ae===`ssh`?(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`SSH host or alias`}),(0,Q.jsx)(ue,{value:Ge,onChange:e=>qe(e.target.value),placeholder:`Search hosts or type devbox`,disabled:et,spellCheck:!1})]}),(0,Q.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-[minmax(0,1fr)_7rem]`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Username`}),(0,Q.jsx)(ue,{value:Je,onChange:e=>Ye(e.target.value),placeholder:`root`,disabled:et,spellCheck:!1})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Port`}),(0,Q.jsx)(ue,{value:Xe,onChange:e=>Ze(e.target.value),placeholder:`22`,inputMode:`numeric`,disabled:et,spellCheck:!1})]})]}),Qe||O?(0,Q.jsx)(`div`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:Qe??O}):null,(0,Q.jsxs)(q,{variant:`outline`,className:`w-full`,disabled:et,onClick:()=>void gn(),children:[(0,Q.jsx)(H,{className:`size-3.5`}),et?`Adding…`:`Add environment`]})]}),(0,Q.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/60`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-border/60 bg-muted/30 px-3 py-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-foreground`,children:`Suggested hosts`}),(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`From SSH config and known hosts`})]}),(0,Q.jsxs)(q,{size:`xs`,variant:`ghost`,disabled:E,onClick:()=>void bn(),children:[E?(0,Q.jsx)(W,{className:`size-3 animate-spin`}):(0,Q.jsx)(W,{className:`size-3`}),`Refresh`]})]}),(0,Q.jsx)(de,{scrollFade:!0,className:`max-h-56`,children:(0,Q.jsxs)(`div`,{children:[nt.map(e=>(0,Q.jsx)(nn,{target:e,connectingHostAlias:A,onConnect:e=>void xn(e)},`${e.alias}:${e.hostname}:${e.port??``}`)),C&&!E&&nt.length===0?(0,Q.jsx)(`div`,{className:Dt,children:(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No new SSH hosts were discovered.`})}):null]})})]})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem]`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Host`}),(0,Q.jsx)(ue,{value:ze,onChange:e=>jn(e.target.value),placeholder:`backend.example.com`,disabled:et,spellCheck:!1})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Pairing code`}),(0,Q.jsx)(ue,{value:Ve,onChange:e=>We(e.target.value),placeholder:`PAIRCODE`,disabled:et,spellCheck:!1})]})]}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(`span`,{className:`mt-1 block text-[11px] text-muted-foreground`,children:`Paste a full pairing URL here to fill both fields automatically. The pairing code is not kept; the browser stores a bearer token for 7 days.`})})]}),Qe?(0,Q.jsx)(`p`,{className:`text-xs text-destructive`,children:Qe}):null,(0,Q.jsxs)(q,{variant:`outline`,className:`w-full`,disabled:et,onClick:()=>void gn(),children:[(0,Q.jsx)(H,{className:`size-3.5`}),et?`Adding…`:`Add environment`]})]})})]})})]})]}),children:[s.map(e=>(0,Q.jsx)(en,{environmentId:e,reconnectingEnvironmentId:$,disconnectingEnvironmentId:it,removingEnvironmentId:ot,onConnect:_n,onDisconnect:vn,onRemove:yn},e)),s.length===0?(0,Q.jsx)(`div`,{className:Dt,children:(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No remote environments yet. Click “Add environment” to pair another environment.`})}):null]})]})}function an(e){return e.status!==`unavailable`}function on(e){V.add({type:`success`,title:e===`hosted-link`?`Hosted app link copied`:e===`link`?`Pairing URL copied`:`Pairing code copied`,description:e===`hosted-link`?`Open it in the browser on the device you want to connect.`:e===`link`?`Open it in the client you want to pair to this environment.`:`Paste it into another client to finish pairing.`})}function sn(e){return qt(e)?`hosted-link`:`link`}function cn(e){return!qt(e.url)}function ln(e){return qt(e.url)}function un(e){return e.currentTarget.select()}function dn(e){return e.currentTarget.select()}function fn(e){return e!==null}export{rn as ConnectionsSettings};
@@ -1 +0,0 @@
1
- import{i as e,t}from"./react-SIfiwpqq.js";import{t as n}from"./index-Bbz4fkK_.js";import{t as r}from"./compiler-runtime-qmuS0Svy.js";import{n as i,t as a}from"./env-B4arEvJg.js";import{Jn as o,Jt as s,N as c,Vn as l,Yn as u,bn as d,yn as f}from"./runtime-DKwoXpJv.js";import{i as p}from"./primary-OskAInOO.js";import{It as m}from"./composerDraftStore-CdJJZe42.js";import{t as h}from"./useNavigate-2tVq4iZ2.js";import{t as g}from"./settingsDialogStore-ygYoScKe.js";import{t as _}from"./activity-1CkdQG5u.js";import{a as v,i as y,n as b,o as x,r as S,t as ee}from"./SettingsPanels-BmhZ8u4B.js";import{m as C,p as w}from"./desktopUpdateAtoms-C82GmR67.js";import{t as T}from"./chart-column-Dw6ACmXM.js";import{t as te}from"./git-branch-BKr-Ij4u.js";import{t as E}from"./keyboard-BqeRMHfL.js";import{t as ne}from"./palette-BSD_aJZg.js";import{t as re}from"./search-BGQsenCM.js";import{t as D}from"./settings-2-CZQg_KUQ.js";import{t as O}from"./server-JApJpgLa.js";import{t as k}from"./shield-IZEIJ8r7.js";import{t as A}from"./sparkles-CAf3oJ5S.js";import{t as ie}from"./user-round-Cpzx8pSw.js";import{t as ae}from"./utils-BofFIn5Y.js";import{t as oe}from"./scroll-area-Drsa8bNB.js";import{t as j}from"./button-BAbJxRzt.js";import{c as se,s as ce,t as le}from"./dialog-DQsYchqu.js";import{i as ue,n as de,o as fe,s as pe,t as me}from"./settingsSections.logic-F8RXVmAq.js";var M=e(t(),1),N=r(),he=[{section:`inbox`,title:`AI Focus`,description:`Prioritize the Inbox with bounded, environment-local model ranking.`,keywords:`priority sort active threads model ranking focus refresh`},{section:`inbox`,title:`AI Focus models`,description:`Choose or inherit the ranking model for each connected environment.`,keywords:`provider node disclosure privacy data`},{section:`general`,title:`Time format`,description:`System default, 12-hour or 24-hour clock.`,keywords:`clock hours`},{section:`general`,title:`Default editor`,description:`Pin which editor opens directories and files.`,keywords:`vscode cursor open in`},{section:`general`,title:`Diff line wrapping`,description:`Default wrap state when the diff panel opens.`,keywords:`word wrap`},{section:`general`,title:`Hide whitespace changes`,description:`Whether the diff panel ignores whitespace-only edits.`,keywords:`diff`},{section:`general`,title:`Remote Git status`,description:`Refresh remote branch and pull request metadata.`,keywords:`git polling refresh remote`},{section:`general`,title:`PR & workflow updates`,description:`Choose automatic, reduced, or manual pull request and workflow refreshes.`,keywords:`github actions checks ci polling refresh`},{section:`general`,title:`Stream token by token (legacy)`,description:`Compatibility mode for token-by-token assistant output.`,keywords:`token streaming assistant output streaming tokens buffered`,targetId:`legacy-token-streaming`},{section:`general`,title:`Provider update checks`,description:`Check installed provider CLIs for newer versions.`,keywords:`upgrade cli`},{section:`general`,title:`Auto-open overview`,description:`Open the overview when plans or progress appear.`,keywords:`panel plan`},{section:`general`,title:`New threads`,description:`Default workspace mode for newly created drafts.`,keywords:`local worktree draft`},{section:`general`,title:`Add project starts in`,description:`Starting directory for the Add Project browser.`,keywords:`folder path`},{section:`general`,title:`Archive confirmation`,description:`Ask before archiving a thread.`,keywords:`confirm`},{section:`general`,title:`Delete confirmation`,description:`Ask before deleting a thread.`,keywords:`confirm remove`},{section:`general`,title:`Update track`,description:`Which release channel the app follows.`,keywords:`beta stable release channel`},{section:`appearance`,title:`Interface font`,description:`Normal app text, navigation, dialogs, and controls.`,keywords:`typeface dm sans inter geist`},{section:`appearance`,title:`Code font`,description:`Code blocks, diffs, file paths, and terminal surfaces.`,keywords:`monospace jetbrains fira`},{section:`appearance`,title:`Text size`,description:`Scale the interface independently from the theme.`,keywords:`zoom font size compact`},{section:`appearance`,title:`Corner radius`,description:`Rounding for panels, buttons, inputs, and menus.`,keywords:`round square`},{section:`appearance`,title:`Primary color`,description:`Accent color for links, focus rings, and actions.`,keywords:`accent custom violet amber`},{section:`appearance`,title:`Transparency`,description:`Glass and floating surfaces like dialogs, menus, popups.`,keywords:`glass blur liquid material solid`},{section:`appearance`,title:`Panel layout`,description:`How the overview panel arranges its sections.`,keywords:`stack hybrid status board`},{section:`appearance`,title:`Theme palette`,description:`Built-in and custom color themes; import and export.`,keywords:`dark midnight graphite nord dracula catppuccin`},{section:`appearance`,title:`Auto-collapse wide composer labels`,description:`Show long composer mode labels only on hover or focus.`,keywords:`chips`},{section:`appearance`,title:`Always use Build mode`,description:`Hide the mode selector and send every turn in Build mode.`,keywords:`composer`},{section:`appearance`,title:`Theme variant`,description:`Light, dark, or follow the system preference.`,keywords:`color mode dark light`},{section:`providers`,title:`Provider instances`,description:`Configure Codex, Claude, Copilot, OpenCode, and Cursor.`,keywords:`api model driver accent`},{section:`mcp-servers`,title:`External integrations`,description:`Pair local Codex or Claude MCP clients with scoped, revocable access.`,keywords:`model context protocol tools pairing codex claude approval agent control`},{section:`mcp-servers`,title:`MCP Servers`,description:`Manage Codex, Claude, and other provider-native MCP servers.`,keywords:`model context protocol tools add server oauth profiles providers`},{section:`keybindings`,title:`Keybindings file`,description:`Customize shortcuts via the keybindings configuration file.`,keywords:`shortcuts hotkeys keyboard`},{section:`source-control`,title:`Version Control`,description:`Git behavior and defaults.`,keywords:`git commit`},{section:`source-control`,title:`Source Control Providers`,description:`GitHub and other source control provider connections.`,keywords:`github pr pull request`},{section:`connections`,title:`Network access`,description:`Expose the local backend on your network.`,keywords:`lan host remote`},{section:`connections`,title:`Pairing link`,description:`Scan to open this backend on another device.`,keywords:`qr code phone mobile`},{section:`connections`,title:`Tailscale HTTPS`,description:`Serve over your tailnet with HTTPS.`,keywords:`vpn remote`},{section:`connections`,title:`Authorized clients`,description:`Devices and sessions allowed to connect.`,keywords:`revoke tokens`},{section:`security`,title:`Session code`,description:`Compare this browser's channel against the one your node's CLI shows.`,keywords:`security verification websas e2ee compare short authentication string`},{section:`security`,title:`Enrollment fingerprint`,description:`This node's identity, and the prekey and continuity behind it.`,keywords:`security e2ee key fingerprint rotate lineage`},{section:`security`,title:`Authorized client keys`,description:`Approve, reduce, revoke, or delete a client key, and open a pairing window.`,keywords:`security e2ee pairing fingerprint refused attempts`},{section:`security`,title:`Admission policy`,description:`Require E2EE, require approved clients, and advance the policy generation.`,keywords:`security e2ee strict fallback plaintext`},{section:`diagnostics`,title:`Diagnostics`,description:`Logs, tracing, resource history, and live activity.`,keywords:`debug performance slow`},{section:`diagnostics`,title:`Test notification`,description:`Fire sample notifications to preview the toast design and stacking.`,keywords:`toast notifications preview trigger sample`},{section:`statistics`,title:`Statistics`,description:`Usage activity and history.`,keywords:`heatmap usage tokens`},{section:`archived`,title:`Archive`,description:`Archived threads; restore or delete permanently.`,keywords:`trash restore`}],P=m(),F=[{id:`account`,label:`Account`,icon:ie},{id:`general`,label:`General`,icon:D},{id:`inbox`,label:`Inbox`,icon:A},{id:`providers`,label:`Providers`,icon:x},{id:`opinionated-plugins`,label:`Plugins`,icon:y},{id:`mcp-servers`,label:`Integrations`,icon:O},{id:`appearance`,label:`Appearance`,icon:ne},{id:`keybindings`,label:`Keybindings`,icon:E},{id:`source-control`,label:`Source Control`,icon:te},{id:`connections`,label:`Connections`,icon:v},{id:`security`,label:`Security`,icon:k},{id:`diagnostics`,label:`Diagnostics`,icon:_},{id:`statistics`,label:`Statistics`,icon:T},{id:`archived`,label:`Archive`,icon:C}];F.map(e=>e.id),new Map(F.map(e=>[e.id,e.label]));var ge=new Set([`general`,`providers`,`appearance`]),I=(0,M.lazy)(()=>n(()=>import(`./AccountSettings-BUoiS8x1.js`).then(e=>({default:e.AccountSettingsPanel})),[])),_e=(0,M.lazy)(()=>n(()=>import(`./ProvidersSettingsPanel-v2SvoEGx.js`).then(e=>({default:e.ProvidersSettingsPanel})),[])),ve=(0,M.lazy)(()=>n(()=>import(`./AiFocusSettings-Cz1Uqn7a.js`).then(e=>({default:e.AiFocusSettings})),[])),L=(0,M.lazy)(()=>n(()=>import(`./OpinionatedPluginsSettings-CeoSmZ90.js`).then(e=>({default:e.OpinionatedPluginsSettingsPanel})),[])),R=(0,M.lazy)(()=>n(()=>import(`./IntegrationsSettingsPanel-Cg4eRHm_.js`).then(e=>({default:e.IntegrationsSettingsPanel})),[])),ye=(0,M.lazy)(()=>n(()=>import(`./AppearanceSettings-CYbSApl4.js`).then(e=>({default:e.AppearanceSettingsPanel})),[])),z=(0,M.lazy)(()=>n(()=>import(`./KeybindingsSettings-CYj67N2D.js`).then(e=>({default:e.KeybindingsSettingsPanel})),[])),B=(0,M.lazy)(()=>n(()=>import(`./SourceControlSettings-DvPydmxX.js`).then(e=>({default:e.SourceControlSettingsPanel})),[])),V=(0,M.lazy)(()=>n(()=>import(`./ConnectionsSettings--CbTzkTn.js`).then(e=>({default:e.ConnectionsSettings})),[])),be=(0,M.lazy)(()=>n(()=>import(`./NodeSecuritySettings-DMkkTgfg.js`).then(e=>({default:e.NodeSecuritySettings})),[])),H=(0,M.lazy)(()=>n(()=>import(`./DiagnosticsSettings-C74u3ce5.js`).then(e=>({default:e.DiagnosticsSettings})),[])),U=(0,M.lazy)(()=>n(()=>import(`./StatisticsSettingsLink-Cx43bOeo.js`).then(e=>({default:e.StatisticsSettingsLink})),[]));function xe(e){let t=(0,N.c)(6),{onRestored:n}=e,{changedSettingLabels:r,restoreDefaults:i}=S(n),a=r.length===0,o;t[0]===i?o=t[1]:(o=()=>void i(),t[0]=i,t[1]=o);let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,P.jsx)(w,{className:`size-3.5`}),t[2]=s):s=t[2];let c;return t[3]!==a||t[4]!==o?(c=(0,P.jsxs)(j,{size:`xs`,variant:`outline`,disabled:a,onClick:o,children:[s,`Restore defaults`]}),t[3]=a,t[4]=o,t[5]=c):c=t[5],c}function Se(e){let t=(0,N.c)(45),{section:n,searchTargetId:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,P.jsx)(`div`,{className:`flex min-h-80 items-center justify-center text-muted-foreground text-sm`,children:`Loading settings...`}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=n===`account`?(0,P.jsx)(I,{}):null,t[1]=n,t[2]=a);let o;t[3]!==r||t[4]!==n?(o=n===`general`?(0,P.jsx)(b,{searchTargetId:r}):null,t[3]=r,t[4]=n,t[5]=o):o=t[5];let s;t[6]===n?s=t[7]:(s=n===`inbox`?(0,P.jsx)(ve,{}):null,t[6]=n,t[7]=s);let c;t[8]===n?c=t[9]:(c=n===`providers`?(0,P.jsx)(_e,{}):null,t[8]=n,t[9]=c);let l;t[10]===n?l=t[11]:(l=n===`opinionated-plugins`?(0,P.jsx)(L,{}):null,t[10]=n,t[11]=l);let u;t[12]===n?u=t[13]:(u=n===`mcp-servers`?(0,P.jsx)(R,{}):null,t[12]=n,t[13]=u);let d;t[14]===n?d=t[15]:(d=n===`appearance`?(0,P.jsx)(ye,{}):null,t[14]=n,t[15]=d);let f;t[16]===n?f=t[17]:(f=n===`keybindings`?(0,P.jsx)(z,{}):null,t[16]=n,t[17]=f);let p;t[18]===n?p=t[19]:(p=n===`source-control`?(0,P.jsx)(B,{}):null,t[18]=n,t[19]=p);let m;t[20]===n?m=t[21]:(m=n===`connections`?(0,P.jsx)(V,{}):null,t[20]=n,t[21]=m);let h;t[22]===n?h=t[23]:(h=n===`security`?(0,P.jsx)(be,{}):null,t[22]=n,t[23]=h);let g;t[24]===n?g=t[25]:(g=n===`diagnostics`?(0,P.jsx)(H,{}):null,t[24]=n,t[25]=g);let _;t[26]===n?_=t[27]:(_=n===`statistics`?(0,P.jsx)(U,{}):null,t[26]=n,t[27]=_);let v;t[28]===n?v=t[29]:(v=n===`archived`?(0,P.jsx)(ee,{}):null,t[28]=n,t[29]=v);let y;return t[30]!==p||t[31]!==m||t[32]!==h||t[33]!==g||t[34]!==_||t[35]!==v||t[36]!==a||t[37]!==o||t[38]!==s||t[39]!==c||t[40]!==l||t[41]!==u||t[42]!==d||t[43]!==f?(y=(0,P.jsxs)(M.Suspense,{fallback:i,children:[a,o,s,c,l,u,d,f,p,m,h,g,_,v]}),t[30]=p,t[31]=m,t[32]=h,t[33]=g,t[34]=_,t[35]=v,t[36]=a,t[37]=o,t[38]=s,t[39]=c,t[40]=l,t[41]=u,t[42]=d,t[43]=f,t[44]=y):y=t[44],y}function Ce(){let e=(0,N.c)(18),t=h(),n=p(),r=l(),m=s(Pe),_=g(Ne),v=g(Me),y=g(je),b=g(Ae),x=g(ke),S=u({requestedEnvironmentId:y,activeEnvironmentId:m,primaryEnvironmentId:n?.environmentId??null}),ee=f(e=>S?e.byId[S]??null:null),C=d(e=>S?e.byId[S]??null:null),w=S!==null&&S===n?.environmentId,T=w?r:C?.serverConfig??null,te=w?n?.label??T?.environment.label??`Current node`:C?.descriptor?.label??T?.environment.label??ee?.label??`Selected node`,E=S?{environmentId:S,nodeLabel:te,serverConfig:T,primary:w,connected:w?T!==null:C?.connectionState===`connected`}:null,ne=c(Oe),D=c(De),O=c(Ee),k=i(),A=me(D,O),ie=de(ne,D,O),j=F.filter(e=>fe(e.id,{hosted:k,role:ie})),I=j.some(e=>e.id===v)?v:j[0]?.id??`appearance`,_e=pe(I),ve=ue(_e,{nativeClient:a,nodeLabel:E?.nodeLabel??null});(0,M.useEffect)(()=>{k&&!A||_&&v!==I&&x(I)},[I,k,_,A,v,x]);let[L,R]=(0,M.useState)(``),[ye,z]=(0,M.useState)(null),B,V;e[0]===_?(B=e[1],V=e[2]):(B=()=>{_||(R(``),z(null))},V=[_],e[0]=_,e[1]=B,e[2]=V),(0,M.useEffect)(B,V);let be=new Set(j.map(Te)),H=L.trim().toLowerCase(),U=H.length===0?[]:he.filter(e=>be.has(e.section)&&`${e.title} ${e.description} ${e.keywords??``}`.toLowerCase().includes(H)),[Ce,Fe]=(0,M.useState)(0),W;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(W=()=>{Fe(we)},e[3]=W):W=e[3];let Ie=W,Le=ge.has(I),Re=Math.max(0,j.findIndex(e=>e.id===I)),G;e[4]===b?G=e[5]:(G=e=>{e||b()},e[4]=b,e[5]=G);let K;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,P.jsx)(se,{className:`text-base font-semibold`,children:`Settings`}),e[6]=K):K=e[6];let q;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(q=(0,P.jsx)(re,{"aria-hidden":!0,className:`pointer-events-none absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground/60`}),e[7]=q):q=e[7];let J;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(J=e=>{z(null),R(e.target.value)},e[8]=J):J=e[8];let Y;e[9]===L?Y=e[10]:(Y=(0,P.jsxs)(`div`,{className:`relative w-72 max-w-[40vw]`,children:[q,(0,P.jsx)(`input`,{type:`search`,value:L,onChange:J,placeholder:`Search settings…`,"aria-label":`Search settings`,className:`h-8 w-full rounded-md border border-input bg-muted/40 pr-3 pl-8 text-[13px] outline-none transition-colors placeholder:text-muted-foreground/60 focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/40`})]}),e[9]=L,e[10]=Y);let X=Le?(0,P.jsx)(xe,{onRestored:Ie}):null,Z;e[11]===X?Z=e[12]:(Z=(0,P.jsx)(`div`,{className:`flex shrink-0 items-center gap-2 pr-9`,children:X}),e[11]=X,e[12]=Z);let ze=`translateY(${Re*2.5}rem)`,Q;e[13]===ze?Q=e[14]:(Q=(0,P.jsx)(`span`,{className:`pointer-events-none absolute top-2 right-2 left-2 z-0 h-9 rounded-md bg-accent transition-transform duration-[240ms] ease-out`,style:{transform:ze},"aria-hidden":!0}),e[13]=ze,e[14]=Q);let Be=oe,Ve=H.length>0?(0,P.jsx)(`div`,{className:`p-4`,children:(0,P.jsx)(`div`,{className:`flex flex-col gap-0.5 rounded-xl border border-border bg-card p-1.5 shadow-sm/4`,children:U.length===0?(0,P.jsxs)(`p`,{className:`px-2 py-8 text-center text-sm text-muted-foreground`,children:[`No settings match “`,L.trim(),`”.`]}):U.map(e=>{let n=j.find(t=>t.id===e.section)?.label;return(0,P.jsxs)(`button`,{type:`button`,onClick:()=>{if(e.section===`statistics`){b(),t({to:`/statistics`});return}z(e.targetId??null),x(e.section),R(``)},className:`flex flex-col gap-0.5 rounded-md px-3 py-2.5 text-left outline-hidden ring-ring transition-colors hover:bg-accent focus-visible:ring-2`,children:[(0,P.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[(0,P.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),n?(0,P.jsx)(`span`,{className:`text-[11px] text-muted-foreground/70`,children:n}):null]}),(0,P.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.description})]},`${e.section}:${e.title}`)})})}):(0,P.jsx)(`div`,{className:`flex flex-col`,children:(0,P.jsx)(Se,{section:I,searchTargetId:ye})},Ce),$;return e[15]!==Be||e[16]!==Ve?($=(0,P.jsx)(Be,{className:`min-h-0 min-w-0 flex-1`,children:Ve}),e[15]=Be,e[16]=Ve,e[17]=$):$=e[17],(0,P.jsx)(le,{open:_,onOpenChange:G,children:(0,P.jsx)(o,{value:E,children:(0,P.jsxs)(ce,{className:`project-glass-surface h-[min(88dvh,880px)] max-w-[1180px] overflow-hidden p-0`,bottomStickOnMobile:!1,showCloseButton:!0,surface:`glass`,children:[(0,P.jsxs)(`header`,{className:`flex h-12 shrink-0 items-center justify-between border-b border-border px-5`,children:[(0,P.jsxs)(`div`,{className:`flex min-w-0 items-center gap-4`,children:[(0,P.jsxs)(`div`,{className:`flex shrink-0 items-baseline gap-2`,children:[K,(0,P.jsx)(`span`,{"data-testid":`settings-scope-label`,className:`max-w-48 truncate text-xs text-muted-foreground`,children:ve})]}),Y]}),Z]}),(0,P.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-row`,children:[(0,P.jsxs)(`nav`,{className:`relative isolate flex w-12 shrink-0 flex-col gap-1 border-r border-border p-2 sm:w-48`,children:[Q,j.map(e=>{let t=e.icon,n=I===e.id;return(0,P.jsxs)(`button`,{type:`button`,onClick:()=>{z(null),x(e.id)},className:ae(`relative z-10 flex h-9 items-center gap-2.5 rounded-md px-2 text-left text-[13px] outline-hidden ring-ring transition-colors duration-150 focus-visible:ring-2`,n?`font-medium text-foreground`:`text-muted-foreground/70 hover:text-foreground/80`),"aria-label":e.label,"aria-current":n?`page`:void 0,children:[(0,P.jsx)(t,{className:ae(`size-4 shrink-0`,n?`text-foreground`:`text-muted-foreground/60`)}),(0,P.jsx)(`span`,{className:`hidden truncate sm:inline`,children:e.label})]},e.id)})]}),$]})]})})})}function we(e){return e+1}function Te(e){return e.id}function Ee(e){return e.transportStatus}function De(e){return e.directoryStatus}function Oe(e){return e.effectiveRole}function ke(e){return e.setSection}function Ae(e){return e.closeSettings}function je(e){return e.targetEnvironmentId}function Me(e){return e.section}function Ne(e){return e.open}function Pe(e){return e.activeEnvironmentId}export{Ce as SettingsDialog};
@@ -1,2 +0,0 @@
1
- import{i as e,r as t,t as n}from"./react-SIfiwpqq.js";import{_ as r,a as i,f as a,l as o,n as s,y as c}from"./env-B4arEvJg.js";import{$a as l,$c as u,$i as d,$o as f,$r as p,$s as m,A as h,Ac as g,Ao as ee,As as te,Ba as _,Bc as ne,Bo as v,Br as re,Bs as ie,Cc as y,Ci as b,Cl as ae,Co as oe,Cs as se,Da as ce,Dc as le,Di as ue,Do as de,Ds as fe,Ec as pe,El as me,Eo as he,Es as ge,Fl as _e,Fo as ve,Fs as ye,Go as be,Gs as xe,Ha as Se,Hc as Ce,Hi as we,Ho as x,Hr as Te,Hs as Ee,I as De,Ia as Oe,Il as ke,Io as Ae,Is as je,Ja as Me,Jc as Ne,Ji as Pe,Jo as Fe,Jr as Ie,Js as Le,Ka as Re,Ko as ze,Kr as Be,Ks as Ve,La as He,Lc as Ue,Li as We,Lo as Ge,Ls as Ke,M as qe,Ma as Je,Mc as Ye,Ml as Xe,Mo as Ze,Ms as Qe,Na as $e,Nc as et,Nl as tt,No as nt,Ns as rt,Oa as it,Ol as at,Oo as ot,Os as st,Pl as S,Po as ct,Ps as lt,Qa as ut,Qc as dt,Qi as ft,Qo as pt,Qs as mt,Ra as ht,Rl as gt,Ro as _t,Rr as vt,Rs as yt,Sc as bt,Sl as xt,So as St,Ss as Ct,Tc as wt,Tl as Tt,To as Et,Ts as Dt,Ua as Ot,Uc as kt,Uo as At,Ur as jt,Us as Mt,V as C,Va as Nt,Vi as w,Vo as Pt,Vs as Ft,Wa as T,Wo as It,Wr as Lt,Ws as Rt,Xa as zt,Xc as Bt,Xi as Vt,Ya as Ht,Yc as Ut,Yi as Wt,Yo as Gt,Yr as Kt,Ys as qt,Za as Jt,Zc as Yt,Zi as Xt,Zr as Zt,Zs as Qt,_l as $t,_o as en,_s as tn,a as nn,aa as rn,ai as an,as as on,bc as sn,bo as cn,bs as ln,ca as un,cc as dn,ci as fn,co as pn,dc as mn,dl as hn,do as gn,ds as _n,ea as vn,el as yn,eo as bn,es as E,fc as xn,fi as Sn,fl as Cn,fo as wn,fs as Tn,gc as En,go as Dn,gs as On,h as D,hi as kn,ho as An,i as jn,ia as Mn,io as Nn,jo as Pn,js as Fn,ka as In,kc as Ln,kl as Rn,ko as zn,ks as Bn,la as Vn,lc as Hn,ll as Un,ls as Wn,mc as Gn,ml as Kn,mo as qn,ms as Jn,n as Yn,na as Xn,nc as Zn,ni as Qn,no as $n,ns as er,o as tr,oa as nr,ol as rr,oo as ir,os as ar,p as O,pc as or,pl as sr,po as cr,ps as lr,qa as ur,qc as dr,qr as fr,qs as pr,r as mr,ra as hr,ri as k,ro as gr,rs as _r,s as vr,sa as yr,si as br,sl as xr,so as Sr,t as A,ta as Cr,to as wr,ts as Tr,uc as Er,ul as Dr,vc as Or,vi as kr,vl as Ar,vo as jr,vs as Mr,w as Nr,wc as Pr,wl as Fr,wo as Ir,xc as j,xi as Lr,xl as Rr,xs as zr,yl as Br,yo as Vr,ys as Hr,za as Ur,zc as Wr,zl as Gr,zr as Kr,zs as qr}from"./src-Vf4LVnMX.js";import{r as Jr,t as Yr}from"./pairingUrl-rQM9kSGT.js";var Xr=e=>{let t=e[Symbol.iterator]().next();if(t.done)throw Error(`headUnsafe: empty iterable`);return t.value},Zr={[Symbol.iterator](){return Qr}},Qr={next(){return{done:!0,value:void 0}}},$r=()=>Zr,ei=`~effect/collections/MutableHashMap`,ti={[ei]:ei,[Symbol.iterator](){return this.backing[Symbol.iterator]()},toString(){return`MutableHashMap(${hn(Array.from(this))})`},toJSON(){return{_id:`MutableHashMap`,values:Dr(Array.from(this))}},[Un](){return this.toJSON()},pipe(){return Gr(this,arguments)}},ni=()=>{let e=Object.create(ti);return e.backing=new Map,e.buckets=new Map,e},ri=S(2,(e,t)=>{if(e.backing.has(t))return yn(e.backing.get(t));if(ai(t))return u();let n=ii.get(e);if(n!==void 0)return e.backing.has(n)?yn(e.backing.get(n)):u();let r=xt(t),i=e.buckets.get(r);return i===void 0?u():oi(e,i,t)}),ii=new WeakMap,ai=e=>typeof e!=`object`&&typeof e!=`function`,oi=(e,t,n)=>{for(let r=0,i=t.length;r<i;r++)if(Ar(n,t[r])){let i=t[r];return ii.set(n,i),yn(e.backing.get(i))}return u()},si=S(3,(e,t,n)=>{if(e.backing.has(t)||ai(t))return e.backing.set(t,n),e;let r=ii.get(e);if(r!==void 0&&e.backing.has(r))return e.backing.set(r,n),e;let i=xt(t),a=e.buckets.get(i);return a===void 0?(e.buckets.set(i,[t]),e.backing.set(t,n),e):(r=ci(a,t),r===void 0&&(a.push(t),r=t),e.backing.set(r,n),e)}),ci=(e,t)=>{for(let n=0,r=e.length;n<r;n++)if(Ar(t,e[n]))return ii.set(t,e[n]),e[n]},li=S(2,(e,t)=>{if(ai(t))return e.backing.delete(t),e;let n=ii.get(e)??t,r=xt(n),i=e.buckets.get(r);if(i===void 0)return e;for(let t=0,r=i.length;t<r;t++){let r=i[t];if(r===n||Ar(n,r)){e.backing.delete(r),i.splice(t,1);break}}return i.length===0&&e.buckets.delete(r),e}),ui=new WeakMap,di=`~effect/data/Redacted`,fi=e=>me(e,di),pi=(e,t)=>{let n=Object.create(mi);return t?.label&&(n.label=t.label),ui.set(n,e),n},mi={[di]:{_A:e=>e},label:void 0,...rr,toJSON(){return this.toString()},toString(){return`<redacted${at(this.label)?`:`+this.label:``}>`},[Tt](){return xt(ui.get(this))},[Br](e){return fi(e)&&Ar(ui.get(this),ui.get(e))}},hi=`~effect/FiberSet`,gi=e=>me(e,hi),_i={[hi]:hi,[Symbol.iterator](){return this.state._tag===`Closed`?$r():this.state.backing[Symbol.iterator]()},...rr,toJSON(){return{_id:`FiberSet`,state:this.state}}},vi=(e,t)=>{let n=Object.create(_i);return n.state={_tag:`Open`,backing:e},n.deferred=t,n},yi=()=>ce(x(()=>vi(new Set,je())),e=>Pt(()=>{let t=e.state;if(t._tag===`Closed`)return E;e.state={_tag:`Closed`};let n=t.backing;return yr(n).pipe(ye(e.deferred))})),bi=-1,xi=xn(Er(Le,mn(bi))),Si=S(e=>gi(e[0]),(e,t,n)=>{if(e.state._tag===`Closed`){t.interruptUnsafe(bi);return}e.state.backing.has(t)||(e.state.backing.add(t),t.addObserver(r=>{e.state._tag!==`Closed`&&(e.state.backing.delete(t),Ee(r)&&(n?.propagateInterruption===!0?!xi(r.cause):!Qt(r.cause))&&lt(e.deferred,r))}))}),Ci=function(){let e;return()=>(e===void 0&&(e=he($n)),e)}(),wi=function(){let e=arguments[0];if(!Nn(arguments[1])){let t=arguments[1];return n=>Ti(e,n,t)}return Ti(e,arguments[1],arguments[2])},Ti=(e,t,n)=>er(r=>{if(e.state._tag===`Closed`)return x(Ci);let i=de(r.context)(t);return Si(e,i,n),v(i)}),Ei=e=>()=>pn(He(),t=>{let n=de(t);return(t,r)=>{if(e.state._tag===`Closed`)return Ci();let i=n(t,r);return Si(e,i,r),i}}),Di=e=>rt(e.deferred),Oi=e=>Tr({while:()=>e.state._tag===`Open`&&e.state.backing.size>0,body:()=>Mn(Xr(e)),step:tt}),ki=`~effect/ManagedRuntime`,Ai=(e,t)=>{let n=t?.memoMap??Hr(),r=Fn(`parallel`),i=Bn(r,`sequential`),a={onFiberStart:Vn(r)},o=e=>e?{...e,onFiberStart:e.onFiberStart?t=>{a.onFiberStart(t),e.onFiberStart(t)}:a.onFiberStart}:a,s,c=er(t=>(s||=he(At(tn(e,n,i),e=>x(()=>{l.cachedContext=e})),{...a,scheduler:t.currentScheduler}),Re(Mn(s)))),l={[ki]:ki,memoMap:n,scope:r,contextEffect:c,cachedContext:void 0,context(){return l.cachedContext===void 0?ot(l.contextEffect):Promise.resolve(l.cachedContext)},dispose(){return ot(l.disposeEffect)},[Symbol.asyncDispose](){return l.dispose()},disposeEffect:Pt(()=>(l.contextEffect=_(`ManagedRuntime disposed`),l.cachedContext=void 0,st(l.scope,xe))),runFork(e,t){return l.cachedContext===void 0?he(ji(l,e),o(t)):de(l.cachedContext)(e,o(t))},runCallback(e,t){return l.cachedContext===void 0?Ir(ji(l,e),o(t)):Et(l.cachedContext)(e,o(t))},runSyncExit(e){return l.cachedContext===void 0?nt(ji(l,e)):ct(l.cachedContext)(e)},runSync(e){return l.cachedContext===void 0?Ze(ji(l,e)):ve(l.cachedContext)(e)},runPromiseExit(e,t){return l.cachedContext===void 0?zn(ji(l,e),o(t)):ee(l.cachedContext)(e,o(t))},runPromise(e,t){return l.cachedContext===void 0?ot(ji(l,e),o(t)):Pn(l.cachedContext)(e,o(t))}};return l};function ji(e,t){return T(e.contextEffect,e=>jr(t,e))}var Mi=class extends j()(`effect/reactivity/Reactivity`){},Ni=x(()=>{let e=new Map,t=t=>{zi(t,t=>{let n=e.get(t);n!==void 0&&n.forEach(e=>e())})},n=e=>ht(n=>{let r=n.mapUnsafe.get(Pi.key);return r?zi(e,e=>{r.add(e)}):t(e),E}),r=(e,t)=>At(t,n(e)),i=(t,n)=>{let r=[];return zi(t,t=>{r.push(t);let i=e.get(t);i===void 0&&(i=new Set,e.set(t,i)),i.add(n)}),()=>{for(let t=0;t<r.length;t++){let i=e.get(r[t]);i.delete(n),i.size===0&&e.delete(r[t])}}},a=(e,t)=>l(function*(){let n=yield*He(),r=Pr(n,Dt),a=yield*d(),o=_e(de(n),Vn(r)),s=!1,c=!1,l=e=>{e._tag===`Failure`?ft(a,e.cause):Cr(a,e.value),c?(c=!1,o(t).addObserver(l)):s=!1};function u(){if(s){c=!0;return}s=!0,o(t).addObserver(l)}let f=i(e,u);return yield*ge(r,x(f)),u(),a});return Mi.of({mutation:r,query:a,stream:(e,t)=>a(e,t).pipe(pn(Lt),p),invalidateUnsafe:t,invalidate:n,registerUnsafe:i,withBatch:t=>Pt(()=>{let n=new Set;return t.pipe(Vr(Pi,n),qn(t=>x(()=>{n.forEach(t=>{let n=e.get(t);n!==void 0&&n.forEach(e=>e())})})))})})}),Pi=class extends j()(`effect/reactivity/Reactivity/PendingInvalidation`){},Fi=S(2,(e,t)=>Mi.use(n=>n.mutation(t,e))),Ii=e=>Mi.use(t=>t.invalidate(e)),Li=Mr(Mi)(Ni);function Ri(e){switch(typeof e){case`string`:case`number`:case`bigint`:case`boolean`:return String(e);default:return xt(e)}}var zi=(e,t)=>{if(Array.isArray(e)){for(let n=0;n<e.length;n++)t(Ri(e[n]));return}for(let n in e){t(n);let r=e[n];for(let e=0;e<r.length;e++)t(`${n}:${Ri(r[e])}`)}},Bi=`~effect/SubscriptionRef`,Vi=e=>me(e,Bi);({...rr});var Hi=e=>jt(e.pubsub),Ui=e=>x(()=>e.value),Wi=(e,t)=>{e.value=t,Xn(e.pubsub,t)},Gi=S(2,(e,t)=>e.semaphore.withPermit(x(()=>Wi(e,t)))),Ki={"~effect/reactivity/AsyncResult":{E:ke,A:ke},pipe(){return Gr(this,arguments)},[Br](e){if(this._tag!==e._tag||this.waiting!==e.waiting)return!1;switch(this._tag){case`Initial`:return!0;case`Success`:return Ar(this.value,e.value);case`Failure`:return Ar(this.cause,e.cause)}},[Tt](){let e=ae(`${this._tag}:${this.waiting}`);return this._tag===`Initial`?e:Rr(e)(this._tag===`Success`?xt(this.value):xt(this.cause))}},qi=(e,t)=>e._tag===`Success`?Qi(e.value):ta(e.cause,{previous:t}),Ji=e=>e._tag===`None`?Xi(!0):ra(e.value),Yi=e=>e._tag!==`Initial`,Xi=(e=!1)=>{let t=Object.create(Ki);return t._tag=`Initial`,t.waiting=e,t},Zi=e=>e._tag===`Success`,Qi=(e,t)=>{let n=Object.create(Ki);return n._tag=`Success`,n.value=e,n.waiting=t?.waiting??!1,n.timestamp=t?.timestamp??Date.now(),n},$i=e=>e._tag===`Failure`,ea=(e,t)=>{let n=Object.create(Ki);return n._tag=`Failure`,n.cause=e,n.previousSuccess=t?.previousSuccess??u(),n.waiting=t?.waiting??!1,n},ta=(e,t)=>ea(e,{previousSuccess:Ce(t.previous,e=>Zi(e)?yn(e):$i(e)?e.previousSuccess:u()),waiting:t.waiting}),na=(e,t)=>ta(pr(e),t),ra=(e,t)=>{if(e.waiting)return t?.touch?ia(e):e;let n=Object.assign(Object.create(Ki),e);return n.waiting=!0,t?.touch&&Zi(n)&&(n.timestamp=Date.now()),n},ia=e=>Zi(e)?Qi(e.value,{waiting:e.waiting}):e,aa=(e,t)=>e._tag===`Failure`?ta(e.cause,{previous:t,waiting:e.waiting}):e,oa=e=>e._tag===`Success`?yn(e.value):e._tag===`Failure`?Yt(e.previousSuccess,e=>e.value):u(),sa=e=>dr(oa(e),()=>new Ve(`AsyncResult.getOrThrow: no value found`)),ca=e=>{switch(e._tag){case`Success`:return Rt(e.value);case`Failure`:return qr(e.cause);default:return yt(new Ve)}},la=`~effect/reactivity/AtomRegistry`,ua=e=>new ga(e?.initialValues,e?.scheduleTask,e?.timeoutResolution,e?.defaultIdleTTL),da=j(la),fa={immediate:!0},pa=e=>{e()},ma=`~effect-atom/atom/Atom/Serializable`,ha=e=>ma in e?e[ma].key:e,ga=class{[la];timeoutResolution;defaultIdleTTL;scheduler;schedulerAsync;dispatcher;onNodeAdded;onNodeRemoved;constructor(e,t,n,r){if(this[la]=la,this.scheduler=new dn(`sync`,t),this.schedulerAsync=new dn(`async`,t),this.dispatcher=this.schedulerAsync.makeDispatcher(),this.defaultIdleTTL=r,this.timeoutResolution=n===void 0&&r!==void 0?Math.round(r/2):n??1e3,e!==void 0)for(let[t,n]of e){let e=t;for(;e.initialValueTarget;)e=e.initialValueTarget;this.ensureNode(e).setInitialValue(n)}}nodes=new Map;preloadedSerializable=new Map;timeoutBuckets=new Map;nodeTimeoutBucket=new Map;disposed=!1;getNodes(){return this.nodes}get(e){return this.ensureNode(e).value()}set(e,t){e.write(this.ensureNode(e).writeContext,t)}setSerializable(e,t){this.preloadedSerializable.set(e,t)}modify(e,t){let n=this.ensureNode(e),r=t(n.value());return e.write(n.writeContext,r[1]),r[0]}update(e,t){let n=this.ensureNode(e);e.write(n.writeContext,t(n.value()))}refresh=e=>{e.refresh===void 0?this.invalidateAtom(e):e.refresh(this.refresh)};subscribe(e,t,n){let r=this.ensureNode(e);n?.immediate&&t(r.value());let i=r.subscribe(function(){t(r._value)});return()=>{i(),r.canBeRemoved&&this.scheduleNodeRemoval(r)}}mount(e){return this.subscribe(e,tt,fa)}atomHasTtl(e){return!e.keepAlive&&e.idleTTL!==0&&(e.idleTTL!==void 0||this.defaultIdleTTL!==void 0)}ensureNode(e){let t=ha(e),n=this.nodes.get(t);if(n===void 0?(n=this.createNode(e),this.nodes.set(t,n),this.onNodeAdded?.(n)):this.atomHasTtl(e)&&this.removeNodeTimeout(n),typeof t==`string`&&this.preloadedSerializable.has(t)){let r=this.preloadedSerializable.get(t);this.preloadedSerializable.delete(t);let i=e[ma].decode(r),a=e;for(;a.initialValueTarget;)a=a.initialValueTarget;a===e?n.setValue(i):this.ensureNode(a).setInitialValue(i)}return n}createNode(e){if(this.disposed)throw Error(`Cannot access Atom ${e}: registry is disposed`);return e.keepAlive||this.scheduleAtomRemoval(e),new _a(this,e)}invalidateAtom=e=>{this.ensureNode(e).invalidate()};scheduleAtomRemoval(e){this.dispatcher.scheduleTask(()=>{let t=this.nodes.get(ha(e));t!==void 0&&t.canBeRemoved&&this.removeNode(t)},0)}scheduleNodeRemoval(e){this.dispatcher.scheduleTask(()=>{e.canBeRemoved&&this.removeNode(e)},0)}removeNode(e){this.atomHasTtl(e.atom)?this.setNodeTimeout(e):(this.nodes.delete(ha(e.atom)),e.remove(),this.onNodeRemoved?.(e))}setNodeTimeout(e){if(this.nodeTimeoutBucket.has(e))return;let t=e.atom.idleTTL??this.defaultIdleTTL;if(this.#e!==null&&(t-=this.#e,t<=0)){this.nodes.delete(ha(e.atom)),e.remove(),this.onNodeRemoved?.(e);return}let n=Math.ceil(t/this.timeoutResolution)*this.timeoutResolution,r=Date.now()+n,i=r-r%this.timeoutResolution+this.timeoutResolution,a=this.timeoutBuckets.get(i);a===void 0&&(a=[new Set,setTimeout(()=>this.sweepBucket(i),i-Date.now())],this.timeoutBuckets.set(i,a)),a[0].add(e),this.nodeTimeoutBucket.set(e,i)}removeNodeTimeout(e){let t=this.nodeTimeoutBucket.get(e);if(t===void 0)return;this.nodeTimeoutBucket.delete(e),this.scheduleNodeRemoval(e);let[n,r]=this.timeoutBuckets.get(t);n.delete(e),n.size===0&&(clearTimeout(r),this.timeoutBuckets.delete(t))}#e=null;sweepBucket(e){let t=this.timeoutBuckets.get(e)[0];this.timeoutBuckets.delete(e),t.forEach(e=>{this.nodeTimeoutBucket.delete(e),e.canBeRemoved&&(this.nodes.delete(ha(e.atom)),this.onNodeRemoved?.(e),this.#e=e.atom.idleTTL??this.defaultIdleTTL,e.remove(),this.#e=null)})}reset(){this.timeoutBuckets.forEach(([,e])=>clearTimeout(e)),this.timeoutBuckets.clear(),this.nodeTimeoutBucket.clear(),this.nodes.forEach(e=>{e.remove(),this.onNodeRemoved?.(e)}),this.nodes.clear()}dispose(){this.disposed=!0,this.reset()}},M={alive:1,initialized:2,waitingForValue:4},N={uninitialized:M.alive|M.waitingForValue,stale:M.alive|M.initialized|M.waitingForValue,valid:M.alive|M.initialized,removed:0},_a=class{constructor(e,t){this.registry=e,this.atom=t,this.writeContext=new xa(e,this)}registry;atom;state=N.uninitialized;lifetime;writeContext;preserveInitialValueOnBuild=!1;parents=new Set;previousParents;children=new Set;listeners=new Set;skipInvalidation=!1;building=!1;invalidatedDuringBuild=!1;currentState(){switch(this.state){case N.uninitialized:return`uninitialized`;case N.stale:return`stale`;case N.valid:return`valid`;default:return`removed`}}get canBeRemoved(){return!this.atom.keepAlive&&this.listeners.size===0&&this.children.size===0&&this.state!==0}_value=void 0;value(){if((this.state&M.waitingForValue)!==0){this.lifetime=ba(this),this.building=!0;let e=this.atom.read(this.lifetime);if(this.building=!1,(this.state&M.waitingForValue)!==0&&(this.preserveInitialValueOnBuild?(this.preserveInitialValueOnBuild=!1,this.state=N.valid):this.setValue(e)),this.previousParents){let e=this.previousParents;this.previousParents=void 0;for(let t of e)t.removeChild(this),t.canBeRemoved&&this.registry.scheduleNodeRemoval(t)}}return this._value}valueOption(){return(this.state&M.initialized)===0?u():yn(this._value)}setInitialValue(e){if((this.state&M.initialized)===0){this.preserveInitialValueOnBuild=!0,this.state=N.stale,this._value=e,P.phase===Sa.collect?P.notify.add(this):this.notify();return}this.setValue(e)}setValue(e){if((this.state&M.initialized)===0){this.state=N.valid,this._value=e,P.phase===Sa.collect?P.notify.add(this):this.notify();return}this.state=N.valid,!this.atom.equals(this._value,e)&&(this._value=e,this.skipInvalidation?this.skipInvalidation=!1:this.invalidateChildren(),this.listeners.size>0&&(P.phase===Sa.collect?P.notify.add(this):this.notify()))}addParent(e){this.parents.add(e),this.previousParents!==void 0&&(this.previousParents.delete(e),this.previousParents.size===0&&(this.previousParents=void 0)),e.children.has(this)||(e.children.add(this),e.skipInvalidation&&=!1)}removeChild(e){this.children.delete(e)}invalidate(){this.building&&P.phase===Sa.collect&&(this.invalidatedDuringBuild=!0),this.state===N.valid&&(this.state=N.stale,this.disposeLifetime()),P.phase===Sa.collect?P.stale.push(this):this.atom.lazy&&this.listeners.size===0&&!va(this.children)?(this.invalidateChildren(),this.skipInvalidation=!0):this.value()}invalidateChildren(){if(this.children.size===0)return;let e=this.children;this.children=new Set;for(let t of e)t.invalidate()}notify(){this.listeners.forEach(pa),P.phase===Sa.commit&&P.notify.delete(this)}disposeLifetime(){this.lifetime!==void 0&&(this.lifetime.dispose(),this.lifetime=void 0),this.parents.size!==0&&(this.previousParents=this.parents,this.parents=new Set)}remove(){if(this.state=N.removed,this.listeners.clear(),this.lifetime===void 0||(this.disposeLifetime(),this.previousParents===void 0))return;let e=this.previousParents;this.previousParents=void 0;for(let t of e)t.removeChild(this),t.canBeRemoved&&this.registry.removeNode(t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}};function va(e){if(e.size===0)return!1;let t=e,n,r=0;for(;t!==void 0;){for(let e of t)if(!e.atom.lazy||e.listeners.size>0)return!0;else e.children.size>0&&(n===void 0?n=[e.children]:n.push(e.children));t=n?.[r++]}return!1}var ya={get registry(){return this.node.registry},addFinalizer(e){if(this.disposed)return e();this.finalizers??=[],this.finalizers.push(e)},get(e){if(this.disposed)return this.node.registry.get(e);let t=this.node.registry.ensureNode(e),n=t.value();return this.node.addParent(t),n},result(e,t){if(this.disposed||this.isFn)return this.resultOnce(e,t);let n=this.get(e);if(t?.suspendOnWaiting&&n.waiting)return wn;switch(n._tag){case`Initial`:return wn;case`Failure`:return qr(n.cause);case`Success`:return v(n.value)}},resultOnce(e,t){return Je(n=>{let r=this.once(e);if(r._tag!==`Initial`&&!(t?.suspendOnWaiting&&r.waiting))return n(ca(r));let i=this.node.registry.subscribe(e,e=>{e._tag===`Initial`||t?.suspendOnWaiting&&e.waiting||(i(),n(ca(e)))},{immediate:!1});return x(i)})},setResult(e,t){return this.disposed?wn:(this.node.registry.set(e,t),this.resultOnce(e,{suspendOnWaiting:!0}))},some(e){if(this.disposed||this.isFn)return this.someOnce(e);let t=this.get(e);return t._tag===`None`?wn:v(t.value)},someOnce(e){return Je(t=>{let n=this.once(e);if(Bt(n))return t(v(n.value));let r=this.node.registry.subscribe(e,e=>{Ut(e)||(r(),t(v(e.value)))},{immediate:!1});return x(r)})},once(e){return this.node.registry.get(e)},self(){return this.disposed?u():this.node.valueOption()},refresh(e){this.disposed||this.node.registry.refresh(e)},refreshSelf(){this.disposed||this.node.invalidate()},mount(e){this.disposed||this.addFinalizer(this.node.registry.mount(e))},subscribe(e,t,n){this.disposed||this.addFinalizer(this.node.registry.subscribe(e,t,n))},setSelf(e){this.disposed||this.node.setValue(e)},set(e,t){this.disposed||this.node.registry.set(e,t)},stream(e,t){return this.disposed?Kr:vt(n=>x(()=>{this.subscribe(e,e=>Cr(n,e),{immediate:!t?.withoutInitialValue})}))},streamResult(e,t){return this.stream(e,t).pipe(Te(Yi),fr(e=>e._tag===`Success`?v(e.value):Ot(e.cause)))},dispose(){if(this.disposed=!0,this.finalizers===void 0)return;let e=this.finalizers;this.finalizers=void 0;for(let t=e.length-1;t>=0;t--)e[t]()}},ba=e=>{function t(n){if(t.disposed||t.isFn)return e.registry.get(n);let r=e.registry.ensureNode(n),i=r.value();return e.addParent(r),i}return Object.setPrototypeOf(t,ya),t.isFn=!1,t.disposed=!1,t.finalizers=void 0,t.node=e,t},xa=class{constructor(e,t){this.registry=e,this.node=t}registry;node;get(e){return this.registry.get(e)}set(e,t){return this.registry.set(e,t)}setSelf(e){return this.node.setValue(e)}refreshSelf(){return this.node.invalidate()}},Sa={disabled:0,collect:1,commit:2},P={phase:Sa.disabled,depth:0,stale:[],notify:new Set};function Ca(e){P.phase=Sa.collect,P.depth++;try{if(e(),P.depth===1){for(let e=0;e<P.stale.length;e++)wa(P.stale[e]);P.phase=Sa.commit;for(let e of P.notify)e.notify();P.notify.clear()}}finally{P.depth--,P.depth===0&&(P.phase=Sa.disabled,P.stale=[])}}function wa(e){if(e.state===N.valid){if(!e.invalidatedDuringBuild)return;e.invalidatedDuringBuild=!1,e.state=N.stale,e.disposeLifetime()}for(let t of e.parents)t.state!==N.valid&&wa(t);e.state!==N.valid&&e.value()}var Ta=`~effect/reactivity/Atom`,Ea=e=>me(e,Ta),Da=`~effect/reactivity/Atom/Writable`,Oa=S(2,(e,t)=>{let n=or(t),r=Gn(n);return Object.assign(Object.create(Object.getPrototypeOf(e)),{...e,keepAlive:!r,idleTTL:r?Or(n):void 0})}),ka=Oa(0),Aa={[Ta]:Ta,equals:Object.is,...rr,toJSON(){return{_id:`Atom`,keepAlive:this.keepAlive,lazy:this.lazy,label:this.label}}},ja={...Aa,atom(e,t){let n=za(e,t);return Fa(e=>{let t=e.self(),r=e(this);return r._tag===`Success`?n(e,r.value):aa(r,t)})},fn(e,t){return arguments.length===0?(e,t)=>Ma(this,e,t):Ma(this,e,t)},pull(e,t){let n=ka(Ha(0));return to(n,Fa(r=>{let i=r.self(),a=r(this);return a._tag===`Success`?Wa(r,eo(r,n,e,t),Xi(!0),a.value):aa(a,i)}))},subscriptionRef(e){return Xa(ka(Fa(t=>{let n=t.self(),r=t(this);if(r._tag!==`Success`)return aa(r,n);let i=typeof e==`function`?e(t):e;return Vi(i)?i:Wa(t,i,Xi(!0),r.value)})),(e,t)=>Ya(e,t,sa(e(this))))}},Ma=(e,t,n)=>{let[r,i,a]=$a(n?.reactivityKeys?(e,r)=>{let i=t(e,r);return Nn(i)?Fi(i,n.reactivityKeys):re(i,Ii(n.reactivityKeys))}:t,n);return Ia(t=>{t.get(a);let n=t.self(),i=t.get(e);return i._tag===`Success`?r(t,i.value):aa(i,n)},i)},Na={...Aa,[Da]:Da},Pa=e=>Da in e,Fa=(e,t)=>{let n=Object.create(Aa);return n.keepAlive=!1,n.lazy=!0,n.read=e,n.refresh=t,n},Ia=(e,t,n)=>{let r=Object.create(Na);return r.keepAlive=!1,r.lazy=!0,r.read=e,r.write=t,r.refresh=n,r};function La(e,t){e.setSelf(t)}var Ra=(e,t)=>{let n=za(e,t);return`~effect/reactivity/Atom`in n?n:Fa(n)},za=(e,t)=>{if(typeof e==`function`&&!Nn(e)&&!Be(e)){let n=e;return function(e,r){let i=n(e);switch(typeof i){case`function`:case`object`:return i===null?i:Ba in i?Ua(e,i,t,r):Va in i?qa(e,i,t,r):i;default:return i}}}return Nn(e)?function(n,r){return Ua(n,e,t,r)}:Be(e)?function(n,r){return qa(n,e,t,r)}:Ha(e)},Ba=`~effect/Effect`,Va=`~effect/Stream`,Ha=e=>Ia(function(t){return e},La),Ua=(e,t,n,r)=>Wa(e,t,n?.initialValue===void 0?Xi():Qi(n.initialValue),r,n?.uninterruptible);function Wa(e,t,n,r=y(),i=!1){let a=e.self(),o=Fn();e.addFinalizer(()=>{de(r)(st(o,xe))});let s=new Map(r.mapUnsafe);s.set(Dt.key,o),s.set(da.key,e.registry),s.set(Hn.key,e.registry.scheduler);let c,l=!1,u=Ga(pe(s),t,function(t){c=qi(t,a),l&&e.setSelf(c)},i);return l=!0,u!==void 0&&e.addFinalizer(u),c===void 0?a._tag===`Some`?Ji(a):ra(n):c}function Ga(e,t,n,r=!1){if(Ft(t)){n(t);return}let i=de(e)(t);i.currentDispatcher?.flush();let a=i.pollUnsafe();if(a){n(a);return}let o=i.addObserver(n);function s(){o(),r||i.interruptUnsafe()}return s}function Ka(e){let t=e?.memoMap??ka(Ra(()=>Hr())),n=e=>Ea(t)?e(t):t,r=Li;function i(e){let t=Object.create(ja);t.keepAlive=!1,t.lazy=!0,t.refresh=void 0,t.factory=i;let a=ro(Fa(typeof e==`function`?t=>Ct(e(t),r):()=>Ct(e,r)));return t.layer=a,t.read=function(e){let t=e(a);return Ua(e,T(Ae,r=>tn(t,n(e),r)),{uninterruptible:!0})},t}i.memoMap=t,i.addGlobalLayer=e=>{r=Ct(r,zr(e,Li))};let a=ka(Ra(e=>ht(t=>tn(Li,n(e),Pr(t,Dt))).pipe(pn(Pr(Mi)))));return i.withReactivity=e=>t=>ao(t,n=>{let r=sa(n(a));return n.addFinalizer(r.registerUnsafe(e,()=>{n.refresh(t)})),n.subscribe(t,e=>n.setSelf(e)),n.once(t)},{initialValueTarget:t}),i}Ka().withReactivity;var qa=(e,t,n,r)=>Ja(e,t,n?.initialValue===void 0?Xi():Qi(n.initialValue),r);function Ja(e,t,n,r=y()){let i=e.self();r=bt(r,da,e.registry);let a=Ge(n=>T(Pe(t.channel,n),t=>Tr({while:Xe,body:()=>t,step(t){e.setSelf(Qi(et(t),{waiting:!0}))}}))).pipe($e(t=>(Jn(t)?gt(e.self(),Ce(oa),dt({onNone:()=>e.setSelf(na(new Ve,{previous:e.self()})),onSome:t=>e.setSelf(Qi(t))})):e.setSelf(ta(t,{previous:e.self()})),E))),o=new Map(r.mapUnsafe);o.set(da.key,e.registry),o.set(Hn.key,e.registry.scheduler);let s=Ga(pe(o),a,tt,!1);return s!==void 0&&e.addFinalizer(s),i._tag===`Some`?Ji(i):ra(n)}var Ya=(e,t,n=y())=>Vi(t)?(e.addFinalizer(Hi(t).pipe(Kt(t=>{for(let n=0;n<t.length;n++)e.setSelf(t[n]);return E}),Et(n))),ve(n)(Ui(t))):t._tag===`Success`?Ja(e,Hi(t.value),Xi(!0),n):t,Xa=(e,t)=>{function n(t,n){let r=t.get(e);Vi(r)?Ze(Gi(r,n)):Zi(r)&&Ze(Gi(r.value,n))}return Ia(n=>{let r=n(e);return Vi(r)||Zi(r)?t(n,r):r},n)},Za=Symbol.for(`effect/reactivity/atom/Atom/Reset`),Qa=Symbol.for(`effect/reactivity/atom/Atom/Interrupt`);function $a(e,t){let n=ka(Ha([0,void 0])),r=t?.initialValue===void 0?Xi():Qi(t.initialValue),i=t?.concurrent?ka(Fa(e=>{let t=new Set;return e.addFinalizer(()=>t.forEach(e=>e.interruptUnsafe())),t})):void 0;function a(t,a){let o=i?t(i):void 0;t.isFn=!0;let[s,c]=t.get(n);if(s===0)return r;if(c===Qa)return ta(mt(),{previous:t.self()});let l=e(c,t);return Ba in l?(o&&(l=T(zt(l,{startImmediately:!0}),e=>(o.add(e),e.addObserver(()=>o.delete(e)),pn(un(o),e=>e[0])))),Wa(t,l,r,a,!1)):Ja(t,l,r,a)}function o(e,t){po(()=>{t===Za?e.set(n,[0,void 0]):t===Qa?e.set(n,[e.get(n)[0]+1,Qa]):e.set(n,[e.get(n)[0]+1,t]),e.refreshSelf()})}return[a,o,n]}var eo=(e,t,n,r)=>T(Zt(typeof n==`function`?n(e):n),n=>{let i=rn().context,a=g(),o=gn(n,{onFailure(e){return Jn(e)?Ye(a)?v({done:!0,items:a}):Se(new Ve(`Atom.pull: no items`)):Ot(e)},onSuccess(e){let t;return r?.disableAccumulation?t=e:(t=Ln(a,e),a=t),v({done:!1,items:t})}}),s=new Set;return e.addFinalizer(()=>{for(let e of s)e()}),e.once(t),e.subscribe(t,()=>{e.setSelf(Ji(e.self()));let t;t=Ga(i,o,n=>{t&&s.delete(t);let r=qi(n,e.self()),i=s.size>0;e.setSelf(i?ra(r):r)}),t&&s.add(t)}),o}),to=(e,t)=>Ia(t.read,function(t,n){t.set(e,t.get(e)+1)}),no=typeof WeakRef>`u`||typeof FinalizationRegistry>`u`?e=>{let t=ni();return function(n){let r=ri(t,n);if(r._tag===`Some`)return r.value;let i=e(n);return si(t,n,i),i}}:e=>{let t=ni(),n=new FinalizationRegistry(e=>{li(t,e)});return function(r){let i=ri(t,r).pipe(kt(e=>e.deref()));if(i._tag===`Some`)return i.value;let a=e(r);return si(t,r,new WeakRef(a)),n.register(a,r),a}},ro=e=>Object.assign(Object.create(Object.getPrototypeOf(e)),{...e,keepAlive:!0}),io=S(2,(e,t)=>Object.assign(Object.create(Object.getPrototypeOf(e)),{...e,label:[t,Error().stack?.split(`
2
- `)[5]??``]})),ao=S(e=>Ea(e[0]),(e,t,n)=>{let r=ka(Pa(e)?Ia(n=>t(n,e),function(t,n){t.set(e,n)},e.refresh??function(t){t(e)}):Fa(n=>t(n,e),e.refresh??function(t){t(e)}));return n?.initialValueTarget&&(r.initialValueTarget=oo(n.initialValueTarget)),r}),oo=e=>{let t=e;for(;t.initialValueTarget;)t=t.initialValueTarget;return t},so=S(2,(e,t)=>ao(e,n=>t(n(e)))),co=S(2,(e,t)=>{let n=Or(or(t.staleTime));return ao(e,r=>{let i=r.once(e);return r.subscribe(e,e=>{r.setSelf(e)}),t.revalidateOnFocus&&t.focusSignal&&(r.once(t.focusSignal),r.subscribe(t.focusSignal,t.revalidateOnFocus===`always`?()=>r.refresh(e):()=>{fo(r.once(e),n)&&r.refresh(e)})),Ut(r.self())&&t.revalidateOnMount===!1||fo(i,n)&&r.refresh(e),i},{initialValueTarget:e})}),lo=e=>e._tag===`Success`?yn(e.timestamp):e._tag===`Failure`?Yt(e.previousSuccess,e=>e.timestamp):u(),uo=(e,t,n)=>n-e<t,fo=(e,t)=>{if(e.waiting)return!1;let n=Ne(lo(e));return n===void 0?e._tag!==`Initial`:!uo(n,t,Date.now())},po=Ca,mo=`~effect-atom/atom/Atom/ServerValue`,ho=S(2,(e,t)=>`~effect-atom/atom/Atom/ServerValue`in e?e[mo](e=>t.get(e)):t.get(e)),go=`~effect/http/HttpClientError`,_o=e=>me(e,go),vo=class extends On(`HttpClientError`){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[go]=go;get request(){return this.reason.request}get response(){return`response`in this.reason?this.reason.response:void 0}get message(){return this.reason.message}},yo=e=>e.endsWith(`Error`)?e.slice(0,-5):e,bo=(e,t,n)=>t?`${e}: ${t} (${n})`:`${e} error (${n})`,xo=class extends On(`TransportError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return bo(yo(this._tag),this.description,this.methodAndUrl)}};On(`EncodeError`);var So=class extends On(`InvalidUrlError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){return bo(yo(this._tag),this.description,this.methodAndUrl)}},Co=class extends On(`StatusCodeError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return bo(yo(this._tag),this.description,e)}},wo=class extends On(`DecodeError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return bo(yo(this._tag),this.description,e)}},To=class extends On(`EmptyBodyError`){get methodAndUrl(){return`${this.request.method} ${this.request.url}`}get message(){let e=`${this.response.status} ${this.methodAndUrl}`;return bo(yo(this._tag),this.description,e)}},Eo=class e extends k(go)({_tag:w(`HttpError`),kind:br([`EncodeError`,`DecodeError`,`TransportError`,`InvalidUrlError`,`StatusCodeError`,`EmptyBodyError`]),cause:We(Qn())}){static fromHttpClientError(t){return new e({_tag:`HttpError`,kind:t.reason._tag,cause:t.reason})}},Do=Symbol.for(`~effect/http/Headers`),Oo=Object.defineProperties(Object.create(null),{[Do]:{value:Do},[sr]:{value(e){return Ro(this,Pr(e,zo))}},toJSON:{value(){return Cn(this)}},[Br]:{value(e){return Ao(this,e)}},[Tt]:{value(){return Fr(this)}},toString:{value:xr.toString},[Un]:{value:xr[Un]}}),ko=e=>Object.assign(Object.create(Oo),e),Ao=a($t()),jo=Object.create(Oo),Mo=e=>{if(e===void 0)return jo;if(Symbol.iterator in e){let t=Object.create(Oo);for(let[n,r]of e)t[n.toLowerCase()]=r;return t}let t=Object.create(Oo);for(let[n,r]of Object.entries(e))Array.isArray(r)?t[n.toLowerCase()]=r.join(`, `):r!==void 0&&(t[n.toLowerCase()]=r);return t},No=e=>Object.setPrototypeOf(e,Oo),Po=S(3,(e,t,n)=>{let r=ko(e);return r[t.toLowerCase()]=n,r}),Fo=S(2,(e,t)=>ko({...e,...Mo(t)})),Io=S(2,(e,t)=>{let n=ko(e);return Object.assign(n,t),n}),Lo=S(2,(e,t)=>{let n=ko(e);return delete n[t.toLowerCase()],n}),Ro=S(2,(e,t)=>{let n={...e},r=t=>{if(typeof t==`string`){let r=t.toLowerCase();r in e&&(n[r]=pi(e[r]))}else for(let r in e)t.test(r)&&(n[r]=pi(e[r]))};if(Array.isArray(t))for(let e=0;e<t.length;e++)r(t[e]);else r(t);return n}),zo=sn(`effect/Headers/CurrentRedactedNames`,{defaultValue:()=>[`authorization`,`cookie`,`set-cookie`,`x-api-key`]}),Bo=`~effect/socket/Socket`,Vo=j(`effect/socket/Socket`),Ho=e=>Vo.of({[Bo]:Bo,runRaw:e.runRaw,run:e.run??((t,n)=>e.runRaw(e=>typeof e==`string`?t(Uo.encode(e)):e instanceof Uint8Array?t(e):t(new Uint8Array(e)),n)),runString:e.runString??(e.run?(t,n)=>e.run(e=>t(Wo.decode(e)),n):(t,n)=>e.runRaw(e=>typeof e==`string`?t(e):e instanceof Uint8Array?t(Wo.decode(e)):t(Wo.decode(new Uint8Array(e))),n)),writer:e.writer}),Uo=new TextEncoder,Wo=new TextDecoder,Go=`~effect/socket/Socket/CloseEvent`,Ko=e=>me(e,Go),qo=`~effect/socket/Socket/SocketError`,Jo=e=>me(e,qo),Yo=class extends k(`effect/socket/Socket/SocketReadError`)({_tag:w(`SocketReadError`),cause:Qn()}){message=`An error occurred during Read`},Xo=class extends k(`effect/socket/Socket/SocketWriteError`)({_tag:w(`SocketWriteError`),cause:Qn()}){message=`An error occurred during Write`},Zo=class extends k(`effect/socket/Socket/SocketOpenError`)({_tag:w(`SocketOpenError`),kind:br([`Unknown`,`Timeout`]),cause:Qn()}){get message(){return this.kind===`Timeout`?`timeout waiting for "open"`:`An error occurred during Open`}},Qo=class extends k(`effect/socket/Socket/SocketCloseError`)({_tag:w(`SocketCloseError`),code:an,closeReason:We(Sn)}){static filterClean(e){return function(t){return es.is(t)&&t.reason._tag===`SocketCloseError`&&e(t.reason.code)?ne(t.reason):Ue(t)}}get message(){return this.closeReason?`${this.code}: ${this.closeReason}`:`${this.code}`}},$o=kr([Yo,Xo,Zo,Qo]),es=class extends kn(qo)(`SocketError`,{_tag:w(`SocketError`),reason:$o}){constructor(e){`cause`in e.reason?super({...e,cause:e.reason.cause}):super(e)}[qo]=qo;static is(e){return Jo(e)}message=this.reason.message},ts=e=>!0,ns=class extends j()(`~effect/socket/Socket/WebSocket`){},rs=class extends j()(`@effect/platform/Socket/WebSocketConstructor`){},is=(e,t)=>rs.use(n=>as(ce((typeof e==`string`?v(e):e).pipe(pn(e=>n(e,t?.protocols))),e=>x(()=>e.close(1e3))),t)),as=(e,t)=>er(n=>{let r,i=!0,a=hr(!1),o=n.context,s=t?.closeCodeIsError??ts,c=(n,c)=>Ge(ur(function*(o){let l=yield*yi().pipe(Qe(o)),u=yield*Qe(e,o),d=yield*Vr(Ei(l)(),ns,u),f=!1;function p(e){if(e.data instanceof Blob){let t=T(en(()=>e.data.arrayBuffer()),e=>{let t=n(new Uint8Array(e));return Nn(t)?t:E});return d(t)}let t=n(e.data instanceof ArrayBuffer?new Uint8Array(e.data):e.data);Nn(t)&&d(t)}function m(e){u.removeEventListener(`message`,p),u.removeEventListener(`close`,h),lt(l.deferred,Se(new es({reason:f?new Yo({cause:e}):new Zo({kind:`Unknown`,cause:e})})))}function h(e){let t=typeof e.code==`number`?e.code:1001;u.removeEventListener(`message`,p),u.removeEventListener(`error`,m),lt(l.deferred,Se(new es({reason:new Qo({code:t,closeReason:e.reason})})))}if(u.addEventListener(`close`,h,{once:!0}),u.addEventListener(`error`,m,{once:!0}),u.addEventListener(`message`,p),u.readyState!==1){let e=je();u.addEventListener(`open`,()=>{f=!0,lt(e,E)},{once:!0}),yield*rt(e).pipe(Fe({duration:t?.openTimeout??1e4,orElse:()=>Se(new es({reason:new Zo({kind:`Timeout`,cause:Error(`timeout waiting for "open"`)})}))}),cn(Di(l)))}if(f=!0,r=u,a.openUnsafe(),i&&t?.onInitialRun){i=!1;for(let e of t.onInitialRun(u))p(e)}return c?.onOpen&&(yield*c.onOpen),yield*Oe(Di(l),Qo.filterClean(e=>!s(e)),()=>E)})).pipe(pt(e=>le(o,e)),Nt(x(()=>{a.closeUnsafe(),r=void 0}))),l=v(e=>a.whenOpen(Pt(()=>{try{let t=r;return Ko(e)?t.close(e.code,e.reason):t.send(e),E}catch(e){return Se(new es({reason:new Xo({cause:e})}))}})));return v(Ho({runRaw:c,writer:l}))}),os=_e(is,Mr(Vo)),ss=class extends j()(`effect/workers/Transferable/Collector`){},cs=()=>{let e=[],t=t=>{e.push(...t)},n=()=>e,r=()=>{let t=e;return e=[],t};return ss.of({addAllUnsafe:t,addAll:e=>x(()=>t(e)),readUnsafe:n,read:x(n),clearUnsafe:r,clear:x(r)})},ls=`~effect/workers/WorkerError`,us=class extends k(`effect/workers/WorkerError/WorkerSpawnError`)({_tag:w(`WorkerSpawnError`),message:Sn,cause:We(Qn())}){},ds=class extends k(`effect/workers/WorkerError/WorkerSendError`)({_tag:w(`WorkerSendError`),message:Sn,cause:We(Qn())}){},fs=class extends k(`effect/workers/WorkerError/WorkerReceiveError`)({_tag:w(`WorkerReceiveError`),message:Sn,cause:We(Qn())}){},ps=class extends k(`effect/workers/WorkerError/WorkerUnknownError`)({_tag:w(`WorkerUnknownError`),message:Sn,cause:We(Qn())}){},ms=kr([us,ds,fs,ps]);k(ls)({_tag:w(`WorkerError`),reason:ms});var hs=`~effect/rpc/RpcClientError`,gs=class extends k(`effect/rpc/RpcClientError/RpcClientDefect`)({_tag:w(`RpcClientDefect`),message:Sn,cause:Qn()}){},_s=class extends k(hs)({_tag:w(`RpcClientError`),reason:kr([ms,$o,Eo,gs])}){[hs]=hs;get message(){return`${this.reason._tag}: ${this.reason.message}`}},vs=e=>e,ys={_tag:`Ping`},bs;try{bs=new TextDecoder}catch{}var F,I,L=0,xs=[],Ss=xs,Cs=0,R={},z,ws,B=0,Ts=0,V,Es,H=[],U,Ds={useRecords:!1,mapsAsObjects:!0},Os=class{},ks=new Os;ks.name=`MessagePack 0xC1`;var As=!1,js=2,Ms=class e{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.sequential&&e.trusted!==!1&&(e.trusted=!0,!e.structures&&e.useRecords!=0&&(e.structures=[],e.maxSharedStructures||=0)),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0),e.int64AsNumber&&(e.int64AsType=`number`)),Object.assign(this,e)}unpack(t,n){if(F)return ac(()=>(oc(),this?this.unpack(t,n):e.prototype.unpack.call(Ds,t,n)));!t.buffer&&t.constructor===ArrayBuffer&&(t=typeof Buffer<`u`?Buffer.from(t):new Uint8Array(t)),typeof n==`object`?(I=n.end||t.length,L=n.start||0):(L=0,I=n>-1?n:t.length),Cs=0,Ts=0,ws=null,Ss=xs,V=null,F=t;try{U=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(e){throw F=null,t instanceof Uint8Array?e:Error(`Source must be a Uint8Array or Buffer but was a `+(t&&typeof t==`object`?t.constructor.name:typeof t))}if(this instanceof e){if(R=this,this.structures)return z=this.structures,Ns(n);(!z||z.length>0)&&(z=[])}else R=Ds,(!z||z.length>0)&&(z=[]);return Ns(n)}unpackMultiple(e,t){let n,r=0;try{As=!0;let i=e.length,a=this?this.unpack(e,i):cc.unpack(e,i);if(t){if(t(a,r,L)===!1)return;for(;L<i;)if(r=L,t(Ns(),r,L)===!1)return}else{for(n=[a];L<i;)r=L,n.push(Ns());return n}}catch(e){throw e.lastPosition=r,e.values=n,e}finally{As=!1,oc()}}_mergeStructures(e,t){this._onLoadedStructures&&(e=this._onLoadedStructures(e)),e||=[],Object.isFrozen(e)&&(e=e.map(e=>e.slice(0)));for(let t=0,n=e.length;t<n;t++){let n=e[t];n&&(n.isShared=!0,t>=32&&(n.highByte=t-32>>5))}e.sharedLength=e.length;for(let n in t||[])if(n>=0){let r=e[n],i=t[n];i&&(r&&((e.restoreStructures||(e.restoreStructures=[]))[n]=r),e[n]=i)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function Ns(e){try{if(!R.trusted&&!As){let e=z.sharedLength||0;e<z.length&&(z.length=e)}let t;if(R._readStruct&&F[L]<64&&F[L]>=32?(t=R._readStruct(F,L,I),F=null,!(e&&e.lazy)&&t&&(t=t.toJSON()),L=I):t=W(),V&&=(L=V.postBundlePosition,null),As&&(z.restoreStructures=null),L==I)z&&z.restoreStructures&&Ps(),z=null,F=null,Es&&=null;else if(L>I)throw Error(`Unexpected end of MessagePack data`);else if(!As){let e;try{e=JSON.stringify(t,(e,t)=>typeof t==`bigint`?`${t}n`:t).slice(0,100)}catch(t){e=`(JSON view not available `+t+`)`}throw Error(`Data read, but end of buffer not reached `+e)}return t}catch(e){throw z&&z.restoreStructures&&Ps(),oc(),(e instanceof RangeError||e.message.startsWith(`Unexpected end of buffer`)||L>I)&&(e.incomplete=!0),e}}function Ps(){for(let e in z.restoreStructures)z[e]=z.restoreStructures[e];z.restoreStructures=null}function W(){let e=F[L++];if(e<160){if(e<128){if(e<64)return e;{let t=z[e&63]||R.getStructures&&Rs()[e&63];return t?(t.read||=Is(t,e&63),t.read()):e}}if(e<144){if(e-=128,R.mapsAsObjects){let t={};for(let n=0;n<e;n++){let e=Qs();e===`__proto__`&&(e=`__proto_`),t[e]=W()}return t}{let t=new Map;for(let n=0;n<e;n++)t.set(W(),W());return t}}{e-=144;let t=Array(e);for(let n=0;n<e;n++)t[n]=W();return R.freezeData?Object.freeze(t):t}}if(e<192){let t=e-160;if(Ts>=L)return ws.slice(L-B,(L+=t)-B);if(Ts==0&&I<140){let e=t<16?qs(t):Ks(t);if(e!=null)return e}return zs(t)}{let t;switch(e){case 192:return null;case 193:return V?(t=W(),t>0?V[1].slice(V.position1,V.position1+=t):V[0].slice(V.position0,V.position0-=t)):ks;case 194:return!1;case 195:return!0;case 196:if(t=F[L++],t===void 0)throw Error(`Unexpected end of buffer`);return Ys(t);case 197:return t=U.getUint16(L),L+=2,Ys(t);case 198:return t=U.getUint32(L),L+=4,Ys(t);case 199:return Xs(F[L++]);case 200:return t=U.getUint16(L),L+=2,Xs(t);case 201:return t=U.getUint32(L),L+=4,Xs(t);case 202:if(t=U.getFloat32(L),R.useFloat32>2){let e=sc[(F[L]&127)<<1|F[L+1]>>7];return L+=4,(e*t+(t>0?.5:-.5)>>0)/e}return L+=4,t;case 203:return t=U.getFloat64(L),L+=8,t;case 204:return F[L++];case 205:return t=U.getUint16(L),L+=2,t;case 206:return t=U.getUint32(L),L+=4,t;case 207:return R.int64AsType===`number`?(t=U.getUint32(L)*4294967296,t+=U.getUint32(L+4)):R.int64AsType===`string`?t=U.getBigUint64(L).toString():R.int64AsType===`auto`?(t=U.getBigUint64(L),t<=BigInt(2)<<BigInt(52)&&(t=Number(t))):t=U.getBigUint64(L),L+=8,t;case 208:return U.getInt8(L++);case 209:return t=U.getInt16(L),L+=2,t;case 210:return t=U.getInt32(L),L+=4,t;case 211:return R.int64AsType===`number`?(t=U.getInt32(L)*4294967296,t+=U.getUint32(L+4)):R.int64AsType===`string`?t=U.getBigInt64(L).toString():R.int64AsType===`auto`?(t=U.getBigInt64(L),t>=BigInt(-2)<<BigInt(52)&&t<=BigInt(2)<<BigInt(52)&&(t=Number(t))):t=U.getBigInt64(L),L+=8,t;case 212:if(t=F[L++],t==114)return ec(F[L++]&63);{let e=H[t];if(e)return e.read?(L++,e.read(W())):e.noBuffer?(L++,e()):e(F.subarray(L,++L));throw Error(`Unknown extension `+t)}case 213:return t=F[L],t==114?(L++,ec(F[L++]&63,F[L++])):Xs(2);case 214:return Xs(4);case 215:return Xs(8);case 216:return Xs(16);case 217:return t=F[L++],Ts>=L?ws.slice(L-B,(L+=t)-B):Bs(t);case 218:return t=U.getUint16(L),L+=2,Ts>=L?ws.slice(L-B,(L+=t)-B):Vs(t);case 219:return t=U.getUint32(L),L+=4,Ts>=L?ws.slice(L-B,(L+=t)-B):Hs(t);case 220:return t=U.getUint16(L),L+=2,Ws(t);case 221:return t=U.getUint32(L),L+=4,Ws(t);case 222:return t=U.getUint16(L),L+=2,Gs(t);case 223:return t=U.getUint32(L),L+=4,Gs(t);default:if(e>=224)return e-256;if(e===void 0){let e=Error(`Unexpected end of MessagePack data`);throw e.incomplete=!0,e}throw Error(`Unknown MessagePack token `+e)}}}var Fs=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Is(e,t){function n(){if(n.count++>js){let r;try{r=e.read=Function(`r`,`return function(){return `+(R.freezeData?`Object.freeze`:``)+`({`+e.map(e=>e===`__proto__`?`__proto_:r()`:Fs.test(e)?e+`:r()`:`[`+JSON.stringify(e)+`]:r()`).join(`,`)+`})}`)(W)}catch{return js=1/0,n()}return e.read0=r,e.highByte===0&&(e.read=Ls(t,e.read)),r()}let r={};for(let t=0,n=e.length;t<n;t++){let n=e[t];n===`__proto__`&&(n=`__proto_`),r[n]=W()}return R.freezeData?Object.freeze(r):r}return n.count=0,e.read0=n,e.highByte===0?Ls(t,n):n}var Ls=(e,t)=>function(){let n=F[L++];if(n===0)return t();let r=e<32?-(e+(n<<5)):e+(n<<5),i=z[r]||Rs()[r];if(!i)throw Error(`Record id is not defined for `+r);return i.read||=Is(i,e),i.read()};function Rs(){let e=ac(()=>(F=null,R.getStructures()));return z=R._mergeStructures(e,z)}var zs=Us,Bs=Us,Vs=Us,Hs=Us;function Us(e){let t;if(e<16&&(t=qs(e)))return t;if(e>64&&bs)return bs.decode(F.subarray(L,L+=e));let n=L+e,r=[];for(t=``;L<n;){let e=F[L++];if(!(e&128))r.push(e);else if((e&224)==192){if(e<194||L>=n||(F[L]&192)!=128)r.push(65533);else{let t=F[L++]&63;r.push((e&31)<<6|t)}}else if((e&240)==224){let t=L<n?F[L]:0;if(L>=n||(t&192)!=128||e===224&&t<160||e===237&&t>=160)r.push(65533);else if(L++,L>=n||(F[L]&192)!=128)r.push(65533);else{let n=F[L++]&63;r.push((e&31)<<12|(t&63)<<6|n)}}else if((e&248)==240){let t=L<n?F[L]:0;if(e>244||L>=n||(t&192)!=128||e===240&&t<144||e===244&&t>=144)r.push(65533);else if(L++,L>=n||(F[L]&192)!=128)r.push(65533);else{let i=F[L++]&63;if(L>=n||(F[L]&192)!=128)r.push(65533);else{let n=F[L++]&63,a=(e&7)<<18|(t&63)<<12|i<<6|n;a-=65536,r.push(a>>>10&1023|55296),r.push(56320|a&1023)}}}else r.push(65533);r.length>=4096&&(t+=G.apply(String,r),r.length=0)}return r.length>0&&(t+=G.apply(String,r)),t}function Ws(e){let t=Array(e);for(let n=0;n<e;n++)t[n]=W();return R.freezeData?Object.freeze(t):t}function Gs(e){if(R.mapsAsObjects){let t={};for(let n=0;n<e;n++){let e=Qs();e===`__proto__`&&(e=`__proto_`),t[e]=W()}return t}{let t=new Map;for(let n=0;n<e;n++)t.set(W(),W());return t}}var G=String.fromCharCode;function Ks(e){let t=L,n=Array(e);for(let r=0;r<e;r++){let e=F[L++];if((e&128)>0){L=t;return}n[r]=e}return G.apply(String,n)}function qs(e){if(e<4){if(e<2){if(e===0)return``;{let e=F[L++];if((e&128)>1){--L;return}return G(e)}}{let t=F[L++],n=F[L++];if((t&128)>0||(n&128)>0){L-=2;return}if(e<3)return G(t,n);let r=F[L++];if((r&128)>0){L-=3;return}return G(t,n,r)}}{let t=F[L++],n=F[L++],r=F[L++],i=F[L++];if((t&128)>0||(n&128)>0||(r&128)>0||(i&128)>0){L-=4;return}if(e<6){if(e===4)return G(t,n,r,i);{let e=F[L++];if((e&128)>0){L-=5;return}return G(t,n,r,i,e)}}if(e<8){let a=F[L++],o=F[L++];if((a&128)>0||(o&128)>0){L-=6;return}if(e<7)return G(t,n,r,i,a,o);let s=F[L++];if((s&128)>0){L-=7;return}return G(t,n,r,i,a,o,s)}{let a=F[L++],o=F[L++],s=F[L++],c=F[L++];if((a&128)>0||(o&128)>0||(s&128)>0||(c&128)>0){L-=8;return}if(e<10){if(e===8)return G(t,n,r,i,a,o,s,c);{let e=F[L++];if((e&128)>0){L-=9;return}return G(t,n,r,i,a,o,s,c,e)}}if(e<12){let l=F[L++],u=F[L++];if((l&128)>0||(u&128)>0){L-=10;return}if(e<11)return G(t,n,r,i,a,o,s,c,l,u);let d=F[L++];if((d&128)>0){L-=11;return}return G(t,n,r,i,a,o,s,c,l,u,d)}{let l=F[L++],u=F[L++],d=F[L++],f=F[L++];if((l&128)>0||(u&128)>0||(d&128)>0||(f&128)>0){L-=12;return}if(e<14){if(e===12)return G(t,n,r,i,a,o,s,c,l,u,d,f);{let e=F[L++];if((e&128)>0){L-=13;return}return G(t,n,r,i,a,o,s,c,l,u,d,f,e)}}{let p=F[L++],m=F[L++];if((p&128)>0||(m&128)>0){L-=14;return}if(e<15)return G(t,n,r,i,a,o,s,c,l,u,d,f,p,m);let h=F[L++];if((h&128)>0){L-=15;return}return G(t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)}}}}}function Js(){let e=F[L++],t;if(e<192)t=e-160;else switch(e){case 217:t=F[L++];break;case 218:t=U.getUint16(L),L+=2;break;case 219:t=U.getUint32(L),L+=4;break;default:throw Error(`Expected string`)}return Us(t)}function Ys(e){return R.copyBuffers?Uint8Array.prototype.slice.call(F,L,L+=e):F.subarray(L,L+=e)}function Xs(e){let t=F[L++];if(H[t]){let n;return H[t](F.subarray(L,n=L+=e),e=>{L=e;try{return W()}finally{L=n}})}throw Error(`Unknown extension type `+t)}var Zs=Array(4096);function Qs(){let e=F[L++];if(e>=160&&e<192){if(e-=160,Ts>=L)return ws.slice(L-B,(L+=e)-B);if(!(Ts==0&&I<180))return zs(e)}else return L--,$s(W());let t=(e<<5^(e>1?U.getUint16(L):e>0?F[L]:0))&4095,n=Zs[t],r=L,i=L+e-3,a,o=0;if(n&&n.bytes==e){for(;r<i;){if(a=U.getUint32(r),a!=n[o++]){r=1879048192;break}r+=4}for(i+=3;r<i;)if(a=F[r++],a!=n[o++]){r=1879048192;break}if(r===i)return L=r,n.string;i-=3,r=L}for(n=[],Zs[t]=n,n.bytes=e;r<i;)a=U.getUint32(r),n.push(a),r+=4;for(i+=3;r<i;)a=F[r++],n.push(a);let s=e<16?qs(e):Ks(e);return s==null?n.string=zs(e):n.string=s}function $s(e){if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return e.toString();if(e==null)return e+``;if(R.allowArraysInMapKeys&&Array.isArray(e)&&e.flat().every(e=>[`string`,`number`,`boolean`,`bigint`].includes(typeof e)))return e.flat().toString();throw Error(`Invalid property type for record: ${typeof e}`)}var ec=(e,t)=>{let n=W().map($s),r=e;t!==void 0&&(e=e<32?-((t<<5)+e):(t<<5)+e,n.highByte=t);let i=z[e];return i&&(i.isShared||As)&&((z.restoreStructures||(z.restoreStructures=[]))[e]=i),z[e]=n,n.read=Is(n,r),(n.read0||n.read)()};H[0]=()=>{},H[0].noBuffer=!0,H[66]=e=>{let t=e.byteLength%8||8,n=BigInt(e[0]&128?e[0]-256:e[0]);for(let r=1;r<t;r++)n<<=BigInt(8),n+=BigInt(e[r]);if(e.byteLength!==t){let r=new DataView(e.buffer,e.byteOffset,e.byteLength),i=(e,t)=>{let n=t-e;if(n<=40){let n=r.getBigUint64(e);for(let i=e+8;i<t;i+=8)n<<=BigInt(64),n|=r.getBigUint64(i);return n}let a=e+(n>>4<<3),o=i(e,a),s=i(a,t);return o<<BigInt((t-a)*8)|s};n=n<<BigInt((r.byteLength-t)*8)|i(t,r.byteLength)}return n};var tc={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError:typeof AggregateError==`function`?AggregateError:null};H[101]=()=>{let e=W();if(!tc[e[0]]){let t=Error(e[1],{cause:e[2]});return t.name=e[0],t}return tc[e[0]](e[1],{cause:e[2]})},H[105]=e=>{if(R.structuredClone===!1)throw Error(`Structured clone extension is disabled`);let t=U.getUint32(L-4);Es||=new Map;let n=F[L],r;r=n>=144&&n<160||n==220||n==221?[]:n>=128&&n<144||n==222||n==223?new Map:(n>=199&&n<=201||n>=212&&n<=216)&&F[L+1]===115?new Set:{};let i={target:r};Es.set(t,i);let a=W();if(i.used)Object.assign(r,a);else return i.target=a;if(r instanceof Map)for(let[e,t]of a.entries())r.set(e,t);if(r instanceof Set)for(let e of Array.from(a))r.add(e);return r},H[112]=e=>{if(R.structuredClone===!1)throw Error(`Structured clone extension is disabled`);let t=U.getUint32(L-4),n=Es.get(t);return n.used=!0,n.target},H[115]=()=>new Set(W());var nc=[`Int8`,`Uint8`,`Uint8Clamped`,`Int16`,`Uint16`,`Int32`,`Uint32`,`Float32`,`Float64`,`BigInt64`,`BigUint64`].map(e=>e+`Array`),rc=typeof globalThis==`object`?globalThis:window;H[116]=e=>{let t=e[0],n=Uint8Array.prototype.slice.call(e,1).buffer,r=nc[t];if(!r){if(t===16)return n;if(t===17)return new DataView(n);throw Error(`Could not find typed array for code `+t)}return new rc[r](n)},H[120]=()=>{let e=W();return new RegExp(e[0],e[1])};var ic=[];H[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],n=L;return L+=t-e.length,V=ic,V=[Js(),Js()],V.position0=0,V.position1=0,V.postBundlePosition=L,L=n,W()},H[255]=e=>e.length==4?new Date((e[0]*16777216+(e[1]<<16)+(e[2]<<8)+e[3])*1e3):e.length==8?new Date(((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+((e[3]&3)*4294967296+e[4]*16777216+(e[5]<<16)+(e[6]<<8)+e[7])*1e3):e.length==12?new Date(((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+((e[4]&128?-281474976710656:0)+e[6]*1099511627776+e[7]*4294967296+e[8]*16777216+(e[9]<<16)+(e[10]<<8)+e[11])*1e3):new Date(`invalid`);function ac(e){R&&R._onSaveState&&R._onSaveState();let t=I,n=L,r=Cs,i=B,a=Ts,o=ws,s=Ss,c=Es,l=V,u=new Uint8Array(F.slice(0,I)),d=z,f=z.slice(0,z.length),p=R,m=As,h=e();return I=t,L=n,Cs=r,B=i,Ts=a,ws=o,Ss=s,Es=c,V=l,F=u,As=m,z=d,z.splice(0,z.length,...f),R=p,U=new DataView(F.buffer,F.byteOffset,F.byteLength),h}function oc(){F=null,Es=null,z=null}var sc=Array(147);for(let e=0;e<256;e++)sc[e]=+(`1e`+Math.floor(45.15-e*.30103));var cc=new Ms({useRecords:!1});cc.unpack,cc.unpackMultiple,cc.unpack;var lc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4};new Uint8Array(new Float32Array(1).buffer,0,4),Ms.SUPPORTS_STRUCT_HOOKS=!0;var uc;try{uc=new TextEncoder}catch{}var dc,fc,pc=typeof Buffer<`u`,mc=pc?function(e){return Buffer.allocUnsafeSlow(e)}:Uint8Array,hc=pc?Buffer:Uint8Array,gc=pc?4294967296:2144337920,K,_c,q,J=0,Y,X=null,vc=21760,yc=/[\u0080-\uFFFF]/,bc=Symbol(`record-id`),xc=class extends Ms{constructor(e){super(e),this.offset=0;let t,n,r,i,a=hc.prototype.utf8Write?function(e,t){return K.utf8Write(e,t,K.byteLength-t)}:uc&&uc.encodeInto?function(e,t){return uc.encodeInto(e,K.subarray(t)).written}:!1,o=this;e||={};let s=e&&e.sequential,c=e.structures||e.saveStructures,l=e.maxSharedStructures;if(l??=c?32:0,l>8160)throw Error(`Maximum maxSharedStructure is 8160`);e.structuredClone&&e.moreTypes==null&&(this.moreTypes=!0);let u=e.maxOwnStructures;u??=c?32:64,!this.structures&&e.useRecords!=0&&(this.structures=[]);let d=l>32||u+l>64,f=l+64,p=l+u+64;if(p>8256)throw Error(`Maximum maxSharedStructure + maxOwnStructure is 8192`);let m=[],h=0,g=0;this.pack=this.encode=function(e,a){if(K||(K=new mc(8192),q=K.dataView||(K.dataView=new DataView(K.buffer,0,8192)),J=0),Y=K.length-10,Y-J<2048?(K=new mc(K.length),q=K.dataView||(K.dataView=new DataView(K.buffer,0,K.length)),Y=K.length-10,J=0):J=J+7&2147483640,t=J,a&2048&&(J+=a&255),i=o.structuredClone?new Map:null,o.bundleStrings&&typeof e!=`string`?(X=[],X.size=1/0):X=null,r=o.structures,r){r.uninitialized&&(r=o._mergeStructures(o.getStructures()));let e=r.sharedLength||0;if(e>l)throw Error(`Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to `+r.sharedLength);if(!r.transitions){r.transitions=Object.create(null);for(let t=0;t<e;t++){let e=r[t];if(!e)continue;let n,i=r.transitions;for(let t=0,r=e.length;t<r;t++){let r=e[t];n=i[r],n||=i[r]=Object.create(null),i=n}i[bc]=t+64}this.lastNamedStructuresLength=e}s||(r.nextId=e+64)}n&&=!1;let c;try{o._writeStruct&&e&&typeof e==`object`?e.constructor===Object?y(e):e.constructor!==Map&&!Array.isArray(e)&&!fc.some(t=>e instanceof t)?y(e.toJSON?e.toJSON():e):_(e):_(e);let n=X;if(X&&Ec(t,_,0),i&&i.idsToInsert){let e=i.idsToInsert.sort((e,t)=>e.offset>t.offset?1:-1),r=e.length,a=-1;for(;n&&r>0;){let i=e[--r].offset+t;i<n.stringsPosition+t&&a===-1&&(a=0),i>n.position+t?a>=0&&(a+=6):(a>=0&&(q.setUint32(n.position+t,q.getUint32(n.position+t)+a),a=-1),n=n.previous,r++)}a>=0&&n&&q.setUint32(n.position+t,q.getUint32(n.position+t)+a),J+=e.length*6,J>Y&&b(J),o.offset=J;let s=Tc(K.subarray(t,J),e);return i=null,s}return o.offset=J,a&512?(K.start=t,K.end=J,K):K.subarray(t,J)}catch(e){throw c=e,e}finally{if(r&&(ee(),n&&o.saveStructures)){let n=r.sharedLength||0,i=K.subarray(t,J),s=(o._prepareStructures||Dc)(r,o);if(!c)return o.saveStructures(s,s.isCompatible)===!1?(r.uninitialized=!0,o.pack(e,a)):(o.lastNamedStructuresLength=n,K.length>1073741824&&(K=null),i)}K.length>1073741824&&(K=null),a&1024&&(J=t)}};let ee=()=>{g<10&&g++;let e=r.sharedLength||0;if(r.length>e&&!s&&(r.length=e),h>1e4)r.transitions=null,g=0,h=0,m.length>0&&(m=[]);else if(m.length>0&&!s){for(let e=0,t=m.length;e<t;e++)m[e][bc]=0;m=[]}},te=e=>{var t=e.length;t<16?K[J++]=144|t:t<65536?(K[J++]=220,K[J++]=t>>8,K[J++]=t&255):(K[J++]=221,q.setUint32(J,t),J+=4);for(let n=0;n<t;n++)_(e[n])},_=e=>{J>Y&&(K=b(J));var n=typeof e,r;if(n===`string`){let n=e.length;if(X&&n>=4&&n<4096){if((X.size+=n)>vc){let e,n=(X[0]?X[0].length*3+X[1].length:0)+10;J+n>Y&&(K=b(J+n));let r;X.position?(r=X,K[J]=200,J+=3,K[J++]=98,e=J-t,J+=4,Ec(t,_,0),q.setUint16(e+t-3,J-t-e)):(K[J++]=214,K[J++]=98,e=J-t,J+=4),X=[``,``],X.previous=r,X.size=0,X.position=e}let r=yc.test(e);X[+!r]+=e,K[J++]=193,_(r?-n:n);return}let i;i=n<32?1:n<256?2:n<65536?3:5;let o=n*3;if(J+o>Y&&(K=b(J+o)),n<64||!a){let t,a,o,s=J+i;for(t=0;t<n;t++)a=e.charCodeAt(t),a<128?K[s++]=a:a<2048?(K[s++]=a>>6|192,K[s++]=a&63|128):(a&64512)==55296&&((o=e.charCodeAt(t+1))&64512)==56320?(a=65536+((a&1023)<<10)+(o&1023),t++,K[s++]=a>>18|240,K[s++]=a>>12&63|128,K[s++]=a>>6&63|128,K[s++]=a&63|128):(K[s++]=a>>12|224,K[s++]=a>>6&63|128,K[s++]=a&63|128);r=s-J-i}else r=a(e,J+i);r<32?K[J++]=160|r:r<256?(i<2&&K.copyWithin(J+2,J+1,J+1+r),K[J++]=217,K[J++]=r):r<65536?(i<3&&K.copyWithin(J+3,J+2,J+2+r),K[J++]=218,K[J++]=r>>8,K[J++]=r&255):(i<5&&K.copyWithin(J+5,J+3,J+3+r),K[J++]=219,q.setUint32(J,r),J+=4),J+=r}else if(n===`number`){if(e>>>0===e)e<32||e<128&&this.useRecords===!1||e<64&&!this._writeStruct?K[J++]=e:e<256?(K[J++]=204,K[J++]=e):e<65536?(K[J++]=205,K[J++]=e>>8,K[J++]=e&255):(K[J++]=206,q.setUint32(J,e),J+=4);else if(e>>0===e)e>=-32?K[J++]=256+e:e>=-128?(K[J++]=208,K[J++]=e+256):e>=-32768?(K[J++]=209,q.setInt16(J,e),J+=2):(K[J++]=210,q.setInt32(J,e),J+=4);else{let t;if((t=this.useFloat32)>0&&e<4294967296&&e>=-2147483648){K[J++]=202,q.setFloat32(J,e);let n;if(t<4||(n=e*sc[(K[J]&127)<<1|K[J+1]>>7])>>0===n){J+=4;return}J--}K[J++]=203,q.setFloat64(J,e),J+=8}}else if(n===`object`||n===`function`){if(!e)K[J++]=192;else{if(i){let n=i.get(e);if(n){n.id||=(i.idsToInsert||(i.idsToInsert=[])).push(n),K[J++]=214,K[J++]=112,q.setUint32(J,n.id),J+=4;return}i.set(e,{offset:J-t})}let a=e.constructor;if(a===Object)ie(e);else if(a===Array)te(e);else if(a===Map){if(this.mapAsEmptyObject)K[J++]=128;else{r=e.size,r<16?K[J++]=128|r:r<65536?(K[J++]=222,K[J++]=r>>8,K[J++]=r&255):(K[J++]=223,q.setUint32(J,r),J+=4);for(let[t,n]of e)_(t),_(n)}}else{for(let t=0,n=dc.length;t<n;t++){let n=fc[t];if(e instanceof n){let n=dc[t];if(n.write){n.type&&(K[J++]=212,K[J++]=n.type,K[J++]=0);let t=n.write.call(this,e);t===e?Array.isArray(e)?te(e):ie(e):_(t);return}let r=K,i=q,a=J;K=null;let o;try{o=n.pack.call(this,e,e=>(K=r,r=null,J+=e,J>Y&&b(J),{target:K,targetView:q,position:J-e}),_)}finally{r&&(K=r,q=i,J=a,Y=K.length-10)}o&&(o.length+J>Y&&b(o.length+J),J=wc(o,K,J,n.type));return}}if(Array.isArray(e))te(e);else{if(e.toJSON){let t=e.toJSON();if(t!==e)return _(t)}if(n===`function`)return _(this.writeFunction&&this.writeFunction(e));ie(e)}}}}else if(n===`boolean`)K[J++]=e?195:194;else if(n===`bigint`){if(e<0x8000000000000000&&e>=-0x8000000000000000)K[J++]=211,q.setBigInt64(J,e);else if(e<0x10000000000000000&&e>0)K[J++]=207,q.setBigUint64(J,e);else if(this.largeBigIntToFloat)K[J++]=203,q.setFloat64(J,Number(e));else if(this.largeBigIntToString)return _(e.toString());else if(this.useBigIntExtension||this.moreTypes){let t=BigInt(e<0?-1:0),n;if(e>>BigInt(65536)===t){let r=BigInt(0x10000000000000000)-BigInt(1),i=[];for(;i.push(e&r),e>>BigInt(63)!==t;)e>>=BigInt(64);n=new Uint8Array(new BigUint64Array(i).buffer),n.reverse()}else{let t=e<0,r=(t?~e:e).toString(16);if(r.length%2?r=`0`+r:parseInt(r.charAt(0),16)>=8&&(r=`00`+r),pc)n=Buffer.from(r,`hex`);else{n=new Uint8Array(r.length/2);for(let e=0;e<n.length;e++)n[e]=parseInt(r.slice(e*2,e*2+2),16)}if(t)for(let e=0;e<n.length;e++)n[e]=~n[e]}n.length+J>Y&&b(n.length+J),J=wc(n,K,J,66);return}else throw RangeError(e+` was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set largeBigIntToString to convert to string`);J+=8}else if(n===`undefined`)this.encodeUndefinedAsNil?K[J++]=192:(K[J++]=212,K[J++]=0,K[J++]=0);else throw Error(`Unknown type: `+n)},ne=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?e=>{let t;if(this.skipValues){t=[];for(let n in e)(typeof e.hasOwnProperty!=`function`||e.hasOwnProperty(n))&&!this.skipValues.includes(e[n])&&t.push(n)}else t=Object.keys(e);let n=t.length;n<16?K[J++]=128|n:n<65536?(K[J++]=222,K[J++]=n>>8,K[J++]=n&255):(K[J++]=223,q.setUint32(J,n),J+=4);let r;if(this.coercibleKeyAsNumber)for(let i=0;i<n;i++){r=t[i];let n=Number(r);_(isNaN(n)?r:n),_(e[r])}else for(let i=0;i<n;i++)_(r=t[i]),_(e[r])}:e=>{K[J++]=222;let n=J-t;J+=2;let r=0;for(let t in e)(typeof e.hasOwnProperty!=`function`||e.hasOwnProperty(t))&&(_(t),_(e[t]),r++);if(r>65535)throw Error(`Object is too large to serialize with fast 16-bit map size, use the "variableMapSize" option to serialize this object`);K[n+++t]=r>>8,K[n+t]=r&255},v=this.useRecords===!1?ne:e.progressiveRecords&&!d?e=>{let n,i=r.transitions||(r.transitions=Object.create(null)),a=J++-t,o;for(let s in e)if(typeof e.hasOwnProperty!=`function`||e.hasOwnProperty(s)){if(n=i[s],n)i=n;else{let c=Object.keys(e),l=i;i=r.transitions;let u=0;for(let e=0,t=c.length;e<t;e++){let t=c[e];n=i[t],n||(n=i[t]=Object.create(null),u++),i=n}a+t+1==J?(J--,ae(i,c,u)):oe(i,c,a,u),o=!0,i=l[s]}_(e[s])}if(!o){let n=i[bc];n?K[a+t]=n:oe(i,Object.keys(e),a,0)}}:e=>{let t,n=r.transitions||(r.transitions=Object.create(null)),i=0;for(let r in e)(typeof e.hasOwnProperty!=`function`||e.hasOwnProperty(r))&&(t=n[r],t||(t=n[r]=Object.create(null),i++),n=t);let a=n[bc];a?a>=96&&d?(K[J++]=((a-=96)&31)+96,K[J++]=a>>5):K[J++]=a:ae(n,n.__keys__||Object.keys(e),i);for(let t in e)(typeof e.hasOwnProperty!=`function`||e.hasOwnProperty(t))&&_(e[t])},re=typeof this.useRecords==`function`&&this.useRecords,ie=re?e=>{re(e)?v(e):ne(e)}:v,y=e=>{let i=o._writeStruct(e,K,t,J,r,b,(e,t,r)=>{if(r)return n=!0;J=t;let i=K;return _(e),ee(),i===K?J:{position:J,targetView:q,target:K}});if(i===0)return ie(e);J=i},b=e=>{let n;if(e>16777216){if(e-t>gc)throw Error(`Packed buffer would be larger than maximum buffer size`);n=Math.min(gc,Math.round(Math.max((e-t)*(e>67108864?1.25:2),4194304)/4096)*4096)}else n=(Math.max(e-t<<2,K.length-1)>>12)+1<<12;let r=new mc(n);return q=r.dataView||=new DataView(r.buffer,0,n),e=Math.min(e,K.length),K.copy?K.copy(r,0,t,e):r.set(K.slice(t,e)),J-=t,t=0,Y=r.length-10,K=r},ae=(e,t,i)=>{let a=r.nextId;a||=64,a<f&&this.shouldShareStructure&&!this.shouldShareStructure(t)?(a=r.nextOwnId,a<p||(a=f),r.nextOwnId=a+1):(a>=p&&(a=f),r.nextId=a+1);let o=t.highByte=a>=96&&d?a-96>>5:-1;e[bc]=a,e.__keys__=t,r[a-64]=t,a<f?(t.isShared=!0,r.sharedLength=a-63,n=!0,o>=0?(K[J++]=(a&31)+96,K[J++]=o):K[J++]=a):(o>=0?(K[J++]=213,K[J++]=114,K[J++]=(a&31)+96,K[J++]=o):(K[J++]=212,K[J++]=114,K[J++]=a),i&&(h+=g*i),m.length>=u&&(m.shift()[bc]=0),m.push(e),_(t))},oe=(e,n,r,i)=>{let a=K,o=J,s=Y,c=t;K=_c,J=0,t=0,K||(_c=K=new mc(8192)),Y=K.length-10,ae(e,n,i),_c=K;let l=J;if(K=a,J=o,Y=s,t=c,l>1){let e=J+l-1;e>Y&&b(e);let n=r+t;K.copyWithin(n+l,n+1,J),K.set(_c.slice(0,l),n),J=e}else K[r+t]=_c[0]}}useBuffer(e){K=e,K.dataView||(K.dataView=new DataView(K.buffer,K.byteOffset,K.byteLength)),q=K.dataView,J=0}set position(e){J=e}get position(){return J}clearSharedData(){this.structures&&=[],this.typedStructs&&=[]}};fc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,DataView,Os],dc=[{pack(e,t,n){let r=e.getTime()/1e3;if((this.useTimestamp32||e.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:e,targetView:n,position:i}=t(6);e[i++]=214,e[i++]=255,n.setUint32(i,r)}else if(r>0&&r<4294967296){let{target:n,targetView:i,position:a}=t(10);n[a++]=215,n[a++]=255,i.setUint32(a,e.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),n(this.onInvalidDate());let{target:e,targetView:r,position:i}=t(3);e[i++]=212,e[i++]=255,e[i++]=255}else{let{target:n,targetView:i,position:a}=t(15);n[a++]=199,n[a++]=12,n[a++]=255,i.setUint32(a,e.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(e,t,n){if(this.setAsEmptyObject)return t(0),n({});let r=Array.from(e),{target:i,position:a}=t(this.moreTypes?3:0);this.moreTypes&&(i[a++]=212,i[a++]=115,i[a++]=0),n(r)}},{pack(e,t,n){let{target:r,position:i}=t(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=101,r[i++]=0),n([e.name,e.message,e.cause])}},{pack(e,t,n){let{target:r,position:i}=t(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=120,r[i++]=0),n([e.source,e.flags])}},{pack(e,t){this.moreTypes?Sc(e,16,t):Cc(pc?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let n=e.constructor;n!==hc&&this.moreTypes?Sc(e,nc.indexOf(n.name),t):Cc(e,t)}},{pack(e,t){this.moreTypes?Sc(e,17,t):Cc(pc?Buffer.from(e):new Uint8Array(e),t)}},{pack(e,t){let{target:n,position:r}=t(1);n[r]=193}}];function Sc(e,t,n,r){let i=e.byteLength;if(i+1<256){var{target:a,position:o}=n(4+i);a[o++]=199,a[o++]=i+1}else if(i+1<65536){var{target:a,position:o}=n(5+i);a[o++]=200,a[o++]=i+1>>8,a[o++]=i+1&255}else{var{target:a,position:o,targetView:s}=n(7+i);a[o++]=201,s.setUint32(o,i+1),o+=4}a[o++]=116,a[o++]=t,e.buffer||(e=new Uint8Array(e)),a.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o)}function Cc(e,t){let n=e.byteLength;var r,i;if(n<256){var{target:r,position:i}=t(n+2);r[i++]=196,r[i++]=n}else if(n<65536){var{target:r,position:i}=t(n+3);r[i++]=197,r[i++]=n>>8,r[i++]=n&255}else{var{target:r,position:i,targetView:a}=t(n+5);r[i++]=198,a.setUint32(i,n),i+=4}r.set(e,i)}function wc(e,t,n,r){let i=e.length;switch(i){case 1:t[n++]=212;break;case 2:t[n++]=213;break;case 4:t[n++]=214;break;case 8:t[n++]=215;break;case 16:t[n++]=216;break;default:i<256?(t[n++]=199,t[n++]=i):i<65536?(t[n++]=200,t[n++]=i>>8,t[n++]=i&255):(t[n++]=201,t[n++]=i>>24,t[n++]=i>>16&255,t[n++]=i>>8&255,t[n++]=i&255)}return t[n++]=r,t.set(e,n),n+=i,n}function Tc(e,t){let n,r=t.length*6,i=e.length-r;for(;n=t.pop();){let t=n.offset,a=n.id;e.copyWithin(t+r,t,i),r-=6;let o=t+r;e[o++]=214,e[o++]=105,e[o++]=a>>24,e[o++]=a>>16&255,e[o++]=a>>8&255,e[o++]=a&255,i=t}return e}function Ec(e,t,n){if(X.length>0){q.setUint32(X.position+e,J+n-X.position-e),X.stringsPosition=J-e;let r=X;X=null,t(r[0]),t(r[1])}}function Dc(e,t){return e.isCompatible=e=>{let n=!e||(t.lastNamedStructuresLength||0)===e.length;return n||t._mergeStructures(e),n},e}xc.SUPPORTS_STRUCT_HOOKS=!0;var Oc=new xc({useRecords:!1});Oc.pack,Oc.pack;var{NEVER:kc,ALWAYS:Ac,DECIMAL_ROUND:jc,DECIMAL_FIT:Mc}=lc,Nc=class extends j()(`effect/rpc/RpcSerialization`){};On(`MaxBufferSizeExceeded`);var Pc=Nc.of({contentType:`application/json`,includesFraming:!1,makeUnsafe:()=>{let e=new TextDecoder;return{decode:t=>{let n=JSON.parse(typeof t==`string`?t:e.decode(t));return Array.isArray(n)?n:[n]},encode:e=>JSON.stringify(e)}}}),Fc=se(Nc)(Pc),Ic=e=>Pt(()=>{let t=new Set,n=new Map,r=new Map,i=(e,t)=>ht(r=>{let i=n.get(e);return i||(i=[],n.set(e,i)),i.push([t,r]),E});return pn(e((e,t)=>{let n=r.get(e);return n?n(t):i(e,t)},t),e=>({...e,run(e,i){return l(function*(){t.add(e),r.set(e,i);let a=n.get(e);if(a){n.delete(e);for(let[e,t]of a)yield*jr(Pt(()=>i(e)),t)}return yield*qn(wn,()=>(t.delete(e),r.delete(e),E))})}}))}),Lc=0,Rc=ur(function*(e,t){let n=t?.spanPrefix??`RpcClient`,r=t?.supportsAck??!0,i=t?.disableTracing??!1,a=t?.generateRequestId??(()=>Lc++),o=yield*He(),s=Pr(o,Dt),c=new Map,l=yield*_t(Jc),u=!1;yield*ge(s,er(e=>(u=!0,d(ie(e.id)))));let d=ur(function*(e){for(let[t,n]of c)c.delete(t),n._tag===`Queue`?yield*e._tag===`Success`?Vt(n.queue):Xt(n.queue,e.cause):n.resume(e)}),h=e=>{let r=vr(e.successSchema),a=te(e);return(o,s)=>{let c=s?.headers?Mo(s.headers):jo,l=s?.context??y();if(!r){let r=t=>g(e,a,t,e.payloadSchema.make(o),c,l,s?.discard??!1);return i?r(void 0):f(`${n}.${e._tag}`,{attributes:t.spanAttributes},r)}let u=ee(e,a,e.payloadSchema.make(o),c,s?.streamBufferSize??16,l);return s?.asQueue?u:p(pn(u,Lt))}},g=(e,n,r,i,o,s,d)=>er(f=>{if(u)return $n;let p=a(),m=Bt(l)&&l.value.onRequestStart?l.value.onRequestStart({id:p,tag:e._tag,stream:!1}):E,h=n(e=>t.onFromClient({message:e,context:s,discard:d}),{_tag:`Request`,id:p,tag:e._tag,payload:i,...r?{traceId:r.traceId,spanId:r.spanId,sampled:r.sampled}:{},headers:Io(f.getRef(Uc),o)});if(d)return m.pipe(it(h));let g;return An(Je(t=>{let n={_tag:`Effect`,rpc:e,context:s,resume(e){t(e),g&&!g.pollUnsafe()&&f.currentDispatcher.scheduleTask(()=>{g.interruptUnsafe(f.id)},0)}};c.set(p,n),g=m.pipe(it(h),r?_r(r,{captureStackTrace:!1}):ke,de(f.context)),g.addObserver(e=>{if(e._tag===`Failure`)return t(e)})}),e=>{let t=c.get(p);return c.delete(p),it(nr(g),_(p,Array.from(e),s,t?.rpc._tag))})}),ee=ur(function*(e,r,o,s,d,f){if(u)return yield*$n;let p=i?void 0:yield*Sr(`${n}.${e._tag}`,{attributes:t.spanAttributes}),h=rn(),g=a(),ee=Bt(l)&&l.value.onRequestStart?l.value.onRequestStart({id:g,tag:e._tag,stream:!0}):E,te=wt(h.context,Dt);yield*fe(te,e=>{let t=c.get(g);return t?(c.delete(g),_(g,Ee(e)?Array.from(m(e.cause)):[],f,t.rpc._tag)):E});let ne=yield*Wt(d);return c.set(g,{_tag:`Queue`,rpc:e,queue:ne,scope:te,context:f,chunkCount:0}),yield*ee.pipe(it(r(e=>t.onFromClient({message:e,context:f,discard:!1}),{_tag:`Request`,id:g,tag:e._tag,payload:o,...p?{traceId:p.traceId,spanId:p.spanId,sampled:p.sampled}:{},headers:Io(h.getRef(Uc),s)}))).pipe(p?_r(p,{captureStackTrace:!1}):ke,$e(e=>Xt(ne,e)),gr,Jt(te,{startImmediately:!0})),ne}),te=e=>{let t=[];for(let n of e.middlewares.values()){let e=o.mapUnsafe.get(`${n.key}/Client`);e&&t.push(e)}return t.length===0?(e,t)=>e(t):function n(r,i,a=t.length-1){return a===-1?r(i):t[a]({rpc:e,request:i,next(e){return n(r,e,a-1)}})}},_=(e,n,r,i)=>(Bt(l)&&l.value.onRequestInterrupt?l.value.onRequestInterrupt({id:e,tag:i}):E).pipe(it(Je(i=>{let a=rn();t.onFromClient({message:{_tag:`Interrupt`,requestId:e,interruptors:n},context:r,discard:!1}).pipe(ze(1e3),de(a.context)).addObserver(()=>{i(E)})}))),ne=e=>{switch(e._tag){case`Chunk`:{let n=e.requestId,i=c.get(n);if(!i||i._tag!==`Queue`)return E;i.chunkCount+=e.values.length;let a=Bt(l)&&l.value.onRequestChunk?l.value.onRequestChunk({id:n,tag:i.rpc._tag,chunkCount:i.chunkCount}):E;return vn(i.queue,e.values).pipe(it(a),r?T(()=>t.onFromClient({message:{_tag:`Ack`,requestId:e.requestId},context:i.context,discard:!1})):ke,$e(e=>Xt(i.queue,e)))}case`Exit`:{let t=e.requestId,n=c.get(t);if(!n)return E;c.delete(t);let r=Bt(l)&&l.value.onRequestExit?l.value.onRequestExit({id:t,tag:n.rpc._tag,stream:n._tag===`Queue`,exit:e.exit}):E;return n._tag===`Effect`?r.pipe(it(x(()=>n.resume(e.exit)))):r.pipe(it(e.exit._tag===`Success`?Vt(n.queue):Xt(n.queue,e.exit.cause)))}case`Defect`:return d(Ke(e.defect));case`ClientEnd`:return E}},v;if(t.flatten){let t=new Map;v=function(n,r,i){let a=t.get(n);return a||(a=h(e.requests.get(n)),t.set(n,a)),a(r,i)}}else v={},e.requests.forEach(e=>{Kn(v,e._tag,h(e))});return{client:v,write:ne}}),zc=0,Bc=ur(function*(e,t){let n=zc++,{run:r,send:i,supportsAck:a,supportsTransferables:o}=yield*Wc,s=new Map,{client:c,write:l}=yield*Rc(e,{...t,supportsAck:a,onFromClient({message:t}){switch(t._tag){case`Request`:{let r=e.requests.get(t.tag),a=o?cs():void 0,c=rn(),l={rpc:r,context:a?bt(c.context,ss,a):c.context,schemas:Hc(r)};return s.set(t.id,l),l.schemas.encodePayload(t.payload).pipe(jr(l.context),Dn,T(e=>i(n,{...t,id:t.id,payload:e,headers:Object.entries(t.headers)},a&&a.readUnsafe())))}case`Ack`:return s.get(t.requestId)?i(n,{_tag:`Ack`,requestId:t.requestId}):E;case`Interrupt`:return s.get(t.requestId)?(s.delete(t.requestId),i(n,{_tag:`Interrupt`,requestId:t.requestId})):E;case`Eof`:return E}}});return yield*r(n,e=>{switch(e._tag){case`Chunk`:{let t=vs(e.requestId),n=s.get(t);return!n||Ut(n.schemas.decodeChunk)?E:n.schemas.decodeChunk.value(e.values).pipe(jr(n.context),Dn,T(t=>l({_tag:`Chunk`,clientId:0,requestId:vs(e.requestId),values:t})),cr(t=>l({_tag:`Exit`,clientId:0,requestId:vs(e.requestId),exit:qr(t)})))}case`Exit`:{let t=vs(e.requestId),n=s.get(t);return n?(s.delete(t),n.schemas.decodeExit(e.exit).pipe(jr(n.context),Dn,gn({onSuccess:e=>l({_tag:`Exit`,clientId:0,requestId:t,exit:e}),onFailure:e=>l({_tag:`Exit`,clientId:0,requestId:t,exit:qr(e)})}))):E}case`Defect`:return l({_tag:`Defect`,clientId:0,defect:Xc(e.defect)});case`ClientProtocolError`:{let t=yt(e.error);return Me(s.keys(),e=>l({_tag:`Exit`,clientId:0,requestId:e,exit:t}))}default:return E}}).pipe($e(ir),gr,ut),c}),Vc=new WeakMap,Hc=e=>{let t=Vc.get(e);if(t!==void 0)return t;let n=tr(e.successSchema);return t={decodeChunk:Yt(n,e=>b(we(fn(e.success)))),encodePayload:ue(we(e.payloadSchema)),decodeExit:b(we(nn(e)))},Vc.set(e,t),t},Uc=sn(`effect/rpc/RpcClient/CurrentHeaders`,{defaultValue:()=>jo}),Wc=class extends j()(`effect/rpc/RpcClient/Protocol`){static make=Ic},Gc=e=>Wc.make(ur(function*(t,n){let r=yield*Vo,i=yield*Nc,a=yield*_t(Yc),o=new Map,s=yield*r.writer,c=i.makeUnsafe(),l=yield*qc(s(c.encode(ys)),Bt(a)?a.value:void 0),u,d=Pt(()=>(u=void 0,Bt(a)?a.value.onConnect:E)),f=e=>Me(n,n=>t(n,e)),p=e=>(u=e,f({_tag:`ClientProtocolError`,error:e}));return yield*Pt(()=>(c=i.makeUnsafe(),l.reset(),r.runRaw(e=>{try{let n=c.decode(e);if(n.length===0)return;let r=0;return Tr({while:()=>r<n.length,body:()=>{let e=n[r++];if(e._tag===`Pong`)return l.onPong;if(Object.hasOwn(e,`requestId`)){let n=e.requestId,r=o.get(n);if(r!==void 0)return e._tag===`Exit`&&o.delete(n),t(r,e)}return f(e)},step:tt})}catch(e){return f({_tag:`ClientProtocolError`,error:new _s({reason:new gs({message:`Error decoding message`,cause:e})})})}},{onOpen:d}).pipe(cn(T(l.timeout,()=>(Bt(a)&&a.value.onPingTimeout?a.value.onPingTimeout:E).pipe(it(Se(new es({reason:new Zo({kind:`Timeout`,cause:Error(`ping timeout`)})}))))))))).pipe(T(()=>Se(new es({reason:new Qo({code:1e3})}))),Bt(a)?Nt(a.value.onDisconnect):ke,It(t=>{let n=qt(t),r=Wr(n),i=new _s({reason:r?n.success.reason:new gs({message:`Unknown socket error`,cause:Zn(t)})});return e?.retryTransientErrors&&r&&n.success.reason._tag===`SocketOpenError`?(e.onTransientError?.(i)??E).pipe(wr({log:!0,message:`RpcClient onTransientError hook failed`})):p(i)}),oe(e?.retryPolicy??Kc,e=>p(new _s({reason:e.reason}))),In({module:`RpcClient`,method:`makeProtocolSocket`}),ut),{send(e,t){if(u)return Se(u);t._tag===`Request`&&o.set(t.id,e);let n=c.encode(t);return n===void 0?E:Dn(s(n))},supportsAck:!0,supportsTransferables:!1}})),Kc=Wn([ar(500,1.5),Tn(5e3)]),qc=ur(function*(e,t){let n=!0,r=hr(),i=()=>{n=!0,r.closeUnsafe()},a=x(()=>{n=!0}).pipe(it(t?.onPong??E));return yield*Pt(()=>n?(n=!1,(t?.onPing??E).pipe(it(e))):r.open).pipe(Ur(`8 seconds`),bn,Ht,gr,ut),{timeout:r.await,reset:i,onPong:a}}),Jc=class extends j()(`effect/rpc/RpcClient/RequestHooks`){},Yc=class extends j()(`effect/rpc/RpcClient/ConnectionHooks`){},Xc=Lr(Qn()),Z=ua(),Zc=1e3,Qc=64e3,$c=Object.freeze({attemptCount:0,closeCode:null,closeReason:null,connectionLabel:null,connectedAt:null,disconnectedAt:null,hasConnected:!1,lastError:null,lastErrorAt:null,nextRetryAt:null,online:!0,phase:`idle`,reconnectAttemptCount:0,reconnectMaxAttempts:8,reconnectPhase:`idle`,socketUrl:null}),el=Ra($c).pipe(ro,io(`ws-connection-status`)),tl=new Set,nl=no(e=>(tl.add(e),Ra({...$c,online:cl().online}).pipe(ro,io(`ws-connection-status:${e}`)))),rl=Ra(0).pipe(ro,io(`ws-connection-opened-count`));function il(){return new Date().toISOString()}function al(e){let t=e(cl());return Z.set(el,t),t}function ol(e,t){if(!e)return;let n=nl(e);Z.set(n,t(Z.get(n)))}function sl(e){return e?.trim()||null}function cl(){return Z.get(el)}function ll(e){return Z.get(nl(e))}function ul(e){tl.has(e)&&ol(e,e=>({...$c,online:e.online}))}function dl(e){return e.phase===`connected`?`connected`:!e.online&&(e.disconnectedAt!==null||e.phase===`disconnected`)?`offline`:e.hasConnected?`reconnecting`:e.phase===`disconnected`?`error`:`connecting`}function fl(e,t){let n=sl(t?.connectionLabel),r=t=>({...t,attemptCount:t.attemptCount+1,connectionLabel:n??t.connectionLabel,nextRetryAt:null,phase:`connecting`,reconnectAttemptCount:t.phase===`connected`?1:t.reconnectAttemptCount+1,reconnectPhase:`attempting`,socketUrl:e});return ol(t?.environmentId,r),al(r)}function pl(e){let t=sl(e?.connectionLabel),n=e=>({...e,closeCode:null,closeReason:null,connectionLabel:t??e.connectionLabel,connectedAt:il(),disconnectedAt:null,hasConnected:!0,nextRetryAt:null,phase:`connected`,reconnectAttemptCount:0,reconnectPhase:`idle`});return ol(e?.environmentId,n),Z.set(rl,Z.get(rl)+1),al(n)}function ml(e,t){let n=e?.trim(),r=t?.trim();return n?r?`${n} Hint: ${r}`:n:r?`Hint: ${r}`:null}function hl(e,t){let n=n=>xl(n,{lastError:ml(e,t?.versionMismatchHint)??ml(n.lastError,t?.versionMismatchHint),lastErrorAt:il()});return ol(t?.environmentId,n),al(n)}function gl(e,t){let n=sl(t?.connectionLabel),r=r=>xl(r,{closeCode:e?.code??r.closeCode,closeReason:ml(e?.reason,t?.versionMismatchHint)??ml(r.closeReason,t?.versionMismatchHint)},n===null?void 0:{connectionLabel:n});return ol(t?.environmentId,r),al(r)}function _l(e){for(let t of tl)ol(t,t=>({...t,online:e}));return al(t=>({...t,online:e}))}function vl(){return al(e=>({...e,nextRetryAt:null,reconnectAttemptCount:0,reconnectPhase:`idle`}))}function yl(e){return _l(e.isOnline())}function bl(e){return!Number.isInteger(e)||e<0||e>=7?null:Math.min(Math.round(Zc*2**e),Qc)}function xl(e,t,n){let r=e.disconnectedAt??il(),i=e.nextRetryAt!==null||e.reconnectPhase===`exhausted`?null:bl(Math.max(0,e.reconnectAttemptCount-1));return{...e,...t,connectionLabel:sl(n?.connectionLabel)??e.connectionLabel,disconnectedAt:r,nextRetryAt:i===null?e.nextRetryAt:new Date(Date.now()+i).toISOString(),phase:`disconnected`,reconnectPhase:e.reconnectPhase===`waiting`||e.reconnectPhase===`exhausted`?e.reconnectPhase:i===null?`exhausted`:`waiting`}}var Sl=Object.freeze({generation:0,status:`idle`,availability:null,devices:[],error:null}),Cl=o((e,t)=>({environmentById:{},threadByKey:{},pendingOpenByThreadKey:{},beginConnection:n=>{let r=(t().environmentById[n]?.generation??0)+1;return e(e=>({environmentById:{...e.environmentById,[n]:{generation:r,status:`connecting`,availability:e.environmentById[n]?.availability??null,devices:e.environmentById[n]?.devices??[],error:null}}})),r},markConnectionError:(t,n,r)=>e(e=>{let i=e.environmentById[t];return!i||i.generation!==n?e:{environmentById:{...e.environmentById,[t]:{...i,status:`error`,error:r}}}}),applyInventory:(t,n,r,i)=>e(e=>{let a=e.environmentById[t];return!a||a.generation!==n?e:{environmentById:{...e.environmentById,[t]:{generation:n,status:`connected`,availability:i,devices:[...r],error:null}}}}),applyThreadSnapshot:(t,n,i)=>e(e=>{let a=e.environmentById[t];if(!a||a.generation!==n)return e;let o=c(r(t,i.threadId)),s=e.threadByKey[o];return s&&s.version>=i.version?e:{environmentById:{...e.environmentById,[t]:{...a,status:`connected`,availability:i.availability,devices:[...i.devices],error:null}},threadByKey:{...e.threadByKey,[o]:i}}}),applyEvent:(n,i,a)=>{if(a.type===`device.thread-state`){t().applyThreadSnapshot(n,i,a.state);return}e(e=>{let t=e.environmentById[n];if(!t||t.generation!==i)return e;let o=c(r(n,a.threadId));return{pendingOpenByThreadKey:{...e.pendingOpenByThreadKey,[o]:a}}})},consumeOpenRequest:(n,i)=>{let a=c(r(n,i)),o=t().pendingOpenByThreadKey[a]??null;return o?(e(e=>{let t={...e.pendingOpenByThreadKey};return delete t[a],{pendingOpenByThreadKey:t}}),o):null},clearEnvironment:(t,n)=>e(e=>{let r=e.environmentById[t];if(!r||r.generation!==n)return e;let i=`${t}:`;return{environmentById:{...e.environmentById,[t]:{...Sl,generation:n}},threadByKey:Object.fromEntries(Object.entries(e.threadByKey).filter(([e])=>!e.startsWith(i))),pendingOpenByThreadKey:Object.fromEntries(Object.entries(e.pendingOpenByThreadKey).filter(([e])=>!e.startsWith(i)))}})}));function wl(e){return e instanceof Error&&e.message.trim()?e.message:String(e)}function Tl(e,t){let n=!0,r=Cl.getState().beginConnection(e),i=()=>Cl.getState(),a=async()=>{let a=r;try{let r=await t.list({includeShutdown:!0});if(!n)return;i().applyInventory(e,a,r.devices,r.availability)}catch(t){if(!n)return;i().markConnectionError(e,a,wl(t))}},o=async a=>{let o=r;try{let r=await t.getThreadState({threadId:a});if(!n)return;i().applyThreadSnapshot(e,o,r)}catch(t){if(!n)return;i().markConnectionError(e,o,wl(t))}},s=t.onEvent(t=>{n&&i().applyEvent(e,r,t)},{onResubscribe:()=>{n&&(r=i().beginConnection(e),a())},onError:()=>{n&&i().markConnectionError(e,r,`Simulator event stream disconnected.`)}});return a(),{refreshInventory:a,refreshThread:o,reconnecting:()=>{n&&(r=i().beginConnection(e))},dispose:()=>{n&&(n=!1,s(),i().clearEnvironment(e,r))}}}function El(){let e=null,t=null,n=()=>{let n=new Promise((n,r)=>{e=n,t=r});return n.catch(()=>void 0),n},r=n();return{wait:()=>r,resolve:()=>{e?.(),e=null,t=null},reject:n=>{t?.(n),e=null,t=null},reset:()=>{r=n()}}}function Dl(e){let t=e.knownEnvironment.environmentId;if(!t)throw Error(`Known environment ${e.knownEnvironment.label} is missing its environmentId.`);let n=!1,r=El(),i=e.kind===`saved`||e.onWelcome!==void 0,a=e.kind===`saved`||e.onConfigSnapshot!==void 0,o=(e,n)=>{if(t!==e)throw Error(`Environment connection ${t} changed identity to ${e} via ${n}.`)},s=i?e.client.server.subscribeLifecycle(t=>{t.type===`welcome`&&(o(t.payload.environment.environmentId,`server lifecycle welcome`),e.onWelcome?.(t.payload))}):()=>void 0,c=a?e.client.server.subscribeConfig(t=>{t.type===`snapshot`&&(o(t.config.environment.environmentId,`server config snapshot`),e.onConfigSnapshot?.(t.config))}):()=>void 0,l=e.client.orchestration.subscribeShell(n=>{if(n.kind===`snapshot`){e.pushSequenceMonitor.recordSnapshot(t,n.snapshot.snapshotSequence),e.syncShellSnapshot(n.snapshot,t),r.resolve();return}e.pushSequenceMonitor.recordEvent(t,n.sequence),e.applyShellEvent(n,t)},{onResubscribe:()=>{n||(r.reset(),e.resetShellProjection(t),e.onResubscribe?.(t))},onError:()=>{n||(r.reject(Error(`Shell snapshot synchronization failed.`)),e.onShellError?.(t))}}),u=e.client.terminal.onEvent(n=>e.applyTerminalEvent(n,t)),d=e.client.device?Tl(t,e.client.device):null,f=()=>{n=!0,l(),u(),s(),c(),d?.dispose()};return{kind:e.kind,environmentId:t,knownEnvironment:e.knownEnvironment,client:e.client,ensureBootstrapped:()=>r.wait(),reconnect:async()=>{r.reset(),d?.reconnecting();try{await e.client.reconnect(),await d?.refreshInventory(),await e.refreshMetadata?.(),await r.wait()}catch(e){throw r.reject(e),e}},dispose:async()=>{f(),await e.client.dispose(),ul(t)}}}var Ol=`/ws/device-frames`,kl=`udid`,Al=`device.frame.resync`;new TextEncoder;var jl=new TextDecoder(`utf-8`,{fatal:!0}),Ml=e=>{if(e.byteLength<17)return{ok:!1,reason:`too-short`};let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(t.getUint16(0,!0)!==21318)return{ok:!1,reason:`bad-magic`};if(t.getUint8(2)!==1)return{ok:!1,reason:`unsupported-version`};let n=t.getUint8(3),r=t.getUint8(16),i=17+r;if(r===0||e.byteLength<i)return{ok:!1,reason:`truncated-device-id`};let a;try{a=jl.decode(e.subarray(17,i))}catch{return{ok:!1,reason:`invalid-device-id`}}return{ok:!0,frame:{header:{deviceId:a,sequence:t.getUint32(4,!0),timestampMs:t.getFloat64(8,!0),keyframe:!!(n&1),codecConfig:!!(n&2)},payload:e.subarray(i)}}};function Nl(e,t){let n=new URL(e);return n.pathname=Ol,n.searchParams.set(kl,t),n.toString()}function Pl(e){return e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):null}function Fl(e){let t=e.now??(()=>Date.now()),n=e.setTimeout??((e,t)=>setTimeout(e,t)),r=e.clearTimeout??(e=>clearTimeout(e)),i=e.reconnectBaseMs??500,a=e.reconnectMaxMs??5e3,o=e.resyncCooldownMs??1e3,s=!1,c=0,l=0,u=null,d=null,f=!1,p=null,m=!1,h=()=>{if(s||!f||!d)return!1;try{return d.send(JSON.stringify({type:Al})),!0}catch{return!1}},g=async()=>{if(s)return;let t=c+1;c=t;let r=!1;try{let o=await e.resolveUrl();if(s||t!==c)return;let p=e.socket.webSocketConstructor(Nl(o,e.udid));d=p,p.binaryType=`arraybuffer`;let ee=o=>{if(s||r||t!==c)return;r=!0,f=!1,d===p&&(d=null);let m=Math.min(a,i*2**Math.min(l,10));l+=1,e.handlers.onReset(o,{generation:t,retryInMs:m}),u=n(()=>{u=null,g()},m)};p.addEventListener(`open`,(()=>{s||t!==c||(f=!0,l=0,m&&(m=!1,h()))})),p.addEventListener(`message`,(n=>{if(s||t!==c)return;let r=Pl(n.data);if(!r)return;let i=Ml(r);if(!i.ok){e.handlers.onReset(`decode-failed`,{generation:t,retryInMs:null});return}e.handlers.onFrame(i.frame,t)})),p.addEventListener(`close`,(()=>ee(`closed`))),p.addEventListener(`error`,(()=>ee(`error`)))}catch{if(s||t!==c)return;let r=Math.min(a,i*2**Math.min(l,10));l+=1,e.handlers.onReset(`error`,{generation:t,retryInMs:r}),u=n(()=>{u=null,g()},r)}};return g(),{requestResync:()=>{if(s)return!1;let e=t();return p!==null&&e-p<o?!1:(p=e,f?h():(m=!0,!1))},close:()=>{if(s)return;s=!0,c+=1,m=!1,u!==null&&r(u),u=null;let e=d;d=null,f=!1;try{e?.close()}catch{}}}}function Il(e){let t=e,n=new Set;return{getState:()=>t,setState:e=>{t={...t,...typeof e==`function`?e(t):e},n.forEach(e=>e())},subscribe:e=>(n.add(e),()=>n.delete(e))}}var Ll=Object.freeze({connectionState:`disconnected`,authState:`unknown`,lastError:null,lastErrorAt:null,role:null,descriptor:null,serverConfig:null,connectedAt:null,disconnectedAt:null});function Rl(e){return{environmentId:e.environmentId,label:e.label,httpBaseUrl:e.httpBaseUrl,wsBaseUrl:e.wsBaseUrl,createdAt:e.createdAt,lastConnectedAt:e.lastConnectedAt,...e.desktopSsh?{desktopSsh:e.desktopSsh}:{}}}function zl(e){let t=!1,n=null,r=Il({}),i=t=>{try{e.kv.setRegistry(Object.values(t)).catch(e=>{console.error(`[SAVED_ENVIRONMENTS] persist failed`,e)})}catch(e){console.error(`[SAVED_ENVIRONMENTS] persist failed`,e)}};r.setState({byId:{},upsert:e=>r.setState(t=>{let n={...t.byId,[e.environmentId]:e};return i(n),{byId:n}}),remove:e=>r.setState(t=>{let{[e]:n,...r}=t.byId;return i(r),{byId:r}}),markConnected:(e,t)=>r.setState(n=>{let r=n.byId[e];if(!r)return{};let a={...n.byId,[e]:{...r,lastConnectedAt:t}};return i(a),{byId:a}}),rename:(e,t)=>r.setState(n=>{let r=n.byId[e],a=t.trim();if(!r||!a||r.label===a)return{};let o={...n.byId,[e]:{...r,label:a}};return i(o),{byId:o}}),reset:()=>{i({}),r.setState({byId:{}})}});let a=Il({});return a.setState({byId:{},ensure:e=>a.setState(t=>t.byId[e]?{}:{byId:{...t.byId,[e]:{...Ll}}}),patch:(e,t)=>a.setState(n=>({byId:{...n.byId,[e]:{...n.byId[e]??Ll,...t}}})),clear:e=>a.setState(t=>{let{[e]:n,...r}=t.byId;return{byId:r}}),reset:()=>a.setState({byId:{}})}),{registryStore:r,runtimeStore:a,hasHydrated:()=>t,waitForHydration:()=>t?Promise.resolve():n||(n=e.kv.getRegistry().then(e=>{let t=r.getState().byId,n=Object.fromEntries(e.map(e=>[e.environmentId,e]));r.setState({byId:{...n,...t}})}).catch(e=>console.error(`[SAVED_ENVIRONMENTS] hydrate failed`,e)).finally(()=>{t=!0,n=null}),n),list:()=>Object.values(r.getState().byId).toSorted((e,t)=>e.label.localeCompare(t.label)),get:e=>r.getState().byId[e]??null,persistRecord:async t=>{let n={...r.getState().byId,[t.environmentId]:t};await e.kv.setRegistry(Object.values(n))},readBearerToken:t=>e.secretKV.get(t),writeBearerToken:(t,n)=>e.secretKV.set(t,n),removeBearerToken:t=>e.secretKV.remove(t),resetForTests:()=>{t=!1,n=null,r.setState({byId:{}})},resetRuntimeForTests:()=>a.getState().reset(),getRuntime:e=>a.getState().byId[e]??Ll}}function Bl(e){return{id:e.id??`ws:${e.label}`,label:e.label,source:e.source??`manual`,target:e.target}}function Vl(e){return e?.target.wsBaseUrl??null}function Hl(e){return e?.target.httpBaseUrl??null}function Ul(e,t){return{...e,environmentId:t.environmentId,label:t.label}}var Wl=()=>void 0;function Gl(e){return e instanceof Error?e:Error(String(e))}var Kl=new Set;function ql(e){for(let t of Kl)t.clearEnvironment(e)}function Jl(e){let t=Math.max(0,e.gcTime??3e5),n=Math.max(1,Math.floor(e.maxEntries??256)),r=new Set,i=new Map,a=new Map,o=new Map,s=Math.max(0,Math.min(.5,e.pollJitterRatio??0)),c=e.random??Math.random,l=!1,u=no(n=>(r.add(n),Ra(e.initialState).pipe(Oa(t),io(`${e.labelPrefix}:${n}`)))),d=Ra(e.initialState).pipe(ro,io(`${e.labelPrefix}:null`));function f(e,t){Z.set(u(e),t)}function p(e){return Z.get(u(e))}function m(e){e.gcTimer!==null&&(clearTimeout(e.gcTimer),e.gcTimer=null)}function h(e,t,n){let r=e.get(t);r&&(r.delete(n),r.size===0&&e.delete(t))}function g(t){let n=i.get(t);return!n||n.subscriberCount>0||n.inFlightPromise!==null?!1:(y(n),m(n),n.fetchToken+=1,i.delete(t),h(a,n.environmentId,t),h(o,n.family,t),r.delete(t)&&Z.set(u(t),e.initialState),!0)}function ee(){if(i.size<=n)return;let e=[...i.values()].filter(e=>e.subscriberCount===0&&e.inFlightPromise===null).toSorted((e,t)=>e.lastAccessedAt-t.lastAccessedAt);for(let t of e){if(i.size<=n)break;g(t.compositeKey)}}function te(e){if(m(e),!(e.subscriberCount>0||e.inFlightPromise!==null)){if(e.gcTime===0){g(e.compositeKey);return}e.gcTimer=setTimeout(()=>{e.gcTimer=null,g(e.compositeKey)},e.gcTime)}}function _(e){e.lastAccessedAt=Date.now(),m(e)}function ne(e){i.set(e.compositeKey,e);let t=a.get(e.environmentId)??new Set;t.add(e.compositeKey),a.set(e.environmentId,t);let n=o.get(e.family)??new Set;n.add(e.compositeKey),o.set(e.family,n),ee()}function v(e){let t=e?.environmentId?a.get(e.environmentId):void 0,n=e?.family?o.get(e.family):void 0;if(e?.environmentId&&!t||e?.family&&!n)return new Set;if(t&&n){let e=t.size<=n.size?t:n,r=e===t?n:t;return new Set([...e].filter(e=>r.has(e)))}return new Set(t??n??i.keys())}async function re(t){if(t.inFlightPromise)return t.inFlightPromise;_(t);let n=++t.fetchToken,r=(async()=>{e.onRunStart?.(t);let r=p(t.compositeKey);f(t.compositeKey,e.buildFetchingState(r));try{let r=await t.run();if(n!==t.fetchToken||i.get(t.compositeKey)!==t)return;e.onRunEnd?.(t,`success`),t.hasData=!0,t.lastFetchedAt=Date.now(),f(t.compositeKey,e.buildSuccessState(r))}catch(r){if(n!==t.fetchToken||i.get(t.compositeKey)!==t)return;e.onRunEnd?.(t,`error`),f(t.compositeKey,e.buildErrorState(p(t.compositeKey),Gl(r)))}})();t.inFlightPromise=r;try{await r}finally{let e=t.inFlightPromise===r;e&&(t.inFlightPromise=null),e&&i.get(t.compositeKey)===t&&(b(t),te(t),ee())}}function ie(e){y(e),e.fetchToken+=1,e.inFlightPromise=null}function y(e){let t=e.pollTimer;t!=null&&(clearTimeout(t),e.pollTimer=null)}function b(t){if(y(t),l||t.subscriberCount<=0||e.lifecycle&&(!e.lifecycle.isForeground()||!e.lifecycle.isOnline()))return;let n=p(t.compositeKey),r=e.selectPollData?e.selectPollData(n):n,i=null;for(let e of t.pollSubscribers.values()){let t=e.resolveIntervalMs?.(r);t===void 0||t===!1||t<=0||(i=i===null?t:Math.min(i,t))}if(i===null)return;let a=Math.max(1,e.adjustPollDelay?.(i,t)??i),o=a*s*(c()*2-1),u=Math.max(1,Math.round(a+o));t.pollTimer=setTimeout(()=>{t.pollTimer=null,!(e.lifecycle&&(!e.lifecycle.isForeground()||!e.lifecycle.isOnline()))&&re(t)},u)}function ae(t){let n=p(t.compositeKey);return e.selectPollData?e.selectPollData(n):n}function oe(e){let t={data:ae(e),hasData:e.hasData,lastFetchedAt:e.lastFetchedAt,staleTime:e.staleTime};for(let n of e.pollSubscribers.values())if(n.shouldRefreshOnLifecycle?.(t))return!0;return!1}function se(t){if(t===`background`||t===`offline`){for(let e of i.values())y(e);return}if(!(l||!e.lifecycle?.isForeground()||!e.lifecycle.isOnline()||t!==`foreground`&&t!==`resume`&&t!==`online`))for(let e of i.values())e.subscriberCount<=0||(y(e),oe(e)?re(e):b(e))}function ce(){for(let e of i.values())y(e),m(e),e.fetchToken+=1;i.clear(),a.clear(),o.clear();for(let t of r)Z.set(u(t),e.initialState);r.clear()}let le=e.lifecycle?.subscribe(se)??Wl;function ue(){l||(l=!0,le(),ce(),Kl.delete(fe))}function de(t){let n=new Set;for(let e of v({environmentId:t})){let t=i.get(e);t&&(y(t),m(t),t.fetchToken+=1,i.delete(e),h(o,t.family,e),n.add(e))}a.delete(t);for(let i of r)!n.has(i)&&!i.startsWith(`${t}`)||(Z.set(u(i),e.initialState),r.delete(i))}let fe={KEY_SEP:`\0`,knownStateKeys:r,controllers:i,queryStateAtom:u,EMPTY_QUERY_ATOM:d,initialState:e.initialState,defaultGcTime:t,registerController:ne,setQueryState:f,getQueryState:p,runController:re,schedulePoll:b,clearPollTimer:y,touch:_,cancel:ie,scheduleGc:te,evict:g,controllerKeys:v,clearEnvironment:de,resetForTests:ce,dispose:ue};return Kl.add(fe),fe}function Yl(e,t,n){function r(e){return t.isEnabled(e)?`${t.label}${t.buildKey(e)}`:null}function i(t){return t===null?e.EMPTY_QUERY_ATOM:e.queryStateAtom(t)}function a(t){return t===null?e.initialState:e.getQueryState(t)}function o(i){let a=r(i);if(a===null)return Wl;let o=e.controllers.get(a);return o||(o={compositeKey:a,environmentId:t.resolveEnvironmentId(i),family:t.label,staleTime:t.staleTime,gcTime:Math.max(0,t.gcTime??e.defaultGcTime),run:()=>t.run(i),subscriberCount:0,lastFetchedAt:0,lastAccessedAt:Date.now(),fetchToken:0,hasData:!1,inFlightPromise:null,gcTimer:null,pollTimer:null,pollSubscribers:new Map,nextPollSubscriberId:0,...t.createControllerFields(i)},e.registerController(o)),e.touch(o),o.subscriberCount+=1,n(o)&&e.runController(o),()=>{let t=e.controllers.get(a);t&&(t.subscriberCount=Math.max(0,t.subscriberCount-1),e.scheduleGc(t))}}function s(t){if(t===null)return;let n=e.controllers.get(t);n&&(n.lastFetchedAt=0,e.runController(n))}async function c(t){if(t===null)return e.initialState;let n=e.controllers.get(t);return n?(n.lastFetchedAt=0,await e.runController(n),e.getQueryState(t)):e.getQueryState(t)}return{keyOf:r,watch:o,refresh:s,refreshAsync:c,getAtom:i,getSnapshot:a}}function Xl(e,t,n){function r(e){return t.isEnabled(e)?`${t.label}${t.buildKey(e)}`:null}function i(t){let n=r(t);return n===null?e.EMPTY_QUERY_ATOM:e.queryStateAtom(n)}function a(t){let n=r(t);return n===null?e.initialState:e.getQueryState(n)}function o(i,a){let o=r(i);if(o===null)return Wl;let s=e.controllers.get(o);s||(s={compositeKey:o,environmentId:t.resolveEnvironmentId(i),family:t.label,staleTime:t.staleTime,gcTime:Math.max(0,t.gcTime??e.defaultGcTime),run:()=>t.run(i),subscriberCount:0,lastFetchedAt:0,lastAccessedAt:Date.now(),fetchToken:0,hasData:!1,inFlightPromise:null,gcTimer:null,pollTimer:null,pollSubscribers:new Map,nextPollSubscriberId:0,...t.createControllerFields(i)},e.registerController(s)),e.touch(s);let c=s.nextPollSubscriberId++,l=typeof a==`function`?{resolveIntervalMs:a}:a??{};return s.pollSubscribers.set(c,{...l.resolveIntervalMs?{resolveIntervalMs:l.resolveIntervalMs}:{},...l.shouldRefreshOnLifecycle?{shouldRefreshOnLifecycle:l.shouldRefreshOnLifecycle}:{}}),s.subscriberCount+=1,n(s)?e.runController(s):s.hasData&&e.schedulePoll(s),()=>{let t=e.controllers.get(o);t&&(t.subscriberCount=Math.max(0,t.subscriberCount-1),t.pollSubscribers.delete(c),t.subscriberCount<=0?(e.clearPollTimer(t),e.scheduleGc(t)):e.schedulePoll(t))}}function s(t){let n=r(t);if(n===null)return;let i=e.controllers.get(n);i&&(i.lastFetchedAt=0,e.runController(i))}async function c(t){let n=r(t);if(n===null)return e.initialState;let i=e.controllers.get(n);return i?(i.lastFetchedAt=0,await e.runController(i),e.getQueryState(n)):e.getQueryState(n)}function l(t,n){let i=r(t);if(i===null)return;let a=e.getQueryState(i),o=n(a.data);if(o===a.data)return;e.setQueryState(i,{...a,data:o,isLoading:!1,isFetching:!1,error:null});let s=e.controllers.get(i);s&&(s.hasData=o!==null,e.schedulePoll(s))}return{targetKey:r,atomFor:i,snapshotFor:a,watch:o,refresh:s,refreshAsync:c,updateData:l}}var Zl=15e3,Ql=new Map,$l=Ra([]).pipe(ro,io(`slow-rpc-ack-requests`));function eu(e){Z.set($l,[...e])}function tu(){return Z.get($l)}function nu(e){return!e.includes(`subscribe`)}function ru(e,t){if(!nu(t))return;ou(e),cu();let n=Date.now(),r={requestId:e,startedAt:new Date(n).toISOString(),startedAtMs:n,tag:t,thresholdMs:Zl},i=setTimeout(()=>{Ql.delete(e),su(r)},Zl);Ql.set(e,{request:r,timeoutId:i})}function iu(e){ou(e);let t=tu();t.some(t=>t.requestId===e)&&eu(t.filter(t=>t.requestId!==e))}function au(){for(let e of Ql.values())clearTimeout(e.timeoutId);Ql.clear(),eu([])}function ou(e){let t=Ql.get(e);t&&(clearTimeout(t.timeoutId),Ql.delete(e))}function su(e){let t=[...tu(),e];if(t.length<=256){eu(t);return}eu(t.slice(-256))}function cu(){for(;Ql.size>=256;){let e=Ql.keys().next().value;if(e===void 0)return;ou(e)}}var lu=Bc(jn),uu=Bc(Yn),du=Bc(mr),fu=`Unable to prepare the Ryco server WebSocket connection.`,pu=`Unable to connect to the Ryco server WebSocket.`,mu=class extends On(`WsUrlProviderError`){};function hu(e,t=!1){let n=new URL(e);if(n.protocol!==`ws:`&&n.protocol!==`wss:`)throw Error(`Unsupported websocket transport URL protocol: ${n.protocol}`);return t||(n.pathname=`/ws`),n.toString()}function gu(e){return{connectionLabel:e?.getConnectionLabel?.()??null,environmentId:e?.getEnvironmentId?.()??null,versionMismatchHint:e?.getVersionMismatchHint?.()??null}}function _u(e){return{isActive:()=>!0,onAttempt:t=>{e?.recordConnectionState!==!1&&fl(t,gu(e))},onOpen:()=>{e?.recordConnectionState!==!1&&pl(gu(e))},onError:t=>{e?.recordConnectionState!==!1&&(au(),hl(t,gu(e)))},onClose:(t,n)=>{e?.recordConnectionState!==!1&&au(),!n.intentional&&e?.recordConnectionState!==!1&&gl(t,gu(e))}}}function vu(e){let t=_u(e),n=e?.isActive??t.isActive;return{isActive:n,onAttempt:r=>{n()&&(t.onAttempt(r),e?.onAttempt?.(r))},onOpen:()=>{n()&&(t.onOpen(),e?.onOpen?.())},onError:r=>{n()&&(t.onError(r),e?.onError?.(r))},onClose:(r,i)=>{n()&&(t.onClose(r,i),e?.onClose?.(r,i))}}}function yu(e,t,n){let r=vu(n),i=on(_n(n?.reconnectMaxRetries??7),({output:e})=>v(En(n?.getReconnectDelayMs?.(e)??bl(e)??0))).pipe(lr(()=>r.isActive()&&(n?.shouldReconnect?.()??!0))),a=typeof e==`function`?Gt({try:()=>{if(!r.isActive())throw new mu;return e()},catch:()=>new mu}).pipe(pn(e=>hu(e,n?.preserveSocketPath)),be(()=>x(()=>{r.onError(fu)})),St(i),Dn):hu(e,n?.preserveSocketPath),o=se(rs,(e,i)=>{r.onAttempt(e);let a=n?.webSocketConstructor?n.webSocketConstructor(e,i):t.webSocketConstructor(e,i);return a.addEventListener(`open`,()=>{n?.isSocketCurrent?.(a)!==!1&&r.onOpen()},{once:!0}),a.addEventListener(`error`,()=>{n?.isSocketCurrent?.(a)!==!1&&r.onError(pu)},{once:!0}),a.addEventListener(`close`,e=>{n?.isSocketCurrent?.(a)!==!1&&r.onClose({code:e.code,reason:e.reason},{intentional:n?.isCloseIntentional?.()??!1})},{once:!0}),a}),s=os(a).pipe(zr(o)),c=Mr(Wc,pn(Gc({retryPolicy:i,retryTransientErrors:n?.retryTransientErrors??!0}),e=>({...e,run:(t,n)=>e.run(t,e=>((e._tag===`ClientProtocolError`||e._tag===`Defect`)&&au(),n(e)))}))),l=se(Jc,Jc.of({onRequestStart:e=>x(()=>{if(r.isActive()){if(n?.authorizeRequest&&!n.authorizeRequest(e))throw Error(`This action is unavailable for the current hosted role.`);n?.onRequestStart?.({id:String(e.id),tag:e.tag,stream:e.stream}),ru(String(e.id),e.tag)}}),onRequestChunk:e=>x(()=>{r.isActive()&&(n?.onRequestChunk?.({id:String(e.id),tag:e.tag,chunkCount:e.chunkCount}),iu(String(e.id)))}),onRequestExit:e=>x(()=>{r.isActive()&&(n?.onRequestExit?.({id:String(e.id),tag:e.tag,stream:e.stream}),iu(String(e.id)))}),onRequestInterrupt:e=>x(()=>{r.isActive()&&(n?.onRequestInterrupt?.({id:String(e.id),...e.tag===void 0?{}:{tag:e.tag}}),iu(String(e.id)))})})),u=se(Yc,Yc.of({onConnect:E,onDisconnect:E,onPing:x(()=>{r.isActive()&&n?.onHeartbeatPing?.()}),onPong:x(()=>{r.isActive()&&n?.onHeartbeatPong?.()}),onPingTimeout:x(()=>{r.isActive()&&(au(),hl(`WebSocket heartbeat timed out.`,gu(n)),n?.onHeartbeatTimeout?.())})}));return ln(c.pipe(zr(ln(s,Fc,u))),l,u)}function Q(e,t){throw Error(`Device RPC returned ${t}; expected ${e}.`)}function bu(e,t){let n=t?.manageTransport??!0;return{dispose:()=>n?e.dispose():Promise.resolve(),reconnect:()=>n?e.reconnect():Promise.resolve(),isHeartbeatFresh:()=>e.isHeartbeatFresh(),...t?.openFrameSource?{openFrameSource:t.openFrameSource}:{},list:async(t={})=>{let n=await e.request(e=>e[D.read]({type:`list`,input:t}));return n.type===`list`?n.result:Q(`list`,n.type)},getThreadState:async t=>{let n=await e.request(e=>e[D.read]({type:`get-thread-state`,input:t}));return n.type===`get-thread-state`?n.result:Q(`get-thread-state`,n.type)},screenshot:async t=>{let n=await e.request(e=>e[D.read]({type:`screenshot`,input:t}));return n.type===`screenshot`?n.result:Q(`screenshot`,n.type)},describeUi:async t=>{let n=await e.request(e=>e[D.read]({type:`describe-ui`,input:t}));return n.type===`describe-ui`?n.result:Q(`describe-ui`,n.type)},boot:async t=>{let n=await e.request(e=>e[D.lifecycle]({type:`boot`,input:t}));return n.type===`boot`?n.result:Q(`boot`,n.type)},shutdown:async t=>{let n=await e.request(e=>e[D.lifecycle]({type:`shutdown`,input:t}));n.type!==`shutdown`&&Q(`shutdown`,n.type)},attach:async t=>{let n=await e.request(e=>e[D.lifecycle]({type:`attach`,input:t}));return n.type===`attach`?n.result:Q(`attach`,n.type)},detach:async t=>{let n=await e.request(e=>e[D.lifecycle]({type:`detach`,input:t}));return n.type===`detach`?n.result:Q(`detach`,n.type)},tap:async t=>{let n=await e.request(e=>e[D.input]({type:`tap`,input:t}));n.type!==`tap`&&Q(`tap`,n.type)},swipe:async t=>{let n=await e.request(e=>e[D.input]({type:`swipe`,input:t}));n.type!==`swipe`&&Q(`swipe`,n.type)},typeText:async t=>{let n=await e.request(e=>e[D.input]({type:`type-text`,input:t}));n.type!==`type-text`&&Q(`type-text`,n.type)},keyEvent:async t=>{let n=await e.request(e=>e[D.input]({type:`key-event`,input:t}));n.type!==`key-event`&&Q(`key-event`,n.type)},pressButton:async t=>{let n=await e.request(e=>e[D.input]({type:`press-button`,input:t}));n.type!==`press-button`&&Q(`press-button`,n.type)},scrollToElement:async t=>{let n=await e.request(e=>e[D.input]({type:`scroll-to-element`,input:t}));return n.type===`scroll-to-element`?n.result:Q(`scroll-to-element`,n.type)},installApp:async t=>{let n=await e.request(e=>e[D.app]({type:`install-app`,input:t}));return n.type===`install-app`?n.result:Q(`install-app`,n.type)},launchApp:async t=>{let n=await e.request(e=>e[D.app]({type:`launch-app`,input:t}));return n.type===`launch-app`?n.result:Q(`launch-app`,n.type)},openUrl:async t=>{let n=await e.request(e=>e[D.app]({type:`open-url`,input:t}));n.type!==`open-url`&&Q(`open-url`,n.type)},startRecording:async t=>{let n=await e.request(e=>e[D.recording]({type:`start-recording`,input:t}));return n.type===`start-recording`?n.result:Q(`start-recording`,n.type)},stopRecording:async t=>{let n=await e.request(e=>e[D.recording]({type:`stop-recording`,input:t}));return n.type===`stop-recording`?n.result:Q(`stop-recording`,n.type)},onEvent:(t,n)=>e.subscribe(e=>e[D.subscribeEvents]({}),t,{...n,tag:D.subscribeEvents})}}var xu=[{key:`mod+j`,command:`terminal.toggle`},{key:`mod+d`,command:`terminal.split`,when:`terminalFocus`},{key:`mod+n`,command:`terminal.new`,when:`terminalFocus`},{key:`mod+w`,command:`terminal.close`,when:`terminalFocus`},{key:`mod+p`,command:`workspace.files`,when:`!terminalFocus`},{key:`ctrl+shift+g`,command:`workspace.review`,when:`!terminalFocus`},{key:"ctrl+`",command:`workspace.terminal`,when:`!terminalFocus`},{key:`mod+d`,command:`diff.toggle`,when:`!terminalFocus`},{key:`mod+k`,command:`commandPalette.toggle`,when:`!terminalFocus`},{key:`mod+shift+i`,command:`sidebar.showInbox`,when:`!terminalFocus`},{key:`mod+shift+p`,command:`sidebar.showProjects`,when:`!terminalFocus`},{key:`mod+n`,command:`chat.new`,when:`!terminalFocus`},{key:`mod+shift+o`,command:`chat.new`,when:`!terminalFocus`},{key:`mod+shift+n`,command:`chat.newLocal`,when:`!terminalFocus`},{key:`mod+s`,command:`composer.stash`,when:`!terminalFocus`},{key:`mod+shift+m`,command:`modelPicker.toggle`,when:`!terminalFocus`},{key:`mod+o`,command:`editor.openFavorite`},{key:`mod+f`,command:`thread.find`,when:`!terminalFocus`},{key:`mod+shift+[`,command:`thread.previous`},{key:`mod+shift+]`,command:`thread.next`},...qe.map((e,t)=>({key:`mod+${t+1}`,command:e})),...h.map((e,t)=>({key:`mod+${t+1}`,command:e,when:`modelPickerOpen`}))];function Su(e){return e===`space`?` `:e===`esc`?`escape`:e}function Cu(e){let t=[...e.toLowerCase().split(`+`).map(e=>e.trim())],n=0;for(;t[t.length-1]===``;)n+=1,t.pop();if(n>0&&t.push(`+`),t.some(e=>e.length===0)||t.length===0)return null;let r=null,i=!1,a=!1,o=!1,s=!1,c=!1;for(let e of t)switch(e){case`cmd`:case`meta`:i=!0;break;case`ctrl`:case`control`:a=!0;break;case`shift`:o=!0;break;case`alt`:case`option`:s=!0;break;case`mod`:c=!0;break;default:if(r!==null)return null;r=Su(e)}return r===null?null:{key:r,metaKey:i,ctrlKey:a,shiftKey:o,altKey:s,modKey:c}}function wu(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(!r)break;if(/\s/.test(r)){n+=1;continue}if(e.startsWith(`&&`,n)){t.push({type:`and`}),n+=2;continue}if(e.startsWith(`||`,n)){t.push({type:`or`}),n+=2;continue}if(r===`!`){t.push({type:`not`}),n+=1;continue}if(r===`(`){t.push({type:`lparen`}),n+=1;continue}if(r===`)`){t.push({type:`rparen`}),n+=1;continue}let i=/^[A-Za-z_][A-Za-z0-9_.-]*/.exec(e.slice(n));if(!i)return null;t.push({type:`identifier`,value:i[0]}),n+=i[0].length}return t}function Tu(e){let t=wu(e);if(!t||t.length===0)return null;let n=0,r=e=>{if(e>64)return null;let r=t[n];if(!r)return null;if(r.type===`identifier`)return n+=1,{type:`identifier`,name:r.value};if(r.type===`lparen`){n+=1;let r=o(e+1),i=t[n];return!r||!i||i.type!==`rparen`?null:(n+=1,r)}return null},i=e=>{let i=0;for(;t[n]?.type===`not`;)if(n+=1,i+=1,i>64)return null;let a=r(e);if(!a)return null;for(;i>0;)a={type:`not`,node:a},--i;return a},a=e=>{let r=i(e);if(!r)return null;for(;t[n]?.type===`and`;){n+=1;let t=i(e);if(!t)return null;r={type:`and`,left:r,right:t}}return r},o=e=>{let r=a(e);if(!r)return null;for(;t[n]?.type===`or`;){n+=1;let t=a(e);if(!t)return null;r={type:`or`,left:r,right:t}}return r},s=o(0);return!s||n!==t.length?null:s}function Eu(e){let t=Cu(e.key);if(!t)return null;if(e.when!==void 0){let n=Tu(e.when);return n?{command:e.command,shortcut:t,whenAst:n}:null}return{command:e.command,shortcut:t}}function Du(e){let t=[];for(let n of e){let e=Eu(n);e&&t.push(e)}return t.slice(-256)}var Ou=Du(xu);function ku(e,t){return Ra(t).pipe(ro,io(e))}function Au(e){return{issues:e.issues,providers:e.providers,settings:e.settings}}var ju=[],Mu=[],Nu=e=>e?.availableEditors??ju,Pu=e=>e?.keybindings??Ou,Fu=e=>e?.keybindingsConfigPath??null,Iu=e=>e?.observability??null,Lu=e=>e?.providers??Mu,Ru=e=>e?.settings??Nr,zu=ku(`server-welcome`,null),Bu=ku(`server-config`,null),Vu=ku(`server-config-updated`,null),Hu=ku(`server-providers-updated`,null);function Uu(){return Z.get(Bu)}function Wu(){return Z.get(Vu)}function Gu(e){$u(e),ed({providers:e.providers}),td(Au(e),`snapshot`)}function Ku(e){switch(e.type){case`snapshot`:Gu(e.config);return;case`keybindingsUpdated`:{let t=Uu();if(!t)return;let n={...t,keybindings:e.payload.keybindings,issues:e.payload.issues};$u(n),td(Au(n),e.type);return}case`providerStatuses`:qu(e.payload);return;case`settingsUpdated`:Ju(e.payload.settings);return}}function qu(e){let t=Uu();if(ed(e),!t)return;let n={...t,providers:e.providers};$u(n),td(Au(n),`providerStatuses`)}function Ju(e){let t=Uu();if(!t)return;let n={...t,settings:e};$u(n),td(Au(n),`settingsUpdated`)}function Yu(e){Z.set(zu,e)}function Xu(e){let t=!1,n=[e.subscribeLifecycle(e=>{e.type===`welcome`&&Yu(e.payload)}),e.subscribeConfig(e=>{Ku(e)})];return Uu()===null&&e.getConfig().then(e=>{t||Uu()!==null||Gu(e)}).catch(()=>void 0),()=>{t=!0;for(let e of n)e()}}function Zu(){Z.set(zu,null),Z.set(Bu,null),Z.set(Vu,null),Z.set(Hu,null),Qu=1}var Qu=1;function $u(e){Z.set(Bu,e)}function ed(e){Z.set(Hu,e)}function td(e,t){Z.set(Vu,{id:Qu++,payload:e,source:t})}var nd=[/\bSocketCloseError\b/i,/\bSocketOpenError\b/i,/Unable to connect to the Ryco server WebSocket\./i,/\bping timeout\b/i];function rd(e){if(typeof e!=`string`)return!1;let t=e.trim();return t.length!==0&&nd.some(e=>e.test(t))}function id(e){return rd(e)?null:e??null}var ad=En(250),od=()=>void 0,sd=/^Thread\s.+\swas not found$/u;function cd(e){return e instanceof Error&&e.message.trim().length>0?e.message:String(e)}function ld(e){return rd(e)||sd.test(e.trim())||e.includes(`reconnect to resynchronize`)}function ud(e){return e.includes(`SchemaError(Expected array`)&&e.includes(`"_tag":"Done"`)&&e.includes(`~effect/Cause/Done`)}var dd=class{url;socket;observability;lifecycleHandlers;disposed=!1;hasReportedTransportDisconnect=!1;intentionalCloseDepth=0;reconnectChain=Promise.resolve();nextSessionId=0;activeSessionId=0;session;lastHeartbeatPongAt=0;makeClient;streamRequestStartListeners=new Set;constructor(e,t,n,r){this.url=e,this.socket=t.socket,this.observability=t.observability,this.makeClient=n,this.lifecycleHandlers=r,this.session=this.createSession()}async request(e,t){if(this.disposed)throw Error(`Transport disposed`);let n=this.session,r=await n.clientPromise;return await n.runtime.runPromise(Pt(()=>e(r)))}async requestStream(e,t){if(this.disposed)throw Error(`Transport disposed`);let n=this.session,r=await n.clientPromise;await n.runtime.runPromise(Ie(e(r),e=>x(()=>{try{t(e)}catch{}})))}subscribe(e,t,n){if(this.disposed)return()=>void 0;let r=!0,i=!1,a=Or(or(n?.retryDelay??ad)),o=od;return(async()=>{for(;;){if(!r||this.disposed)return;let s=this.session;try{let a=this.runStreamOnSession(s,e,t,{...n?.tag===void 0?{}:{tag:n.tag},...n?.onError===void 0?{}:{onError:n.onError},...i?{onStarted:()=>{try{n?.onResubscribe?.()}catch{}}}:{}},()=>r,()=>{this.hasReportedTransportDisconnect=!1,i=!0});o=a.cancel,await a.completed,o=od}catch(e){if(o=od,!r||this.disposed)return;if(s!==this.session)continue;let t=cd(e);if(ud(t))return;if(!ld(t)){try{n?.onError?.()}catch{}n?.onError?console.warn(`WebSocket RPC subscription failed`):console.warn(`WebSocket RPC subscription failed`,{error:t});return}this.hasReportedTransportDisconnect||console.warn(`WebSocket RPC subscription disconnected`,{error:t}),this.hasReportedTransportDisconnect=!0,await hd(a)}}})(),()=>{r=!1,o()}}async reconnect(){if(this.disposed)throw Error(`Transport disposed`);let e=this.reconnectChain.then(async()=>{if(this.disposed)throw Error(`Transport disposed`);au(),this.lastHeartbeatPongAt=0;let e=this.session;this.session=this.createSession(),await this.closeSession(e)});this.reconnectChain=e.catch(()=>void 0),await e}isHeartbeatFresh(e=15e3){return this.lastHeartbeatPongAt>0&&Date.now()-this.lastHeartbeatPongAt<=e}async dispose(){this.disposed||(this.disposed=!0,await this.closeSession(this.session))}closeSession(e){return this.intentionalCloseDepth+=1,e.runtime.runPromise(st(e.clientScope,xe)).finally(()=>{--this.intentionalCloseDepth,e.runtime.dispose()})}createSession(){let e=this.nextSessionId+1;this.nextSessionId=e,this.activeSessionId=e;let t=Ai(ln(yu(this.url,this.socket,{...this.lifecycleHandlers,isActive:()=>!this.disposed&&this.activeSessionId===e,isCloseIntentional:()=>this.disposed||this.intentionalCloseDepth>0||this.lifecycleHandlers?.isCloseIntentional?.()===!0,onHeartbeatPong:()=>{this.lastHeartbeatPongAt=Date.now(),this.lifecycleHandlers?.onHeartbeatPong?.()},onRequestStart:e=>{if(this.lifecycleHandlers?.onRequestStart?.(e),e.stream)for(let t of this.streamRequestStartListeners)t(e)}}),this.observability.tracingLayer)),n=t.runSync(te());return{runtime:t,clientScope:n,clientPromise:t.runPromise(Qe(n)(this.makeClient()))}}runStreamOnSession(e,t,n,r,i,a){let o,s,c=new Promise((e,t)=>{o=e,s=t}),l=null;return r.onStarted&&(l=e=>{!i()||!e.stream||(r.tag===void 0||e.tag===r.tag)&&(r.onStarted?.(),l&&=(this.streamRequestStartListeners.delete(l),null))},this.streamRequestStartListeners.add(l)),{cancel:e.runtime.runCallback(en(()=>e.clientPromise).pipe(T(e=>Ie(t(e),e=>x(()=>{if(i()){a(),r.tag&&this.observability.recordPerformance(`web.ws.stream.${r.tag}`,e);try{n(e)}catch{try{r.onError?.()}catch{}}}})))),{onExit:e=>{if(l&&=(this.streamRequestStartListeners.delete(l),null),Mt(e)){o();return}s(Zn(e.cause))}}),completed:c}}},fd=class extends dd{constructor(e,t,n){super(e,t,()=>lu,n)}},pd=class extends dd{constructor(e,t,n){super(e,t,()=>uu,{...n,preserveSocketPath:!0,recordConnectionState:!1})}},md=class extends dd{constructor(e,t,n){super(e,t,()=>du,n)}};function hd(e){return new Promise(t=>{setTimeout(()=>t(),e)})}function gd(e,t){return{dispose:async()=>{await Promise.all([e.dispose(),t?.dispose()])},reconnect:async()=>{vl(),await Promise.all([e.reconnect(),t?.reconnect()])},isHeartbeatFresh:()=>e.isHeartbeatFresh(),...t?{device:t}:{},terminal:{open:t=>e.request(e=>e[A.terminalOpen](t)),write:t=>e.request(e=>e[A.terminalWrite](t)),resize:t=>e.request(e=>e[A.terminalResize](t)),clear:t=>e.request(e=>e[A.terminalClear](t)),restart:t=>e.request(e=>e[A.terminalRestart](t)),close:t=>e.request(e=>e[A.terminalClose](t)),onEvent:(t,n)=>e.subscribe(e=>e[A.subscribeTerminalEvents]({}),t,{...n,tag:A.subscribeTerminalEvents})},projects:{listEntries:t=>e.request(e=>e[A.projectsListEntries](t)),readFile:t=>e.request(e=>e[A.projectsReadFile](t)),readFileBinary:t=>e.request(e=>e[A.projectsReadFileBinary](t)),searchEntries:t=>e.request(e=>e[A.projectsSearchEntries](t)),writeFile:t=>e.request(e=>e[A.projectsWriteFile](t)),stageFileReference:t=>e.request(e=>e[A.projectsStageFileReference](t)),initializeGit:t=>e.request(e=>e[A.projectsInitializeGit](t))},filesystem:{browse:t=>e.request(e=>e[A.filesystemBrowse](t))},sourceControl:{lookupRepository:t=>e.request(e=>e[A.sourceControlLookupRepository](t)),searchRepositories:t=>e.request(e=>e[A.sourceControlSearchRepositories](t)),cloneRepository:t=>e.request(e=>e[A.sourceControlCloneRepository](t)),publishRepository:t=>e.request(e=>e[A.sourceControlPublishRepository](t)),listIssues:t=>e.request(e=>e[A.sourceControlListIssues](t)),getIssue:t=>e.request(e=>e[A.sourceControlGetIssue](t)),searchIssues:t=>e.request(e=>e[A.sourceControlSearchIssues](t)),listChangeRequests:t=>e.request(e=>e[A.sourceControlListChangeRequests](t)),searchChangeRequests:t=>e.request(e=>e[A.sourceControlSearchChangeRequests](t)),getChangeRequestDetail:t=>e.request(e=>e[A.sourceControlGetChangeRequestDetail](t)),getChangeRequestDiff:t=>e.request(e=>e[A.sourceControlGetChangeRequestDiff](t)),mergeChangeRequest:t=>e.request(e=>e[A.sourceControlMergeChangeRequest](t)),createIssue:t=>e.request(e=>e[A.sourceControlCreateIssue](t)),addIssueComment:t=>e.request(e=>e[A.sourceControlAddIssueComment](t)),addIssueCommentReaction:t=>e.request(e=>e[A.sourceControlAddIssueCommentReaction](t)),addChangeRequestComment:t=>e.request(e=>e[A.sourceControlAddChangeRequestComment](t)),addChangeRequestCommentReaction:t=>e.request(e=>e[A.sourceControlAddChangeRequestCommentReaction](t)),listIssueLabels:t=>e.request(e=>e[A.sourceControlListIssueLabels](t)),listIssueAssignees:t=>e.request(e=>e[A.sourceControlListIssueAssignees](t)),listWorkflowRuns:t=>e.request(e=>e[A.sourceControlListWorkflowRuns](t)),getWorkflowRunJobs:t=>e.request(e=>e[A.sourceControlGetWorkflowRunJobs](t)),getWorkflowJobLog:t=>e.request(e=>e[A.sourceControlGetWorkflowJobLog](t)),rerunWorkflow:t=>e.request(e=>e[A.sourceControlRerunWorkflow](t))},textGeneration:{generateIssueContent:t=>e.request(e=>e[A.textGenerationGenerateIssueContent](t)),generateBranchName:t=>e.request(e=>e[A.textGenerationGenerateBranchName](t))},atlassian:{listConnections:()=>e.request(e=>e[A.atlassianListConnections]({})),startOAuth:t=>e.request(e=>e[A.atlassianStartOAuth](t)),disconnect:t=>e.request(e=>e[A.atlassianDisconnect](t)),refresh:t=>e.request(e=>e[A.atlassianRefresh](t)),listResources:t=>e.request(e=>e[A.atlassianListResources](t)),getProjectLink:t=>e.request(e=>e[A.atlassianGetProjectLink](t)),saveProjectLink:t=>e.request(e=>e[A.atlassianSaveProjectLink](t)),saveManualBitbucketToken:t=>e.request(e=>e[A.atlassianSaveManualBitbucketToken](t)),saveManualJiraToken:t=>e.request(e=>e[A.atlassianSaveManualJiraToken](t))},workItems:{listProjects:t=>e.request(e=>e[A.workItemsListProjects](t)),list:t=>e.request(e=>e[A.workItemsList](t)),search:t=>e.request(e=>e[A.workItemsSearch](t)),get:t=>e.request(e=>e[A.workItemsGet](t)),addComment:t=>e.request(e=>e[A.workItemsAddComment](t)),editComment:t=>e.request(e=>e[A.workItemsEditComment](t)),update:t=>e.request(e=>e[A.workItemsUpdate](t)),listTransitions:t=>e.request(e=>e[A.workItemsListTransitions](t)),transition:t=>e.request(e=>e[A.workItemsTransition](t))},shell:{openInEditor:t=>e.request(e=>e[A.shellOpenInEditor](t))},vcs:{pull:t=>e.request(e=>e[A.vcsPull](t)),refreshStatus:t=>e.request(e=>e[A.vcsRefreshStatus](t)),onStatus:(t,n,r)=>{let a=null;return e.subscribe(e=>e[A.subscribeVcsStatus](t),e=>{a=i(a,e),n(a)},{...r,tag:A.subscribeVcsStatus})},listRefs:t=>e.request(e=>e[A.vcsListRefs](t)),createWorktree:t=>e.request(e=>e[A.vcsCreateWorktree](t)),removeWorktree:t=>e.request(e=>e[A.vcsRemoveWorktree](t)),createRef:t=>e.request(e=>e[A.vcsCreateRef](t)),switchRef:t=>e.request(e=>e[A.vcsSwitchRef](t)),init:t=>e.request(e=>e[A.vcsInit](t))},git:{runStackedAction:async(t,n)=>{let r=null;if(await e.requestStream(e=>e[A.gitRunStackedAction](t),e=>{n?.onProgress?.(e),e.kind===`action_finished`&&(r=e.result)}),r)return r;throw Error(`Git action stream completed without a final result.`)},resolvePullRequest:t=>e.request(e=>e[A.gitResolvePullRequest](t)),preparePullRequestThread:t=>e.request(e=>e[A.gitPreparePullRequestThread](t)),createWorktreeForProject:t=>e.request(e=>e[A.gitCreateWorktreeForProject](t)),findWorktreeForOrigin:t=>e.request(e=>e[A.gitFindWorktreeForOrigin](t)),archiveWorktree:t=>e.request(e=>e[A.gitArchiveWorktree](t)),restoreWorktree:t=>e.request(e=>e[A.gitRestoreWorktree](t)),deleteWorktree:t=>e.request(e=>e[A.gitDeleteWorktree](t))},worktrees:{setManualPosition:t=>e.request(e=>e[A.worktreesSetManualPosition](t))},threads:{setManualBucket:t=>e.request(e=>e[A.threadsSetManualBucket](t)),setManualPosition:t=>e.request(e=>e[A.threadsSetManualPosition](t)),searchMessages:t=>e.request(e=>e[A.searchThreadMessages](t))},server:{getConfig:()=>e.request(e=>e[A.serverGetConfig]({})),getAdvertisedEndpoints:()=>e.request(e=>e[A.serverGetAdvertisedEndpoints]({})),getDiagnosticsMetrics:()=>e.request(e=>e[A.serverGetDiagnosticsMetrics]({})),getStatistics:()=>e.request(e=>e[A.serverGetStatistics]({})),getUsageSummary:t=>e.request(e=>e[A.serverGetUsageSummary](t)),refreshProviders:t=>e.request(e=>e[A.serverRefreshProviders](t??{})),updateProvider:t=>e.request(e=>e[A.serverUpdateProvider](t)),upsertKeybinding:t=>e.request(e=>e[A.serverUpsertKeybinding](t)),getSettings:()=>e.request(e=>e[A.serverGetSettings]({})),updateSettings:t=>e.request(e=>e[A.serverUpdateSettings]({patch:t})),getDiagnosticsSnapshot:()=>e.request(e=>e[A.serverGetDiagnosticsSnapshot]({})),discoverSourceControl:()=>e.request(e=>e[A.serverDiscoverSourceControl]({})),listOpinionatedPlugins:()=>e.request(e=>e[A.serverListOpinionatedPlugins]({})),checkOpinionatedPlugins:t=>e.request(e=>e[A.serverCheckOpinionatedPlugins](t??{})),installOpinionatedPlugin:t=>e.request(e=>e[A.serverInstallOpinionatedPlugin](t)),subscribeConfig:(t,n)=>e.subscribe(e=>e[A.subscribeServerConfig]({}),t,{...n,tag:A.subscribeServerConfig}),subscribeLifecycle:(t,n)=>e.subscribe(e=>e[A.subscribeServerLifecycle]({}),t,{...n,tag:A.subscribeServerLifecycle}),subscribeAuthAccess:(t,n)=>e.subscribe(e=>e[A.subscribeAuthAccess]({}),t,{...n,tag:A.subscribeAuthAccess})},keybindings:{replaceCustom:t=>e.request(e=>e[A.keybindingsReplaceCustom](t))},mcp:{listWorkspaces:()=>e.request(e=>e[A.mcpListWorkspaces]({})),listServers:t=>e.request(e=>e[A.mcpListServers](t)),upsertServer:t=>e.request(e=>e[A.mcpUpsertServer](t)),setServerEnabled:t=>e.request(e=>e[A.mcpSetServerEnabled](t)),removeServer:t=>e.request(e=>e[A.mcpRemoveServer](t)),reloadServers:t=>e.request(e=>e[A.mcpReloadServers](t)),startOauthLogin:t=>e.request(e=>e[A.mcpStartOauthLogin](t))},orchestration:{dispatchCommand:t=>e.request(e=>e[C.dispatchCommand](t)),getTurnDiff:t=>e.request(e=>e[C.getTurnDiff](t)),getWorkflowScript:t=>e.request(e=>e[C.getWorkflowScript](t)),getTaskOutput:t=>e.request(e=>e[C.getTaskOutput](t)),stopBackgroundTask:t=>e.request(e=>e[C.stopBackgroundTask](t)),getFullThreadDiff:t=>e.request(e=>e[C.getFullThreadDiff](t)),searchThreadMessages:t=>e.request(e=>e[C.searchThreadMessages](t)),getThreadWindow:t=>e.request(e=>e[C.getThreadWindow](t)),getThreadHistoryPage:t=>e.request(e=>e[C.getThreadHistoryPage](t)),subscribeShell:(t,n)=>e.subscribe(e=>e[C.subscribeShell]({}),t,{...n,tag:C.subscribeShell}),subscribeThread:(t,n,r)=>e.subscribe(e=>e[C.subscribeThread](t),n,{...r,tag:C.subscribeThread}),subscribeThreadWindow:(t,n,r)=>e.subscribe(e=>e[C.subscribeThreadWindow](t),n,{...r,tag:C.subscribeThreadWindow})},threadPriority:{ensureCurrent:t=>e.request(e=>e[A.threadPriorityEnsureCurrent](t))},contextHandoff:{getInspectionSummary:t=>e.request(e=>e[De.getInspectionSummary](t)),listInspectionEntries:t=>e.request(e=>e[De.listInspectionEntries](t)),readRawPayloadChunk:t=>e.request(e=>e[De.readRawPayloadChunk](t)),readExportChunk:t=>e.request(e=>e[De.readExportChunk](t))},agentControl:{listProposals:t=>e.request(e=>e[O.listProposals](t)),getProposal:t=>e.request(e=>e[O.getProposal](t)),acceptProposal:t=>e.request(e=>e[O.acceptProposal](t)),rejectProposal:t=>e.request(e=>e[O.rejectProposal](t)),subscribeProposals:(t,n)=>e.subscribe(e=>e[O.subscribeProposals]({}),t,{...n,tag:O.subscribeProposals}),listIntegrations:()=>e.request(e=>e[O.listIntegrations]({})),createIntegration:t=>e.request(e=>e[O.createIntegration](t)),updateIntegration:t=>e.request(e=>e[O.updateIntegration](t)),resumeIntegrationPairing:t=>e.request(e=>e[O.resumeIntegrationPairing](t)),revokeIntegration:t=>e.request(e=>e[O.revokeIntegration](t)),deleteIntegration:t=>e.request(e=>e[O.deleteIntegration](t)),listMcpInstallations:()=>e.request(e=>e[O.listMcpInstallations]({})),connectMcpInstallation:t=>e.request(e=>e[O.connectMcpInstallation](t)),repairMcpInstallation:t=>e.request(e=>e[O.repairMcpInstallation](t)),disconnectMcpInstallation:t=>e.request(e=>e[O.disconnectMcpInstallation](t))}}}var _d=class extends On(`BootstrapHttpError`){},vd=e=>Rn(e,`BootstrapHttpError`),yd=2e3,bd=100,xd=15e3,Sd=500,Cd=new Set([502,503,504]),wd=new Set([`Invalid bootstrap credential.`,`Unknown bootstrap credential.`]);function Td(e){let t=null,n=null,r=e.now??Date.now,i=e.sleep??(e=>new Promise(t=>{setTimeout(()=>t(),e)})),a=e.sessionCredentials.mode===`cookie`?{credentials:`include`}:{},o=async e=>{let t=r();for(;;)try{return await e()}catch(e){if(!(vd(e)?Cd.has(e.status):e instanceof TypeError||e?.name===`AbortError`)||r()-t>=xd)throw e;await i(Sd)}},s=async(e,t)=>await e.text()||t,c=async()=>o(async()=>{let t=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(`/api/auth/session`),a);if(!t.ok)throw new _d({message:`Failed to load server auth session state (${t.status}).`,status:t.status});return await t.json()}),l=async()=>{let t=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(`/api/auth/ws-token`),{...a,method:`POST`});if(!t.ok)throw new _d({message:`Failed to issue websocket token (${t.status}).`,status:t.status});return await t.json()},u=async t=>o(async()=>{let n=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(`/api/auth/bootstrap`),{...a,body:JSON.stringify({credential:t}),headers:{"content-type":`application/json`},method:`POST`});if(!n.ok){let e=(await n.text()).trim();try{let t=JSON.parse(e);typeof t.error==`string`&&t.error.trim()&&(e=t.error.trim())}catch{}throw n.status===401&&wd.has(e)&&(e=`Invalid pairing token. Check the token and try again.`),new _d({message:e||`Failed to bootstrap auth session (${n.status}).`,status:n.status})}return await n.json()}),d=async()=>{let e=r();for(;;){let t=await c();if(t.authenticated)return t;if(r()-e>=yd)throw Error(`Timed out waiting for authenticated session after bootstrap.`);await i(bd)}},f=async()=>{let t=e.readBootstrapCredential(),n=await c();if(n.authenticated)return{status:`authenticated`};if(!t)return{status:`requires-auth`,auth:n.auth};try{return await u(t),await d(),{status:`authenticated`}}catch(e){return{status:`requires-auth`,auth:n.auth,errorMessage:e instanceof Error?e.message:`Authentication failed.`}}},p=async(t,n)=>{let r=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(t),{...a,...n===void 0?{}:{body:JSON.stringify(n),headers:{"content-type":`application/json`}},method:`POST`});if(!r.ok)throw Error(await s(r,`Request failed (${r.status}).`));return await r.json()},m=async(t,n)=>{let r=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(t),a);if(!r.ok)throw Error(await s(r,n));return await r.json()},h=async(t,n)=>{let r=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(t),a);if(r.status===404)return null;if(!r.ok)throw Error(await s(r,n));return await r.json()};return{fetchSessionState:c,issuePrimaryWebSocketToken:l,fetchHubStatus:()=>m(`/api/hub/status`,`Unable to read Hub status.`),fetchHubIdentity:()=>m(`/api/hub/identity`,`Unable to read Hub identity state.`),fetchHubEnrollment:()=>h(`/api/hub/enrollment`,`Unable to read the pending Hub enrollment.`),startHubEnrollment:()=>p(`/api/hub/enrollment`),cancelHubEnrollment:()=>p(`/api/hub/enrollment/cancel`),resumeHubConnector:()=>p(`/api/hub/resume`),leaveHub:()=>p(`/api/hub/leave`),fetchNodeE2eeClients:()=>m(`/api/hub/e2ee/clients`,`Unable to read client authorization records.`),applyNodeE2eeAuthorization:e=>p(`/api/hub/e2ee/clients/authorization`,e),createNodeE2eeClientApprovalQr:e=>p(`/api/hub/e2ee/clients/approval-qr`,e),setNodeE2eePairingWindow:e=>p(`/api/hub/e2ee/clients/pairing-window`,e),clearNodeE2eeRefusals:()=>p(`/api/hub/e2ee/clients/refusals/clear`),fetchNodeE2eeSessions:()=>m(`/api/hub/e2ee/sessions`,`Unable to read E2EE sessions.`),fetchNodeE2eePolicy:()=>m(`/api/hub/e2ee/policy`,`Unable to read the node admission policy.`),previewNodeE2eePolicy:e=>p(`/api/hub/e2ee/policy/preview`,e),applyNodeE2eePolicy:e=>p(`/api/hub/e2ee/policy`,e),recoverNodeE2eePolicyGeneration:()=>p(`/api/hub/e2ee/policy/recover`),fetchNodeE2eePrekey:()=>m(`/api/hub/e2ee/prekey`,`Unable to read the agreement prekey.`),rotateNodeE2eePrekey:()=>p(`/api/hub/e2ee/prekey/rotate`),fetchNodeE2eeContinuity:()=>m(`/api/hub/e2ee/continuity`,`Unable to read continuity state.`),applyNodeE2eeContinuity:e=>p(`/api/hub/e2ee/continuity`,e),fetchNodeE2eeFallback:()=>m(`/api/hub/e2ee/fallback`,`Unable to read fallback diagnostics.`),resetNodeE2eeFallback:()=>p(`/api/hub/e2ee/fallback/reset`),retryTransientBootstrap:o,takePairingCredential:()=>e.pairingCredentialSource.take(),submitServerAuthCredential:async e=>{let r=e.trim();if(!r)throw Error(`Enter a pairing token to continue.`);n=null,await u(r),t=null},createServerPairingCredential:e=>p(`/api/auth/pairing-token`,e?.trim()?{label:e.trim()}:{}),listServerPairingLinks:()=>m(`/api/auth/pairing-links`,`Failed to load pairing links.`),revokeServerPairingLink:async e=>void await p(`/api/auth/pairing-links/revoke`,{id:e}),listServerClientSessions:()=>m(`/api/auth/clients`,`Failed to load paired clients.`),revokeServerClientSession:async e=>void await p(`/api/auth/clients/revoke`,{sessionId:e}),revokeOtherServerClientSessions:async()=>(await p(`/api/auth/clients/revoke-others`)).revokedCount??0,resolveInitialServerAuthGateState:()=>{if(n?.status===`authenticated`)return Promise.resolve(n);if(t)return t;let e=f();return t=e,e.then(e=>(e.status===`authenticated`&&(n=e),e)).finally(()=>{t===e&&(t=null)})},resetForTests:()=>{t=null,n=null}}}var Ed=`/.well-known/ryco/environment`;function Dd(){let e,t=new Set,n=()=>t.forEach(e=>e());return e={descriptor:null,setDescriptor:t=>{e={...e,descriptor:t},n()},reset:()=>{e={...e,descriptor:null},n()}},{getState:()=>e,subscribe:e=>(t.add(e),()=>t.delete(e))}}function Od(e){let t=Dd(),n=null,r=()=>t.getState().descriptor,i=e=>t.getState().setDescriptor(e),a=()=>{let t=e.endpoint.readPrimaryTarget(),n=r();return!t||!n?null:Ul(Bl({id:n.environmentId,label:n.label,source:t.source,target:t.target}),n)},o=async()=>e.retryTransientBootstrap(async()=>{let t=await e.httpClient.fetch(e.endpoint.resolveHttpUrl(Ed));if(!t.ok)throw e.createBootstrapHttpError({message:`Failed to load server environment descriptor (${t.status}).`,status:t.status});let n=await t.json();return i(n),n});return{store:t,readPrimaryEnvironmentDescriptor:r,writePrimaryEnvironmentDescriptor:i,getPrimaryKnownEnvironment:a,resolveInitialPrimaryEnvironmentDescriptor:()=>{let e=r();if(e)return Promise.resolve(e);if(n)return n;let t=o();return n=t,t.finally(()=>{n===t&&(n=null)})},resetForTests:()=>{n=null,t.getState().reset()}}}var kd=e(n(),1),Ad=new Set([`127.0.0.1`,`::1`,`localhost`]);function jd(){return window.desktopBridge?.getLocalEnvironmentBootstrap()??null}function Md(e){return new URL(e,window.location.origin).toString()}function Nd(e){return e.trim().toLowerCase().replace(/^\[(.*)\]$/,`$1`)}function Pd(e){return Ad.has(Nd(e))}function Fd(e){return e}function Id(){return null}function Ld(){let e=Md(window.location.origin),t=new URL(e);if(t.protocol===`http:`)t.protocol=`ws:`;else if(t.protocol===`https:`)t.protocol=`wss:`;else throw Error(`Unsupported HTTP base URL protocol: ${t.protocol}`);return{source:`window-origin`,target:{httpBaseUrl:e,wsBaseUrl:t.toString()}}}function Rd(){let e=jd();if(!e||!e.httpBaseUrl&&!e.wsBaseUrl)return null;if(!e.httpBaseUrl||!e.wsBaseUrl)throw Error(`Desktop bootstrap must provide both httpBaseUrl and wsBaseUrl for the local environment.`);return{source:`desktop-managed`,target:{httpBaseUrl:Md(e.httpBaseUrl),wsBaseUrl:Md(e.wsBaseUrl)}}}function zd(e,t){if(s())throw Error(`Node HTTP routes are unavailable in hosted Hub mode.`);let n=Bd();if(!n)throw Error(`Unable to resolve the primary environment HTTP base URL.`);let r=new URL(Fd(n.target.httpBaseUrl));return r.pathname=e,t&&(r.search=new URLSearchParams(t).toString()),r.toString()}function Bd(){if(s()){let e=Md(window.location.origin),t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,{source:`hub-hosted`,target:{httpBaseUrl:e,wsBaseUrl:t.toString()}}}return Rd()??Id()??Ld()}var Vd={origin:()=>window.location.origin,readPrimaryTarget:()=>Bd(),resolveHttpUrl:(e,t)=>t?zd(e,{...t}):zd(e),resolveWsUrl:e=>new URL(e,window.location.origin).toString()};function Hd(e){return e}var Ud={fetch:(e,t)=>t===void 0?globalThis.fetch(e):globalThis.fetch(e,t)};function Wd(){return Yr(new URL(window.location.href))}function Gd(){let e=new URL(window.location.href),t=Jr(e);t.toString()!==e.toString()&&window.history.replaceState({},document.title,t.toString())}function Kd(){let e=Wd();return e&&Gd(),e}var qd={take:async()=>Kd()};function Jd(){let e=null;return{mode:`cookie`,readCsrfToken:()=>e,writeCsrfToken:t=>{e=t}}}var Yd=Jd(),$=Td({endpoint:Vd,httpClient:Ud,pairingCredentialSource:qd,readBootstrapCredential:()=>{let e=window.desktopBridge?.getLocalEnvironmentBootstrap();return typeof e?.bootstrapToken==`string`&&e.bootstrapToken.length>0?e.bootstrapToken:null},sessionCredentials:Yd}),Xd=$.fetchSessionState,Zd=$.issuePrimaryWebSocketToken,Qd=$.retryTransientBootstrap,$d=$.createServerPairingCredential;$.listServerPairingLinks;var ef=$.revokeServerPairingLink;$.listServerClientSessions;var tf=$.revokeServerClientSession,nf=$.revokeOtherServerClientSessions,rf=$.fetchHubStatus,af=$.fetchHubIdentity,of=$.fetchHubEnrollment,sf=$.startHubEnrollment,cf=$.cancelHubEnrollment,lf=$.resumeHubConnector,uf=$.leaveHub,df=$.fetchNodeE2eeClients,ff=$.applyNodeE2eeAuthorization,pf=$.createNodeE2eeClientApprovalQr,mf=$.setNodeE2eePairingWindow,hf=$.clearNodeE2eeRefusals,gf=$.fetchNodeE2eeSessions,_f=$.fetchNodeE2eePolicy,vf=$.previewNodeE2eePolicy,yf=$.applyNodeE2eePolicy,bf=$.recoverNodeE2eePolicyGeneration,xf=$.fetchNodeE2eePrekey,Sf=$.rotateNodeE2eePrekey,Cf=$.fetchNodeE2eeContinuity,wf=$.applyNodeE2eeContinuity,Tf=$.fetchNodeE2eeFallback,Ef=$.resetNodeE2eeFallback,Df=$.resolveInitialServerAuthGateState;$.resetForTests;async function Of(e){await $.submitServerAuthCredential(e),Gd()}var kf=Od({endpoint:Vd,httpClient:Ud,retryTransientBootstrap:Qd,createBootstrapHttpError:e=>new _d(e)}),Af=kf.readPrimaryEnvironmentDescriptor,jf=kf.writePrimaryEnvironmentDescriptor,Mf=kf.getPrimaryKnownEnvironment,Nf=kf.resolveInitialPrimaryEnvironmentDescriptor;kf.resetForTests,kf.resetForTests,kf.resetForTests;function Pf(){return(0,kd.useSyncExternalStore)(kf.store.subscribe,If,Ff)}function Ff(){return null}function If(){return kf.store.getState().descriptor?.environmentId??null}function Lf(){return(0,kd.useSyncExternalStore)(kf.store.subscribe,zf,Rf)}function Rf(){return null}function zf(){return kf.store.getState().descriptor}var Bf=t({ensurePrimaryEnvironmentReady:()=>Nf,resolveInitialServerAuthGateState:()=>Df});export{Uu as $,Ra as $t,nf as A,_l as At,Ud as B,Lo as Bt,Xd as C,Fl as Ct,bf as D,ll as Dt,vf as E,cl as Et,sf as F,jo as Ft,gd as G,vo as Gt,Vd as H,Fo as Ht,Of as I,Mo as It,fd as J,xo as Jt,pd as K,So as Kt,Yd as L,No as Lt,ef as M,el as Mt,Sf as N,Z as Nt,Ef as O,dl as Ot,mf as P,zo as Pt,Zu as Q,ro as Qt,Wd as R,Io as Rt,gf as S,Rl as St,uf as T,Cl as Tt,Pd as U,wo as Ut,Hd as V,Po as Vt,zd as W,To as Wt,qu as X,no as Xt,id as Y,_o as Yt,Ju as Z,ho as Zt,df as _,Yl as _t,Pf as a,Ai as an,Lu as at,_f as b,Vl as bt,wf as c,wi as cn,Vu as ct,hf as d,xu as dt,so as en,Wu as et,pf as f,bu as ft,rf as g,Xl as gt,af as h,Jl as ht,Lf as i,ua as in,Iu as it,tf as j,rl as jt,lf as k,yl as kt,yf as l,Ei as ln,Xu as lt,of as m,ql as mt,Mf as n,co as nn,Pu as nt,jf as o,Oi as on,Ru as ot,$d as p,$l as pt,md as q,Co as qt,Af as r,io as rn,Fu as rt,ff as s,yi as sn,Bu as st,Bf as t,Oa as tn,Nu as tt,cf as u,zu as ut,Cf as v,Bl as vt,Zd as w,Dl as wt,xf as x,zl as xt,Tf as y,Hl as yt,Gd as z,Ro as zt};