ryco-cli 0.1.6 → 0.1.8
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-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-B5vb4DOU.mjs} +2 -2
- package/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-CYZmJqSM.cjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CcAb4IgH.mjs} +2 -2
- package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-D_7i4YQz.cjs} +2 -2
- package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-CoPBpdrp.mjs} +198 -8
- package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-ScqmbPKW.cjs} +197 -7
- package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-CtCCc3CC.cjs} +36 -8
- package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-DH7vqku4.mjs} +37 -9
- package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-CJV1jPda.mjs} +3 -3
- package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-Db2hn8Qz.cjs} +2 -2
- package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-CFCF68Te.mjs} +7 -6
- package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DLN2KEoc.cjs} +6 -5
- package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BlvQbOEZ.cjs} +201 -15
- package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-Dej81rwD.mjs} +202 -16
- package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-3cFD7SqY.mjs} +2 -2
- package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-DYFUGvBk.cjs} +2 -2
- package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-B1Tp0TbY.cjs} +27 -4
- package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-Kf4rrBTF.mjs} +27 -4
- package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D3vvKrB4.cjs} +2 -2
- package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-Ygppeftk.mjs} +2 -2
- package/dist/{NodeSqliteClient-B5aDHbNc.cjs → NodeSqliteClient-D1O-MR8w.cjs} +4 -1
- package/dist/{NodeSqliteClient-A1TEgwj_.mjs → NodeSqliteClient-DdTjpAko.mjs} +4 -1
- package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BGa9Tkot.mjs} +326 -39
- package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-mbR9mF54.cjs} +325 -38
- package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-CTb100Uk.cjs} +1 -64
- package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-Zk11tJoL.mjs} +3 -48
- package/dist/bin.cjs +1481 -704
- package/dist/bin.mjs +1435 -659
- package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-CPQ2q38I.js} +1 -1
- package/dist/client/assets/AppearanceSettings-B0FYiIxL.js +1 -0
- package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-C1yjFjxJ.js} +1 -1
- package/dist/client/assets/ChatRightPanel-CJDSKMU2.js +188 -0
- package/dist/client/assets/ChatThreadRouteView-BaKwKGbC.js +1 -0
- package/dist/client/assets/CommandPaletteDialog-BHG_MdZk.js +1 -0
- package/dist/client/assets/CompositeRoot-Bs0hfelE.js +1 -0
- package/dist/client/assets/ConnectionsSettings-DvZNgO60.js +1 -0
- package/dist/client/assets/{DiagnosticsSettings-B340S_mq.js → DiagnosticsSettings-0v_hh1Qh.js} +1 -1
- package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-CwEAVRF_.js} +1 -1
- package/dist/client/assets/{DialogRoot-Ej1FVk-_.js → DialogRoot-CYuaaDI3.js} +1 -1
- package/dist/client/assets/DialogTitle-Cak6zT3u.js +1 -0
- package/dist/client/assets/DialogTrigger-BD0KYYT-.js +1 -0
- package/dist/client/assets/{DialogViewport-DvjAl76K.js → DialogViewport-9sGf4JUp.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-nvKLHlii.js} +1 -1
- package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-CflvH7gO.js} +1 -1
- package/dist/client/assets/KeybindingsSettings-DhLKhgYn.js +7 -0
- package/dist/client/assets/McpServersSettings-COs_dng1.js +6 -0
- package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-cxMCW-cQ.js} +1 -1
- package/dist/client/assets/OpinionatedPluginsSettings-ag_OgOGj.js +1 -0
- package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D97Hy4xo.js} +1 -1
- package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-RMYvRSEk.js} +1 -1
- package/dist/client/assets/ProvidersSettingsPanel-DcdVMRVC.js +1 -0
- package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.js → RedactedSensitiveText-CQY4pFAq.js} +1 -1
- package/dist/client/assets/RootAppShell-BRjETnaT.js +12 -0
- package/dist/client/assets/SettingsDialog-DRi5jsmq.js +2 -0
- package/dist/client/assets/SourceControlSettings-CdUulS4O.js +1 -0
- package/dist/client/assets/StatisticsPanel-NLU3ecLt.js +64 -0
- package/dist/client/assets/{ThreadStatusIndicators-B0leIJGD.js → ThreadStatusIndicators-CebYbeXP.js} +1 -1
- package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-DlI0gGer.js} +17 -17
- package/dist/client/assets/ThreadWorkspacePanel-CEIVrCZ0.js +166 -0
- package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-wh07u3JU.js} +1 -1
- package/dist/client/assets/chart-column-Cg34FxwD.js +1 -0
- package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-UitETN_n.js} +1 -1
- package/dist/client/assets/chevron-up-C3DS3evc.js +1 -0
- package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-DPbdAzEu.js} +1 -1
- package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-ClVNnHW5.js} +1 -1
- package/dist/client/assets/clock-Cr66Pt4W.js +1 -0
- package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-DzUBFRor.js} +1 -1
- package/dist/client/assets/composerDraftStore-BfLPHwHL.js +21 -0
- package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BiqPT2_z.js} +1 -1
- package/dist/client/assets/{download-DLBlpp4h.js → download-DJ1juHK4.js} +1 -1
- package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-B1txZFC7.js} +1 -1
- package/dist/client/assets/editorPreferences-Bbmh6Bm1.js +1 -0
- package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CUEYr1p8.js} +1 -1
- package/dist/client/assets/{group-zDBPF7rR.js → group-BouZ2n9F.js} +1 -1
- package/dist/client/assets/{index-Dq8sT2lF.js → index-DiHgOLH_.js} +2 -2
- package/dist/client/assets/{input-B9-RWT56.js → input-Do_m9U-4.js} +1 -1
- package/dist/client/assets/kbd-DJilTfYF.js +1 -0
- package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CRkz0yvp.js} +1 -1
- package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-D3WgbAUQ.js} +1 -1
- package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-PQcOnB2O.js} +0 -0
- package/dist/client/assets/{main-DxfpmoKJ.js → main-C-491vdD.js} +2 -2
- package/dist/client/assets/main-fW5L_SdM.css +2 -0
- package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BRoYo327.js} +1 -1
- package/dist/client/assets/{play-QloDGe4R.js → play-BZbHk_vw.js} +1 -1
- package/dist/client/assets/plus-D0S72hZS.js +1 -0
- package/dist/client/assets/projectAtoms-KYCIIuVn.js +1 -0
- package/dist/client/assets/providerDriverMeta-BX4CLldz.js +1 -0
- package/dist/client/assets/providerIconUtils-DTRc3qno.js +47 -0
- package/dist/client/assets/radio-group-De3hRQoY.js +1 -0
- package/dist/client/assets/{refresh-cw-DkBMGllm.js → refresh-cw-D_1NT-T2.js} +1 -1
- package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-RblUm3b1.js} +1 -1
- package/dist/client/assets/rightPanelRouteSearch-DLllyqRr.js +1 -0
- package/dist/client/assets/{scale-BActunFu.js → scale-s57Ro96s.js} +1 -1
- package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-B0_k8-iT.js} +1 -1
- package/dist/client/assets/{separator-TInKeIDo.js → separator-AyXRgdnJ.js} +1 -1
- package/dist/client/assets/{server-BtEG3NAw.js → server-Z-m1OqE5.js} +1 -1
- package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-B87Htlw4.js} +2 -2
- package/dist/client/assets/settingsDialogStore-CxUfUnd9.js +1 -0
- package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-BtKS3Z8f.js} +1 -1
- package/dist/client/assets/sidebar-B0WxOej2.js +1 -0
- package/dist/client/assets/sidebarStatusText-C_EsHj20.js +1 -0
- package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-COt2Az5i.js} +1 -1
- package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-BuB4Kzj6.js} +1 -1
- package/dist/client/assets/threadSelectionStore-BS6X6HHt.js +1 -0
- package/dist/client/assets/toast-CaV8TQi_.js +1 -0
- package/dist/client/assets/toggle-DE4ApNIU.js +1 -0
- package/dist/client/assets/{toggle-group-CnLjaHSL.js → toggle-group-BuzAkAEk.js} +1 -1
- package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-BCL2aeat.js} +1 -1
- package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-ZZ1feCT6.js} +1 -1
- package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-CL3zqnKL.js} +1 -1
- package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-Cu9H3R3q.js} +1 -1
- package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-Gke-ZFBr.js} +1 -1
- package/dist/client/assets/useLabelableId-DfuxWqrk.js +1 -0
- package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-DQEHh6ky.js} +1 -1
- package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
- package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DGDiHkqG.js} +1 -1
- package/dist/client/assets/{wrench-je4QOyG-.js → wrench-C_OATMLq.js} +1 -1
- package/dist/client/assets/x-BG9zZGeD.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-B-GW3u_2.cjs} +367 -15
- package/dist/{collectUint8StreamText-C2z5Y8tF.mjs → collectUint8StreamText-COE2_gie.mjs} +345 -17
- package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-D1_iEWGi.mjs} +1 -1
- package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-DTsQ87HL.cjs} +1 -1
- package/package.json +4 -2
- package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
- package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
- package/dist/client/assets/ChatThreadRouteView-CV6ETYG5.js +0 -1
- package/dist/client/assets/CommandPaletteDialog-C_H7R8S5.js +0 -1
- 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/KeybindingsSettings-CW3RRi-7.js +0 -7
- package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
- package/dist/client/assets/OpinionatedPluginsSettings-Cjj23Fs4.js +0 -1
- 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/rightPanelRouteSearch-DfuWVvXN.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{t as n}from"./compiler-runtime-BNrXlsa1.js";import{Ot as r,mt as i,sn as a,wt as o}from"./projectAtoms-DUEBb7Zz.js";import{Ni as s,a as c}from"./composerDraftStore-D12lUSfh.js";import{t as ee}from"./useNavigate-B2tgshhW.js";import{c as l}from"./toast-DE7a4wkW.js";import{a as te,c as ne,i as re,n as ie,o as ae,s as oe,t as se}from"./rightPanelRouteSearch-DfuWVvXN.js";import{Jt as ce}from"./providerIconUtils-uhWb4bdg.js";import{a as le,d as ue,f as de,i as fe,l as pe,n as me,p as he,r as u,s as ge,t as _e}from"./ChatRightPanel-CThudBb1.js";import{b as ve,o as ye}from"./sidebar-DHwNQmWp.js";import{i as be,t as xe}from"./storeSelectors-Cx1IYPA4.js";var Se=n(),d=e(t(),1),f=s();function p(e){let t=(0,Se.c)(154),{threadRef:n,search:s}=e;ce(`ChatThreadRouteView`);let u=ee(),p;t[0]===n?.environmentId?p=t[1]:(p=e=>i(e,n?.environmentId??null).bootstrapComplete,t[0]=n?.environmentId,t[1]=p);let m=r(p),Te;t[2]===n?Te=t[3]:(Te=be(n),t[2]=n,t[3]=Te);let Ee=r(Te),De;t[4]===n?De=t[5]:(De=e=>o(e,n),t[4]=n,t[5]=De);let Oe=r(De),ke;t[6]===n?.environmentId?ke=t[7]:(ke=e=>i(e,n?.environmentId??null).threadIds.length>0,t[6]=n?.environmentId,t[7]=ke);let Ae=r(ke),je=a(we),h;t[8]!==je||t[9]!==n?.environmentId?(h=()=>xe(n?.environmentId??null,je),t[8]=je,t[9]=n?.environmentId,t[10]=h):h=t[10],n?.environmentId;let Me;t[11]===h?Me=t[12]:(Me=h(),t[11]=h,t[12]=Me);let g=r(Me),Ne=de(n),_=ue(n),Pe=he(n?.environmentId),v=Oe||Ne,y;t[13]===Ee?y=t[14]:(y=ge(Ee),t[13]=Ee,t[14]=y);let b=y,x=Ae||Pe,S=s.diff===`1`,C=s.preview===`1`,w;t[15]===s?w=t[16]:(w=se(s),t[15]=s,t[16]=w);let T=w,Fe;t[17]===s?Fe=t[18]:(Fe=ie(s),t[17]=s,t[18]=Fe);let E=Fe,D=s.workspaceTab===`agent`&&s.workspaceAgentKey?s.workspaceAgentKey:null,Ie=ve(pe),O=n?`${n.environmentId}:${n.threadId}`:null,Le;t[19]!==D||t[20]!==O||t[21]!==S||t[22]!==C||t[23]!==T?(Le=()=>({threadKey:O,hasOpenedDiff:S,hasOpenedPreview:C,hasOpenedTerminal:T===`terminal`,openedAgentKeys:D?[D]:[]}),t[19]=D,t[20]=O,t[21]=S,t[22]=C,t[23]=T,t[24]=Le):Le=t[24];let[k,Re]=(0,d.useState)(Le),A=k.threadKey===O?k.hasOpenedDiff:S,j=k.threadKey===O?k.hasOpenedPreview:C,M=k.threadKey===O?k.hasOpenedTerminal:T===`terminal`,ze;t[25]!==D||t[26]!==O||t[27]!==k.openedAgentKeys||t[28]!==k.threadKey?(ze=k.threadKey===O?k.openedAgentKeys:D?[D]:[],t[25]=D,t[26]=O,t[27]=k.openedAgentKeys,t[28]=k.threadKey,t[29]=ze):ze=t[29];let N=ze,Be;t[30]!==D||t[31]!==N?(Be=D&&!N.includes(D)?[...N,D]:N,t[30]=D,t[31]=N,t[32]=Be):Be=t[32];let P=Be,Ve;t[33]===T?Ve=t[34]:(Ve=()=>T??`review`,t[33]=T,t[34]=Ve);let[F,He]=(0,d.useState)(Ve),I;t[35]!==A||t[36]!==j||t[37]!==M||t[38]!==T?(I=[],(j||T===`files`)&&I.push(`files`),(A||T===`review`)&&I.push(`review`),(M||T===`terminal`)&&I.push(`terminal`),t[35]=A,t[36]=j,t[37]=M,t[38]=T,t[39]=I):I=t[39];let L=I,Ue;t[40]!==O||t[41]!==S||t[42]!==P||t[43]!==C||t[44]!==T?(Ue=e=>{He(e),Re(t=>{let n={threadKey:O,hasOpenedDiff:(t.threadKey===O?t.hasOpenedDiff:S)||e===`review`,hasOpenedPreview:(t.threadKey===O?t.hasOpenedPreview:C)||e===`files`,hasOpenedTerminal:(t.threadKey===O?t.hasOpenedTerminal:T===`terminal`)||e===`terminal`,openedAgentKeys:t.threadKey===O?t.openedAgentKeys:P};return t.threadKey===n.threadKey&&t.hasOpenedDiff===n.hasOpenedDiff&&t.hasOpenedPreview===n.hasOpenedPreview&&t.hasOpenedTerminal===n.hasOpenedTerminal&&t.openedAgentKeys===n.openedAgentKeys?t:n})},t[40]=O,t[41]=S,t[42]=P,t[43]=C,t[44]=T,t[45]=Ue):Ue=t[45];let R=Ue,We;t[46]!==u||t[47]!==n?(We=()=>{n&&u({to:`/$environmentId/$threadId`,params:l(n),search:Ce})},t[46]=u,t[47]=n,t[48]=We):We=t[48];let z=We,Ge;t[49]!==A||t[50]!==j||t[51]!==M||t[52]!==F||t[53]!==u||t[54]!==P||t[55]!==n?(Ge=()=>{n&&u({to:`/$environmentId/$threadId`,params:l(n),search:e=>{let t=P[P.length-1];return F===`agent`&&t?re(e,t):F===`files`&&j?te(e):F===`review`&&A?ae(e):F===`terminal`&&M?oe(e):j?te(e):A?ae(e):M?oe(e):t?re(e,t):ne(e)}})},t[49]=A,t[50]=j,t[51]=M,t[52]=F,t[53]=u,t[54]=P,t[55]=n,t[56]=Ge):Ge=t[56];let B=Ge,Ke;t[57]!==z||t[58]!==B||t[59]!==E?(Ke=()=>{if(E){z();return}B()},t[57]=z,t[58]=B,t[59]=E,t[60]=Ke):Ke=t[60];let V=Ke,qe;t[61]!==D||t[62]!==O||t[63]!==A||t[64]!==j||t[65]!==M||t[66]!==u||t[67]!==P||t[68]!==T||t[69]!==n?(qe=e=>{if(!n)return;if(e.mode===`agent`){let t=P.filter(t=>t!==e.agentKey);Re(e=>({threadKey:O,hasOpenedDiff:e.threadKey===O?e.hasOpenedDiff:A,hasOpenedPreview:e.threadKey===O?e.hasOpenedPreview:j,hasOpenedTerminal:e.threadKey===O?e.hasOpenedTerminal:M,openedAgentKeys:t})),T===`agent`&&D===e.agentKey&&u({to:`/$environmentId/$threadId`,params:l(n),search:e=>{let n=t[t.length-1];return n?re(e,n):j?te(e):A?ae(e):M?oe(e):ne(e)}});return}let t=e.mode===`review`?!1:A||T===`review`,r=e.mode===`files`?!1:j||T===`files`,i=e.mode===`terminal`?!1:M||T===`terminal`;Re(e=>{let n={threadKey:O,hasOpenedDiff:t,hasOpenedPreview:r,hasOpenedTerminal:i,openedAgentKeys:e.threadKey===O?e.openedAgentKeys:P};return e.threadKey===n.threadKey&&e.hasOpenedDiff===n.hasOpenedDiff&&e.hasOpenedPreview===n.hasOpenedPreview&&e.hasOpenedTerminal===n.hasOpenedTerminal&&e.openedAgentKeys===n.openedAgentKeys?e:n}),T===e.mode&&u({to:`/$environmentId/$threadId`,params:l(n),search:n=>e.mode!==`files`&&r?te(n):e.mode!==`review`&&t?ae(n):e.mode!==`terminal`&&i?oe(n):ne(n)})},t[61]=D,t[62]=O,t[63]=A,t[64]=j,t[65]=M,t[66]=u,t[67]=P,t[68]=T,t[69]=n,t[70]=qe):qe=t[70];let H=qe,U,Je;t[71]!==R||t[72]!==T?(U=()=>{T!==null&&(He(T),R(T))},Je=[R,T],t[71]=R,t[72]=T,t[73]=U,t[74]=Je):(U=t[73],Je=t[74]),(0,d.useEffect)(U,Je);let Ye,Xe;t[75]!==D||t[76]!==O||t[77]!==S||t[78]!==A||t[79]!==j||t[80]!==M||t[81]!==C||t[82]!==T?(Ye=()=>{!O||!D||Re(e=>{let t=e.threadKey===O?e.openedAgentKeys:[];return t.includes(D)?e.threadKey===O?e:{threadKey:O,hasOpenedDiff:A,hasOpenedPreview:j,hasOpenedTerminal:M,openedAgentKeys:t}:{threadKey:O,hasOpenedDiff:e.threadKey===O?e.hasOpenedDiff:S,hasOpenedPreview:e.threadKey===O?e.hasOpenedPreview:C,hasOpenedTerminal:e.threadKey===O?e.hasOpenedTerminal:T===`terminal`,openedAgentKeys:[...t,D]}})},Xe=[D,O,S,A,j,M,C,T],t[75]=D,t[76]=O,t[77]=S,t[78]=A,t[79]=j,t[80]=M,t[81]=C,t[82]=T,t[83]=Ye,t[84]=Xe):(Ye=t[83],Xe=t[84]),(0,d.useEffect)(Ye,Xe);let Ze,Qe;t[85]!==m||t[86]!==x||t[87]!==g||t[88]!==u||t[89]!==v||t[90]!==n?(Ze=()=>{!n||!m||!v&&x&&u(g?{to:`/$environmentId/$threadId`,params:l(g),replace:!0}:{to:`/`,replace:!0})},Qe=[m,x,g,u,v,n],t[85]=m,t[86]=x,t[87]=g,t[88]=u,t[89]=v,t[90]=n,t[91]=Ze,t[92]=Qe):(Ze=t[91],Qe=t[92]),(0,d.useEffect)(Ze,Qe);let $e;t[93]!==_?.promotedTo||t[94]!==b||t[95]!==n?($e=()=>{!n||!b||!_?.promotedTo||c(n)},t[93]=_?.promotedTo,t[94]=b,t[95]=n,t[96]=$e):$e=t[96];let et=_?.promotedTo,tt;if(t[97]!==b||t[98]!==et||t[99]!==n?(tt=[et,b,n],t[97]=b,t[98]=et,t[99]=n,t[100]=tt):tt=t[100],(0,d.useEffect)($e,tt),!n||!m||!v)return null;let W=E||T===`review`||A||T===`files`||j||T===`terminal`||M||T===`agent`||P.length>0,G=E?T:F;if(!Ie){let e,r,i,a;t[101]===R?(e=t[102],r=t[103],i=t[104],a=t[105]):(e=()=>R(`review`),r=()=>R(`files`),i=()=>R(`terminal`),a=()=>R(`agent`),t[101]=R,t[102]=e,t[103]=r,t[104]=i,t[105]=a);let o;t[106]!==E||t[107]!==e||t[108]!==r||t[109]!==i||t[110]!==a||t[111]!==n.environmentId||t[112]!==n.threadId||t[113]!==V?(o=(0,f.jsx)(ye,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,f.jsx)(fe,{environmentId:n.environmentId,threadId:n.threadId,onDiffPanelOpen:e,onPreviewPanelOpen:r,onTerminalPanelOpen:i,onAgentPanelOpen:a,workspacePanelOpen:E,onToggleWorkspacePanel:V,routeKind:`server`})}),t[106]=E,t[107]=e,t[108]=r,t[109]=i,t[110]=a,t[111]=n.environmentId,t[112]=n.threadId,t[113]=V,t[114]=o):o=t[114];let s;t[115]!==H||t[116]!==z||t[117]!==G||t[118]!==B||t[119]!==P||t[120]!==L||t[121]!==E||t[122]!==W?(s=(0,f.jsx)(me,{open:E,panelMode:G,openedPanelModes:L,openedAgentKeys:P,onClosePanelTab:H,onClose:z,onOpen:B,renderContent:W}),t[115]=H,t[116]=z,t[117]=G,t[118]=B,t[119]=P,t[120]=L,t[121]=E,t[122]=W,t[123]=s):s=t[123];let c;return t[124]!==o||t[125]!==s?(c=(0,f.jsxs)(f.Fragment,{children:[o,s]}),t[124]=o,t[125]=s,t[126]=c):c=t[126],c}let K,q,J,Y;t[127]===R?(K=t[128],q=t[129],J=t[130],Y=t[131]):(K=()=>R(`review`),q=()=>R(`files`),J=()=>R(`terminal`),Y=()=>R(`agent`),t[127]=R,t[128]=K,t[129]=q,t[130]=J,t[131]=Y);let X;t[132]!==E||t[133]!==K||t[134]!==q||t[135]!==J||t[136]!==Y||t[137]!==n.environmentId||t[138]!==n.threadId||t[139]!==V?(X=(0,f.jsx)(ye,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,f.jsx)(fe,{environmentId:n.environmentId,threadId:n.threadId,onDiffPanelOpen:K,onPreviewPanelOpen:q,onTerminalPanelOpen:J,onAgentPanelOpen:Y,workspacePanelOpen:E,onToggleWorkspacePanel:V,routeKind:`server`})}),t[132]=E,t[133]=K,t[134]=q,t[135]=J,t[136]=Y,t[137]=n.environmentId,t[138]=n.threadId,t[139]=V,t[140]=X):X=t[140];let Z;t[141]!==H||t[142]!==G||t[143]!==P||t[144]!==L||t[145]!==W?(Z=W?(0,f.jsx)(_e,{mode:`sheet`,panelMode:G,openedPanelModes:L,openedAgentKeys:P,onClosePanelTab:H}):null,t[141]=H,t[142]=G,t[143]=P,t[144]=L,t[145]=W,t[146]=Z):Z=t[146];let Q;t[147]!==z||t[148]!==E||t[149]!==Z?(Q=(0,f.jsx)(le,{open:E,onClose:z,children:Z}),t[147]=z,t[148]=E,t[149]=Z,t[150]=Q):Q=t[150];let $;return t[151]!==X||t[152]!==Q?($=(0,f.jsxs)(f.Fragment,{children:[X,Q]}),t[151]=X,t[152]=Q,t[153]=$):$=t[153],$}function Ce(e){return u(e)}function we(e){return e.sidebarThreadSortOrder}export{p as ChatThreadRouteView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./react-PSPkXoKo.js";import{t as n}from"./compiler-runtime-BNrXlsa1.js";import{ma as r,no as i,ro as a}from"./react-CjD7iThp.js";import{B as o,F as s,G as c,H as l,I as u,K as d,Kt as f,L as ee,O as te,Ot as ne,P as re,R as ie,U as ae,V as oe,W as se,Yt as ce,_t as le,a as ue,gt as de,hn as fe,nn as pe,p as me,qt as he,sn as ge,tn as _e,z as ve}from"./projectAtoms-DUEBb7Zz.js";import{A as ye,Cr as be,M as xe,Ni as Se,O as Ce,Or as we,Sr as p,Tr as Te,Xr as m,br as Ee,ca as De,da as Oe,k as ke,wr as h}from"./composerDraftStore-D12lUSfh.js";import{t as Ae}from"./useNavigate-B2tgshhW.js";import{a as g,c as je,i as _}from"./toast-DE7a4wkW.js";import{i as Me,r as Ne}from"./primary-CSkhdakK.js";import{$t as Pe,An as Fe,Dn as Ie,Er as Le,Fn as Re,Ln as v,Mn as ze,Nn as y,Pn as b,Qn as Be,Tn as x,Wn as S,an as Ve,cn as C,cr as He,fn as w,in as T,jn as Ue,kn as We,mr as Ge,rr as Ke,un as qe,wn as Je}from"./providerIconUtils-uhWb4bdg.js";import{C as Ye,n as E,t as D,w as Xe}from"./kbd-aeSsjiPI.js";import{n as Ze,t as Qe}from"./commandPaletteStore-uVfCD7zE.js";import{c as O,n as $e,r as et}from"./ThreadStatusIndicators-B0leIJGD.js";import{i as tt,n as nt,r as rt}from"./chatThreadActions-PPyTj_x0.js";import{a as it,l as at,s as ot}from"./BranchToolbar.logic-C_xHEt9C.js";import{t as st}from"./shallow-Dmd-gez1.js";import{a as ct,s as k}from"./storeSelectors-Cx1IYPA4.js";import{t as lt}from"./settingsDialogStore-BINi7pdD.js";import{t as ut}from"./useHandleNewThread-XB82O6SA.js";import{g as dt}from"./keybindings-Dx4Nc1vY.js";import{t as ft}from"./ProjectFavicon-TDP7HRfn.js";var pt=m(`corner-left-up`,[[`path`,{d:`M14 9 9 4 4 9`,key:`1af5af`}],[`path`,{d:`M20 20h-7a4 4 0 0 1-4-4V4`,key:`1blwi3`}]]),mt=m(`folder-symlink`,[[`path`,{d:`M2 9.35V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7`,key:`y8kt7d`}],[`path`,{d:`m8 16 3-3-3-3`,key:`rlqrt1`}]]),A=e(t(),1),j=n(),M=`size-4 text-muted-foreground/80`,N=`size-4`;function ht(e){return e.isAlias?`browse:alias:${e.name}:${e.fullPath}`:`browse:${e.fullPath}`}function gt(e){let t=e.browseFilterQuery.toLowerCase(),n=e.browseFilterQuery.startsWith(`.`),r=e.browseEntries.filter(e=>e.name.toLowerCase().startsWith(t)&&(n||!e.name.startsWith(`.`))),i=null,a=e.highlightedItemValue;a&&a.startsWith(`browse:`)&&(i=r.find(e=>ht(e)===a)??null);let o=e.browseFilterQuery.length>0?r.find(t=>t.name===e.browseFilterQuery)??null:null;return{filteredEntries:r,highlightedEntry:i,exactEntry:o}}function P(e){return e.trim().toLowerCase().replace(/\s+/g,` `)}function _t(e){return e.projects.map(t=>({kind:`action`,value:`${e.valuePrefix}:${t.environmentId}:${t.id}`,searchTerms:[t.name,t.cwd],title:t.name,description:t.cwd,icon:e.icon(t),run:async()=>{await e.runProject(t)}}))}function vt(e){let t=k(e.threads.filter(e=>e.archivedAt===null),e.sortOrder);return(e.limit===void 0?t:t.slice(0,e.limit)).map(t=>{let n=e.projectTitleById.get(t.projectId),r=[];n&&r.push(n),t.branch&&r.push(`#${t.branch}`),t.id===e.activeThreadId&&r.push(`Current thread`);let i=e.renderLeadingContent?.(t),a=e.renderTrailingContent?.(t);return Object.assign({kind:`action`,value:`thread:${t.id}`,searchTerms:[t.title,n??``,t.branch??``],title:t.title,description:r.join(` · `),timestamp:S(t.latestUserMessageAt??t.updatedAt??t.createdAt),icon:e.icon},i?{titleLeadingContent:i}:{},a?{titleTrailingContent:a}:{},{run:async()=>{await e.runThread(t)}})})}function yt(e,t){let n=P(e);return n.length===0||!n.includes(t)?-1/0:n===t?3:n.startsWith(t)?2:1}function bt(e,t){let n=e.searchTerms.filter(e=>e.length>0);if(n.length===0)return 0;for(let[e,r]of n.entries()){let n=yt(r,t);if(n!==-1/0)return 1e3-e*100+n}return 0}function xt(e){let t=e.query.startsWith(`>`),n=P(t?e.query.slice(1):e.query);if(n.length===0)return t?e.activeGroups.filter(e=>e.value===`actions`):[...e.activeGroups];let r=[...e.activeGroups];t?r=r.filter(e=>e.value===`actions`):e.isInSubmenu||(r=r.filter(e=>e.value!==`recent-threads`));let i=[...r];return!e.isInSubmenu&&!t&&(e.projectSearchItems.length>0&&i.push({value:`projects-search`,label:`Projects`,items:e.projectSearchItems}),e.threadSearchItems.length>0&&i.push({value:`threads-search`,label:`Threads`,items:e.threadSearchItems})),i.flatMap(e=>{let t=e.items.map((e,t)=>P(e.searchTerms.join(` `)).includes(n)?{item:e,index:t,rank:bt(e,n)}:null).filter(e=>e!==null).toSorted((e,t)=>t.rank-e.rank||e.index-t.index).map(e=>e.item);return t.length===0?[]:[{value:e.value,label:e.label,items:t}]})}function St(e){let t=[];e.canBrowseUp&&t.push({kind:`action`,value:`browse:up`,searchTerms:[e.browseQuery,`..`],title:`..`,icon:e.upIcon,keepOpen:!0,run:async()=>{e.browseUp()}});for(let n of e.browseEntries)t.push({kind:`action`,value:ht(n),searchTerms:[e.browseQuery,n.fullPath,n.name],title:n.name,icon:n.isSymlink?e.symlinkIcon:e.directoryIcon,keepOpen:!0,run:async()=>{n.isAlias?e.browseToPath(n.fullPath):e.browseTo(n.name)}});return[{value:`directories`,label:`Directories`,items:t}]}function Ct(e){return e.currentView?e.isBrowsing?`submenu-browse`:`submenu`:e.isBrowsing?`root-browse`:`root`}function wt(e){let t=[];return e.actionItems.length>0&&t.push({value:`actions`,label:`Actions`,items:e.actionItems}),e.recentThreadItems.length>0&&t.push({value:`recent-threads`,label:`Recent Threads`,items:e.recentThreadItems}),t}function Tt(e){switch(e){case`root`:return`Search commands, projects, and threads...`;case`root-browse`:return`Enter project path (e.g. ~/projects/my-app)`;case`submenu`:return`Search...`;case`submenu-browse`:return`Enter path (e.g. ~/projects/my-app)`}}var F=Se();function Et(e){let t=(0,j.c)(13);if(e.groups.length===0){let n=e.emptyStateMessage??(e.isActionsOnly?`No matching actions.`:`No matching commands, projects, or threads.`),r;return t[0]===n?r=t[1]:(r=(0,F.jsx)(`div`,{className:`py-10 text-center text-sm text-muted-foreground`,children:n}),t[0]=n,t[1]=r),r}let n;if(t[2]!==e.groups||t[3]!==e.highlightedItemValue||t[4]!==e.keybindings||t[5]!==e.onExecuteItem){let r;t[7]!==e.highlightedItemValue||t[8]!==e.keybindings||t[9]!==e.onExecuteItem?(r=t=>(0,F.jsxs)(Fe,{items:t.items,children:[(0,F.jsx)(Ue,{children:t.label}),(0,F.jsx)(x,{children:t=>t.disabled?(0,F.jsx)(I,{item:t},t.value):(0,F.jsx)(L,{item:t,keybindings:e.keybindings,isActive:e.highlightedItemValue===t.value,onExecuteItem:e.onExecuteItem},t.value)})]},t.value),t[7]=e.highlightedItemValue,t[8]=e.keybindings,t[9]=e.onExecuteItem,t[10]=r):r=t[10],n=e.groups.map(r),t[2]=e.groups,t[3]=e.highlightedItemValue,t[4]=e.keybindings,t[5]=e.onExecuteItem,t[6]=n}else n=t[6];let r;return t[11]===n?r=t[12]:(r=(0,F.jsx)(b,{children:n}),t[11]=n,t[12]=r),r}function I(e){let t=(0,j.c)(8),n;t[0]!==e.item.description||t[1]!==e.item.title||t[2]!==e.item.titleLeadingContent?(n=e.item.description?(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,F.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,F.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,F.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,F.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[0]=e.item.description,t[1]=e.item.title,t[2]=e.item.titleLeadingContent,t[3]=n):n=t[3];let r;return t[4]!==e.item.icon||t[5]!==e.item.titleTrailingContent||t[6]!==n?(r=(0,F.jsxs)(`div`,{className:`flex min-h-8 select-none items-center gap-2 rounded-sm px-2 py-1.5 text-base opacity-64 sm:min-h-7 sm:text-sm`,children:[e.item.icon,n,e.item.titleTrailingContent]}),t[4]=e.item.icon,t[5]=e.item.titleTrailingContent,t[6]=n,t[7]=r):r=t[7],r}function L(e){let t=(0,j.c)(27),n;t[0]!==e.item.shortcutCommand||t[1]!==e.keybindings?(n=e.item.shortcutCommand?dt(e.keybindings,e.item.shortcutCommand):null,t[0]=e.item.shortcutCommand,t[1]=e.keybindings,t[2]=n):n=t[2];let r=n,i=e.item.value,a=e.isActive&&`bg-accent! text-accent-foreground!`,o;t[3]===a?o=t[4]:(o=p(`cursor-pointer gap-2 hover:bg-transparent hover:text-inherit data-highlighted:bg-transparent data-highlighted:text-inherit data-selected:bg-transparent data-selected:text-inherit [&[data-highlighted][data-selected]]:bg-transparent [&[data-highlighted][data-selected]]:text-inherit`,a),t[3]=a,t[4]=o);let s;t[5]===e?s=t[6]:(s=()=>{e.onExecuteItem(e.item)},t[5]=e,t[6]=s);let c;t[7]!==e.item.description||t[8]!==e.item.title||t[9]!==e.item.titleLeadingContent?(c=e.item.description?(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,F.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,F.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,F.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,F.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[7]=e.item.description,t[8]=e.item.title,t[9]=e.item.titleLeadingContent,t[10]=c):c=t[10];let l;t[11]===e.item.timestamp?l=t[12]:(l=e.item.timestamp?(0,F.jsx)(`span`,{className:`min-w-12 shrink-0 text-right text-[10px] tabular-nums text-muted-foreground/70`,children:e.item.timestamp}):null,t[11]=e.item.timestamp,t[12]=l);let u;t[13]===r?u=t[14]:(u=r?(0,F.jsx)(v,{children:r}):null,t[13]=r,t[14]=u);let d;t[15]===e.item.kind?d=t[16]:(d=e.item.kind===`submenu`?(0,F.jsx)(Le,{className:`ml-auto size-4 shrink-0 text-muted-foreground/50`}):null,t[15]=e.item.kind,t[16]=d);let f;return t[17]!==e.item.icon||t[18]!==e.item.titleTrailingContent||t[19]!==e.item.value||t[20]!==o||t[21]!==s||t[22]!==c||t[23]!==l||t[24]!==u||t[25]!==d?(f=(0,F.jsxs)(y,{value:i,className:o,onMouseDown:Dt,onClick:s,children:[e.item.icon,c,e.item.titleTrailingContent,l,u,d]}),t[17]=e.item.icon,t[18]=e.item.titleTrailingContent,t[19]=e.item.value,t[20]=o,t[21]=s,t[22]=c,t[23]=l,t[24]=u,t[25]=d,t[26]=f):f=t[26],f}function Dt(e){e.preventDefault()}var Ot=[],kt=3e4;function At(e){return be(e)?`Finder`:h(e)?`Explorer`:`Files`}function jt(e){return e===`windows`?`Win32`:e===`darwin`?`MacIntel`:e===`linux`?`Linux`:typeof navigator>`u`?``:navigator.platform}var Mt=[`url`,`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`],Nt=[`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`];function Pt(e){switch(e){case`github`:return`GitHub`;case`gitlab`:return`GitLab`;case`forgejo`:return`Forgejo`;case`bitbucket`:return`Bitbucket`;case`azure-devops`:return`Azure DevOps`;case`url`:return`Git URL`}}function Ft(e){switch(e){case`github`:return`owner/repo`;case`gitlab`:return`group/project`;case`forgejo`:return`owner/repo`;case`bitbucket`:return`workspace/repository`;case`azure-devops`:return`project/repository`;case`url`:return`URL`}}function It(e){return e===`url`?null:e}function R(e,t){switch(e){case`github`:return(0,F.jsx)(qe,{className:t});case`gitlab`:return(0,F.jsx)(w,{className:t});case`forgejo`:return(0,F.jsx)(C,{className:t});case`bitbucket`:return(0,F.jsx)(Ve,{className:t});case`azure-devops`:return(0,F.jsx)(T,{className:t});case`url`:return(0,F.jsx)(tt,{className:t})}}function Lt(e){return!e||e.step===`confirm`?null:e.source===`url`?`Enter Git clone URL`:`Enter ${Pt(e.source)} repository (${Ft(e.source)})`}function Rt(e){return e.split(`/`).at(-1)?.trim()??e}function zt(e){return`remote-repository:${e.provider}:${encodeURIComponent(e.nameWithOwner)}`}function Bt(e,t){return e===`bitbucket`?t.url:t.sshUrl}function Vt(e){return!e.includes(`/`)&&!e.includes(`:`)}function Ht(e){return e===`url`?null:e}function Ut(e){return Nt.toSorted((t,n)=>{let r=e[t].ready;return r===e[n].ready?Pt(t).localeCompare(Pt(n)):r?-1:1})}function Wt(e){let t={ready:!1,hint:`Provider status unavailable. Open Settings -> Source Control and rescan.`},n={url:{ready:!0,hint:null},github:t,gitlab:t,forgejo:t,bitbucket:t,"azure-devops":t};if(!e)return n;let i=new Map(e.sourceControlProviders.map(e=>[e.kind,e])),a={...n};for(let e of Mt){let n=Ht(e);if(!n)continue;let o=i.get(n);if(!o){a[e]=t;continue}if(o.status!==`available`){a[e]={ready:!1,hint:o.installHint};continue}if(o.auth.status===`unauthenticated`){a[e]={ready:!1,hint:r(o.auth.detail)??`${o.label} is not authenticated. Open Settings -> Source Control for setup guidance.`};continue}a[e]={ready:!0,hint:null}}return a}function Gt(e){return e instanceof Error&&e.message.trim().length>0?e.message:`An error occurred.`}function z(){let e=(0,j.c)(5),t=Qe(qt),n=Qe(Kt),r,i;e[0]===n?(r=e[1],i=e[2]):(r=()=>()=>{n(!1)},i=[n],e[0]=n,e[1]=r,e[2]=i),(0,A.useEffect)(r,i);let a;return e[3]===t?a=e[4]:(a=t?(0,F.jsx)(B,{}):null,e[3]=t,e[4]=a),a}function Kt(e){return e.setOpen}function qt(e){return e.open}function B(){let e=Ae(),t=Qe(e=>e.setOpen),n=Qe(e=>e.openIntent),r=Qe(e=>e.clearOpenIntent),Se=Pe(),[m,h]=(0,A.useState)(``),Fe=(0,A.useDeferredValue)(m),Le=Fe.startsWith(`>`),[v,y]=(0,A.useState)(null),b=ge(),{activeDraftThread:x,activeThread:S,defaultProjectRef:Ve,handleNewThread:C}=ut(),w=ne(st(de)),T=ne(st(le)),Ue=fe(),[qe,tt]=(0,A.useState)([]),k=qe.at(-1)??null,[dt,j]=(0,A.useState)(0),[ht,P]=(0,A.useState)(null),[yt,bt]=(0,A.useState)(!1),[I,L]=(0,A.useState)(null),[Dt,Mt]=(0,A.useState)(!1),[Nt,Ht]=(0,A.useState)(!1),z=Me(),Kt=Ne()?.label??null,qt=f(e=>e.byId),B=he(e=>e.byId),Jt=(0,A.useMemo)(()=>{let e=[],t=new Set;z&&(t.add(z),e.push({environmentId:z,label:it({isPrimary:!0,environmentId:z,runtimeLabel:Kt}),isPrimary:!0}));for(let n of Object.values(qt)){if(t.has(n.environmentId))continue;let r=B[n.environmentId];e.push({environmentId:n.environmentId,label:it({isPrimary:!1,environmentId:n.environmentId,runtimeLabel:r?.descriptor?.label??null,savedLabel:n.label}),isPrimary:!1})}return e.sort((e,t)=>e.isPrimary===t.isPrimary?e.label.localeCompare(t.label):e.isPrimary?-1:1),e},[z,Kt,qt,B]),Yt=Jt[0]?.environmentId??null,V=ht??Yt,Xt=(0,A.useMemo)(()=>jt(V&&z&&V===z?Ne()?.platform.os??null:V?B[V]?.descriptor?.platform.os??B[V]?.serverConfig?.environment.platform.os??null:null),[V,z,B]),Zt=I!==null,Qt=I?.step===`repository`,H=Qt&&I?It(I.source):null,U=Qt?Fe.trim():``,W=Be({environmentId:I?.step===`repository`?I.environmentId:null,provider:H,query:U,limit:25,enabled:I?.step===`repository`&&I.source!==`url`&&H===`bitbucket`}),G=!Qt&&ae(m,Xt),$t=Ct({currentView:k,isBrowsing:G}),en=(0,A.useCallback)(e=>{let t=(e&&z&&e===z?b:e?B[e]?.serverConfig?.settings:null)?.addProjectBaseDirectory?.trim()??``;return t.length===0?`~/`:u(t)},[z,B,b]),tn=(0,A.useMemo)(()=>new Map(w.map(e=>[e.id,e.cwd])),[w]),nn=(0,A.useMemo)(()=>new Map(w.map(e=>[e.id,e.name])),[w]),rn=S?.id,an=S?.environmentId??x?.environmentId??null,on=S?.projectId??x?.projectId??null,sn=on?tn.get(on)??null:null,K=V&&an===V?sn:null,q=d(m.trim())&&K===null,J=G?ie(m):``,cn=G&&!oe(m)?ve(m):``,ln=ot({environmentId:V,partialPath:J,cwd:K,staleTime:kt,enabled:G&&J.length>0&&V!==null&&!q}),Y=ln.data,un=ln.isPending,dn=Y?.entries??Ot,{filteredEntries:fn,exactEntry:pn}=(0,A.useMemo)(()=>gt({browseEntries:dn,browseFilterQuery:cn,highlightedItemValue:v}),[dn,cn,v]),mn=(0,A.useCallback)(e=>{ue({environmentId:V,partialPath:e,cwd:K,staleTime:kt})},[V,K]);(0,A.useEffect)(()=>{G&&s(m)&&mn(o(m))},[G,mn,m]);let hn=(0,A.useMemo)(()=>async t=>{Ce.getState().setProjectExpanded(te(t,b),!0);let n=ct(T.filter(e=>e.environmentId===t.environmentId),t.id,b.sidebarThreadSortOrder);if(n){await e({to:`/$environmentId/$threadId`,params:je(a(n.environmentId,n.id))});return}await C(i(t.environmentId,t.id),{envMode:b.defaultThreadEnvMode})},[C,e,b,T]),gn=(0,A.useMemo)(()=>_t({projects:w,valuePrefix:`project`,icon:e=>(0,F.jsx)(ft,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:M}),runProject:hn}),[hn,w]),_n=(0,A.useMemo)(()=>_t({projects:w,valuePrefix:`new-thread-in`,icon:e=>(0,F.jsx)(ft,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:M}),runProject:async e=>{await rt({activeDraftThread:x,activeThread:S,defaultProjectRef:Ve,defaultThreadEnvMode:b.defaultThreadEnvMode,handleNewThread:C},i(e.environmentId,e.id))}}),[x,S,Ve,C,w,b.defaultThreadEnvMode]),vn=(0,A.useMemo)(()=>vt({threads:T,...rn?{activeThreadId:rn}:{},projectTitleById:nn,sortOrder:b.sidebarThreadSortOrder,icon:(0,F.jsx)(He,{className:M}),renderLeadingContent:e=>(0,F.jsx)($e,{thread:e}),renderTrailingContent:e=>(0,F.jsx)(et,{thread:e}),runThread:async t=>{await e({to:`/$environmentId/$threadId`,params:je(a(t.environmentId,t.id))})}}),[rn,e,nn,b.sidebarThreadSortOrder,T]),yn=vn.slice(0,12);function X(e){tt(t=>[...t,{addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}}]),y(null),h(e.initialQuery??``)}function bn(e){X({addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}})}function xn(){L(null),qe.length<=1&&P(null),tt(e=>e.slice(0,-1)),y(null),h(``)}function Sn(e){y(null),h(e),e===``&&k?.initialQuery&&xn()}let Cn=(0,A.useCallback)(e=>{P(e),L(null),X({addonIcon:(0,F.jsx)(O,{className:N}),groups:[],initialQuery:en(e)})},[en]),wn=(0,A.useCallback)((e,t)=>{P(e),L({step:`repository`,environmentId:e,source:t}),X({addonIcon:R(t,N),groups:[],initialQuery:``})},[]),Tn=lt(e=>e.openSettings),En=(0,A.useCallback)(()=>{t(!1),Tn(`source-control`)},[Tn,t]),Dn=(0,A.useCallback)((e,t)=>{let n=[{kind:`action`,value:`action:add-project:${e}:local`,searchTerms:[`local`,`folder`,`directory`,`browse`],title:`Local folder`,description:`Browse a folder on disk`,icon:(0,F.jsx)(O,{className:M}),keepOpen:!0,run:async()=>{Cn(e)}}],r=[`url`,...Ut(t)];for(let i of r){let r=Pt(i),a=i===`url`?`Git URL`:`${r} repository`,o=i===`url`?`Clone from a remote URL`:`Clone ${r} ${Ft(i)}`,s=t[i],c=s.hint,l=s.ready?void 0:(0,F.jsx)(`span`,{className:`ml-auto`,children:(0,F.jsxs)(ke,{children:[(0,F.jsx)(xe,{render:(0,F.jsx)(Ee,{variant:`outline`,size:`xs`,className:`h-5 rounded-sm px-1.5 text-[10px] text-warning-foreground`,onClick:()=>{En()},children:`Setup Required`})}),(0,F.jsx)(ye,{align:`end`,side:`left`,children:c??`Open Settings -> Source Control to configure this provider.`})]})});if(!s.ready){n.push({kind:`action`,value:`action:add-project:${e}:${i}:not-ready`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r,`setup required`],title:a,description:o,disabled:!0,icon:R(i,M),...l?{titleTrailingContent:l}:{},run:async()=>{}});continue}n.push({kind:`action`,value:`action:add-project:${e}:${i}`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r],title:a,description:o,icon:R(i,M),...l?{titleTrailingContent:l}:{},keepOpen:!0,run:async()=>{wn(e,i)}})}return[{value:`sources:${e}`,label:`Sources`,items:n}]},[En,Cn,wn]),On=(0,A.useCallback)(e=>{P(e),L(null);let t={environmentId:e},n=_e(t).data;X({addonIcon:(0,F.jsx)(O,{className:N}),groups:Dn(e,Wt(n))}),pe(t).then(t=>{tt(n=>n.at(-1)?.groups[0]?.value===`sources:${e}`?[...n.slice(0,-1),{addonIcon:(0,F.jsx)(O,{className:N}),groups:Dn(e,Wt(t))}]:n)})},[Dn]),kn=Jt.map(e=>({kind:`action`,value:`action:add-project:environment:${e.environmentId}`,searchTerms:[e.label,e.environmentId,e.isPrimary?`this device`:``],title:e.label,description:e.isPrimary?`This device`:e.environmentId,icon:(0,F.jsx)(O,{className:M}),keepOpen:!0,run:async()=>{On(e.environmentId)}})),An=(0,A.useMemo)(()=>[{value:`environments`,label:`Environments`,items:kn}],[kn]),jn=(0,A.useCallback)(()=>{if(Jt.length>1){X({addonIcon:(0,F.jsx)(O,{className:N}),groups:An});return}let e=Yt;if(!e){_.add(g({type:`error`,title:`Unable to browse projects`,description:`No environment is available.`}));return}On(e)},[An,Jt.length,Yt,On]);(0,A.useLayoutEffect)(()=>{n?.kind===`add-project`&&(r(),jn())},[r,jn,n]);let Z=[];if(w.length>0){let e=on?nn.get(on)??null:null;e&&Z.push({kind:`action`,value:`action:new-thread`,searchTerms:[`new thread`,`chat`,`create`,`draft`],title:(0,F.jsxs)(F.Fragment,{children:[`New thread in `,(0,F.jsx)(`span`,{className:`font-semibold`,children:e})]}),icon:(0,F.jsx)(at,{className:M}),shortcutCommand:`chat.new`,run:async()=>{await nt({activeDraftThread:x,activeThread:S,defaultProjectRef:Ve,defaultThreadEnvMode:b.defaultThreadEnvMode,handleNewThread:C})}}),Z.push({kind:`submenu`,value:`action:new-thread-in`,searchTerms:[`new thread`,`project`,`pick`,`choose`,`select`],title:`New thread in...`,icon:(0,F.jsx)(at,{className:M}),addonIcon:(0,F.jsx)(at,{className:N}),groups:[{value:`projects`,label:`Projects`,items:_n}]})}Z.push({kind:`action`,value:`action:add-project`,searchTerms:[`add project`,`folder`,`directory`,`browse`,`clone`,`remote`,`repository`,`repo`,`git`,`github`,`gitlab`,`forgejo`,`codeberg`,`bitbucket`,`azure`,`devops`,`url`,`environment`],title:`Add project`,icon:(0,F.jsx)(O,{className:M}),keepOpen:!0,run:async()=>{jn()}}),Z.push({kind:`action`,value:`action:settings`,searchTerms:[`settings`,`preferences`,`configuration`,`keybindings`],title:`Open settings`,icon:(0,F.jsx)(Ke,{className:M}),run:async()=>{t(!1),Tn()}});let Mn=wt({actionItems:Z,recentThreadItems:yn}),Nn=xt({activeGroups:k?k.groups:Mn,query:Fe,isInSubmenu:k!==null,projectSearchItems:gn,threadSearchItems:vn}),Pn=(0,A.useCallback)(async n=>{if(!V)return;let r=me(V);if(!r)return;if(se(n.trim(),Xt)){_.add(g({type:`error`,title:`Failed to add project`,description:`Windows-style paths are only supported on Windows.`}));return}if(d(n.trim())&&!K){_.add(g({type:`error`,title:`Failed to add project`,description:`Relative paths require an active project.`}));return}let o=c(n,K);if(o.length===0)return;let s=ee(w.filter(e=>e.environmentId===V),o);if(s){Ce.getState().setProjectExpanded(te(s,b),!0);let n=ct(T.filter(e=>e.environmentId===s.environmentId),s.id,b.sidebarThreadSortOrder);n?await e({to:`/$environmentId/$threadId`,params:je(a(n.environmentId,n.id))}):await C(i(s.environmentId,s.id),{envMode:b.defaultThreadEnvMode}).catch(()=>void 0),t(!1);return}try{let e=we();await r.orchestration.dispatchCommand({type:`project.create`,commandId:Te(),projectId:e,title:l(o),workspaceRoot:o,projectMetadataDir:`.ryco`,createWorkspaceRootIfMissing:!0,defaultModelSelection:{instanceId:Oe.make(`codex`),model:De},createdAt:new Date().toISOString()}),await C(i(V,e),{envMode:b.defaultThreadEnvMode}).catch(()=>void 0),t(!1)}catch(e){_.add(g({type:`error`,title:`Failed to add project`,description:e instanceof Error?e.message:`An error occurred.`}))}},[V,Xt,K,C,e,w,t,b,T]),Fn=(0,A.useCallback)(e=>en(e),[en]),Q=(0,A.useCallback)(e=>{let t=Fn(e.flow.environmentId);L({step:`confirm`,environmentId:e.flow.environmentId,source:e.flow.source,repositoryInput:e.repositoryInput,repository:e.repository,remoteUrl:e.remoteUrl}),y(null),h(t),j(e=>e+1)},[Fn]);async function In(e){if(!I)return;let t=me(I.environmentId);if(!t){_.add(g({type:`error`,title:`Unable to clone project`,description:`Environment API is not available.`}));return}if(I.step===`repository`){let e=m.trim();if(e.length===0||Dt)return;let n=It(I.source);if(!n){Q({flow:I,repositoryInput:e,repository:null,remoteUrl:e});return}let r=W.data?.repositories??[];if(Vt(e)&&U===e&&r.length===1){let e=r[0];Q({flow:I,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Bt(I.source,e)});return}Mt(!0);try{let r=await t.sourceControl.lookupRepository({provider:n,repository:e});Q({flow:I,repositoryInput:e,repository:r,remoteUrl:Bt(I.source,r)})}catch(e){_.add(g({type:`error`,title:`Repository lookup failed`,description:Gt(e)}))}finally{Mt(!1)}return}let n=(e??m).trim();if(n.length===0||Nt)return;if(se(n,Xt)){_.add(g({type:`error`,title:`Clone failed`,description:`Windows-style paths are only supported on Windows.`}));return}if(d(n)&&!K){_.add(g({type:`error`,title:`Clone failed`,description:`Relative paths require an active project.`}));return}let r=c(n,K);if(r.length!==0){Ht(!0);try{let e=It(I.source);await Pn((await t.sourceControl.cloneRepository({...e&&I.repository?{provider:e,repository:I.repository.nameWithOwner,remoteUrl:I.remoteUrl,...I.source===`bitbucket`?{protocol:`https`}:{}}:{remoteUrl:I.remoteUrl},destinationPath:r})).cwd)}catch(e){_.add(g({type:`error`,title:`Clone failed`,description:Gt(e)}))}finally{Ht(!1)}}}function Ln(e){let t=re(m,e);y(null),h(t),j(e=>e+1)}function Rn(e){let t=u(e);y(null),h(t),j(e=>e+1)}function zn(){let e=o(m);e!==null&&(y(null),h(e),j(e=>e+1))}let Bn=oe(m)?Y?.parentPath??m.trim():pn?.fullPath??m.trim(),Vn=St({browseEntries:fn,browseQuery:m,canBrowseUp:G&&!q&&s(J),upIcon:(0,F.jsx)(pt,{className:M}),directoryIcon:(0,F.jsx)(Ge,{className:M}),symlinkIcon:(0,F.jsx)(mt,{className:M}),browseUp:zn,browseTo:Ln,browseToPath:Rn}),Hn=(0,A.useMemo)(()=>Vn.map(e=>e.value===`directories`?{...e,label:`Select where to clone`}:e),[Vn]),Un=(0,A.useMemo)(()=>I?.step===`confirm`?{title:I.repository?.nameWithOwner??I.repositoryInput,description:I.repository?.url??I.remoteUrl,icon:R(I.source,M)}:null,[I]),Wn=(0,A.useMemo)(()=>{if(I?.step!==`repository`||I.source===`url`||H!==`bitbucket`)return[];let e=W.data?.repositories??[];return e.length>0?[{value:`remote-repositories:${I.environmentId}:${H}`,label:U.length>0?`Matching repositories`:`Available repositories`,items:e.map(e=>({kind:`action`,value:zt(e),searchTerms:[e.nameWithOwner,Rt(e.nameWithOwner),e.url,e.sshUrl],title:e.nameWithOwner,description:e.url,icon:R(I.source,M),keepOpen:!0,run:async()=>{Q({flow:I,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Bt(I.source,e)})}}))}]:W.isFetching?[{value:`remote-repositories:${I.environmentId}:${H}:loading`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:loading`,searchTerms:[`loading`,`repository`,`repo`],title:`Loading repositories`,description:`Reading available Bitbucket workspaces`,icon:R(I.source,M),disabled:!0,run:async()=>{}}]}]:W.error===null?[]:[{value:`remote-repositories:${I.environmentId}:${H}:error`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:error`,searchTerms:[`error`,`repository`,`repo`],title:`Unable to load repositories`,description:Gt(W.error),icon:R(I.source,M),disabled:!0,run:async()=>{}}]}]},[I,Q,H,U,W.data?.repositories,W.error,W.isFetching]),Gn=I?.step===`repository`&&I.source===`bitbucket`?U.length===0?`No repositories found. Enter workspace/repository manually.`:`No matching repositories. Enter workspace/repository manually.`:null,Kn=Nn;I?.step===`repository`?Kn=Wn:I?.step===`confirm`?Kn=q?[]:Hn:G&&(Kn=q?[]:Vn);let qn=Lt(I)??Tt($t),Jn=$t===`submenu`||$t===`submenu-browse`,$=v?.startsWith(`browse:`)??!1,Yn=G&&!q,Xn=Yn&&!un&&m.trim().length>0&&!$&&(oe(m)?!Y:pn===null),Zn=be(navigator.platform),Qn=Zn?`⌘`:`Ctrl`,$n=I?.step===`confirm`,er=$n?Xn?`Create & Clone`:`Clone`:Xn?`Create & Add`:`Add`,tr=$?`${Qn} Enter`:`Enter`,nr=I?I.source===`url`?`Continue`:`Lookup`:null,rr=Dt||Nt,ir=I?.step===`repository`&&m.trim().length>0&&!rr,ar=At(navigator.platform),or=G&&V!==null&&z!==null&&V===z&&typeof window<`u`&&window.desktopBridge!==void 0,sr=(0,A.useMemo)(()=>{if(!or)return;let e=m.trim();if(e.length===0)return;let t=c(oe(m)?Y?.parentPath??e:J||e,K);return t.length>0?t:void 0},[J,Y?.parentPath,or,K,m]);function cr(e){return Zn?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey}function lr(e){if(I?.step===`repository`&&e.key===`Enter`){e.preventDefault();let t=W.data?.repositories.find(e=>zt(e)===v);if(t){Q({flow:I,repositoryInput:t.nameWithOwner,repository:t,remoteUrl:Bt(I.source,t)});return}In();return}if(Yn&&e.key===`Enter`&&(!$||cr(e))){e.preventDefault(),$n?In(Bn):Pn(Bn);return}e.key===`Backspace`&&m===``&&Jn&&(e.preventDefault(),xn())}function ur(e){if(!e.disabled){if(e.kind===`submenu`){bn(e);return}e.keepOpen||t(!1),e.run().catch(e=>{_.add(g({type:`error`,title:`Unable to run command`,description:e instanceof Error?e.message:`An unexpected error occurred.`}))})}}let dr=(0,A.useCallback)(async()=>{if(!or||yt)return;let e=ce();if(!e)return;bt(!0);let t=null;try{t=await e.dialogs.pickFolder(sr?{initialPath:sr}:void 0)}catch{bt(!1);return}bt(!1),t&&await Pn(t)},[or,sr,Pn,yt]);return(0,F.jsx)(Ie,{"aria-label":`Command palette`,className:`project-glass-surface overflow-hidden p-0`,"data-testid":`command-palette`,surface:`glass`,finalFocus:()=>(Se?.current?.focusAtEnd(),!1),onBackdropPointerDown:()=>{t(!1)},children:(0,F.jsxs)(Je,{"aria-label":`Command palette`,autoHighlight:G||Zt?!1:`always`,mode:`none`,onItemHighlighted:e=>{y(typeof e==`string`?e:null)},onValueChange:Sn,value:m,children:[(0,F.jsxs)(`div`,{className:`relative`,children:[(0,F.jsx)(ze,{className:I?.step===`repository`?`pe-32`:G?Xn?`pe-36`:`pe-16`:void 0,placeholder:qn,wrapperClassName:Jn?`[&_[data-slot=autocomplete-start-addon]]:pointer-events-auto`:void 0,...Jn?{startAddon:(0,F.jsx)(`button`,{type:`button`,className:`flex cursor-pointer items-center`,"aria-label":`Back`,onClick:xn,children:(0,F.jsx)(Ze,{})})}:G&&!Jn?{startAddon:(0,F.jsx)(O,{})}:{},onKeyDown:lr}),I?.step===`repository`?(0,F.jsxs)(Ee,{variant:`outline`,size:`xs`,tabIndex:-1,className:`absolute inset-e-2.5 top-1/2 gap-1.5 pe-1 ps-2 -translate-y-1/2`,"aria-label":`${nr??`Continue`} (Enter)`,disabled:!ir,onMouseDown:e=>{e.preventDefault()},onClick:()=>{In()},title:`${nr??`Continue`} (Enter)`,children:[(0,F.jsx)(`span`,{children:rr?`Working`:nr}),(0,F.jsx)(E,{className:`pointer-events-none -me-0.5 items-center gap-1`,children:(0,F.jsx)(D,{children:`Enter`})})]}):G?(0,F.jsxs)(Ee,{variant:`outline`,size:`xs`,tabIndex:-1,className:p(`absolute inset-e-2.5 top-1/2 pe-1 ps-2 -translate-y-1/2`,$?`gap-1`:`gap-1.5`),"aria-label":`${er} (${tr})`,disabled:q||$n&&rr,onMouseDown:e=>{e.preventDefault()},onClick:()=>{q||($n?In(Bn):Pn(Bn))},title:`${er} (${tr})`,children:[(0,F.jsx)(`span`,{children:$n&&rr?`Cloning`:er}),(0,F.jsx)(E,{className:`pointer-events-none -me-0.5 items-center gap-1`,children:(0,F.jsx)(D,{children:$?`${Qn} Enter`:`Enter`})})]}):null]}),(0,F.jsxs)(Re,{className:`max-h-[min(28rem,70vh)] bg-transparent`,children:[Un?(0,F.jsxs)(`div`,{className:`p-2 pb-0`,children:[(0,F.jsx)(`div`,{className:`px-2 py-1.5 font-medium text-muted-foreground text-xs`,children:`Repository`}),(0,F.jsxs)(`div`,{className:`flex min-h-8 items-center gap-2 rounded-sm px-2 py-1.5`,children:[Un.icon,(0,F.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,F.jsx)(`span`,{className:`truncate text-foreground text-sm`,children:Un.title}),(0,F.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:Un.description})]})]})]}):null,(0,F.jsx)(Et,{groups:Kn,highlightedItemValue:v,isActionsOnly:Le,keybindings:Ue,onExecuteItem:ur,...I?.step===`repository`?{emptyStateMessage:I.source===`url`?`Enter a Git clone URL and press Enter to continue.`:Gn??`Enter a repository path and press Enter to look it up.`}:I?.step===`confirm`?{emptyStateMessage:`Choose a destination path and press Enter to clone.`}:q?{emptyStateMessage:`Relative paths require an active project.`}:Xn?{emptyStateMessage:`Press Enter to create this folder and add it as a project.`}:{}})]}),(0,F.jsxs)(We,{className:`gap-3 max-sm:flex-col max-sm:items-start`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,F.jsxs)(E,{className:`items-center gap-1.5`,children:[(0,F.jsx)(D,{children:(0,F.jsx)(Ye,{})}),(0,F.jsx)(D,{children:(0,F.jsx)(Xe,{})}),(0,F.jsx)(`span`,{className:p(`text-muted-foreground/80`),children:`Navigate`})]}),I?.step===`repository`?(0,F.jsxs)(E,{className:`items-center gap-1.5`,children:[(0,F.jsx)(D,{children:`Enter`}),(0,F.jsx)(`span`,{className:p(`text-muted-foreground/80`),children:nr??`Continue`})]}):!Yn||$?(0,F.jsxs)(E,{className:`items-center gap-1.5`,children:[(0,F.jsx)(D,{children:`Enter`}),(0,F.jsx)(`span`,{className:p(`text-muted-foreground/80`),children:`Select`})]}):null,Jn?(0,F.jsxs)(E,{className:`items-center gap-1.5`,children:[(0,F.jsx)(D,{children:`Backspace`}),(0,F.jsx)(`span`,{className:p(`text-muted-foreground/80`),children:`Back`})]}):null,(0,F.jsxs)(E,{className:`items-center gap-1.5`,children:[(0,F.jsx)(D,{children:`Esc`}),(0,F.jsx)(`span`,{className:p(`text-muted-foreground/80`),children:`Close`})]})]}),or?(0,F.jsx)(Ee,{variant:`ghost`,size:`xs`,className:`h-auto px-2 text-xs text-muted-foreground/80 hover:bg-transparent hover:text-foreground`,disabled:yt,onClick:()=>{dr()},children:`Open in ${ar}`}):null]})]},`${qe.length}-${dt}-${G}-${I?.step??`none`}`)})}export{z as CommandPaletteDialog};
|
|
@@ -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,7 +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,Ot as i,bn as a,fn as o,gn as s,gt as c,pn as l}from"./projectAtoms-DUEBb7Zz.js";import{A as u,Cr as d,H as f,M as p,Ni as m,R as h,Sr as g,V as _,br as v,k as y,q as b}from"./composerDraftStore-D12lUSfh.js";import{a as x,i as S}from"./toast-DE7a4wkW.js";import{ir as C}from"./providerIconUtils-uhWb4bdg.js";import{t as w}from"./keyboard-DDTWQkr0.js";import{t as T}from"./plus-4Oy56d-3.js";import{t as E}from"./triangle-alert-DJef_Uvh.js";import{t as D}from"./undo-2-DeZ2cMGS.js";import{t as O}from"./x-fI9snvD3.js";import{t as k}from"./shallow-Dmd-gez1.js";import{t as A}from"./input-B9-RWT56.js";import{n as j}from"./editorPreferences-BLeEBSD_.js";import{i as M,n as N,r as P}from"./settingsLayout-D22Mm0u3.js";var F=e(t(),1),I=n(),L={terminal:{id:`terminal`,label:`Terminal`,sortWeight:10},workspace:{id:`workspace`,label:`Workspace`,sortWeight:20},diff:{id:`diff`,label:`Diff`,sortWeight:30},commandPalette:{id:`commandPalette`,label:`Command palette`,sortWeight:40},chat:{id:`chat`,label:`Chat`,sortWeight:50},editor:{id:`editor`,label:`Editor`,sortWeight:60},modelPicker:{id:`modelPicker`,label:`Model picker`,sortWeight:70},thread:{id:`thread`,label:`Threads`,sortWeight:80},script:{id:`script`,label:`Project scripts`,sortWeight:90}},R={"terminal.toggle":{title:`Toggle terminal drawer`,sortWeight:1},"terminal.split":{title:`Split terminal`,sortWeight:2},"terminal.new":{title:`New terminal`,sortWeight:3},"terminal.close":{title:`Close terminal`,sortWeight:4},"workspace.files":{title:`Open workspace files`,sortWeight:1},"workspace.review":{title:`Open workspace review`,sortWeight:2},"workspace.terminal":{title:`Open workspace terminal`,sortWeight:3},"diff.toggle":{title:`Toggle diff view`,sortWeight:1},"commandPalette.toggle":{title:`Open command palette`,sortWeight:1},"chat.new":{title:`New chat`,sortWeight:1},"chat.newLocal":{title:`New chat (local environment)`,sortWeight:2},"editor.openFavorite":{title:`Open in preferred editor`,sortWeight:1},"modelPicker.toggle":{title:`Toggle model picker`,sortWeight:1},"modelPicker.jump.1":{title:`Pick model 1`,sortWeight:2},"modelPicker.jump.2":{title:`Pick model 2`,sortWeight:3},"modelPicker.jump.3":{title:`Pick model 3`,sortWeight:4},"modelPicker.jump.4":{title:`Pick model 4`,sortWeight:5},"modelPicker.jump.5":{title:`Pick model 5`,sortWeight:6},"modelPicker.jump.6":{title:`Pick model 6`,sortWeight:7},"modelPicker.jump.7":{title:`Pick model 7`,sortWeight:8},"modelPicker.jump.8":{title:`Pick model 8`,sortWeight:9},"modelPicker.jump.9":{title:`Pick model 9`,sortWeight:10},"thread.previous":{title:`Previous thread`,sortWeight:1},"thread.next":{title:`Next thread`,sortWeight:2},"thread.jump.1":{title:`Jump to thread 1`,sortWeight:3},"thread.jump.2":{title:`Jump to thread 2`,sortWeight:4},"thread.jump.3":{title:`Jump to thread 3`,sortWeight:5},"thread.jump.4":{title:`Jump to thread 4`,sortWeight:6},"thread.jump.5":{title:`Jump to thread 5`,sortWeight:7},"thread.jump.6":{title:`Jump to thread 6`,sortWeight:8},"thread.jump.7":{title:`Jump to thread 7`,sortWeight:9},"thread.jump.8":{title:`Jump to thread 8`,sortWeight:10},"thread.jump.9":{title:`Jump to thread 9`,sortWeight:11}};function z(e){let t=e.indexOf(`.`),n=t===-1?e:e.slice(0,t);return n===`script`?L.script:L[n]??L.script}function B(e,t){let n=z(e),r=R[e];if(r)return{category:n,title:r.title,sortWeight:r.sortWeight};let i=e.match(/^script\.([a-z0-9][a-z0-9-]*)\.run$/)?.[1]??e;return{category:n,title:t??`Run: ${i}`,sortWeight:100}}var V=[{id:`always`,label:`Always`,value:void 0},{id:`terminalFocus`,label:`Terminal focused`,value:`terminalFocus`},{id:`notTerminalFocus`,label:`Not in terminal`,value:`!terminalFocus`},{id:`terminalOpen`,label:`Terminal open`,value:`terminalOpen`},{id:`notTerminalOpen`,label:`Terminal not open`,value:`!terminalOpen`},{id:`modelPickerOpen`,label:`Model picker open`,value:`modelPickerOpen`},{id:`commandPaletteOpen`,label:`Command palette open`,value:`commandPaletteOpen`},{id:`composerFocus`,label:`Composer focused`,value:`composerFocus`},{id:`notComposerFocus`,label:`Not in composer`,value:`!composerFocus`}],H=new Map(V.map(e=>[e.value,e])),U=new Map(V.map(e=>[e.value===void 0?void 0:e.value.replace(/\s+/g,``),e]));function W(e){return e===void 0?H.get(void 0):H.get(e)||U.get(e.replace(/\s+/g,``))}function G(e){let t=W(e);return t?t.label:e??`Always`}function K(e){if(e)switch(e.type){case`identifier`:return e.name;case`not`:return`!${K(e.node)}`;case`and`:return`(${K(e.left)} && ${K(e.right)})`;case`or`:return`(${K(e.left)} || ${K(e.right)})`}}function ee(e,t){return(e===void 0?``:e.replace(/\s+/g,``))===(t===void 0?``:t.replace(/\s+/g,``))}function te(e,t){let n=e[t];if(!n)return[];let r=[];return e.forEach((e,i)=>{i!==t&&e.command!==n.command&&e.key===n.key&&ee(e.when,n.when)&&r.push({key:n.key,otherCommand:e.command,otherWhen:e.when})}),r}function ne(e){let t=new Map;return e.forEach((n,r)=>{let i=te(e,r);if(i.length===0)return;let a=e[r].command,o=t.get(a)??[];o.push(...i),t.set(a,o)}),t}function q(e){return/mac|iphone|ipad|ipod/i.test(e)}var J=new Set([`control`,`shift`,`alt`,`altgraph`,`meta`,`os`,`hyper`,`super`,`fn`,`capslock`,`numlock`,`scrolllock`]),re=new Set([`escape`,`tab`,`enter`]);function ie(e,t){let n=e.toLowerCase();if(n===` `||n===`spacebar`)return`space`;if(n===`esc`)return`escape`;if(n===`arrowup`)return`up`;if(n===`arrowdown`)return`down`;if(n===`arrowleft`)return`left`;if(n===`arrowright`)return`right`;if(t){let e=t.match(/^Digit(\d)$/);if(e)return e[1];if(t===`BracketLeft`)return`[`;if(t===`BracketRight`)return`]`}return n}function Y(e,t){let n=e.key.toLowerCase();if(J.has(n))return null;let r=q(t?.platform??(typeof navigator<`u`?navigator.platform:``)),i=r?e.metaKey:e.ctrlKey;if(!(i||e.shiftKey||e.altKey||(r?e.ctrlKey:e.metaKey))&&re.has(n))return null;let a=ie(e.key,e.code);return a.length===0?null:{key:a,modKey:i,metaKey:!r&&e.metaKey,ctrlKey:r&&e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey}}var ae={mod:`⌘`,meta:`⌘`,cmd:`⌘`,ctrl:`⌃`,control:`⌃`,shift:`⇧`,alt:`⌥`,option:`⌥`},oe={mod:`Ctrl`,meta:`Meta`,cmd:`Meta`,ctrl:`Ctrl`,control:`Ctrl`,shift:`Shift`,alt:`Alt`,option:`Alt`},se={space:`Space`,enter:`Enter`,escape:`Esc`,up:`↑`,down:`↓`,left:`←`,right:`→`,tab:`Tab`,backspace:`⌫`,delete:`Del`};function ce(e,t){let n=q(t?.platform??(typeof navigator<`u`?navigator.platform:``))?ae:oe,r=[];e.modKey&&r.push(n.mod),e.metaKey&&r.push(n.meta),e.ctrlKey&&r.push(n.ctrl),e.altKey&&r.push(n.alt),e.shiftKey&&r.push(n.shift);let i=se[e.key]??(e.key.length===1?e.key.toUpperCase():e.key);return r.push(i),r}function le(e){let t=[];e.modKey&&t.push(`mod`),e.metaKey&&t.push(`meta`),e.ctrlKey&&t.push(`ctrl`),e.altKey&&t.push(`alt`),e.shiftKey&&t.push(`shift`);let n=e.key===` `?`space`:e.key;return t.push(n),t.join(`+`)}var X=m(),ue=[],de=(()=>{let e=new Map;for(let t of a){let n=`${t.key}|${t.when??``}`,r=e.get(t.command)??new Set;r.add(n),e.set(t.command,r)}return e})(),Z=new Set(a.map(e=>e.command));function Q(e,t){return`${e.command}|${e.key}|${e.when??``}|${t}`}function fe(e){return{key:le(e.shortcut),command:e.command,when:K(e.whenAst)}}function $(e){return e.map((e,t)=>({...fe(e),__id:Q(e,t)}))}function pe(e){return e.map(({__id:e,...t})=>t)}function me(e){return a.filter(t=>t.command===e).map(e=>Object.assign({},e))}function he(e,t){if(!Z.has(e))return`custom`;let n=de.get(e);if(!n)return`custom`;if(t.length!==n.size)return`modified`;for(let e of t){let t=`${e.key}|${e.when??``}`;if(!n.has(t))return`modified`}return`default`}function ge(e,t,n){return n?[t.toLowerCase(),e.command.toLowerCase(),e.key.toLowerCase(),G(e.when).toLowerCase()].some(e=>e.includes(n)):!0}function _e(){return Math.random().toString(36).slice(2)}function ve(){let e=l(),t=s(),n=o(),a=typeof navigator<`u`?navigator.platform:``,u=d(a),[f,p]=(0,F.useState)(!1),[m,h]=(0,F.useState)(null),g=(0,F.useCallback)(()=>{if(!t)return;h(null),p(!0);let e=j(n??[]);if(!e){h(`No available editors found.`),p(!1);return}r().shell.openInEditor(t,e).catch(e=>{h(e instanceof Error?e.message:`Unable to open keybindings file.`)}).finally(()=>{p(!1)})},[n,t]),_=i(k(c)),y=(0,F.useMemo)(()=>{let e=new Set,t=new Map;for(let n of _)for(let r of n.scripts){let n=`script.${r.id}.run`;e.add(n),t.has(n)||t.set(n,`Run: ${r.name}`)}return{commandList:Array.from(e),titles:t}},[_]),b=e?.keybindings??ue,[T,O]=(0,F.useState)(()=>$(b)),[I,R]=(0,F.useState)(()=>JSON.stringify(pe($(b)))),z=(0,F.useRef)(!1);(0,F.useEffect)(()=>{let e=JSON.stringify(pe($(b)));e!==I&&(R(e),z.current||O($(b)))},[b,I]);let V=(0,F.useCallback)(async e=>{z.current=!0;try{await r().keybindings.replaceCustom({rules:pe(e)})}catch(e){S.add(x({type:`error`,title:`Could not save keybindings`,description:e instanceof Error?e.message:`An unknown error occurred.`})),O($(b))}finally{z.current=!1}},[b]),H=(0,F.useCallback)((e,t)=>{O(n=>{let r=n.slice(),i=r[e];if(!i)return n;let a=le(t);return a===i.key?n:(r[e]={...i,key:a,__id:i.__id},V(r),r)})},[V]),U=(0,F.useCallback)(e=>{O(t=>{let n={command:e,key:``,when:void 0,__id:`placeholder-${_e()}`},r=(()=>{let n=-1;return t.forEach((t,r)=>{t.command===e&&(n=r)}),n})();return r===-1?[...t,n]:[...t.slice(0,r+1),n,...t.slice(r+1)]})},[]),W=(0,F.useCallback)(e=>{O(t=>{let n=t.slice();return n.splice(e,1),V(n),n})},[V]),G=(0,F.useCallback)((e,t)=>{O(n=>{let r=n.slice(),i=r[e];return!i||(i.when??void 0)===t?n:(r[e]={...i,when:t,__id:i.__id},V(r),r)})},[V]),K=(0,F.useCallback)(e=>{O(t=>{let n=t[e];if(!n)return t;let r=n.command;if(!Z.has(r)){let n=t.slice();return n.splice(e,1),V(n),n}let i=me(r),a=t.filter(e=>e.command!==r);for(let e of i)a.push({...e,__id:`default-${r}-${_e()}`});return V(a),a})},[V]),ee=(0,F.useCallback)(e=>{O(t=>{let n=t.filter(t=>t.command!==e);if(Z.has(e))for(let t of me(e))n.push({...t,__id:`default-${e}-${_e()}`});return V(n),n})},[V]),te=(0,F.useCallback)(async()=>{O([]);try{await r().keybindings.replaceCustom({rules:[]})}catch(e){S.add(x({type:`error`,title:`Could not restore default keybindings`,description:e instanceof Error?e.message:`An unknown error occurred.`})),O($(b))}},[b]),q=(0,F.useRef)(new Map),J=(0,F.useCallback)(e=>{let t=q.current.get(e);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.dataset.flash=`true`,window.setTimeout(()=>{delete t.dataset.flash},1100))},[]),[re,ie]=(0,F.useState)(``),Y=(0,F.useDeferredValue)(re.trim().toLowerCase()),ae=(0,F.useMemo)(()=>ne(T),[T]),oe=(0,F.useMemo)(()=>{let e=new Map;T.forEach((t,n)=>{let r=e.get(t.command);r?r.push(n):e.set(t.command,[n])});let t=new Set([...e.keys(),...Z,...y.commandList]),n=new Map;for(let r of t){let t=e.get(r)??[],i=t.map(e=>T[e]).filter(Boolean),a=B(r,y.titles.get(r)),o=he(r,i),s={key:``,command:r,when:void 0};if(!(Y.length===0||ge(s,a.title,Y)||i.some(e=>ge(e,a.title,Y))))continue;let c={command:r,title:a.title,indicesInDraft:t,status:o},l=n.get(a.category.id);l?l.push(c):n.set(a.category.id,[c])}let r=[];for(let e of Object.values(L).toSorted((e,t)=>e.sortWeight-t.sortWeight)){let t=n.get(e.id);!t||t.length===0||(t.sort((e,t)=>{let n=B(e.command,y.titles.get(e.command)),r=B(t.command,y.titles.get(t.command));return n.sortWeight-r.sortWeight}),r.push({category:e,rows:t}))}return r},[T,Y,y]),se=oe.reduce((e,t)=>e+t.rows.length,0),ce=(0,F.useMemo)(()=>({platform:a,draft:T,conflictsByCommand:ae,onRebind:H,onAddBinding:U,onRemoveBinding:W,onChangeWhen:G,onResetBinding:K,onResetCommand:ee,scrollToCommand:J,rowRefs:q}),[a,T,ae,H,U,W,G,K,ee,J]),de=e?.issues.filter(e=>e.kind.startsWith(`keybindings.`))??[],Q=(n??[]).length>0;return(0,X.jsxs)(N,{children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,X.jsx)(`span`,{className:`grid size-9 place-items-center rounded-lg bg-accent text-foreground/70`,children:(0,X.jsx)(w,{className:`size-4`})}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h1`,{className:`text-lg font-semibold tracking-tight`,children:`Keybindings`}),(0,X.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Click any shortcut and press a new combination to rebind. Press Esc to cancel, Backspace to clear.`})]})]}),(0,X.jsxs)(v,{variant:`outline`,size:`xs`,onClick:()=>void te(),disabled:T.length===0,children:[(0,X.jsx)(D,{className:`size-3.5`}),`Restore defaults`]})]}),(0,X.jsx)(M,{title:`Configuration file`,children:(0,X.jsx)(P,{title:`Keybindings file`,description:"Open the persisted `keybindings.json` file to edit advanced bindings directly.",status:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`span`,{className:`block break-all font-mono text-[11px] text-foreground`,children:t??`Resolving keybindings path...`}),m?(0,X.jsx)(`span`,{className:`mt-1 block text-destructive`,children:m}):(0,X.jsx)(`span`,{className:`mt-1 block`,children:Q?`Opens in your preferred editor.`:`No available editors found.`})]}),control:(0,X.jsx)(v,{size:`xs`,variant:`outline`,disabled:!t||!Q||f,onClick:g,children:f?`Opening...`:`Open file`})})}),de.length>0?(0,X.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-200`,children:[(0,X.jsx)(E,{className:`mt-0.5 size-4 shrink-0`}),(0,X.jsxs)(`div`,{className:`flex-1 space-y-0.5`,children:[de.map(e=>(0,X.jsx)(`p`,{children:e.message},`${e.kind}-${e.message}`)),t?(0,X.jsxs)(`p`,{className:`opacity-70`,children:[`Edit `,(0,X.jsx)(`code`,{className:`rounded bg-amber-500/20 px-1`,children:t}),` `,`to resolve.`]}):null]})]}):null,(0,X.jsxs)(`div`,{className:`relative`,children:[(0,X.jsx)(C,{className:`absolute left-3 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground/60`}),(0,X.jsx)(A,{type:`search`,placeholder:`Search by command, shortcut, or when…`,className:`pl-9`,value:re,onChange:e=>ie(e.target.value)})]}),se===0?(0,X.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/60 px-6 py-12 text-center text-sm text-muted-foreground`,children:`No commands match your search.`}):oe.map(e=>(0,X.jsx)(M,{title:e.category.label,children:e.rows.map(e=>(0,X.jsx)(ye,{row:e,context:ce,isMac:u,scriptTitle:y.titles.get(e.command)},e.command))},e.category.id))]})}var ye=(0,F.memo)(function(e){let t=(0,I.c)(42),{row:n,context:r,isMac:i}=e,a;if(t[0]!==r||t[1]!==i||t[2]!==n.command||t[3]!==n.indicesInDraft||t[4]!==n.status||t[5]!==n.title){let e;t[7]===r.draft?e=t[8]:(e=e=>({index:e,rule:r.draft[e]}),t[7]=r.draft,t[8]=e);let o=n.indicesInDraft.map(e),s=r.conflictsByCommand.get(n.command)??[],c=s.slice(0,3),l=n.command,d;t[9]!==r.rowRefs.current||t[10]!==n.command?(d=e=>{r.rowRefs.current.set(n.command,e)},t[9]=r.rowRefs.current,t[10]=n.command,t[11]=d):d=t[11];let f;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(f=g(`group flex flex-col gap-2 border-t border-border/60 px-4 py-3 first:border-t-0 transition-colors data-[flash=true]:bg-amber-500/10 sm:px-5`),t[12]=f):f=t[12];let m;t[13]===n.title?m=t[14]:(m=(0,X.jsx)(`span`,{className:`truncate text-[13px] font-medium tracking-tight text-foreground`,children:n.title}),t[13]=n.title,t[14]=m);let h;t[15]===n.status?h=t[16]:(h=(0,X.jsx)(be,{status:n.status}),t[15]=n.status,t[16]=h);let _;t[17]!==m||t[18]!==h?(_=(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[m,h]}),t[17]=m,t[18]=h,t[19]=_):_=t[19];let v;t[20]===n.command?v=t[21]:(v=(0,X.jsx)(`code`,{className:`block truncate text-[10px] text-muted-foreground/60`,children:n.command}),t[20]=n.command,t[21]=v);let b;t[22]!==_||t[23]!==v?(b=(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[_,v]}),t[22]=_,t[23]=v,t[24]=b):b=t[24];let x=o.length===0?(0,X.jsx)(Se,{draftIndex:-1,rule:{command:n.command,key:``,when:void 0},context:r,isMac:i,isPrimary:!0,isPlaceholder:!0,onAddPlaceholder:()=>r.onAddBinding(n.command)},`placeholder`):o.map((e,t)=>{let{index:n,rule:a}=e;return(0,X.jsx)(Se,{draftIndex:n,rule:a,context:r,isMac:i,isPrimary:t===0,isPlaceholder:a.key.length===0},`${n}-${a.__id}`)}),S;t[25]!==r||t[26]!==n.command||t[27]!==n.title||t[28]!==o?(S=o.length>0?(0,X.jsxs)(y,{children:[(0,X.jsx)(p,{render:(0,X.jsx)(`button`,{type:`button`,onClick:()=>r.onAddBinding(n.command),className:`inline-flex size-6 items-center justify-center rounded-md border border-dashed border-border/60 text-muted-foreground/60 transition-colors hover:border-border hover:text-foreground`,"aria-label":`Add another shortcut for ${n.title}`,children:(0,X.jsx)(T,{className:`size-3.5`})})}),(0,X.jsx)(u,{side:`top`,children:`Add another shortcut`})]}):null,t[25]=r,t[26]=n.command,t[27]=n.title,t[28]=o,t[29]=S):S=t[29];let C;t[30]!==r||t[31]!==n.command||t[32]!==n.status||t[33]!==n.title?(C=n.status!=="default"&&Z.has(n.command)?(0,X.jsxs)(y,{children:[(0,X.jsx)(p,{render:(0,X.jsx)(`button`,{type:`button`,onClick:()=>r.onResetCommand(n.command),className:`inline-flex size-6 items-center justify-center rounded-md text-muted-foreground/50 transition-colors hover:text-foreground`,"aria-label":`Reset ${n.title} to default`,children:(0,X.jsx)(D,{className:`size-3.5`})})}),(0,X.jsx)(u,{side:`top`,children:`Reset to default`})]}):null,t[30]=r,t[31]=n.command,t[32]=n.status,t[33]=n.title,t[34]=C):C=t[34];let w;t[35]!==x||t[36]!==S||t[37]!==C?(w=(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1.5`,children:[x,S,C]}),t[35]=x,t[36]=S,t[37]=C,t[38]=w):w=t[38];let E;t[39]!==b||t[40]!==w?(E=(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[b,w]}),t[39]=b,t[40]=w,t[41]=E):E=t[41],a=(0,X.jsxs)(`div`,{"data-keybinding-command":l,ref:d,className:f,children:[E,c.length>0?(0,X.jsxs)(`div`,{className:`animate-in fade-in slide-in-from-top-1 flex flex-col gap-1 rounded-md border border-destructive/30 bg-destructive/10 px-2.5 py-1.5 text-[11px] text-destructive-foreground/90`,children:[c.map(e=>(0,X.jsx)(xe,{conflict:e,isMac:i,platform:r.platform,onSelect:()=>r.scrollToCommand(e.otherCommand)},`${e.key}-${e.otherCommand}`)),s.length>c.length?(0,X.jsxs)(`span`,{className:`opacity-70`,children:[`+ `,s.length-c.length,` more`]}):null]}):null]}),t[0]=r,t[1]=i,t[2]=n.command,t[3]=n.indicesInDraft,t[4]=n.status,t[5]=n.title,t[6]=a}else a=t[6];return a});function be(e){let t=(0,I.c)(5),{status:n}=e;if(n==="default")return null;let r=n===`modified`?`bg-amber-500/15 text-amber-300`:`bg-indigo-500/15 text-indigo-300`,i;t[0]===r?i=t[1]:(i=g(`rounded px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-[0.06em]`,r),t[0]=r,t[1]=i);let a=n===`modified`?`Modified`:`Custom`,o;return t[2]!==i||t[3]!==a?(o=(0,X.jsx)(`span`,{className:i,children:a}),t[2]=i,t[3]=a,t[4]=o):o=t[4],o}function xe(e){let t=(0,I.c)(27),{conflict:n,platform:r,isMac:i,onSelect:a}=e,o;t[0]===n.otherCommand?o=t[1]:(o=B(n.otherCommand),t[0]=n.otherCommand,t[1]=o);let s=o,c,l,u,d;if(t[2]!==n.key||t[3]!==i||t[4]!==r){let e=ke(n.key),a=e?ce(e,{platform:r}):[n.key];u=`flex flex-wrap items-center gap-1.5`,t[9]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,X.jsx)(E,{className:`size-3 shrink-0 text-destructive`}),t[9]=d):d=t[9],c=`inline-flex items-center gap-0.5 font-mono`;let o;t[10]===i?o=t[11]:(o=e=>(0,X.jsx)(Te,{token:e,isMac:i},e),t[10]=i,t[11]=o),l=a.map(o),t[2]=n.key,t[3]=i,t[4]=r,t[5]=c,t[6]=l,t[7]=u,t[8]=d}else c=t[5],l=t[6],u=t[7],d=t[8];let f;t[12]!==c||t[13]!==l?(f=(0,X.jsx)(`span`,{className:c,children:l}),t[12]=c,t[13]=l,t[14]=f):f=t[14];let p;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,X.jsx)(`span`,{children:`also bound to`}),t[15]=p):p=t[15];let m;t[16]!==s.title||t[17]!==a?(m=(0,X.jsx)(`button`,{type:`button`,onClick:a,className:`rounded bg-destructive/20 px-1.5 py-0.5 font-medium text-destructive-foreground hover:bg-destructive/30`,children:s.title}),t[16]=s.title,t[17]=a,t[18]=m):m=t[18];let h;t[19]===n.otherWhen?h=t[20]:(h=n.otherWhen===void 0?null:(0,X.jsxs)(`span`,{className:`opacity-70`,children:[`when `,(0,X.jsx)(`code`,{className:`font-mono`,children:G(n.otherWhen)})]}),t[19]=n.otherWhen,t[20]=h);let g;return t[21]!==u||t[22]!==d||t[23]!==f||t[24]!==m||t[25]!==h?(g=(0,X.jsxs)(`div`,{className:u,children:[d,f,p,m,h]}),t[21]=u,t[22]=d,t[23]=f,t[24]=m,t[25]=h,t[26]=g):g=t[26],g}function Se(e){let t=(0,I.c)(59),{draftIndex:n,rule:r,context:i,isMac:a,isPlaceholder:o,onAddPlaceholder:s}=e,[c,l]=(0,F.useState)(!1),[u,d]=(0,F.useState)(!1),f=(0,F.useRef)(null),p;bb0:{if(r.key.length===0){p=null;break bb0}let e;t[0]===r.key?e=t[1]:(e=ke(r.key),t[0]=r.key,t[1]=e),p=e}let m=p,h=m?ce(m,{platform:i.platform}):[],_;t[2]!==n||t[3]!==o||t[4]!==s?(_=()=>{if(o&&n===-1&&s){s(),setTimeout(Ce,50);return}l(!0)},t[2]=n,t[3]=o,t[4]=s,t[5]=_):_=t[5];let v=_,y,b;t[6]!==i||t[7]!==n||t[8]!==c?(y=()=>{if(!c)return;let e=e=>{if(e.preventDefault(),e.stopPropagation(),e.key===`Escape`&&!Oe(e)){l(!1);return}if(e.key===`Tab`&&!Oe(e)){l(!1);return}if(e.key===`Backspace`&&!Oe(e)){n>=0&&i.onRemoveBinding(n),l(!1);return}let t=Y(e,{platform:i.platform});t&&(n>=0&&i.onRebind(n,t),d(!0),l(!1),setTimeout(()=>d(!1),220))};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},b=[c,n,i],t[6]=i,t[7]=n,t[8]=c,t[9]=y,t[10]=b):(y=t[9],b=t[10]),(0,F.useEffect)(y,b);let x,S;t[11]===c?(x=t[12],S=t[13]):(x=()=>{c&&f.current?.focus()},S=[c],t[11]=c,t[12]=x,t[13]=S),(0,F.useEffect)(x,S);let C;t[14]!==c||t[15]!==v?(C=e=>{c||(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v())},t[14]=c,t[15]=v,t[16]=C):C=t[16];let w=C,E;t[17]!==i||t[18]!==n?(E=()=>{n>=0&&i.onRemoveBinding(n)},t[17]=i,t[18]=n,t[19]=E):E=t[19];let D=E;if(o&&n===-1&&h.length===0){let e;t[20]===s?e=t[21]:(e=()=>s?.(),t[20]=s,t[21]=e);let n;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,X.jsx)(T,{className:`size-3`}),t[22]=n):n=t[22];let r;return t[23]!==w||t[24]!==e?(r=(0,X.jsxs)(`button`,{ref:f,type:`button`,onClick:e,onKeyDown:w,className:`inline-flex h-6 items-center gap-1 rounded-md border border-dashed border-border/60 bg-transparent px-2 text-[11px] text-muted-foreground/70 transition-colors hover:border-border hover:text-foreground`,children:[n,` No shortcut — click to set`]}),t[23]=w,t[24]=e,t[25]=r):r=t[25],r}let k=`Edit shortcut for ${r.command}`,A=h.length===0&&n>=0?`true`:void 0,j=c?`kb-chip-recording border-indigo-500/60 bg-indigo-500/15 text-indigo-100 shadow-[0_0_0_4px_rgba(99,102,241,0.18)]`:u?`border-emerald-500/50 bg-emerald-500/15 text-emerald-100`:`border-border bg-muted/60 text-foreground hover:bg-muted`,M;t[26]===j?M=t[27]:(M=g(`inline-flex h-6 items-center gap-1 rounded-md border px-2 font-mono text-[11px] transition-all duration-150`,j),t[26]=j,t[27]=M);let N;t[28]===c?N=t[29]:(N=c?{animation:`keybindings-pulse 1.4s ease-in-out infinite`}:{},t[28]=c,t[29]=N);let P=c?(0,X.jsx)(`span`,{className:`text-[11px] tracking-[0.04em]`,children:`Press shortcut…`}):h.length===0?(0,X.jsx)(`span`,{className:`text-muted-foreground/60`,children:`Click to set`}):h.map(e=>(0,X.jsx)(Te,{token:e,isMac:a},e)),L;t[30]!==c||t[31]!==r.when?(L=!c&&r.when!==void 0?(0,X.jsx)(`span`,{className:`ml-1 hidden sm:inline`,children:`·`}):null,t[30]=c,t[31]=r.when,t[32]=L):L=t[32];let R;t[33]!==c||t[34]!==w||t[35]!==v||t[36]!==k||t[37]!==A||t[38]!==M||t[39]!==N||t[40]!==P||t[41]!==L?(R=(0,X.jsxs)(`button`,{ref:f,type:`button`,"aria-pressed":c,"aria-label":k,"data-chip-pending-record":A,onClick:v,onKeyDown:w,className:M,style:N,children:[P,L]}),t[33]=c,t[34]=w,t[35]=v,t[36]=k,t[37]=A,t[38]=M,t[39]=N,t[40]=P,t[41]=L,t[42]=R):R=t[42];let z;t[43]!==i||t[44]!==n?(z=e=>i.onChangeWhen(n,e),t[43]=i,t[44]=n,t[45]=z):z=t[45];let B=n<0||c,V;t[46]!==r.when||t[47]!==z||t[48]!==B?(V=(0,X.jsx)(Ee,{currentWhen:r.when,onChange:z,disabled:B}),t[46]=r.when,t[47]=z,t[48]=B,t[49]=V):V=t[49];let H;t[50]!==n||t[51]!==D||t[52]!==c?(H=n>=0&&!c?(0,X.jsx)(`button`,{type:`button`,onClick:D,"aria-label":`Remove this shortcut`,className:`opacity-0 transition-opacity group-hover:opacity-100 focus:opacity-100`,children:(0,X.jsx)(O,{className:`size-3 text-muted-foreground/60 hover:text-destructive`})}):null,t[50]=n,t[51]=D,t[52]=c,t[53]=H):H=t[53];let U;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,X.jsx)(De,{}),t[54]=U):U=t[54];let W;return t[55]!==R||t[56]!==V||t[57]!==H?(W=(0,X.jsxs)(`span`,{className:`relative inline-flex items-center gap-1`,children:[R,V,H,U]}),t[55]=R,t[56]=V,t[57]=H,t[58]=W):W=t[58],W}function Ce(){document.querySelectorAll(`[data-chip-pending-record="true"]`).forEach(we)}function we(e){e.click()}function Te(e){let t=(0,I.c)(5),{token:n,isMac:r}=e,i=r&&n.length===1&&/[⌀-⏿←-⇿]/.test(n)?`bg-transparent`:`bg-foreground/10`,a;t[0]===i?a=t[1]:(a=g(`rounded px-1 leading-none`,i),t[0]=i,t[1]=a);let o;return t[2]!==a||t[3]!==n?(o=(0,X.jsx)(`span`,{className:a,children:n}),t[2]=a,t[3]=n,t[4]=o):o=t[4],o}function Ee(e){let t=(0,I.c)(35),{currentWhen:n,onChange:r,disabled:i}=e,a;t[0]===n?a=t[1]:(a=W(n),t[0]=n,t[1]=a);let o=a,s,c,l,u,d,p,m;if(t[2]!==n||t[3]!==i){let e=G(n);c=h,s=b,l=`button`,u=i;let r=n===void 0&&`italic opacity-70`;t[11]===r?d=t[12]:(d=g(`inline-flex h-5 items-center gap-1 rounded bg-muted/40 px-1.5 text-[10px] text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50`,r),t[11]=r,t[12]=d),p=`When: ${e}`,m=n===void 0?`always`:e.toLowerCase(),t[2]=n,t[3]=i,t[4]=s,t[5]=c,t[6]=l,t[7]=u,t[8]=d,t[9]=p,t[10]=m}else s=t[4],c=t[5],l=t[6],u=t[7],d=t[8],p=t[9],m=t[10];let v;t[13]!==l||t[14]!==u||t[15]!==d||t[16]!==p||t[17]!==m?(v=(0,X.jsx)(`button`,{type:l,disabled:u,className:d,"aria-label":p,children:m}),t[13]=l,t[14]=u,t[15]=d,t[16]=p,t[17]=m,t[18]=v):v=t[18];let y;t[19]!==s||t[20]!==v?(y=(0,X.jsx)(s,{render:v}),t[19]=s,t[20]=v,t[21]=y):y=t[21];let x;t[22]!==n||t[23]!==o?(x=!o&&n!==void 0?(0,X.jsxs)(`div`,{className:`px-2 py-1.5 text-[10px] text-muted-foreground`,children:[`Current: `,(0,X.jsx)(`code`,{className:`font-mono`,children:n})]}):null,t[22]=n,t[23]=o,t[24]=x):x=t[24];let S;t[25]!==n||t[26]!==r?(S=V.map(e=>(0,X.jsxs)(_,{onClick:()=>r(e.value),className:g(`flex items-center justify-between text-[12px]`,e.value===n&&`font-semibold text-foreground`),children:[(0,X.jsx)(`span`,{children:e.label}),e.value===void 0?(0,X.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60`,children:`no condition`}):(0,X.jsx)(`code`,{className:`text-[10px] font-mono text-muted-foreground/60`,children:e.value})]},e.id)),t[25]=n,t[26]=r,t[27]=S):S=t[27];let C;t[28]!==S||t[29]!==x?(C=(0,X.jsxs)(f,{side:`bottom`,align:`end`,className:`min-w-[220px]`,children:[x,S]}),t[28]=S,t[29]=x,t[30]=C):C=t[30];let w;return t[31]!==c||t[32]!==C||t[33]!==y?(w=(0,X.jsxs)(c,{children:[y,C]}),t[31]=c,t[32]=C,t[33]=y,t[34]=w):w=t[34],w}function De(){let e=(0,I.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,X.jsx)(`style`,{children:`@keyframes keybindings-pulse {
|
|
2
|
-
0%, 100% { box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.15); }
|
|
3
|
-
50% { box-shadow: 0 0 0 8px rgba(99, 102, 241, 0.30); }
|
|
4
|
-
}
|
|
5
|
-
@media (prefers-reduced-motion: reduce) {
|
|
6
|
-
.kb-chip-recording { animation: none !important; }
|
|
7
|
-
}`}),e[0]=t):t=e[0],t}function Oe(e){return e.metaKey||e.ctrlKey||e.altKey||e.shiftKey}function ke(e){let t=e.toLowerCase().split(`+`),n=null,r=!1,i=!1,a=!1,o=!1,s=!1;for(let e of t)switch(e){case`cmd`:case`meta`:r=!0;break;case`ctrl`:case`control`:i=!0;break;case`alt`:case`option`:a=!0;break;case`shift`:o=!0;break;case`mod`:s=!0;break;default:if(n!==null)return null;n=e===`space`?` `:e;break}return n===null?null:{key:n,metaKey:r,ctrlKey:i,altKey:a,shiftKey:o,modKey:s}}export{ve as KeybindingsSettingsPanel};
|
|
@@ -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{Jt as r,cn as i,sn as a}from"./projectAtoms-DUEBb7Zz.js";import{A as o,M as s,Ni as c,Sr as l,br as u,k as d}from"./composerDraftStore-D12lUSfh.js";import{a as f,h as p,i as m,m as h}from"./toast-DE7a4wkW.js";import{G as g,H as _,Tr as v,U as y,W as ee,_ as b,lr as x,yr as te,z as ne}from"./providerIconUtils-uhWb4bdg.js";import{t as S}from"./download-DLBlpp4h.js";import{t as re}from"./refresh-cw-DkBMGllm.js";import{n as ie,t as ae}from"./tokenModePresentation-BSYdIvBm.js";import{i as oe,n as se,r as ce}from"./settingsLayout-D22Mm0u3.js";var le=n(),C=e(t(),1),w=c();function T(e){return`${e.pluginId}:${e.targetKind}:${e.providerInstanceId??`global`}`}function E(e){switch(e.state){case`installed`:return`Installed`;case`not-installed`:return`Not installed`;case`unsupported`:return`Unsupported`;case`error`:return`Error`}}function ue(e){switch(e.state){case`installed`:return`success`;case`not-installed`:return`outline`;case`unsupported`:return`warning`;case`error`:return`error`}}function D(e){switch(e.state){case`installed`:return(0,w.jsx)(h,{className:`size-3.5 text-success-foreground`});case`not-installed`:return(0,w.jsx)(v,{className:`size-3.5 text-muted-foreground`});case`unsupported`:case`error`:return(0,w.jsx)(p,{className:`size-3.5 text-warning-foreground`})}}function O(e){return e.targetKind===`global`?`System`:e.providerDisplayName??String(e.providerInstanceId??`Provider`)}function de(e){return e.impact===`tool-output`?`Tool output`:`Assistant output`}function fe(e){return e.scope===`global`?`Global`:`Provider`}function k(e){switch(e){case`rtk`:return 0;case`caveman`:return 1;case`token-optimizer`:return 2;case`token-savior`:return 3;case`lean-ctx`:return 4}}function A(e){return`${e.targetKind===`global`?`0`:`1`}:${O(e).toLowerCase()}`}function pe(e){let t=(0,le.c)(36),{status:n,isInstalling:r,onInstall:i}=e,a=n.canInstall&&n.state!==`installed`,o;t[0]===n?o=t[1]:(o=D(n),t[0]=n,t[1]=o);let s;t[2]===n?s=t[3]:(s=O(n),t[2]=n,t[3]=s);let c;t[4]===s?c=t[5]:(c=(0,w.jsx)(`span`,{className:`truncate text-[13px] font-medium text-foreground`,children:s}),t[4]=s,t[5]=c);let l;t[6]===n?l=t[7]:(l=ue(n),t[6]=n,t[7]=l);let d;t[8]===n?d=t[9]:(d=E(n),t[8]=n,t[9]=d);let f;t[10]!==l||t[11]!==d?(f=(0,w.jsx)(b,{variant:l,size:`sm`,children:d}),t[10]=l,t[11]=d,t[12]=f):f=t[12];let p;t[13]===n.version?p=t[14]:(p=n.version?(0,w.jsx)(`span`,{className:`font-mono text-[11px] text-muted-foreground/70`,children:n.version}):null,t[13]=n.version,t[14]=p);let m;t[15]!==o||t[16]!==c||t[17]!==f||t[18]!==p?(m=(0,w.jsxs)(`div`,{className:`flex min-h-5 flex-wrap items-center gap-2`,children:[o,c,f,p]}),t[15]=o,t[16]=c,t[17]=f,t[18]=p,t[19]=m):m=t[19];let h;t[20]===n.detail?h=t[21]:(h=n.detail?(0,w.jsx)(`p`,{className:`max-w-2xl text-xs leading-relaxed text-muted-foreground/80`,children:n.detail}):null,t[20]=n.detail,t[21]=h);let g;t[22]===n.manualSteps?g=t[23]:(g=n.manualSteps.length>0?(0,w.jsx)(`div`,{className:`space-y-1 pt-1`,children:n.manualSteps.map(me)}):null,t[22]=n.manualSteps,t[23]=g);let _;t[24]!==g||t[25]!==m||t[26]!==h?(_=(0,w.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[m,h,g]}),t[24]=g,t[25]=m,t[26]=h,t[27]=_):_=t[27];let v;t[28]!==a||t[29]!==r||t[30]!==i||t[31]!==n?(v=a?(0,w.jsxs)(u,{size:`xs`,variant:`outline`,disabled:r,className:`self-start sm:self-auto`,onClick:()=>i(n),children:[r?(0,w.jsx)(x,{className:`size-3.5 animate-spin`}):(0,w.jsx)(S,{className:`size-3.5`}),`Install`]}):null,t[28]=a,t[29]=r,t[30]=i,t[31]=n,t[32]=v):v=t[32];let y;return t[33]!==_||t[34]!==v?(y=(0,w.jsxs)(`div`,{className:`flex flex-col gap-3 border-t border-border/50 px-4 py-3 first:border-t-0 sm:flex-row sm:items-center sm:justify-between sm:px-5`,children:[_,v]}),t[33]=_,t[34]=v,t[35]=y):y=t[35],y}function me(e){return(0,w.jsx)(`p`,{className:`font-mono text-[11px] leading-relaxed text-muted-foreground`,children:e},e)}function j(){let e=(0,le.c)(48),t=a(),{updateSettings:n}=i(),c=t.defaultAgentTokenMode??`balanced`,f=ie[c],p=f.icon,h;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=[],e[0]=h):h=e[0];let[_,v]=(0,C.useState)(h),S;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(S=[],e[1]=S):S=e[1];let[E,ue]=(0,C.useState)(S),[D,k]=(0,C.useState)(!1),[A,me]=(0,C.useState)(null),j=(0,C.useRef)(!1),M;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(M=()=>{if(j.current)return;j.current=!0,k(!0);let e=r();Promise.all([e.server.listOpinionatedPlugins(),e.server.checkOpinionatedPlugins()]).then(e=>{let[t,n]=e;v(t.plugins.toSorted(Se)),ue(n.statuses)}).catch(xe).finally(()=>{j.current=!1,k(!1)})},e[2]=M):M=e[2];let N=M,P,F;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>{N()},F=[N],e[3]=P,e[4]=F):(P=e[3],F=e[4]),(0,C.useEffect)(P,F);let I;if(e[5]!==E){let t=new Map;for(let e of E){let n=t.get(e.pluginId)??[];n.push(e),t.set(e.pluginId,n)}I=new Map;for(let[e,n]of t)I.set(e,n.toSorted(be));e[5]=E,e[6]=I}else I=e[6];let L=I,Ce=ye,R;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(R=e=>{let t=r(),n=O(e);t.dialogs.confirm(`Install ${e.pluginId===`rtk`?`RTK`:`Caveman`} for ${n}?\n\nThis may run networked CLI installation commands on this machine.`).then(r=>{if(!r)return;let i=T(e);return me(i),t.server.installOpinionatedPlugin({pluginId:e.pluginId,...e.providerInstanceId?{providerInstanceId:e.providerInstanceId}:{}}).then(t=>{ue(e=>[...e.filter(e=>T(e)!==i),t.status]),m.add({type:`success`,title:`${e.pluginId===`rtk`?`RTK`:`Caveman`} installed`,description:t.commands.length>0?t.commands[t.commands.length-1]:n}),N()}).catch(ve).finally(()=>me(null))}).catch(_e)},e[7]=R):R=e[7];let we=R,z;e[8]===n?z=e[9]:(z=e=>n({defaultAgentTokenMode:e}),e[8]=n,e[9]=z);let B;e[10]===p?B=e[11]:(B=(0,w.jsx)(p,{className:`size-4 shrink-0 text-muted-foreground`}),e[10]=p,e[11]=B);let V;e[12]===f.triggerLabel?V=e[13]:(V=(0,w.jsx)(g,{children:f.triggerLabel}),e[12]=f.triggerLabel,e[13]=V);let H;e[14]!==B||e[15]!==V?(H=(0,w.jsx)(ee,{className:`w-full sm:w-52`,"aria-label":`Default token mode`,children:(0,w.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-2`,children:[B,V]})}),e[14]=B,e[15]=V,e[16]=H):H=e[16];let U;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,w.jsx)(y,{align:`end`,alignItemWithTrigger:!1,className:`w-60`,children:ae.map(ge)}),e[17]=U):U=e[17];let W;e[18]!==c||e[19]!==z||e[20]!==H?(W=(0,w.jsx)(oe,{title:`Token mode`,children:(0,w.jsx)(ce,{title:`Default token mode`,description:`Applied to new threads and draft sessions. Existing threads keep their own mode.`,control:(0,w.jsxs)(ne,{value:c,onValueChange:z,children:[H,U]})})}),e[18]=c,e[19]=z,e[20]=H,e[21]=W):W=e[21];let G;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>N(),e[22]=G):G=e[22];let K;e[23]===D?K=e[24]:(K=D?(0,w.jsx)(x,{className:`size-3 animate-spin`}):(0,w.jsx)(re,{className:`size-3`}),e[23]=D,e[24]=K);let q;e[25]!==D||e[26]!==K?(q=(0,w.jsx)(s,{render:(0,w.jsx)(u,{size:`icon-xs`,variant:`ghost`,className:`size-5 rounded-sm p-0 text-muted-foreground hover:text-foreground`,disabled:D,onClick:G,"aria-label":`Refresh plugin status`,children:K})}),e[25]=D,e[26]=K,e[27]=q):q=e[27];let J;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,w.jsx)(o,{side:`top`,children:`Refresh plugin status`}),e[28]=J):J=e[28];let Y;e[29]===q?Y=e[30]:(Y=(0,w.jsxs)(d,{children:[q,J]}),e[29]=q,e[30]=Y);let X;e[31]!==D||e[32]!==_.length?(X=_.length===0&&D?(0,w.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-4 text-xs text-muted-foreground`,children:[(0,w.jsx)(x,{className:`size-3.5 animate-spin`}),`Loading plugin status`]}):null,e[31]=D,e[32]=_.length,e[33]=X):X=e[33];let Z;if(e[34]!==A||e[35]!==_||e[36]!==L){let t;e[38]!==A||e[39]!==L?(t=e=>{let t=L.get(e.id)??[],n=t.filter(he).length;return(0,w.jsx)(ce,{title:(0,w.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:e.name}),(0,w.jsx)(b,{variant:n>0?`success`:`outline`,size:`sm`,children:n>0?`${n} installed`:`Available`})]}),description:e.summary,status:(0,w.jsxs)(`span`,{className:`flex flex-wrap gap-1.5`,children:[(0,w.jsx)(b,{variant:`info`,size:`sm`,children:de(e)}),(0,w.jsx)(b,{variant:`outline`,size:`sm`,children:fe(e)})]}),control:(0,w.jsxs)(u,{size:`xs`,variant:`ghost`,onClick:()=>Ce(e),children:[(0,w.jsx)(te,{className:`size-3.5`}),`Docs`]}),children:(0,w.jsx)(`div`,{className:l(`mt-4 border-t border-border/60`,t.length===0?`px-5 py-4`:``),children:t.length===0?(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground/80`,children:`No compatible provider instances detected.`}):t.map(e=>(0,w.jsx)(pe,{status:e,isInstalling:A===T(e),onInstall:we},T(e)))})},e.id)},e[38]=A,e[39]=L,e[40]=t):t=e[40],Z=_.map(t),e[34]=A,e[35]=_,e[36]=L,e[37]=Z}else Z=e[37];let Q;e[41]!==Y||e[42]!==X||e[43]!==Z?(Q=(0,w.jsxs)(oe,{title:`Opinionated plugins`,headerAction:Y,children:[X,Z]}),e[41]=Y,e[42]=X,e[43]=Z,e[44]=Q):Q=e[44];let $;return e[45]!==W||e[46]!==Q?($=(0,w.jsxs)(se,{children:[W,Q]}),e[45]=W,e[46]=Q,e[47]=$):$=e[47],$}function he(e){return e.state===`installed`}function ge(e){let t=ie[e],n=t.icon;return(0,w.jsx)(_,{hideIndicator:!0,value:e,children:(0,w.jsxs)(`div`,{className:`grid min-w-0 gap-0.5`,children:[(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-medium text-foreground`,children:[(0,w.jsx)(n,{className:`size-3.5 shrink-0 text-muted-foreground`}),t.label]}),(0,w.jsx)(`span`,{className:`text-muted-foreground text-xs leading-4`,children:t.description})]})},e)}function _e(e){m.add(f({type:`error`,title:`Install confirmation failed`,description:e instanceof Error?e.message:`An error occurred.`}))}function ve(e){m.add(f({type:`error`,title:`Plugin install failed`,description:e instanceof Error?e.message:`An error occurred.`}))}function ye(e){let t=e.docsUrl??e.homepageUrl;r().shell.openExternal(t).catch(M)}function M(e){m.add(f({type:`error`,title:`Failed to open plugin docs`,description:e instanceof Error?e.message:`An error occurred.`}))}function be(e,t){return A(e).localeCompare(A(t))}function xe(e){m.add(f({type:`error`,title:`Failed to load plugins`,description:e instanceof Error?e.message:`An error occurred.`}))}function Se(e,t){return k(e.id)-k(t.id)}export{j as OpinionatedPluginsSettingsPanel};
|