ryco-cli 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-5exivY-1.cjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-CF5LuCHp.mjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-1GWENqcl.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CKH09tfT.mjs} +2 -2
- package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-BXLdjrht.cjs} +177 -4
- package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-WwWFTu61.mjs} +178 -5
- package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-93-TmCrO.mjs} +6 -5
- package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-BboMT9uk.cjs} +5 -4
- package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-0pRbJji3.cjs} +2 -2
- package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-BU9Myn87.mjs} +3 -3
- package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-BASi8pJ0.mjs} +4 -4
- package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DCsv-17W.cjs} +3 -3
- package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BTSiM3A8.cjs} +161 -14
- package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-D5LvIqUk.mjs} +162 -15
- package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-BTXRDCGB.cjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-e-4hvvZ_.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-26IofDAO.mjs} +2 -2
- package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-DWmwkA_y.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D-YHnxRe.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-DePct78W.mjs} +2 -2
- package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BhvLOmvn.mjs} +325 -38
- package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-CVeZ4n9-.cjs} +324 -37
- package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs} +1 -64
- package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs} +3 -48
- package/dist/bin.cjs +1280 -519
- package/dist/bin.mjs +1234 -474
- package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-BSU0lzYs.js} +1 -1
- package/dist/client/assets/AppearanceSettings-D7q0ujGK.js +1 -0
- package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-CZIFSvhd.js} +1 -1
- package/dist/client/assets/ChatRightPanel-CWHOIuiQ.js +188 -0
- package/dist/client/assets/{ChatThreadRouteView-CV6ETYG5.js → ChatThreadRouteView-bA7xWXzc.js} +1 -1
- package/dist/client/assets/{CommandPaletteDialog-C_H7R8S5.js → CommandPaletteDialog-DNYaVOZO.js} +1 -1
- package/dist/client/assets/CompositeRoot-B_KEfCUE.js +1 -0
- package/dist/client/assets/ConnectionsSettings-CLZPbx_K.js +1 -0
- package/dist/client/assets/{DiagnosticsSettings-B340S_mq.js → DiagnosticsSettings-DtzPCb6N.js} +1 -1
- package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-DuHnmWoE.js} +1 -1
- package/dist/client/assets/{DialogRoot-Ej1FVk-_.js → DialogRoot-BV25qAcA.js} +1 -1
- package/dist/client/assets/DialogTitle-DQsi-RTa.js +1 -0
- package/dist/client/assets/DialogTrigger-D0fA01C6.js +1 -0
- package/dist/client/assets/{DialogViewport-DvjAl76K.js → DialogViewport-CMV_BePU.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-BoiKnrii.js} +1 -1
- package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-BcPxJlMf.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-CW3RRi-7.js → KeybindingsSettings-LuI98pdF.js} +1 -1
- package/dist/client/assets/McpServersSettings-BFMuWYVV.js +6 -0
- package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-C2q_O1kP.js} +1 -1
- package/dist/client/assets/{OpinionatedPluginsSettings-Cjj23Fs4.js → OpinionatedPluginsSettings-Bqwct37O.js} +1 -1
- package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D2imiJ8M.js} +1 -1
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-CJgA--nK.js} +1 -1
- package/dist/client/assets/ProvidersSettingsPanel-B97vbeu6.js +1 -0
- package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.js → RedactedSensitiveText-B2GFTyfq.js} +1 -1
- package/dist/client/assets/RootAppShell-C1xTR98P.js +12 -0
- package/dist/client/assets/SettingsDialog-Q0Q8O5oH.js +2 -0
- package/dist/client/assets/SourceControlSettings-KAvoPTNi.js +1 -0
- package/dist/client/assets/StatisticsPanel-BzsQ444K.js +64 -0
- package/dist/client/assets/{ThreadStatusIndicators-B0leIJGD.js → ThreadStatusIndicators-Cw_jLVQf.js} +1 -1
- package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-D1WnSemH.js} +17 -17
- package/dist/client/assets/ThreadWorkspacePanel-L4qCPTOA.js +166 -0
- package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-CNmKa0BK.js} +1 -1
- package/dist/client/assets/chart-column-BWSKYZ_a.js +1 -0
- package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-TtDsiwDC.js} +1 -1
- package/dist/client/assets/chevron-up-zopJ_99l.js +1 -0
- package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-Ds6WJu8j.js} +1 -1
- package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-BoJGpdmJ.js} +1 -1
- package/dist/client/assets/clock-CzUHThzk.js +1 -0
- package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-KebG835b.js} +1 -1
- package/dist/client/assets/composerDraftStore-DpPEQ6BN.js +21 -0
- package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BQ0GGEfM.js} +1 -1
- package/dist/client/assets/{download-DLBlpp4h.js → download-CUiRE0N9.js} +1 -1
- package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-CwpGDtoT.js} +1 -1
- package/dist/client/assets/editorPreferences-jN7DKbyt.js +1 -0
- package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CBuXePtg.js} +1 -1
- package/dist/client/assets/{group-zDBPF7rR.js → group-BpZvxjG5.js} +1 -1
- package/dist/client/assets/{index-Dq8sT2lF.js → index-BKzXTNJ_.js} +2 -2
- package/dist/client/assets/{input-B9-RWT56.js → input-CgDawd6k.js} +1 -1
- package/dist/client/assets/kbd-QYSL97CK.js +1 -0
- package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CUTRYI_A.js} +1 -1
- package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-DFFiI7JY.js} +1 -1
- package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-DiOCbGH0.js} +0 -0
- package/dist/client/assets/{main-DxfpmoKJ.js → main-BgFGju3e.js} +3 -3
- package/dist/client/assets/main-D0UFdwts.css +2 -0
- package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BXCL909c.js} +1 -1
- package/dist/client/assets/{play-QloDGe4R.js → play-DI2LZohg.js} +1 -1
- package/dist/client/assets/plus-DzgIfHUF.js +1 -0
- package/dist/client/assets/projectAtoms-DXXpuERK.js +1 -0
- package/dist/client/assets/providerDriverMeta-CRNNp0q3.js +1 -0
- package/dist/client/assets/providerIconUtils-D-DFhem2.js +47 -0
- package/dist/client/assets/radio-group-_PPYg3YY.js +1 -0
- package/dist/client/assets/{refresh-cw-DkBMGllm.js → refresh-cw-BsQTNBXl.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-CRHo_s16.js} +1 -1
- package/dist/client/assets/{rightPanelRouteSearch-DfuWVvXN.js → rightPanelRouteSearch-CfmZ7osj.js} +1 -1
- package/dist/client/assets/{scale-BActunFu.js → scale-DDEJ-tvn.js} +1 -1
- package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-HgsI-ErG.js} +1 -1
- package/dist/client/assets/{separator-TInKeIDo.js → separator-ClnL4mUB.js} +1 -1
- package/dist/client/assets/{server-BtEG3NAw.js → server-Bbs3L-6_.js} +1 -1
- package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-CKQkgIwo.js} +1 -1
- package/dist/client/assets/settingsDialogStore-SG-W1q0A.js +1 -0
- package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-G5xVm-ZT.js} +1 -1
- package/dist/client/assets/sidebar-_u7SGgmC.js +1 -0
- package/dist/client/assets/sidebarStatusText-BTYnwflG.js +1 -0
- package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-CmUvhZGP.js} +1 -1
- package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-DhJRpdiw.js} +1 -1
- package/dist/client/assets/threadSelectionStore-ygmA4DNA.js +1 -0
- package/dist/client/assets/toast-DmA_ziPT.js +1 -0
- package/dist/client/assets/toggle-DGS7tKuj.js +1 -0
- package/dist/client/assets/{toggle-group-CnLjaHSL.js → toggle-group-Dtv1ZUFW.js} +1 -1
- package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-Dor1DnBx.js} +1 -1
- package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-C2G3VGoV.js} +1 -1
- package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-Bpz3xGu5.js} +1 -1
- package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-C3rtxuqZ.js} +1 -1
- package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-ypSbzG0P.js} +1 -1
- package/dist/client/assets/useLabelableId-Bc7KEnHU.js +1 -0
- package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-_4hWGSey.js} +1 -1
- package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
- package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DdSTtxYd.js} +1 -1
- package/dist/client/assets/{wrench-je4QOyG-.js → wrench-C4jdis40.js} +1 -1
- package/dist/client/assets/x-CG2WU63t.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/{collectUint8StreamText-C2z5Y8tF.mjs → collectUint8StreamText-Lv4GGI79.mjs} +269 -14
- package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-uNXVRHOf.cjs} +291 -12
- package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-3SD-Q5xh.cjs} +1 -1
- package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-CkPEptun.mjs} +1 -1
- package/package.json +1 -1
- package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
- package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
- package/dist/client/assets/CompositeRoot-DjnzUIwC.js +0 -1
- package/dist/client/assets/ConnectionsSettings-hArR4Oe3.js +0 -1
- package/dist/client/assets/DialogTitle-H1yIMmA9.js +0 -1
- package/dist/client/assets/DialogTrigger-BHMq_K2G.js +0 -1
- package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
- package/dist/client/assets/ProvidersSettingsPanel-D15EeWAq.js +0 -1
- package/dist/client/assets/RootAppShell-CWBPSA2w.js +0 -12
- package/dist/client/assets/SettingsDialog-oJCE5foT.js +0 -2
- package/dist/client/assets/SourceControlSettings-CPnlMxNm.js +0 -1
- package/dist/client/assets/ThreadWorkspacePanel-qF9y6QT9.js +0 -166
- package/dist/client/assets/composerDraftStore-D12lUSfh.js +0 -21
- package/dist/client/assets/editorPreferences-BLeEBSD_.js +0 -1
- package/dist/client/assets/folder-open-DMjz0lpx.js +0 -1
- package/dist/client/assets/kbd-aeSsjiPI.js +0 -1
- package/dist/client/assets/main-C57RhHZ_.css +0 -2
- package/dist/client/assets/plus-4Oy56d-3.js +0 -1
- package/dist/client/assets/projectAtoms-DUEBb7Zz.js +0 -1
- package/dist/client/assets/providerDriverMeta-Dwi6Zqgd.js +0 -1
- package/dist/client/assets/providerIconUtils-uhWb4bdg.js +0 -47
- package/dist/client/assets/radio-group-DHyQlLeX.js +0 -1
- package/dist/client/assets/settingsDialogStore-BINi7pdD.js +0 -1
- package/dist/client/assets/sidebar-DHwNQmWp.js +0 -1
- package/dist/client/assets/threadSelectionStore-C0ig4405.js +0 -1
- package/dist/client/assets/toast-DE7a4wkW.js +0 -1
- package/dist/client/assets/toggle-BIW4AyPY.js +0 -1
- package/dist/client/assets/useLabelableId-DBAgv9qQ.js +0 -1
- package/dist/client/assets/useTheme-Dv42Z8uy.js +0 -1
- package/dist/client/assets/x-fI9snvD3.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{Br as n,Ct as r,Hr as i,Ni as a,Nr as o,St as s,Wn as c,Xn as l,_n as u,_t as d,dn as f,dt as p,fn as m,ft as h,gn as g,hn as _,lt as v,mn as y,mt as b,ot as x,pn as S,pt as C,rt as w,un as T,ut as E,vn as D,vt as O,wt as k,xt as A,yt as j,zr as M}from"./composerDraftStore-D12lUSfh.js";var N=e(t());function P(e){return e==null||e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`}var F=`data-composite-item-active`,I=[];function L(e){let{itemSizes:t,cols:n=1,loopFocus:a=!0,dense:o=!1,orientation:c=`both`,direction:x,highlightedIndex:w,onHighlightedIndexChange:j,rootRef:M,enableHomeAndEndKeys:F=!1,stopEventPropagation:L=!1,disabledIndices:z,modifierKeys:B=I}=e,[V,H]=N.useState(0),U=n>1,W=N.useRef(null),G=i(W,M),K=N.useRef([]),q=N.useRef(!1),J=w??V,Y=l((e,t=!1)=>{if((j??H)(e),t){let t=K.current[e];k(W.current,t,x,c)}}),X=l(e=>{if(e.size===0||q.current)return;q.current=!0;let t=Array.from(e.keys()),n=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,r=n?t.indexOf(n):-1;r!==-1&&Y(r),k(W.current,n,x,c)}),Z=N.useMemo(()=>({"aria-orientation":c===`both`?void 0:c,ref:G,onFocus(e){!W.current||!r(e.target)||e.target.setSelectionRange(0,e.target.value.length??0)},onKeyDown(e){let i=F?v:p;if(!i.has(e.key)||R(e,B)||!W.current)return;let l=x===`rtl`,w=l?h:C,k={horizontal:w,vertical:E,both:w}[c],j=l?C:h,M={horizontal:j,vertical:b,both:j}[c];if(r(e.target)&&!P(e.target)){let t=e.target.selectionStart,n=e.target.selectionEnd,r=e.target.value??``;if(t==null||e.shiftKey||t!==n||e.key!==M&&t<r.length||e.key!==k&&t>0)return}let N=J,I=g(K,z),V=_(K,z);if(U){let r=t||Array.from({length:K.current.length},()=>({width:1,height:1})),i=T(r,n,o),s=i.findIndex(e=>e!=null&&!D(K,e,z)),u=i.reduce((e,t,n)=>t!=null&&!D(K,t,z)?n:e,-1);N=i[y({current:i.map(e=>e?K.current[e]:null)},{event:e,orientation:c,loopFocus:a,cols:n,disabledIndices:S([...z||K.current.map((e,t)=>D(K,t)?t:void 0),void 0],i),minIndex:s,maxIndex:u,prevIndex:m(J>V?I:J,r,i,n,e.key===`ArrowDown`?`bl`:e.key===`ArrowRight`?`tr`:`tl`),rtl:l})]}let H={horizontal:[w],vertical:[E],both:[w,E]}[c],G={horizontal:[j],vertical:[b],both:[j,b]}[c],q=U?i:{horizontal:F?O:d,vertical:F?s:A,both:i}[c];F&&(e.key===`Home`?N=I:e.key===`End`&&(N=V)),N===J&&(H.includes(e.key)||G.includes(e.key))&&(N=a&&N===V&&H.includes(e.key)?I:a&&N===I&&G.includes(e.key)?V:f(K,{startingIndex:N,decrement:G.includes(e.key),disabledIndices:z})),N!==J&&!u(K,N)&&(L&&e.stopPropagation(),q.has(e.key)&&e.preventDefault(),Y(N,!0),queueMicrotask(()=>{K.current[N]?.focus()}))}}),[n,o,x,z,K,F,J,U,t,a,G,B,Y,c,L]);return N.useMemo(()=>({props:Z,highlightedIndex:J,onHighlightedIndexChange:Y,elementsRef:K,disabledIndices:z,onMapChange:X,relayKeyboardEvent:Z.onKeyDown}),[Z,J,Y,K,z,X])}function R(e,t){for(let n of j.values())if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}var z=a();function B(e){let{render:t,className:r,refs:i=M,props:a=M,state:s=n,stateAttributesMapping:l,highlightedIndex:u,onHighlightedIndexChange:d,orientation:f,dense:p,itemSizes:m,loopFocus:h,cols:g,enableHomeAndEndKeys:_,onMapChange:v,stopEventPropagation:y=!0,rootRef:b,disabledIndices:S,modifierKeys:C,highlightItemOnHover:T=!1,tag:E=`div`,...D}=e,{props:O,highlightedIndex:k,onHighlightedIndexChange:A,elementsRef:j,onMapChange:P,relayKeyboardEvent:F}=L({itemSizes:m,cols:g,loopFocus:h,dense:p,orientation:f,highlightedIndex:u,onHighlightedIndexChange:d,rootRef:b,stopEventPropagation:y,enableHomeAndEndKeys:_,direction:x(),disabledIndices:S,modifierKeys:C}),I=o(E,e,{state:s,ref:i,props:[O,...a,D],stateAttributesMapping:l}),R=N.useMemo(()=>({highlightedIndex:k,onHighlightedIndexChange:A,highlightItemOnHover:T,relayKeyboardEvent:F}),[k,A,T,F]);return(0,z.jsx)(c.Provider,{value:R,children:(0,z.jsx)(w,{elementsRef:j,onMapChange:e=>{v?.(e),P(e)},children:I})})}export{F as n,B as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{t as n}from"./compiler-runtime-BNrXlsa1.js";import{an as r}from"./react-CjD7iThp.js";import{Kt as i,S as a,X as o,_ as s,g as c,h as l,pn as u,qt as d,x as f,y as p}from"./projectAtoms-DUEBb7Zz.js";import{A as m,B as h,G as g,H as _,Jr as v,M as y,Ni as b,O as x,R as S,Sr as C,V as w,Xr as T,br as E,k as D,q as O,z as k}from"./composerDraftStore-D12lUSfh.js";import{a as A,i as j,o as M}from"./toast-DE7a4wkW.js";import{n as N,t as P}from"./pairingUrl-rQM9kSGT.js";import{d as F,f as I,h as L,o as R,s as ee,u as te}from"./primary-CSkhdakK.js";import{At as ne,D as z,Et as re,Ft as ie,Hn as ae,It as oe,Lt as se,Mt as ce,Nt as le,Pt as ue,Rt as de,S as fe,Tt as pe,Vn as me,b as he,jt as B,nr as ge,x as _e}from"./providerIconUtils-uhWb4bdg.js";import{t as ve}from"./plus-4Oy56d-3.js";import{t as V}from"./refresh-cw-DkBMGllm.js";import{t as ye}from"./triangle-alert-DJef_Uvh.js";import{r as be,t as xe}from"./hostedPairing-DAdvNuk3.js";import{t as Se}from"./input-B9-RWT56.js";import{t as Ce}from"./scroll-area-D-YOUG02.js";import{a as we,i as Te,n as Ee,o as De,r as Oe,s as ke,t as Ae}from"./alert-dialog-lMfKpG2t.js";import{t as je}from"./AnimatedHeight-DgItDSis.js";import{n as Me,t as Ne}from"./group-zDBPF7rR.js";import{a as Pe,i as Fe,n as Ie,r as H}from"./settingsLayout-D22Mm0u3.js";var Le=T(`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`}]]),Re=T(`qr-code`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),U=e(t(),1),W=n();function ze(e,t){let n=new URL(e);return n.pathname=`/pair`,N(n,t).toString()}function Be(e,t){return new URL(e).protocol===`https:`?xe({host:e,token:t}):null}var Ve=class e{static Ecc;static encodeText(t,n){let r=J.makeSegments(t);return e.encodeSegments(r,n)}static encodeBinary(t,n){let r=J.makeBytes(t);return e.encodeSegments([r],n)}static encodeSegments(t,n,r=1,i=40,a=-1,o=!0){if(!(e.MIN_VERSION<=r&&r<=i&&i<=e.MAX_VERSION)||a<-1||a>7)throw RangeError(`Invalid value`);let s,c;for(s=r;;s++){let r=e.getNumDataCodewords(s,n)*8,a=J.getTotalBits(t,s);if(a<=r){c=a;break}if(s>=i)throw RangeError(`Data too long`)}for(let t of[e.Ecc.MEDIUM,e.Ecc.QUARTILE,e.Ecc.HIGH])o&&c<=e.getNumDataCodewords(s,t)*8&&(n=t);let l=[];for(let e of t){G(e.mode.modeBits,4,l),G(e.numChars,e.mode.numCharCountBits(s),l);for(let t of e.getData())l.push(t)}q(l.length==c);let u=e.getNumDataCodewords(s,n)*8;q(l.length<=u),G(0,Math.min(4,u-l.length),l),G(0,(8-l.length%8)%8,l),q(l.length%8==0);for(let e=236;l.length<u;e^=253)G(e,8,l);let d=[];for(;d.length*8<l.length;)d.push(0);return l.forEach((e,t)=>d[t>>>3]|=e<<7-(t&7)),new e(s,n,d,a)}version;errorCorrectionLevel;size;mask;modules=[];isFunction=[];constructor(t,n,r,i){if(this.version=t,this.errorCorrectionLevel=n,t<e.MIN_VERSION||t>e.MAX_VERSION)throw RangeError(`Version value out of range`);if(i<-1||i>7)throw RangeError(`Mask value out of range`);this.size=t*4+17;let a=[];for(let e=0;e<this.size;e++)a.push(!1);for(let e=0;e<this.size;e++)this.modules.push(a.slice()),this.isFunction.push(a.slice());this.drawFunctionPatterns();let o=this.addEccAndInterleave(r);if(this.drawCodewords(o),i==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(i=t,e=n),this.applyMask(t)}}q(0<=i&&i<=7),this.mask=i,this.applyMask(i),this.drawFormatBits(i),this.isFunction=[]}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let r=(t<<10|n)^21522;q(r>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,K(r,e));this.setFunctionModule(8,7,K(r,6)),this.setFunctionModule(8,8,K(r,7)),this.setFunctionModule(7,8,K(r,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,K(r,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,K(r,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,K(r,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;q(t>>>18==0);for(let e=0;e<18;e++){let n=K(t,e),r=this.size-11+e%3,i=Math.floor(e/3);this.setFunctionModule(r,i,n),this.setFunctionModule(i,r,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(t){let n=this.version,r=this.errorCorrectionLevel;if(t.length!=e.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let i=e.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],a=e.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],o=Math.floor(e.getNumRawDataModules(n)/8),s=i-o%i,c=Math.floor(o/i),l=[],u=e.reedSolomonComputeDivisor(a);for(let n=0,r=0;n<i;n++){let i=t.slice(r,r+c-a+(n<s?0:1));r+=i.length;let o=e.reedSolomonComputeRemainder(i,u);n<s&&i.push(0),l.push(i.concat(o))}let d=[];for(let e=0;e<l[0].length;e++)l.forEach((t,n)=>{(e!=c-a||n>=s)&&d.push(t[e])});return q(d.length==o),d}drawCodewords(t){if(t.length!=Math.floor(e.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let e=this.size-1;e>=1;e-=2){e==6&&(e=5);for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let a=e-i,o=e+1&2?r:this.size-1-r;!this.isFunction[o][a]&&n<t.length*8&&(this.modules[o][a]=K(t[n>>>3],7-(n&7)),n++)}}q(n==t.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let t=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]===r?(i++,i==5?t+=e.PENALTY_N1:i>5&&t++):(this.finderPenaltyAddHistory(i,a),r||(t+=this.finderPenaltyCountPatterns(a)*e.PENALTY_N3),r=this.modules[n][o],i=1);t+=this.finderPenaltyTerminateAndCount(r,i,a)*e.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]===r?(i++,i==5?t+=e.PENALTY_N1:i>5&&t++):(this.finderPenaltyAddHistory(i,a),r||(t+=this.finderPenaltyCountPatterns(a)*e.PENALTY_N3),r=this.modules[o][n],i=1);t+=this.finderPenaltyTerminateAndCount(r,i,a)*e.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(t+=e.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+ +!!t,n);let r=this.size*this.size,i=Math.ceil(Math.abs(n*20-r*10)/r)-1;return q(0<=i&&i<=9),t+=i*e.PENALTY_N4,q(0<=t&&t<=2568888),t}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(t){if(t<e.MIN_VERSION||t>e.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*t+128)*t+64;if(t>=2){let e=Math.floor(t/7)+2;n-=(25*e-10)*e-55,t>=7&&(n-=36)}return q(208<=n&&n<=29648),n}static getNumDataCodewords(t,n){return Math.floor(e.getNumRawDataModules(t)/8)-e.ECC_CODEWORDS_PER_BLOCK[n.ordinal][t]*e.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][t]}static reedSolomonComputeDivisor(t){if(t<1||t>255)throw RangeError(`Degree out of range`);let n=[];for(let e=0;e<t-1;e++)n.push(0);n.push(1);let r=1;for(let i=0;i<t;i++){for(let t=0;t<n.length;t++)n[t]=e.reedSolomonMultiply(n[t],r),t+1<n.length&&(n[t]^=n[t+1]);r=e.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(t,n){let r=n.map(e=>0);for(let i of t){let t=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=e.reedSolomonMultiply(n,t))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return q(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];q(t<=this.size*3);let n=t>0&&e[2]===t&&e[3]===t*3&&e[4]===t&&e[5]===t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]===0&&(e+=this.size),t.pop(),t.unshift(e)}static MIN_VERSION=1;static MAX_VERSION=40;static PENALTY_N1=3;static PENALTY_N2=3;static PENALTY_N3=40;static PENALTY_N4=10;static ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]];static NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]]};function G(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function K(e,t){return(e>>>t&1)!=0}function q(e){if(!e)throw Error(`Assertion error`)}var J=class e{static Mode;static makeBytes(t){let n=[];for(let e of t)G(e,8,n);return new e(e.Mode.BYTE,t.length,n)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let n=[];for(let e=0;e<t.length;){let r=Math.min(t.length-e,3);G(parseInt(t.substring(e,e+r),10),r*3+1,n),e+=r}return new e(e.Mode.NUMERIC,t.length,n)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let n=[],r;for(r=0;r+2<=t.length;r+=2){let i=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(r))*45;i+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(r+1)),G(i,11,n)}return r<t.length&&G(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(r)),6,n),new e(e.Mode.ALPHANUMERIC,t.length,n)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let n=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)G(t,8,n);else if(t<16384)G(2,2,n),G(t,14,n);else if(t<1e6)G(6,3,n),G(t,21,n);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,n)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}mode;numChars;bitData;constructor(e,t,n){if(this.mode=e,this.numChars=t,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}static NUMERIC_REGEX=/^[0-9]*$/;static ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/;static ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`},He=class e{static LOW=new e(0,1);static MEDIUM=new e(1,0);static QUARTILE=new e(2,3);static HIGH=new e(3,2);ordinal;formatBits;constructor(e,t){this.ordinal=e,this.formatBits=t}},Y=class e{static NUMERIC=new e(1,[10,12,14]);static ALPHANUMERIC=new e(2,[9,11,13]);static BYTE=new e(4,[8,16,16]);static KANJI=new e(8,[8,10,12]);static ECI=new e(7,[0,0,0]);modeBits;numBitsCharCount;constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};Ve.Ecc=He,J.Mode=Y;var X=b(),Ue={L:Ve.Ecc.LOW,M:Ve.Ecc.MEDIUM,Q:Ve.Ecc.QUARTILE,H:Ve.Ecc.HIGH};function We(e,t){let n=[];for(let r=0;r<e.size;r+=1){let i=-1;for(let a=0;a<=e.size;a+=1){if(a<e.size&&e.getModule(a,r)){i===-1&&(i=a);continue}i!==-1&&(n.push(`M${i+t} ${r+t}h${a-i}v1H${i+t}z`),i=-1)}}return n.join(``)}var Ge=(0,U.memo)(function(e){let t=(0,W.c)(38),{value:n,size:r,level:i,marginSize:a,title:o,className:s,foregroundColor:c,backgroundColor:l}=e,u=r===void 0?128:r,d=i===void 0?`L`:i,f=a===void 0?0:a,p=c===void 0?`#000`:c,m=l===void 0?`#fff`:l,h,g,_,v,y,b,x,S,C,w,T;if(t[0]!==m||t[1]!==s||t[2]!==d||t[3]!==f||t[4]!==u||t[5]!==o||t[6]!==n){let e=Ve.encodeText(n,Ue[d]),r=e.size+f*2;C=`http://www.w3.org/2000/svg`,w=`0 0 ${r} ${r}`,T=u,h=u,g=`crispEdges`,_=o?`img`:void 0,v=o,y=s,t[18]===o?b=t[19]:(b=o?(0,X.jsx)(`title`,{children:o}):null,t[18]=o,t[19]=b),t[20]!==m||t[21]!==r?(x=(0,X.jsx)(`rect`,{width:r,height:r,fill:m}),t[20]=m,t[21]=r,t[22]=x):x=t[22],S=We(e,f),t[0]=m,t[1]=s,t[2]=d,t[3]=f,t[4]=u,t[5]=o,t[6]=n,t[7]=h,t[8]=g,t[9]=_,t[10]=v,t[11]=y,t[12]=b,t[13]=x,t[14]=S,t[15]=C,t[16]=w,t[17]=T}else h=t[7],g=t[8],_=t[9],v=t[10],y=t[11],b=t[12],x=t[13],S=t[14],C=t[15],w=t[16],T=t[17];let E;t[23]!==p||t[24]!==S?(E=(0,X.jsx)(`path`,{d:S,fill:p}),t[23]=p,t[24]=S,t[25]=E):E=t[25];let D;return t[26]!==h||t[27]!==g||t[28]!==_||t[29]!==v||t[30]!==y||t[31]!==b||t[32]!==x||t[33]!==E||t[34]!==C||t[35]!==w||t[36]!==T?(D=(0,X.jsxs)(`svg`,{xmlns:C,viewBox:w,width:T,height:h,shapeRendering:g,role:_,"aria-label":v,className:y,children:[b,x,E]}),t[26]=h,t[27]=g,t[28]=_,t[29]=v,t[30]=y,t[31]=b,t[32]=x,t[33]=E,t[34]=C,t[35]=w,t[36]=T,t[37]=D):D=t[37],D}),Ke=443,qe=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function Je(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:qe.format(t)}function Ye(e){let t=(0,W.c)(21),{tooltipText:n,dotClassName:r,pingClassName:i}=e,a;t[0]===i?a=t[1]:(a=i?(0,X.jsx)(`span`,{className:C(`absolute inline-flex h-full w-full animate-ping rounded-full`,i)}):null,t[0]=i,t[1]=a);let o;t[2]===r?o=t[3]:(o=C(`relative inline-flex size-2 rounded-full`,r),t[2]=r,t[3]=o);let s;t[4]===o?s=t[5]:(s=(0,X.jsx)(`span`,{className:o}),t[4]=o,t[5]=s);let c;t[6]!==a||t[7]!==s?(c=(0,X.jsxs)(X.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,X.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,X.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,X.jsx)(y,{render:d}),t[14]=d,t[15]=f);let p;t[16]===n?p=t[17]:(p=(0,X.jsx)(m,{side:`top`,className:`max-w-80 whitespace-pre-wrap leading-tight`,children:n}),t[16]=n,t[17]=p);let h;return t[18]!==f||t[19]!==p?(h=(0,X.jsxs)(D,{children:[f,p]}),t[18]=f,t[19]=p,t[20]=h):h=t[20],h}function Xe(e,t,n){let r=e?.connectionState??`disconnected`;if(r===`connected`){let r=e?.connectedAt??t.lastConnectedAt;return r?`Connected for ${me(r,n)}`:null}return r===`connecting`?null:r===`error`?e?.lastError??`An unknown connection error occurred.`:t.lastConnectedAt?`Last connected at ${Je(t.lastConnectedAt)}`:`Not connected yet.`}function Ze(e){let t=e.username?`${e.username}@${e.hostname}`:e.hostname;return e.port?`${t}:${e.port}`:t}function Qe(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 $e(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=be(n);if(r)return{host:r.host,pairingCode:r.token};let i=P(n);return i?{host:n.origin,pairingCode:i}:null}catch{return null}}function et(e){let t=$e(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 tt(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 nt=`border-t border-border/60 px-4 py-4 first:border-t-0 sm:px-5`,rt=`border-t border-border/60 px-4 py-2.5 first:border-t-0 sm:px-5`,it=`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`;function at(e){return nt}function ot(e,t){return e===`endpoint-rail`?C(`relative border-t border-border/60 px-4 py-3 first:border-t-0 sm:px-5`,!t&&`bg-muted/20`):C(rt,!t&&`bg-muted/24`)}function st(e){return[...e].toSorted((e,t)=>new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime())}function ct(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 lt(e){return{...e,createdAt:r(e.createdAt),expiresAt:r(e.expiresAt)}}function ut(e){return{...e,issuedAt:r(e.issuedAt),expiresAt:r(e.expiresAt),lastConnectedAt:e.lastConnectedAt===null?null:r(e.lastConnectedAt)}}function dt(e,t){let n=e.findIndex(e=>e.id===t.id);if(n===-1)return st([...e,t]);let r=[...e];return r[n]=t,st(r)}function ft(e,t){return e.filter(e=>e.id!==t)}function pt(e,t){let n=e.findIndex(e=>e.sessionId===t.sessionId);if(n===-1)return ct([...e,t]);let r=[...e];return r[n]=t,ct(r)}function mt(e,t){return e.filter(e=>e.sessionId!==t)}function ht(e,t){let n=e.filter(e=>e.status!==`unavailable`);if(t){let e=n.find(e=>_t(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 gt(e){return e.id.startsWith(`tailscale-magicdns:`)}function _t(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(gt(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 vt(e){switch(e){case`mixed-content-blocked`:return`Hosted app blocked`;case`requires-configuration`:return`Setup required for hosted app`;default:return null}}function yt(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 Z(e,t){return e.compatibility.hostedHttpsApp===`compatible`?Be(e.httpBaseUrl,t)??ze(e.httpBaseUrl,t):ze(e.httpBaseUrl,t)}function bt(e){return N(new URL(`/pair`,window.location.href),e).toString()}function xt(e){try{let t=new URL(e);return t.pathname===`/pair`&&t.searchParams.has(`host`)}catch{return!1}}var St=(0,U.memo)(function(e){let t=(0,W.c)(146),{pairingLink:n,endpointUrl:r,endpoints:i,defaultEndpointKey:a,presentation:o,revokingPairingLinkId:s,onRevoke:c}=e,l=o===void 0?`current`:o,u=Pe(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,U.useState)(!1),y;t[2]===n.credential?y=t[3]:(y=bt(n.credential),t[2]=n.credential,t[3]=y);let b=y,x;t[4]!==r||t[5]!==n.credential?(x=r!=null&&r!==``?Be(r,n.credential):null,t[4]=r,t[5]=n.credential,t[6]=x):x=t[6];let C=x,T;if(t[7]!==a||t[8]!==i||t[9]!==n.credential){let e=ht(i,a);T=e?Z(e,n.credential):null,t[7]=a,t[8]=i,t[9]=n.credential,t[10]=T}else T=t[10];let D=T,N;if(t[11]!==i||t[12]!==n.credential){let e;t[14]===n.credential?e=t[15]:(e=e=>{let t=Z(e,n.credential);return{key:_t(e),label:e.label,url:t,detail:xt(t)?`Hosted app link`:`Backend pairing URL`}},t[14]=n.credential,t[15]=e),N=i.filter(Mt).map(e),t[11]=i,t[12]=n.credential,t[13]=N}else N=t[13];let P=N,F;t[16]!==b||t[17]!==D||t[18]!==r||t[19]!==C||t[20]!==n.credential?(F=D??(r!=null&&r!==``?C??ze(r,n.credential):L(window.location.hostname)?null:b),t[16]=b,t[17]=D,t[18]=r,t[19]=C,t[20]=n.credential,t[21]=F):F=t[21];let I=F,R=I??n.credential,ee=I!==null&&xt(I),te=typeof window<`u`&&window.isSecureContext&&navigator.clipboard?.writeText!=null,z;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(z={onCopy:Nt,onError:(e,t)=>{m(!0),j.add(A({type:`error`,title:te?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:te?e.message:`Showing the full value instead.`}))}},t[22]=z):z=t[22];let{copyToClipboard:re}=M(z),me;t[23]===re?me=t[24]:(me=(e,t)=>{re(e,t)},t[23]=re,t[24]=me);let B=me,ge=Pt,ve;t[25]!==B||t[26]!==n.credential?(ve=()=>{B(n.credential,`code`)},t[25]=B,t[26]=n.credential,t[27]=ve):ve=t[27];let V=ve,ye;t[28]!==B||t[29]!==I?(ye=()=>{I&&B(I,ge(I))},t[28]=B,t[29]=I,t[30]=ye):ye=t[30];let be=ye,xe;t[31]===n.expiresAt?xe=t[32]:(xe=Je(n.expiresAt),t[31]=n.expiresAt,t[32]=xe);let Se=xe,Ce=n.role===`owner`?`Owner`:`Client`,we=n.label??`${Ce} link`,Te;t[33]!==a||t[34]!==P?(Te=P.find(e=>e.key===a)??P[0]??null,t[33]=a,t[34]=P,t[35]=Te):Te=t[35];let Ee=Te?.label??`URL`,De,Oe,ke,Ae,je,Fe,Ie,H,Le;if(t[36]!==B||t[37]!==Ee||t[38]!==P||t[39]!==Se||t[40]!==f||t[41]!==V||t[42]!==be||t[43]!==p||t[44]!==u||t[45]!==n.createdAt||t[46]!==n.expiresAt||t[47]!==l||t[48]!==we||t[49]!==Ce||t[50]!==I){Le=Symbol.for(`react.early_return_sentinel`);bb0:{let e=P.filter(Ft),r=P.filter(It),i;t[60]!==B||t[61]!==P?(i=(e,t)=>{let n=e===void 0?P:e,r=t===void 0?!0:t;return n.map(e=>(0,X.jsx)(w,{onClick:()=>B(e.url,ge(e.url)),children:(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block truncate`,children:e.label}),r?(0,X.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:e.detail}):null]})},e.key))},t[60]=B,t[61]=P,t[62]=i):i=t[62];let a=i,o;t[63]===V?o=t[64]:(o=e=>(0,X.jsx)(w,{onClick:V,children:(0,X.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,X.jsx)(`span`,{className:`block truncate`,children:`Copy code`}),e===void 0||e?(0,X.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:`Token only`}):null]})}),t[63]=V,t[64]=o);let s=o,c;t[65]===a?c=t[66]:(c=(e,t,n)=>t.length>0?(0,X.jsxs)(X.Fragment,{children:[n?(0,X.jsx)(g,{}):null,(0,X.jsxs)(k,{children:[(0,X.jsx)(h,{children:e}),a(t,!1)]})]}):null,t[65]=a,t[66]=c);let d=c,y=t=>(0,X.jsxs)(X.Fragment,{children:[t?.codeFirst?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(k,{children:[(0,X.jsx)(h,{children:`Pairing code`}),s(!1)]}),P.length>0?(0,X.jsx)(g,{}):null]}):null,d(`Pairing URLs`,e,!1),d(`Hosted app link`,r,e.length>0),t?.codeFirst?null:(0,X.jsxs)(X.Fragment,{children:[P.length>0?(0,X.jsx)(g,{}):null,(0,X.jsxs)(k,{children:[(0,X.jsx)(h,{children:`Pairing code`}),s(!1)]})]})]});if(f<=u){Le=null;break bb0}t[67]===l?H=t[68]:(H=at(l),t[67]=l,t[68]=H),Fe=it;let b;t[69]===n.createdAt?b=t[70]:(b=Je(n.createdAt),t[69]=n.createdAt,t[70]=b);let x=`Link created at ${b}`,C;t[71]===x?C=t[72]:(C=(0,X.jsx)(Ye,{tooltipText:x,dotClassName:`bg-amber-400`}),t[71]=x,t[72]=C);let T;t[73]===we?T=t[74]:(T=(0,X.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:we}),t[73]=we,t[74]=T);let D;t[75]===I?D=t[76]:(D=I?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(fe,{openOnHover:!0,delay:250,closeDelay:100,render:(0,X.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,X.jsx)(Re,{"aria-hidden":!0,className:`size-3`})}),(0,X.jsx)(_e,{side:`top`,align:`start`,tooltipStyle:!0,className:`w-max`,children:(0,X.jsx)(Ge,{value:I,size:88,level:`M`,marginSize:2,title:`Pairing link — scan to open on another device`})})]}):null,t[75]=I,t[76]=D);let A;t[77]===D?A=t[78]:(A=(0,X.jsx)(he,{children:D}),t[77]=D,t[78]=A);let j;t[79]!==C||t[80]!==T||t[81]!==A?(j=(0,X.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[C,T,A]}),t[79]=C,t[80]=T,t[81]=A,t[82]=j):j=t[82];let M;t[83]!==u||t[84]!==n.expiresAt?(M=ae(n.expiresAt,u),t[83]=u,t[84]=n.expiresAt,t[85]=M):M=t[85];let N;t[86]!==Ce||t[87]!==M?(N=[Ce,M],t[86]=Ce,t[87]=M,t[88]=N):N=t[88];let F=N.join(` · `),L;t[89]!==Se||t[90]!==F?(L=(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,title:Se,children:F}),t[89]=Se,t[90]=F,t[91]=L):L=t[91];let R;t[92]===I?R=t[93]:(R=I===null?(0,X.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]=I,t[93]=R),t[94]!==j||t[95]!==L||t[96]!==R?(Ie=(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[j,L,R]}),t[94]=j,t[95]=L,t[96]=R,t[97]=Ie):Ie=t[97],je=`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,De=ne,Oe=p,ke=m,Ae=te?(0,X.jsx)(X.Fragment,{children:I?(0,X.jsxs)(Ne,{"aria-label":`Copy selected endpoint`,children:[(0,X.jsx)(E,{size:`xs`,variant:`outline`,className:`max-w-56`,title:`Copy pairing URL for: ${Ee}`,onClick:be,children:(0,X.jsxs)(`span`,{className:`truncate`,children:[`Copy pairing URL for: `,Ee]})}),(0,X.jsx)(Me,{}),(0,X.jsxs)(S,{children:[(0,X.jsx)(O,{render:(0,X.jsx)(E,{size:`icon-xs`,variant:`outline`,"aria-label":`Choose endpoint to copy`}),children:(0,X.jsx)(v,{className:`size-3.5`})}),(0,X.jsx)(_,{align:`end`,className:`min-w-60`,children:y()})]})]}):(0,X.jsx)(E,{size:`xs`,variant:`outline`,onClick:V,children:`Copy code`})}):(0,X.jsx)(de,{render:(0,X.jsx)(E,{size:`xs`,variant:`outline`}),children:I?`Show link`:`Show code`})}t[36]=B,t[37]=Ee,t[38]=P,t[39]=Se,t[40]=f,t[41]=V,t[42]=be,t[43]=p,t[44]=u,t[45]=n.createdAt,t[46]=n.expiresAt,t[47]=l,t[48]=we,t[49]=Ce,t[50]=I,t[51]=De,t[52]=Oe,t[53]=ke,t[54]=Ae,t[55]=je,t[56]=Fe,t[57]=Ie,t[58]=H,t[59]=Le}else De=t[51],Oe=t[52],ke=t[53],Ae=t[54],je=t[55],Fe=t[56],Ie=t[57],H=t[58],Le=t[59];if(Le!==Symbol.for(`react.early_return_sentinel`))return Le;let Ve=I?ee?`Hosted app pairing link`:`Pairing link`:`Pairing code`,G;t[98]===Ve?G=t[99]:(G=(0,X.jsx)(se,{children:Ve}),t[98]=Ve,t[99]=G);let K=I?ee?`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.`,q;t[100]===K?q=t[101]:(q=(0,X.jsx)(ce,{children:K}),t[100]=K,t[101]=q);let J;t[102]!==G||t[103]!==q?(J=(0,X.jsxs)(ue,{children:[G,q]}),t[102]=G,t[103]=q,t[104]=J):J=t[104];let He=I?4:3,Y;t[105]!==R||t[106]!==He?(Y=(0,X.jsx)(pe,{readOnly:!0,value:R,rows:He,className:`text-xs leading-relaxed`,onFocus:Lt,onClick:Rt}),t[105]=R,t[106]=He,t[107]=Y):Y=t[107];let Ue;t[108]===I?Ue=t[109]:(Ue=I?(0,X.jsx)(`div`,{className:`flex justify-center rounded-xl border border-border/60 bg-muted/30 p-4`,children:(0,X.jsx)(Ge,{value:I,size:132,level:`M`,marginSize:2,title:`Pairing link — scan to open on another device`})}):null,t[108]=I,t[109]=Ue);let We;t[110]!==Y||t[111]!==Ue?(We=(0,X.jsxs)(ie,{className:`space-y-4`,children:[Y,Ue]}),t[110]=Y,t[111]=Ue,t[112]=We):We=t[112];let Ke;t[113]===Symbol.for(`react.memo_cache_sentinel`)?(Ke=(0,X.jsx)(E,{variant:`outline`,onClick:()=>m(!1),children:`Done`}),t[113]=Ke):Ke=t[113];let qe;t[114]===V?qe=t[115]:(qe=te?(0,X.jsx)(E,{variant:`outline`,size:`xs`,onClick:V,children:`Copy code`}):null,t[114]=V,t[115]=qe);let Xe;t[116]===qe?Xe=t[117]:(Xe=(0,X.jsxs)(le,{variant:`bare`,children:[Ke,qe]}),t[116]=qe,t[117]=Xe);let Ze;t[118]!==J||t[119]!==We||t[120]!==Xe?(Ze=(0,X.jsxs)(oe,{className:`max-w-md`,children:[J,We,Xe]}),t[118]=J,t[119]=We,t[120]=Xe,t[121]=Ze):Ze=t[121];let Qe;t[122]!==De||t[123]!==Oe||t[124]!==ke||t[125]!==Ae||t[126]!==Ze?(Qe=(0,X.jsxs)(De,{open:Oe,onOpenChange:ke,children:[Ae,Ze]}),t[122]=De,t[123]=Oe,t[124]=ke,t[125]=Ae,t[126]=Ze,t[127]=Qe):Qe=t[127];let $e=s===n.id,et;t[128]!==c||t[129]!==n.id?(et=()=>void c(n.id),t[128]=c,t[129]=n.id,t[130]=et):et=t[130];let tt=s===n.id?`Revoking…`:`Revoke`,nt;t[131]!==$e||t[132]!==et||t[133]!==tt?(nt=(0,X.jsx)(E,{size:`xs`,variant:`destructive-outline`,disabled:$e,onClick:et,children:tt}),t[131]=$e,t[132]=et,t[133]=tt,t[134]=nt):nt=t[134];let rt;t[135]!==je||t[136]!==Qe||t[137]!==nt?(rt=(0,X.jsxs)(`div`,{className:je,children:[Qe,nt]}),t[135]=je,t[136]=Qe,t[137]=nt,t[138]=rt):rt=t[138];let ot;t[139]!==Fe||t[140]!==Ie||t[141]!==rt?(ot=(0,X.jsxs)(`div`,{className:Fe,children:[Ie,rt]}),t[139]=Fe,t[140]=Ie,t[141]=rt,t[142]=ot):ot=t[142];let st;return t[143]!==H||t[144]!==ot?(st=(0,X.jsx)(`div`,{className:H,children:ot}),t[143]=H,t[144]=ot,t[145]=st):st=t[145],st}),Ct=(0,U.memo)(function(e){let t=(0,W.c)(51),{clientSession:n,presentation:r,revokingClientSessionId:i,onRevokeSession:a}=e,o=r===void 0?`current`:r,s=Pe(1e3),c=n.current||n.connected,l=n.lastConnectedAt,u;t[0]!==c||t[1]!==l||t[2]!==s?(u=c?l?`Connected for ${me(l,s)}`:`Connected`:l?`Last connected at ${Je(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(Q),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=c?`bg-success/60 duration-2000`:null,w;t[18]!==d||t[19]!==S||t[20]!==C?(w=(0,X.jsx)(Ye,{tooltipText:d,dotClassName:S,pingClassName:C}),t[18]=d,t[19]=S,t[20]=C,t[21]=w):w=t[21];let T;t[22]===b?T=t[23]:(T=(0,X.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:b}),t[22]=b,t[23]=T);let D;t[24]===n.current?D=t[25]:(D=n.current?(0,X.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[24]=n.current,t[25]=D);let O;t[26]!==w||t[27]!==T||t[28]!==D?(O=(0,X.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[w,T,D]}),t[26]=w,t[27]=T,t[28]=D,t[29]=O):O=t[29];let k;t[30]!==v||t[31]!==f?(k=[f,...v],t[30]=v,t[31]=f,t[32]=k):k=t[32];let A=k.join(` · `),j;t[33]===A?j=t[34]:(j=(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:A}),t[33]=A,t[34]=j);let M;t[35]!==O||t[36]!==j?(M=(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[O,j]}),t[35]=O,t[36]=j,t[37]=M):M=t[37];let N;t[38]!==n.current||t[39]!==n.sessionId||t[40]!==a||t[41]!==i?(N=n.current?null:(0,X.jsx)(E,{size:`xs`,variant:`destructive-outline`,disabled:i===n.sessionId,onClick:()=>void a(n.sessionId),children:i===n.sessionId?`Revoking…`:`Revoke`}),t[38]=n.current,t[39]=n.sessionId,t[40]=a,t[41]=i,t[42]=N):N=t[42];let P;t[43]===N?P=t[44]:(P=(0,X.jsx)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:N}),t[43]=N,t[44]=P);let F;t[45]!==M||t[46]!==P?(F=(0,X.jsxs)(`div`,{className:it,children:[M,P]}),t[45]=M,t[46]=P,t[47]=F):F=t[47];let I;return t[48]!==F||t[49]!==x?(I=(0,X.jsx)(`div`,{className:x,children:F}),t[48]=F,t[49]=x,t[50]=I):I=t[50],I}),wt=(0,U.memo)(function({clientSessions:e,isRevokingOtherClients:t,onRevokeOtherClients:n}){let[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(!1),l=(0,U.useCallback)(async()=>{c(!0);try{await R(a),o(``),i(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to create pairing URL.`;j.add(A({type:`error`,title:`Could not create pairing URL`,description:t}))}finally{c(!1)}},[a]);return(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(E,{size:`xs`,variant:`destructive-outline`,disabled:t||e.every(e=>e.current),onClick:()=>void n(),children:t?`Revoking…`:`Revoke others`}),(0,X.jsxs)(ne,{open:r,onOpenChange:e=>{i(e),e||o(``)},children:[(0,X.jsx)(de,{render:(0,X.jsxs)(E,{size:`xs`,variant:`default`,children:[(0,X.jsx)(ve,{className:`size-3`}),`Create link`]})}),(0,X.jsxs)(oe,{className:`max-w-sm`,children:[(0,X.jsxs)(ue,{children:[(0,X.jsx)(se,{children:`Create pairing link`}),(0,X.jsx)(ce,{children:`Generate a one-time link that another device can use to pair with this backend as an authorized client.`})]}),(0,X.jsx)(ie,{children:(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Client label (optional)`}),(0,X.jsx)(Se,{value:a,onChange:e=>o(e.target.value),placeholder:`e.g. Living room iPad`,disabled:s,autoFocus:!0})]})}),(0,X.jsxs)(le,{variant:`bare`,children:[(0,X.jsx)(E,{variant:`outline`,disabled:s,onClick:()=>i(!1),children:`Cancel`}),(0,X.jsx)(E,{disabled:s,onClick:()=>void l(),children:s?`Creating…`:`Create link`})]})]})]})]})}),Tt=(0,U.memo)(function(e){let t=(0,W.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,X.jsx)(St,{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,X.jsx)(Ct,{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,X.jsx)(`div`,{className:at(p),children:(0,X.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,X.jsxs)(X.Fragment,{children:[m,h,g]}),t[29]=m,t[30]=h,t[31]=g,t[32]=_):_=t[32],_}),Et=(0,U.memo)(function(e){let t=(0,W.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=gt(n)&&n.status!==`available`,t[0]=n,t[1]=d);let f=d,p;t[2]===n.compatibility.hostedHttpsApp?p=t[3]:(p=vt(n.compatibility.hostedHttpsApp),t[2]=n.compatibility.hostedHttpsApp,t[3]=p);let m=p,h;t[4]===n.compatibility.hostedHttpsApp?h=t[5]:(h=yt(n.compatibility.hostedHttpsApp),t[4]=n.compatibility.hostedHttpsApp,t[5]=h);let g=h,_;t[6]===n?_=t[7]:(_=gt(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=ot(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,X.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,X.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,X.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,X.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 D;t[21]!==g||t[22]!==m?(D=m?(0,X.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,X.jsx)(ye,{"aria-hidden":!0,className:`size-3`}),m]}):null,t[21]=g,t[22]=m,t[23]=D):D=t[23];let O;t[24]!==T||t[25]!==D||t[26]!==C||t[27]!==w?(O=(0,X.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-3`,children:[C,w,T,D]}),t[24]=T,t[25]=D,t[26]=C,t[27]=w,t[28]=O):O=t[28];let k;t[29]===r?k=t[30]:(k=r?(0,X.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]=k);let A;t[31]!==n||t[32]!==c||t[33]!==f||t[34]!==o?(A=f?(0,X.jsx)(E,{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]=A):A=t[35];let j;t[36]!==v||t[37]!==n||t[38]!==c||t[39]!==s?(j=v?(0,X.jsx)(E,{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]=j):j=t[40];let M;t[41]!==n||t[42]!==r||t[43]!==f||t[44]!==a?(M=!f&&!r?(0,X.jsx)(E,{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]=M):M=t[45];let N;t[46]!==k||t[47]!==A||t[48]!==j||t[49]!==M?(N=(0,X.jsxs)(`div`,{className:`ml-auto flex min-h-6 shrink-0 items-center justify-end gap-2`,children:[k,A,j,M]}),t[46]=k,t[47]=A,t[48]=j,t[49]=M,t[50]=N):N=t[50];let P;t[51]!==O||t[52]!==N?(P=(0,X.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:[O,N]}),t[51]=O,t[52]=N,t[53]=P):P=t[53];let F;return t[54]!==P||t[55]!==x||t[56]!==S?(F=(0,X.jsxs)(`div`,{className:x,children:[S,P]}),t[54]=P,t[55]=x,t[56]=S,t[57]=F):F=t[57],F});function Dt(e){let t=(0,W.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,X.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=vt(n.compatibility.hostedHttpsApp)?(0,X.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,title:yt(n.compatibility.hostedHttpsApp)??void 0,children:[(0,X.jsx)(ye,{"aria-hidden":!0,className:`size-3`}),vt(n.compatibility.hostedHttpsApp)]}):null,t[2]=n.compatibility.hostedHttpsApp,t[3]=c);let l;t[4]!==i||t[5]!==r?(l=r>0?(0,X.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,X.jsxs)(X.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,X.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,X.jsxs)(`span`,{className:`inline-flex min-w-0 max-w-full items-baseline gap-1`,children:[f,r>0?(0,X.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,X.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 Ot(e){let t=(0,W.c)(57),{environmentId:n,reconnectingEnvironmentId:r,disconnectingEnvironmentId:a,removingEnvironmentId:s,onConnect:c,onDisconnect:l,onRemove:u}=e,f=Pe(1e3),p;t[0]===n?p=t[1]:(p=e=>e.byId[n]??null,t[0]=n,t[1]=p);let m=i(p),h;t[2]===n?h=t[3]:(h=e=>e.byId[n]??null,t[2]=n,t[3]=h);let g=d(h);if(!m)return null;let _=g?.connectionState??`disconnected`,v=_===`connected`,y=_===`connecting`||r===n,b=a===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??m.label,w;t[4]!==f||t[5]!==m||t[6]!==g?(w=Xe(g,m,f),t[4]=f,t[5]=m,t[6]=g,t[7]=w):w=t[7];let T=w,D=g?.serverConfig,O;t[8]===D?O=t[9]:(O=o(D),t[8]=D,t[9]=O);let k=O,A;t[10]===m.desktopSsh?A=t[11]:(A=m.desktopSsh?`SSH ${Ze(m.desktopSsh)}`:null,t[10]=m.desktopSsh,t[11]=A);let j;t[12]===m.lastConnectedAt?j=t[13]:(j=m.lastConnectedAt?`Last connected ${Je(m.lastConnectedAt)}`:null,t[12]=m.lastConnectedAt,t[13]=j);let M;t[14]!==S||t[15]!==A||t[16]!==j?(M=[A,S,j].filter(kt),t[14]=S,t[15]=A,t[16]=j,t[17]=M):M=t[17];let N=M,P=_===`connecting`?`bg-warning/60 duration-2000`:null,F;t[18]!==x||t[19]!==T||t[20]!==P?(F=(0,X.jsx)(Ye,{tooltipText:T,dotClassName:x,pingClassName:P}),t[18]=x,t[19]=T,t[20]=P,t[21]=F):F=t[21];let I;t[22]===C?I=t[23]:(I=(0,X.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:C}),t[22]=C,t[23]=I);let L;t[24]!==F||t[25]!==I?(L=(0,X.jsxs)(`div`,{className:`flex min-h-5 items-center gap-1.5`,children:[F,I]}),t[24]=F,t[25]=I,t[26]=L):L=t[26];let R;t[27]===N?R=t[28]:(R=N.length>0?(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:N.join(` · `)}):null,t[27]=N,t[28]=R);let ee;t[29]===k?ee=t[30]:(ee=k?(0,X.jsxs)(`p`,{className:`flex items-center gap-1 text-warning text-xs`,children:[(0,X.jsx)(ye,{className:`size-3.5 shrink-0`}),`Version drift: client `,k.clientVersion,`, server`,` `,k.serverVersion,`.`]}):null,t[29]=k,t[30]=ee);let te;t[31]!==L||t[32]!==R||t[33]!==ee?(te=(0,X.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[L,R,ee]}),t[31]=L,t[32]=R,t[33]=ee,t[34]=te):te=t[34];let ne=v?b:y,z;t[35]!==n||t[36]!==v||t[37]!==c||t[38]!==l?(z=()=>void(v?l(n):c(n)),t[35]=n,t[36]=v,t[37]=c,t[38]=l,t[39]=z):z=t[39];let re=v?b?`Disconnecting…`:`Disconnect`:y?`Connecting…`:`Connect`,ie;t[40]!==ne||t[41]!==z||t[42]!==re?(ie=(0,X.jsx)(E,{size:`xs`,variant:`outline`,disabled:ne,onClick:z,children:re}),t[40]=ne,t[41]=z,t[42]=re,t[43]=ie):ie=t[43];let ae=s===n,oe;t[44]!==n||t[45]!==u?(oe=()=>void u(n),t[44]=n,t[45]=u,t[46]=oe):oe=t[46];let se=s===n?`Removing…`:`Remove`,ce;t[47]!==ae||t[48]!==oe||t[49]!==se?(ce=(0,X.jsx)(E,{size:`xs`,variant:`destructive-outline`,disabled:ae,onClick:oe,children:se}),t[47]=ae,t[48]=oe,t[49]=se,t[50]=ce):ce=t[50];let le;t[51]!==ie||t[52]!==ce?(le=(0,X.jsxs)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:[ie,ce]}),t[51]=ie,t[52]=ce,t[53]=le):le=t[53];let ue;return t[54]!==te||t[55]!==le?(ue=(0,X.jsx)(`div`,{className:nt,children:(0,X.jsxs)(`div`,{className:it,children:[te,le]})}),t[54]=te,t[55]=le,t[56]=ue):ue=t[56],ue}function kt(e){return e!==null}var At=(0,U.memo)(function(e){let t=(0,W.c)(24),{target:n,connectingHostAlias:r,onConnect:i}=e,a;t[0]===n?a=t[1]:(a=Ze(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,X.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,X.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,X.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,X.jsx)(V,{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,X.jsx)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:(0,X.jsxs)(E,{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,X.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 first:border-t-0 sm:px-5`,children:(0,X.jsxs)(`div`,{className:it,children:[d,h]})}),t[21]=d,t[22]=h,t[23]=g):g=t[23],g});function jt(){let e=window.desktopBridge,[t,n]=(0,U.useState)(e?`owner`:null),[r,d]=(0,U.useState)(null),h=i(e=>e.byId),g=(0,U.useMemo)(()=>Object.values(h).toSorted((e,t)=>e.label.localeCompare(t.label)).map(e=>e.environmentId),[h]),_=(0,U.useMemo)(()=>Object.values(h).reduce((e,t)=>(t.desktopSsh?.alias&&(e[t.desktopSsh.alias]=t),e),{}),[h]),v=(0,U.useMemo)(()=>{let e=new Set;for(let t of Object.values(h)){let n=t.desktopSsh;n&&(e.add(n.alias),e.add(Ze(n)))}return e},[h]),[b,S]=(0,U.useState)([]),[w,T]=(0,U.useState)(!1),[O,k]=(0,U.useState)(!1),[M,N]=(0,U.useState)(null),[P,L]=(0,U.useState)(null),[R,ae]=(0,U.useState)(null),[fe,pe]=(0,U.useState)([]),[me,he]=(0,U.useState)(null),[_e,be]=(0,U.useState)([]),[xe,Me]=(0,U.useState)([]),[Ne,Pe]=(0,U.useState)(null),[Re,W]=(0,U.useState)(!1),[ze,Be]=(0,U.useState)(null),[Ve,G]=(0,U.useState)(null),[K,q]=(0,U.useState)(!1),[J,He]=(0,U.useState)(!1),[Y,Ue]=(0,U.useState)(`remote`),[We,Ge]=(0,U.useState)(``),[qe,Je]=(0,U.useState)(``),[Ye,Xe]=(0,U.useState)(``),[rt,it]=(0,U.useState)(``),[ot,vt]=(0,U.useState)(``),[yt,Z]=(0,U.useState)(null),[bt,xt]=(0,U.useState)(!1),St=(0,U.useMemo)(()=>b.filter(e=>{let t=Ze(e);return!v.has(e.alias)&&!v.has(t)}),[b,v]),[Ct,kt]=(0,U.useState)(null),[jt,Mt]=(0,U.useState)(null),[Nt,Pt]=(0,U.useState)(null),[Ft,It]=(0,U.useState)(!1),[Lt,Rt]=(0,U.useState)(!1),[Q,zt]=(0,U.useState)(!1),[Bt,Vt]=(0,U.useState)(null),[Ht,Ut]=(0,U.useState)(!1),[Wt,Gt]=(0,U.useState)(String(Ke)),[Kt,qt]=(0,U.useState)(null),Jt=o(u()),[Yt,Xt]=(0,U.useState)(!1),Zt=x(e=>e.defaultAdvertisedEndpointKey),Qt=x(e=>e.setDefaultAdvertisedEndpointKey),$t=t===`owner`,en=e?R?.mode===`network-accessible`:r===`remote-reachable`,tn=Wt.trim(),nn=Number(tn),rn=/^\d+$/u.test(tn)&&Number.isInteger(nn)&&nn>=1&&nn<=65535,an=(0,U.useMemo)(()=>{if(!Bt)return null;if(!rn||nn===Ke)return Bt.httpBaseUrl;try{let e=new URL(Bt.httpBaseUrl);return e.port=String(nn),e.toString().replace(/\/$/u,``)}catch{return Bt.httpBaseUrl}},[rn,nn,Bt]),on=(0,U.useCallback)(async t=>{if(e){It(!0),he(null);try{ae(await e.setServerExposureMode(t?`network-accessible`:`local-only`)),Rt(!1),It(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to update network exposure.`;Rt(!1),he(t),j.add(A({type:`error`,title:`Could not update network access`,description:t})),It(!1)}}},[e]),sn=(0,U.useCallback)(()=>{Kt!==null&&on(Kt===`network-accessible`)},[on,Kt]),cn=(0,U.useCallback)(async()=>{if(e&&rn){zt(!0),he(null);try{ae(await e.setTailscaleServeEnabled({enabled:!0,port:nn})),Vt(null)}catch(e){let t=e instanceof Error?e.message:`Failed to configure Tailscale HTTPS.`;he(t),j.add(A({type:`error`,title:`Could not set up Tailscale HTTPS`,description:t}))}finally{zt(!1)}}},[e,rn,nn]),ln=(0,U.useCallback)(e=>{Gt(String(R?.tailscaleServePort??Ke)),Vt(e)},[R?.tailscaleServePort]),un=(0,U.useCallback)(async()=>{if(e){zt(!0),he(null);try{ae(await e.setTailscaleServeEnabled({enabled:!1,port:R?.tailscaleServePort??Ke})),Ut(!1)}catch(e){let t=e instanceof Error?e.message:`Failed to disable Tailscale HTTPS.`;he(t),j.add(A({type:`error`,title:`Could not disable Tailscale HTTPS`,description:t}))}finally{zt(!1)}}},[e,R?.tailscaleServePort]),dn=(0,U.useCallback)(e=>{Ut(!0)},[]),fn=(0,U.useCallback)(async e=>{Be(e),Pe(null);try{await I(e)}catch(e){let t=e instanceof Error?e.message:`Failed to revoke pairing link.`;Pe(t),j.add(A({type:`error`,title:`Could not revoke pairing link`,description:t}))}finally{Be(null)}},[]),pn=(0,U.useCallback)(async e=>{G(e),Pe(null);try{await F(e)}catch(e){let t=e instanceof Error?e.message:`Failed to revoke client access.`;Pe(t),j.add(A({type:`error`,title:`Could not revoke client access`,description:t}))}finally{G(null)}},[]),mn=(0,U.useCallback)(async()=>{q(!0),Pe(null);try{let e=await te();j.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.`;Pe(t),j.add(A({type:`error`,title:`Could not revoke other clients`,description:t}))}finally{q(!1)}},[]),hn=(0,U.useCallback)(async()=>{if(Y===`ssh`){xt(!0),Z(null);try{let e=await c(Qe({host:Ye,username:rt,port:ot}),{label:``});Ge(``),Je(``),Xe(``),it(``),vt(``),He(!1),j.add({type:`success`,title:`Environment connected`,description:`${e.label} is ready over an SSH-managed tunnel.`})}catch(e){Z(tt(e))}finally{xt(!1)}return}xt(!0),Z(null);try{let e=await l({label:``,...et({host:We,pairingCode:qe})});Ge(``),Je(``),Xe(``),it(``),vt(``),He(!1),j.add({type:`success`,title:`Backend added`,description:`${e.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),j.add(A({type:`error`,title:`Could not add backend`,description:t}))}finally{xt(!1)}},[We,Y,qe,Ye,ot,rt]),gn=(0,U.useCallback)(async e=>{kt(e),Z(null);try{await f(e)}catch(e){let t=e instanceof Error?e.message:`Failed to connect backend.`;Z(t),j.add(A({type:`error`,title:`Could not connect backend`,description:t}))}finally{kt(null)}},[]),_n=(0,U.useCallback)(async e=>{Mt(e),Z(null);try{await s(e)}catch(e){let t=e instanceof Error?e.message:`Failed to disconnect backend.`;Z(t),j.add(A({type:`error`,title:`Could not disconnect backend`,description:t}))}finally{Mt(null)}},[]),vn=(0,U.useCallback)(async e=>{Pt(e),Z(null);try{await a(e)}catch(e){let t=e instanceof Error?e.message:`Failed to remove backend.`;Z(t),j.add(A({type:`error`,title:`Could not remove backend`,description:t}))}finally{Pt(null)}},[]),yn=(0,U.useCallback)(async()=>{if(!e){S([]),T(!1),N(null);return}k(!0),N(null);try{S(await e.discoverSshHosts()),T(!0)}catch(e){N(e instanceof Error?e.message:`Failed to discover SSH hosts.`),T(!0)}finally{k(!1)}},[e]),bn=(0,U.useCallback)(async(e,t)=>{L(e.alias),Y===`ssh`?Z(null):N(null);try{let n=await c(e,t===void 0?void 0:{label:t});Xe(``),it(``),vt(``),He(!1),j.add({type:`success`,title:_[e.alias]?`Environment reconnected`:`Environment connected`,description:`${n.label} is ready over an SSH-managed tunnel.`})}catch(e){let t=tt(e);Y===`ssh`?Z(t):N(t)}finally{L(null)}},[Y,_]);(0,U.useEffect)(()=>{!e||!J||Y!==`ssh`||w||O||yn()},[J,e,w,O,yn,Y]),(0,U.useEffect)(()=>{if(e){n(`owner`);return}let t=!1;return ee().then(e=>{t||(n(e.authenticated?e.role??null:null),d(e.auth.policy))}).catch(()=>{t||(n(null),d(null))}),()=>{t=!0}},[e]),(0,U.useEffect)(()=>{if(!$t)return;let t=!1;W(!0);let n=p().client.server.subscribeAuthAccess(e=>{if(!t){switch(e.type){case`snapshot`:be(st(e.payload.pairingLinks.map(e=>lt(e)))),Me(ct(e.payload.clientSessions.map(e=>ut(e))));break;case`pairingLinkUpserted`:be(t=>dt(t,lt(e.payload)));break;case`pairingLinkRemoved`:be(t=>ft(t,e.payload.id));break;case`clientUpserted`:Me(t=>pt(t,ut(e.payload)));break;case`clientRemoved`:Me(t=>mt(t,e.payload.sessionId));break}Pe(null),W(!1)}},{onResubscribe:()=>{t||W(!0)}});return e?(e.getServerExposureState().then(e=>{t||ae(e)}).catch(e=>{t||he(e instanceof Error?e.message:`Failed to load network exposure state.`)}),e.getAdvertisedEndpoints().then(e=>{t||pe(e)}).catch(e=>{t||he(e instanceof Error?e.message:`Failed to load reachable endpoints.`)})):(ae(null),p().client.server.getAdvertisedEndpoints().then(e=>{t||pe(e)}).catch(e=>{t||he(e instanceof Error?e.message:`Failed to load reachable endpoints.`)})),()=>{t=!0,n()}},[$t,e]),(0,U.useEffect)(()=>{$t||(W(!1),be([]),Me([]),Pe(null),ae(null),pe([]),he(null))},[$t]);let xn=(0,U.useMemo)(()=>_e.filter(e=>e.role===`client`),[_e]),$=(0,U.useMemo)(()=>fe.find(gt)??null,[fe]),Sn=(0,U.useMemo)(()=>en?fe.filter(e=>!gt(e)):[],[fe,en]),Cn=(0,U.useMemo)(()=>$?[...Sn,$]:Sn,[$,Sn]),wn=en||$?.status===`available`,Tn=(0,U.useMemo)(()=>ht(Sn,Zt),[Zt,Sn]),En=(0,U.useMemo)(()=>Tn??ht($?[$]:[],Zt),[Zt,Tn,$]),Dn=En?_t(En):null,On=(0,U.useCallback)(e=>{Qt(_t(e))},[Qt]),kn=(0,U.useCallback)(e=>{let t=$e(e);if(t){Ge(t.host),Je(t.pairingCode);return}Ge(e)},[]),An=e=>{let t=Y===e.mode;return(0,X.jsxs)(`button`,{type:`button`,"aria-pressed":t,className:C(`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:bt,onClick:()=>{Ue(e.mode)},children:[e.icon?(0,X.jsx)(`span`,{className:C(`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,X.jsxs)(`span`,{className:`min-w-0`,children:[(0,X.jsx)(`span`,{className:`block text-sm font-medium text-foreground`,children:e.title}),(0,X.jsx)(`span`,{className:`mt-1 block text-xs leading-relaxed text-muted-foreground`,children:e.description})]})]})};return(0,X.jsxs)(Ie,{children:[$t?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(Fe,{title:`Manage local backend`,children:[Jt?(0,X.jsx)(H,{title:`Version drift`,description:(0,X.jsxs)(`span`,{className:`flex items-center gap-1 text-warning`,children:[(0,X.jsx)(ye,{className:`size-3.5 shrink-0`}),`Client `,Jt.clientVersion,`, server`,` `,Jt.serverVersion,`. Sync them if RPC calls or reconnects fail.`]})}):null,e?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(H,{title:`Network access`,description:en?(0,X.jsx)(Dt,{endpoint:Tn,hiddenEndpointCount:Math.max(Sn.length-1,0),expanded:Yt,onToggleExpanded:()=>Xt(e=>!e),fallback:R?.endpointUrl?`Reachable at ${R.endpointUrl}`:R?.advertisedHost?`Exposed on all interfaces. Pairing links use ${R.advertisedHost}.`:`Exposed on all interfaces.`}):R?`Limited to this machine.`:`Loading…`,status:me?(0,X.jsx)(`span`,{className:`block text-destructive`,children:me}):null,control:(0,X.jsx)(z,{checked:R?.mode===`network-accessible`,disabled:!R||Ft,onCheckedChange:e=>{qt(e?`network-accessible`:`local-only`),Rt(!0)},"aria-label":`Enable network access`})}),(e=>Yt?Sn.map(t=>(0,X.jsx)(Et,{endpoint:t,isDefault:_t(t)===Dn,presentation:e,onSetDefault:On,onSetupTailscaleServe:ln,onDisableTailscaleServe:dn,isUpdatingTailscaleServe:Q},t.id)):null)(`endpoint-rail`),(0,X.jsx)(H,{title:`Tailscale HTTPS`,description:$?$.status===`available`?$.httpBaseUrl:`Use Tailscale Serve to expose this backend through a MagicDNS HTTPS URL.`:`Start Tailscale to set up HTTPS access through MagicDNS.`,control:$?(0,X.jsx)(z,{checked:$.status===`available`,disabled:Q,onCheckedChange:e=>{if(e){ln($);return}dn($)},"aria-label":`Enable Tailscale HTTPS`}):null})]}):(0,X.jsx)(H,{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,X.jsxs)(D,{children:[(0,X.jsx)(y,{render:(0,X.jsx)(`span`,{className:`inline-flex`,children:(0,X.jsx)(z,{checked:en,disabled:!0,"aria-label":`Enable network access`})})}),(0,X.jsx)(m,{side:`top`,children:`Network exposure changes restart the backend and must be controlled where the server process is launched.`})]})})]}),wn?(0,X.jsx)(Fe,{title:`Authorized clients`,headerAction:(0,X.jsx)(wt,{clientSessions:xe,isRevokingOtherClients:K,onRevokeOtherClients:mn}),children:(e=>(0,X.jsxs)(X.Fragment,{children:[Ne?(0,X.jsx)(`div`,{className:at(e),children:(0,X.jsx)(`p`,{className:`text-xs text-destructive`,children:Ne})}):null,(0,X.jsx)(Tt,{endpointUrl:R?.endpointUrl,endpoints:Cn,defaultEndpointKey:Dn,presentation:e,isLoading:Re,pairingLinks:xn,clientSessions:xe,revokingPairingLinkId:ze,revokingClientSessionId:Ve,onRevokePairingLink:fn,onRevokeClientSession:pn})]}))(`current`)}):null,(0,X.jsx)(Ae,{open:Lt,onOpenChange:e=>{Ft||Rt(e)},onOpenChangeComplete:e=>{e||qt(null)},children:(0,X.jsxs)(De,{children:[(0,X.jsxs)(we,{children:[(0,X.jsx)(ke,{children:Kt===`network-accessible`?`Enable network access?`:`Disable network access?`}),(0,X.jsx)(Oe,{children:Kt===`network-accessible`?`Ryco will restart to expose this environment over the network.`:`Ryco will restart and limit this environment back to this machine.`})]}),(0,X.jsxs)(Te,{children:[(0,X.jsx)(Ee,{disabled:Ft,render:(0,X.jsx)(E,{variant:`outline`,disabled:Ft}),children:`Cancel`}),(0,X.jsx)(E,{variant:Kt===`local-only`?`destructive`:`default`,onClick:sn,disabled:Kt===null||Ft,children:Ft?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(re,{className:`size-3.5`}),`Restarting…`]}):Kt===`network-accessible`?`Restart and enable`:`Restart and disable`})]})]})}),(0,X.jsx)(Ae,{open:Ht,onOpenChange:e=>{Q||Ut(e)},children:(0,X.jsxs)(De,{children:[(0,X.jsxs)(we,{children:[(0,X.jsx)(ke,{children:`Disable Tailscale HTTPS?`}),(0,X.jsx)(Oe,{children:`Ryco will restart the local backend without Tailscale Serve.`})]}),(0,X.jsxs)(Te,{children:[(0,X.jsx)(Ee,{disabled:Q,render:(0,X.jsx)(E,{variant:`outline`,disabled:Q}),children:`Cancel`}),(0,X.jsx)(E,{variant:`destructive`,onClick:()=>void un(),disabled:Q,children:Q?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(re,{className:`size-3.5`}),`Restarting…`]}):`Restart and disable`})]})]})}),(0,X.jsx)(ne,{open:Bt!==null,onOpenChange:e=>{Q||e||Vt(null)},children:(0,X.jsxs)(oe,{className:`max-w-md`,children:[(0,X.jsxs)(ue,{children:[(0,X.jsx)(se,{children:`Set up Tailscale HTTPS?`}),(0,X.jsx)(ce,{children:`Ryco will restart the local backend with Tailscale Serve enabled and ask Tailscale to proxy HTTPS traffic to this backend.`})]}),(0,X.jsxs)(ie,{className:`space-y-4`,children:[(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:`HTTPS port`}),(0,X.jsx)(Se,{className:`mt-2`,type:`number`,inputMode:`numeric`,min:1,max:65535,step:1,value:Wt,onChange:e=>Gt(e.target.value),disabled:Q})]}),rn?null:(0,X.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:`Enter a port from 1 to 65535.`}),(0,X.jsxs)(`div`,{className:`rounded-md border border-border/70 bg-muted/20 px-3 py-2`,children:[(0,X.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:`HTTPS endpoint`}),(0,X.jsx)(`p`,{className:`mt-1 truncate text-sm text-foreground`,title:an??void 0,children:an??`Pending MagicDNS endpoint`})]})]}),(0,X.jsxs)(le,{children:[(0,X.jsx)(B,{disabled:Q,render:(0,X.jsx)(E,{variant:`outline`,disabled:Q}),children:`Cancel`}),(0,X.jsx)(E,{onClick:()=>void cn(),disabled:Q||!rn,children:Q?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(re,{className:`size-3.5`}),`Restarting…`]}):`Enable`})]})]})})]}):(0,X.jsx)(Fe,{title:`Local backend access`,children:(0,X.jsx)(H,{title:`Owner tools`,description:`Pairing links and client-session management are only available to owner sessions for this backend.`})}),(0,X.jsxs)(Fe,{title:`Remote environments`,headerAction:(0,X.jsxs)(ne,{open:J,onOpenChange:e=>{He(e),e||Z(null)},children:[(0,X.jsx)(de,{render:(0,X.jsxs)(E,{size:`xs`,variant:`outline`,children:[(0,X.jsx)(ve,{className:`size-3`}),`Add environment`]})}),(0,X.jsxs)(oe,{className:`max-h-[80dvh] sm:max-w-3xl`,children:[(0,X.jsxs)(ue,{children:[(0,X.jsx)(se,{children:`Add Environment`}),(0,X.jsx)(ce,{children:`Pair another environment to this client.`})]}),(0,X.jsx)(ie,{children:(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[An({mode:`remote`,title:`Remote link`,description:`Enter a backend host and pairing code.`,icon:(0,X.jsx)(Le,{"aria-hidden":!0,className:`size-4`})}),e?An({mode:`ssh`,title:`SSH`,description:`Use local SSH config, agent, and tunnels for the backend.`,icon:(0,X.jsx)(ge,{"aria-hidden":!0,className:`size-4`})}):null]}),(0,X.jsx)(je,{children:Y===`ssh`?(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`SSH host or alias`}),(0,X.jsx)(Se,{value:Ye,onChange:e=>Xe(e.target.value),placeholder:`Search hosts or type devbox`,disabled:bt,spellCheck:!1})]}),(0,X.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-[minmax(0,1fr)_7rem]`,children:[(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Username`}),(0,X.jsx)(Se,{value:rt,onChange:e=>it(e.target.value),placeholder:`root`,disabled:bt,spellCheck:!1})]}),(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Port`}),(0,X.jsx)(Se,{value:ot,onChange:e=>vt(e.target.value),placeholder:`22`,inputMode:`numeric`,disabled:bt,spellCheck:!1})]})]}),yt||M?(0,X.jsx)(`div`,{className:`rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive`,children:yt??M}):null,(0,X.jsxs)(E,{variant:`outline`,className:`w-full`,disabled:bt,onClick:()=>void hn(),children:[(0,X.jsx)(ve,{className:`size-3.5`}),bt?`Adding…`:`Add environment`]})]}),(0,X.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/60`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-border/60 bg-muted/30 px-3 py-2`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`text-xs font-medium text-foreground`,children:`Suggested hosts`}),(0,X.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`From SSH config and known hosts`})]}),(0,X.jsxs)(E,{size:`xs`,variant:`ghost`,disabled:O,onClick:()=>void yn(),children:[O?(0,X.jsx)(V,{className:`size-3 animate-spin`}):(0,X.jsx)(V,{className:`size-3`}),`Refresh`]})]}),(0,X.jsx)(Ce,{scrollFade:!0,className:`max-h-56`,children:(0,X.jsxs)(`div`,{children:[St.map(e=>(0,X.jsx)(At,{target:e,connectingHostAlias:P,onConnect:e=>void bn(e)},`${e.alias}:${e.hostname}:${e.port??``}`)),w&&!O&&St.length===0?(0,X.jsx)(`div`,{className:nt,children:(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No new SSH hosts were discovered.`})}):null]})})]})]}):(0,X.jsxs)(`div`,{className:`space-y-4`,children:[(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-[minmax(0,1fr)_10rem]`,children:[(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Host`}),(0,X.jsx)(Se,{value:We,onChange:e=>kn(e.target.value),placeholder:`backend.example.com`,disabled:bt,spellCheck:!1})]}),(0,X.jsxs)(`label`,{className:`block`,children:[(0,X.jsx)(`span`,{className:`mb-1.5 block text-xs font-medium text-foreground`,children:`Pairing code`}),(0,X.jsx)(Se,{value:qe,onChange:e=>Je(e.target.value),placeholder:`PAIRCODE`,disabled:bt,spellCheck:!1})]})]}),(0,X.jsx)(`div`,{children:(0,X.jsx)(`span`,{className:`mt-1 block text-[11px] text-muted-foreground`,children:`Paste a full pairing URL here to fill both fields automatically. Remote bearer tokens are stored for this browser profile.`})})]}),yt?(0,X.jsx)(`p`,{className:`text-xs text-destructive`,children:yt}):null,(0,X.jsxs)(E,{variant:`outline`,className:`w-full`,disabled:bt,onClick:()=>void hn(),children:[(0,X.jsx)(ve,{className:`size-3.5`}),bt?`Adding…`:`Add environment`]})]})})]})})]})]}),children:[g.map(e=>(0,X.jsx)(Ot,{environmentId:e,reconnectingEnvironmentId:Ct,disconnectingEnvironmentId:jt,removingEnvironmentId:Nt,onConnect:gn,onDisconnect:_n,onRemove:vn},e)),g.length===0?(0,X.jsx)(`div`,{className:nt,children:(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No remote environments yet. Click “Add environment” to pair another environment.`})}):null]})]})}function Mt(e){return e.status!==`unavailable`}function Nt(e){j.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 Pt(e){return xt(e)?`hosted-link`:`link`}function Ft(e){return!xt(e.url)}function It(e){return xt(e.url)}function Lt(e){return e.currentTarget.select()}function Rt(e){return e.currentTarget.select()}function Q(e){return e!==null}export{jt as ConnectionsSettings};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{$n as n,In as r,Nr as i,Pn as a,Un as o}from"./composerDraftStore-D12lUSfh.js";import{c as s}from"./DialogViewport-DvjAl76K.js";var c=e(t()),l=c.forwardRef(function(e,t){let{render:r,className:c,disabled:l=!1,nativeButton:u=!0,...d}=e,{store:f}=s(),p=f.useState(`open`);function m(e){p&&f.setOpen(!1,a(n,e.nativeEvent))}let{getButtonProps:h,buttonRef:g}=o({disabled:l,native:u});return i(`button`,e,{state:{disabled:l},ref:[t,g],props:[{onClick:m},d,h]})}),u=c.forwardRef(function(e,t){let{render:n,className:a,id:o,...c}=e,{store:l}=s(),u=r(o);return l.useSyncedValueWithCleanup(`descriptionElementId`,u),i(`p`,e,{ref:t,props:[{id:u},c]})}),d=c.forwardRef(function(e,t){let{render:n,className:a,id:o,...c}=e,{store:l}=s(),u=r(o);return l.useSyncedValueWithCleanup(`titleElementId`,u),i(`h2`,e,{ref:t,props:[{id:u},c]})});export{u as n,l as r,d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{At as n,Bt as r,Fr as i,In as a,Jt as o,Nr as s,Un as c,Wr as l,_r as u}from"./composerDraftStore-D12lUSfh.js";import{c as d}from"./DialogViewport-DvjAl76K.js";var f=e(t()),p=f.forwardRef(function(e,t){let{render:p,className:m,disabled:h=!1,nativeButton:g=!0,id:_,payload:v,handle:y,...b}=e,x=d(!0),S=y?.store??x?.store;if(!S)throw Error(l(79));let C=a(_),w=S.useState(`floatingRootContext`),T=S.useState(`isOpenedByTrigger`,C),E=f.useRef(null),{registerTrigger:D,isMountedByThisTrigger:O}=r(C,E,S,{payload:v}),{getButtonProps:k,buttonRef:A}=c({disabled:h,native:g}),j=n([o(w,{enabled:w!=null})]),M={disabled:h,open:T},N=S.useState(`triggerProps`,O);return s(`button`,e,{state:M,ref:[A,t,D,E],props:[j.getReferenceProps(),N,{[i]:``,id:C},b,k],stateAttributesMapping:u})});export{p as t};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{t as n}from"./compiler-runtime-BNrXlsa1.js";import{Jt as r}from"./projectAtoms-DUEBb7Zz.js";import{A as i,Jr as a,Li as o,M as s,Ni as c,Ri as l,Sr as u,Xr as d,Zr as f,br as p,k as ee}from"./composerDraftStore-D12lUSfh.js";import{a as te,i as m,m as ne}from"./toast-DE7a4wkW.js";import{At as h,D as re,Ft as g,G as _,H as v,It as y,Lt as b,Mt as x,Nt as S,Pt as C,Tt as w,U as T,W as E,_ as D,lr as O,nr as k,z as A}from"./providerIconUtils-uhWb4bdg.js";import{t as j}from"./plus-4Oy56d-3.js";import{t as M}from"./refresh-cw-DkBMGllm.js";import{t as N}from"./server-BtEG3NAw.js";import{t as ie}from"./trash-2-BI5xcbsm.js";import{t as P}from"./triangle-alert-DJef_Uvh.js";import{t as F}from"./wrench-je4QOyG-.js";import{t as I}from"./input-B9-RWT56.js";import{r as L}from"./providerDriverMeta-Dwi6Zqgd.js";var ae=d(`earth`,[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),oe=d(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),R=d(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),z=e(t(),1),B=n(),se=/^[a-zA-Z][a-zA-Z0-9_-]*$/;function ce(){return{name:``,transport:`stdio`,command:``,argsText:``,cwd:``,url:``,bearerTokenEnvVar:``,envText:``,envVarsText:``,httpHeadersText:``,envHttpHeadersText:``,enabled:!0,required:!1,startupTimeoutSec:``,toolTimeoutSec:``,enabledToolsText:``,disabledToolsText:``,oauthScopesText:``}}function V(e){return e.join(`
|
|
2
|
-
`)}function H(e){return Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
|
|
3
|
-
`)}function U(e){let t=e.config;return{name:e.name,transport:t.transport===`http`?`http`:`stdio`,command:t.command??``,argsText:V(t.args),cwd:t.cwd??``,url:t.url??``,bearerTokenEnvVar:t.bearerTokenEnvVar??``,envText:H(t.env),envVarsText:V(t.envVars),httpHeadersText:H(t.httpHeaders),envHttpHeadersText:H(t.envHttpHeaders),enabled:t.enabled,required:t.required??!1,startupTimeoutSec:t.startupTimeoutSec?.toString()??``,toolTimeoutSec:t.toolTimeoutSec?.toString()??``,enabledToolsText:V(t.enabledTools),disabledToolsText:V(t.disabledTools),oauthScopesText:V(t.oauthScopes)}}function W(e){return e.split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0)}function le(e){let t={};for(let n of W(e)){let e=n.indexOf(`=`);if(e<=0)continue;let r=n.slice(0,e).trim(),i=n.slice(e+1).trim();r.length>0&&(t[r]=i)}return t}function G(e){let t=e.trim();if(!t)return;let n=Number(t);return Number.isFinite(n)&&n>0?n:NaN}function ue(e){let t=e.name.trim();if(!se.test(t))return`Server name must start with a letter and use only letters, numbers, dashes, and underscores.`;if(e.transport===`stdio`&&e.command.trim().length===0)return`Stdio servers need a command.`;if(e.transport===`http`&&e.url.trim().length===0)return`HTTP servers need a URL.`;for(let[t,n]of[[`Startup timeout`,e.startupTimeoutSec],[`Tool timeout`,e.toolTimeoutSec]]){let e=G(n);if(Number.isNaN(e))return`${t} must be a positive number.`}return null}function de(e){let t=G(e.startupTimeoutSec),n=G(e.toolTimeoutSec);return{transport:e.transport,command:e.command.trim(),args:W(e.argsText),cwd:e.cwd.trim()||null,url:e.url.trim(),bearerTokenEnvVar:e.bearerTokenEnvVar.trim()||null,env:le(e.envText),envVars:W(e.envVarsText),httpHeaders:le(e.httpHeadersText),envHttpHeaders:le(e.envHttpHeadersText),enabled:e.enabled,required:e.required,...t===void 0||Number.isNaN(t)?{}:{startupTimeoutSec:t},...n===void 0||Number.isNaN(n)?{}:{toolTimeoutSec:n},enabledTools:W(e.enabledToolsText),disabledTools:W(e.disabledToolsText),oauthScopes:W(e.oauthScopesText)}}function fe(e){let t=e.config;return t.transport===`http`?t.url||`HTTP`:t.transport===`stdio`?[t.command,...t.args].filter(Boolean).join(` `)||`stdio`:`Configured outside the known MCP schema`}var K=c(),pe=[],q=[];function J(){let e=r().mcp;if(!e)throw Error(`MCP settings are unavailable before a backend is paired.`);return e}function Y(e,t){m.add(te({type:`error`,title:e,description:t instanceof Error?t.message:`An error occurred.`}))}function me(e){switch(e){case`user`:return`User config`;case`project`:return`Project`;case`system`:return`System`;case`managed`:return`Managed`;case`mixed`:return`Mixed`;case`unknown`:return`Unknown`}}function he(e){return e.startupStatus===`failed`?`error`:e.startupStatus===`disabled`?`outline`:e.authStatus===`notLoggedIn`?`warning`:e.startupStatus===`ready`?`success`:`outline`}function ge(e){return e.startupStatus===`disabled`?`Disabled`:e.startupStatus===`failed`?`Failed`:e.authStatus===`notLoggedIn`?`Login needed`:e.startupStatus===`ready`?`Ready`:`Unknown`}function X(e){return e.enabled?e.status===`managed`?`success`:e.status===`external`?`warning`:`outline`:`outline`}function Z(e){if(!e.enabled)return`Disabled`;switch(e.status){case`managed`:return`Managed`;case`external`:return`External config`;case`unsupported`:return`Not wired`}}function Q(e){return e.displayName??L(e.driver)?.label??f(e.driver)}function $(e){let t=(0,B.c)(5),n;t[0]===e.label?n=t[1]:(n=(0,K.jsx)(`span`,{children:e.label}),t[0]=e.label,t[1]=n);let r;return t[2]!==e.children||t[3]!==n?(r=(0,K.jsxs)(`label`,{className:`grid gap-1.5 text-xs font-medium text-foreground/80`,children:[n,e.children]}),t[2]=e.children,t[3]=n,t[4]=r):r=t[4],r}function _e(e){let t=(0,B.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,K.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted-foreground/70`,children:n}),t[0]=n,t[1]=r),r}function ve(e){let t=(0,B.c)(5),{value:n,onChange:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i={value:`stdio`,label:`Stdio`,icon:k},t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=[i,{value:`http`,label:`HTTP`,icon:ae}],t[1]=a):a=t[1];let o;return t[2]!==r||t[3]!==n?(o=(0,K.jsx)(`div`,{className:`grid grid-cols-2 rounded-lg border bg-muted/30 p-1`,children:a.map(e=>{let t=e.icon;return(0,K.jsxs)(`button`,{type:`button`,onClick:()=>r(e.value),className:u(`flex h-8 items-center justify-center gap-2 rounded-md text-xs font-medium transition-colors`,n===e.value?`bg-background text-foreground shadow-xs`:`text-muted-foreground`),children:[(0,K.jsx)(t,{className:`size-3.5`}),e.label]},e.value)})}),t[2]=r,t[3]=n,t[4]=o):o=t[4],o}function ye({open:e,server:t,onOpenChange:n,onSubmit:r}){let[i,a]=(0,z.useState)(()=>ce()),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(!1),u=t!==null;(0,z.useEffect)(()=>{e&&(a(t?U(t):ce()),s(null))},[e,t]);let d=(e,t)=>{a(n=>({...n,[e]:t}))},f=async()=>{let e=ue(i);if(e){s(e);return}l(!0);try{await r(i),n(!1)}catch(e){Y(`Failed to save MCP server`,e)}finally{l(!1)}};return(0,K.jsx)(h,{open:e,onOpenChange:n,children:(0,K.jsxs)(y,{className:`max-w-2xl`,bottomStickOnMobile:!1,children:[(0,K.jsxs)(C,{children:[(0,K.jsx)(b,{children:u?`Edit MCP server`:`Add MCP server`}),(0,K.jsx)(x,{children:`Configuration is written to the selected Codex config and reloaded after save.`})]}),(0,K.jsxs)(g,{className:`space-y-5`,children:[(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-[1fr_12rem]`,children:[(0,K.jsx)($,{label:`Server name`,children:(0,K.jsx)(I,{value:i.name,disabled:u,onChange:e=>d(`name`,e.target.value),placeholder:`github`,spellCheck:!1})}),(0,K.jsx)($,{label:`Transport`,children:(0,K.jsx)(ve,{value:i.transport,onChange:e=>d(`transport`,e)})})]}),i.transport===`stdio`?(0,K.jsxs)(`div`,{className:`grid gap-4`,children:[(0,K.jsx)($,{label:`Command`,children:(0,K.jsx)(I,{value:i.command,onChange:e=>d(`command`,e.target.value),placeholder:`npx`,spellCheck:!1})}),(0,K.jsxs)($,{label:`Arguments`,children:[(0,K.jsx)(w,{value:i.argsText,onChange:e=>d(`argsText`,e.target.value),placeholder:`-y
|
|
4
|
-
@modelcontextprotocol/server-filesystem
|
|
5
|
-
/tmp/project`,spellCheck:!1}),(0,K.jsx)(_e,{children:`One argument per line.`})]}),(0,K.jsx)($,{label:`Working directory`,children:(0,K.jsx)(I,{value:i.cwd,onChange:e=>d(`cwd`,e.target.value),placeholder:`/path/to/project`,spellCheck:!1})})]}):(0,K.jsxs)(`div`,{className:`grid gap-4`,children:[(0,K.jsx)($,{label:`URL`,children:(0,K.jsx)(I,{value:i.url,onChange:e=>d(`url`,e.target.value),placeholder:`https://mcp.example.com/mcp`,spellCheck:!1})}),(0,K.jsx)($,{label:`Bearer token env var`,children:(0,K.jsx)(I,{value:i.bearerTokenEnvVar,onChange:e=>d(`bearerTokenEnvVar`,e.target.value),placeholder:`MCP_TOKEN`,spellCheck:!1})}),(0,K.jsxs)($,{label:`HTTP headers`,children:[(0,K.jsx)(w,{value:i.httpHeadersText,onChange:e=>d(`httpHeadersText`,e.target.value),placeholder:`X-Client=ryco`,spellCheck:!1}),(0,K.jsx)(_e,{children:`Static headers as KEY=VALUE lines.`})]}),(0,K.jsxs)($,{label:`Env-backed HTTP headers`,children:[(0,K.jsx)(w,{value:i.envHttpHeadersText,onChange:e=>d(`envHttpHeadersText`,e.target.value),placeholder:`Authorization=GITHUB_TOKEN`,spellCheck:!1}),(0,K.jsx)(_e,{children:`Header name to environment variable name, one per line.`})]})]}),(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,K.jsxs)($,{label:`Environment values`,children:[(0,K.jsx)(w,{value:i.envText,onChange:e=>d(`envText`,e.target.value),placeholder:`API_BASE=https://example.com`,spellCheck:!1}),(0,K.jsx)(_e,{children:`KEY=VALUE lines stored in Codex config.`})]}),(0,K.jsxs)($,{label:`Environment allow-list`,children:[(0,K.jsx)(w,{value:i.envVarsText,onChange:e=>d(`envVarsText`,e.target.value),placeholder:`GITHUB_TOKEN
|
|
6
|
-
SENTRY_AUTH_TOKEN`,spellCheck:!1}),(0,K.jsx)(_e,{children:`One env var name per line.`})]})]}),(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,K.jsx)($,{label:`Startup timeout seconds`,children:(0,K.jsx)(I,{value:i.startupTimeoutSec,onChange:e=>d(`startupTimeoutSec`,e.target.value),inputMode:`decimal`,placeholder:`10`})}),(0,K.jsx)($,{label:`Tool timeout seconds`,children:(0,K.jsx)(I,{value:i.toolTimeoutSec,onChange:e=>d(`toolTimeoutSec`,e.target.value),inputMode:`decimal`,placeholder:`60`})})]}),(0,K.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,K.jsx)($,{label:`Enabled tools`,children:(0,K.jsx)(w,{value:i.enabledToolsText,onChange:e=>d(`enabledToolsText`,e.target.value),spellCheck:!1})}),(0,K.jsx)($,{label:`Disabled tools`,children:(0,K.jsx)(w,{value:i.disabledToolsText,onChange:e=>d(`disabledToolsText`,e.target.value),spellCheck:!1})}),(0,K.jsx)($,{label:`OAuth scopes`,children:(0,K.jsx)(w,{value:i.oauthScopesText,onChange:e=>d(`oauthScopesText`,e.target.value),spellCheck:!1})})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-5 border-t pt-4`,children:[(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-xs font-medium text-foreground/80`,children:[(0,K.jsx)(re,{checked:i.enabled,onCheckedChange:e=>d(`enabled`,!!e)}),`Enabled`]}),(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-xs font-medium text-foreground/80`,children:[(0,K.jsx)(re,{checked:i.required,onCheckedChange:e=>d(`required`,!!e)}),`Required`]})]}),o?(0,K.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/6 px-3 py-2 text-xs text-destructive-foreground`,children:[(0,K.jsx)(P,{className:`mt-0.5 size-3.5`}),(0,K.jsx)(`span`,{children:o})]}):null]}),(0,K.jsxs)(S,{children:[(0,K.jsx)(p,{variant:`outline`,onClick:()=>n(!1),disabled:c,children:`Cancel`}),(0,K.jsxs)(p,{onClick:()=>void f(),disabled:c,children:[c?(0,K.jsx)(O,{className:`animate-spin`}):(0,K.jsx)(R,{}),`Save`]})]})]})})}function be(e){let t=(0,B.c)(18),{workspaces:n,selectedWorkspaceId:r,onChange:i}=e;if(n.length<=1||!r)return null;let a;if(t[0]!==r||t[1]!==n){let e;t[3]===r?e=t[4]:(e=e=>e.id===r,t[3]=r,t[4]=e),a=n.find(e),t[0]=r,t[1]=n,t[2]=a}else a=t[2];let o=a,s;t[5]===i?s=t[6]:(s=e=>{e&&i(e)},t[5]=i,t[6]=s);let c=o?.displayPath??`Select workspace`,l;t[7]===c?l=t[8]:(l=(0,K.jsx)(E,{className:`w-full sm:w-72`,"aria-label":`MCP workspace`,children:(0,K.jsx)(_,{children:c})}),t[7]=c,t[8]=l);let u;t[9]===n?u=t[10]:(u=n.map(xe),t[9]=n,t[10]=u);let d;t[11]===u?d=t[12]:(d=(0,K.jsx)(T,{align:`end`,alignItemWithTrigger:!1,children:u}),t[11]=u,t[12]=d);let f;return t[13]!==r||t[14]!==s||t[15]!==l||t[16]!==d?(f=(0,K.jsxs)(A,{value:r,onValueChange:s,children:[l,d]}),t[13]=r,t[14]=s,t[15]=l,t[16]=d,t[17]=f):f=t[17],f}function xe(e){return(0,K.jsx)(v,{hideIndicator:!0,value:e.id,children:(0,K.jsx)(`span`,{className:`truncate`,children:e.displayPath})},e.id)}function Se(e){let t=(0,B.c)(10),{providers:n,selectedWorkspaceId:r,onSelectWorkspace:i}=e;if(n.length===0)return null;let a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(`div`,{className:`border-b px-4 py-3`,children:(0,K.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Provider MCP support`})}),t[0]=a):a=t[0];let o;if(t[1]!==i||t[2]!==n||t[3]!==r){let e;t[5]!==i||t[6]!==r?(e=e=>{let t=L(e.driver)?.icon??N,n=e.workspaceId!==void 0&&e.workspaceId===r,a=e.workspaceId!==void 0&&!n;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 px-4 py-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,K.jsxs)(`div`,{className:`relative mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg border bg-background`,children:[(0,K.jsx)(t,{className:`size-4 text-muted-foreground`}),e.accentColor?(0,K.jsx)(`span`,{className:`absolute -right-0.5 -bottom-0.5 size-2.5 rounded-full border border-background`,style:{backgroundColor:e.accentColor}}):null]}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:Q(e)}),(0,K.jsx)(`span`,{className:`font-mono text-[11px] text-muted-foreground/70`,children:e.instanceId})]}),(0,K.jsx)(`p`,{className:`mt-1 max-w-2xl text-xs leading-relaxed text-muted-foreground/80`,children:e.message})]})]}),(0,K.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2 sm:justify-end`,children:[(0,K.jsx)(D,{variant:X(e),children:Z(e)}),e.workspaceId?(0,K.jsx)(p,{size:`xs`,variant:n?`secondary`:`outline`,disabled:!a,onClick:()=>{e.workspaceId&&i(e.workspaceId)},children:`Codex workspace`}):null]})]},e.instanceId)},t[5]=i,t[6]=r,t[7]=e):e=t[7],o=n.map(e),t[1]=i,t[2]=n,t[3]=r,t[4]=o}else o=t[4];let s;return t[8]===o?s=t[9]:(s=(0,K.jsxs)(`section`,{className:`rounded-lg border bg-muted/10`,children:[a,(0,K.jsx)(`div`,{className:`divide-y`,children:o})]}),t[8]=o,t[9]=s),s}function Ce(e){let t=(0,B.c)(20),{server:n}=e;if(n.tools.length===0&&n.resources.length===0&&n.resourceTemplates.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground/70`,children:`No tools or resources reported.`}),t[0]=e):e=t[0],e}let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,K.jsx)(`h4`,{className:`mb-1.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:`Tools`}),t[1]=r):r=t[1];let i;t[2]===n.tools?i=t[3]:(i=n.tools.slice(0,12).map(Ee),t[2]=n.tools,t[3]=i);let a;t[4]===i?a=t[5]:(a=(0,K.jsxs)(`div`,{children:[r,(0,K.jsx)(`div`,{className:`space-y-1`,children:i})]}),t[4]=i,t[5]=a);let o;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,K.jsx)(`h4`,{className:`mb-1.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:`Resources`}),t[6]=o):o=t[6];let s;t[7]===n.resources?s=t[8]:(s=n.resources.slice(0,10).map(Te),t[7]=n.resources,t[8]=s);let c;t[9]===s?c=t[10]:(c=(0,K.jsxs)(`div`,{children:[o,(0,K.jsx)(`div`,{className:`space-y-1`,children:s})]}),t[9]=s,t[10]=c);let l;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,K.jsx)(`h4`,{className:`mb-1.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:`Templates`}),t[11]=l):l=t[11];let u;t[12]===n.resourceTemplates?u=t[13]:(u=n.resourceTemplates.slice(0,10).map(we),t[12]=n.resourceTemplates,t[13]=u);let d;t[14]===u?d=t[15]:(d=(0,K.jsxs)(`div`,{children:[l,(0,K.jsx)(`div`,{className:`space-y-1`,children:u})]}),t[14]=u,t[15]=d);let f;return t[16]!==a||t[17]!==c||t[18]!==d?(f=(0,K.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[a,c,d]}),t[16]=a,t[17]=c,t[18]=d,t[19]=f):f=t[19],f}function we(e){return(0,K.jsxs)(`div`,{className:`rounded-md border bg-background/60 px-2 py-1.5`,children:[(0,K.jsx)(`div`,{className:`truncate text-xs font-medium`,children:e.title??e.name}),(0,K.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground/75`,children:e.uriTemplate})]},e.uriTemplate)}function Te(e){return(0,K.jsxs)(`div`,{className:`rounded-md border bg-background/60 px-2 py-1.5`,children:[(0,K.jsx)(`div`,{className:`truncate text-xs font-medium`,children:e.title??e.name}),(0,K.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground/75`,children:e.uri})]},e.uri)}function Ee(e){return(0,K.jsxs)(`div`,{className:`rounded-md border bg-background/60 px-2 py-1.5`,children:[(0,K.jsx)(`div`,{className:`truncate text-xs font-medium`,children:e.title??e.name}),e.description?(0,K.jsx)(`div`,{className:`line-clamp-2 text-[11px] text-muted-foreground/75`,children:e.description}):null]},e.name)}function De(e){let t=(0,B.c)(97),{server:n,mutating:r,onToggleEnabled:o,onEdit:c,onRemove:l,onOauthLogin:d}=e,[f,te]=(0,z.useState)(!1),m;t[0]===n?m=t[1]:(m=fe(n),t[0]=n,t[1]=m);let ne=m,h=`${n.tools.length} tools · ${n.resources.length+n.resourceTemplates.length} resources`,g;t[2]===n.config.transport?g=t[3]:(g=n.config.transport===`http`?(0,K.jsx)(ae,{className:`size-4 text-muted-foreground`}):(0,K.jsx)(k,{className:`size-4 text-muted-foreground`}),t[2]=n.config.transport,t[3]=g);let _;t[4]===n.name?_=t[5]:(_=(0,K.jsx)(`h3`,{className:`truncate text-sm font-semibold`,children:n.name}),t[4]=n.name,t[5]=_);let v;t[6]!==g||t[7]!==_?(v=(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[g,_]}),t[6]=g,t[7]=_,t[8]=v):v=t[8];let y;t[9]===n?y=t[10]:(y=he(n),t[9]=n,t[10]=y);let b;t[11]===n?b=t[12]:(b=ge(n),t[11]=n,t[12]=b);let x;t[13]!==y||t[14]!==b?(x=(0,K.jsx)(D,{variant:y,children:b}),t[13]=y,t[14]=b,t[15]=x):x=t[15];let S;t[16]===n.source?S=t[17]:(S=me(n.source),t[16]=n.source,t[17]=S);let C;t[18]===S?C=t[19]:(C=(0,K.jsx)(D,{variant:`outline`,children:S}),t[18]=S,t[19]=C);let w;t[20]!==v||t[21]!==x||t[22]!==C?(w=(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[v,x,C]}),t[20]=v,t[21]=x,t[22]=C,t[23]=w):w=t[23];let T;t[24]===ne?T=t[25]:(T=(0,K.jsx)(`p`,{className:`mt-1 truncate font-mono text-[11px] text-muted-foreground/80`,children:ne}),t[24]=ne,t[25]=T);let E;t[26]===n.config.transport?E=t[27]:(E=n.config.transport.toUpperCase(),t[26]=n.config.transport,t[27]=E);let O;t[28]===E?O=t[29]:(O=(0,K.jsx)(`span`,{children:E}),t[28]=E,t[29]=O);let A;t[30]===h?A=t[31]:(A=(0,K.jsx)(`span`,{children:h}),t[30]=h,t[31]=A);let j;t[32]===n.authStatus?j=t[33]:(j=(0,K.jsxs)(`span`,{children:[`Auth: `,n.authStatus]}),t[32]=n.authStatus,t[33]=j);let M;t[34]!==O||t[35]!==A||t[36]!==j?(M=(0,K.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2 text-[11px] text-muted-foreground`,children:[O,A,j]}),t[34]=O,t[35]=A,t[36]=j,t[37]=M):M=t[37];let N;t[38]===n.error?N=t[39]:(N=n.error?(0,K.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:n.error}):null,t[38]=n.error,t[39]=N);let P;t[40]!==w||t[41]!==T||t[42]!==M||t[43]!==N?(P=(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[w,T,M,N]}),t[40]=w,t[41]=T,t[42]=M,t[43]=N,t[44]=P):P=t[44];let F;t[45]!==r||t[46]!==d||t[47]!==n?(F=n.authStatus===`notLoggedIn`?(0,K.jsxs)(ee,{children:[(0,K.jsx)(s,{render:(0,K.jsx)(p,{size:`icon-sm`,variant:`outline`,disabled:r,onClick:()=>d(n),"aria-label":`Log in to ${n.name}`,children:(0,K.jsx)(oe,{})})}),(0,K.jsx)(i,{children:`Start OAuth login`})]}):null,t[45]=r,t[46]=d,t[47]=n,t[48]=F):F=t[48];let I;t[49]!==c||t[50]!==n?(I=()=>c(n),t[49]=c,t[50]=n,t[51]=I):I=t[51];let L;t[52]!==r||t[53]!==I?(L=(0,K.jsx)(p,{size:`sm`,variant:`outline`,onClick:I,disabled:r,children:`Edit`}),t[52]=r,t[53]=I,t[54]=L):L=t[54];let R;t[55]!==l||t[56]!==n?(R=()=>l(n),t[55]=l,t[56]=n,t[57]=R):R=t[57];let se=`Remove ${n.name}`,ce;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,K.jsx)(ie,{}),t[58]=ce):ce=t[58];let V;t[59]!==r||t[60]!==R||t[61]!==se?(V=(0,K.jsx)(s,{render:(0,K.jsx)(p,{size:`icon-sm`,variant:`destructive-outline`,disabled:r,onClick:R,"aria-label":se,children:ce})}),t[59]=r,t[60]=R,t[61]=se,t[62]=V):V=t[62];let H;t[63]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,K.jsx)(i,{children:`Remove server`}),t[63]=H):H=t[63];let U;t[64]===V?U=t[65]:(U=(0,K.jsxs)(ee,{children:[V,H]}),t[64]=V,t[65]=U);let W;t[66]!==o||t[67]!==n?(W=e=>o(n,!!e),t[66]=o,t[67]=n,t[68]=W):W=t[68];let le=`Enable ${n.name}`,G;t[69]!==r||t[70]!==n.config.enabled||t[71]!==W||t[72]!==le?(G=(0,K.jsx)(re,{checked:n.config.enabled,disabled:r,onCheckedChange:W,"aria-label":le}),t[69]=r,t[70]=n.config.enabled,t[71]=W,t[72]=le,t[73]=G):G=t[73];let ue;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(ue=()=>te(Oe),t[74]=ue):ue=t[74];let de=`Toggle ${n.name} inventory`,pe=f&&`rotate-180`,q;t[75]===pe?q=t[76]:(q=u(`transition-transform`,pe),t[75]=pe,t[76]=q);let J;t[77]===q?J=t[78]:(J=(0,K.jsx)(a,{className:q}),t[77]=q,t[78]=J);let Y;t[79]!==de||t[80]!==J?(Y=(0,K.jsx)(p,{size:`icon-sm`,variant:`ghost`,onClick:ue,"aria-label":de,children:J}),t[79]=de,t[80]=J,t[81]=Y):Y=t[81];let X;t[82]!==F||t[83]!==L||t[84]!==U||t[85]!==G||t[86]!==Y?(X=(0,K.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[F,L,U,G,Y]}),t[82]=F,t[83]=L,t[84]=U,t[85]=G,t[86]=Y,t[87]=X):X=t[87];let Z;t[88]!==P||t[89]!==X?(Z=(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 p-4 sm:flex-row sm:items-start sm:justify-between`,children:[P,X]}),t[88]=P,t[89]=X,t[90]=Z):Z=t[90];let Q;t[91]!==f||t[92]!==n?(Q=f?(0,K.jsx)(`div`,{className:`border-t bg-muted/20 p-4`,children:(0,K.jsx)(Ce,{server:n})}):null,t[91]=f,t[92]=n,t[93]=Q):Q=t[93];let $;return t[94]!==Z||t[95]!==Q?($=(0,K.jsxs)(`article`,{className:`rounded-lg border bg-card text-card-foreground shadow-sm/4`,children:[Z,Q]}),t[94]=Z,t[95]=Q,t[96]=$):$=t[96],$}function Oe(e){return!e}function ke(){let[e,t]=(0,z.useState)(null),[n,a]=(0,z.useState)(null),[c,d]=(0,z.useState)(null),[f,h]=(0,z.useState)(!0),[re,g]=(0,z.useState)(!1),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(null),[C,w]=(0,z.useState)(null),T=e?.workspaces??pe,E=e?.providers??q,D=(0,z.useMemo)(()=>T.find(e=>e.id===n)??null,[n,T]),k=(0,z.useCallback)(async(e,t)=>{t?.quiet||g(!0),w(null);try{d(await J().listServers({workspaceId:l.make(e),detail:`full`}))}catch(e){w(e instanceof Error?e.message:`Failed to load MCP servers.`),Y(`Failed to load MCP servers`,e)}finally{g(!1)}},[]),A=(0,z.useCallback)(async()=>{h(!0),w(null);try{let e=await J().listWorkspaces();t(e);let r=e.workspaces.find(e=>e.id===n)?.id??e.workspaces[0]?.id??null;a(r),r?await k(r,{quiet:!0}):d(null)}catch(e){w(e instanceof Error?e.message:`Failed to load MCP workspaces.`),Y(`Failed to load MCP workspaces`,e)}finally{h(!1)}},[k,n]);(0,z.useEffect)(()=>{A()},[A]);let ie=async()=>{if(!n){await A();return}await k(n)},I=async()=>{if(n){g(!0);try{d(await J().reloadServers({workspaceId:l.make(n)})),m.add(te({type:`success`,title:`MCP servers reloaded`}))}catch(e){Y(`Failed to reload MCP servers`,e)}finally{g(!1)}}},L=async e=>{n&&(d(await J().upsertServer({workspaceId:l.make(n),name:o.make(e.name.trim()),config:de(e)})),m.add(te({type:`success`,title:`MCP server saved`})))},ae=async(e,t)=>{if(n){v(e.name);try{d(await J().setServerEnabled({workspaceId:l.make(n),name:e.name,enabled:t}))}catch(e){Y(`Failed to update MCP server`,e)}finally{v(null)}}},oe=async e=>{if(n&&await r().dialogs.confirm(`Remove MCP server "${e.name}"?`)){v(e.name);try{d(await J().removeServer({workspaceId:l.make(n),name:e.name})),m.add(te({type:`success`,title:`MCP server removed`}))}catch(e){Y(`Failed to remove MCP server`,e)}finally{v(null)}}},R=async e=>{if(n){v(e.name);try{let t=await J().startOauthLogin({workspaceId:l.make(n),serverName:e.name,scopes:e.config.oauthScopes});await r().shell.openExternal(t.authorizationUrl),m.add(te({type:`success`,title:`OAuth login opened`}))}catch(e){Y(`Failed to start OAuth login`,e)}finally{v(null)}}},B=()=>{S(null),b(!0)},se=e=>{S(e),b(!0)};return(0,K.jsxs)(`div`,{className:`flex-1 p-6 sm:p-8`,children:[(0,K.jsxs)(`div`,{className:`mx-auto flex w-full max-w-4xl flex-col gap-6`,children:[(0,K.jsxs)(`header`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-semibold uppercase tracking-[0.08em] text-muted-foreground`,children:[(0,K.jsx)(N,{className:`size-3.5`}),`Provider MCP`]}),(0,K.jsx)(`h2`,{className:`mt-1 text-lg font-semibold tracking-[-0.01em]`,children:`MCP Servers`}),(0,K.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm leading-relaxed text-muted-foreground/80`,children:`Manage Codex MCP servers and inspect how other provider instances currently expose MCP support.`})]}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(be,{workspaces:T,selectedWorkspaceId:n,onChange:e=>{a(e),k(e)}}),(0,K.jsxs)(ee,{children:[(0,K.jsx)(s,{render:(0,K.jsx)(p,{size:`icon`,variant:`outline`,onClick:()=>void ie(),disabled:f||re,"aria-label":`Refresh MCP servers`,children:(0,K.jsx)(M,{className:u((f||re)&&`animate-spin`)})})}),(0,K.jsx)(i,{children:`Refresh`})]}),(0,K.jsxs)(p,{variant:`outline`,disabled:!n||re,onClick:()=>void I(),children:[(0,K.jsx)(F,{}),`Reload`]}),(0,K.jsxs)(p,{disabled:!n,onClick:B,children:[(0,K.jsx)(j,{}),`Add server`]})]})]}),(0,K.jsx)(Se,{providers:E,selectedWorkspaceId:n,onSelectWorkspace:e=>{a(e),k(e)}}),D?(0,K.jsxs)(`div`,{className:`rounded-lg border bg-muted/20 px-4 py-3 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1`,children:[(0,K.jsx)(`span`,{className:`font-mono`,children:D.displayPath}),(0,K.jsx)(`span`,{children:D.mode===`authOverlay`?`Auth overlay`:`Direct home`}),(0,K.jsxs)(`span`,{children:[`Used by`,` `,D.providerInstances.map(e=>e.displayName??e.instanceId).join(`, `)]})]}),c?.configPath?(0,K.jsx)(`div`,{className:`mt-1 font-mono text-[11px] text-muted-foreground/70`,children:c.configPath}):null]}):null,e?.issues.length?(0,K.jsx)(`div`,{className:`space-y-2 rounded-lg border border-warning/30 bg-warning/6 p-3`,children:e.issues.map(e=>(0,K.jsxs)(`div`,{className:`flex gap-2 text-xs`,children:[(0,K.jsx)(P,{className:`mt-0.5 size-3.5 text-warning-foreground`}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`font-medium`,children:e.instanceId}),`: `,e.message]})]},`${e.instanceId}:${e.message}`))}):null,C?(0,K.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/6 p-3 text-sm text-destructive-foreground`,children:C}):null,f?(0,K.jsx)(`div`,{className:`flex min-h-48 items-center justify-center rounded-lg border border-dashed`,children:(0,K.jsx)(O,{className:`size-5 animate-spin text-muted-foreground`})}):T.length===0?(0,K.jsxs)(`div`,{className:`rounded-lg border border-dashed p-8 text-center`,children:[(0,K.jsx)(N,{className:`mx-auto size-7 text-muted-foreground/60`}),(0,K.jsx)(`h3`,{className:`mt-3 text-sm font-semibold`,children:`No Codex workspaces`}),(0,K.jsx)(`p`,{className:`mx-auto mt-1 max-w-md text-sm text-muted-foreground/80`,children:`Add or enable a Codex provider instance before managing MCP servers.`})]}):c?.servers.length===0?(0,K.jsxs)(`div`,{className:`rounded-lg border border-dashed p-8 text-center`,children:[(0,K.jsx)(ne,{className:`mx-auto size-7 text-muted-foreground/60`}),(0,K.jsx)(`h3`,{className:`mt-3 text-sm font-semibold`,children:`No MCP servers configured`}),(0,K.jsx)(`p`,{className:`mx-auto mt-1 max-w-md text-sm text-muted-foreground/80`,children:`Add a stdio or HTTP server to make its tools available to Codex sessions.`}),(0,K.jsxs)(p,{className:`mt-4`,onClick:B,children:[(0,K.jsx)(j,{}),`Add server`]})]}):(0,K.jsx)(`div`,{className:`grid gap-3`,children:c?.servers.map(e=>(0,K.jsx)(De,{server:e,mutating:_===e.name,onToggleEnabled:(e,t)=>void ae(e,t),onEdit:se,onRemove:e=>void oe(e),onOauthLogin:e=>void R(e)},e.name))})]}),(0,K.jsx)(ye,{open:y,server:x,onOpenChange:b,onSubmit:L})]})}export{ke as McpServersSettings};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{t as n}from"./compiler-runtime-BNrXlsa1.js";import{It as r,La as i,Lt as a,_t as o}from"./react-CjD7iThp.js";import{Jt as s,cn as c,ln as l,sn as u,vn as d}from"./projectAtoms-DUEBb7Zz.js";import{A as f,An as p,Ei as m,Gn as h,Hr as g,In as _,Jr as v,Ki as y,M as b,Mn as x,Ni as S,Nn as C,Nr as w,On as T,P as E,Pn as D,Sr as O,Ti as k,Wr as A,Xn as j,Xr as M,Yn as N,br as P,cr as F,da as I,f as ee,fa as L,fr as R,g as z,jn as B,k as te,kn as V,m as H,pa as ne,ua as U,v as W,vr as G,x as re,y as ie,yr as K}from"./composerDraftStore-D12lUSfh.js";import{_ as q,a as J,f as ae,i as Y,o as X,p as oe}from"./toast-DE7a4wkW.js";import{At as se,D as ce,It as le,Lt as ue,Mt as de,Nt as fe,Pt as pe,S as me,Tt as he,Un as ge,_ as _e,b as ve,ln as ye,lr as be,tn as xe,vn as Se,vr as Ce,x as we}from"./providerIconUtils-uhWb4bdg.js";import{C as Te,w as Ee}from"./kbd-aeSsjiPI.js";import{t as De}from"./download-DLBlpp4h.js";import{t as Z}from"./plus-4Oy56d-3.js";import{t as Oe}from"./refresh-cw-DkBMGllm.js";import{c as ke,d as Ae,l as je,n as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le}from"./radio-group-DHyQlLeX.js";import{t as Re}from"./trash-2-BI5xcbsm.js";import{t as ze}from"./x-fI9snvD3.js";import{t as Be}from"./input-B9-RWT56.js";import{d as Ve,t as He,u as Ue}from"./ProviderUpdateLaunchNotification.logic-6TpFsmiI.js";import{t as We}from"./AnimatedHeight-DgItDSis.js";import{a as Ge,i as Ke,n as qe,r as Je,t as Ye}from"./settingsLayout-D22Mm0u3.js";import{n as Xe,r as Ze,t as Qe}from"./providerDriverMeta-Dwi6Zqgd.js";import{t as $e}from"./draft-input-dLlVMl5P.js";import{t as et}from"./RedactedSensitiveText-BfoVjPsE.js";var tt=M(`circle-arrow-up`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 12-4-4-4 4`,key:`177agl`}],[`path`,{d:`M12 16V8`,key:`1sbj14`}]]),nt=M(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Q=e(t(),1),rt=n(),$=S();function it(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[-_]+/g,` `).replace(/^./,e=>e.toUpperCase())}function at(e){return a(e)??r(e)}function ot(e,t){let n=at(e)?.[t];return typeof n==`string`?n:void 0}function st(e){return at(e)?.providerSettingsForm??{}}function ct(e){return r(e.settingsSchema)?.providerSettingsFormSchema??{}}function lt(e){try{let t=o(e)(void 0);return typeof t==`boolean`?t:void 0}catch{return}}function ut(e){let t=ct(e),n=new Map((t.order??[]).map((e,t)=>[e,t])),r=n.size;return Object.keys(e.settingsSchema.fields).map((e,t)=>({key:e,index:t})).toSorted((e,t)=>(n.get(e.key)??r+e.index)-(n.get(t.key)??r+t.index)).flatMap(({key:t})=>{let n=e.settingsSchema.fields[t],r=st(n);if(r.hidden)return[];let i=ot(n,`title`),a=ot(n,`description`);return[{key:t,control:r.control??`text`,label:i??it(t),...a===void 0?{}:{description:a},...r.placeholder===void 0?{}:{placeholder:r.placeholder},clearWhenEmpty:r.clearWhenEmpty??`omit`,...r.control===`switch`?{defaultBooleanValue:lt(n)}:{}}]})}function dt(e,t){if(typeof e!=`object`||!e)return``;let n=e[t];return typeof n==`string`?n:``}function ft(e,t,n=!1){if(typeof e!=`object`||!e)return n;let r=e[t];return typeof r==`boolean`?r:n}function pt(e,t,n){let r=typeof e==`object`&&e?{...e}:{};if(typeof n==`boolean`){let e=t.defaultBooleanValue??!1;return t.clearWhenEmpty===`omit`&&n===e?delete r[t.key]:r[t.key]=n,Object.keys(r).length>0?r:void 0}let i=n.trim();return t.clearWhenEmpty===`omit`&&i.length===0?delete r[t.key]:r[t.key]=n,Object.keys(r).length>0?r:void 0}function mt(e){let t=(0,rt.c)(4);if(e.variant===`card`){let n;return t[0]===e.children?n=t[1]:(n=(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:e.children}),t[0]=e.children,t[1]=n),n}let n;return t[2]===e.children?n=t[3]:(n=(0,$.jsx)(`div`,{className:`grid gap-1.5`,children:e.children}),t[2]=e.children,t[3]=n),n}function ht(e){let t=(0,rt.c)(70),{field:n,value:r,idPrefix:i,variant:a,onChange:o}=e,s=`${i}-${n.key}`,c=a===`card`?`mt-1 block text-xs text-muted-foreground`:`text-[11px] text-muted-foreground`,l;t[0]===n.label?l=t[1]:(l=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:n.label}),t[0]=n.label,t[1]=l);let u=l,d;t[2]!==c||t[3]!==n.description?(d=n.description?(0,$.jsx)(`span`,{className:c,children:n.description}):null,t[2]=c,t[3]=n.description,t[4]=d):d=t[4];let f=d;if(n.control===`switch`){let e;t[5]!==f||t[6]!==u?(e=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[u,f]}),t[5]=f,t[6]=u,t[7]=e):e=t[7];let i;t[8]!==n.defaultBooleanValue||t[9]!==n.key||t[10]!==r?(i=ft(r,n.key,n.defaultBooleanValue),t[8]=n.defaultBooleanValue,t[9]=n.key,t[10]=r,t[11]=i):i=t[11];let s;t[12]!==n||t[13]!==o||t[14]!==r?(s=e=>o(pt(r,n,!!e)),t[12]=n,t[13]=o,t[14]=r,t[15]=s):s=t[15];let c;t[16]!==n.label||t[17]!==i||t[18]!==s?(c=(0,$.jsx)(ce,{checked:i,onCheckedChange:s,"aria-label":n.label}),t[16]=n.label,t[17]=i,t[18]=s,t[19]=c):c=t[19];let l;t[20]!==e||t[21]!==c?(l=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[e,c]}),t[20]=e,t[21]=c,t[22]=l):l=t[22];let d;return t[23]!==l||t[24]!==a?(d=(0,$.jsx)(mt,{variant:a,children:l}),t[23]=l,t[24]=a,t[25]=d):d=t[25],d}if(n.control===`textarea`){let e=a===`card`&&`block`,i;t[26]===e?i=t[27]:(i=O(e),t[26]=e,t[27]=i);let c=a===`card`&&`mt-1.5`,l;t[28]===c?l=t[29]:(l=O(c),t[28]=c,t[29]=l);let d;t[30]!==n.key||t[31]!==r?(d=dt(r,n.key),t[30]=n.key,t[31]=r,t[32]=d):d=t[32];let p;t[33]!==n||t[34]!==o||t[35]!==r?(p=e=>o(pt(r,n,e.target.value)),t[33]=n,t[34]=o,t[35]=r,t[36]=p):p=t[36];let m;t[37]!==n.placeholder||t[38]!==s||t[39]!==l||t[40]!==d||t[41]!==p?(m=(0,$.jsx)(he,{id:s,className:l,value:d,onChange:p,placeholder:n.placeholder,spellCheck:!1}),t[37]=n.placeholder,t[38]=s,t[39]=l,t[40]=d,t[41]=p,t[42]=m):m=t[42];let h;t[43]!==f||t[44]!==s||t[45]!==u||t[46]!==i||t[47]!==m?(h=(0,$.jsxs)(`label`,{htmlFor:s,className:i,children:[u,m,f]}),t[43]=f,t[44]=s,t[45]=u,t[46]=i,t[47]=m,t[48]=h):h=t[48];let g;return t[49]!==h||t[50]!==a?(g=(0,$.jsx)(mt,{variant:a,children:h}),t[49]=h,t[50]=a,t[51]=g):g=t[51],g}let p=n.control===`password`?`password`:void 0,m=a===`card`&&`block`,h;t[52]===m?h=t[53]:(h=O(m),t[52]=m,t[53]=h);let g;t[54]!==n||t[55]!==s||t[56]!==o||t[57]!==p||t[58]!==r||t[59]!==a?(g=a===`card`?(0,$.jsx)($e,{id:s,className:`mt-1.5`,type:p,autoComplete:n.control===`password`?`off`:void 0,value:dt(r,n.key),onCommit:e=>o(pt(r,n,e)),placeholder:n.placeholder,spellCheck:!1}):(0,$.jsx)(Be,{id:s,className:`bg-background`,type:p,autoComplete:n.control===`password`?`off`:void 0,value:dt(r,n.key),onChange:e=>o(pt(r,n,e.target.value)),placeholder:n.placeholder,spellCheck:!1}),t[54]=n,t[55]=s,t[56]=o,t[57]=p,t[58]=r,t[59]=a,t[60]=g):g=t[60];let _;t[61]!==f||t[62]!==s||t[63]!==u||t[64]!==h||t[65]!==g?(_=(0,$.jsxs)(`label`,{htmlFor:s,className:h,children:[u,g,f]}),t[61]=f,t[62]=s,t[63]=u,t[64]=h,t[65]=g,t[66]=_):_=t[66];let v;return t[67]!==_||t[68]!==a?(v=(0,$.jsx)(mt,{variant:a,children:_}),t[67]=_,t[68]=a,t[69]=v):v=t[69],v}function gt(e){let t=(0,rt.c)(15),{definition:n,value:r,idPrefix:i,variant:a,onChange:o}=e,s;t[0]===n?s=t[1]:(s=ut(n),t[0]=n,t[1]=s);let c=s;if(c.length===0)return null;let l;if(t[2]!==c||t[3]!==i||t[4]!==o||t[5]!==r||t[6]!==a){let e;t[8]!==i||t[9]!==o||t[10]!==r||t[11]!==a?(e=e=>(0,$.jsx)(ht,{field:e,value:r,idPrefix:i,variant:a,onChange:o},e.key),t[8]=i,t[9]=o,t[10]=r,t[11]=a,t[12]=e):e=t[12],l=c.map(e),t[2]=c,t[3]=i,t[4]=o,t[5]=r,t[6]=a,t[7]=l}else l=t[7];let u;return t[13]===l?u=t[14]:(u=(0,$.jsx)($.Fragment,{children:l}),t[13]=l,t[14]=u),u}var _t=[`#2563eb`,`#16a34a`,`#ea580c`,`#dc2626`,`#7c3aed`,`#0891b2`];function vt(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,48)}function yt(e,t){let n=vt(t);return n?`${e}_${n}`:``}var bt=/^[a-zA-Z][a-zA-Z0-9_-]*$/,xt=U.make(`codex`),St=Qe[0],Ct={},wt=[{value:U.make(`gemini`),label:`Gemini`,icon:ye},{value:U.make(`acpRegistry`),label:`ACP Registry`,icon:xe},{value:U.make(`piAgent`),label:`Pi Agent`,icon:Se}];function Tt(e,t){return e.length===0?`Instance ID is required.`:e.length>64?`Instance ID must be 64 characters or fewer.`:bt.test(e)?t.has(e)?`An instance named '${e}' already exists.`:null:`Instance ID must start with a letter and use only letters, digits, '-', or '_'.`}function Et(e){let t=(0,rt.c)(134),{open:n,onOpenChange:r}=e,i=u(),{updateSettings:a}=c(),[o,s]=(0,Q.useState)(0),[l,d]=(0,Q.useState)(xt),[f,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(``),[v,y]=(0,Q.useState)(!1),b;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(b={},t[0]=b):b=t[0];let[x,S]=(0,Q.useState)(b),[C,w]=(0,Q.useState)(!1),T;t[1]===i.providerInstances?T=t[2]:(T=new Set(Object.keys(i.providerInstances??{})),t[1]=i.providerInstances,t[2]=T);let E=T,D,k;t[3]===n?(D=t[4],k=t[5]):(D=()=>{n&&(d(xt),p(``),h(``),_(``),s(0),y(!1),S({}),w(!1))},k=[n],t[3]=n,t[4]=D,t[5]=k),(0,Q.useEffect)(D,k);let A,j;t[6]!==l||t[7]!==v||t[8]!==f?(A=()=>{v||_(yt(l,f))},j=[l,f,v],t[6]=l,t[7]=v,t[8]=f,t[9]=A,t[10]=j):(A=t[9],j=t[10]),(0,Q.useEffect)(A,j);let M=Xe[l]??St,N;t[11]===M?N=t[12]:(N=ut(M),t[11]=M,t[12]=N);let F=N,ee;t[13]!==E||t[14]!==g?(ee=Tt(g,E),t[13]=E,t[14]=g,t[15]=ee):ee=t[15];let L=ee,R=C&&L!==null,z;t[16]!==M.label||t[17]!==f?(z=f.trim()||`${M.label} Workspace`,t[16]=M.label,t[17]=f,t[18]=z):z=t[18];let B=z,te;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(te=[`Driver`,`Identity`,`Config`],t[19]=te):te=t[19];let V=te,H;t[20]!==M.label||t[21]!==B?(H=[M.label,B,null],t[20]=M.label,t[21]=B,t[22]=H):H=t[22];let ne=H,W=x[l]??Ct,G;t[23]===l?G=t[24]:(G=e=>{S(t=>{let n={...t};return e===void 0||Object.keys(e).length===0?delete n[l]:n[l]=e,n})},t[23]=l,t[24]=G);let re=G,K;t[25]!==m||t[26]!==x||t[27]!==l||t[28]!==M.label||t[29]!==g||t[30]!==L||t[31]!==f||t[32]!==r||t[33]!==i.providerInstances||t[34]!==a?(K=()=>{if(w(!0),L!==null)return;let e=x[l]??{},t=Object.keys(e).length>0,n=ie(m),o={driver:l,enabled:!0,...f.trim().length>0?{displayName:f.trim()}:{},...n?{accentColor:n}:{},...t?{config:e}:{}},s=I.make(g),c={...i.providerInstances,[s]:o};try{a({providerInstances:c}),Y.add({type:`success`,title:`Provider instance added`,description:`${M.label} instance '${g}' was added.`}),r(!1)}catch(e){let t=e;Y.add({type:`error`,title:`Could not add provider instance`,description:t instanceof Error?t.message:`Update failed.`})}},t[25]=m,t[26]=x,t[27]=l,t[28]=M.label,t[29]=g,t[30]=L,t[31]=f,t[32]=r,t[33]=i.providerInstances,t[34]=a,t[35]=K):K=t[35];let J=K,ae,X;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,$.jsx)(ue,{children:`Add provider instance`}),X=(0,$.jsx)(de,{children:`Configure an additional provider instance — for example, a second Codex install pointed at a different workspace.`}),t[36]=ae,t[37]=X):(ae=t[36],X=t[37]);let oe;t[38]!==o||t[39]!==ne?(oe=(0,$.jsxs)(pe,{className:`border-b border-border/70 bg-background`,children:[ae,X,(0,$.jsx)(`div`,{className:`grid grid-cols-3 gap-2`,children:V.map((e,t)=>(0,$.jsxs)(`button`,{type:`button`,className:O(`grid min-w-0 grid-cols-[1rem_minmax(0,1fr)] gap-x-2 rounded-lg border px-3 py-2 text-left`,t===o?`border-primary bg-primary/10 ring-1 ring-primary/25`:t<o?`border-border bg-background`:`border-border bg-muted/40`),onClick:()=>s(t),children:[(0,$.jsx)(`span`,{className:O(`row-span-2 mt-0.5 grid size-4 place-items-center rounded-full border`,t<o?`border-primary bg-primary text-primary-foreground`:t===o?`border-primary bg-background`:`border-muted-foreground/35 bg-background`),"aria-hidden":!0,children:t<o?(0,$.jsx)(q,{className:`size-3`}):null}),(0,$.jsxs)(`span`,{className:`text-[10px] font-medium uppercase text-muted-foreground`,children:[`Step `,t+1]}),(0,$.jsxs)(`span`,{className:`truncate text-xs font-semibold text-foreground`,children:[e,t<o&&ne[t]?`: ${ne[t]}`:``]})]},e))})]}),t[38]=o,t[39]=ne,t[40]=oe):oe=t[40];let ce=o!==0&&`hidden`,me;t[41]===ce?me=t[42]:(me=O(`grid gap-2`,ce),t[41]=ce,t[42]=me);let he;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(he=(0,$.jsx)(`span`,{id:`add-instance-driver-label`,className:`text-xs font-medium text-foreground`,children:`Driver`}),t[43]=he):he=t[43];let ge;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(ge=e=>d(U.make(e)),t[44]=ge):ge=t[44];let ve;t[45]===l?ve=t[46]:(ve=Qe.map(e=>{let t=e.icon,n=e.value===l;return(0,$.jsxs)(Me,{value:e.value,className:O(`relative flex cursor-pointer items-center gap-3 rounded-lg border px-3 py-3 text-left outline-none transition-[background-color,border-color,box-shadow]`,`focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,n?`border-primary bg-background shadow-sm ring-2 ring-primary/35`:`border-border bg-background hover:border-foreground/20 hover:bg-muted/50`),children:[(0,$.jsx)(t,{className:`size-5 shrink-0`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-foreground`,children:e.label}),e.badgeLabel?(0,$.jsx)(_e,{variant:`warning`,size:`sm`,children:e.badgeLabel}):null]},e.value)}),t[45]=l,t[46]=ve);let ye;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(ye=wt.map(kt),t[47]=ye):ye=t[47];let be;t[48]!==l||t[49]!==ve?(be=(0,$.jsxs)(Ie,{value:l,onValueChange:ge,"aria-labelledby":`add-instance-driver-label`,className:`grid grid-cols-2 gap-2.5`,children:[ve,ye]}),t[48]=l,t[49]=ve,t[50]=be):be=t[50];let xe;t[51]!==me||t[52]!==be?(xe=(0,$.jsxs)(`div`,{className:me,children:[he,be]}),t[51]=me,t[52]=be,t[53]=xe):xe=t[53];let Se=o!==1&&`hidden`,Ce;t[54]===Se?Ce=t[55]:(Ce=O(`grid gap-2`,Se),t[54]=Se,t[55]=Ce);let we;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(we=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Label`}),t[56]=we):we=t[56];let Te;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(Te=e=>p(e.target.value),t[57]=Te):Te=t[57];let Ee;t[58]===f?Ee=t[59]:(Ee=(0,$.jsx)(Be,{className:`bg-background`,placeholder:`e.g. Work`,value:f,onChange:Te}),t[58]=f,t[59]=Ee);let De;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(De=(0,$.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`Shown in the provider list. Optional.`}),t[60]=De):De=t[60];let Z;t[61]!==Ce||t[62]!==Ee?(Z=(0,$.jsxs)(`label`,{className:Ce,children:[we,Ee,De]}),t[61]=Ce,t[62]=Ee,t[63]=Z):Z=t[63];let Oe=o!==1&&`hidden`,ke;t[64]===Oe?ke=t[65]:(ke=O(`grid gap-2`,Oe),t[64]=Oe,t[65]=ke);let Ae;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Instance ID`}),t[66]=Ae):Ae=t[66];let je=`${l}_work`,Ne;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=e=>{y(!0),_(e.target.value)},t[67]=Ne):Ne=t[67];let Pe;t[68]!==g||t[69]!==R||t[70]!==je?(Pe=(0,$.jsx)(Be,{className:`bg-background`,placeholder:je,value:g,onChange:Ne,"aria-invalid":R}),t[68]=g,t[69]=R,t[70]=je,t[71]=Pe):Pe=t[71];let Fe;t[72]!==L||t[73]!==R?(Fe=R?(0,$.jsx)(`span`,{className:`text-[11px] text-destructive`,children:L}):(0,$.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`Routing key used by threads and sessions. Letters, digits, '-', or '_'.`}),t[72]=L,t[73]=R,t[74]=Fe):Fe=t[74];let Le;t[75]!==ke||t[76]!==Pe||t[77]!==Fe?(Le=(0,$.jsxs)(`label`,{className:ke,children:[Ae,Pe,Fe]}),t[75]=ke,t[76]=Pe,t[77]=Fe,t[78]=Le):Le=t[78];let Re=o!==1&&`hidden`,ze;t[79]===Re?ze=t[80]:(ze=O(`grid gap-2`,Re),t[79]=Re,t[80]=ze);let Ve;t[81]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Accent color`}),t[81]=Ve):Ve=t[81];let He;t[82]===m?He=t[83]:(He=ie(m)??_t[0],t[82]=m,t[83]=He);let Ue;t[84]===Symbol.for(`react.memo_cache_sentinel`)?(Ue=e=>h(e.target.value),t[84]=Ue):Ue=t[84];let Ge;t[85]===He?Ge=t[86]:(Ge=(0,$.jsx)(`input`,{type:`color`,value:He,onChange:Ue,"aria-label":`Provider instance accent color`,className:`h-8 w-10 cursor-pointer rounded-xl border border-input bg-background p-0.5`}),t[85]=He,t[86]=Ge);let Ke;t[87]===m?Ke=t[88]:(Ke=_t.map(e=>(0,$.jsx)(`button`,{type:`button`,className:O(`size-6 cursor-pointer rounded-full border transition`,m.toLowerCase()===e?`scale-110 border-foreground ring-2 ring-ring ring-offset-1 ring-offset-background`:`border-black/10 hover:scale-105 dark:border-white/20`),style:{backgroundColor:e},onClick:()=>h(e),"aria-label":`Use ${e} accent`},e)),t[87]=m,t[88]=Ke);let qe;t[89]===Ke?qe=t[90]:(qe=(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Ke}),t[89]=Ke,t[90]=qe);let Je;t[91]===m?Je=t[92]:(Je=m?(0,$.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 px-2 text-xs text-muted-foreground`,onClick:()=>h(``),children:`Clear`}):null,t[91]=m,t[92]=Je);let Ye;t[93]!==Ge||t[94]!==qe||t[95]!==Je?(Ye=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[Ge,qe,Je]}),t[93]=Ge,t[94]=qe,t[95]=Je,t[96]=Ye):Ye=t[96];let Ze;t[97]===Symbol.for(`react.memo_cache_sentinel`)?(Ze=(0,$.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`Optional marker shown in the picker.`}),t[97]=Ze):Ze=t[97];let $e;t[98]!==ze||t[99]!==Ye?($e=(0,$.jsxs)(`div`,{className:ze,children:[Ve,Ye,Ze]}),t[98]=ze,t[99]=Ye,t[100]=$e):$e=t[100];let et;t[101]!==W||t[102]!==l||t[103]!==M||t[104]!==F.length||t[105]!==re||t[106]!==o?(et=F.length>0?(0,$.jsx)(`div`,{className:O(`grid gap-4`,o!==2&&`hidden`),children:(0,$.jsx)(gt,{definition:M,value:W,idPrefix:`add-provider-${l}`,variant:`dialog`,onChange:re})}):o===2?(0,$.jsx)(`div`,{className:`grid gap-2`,children:(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This driver has no required configuration. You can add the instance now.`})}):null,t[101]=W,t[102]=l,t[103]=M,t[104]=F.length,t[105]=re,t[106]=o,t[107]=et):et=t[107];let tt;t[108]!==xe||t[109]!==Z||t[110]!==Le||t[111]!==$e||t[112]!==et?(tt=(0,$.jsx)(`div`,{"data-slot":`dialog-panel`,className:`space-y-4 border-b border-border/70 bg-muted/20 px-6 py-5`,children:(0,$.jsxs)(We,{children:[xe,Z,Le,$e,et]})}),t[108]=xe,t[109]=Z,t[110]=Le,t[111]=$e,t[112]=et,t[113]=tt):tt=t[113];let nt;t[114]!==r||t[115]!==o?(nt=()=>{if(o===0){r(!1);return}s(Ot)},t[114]=r,t[115]=o,t[116]=nt):nt=t[116];let it=o===0?`Cancel`:`Back`,at;t[117]!==nt||t[118]!==it?(at=(0,$.jsx)(P,{variant:`outline`,size:`sm`,onClick:nt,children:it}),t[117]=nt,t[118]=it,t[119]=at):at=t[119];let ot;t[120]!==J||t[121]!==o?(ot=o<V.length-1?(0,$.jsx)(P,{size:`sm`,onClick:()=>s(Dt),children:`Next`}):(0,$.jsx)(P,{size:`sm`,onClick:J,children:`Add instance`}),t[120]=J,t[121]=o,t[122]=ot):ot=t[122];let st;t[123]!==at||t[124]!==ot?(st=(0,$.jsxs)(fe,{className:`border-t bg-background`,children:[at,ot]}),t[123]=at,t[124]=ot,t[125]=st):st=t[125];let ct;t[126]!==oe||t[127]!==tt||t[128]!==st?(ct=(0,$.jsx)(le,{className:`max-w-xl overflow-hidden`,children:(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-col overflow-hidden border-foreground/10 bg-background shadow-2xl`,children:[oe,tt,st]})}),t[126]=oe,t[127]=tt,t[128]=st,t[129]=ct):ct=t[129];let lt;return t[130]!==r||t[131]!==n||t[132]!==ct?(lt=(0,$.jsx)(se,{open:n,onOpenChange:r,children:ct}),t[130]=r,t[131]=n,t[132]=ct,t[133]=lt):lt=t[133],lt}function Dt(e){return Math.min(2,e+1)}function Ot(e){return Math.max(0,e-1)}function kt(e){let t=e.icon;return(0,$.jsxs)(Me,{value:e.value,disabled:!0,className:O(`relative flex cursor-not-allowed items-center gap-3 rounded-lg border border-border bg-background px-3 py-3 text-left opacity-55 outline-none`),children:[(0,$.jsx)(t,{className:`size-5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-foreground`,children:e.label}),(0,$.jsx)(_e,{variant:`warning`,size:`sm`,children:`Coming Soon`})]},e.value)}function At(e){let{open:t,defaultOpen:n,onOpenChange:r,disabled:i}=e,a=t!==void 0,[o,s]=N({controlled:t,default:n,name:`Collapsible`,state:`open`}),{mounted:c,setMounted:l,transitionStatus:u}=p(o,!0,!0),[d,f]=Q.useState(o),[{height:m,width:g},v]=Q.useState({height:void 0,width:void 0}),y=_(),[b,x]=Q.useState(),S=b??y,[C,w]=Q.useState(!1),[T,E]=Q.useState(!1),O=Q.useRef(null),k=Q.useRef(null),A=Q.useRef(null),M=Q.useRef(null),P=V(M,!1),F=j(e=>{let t=!o,n=D(R,e.nativeEvent);if(r(t,n),n.isCanceled)return;let i=M.current;k.current===`css-animation`&&i!=null&&i.style.removeProperty(`animation-name`),!C&&!T&&(k.current!=null&&k.current!==`css-animation`&&!c&&t&&l(!0),k.current===`css-animation`&&(!d&&t&&f(!0),!c&&t&&l(!0))),s(t),k.current===`none`&&c&&!t&&l(!1)});return h(()=>{a&&k.current===`none`&&!T&&!o&&l(!1)},[a,T,o,t,l]),Q.useMemo(()=>({abortControllerRef:O,animationTypeRef:k,disabled:i,handleTrigger:F,height:m,mounted:c,open:o,panelId:S,panelRef:M,runOnceAnimationsFinish:P,setDimensions:v,setHiddenUntilFound:w,setKeepMounted:E,setMounted:l,setOpen:s,setPanelIdState:x,setVisible:f,transitionDimensionRef:A,transitionStatus:u,visible:d,width:g}),[O,k,i,F,m,c,o,S,M,P,v,w,E,l,s,f,A,u,d,g])}var jt=Q.createContext(void 0);function Mt(){let e=Q.useContext(jt);if(e===void 0)throw Error(A(15));return e}var Nt=function(e){return e.open=`data-open`,e.closed=`data-closed`,e[e.startingStyle=G.startingStyle]=`startingStyle`,e[e.endingStyle=G.endingStyle]=`endingStyle`,e}({}),Pt={[Nt.open]:``},Ft={[Nt.closed]:``},It={open(e){return e?Pt:Ft},...K},Lt=Q.forwardRef(function(e,t){let{render:n,className:r,defaultOpen:i=!1,disabled:a=!1,onOpenChange:o,open:s,...c}=e,l=j(o),u=At({open:s,defaultOpen:i,onOpenChange:l,disabled:a}),d=Q.useMemo(()=>({open:u.open,disabled:u.disabled,transitionStatus:u.transitionStatus}),[u.open,u.disabled,u.transitionStatus]),f=Q.useMemo(()=>({...u,onOpenChange:l,state:d}),[u,l,d]),p=w(`div`,e,{state:d,ref:t,props:c,stateAttributesMapping:It});return(0,$.jsx)(jt.Provider,{value:f,children:p})}),Rt=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e}({});function zt(e){let{abortControllerRef:t,animationTypeRef:n,externalRef:r,height:i,hiddenUntilFound:a,keepMounted:o,id:s,mounted:c,onOpenChange:l,open:u,panelRef:d,runOnceAnimationsFinish:f,setDimensions:p,setMounted:m,setOpen:_,setVisible:v,transitionDimensionRef:y,visible:b,width:S}=e,w=Q.useRef(!1),T=Q.useRef(null),E=Q.useRef(u),O=Q.useRef(u),k=x(),A=Q.useMemo(()=>n.current===`css-animation`?!b:!u&&!c,[u,c,b,n]),M=g(r,d,j(e=>{if(!e)return;if(n.current==null||y.current==null){let t=getComputedStyle(e),r=t.animationName!==`none`&&t.animationName!==``,i=t.transitionDuration!==`0s`&&t.transitionDuration!==``;r&&i||(t.animationName===`none`&&t.transitionDuration!==`0s`?n.current=`css-transition`:t.animationName!==`none`&&t.transitionDuration===`0s`?n.current=`css-animation`:n.current=`none`),e.getAttribute(Rt.orientation)===`horizontal`||t.transitionProperty.indexOf(`width`)>-1?y.current=`width`:y.current=`height`}if(n.current!==`css-transition`)return;(i===void 0||S===void 0)&&(p({height:e.scrollHeight,width:e.scrollWidth}),O.current&&e.style.setProperty(`transition-duration`,`0s`));let t=-1,r=-1;return t=B.request(()=>{O.current=!1,r=B.request(()=>{setTimeout(()=>{e.style.removeProperty(`transition-duration`)})})}),()=>{B.cancel(t),B.cancel(r)}}));return h(()=>{if(n.current!==`css-transition`)return;let e=d.current;if(!e)return;let r=-1;if(t.current!=null&&(t.current.abort(),t.current=null),u){let t={"justify-content":e.style.justifyContent,"align-items":e.style.alignItems,"align-content":e.style.alignContent,"justify-items":e.style.justifyItems};Object.keys(t).forEach(t=>{e.style.setProperty(t,`initial`,`important`)}),!O.current&&!o&&e.setAttribute(Nt.startingStyle,``),p({height:e.scrollHeight,width:e.scrollWidth}),r=B.request(()=>{Object.entries(t).forEach(([t,n])=>{n===``?e.style.removeProperty(t):e.style.setProperty(t,n)})})}else{if(e.scrollHeight===0&&e.scrollWidth===0)return;p({height:e.scrollHeight,width:e.scrollWidth});let n=new AbortController;t.current=n;let r=n.signal,i=null,a=Nt.endingStyle;return i=new MutationObserver(o=>{o.some(e=>e.type===`attributes`&&e.attributeName===a)&&(i?.disconnect(),i=null,f(()=>{p({height:0,width:0}),e.style.removeProperty(`content-visibility`),m(!1),t.current===n&&(t.current=null)},r))}),i.observe(e,{attributes:!0,attributeFilter:[a]}),()=>{i?.disconnect(),k.cancel(),t.current===n&&(n.abort(),t.current=null)}}return()=>{B.cancel(r)}},[t,n,k,a,o,c,u,d,f,p,m]),h(()=>{if(n.current!==`css-animation`)return;let e=d.current;e&&(T.current=e.style.animationName||T.current,e.style.setProperty(`animation-name`,`none`),p({height:e.scrollHeight,width:e.scrollWidth}),!E.current&&!w.current&&e.style.removeProperty(`animation-name`),u?(t.current!=null&&(t.current.abort(),t.current=null),m(!0),v(!0)):(t.current=new AbortController,f(()=>{m(!1),v(!1),t.current=null},t.current.signal)))},[t,n,u,d,f,p,m,v,b]),C(()=>{let e=B.request(()=>{E.current=!1});return()=>B.cancel(e)}),h(()=>{if(!a)return;let e=d.current;if(!e)return;let t=-1,n=-1;return u&&w.current&&(e.style.transitionDuration=`0s`,p({height:e.scrollHeight,width:e.scrollWidth}),t=B.request(()=>{w.current=!1,n=B.request(()=>{setTimeout(()=>{e.style.removeProperty(`transition-duration`)})})})),()=>{B.cancel(t),B.cancel(n)}},[a,u,d,p]),h(()=>{let e=d.current;e&&a&&A&&(e.setAttribute(`hidden`,`until-found`),n.current===`css-transition`&&e.setAttribute(Nt.startingStyle,``))},[a,A,n,d]),Q.useEffect(function(){let e=d.current;if(!e)return;function t(e){w.current=!0,_(!0),l(!0,D(F,e))}return e.addEventListener(`beforematch`,t),()=>{e.removeEventListener(`beforematch`,t)}},[l,d,_]),Q.useMemo(()=>({props:{hidden:A,id:s,ref:M}}),[A,s,M])}var Bt=function(e){return e.collapsiblePanelHeight=`--collapsible-panel-height`,e.collapsiblePanelWidth=`--collapsible-panel-width`,e}({}),Vt=Q.forwardRef(function(e,t){let{className:n,hiddenUntilFound:r,keepMounted:i,render:a,id:o,...s}=e,{abortControllerRef:c,animationTypeRef:l,height:u,mounted:d,onOpenChange:f,open:p,panelId:m,panelRef:g,runOnceAnimationsFinish:_,setDimensions:v,setHiddenUntilFound:y,setKeepMounted:b,setMounted:x,setPanelIdState:S,setOpen:C,setVisible:E,state:D,transitionDimensionRef:O,visible:k,width:A,transitionStatus:j}=Mt(),M=r??!1,N=i??!1;h(()=>{if(o)return S(o),()=>{S(void 0)}},[o,S]),h(()=>{y(M)},[y,M]),h(()=>{b(N)},[b,N]);let{props:P}=zt({abortControllerRef:c,animationTypeRef:l,externalRef:t,height:u,hiddenUntilFound:M,id:m,keepMounted:N,mounted:d,onOpenChange:f,open:p,panelRef:g,runOnceAnimationsFinish:_,setDimensions:v,setMounted:x,setOpen:C,setVisible:E,transitionDimensionRef:O,visible:k,width:A});T({open:p&&j===`idle`,ref:g,onComplete(){p&&v({height:void 0,width:void 0})}});let F=w(`div`,e,{state:Q.useMemo(()=>({...D,transitionStatus:j}),[D,j]),ref:[t,g],props:[P,{style:{[Bt.collapsiblePanelHeight]:u===void 0?`auto`:`${u}px`,[Bt.collapsiblePanelWidth]:A===void 0?`auto`:`${A}px`}},s],stateAttributesMapping:It});return N||M||!N&&d?F:null});function Ht(e){let t=(0,rt.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,$.jsx)(Lt,{"data-slot":`collapsible`,...n}),t[2]=n,t[3]=r),r}function Ut(e){let t=(0,rt.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=O(`h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 data-ending-style:h-0 data-starting-style:h-0 data-open:data-ending-style:[height:var(--collapsible-panel-height)]`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,$.jsx)(Vt,{className:i,"data-slot":`collapsible-panel`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Wt={[U.make(`codex`)]:`gpt-6.7-codex-ultra-preview`,[U.make(`claudeAgent`)]:`claude-sonnet-5-0`,[U.make(`cursor`)]:`claude-sonnet-4-6`,[U.make(`opencode`)]:`openai/gpt-5`};function Gt(e){let t=(0,rt.c)(70),{instanceId:n,driverKind:r,models:i,customModels:a,hiddenModels:o,favoriteModels:s,modelOrder:c,onChange:l,onHiddenModelsChange:u,onFavoriteModelsChange:d,onModelOrderChange:p}=e,[h,g]=(0,Q.useState)(``),[_,v]=(0,Q.useState)(null),y=(0,Q.useRef)(null),x;t[0]===o?x=t[1]:(x=new Set(o),t[0]=o,t[1]=x);let S=x,C;t[2]===s?C=t[3]:(C=new Set(s),t[2]=s,t[3]=C);let w=C,T;t[4]!==w||t[5]!==c||t[6]!==i?(T=z(i,{favoriteModels:w,groupFavorites:!0,modelOrder:c}),t[4]=w,t[5]=c,t[6]=i,t[7]=T):T=t[7];let E=T,D;t[8]!==a||t[9]!==r||t[10]!==h||t[11]!==i||t[12]!==l?(D=()=>{let e=r?m(h,r):h.trim()||null;if(!e){v(`Enter a model slug.`);return}if(i.some(t=>!t.isCustom&&t.slug===e)){v(`That model is already built in.`);return}if(e.length>256){v(`Model slugs must be 256 characters or less.`);return}if(a.includes(e)){v(`That custom model is already saved.`);return}l([...a,e]),g(``),v(null);let t=y.current;if(!t)return;let n=()=>t.scrollTo({top:t.scrollHeight,behavior:`smooth`});requestAnimationFrame(n);let o=new MutationObserver(()=>{n(),o.disconnect()});o.observe(t,{childList:!0,subtree:!0}),setTimeout(()=>o.disconnect(),2e3)},t[8]=a,t[9]=r,t[10]=h,t[11]=i,t[12]=l,t[13]=D):D=t[13];let k=D,A;t[14]!==a||t[15]!==s||t[16]!==c||t[17]!==l||t[18]!==d||t[19]!==p?(A=e=>{l(a.filter(t=>t!==e)),p(c.filter(t=>t!==e)),d(s.filter(t=>t!==e)),v(null)},t[14]=a,t[15]=s,t[16]=c,t[17]=l,t[18]=d,t[19]=p,t[20]=A):A=t[20];let j=A,M;t[21]!==S||t[22]!==o||t[23]!==u?(M=e=>{if(S.has(e)){u(o.filter(t=>t!==e));return}u([...o,e])},t[21]=S,t[22]=o,t[23]=u,t[24]=M):M=t[24];let N=M,F;t[25]!==w||t[26]!==s||t[27]!==d?(F=e=>{if(w.has(e)){d(s.filter(t=>t!==e));return}d([...s,e])},t[25]=w,t[26]=s,t[27]=d,t[28]=F):F=t[28];let I=F,ee;t[29]!==p||t[30]!==E?(ee=(e,t)=>{let n=E.map(Xt),r=n.indexOf(e),i=r+t;if(r<0||i<0||i>=n.length)return;let a=[...n],[o,s]=[a[i],a[r]];a[r]=o,a[i]=s,p(a)},t[29]=p,t[30]=E,t[31]=ee):ee=t[31];let L=ee,R;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,$.jsx)(`div`,{className:`text-xs font-medium text-foreground`,children:`Models`}),t[32]=R):R=t[32];let B=i.length===1?``:`s`,V;t[33]!==i.length||t[34]!==B?(V=(0,$.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[i.length,` model`,B,` available.`]}),t[33]=i.length,t[34]=B,t[35]=V):V=t[35];let H;t[36]!==w||t[37]!==L||t[38]!==j||t[39]!==I||t[40]!==N||t[41]!==S||t[42]!==n||t[43]!==E?(H=E.map((e,t)=>{let r=e.capabilities,i=[],a=!e.isCustom&&S.has(e.slug),o=w.has(e.slug),s=E[t-1],c=E[t+1],l=s!==void 0&&w.has(s.slug)===o,u=c!==void 0&&w.has(c.slug)===o,d=r?.optionDescriptors??[];d.some(Yt)&&i.push(`Fast mode`),d.some(Jt)&&i.push(`Thinking`),d.some(qt)&&i.push(`Reasoning`);let p=i.length>0||e.name!==e.slug;return(0,$.jsxs)(`div`,{className:O(`grid min-h-7 grid-cols-[minmax(0,1fr)_auto] items-center gap-2 py-1`,a&&`text-muted-foreground`),children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1`,children:[(0,$.jsx)(`span`,{className:O(`min-w-0 truncate text-xs`,a?`text-muted-foreground line-through`:`text-foreground/90`),children:e.name}),p?(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground/60 hover:text-muted-foreground`,"aria-label":`Details for ${e.name}`}),children:(0,$.jsx)(ae,{className:`size-3`})}),(0,$.jsx)(f,{side:`top`,className:`max-w-56`,children:(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`code`,{className:`block text-[11px] text-foreground`,children:e.slug}),i.length>0?(0,$.jsx)(`div`,{className:`flex flex-wrap gap-x-2 gap-y-0.5`,children:i.map(Kt)}):null]})})]}):null,a?(0,$.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`hidden`}):null,e.isCustom?(0,$.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`custom`}):null]}),(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5`,children:[(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:O(`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,o&&`text-yellow-500 hover:text-yellow-600`),onClick:()=>I(e.slug),"aria-label":`${o?`Remove`:`Add`} ${e.name} ${o?`from`:`to`} favorites`}),children:(0,$.jsx)(Ne,{className:O(`size-3`,o&&`fill-current`)})}),(0,$.jsx)(f,{side:`top`,children:o?`Remove from favorites`:`Add to favorites`})]}),(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,disabled:!l,onClick:()=>L(e.slug,-1),"aria-label":`Move ${e.name} up`}),children:(0,$.jsx)(Te,{className:`size-3`})}),(0,$.jsx)(f,{side:`top`,children:`Move up`})]}),(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,disabled:!u,onClick:()=>L(e.slug,1),"aria-label":`Move ${e.name} down`}),children:(0,$.jsx)(Ee,{className:`size-3`})}),(0,$.jsx)(f,{side:`top`,children:`Move down`})]}),e.isCustom?null:(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,onClick:()=>N(e.slug),"aria-label":`${a?`Show`:`Hide`} ${e.name}`}),children:a?(0,$.jsx)(Ce,{className:`size-3`}):(0,$.jsx)(nt,{className:`size-3`})}),(0,$.jsx)(f,{side:`top`,children:a?`Show in picker`:`Hide from picker`})]}),e.isCustom?(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,"aria-label":`Remove ${e.slug}`,onClick:()=>j(e.slug)}),children:(0,$.jsx)(ze,{className:`size-3`})}),(0,$.jsx)(f,{side:`top`,children:`Remove custom model`})]}):null]})]},`${n}:${e.slug}`)}),t[36]=w,t[37]=L,t[38]=j,t[39]=I,t[40]=N,t[41]=S,t[42]=n,t[43]=E,t[44]=H):H=t[44];let ne;t[45]===H?ne=t[46]:(ne=(0,$.jsx)(`div`,{ref:y,className:`mt-2 max-h-40 overflow-y-auto pb-1`,children:H}),t[45]=H,t[46]=ne);let U=`provider-instance-${n}-custom-model`,W;t[47]===_?W=t[48]:(W=e=>{g(e.target.value),_&&v(null)},t[47]=_,t[48]=W);let G;t[49]===k?G=t[50]:(G=e=>{e.key===`Enter`&&(e.preventDefault(),k())},t[49]=k,t[50]=G);let re=r?Wt[r]:`model-slug`,ie;t[51]!==h||t[52]!==U||t[53]!==W||t[54]!==G||t[55]!==re?(ie=(0,$.jsx)(Be,{id:U,value:h,onChange:W,onKeyDown:G,placeholder:re,spellCheck:!1}),t[51]=h,t[52]=U,t[53]=W,t[54]=G,t[55]=re,t[56]=ie):ie=t[56];let K;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,$.jsx)(Z,{className:`size-3.5`}),t[57]=K):K=t[57];let q;t[58]===k?q=t[59]:(q=(0,$.jsxs)(P,{className:`shrink-0`,variant:`outline`,onClick:k,children:[K,`Add`]}),t[58]=k,t[59]=q);let J;t[60]!==ie||t[61]!==q?(J=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-col gap-2 sm:flex-row`,children:[ie,q]}),t[60]=ie,t[61]=q,t[62]=J):J=t[62];let Y;t[63]===_?Y=t[64]:(Y=_?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-destructive`,children:_}):null,t[63]=_,t[64]=Y);let X;return t[65]!==V||t[66]!==ne||t[67]!==J||t[68]!==Y?(X=(0,$.jsxs)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:[R,V,ne,J,Y]}),t[65]=V,t[66]=ne,t[67]=J,t[68]=Y,t[69]=X):X=t[69],X}function Kt(e){return(0,$.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:e},e)}function qt(e){return e.type===`select`&&(e.id===`reasoningEffort`||e.id===`effort`||e.id===`reasoning`||e.id===`variant`)}function Jt(e){return e.id===`thinking`}function Yt(e){return e.id===`fastMode`}function Xt(e){return e.slug}var Zt={disabled:{dot:`bg-amber-400`},error:{dot:`bg-destructive`},ready:{dot:`bg-success`},warning:{dot:`bg-warning`}};function Qt(e){if(!e)return{headline:`Checking provider status`,detail:`Waiting for the server to report installation and authentication details.`};if(!e.enabled)return{headline:`Disabled`,detail:e.message??`This provider is installed but disabled for new sessions in Ryco.`};if(!e.installed)return{headline:`Not found`,detail:e.message??`CLI not detected on PATH.`};if(e.auth.status===`authenticated`){let t=e.auth.label??e.auth.type;return{headline:t?`Authenticated · ${t}`:`Authenticated`,detail:e.message??null}}return e.auth.status===`unauthenticated`?{headline:`Not authenticated`,detail:e.message??null}:e.status===`warning`?{headline:`Needs attention`,detail:e.message??`The provider is installed, but the server could not fully verify it.`}:e.status===`error`?{headline:`Unavailable`,detail:e.message??`The provider failed its startup checks.`}:{headline:`Available`,detail:e.message??`Installed and ready, but authentication could not be verified.`}}function $t(e){return e?e.startsWith(`v`)?e:`v${e}`:null}function en(e){if(!e||e.status===`current`||e.status===`unknown`)return null;let t=`Update available`,n=e.latestVersion,r=$t(n);return{detail:e.message??(r?`${t}: install ${r}.`:`${t}: install the latest provider version.`),updateCommand:e.updateCommand,emphasis:`normal`}}var tn=[`#2563eb`,`#16a34a`,`#ea580c`,`#dc2626`,`#7c3aed`,`#0891b2`],nn=/^[a-zA-Z_][a-zA-Z0-9_]*$/,rn=0,an=()=>`provider-env-${rn++}`;function on(e,t){return{id:`${t}:${e.name}`,name:e.name,value:e.value,sensitive:e.sensitive,...e.valueRedacted===void 0?{}:{valueRedacted:e.valueRedacted}}}function sn(e,t){if(typeof e!=`object`||!e)return[];let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function cn(e,t,n){let r=typeof e==`object`&&e?{...e}:{};return r[t]=n,r}function ln(e){let t=new Map((e.liveModels??[]).filter(e=>e.isCustom).map(e=>[e.slug,e])),n=e.liveModels?.filter(e=>!e.isCustom)??[],r=e.customModels.map(e=>t.get(e)??{slug:e,name:e,isCustom:!0,capabilities:null});return[...n,...r]}function un(e){let t=(0,rt.c)(12),n;t[0]===e.email?n=t[1]:(n=e.email?.trim(),t[0]=e.email,t[1]=n);let r=n;if(!r)return null;let i;t[2]===e.separator?i=t[3]:(i=e.separator?(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}):null,t[2]=e.separator,t[3]=i);let a;t[4]===e.prefix?a=t[5]:(a=e.prefix?(0,$.jsx)(`span`,{className:`text-muted-foreground/80`,children:e.prefix}):null,t[4]=e.prefix,t[5]=a);let o;t[6]===r?o=t[7]:(o=(0,$.jsx)(et,{value:r,ariaLabel:`Toggle account email visibility`,revealTooltip:`Click to reveal email`,hideTooltip:`Click to hide email`}),t[6]=r,t[7]=o);let s;return t[8]!==i||t[9]!==a||t[10]!==o?(s=(0,$.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5`,children:[i,a,o]}),t[8]=i,t[9]=a,t[10]=o,t[11]=s):s=t[11],s}function dn(e){let t=(0,rt.c)(34),[n,r]=(0,Q.useState)(e.value??``),[i,a]=(0,Q.useState)(!1),o;t[0]===n?o=t[1]:(o=ie(n),t[0]=n,t[1]=o);let s=o,c,l;t[2]!==i||t[3]!==e.value?(c=()=>{i||r(e.value??``)},l=[i,e.value],t[2]=i,t[3]=e.value,t[4]=c,t[5]=l):(c=t[4],l=t[5]),(0,Q.useEffect)(c,l);let u;t[6]!==s||t[7]!==e?(u=()=>{a(!1),e.onCommit(s??``)},t[6]=s,t[7]=e,t[8]=u):u=t[8];let d=u,f;t[9]===e?f=t[10]:(f=t=>{a(!1),r(t),e.onCommit(t)},t[9]=e,t[10]=f);let p=f,m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Accent color`}),t[11]=m):m=t[11];let h=s??tn[0],g,_,v;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>a(!0),_=e=>{a(!0),r(e.currentTarget.value)},v=e=>{a(!0),r(e.currentTarget.value)},t[12]=g,t[13]=_,t[14]=v):(g=t[12],_=t[13],v=t[14]);let y=`Accent color for ${e.displayName}`,b;t[15]!==d||t[16]!==y||t[17]!==h?(b=(0,$.jsx)(`input`,{type:`color`,value:h,onFocus:g,onInput:_,onChange:v,onBlur:d,"aria-label":y,className:`h-8 w-10 cursor-pointer rounded border border-input bg-background p-0.5`}),t[15]=d,t[16]=y,t[17]=h,t[18]=b):b=t[18];let x;t[19]!==p||t[20]!==s?(x=tn.map(e=>(0,$.jsx)(`button`,{type:`button`,className:O(`size-6 cursor-pointer rounded-full border transition`,s?.toLowerCase()===e?`border-foreground ring-2 ring-ring ring-offset-1 ring-offset-background`:`border-black/10 hover:scale-105 dark:border-white/20`),style:{backgroundColor:e},onClick:()=>p(e),"aria-label":`Use ${e} accent`},e)),t[19]=p,t[20]=s,t[21]=x):x=t[21];let S;t[22]===x?S=t[23]:(S=(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:x}),t[22]=x,t[23]=S);let C;t[24]!==s||t[25]!==e?(C=s?(0,$.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 px-2 text-xs text-muted-foreground`,onClick:()=>{a(!1),r(``),e.onCommit(``)},children:`Clear`}):null,t[24]=s,t[25]=e,t[26]=C):C=t[26];let w;t[27]!==b||t[28]!==S||t[29]!==C?(w=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[b,S,C]}),t[27]=b,t[28]=S,t[29]=C,t[30]=w):w=t[30];let T;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Used to distinguish this instance in picker rails and model lists.`}),t[31]=T):T=t[31];let E;return t[32]===w?E=t[33]:(E=(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[m,w,T]}),t[32]=w,t[33]=E),E}function fn(e){let t=(0,rt.c)(35),n;t[0]===e.window?n=t[1]:(n=Le(e.window),t[0]=e.window,t[1]=n);let r=n,i=e.window.windowDurationMins===void 0?e.fallbackLabel:r.label,a=je(e.window.usedPercent),o;t[2]===e.window.usedPercent?o=t[3]:(o=ke(e.window.usedPercent),t[2]=e.window.usedPercent,t[3]=o);let s=o,c;t[4]===e.window.resetsAt?c=t[5]:(c=Ae(e.window.resetsAt),t[4]=e.window.resetsAt,t[5]=c);let l=c,u=a>=75,d=u?`${a}% used`:`${s}% available`,f=u?`${s}% available`:`${a}% used`,p;t[6]===i?p=t[7]:(p=(0,$.jsx)(`span`,{className:`font-medium text-foreground`,children:i}),t[6]=i,t[7]=p);let m;t[8]===d?m=t[9]:(m=(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:d}),t[8]=d,t[9]=m);let h;t[10]!==p||t[11]!==m?(h=(0,$.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-xs`,children:[p,m]}),t[10]=p,t[11]=m,t[12]=h):h=t[12];let g=`${i} window usage`,_=u?`bg-warning`:`bg-foreground/70`,v;t[13]===_?v=t[14]:(v=O(`h-full rounded-full transition-[width]`,_),t[13]=_,t[14]=v);let y=`${a}%`,b;t[15]===y?b=t[16]:(b={width:y},t[15]=y,t[16]=b);let x;t[17]!==b||t[18]!==v?(x=(0,$.jsx)(`div`,{className:v,style:b}),t[17]=b,t[18]=v,t[19]=x):x=t[19];let S;t[20]!==x||t[21]!==g||t[22]!==a?(S=(0,$.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-muted`,role:`progressbar`,"aria-label":g,"aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,children:x}),t[20]=x,t[21]=g,t[22]=a,t[23]=S):S=t[23];let C;t[24]===f?C=t[25]:(C=(0,$.jsx)(`span`,{children:f}),t[24]=f,t[25]=C);let w;t[26]===l?w=t[27]:(w=l?(0,$.jsx)(`span`,{className:`first-letter:uppercase`,children:l}):null,t[26]=l,t[27]=w);let T;t[28]!==C||t[29]!==w?(T=(0,$.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-[11px] text-muted-foreground`,children:[C,w]}),t[28]=C,t[29]=w,t[30]=T):T=t[30];let E;return t[31]!==S||t[32]!==T||t[33]!==h?(E=(0,$.jsxs)(`div`,{className:`grid gap-1.5`,children:[h,S,T]}),t[31]=S,t[32]=T,t[33]=h,t[34]=E):E=t[34],E}function pn(e){let t=(0,rt.c)(8),{primary:n,secondary:r}=e.rateLimits;if(!n&&!r)return null;let i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Usage limits`}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=n?(0,$.jsx)(fn,{window:n,fallbackLabel:`Short window`}):null,t[1]=n,t[2]=a);let o;t[3]===r?o=t[4]:(o=r?(0,$.jsx)(fn,{window:r,fallbackLabel:`Weekly`}):null,t[3]=r,t[4]=o);let s;return t[5]!==a||t[6]!==o?(s=(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:(0,$.jsxs)(`div`,{className:`grid gap-2.5`,children:[i,(0,$.jsxs)(`div`,{className:`grid gap-3`,children:[a,o]})]})}),t[5]=a,t[6]=o,t[7]=s):s=t[7],s}function mn(e){let t=(0,rt.c)(27),n;t[0]===e.environment?n=t[1]:(n=()=>e.environment.map(on),t[0]=e.environment,t[1]=n);let[r,i]=(0,Q.useState)(n),a,o;t[2]===e.environment?(a=t[3],o=t[4]):(a=()=>{i(e.environment.map(on))},o=[e.environment],t[2]=e.environment,t[3]=a,t[4]=o),(0,Q.useEffect)(a,o);let s;t[5]===e?s=t[6]:(s=t=>{let n=[];for(let e of t){let t=e.name.trim();if(!nn.test(t)){if(t.length>0||e.value.length>0||e.sensitive!==!0||e.valueRedacted!==void 0)return;continue}let{id:r,...i}=e;n.push({...i,name:t})}e.onChange(n)},t[5]=e,t[6]=s);let c=s,l;t[7]!==c||t[8]!==r?(l=(e,t)=>{let n=r.map(n=>n.id===e?{...n,...t,...t.value===void 0?{}:{valueRedacted:!1}}:n);i(n),c(n)},t[7]=c,t[8]=r,t[9]=l):l=t[9];let u=l,d;t[10]!==c||t[11]!==r?(d=e=>{let t=r.filter(t=>t.id!==e);i(t),c(t)},t[10]=c,t[11]=r,t[12]=d):d=t[12];let f=d,p;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Environment variables`}),t[13]=p):p=t[13];let m;t[14]===r?m=t[15]:(m=()=>i([...r,{id:an(),name:``,value:``,sensitive:!0}]),t[14]=r,t[15]=m);let h;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(Z,{className:`size-3`}),t[16]=h):h=t[16];let g;t[17]===m?g=t[18]:(g=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[p,(0,$.jsxs)(P,{type:`button`,size:`sm`,variant:`outline`,className:`h-7 gap-1.5 px-2 text-xs`,onClick:m,children:[h,`Add`]})]}),t[17]=m,t[18]=g);let _;t[19]!==f||t[20]!==r||t[21]!==u?(_=r.length===0?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add variables to pass API keys, base URLs, or other per-instance CLI settings.`}):(0,$.jsx)(`div`,{className:`grid gap-2`,children:r.map((e,t)=>(0,$.jsxs)(`div`,{className:`grid gap-2 rounded-md border border-border/70 bg-muted/20 p-2 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.4fr)_auto_auto] sm:items-center`,children:[(0,$.jsx)($e,{value:e.name,onCommit:t=>u(e.id,{name:t.trim()}),placeholder:`VARIABLE_NAME`,spellCheck:!1,"aria-label":`Environment variable name ${t+1}`}),(0,$.jsx)($e,{value:e.valueRedacted?``:e.value,onCommit:t=>u(e.id,{value:t}),type:e.sensitive?`password`:void 0,autoComplete:`off`,placeholder:e.valueRedacted?`Stored secret - enter a new value to replace`:`Value`,spellCheck:!1,"aria-label":`Environment variable value ${t+1}`}),(0,$.jsxs)(`label`,{className:`inline-flex h-8 items-center gap-2 text-xs text-muted-foreground`,children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`size-3.5`,checked:e.sensitive,onChange:t=>{let n=t.currentTarget.checked;u(e.id,{sensitive:n,...n&&e.valueRedacted===void 0?{}:{valueRedacted:n?e.valueRedacted:!1}})}}),`Sensitive`]}),(0,$.jsx)(P,{type:`button`,size:`icon-sm`,variant:`ghost`,className:`size-8 justify-self-start text-muted-foreground hover:text-destructive sm:justify-self-end`,onClick:()=>f(e.id),"aria-label":`Remove environment variable ${e.name||t+1}`,children:(0,$.jsx)(ze,{className:`size-3.5`})})]},e.id))}),t[19]=f,t[20]=r,t[21]=u,t[22]=_):_=t[22];let v;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,$.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Sensitive values are stored separately and are not returned to the app after saving.`}),t[23]=v):v=t[23];let y;return t[24]!==_||t[25]!==g?(y=(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[g,_,v]}),t[24]=_,t[25]=g,t[26]=y):y=t[26],y}function hn(e){let t=(0,rt.c)(168),{instanceId:n,instance:r,driverOption:i,liveProvider:a,isExpanded:o,onExpandedChange:s,onUpdate:c,onDelete:l,headerAction:u,hiddenModels:d,favoriteModels:p,modelOrder:m,onHiddenModelsChange:h,onFavoriteModelsChange:g,onModelOrderChange:_,onRunUpdate:y,isUpdating:x}=e,S=x===void 0?!1:x,C=r.enabled??!0,w=Zt[a?.status??(C?`warning`:`disabled`)],T;t[0]===a?T=t[1]:(T=Qt(a),t[0]=a,t[1]=T);let E=T,D=a?.auth.email,k;t[2]!==D||t[3]!==a?.auth.status?(k=a?.auth.status===`authenticated`&&!!D?.trim(),t[2]=D,t[3]=a?.auth.status,t[4]=k):k=t[4];let A=k,j=A?a?.auth.label??a?.auth.type??null:null,M=E,N=a?.version,F;t[5]===N?F=t[6]:(F=$t(N),t[5]=N,t[6]=F);let I=F,ee=a?.versionAdvisory,L;t[7]===ee?L=t[8]:(L=en(ee),t[7]=ee,t[8]=L);let R=L,z=R?.updateCommand??null,B=i?.icon,V;t[9]!==i?.label||t[10]!==r.displayName||t[11]!==r.driver?(V=r.displayName?.trim()||i?.label||String(r.driver),t[9]=i?.label,t[10]=r.displayName,t[11]=r.driver,t[12]=V):V=t[12];let H=V,U;t[13]===r.accentColor?U=t[14]:(U=ie(r.accentColor),t[13]=r.accentColor,t[14]=U);let W=U,G;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(G={onCopy:vn,onError:_n},t[15]=G):G=t[15];let{copyToClipboard:re}=X(G),K=ne(r.driver)?r.driver:null,q,J;t[16]!==r.config||t[17]!==a?.models?(q=sn(r.config,`customModels`),J=ln({liveModels:a?.models,customModels:q}),t[16]=r.config,t[17]=a?.models,t[18]=q,t[19]=J):(q=t[18],J=t[19]);let ae=J,Y;t[20]!==r||t[21]!==c?(Y=e=>{let t=e.trim(),{displayName:n,...i}=r;c(t.length>0?{...i,displayName:t}:i)},t[20]=r,t[21]=c,t[22]=Y):Y=t[22];let se=Y,le;t[23]!==r||t[24]!==c?(le=e=>{c({...r,enabled:e})},t[23]=r,t[24]=c,t[25]=le):le=t[25];let ue=le,de;t[26]!==r||t[27]!==c?(de=e=>{let t=ie(e),{accentColor:n,...i}=r;c(t?{...i,accentColor:t}:i)},t[26]=r,t[27]=c,t[28]=de):de=t[28];let fe=de,pe;t[29]!==r||t[30]!==c?(pe=e=>{let{config:t,...n}=r;c(e===void 0?n:{...n,config:e})},t[29]=r,t[30]=c,t[31]=pe):pe=t[31];let he=pe,ge;t[32]!==r||t[33]!==c?(ge=e=>{let t=cn(r.config,`customModels`,[...e]),{config:n,...i}=r;c({...i,config:t})},t[32]=r,t[33]=c,t[34]=ge):ge=t[34];let ye=ge,xe;t[35]!==r||t[36]!==c?(xe=e=>{let t=e.filter(gn),{environment:n,...i}=r;c(t.length>0?{...i,environment:t}:i)},t[35]=r,t[36]=c,t[37]=xe):xe=t[37];let Se=xe,Ce;t[38]!==B||t[39]!==W||t[40]!==H||t[41]!==K||t[42]!==w.dot?(Ce=K?(0,$.jsx)(Fe,{driverKind:K,displayName:H,accentColor:W,showBadge:!!W,statusDotClassName:w.dot,className:`size-5`,iconClassName:`size-4 text-foreground/80`,badgeClassName:`right-[-0.125rem] bottom-[-0.125rem] h-3 min-w-3 text-[7px]`}):B?(0,$.jsxs)(`span`,{className:`relative inline-flex size-5 shrink-0 items-center justify-center`,children:[(0,$.jsx)(B,{className:`size-4 text-foreground/80`,"aria-hidden":!0}),(0,$.jsx)(`span`,{className:O(`pointer-events-none absolute -left-0.5 -top-0.5 size-2 rounded-full ring-2 ring-background`,w.dot),"aria-hidden":!0})]}):(0,$.jsx)(`span`,{className:O(`size-2 shrink-0 rounded-full`,w.dot)}),t[38]=B,t[39]=W,t[40]=H,t[41]=K,t[42]=w.dot,t[43]=Ce):Ce=t[43];let Te=Ce,Ee;t[44]===H?Ee=t[45]:(Ee=(0,$.jsx)(`h3`,{className:`truncate text-[13px] font-semibold tracking-[-0.01em] text-foreground`,children:H}),t[44]=H,t[45]=Ee);let Z;t[46]!==r.driver||t[47]!==n?(Z=String(n)===String(r.driver)?null:(0,$.jsx)(`code`,{className:`truncate rounded bg-muted/60 px-1 py-0.5 text-[10px] text-muted-foreground`,children:n}),t[46]=r.driver,t[47]=n,t[48]=Z):Z=t[48];let Oe;t[49]===i?Oe=t[50]:(Oe=i?.badgeLabel?(0,$.jsx)(_e,{variant:`warning`,size:`sm`,className:`shrink-0`,children:i.badgeLabel}):null,t[49]=i,t[50]=Oe);let ke;t[51]!==Ee||t[52]!==Z||t[53]!==Oe||t[54]!==Te?(ke=(0,$.jsxs)($.Fragment,{children:[Te,Ee,Z,Oe]}),t[51]=Ee,t[52]=Z,t[53]=Oe,t[54]=Te,t[55]=ke):ke=t[55];let Ae=ke,je;t[56]===u?je=t[57]:(je=u?(0,$.jsx)(`span`,{className:`inline-flex h-5 w-5 shrink-0 items-center justify-center`,children:u}):null,t[56]=u,t[57]=je);let Me;t[58]!==n||t[59]!==l?(Me=l?(0,$.jsx)(`span`,{className:`inline-flex h-5 w-5 shrink-0 items-center justify-center`,children:(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-destructive`,onClick:l,"aria-label":`Delete provider instance ${n}`,children:(0,$.jsx)(Re,{className:`size-3`})})}),(0,$.jsx)(f,{side:`top`,children:`Delete instance`})]})}):null,t[58]=n,t[59]=l,t[60]=Me):Me=t[60];let Ne;t[61]!==je||t[62]!==Me?(Ne=(0,$.jsxs)($.Fragment,{children:[je,Me]}),t[61]=je,t[62]=Me,t[63]=Ne):Ne=t[63];let Pe=Ne,Ie;t[64]!==D||t[65]!==j||t[66]!==A||t[67]!==M.headline?(Ie=A?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{children:`Authenticated as`}),(0,$.jsx)(un,{email:D}),j?(0,$.jsxs)(`span`,{children:[`· `,j]}):null]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{children:M.headline}),(0,$.jsx)(un,{email:D,separator:!0,prefix:`Email`})]}),t[64]=D,t[65]=j,t[66]=A,t[67]=M.headline,t[68]=Ie):Ie=t[68];let Le;t[69]===M.detail?Le=t[70]:(Le=M.detail?(0,$.jsxs)(`span`,{children:[`- `,M.detail]}):null,t[69]=M.detail,t[70]=Le);let ze;t[71]!==Ie||t[72]!==Le?(ze=(0,$.jsxs)(`p`,{className:`flex min-w-0 flex-wrap items-center gap-x-1 text-xs text-muted-foreground`,children:[Ie,Le]}),t[71]=Ie,t[72]=Le,t[73]=ze):ze=t[73];let Be=ze,Ve;t[74]===I?Ve=t[75]:(Ve=I?(0,$.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:I}):null,t[74]=I,t[75]=Ve);let He=Ve,Ue;t[76]!==re||t[77]!==H||t[78]!==S||t[79]!==y||t[80]!==z||t[81]!==R?(Ue=R?(0,$.jsxs)(ve,{children:[(0,$.jsx)(me,{render:(0,$.jsx)(P,{type:`button`,size:`icon-xs`,variant:`ghost`,className:O(`size-5 rounded-sm p-0`,R.emphasis===`strong`?`text-warning hover:text-warning`:`text-primary hover:text-primary`),"aria-label":`Update available — view details`,children:(0,$.jsx)(tt,{className:`size-3.5 [animation:bounce_2.4s_ease-in-out_infinite] motion-reduce:animate-none`})})}),(0,$.jsx)(we,{side:`bottom`,align:`start`,className:`w-84`,children:(0,$.jsxs)(`div`,{className:`grid gap-3`,children:[(0,$.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,$.jsx)(`p`,{className:`text-[13px] font-semibold leading-tight text-foreground`,children:`Update available`}),(0,$.jsx)(`p`,{className:O(`text-xs leading-snug`,R.emphasis===`strong`?`text-warning`:`text-muted-foreground`),children:R.detail})]}),y?(0,$.jsxs)(P,{type:`button`,size:`xs`,variant:`default`,className:`w-full`,disabled:S,onClick:y,children:[S?(0,$.jsx)(be,{className:`animate-spin`}):(0,$.jsx)(De,{}),S?`Updating`:`Update now`]}):null,y&&z?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:[(0,$.jsx)(`span`,{"aria-hidden":!0,className:`h-px flex-1 bg-border`}),`or, update manually using`,(0,$.jsx)(`span`,{"aria-hidden":!0,className:`h-px flex-1 bg-border`})]}):null,z?(0,$.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border/70 bg-muted/40 py-0.5 pr-0.5 pl-2`,children:[(0,$.jsx)(`code`,{className:`min-w-0 flex-1 overflow-x-auto whitespace-nowrap font-mono text-[11px] text-foreground [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:z}),(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{type:`button`,size:`icon-xs`,variant:`ghost`,className:`size-6 shrink-0 rounded-sm p-0 text-muted-foreground hover:text-foreground`,onClick:()=>re(z,{providerName:H}),"aria-label":`Copy update command`,children:(0,$.jsx)(oe,{className:`size-3`})})}),(0,$.jsx)(f,{side:`top`,children:`Copy command`})]})]}):null]})})]}):null,t[76]=re,t[77]=H,t[78]=S,t[79]=y,t[80]=z,t[81]=R,t[82]=Ue):Ue=t[82];let We;t[83]!==Ue||t[84]!==Ae||t[85]!==Pe||t[86]!==He?(We=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[Ae,He,Ue,Pe]}),t[83]=Ue,t[84]=Ae,t[85]=Pe,t[86]=He,t[87]=We):We=t[87];let Ge;t[88]!==Be||t[89]!==We?(Ge=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[We,Be]}),t[88]=Be,t[89]=We,t[90]=Ge):Ge=t[90];let Ke;t[91]!==o||t[92]!==s?(Ke=()=>s(!o),t[91]=o,t[92]=s,t[93]=Ke):Ke=t[93];let qe=`Toggle ${H} details`,Je=o&&`rotate-180`,Ye;t[94]===Je?Ye=t[95]:(Ye=O(`size-3.5 transition-transform`,Je),t[94]=Je,t[95]=Ye);let Xe;t[96]===Ye?Xe=t[97]:(Xe=(0,$.jsx)(v,{className:Ye}),t[96]=Ye,t[97]=Xe);let Ze;t[98]!==Ke||t[99]!==qe||t[100]!==Xe?(Ze=(0,$.jsx)(P,{size:`sm`,variant:`ghost`,className:`h-7 px-2 text-xs text-muted-foreground hover:text-foreground`,onClick:Ke,"aria-label":qe,children:Xe}),t[98]=Ke,t[99]=qe,t[100]=Xe,t[101]=Ze):Ze=t[101];let Qe;t[102]===ue?Qe=t[103]:(Qe=e=>ue(!!e),t[102]=ue,t[103]=Qe);let et=`Enable ${H}`,nt;t[104]!==C||t[105]!==Qe||t[106]!==et?(nt=(0,$.jsx)(ce,{checked:C,onCheckedChange:Qe,"aria-label":et}),t[104]=C,t[105]=Qe,t[106]=et,t[107]=nt):nt=t[107];let Q;t[108]!==Ze||t[109]!==nt?(Q=(0,$.jsxs)(`div`,{className:`flex w-full shrink-0 items-center gap-2 sm:w-auto sm:justify-end`,children:[Ze,nt]}),t[108]=Ze,t[109]=nt,t[110]=Q):Q=t[110];let it;t[111]!==Ge||t[112]!==Q?(it=(0,$.jsx)(`div`,{className:`px-4 py-3.5 sm:px-5`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[Ge,Q]})}),t[111]=Ge,t[112]=Q,t[113]=it):it=t[113];let at;t[114]===a?at=t[115]:(at=a?.rateLimits?(0,$.jsx)(pn,{rateLimits:a.rateLimits}):null,t[114]=a,t[115]=at);let ot=`provider-instance-${n}-display-name`,st;t[116]===Symbol.for(`react.memo_cache_sentinel`)?(st=(0,$.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:`Display name`}),t[116]=st):st=t[116];let ct=`provider-instance-${n}-display-name`,lt=r.displayName??``,ut=i?.label??`Instance label`,dt;t[117]!==ct||t[118]!==lt||t[119]!==ut||t[120]!==se?(dt=(0,$.jsx)($e,{id:ct,className:`mt-1.5`,value:lt,onCommit:se,placeholder:ut,spellCheck:!1}),t[117]=ct,t[118]=lt,t[119]=ut,t[120]=se,t[121]=dt):dt=t[121];let ft;t[122]===Symbol.for(`react.memo_cache_sentinel`)?(ft=(0,$.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground`,children:`Optional label shown in the provider list.`}),t[122]=ft):ft=t[122];let pt;t[123]!==ot||t[124]!==dt?(pt=(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:(0,$.jsxs)(`label`,{htmlFor:ot,className:`block`,children:[st,dt,ft]})}),t[123]=ot,t[124]=dt,t[125]=pt):pt=t[125];let mt;t[126]!==W||t[127]!==H||t[128]!==fe?(mt=(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:(0,$.jsx)(dn,{displayName:H,value:W,onCommit:fe})}),t[126]=W,t[127]=H,t[128]=fe,t[129]=mt):mt=t[129];let ht;t[130]===r.environment?ht=t[131]:(ht=r.environment??[],t[130]=r.environment,t[131]=ht);let _t;t[132]!==ht||t[133]!==Se?(_t=(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:(0,$.jsx)(mn,{environment:ht,onChange:Se})}),t[132]=ht,t[133]=Se,t[134]=_t):_t=t[134];let vt;t[135]!==i||t[136]!==r.config||t[137]!==n||t[138]!==he?(vt=i?(0,$.jsx)(gt,{definition:i,value:r.config,idPrefix:`provider-instance-${n}`,variant:`card`,onChange:he}):null,t[135]=i,t[136]=r.config,t[137]=n,t[138]=he,t[139]=vt):vt=t[139];let yt;t[140]!==q||t[141]!==K||t[142]!==i||t[143]!==p||t[144]!==d||t[145]!==r.driver||t[146]!==n||t[147]!==m||t[148]!==ae||t[149]!==g||t[150]!==h||t[151]!==_||t[152]!==ye?(yt=i===void 0?(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 py-3 sm:px-5`,children:(0,$.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`This instance uses a driver (`,(0,$.jsx)(`code`,{className:`text-foreground`,children:String(r.driver)}),`) that is not shipped with the current build. Configuration values are preserved but cannot be edited from this surface.`]})}):(0,$.jsx)(Gt,{instanceId:n,driverKind:K,models:ae,customModels:q,hiddenModels:d,favoriteModels:p,modelOrder:m,onChange:ye,onHiddenModelsChange:h,onFavoriteModelsChange:g,onModelOrderChange:_}),t[140]=q,t[141]=K,t[142]=i,t[143]=p,t[144]=d,t[145]=r.driver,t[146]=n,t[147]=m,t[148]=ae,t[149]=g,t[150]=h,t[151]=_,t[152]=ye,t[153]=yt):yt=t[153];let bt;t[154]!==at||t[155]!==pt||t[156]!==mt||t[157]!==_t||t[158]!==vt||t[159]!==yt?(bt=(0,$.jsx)(Ut,{children:(0,$.jsxs)(`div`,{className:`space-y-0`,children:[at,pt,mt,_t,vt,yt]})}),t[154]=at,t[155]=pt,t[156]=mt,t[157]=_t,t[158]=vt,t[159]=yt,t[160]=bt):bt=t[160];let xt;t[161]!==o||t[162]!==s||t[163]!==bt?(xt=(0,$.jsx)(Ht,{open:o,onOpenChange:s,children:bt}),t[161]=o,t[162]=s,t[163]=bt,t[164]=xt):xt=t[164];let St;return t[165]!==it||t[166]!==xt?(St=(0,$.jsxs)(`div`,{className:`border-t border-border/60 first:border-t-0`,children:[it,xt]}),t[165]=it,t[166]=xt,t[167]=St):St=t[167],St}function gn(e){return e.name.trim().length>0}function _n(e,t){let{providerName:n}=t;Y.add(J({type:`error`,title:`Could not copy ${n} update command`,description:e.message}))}function vn(e){let{providerName:t}=e;Y.add({type:`success`,title:`${t} update command copied`,description:`Run it in a terminal when you are ready to update.`})}function yn(e){let t=y.providers,n=e.isDefault?t[e.driver]:void 0;return{...n===void 0?{}:{providers:{...e.settings.providers,[e.driver]:n}},providerInstances:{...e.settings.providerInstances,[e.instanceId]:e.instance},...e.textGenerationModelSelection===void 0?{}:{textGenerationModelSelection:e.textGenerationModelSelection}}}var bn=U.make(`codex`),xn=Qe.map(e=>({provider:e.value}));function Sn(e,t){let n={...e};return delete n[t],n}function Cn(e,t){return e.filter(e=>e.provider!==t)}function wn(e){let t=(0,rt.c)(5),{lastCheckedAt:n}=e;Ge();let r;t[0]===n?r=t[1]:(r=n?ge(n):null,t[0]=n,t[1]=r);let i=r;if(!i)return null;let a;return t[2]!==i.suffix||t[3]!==i.value?(a=(0,$.jsx)(`span`,{className:`text-[11px] text-muted-foreground/60`,children:i.suffix?(0,$.jsxs)($.Fragment,{children:[`Checked `,(0,$.jsx)(`span`,{className:`font-mono tabular-nums`,children:i.value}),` `,i.suffix]}):(0,$.jsxs)($.Fragment,{children:[`Checked `,i.value]})}),t[2]=i.suffix,t[3]=i.value,t[4]=a):a=t[4],a}function Tn(){let e=(0,rt.c)(89),t=u(),{updateSettings:n}=c(),r=d(),[a,o]=(0,Q.useState)(!1),[l,p]=(0,Q.useState)(!1),m;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=new Set,e[0]=m):m=e[0];let[h,g]=(0,Q.useState)(m),_;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(_={},e[1]=_):_=e[1];let[v,x]=(0,Q.useState)(_),S=(0,Q.useRef)(!1),C;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>{S.current||(S.current=!0,o(!0),s().server.refreshProviders().catch(Rn).finally(()=>{S.current=!1,o(!1)}))},e[2]=C):C=e[2];let w=C,T,D,O,A,j,M;if(e[3]!==a||e[4]!==v||e[5]!==r||e[6]!==t||e[7]!==n||e[8]!==h){let o=xn.filter(e=>e.provider!==`cursor`||r.some(Ln)),c,l,u,d,m,_,S;if(e[15]!==r||e[16]!==t){let n=H(t,r);d=n.instanceId,m=n.model,_=n.options,c=re(W(r)),u=c.find(e=>e.instanceId===d),S=u?.driverKind??bn,l=ee(t,r,d,m),e[15]=r,e[16]=t,e[17]=c,e[18]=l,e[19]=u,e[20]=d,e[21]=m,e[22]=_,e[23]=S}else c=e[17],l=e[18],u=e[19],d=e[20],m=e[21],_=e[22],S=e[23];let C=l,N;e[24]===t.textGenerationModelSelection?N=e[25]:(N=i(t.textGenerationModelSelection??null,y.textGenerationModelSelection??null),e[24]=t.textGenerationModelSelection,e[25]=N);let F=!N,I;e[26]===r?I=e[27]:(I=r.length>0?r.reduce(In,r[0].checkedAt):null,e[26]=r,e[27]=I);let R=I,z=new Map;for(let[e,n]of Object.entries(t.providerInstances??{})){let t=n.driver,r=z.get(t)??[];r.push([e,n]),z.set(t,r)}let B=new Set(o.map(Fn)),V=[],ne=new Set(o.map(Pn));for(let e of o){let n=t.providers,r=y.providers,a=e.provider,o=L(a),s=t.providerInstances?.[o],c=n[e.provider],l=r[e.provider],u=s??{driver:a,enabled:c.enabled,config:c},d=s!==void 0||!i(c,l);V.push({instanceId:o,instance:u,driver:a,isDefault:!0,isDirty:d});for(let[t,n]of z.get(e.provider)??[])t!==o&&V.push({instanceId:t,instance:n,driver:n.driver,isDefault:!1})}for(let[e,t]of z)if(!ne.has(e))for(let[e,n]of t){let t=B.has(String(e));V.push({instanceId:e,instance:n,driver:n.driver,isDefault:t})}let U=(e,r,i)=>{n(yn({settings:t,instanceId:e.instanceId,instance:r,driver:e.driver,isDefault:e.isDefault,textGenerationModelSelection:i?.textGenerationModelSelection}))},G=e=>{n({providerInstances:Sn(t.providerInstances,e),providerModelPreferences:Sn(t.providerModelPreferences,e),favorites:Cn(t.favorites??[],e)})},ie=(e,r)=>{let i=[...new Set(r.hiddenModels.filter(Nn))],a=[...new Set(r.modelOrder.filter(Mn))],o=Sn(t.providerModelPreferences,e);n({providerModelPreferences:i.length===0&&a.length===0?o:{...o,[e]:{hiddenModels:i,modelOrder:a}}})},K=(e,r)=>{let i=[...new Set(r.map(jn).filter(An))];n({favorites:[...Cn(t.favorites??[],e),...i.map(t=>({provider:e,model:t}))]})},q=e=>{g(t=>new Set(t).add(e.instanceId)),s().server.updateProvider({provider:e.driver,instanceId:e.instanceId}).then(kn).catch(On).finally(()=>{g(t=>{let n=new Set(t);return n.delete(e.instanceId),n})})},J=e=>{let r=y.providers,i=L(e),a=r[e];a!==void 0&&n({providers:{...t.providers,[e]:a},providerInstances:Sn(t.providerInstances,i),providerModelPreferences:Sn(t.providerModelPreferences,i),favorites:Cn(t.favorites??[],i)})};D=qe;let ae;e[28]!==F||e[29]!==n?(ae=F?(0,$.jsx)(Ye,{label:`text generation model`,onClick:()=>n({textGenerationModelSelection:y.textGenerationModelSelection})}):null,e[28]=F,e[29]=n,e[30]=ae):ae=e[30];let Y;e[31]!==r||e[32]!==t||e[33]!==n?(Y=(e,i)=>{n({textGenerationModelSelection:H({...t,textGenerationModelSelection:k(e,i)},r)})},e[31]=r,e[32]=t,e[33]=n,e[34]=Y):Y=e[34];let X;e[35]!==c||e[36]!==C||e[37]!==Y||e[38]!==d||e[39]!==m?(X=(0,$.jsx)(Pe,{activeInstanceId:d,model:m,lockedProvider:null,instanceEntries:c,modelOptionsByInstance:C,triggerVariant:`outline`,triggerClassName:`min-w-0 max-w-none shrink-0 text-foreground/90 hover:text-foreground`,onInstanceModelChange:Y}),e[35]=c,e[36]=C,e[37]=Y,e[38]=d,e[39]=m,e[40]=X):X=e[40];let oe;e[41]===u?.models?oe=e[42]:(oe=u?.models??[],e[41]=u?.models,e[42]=oe);let se;e[43]!==r||e[44]!==t||e[45]!==d||e[46]!==m||e[47]!==n?(se=e=>{n({textGenerationModelSelection:H({...t,textGenerationModelSelection:k(d,m,e)},r)})},e[43]=r,e[44]=t,e[45]=d,e[46]=m,e[47]=n,e[48]=se):se=e[48];let ce;e[49]!==oe||e[50]!==se||e[51]!==m||e[52]!==_||e[53]!==S?(ce=(0,$.jsx)(E,{provider:S,models:oe,model:m,prompt:``,onPromptChange:Dn,modelOptions:_,allowPromptInjectedEffort:!1,triggerVariant:`outline`,triggerClassName:`min-w-0 max-w-none shrink-0 text-foreground/90 hover:text-foreground`,onModelOptionsChange:se}),e[49]=oe,e[50]=se,e[51]=m,e[52]=_,e[53]=S,e[54]=ce):ce=e[54];let le;e[55]!==X||e[56]!==ce?(le=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1.5`,children:[X,ce]}),e[55]=X,e[56]=ce,e[57]=le):le=e[57],e[58]!==ae||e[59]!==le?(M=(0,$.jsx)(Ke,{title:`Text generation`,children:(0,$.jsx)(Je,{title:`Text generation model`,description:`Configure the model used for generated commit messages, PR titles, and similar Git text.`,resetAction:ae,control:le})}),e[58]=ae,e[59]=le,e[60]=M):M=e[60],T=Ke,O=`Providers`;let ue;e[61]===R?ue=e[62]:(ue=(0,$.jsx)(wn,{lastCheckedAt:R}),e[61]=R,e[62]=ue);let de;e[63]===Symbol.for(`react.memo_cache_sentinel`)?(de=()=>p(!0),e[63]=de):de=e[63];let fe;e[64]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,$.jsxs)(te,{children:[(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,onClick:de,"aria-label":`Add provider instance`,children:(0,$.jsx)(Z,{className:`size-3`})})}),(0,$.jsx)(f,{side:`top`,children:`Add provider instance`})]}),e[64]=fe):fe=e[64];let pe;e[65]===Symbol.for(`react.memo_cache_sentinel`)?(pe=()=>void w(),e[65]=pe):pe=e[65];let me;e[66]===a?me=e[67]:(me=a?(0,$.jsx)(be,{className:`size-3 animate-spin`}):(0,$.jsx)(Oe,{className:`size-3`}),e[66]=a,e[67]=me);let he;e[68]!==a||e[69]!==me?(he=(0,$.jsx)(b,{render:(0,$.jsx)(P,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,disabled:a,onClick:pe,"aria-label":`Refresh provider status`,children:me})}),e[68]=a,e[69]=me,e[70]=he):he=e[70];let ge;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(ge=(0,$.jsx)(f,{side:`top`,children:`Refresh provider status`}),e[71]=ge):ge=e[71];let _e;e[72]===he?_e=e[73]:(_e=(0,$.jsxs)(te,{children:[he,ge]}),e[72]=he,e[73]=_e),e[74]!==ue||e[75]!==_e?(A=(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[ue,fe,_e]}),e[74]=ue,e[75]=_e,e[76]=A):A=e[76],j=V.map(e=>{let n=Ze(e.driver),i=r.find(t=>t.instanceId===e.instanceId),a=i&&Ve(i)?i:null,o=a!==null&&He(a,r),s=!!(i&&Ue(i))||h.has(e.instanceId),c=t.providerModelPreferences?.[e.instanceId]??{hiddenModels:[],modelOrder:[]},l=(t.favorites??[]).filter(t=>t.provider===e.instanceId).map(En),u=n?.label??String(e.driver),f=e.isDefault&&e.isDirty?(0,$.jsx)(Ye,{label:`${u} provider settings`,onClick:()=>J(e.driver)}):null;return(0,$.jsx)(hn,{instanceId:e.instanceId,instance:e.instance,driverOption:n,liveProvider:i,isExpanded:v[e.instanceId]??!1,onExpandedChange:t=>x(n=>({...n,[e.instanceId]:t})),onUpdate:t=>{let n=e.instance.enabled??!0;t.enabled===!1&&n&&d===e.instanceId?U(e,t,{textGenerationModelSelection:y.textGenerationModelSelection}):U(e,t)},onDelete:e.isDefault?void 0:()=>G(e.instanceId),headerAction:f,hiddenModels:c.hiddenModels,favoriteModels:l,modelOrder:c.modelOrder,onHiddenModelsChange:t=>ie(e.instanceId,{...c,hiddenModels:t}),onFavoriteModelsChange:t=>K(e.instanceId,t),onModelOrderChange:t=>ie(e.instanceId,{...c,modelOrder:t}),onRunUpdate:o?()=>q(a):void 0,isUpdating:s},e.instanceId)}),e[3]=a,e[4]=v,e[5]=r,e[6]=t,e[7]=n,e[8]=h,e[9]=T,e[10]=D,e[11]=O,e[12]=A,e[13]=j,e[14]=M}else T=e[9],D=e[10],O=e[11],A=e[12],j=e[13],M=e[14];let N;e[77]!==T||e[78]!==O||e[79]!==A||e[80]!==j?(N=(0,$.jsx)(T,{title:O,headerAction:A,children:j}),e[77]=T,e[78]=O,e[79]=A,e[80]=j,e[81]=N):N=e[81];let F;e[82]===l?F=e[83]:(F=(0,$.jsx)(Et,{open:l,onOpenChange:p}),e[82]=l,e[83]=F);let I;return e[84]!==D||e[85]!==M||e[86]!==N||e[87]!==F?(I=(0,$.jsxs)(D,{children:[M,N,F]}),e[84]=D,e[85]=M,e[86]=N,e[87]=F,e[88]=I):I=e[88],I}function En(e){return e.model}function Dn(){}function On(e){Y.add(J({type:`error`,title:`Provider update failed`,description:e instanceof Error?e.message:`An error occurred.`}))}function kn(e){l(e)}function An(e){return e.length>0}function jn(e){return e.trim()}function Mn(e){return e.trim().length>0}function Nn(e){return e.trim().length>0}function Pn(e){return e.provider}function Fn(e){return String(L(e.provider))}function In(e,t){return t.checkedAt>e?t.checkedAt:e}function Ln(e){return e.instanceId===L(U.make(`cursor`))}function Rn(e){Y.add(J({type:`error`,title:`Failed to refresh providers`,description:e instanceof Error?e.message:`An error occurred.`}))}export{Tn as ProvidersSettingsPanel};
|