@openchambery/web 1.19.5-beta.4 → 1.19.5-beta.6

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 (136) hide show
  1. package/dist/assets/{AgentAvatar-CsiLLu1E.js → AgentAvatar-DMpOrMIQ.js} +1 -1
  2. package/dist/assets/{AssistantView-DHpw3EFD.js → AssistantView-DBgh3s75.js} +1 -1
  3. package/dist/assets/{ChatContainer-CbvnB-ML.js → ChatContainer-BJ6ebaAT.js} +14 -14
  4. package/dist/assets/{ContextPanel-C4zeA-ZT.js → ContextPanel-po680C9P.js} +5 -5
  5. package/dist/assets/{DiagramView-gXuo5jLI.js → DiagramView-BBkBaFAe.js} +1 -1
  6. package/dist/assets/MarkdownRendererImpl-DWlLf-0S.js +7 -0
  7. package/dist/assets/{MobileDetailNavigation-B4WQbkQ8.js → MobileDetailNavigation-B7nzo5u7.js} +1 -1
  8. package/dist/assets/{MobileShareBridge-CgCxx-E_.js → MobileShareBridge-D-M4tmiY.js} +1 -1
  9. package/dist/assets/{MobileSurface-B9yxZB_q.js → MobileSurface-BURwgt4Y.js} +1 -1
  10. package/dist/assets/{MultiRunWindow-uyRlJwQl.js → MultiRunWindow-BO-NoFb0.js} +1 -1
  11. package/dist/assets/{OnboardingScreen-Bv4ZepJD.js → OnboardingScreen-DoR_GB8b.js} +1 -1
  12. package/dist/assets/SettingsView-hUwFkZcV.js +25 -0
  13. package/dist/assets/{SettingsWindow-B0MQVDyg.js → SettingsWindow-B5aF2Rjj.js} +1 -1
  14. package/dist/assets/{TerminalView-Dad5AXKb.js → TerminalView-CLC5f_AT.js} +1 -1
  15. package/dist/assets/{ToolOutputDialog-CyBdnNEj.js → ToolOutputDialog-CsNL8E50.js} +1 -1
  16. package/dist/assets/{angular-html-BXZQHcPZ.js → angular-html-CtgxlIZT.js} +1 -1
  17. package/dist/assets/{angular-ts-D8x7dmpg.js → angular-ts-DrvebXRV.js} +1 -1
  18. package/dist/assets/{apl-ugbjmfzm.js → apl-ct3-l_ov.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-C5H1Wh0S.js → appThemeRegistry-CpjOuVRA.js} +2 -2
  20. package/dist/assets/{astro-BrfzL78y.js → astro-9KCX_vNx.js} +1 -1
  21. package/dist/assets/{blade-D4cYRUdW.js → blade-DHzjLhcB.js} +1 -1
  22. package/dist/assets/{c-CMzMVpWc.js → c-CEfQ88z4.js} +1 -1
  23. package/dist/assets/{clipboard-CdFyntbr.js → clipboard-CadKjjVT.js} +1 -1
  24. package/dist/assets/{cobol-DthQPUuS.js → cobol-ffQsCDPB.js} +1 -1
  25. package/dist/assets/{coffee-8Pqo9WtM.js → coffee-DtRj345i.js} +1 -1
  26. package/dist/assets/{cpp-D18L7odM.js → cpp-NWnna9VM.js} +1 -1
  27. package/dist/assets/{crystal-9GeLf5Ic.js → crystal-CnnqEH_e.js} +1 -1
  28. package/dist/assets/{css-CCmJvSl6.js → css-BRwHOW3t.js} +1 -1
  29. package/dist/assets/{dialog-DlS23C-q.js → dialog-Dz2MBeLn.js} +1 -1
  30. package/dist/assets/{edge-BNU68miL.js → edge-BmL4YNvW.js} +1 -1
  31. package/dist/assets/{elixir-Clm-oycI.js → elixir-m9Mcv-AW.js} +1 -1
  32. package/dist/assets/{elm-DyuJMdF4.js → elm-Dazsuz2c.js} +1 -1
  33. package/dist/assets/{erb-BGQIoPeF.js → erb-CJ1X7LGG.js} +1 -1
  34. package/dist/assets/{es-B2ybWxIT.js → es-BZlHrH2p.js} +1 -1
  35. package/dist/assets/{fr-CpdWiNYi.js → fr-Dkw9WDcW.js} +1 -1
  36. package/dist/assets/{git-rebase-ZHVbPCu8.js → git-rebase-DHqm8iFM.js} +1 -1
  37. package/dist/assets/{gitApi-CkfllTWP.js → gitApi-BKEocYap.js} +1 -1
  38. package/dist/assets/{glimmer-js-Dx29eTyZ.js → glimmer-js-529w2Uvl.js} +1 -1
  39. package/dist/assets/{glimmer-ts-7AFohuRx.js → glimmer-ts-B38MdnnB.js} +1 -1
  40. package/dist/assets/{glsl-Nbih-1pG.js → glsl-IFfKD25X.js} +1 -1
  41. package/dist/assets/{graphql-IOG_4fSc.js → graphql-m-L9qWWB.js} +1 -1
  42. package/dist/assets/{hack-DyZU34CD.js → hack-S2S7pq0v.js} +1 -1
  43. package/dist/assets/{haml-mwEldSxy.js → haml-BE8HBwbH.js} +1 -1
  44. package/dist/assets/{handlebars-BRbCg-TR.js → handlebars-DPMWj4Da.js} +1 -1
  45. package/dist/assets/{html-derivative-DpusPW9p.js → html-derivative-D0yehinc.js} +1 -1
  46. package/dist/assets/{html-DH50wxss.js → html-gfIVmLgx.js} +1 -1
  47. package/dist/assets/{http-fM2Ft62a.js → http-Yj1uQSnx.js} +1 -1
  48. package/dist/assets/{hurl-C7ZRA11y.js → hurl-CiAC6gLf.js} +1 -1
  49. package/dist/assets/{insertionBoundaries-Dc9ZkPSR.js → insertionBoundaries-DFo32YAv.js} +1 -1
  50. package/dist/assets/{ja-r-qxubSE.js → ja-DW5lcaNV.js} +1 -1
  51. package/dist/assets/{java-CuLv1JzP.js → java-lPyr66Qw.js} +1 -1
  52. package/dist/assets/{javascript-e9R9mij1.js → javascript-BlmKDQ-I.js} +1 -1
  53. package/dist/assets/{jinja-BqL4dpCe.js → jinja-DrvjNn4y.js} +1 -1
  54. package/dist/assets/{jison-BU1E246U.js → jison-BZ-k3PlS.js} +1 -1
  55. package/dist/assets/{json-CWUAz4dE.js → json-CaQi8cq5.js} +1 -1
  56. package/dist/assets/{jsx-Tb9QFw4P.js → jsx-kfzB3oTi.js} +1 -1
  57. package/dist/assets/{julia-C6q7nYBJ.js → julia-Bup0jpIM.js} +1 -1
  58. package/dist/assets/{just-CLHVCPQG.js → just-XMsX5iKL.js} +1 -1
  59. package/dist/assets/{ko-DwsRLPip.js → ko-B9WorSEt.js} +1 -1
  60. package/dist/assets/{latex-DzR96v9w.js → latex-CHhOHp9u.js} +1 -1
  61. package/dist/assets/{liquid-UjsTutWK.js → liquid-C90FVKxw.js} +1 -1
  62. package/dist/assets/{lua-laWCoC7H.js → lua-BXPwTBAD.js} +1 -1
  63. package/dist/assets/{main-D6ME_BJZ.js → main-D4wVWO_U.js} +3 -3
  64. package/dist/assets/{main-DuW2me4r.js → main-auUhv1TT.js} +2 -2
  65. package/dist/assets/markdown-shiki.worker-woF2hOAN.js +349 -0
  66. package/dist/assets/{markdown-worker-DqO-GnVj.js → markdown-worker-C7TuaOUy.js} +3 -3
  67. package/dist/assets/{marko-Cw81uHQK.js → marko-oFkW-Ef7.js} +1 -1
  68. package/dist/assets/{mdc-5VRIrvpo.js → mdc-Dt17Fv3G.js} +1 -1
  69. package/dist/assets/{miniChat-BLk2pfbb.js → miniChat-DlGlimOU.js} +2 -2
  70. package/dist/assets/{mobile-4xN65TJf.js → mobile-DoDp1FaI.js} +2 -2
  71. package/dist/assets/{multirun-DA7zxT_S.js → multirun-DnOQK5NN.js} +1 -1
  72. package/dist/assets/{nginx-OjbRtDTh.js → nginx-LfNI-F2k.js} +1 -1
  73. package/dist/assets/{nim-BqzUQFfL.js → nim-so0j2_Ky.js} +1 -1
  74. package/dist/assets/{perl-Bba2cEgf.js → perl-DQcGQU9O.js} +1 -1
  75. package/dist/assets/{php-CkVgF6HF.js → php-Dae1IcCM.js} +1 -1
  76. package/dist/assets/{pl-Ch4izaEa.js → pl-CyKNdwrh.js} +1 -1
  77. package/dist/assets/{projectMeta-DvSyhAXz.js → projectMeta-TtX6Cnau.js} +1 -1
  78. package/dist/assets/{pt-BR-CtMhi2sl.js → pt-BR-Ch6qBc5C.js} +1 -1
  79. package/dist/assets/{pug-Dj44SzNY.js → pug-CaHd5xEa.js} +1 -1
  80. package/dist/assets/{qml-DETHcUPx.js → qml-lLqImktD.js} +1 -1
  81. package/dist/assets/{r-CrbPkwLJ.js → r-C2VuzPsf.js} +1 -1
  82. package/dist/assets/{radio-Box6xH5M.js → radio-Dy3YTF7A.js} +1 -1
  83. package/dist/assets/{razor-56IyEPA5.js → razor-DTpzsAil.js} +1 -1
  84. package/dist/assets/{regexp-BEMDgR1N.js → regexp-DJeMtopQ.js} +1 -1
  85. package/dist/assets/{renderElectronMiniChatApp-Dpk7o2RY.js → renderElectronMiniChatApp-k5i4uiZA.js} +2 -2
  86. package/dist/assets/{renderMobileApp-P5pJW5CN.js → renderMobileApp-Sip0-pt6.js} +4 -4
  87. package/dist/assets/{rst-C8BEzC8U.js → rst-c6kvN9mK.js} +1 -1
  88. package/dist/assets/{ruby-DWyeL44t.js → ruby-B68kNTjT.js} +1 -1
  89. package/dist/assets/{runtimeConfig-lhaApt62.js → runtimeConfig-B7qbkacz.js} +1 -1
  90. package/dist/assets/{runtimeEndpointReset-ClE1EzYZ.js → runtimeEndpointReset-B5tNpKlQ.js} +1 -1
  91. package/dist/assets/{sas-Dt-MhHv8.js → sas-Br3BRi6f.js} +1 -1
  92. package/dist/assets/{scss-jmTM-KWO.js → scss-ugvUHawi.js} +1 -1
  93. package/dist/assets/{shellscript-BgI_n_Bv.js → shellscript-Ci5rJl0t.js} +1 -1
  94. package/dist/assets/{shellsession-DhmUadx_.js → shellsession-Dxn1WKgk.js} +1 -1
  95. package/dist/assets/{shikiHighlight-BnUluLmq.js → shikiHighlight-Rxomjdlu.js} +1 -1
  96. package/dist/assets/{sortable-tabs-strip-BzSL5abP.js → sortable-tabs-strip-xB36tCMU.js} +1 -1
  97. package/dist/assets/{soy-qfQbh7dQ.js → soy-kgnQSRVZ.js} +1 -1
  98. package/dist/assets/{sql-CwyNz0Gh.js → sql-Cx3XaVwp.js} +1 -1
  99. package/dist/assets/{stata-D9MlkA-a.js → stata-B5YhL3cp.js} +1 -1
  100. package/dist/assets/{store-TODQ6GlW.js → store-DtS03LqZ.js} +2 -2
  101. package/dist/assets/{surrealql-xR93a923.js → surrealql-B8ysTfdK.js} +1 -1
  102. package/dist/assets/{svelte-BA7ahdky.js → svelte-D5-K3GME.js} +1 -1
  103. package/dist/assets/{templ-CxpzFYl8.js → templ-n2DDBrat.js} +1 -1
  104. package/dist/assets/{tex-CePKgOWg.js → tex-CpNhXIXy.js} +1 -1
  105. package/dist/assets/{ts-tags-DP2fsj53.js → ts-tags-CrtENrUj.js} +1 -1
  106. package/dist/assets/{tsx-CI52QFY8.js → tsx-DEnzboO-.js} +1 -1
  107. package/dist/assets/{twig-BjoebDgo.js → twig-B7PeheP0.js} +1 -1
  108. package/dist/assets/{typescript-cpHrN9Ya.js → typescript-CUlPIybL.js} +1 -1
  109. package/dist/assets/{uk-BDy81LTC.js → uk-D1ao_8g2.js} +1 -1
  110. package/dist/assets/{useAppFontEffects-ssYtFjv4.js → useAppFontEffects-BYzLrNi5.js} +2 -2
  111. package/dist/assets/{useDesktopWindowControlsLayout-DQcl_nMs.js → useDesktopWindowControlsLayout-_Yahrf7R.js} +1 -1
  112. package/dist/assets/{useEffectiveDirectory-CpNTQVNZ.js → useEffectiveDirectory-C12zeWeC.js} +1 -1
  113. package/dist/assets/{useMobileNavigationStore-CjAm7B1v.js → useMobileNavigationStore-n6SRA7i4.js} +4 -4
  114. package/dist/assets/{useSessionAutoCleanup-C-OC_dEL.js → useSessionAutoCleanup-B_zrbkdr.js} +1 -1
  115. package/dist/assets/{useWorkerHighlightedLines-B4FmvxRU.js → useWorkerHighlightedLines-CLKHTt63.js} +2 -2
  116. package/dist/assets/{vue-DK5KPkZ5.js → vue-C6ZZy2AI.js} +1 -1
  117. package/dist/assets/{vue-html-BlUa8woS.js → vue-html-DsvGlIY2.js} +1 -1
  118. package/dist/assets/{vue-vine-D3hlJyLi.js → vue-vine-C8VLalyn.js} +1 -1
  119. package/dist/assets/{xml-CspvrcYx.js → xml-ChNx2zKg.js} +1 -1
  120. package/dist/assets/{xsl-D10hdnv5.js → xsl-yWKkpZli.js} +1 -1
  121. package/dist/assets/{yaml-C00-kDDU.js → yaml-CENNGtdf.js} +1 -1
  122. package/dist/assets/{zh-CN-DreKLxqQ.js → zh-CN-BXlKlFLt.js} +1 -1
  123. package/dist/assets/{zh-TW-CUSfDrKD.js → zh-TW-DJF4ZBft.js} +1 -1
  124. package/dist/index.html +2 -2
  125. package/dist/mini-chat.html +2 -2
  126. package/dist/mobile.html +2 -2
  127. package/package.json +1 -1
  128. package/server/index.js +40 -0
  129. package/server/lib/opencode/core-routes.js +56 -23
  130. package/server/lib/opencode/core-routes.test.js +206 -6
  131. package/server/lib/relay/DOCUMENTATION.md +2 -1
  132. package/server/lib/relay/service.js +223 -71
  133. package/server/lib/relay/service.test.js +96 -13
  134. package/dist/assets/MarkdownRendererImpl-DLCPhycw.js +0 -7
  135. package/dist/assets/SettingsView-DarnwHmb.js +0 -25
  136. package/dist/assets/markdown-shiki.worker-CKKjvdhc.js +0 -12
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Xt as t,cn as n,kn as r,r as i,un as a,vn as o}from"./persistence-DE9RnVcA.js";import{_ as s,h as c,i as l,n as u,r as d}from"./desktopHosts-BrrYPqKq.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{n as m}from"./vendor-react-DLPElpoQ.js";import{n as h,t as g}from"./clipboard-CdFyntbr.js";import{t as _}from"./utils-C2R0YoC5.js";import{n as v}from"./Icon-BLWVqBee.js";import{t as y}from"./button-CeCkEpvn.js";import{t as b}from"./input-CyG05w-V.js";var x=m(),S=e(p(),1),C=f();function w(e){switch(e){case`ok`:return null;case`auth`:return`onboarding.remoteConnection.probe.authMessage`;case`update-recommended`:return`onboarding.remoteConnection.probe.updateRecommendedMessage`;case`incompatible`:return`onboarding.remoteConnection.probe.incompatibleMessage`;case`wrong-service`:return`onboarding.remoteConnection.probe.wrongServiceMessage`;case`unreachable`:return`onboarding.remoteConnection.probe.unreachableMessage`;default:return null}}function T(e){return e===`wrong-service`||e===`unreachable`||e===`incompatible`}function E({onBack:e,showBackButton:n=!0,initialUrl:r=``,initialLabel:i=``,isRecoveryMode:o=!1,onConnect:c,onSwitchToLocal:f}){let{t:p}=h(),[m,g]=(0,S.useState)(r),[_,v]=(0,S.useState)(i),[x,E]=(0,S.useState)(`idle`),[D,O]=(0,S.useState)(null),[k,A]=(0,S.useState)(``),j=s(m),M=j?.persistedUrl??null,N=(0,S.useCallback)(e=>{g(e.target.value),E(`idle`),O(null),A(``)},[]),P=(0,S.useCallback)(e=>{v(e.target.value)},[]),F=(0,S.useCallback)(async()=>{if(M){E(`testing`),O(null),A(``);try{let e=await u(M);O(e),E(e.status===`ok`||e.status===`update-recommended`?`success`:`error`)}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.connectionTestFailed`)),E(`error`)}}},[M,p]),I=(0,S.useCallback)(async()=>{if(!j)return;let e=j.persistedUrl;E(`testing`),O(null),A(``);try{let n=await u(e);if(O(n),T(n.status)){E(`error`);return}let r=await d(),i=_.trim()||e,o=r.hosts.find(t=>t.url===e),s=o?o.id:`host-${Date.now().toString(16)}`,f={id:s,label:i,url:e,apiUrl:e},p=o?r.hosts.map(e=>e.id===s?f:e):[...r.hosts,f];if(await l({hosts:p,defaultHostId:s,initialHostChoiceCompleted:!0}),c?.(),j.redeemUrl){window.location.assign(j.redeemUrl);return}t()&&await a()}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.failedToSaveConnection`)),E(`error`)}},[j,_,c,p]),L=x===`testing`,R=M!==null&&!L,z=M!==null&&!L&&!T(D?.status??null),B=w(D?.status??null),V=D?.status===`ok`,H=D?.status===`update-recommended`,U=D?.status===`auth`,W=T(D?.status??null);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[n&&(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:p(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-2 text-center`,children:[(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:p(o?`onboarding.remoteConnection.titleRecovery`:`onboarding.remoteConnection.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:p(`onboarding.remoteConnection.description`)})]}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-url`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(b,{id:`remote-url`,type:`url`,value:m,onChange:N,placeholder:p(`onboarding.remoteConnection.field.serverAddressPlaceholder`),disabled:L})]}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-label`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.nameOptional`)}),(0,C.jsx)(b,{id:`remote-label`,type:`text`,value:_,onChange:P,placeholder:p(`onboarding.remoteConnection.field.namePlaceholder`),disabled:L})]})]}),D&&V&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-success)`,color:`var(--status-success)`},children:p(`onboarding.remoteConnection.status.connectedSuccessfully`,{latencyMs:D.latencyMs})}),D&&U&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:p(`onboarding.remoteConnection.status.authWarning`)}),D&&H&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:B?p(B):null}),D&&W&&(0,C.jsxs)(`div`,{className:`rounded-lg border p-3 text-sm space-y-3`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`font-semibold mb-1`,children:p(`onboarding.remoteConnection.status.connectionFailed`)}),(0,C.jsx)(`div`,{className:`opacity-90`,children:B?p(B):null})]}),(0,C.jsx)(`div`,{className:`text-xs opacity-80`,children:D.status===`unreachable`?p(`onboarding.remoteConnection.status.suggestionsUnreachable`):p(`onboarding.remoteConnection.status.suggestionsWrongService`)})]}),k&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:k}),(0,C.jsxs)(`div`,{className:`flex gap-3`,children:[(0,C.jsx)(y,{variant:`outline`,onClick:F,disabled:!R,children:p(L?`onboarding.remoteConnection.actions.testing`:`onboarding.remoteConnection.actions.testConnection`)}),(0,C.jsx)(y,{onClick:I,disabled:!z,children:p(`onboarding.remoteConnection.actions.connectAndRestart`)})]}),W&&(0,C.jsxs)(`div`,{className:`flex flex-col gap-2 pt-2 border-t border-border`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:p(`onboarding.remoteConnection.actions.whatToDo`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:e,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.chooseDifferentServer`)}),!o&&f&&(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:f,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.useLocalInstead`)})]})]})]})})}async function D(){let e=await r(`/health`);if(!e.ok)return!1;let t=await e.json().catch(()=>null);return t?.openCodeRunning===!0||t?.isOpenCodeReady===!0}async function O(){return(await r(`/api/opencode/retry`,{method:`POST`})).ok?D():!1}var k=`curl -fsSL https://opencode.ai/install | bash`,A=`https://opencode.ai/docs`,j=2500,M=1e4;function N(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{className:`flex-1 text-left overflow-x-auto whitespace-nowrap`,children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:r,"aria-label":r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}function P({onCliAvailable:e}){let{t:s}=h(),[c,u]=S.useState(!1),[f,p]=S.useState(!1),[m,x]=S.useState(!1),[w,T]=S.useState(!1),[P,F]=S.useState(``),[I,L]=S.useState(`unknown`),[R,z]=S.useState(`local`),[B,V]=S.useState(!1),[H,U]=S.useState(!1),[W,G]=S.useState(null),K=S.useRef(!1);S.useEffect(()=>{p(t())},[]),S.useEffect(()=>{if(typeof navigator>`u`){L(`unknown`);return}let e=navigator.userAgent||``;/Windows/i.test(e)?L(`windows`):/Macintosh|Mac OS X/i.test(e)?L(`macos`):/Linux/i.test(e)?L(`linux`):L(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let t=await r(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!t.ok)return;let n=await t.json().catch(()=>null);if(!n||e)return;let i=typeof n.opencodeBinary==`string`?n.opencodeBinary.trim():``;i&&F(i)}catch{}})(),()=>{e=!0}},[]);let q=S.useCallback(async e=>{let t=e.target;t.closest(`.app-region-no-drag`)||t.closest(`button, a, input, select, textarea, code, summary, details`)||e.button===0&&f&&await o()},[f]),J=S.useCallback(async e=>{if(!f)return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})},[f]),Y=S.useCallback(async()=>{if(!K.current){K.current=!0;try{f&&await J(`local`),await e?.()}catch(e){throw K.current=!1,e}}},[f,e,J]);S.useEffect(()=>{if(R!==`local`)return;let e=!1,t=null,n=0,r=async()=>{if(!e){try{let t=await D(),r=Date.now();if(!t&&r-n>=M&&(n=r,t=await O()),e)return;if(t){await Y();return}}catch{}e||(t=setTimeout(r,j))}};return t=setTimeout(r,j),()=>{e=!0,t&&clearTimeout(t)}},[R,Y]);let X=S.useCallback(async()=>{T(!0),G(null);try{let e=await D();e||=await O(),e?await Y():G(s(`onboarding.localSetup.errors.cliNotReady`))}catch{G(s(`onboarding.localSetup.errors.detectionFailed`))}finally{T(!1)}},[Y,s]),Z=S.useCallback(async()=>{if(!(typeof window>`u`)&&f)try{let e=await n();e.success&&e.path&&e.path.trim().length>0&&F(e.path.trim())}catch{}},[f]),Q=S.useCallback(async()=>{x(!0);try{if(await i({opencodeBinary:P.trim()}),f){await J(`local`),await a();return}await r(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>x(!1),1e3)}},[f,P,J]),$=S.useCallback(async()=>{let e=await g(k);e.ok?(u(!0),setTimeout(()=>u(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),ee=A,te=I===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:I===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`,ne=!f||R===`local`;return(0,C.jsx)(`div`,{className:`app-region-drag h-full flex items-center justify-center bg-transparent p-8 cursor-default select-none overflow-y-auto`,onMouseDown:q,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-7`,children:[(0,C.jsxs)(`header`,{className:`text-center space-y-1.5`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:s(`onboarding.chooser.title`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`onboarding.chooser.description`)})]}),f&&(0,C.jsxs)(`div`,{className:`app-region-no-drag flex gap-1.5`,children:[(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`local`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`local`),children:s(`onboarding.chooser.tabs.localInstall`)}),(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`remote`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`remote`),children:s(`onboarding.chooser.tabs.connectRemote`)})]}),f&&R===`remote`?(0,C.jsx)(`div`,{className:`app-region-no-drag`,children:(0,C.jsx)(E,{onBack:()=>z(`local`),showBackButton:!1,onSwitchToLocal:()=>z(`local`)})}):null,ne&&(0,C.jsxs)(`div`,{className:`space-y-4`,children:[I===`windows`&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-4`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:s(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground text-center leading-relaxed`,children:s(`onboarding.localSetup.intro`)}),(0,C.jsx)(`div`,{className:`app-region-no-drag rounded-lg border border-border bg-background/60 backdrop-blur-sm px-4 py-3 font-mono text-sm`,children:c?(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),s(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(N,{onCopy:$,copyTitle:s(`onboarding.common.copyToClipboard`)})}),(0,C.jsxs)(`div`,{className:`app-region-no-drag flex items-center justify-between`,children:[(0,C.jsxs)(`a`,{href:ee,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1`,children:[s(I===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),(0,C.jsx)(`button`,{type:`button`,onClick:X,disabled:w,className:`text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,children:s(w?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkNow`)})]}),W&&(0,C.jsx)(`p`,{role:`alert`,className:`text-center text-xs text-[var(--status-error-foreground)]`,children:W}),(0,C.jsxs)(`div`,{className:`rounded-lg border px-4 py-3 flex items-center gap-3`,style:{borderColor:`color-mix(in srgb, var(--primary-base) 20%, transparent)`,backgroundColor:`color-mix(in srgb, var(--primary-base) 6%, transparent)`},role:`status`,"aria-live":`polite`,children:[(0,C.jsxs)(`span`,{className:`relative inline-flex h-2.5 w-2.5 shrink-0`,"aria-hidden":!0,children:[(0,C.jsx)(`span`,{className:`absolute inset-0 rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity 1.6s ease-in-out infinite`}}),(0,C.jsx)(`span`,{className:`absolute inset-[-4px] rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity-dim 1.6s ease-in-out infinite`,opacity:0}})]}),(0,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground leading-tight`,children:s(`onboarding.localSetup.status.watching`)}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground leading-tight mt-0.5`,children:s(`onboarding.localSetup.status.autoContinue`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:B,onToggle:e=>V(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.advanced.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsxs)(`div`,{className:`pb-4 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:P,onChange:e=>F(e.target.value),placeholder:te,disabled:m,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,size:`sm`,onClick:Z,disabled:m||!f,children:s(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,size:`sm`,onClick:Q,disabled:m||!P.trim(),children:s(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:s(`onboarding.localSetup.helper.saveAndReload`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:H,onToggle:e=>U(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.troubleshoot.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsx)(`ul`,{className:`pb-4 space-y-1.5 text-xs text-muted-foreground list-disc pl-4`,children:I===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.missingRuntime`)})]})})]})]})]})})}var F=`curl -fsSL https://opencode.ai/install | bash`,I=`https://opencode.ai/docs`;function L(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors`,title:r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}var R=3e4;function z({onBack:e,onCliAvailable:s,isFromRecovery:c=!1,onSwitchToRemote:l}){let{t:u}=h(),[d,f]=S.useState(!1),[p,m]=S.useState(!1),[_,x]=S.useState(!1),[w,T]=S.useState(!1),[E,k]=S.useState(!1),[A,j]=S.useState(null),[M,N]=S.useState(``),[P,z]=S.useState(`unknown`);S.useEffect(()=>{let e=setTimeout(()=>m(!0),R);return()=>clearTimeout(e)},[]),S.useEffect(()=>{x(t())},[]),S.useEffect(()=>{if(typeof navigator>`u`){z(`unknown`);return}let e=navigator.userAgent||``;if(/Windows/i.test(e)){z(`windows`);return}if(/Macintosh|Mac OS X/i.test(e)){z(`macos`);return}if(/Linux/i.test(e)){z(`linux`);return}z(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let t=await r(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!t.ok)return;let n=await t.json().catch(()=>null);if(!n||e)return;let i=typeof n.opencodeBinary==`string`?n.opencodeBinary.trim():``;i&&N(i)}catch{}})(),()=>{e=!0}},[]);let B=S.useCallback(async e=>{e.target.closest(`button, a, input, select, textarea, code`)||e.button===0&&_&&await o()},[_]),V=S.useCallback(async()=>{if(!(typeof window>`u`)&&_)try{let e=await n();e.success&&e.path&&e.path.trim().length>0&&N(e.path.trim())}catch{}},[_]),H=S.useCallback(async()=>{T(!0);try{if(await i({opencodeBinary:M.trim()}),_){await a();return}await r(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>T(!1),1e3)}},[_,M]),U=S.useCallback(async()=>{let e=await g(F);e.ok?(f(!0),setTimeout(()=>f(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),W=S.useCallback(async()=>{k(!0),j(null);try{let e=await D();e||=await O(),e?s?.():j(u(`onboarding.localSetup.errors.cliNotReady`))}catch(e){j(e instanceof Error?e.message:u(`onboarding.localSetup.errors.detectionFailed`))}finally{k(!1)}},[s,u]),G=I,K=P===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:P===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`;return(0,C.jsxs)(`div`,{className:`h-full flex items-center justify-center bg-transparent p-8 relative cursor-default select-none`,onMouseDown:B,children:[(0,C.jsxs)(`div`,{className:`w-full max-w-lg space-y-4 text-center`,children:[(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:u(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight text-foreground`,children:u(`onboarding.localSetup.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:u(`onboarding.localSetup.description`)})]}),P===`windows`&&(0,C.jsxs)(`div`,{className:`mx-auto max-w-2xl rounded-lg border border-border bg-background/50 p-4 text-left`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:u(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsx)(`div`,{className:`bg-background/60 backdrop-blur-sm border border-border rounded-lg px-5 py-3 font-mono text-sm w-fit`,children:d?(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),u(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(L,{onCopy:U,copyTitle:u(`onboarding.common.copyToClipboard`)})})}),(0,C.jsxs)(`a`,{href:G,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1 justify-center`,children:[u(P===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),A&&(0,C.jsx)(`div`,{className:`mx-auto max-w-md rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive`,children:A}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(y,{type:`button`,onClick:W,disabled:E,className:`w-full max-w-xs`,size:`lg`,children:u(E?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkAndContinue`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:u(`onboarding.localSetup.helper.checkAndContinue`)})]}),(0,C.jsx)(`div`,{className:`mx-auto w-full max-w-xl pt-4`,children:(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:u(`onboarding.localSetup.field.alreadyInstalled`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:M,onChange:e=>N(e.target.value),placeholder:K,disabled:w,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,onClick:V,disabled:w||!_,children:u(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,onClick:H,disabled:w,children:u(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:u(`onboarding.localSetup.helper.saveAndReload`)})]})}),c&&l&&(0,C.jsxs)(`div`,{className:`text-center pt-4`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:u(`onboarding.localSetup.remotePreference`)}),(0,C.jsx)(y,{variant:`link`,onClick:l,children:u(`onboarding.localSetup.actions.connectRemoteServer`)})]})]}),p&&(0,C.jsx)(`div`,{className:`absolute bottom-8 left-0 right-0 text-center space-y-1`,children:P===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.missingRuntime`)})]})})]})}function B(e,t){if(e?.trim())return c(e.trim());if(t)return c(t)}function V(e,t,n){switch(e){case`local-unavailable`:return{title:`Local OpenCode Unavailable`,description:`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,titleKey:`onboarding.desktopRecovery.localUnavailable.title`,descriptionKey:`onboarding.desktopRecovery.localUnavailable.description`,iconKey:`local`,showRetry:!0,retryLabel:`Retry Local`,retryLabelKey:`onboarding.desktopRecovery.localUnavailable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Set Up Local`,useLocalLabelKey:`onboarding.desktopRecovery.localUnavailable.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-missing`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-unreachable`:{let e=B(t,n);return{title:`Remote Server Unreachable`,description:`Could not connect to "${e||`the remote server`}". Check your network connection and verify the server address.`,titleKey:`onboarding.desktopRecovery.remoteUnreachable.title`,descriptionKey:`onboarding.desktopRecovery.remoteUnreachable.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-wrong-service`:{let e=B(t,n);return{title:`Incompatible Server`,description:`The server at "${e||`unknown`}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,titleKey:`onboarding.desktopRecovery.incompatibleServer.title`,descriptionKey:`onboarding.desktopRecovery.incompatibleServer.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-incompatible`:{let e=B(t,n);return{title:`Server Update Required`,description:`The OpenChamber server at "${e||`unknown`}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,titleKey:`onboarding.desktopRecovery.remoteIncompatible.title`,descriptionKey:`onboarding.desktopRecovery.remoteIncompatible.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`missing-default-host`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};default:throw Error(`Unknown recovery variant: ${e}`)}}function H(e){switch(e){case`local`:return(0,C.jsx)(v,{name:`macbook`,className:`h-8 w-8`});case`remote`:return(0,C.jsx)(v,{name:`server`,className:`h-8 w-8`})}}function U({variant:e,hostLabel:t,hostUrl:n,onRetry:r,onUseLocal:i,onUseRemote:a,isRetrying:o=!1}){let{t:s}=h(),l=V(e,t,n),u=l.retryLabelKey??`onboarding.desktopRecovery.actions.retryConnection`,d=S.useMemo(()=>{if(l.descriptionParams?.host)return l.descriptionParams;if(e===`remote-unreachable`)return{host:s(`onboarding.desktopRecovery.placeholders.remoteServer`)};if(e===`remote-wrong-service`||e===`remote-incompatible`)return{host:s(`onboarding.desktopRecovery.placeholders.unknownServer`)}},[l.descriptionParams,s,e]);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col items-center space-y-3 text-center`,children:[(0,C.jsx)(`div`,{className:`p-3 rounded-full`,style:{backgroundColor:`var(--status-warning)`,opacity:.15},children:(0,C.jsx)(`div`,{style:{color:`var(--status-warning)`},children:H(l.iconKey)})}),(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:s(l.titleKey)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm max-w-sm`,children:s(l.descriptionKey,d)})]}),n&&(e===`remote-unreachable`||e===`remote-wrong-service`||e===`remote-incompatible`)&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:s(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(`div`,{className:`font-mono text-sm text-foreground truncate`,children:c(n)})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.showRetry&&r&&(0,C.jsxs)(y,{onClick:r,disabled:o,className:`w-full`,children:[(0,C.jsx)(v,{name:`refresh`,className:_(`h-4 w-4`,o&&`animate-spin`)}),s(o?`onboarding.desktopRecovery.actions.retrying`:u)]}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[l.showUseLocal&&i&&(0,C.jsxs)(y,{variant:`outline`,onClick:i,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`macbook`,className:`h-4 w-4`}),s(l.useLocalLabelKey)]}),l.showUseRemote&&a&&(0,C.jsxs)(y,{variant:`outline`,onClick:a,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`server`,className:`h-4 w-4`}),s(l.useRemoteLabelKey)]})]})]})]})})}function W(e,t){if(t===`use-remote`)return{kind:`remote-form`};switch(e){case`local-unavailable`:return{kind:`local-setup`};case`remote-unreachable`:case`remote-incompatible`:case`remote-wrong-service`:case`remote-missing`:case`missing-default-host`:return{kind:`switch-default-to-local`};default:throw Error(`Unhandled RecoveryVariant: ${e}`)}}function G(e){let n=(0,x.c)(27),{variant:i,hostUrl:o,hostLabel:s,onRetry:c,onChooseRemote:l,showRemoteForm:u,onCloseRemoteForm:d,onSwitchToLocalFromRemote:f,onEnterLocalSetup:p,isRetrying:m}=e,h=u!==void 0&&u,g=m!==void 0&&m,_=K,v;n[0]===c?v=n[1]:(v=async()=>{if(t()){await a();return}await r(`/api/config/reload`,{method:`POST`}),c?.()},n[0]=c,n[1]=v);let y=v,b;n[2]!==p||n[3]!==i?(b=async()=>{if(W(i,`use-local`).kind===`local-setup`){p?.();return}if(await _(`local`),t()){await a();return}window.location.reload()},n[2]=p,n[3]=i,n[4]=b):b=n[4];let S=b,w;n[5]!==l||n[6]!==i?(w=()=>{W(i,`use-remote`).kind===`remote-form`&&l?.()},n[5]=l,n[6]=i,n[7]=w):w=n[7];let T=w;if(h){let e=i===`remote-wrong-service`?``:o||``,r=i===`remote-wrong-service`?``:s||``,c;n[8]!==l||n[9]!==d?(c=d||(()=>l?.()),n[8]=l,n[9]=d,n[10]=c):c=n[10];let u;n[11]!==p||n[12]!==f?(u=f||(()=>{_(`local`).then(()=>{t()?a():p?.()})}),n[11]=p,n[12]=f,n[13]=u):u=n[13];let m;return n[14]!==r||n[15]!==e||n[16]!==c||n[17]!==u?(m=(0,C.jsx)(E,{onBack:c,initialUrl:e,initialLabel:r,isRecoveryMode:!0,onSwitchToLocal:u}),n[14]=r,n[15]=e,n[16]=c,n[17]=u,n[18]=m):m=n[18],m}let D;return n[19]!==y||n[20]!==S||n[21]!==T||n[22]!==s||n[23]!==o||n[24]!==g||n[25]!==i?(D=(0,C.jsx)(U,{variant:i,hostLabel:s,hostUrl:o,onRetry:y,onUseLocal:S,onUseRemote:T,isRetrying:g}),n[19]=y,n[20]=S,n[21]=T,n[22]=s,n[23]=o,n[24]=g,n[25]=i,n[26]=D):D=n[26],D}async function K(e){if(!t())return;let n=await d();await l({...n,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})}function q(e){let t=(0,x.c)(26),{onBack:n,onCliAvailable:r,mode:i,recoveryVariant:a,recoveryHostUrl:o,recoveryHostLabel:s,onEnterLocalSetup:c}=e,l=i===void 0?`first-launch`:i,u=a===void 0?`missing-default-host`:a,[d,f]=S.useState(!1),[p,m]=S.useState(!1),h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{m(!1),f(!1)},t[0]=h):h=t[0];let g;t[1]!==l||t[2]!==s||t[3]!==o||t[4]!==u?(g=[l,u,o,s],t[1]=l,t[2]=s,t[3]=o,t[4]=u,t[5]=g):g=t[5],S.useEffect(h,g);let _=p?`local-setup`:l;if(_===`recovery`){let e,n;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=()=>f(!1),n=()=>{f(!1),m(!0)},t[6]=e,t[7]=n):(e=t[6],n=t[7]);let r;t[8]===c?r=t[9]:(r=()=>{m(!0),c?.()},t[8]=c,t[9]=r);let i;return t[10]!==s||t[11]!==o||t[12]!==u||t[13]!==d||t[14]!==r?(i=(0,C.jsx)(G,{variant:u,hostUrl:o,hostLabel:s,showRemoteForm:d,onCloseRemoteForm:e,onSwitchToLocalFromRemote:n,onEnterLocalSetup:r}),t[10]=s,t[11]=o,t[12]=u,t[13]=d,t[14]=r,t[15]=i):i=t[15],i}if(_===`local-setup`){let e;t[16]!==n||t[17]!==p?(e=()=>{p?m(!1):n?.()},t[16]=n,t[17]=p,t[18]=e):e=t[18];let i;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>f(!0),t[19]=i):i=t[19];let a;return t[20]!==r||t[21]!==p||t[22]!==e?(a=(0,C.jsx)(z,{onBack:e,onCliAvailable:r,isFromRecovery:p,onSwitchToRemote:i}),t[20]=r,t[21]=p,t[22]=e,t[23]=a):a=t[23],a}let v;return t[24]===r?v=t[25]:(v=(0,C.jsx)(P,{onCliAvailable:r}),t[24]=r,t[25]=v),v}export{q as OnboardingScreen};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{Xt as t,cn as n,kn as r,r as i,un as a,vn as o}from"./persistence-DE9RnVcA.js";import{_ as s,h as c,i as l,n as u,r as d}from"./desktopHosts-BrrYPqKq.js";import{nt as f,rt as p}from"./vendor-base-ui-CnHfUmDN.js";import{n as m}from"./vendor-react-DLPElpoQ.js";import{n as h,t as g}from"./clipboard-CadKjjVT.js";import{t as _}from"./utils-C2R0YoC5.js";import{n as v}from"./Icon-BLWVqBee.js";import{t as y}from"./button-CeCkEpvn.js";import{t as b}from"./input-CyG05w-V.js";var x=m(),S=e(p(),1),C=f();function w(e){switch(e){case`ok`:return null;case`auth`:return`onboarding.remoteConnection.probe.authMessage`;case`update-recommended`:return`onboarding.remoteConnection.probe.updateRecommendedMessage`;case`incompatible`:return`onboarding.remoteConnection.probe.incompatibleMessage`;case`wrong-service`:return`onboarding.remoteConnection.probe.wrongServiceMessage`;case`unreachable`:return`onboarding.remoteConnection.probe.unreachableMessage`;default:return null}}function T(e){return e===`wrong-service`||e===`unreachable`||e===`incompatible`}function E({onBack:e,showBackButton:n=!0,initialUrl:r=``,initialLabel:i=``,isRecoveryMode:o=!1,onConnect:c,onSwitchToLocal:f}){let{t:p}=h(),[m,g]=(0,S.useState)(r),[_,v]=(0,S.useState)(i),[x,E]=(0,S.useState)(`idle`),[D,O]=(0,S.useState)(null),[k,A]=(0,S.useState)(``),j=s(m),M=j?.persistedUrl??null,N=(0,S.useCallback)(e=>{g(e.target.value),E(`idle`),O(null),A(``)},[]),P=(0,S.useCallback)(e=>{v(e.target.value)},[]),F=(0,S.useCallback)(async()=>{if(M){E(`testing`),O(null),A(``);try{let e=await u(M);O(e),E(e.status===`ok`||e.status===`update-recommended`?`success`:`error`)}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.connectionTestFailed`)),E(`error`)}}},[M,p]),I=(0,S.useCallback)(async()=>{if(!j)return;let e=j.persistedUrl;E(`testing`),O(null),A(``);try{let n=await u(e);if(O(n),T(n.status)){E(`error`);return}let r=await d(),i=_.trim()||e,o=r.hosts.find(t=>t.url===e),s=o?o.id:`host-${Date.now().toString(16)}`,f={id:s,label:i,url:e,apiUrl:e},p=o?r.hosts.map(e=>e.id===s?f:e):[...r.hosts,f];if(await l({hosts:p,defaultHostId:s,initialHostChoiceCompleted:!0}),c?.(),j.redeemUrl){window.location.assign(j.redeemUrl);return}t()&&await a()}catch(e){A(e instanceof Error?e.message:p(`onboarding.remoteConnection.errors.failedToSaveConnection`)),E(`error`)}},[j,_,c,p]),L=x===`testing`,R=M!==null&&!L,z=M!==null&&!L&&!T(D?.status??null),B=w(D?.status??null),V=D?.status===`ok`,H=D?.status===`update-recommended`,U=D?.status===`auth`,W=T(D?.status??null);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[n&&(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:p(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-2 text-center`,children:[(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:p(o?`onboarding.remoteConnection.titleRecovery`:`onboarding.remoteConnection.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:p(`onboarding.remoteConnection.description`)})]}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-url`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(b,{id:`remote-url`,type:`url`,value:m,onChange:N,placeholder:p(`onboarding.remoteConnection.field.serverAddressPlaceholder`),disabled:L})]}),(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`label`,{htmlFor:`remote-label`,className:`text-sm text-foreground`,children:p(`onboarding.remoteConnection.field.nameOptional`)}),(0,C.jsx)(b,{id:`remote-label`,type:`text`,value:_,onChange:P,placeholder:p(`onboarding.remoteConnection.field.namePlaceholder`),disabled:L})]})]}),D&&V&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-success)`,color:`var(--status-success)`},children:p(`onboarding.remoteConnection.status.connectedSuccessfully`,{latencyMs:D.latencyMs})}),D&&U&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:p(`onboarding.remoteConnection.status.authWarning`)}),D&&H&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-warning)`,color:`var(--status-warning)`},children:B?p(B):null}),D&&W&&(0,C.jsxs)(`div`,{className:`rounded-lg border p-3 text-sm space-y-3`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`font-semibold mb-1`,children:p(`onboarding.remoteConnection.status.connectionFailed`)}),(0,C.jsx)(`div`,{className:`opacity-90`,children:B?p(B):null})]}),(0,C.jsx)(`div`,{className:`text-xs opacity-80`,children:D.status===`unreachable`?p(`onboarding.remoteConnection.status.suggestionsUnreachable`):p(`onboarding.remoteConnection.status.suggestionsWrongService`)})]}),k&&(0,C.jsx)(`div`,{className:`rounded-lg border p-3 text-sm`,style:{borderColor:`var(--status-error)`,color:`var(--status-error)`},children:k}),(0,C.jsxs)(`div`,{className:`flex gap-3`,children:[(0,C.jsx)(y,{variant:`outline`,onClick:F,disabled:!R,children:p(L?`onboarding.remoteConnection.actions.testing`:`onboarding.remoteConnection.actions.testConnection`)}),(0,C.jsx)(y,{onClick:I,disabled:!z,children:p(`onboarding.remoteConnection.actions.connectAndRestart`)})]}),W&&(0,C.jsxs)(`div`,{className:`flex flex-col gap-2 pt-2 border-t border-border`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground text-center`,children:p(`onboarding.remoteConnection.actions.whatToDo`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:e,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.chooseDifferentServer`)}),!o&&f&&(0,C.jsx)(y,{variant:`outline`,size:`sm`,onClick:f,className:`flex-1`,children:p(`onboarding.remoteConnection.actions.useLocalInstead`)})]})]})]})})}async function D(){let e=await r(`/health`);if(!e.ok)return!1;let t=await e.json().catch(()=>null);return t?.openCodeRunning===!0||t?.isOpenCodeReady===!0}async function O(){return(await r(`/api/opencode/retry`,{method:`POST`})).ok?D():!1}var k=`curl -fsSL https://opencode.ai/install | bash`,A=`https://opencode.ai/docs`,j=2500,M=1e4;function N(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{className:`flex-1 text-left overflow-x-auto whitespace-nowrap`,children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:r,"aria-label":r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}function P({onCliAvailable:e}){let{t:s}=h(),[c,u]=S.useState(!1),[f,p]=S.useState(!1),[m,x]=S.useState(!1),[w,T]=S.useState(!1),[P,F]=S.useState(``),[I,L]=S.useState(`unknown`),[R,z]=S.useState(`local`),[B,V]=S.useState(!1),[H,U]=S.useState(!1),[W,G]=S.useState(null),K=S.useRef(!1);S.useEffect(()=>{p(t())},[]),S.useEffect(()=>{if(typeof navigator>`u`){L(`unknown`);return}let e=navigator.userAgent||``;/Windows/i.test(e)?L(`windows`):/Macintosh|Mac OS X/i.test(e)?L(`macos`):/Linux/i.test(e)?L(`linux`):L(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let t=await r(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!t.ok)return;let n=await t.json().catch(()=>null);if(!n||e)return;let i=typeof n.opencodeBinary==`string`?n.opencodeBinary.trim():``;i&&F(i)}catch{}})(),()=>{e=!0}},[]);let q=S.useCallback(async e=>{let t=e.target;t.closest(`.app-region-no-drag`)||t.closest(`button, a, input, select, textarea, code, summary, details`)||e.button===0&&f&&await o()},[f]),J=S.useCallback(async e=>{if(!f)return;let t=await d();await l({...t,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})},[f]),Y=S.useCallback(async()=>{if(!K.current){K.current=!0;try{f&&await J(`local`),await e?.()}catch(e){throw K.current=!1,e}}},[f,e,J]);S.useEffect(()=>{if(R!==`local`)return;let e=!1,t=null,n=0,r=async()=>{if(!e){try{let t=await D(),r=Date.now();if(!t&&r-n>=M&&(n=r,t=await O()),e)return;if(t){await Y();return}}catch{}e||(t=setTimeout(r,j))}};return t=setTimeout(r,j),()=>{e=!0,t&&clearTimeout(t)}},[R,Y]);let X=S.useCallback(async()=>{T(!0),G(null);try{let e=await D();e||=await O(),e?await Y():G(s(`onboarding.localSetup.errors.cliNotReady`))}catch{G(s(`onboarding.localSetup.errors.detectionFailed`))}finally{T(!1)}},[Y,s]),Z=S.useCallback(async()=>{if(!(typeof window>`u`)&&f)try{let e=await n();e.success&&e.path&&e.path.trim().length>0&&F(e.path.trim())}catch{}},[f]),Q=S.useCallback(async()=>{x(!0);try{if(await i({opencodeBinary:P.trim()}),f){await J(`local`),await a();return}await r(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>x(!1),1e3)}},[f,P,J]),$=S.useCallback(async()=>{let e=await g(k);e.ok?(u(!0),setTimeout(()=>u(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),ee=A,te=I===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:I===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`,ne=!f||R===`local`;return(0,C.jsx)(`div`,{className:`app-region-drag h-full flex items-center justify-center bg-transparent p-8 cursor-default select-none overflow-y-auto`,onMouseDown:q,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-7`,children:[(0,C.jsxs)(`header`,{className:`text-center space-y-1.5`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:s(`onboarding.chooser.title`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:s(`onboarding.chooser.description`)})]}),f&&(0,C.jsxs)(`div`,{className:`app-region-no-drag flex gap-1.5`,children:[(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`local`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`local`),children:s(`onboarding.chooser.tabs.localInstall`)}),(0,C.jsx)(`button`,{type:`button`,className:_(`flex-1 px-4 py-2 rounded-lg border transition-colors text-sm`,R===`remote`?`border-[var(--interactive-selection)] text-foreground bg-[var(--interactive-selection)]/10`:`border-border text-muted-foreground hover:text-foreground hover:border-muted-foreground`),onClick:()=>z(`remote`),children:s(`onboarding.chooser.tabs.connectRemote`)})]}),f&&R===`remote`?(0,C.jsx)(`div`,{className:`app-region-no-drag`,children:(0,C.jsx)(E,{onBack:()=>z(`local`),showBackButton:!1,onSwitchToLocal:()=>z(`local`)})}):null,ne&&(0,C.jsxs)(`div`,{className:`space-y-4`,children:[I===`windows`&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-4`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:s(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground text-center leading-relaxed`,children:s(`onboarding.localSetup.intro`)}),(0,C.jsx)(`div`,{className:`app-region-no-drag rounded-lg border border-border bg-background/60 backdrop-blur-sm px-4 py-3 font-mono text-sm`,children:c?(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),s(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(N,{onCopy:$,copyTitle:s(`onboarding.common.copyToClipboard`)})}),(0,C.jsxs)(`div`,{className:`app-region-no-drag flex items-center justify-between`,children:[(0,C.jsxs)(`a`,{href:ee,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1`,children:[s(I===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),(0,C.jsx)(`button`,{type:`button`,onClick:X,disabled:w,className:`text-xs text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50`,children:s(w?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkNow`)})]}),W&&(0,C.jsx)(`p`,{role:`alert`,className:`text-center text-xs text-[var(--status-error-foreground)]`,children:W}),(0,C.jsxs)(`div`,{className:`rounded-lg border px-4 py-3 flex items-center gap-3`,style:{borderColor:`color-mix(in srgb, var(--primary-base) 20%, transparent)`,backgroundColor:`color-mix(in srgb, var(--primary-base) 6%, transparent)`},role:`status`,"aria-live":`polite`,children:[(0,C.jsxs)(`span`,{className:`relative inline-flex h-2.5 w-2.5 shrink-0`,"aria-hidden":!0,children:[(0,C.jsx)(`span`,{className:`absolute inset-0 rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity 1.6s ease-in-out infinite`}}),(0,C.jsx)(`span`,{className:`absolute inset-[-4px] rounded-full`,style:{backgroundColor:`var(--primary-base)`,animation:`pulse-opacity-dim 1.6s ease-in-out infinite`,opacity:0}})]}),(0,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground leading-tight`,children:s(`onboarding.localSetup.status.watching`)}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground leading-tight mt-0.5`,children:s(`onboarding.localSetup.status.autoContinue`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:B,onToggle:e=>V(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.advanced.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsxs)(`div`,{className:`pb-4 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:P,onChange:e=>F(e.target.value),placeholder:te,disabled:m,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,size:`sm`,onClick:Z,disabled:m||!f,children:s(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,size:`sm`,onClick:Q,disabled:m||!P.trim(),children:s(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:s(`onboarding.localSetup.helper.saveAndReload`)})]})]}),(0,C.jsxs)(`details`,{className:`app-region-no-drag group rounded-lg border border-border/60 px-4 open:bg-background/40 transition-colors`,open:H,onToggle:e=>U(e.currentTarget.open),children:[(0,C.jsxs)(`summary`,{className:`flex items-center justify-between cursor-pointer py-2.5 text-sm text-muted-foreground hover:text-foreground transition-colors list-none [&::-webkit-details-marker]:hidden`,children:[(0,C.jsx)(`span`,{children:s(`onboarding.localSetup.troubleshoot.title`)}),(0,C.jsx)(v,{name:`arrow-down-s`,className:`h-4 w-4 transition-transform group-open:rotate-180`})]}),(0,C.jsx)(`ul`,{className:`pb-4 space-y-1.5 text-xs text-muted-foreground list-disc pl-4`,children:I===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`li`,{children:s(`onboarding.localSetup.hint.missingRuntime`)})]})})]})]})]})})}var F=`curl -fsSL https://opencode.ai/install | bash`,I=`https://opencode.ai/docs`;function L(e){let t=(0,x.c)(5),{onCopy:n,copyTitle:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,C.jsxs)(`code`,{children:[(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`curl`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` -fsSL `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-string)`},children:`https://opencode.ai/install`}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:` | `}),(0,C.jsx)(`span`,{style:{color:`var(--syntax-keyword)`},children:`bash`})]}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,C.jsx)(v,{name:`file-copy`,className:`h-4 w-4`}),t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3`,children:[i,(0,C.jsx)(`button`,{onClick:n,className:`inline-flex items-center text-muted-foreground hover:text-foreground transition-colors`,title:r,children:a})]}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}var R=3e4;function z({onBack:e,onCliAvailable:s,isFromRecovery:c=!1,onSwitchToRemote:l}){let{t:u}=h(),[d,f]=S.useState(!1),[p,m]=S.useState(!1),[_,x]=S.useState(!1),[w,T]=S.useState(!1),[E,k]=S.useState(!1),[A,j]=S.useState(null),[M,N]=S.useState(``),[P,z]=S.useState(`unknown`);S.useEffect(()=>{let e=setTimeout(()=>m(!0),R);return()=>clearTimeout(e)},[]),S.useEffect(()=>{x(t())},[]),S.useEffect(()=>{if(typeof navigator>`u`){z(`unknown`);return}let e=navigator.userAgent||``;if(/Windows/i.test(e)){z(`windows`);return}if(/Macintosh|Mac OS X/i.test(e)){z(`macos`);return}if(/Linux/i.test(e)){z(`linux`);return}z(`unknown`)},[]),S.useEffect(()=>{let e=!1;return(async()=>{try{let t=await r(`/api/config/settings`,{method:`GET`,headers:{Accept:`application/json`}});if(!t.ok)return;let n=await t.json().catch(()=>null);if(!n||e)return;let i=typeof n.opencodeBinary==`string`?n.opencodeBinary.trim():``;i&&N(i)}catch{}})(),()=>{e=!0}},[]);let B=S.useCallback(async e=>{e.target.closest(`button, a, input, select, textarea, code`)||e.button===0&&_&&await o()},[_]),V=S.useCallback(async()=>{if(!(typeof window>`u`)&&_)try{let e=await n();e.success&&e.path&&e.path.trim().length>0&&N(e.path.trim())}catch{}},[_]),H=S.useCallback(async()=>{T(!0);try{if(await i({opencodeBinary:M.trim()}),_){await a();return}await r(`/api/config/reload`,{method:`POST`})}finally{setTimeout(()=>T(!1),1e3)}},[_,M]),U=S.useCallback(async()=>{let e=await g(F);e.ok?(f(!0),setTimeout(()=>f(!1),2e3)):console.error(`Failed to copy:`,e.error)},[]),W=S.useCallback(async()=>{k(!0),j(null);try{let e=await D();e||=await O(),e?s?.():j(u(`onboarding.localSetup.errors.cliNotReady`))}catch(e){j(e instanceof Error?e.message:u(`onboarding.localSetup.errors.detectionFailed`))}finally{k(!1)}},[s,u]),G=I,K=P===`windows`?`C:\\Users\\you\\AppData\\Roaming\\npm\\opencode.cmd`:P===`linux`?`/home/you/.bun/bin/opencode`:`/Users/you/.bun/bin/opencode`;return(0,C.jsxs)(`div`,{className:`h-full flex items-center justify-center bg-transparent p-8 relative cursor-default select-none`,onMouseDown:B,children:[(0,C.jsxs)(`div`,{className:`w-full max-w-lg space-y-4 text-center`,children:[(0,C.jsx)(`div`,{className:`flex items-center`,children:(0,C.jsx)(y,{variant:`ghost`,onClick:e,className:`p-0 text-muted-foreground hover:text-foreground`,children:u(`onboarding.common.actions.back`)})}),(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight text-foreground`,children:u(`onboarding.localSetup.title`)}),(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:u(`onboarding.localSetup.description`)})]}),P===`windows`&&(0,C.jsxs)(`div`,{className:`mx-auto max-w-2xl rounded-lg border border-border bg-background/50 p-4 text-left`,children:[(0,C.jsx)(`div`,{className:`text-sm text-foreground`,children:u(`onboarding.localSetup.windows.title`)}),(0,C.jsxs)(`ol`,{className:`mt-2 list-decimal space-y-1 pl-5 text-sm text-muted-foreground`,children:[(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepRunInstallInWsl`)}),(0,C.jsx)(`li`,{children:u(`onboarding.localSetup.windows.stepSetBinaryPath`)})]})]}),(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsx)(`div`,{className:`bg-background/60 backdrop-blur-sm border border-border rounded-lg px-5 py-3 font-mono text-sm w-fit`,children:d?(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,style:{color:`var(--status-success)`},children:[(0,C.jsx)(v,{name:`check`,className:`h-4 w-4`}),u(`onboarding.common.status.copiedToClipboard`)]}):(0,C.jsx)(L,{onCopy:U,copyTitle:u(`onboarding.common.copyToClipboard`)})})}),(0,C.jsxs)(`a`,{href:G,target:`_blank`,rel:`noopener noreferrer`,className:`text-sm text-muted-foreground hover:text-foreground transition-colors inline-flex items-center gap-1 justify-center`,children:[u(P===`windows`?`onboarding.localSetup.docs.windows`:`onboarding.localSetup.docs.default`),(0,C.jsx)(v,{name:`external-link`,className:`h-3 w-3`})]}),A&&(0,C.jsx)(`div`,{className:`mx-auto max-w-md rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive`,children:A}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(y,{type:`button`,onClick:W,disabled:E,className:`w-full max-w-xs`,size:`lg`,children:u(E?`onboarding.localSetup.actions.checking`:`onboarding.localSetup.actions.checkAndContinue`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:u(`onboarding.localSetup.helper.checkAndContinue`)})]}),(0,C.jsx)(`div`,{className:`mx-auto w-full max-w-xl pt-4`,children:(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:u(`onboarding.localSetup.field.alreadyInstalled`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(b,{value:M,onChange:e=>N(e.target.value),placeholder:K,disabled:w,className:`flex-1 font-mono text-xs`}),(0,C.jsx)(y,{type:`button`,variant:`secondary`,onClick:V,disabled:w||!_,children:u(`onboarding.localSetup.actions.browse`)}),(0,C.jsx)(y,{type:`button`,onClick:H,disabled:w,children:u(`onboarding.localSetup.actions.apply`)})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:u(`onboarding.localSetup.helper.saveAndReload`)})]})}),c&&l&&(0,C.jsxs)(`div`,{className:`text-center pt-4`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:u(`onboarding.localSetup.remotePreference`)}),(0,C.jsx)(y,{variant:`link`,onClick:l,children:u(`onboarding.localSetup.actions.connectRemoteServer`)})]})]}),p&&(0,C.jsx)(`div`,{className:`absolute bottom-8 left-0 right-0 text-center space-y-1`,children:P===`windows`?(0,C.jsx)(C.Fragment,{children:(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.windows.hintDetectionFailed`)})}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.ensurePath`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.setEnv`)}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground/70`,children:u(`onboarding.localSetup.hint.missingRuntime`)})]})})]})}function B(e,t){if(e?.trim())return c(e.trim());if(t)return c(t)}function V(e,t,n){switch(e){case`local-unavailable`:return{title:`Local OpenCode Unavailable`,description:`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,titleKey:`onboarding.desktopRecovery.localUnavailable.title`,descriptionKey:`onboarding.desktopRecovery.localUnavailable.description`,iconKey:`local`,showRetry:!0,retryLabel:`Retry Local`,retryLabelKey:`onboarding.desktopRecovery.localUnavailable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Set Up Local`,useLocalLabelKey:`onboarding.desktopRecovery.localUnavailable.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-missing`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};case`remote-unreachable`:{let e=B(t,n);return{title:`Remote Server Unreachable`,description:`Could not connect to "${e||`the remote server`}". Check your network connection and verify the server address.`,titleKey:`onboarding.desktopRecovery.remoteUnreachable.title`,descriptionKey:`onboarding.desktopRecovery.remoteUnreachable.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-wrong-service`:{let e=B(t,n);return{title:`Incompatible Server`,description:`The server at "${e||`unknown`}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,titleKey:`onboarding.desktopRecovery.incompatibleServer.title`,descriptionKey:`onboarding.desktopRecovery.incompatibleServer.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`remote-incompatible`:{let e=B(t,n);return{title:`Server Update Required`,description:`The OpenChamber server at "${e||`unknown`}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,titleKey:`onboarding.desktopRecovery.remoteIncompatible.title`,descriptionKey:`onboarding.desktopRecovery.remoteIncompatible.description`,descriptionParams:e?{host:e}:void 0,iconKey:`remote`,showRetry:!0,retryLabel:`Retry Connection`,retryLabelKey:`onboarding.desktopRecovery.remoteUnreachable.retry`,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`}}case`missing-default-host`:return{title:`No Default Connection`,description:`Your saved default connection could not be found. Choose how you want to connect.`,titleKey:`onboarding.desktopRecovery.noDefaultConnection.title`,descriptionKey:`onboarding.desktopRecovery.noDefaultConnection.description`,iconKey:`local`,showRetry:!1,showUseLocal:!0,showUseRemote:!0,useLocalLabel:`Use Local`,useLocalLabelKey:`onboarding.desktopRecovery.common.useLocal`,useRemoteLabel:`Use Remote`,useRemoteLabelKey:`onboarding.desktopRecovery.common.useRemote`};default:throw Error(`Unknown recovery variant: ${e}`)}}function H(e){switch(e){case`local`:return(0,C.jsx)(v,{name:`macbook`,className:`h-8 w-8`});case`remote`:return(0,C.jsx)(v,{name:`server`,className:`h-8 w-8`})}}function U({variant:e,hostLabel:t,hostUrl:n,onRetry:r,onUseLocal:i,onUseRemote:a,isRetrying:o=!1}){let{t:s}=h(),l=V(e,t,n),u=l.retryLabelKey??`onboarding.desktopRecovery.actions.retryConnection`,d=S.useMemo(()=>{if(l.descriptionParams?.host)return l.descriptionParams;if(e===`remote-unreachable`)return{host:s(`onboarding.desktopRecovery.placeholders.remoteServer`)};if(e===`remote-wrong-service`||e===`remote-incompatible`)return{host:s(`onboarding.desktopRecovery.placeholders.unknownServer`)}},[l.descriptionParams,s,e]);return(0,C.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,C.jsxs)(`div`,{className:`w-full max-w-md space-y-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col items-center space-y-3 text-center`,children:[(0,C.jsx)(`div`,{className:`p-3 rounded-full`,style:{backgroundColor:`var(--status-warning)`,opacity:.15},children:(0,C.jsx)(`div`,{style:{color:`var(--status-warning)`},children:H(l.iconKey)})}),(0,C.jsx)(`h1`,{className:`typography-ui-header text-xl font-semibold text-foreground`,children:s(l.titleKey)}),(0,C.jsx)(`p`,{className:`text-muted-foreground text-sm max-w-sm`,children:s(l.descriptionKey,d)})]}),n&&(e===`remote-unreachable`||e===`remote-wrong-service`||e===`remote-incompatible`)&&(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/50 p-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:s(`onboarding.remoteConnection.field.serverAddress`)}),(0,C.jsx)(`div`,{className:`font-mono text-sm text-foreground truncate`,children:c(n)})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l.showRetry&&r&&(0,C.jsxs)(y,{onClick:r,disabled:o,className:`w-full`,children:[(0,C.jsx)(v,{name:`refresh`,className:_(`h-4 w-4`,o&&`animate-spin`)}),s(o?`onboarding.desktopRecovery.actions.retrying`:u)]}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[l.showUseLocal&&i&&(0,C.jsxs)(y,{variant:`outline`,onClick:i,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`macbook`,className:`h-4 w-4`}),s(l.useLocalLabelKey)]}),l.showUseRemote&&a&&(0,C.jsxs)(y,{variant:`outline`,onClick:a,disabled:o,className:`flex-1`,children:[(0,C.jsx)(v,{name:`server`,className:`h-4 w-4`}),s(l.useRemoteLabelKey)]})]})]})]})})}function W(e,t){if(t===`use-remote`)return{kind:`remote-form`};switch(e){case`local-unavailable`:return{kind:`local-setup`};case`remote-unreachable`:case`remote-incompatible`:case`remote-wrong-service`:case`remote-missing`:case`missing-default-host`:return{kind:`switch-default-to-local`};default:throw Error(`Unhandled RecoveryVariant: ${e}`)}}function G(e){let n=(0,x.c)(27),{variant:i,hostUrl:o,hostLabel:s,onRetry:c,onChooseRemote:l,showRemoteForm:u,onCloseRemoteForm:d,onSwitchToLocalFromRemote:f,onEnterLocalSetup:p,isRetrying:m}=e,h=u!==void 0&&u,g=m!==void 0&&m,_=K,v;n[0]===c?v=n[1]:(v=async()=>{if(t()){await a();return}await r(`/api/config/reload`,{method:`POST`}),c?.()},n[0]=c,n[1]=v);let y=v,b;n[2]!==p||n[3]!==i?(b=async()=>{if(W(i,`use-local`).kind===`local-setup`){p?.();return}if(await _(`local`),t()){await a();return}window.location.reload()},n[2]=p,n[3]=i,n[4]=b):b=n[4];let S=b,w;n[5]!==l||n[6]!==i?(w=()=>{W(i,`use-remote`).kind===`remote-form`&&l?.()},n[5]=l,n[6]=i,n[7]=w):w=n[7];let T=w;if(h){let e=i===`remote-wrong-service`?``:o||``,r=i===`remote-wrong-service`?``:s||``,c;n[8]!==l||n[9]!==d?(c=d||(()=>l?.()),n[8]=l,n[9]=d,n[10]=c):c=n[10];let u;n[11]!==p||n[12]!==f?(u=f||(()=>{_(`local`).then(()=>{t()?a():p?.()})}),n[11]=p,n[12]=f,n[13]=u):u=n[13];let m;return n[14]!==r||n[15]!==e||n[16]!==c||n[17]!==u?(m=(0,C.jsx)(E,{onBack:c,initialUrl:e,initialLabel:r,isRecoveryMode:!0,onSwitchToLocal:u}),n[14]=r,n[15]=e,n[16]=c,n[17]=u,n[18]=m):m=n[18],m}let D;return n[19]!==y||n[20]!==S||n[21]!==T||n[22]!==s||n[23]!==o||n[24]!==g||n[25]!==i?(D=(0,C.jsx)(U,{variant:i,hostLabel:s,hostUrl:o,onRetry:y,onUseLocal:S,onUseRemote:T,isRetrying:g}),n[19]=y,n[20]=S,n[21]=T,n[22]=s,n[23]=o,n[24]=g,n[25]=i,n[26]=D):D=n[26],D}async function K(e){if(!t())return;let n=await d();await l({...n,...e===`local`?{defaultHostId:`local`}:{},initialHostChoiceCompleted:!0})}function q(e){let t=(0,x.c)(26),{onBack:n,onCliAvailable:r,mode:i,recoveryVariant:a,recoveryHostUrl:o,recoveryHostLabel:s,onEnterLocalSetup:c}=e,l=i===void 0?`first-launch`:i,u=a===void 0?`missing-default-host`:a,[d,f]=S.useState(!1),[p,m]=S.useState(!1),h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{m(!1),f(!1)},t[0]=h):h=t[0];let g;t[1]!==l||t[2]!==s||t[3]!==o||t[4]!==u?(g=[l,u,o,s],t[1]=l,t[2]=s,t[3]=o,t[4]=u,t[5]=g):g=t[5],S.useEffect(h,g);let _=p?`local-setup`:l;if(_===`recovery`){let e,n;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=()=>f(!1),n=()=>{f(!1),m(!0)},t[6]=e,t[7]=n):(e=t[6],n=t[7]);let r;t[8]===c?r=t[9]:(r=()=>{m(!0),c?.()},t[8]=c,t[9]=r);let i;return t[10]!==s||t[11]!==o||t[12]!==u||t[13]!==d||t[14]!==r?(i=(0,C.jsx)(G,{variant:u,hostUrl:o,hostLabel:s,showRemoteForm:d,onCloseRemoteForm:e,onSwitchToLocalFromRemote:n,onEnterLocalSetup:r}),t[10]=s,t[11]=o,t[12]=u,t[13]=d,t[14]=r,t[15]=i):i=t[15],i}if(_===`local-setup`){let e;t[16]!==n||t[17]!==p?(e=()=>{p?m(!1):n?.()},t[16]=n,t[17]=p,t[18]=e):e=t[18];let i;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(i=()=>f(!0),t[19]=i):i=t[19];let a;return t[20]!==r||t[21]!==p||t[22]!==e?(a=(0,C.jsx)(z,{onBack:e,onCliAvailable:r,isFromRecovery:p,onSwitchToRemote:i}),t[20]=r,t[21]=p,t[22]=e,t[23]=a):a=t[23],a}let v;return t[24]===r?v=t[25]:(v=(0,C.jsx)(P,{onCliAvailable:r}),t[24]=r,t[25]=v),v}export{q as OnboardingScreen};