@p4code/cli 0.8.25 → 0.8.26
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/bin.mjs +1 -1
- package/dist/{binCli-DxnOvHXE.mjs → binCli-DgjAnX7K.mjs} +2 -2
- package/dist/client/.vite/manifest.json +2242 -2242
- package/dist/client/assets/AlertDialogRoot-uMQTdBRo.js +2 -0
- package/dist/client/assets/{AnimatedHeight-wZzihILs.js → AnimatedHeight-xpLZZo3s.js} +2 -2
- package/dist/client/assets/{AuthSurfaceShell-CDrUzEa3.js → AuthSurfaceShell-B0GeuqGG.js} +2 -2
- package/dist/client/assets/{CSPContext-BjqtxKhA.js → CSPContext-BOMhNaNg.js} +2 -2
- package/dist/client/assets/{ChatGptUsageButton-DkUVOC7j.js → ChatGptUsageButton-BsRw7PIG.js} +2 -2
- package/dist/client/assets/ChatMarkdown-B_7CYt1t.js +65 -0
- package/dist/client/assets/{CheckboxIndicator-CuZi7Ixm.js → CheckboxIndicator-CtJqB7ns.js} +2 -2
- package/dist/client/assets/{ClippedText-DPgP0ObI.js → ClippedText-DoAq5p0h.js} +2 -2
- package/dist/client/assets/{CodexSetupSection.logic-BGYo_Oa-.js → CodexSetupSection.logic-CAeeNfjx.js} +2 -2
- package/dist/client/assets/{ComboboxClear-zheEdyAa.js → ComboboxClear-gWUoU_9i.js} +2 -2
- package/dist/client/assets/{ComboboxGroupLabel-BxCdL7I3.js → ComboboxGroupLabel-PqwekxYO.js} +2 -2
- package/dist/client/assets/{CommandBlock-C1v99dbA.js → CommandBlock-a6FR0Qjq.js} +2 -2
- package/dist/client/assets/ComposerPromptEditor-JiLuF8sa.js +204 -0
- package/dist/client/assets/{CompositeRoot-Bg5KGYGp.js → CompositeRoot-DXqEvNI3.js} +2 -2
- package/dist/client/assets/{ConnectionStatusDot-Bx8Imvqc.js → ConnectionStatusDot-DsDhJub7.js} +2 -2
- package/dist/client/assets/{DesignPageTile-ClF5Va3g.js → DesignPageTile-6OCPIqLU.js} +2 -2
- package/dist/client/assets/DevicePanel-BCkjPnRB.js +2 -0
- package/dist/client/assets/{DeviceSetup-D1v4OInd.js → DeviceSetup-jQhLCRQB.js} +2 -2
- package/dist/client/assets/{DialogTitle-CVP748Gv.js → DialogTitle-B_iSZXaO.js} +2 -2
- package/dist/client/assets/{DiffCommentAnnotation-ByLSJGCC.js → DiffCommentAnnotation-Ce3fywCz.js} +3 -3
- package/dist/client/assets/{DiffFileTree-DmXODV6-.js → DiffFileTree-Ch8ghRNl.js} +2 -2
- package/dist/client/assets/DiffPanel-BYdDuPJL.js +2 -0
- package/dist/client/assets/{DiffWorkerPoolProvider-31z0fGQ6.js → DiffWorkerPoolProvider-CCTRrTde.js} +3 -3
- package/dist/client/assets/{EmbeddedDesign-CJh4mXjr.js → EmbeddedDesign-BasGnrZc.js} +4 -4
- package/dist/client/assets/{EnvironmentMachineIcon-B2v_GWgB.js → EnvironmentMachineIcon-CmWYXtho.js} +2 -2
- package/dist/client/assets/{ExpandableText-fJVIbCvG.js → ExpandableText-BgfA9yOq.js} +2 -2
- package/dist/client/assets/{FieldControl-mq4xNgmP.js → FieldControl-D-HuGl-Y.js} +2 -2
- package/dist/client/assets/{FileDiff-Cb7Q8DoF.js → FileDiff-HO0wYuF-.js} +2 -2
- package/dist/client/assets/{FilePreviewPanel-CN68pCae.js → FilePreviewPanel-BWAkLnOF.js} +9 -9
- package/dist/client/assets/{FoldedSettingsSection-TSMWCMo5.js → FoldedSettingsSection-itwybIpg.js} +2 -2
- package/dist/client/assets/{FormContext-Vtmj_mkP.js → FormContext-D41axClw.js} +2 -2
- package/dist/client/assets/{Icons-C0Zjws-3.js → Icons-bbJxtd49.js} +2 -2
- package/dist/client/assets/Input-BcEftKLM.js +2 -0
- package/dist/client/assets/{KeybindingsSettings.logic-D-GClV-c.js → KeybindingsSettings.logic-DbRWYCku.js} +2 -2
- package/dist/client/assets/{NoProjectsHero-B5wdlXLT.js → NoProjectsHero-1ktyCaCR.js} +2 -2
- package/dist/client/assets/{P4ConnectAccountPages-BNv1XOMs.js → P4ConnectAccountPages-C8kjCH2i.js} +2 -2
- package/dist/client/assets/{P4ConnectSidebarSignIn-BqW3vURC.js → P4ConnectSidebarSignIn-De0TqOBv.js} +2 -2
- package/dist/client/assets/PanelLayoutControls-CRn29ViL.js +216 -0
- package/dist/client/assets/{PierreEntryIcon-BS77_eRn.js → PierreEntryIcon-DZSPzXnW.js} +2 -2
- package/dist/client/assets/{PopoverHandle-BT83XTq9.js → PopoverHandle-BUkWn6lX.js} +2 -2
- package/dist/client/assets/PreviewPanel-CPU0sstq.js +2 -0
- package/dist/client/assets/ProjectDefaultsSettings-Ibem_Z4L.js +2 -0
- package/dist/client/assets/{ProjectFavicon-Bhsql8UU.js → ProjectFavicon-CE_urBAW.js} +3 -3
- package/dist/client/assets/{ProjectIconPickerDialog-D1bu7Uyx.js → ProjectIconPickerDialog-D0OZSLq9.js} +2 -2
- package/dist/client/assets/{ProjectMonogram-BUy_N1of.js → ProjectMonogram-C1SBXbLc.js} +2 -2
- package/dist/client/assets/{ProviderAuthTerminal-BRbiaLWc.js → ProviderAuthTerminal-Ddl4fv02.js} +2 -2
- package/dist/client/assets/ProviderModelPicker-BTTJn7iC.js +2 -0
- package/dist/client/assets/{ProviderSettingsForm-DLBbky90.js → ProviderSettingsForm-CGRf8WX5.js} +2 -2
- package/dist/client/assets/{PullRequestCodeTab-CKppy0OY.js → PullRequestCodeTab-CWg3y2Hg.js} +3 -3
- package/dist/client/assets/{ReadOnlySourcePreview-BJ6Yf9Nm.js → ReadOnlySourcePreview-B2RUv5et.js} +2 -2
- package/dist/client/assets/{RenderErrorBoundary-DQlXjNRV.js → RenderErrorBoundary-BE9pu802.js} +2 -2
- package/dist/client/assets/ScheduledTasksSettings-LlwIif-M.js +4 -0
- package/dist/client/assets/{ScopedSwitch-Ciu5HpYa.js → ScopedSwitch-DM7op4tT.js} +2 -2
- package/dist/client/assets/{ScrollAreaCorner-3gSiyg8H.js → ScrollAreaCorner-CpFtD7m1.js} +2 -2
- package/dist/client/assets/{SecretInput-itt3KL-b.js → SecretInput-aXfqfjLk.js} +2 -2
- package/dist/client/assets/{SelectScrollUpArrow-D_o_f6Fh.js → SelectScrollUpArrow-CMpd0Jm1.js} +2 -2
- package/dist/client/assets/{SettingsPanels-D8LJq_2u.js → SettingsPanels-BJZmVkq6.js} +6 -6
- package/dist/client/assets/{SettingsPanels.logic-Dn4swS42.js → SettingsPanels.logic-DlcMmTBT.js} +2 -2
- package/dist/client/assets/{SettingsScopeNotice-FZ1p4m0I.js → SettingsScopeNotice-DvcB28n8.js} +2 -2
- package/dist/client/assets/{ThemeEditorPanel-CyGAzSmS.js → ThemeEditorPanel-Cv_FhYYJ.js} +3 -3
- package/dist/client/assets/{ThreadTerminalDrawer-COPVkKqd.js → ThreadTerminalDrawer-B4Hx5Gtc.js} +4 -4
- package/dist/client/assets/TooltipViewport-BkvH9Kzg.js +2 -0
- package/dist/client/assets/{Virtualizer-Cy8TBFLE.js → Virtualizer-Dka4WQhw.js} +2 -2
- package/dist/client/assets/{WorkspaceBreadcrumb-B5ZV6VNj.js → WorkspaceBreadcrumb-DnyZiGsn.js} +2 -2
- package/dist/client/assets/{WorkspacePageContainer-BTN44jG6.js → WorkspacePageContainer-OhHg0688.js} +2 -2
- package/dist/client/assets/{WorkspacePageHeader-BaCxaW-R.js → WorkspacePageHeader-BUVfTGMv.js} +2 -2
- package/dist/client/assets/_chat-71Bl4UTO.js +45 -0
- package/dist/client/assets/{_chat.design-CmJbkQbO.js → _chat.design-L-wLlTQh.js} +2 -2
- package/dist/client/assets/{_chat.index-6PXQMCFp.js → _chat.index-Cqzn3tFu.js} +2 -2
- package/dist/client/assets/{_chat.new-DlduiMxM.js → _chat.new-CmqMNN1q.js} +3 -3
- package/dist/client/assets/_chat.pull-requests-Cv4Q6L5c.js +2 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-DoT8_FXH.js → abnfDiagram-VCTEODGH-DGwfULSN.js} +2 -2
- package/dist/client/assets/{alert-CdZT7d18.js → alert-D4hu_q2y.js} +2 -2
- package/dist/client/assets/architecture-7GRP2DOG-BVmWArUl.js +1 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-HFFuwzkK.js → architectureDiagram-5GKGNRK7-fZiBVATu.js} +2 -2
- package/dist/client/assets/{assets-v9gHTSJ2.js → assets-Zca4LKSx.js} +2 -2
- package/dist/client/assets/{blockDiagram-I7D4REHJ-Df3TzjDM.js → blockDiagram-I7D4REHJ-Cs_imlrU.js} +2 -2
- package/dist/client/assets/{browserHistoryStore-DY3kofkL.js → browserHistoryStore-9YCQpJy9.js} +2 -2
- package/dist/client/assets/{browserLinkTarget-BHJMZNAn.js → browserLinkTarget-BnxzanaN.js} +2 -2
- package/dist/client/assets/{c4Diagram-7LVT6UL2-Bx6hu1pT.js → c4Diagram-7LVT6UL2-jxRP5rAE.js} +2 -2
- package/dist/client/assets/channel-DyV-uKW8.js +2 -0
- package/dist/client/assets/{checkbox-Q0bv8RvC.js → checkbox-PYOAN-IL.js} +2 -2
- package/dist/client/assets/{chunk-4HAMMTFA-DztP-PZY.js → chunk-4HAMMTFA-CD4tA6cX.js} +2 -2
- package/dist/client/assets/{chunk-75Z2AOVW-uoFI_96z.js → chunk-75Z2AOVW-B4sXgwEx.js} +2 -2
- package/dist/client/assets/{chunk-DU6HZSFF-D_0nd_m5.js → chunk-DU6HZSFF-DMXcgXT_.js} +2 -2
- package/dist/client/assets/{chunk-F27PBJKO-CVo5wWUL.js → chunk-F27PBJKO-CGf21cwH.js} +2 -2
- package/dist/client/assets/{chunk-GMAD6QVW-DVJraU0z.js → chunk-GMAD6QVW-mPVRZq9Z.js} +2 -2
- package/dist/client/assets/{chunk-GVQU2GXP-D1KDAS1u.js → chunk-GVQU2GXP-ChBHtvjy.js} +2 -2
- package/dist/client/assets/{chunk-IMKFNOWR-B4iQ5Hh8.js → chunk-IMKFNOWR-BtgRygmA.js} +2 -2
- package/dist/client/assets/{chunk-L3NEJ4N5-Cg0GbrIO.js → chunk-L3NEJ4N5-REmklvQl.js} +2 -2
- package/dist/client/assets/{chunk-OSK3NFVY-B4_CzVzL.js → chunk-OSK3NFVY-m-QXUYaT.js} +2 -2
- package/dist/client/assets/{chunk-P2QGCYS3-DZOYqNgv.js → chunk-P2QGCYS3-CeefF5cA.js} +2 -2
- package/dist/client/assets/{chunk-POPQ4Y6H-4nivFn8h.js → chunk-POPQ4Y6H-C-_RXsmg.js} +2 -2
- package/dist/client/assets/{chunk-PWAF6VOD-HbLsvJ11.js → chunk-PWAF6VOD-DflyqEaS.js} +2 -2
- package/dist/client/assets/{chunk-SHT3W25Y-DFCZ-Krf.js → chunk-SHT3W25Y-R_Fg17nt.js} +2 -2
- package/dist/client/assets/{chunk-SVP7TREG-BvQW-XJf.js → chunk-SVP7TREG-BTfev3Yx.js} +2 -2
- package/dist/client/assets/{chunk-TICWLB2K-BkfJ58tX.js → chunk-TICWLB2K-C7WGvYp1.js} +2 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-B0NhU5d_.js +2 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-B0NhU5d_.js +2 -0
- package/dist/client/assets/{color-picker-BWZhsiZJ.js → color-picker-D4_JMCD4.js} +2 -2
- package/dist/client/assets/{combobox-BdGKdc6i.js → combobox-CJgXDxx7.js} +2 -2
- package/dist/client/assets/{command-CIj8Rufv.js → command-Bdd9mlwd.js} +2 -2
- package/dist/client/assets/{composer-logic-CwhwgR76.js → composer-logic-De298qJ8.js} +4 -4
- package/dist/client/assets/{composerDraftUploads-DmqvTkwP.js → composerDraftUploads-DojMN9dn.js} +2 -2
- package/dist/client/assets/{connect-DwVFJmN3.js → connect-DqGJc6Zq.js} +2 -2
- package/dist/client/assets/{connect-agent-DEQZN1JX.js → connect-agent-Dss1yfYI.js} +2 -2
- package/dist/client/assets/{cynefin-OW5HDTMX-4JOEXKIi.js → cynefin-OW5HDTMX-DnGTy7Az.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-Drs4oZCg.js → cynefinDiagram-5FMLGOSQ-va9nLZtf.js} +2 -2
- package/dist/client/assets/{dagre-GXQ25YYZ-DKMbY0zs.js → dagre-GXQ25YYZ-D0QXSOGs.js} +2 -2
- package/dist/client/assets/{design-CNu64Zbr.js → design-C9BU7qd7.js} +2 -2
- package/dist/client/assets/{device-BLFqXUPD.js → device-CtPu58XW.js} +2 -2
- package/dist/client/assets/{diagram-S7CK7UJ4-BadxuMFL.js → diagram-S7CK7UJ4-cEFyiWjL.js} +2 -2
- package/dist/client/assets/{diagram-UQ7AKVKN-PnCAv0MQ.js → diagram-UQ7AKVKN-CNgu8Xrb.js} +2 -2
- package/dist/client/assets/{diagram-VSXAHHWV-Cny8HiZ9.js → diagram-VSXAHHWV-BPPJ-FGp.js} +2 -2
- package/dist/client/assets/{diagram-VX7I27RA-CRUGb_uz.js → diagram-VX7I27RA-DmmJR7mF.js} +2 -2
- package/dist/client/assets/{diagram-Z3DM3KII-3me_mb7C.js → diagram-Z3DM3KII-B2E7hDLy.js} +2 -2
- package/dist/client/assets/{dialog-Cgb4jap2.js → dialog-Bdi4gsq5.js} +2 -2
- package/dist/client/assets/{diffRendering-D5-wCc8J.js → diffRendering-Dam20Pyq.js} +2 -2
- package/dist/client/assets/{discovery-list-DXkskf2A.js → discovery-list-CPLxz_C8.js} +2 -2
- package/dist/client/assets/{dist-DJO3gX7B.js → dist-BDrj9x6z.js} +3 -3
- package/dist/client/assets/{draft-input-DQxVE9YJ.js → draft-input-CmGR2Zc1.js} +2 -2
- package/dist/client/assets/{duoViewer-DLfl5Kz-.js → duoViewer-D-r4O9JA.js} +2 -2
- package/dist/client/assets/{dynamic-BtC962Ss.js → dynamic-Cog_ioOk.js} +3 -3
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-CihgSPXH.js → ebnfDiagram-PWID7BFC-CdqWonW-.js} +2 -2
- package/dist/client/assets/{embeddedScripts-BYDwhk1c.js → embeddedScripts-twbjTzvu.js} +2 -2
- package/dist/client/assets/{empty-DHl8_LXy.js → empty-DeLw5x6B.js} +2 -2
- package/dist/client/assets/{entities-BmcX1OB3.js → entities-BhpgabTo.js} +2 -2
- package/dist/client/assets/{erDiagram-RLTQ6QDP-F6qh1mx2.js → erDiagram-RLTQ6QDP-Cj9VHvs2.js} +2 -2
- package/dist/client/assets/eventmodeling-NTZA5JFV-CkU6Du-F.js +1 -0
- package/dist/client/assets/{fileLinks-D6tZCcrX.js → fileLinks-CCxqMBvI.js} +2 -2
- package/dist/client/assets/{fileTreeExpansion-XMXwSF13.js → fileTreeExpansion-N_KS64dO.js} +2 -2
- package/dist/client/assets/flowDiagram-HODETNUW-BvniDpHa.js +1 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-YGfup7SG.js → ganttDiagram-EL5Y4UJY--tZCMTKs.js} +2 -2
- package/dist/client/assets/{getDiffFileInput-CaAoEF2q.js → getDiffFileInput-wQ-J_p6Q.js} +2 -2
- package/dist/client/assets/{gitGraph-4MIJSDKK-lmNva9e6.js → gitGraph-4MIJSDKK-Dw_fdYPs.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-doYkHAhC.js → gitGraphDiagram-WWUBYQGX-mCz7mnTd.js} +2 -2
- package/dist/client/assets/{guideRunStore-DgsITXCn.js → guideRunStore-Dk9f0e_S.js} +2 -2
- package/dist/client/assets/hat-glasses-D7AuONMv.js +2 -0
- package/dist/client/assets/{htmlRender-BUb_wWp9.js → htmlRender-CSsSEPs1.js} +2 -2
- package/dist/client/assets/{index-CfFLhAIJ.js → index-B0OiR0Ol.js} +3 -3
- package/dist/client/assets/{info-A6RAGUB7-D_A6DQid.js → info-A6RAGUB7-Dm2Q2YW8.js} +1 -1
- package/dist/client/assets/{infoDiagram-27XIBGKW-BRwXCKSf.js → infoDiagram-27XIBGKW-CRahhr54.js} +2 -2
- package/dist/client/assets/{input-D_jxqXLR.js → input-CDBTiBJx.js} +2 -2
- package/dist/client/assets/{input-group-BM_USnbh.js → input-group-CHJvPXpi.js} +2 -2
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-C7LnJqXH.js → ishikawaDiagram-5VMMS53U-B8BPPaoL.js} +2 -2
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-BzOGENTa.js → journeyDiagram-3NMN7TZE-CyL0jLPT.js} +2 -2
- package/dist/client/assets/{kanban-definition-UXKFOSKX-COHFjuBb.js → kanban-definition-UXKFOSKX-cbdied2B.js} +2 -2
- package/dist/client/assets/{kbd-B2uytHus.js → kbd-BGpxKPhX.js} +2 -2
- package/dist/client/assets/{keybindings-CqjUKNRx.js → keybindings-4i_VvPsX.js} +2 -2
- package/dist/client/assets/{lazyRouteComponent-CByGrW41.js → lazyRouteComponent-DehCr3JG.js} +2 -2
- package/dist/client/assets/{line-CrPHt5m8.js → line-qgzYahVp.js} +2 -2
- package/dist/client/assets/{link-BjP3qTK9.js → link-DQSgeAPg.js} +2 -2
- package/dist/client/assets/{linkedPrompt-DcngDDYL.js → linkedPrompt-BZnl7hrP.js} +2 -2
- package/dist/client/assets/{main-DTxzRLjF.js → main-BgKiw-9f.js} +19 -19
- package/dist/client/assets/main-Dk22djvP.css +2 -0
- package/dist/client/assets/{mediaReference-DZXLlXcJ.js → mediaReference-BhzLpYF9.js} +2 -2
- package/dist/client/assets/{mediaSource-gPZdDlVt.js → mediaSource-Bk_NKKP2.js} +2 -2
- package/dist/client/assets/{mermaid-parser.core-DWtiDQYU.js → mermaid-parser.core-Dbb1WTb8.js} +4 -4
- package/dist/client/assets/{mermaid.core-BFUbfTlG.js → mermaid.core-Dtz8UzUI.js} +5 -5
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-DBtRzghf.js → mindmap-definition-YA3MSWOX-D7G9MbUQ.js} +2 -2
- package/dist/client/assets/number-field-j3MeOhOk.js +2 -0
- package/dist/client/assets/{observeResize-jHx61cGA.js → observeResize-3DufCT68.js} +2 -2
- package/dist/client/assets/{onboarding-DrdqSiQH.js → onboarding-CXb4LvSr.js} +2 -2
- package/dist/client/assets/{openFileInPreview-weURIMTS.js → openFileInPreview-B8KdOFV6.js} +2 -2
- package/dist/client/assets/{p4ProjectFile-B8OhdeMF.js → p4ProjectFile-BrXxii5J.js} +2 -2
- package/dist/client/assets/{packet-AYTQ26CC-DJZVK2K9.js → packet-AYTQ26CC-3JoyTbIn.js} +1 -1
- package/dist/client/assets/{pair-gR_rTadh.js → pair-B6bpqsN5.js} +2 -2
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DDF_R7aG.js → pegDiagram-XKGWAZYB-7VJjFwNR.js} +2 -2
- package/dist/client/assets/{pendingSendStore-CaGsppQi.js → pendingSendStore-DWZwD8Qe.js} +2 -2
- package/dist/client/assets/{phoneViewer-DxQG2wwP.js → phoneViewer-DDX1p0cN.js} +2 -2
- package/dist/client/assets/{pie-WAS4IAKB-DdceO1sC.js → pie-WAS4IAKB-CXeLZCFV.js} +1 -1
- package/dist/client/assets/{pieDiagram-E7YTZNPT-BW2s3CyE.js → pieDiagram-E7YTZNPT-BY1P4Uer.js} +2 -2
- package/dist/client/assets/{pierre-icons-CFlecESq.js → pierre-icons-CL-szz98.js} +2 -2
- package/dist/client/assets/{popover-2XJd3KEJ.js → popover-N-pn4OqA.js} +2 -2
- package/dist/client/assets/{preview-8bBtJM5H.js → preview-DL8QWLgw.js} +2 -2
- package/dist/client/assets/{preview-Dz5JGjMV.js → preview-HJcGsd2o.js} +2 -2
- package/dist/client/assets/{previewMiniPlayerStore-DMd0mA7a.js → previewMiniPlayerStore--CyDShCc.js} +2 -2
- package/dist/client/assets/primary-rJDv25B2.js +2 -0
- package/dist/client/assets/{primaryCloudLinkState-C-mUT5JX.js → primaryCloudLinkState-CzF2gmHs.js} +2 -2
- package/dist/client/assets/{projectFilesQueryState-Au75qUTL.js → projectFilesQueryState-DM9_vSRA.js} +2 -2
- package/dist/client/assets/{projectScriptEditor-4NhfCuq1.js → projectScriptEditor-Pml2NkVE.js} +2 -2
- package/dist/client/assets/{providerSkills-BmzuNl-9.js → providerSkills-waACvYAJ.js} +2 -2
- package/dist/client/assets/{pullRequestDetail.logic-yPUei2ak.js → pullRequestDetail.logic-C-5flOlM.js} +2 -2
- package/dist/client/assets/{pullRequestIcons-e8EZW8_y.js → pullRequestIcons-B9gjoHK4.js} +2 -2
- package/dist/client/assets/{pullRequestReviewStore-DJx8EOVl.js → pullRequestReviewStore-DuoLLEGp.js} +2 -2
- package/dist/client/assets/{pullRequests-BBLgbQTu.js → pullRequests-Br_9L7m4.js} +2 -2
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Bf2672qf.js → quadrantDiagram-AXDQQJYC-DyZq_mGc.js} +2 -2
- package/dist/client/assets/queries-CuZx4Gi3.js +2 -0
- package/dist/client/assets/query-DrtB5w10.js +2 -0
- package/dist/client/assets/{radar-RG4KPBEZ-BiG5ioV7.js → radar-RG4KPBEZ-B21YfCpU.js} +1 -1
- package/dist/client/assets/{radio-group-BNV16qlg.js → radio-group-D5b1YnNe.js} +2 -2
- package/dist/client/assets/{railroad-74A4TZTK-DiRzkVRF.js → railroad-74A4TZTK-CaiYAzxA.js} +1 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-ZJmaNeUq.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-C27brj-I.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-CukzLv2P.js +1 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-BschbLXV.js → railroadDiagram-O6MQD6OU-BZ0HuIrV.js} +2 -2
- package/dist/client/assets/{renderScheduler-BgjQdysj.js → renderScheduler-xdSjl5z7.js} +2 -2
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-DIHx2XKp.js → requirementDiagram-BXWQKSXE-C4OJUf9q.js} +2 -2
- package/dist/client/assets/{rightPanelStore-XfAJpUIA.js → rightPanelStore-BLSD3K6s.js} +2 -2
- package/dist/client/assets/{runtime-SBjACoAG.js → runtime-V62Oyi1q.js} +2 -2
- package/dist/client/assets/{runtime-DPOrcghx.js → runtime-mg6KxRIi.js} +3 -3
- package/dist/client/assets/runtimeModeConfig-CSStNUjU.js +2 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-B37UMb9Z.js → sankeyDiagram-P5KCCOFB-CDOw9Kul.js} +2 -2
- package/dist/client/assets/{scheduledTasksSettings.logic-l7uZVAyW.js → scheduledTasksSettings.logic-CrYg_vYi.js} +2 -2
- package/dist/client/assets/{scroll-area-DORwTFtw.js → scroll-area-CT3H0nmo.js} +2 -2
- package/dist/client/assets/{select-Bsag72zE.js → select-CqPGedM1.js} +2 -2
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BWWC8joI.js → sequenceDiagram-WJ2MYXX4-C9BMDi3Q.js} +2 -2
- package/dist/client/assets/{server-BNs54wEo.js → server-C8OpoOTL.js} +2 -2
- package/dist/client/assets/{session-CFXzhAhI.js → session-BAH17FBJ.js} +2 -2
- package/dist/client/assets/{session-logic-Zk8ix8K9.js → session-logic-BKiIVDj0.js} +2 -2
- package/dist/client/assets/{settings-D8GZZ79P.js → settings-BiLwAn9B.js} +2 -2
- package/dist/client/assets/settings.appearance-DB8azH3Q.js +2 -0
- package/dist/client/assets/settings.archived-BgPgmE5p.js +2 -0
- package/dist/client/assets/{settings.computer-use-CeLystec.js → settings.computer-use-DpcKtt2q.js} +2 -2
- package/dist/client/assets/settings.connections-RKFcKfpz.js +2 -0
- package/dist/client/assets/{settings.data-controls-D607JRzk.js → settings.data-controls-NjUH57Fr.js} +2 -2
- package/dist/client/assets/{settings.decisions-C0aFb-Kn.js → settings.decisions-B-HjeKFr.js} +2 -2
- package/dist/client/assets/{settings.designs-DLcNkfmF.js → settings.designs-DWbfEcuK.js} +2 -2
- package/dist/client/assets/{settings.diagnostics-Bk9ZlqSV.js → settings.diagnostics-DY7e0sc8.js} +2 -2
- package/dist/client/assets/settings.general-dsLXGi9j.js +2 -0
- package/dist/client/assets/settings.integrations-BLYy6l0O.js +2 -0
- package/dist/client/assets/{settings.keybindings-B6cKpR8G.js → settings.keybindings-Bcl4KxN4.js} +2 -2
- package/dist/client/assets/{settings.open-source-licenses-Cdo94wbK.js → settings.open-source-licenses-ZP9ezdc4.js} +2 -2
- package/dist/client/assets/{settings.plugins-B1SQQuJ1.js → settings.plugins-JjZ7Ptzj.js} +4 -4
- package/dist/client/assets/settings.projects-DhhMAw0F.js +4 -0
- package/dist/client/assets/settings.providers-sowFjazx.js +3 -0
- package/dist/client/assets/settings.scheduled-tasks-BIfprPPD.js +2 -0
- package/dist/client/assets/{settings.snap-shot-Dvf_zwkG.js → settings.snap-shot-B1go--dA.js} +2 -2
- package/dist/client/assets/{settings.source-control-twI2L8vl.js → settings.source-control-BL1tH7qk.js} +2 -2
- package/dist/client/assets/{settings.storage-af4E8nEQ.js → settings.storage-Bt_7LmzS.js} +2 -2
- package/dist/client/assets/{settingsLayout-BloLque1.js → settingsLayout-DaLF8Hfm.js} +3 -3
- package/dist/client/assets/{sidebar-CV_a9dPF.js → sidebar-BopQa8qy.js} +2 -2
- package/dist/client/assets/{sidebarProjectGrouping-DwnHgZqz.js → sidebarProjectGrouping-DQInVNnY.js} +2 -2
- package/dist/client/assets/{skeleton-Bq50sEah.js → skeleton-CzpSBxtu.js} +2 -2
- package/dist/client/assets/{sourceControl-wI790oDs.js → sourceControl-B9T0IPlu.js} +2 -2
- package/dist/client/assets/{sourceControlClients-CKlG76Mu.js → sourceControlClients-BgBu2ayZ.js} +2 -2
- package/dist/client/assets/{spinner-Bzrp5oww.js → spinner-BkmZz-kc.js} +2 -2
- package/dist/client/assets/square-plus-B9j2jkOq.js +2 -0
- package/dist/client/assets/{standalone-page-BGqmgLmI.js → standalone-page-CpVawPkl.js} +2 -2
- package/dist/client/assets/{stateDiagram-D77RDMKH-D8v7Nh9y.js → stateDiagram-D77RDMKH-B032MgyK.js} +2 -2
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CEPamUoD.js +2 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-8aPT3vMS.js → swimlanes-42K2YHIH-Bn6WbS8G.js} +2 -2
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-D1eJox12.js +9 -0
- package/dist/client/assets/{terminal-links-DHw7nXFF.js → terminal-links-D1lZWzBL.js} +2 -2
- package/dist/client/assets/{terminalSessions-BVJWTQ-r.js → terminalSessions-BjIB3wg1.js} +2 -2
- package/dist/client/assets/{textarea-wDfYVvpo.js → textarea-UGuOTqiM.js} +2 -2
- package/dist/client/assets/{themePalette-CLR_iiPi.js → themePalette-DELPwUM7.js} +2 -2
- package/dist/client/assets/{timeline-definition-24CTP7MA-qKze8CmD.js → timeline-definition-24CTP7MA-RGCq2eyK.js} +2 -2
- package/dist/client/assets/toast-B2B2ECBW.js +2 -0
- package/dist/client/assets/{toggle-ExdxBJoI.js → toggle-DTjg9Rvs.js} +2 -2
- package/dist/client/assets/{toggle-group-Clz6KDtW.js → toggle-group--s5MIuQv.js} +2 -2
- package/dist/client/assets/{tooltip-D-SzZpgJ.js → tooltip-CuJiZzK7.js} +2 -2
- package/dist/client/assets/{treeView-Q6P3EWNA-DHv3H0LY.js → treeView-Q6P3EWNA-CkhQE3UU.js} +1 -1
- package/dist/client/assets/{treemap-WGGIJYW6-B3OEzWME.js → treemap-WGGIJYW6-DjBfz9t-.js} +1 -1
- package/dist/client/assets/{uiStateStore-DBCETYy3.js → uiStateStore-TZf81BHB.js} +2 -2
- package/dist/client/assets/usage-Dp-M0_Do.js +2 -0
- package/dist/client/assets/{usageAccess-ZgmQIiWk.js → usageAccess-CkJJNWUS.js} +2 -2
- package/dist/client/assets/{usageFormat-C54RJiV9.js → usageFormat-CUKLjyKC.js} +2 -2
- package/dist/client/assets/{usageShortcuts-B3af64g0.js → usageShortcuts-DMVEjVe8.js} +2 -2
- package/dist/client/assets/{use-atom-command-BCNOgemk.js → use-atom-command-BWLbyoVN.js} +2 -2
- package/dist/client/assets/{useAriaLabelledBy-BG5RCb1o.js → useAriaLabelledBy-B4zsIPk4.js} +2 -2
- package/dist/client/assets/{useHandleNewThread-B116cHue.js → useHandleNewThread-DLupIP68.js} +2 -2
- package/dist/client/assets/{useLocation-7uJHNdPS.js → useLocation-XbiRdmmb.js} +2 -2
- package/dist/client/assets/useNavigate-CSxB1zLo.js +2 -0
- package/dist/client/assets/{useNavigateBack-DpCLZais.js → useNavigateBack-BDMTgSKu.js} +2 -2
- package/dist/client/assets/{useP4ConnectAuthPrompt-qVqxcT08.js → useP4ConnectAuthPrompt-C18iYCzm.js} +2 -2
- package/dist/client/assets/{useParams-Br7l7qPU.js → useParams-DNmNCHjx.js} +2 -2
- package/dist/client/assets/{usePermissionStatus-SyBwmFSK.js → usePermissionStatus-DBybaxyT.js} +2 -2
- package/dist/client/assets/{usePullRequestActions-CdOseawP.js → usePullRequestActions-CWCz_AQW.js} +3 -3
- package/dist/client/assets/{useRegisterFieldControl-qXOWsCr5.js → useRegisterFieldControl-Cuo8UAhZ.js} +2 -2
- package/dist/client/assets/useScopedModelAvailability-D1MGYLGR.js +2 -0
- package/dist/client/assets/useSettings-BEKkRzL1.js +3 -0
- package/dist/client/assets/utils-B0w8dSf5.js +37 -0
- package/dist/client/assets/{vcsRefInvalidation-BPBh7p3I.js → vcsRefInvalidation-Dx_cpFEA.js} +2 -2
- package/dist/client/assets/{vennDiagram-4TSXK5OY-Yh5vCDok.js → vennDiagram-4TSXK5OY-D0wsDnkf.js} +2 -2
- package/dist/client/assets/{wardley-WFR3VGLG-BeDK7hdA.js → wardley-WFR3VGLG-BT7dOBGA.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-BXdOv1zU.js → wardleyDiagram-VM6X3IG4-CgbZOhZ-.js} +2 -2
- package/dist/client/assets/{welcome-wbx9XdLq.js → welcome-D3Kttsfe.js} +2 -2
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-mciO_D_V.js → xychartDiagram-S5SC5T6Z-D3RW49u7.js} +2 -2
- package/dist/client/index.html +1 -1
- package/package.json +1 -1
- package/dist/client/assets/AlertDialogRoot-Cc8kVCUa.js +0 -2
- package/dist/client/assets/ChatMarkdown-1bLgD-eb.js +0 -65
- package/dist/client/assets/ComposerPromptEditor-C462LHSn.js +0 -204
- package/dist/client/assets/DevicePanel-DoPmTqL7.js +0 -2
- package/dist/client/assets/DiffPanel-DKvM9n17.js +0 -2
- package/dist/client/assets/Input-B0ah2lnC.js +0 -2
- package/dist/client/assets/PanelLayoutControls-CJ69MZ4v.js +0 -216
- package/dist/client/assets/PreviewPanel-pImDpkWH.js +0 -2
- package/dist/client/assets/ProjectDefaultsSettings-DY_6-1vn.js +0 -2
- package/dist/client/assets/ProviderModelPicker-DqLbhWdo.js +0 -2
- package/dist/client/assets/ScheduledTasksSettings-DY0ICix9.js +0 -4
- package/dist/client/assets/TooltipViewport-DJ2VRKCt.js +0 -2
- package/dist/client/assets/_chat-CWIHenSN.js +0 -45
- package/dist/client/assets/_chat.pull-requests-BVZO85Vs.js +0 -2
- package/dist/client/assets/architecture-7GRP2DOG-ZioZXeD8.js +0 -1
- package/dist/client/assets/channel-BY4Mhil-.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-VEcRygcq.js +0 -2
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-VEcRygcq.js +0 -2
- package/dist/client/assets/eventmodeling-NTZA5JFV-CFX4D-ej.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-fTwgLjbL.js +0 -1
- package/dist/client/assets/hat-glasses-XqtwpGM5.js +0 -2
- package/dist/client/assets/main-Dwir4BoC.css +0 -2
- package/dist/client/assets/number-field-Dj0uYTJQ.js +0 -2
- package/dist/client/assets/primary-CREvWUGh.js +0 -2
- package/dist/client/assets/queries-BJzayyNh.js +0 -2
- package/dist/client/assets/query-BFP47tsD.js +0 -2
- package/dist/client/assets/railroad-abnf-HS5TGJTU-CyBZRJjf.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-7jpgdtqn.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-Bhvv4cdb.js +0 -1
- package/dist/client/assets/runtimeModeConfig-sQBlbgY3.js +0 -2
- package/dist/client/assets/settings.appearance-BGApKe_v.js +0 -2
- package/dist/client/assets/settings.archived-QGKwBjUx.js +0 -2
- package/dist/client/assets/settings.connections-56mhuPd9.js +0 -2
- package/dist/client/assets/settings.general-D8pNduE9.js +0 -2
- package/dist/client/assets/settings.integrations-CyPCeqvd.js +0 -2
- package/dist/client/assets/settings.projects-HuCRzR1Z.js +0 -4
- package/dist/client/assets/settings.providers-BsfVxPA5.js +0 -3
- package/dist/client/assets/settings.scheduled-tasks-Chug6jlO.js +0 -2
- package/dist/client/assets/square-plus-CeFmBUPF.js +0 -2
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DymT6Xtk.js +0 -2
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CjvsefHc.js +0 -9
- package/dist/client/assets/toast-CfeQA1vM.js +0 -2
- package/dist/client/assets/usage-C4KIRe38.js +0 -2
- package/dist/client/assets/useNavigate-DCj963r2.js +0 -2
- package/dist/client/assets/useScopedModelAvailability-DL2tq_KI.js +0 -2
- package/dist/client/assets/useSettings-DkjziVJm.js +0 -3
- package/dist/client/assets/utils-hgbJ2TVM.js +0 -37
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{r as t}from"./Icon-l19w4AjM.js";import{$n as n,$o as r
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{r as t}from"./Icon-l19w4AjM.js";import{$n as n,$o as r,BE as i,Bp as a,Es as o,Fw as s,Jp as c,Kn as l,Om as u,RT as d,Up as f,Zn as p,Zu as m,a_ as h,cr as g,dd as _,e_ as v,em as y,gp as b,i_ as x,im as S,l as C,lb as w,lr as T,mE as E,n_ as D,o_ as O,qn as k,r_ as A,s_ as j,t as M,t_ as N,xd as P,zp as F}from"./utils-B0w8dSf5.js";import{n as I}from"./ChatMarkdown-B_7CYt1t.js";import{a as L,c as R,o as z,s as B,t as V}from"./select-CqPGedM1.js";import{t as H}from"./useLocation-XbiRdmmb.js";import{p as U}from"./toast-B2B2ECBW.js";import{C as W}from"./useSettings-BEKkRzL1.js";import{f as G}from"./server-C8OpoOTL.js";import{t as K}from"./use-atom-command-BWLbyoVN.js";import{s as q,u as ee}from"./providerSkills-waACvYAJ.js";import{a as J,n as te,t as ne}from"./tooltip-CuJiZzK7.js";import{t as re}from"./skeleton-CzpSBxtu.js";import{t as ie}from"./textarea-UGuOTqiM.js";import{n as ae,t as oe}from"./toggle-group--s5MIuQv.js";import{t as se}from"./input-CDBTiBJx.js";import{c as ce,r as le,s as ue,t as de}from"./dialog-Bdi4gsq5.js";import{i as fe,o as pe,r as me,t as he}from"./empty-DeLw5x6B.js";import{n as ge,r as _e,t as ve}from"./input-group-CHJvPXpi.js";import{a as ye}from"./projectFilesQueryState-DM9_vSRA.js";import{B as be,P as xe,U as Se,a as Ce,i as we,s as Te}from"./settingsLayout-DaLF8Hfm.js";import{Ar as Ee,Dr as De,Mr as Oe,Nr as ke,Or as Ae,jr as je,kr as Me,pa as Ne,pi as Pe,tr as Fe}from"./main-BgKiw-9f.js";import{t as Ie}from"./SecretInput-aXfqfjLk.js";var Y=i(),Le={spawn:`Failed to start`,timeout:`Timed out`,protocol:`Not an MCP server`,http:`Can't connect`,auth:`Credentials rejected`};function Re(e,t,n){if(!e.enabled)return{tone:`muted`,label:`Off`,needsSignIn:!1};if(n)return{tone:`muted`,label:`Checking…`,needsSignIn:!1};if(e.transport.type===`http`&&e.transport.auth===`oauth`&&t?.auth===`signed-out`)return{tone:`warning`,label:`Needs sign-in`,needsSignIn:!0};let r=t?.health;switch(r?.status){case`connected`:return{tone:`success`,label:`Connected · ${r.toolCount} ${r.toolCount===1?`tool`:`tools`}`,needsSignIn:!1};case`needs-auth`:return{tone:`warning`,label:`Needs sign-in`,needsSignIn:!0};case`error`:return{tone:`error`,label:Le[r.category],detail:r.message,needsSignIn:!1};default:return t?.auth===`signed-in`?{tone:`success`,label:`Signed in`,needsSignIn:!1}:{tone:`muted`,label:`Not checked`,needsSignIn:!1}}}function ze(e){let t=e.transport;if(t.type===`http`)try{let e=new URL(t.url);return`Remote · ${e.host}${e.pathname===`/`?``:e.pathname}`}catch{return`Remote`}return[t.command,...t.args].join(` `)}var X=e(t(),1),Z=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Be=e=>typeof e==`string`&&e.trim()?e:void 0,Ve=e=>{if(e!==null)try{let t=JSON.parse(e);return Z(t)?t:void 0}catch{return}},He=e=>{let t=Be(e)?.replace(/^\.\//,``);if(t!==void 0&&t.toLowerCase().endsWith(`.svg`)&&!(t.startsWith(`/`)||t.split(/[\\/]/).includes(`..`)))return t};function Ue(e,t){let n=Ve(e),r=Ve(t),i=Z(r?.interface)?r.interface:void 0,a=n?.author??r?.author,o={displayName:Be(n?.displayName)??Be(i?.displayName),description:Be(n?.description)??Be(r?.description),publisher:Be(a)??(Z(a)?Be(a.name):void 0),iconPath:He(n?.icon)??He(i?.logo)??He(i?.composerIcon)};return Object.fromEntries(Object.entries(o).filter(([,e])=>e!==void 0))}function We(e){let t=Ve(e)?.userConfig;return Z(t)?Object.entries(t).map(([e,t])=>{let n=Z(t)?t:{},r=Be(n.description);return{key:e,title:Be(n.title)??e,...r===void 0?{}:{description:r},required:n.required===!0}}):[]}var Q=e(E(),1),Ge=e=>{let t=d(o(e));return t&&!t.truncated?t.contents:null};function Ke(e){let t=(0,Y.c)(48),{environmentId:i,plugin:a,enabled:o,disabled:s,onDetails:c,onToggle:l}=e,u;t[0]!==i||t[1]!==a.path?(u=ye(i,a.path,`.claude-plugin/plugin.json`),t[0]=i,t[1]=a.path,t[2]=u):u=t[2];let d=r(u),m;t[3]!==i||t[4]!==a.path?(m=ye(i,a.path,`.codex-plugin/plugin.json`),t[3]=i,t[4]=a.path,t[5]=m):m=t[5];let h=r(m),{displayName:_,description:v,publisher:y,iconPath:x}=Ue(Ge(d),Ge(h)),S=Ge(r(ye(i,a.path,x??null))),C=x&&S?.trimStart().startsWith(`<`)?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(S)}`:null,w=ee(i),E;t[6]===C?E=t[7]:(E=(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`flex size-10 shrink-0 items-center justify-center rounded-xl border border-border/60 bg-muted`,children:C?(0,Q.jsx)(`img`,{src:C,alt:``,className:`size-6 object-contain`}):(0,Q.jsx)(f,{className:`size-5 text-muted-foreground`})}),t[6]=C,t[7]=E);let D=_??a.name,O;t[8]===D?O=t[9]:(O=(0,Q.jsx)(`span`,{className:`break-words text-sm font-medium`,children:D}),t[8]=D,t[9]=O);let A;t[10]===y?A=t[11]:(A=y?(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:y}):null,t[10]=y,t[11]=A);let j;t[12]!==O||t[13]!==A?(j=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[O,A]}),t[12]=O,t[13]=A,t[14]=j):j=t[14];let M=v??`Local plugin`,N;t[15]===M?N=t[16]:(N=(0,Q.jsx)(`p`,{className:`break-words text-xs text-muted-foreground`,children:M}),t[15]=M,t[16]=N);let P;t[17]!==j||t[18]!==N?(P=(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[j,N]}),t[17]=j,t[18]=N,t[19]=P):P=t[19];let F=`More for ${a.name}`,I;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,Q.jsx)(b,{"aria-hidden":!0}),t[20]=I):I=t[20];let L;t[21]===F?L=t[22]:(L=(0,Q.jsx)(J,{render:(0,Q.jsx)(g,{render:(0,Q.jsx)(T,{variant:`ghost`,size:`icon-sm`,"aria-label":F,children:I})})}),t[21]=F,t[22]=L);let R;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,Q.jsx)(te,{children:`Plugin actions`}),t[23]=R):R=t[23];let z;t[24]===L?z=t[25]:(z=(0,Q.jsxs)(ne,{children:[L,R]}),t[24]=L,t[25]=z);let B;t[26]!==i||t[27]!==w||t[28]!==a.path?(B=w.capabilities.canOpenDefault?(0,Q.jsx)(p,{onClick:()=>void w.activate(`open`,{environmentId:i,filePath:a.path,workspaceRoot:void 0}),children:`Open`}):null,t[26]=i,t[27]=w,t[28]=a.path,t[29]=B):B=t[29];let V;t[30]===c?V=t[31]:(V=(0,Q.jsx)(p,{onClick:c,children:`Details`}),t[30]=c,t[31]=V);let H;t[32]!==B||t[33]!==V?(H=(0,Q.jsxs)(n,{align:`end`,children:[B,V]}),t[32]=B,t[33]=V,t[34]=H):H=t[34];let U;t[35]!==z||t[36]!==H?(U=(0,Q.jsxs)(k,{children:[z,H]}),t[35]=z,t[36]=H,t[37]=U):U=t[37];let W=`Load ${a.name}`,G;t[38]!==s||t[39]!==o||t[40]!==l||t[41]!==W?(G=(0,Q.jsx)(Ne,{"aria-label":W,checked:o,disabled:s,onCheckedChange:l}),t[38]=s,t[39]=o,t[40]=l,t[41]=W,t[42]=G):G=t[42];let K;return t[43]!==P||t[44]!==U||t[45]!==G||t[46]!==E?(K=(0,Q.jsxs)(`li`,{className:`flex items-center gap-4 py-4`,children:[E,P,U,G]}),t[43]=P,t[44]=U,t[45]=G,t[46]=E,t[47]=K):K=t[47],K}var qe=[`Personal`,`Built-in`,`Project`,`Plugins`,`Other`];function Je(e){switch(q(e)){case`personal`:return`Personal`;case`system`:return`Built-in`;case`repo`:case`project`:return`Project`;case`app`:return`Plugins`;default:return`Other`}}var Ye=[[`codex`,`Codex`],[`claudeAgent`,`Claude`],[`cursor`,`Cursor`],[`grok`,`Grok`],[`antigravity`,`Antigravity`],[`opencode`,`OpenCode`],[`muse`,`Muse`],[`pi`,`Pi`]],Xe={remote:`Remote servers aren't supported by this provider`,"working-directory":`Servers with a working directory aren't supported here`,provider:`Not supported by this provider yet`};function Ze(e){return Ye.find(([t])=>t===e)?.[1]??e}function Qe(e){switch(e){case`signed-in`:return`Signed in`;case`signed-out`:return`Not signed in`;case`unavailable`:return`Add this server to the provider's own MCP config to sign in.`;case`unknown`:return`Sign-in status unknown`}}function $e(e,t){if(!h(e))return`unavailable`;let n=t.filter(t=>t.driver===e);if(n.some(e=>e.status===`signed-in`))return`signed-in`;if(n.some(e=>e.status===`signed-out`))return`needs-sign-in`}function et(e){return Ye.map(([t,n])=>{let r=A(t,e.transport),i=j.make(t);return{driver:i,label:n,enabled:r.supported&&!e.disabledProviders.includes(i),...r.supported?{}:{unsupported:Xe[r.reason]}}})}var tt={name:``,type:`stdio`,command:``,args:``,cwd:``,url:``,auth:`none`,values:[]};function nt(e){let t=e.transport;return t.type===`stdio`?{...tt,name:e.name,type:`stdio`,command:t.command,args:t.args.join(`
|
|
2
2
|
`),cwd:t.cwd??``,values:Object.entries(t.env).map(([e,t])=>({key:e,value:t}))}:{...tt,name:e.name,type:`http`,url:t.url,auth:t.auth,values:Object.entries(t.headers).map(([e,t])=>({key:e,value:t}))}}var rt=/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;function it(e,t){let n=e.name.trim();if(!n)return`Enter a name.`;if(!rt.test(n)||n.length>64)return`Use letters, numbers, dashes, and underscores.`;if(n===`p4-code`)return`That name belongs to P4 Code's own server.`;if(t.has(n))return`Another server already uses that name.`;if(e.type===`stdio`&&!e.command.trim())return`Enter the command that starts it.`;if(e.type===`http`&&!/^https?:\/\/\S+$/i.test(e.url.trim()))return`Enter an http or https URL.`}function at(e,t){let n=Object.fromEntries(e.values.map(e=>[e.key.trim(),e.value]).filter(([e])=>e.length>0)),r=e.type===`stdio`?{type:`stdio`,command:e.command.trim(),args:e.args.split(`
|
|
3
|
-
`).map(e=>e.trim()).filter(e=>e.length>0),env:n,...e.cwd.trim()?{cwd:e.cwd.trim()}:{}}:{type:`http`,url:e.url.trim(),headers:n,auth:e.auth};return{name:e.name.trim(),enabled:t?.enabled??!0,transport:r,disabledProviders:t?.disabledProviders??[],...t?.source===void 0?{}:{source:t.source}}}function ot(e){let t=new Map;for(let n of e){let e=n.displayName??n.driver;for(let r of n.skills){let n=`${r.scope??``}\u0000${r.name}`,i=t.get(n);i===void 0?t.set(n,{skill:r,providers:[e]}):i.providers.includes(e)||i.providers.push(e)}}return[...t.values()].toSorted((e,t)=>st(e.skill).localeCompare(st(t.skill)))}var st=e=>e.displayName??e.name.split(/[-_\s]+/).filter(e=>e.length>0).map(e=>e[0].toUpperCase()+e.slice(1)).join(` `);function ct(e){switch(e){case void 0:return;case`user`:return`Personal`;case`project`:case`repo`:return`Project`;case`system`:return`Built-in`;default:return e[0].toUpperCase()+e.slice(1)}}function lt(e){let t=/^---\r?\n[\s\S]*?\r?\n---\r?\n?/.exec(e);return(t===null?e:e.slice(t[0].length)).trimStart()}function ut(e){let t=(0,Y.c)(14),{title:n,onBack:r,onUninstall:i,children:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Q.jsx)(m,{"aria-hidden":!0}),t[0]=o):o=t[0];let s;t[1]===r?s=t[2]:(s=(0,Q.jsxs)(
|
|
4
|
-
@modelcontextprotocol/server-postgres`,value:s.args,onChange:e=>y({args:e.target.value})})}),(0,Q.jsx)($,{label:`Working directory (optional)`,htmlFor:`mcp-server-cwd`,children:(0,Q.jsx)(se,{id:`mcp-server-cwd`,placeholder:`The session's project folder`,value:s.cwd,onChange:e=>y({cwd:e.target.value})})})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{label:`URL`,htmlFor:`mcp-server-url`,children:(0,Q.jsx)(se,{id:`mcp-server-url`,placeholder:`https://mcp.example.com/mcp`,value:s.url,onChange:e=>y({url:e.target.value})})}),(0,Q.jsx)($,{label:`Authentication`,children:(0,Q.jsxs)(V,{value:s.auth,onValueChange:e=>{(e===`none`||e===`oauth`)&&y({auth:e})},children:[(0,Q.jsx)(B,{"aria-label":`Authentication`,children:(0,Q.jsx)(R,{children:ft})}),(0,Q.jsxs)(z,{alignItemWithTrigger:!1,children:[(0,Q.jsx)(L,{value:`none`,children:`None or headers`}),(0,Q.jsx)(L,{value:`oauth`,children:`OAuth (sign in after saving)`})]})]})})]}),t[26]=s.args,t[27]=s.auth,t[28]=s.command,t[29]=s.cwd,t[30]=s.type,t[31]=s.url,t[32]=k):k=t[32];let A;t[33]!==s.type||t[34]!==s.values||t[35]!==S||t[36]!==b?(A=s.values.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(se,{"aria-label":`${b} name`,placeholder:s.type===`stdio`?`API_TOKEN`:`Authorization`,value:e.key,onChange:e=>S(t,{key:e.target.value})}),(0,Q.jsx)(Ie,{"aria-label":`${b} value`,placeholder:`Value`,value:e.value,onChange:e=>S(t,{value:e.target.value})}),(0,Q.jsx)(C,{size:`icon-sm`,variant:`ghost`,"aria-label":`Remove ${e.key||`row`}`,onClick:()=>y({values:s.values.filter((e,n)=>n!==t)}),children:(0,Q.jsx)(l,{"aria-hidden":!0})})]},t)),t[33]=s.type,t[34]=s.values,t[35]=S,t[36]=b,t[37]=A):A=t[37];let j;t[38]===s.values?j=t[39]:(j=()=>y({values:[...s.values,{key:``,value:``}]}),t[38]=s.values,t[39]=j);let M;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,Q.jsx)(F,{"aria-hidden":!0}),t[40]=M):M=t[40];let N=s.type===`stdio`?`variable`:`header`,P;t[41]!==j||t[42]!==N?(P=(0,Q.jsxs)(C,{variant:`soft`,onClick:j,children:[M,`Add `,N]}),t[41]=j,t[42]=N,t[43]=P):P=t[43];let I;t[44]!==A||t[45]!==P?(I=(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[A,P]}),t[44]=A,t[45]=P,t[46]=I):I=t[46];let H;t[47]!==I||t[48]!==b?(H=(0,Q.jsx)($,{label:b,children:I}),t[47]=I,t[48]=b,t[49]=H):H=t[49];let U;t[50]!==D||t[51]!==O||t[52]!==k||t[53]!==H?(U=(0,Q.jsxs)(Se,{children:[D,O,k,H]}),t[50]=D,t[51]=O,t[52]=k,t[53]=H,t[54]=U):U=t[54];let W;t[55]!==_||t[56]!==h?(W=_&&h!==void 0?(0,Q.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive-foreground`,children:h}):null,t[55]=_,t[56]=h,t[57]=W):W=t[57];let G=!_||h!==void 0,K=n===void 0?`Add server`:`Save`,q;t[58]!==G||t[59]!==K?(q=(0,Q.jsx)(C,{type:`submit`,disabled:G,children:K}),t[58]=G,t[59]=K,t[60]=q):q=t[60];let ee;t[61]!==W||t[62]!==q?(ee=(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[W,q]}),t[61]=W,t[62]=q,t[63]=ee):ee=t[63];let J;return t[64]!==U||t[65]!==ee||t[66]!==w||t[67]!==T?(J=(0,Q.jsxs)(`form`,{className:`grid gap-3`,onSubmit:w,children:[T,U,ee]}),t[64]=U,t[65]=ee,t[66]=w,t[67]=T,t[68]=J):J=t[68],J}function ft(e){return e===`oauth`?`OAuth (sign in after saving)`:`None or headers`}function pt(e){let t=(0,Y.c)(55),{environmentId:n,plugin:i,environmentLabel:o,onSave:s}=e,c=i?.path??``,l=i===void 0?null:`.claude-plugin/plugin.json`,u;t[0]!==n||t[1]!==c||t[2]!==l?(u=ye(n,c,l),t[0]=n,t[1]=c,t[2]=l,t[3]=u):u=t[3];let f=d(a(r(u))),p=We(i!==void 0&&f!==null&&!f.truncated?f.contents:null),m;t[4]===i?.options?m=t[5]:(m=i?.options??{},t[4]=i?.options,t[5]=m);let h=m,g=[...p,...Object.keys(h).filter(e=>!p.some(t=>t.key===e)).map(ht)],[_,v]=(0,X.useState)(i?.name??``),[y,b]=(0,X.useState)(i?.path??``),[x,S]=(0,X.useState)(h),w;t[6]!==i?.name||t[7]!==i?.path||t[8]!==h?(w=JSON.stringify([i?.name??``,i?.path??``,h]),t[6]=i?.name,t[7]=i?.path,t[8]=h,t[9]=w):w=t[9];let T=w,[E,D]=(0,X.useState)(T);T!==E&&(D(T),v(i?.name??``),b(i?.path??``),S(h));let O,k;t[10]!==_||t[11]!==x||t[12]!==y||t[13]!==i?.name||t[14]!==i?.path||t[15]!==h?(O=Object.fromEntries(Object.entries(x).filter(mt)),k=_!==(i?.name??``)||y!==(i?.path??``)||JSON.stringify(O)!==JSON.stringify(h),t[10]=_,t[11]=x,t[12]=y,t[13]=i?.name,t[14]=i?.path,t[15]=h,t[16]=O,t[17]=k):(O=t[16],k=t[17]);let A=k,j;t[18]!==_||t[19]!==y?(j=_.trim().length>0&&y.trim().startsWith(`/`),t[18]=_,t[19]=y,t[20]=j):j=t[20];let M=j,N;t[21]!==A||t[22]!==_||t[23]!==O||t[24]!==s||t[25]!==y||t[26]!==i?.enabled||t[27]!==M?(N=e=>{e.preventDefault(),A&&M&&s({name:_.trim(),path:y.trim(),enabled:i?.enabled??!0,options:O})},t[21]=A,t[22]=_,t[23]=O,t[24]=s,t[25]=y,t[26]=i?.enabled,t[27]=M,t[28]=N):N=t[28];let P;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(P=e=>v(e.target.value),t[29]=P):P=t[29];let F;t[30]===_?F=t[31]:(F=(0,Q.jsx)($,{label:`Name`,htmlFor:`plugin-name`,children:(0,Q.jsx)(se,{id:`plugin-name`,value:_,onChange:P})}),t[30]=_,t[31]=F);let I=`Folder on ${o}`,L;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>b(e.target.value),t[32]=L):L=t[32];let R;t[33]===y?R=t[34]:(R=(0,Q.jsx)(se,{id:`plugin-path`,placeholder:`/Users/me/plugins/my-plugin`,value:y,onChange:L}),t[33]=y,t[34]=R);let z;t[35]!==I||t[36]!==R?(z=(0,Q.jsx)($,{label:I,htmlFor:`plugin-path`,children:R}),t[35]=I,t[36]=R,t[37]=z):z=t[37];let B=g.map(e=>(0,Q.jsx)($,{label:e.required?e.title:`${e.title} (optional)`,htmlFor:`plugin-option-${e.key}`,children:(0,Q.jsx)(Ie,{id:`plugin-option-${e.key}`,placeholder:`description`in e?e.description:void 0,value:x[e.key]??``,onChange:t=>S(n=>({...n,[e.key]:t.target.value}))})},e.key)),V;t[38]!==F||t[39]!==z||t[40]!==B?(V=(0,Q.jsxs)(Se,{children:[F,z,B]}),t[38]=F,t[39]=z,t[40]=B,t[41]=V):V=t[41];let H;t[42]!==A||t[43]!==M?(H=A&&!M?(0,Q.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive-foreground`,children:`Enter a name and the plugin folder's full path.`}):null,t[42]=A,t[43]=M,t[44]=H):H=t[44];let U=!A||!M,W=i===void 0?`Add plugin`:`Save`,G;t[45]!==U||t[46]!==W?(G=(0,Q.jsx)(C,{type:`submit`,disabled:U,children:W}),t[45]=U,t[46]=W,t[47]=G):G=t[47];let K;t[48]!==H||t[49]!==G?(K=(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[H,G]}),t[48]=H,t[49]=G,t[50]=K):K=t[50];let q;return t[51]!==V||t[52]!==K||t[53]!==N?(q=(0,Q.jsxs)(`form`,{className:`grid gap-3`,onSubmit:N,children:[V,K]}),t[51]=V,t[52]=K,t[53]=N,t[54]=q):q=t[54],q}function mt(e){let[,t]=e;return t}function ht(e){return{key:e,title:e,required:!1}}var gt=e=>e.replace(/[\\/][^\\/]*$/,``)||`/`;function _t(e){let t=(0,Y.c)(69),{entry:i,environmentId:o,onClose:s}=e,{skill:c,providers:l}=i,u,f,m;t[0]!==o||t[1]!==c.path?(u=gt(c.path),f=r,m=ye(o,u,c.path),t[0]=o,t[1]=c.path,t[2]=u,t[3]=f,t[4]=m):(u=t[2],f=t[3],m=t[4]);let h=f(m),v;t[5]===h?v=t[6]:(v=d(a(h)),t[5]=h,t[6]=v);let b=v,x=ee(o),{copyToClipboard:S}=U(),w;t[7]!==o||t[8]!==c.path?(w={environmentId:o,filePath:c.path,workspaceRoot:void 0},t[7]=o,t[8]=c.path,t[9]=w):w=t[9];let T=w,E=c.shortDescription??c.description,O;t[10]===c.scope?O=t[11]:(O=ct(c.scope),t[10]=c.scope,t[11]=O);let k=O,A;t[12]===s?A=t[13]:(A=e=>!e&&s(),t[12]=s,t[13]=A);let j;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`flex size-12 shrink-0 items-center justify-center rounded-full border border-border/60 text-muted-foreground`,children:(0,Q.jsx)(_,{className:`size-5`})}),t[14]=j):j=t[14];let M;t[15]===c?M=t[16]:(M=st(c),t[15]=c,t[16]=M);let N=`More for ${M}`,P;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Q.jsx)(y,{"aria-hidden":!0}),t[17]=P):P=t[17];let F;t[18]===N?F=t[19]:(F=(0,Q.jsx)(g,{render:(0,Q.jsx)(C,{size:`icon-sm`,variant:`ghost`,"aria-label":N,children:P})}),t[18]=N,t[19]=F);let L;t[20]!==x||t[21]!==T?(L=x.capabilities.canOpenDefault?(0,Q.jsx)(p,{onClick:()=>void x.activate(`open`,T),children:`Open`}):null,t[20]=x,t[21]=T,t[22]=L):L=t[22];let R;t[23]!==x||t[24]!==T?(R=x.capabilities.revealLabel?(0,Q.jsx)(p,{onClick:()=>void x.activate(`reveal-in-folder`,T),children:x.capabilities.revealLabel}):null,t[23]=x,t[24]=T,t[25]=R):R=t[25];let z=b===null,B;t[26]!==S||t[27]!==b?(B=()=>b&&S(b.contents,void 0),t[26]=S,t[27]=b,t[28]=B):B=t[28];let V;t[29]!==z||t[30]!==B?(V=(0,Q.jsx)(p,{disabled:z,onClick:B,children:`Copy Markdown`}),t[29]=z,t[30]=B,t[31]=V):V=t[31];let H;t[32]!==L||t[33]!==R||t[34]!==V?(H=(0,Q.jsxs)(n,{align:`end`,children:[L,R,V]}),t[32]=L,t[33]=R,t[34]=V,t[35]=H):H=t[35];let W;t[36]!==F||t[37]!==H?(W=(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 pe-8`,children:[j,(0,Q.jsxs)(D,{children:[F,H]})]}),t[36]=F,t[37]=H,t[38]=W):W=t[38];let G;t[39]===c?G=t[40]:(G=st(c),t[39]=c,t[40]=G);let K;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,Q.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`Skill`}),t[41]=K):K=t[41];let q;t[42]===G?q=t[43]:(q=(0,Q.jsxs)(ce,{children:[G,` `,K]}),t[42]=G,t[43]=q);let J;t[44]===E?J=t[45]:(J=E?(0,Q.jsx)(le,{children:E}):null,t[44]=E,t[45]=J);let te;t[46]!==q||t[47]!==J?(te=(0,Q.jsxs)(`div`,{className:`grid gap-1.5`,children:[q,J]}),t[46]=q,t[47]=J,t[48]=te):te=t[48];let ne;t[49]!==u||t[50]!==o||t[51]!==b||t[52]!==h?(ne=(0,Q.jsx)(`div`,{className:`max-h-[50vh] min-h-24 overflow-y-auto rounded-xl border border-border/60 bg-card/40 px-5 py-4`,children:b===null?h._tag===`Failure`?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This skill's file could not be read. It may have moved since the provider last scanned it.`}):(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(re,{className:`h-4 w-3/4`}),(0,Q.jsx)(re,{className:`h-4 w-full`}),(0,Q.jsx)(re,{className:`h-4 w-2/3`})]}):(0,Q.jsx)(I,{text:lt(b.contents),cwd:u,environmentId:o})}),t[49]=u,t[50]=o,t[51]=b,t[52]=h,t[53]=ne):ne=t[53];let ie;t[54]===l?ie=t[55]:(ie=l.join(`, `),t[54]=l,t[55]=ie);let ae=`Loaded by ${ie}`,oe;t[56]!==k||t[57]!==ae?(oe=[k,ae].filter(Boolean),t[56]=k,t[57]=ae,t[58]=oe):oe=t[58];let se=oe.join(` · `),fe;t[59]===se?fe=t[60]:(fe=(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:se}),t[59]=se,t[60]=fe);let pe;t[61]!==W||t[62]!==te||t[63]!==ne||t[64]!==fe?(pe=(0,Q.jsx)(ue,{className:`max-w-2xl`,children:(0,Q.jsxs)(`div`,{className:`grid min-h-0 gap-4 p-6`,children:[W,te,ne,fe]})}),t[61]=W,t[62]=te,t[63]=ne,t[64]=fe,t[65]=pe):pe=t[65];let me;return t[66]!==pe||t[67]!==A?(me=(0,Q.jsx)(de,{open:!0,onOpenChange:A,children:pe}),t[66]=pe,t[67]=A,t[68]=me):me=t[68],me}var vt={claude:`Claude`,codex:`Codex`,cursor:`Cursor`},yt={success:`bg-success`,warning:`bg-warning`,error:`bg-destructive`,muted:`bg-muted-foreground/40`},bt={success:`text-success-foreground`,warning:`text-warning-foreground`,error:`text-destructive-foreground`,muted:`text-muted-foreground`},xt=S(v);function St(e){let t=o(e);return xt(t)&&t.reason===`rejected`?`This server only lets apps it has approved sign in, and it refused P4 Code. Sign in with a provider below instead.`:`Sign-in could not start. Check the server URL, then try again.`}function Ct(e,t,n){return e.transport.type===`http`&&(e.transport.auth===`oauth`||n?.auth===`signed-in`||t.needsSignIn)}function wt(e){let t=(0,Y.c)(13),{status:n,className:r}=e,i=bt[n.tone],a;t[0]!==r||t[1]!==i?(a=M(`flex min-w-0 items-center gap-1.5 text-xs`,i,r),t[0]=r,t[1]=i,t[2]=a):a=t[2];let o=yt[n.tone],s;t[3]===o?s=t[4]:(s=M(`size-1.5 shrink-0 rounded-full`,o),t[3]=o,t[4]=s);let c;t[5]===s?c=t[6]:(c=(0,Q.jsx)(`span`,{"aria-hidden":!0,className:s}),t[5]=s,t[6]=c);let l;t[7]===n.label?l=t[8]:(l=(0,Q.jsx)(`span`,{className:`truncate`,children:n.label}),t[7]=n.label,t[8]=l);let u;return t[9]!==a||t[10]!==c||t[11]!==l?(u=(0,Q.jsxs)(`span`,{className:a,children:[c,l]}),t[9]=a,t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function Tt(){let e=(0,Y.c)(6),{environment:t,scope:n}=be(),r=t?.connection.phase===`connected`&&t.serverConfig!==null,i=r?t.environmentId:null,a=r&&t.serverConfig?.environment.capabilities.mcpRegistry===!0,o;return e[0]!==r||e[1]!==t||e[2]!==i||e[3]!==n||e[4]!==a?(o=(0,Q.jsx)(we,{width:`wide`,children:t===null||!r?(0,Q.jsx)(he,{children:(0,Q.jsxs)(fe,{children:[(0,Q.jsx)(pe,{children:`Connect to manage plugins and MCP servers`}),(0,Q.jsx)(me,{children:`They live on each environment. Choose a connected one above.`})]})}):!a||i===null?(0,Q.jsx)(he,{children:(0,Q.jsxs)(fe,{children:[(0,Q.jsxs)(pe,{children:[`Update `,t.label,` to manage plugins and MCP servers`]}),(0,Q.jsx)(me,{children:`This environment runs a version without them.`})]})}):(0,Q.jsx)(kt,{environmentId:i,environmentLabel:t.label,projectId:n.kind===`checkout`?n.checkout.id:n.kind===`project`?n.members.find(e=>e.environmentId===i)?.id:void 0,projectLabel:n.kind===`project`||n.kind===`checkout`?n.label:void 0},i)}),e[0]=r,e[1]=t,e[2]=i,e[3]=n,e[4]=a,e[5]=o):o=e[5],o}var Et={plugins:`Search plugins`,mcps:`Search MCP servers`,skills:`Search skills`},Dt=(e,...t)=>e===``||t.some(t=>t.toLowerCase().includes(e));function Ot(e){let t=(0,Y.c)(9),{text:n}=e,r=(0,X.useRef)(null),[i,a]=(0,X.useState)(!1),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=e=>{let t=r.current;a(e&&t!==null&&t.scrollWidth>t.clientWidth)},t[0]=o):o=t[0];let s;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Q.jsx)(`span`,{ref:r,tabIndex:0,className:`block truncate text-xs text-muted-foreground`}),t[1]=s):s=t[1];let c,l;t[2]===n?(c=t[3],l=t[4]):(c=(0,Q.jsx)(J,{render:s,children:n}),l=(0,Q.jsx)(te,{children:n}),t[2]=n,t[3]=c,t[4]=l);let u;return t[5]!==i||t[6]!==c||t[7]!==l?(u=(0,Q.jsxs)(ne,{open:i,onOpenChange:o,children:[c,l]}),t[5]=i,t[6]=c,t[7]=l,t[8]=u):u=t[8],u}function kt({environmentId:e,environmentLabel:t,projectId:a,projectLabel:o}){let c=H({select:e=>e.hash}),[l,u]=(0,X.useState)(()=>c.replace(/^#/,``)===`mcp-servers`?`mcps`:c.replace(/^#/,``)===`skills`?`skills`:`plugins`),[d,m]=(0,X.useState)(``),[h,v]=(0,X.useState)(`All categories`),S=r(G.configValueAtom(e))?.providers,w=(0,X.useMemo)(()=>ot(S??[]),[S]),[k,j]=(0,X.useState)(null),M=xe(e=>e.mcpServers),F=xe(e=>e.plugins),I=xe(e=>e.projectSettingsOverrides),U=xe(e=>e.skillOverrides),q=ee(e),re=r(G.updateSettings.permissionAtom(e)),[ie,se]=(0,X.useState)(null),ce=r(G.mcpRegistryTest.permissionAtom(e)),le=W(e),ue=K(G.updateSettings,{label:`update MCP registry`,reportFailure:!0}),de=K(G.mcpRegistryState,{reportFailure:!1}),fe=K(G.mcpRegistryTest,{label:`check MCP server`,reportFailure:!0}),pe=K(G.mcpRegistryOAuthStart,{label:`start MCP sign-in`,reportFailure:!0}),me=K(G.mcpRegistryOAuthSignOut,{label:`sign out of MCP server`,reportFailure:!0}),he=K(G.mcpRegistryDiscover,{reportFailure:!1}),ye=K(G.mcpRegistryImport,{label:`import MCP servers`,reportFailure:!0}),[be,Se]=(0,X.useState)({}),[Ce,we]=(0,X.useState)(new Set),[Pe,Ie]=(0,X.useState)([]),[Y,Le]=(0,X.useState)({kind:`list`}),Z=Y.kind!==`list`&&Y.id!==null&&(Y.kind===`server`?M[Y.id]===void 0:F[Y.id]===void 0)?{kind:`list`}:Y,[Be,Ve]=(0,X.useState)(c);if(c!==Be){Ve(c);let e=c.replace(/^#/,``);(e===`mcp-servers`||e===`plugins`||e===`skills`)&&(u(e===`mcp-servers`?`mcps`:e),Le({kind:`list`}))}let[He,Ue]=(0,X.useState)(null),We=(0,X.useRef)(new Map),[Ge,Ye]=(0,X.useState)(null),[Xe,Ze]=(0,X.useState)({}),Qe=(0,X.useMemo)(()=>Object.entries(M).map(([e,t])=>[N.make(e),t]).toSorted(([,e],[,t])=>e.name.localeCompare(t.name)),[M]),$e=(0,X.useMemo)(()=>Object.entries(F).map(([e,t])=>[T.make(e),t]),[F]),et=(0,X.useCallback)(async()=>{let t=await de({environmentId:e,input:{}});t._tag===`Success`&&Se(t.value.servers)},[e,de]),tt=(0,X.useCallback)(async()=>{if(!ce)return;let t=await he({environmentId:e,input:a===void 0?{}:{projectId:a}});t._tag===`Success`&&Ie(t.value.servers)},[ce,he,e,a]);(0,X.useEffect)(()=>{et(),tt()},[et,tt]);let nt=e=>{u(`mcps`),Le({kind:`server`,id:e})},rt=e=>{u(`plugins`),Le({kind:`plugin`,id:e})},it=t=>ue({environmentId:e,input:{patch:t}}),at=async t=>{we(e=>new Set(e).add(t));let n=await fe({environmentId:e,input:{serverId:t}});if(we(e=>{let n=new Set(e);return n.delete(t),n}),n._tag===`Success`)return Se(e=>({...e,[t]:n.value})),n.value},ct=(0,X.useEffectEvent)(async e=>{(await at(e))?.health.status===`connected`&&Ye(null)});(0,X.useEffect)(()=>{if(Ge===null)return;let e=()=>void ct(Ge);return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[Ge]);let lt=async(e,t,n)=>{(await it({mcpServers:{[e]:t}}))._tag===`Success`&&(n&&Le({kind:`list`}),tt(),t.enabled&&await at(e))},$=async(t,n=!1)=>{let r=We.current.get(t);if(!n&&Ge===t&&r){window.open(r,`_blank`,`noopener,noreferrer`);return}let i=le??window.location.origin;Ze(e=>{let n={...e};return delete n[t],n});let a=await pe({environmentId:e,input:{serverId:t,origin:new URL(i,window.location.href).origin,...n?{reauthenticate:n}:{}}});if(a._tag!==`Success`){a._tag===`Failure`&&Ze(e=>({...e,[t]:St(a.cause)}));return}if(a.value.authorizationUrl===null){await at(t);return}We.current.set(t,a.value.authorizationUrl),Ye(t),window.open(a.value.authorizationUrl,`_blank`,`noopener,noreferrer`)},ft=async t=>{let n=await me({environmentId:e,input:{serverId:t}});n._tag===`Success`&&Se(e=>({...e,[t]:n.value}))},mt=(e,t,n)=>{if(a===void 0)return;let r=I[a]??{},i={...r[e]};n===void 0?delete i[t]:i[t]={enabled:n},it({projectSettingsOverrides:{[a]:{...r,[e]:i}}})},ht=async()=>{let t=He;if(Ue(null),t!==null){if(t.kind===`server`){let n=M[t.id];n?.transport.type===`http`&&n.transport.auth===`oauth`&&await me({environmentId:e,input:{serverId:t.id}}),await it({mcpServers:{[t.id]:null}})}else await it({plugins:{[t.id]:null}});Le({kind:`list`})}},gt=Pe.filter(e=>!e.alreadyAdded),yt=new Set(Qe.filter(([e])=>Z.kind!==`server`||e!==Z.id).map(([,e])=>e.name)),bt=d.trim().toLowerCase(),xt=Qe.filter(([,e])=>Dt(bt,e.name,ze(e))),Tt=$e.filter(([,e])=>Dt(bt,e.name,e.path)),kt=gt.filter(e=>Dt(bt,e.name,e.summary)),At=(e,t)=>b({mcpServers:M,plugins:F,projectSettingsOverrides:I},e,a??null,t),Mt=(e,t,n)=>{if(a!==void 0){mt(e,t,n);return}it(e===`mcpServers`?{mcpServers:{[t]:{...M[t],enabled:n}}}:{plugins:{[t]:{...F[t],enabled:n}}})},Nt=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Q.jsx)(`h1`,{className:`text-2xl font-semibold text-foreground`,children:`Plugins`}),(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Manage plugins, skills, and MCP servers given to agents on `,t,`.`]})]}),ce?(0,Q.jsxs)(D,{children:[(0,Q.jsx)(g,{render:(0,Q.jsxs)(C,{children:[`Add`,(0,Q.jsx)(P,{"aria-hidden":!0})]})}),(0,Q.jsxs)(n,{align:`end`,children:[(0,Q.jsxs)(p,{onClick:()=>nt(null),children:[(0,Q.jsx)(f,{"aria-hidden":!0}),`Add MCP server`]}),(0,Q.jsxs)(p,{onClick:()=>rt(null),children:[(0,Q.jsx)(s,{"aria-hidden":!0}),`Add plugin`]})]})]}):null]}),Pt=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,Q.jsxs)(ae,{"aria-label":`Show`,variant:`default`,value:[l],onValueChange:e=>{let t=e[0];(t===`plugins`||t===`mcps`||t===`skills`)&&(u(t),Le({kind:`list`}))},children:[(0,Q.jsxs)(oe,{value:`plugins`,...Fe(`plugins`),children:[`Plugins `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:$e.length})]}),(0,Q.jsxs)(oe,{value:`mcps`,...Fe(`mcp-servers`),children:[`MCPs `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:Qe.length})]}),(0,Q.jsxs)(oe,{value:`skills`,...Fe(`skills`),children:[`Skills `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:w.length})]})]}),(0,Q.jsxs)(`div`,{className:`flex w-full gap-2 sm:w-auto`,children:[l===`skills`?(0,Q.jsx)(`div`,{className:`w-fit shrink-0`,children:(0,Q.jsxs)(V,{value:h,onValueChange:e=>e&&v(e),children:[(0,Q.jsx)(B,{"aria-label":`Skill category`,children:(0,Q.jsx)(R,{})}),(0,Q.jsxs)(z,{children:[(0,Q.jsx)(L,{value:`All categories`,children:`All categories`}),qe.filter(e=>e===`Personal`||e===`Built-in`||w.some(({skill:t})=>Je(t)===e)).map(e=>(0,Q.jsx)(L,{value:e,children:e},e))]})]})}):null,(0,Q.jsxs)(ve,{className:`min-w-0 flex-1 sm:w-56`,children:[(0,Q.jsx)(ge,{children:(0,Q.jsx)(i,{"aria-hidden":!0})}),(0,Q.jsx)(_e,{"aria-label":Et[l],placeholder:Et[l],value:d,onChange:e=>m(e.currentTarget.value)})]})]})]}),Ft=(e,t)=>(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(C,{size:`icon-sm`,variant:`ghost`,"aria-label":e,onClick:t,children:(0,Q.jsx)(A,{"aria-hidden":!0})})}),(0,Q.jsx)(te,{children:e})]}),It=Tt.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-sm text-muted-foreground`,children:$e.length===0?`No plugins yet. Add a Claude Code or Codex plugin folder to give its tools to your agents.`:`No plugins match your search.`}):(0,Q.jsx)(`ul`,{className:`grid gap-1`,children:Tt.map(([t,n])=>(0,Q.jsx)(Ke,{environmentId:e,plugin:n,enabled:At(`plugins`,t),disabled:!re,onDetails:()=>rt(t),onToggle:e=>Mt(`plugins`,t,e)},t))}),Lt=w.filter(({skill:e})=>(h===`All categories`||Je(e)===h)&&Dt(bt,st(e),e.name,e.shortDescription??``,e.description??``)),Rt=Lt.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-sm text-muted-foreground`,children:w.length===0?`No skills found. Providers report the skills they load when they start.`:`No skills match these filters.`}):(0,Q.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Switches apply to new Claude and OpenCode sessions.`}),(0,Q.jsx)(`ul`,{className:`grid gap-1`,children:Lt.map(t=>{let r=Je(t.skill),i=(S??[]).filter(e=>E(e.driver)&&e.skills.some(e=>e.name===t.skill.name)),o=i.length?i.map(e=>e.displayName??e.driver).join(`, `):`Native settings`;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 py-3`,children:[(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`flex size-10 shrink-0 items-center justify-center rounded-full border border-border/60 text-muted-foreground`,children:(0,Q.jsx)(_,{className:`size-4`})}),(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>j(t),className:`w-fit break-words text-left text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring`,children:st(t.skill)}),(0,Q.jsx)(Ot,{text:t.skill.shortDescription??t.skill.description??t.skill.path}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:[r,o].filter(Boolean).join(` · `)})]}),(0,Q.jsxs)(D,{children:[(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(g,{render:(0,Q.jsx)(C,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${st(t.skill)}`,children:(0,Q.jsx)(y,{"aria-hidden":!0})})})}),(0,Q.jsx)(te,{children:`Skill actions`})]}),(0,Q.jsxs)(n,{align:`end`,children:[q.capabilities.canOpenDefault?(0,Q.jsx)(p,{onClick:()=>void q.activate(`open`,{environmentId:e,filePath:t.skill.path,workspaceRoot:void 0}),children:`Open`}):null,(0,Q.jsx)(p,{onClick:()=>j(t),children:`Details`}),a!==void 0&&I[a]?.skillOverrides?.[t.skill.name]!==void 0?(0,Q.jsx)(p,{onClick:()=>{let e=I[a]??{},n={...e.skillOverrides};delete n[t.skill.name],it({projectSettingsOverrides:{[a]:{...e,skillOverrides:n}}})},children:`Use environment setting`}):null]})]}),(0,Q.jsx)(Ne,{"aria-label":`Enable ${st(t.skill)} for ${o}`,checked:(a===void 0?void 0:I[a]?.skillOverrides?.[t.skill.name])??U[t.skill.name]??t.skill.enabled,disabled:!re||ie!==null||i.length===0,onCheckedChange:e=>{se(t.skill.name),it(a===void 0?{skillOverrides:{[t.skill.name]:e}}:{projectSettingsOverrides:{[a]:{...I[a],skillOverrides:{...I[a]?.skillOverrides,[t.skill.name]:e}}}}).finally(()=>se(null))}})]},t.skill.path)})})]}),Bt=(0,Q.jsxs)(`div`,{className:`grid gap-6`,children:[Qe.length>0?(0,Q.jsx)(Te,{title:`Servers`,children:xt.length===0?(0,Q.jsx)(`p`,{className:`px-3 text-sm text-muted-foreground sm:px-4`,children:`No MCP servers match your search.`}):(0,Q.jsx)(Q.Fragment,{children:xt.map(([e,t])=>{let r=At(`mcpServers`,e),i=Re({...t,enabled:r},be[e],Ce.has(e)),a=Xe[e],o=Ct(t,i,be[e]);return(0,Q.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,Q.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),i.tone===`error`||o?(0,Q.jsx)(wt,{status:i}):null,a?(0,Q.jsx)(`span`,{className:`text-xs text-destructive-foreground`,children:a}):null]}),i.needsSignIn&&ce?(0,Q.jsx)(C,{size:`xs`,variant:`outline`,onClick:()=>void $(e),children:`Authenticate`}):null,o&&!i.needsSignIn&&ce?(0,Q.jsxs)(D,{children:[(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(g,{render:(0,Q.jsx)(C,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${t.name}`,children:(0,Q.jsx)(y,{"aria-hidden":!0})})})}),(0,Q.jsx)(te,{children:`Sign-in actions`})]}),(0,Q.jsxs)(n,{align:`end`,children:[(0,Q.jsx)(p,{onClick:()=>void $(e,!0),children:`Re-authenticate`}),be[e]?.auth===`signed-in`?(0,Q.jsx)(p,{onClick:()=>void ft(e),children:`Sign out`}):null]})]}):null,Ft(`Settings for ${t.name}`,()=>nt(e)),(0,Q.jsx)(Ne,{"aria-label":`Give ${t.name} to agents`,checked:r,disabled:!ce,onCheckedChange:t=>Mt(`mcpServers`,e,t)})]},e)})})}):null,ce&&kt.length>0?(0,Q.jsx)(Te,{title:`Found in provider configs`,headerAction:(0,Q.jsx)(C,{size:`icon-xs`,variant:`ghost`,"aria-label":`Look again`,onClick:()=>void tt(),children:(0,Q.jsx)(O,{"aria-hidden":!0})}),children:(0,Q.jsx)(Q.Fragment,{children:kt.map(t=>(0,Q.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,Q.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),kt.filter(e=>e.name===t.name).length>1?(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:(t.providers??[t.provider]).map(e=>vt[e]).join(`, `)}):null]}),(0,Q.jsx)(C,{size:`xs`,variant:`outline`,onClick:async()=>{(await ye({environmentId:e,input:{...a===void 0?{}:{projectId:a},servers:[{provider:t.provider,path:t.path,name:t.name}]}}))._tag===`Success`&&(tt(),et())},children:`Import`})]},`${t.provider}:${t.path}:${t.name}`))})}):null]}),Vt=Z.kind===`server`?(0,Q.jsxs)(ut,{title:Z.id===null?`Add MCP server`:`Update ${M[Z.id]?.name??`server`} MCP`,onBack:()=>Le({kind:`list`}),onUninstall:Z.id!==null&&ce?()=>Ue({kind:`server`,id:Z.id}):void 0,children:[(0,Q.jsx)(dt,{server:Z.id===null?void 0:M[Z.id],takenNames:yt,onSave:e=>void lt(Z.id??N.make(x()),e,Z.id===null)},Z.id??`new`),Z.id!==null&&M[Z.id]!==void 0?(0,Q.jsx)(jt,{environmentId:e,id:Z.id,server:M[Z.id],runtime:be[Z.id],checking:Ce.has(Z.id),canManage:ce,projectLabel:o,projectOverride:a===void 0?void 0:I[a]?.mcpServers?.[Z.id],awaitingSignIn:Ge===Z.id,onProviderToggle:(e,t)=>{let n=M[Z.id],r=t?n.disabledProviders.filter(t=>t!==e):[...n.disabledProviders,e];it({mcpServers:{[Z.id]:{...n,disabledProviders:r}}})},onProjectOverride:a===void 0?void 0:e=>mt(`mcpServers`,Z.id,e),signInError:Xe[Z.id],onTest:()=>void at(Z.id),onSignIn:()=>void $(Z.id),onReauthenticate:()=>void $(Z.id,!0),onSignOut:()=>void ft(Z.id)},`${e}:${Z.id}`):null]}):null,Ht=Z.kind===`plugin`?(0,Q.jsxs)(ut,{title:Z.id===null?`Add plugin`:`Update ${F[Z.id]?.name??`plugin`}`,onBack:()=>Le({kind:`list`}),onUninstall:Z.id!==null&&ce?()=>Ue({kind:`plugin`,id:Z.id}):void 0,children:[(0,Q.jsx)(pt,{environmentId:e,plugin:Z.id===null?void 0:F[Z.id],environmentLabel:t,onSave:async e=>{let t=Z.id??T.make(x());(await it({plugins:{[t]:e}}))._tag===`Success`&&Z.id===null&&Le({kind:`list`})}},Z.id??`new`),Z.id!==null&&F[Z.id]!==void 0?(0,Q.jsx)(zt,{plugin:F[Z.id],projectLabel:o,projectOverride:a===void 0?void 0:I[a]?.plugins?.[Z.id],onProjectOverride:a===void 0?void 0:e=>mt(`plugins`,Z.id,e)}):null]}):null;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`grid gap-6`,children:[Nt,Pt,Vt??Ht??(l===`plugins`?It:l===`mcps`?Bt:Rt)]}),k===null?null:(0,Q.jsx)(_t,{entry:k,environmentId:e,onClose:()=>j(null)}),(0,Q.jsx)(De,{open:He!==null,onOpenChange:e=>!e&&Ue(null),children:(0,Q.jsxs)(Oe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsxs)(ke,{children:[`Remove`,` `,He?.kind===`server`?M[He.id]?.name??`server`:He?.kind===`plugin`?F[He.id]?.name??`plugin`:``,`?`]}),(0,Q.jsxs)(Me,{children:[`New sessions on `,t,` stop getting it. Its stored values and sign-in are deleted. Provider config files are not changed.`]})]}),(0,Q.jsxs)(Ee,{children:[(0,Q.jsx)(Ae,{render:(0,Q.jsx)(C,{variant:`outline`,children:`Cancel`})}),(0,Q.jsx)(C,{variant:`destructive`,onClick:()=>void ht(),children:`Remove`})]})]})})]})}function At(e){let t=(0,Y.c)(16),{projectLabel:n,override:r,inherited:i,onChange:a}=e,o=r?.enabled!==void 0,s=`In ${n}`,c=o?`Set for this project.`:`Follows the environment (${i?`on`:`off`}).`,l;t[0]!==a||t[1]!==o?(l=o?(0,Q.jsx)(C,{size:`xs`,variant:`ghost`,onClick:()=>a(void 0),children:`Reset`}):null,t[0]=a,t[1]=o,t[2]=l):l=t[2];let u=`Use in ${n}`,d=r?.enabled??i,f;t[3]===a?f=t[4]:(f=e=>a(e),t[3]=a,t[4]=f);let p;t[5]!==u||t[6]!==d||t[7]!==f?(p=(0,Q.jsx)(Ne,{"aria-label":u,checked:d,onCheckedChange:f}),t[5]=u,t[6]=d,t[7]=f,t[8]=p):p=t[8];let m;t[9]!==l||t[10]!==p?(m=(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l,p]}),t[9]=l,t[10]=p,t[11]=m):m=t[11];let h;return t[12]!==s||t[13]!==c||t[14]!==m?(h=(0,Q.jsx)(Ce,{title:s,description:c,control:m}),t[12]=s,t[13]=c,t[14]=m,t[15]=h):h=t[15],h}function jt(e){let t=(0,Y.c)(108),{environmentId:n,id:r,server:i,runtime:a,checking:o,canManage:s,projectLabel:l,projectOverride:u,awaitingSignIn:d,signInError:f,onProviderToggle:p,onProjectOverride:m,onTest:h,onSignIn:g,onReauthenticate:_,onSignOut:v}=e,y=s&&i.transport.type===`http`&&i.transport.auth===`oauth`&&a?.auth===`signed-out`,b=Ft(n,r,y),x=b.entries,S;t[0]!==o||t[1]!==a||t[2]!==i?(S=Re(i,a,o),t[0]=o,t[1]=a,t[2]=i,t[3]=S):S=t[3];let w=S,T;t[4]===x?T=t[5]:(T=x?.filter(Nt).length??0,t[4]=x,t[5]=T);let E=T,D;t[6]!==w||t[7]!==E||t[8]!==x||t[9]!==y?(D=y?{...w,tone:`muted`,label:x===null?`Checking providers…`:E>0?`Available to ${E} ${E===1?`provider`:`providers`}`:`No providers connected`}:w,t[6]=w,t[7]=E,t[8]=x,t[9]=y,t[10]=D):D=t[10];let O=D,k,A,j,M,N,P,F;if(t[11]!==d||t[12]!==s||t[13]!==o||t[14]!==x||t[15]!==r||t[16]!==p||t[17]!==_||t[18]!==g||t[19]!==v||t[20]!==h||t[21]!==a?.auth||t[22]!==i||t[23]!==f||t[24]!==b||t[25]!==O||t[26]!==y){let e;t[34]===x?e=t[35]:(e=e=>({...e,badge:x===null||e.unsupported!==void 0?void 0:$e(e.driver,x)}),t[34]=x,t[35]=e);let n=et(i).map(e),l=i.transport.type===`http`&&a?.auth===`signed-in`,u=f??O.detail;N=`grid gap-6`,P=r;let m;t[36]===O?m=t[37]:(m=(0,Q.jsx)(wt,{status:O,className:`flex-1 text-sm`}),t[36]=O,t[37]=m);let S;t[38]!==d||t[39]!==s||t[40]!==g||t[41]!==O.needsSignIn||t[42]!==y?(S=O.needsSignIn&&s&&!y?(0,Q.jsx)(C,{size:`xs`,onClick:g,children:d?`Open sign-in again`:`Authenticate`}):null,t[38]=d,t[39]=s,t[40]=g,t[41]=O.needsSignIn,t[42]=y,t[43]=S):S=t[43];let w;t[44]!==s||t[45]!==_||t[46]!==l||t[47]!==O.needsSignIn?(w=l&&!O.needsSignIn&&s?(0,Q.jsx)(C,{size:`xs`,variant:`outline`,onClick:_,children:`Re-authenticate`}):null,t[44]=s,t[45]=_,t[46]=l,t[47]=O.needsSignIn,t[48]=w):w=t[48];let T;t[49]!==s||t[50]!==v||t[51]!==l?(T=l&&s?(0,Q.jsx)(C,{size:`xs`,variant:`ghost`,onClick:v,children:`Sign out`}):null,t[49]=s,t[50]=v,t[51]=l,t[52]=T):T=t[52];let E;t[53]!==s||t[54]!==o||t[55]!==h||t[56]!==i.enabled?(E=s&&i.enabled?(0,Q.jsx)(C,{size:`xs`,variant:`outline`,disabled:o,onClick:h,children:`Test connection`}):null,t[53]=s,t[54]=o,t[55]=h,t[56]=i.enabled,t[57]=E):E=t[57];let D;t[58]!==m||t[59]!==S||t[60]!==w||t[61]!==T||t[62]!==E?(D=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[m,S,w,T,E]}),t[58]=m,t[59]=S,t[60]=w,t[61]=T,t[62]=E,t[63]=D):D=t[63];let I;t[64]!==d||t[65]!==O.needsSignIn||t[66]!==y?(I=O.needsSignIn&&!y?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d?`Finish signing in in your browser, then come back here.`:y?`Sign in here to give it to every provider.`:`Agents can't reach this server until you sign in.`}):null,t[64]=d,t[65]=O.needsSignIn,t[66]=y,t[67]=I):I=t[67];let L;t[68]!==u||t[69]!==y?(L=u&&!y?(0,Q.jsx)(`p`,{className:`rounded-md bg-destructive/8 px-2.5 py-1.5 text-xs text-destructive-foreground`,children:u}):null,t[68]=u,t[69]=y,t[70]=L):L=t[70];let R;t[71]!==d||t[72]!==u||t[73]!==g||t[74]!==y?(R=y?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer`,children:u?`Shared sign-in unavailable`:`Shared sign-in`}),(0,Q.jsxs)(`div`,{className:`grid gap-2 pt-2`,children:[(0,Q.jsx)(`p`,{children:u??`Sign in through P4 Code to share access with every enabled provider.`}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(C,{size:`xs`,variant:`outline`,onClick:g,children:d?`Open browser`:u?`Retry shared sign-in`:`Sign in through P4 Code`})})]})]}):null,t[71]=d,t[72]=u,t[73]=g,t[74]=y,t[75]=R):R=t[75];let z;t[76]===i.source?z=t[77]:(z=i.source?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer`,children:`Import source`}),(0,Q.jsx)(`p`,{className:`break-all pt-2`,children:i.source.path})]}):null,t[76]=i.source,t[77]=z);let B=y?(0,Q.jsx)(Lt,{serverName:i.name,signIns:b,blocked:n.filter(Mt).length}):null;t[78]!==D||t[79]!==I||t[80]!==L||t[81]!==R||t[82]!==z||t[83]!==B?(F=(0,Q.jsx)(Te,{title:`Status`,children:(0,Q.jsx)(Se,{children:(0,Q.jsxs)(`div`,{className:`grid gap-2 px-4 py-3`,children:[D,I,L,R,z,B]})})}),t[78]=D,t[79]=I,t[80]=L,t[81]=R,t[82]=z,t[83]=B,t[84]=F):F=t[84],A=Te,M=`Providers`,k=Se;let V;t[85]!==s||t[86]!==p||t[87]!==i.name?(V=e=>(0,Q.jsx)(Ce,{title:e.label,...e.unsupported===void 0?{}:{description:e.unsupported},control:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.badge===void 0?null:(0,Q.jsx)(c,{variant:Rt[e.badge].variant,children:Rt[e.badge].label}),(0,Q.jsx)(Ne,{"aria-label":`Give ${i.name} to ${e.label}`,checked:e.enabled&&e.badge!==`unavailable`,disabled:!s||e.unsupported!==void 0||e.badge===`unavailable`,onCheckedChange:t=>p(e.driver,t)})]})},e.driver),t[85]=s,t[86]=p,t[87]=i.name,t[88]=V):V=t[88],j=n.map(V),t[11]=d,t[12]=s,t[13]=o,t[14]=x,t[15]=r,t[16]=p,t[17]=_,t[18]=g,t[19]=v,t[20]=h,t[21]=a?.auth,t[22]=i,t[23]=f,t[24]=b,t[25]=O,t[26]=y,t[27]=k,t[28]=A,t[29]=j,t[30]=M,t[31]=N,t[32]=P,t[33]=F}else k=t[27],A=t[28],j=t[29],M=t[30],N=t[31],P=t[32],F=t[33];let I;t[89]!==k||t[90]!==j?(I=(0,Q.jsx)(k,{children:j}),t[89]=k,t[90]=j,t[91]=I):I=t[91];let L;t[92]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,Q.jsx)(`p`,{className:`px-3 text-xs text-muted-foreground sm:px-4`,children:`A change reaches a thread when its provider session next starts.`}),t[92]=L):L=t[92];let R;t[93]!==A||t[94]!==M||t[95]!==I?(R=(0,Q.jsxs)(A,{title:M,children:[I,L]}),t[93]=A,t[94]=M,t[95]=I,t[96]=R):R=t[96];let z;t[97]!==m||t[98]!==l||t[99]!==u||t[100]!==i.enabled?(z=l!==void 0&&m!==void 0?(0,Q.jsx)(Te,{title:`Project`,children:(0,Q.jsx)(Se,{children:(0,Q.jsx)(At,{projectLabel:l,override:u,inherited:i.enabled,onChange:m})})}):null,t[97]=m,t[98]=l,t[99]=u,t[100]=i.enabled,t[101]=z):z=t[101];let B;return t[102]!==R||t[103]!==z||t[104]!==N||t[105]!==P||t[106]!==F?(B=(0,Q.jsxs)(`div`,{className:N,"data-server-id":P,children:[F,R,z]}),t[102]=R,t[103]=z,t[104]=N,t[105]=P,t[106]=F,t[107]=B):B=t[107],B}function Mt(e){return e.enabled&&e.badge===`unavailable`}function Nt(e){return e.status===`signed-in`}function Pt(e){let t=o(e);return xt(t)&&t.detail!==void 0?t.detail:`Sign-in could not start. Try again.`}function Ft(e,t,n){let i=K(G.mcpRegistryProviderSignInState,{reportFailure:!1}),a=K(G.mcpRegistryProviderSignInStart,{reportFailure:!1}),o=K(G.mcpRegistryProviderSignInWait,{reportFailure:!1}),s=K(G.mcpRegistryProviderSignInComplete,{reportFailure:!1}),c=K(G.mcpRegistryProviderSignInCancel,{reportFailure:!1}),l=K(G.mcpRegistryProviderSignOut,{reportFailure:!1}),u=r(G.mcpRegistryProviderSignInComplete.permissionAtom(e)),d=r(G.mcpRegistryProviderSignInCancel.permissionAtom(e)),[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)({}),[g,_]=(0,X.useState)(new Set),v=(0,X.useRef)(new Set),y=e=>p(t=>t?.map(t=>t.instanceId===e.instanceId?e:t)??null),b=(e,t)=>h(n=>{let r={...n};return t===void 0?delete r[e]:r[e]=t,r});return(0,X.useEffect)(()=>{if(!n)return;let r=!1;return i({environmentId:e,input:{serverId:t}}).then(e=>{r||p(e._tag===`Success`?e.value.providers:[])}),()=>{r=!0}},[n,e,i,t]),(0,X.useEffect)(()=>{if(!n)return;let r=!1;for(let n of f??[]){let i=n.pending;i&&o({environmentId:e,input:{serverId:t,instanceId:n.instanceId,flowId:i.flowId}}).then(e=>{r||(p(t=>t?.map(t=>{if(t.instanceId!==n.instanceId||t.pending?.flowId!==i.flowId)return t;if(e._tag===`Success`)return e.value;let{pending:r,...a}=t;return a})??null),e._tag===`Failure`?b(n.instanceId,Pt(e.cause)):e._tag===`Success`&&e.value.status!==`signed-in`&&!v.current.has(n.instanceId)&&b(n.instanceId,`Sign-in ended without connecting. Try again.`))})}return()=>{r=!0}},[n,f,e,t,o]),{entries:n?f:null,errors:m,busy:g,run:async(n,r,i)=>{if(!v.current.has(n.instanceId)){v.current.add(n.instanceId),_(new Set(v.current)),b(n.instanceId,void 0);try{let o={serverId:t,instanceId:n.instanceId};if(r===`start`){let t=await a({environmentId:e,input:o});t._tag===`Success`?(y({...n,pending:t.value}),window.open(t.value.authorizationUrl,`_blank`,`noopener,noreferrer`)):t._tag===`Failure`&&b(n.instanceId,Pt(t.cause));return}let u={...o,flowId:n.pending?.flowId??``},d=r===`complete`?await s({environmentId:e,input:{...u,callbackUrl:i.trim()}}):r===`cancel`?await c({environmentId:e,input:u}):await l({environmentId:e,input:o});d._tag===`Success`?y(d.value):d._tag===`Failure`&&b(n.instanceId,Pt(d.cause))}finally{v.current.delete(n.instanceId),_(new Set(v.current))}}},canComplete:u,canCancel:d}}function It(e){let t=(0,Y.c)(39),{entry:n,signIns:r}=e,i;t[0]!==n.displayName||t[1]!==n.driver?(i=n.displayName??Ze(n.driver),t[0]=n.displayName,t[1]=n.driver,t[2]=i):i=t[2];let a=i,[o,s]=(0,X.useState)(``),c=n.pending,l;t[3]!==n.instanceId||t[4]!==r.busy?(l=r.busy.has(n.instanceId),t[3]=n.instanceId,t[4]=r.busy,t[5]=l):l=t[5];let u=l,d=r.errors[n.instanceId],f=`mcp-callback-${n.instanceId}`,p;t[6]===a?p=t[7]:(p=(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:a}),t[6]=a,t[7]=p);let m=c?`text-warning-foreground`:n.status===`signed-in`?`text-success-foreground`:`text-muted-foreground`,h;t[8]===m?h=t[9]:(h=M(`text-xs`,m),t[8]=m,t[9]=h);let g;t[10]!==n.status||t[11]!==c?(g=c?`Waiting for sign-in`:Qe(n.status),t[10]=n.status,t[11]=c,t[12]=g):g=t[12];let _;t[13]!==h||t[14]!==g?(_=(0,Q.jsx)(`p`,{className:h,role:`status`,children:g}),t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]!==p||t[17]!==_?(v=(0,Q.jsxs)(`div`,{className:`grid gap-1`,children:[p,_]}),t[16]=p,t[17]=_,t[18]=v):v=t[18];let y;t[19]!==u||t[20]!==n||t[21]!==d||t[22]!==c||t[23]!==r?(y=!c&&n.status!==`unavailable`?(0,Q.jsx)(C,{size:`xs`,variant:n.status===`signed-in`?`outline`:`default`,disabled:u,onClick:()=>void r.run(n,n.status===`signed-in`?`signOut`:`start`),children:u?`Please wait…`:n.status===`signed-in`?`Sign out`:d?`Start over`:`Sign in`}):null,t[19]=u,t[20]=n,t[21]=d,t[22]=c,t[23]=r,t[24]=y):y=t[24];let b;t[25]!==v||t[26]!==y?(b=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[v,y]}),t[25]=v,t[26]=y,t[27]=b):b=t[27];let x;t[28]!==u||t[29]!==o||t[30]!==n||t[31]!==d||t[32]!==f||t[33]!==c||t[34]!==r?(x=c?(0,Q.jsxs)(`form`,{className:`grid gap-2`,onSubmit:e=>{e.preventDefault(),o.trim()&&!u&&r.canComplete&&r.run(n,`complete`,o)},children:[(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Approve in your browser. If it ends on a callback URL, paste that URL here.`}),(0,Q.jsx)(`label`,{htmlFor:f,className:`text-xs font-medium`,children:`Callback URL`}),(0,Q.jsx)(se,{id:f,value:o,onChange:e=>s(e.target.value),placeholder:`http://localhost:…/callback?code=…&state=…`,autoComplete:`off`,spellCheck:!1,disabled:u||!r.canComplete,"aria-invalid":!!d,"aria-describedby":d?`${f}-error`:void 0}),d?(0,Q.jsx)(`p`,{id:`${f}-error`,role:`alert`,className:`text-xs text-destructive-foreground`,children:d}):null,(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Q.jsx)(C,{type:`submit`,size:`xs`,disabled:u||!o.trim()||!r.canComplete,children:u?`Please wait…`:`Finish sign-in`}),(0,Q.jsx)(C,{type:`button`,size:`xs`,variant:`outline`,disabled:u,onClick:()=>window.open(c.authorizationUrl,`_blank`,`noopener,noreferrer`),children:`Open browser`}),(0,Q.jsx)(C,{type:`button`,size:`xs`,variant:`ghost`,disabled:u||!r.canCancel,onClick:()=>void r.run(n,`cancel`),children:`Cancel`})]})]}):d?(0,Q.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive-foreground`,children:d}):null,t[28]=u,t[29]=o,t[30]=n,t[31]=d,t[32]=f,t[33]=c,t[34]=r,t[35]=x):x=t[35];let S;return t[36]!==b||t[37]!==x?(S=(0,Q.jsxs)(`div`,{className:`grid gap-2 border-t border-border pt-3`,children:[b,x]}),t[36]=b,t[37]=x,t[38]=S):S=t[38],S}function Lt(e){let t=(0,Y.c)(8),{serverName:n,signIns:r,blocked:i}=e,a;t[0]===r?a=t[1]:(a=r.entries===null?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Checking providers…`}):r.entries.length===0?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No enabled provider here can sign in to MCP servers itself.`}):r.entries.map(e=>(0,Q.jsx)(It,{entry:e,signIns:r},`${e.instanceId}:${e.pending?.flowId??`idle`}`)),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n?(o=i>0?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsxs)(`summary`,{className:`cursor-pointer`,children:[i,` other `,i===1?`provider`:`providers`,` unavailable`]}),(0,Q.jsxs)(`p`,{className:`pt-2`,children:[`These providers need shared sign-in to use `,n,`.`]})]}):null,t[2]=i,t[3]=n,t[4]=o):o=t[4];let s;return t[5]!==a||t[6]!==o?(s=(0,Q.jsxs)(`div`,{className:`grid gap-3`,children:[a,o]}),t[5]=a,t[6]=o,t[7]=s):s=t[7],s}var Rt={"signed-in":{variant:`success`,label:`Signed in`},"needs-sign-in":{variant:`warning`,label:`Sign in needed`},unavailable:{variant:`secondary`,label:`Unavailable`}};function zt(e){let t=(0,Y.c)(7),{plugin:n,projectLabel:r,projectOverride:i,onProjectOverride:a}=e,o;t[0]!==a||t[1]!==n||t[2]!==r||t[3]!==i?(o=r!==void 0&&a!==void 0?(0,Q.jsx)(Te,{title:`Project`,children:(0,Q.jsx)(Se,{children:(0,Q.jsx)(At,{projectLabel:r,override:i,inherited:n.enabled,onChange:a})})}):null,t[0]=a,t[1]=n,t[2]=r,t[3]=i,t[4]=o):o=t[4];let s;return t[5]===o?s=t[6]:(s=(0,Q.jsx)(`div`,{className:`grid gap-6`,children:o}),t[5]=o,t[6]=s),s}var Bt=Tt;export{Bt as component};
|
|
5
|
-
//# sourceMappingURL=settings.plugins-
|
|
3
|
+
`).map(e=>e.trim()).filter(e=>e.length>0),env:n,...e.cwd.trim()?{cwd:e.cwd.trim()}:{}}:{type:`http`,url:e.url.trim(),headers:n,auth:e.auth};return{name:e.name.trim(),enabled:t?.enabled??!0,transport:r,disabledProviders:t?.disabledProviders??[],...t?.source===void 0?{}:{source:t.source}}}function ot(e){let t=new Map;for(let n of e){let e=n.displayName??n.driver;for(let r of n.skills){let n=`${r.scope??``}\u0000${r.name}`,i=t.get(n);i===void 0?t.set(n,{skill:r,providers:[e]}):i.providers.includes(e)||i.providers.push(e)}}return[...t.values()].toSorted((e,t)=>st(e.skill).localeCompare(st(t.skill)))}var st=e=>e.displayName??e.name.split(/[-_\s]+/).filter(e=>e.length>0).map(e=>e[0].toUpperCase()+e.slice(1)).join(` `);function ct(e){switch(e){case void 0:return;case`user`:return`Personal`;case`project`:case`repo`:return`Project`;case`system`:return`Built-in`;default:return e[0].toUpperCase()+e.slice(1)}}function lt(e){let t=/^---\r?\n[\s\S]*?\r?\n---\r?\n?/.exec(e);return(t===null?e:e.slice(t[0].length)).trimStart()}function ut(e){let t=(0,Y.c)(14),{title:n,onBack:r,onUninstall:i,children:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,Q.jsx)(m,{"aria-hidden":!0}),t[0]=o):o=t[0];let s;t[1]===r?s=t[2]:(s=(0,Q.jsxs)(T,{size:`xs`,variant:`ghost`,className:`w-fit`,onClick:r,children:[o,`Back`]}),t[1]=r,t[2]=s);let c;t[3]===n?c=t[4]:(c=(0,Q.jsx)(`h2`,{className:`min-w-0 truncate text-xl font-semibold text-foreground`,children:n}),t[3]=n,t[4]=c);let l;t[5]===i?l=t[6]:(l=i?(0,Q.jsxs)(T,{size:`sm`,variant:`destructive-outline`,onClick:i,children:[(0,Q.jsx)(u,{"aria-hidden":!0}),`Uninstall`]}):null,t[5]=i,t[6]=l);let d;t[7]!==c||t[8]!==l?(d=(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[c,l]}),t[7]=c,t[8]=l,t[9]=d):d=t[9];let f;return t[10]!==a||t[11]!==s||t[12]!==d?(f=(0,Q.jsxs)(`div`,{className:`grid gap-6`,children:[s,d,a]}),t[10]=a,t[11]=s,t[12]=d,t[13]=f):f=t[13],f}function $(e){let t=(0,Y.c)(6),{label:n,htmlFor:r,children:i}=e,a;t[0]!==r||t[1]!==n?(a=(0,Q.jsx)(Pe,{htmlFor:r,children:n}),t[0]=r,t[1]=n,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,Q.jsxs)(`div`,{className:`grid gap-2 px-4 py-4`,children:[a,i]}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function dt(e){let t=(0,Y.c)(69),{server:n,takenNames:r,onSave:i}=e,o;t[0]===n?o=t[1]:(o=n===void 0?tt:nt(n),t[0]=n,t[1]=o);let s=o,[c,l]=(0,X.useState)(s),d;t[2]===s?d=t[3]:(d=JSON.stringify(s),t[2]=s,t[3]=d);let f=d,[p,m]=(0,X.useState)(f);f!==p&&(m(f),l(s));let h;t[4]!==c||t[5]!==r?(h=it(c,r),t[4]=c,t[5]=r,t[6]=h):h=t[6];let g=h,_;t[7]===c?_=t[8]:(_=JSON.stringify(c),t[7]=c,t[8]=_);let v=_!==f,y;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>l(t=>({...t,...e})),t[9]=y):y=t[9];let b=y,x=c.type===`stdio`?`Environment variables`:`Headers`,S;t[10]===c.values?S=t[11]:(S=(e,t)=>b({values:c.values.map((n,r)=>r===e?{...n,...t}:n)}),t[10]=c.values,t[11]=S);let C=S,w;t[12]!==v||t[13]!==c||t[14]!==i||t[15]!==g||t[16]!==n?(w=e=>{e.preventDefault(),v&&g===void 0&&i(at(c,n))},t[12]=v,t[13]=c,t[14]=i,t[15]=g,t[16]=n,t[17]=w):w=t[17];let E;t[18]===n?E=t[19]:(E=n===void 0?null:(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`To switch between a command and a URL, uninstall the server and add it again.`}),t[18]=n,t[19]=E);let D;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(D=e=>b({name:e.target.value}),t[20]=D):D=t[20];let O;t[21]===c.name?O=t[22]:(O=(0,Q.jsx)($,{label:`Name`,htmlFor:`mcp-server-name`,children:(0,Q.jsx)(se,{id:`mcp-server-name`,placeholder:`github`,value:c.name,onChange:D})}),t[21]=c.name,t[22]=O);let k;t[23]!==c.type||t[24]!==n?(k=n===void 0?(0,Q.jsx)($,{label:`Type`,children:(0,Q.jsxs)(ae,{"aria-label":`How P4 Code reaches the server`,value:[c.type],onValueChange:e=>{let t=e[0];(t===`stdio`||t===`http`)&&b({type:t,values:[]})},children:[(0,Q.jsx)(oe,{value:`stdio`,children:`Command`}),(0,Q.jsx)(oe,{value:`http`,children:`URL`})]})}):null,t[23]=c.type,t[24]=n,t[25]=k):k=t[25];let A;t[26]!==c.args||t[27]!==c.auth||t[28]!==c.command||t[29]!==c.cwd||t[30]!==c.type||t[31]!==c.url?(A=c.type===`stdio`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{label:`Command`,htmlFor:`mcp-server-command`,children:(0,Q.jsx)(se,{id:`mcp-server-command`,placeholder:`npx`,value:c.command,onChange:e=>b({command:e.target.value})})}),(0,Q.jsx)($,{label:`Arguments, one per line`,htmlFor:`mcp-server-args`,children:(0,Q.jsx)(ie,{id:`mcp-server-args`,placeholder:`-y
|
|
4
|
+
@modelcontextprotocol/server-postgres`,value:c.args,onChange:e=>b({args:e.target.value})})}),(0,Q.jsx)($,{label:`Working directory (optional)`,htmlFor:`mcp-server-cwd`,children:(0,Q.jsx)(se,{id:`mcp-server-cwd`,placeholder:`The session's project folder`,value:c.cwd,onChange:e=>b({cwd:e.target.value})})})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{label:`URL`,htmlFor:`mcp-server-url`,children:(0,Q.jsx)(se,{id:`mcp-server-url`,placeholder:`https://mcp.example.com/mcp`,value:c.url,onChange:e=>b({url:e.target.value})})}),(0,Q.jsx)($,{label:`Authentication`,children:(0,Q.jsxs)(V,{value:c.auth,onValueChange:e=>{(e===`none`||e===`oauth`)&&b({auth:e})},children:[(0,Q.jsx)(B,{"aria-label":`Authentication`,children:(0,Q.jsx)(R,{children:ft})}),(0,Q.jsxs)(z,{alignItemWithTrigger:!1,children:[(0,Q.jsx)(L,{value:`none`,children:`None or headers`}),(0,Q.jsx)(L,{value:`oauth`,children:`OAuth (sign in after saving)`})]})]})})]}),t[26]=c.args,t[27]=c.auth,t[28]=c.command,t[29]=c.cwd,t[30]=c.type,t[31]=c.url,t[32]=A):A=t[32];let j;t[33]!==c.type||t[34]!==c.values||t[35]!==C||t[36]!==x?(j=c.values.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(se,{"aria-label":`${x} name`,placeholder:c.type===`stdio`?`API_TOKEN`:`Authorization`,value:e.key,onChange:e=>C(t,{key:e.target.value})}),(0,Q.jsx)(Ie,{"aria-label":`${x} value`,placeholder:`Value`,value:e.value,onChange:e=>C(t,{value:e.target.value})}),(0,Q.jsx)(T,{size:`icon-sm`,variant:`ghost`,"aria-label":`Remove ${e.key||`row`}`,onClick:()=>b({values:c.values.filter((e,n)=>n!==t)}),children:(0,Q.jsx)(u,{"aria-hidden":!0})})]},t)),t[33]=c.type,t[34]=c.values,t[35]=C,t[36]=x,t[37]=j):j=t[37];let M;t[38]===c.values?M=t[39]:(M=()=>b({values:[...c.values,{key:``,value:``}]}),t[38]=c.values,t[39]=M);let N;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,Q.jsx)(a,{"aria-hidden":!0}),t[40]=N):N=t[40];let P=c.type===`stdio`?`variable`:`header`,F;t[41]!==M||t[42]!==P?(F=(0,Q.jsxs)(T,{variant:`soft`,onClick:M,children:[N,`Add `,P]}),t[41]=M,t[42]=P,t[43]=F):F=t[43];let I;t[44]!==j||t[45]!==F?(I=(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[j,F]}),t[44]=j,t[45]=F,t[46]=I):I=t[46];let H;t[47]!==I||t[48]!==x?(H=(0,Q.jsx)($,{label:x,children:I}),t[47]=I,t[48]=x,t[49]=H):H=t[49];let U;t[50]!==O||t[51]!==k||t[52]!==A||t[53]!==H?(U=(0,Q.jsxs)(Se,{children:[O,k,A,H]}),t[50]=O,t[51]=k,t[52]=A,t[53]=H,t[54]=U):U=t[54];let W;t[55]!==v||t[56]!==g?(W=v&&g!==void 0?(0,Q.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive-foreground`,children:g}):null,t[55]=v,t[56]=g,t[57]=W):W=t[57];let G=!v||g!==void 0,K=n===void 0?`Add server`:`Save`,q;t[58]!==G||t[59]!==K?(q=(0,Q.jsx)(T,{type:`submit`,disabled:G,children:K}),t[58]=G,t[59]=K,t[60]=q):q=t[60];let ee;t[61]!==W||t[62]!==q?(ee=(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[W,q]}),t[61]=W,t[62]=q,t[63]=ee):ee=t[63];let J;return t[64]!==U||t[65]!==ee||t[66]!==w||t[67]!==E?(J=(0,Q.jsxs)(`form`,{className:`grid gap-3`,onSubmit:w,children:[E,U,ee]}),t[64]=U,t[65]=ee,t[66]=w,t[67]=E,t[68]=J):J=t[68],J}function ft(e){return e===`oauth`?`OAuth (sign in after saving)`:`None or headers`}function pt(e){let t=(0,Y.c)(55),{environmentId:n,plugin:i,environmentLabel:a,onSave:s}=e,c=i?.path??``,l=i===void 0?null:`.claude-plugin/plugin.json`,u;t[0]!==n||t[1]!==c||t[2]!==l?(u=ye(n,c,l),t[0]=n,t[1]=c,t[2]=l,t[3]=u):u=t[3];let f=d(o(r(u))),p=We(i!==void 0&&f!==null&&!f.truncated?f.contents:null),m;t[4]===i?.options?m=t[5]:(m=i?.options??{},t[4]=i?.options,t[5]=m);let h=m,g=[...p,...Object.keys(h).filter(e=>!p.some(t=>t.key===e)).map(ht)],[_,v]=(0,X.useState)(i?.name??``),[y,b]=(0,X.useState)(i?.path??``),[x,S]=(0,X.useState)(h),C;t[6]!==i?.name||t[7]!==i?.path||t[8]!==h?(C=JSON.stringify([i?.name??``,i?.path??``,h]),t[6]=i?.name,t[7]=i?.path,t[8]=h,t[9]=C):C=t[9];let w=C,[E,D]=(0,X.useState)(w);w!==E&&(D(w),v(i?.name??``),b(i?.path??``),S(h));let O,k;t[10]!==_||t[11]!==x||t[12]!==y||t[13]!==i?.name||t[14]!==i?.path||t[15]!==h?(O=Object.fromEntries(Object.entries(x).filter(mt)),k=_!==(i?.name??``)||y!==(i?.path??``)||JSON.stringify(O)!==JSON.stringify(h),t[10]=_,t[11]=x,t[12]=y,t[13]=i?.name,t[14]=i?.path,t[15]=h,t[16]=O,t[17]=k):(O=t[16],k=t[17]);let A=k,j;t[18]!==_||t[19]!==y?(j=_.trim().length>0&&y.trim().startsWith(`/`),t[18]=_,t[19]=y,t[20]=j):j=t[20];let M=j,N;t[21]!==A||t[22]!==_||t[23]!==O||t[24]!==s||t[25]!==y||t[26]!==i?.enabled||t[27]!==M?(N=e=>{e.preventDefault(),A&&M&&s({name:_.trim(),path:y.trim(),enabled:i?.enabled??!0,options:O})},t[21]=A,t[22]=_,t[23]=O,t[24]=s,t[25]=y,t[26]=i?.enabled,t[27]=M,t[28]=N):N=t[28];let P;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(P=e=>v(e.target.value),t[29]=P):P=t[29];let F;t[30]===_?F=t[31]:(F=(0,Q.jsx)($,{label:`Name`,htmlFor:`plugin-name`,children:(0,Q.jsx)(se,{id:`plugin-name`,value:_,onChange:P})}),t[30]=_,t[31]=F);let I=`Folder on ${a}`,L;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>b(e.target.value),t[32]=L):L=t[32];let R;t[33]===y?R=t[34]:(R=(0,Q.jsx)(se,{id:`plugin-path`,placeholder:`/Users/me/plugins/my-plugin`,value:y,onChange:L}),t[33]=y,t[34]=R);let z;t[35]!==I||t[36]!==R?(z=(0,Q.jsx)($,{label:I,htmlFor:`plugin-path`,children:R}),t[35]=I,t[36]=R,t[37]=z):z=t[37];let B=g.map(e=>(0,Q.jsx)($,{label:e.required?e.title:`${e.title} (optional)`,htmlFor:`plugin-option-${e.key}`,children:(0,Q.jsx)(Ie,{id:`plugin-option-${e.key}`,placeholder:`description`in e?e.description:void 0,value:x[e.key]??``,onChange:t=>S(n=>({...n,[e.key]:t.target.value}))})},e.key)),V;t[38]!==F||t[39]!==z||t[40]!==B?(V=(0,Q.jsxs)(Se,{children:[F,z,B]}),t[38]=F,t[39]=z,t[40]=B,t[41]=V):V=t[41];let H;t[42]!==A||t[43]!==M?(H=A&&!M?(0,Q.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive-foreground`,children:`Enter a name and the plugin folder's full path.`}):null,t[42]=A,t[43]=M,t[44]=H):H=t[44];let U=!A||!M,W=i===void 0?`Add plugin`:`Save`,G;t[45]!==U||t[46]!==W?(G=(0,Q.jsx)(T,{type:`submit`,disabled:U,children:W}),t[45]=U,t[46]=W,t[47]=G):G=t[47];let K;t[48]!==H||t[49]!==G?(K=(0,Q.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[H,G]}),t[48]=H,t[49]=G,t[50]=K):K=t[50];let q;return t[51]!==V||t[52]!==K||t[53]!==N?(q=(0,Q.jsxs)(`form`,{className:`grid gap-3`,onSubmit:N,children:[V,K]}),t[51]=V,t[52]=K,t[53]=N,t[54]=q):q=t[54],q}function mt(e){let[,t]=e;return t}function ht(e){return{key:e,title:e,required:!1}}var gt=e=>e.replace(/[\\/][^\\/]*$/,``)||`/`;function _t(e){let t=(0,Y.c)(69),{entry:i,environmentId:a,onClose:s}=e,{skill:c,providers:l}=i,u,f,m;t[0]!==a||t[1]!==c.path?(u=gt(c.path),f=r,m=ye(a,u,c.path),t[0]=a,t[1]=c.path,t[2]=u,t[3]=f,t[4]=m):(u=t[2],f=t[3],m=t[4]);let h=f(m),v;t[5]===h?v=t[6]:(v=d(o(h)),t[5]=h,t[6]=v);let y=v,x=ee(a),{copyToClipboard:S}=U(),C;t[7]!==a||t[8]!==c.path?(C={environmentId:a,filePath:c.path,workspaceRoot:void 0},t[7]=a,t[8]=c.path,t[9]=C):C=t[9];let w=C,E=c.shortDescription??c.description,D;t[10]===c.scope?D=t[11]:(D=ct(c.scope),t[10]=c.scope,t[11]=D);let O=D,A;t[12]===s?A=t[13]:(A=e=>!e&&s(),t[12]=s,t[13]=A);let j;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`flex size-12 shrink-0 items-center justify-center rounded-full border border-border/60 text-muted-foreground`,children:(0,Q.jsx)(_,{className:`size-5`})}),t[14]=j):j=t[14];let M;t[15]===c?M=t[16]:(M=st(c),t[15]=c,t[16]=M);let N=`More for ${M}`,P;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Q.jsx)(b,{"aria-hidden":!0}),t[17]=P):P=t[17];let F;t[18]===N?F=t[19]:(F=(0,Q.jsx)(g,{render:(0,Q.jsx)(T,{size:`icon-sm`,variant:`ghost`,"aria-label":N,children:P})}),t[18]=N,t[19]=F);let L;t[20]!==x||t[21]!==w?(L=x.capabilities.canOpenDefault?(0,Q.jsx)(p,{onClick:()=>void x.activate(`open`,w),children:`Open`}):null,t[20]=x,t[21]=w,t[22]=L):L=t[22];let R;t[23]!==x||t[24]!==w?(R=x.capabilities.revealLabel?(0,Q.jsx)(p,{onClick:()=>void x.activate(`reveal-in-folder`,w),children:x.capabilities.revealLabel}):null,t[23]=x,t[24]=w,t[25]=R):R=t[25];let z=y===null,B;t[26]!==S||t[27]!==y?(B=()=>y&&S(y.contents,void 0),t[26]=S,t[27]=y,t[28]=B):B=t[28];let V;t[29]!==z||t[30]!==B?(V=(0,Q.jsx)(p,{disabled:z,onClick:B,children:`Copy Markdown`}),t[29]=z,t[30]=B,t[31]=V):V=t[31];let H;t[32]!==L||t[33]!==R||t[34]!==V?(H=(0,Q.jsxs)(n,{align:`end`,children:[L,R,V]}),t[32]=L,t[33]=R,t[34]=V,t[35]=H):H=t[35];let W;t[36]!==F||t[37]!==H?(W=(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-3 pe-8`,children:[j,(0,Q.jsxs)(k,{children:[F,H]})]}),t[36]=F,t[37]=H,t[38]=W):W=t[38];let G;t[39]===c?G=t[40]:(G=st(c),t[39]=c,t[40]=G);let K;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,Q.jsx)(`span`,{className:`font-normal text-muted-foreground`,children:`Skill`}),t[41]=K):K=t[41];let q;t[42]===G?q=t[43]:(q=(0,Q.jsxs)(ce,{children:[G,` `,K]}),t[42]=G,t[43]=q);let J;t[44]===E?J=t[45]:(J=E?(0,Q.jsx)(le,{children:E}):null,t[44]=E,t[45]=J);let te;t[46]!==q||t[47]!==J?(te=(0,Q.jsxs)(`div`,{className:`grid gap-1.5`,children:[q,J]}),t[46]=q,t[47]=J,t[48]=te):te=t[48];let ne;t[49]!==u||t[50]!==a||t[51]!==y||t[52]!==h?(ne=(0,Q.jsx)(`div`,{className:`max-h-[50vh] min-h-24 overflow-y-auto rounded-xl border border-border/60 bg-card/40 px-5 py-4`,children:y===null?h._tag===`Failure`?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This skill's file could not be read. It may have moved since the provider last scanned it.`}):(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(re,{className:`h-4 w-3/4`}),(0,Q.jsx)(re,{className:`h-4 w-full`}),(0,Q.jsx)(re,{className:`h-4 w-2/3`})]}):(0,Q.jsx)(I,{text:lt(y.contents),cwd:u,environmentId:a})}),t[49]=u,t[50]=a,t[51]=y,t[52]=h,t[53]=ne):ne=t[53];let ie;t[54]===l?ie=t[55]:(ie=l.join(`, `),t[54]=l,t[55]=ie);let ae=`Loaded by ${ie}`,oe;t[56]!==O||t[57]!==ae?(oe=[O,ae].filter(Boolean),t[56]=O,t[57]=ae,t[58]=oe):oe=t[58];let se=oe.join(` · `),fe;t[59]===se?fe=t[60]:(fe=(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:se}),t[59]=se,t[60]=fe);let pe;t[61]!==W||t[62]!==te||t[63]!==ne||t[64]!==fe?(pe=(0,Q.jsx)(ue,{className:`max-w-2xl`,children:(0,Q.jsxs)(`div`,{className:`grid min-h-0 gap-4 p-6`,children:[W,te,ne,fe]})}),t[61]=W,t[62]=te,t[63]=ne,t[64]=fe,t[65]=pe):pe=t[65];let me;return t[66]!==pe||t[67]!==A?(me=(0,Q.jsx)(de,{open:!0,onOpenChange:A,children:pe}),t[66]=pe,t[67]=A,t[68]=me):me=t[68],me}var vt={claude:`Claude`,codex:`Codex`,cursor:`Cursor`},yt={success:`bg-success`,warning:`bg-warning`,error:`bg-destructive`,muted:`bg-muted-foreground/40`},bt={success:`text-success-foreground`,warning:`text-warning-foreground`,error:`text-destructive-foreground`,muted:`text-muted-foreground`},xt=w(v);function St(e){let t=s(e);return xt(t)&&t.reason===`rejected`?`This server only lets apps it has approved sign in, and it refused P4 Code. Sign in with a provider below instead.`:`Sign-in could not start. Check the server URL, then try again.`}function Ct(e,t,n){return e.transport.type===`http`&&(e.transport.auth===`oauth`||n?.auth===`signed-in`||t.needsSignIn)}function wt(e){let t=(0,Y.c)(13),{status:n,className:r}=e,i=bt[n.tone],a;t[0]!==r||t[1]!==i?(a=M(`flex min-w-0 items-center gap-1.5 text-xs`,i,r),t[0]=r,t[1]=i,t[2]=a):a=t[2];let o=yt[n.tone],s;t[3]===o?s=t[4]:(s=M(`size-1.5 shrink-0 rounded-full`,o),t[3]=o,t[4]=s);let c;t[5]===s?c=t[6]:(c=(0,Q.jsx)(`span`,{"aria-hidden":!0,className:s}),t[5]=s,t[6]=c);let l;t[7]===n.label?l=t[8]:(l=(0,Q.jsx)(`span`,{className:`truncate`,children:n.label}),t[7]=n.label,t[8]=l);let u;return t[9]!==a||t[10]!==c||t[11]!==l?(u=(0,Q.jsxs)(`span`,{className:a,children:[c,l]}),t[9]=a,t[10]=c,t[11]=l,t[12]=u):u=t[12],u}function Tt(){let e=(0,Y.c)(6),{environment:t,scope:n}=be(),r=t?.connection.phase===`connected`&&t.serverConfig!==null,i=r?t.environmentId:null,a=r&&t.serverConfig?.environment.capabilities.mcpRegistry===!0,o;return e[0]!==r||e[1]!==t||e[2]!==i||e[3]!==n||e[4]!==a?(o=(0,Q.jsx)(we,{width:`wide`,children:t===null||!r?(0,Q.jsx)(he,{children:(0,Q.jsxs)(fe,{children:[(0,Q.jsx)(pe,{children:`Connect to manage plugins and MCP servers`}),(0,Q.jsx)(me,{children:`They live on each environment. Choose a connected one above.`})]})}):!a||i===null?(0,Q.jsx)(he,{children:(0,Q.jsxs)(fe,{children:[(0,Q.jsxs)(pe,{children:[`Update `,t.label,` to manage plugins and MCP servers`]}),(0,Q.jsx)(me,{children:`This environment runs a version without them.`})]})}):(0,Q.jsx)(kt,{environmentId:i,environmentLabel:t.label,projectId:n.kind===`checkout`?n.checkout.id:n.kind===`project`?n.members.find(e=>e.environmentId===i)?.id:void 0,projectLabel:n.kind===`project`||n.kind===`checkout`?n.label:void 0},i)}),e[0]=r,e[1]=t,e[2]=i,e[3]=n,e[4]=a,e[5]=o):o=e[5],o}var Et={plugins:`Search plugins`,mcps:`Search MCP servers`,skills:`Search skills`},Dt=(e,...t)=>e===``||t.some(t=>t.toLowerCase().includes(e));function Ot(e){let t=(0,Y.c)(9),{text:n}=e,r=(0,X.useRef)(null),[i,a]=(0,X.useState)(!1),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=e=>{let t=r.current;a(e&&t!==null&&t.scrollWidth>t.clientWidth)},t[0]=o):o=t[0];let s;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Q.jsx)(`span`,{ref:r,tabIndex:0,className:`block truncate text-xs text-muted-foreground`}),t[1]=s):s=t[1];let c,l;t[2]===n?(c=t[3],l=t[4]):(c=(0,Q.jsx)(J,{render:s,children:n}),l=(0,Q.jsx)(te,{children:n}),t[2]=n,t[3]=c,t[4]=l);let u;return t[5]!==i||t[6]!==c||t[7]!==l?(u=(0,Q.jsxs)(ne,{open:i,onOpenChange:o,children:[c,l]}),t[5]=i,t[6]=c,t[7]=l,t[8]=u):u=t[8],u}function kt({environmentId:e,environmentLabel:t,projectId:i,projectLabel:a}){let o=H({select:e=>e.hash}),[s,l]=(0,X.useState)(()=>o.replace(/^#/,``)===`mcp-servers`?`mcps`:o.replace(/^#/,``)===`skills`?`skills`:`plugins`),[u,d]=(0,X.useState)(``),[m,h]=(0,X.useState)(`All categories`),v=r(G.configValueAtom(e))?.providers,w=(0,X.useMemo)(()=>ot(v??[]),[v]),[E,A]=(0,X.useState)(null),j=xe(e=>e.mcpServers),M=xe(e=>e.plugins),I=xe(e=>e.projectSettingsOverrides),U=xe(e=>e.skillOverrides),q=ee(e),re=r(G.updateSettings.permissionAtom(e)),[ie,se]=(0,X.useState)(null),ce=r(G.mcpRegistryTest.permissionAtom(e)),le=W(e),ue=K(G.updateSettings,{label:`update MCP registry`,reportFailure:!0}),de=K(G.mcpRegistryState,{reportFailure:!1}),fe=K(G.mcpRegistryTest,{label:`check MCP server`,reportFailure:!0}),pe=K(G.mcpRegistryOAuthStart,{label:`start MCP sign-in`,reportFailure:!0}),me=K(G.mcpRegistryOAuthSignOut,{label:`sign out of MCP server`,reportFailure:!0}),he=K(G.mcpRegistryDiscover,{reportFailure:!1}),ye=K(G.mcpRegistryImport,{label:`import MCP servers`,reportFailure:!0}),[be,Se]=(0,X.useState)({}),[Ce,we]=(0,X.useState)(new Set),[Pe,Ie]=(0,X.useState)([]),[Y,Le]=(0,X.useState)({kind:`list`}),Z=Y.kind!==`list`&&Y.id!==null&&(Y.kind===`server`?j[Y.id]===void 0:M[Y.id]===void 0)?{kind:`list`}:Y,[Be,Ve]=(0,X.useState)(o);if(o!==Be){Ve(o);let e=o.replace(/^#/,``);(e===`mcp-servers`||e===`plugins`||e===`skills`)&&(l(e===`mcp-servers`?`mcps`:e),Le({kind:`list`}))}let[He,Ue]=(0,X.useState)(null),We=(0,X.useRef)(new Map),[Ge,Ye]=(0,X.useState)(null),[Xe,Ze]=(0,X.useState)({}),Qe=(0,X.useMemo)(()=>Object.entries(j).map(([e,t])=>[N.make(e),t]).toSorted(([,e],[,t])=>e.name.localeCompare(t.name)),[j]),$e=(0,X.useMemo)(()=>Object.entries(M).map(([e,t])=>[D.make(e),t]),[M]),et=(0,X.useCallback)(async()=>{let t=await de({environmentId:e,input:{}});t._tag===`Success`&&Se(t.value.servers)},[e,de]),tt=(0,X.useCallback)(async()=>{if(!ce)return;let t=await he({environmentId:e,input:i===void 0?{}:{projectId:i}});t._tag===`Success`&&Ie(t.value.servers)},[ce,he,e,i]);(0,X.useEffect)(()=>{et(),tt()},[et,tt]);let nt=e=>{l(`mcps`),Le({kind:`server`,id:e})},rt=e=>{l(`plugins`),Le({kind:`plugin`,id:e})},it=t=>ue({environmentId:e,input:{patch:t}}),at=async t=>{we(e=>new Set(e).add(t));let n=await fe({environmentId:e,input:{serverId:t}});if(we(e=>{let n=new Set(e);return n.delete(t),n}),n._tag===`Success`)return Se(e=>({...e,[t]:n.value})),n.value},ct=(0,X.useEffectEvent)(async e=>{(await at(e))?.health.status===`connected`&&Ye(null)});(0,X.useEffect)(()=>{if(Ge===null)return;let e=()=>void ct(Ge);return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[Ge]);let lt=async(e,t,n)=>{(await it({mcpServers:{[e]:t}}))._tag===`Success`&&(n&&Le({kind:`list`}),tt(),t.enabled&&await at(e))},$=async(t,n=!1)=>{let r=We.current.get(t);if(!n&&Ge===t&&r){window.open(r,`_blank`,`noopener,noreferrer`);return}let i=le??window.location.origin;Ze(e=>{let n={...e};return delete n[t],n});let a=await pe({environmentId:e,input:{serverId:t,origin:new URL(i,window.location.href).origin,...n?{reauthenticate:n}:{}}});if(a._tag!==`Success`){a._tag===`Failure`&&Ze(e=>({...e,[t]:St(a.cause)}));return}if(a.value.authorizationUrl===null){await at(t);return}We.current.set(t,a.value.authorizationUrl),Ye(t),window.open(a.value.authorizationUrl,`_blank`,`noopener,noreferrer`)},ft=async t=>{let n=await me({environmentId:e,input:{serverId:t}});n._tag===`Success`&&Se(e=>({...e,[t]:n.value}))},mt=(e,t,n)=>{if(i===void 0)return;let r=I[i]??{},a={...r[e]};n===void 0?delete a[t]:a[t]={enabled:n},it({projectSettingsOverrides:{[i]:{...r,[e]:a}}})},ht=async()=>{let t=He;if(Ue(null),t!==null){if(t.kind===`server`){let n=j[t.id];n?.transport.type===`http`&&n.transport.auth===`oauth`&&await me({environmentId:e,input:{serverId:t.id}}),await it({mcpServers:{[t.id]:null}})}else await it({plugins:{[t.id]:null}});Le({kind:`list`})}},gt=Pe.filter(e=>!e.alreadyAdded),yt=new Set(Qe.filter(([e])=>Z.kind!==`server`||e!==Z.id).map(([,e])=>e.name)),bt=u.trim().toLowerCase(),xt=Qe.filter(([,e])=>Dt(bt,e.name,ze(e))),Tt=$e.filter(([,e])=>Dt(bt,e.name,e.path)),kt=gt.filter(e=>Dt(bt,e.name,e.summary)),At=(e,t)=>x({mcpServers:j,plugins:M,projectSettingsOverrides:I},e,i??null,t),Mt=(e,t,n)=>{if(i!==void 0){mt(e,t,n);return}it(e===`mcpServers`?{mcpServers:{[t]:{...j[t],enabled:n}}}:{plugins:{[t]:{...M[t],enabled:n}}})},Nt=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Q.jsx)(`h1`,{className:`text-2xl font-semibold text-foreground`,children:`Plugins`}),(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Manage plugins, skills, and MCP servers given to agents on `,t,`.`]})]}),ce?(0,Q.jsxs)(k,{children:[(0,Q.jsx)(g,{render:(0,Q.jsxs)(T,{children:[`Add`,(0,Q.jsx)(P,{"aria-hidden":!0})]})}),(0,Q.jsxs)(n,{align:`end`,children:[(0,Q.jsxs)(p,{onClick:()=>nt(null),children:[(0,Q.jsx)(F,{"aria-hidden":!0}),`Add MCP server`]}),(0,Q.jsxs)(p,{onClick:()=>rt(null),children:[(0,Q.jsx)(f,{"aria-hidden":!0}),`Add plugin`]})]})]}):null]}),Pt=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,Q.jsxs)(ae,{"aria-label":`Show`,variant:`default`,value:[s],onValueChange:e=>{let t=e[0];(t===`plugins`||t===`mcps`||t===`skills`)&&(l(t),Le({kind:`list`}))},children:[(0,Q.jsxs)(oe,{value:`plugins`,...Fe(`plugins`),children:[`Plugins `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:$e.length})]}),(0,Q.jsxs)(oe,{value:`mcps`,...Fe(`mcp-servers`),children:[`MCPs `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:Qe.length})]}),(0,Q.jsxs)(oe,{value:`skills`,...Fe(`skills`),children:[`Skills `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:w.length})]})]}),(0,Q.jsxs)(`div`,{className:`flex w-full gap-2 sm:w-auto`,children:[s===`skills`?(0,Q.jsx)(`div`,{className:`w-fit shrink-0`,children:(0,Q.jsxs)(V,{value:m,onValueChange:e=>e&&h(e),children:[(0,Q.jsx)(B,{"aria-label":`Skill category`,children:(0,Q.jsx)(R,{})}),(0,Q.jsxs)(z,{children:[(0,Q.jsx)(L,{value:`All categories`,children:`All categories`}),qe.filter(e=>e===`Personal`||e===`Built-in`||w.some(({skill:t})=>Je(t)===e)).map(e=>(0,Q.jsx)(L,{value:e,children:e},e))]})]})}):null,(0,Q.jsxs)(ve,{className:`min-w-0 flex-1 sm:w-56`,children:[(0,Q.jsx)(ge,{children:(0,Q.jsx)(y,{"aria-hidden":!0})}),(0,Q.jsx)(_e,{"aria-label":Et[s],placeholder:Et[s],value:u,onChange:e=>d(e.currentTarget.value)})]})]})]}),Ft=(e,t)=>(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(T,{size:`icon-sm`,variant:`ghost`,"aria-label":e,onClick:t,children:(0,Q.jsx)(S,{"aria-hidden":!0})})}),(0,Q.jsx)(te,{children:e})]}),It=Tt.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-sm text-muted-foreground`,children:$e.length===0?`No plugins yet. Add a Claude Code or Codex plugin folder to give its tools to your agents.`:`No plugins match your search.`}):(0,Q.jsx)(`ul`,{className:`grid gap-1`,children:Tt.map(([t,n])=>(0,Q.jsx)(Ke,{environmentId:e,plugin:n,enabled:At(`plugins`,t),disabled:!re,onDetails:()=>rt(t),onToggle:e=>Mt(`plugins`,t,e)},t))}),Lt=w.filter(({skill:e})=>(m===`All categories`||Je(e)===m)&&Dt(bt,st(e),e.name,e.shortDescription??``,e.description??``)),Rt=Lt.length===0?(0,Q.jsx)(`p`,{className:`py-6 text-sm text-muted-foreground`,children:w.length===0?`No skills found. Providers report the skills they load when they start.`:`No skills match these filters.`}):(0,Q.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Switches apply to new Claude and OpenCode sessions.`}),(0,Q.jsx)(`ul`,{className:`grid gap-1`,children:Lt.map(t=>{let r=Je(t.skill),a=(v??[]).filter(e=>O(e.driver)&&e.skills.some(e=>e.name===t.skill.name)),o=a.length?a.map(e=>e.displayName??e.driver).join(`, `):`Native settings`;return(0,Q.jsxs)(`li`,{className:`flex items-center gap-3 py-3`,children:[(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`flex size-10 shrink-0 items-center justify-center rounded-full border border-border/60 text-muted-foreground`,children:(0,Q.jsx)(_,{className:`size-4`})}),(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>A(t),className:`w-fit break-words text-left text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring`,children:st(t.skill)}),(0,Q.jsx)(Ot,{text:t.skill.shortDescription??t.skill.description??t.skill.path}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:[r,o].filter(Boolean).join(` · `)})]}),(0,Q.jsxs)(k,{children:[(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(g,{render:(0,Q.jsx)(T,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${st(t.skill)}`,children:(0,Q.jsx)(b,{"aria-hidden":!0})})})}),(0,Q.jsx)(te,{children:`Skill actions`})]}),(0,Q.jsxs)(n,{align:`end`,children:[q.capabilities.canOpenDefault?(0,Q.jsx)(p,{onClick:()=>void q.activate(`open`,{environmentId:e,filePath:t.skill.path,workspaceRoot:void 0}),children:`Open`}):null,(0,Q.jsx)(p,{onClick:()=>A(t),children:`Details`}),i!==void 0&&I[i]?.skillOverrides?.[t.skill.name]!==void 0?(0,Q.jsx)(p,{onClick:()=>{let e=I[i]??{},n={...e.skillOverrides};delete n[t.skill.name],it({projectSettingsOverrides:{[i]:{...e,skillOverrides:n}}})},children:`Use environment setting`}):null]})]}),(0,Q.jsx)(Ne,{"aria-label":`Enable ${st(t.skill)} for ${o}`,checked:(i===void 0?void 0:I[i]?.skillOverrides?.[t.skill.name])??U[t.skill.name]??t.skill.enabled,disabled:!re||ie!==null||a.length===0,onCheckedChange:e=>{se(t.skill.name),it(i===void 0?{skillOverrides:{[t.skill.name]:e}}:{projectSettingsOverrides:{[i]:{...I[i],skillOverrides:{...I[i]?.skillOverrides,[t.skill.name]:e}}}}).finally(()=>se(null))}})]},t.skill.path)})})]}),Bt=(0,Q.jsxs)(`div`,{className:`grid gap-6`,children:[Qe.length>0?(0,Q.jsx)(Te,{title:`Servers`,children:xt.length===0?(0,Q.jsx)(`p`,{className:`px-3 text-sm text-muted-foreground sm:px-4`,children:`No MCP servers match your search.`}):(0,Q.jsx)(Q.Fragment,{children:xt.map(([e,t])=>{let r=At(`mcpServers`,e),i=Re({...t,enabled:r},be[e],Ce.has(e)),a=Xe[e],o=Ct(t,i,be[e]);return(0,Q.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,Q.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),i.tone===`error`||o?(0,Q.jsx)(wt,{status:i}):null,a?(0,Q.jsx)(`span`,{className:`text-xs text-destructive-foreground`,children:a}):null]}),i.needsSignIn&&ce?(0,Q.jsx)(T,{size:`xs`,variant:`outline`,onClick:()=>void $(e),children:`Authenticate`}):null,o&&!i.needsSignIn&&ce?(0,Q.jsxs)(k,{children:[(0,Q.jsxs)(ne,{children:[(0,Q.jsx)(J,{render:(0,Q.jsx)(g,{render:(0,Q.jsx)(T,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${t.name}`,children:(0,Q.jsx)(b,{"aria-hidden":!0})})})}),(0,Q.jsx)(te,{children:`Sign-in actions`})]}),(0,Q.jsxs)(n,{align:`end`,children:[(0,Q.jsx)(p,{onClick:()=>void $(e,!0),children:`Re-authenticate`}),be[e]?.auth===`signed-in`?(0,Q.jsx)(p,{onClick:()=>void ft(e),children:`Sign out`}):null]})]}):null,Ft(`Settings for ${t.name}`,()=>nt(e)),(0,Q.jsx)(Ne,{"aria-label":`Give ${t.name} to agents`,checked:r,disabled:!ce,onCheckedChange:t=>Mt(`mcpServers`,e,t)})]},e)})})}):null,ce&&kt.length>0?(0,Q.jsx)(Te,{title:`Found in provider configs`,headerAction:(0,Q.jsx)(T,{size:`icon-xs`,variant:`ghost`,"aria-label":`Look again`,onClick:()=>void tt(),children:(0,Q.jsx)(c,{"aria-hidden":!0})}),children:(0,Q.jsx)(Q.Fragment,{children:kt.map(t=>(0,Q.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,Q.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,Q.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),kt.filter(e=>e.name===t.name).length>1?(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:(t.providers??[t.provider]).map(e=>vt[e]).join(`, `)}):null]}),(0,Q.jsx)(T,{size:`xs`,variant:`outline`,onClick:async()=>{(await ye({environmentId:e,input:{...i===void 0?{}:{projectId:i},servers:[{provider:t.provider,path:t.path,name:t.name}]}}))._tag===`Success`&&(tt(),et())},children:`Import`})]},`${t.provider}:${t.path}:${t.name}`))})}):null]}),Vt=Z.kind===`server`?(0,Q.jsxs)(ut,{title:Z.id===null?`Add MCP server`:`Update ${j[Z.id]?.name??`server`} MCP`,onBack:()=>Le({kind:`list`}),onUninstall:Z.id!==null&&ce?()=>Ue({kind:`server`,id:Z.id}):void 0,children:[(0,Q.jsx)(dt,{server:Z.id===null?void 0:j[Z.id],takenNames:yt,onSave:e=>void lt(Z.id??N.make(C()),e,Z.id===null)},Z.id??`new`),Z.id!==null&&j[Z.id]!==void 0?(0,Q.jsx)(jt,{environmentId:e,id:Z.id,server:j[Z.id],runtime:be[Z.id],checking:Ce.has(Z.id),canManage:ce,projectLabel:a,projectOverride:i===void 0?void 0:I[i]?.mcpServers?.[Z.id],awaitingSignIn:Ge===Z.id,onProviderToggle:(e,t)=>{let n=j[Z.id],r=t?n.disabledProviders.filter(t=>t!==e):[...n.disabledProviders,e];it({mcpServers:{[Z.id]:{...n,disabledProviders:r}}})},onProjectOverride:i===void 0?void 0:e=>mt(`mcpServers`,Z.id,e),signInError:Xe[Z.id],onTest:()=>void at(Z.id),onSignIn:()=>void $(Z.id),onReauthenticate:()=>void $(Z.id,!0),onSignOut:()=>void ft(Z.id)},`${e}:${Z.id}`):null]}):null,Ht=Z.kind===`plugin`?(0,Q.jsxs)(ut,{title:Z.id===null?`Add plugin`:`Update ${M[Z.id]?.name??`plugin`}`,onBack:()=>Le({kind:`list`}),onUninstall:Z.id!==null&&ce?()=>Ue({kind:`plugin`,id:Z.id}):void 0,children:[(0,Q.jsx)(pt,{environmentId:e,plugin:Z.id===null?void 0:M[Z.id],environmentLabel:t,onSave:async e=>{let t=Z.id??D.make(C());(await it({plugins:{[t]:e}}))._tag===`Success`&&Z.id===null&&Le({kind:`list`})}},Z.id??`new`),Z.id!==null&&M[Z.id]!==void 0?(0,Q.jsx)(zt,{plugin:M[Z.id],projectLabel:a,projectOverride:i===void 0?void 0:I[i]?.plugins?.[Z.id],onProjectOverride:i===void 0?void 0:e=>mt(`plugins`,Z.id,e)}):null]}):null;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`grid gap-6`,children:[Nt,Pt,Vt??Ht??(s===`plugins`?It:s===`mcps`?Bt:Rt)]}),E===null?null:(0,Q.jsx)(_t,{entry:E,environmentId:e,onClose:()=>A(null)}),(0,Q.jsx)(De,{open:He!==null,onOpenChange:e=>!e&&Ue(null),children:(0,Q.jsxs)(Oe,{children:[(0,Q.jsxs)(je,{children:[(0,Q.jsxs)(ke,{children:[`Remove`,` `,He?.kind===`server`?j[He.id]?.name??`server`:He?.kind===`plugin`?M[He.id]?.name??`plugin`:``,`?`]}),(0,Q.jsxs)(Me,{children:[`New sessions on `,t,` stop getting it. Its stored values and sign-in are deleted. Provider config files are not changed.`]})]}),(0,Q.jsxs)(Ee,{children:[(0,Q.jsx)(Ae,{render:(0,Q.jsx)(T,{variant:`outline`,children:`Cancel`})}),(0,Q.jsx)(T,{variant:`destructive`,onClick:()=>void ht(),children:`Remove`})]})]})})]})}function At(e){let t=(0,Y.c)(16),{projectLabel:n,override:r,inherited:i,onChange:a}=e,o=r?.enabled!==void 0,s=`In ${n}`,c=o?`Set for this project.`:`Follows the environment (${i?`on`:`off`}).`,l;t[0]!==a||t[1]!==o?(l=o?(0,Q.jsx)(T,{size:`xs`,variant:`ghost`,onClick:()=>a(void 0),children:`Reset`}):null,t[0]=a,t[1]=o,t[2]=l):l=t[2];let u=`Use in ${n}`,d=r?.enabled??i,f;t[3]===a?f=t[4]:(f=e=>a(e),t[3]=a,t[4]=f);let p;t[5]!==u||t[6]!==d||t[7]!==f?(p=(0,Q.jsx)(Ne,{"aria-label":u,checked:d,onCheckedChange:f}),t[5]=u,t[6]=d,t[7]=f,t[8]=p):p=t[8];let m;t[9]!==l||t[10]!==p?(m=(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l,p]}),t[9]=l,t[10]=p,t[11]=m):m=t[11];let h;return t[12]!==s||t[13]!==c||t[14]!==m?(h=(0,Q.jsx)(Ce,{title:s,description:c,control:m}),t[12]=s,t[13]=c,t[14]=m,t[15]=h):h=t[15],h}function jt(e){let t=(0,Y.c)(108),{environmentId:n,id:r,server:i,runtime:a,checking:o,canManage:s,projectLabel:c,projectOverride:u,awaitingSignIn:d,signInError:f,onProviderToggle:p,onProjectOverride:m,onTest:h,onSignIn:g,onReauthenticate:_,onSignOut:v}=e,y=s&&i.transport.type===`http`&&i.transport.auth===`oauth`&&a?.auth===`signed-out`,b=Ft(n,r,y),x=b.entries,S;t[0]!==o||t[1]!==a||t[2]!==i?(S=Re(i,a,o),t[0]=o,t[1]=a,t[2]=i,t[3]=S):S=t[3];let C=S,w;t[4]===x?w=t[5]:(w=x?.filter(Nt).length??0,t[4]=x,t[5]=w);let E=w,D;t[6]!==C||t[7]!==E||t[8]!==x||t[9]!==y?(D=y?{...C,tone:`muted`,label:x===null?`Checking providers…`:E>0?`Available to ${E} ${E===1?`provider`:`providers`}`:`No providers connected`}:C,t[6]=C,t[7]=E,t[8]=x,t[9]=y,t[10]=D):D=t[10];let O=D,k,A,j,M,N,P,F;if(t[11]!==d||t[12]!==s||t[13]!==o||t[14]!==x||t[15]!==r||t[16]!==p||t[17]!==_||t[18]!==g||t[19]!==v||t[20]!==h||t[21]!==a?.auth||t[22]!==i||t[23]!==f||t[24]!==b||t[25]!==O||t[26]!==y){let e;t[34]===x?e=t[35]:(e=e=>({...e,badge:x===null||e.unsupported!==void 0?void 0:$e(e.driver,x)}),t[34]=x,t[35]=e);let n=et(i).map(e),c=i.transport.type===`http`&&a?.auth===`signed-in`,u=f??O.detail;N=`grid gap-6`,P=r;let m;t[36]===O?m=t[37]:(m=(0,Q.jsx)(wt,{status:O,className:`flex-1 text-sm`}),t[36]=O,t[37]=m);let S;t[38]!==d||t[39]!==s||t[40]!==g||t[41]!==O.needsSignIn||t[42]!==y?(S=O.needsSignIn&&s&&!y?(0,Q.jsx)(T,{size:`xs`,onClick:g,children:d?`Open sign-in again`:`Authenticate`}):null,t[38]=d,t[39]=s,t[40]=g,t[41]=O.needsSignIn,t[42]=y,t[43]=S):S=t[43];let C;t[44]!==s||t[45]!==_||t[46]!==c||t[47]!==O.needsSignIn?(C=c&&!O.needsSignIn&&s?(0,Q.jsx)(T,{size:`xs`,variant:`outline`,onClick:_,children:`Re-authenticate`}):null,t[44]=s,t[45]=_,t[46]=c,t[47]=O.needsSignIn,t[48]=C):C=t[48];let w;t[49]!==s||t[50]!==v||t[51]!==c?(w=c&&s?(0,Q.jsx)(T,{size:`xs`,variant:`ghost`,onClick:v,children:`Sign out`}):null,t[49]=s,t[50]=v,t[51]=c,t[52]=w):w=t[52];let E;t[53]!==s||t[54]!==o||t[55]!==h||t[56]!==i.enabled?(E=s&&i.enabled?(0,Q.jsx)(T,{size:`xs`,variant:`outline`,disabled:o,onClick:h,children:`Test connection`}):null,t[53]=s,t[54]=o,t[55]=h,t[56]=i.enabled,t[57]=E):E=t[57];let D;t[58]!==m||t[59]!==S||t[60]!==C||t[61]!==w||t[62]!==E?(D=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[m,S,C,w,E]}),t[58]=m,t[59]=S,t[60]=C,t[61]=w,t[62]=E,t[63]=D):D=t[63];let I;t[64]!==d||t[65]!==O.needsSignIn||t[66]!==y?(I=O.needsSignIn&&!y?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d?`Finish signing in in your browser, then come back here.`:y?`Sign in here to give it to every provider.`:`Agents can't reach this server until you sign in.`}):null,t[64]=d,t[65]=O.needsSignIn,t[66]=y,t[67]=I):I=t[67];let L;t[68]!==u||t[69]!==y?(L=u&&!y?(0,Q.jsx)(`p`,{className:`rounded-md bg-destructive/8 px-2.5 py-1.5 text-xs text-destructive-foreground`,children:u}):null,t[68]=u,t[69]=y,t[70]=L):L=t[70];let R;t[71]!==d||t[72]!==u||t[73]!==g||t[74]!==y?(R=y?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer`,children:u?`Shared sign-in unavailable`:`Shared sign-in`}),(0,Q.jsxs)(`div`,{className:`grid gap-2 pt-2`,children:[(0,Q.jsx)(`p`,{children:u??`Sign in through P4 Code to share access with every enabled provider.`}),(0,Q.jsx)(`div`,{children:(0,Q.jsx)(T,{size:`xs`,variant:`outline`,onClick:g,children:d?`Open browser`:u?`Retry shared sign-in`:`Sign in through P4 Code`})})]})]}):null,t[71]=d,t[72]=u,t[73]=g,t[74]=y,t[75]=R):R=t[75];let z;t[76]===i.source?z=t[77]:(z=i.source?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer`,children:`Import source`}),(0,Q.jsx)(`p`,{className:`break-all pt-2`,children:i.source.path})]}):null,t[76]=i.source,t[77]=z);let B=y?(0,Q.jsx)(Lt,{serverName:i.name,signIns:b,blocked:n.filter(Mt).length}):null;t[78]!==D||t[79]!==I||t[80]!==L||t[81]!==R||t[82]!==z||t[83]!==B?(F=(0,Q.jsx)(Te,{title:`Status`,children:(0,Q.jsx)(Se,{children:(0,Q.jsxs)(`div`,{className:`grid gap-2 px-4 py-3`,children:[D,I,L,R,z,B]})})}),t[78]=D,t[79]=I,t[80]=L,t[81]=R,t[82]=z,t[83]=B,t[84]=F):F=t[84],A=Te,M=`Providers`,k=Se;let V;t[85]!==s||t[86]!==p||t[87]!==i.name?(V=e=>(0,Q.jsx)(Ce,{title:e.label,...e.unsupported===void 0?{}:{description:e.unsupported},control:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.badge===void 0?null:(0,Q.jsx)(l,{variant:Rt[e.badge].variant,children:Rt[e.badge].label}),(0,Q.jsx)(Ne,{"aria-label":`Give ${i.name} to ${e.label}`,checked:e.enabled&&e.badge!==`unavailable`,disabled:!s||e.unsupported!==void 0||e.badge===`unavailable`,onCheckedChange:t=>p(e.driver,t)})]})},e.driver),t[85]=s,t[86]=p,t[87]=i.name,t[88]=V):V=t[88],j=n.map(V),t[11]=d,t[12]=s,t[13]=o,t[14]=x,t[15]=r,t[16]=p,t[17]=_,t[18]=g,t[19]=v,t[20]=h,t[21]=a?.auth,t[22]=i,t[23]=f,t[24]=b,t[25]=O,t[26]=y,t[27]=k,t[28]=A,t[29]=j,t[30]=M,t[31]=N,t[32]=P,t[33]=F}else k=t[27],A=t[28],j=t[29],M=t[30],N=t[31],P=t[32],F=t[33];let I;t[89]!==k||t[90]!==j?(I=(0,Q.jsx)(k,{children:j}),t[89]=k,t[90]=j,t[91]=I):I=t[91];let L;t[92]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,Q.jsx)(`p`,{className:`px-3 text-xs text-muted-foreground sm:px-4`,children:`A change reaches a thread when its provider session next starts.`}),t[92]=L):L=t[92];let R;t[93]!==A||t[94]!==M||t[95]!==I?(R=(0,Q.jsxs)(A,{title:M,children:[I,L]}),t[93]=A,t[94]=M,t[95]=I,t[96]=R):R=t[96];let z;t[97]!==m||t[98]!==c||t[99]!==u||t[100]!==i.enabled?(z=c!==void 0&&m!==void 0?(0,Q.jsx)(Te,{title:`Project`,children:(0,Q.jsx)(Se,{children:(0,Q.jsx)(At,{projectLabel:c,override:u,inherited:i.enabled,onChange:m})})}):null,t[97]=m,t[98]=c,t[99]=u,t[100]=i.enabled,t[101]=z):z=t[101];let B;return t[102]!==R||t[103]!==z||t[104]!==N||t[105]!==P||t[106]!==F?(B=(0,Q.jsxs)(`div`,{className:N,"data-server-id":P,children:[F,R,z]}),t[102]=R,t[103]=z,t[104]=N,t[105]=P,t[106]=F,t[107]=B):B=t[107],B}function Mt(e){return e.enabled&&e.badge===`unavailable`}function Nt(e){return e.status===`signed-in`}function Pt(e){let t=s(e);return xt(t)&&t.detail!==void 0?t.detail:`Sign-in could not start. Try again.`}function Ft(e,t,n){let i=K(G.mcpRegistryProviderSignInState,{reportFailure:!1}),a=K(G.mcpRegistryProviderSignInStart,{reportFailure:!1}),o=K(G.mcpRegistryProviderSignInWait,{reportFailure:!1}),s=K(G.mcpRegistryProviderSignInComplete,{reportFailure:!1}),c=K(G.mcpRegistryProviderSignInCancel,{reportFailure:!1}),l=K(G.mcpRegistryProviderSignOut,{reportFailure:!1}),u=r(G.mcpRegistryProviderSignInComplete.permissionAtom(e)),d=r(G.mcpRegistryProviderSignInCancel.permissionAtom(e)),[f,p]=(0,X.useState)(null),[m,h]=(0,X.useState)({}),[g,_]=(0,X.useState)(new Set),v=(0,X.useRef)(new Set),y=e=>p(t=>t?.map(t=>t.instanceId===e.instanceId?e:t)??null),b=(e,t)=>h(n=>{let r={...n};return t===void 0?delete r[e]:r[e]=t,r});return(0,X.useEffect)(()=>{if(!n)return;let r=!1;return i({environmentId:e,input:{serverId:t}}).then(e=>{r||p(e._tag===`Success`?e.value.providers:[])}),()=>{r=!0}},[n,e,i,t]),(0,X.useEffect)(()=>{if(!n)return;let r=!1;for(let n of f??[]){let i=n.pending;i&&o({environmentId:e,input:{serverId:t,instanceId:n.instanceId,flowId:i.flowId}}).then(e=>{r||(p(t=>t?.map(t=>{if(t.instanceId!==n.instanceId||t.pending?.flowId!==i.flowId)return t;if(e._tag===`Success`)return e.value;let{pending:r,...a}=t;return a})??null),e._tag===`Failure`?b(n.instanceId,Pt(e.cause)):e._tag===`Success`&&e.value.status!==`signed-in`&&!v.current.has(n.instanceId)&&b(n.instanceId,`Sign-in ended without connecting. Try again.`))})}return()=>{r=!0}},[n,f,e,t,o]),{entries:n?f:null,errors:m,busy:g,run:async(n,r,i)=>{if(!v.current.has(n.instanceId)){v.current.add(n.instanceId),_(new Set(v.current)),b(n.instanceId,void 0);try{let o={serverId:t,instanceId:n.instanceId};if(r===`start`){let t=await a({environmentId:e,input:o});t._tag===`Success`?(y({...n,pending:t.value}),window.open(t.value.authorizationUrl,`_blank`,`noopener,noreferrer`)):t._tag===`Failure`&&b(n.instanceId,Pt(t.cause));return}let u={...o,flowId:n.pending?.flowId??``},d=r===`complete`?await s({environmentId:e,input:{...u,callbackUrl:i.trim()}}):r===`cancel`?await c({environmentId:e,input:u}):await l({environmentId:e,input:o});d._tag===`Success`?y(d.value):d._tag===`Failure`&&b(n.instanceId,Pt(d.cause))}finally{v.current.delete(n.instanceId),_(new Set(v.current))}}},canComplete:u,canCancel:d}}function It(e){let t=(0,Y.c)(39),{entry:n,signIns:r}=e,i;t[0]!==n.displayName||t[1]!==n.driver?(i=n.displayName??Ze(n.driver),t[0]=n.displayName,t[1]=n.driver,t[2]=i):i=t[2];let a=i,[o,s]=(0,X.useState)(``),c=n.pending,l;t[3]!==n.instanceId||t[4]!==r.busy?(l=r.busy.has(n.instanceId),t[3]=n.instanceId,t[4]=r.busy,t[5]=l):l=t[5];let u=l,d=r.errors[n.instanceId],f=`mcp-callback-${n.instanceId}`,p;t[6]===a?p=t[7]:(p=(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:a}),t[6]=a,t[7]=p);let m=c?`text-warning-foreground`:n.status===`signed-in`?`text-success-foreground`:`text-muted-foreground`,h;t[8]===m?h=t[9]:(h=M(`text-xs`,m),t[8]=m,t[9]=h);let g;t[10]!==n.status||t[11]!==c?(g=c?`Waiting for sign-in`:Qe(n.status),t[10]=n.status,t[11]=c,t[12]=g):g=t[12];let _;t[13]!==h||t[14]!==g?(_=(0,Q.jsx)(`p`,{className:h,role:`status`,children:g}),t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]!==p||t[17]!==_?(v=(0,Q.jsxs)(`div`,{className:`grid gap-1`,children:[p,_]}),t[16]=p,t[17]=_,t[18]=v):v=t[18];let y;t[19]!==u||t[20]!==n||t[21]!==d||t[22]!==c||t[23]!==r?(y=!c&&n.status!==`unavailable`?(0,Q.jsx)(T,{size:`xs`,variant:n.status===`signed-in`?`outline`:`default`,disabled:u,onClick:()=>void r.run(n,n.status===`signed-in`?`signOut`:`start`),children:u?`Please wait…`:n.status===`signed-in`?`Sign out`:d?`Start over`:`Sign in`}):null,t[19]=u,t[20]=n,t[21]=d,t[22]=c,t[23]=r,t[24]=y):y=t[24];let b;t[25]!==v||t[26]!==y?(b=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[v,y]}),t[25]=v,t[26]=y,t[27]=b):b=t[27];let x;t[28]!==u||t[29]!==o||t[30]!==n||t[31]!==d||t[32]!==f||t[33]!==c||t[34]!==r?(x=c?(0,Q.jsxs)(`form`,{className:`grid gap-2`,onSubmit:e=>{e.preventDefault(),o.trim()&&!u&&r.canComplete&&r.run(n,`complete`,o)},children:[(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Approve in your browser. If it ends on a callback URL, paste that URL here.`}),(0,Q.jsx)(`label`,{htmlFor:f,className:`text-xs font-medium`,children:`Callback URL`}),(0,Q.jsx)(se,{id:f,value:o,onChange:e=>s(e.target.value),placeholder:`http://localhost:…/callback?code=…&state=…`,autoComplete:`off`,spellCheck:!1,disabled:u||!r.canComplete,"aria-invalid":!!d,"aria-describedby":d?`${f}-error`:void 0}),d?(0,Q.jsx)(`p`,{id:`${f}-error`,role:`alert`,className:`text-xs text-destructive-foreground`,children:d}):null,(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Q.jsx)(T,{type:`submit`,size:`xs`,disabled:u||!o.trim()||!r.canComplete,children:u?`Please wait…`:`Finish sign-in`}),(0,Q.jsx)(T,{type:`button`,size:`xs`,variant:`outline`,disabled:u,onClick:()=>window.open(c.authorizationUrl,`_blank`,`noopener,noreferrer`),children:`Open browser`}),(0,Q.jsx)(T,{type:`button`,size:`xs`,variant:`ghost`,disabled:u||!r.canCancel,onClick:()=>void r.run(n,`cancel`),children:`Cancel`})]})]}):d?(0,Q.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive-foreground`,children:d}):null,t[28]=u,t[29]=o,t[30]=n,t[31]=d,t[32]=f,t[33]=c,t[34]=r,t[35]=x):x=t[35];let S;return t[36]!==b||t[37]!==x?(S=(0,Q.jsxs)(`div`,{className:`grid gap-2 border-t border-border pt-3`,children:[b,x]}),t[36]=b,t[37]=x,t[38]=S):S=t[38],S}function Lt(e){let t=(0,Y.c)(8),{serverName:n,signIns:r,blocked:i}=e,a;t[0]===r?a=t[1]:(a=r.entries===null?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Checking providers…`}):r.entries.length===0?(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No enabled provider here can sign in to MCP servers itself.`}):r.entries.map(e=>(0,Q.jsx)(It,{entry:e,signIns:r},`${e.instanceId}:${e.pending?.flowId??`idle`}`)),t[0]=r,t[1]=a);let o;t[2]!==i||t[3]!==n?(o=i>0?(0,Q.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsxs)(`summary`,{className:`cursor-pointer`,children:[i,` other `,i===1?`provider`:`providers`,` unavailable`]}),(0,Q.jsxs)(`p`,{className:`pt-2`,children:[`These providers need shared sign-in to use `,n,`.`]})]}):null,t[2]=i,t[3]=n,t[4]=o):o=t[4];let s;return t[5]!==a||t[6]!==o?(s=(0,Q.jsxs)(`div`,{className:`grid gap-3`,children:[a,o]}),t[5]=a,t[6]=o,t[7]=s):s=t[7],s}var Rt={"signed-in":{variant:`success`,label:`Signed in`},"needs-sign-in":{variant:`warning`,label:`Sign in needed`},unavailable:{variant:`secondary`,label:`Unavailable`}};function zt(e){let t=(0,Y.c)(7),{plugin:n,projectLabel:r,projectOverride:i,onProjectOverride:a}=e,o;t[0]!==a||t[1]!==n||t[2]!==r||t[3]!==i?(o=r!==void 0&&a!==void 0?(0,Q.jsx)(Te,{title:`Project`,children:(0,Q.jsx)(Se,{children:(0,Q.jsx)(At,{projectLabel:r,override:i,inherited:n.enabled,onChange:a})})}):null,t[0]=a,t[1]=n,t[2]=r,t[3]=i,t[4]=o):o=t[4];let s;return t[5]===o?s=t[6]:(s=(0,Q.jsx)(`div`,{className:`grid gap-6`,children:o}),t[5]=o,t[6]=s),s}var Bt=Tt;export{Bt as component};
|
|
5
|
+
//# sourceMappingURL=settings.plugins-JjZ7Ptzj.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectIconPickerDialog-D0OZSLq9.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/Icon-l19w4AjM.js","assets/utils-B0w8dSf5.js","assets/activity-C1Y3O_v1.js","assets/createLucideIcon-CacG5mZC.js","assets/alarm-clock-Pw90g7hE.js","assets/app-window-D2LBv8RE.js","assets/archive-0Qz6rgBl.js","assets/arrow-down-up-B46gw0xW.js","assets/arrow-down-DvRecXuy.js","assets/arrow-left-BLE461db.js","assets/arrow-right-left-BqjFeAD_.js","assets/arrow-right-CoV5ameY.js","assets/arrow-up-down-ibtVnemT.js","assets/arrow-up-left-BMvgV_8i.js","assets/arrow-up-right-C6IM-WPd.js","assets/arrow-up-3Yp3lsoe.js","assets/battery-Bjbw2yxu.js","assets/bell-CLuvLMth.js","assets/blocks-B-VfW07Q.js","assets/book-open-HEEW8eqT.js","assets/bookmark-HM-xwl47.js","assets/bot-DpQzHyXo.js","assets/box-CKWcQvdq.js","assets/bug-Dtc5BRVF.js","assets/calendar-arrow-down-CAFi0Chs.js","assets/calendar-arrow-up-Cs2MbLyZ.js","assets/calendar-clock-DTUOomkO.js","assets/calendar-c_JH_1V1.js","assets/camera-V1Ufc9sC.js","assets/chart-no-axes-column-DKbSsm0y.js","assets/check-Cmy7pM2Y.js","assets/chevron-down-DHV04o66.js","assets/chevron-left-DrNh6cTh.js","assets/chevron-right-NbahR9_s.js","assets/chevron-up-C-w52bD6.js","assets/chevrons-left-right-ellipsis-D2Qu5H2y.js","assets/chevrons-up-down-BMPucOK_.js","assets/chromium-BusoCgri.js","assets/circle-alert-B83jEPoh.js","assets/circle-arrow-up-kT0Pa2jA.js","assets/circle-check-Y1T60J9X.js","assets/circle-dashed-ChJzoouS.js","assets/circle-dot-DSAuCGJf.js","assets/circle-slash-Ceo-2WKq.js","assets/circle-x-C-GXnJRB.js","assets/circle-4zZlZno3.js","assets/clock-3-SBiWJYHb.js","assets/clock-bc9N_wA2.js","assets/cloud-download-BE7c7r3I.js","assets/cloud-upload-noux3Cbp.js","assets/cloud-DyVMWy7X.js","assets/code-xml-CbuCFrkh.js","assets/code-DuFehkNQ.js","assets/columns-2-D1kdFD9w.js","assets/copy-CoM62e83.js","assets/corner-left-up-BCqW4dF8.js","assets/corner-up-right--t3OPVhh.js","assets/cpu-mffhvvYB.js","assets/database-DipbOz0U.js","assets/download-BAp4p4A-.js","assets/earth-CTY23Bx1.js","assets/ellipsis-vertical-fYTS1grT.js","assets/ellipsis-6x3R4_IB.js","assets/external-link-NWS0I_zo.js","assets/eye-off-BJFC-Vn7.js","assets/eye-Dh5UEUs_.js","assets/file-braces-CcggTVd0.js","assets/file-code-corner-Dt6PpZnb.js","assets/file-diff-BE4sroJp.js","assets/file-search-DotMSEoS.js","assets/file-spreadsheet-Boc78Vjm.js","assets/file-text-xj3y_Xbg.js","assets/file-1cutE11R.js","assets/files-CQwG7JjF.js","assets/film-CYJIuMHb.js","assets/flask-conical-WkWFg73e.js","assets/folder-closed-zBKiY8_q.js","assets/folder-cog-BMK_9DOi.js","assets/folder-git-2-BxqGR5ht.js","assets/folder-git-CoMYGJp_.js","assets/folder-open-BqgCWh1y.js","assets/folder-plus-BHa3aD6W.js","assets/folder-tree-CIpeR87A.js","assets/folder-CMIvEUJv.js","assets/gauge-C_4eEUrj.js","assets/git-branch-plus-BQ_ISFgF.js","assets/git-branch-CAP5iwh8.js","assets/git-commit-horizontal-6IR7R88i.js","assets/git-fork-BEEZa2l_.js","assets/git-merge-C47N_dux.js","assets/git-pull-request-arrow-C9_ZycDh.js","assets/git-pull-request-closed-BkRFT_Rl.js","assets/git-pull-request-draft-BNpXqUsz.js","assets/globe-BygqUCSx.js","assets/grip-vertical-B8ERFH5y.js","assets/hammer-BRTj-Vot.js","assets/hard-drive-CVWUL95f.js","assets/hat-glasses-D7AuONMv.js","assets/history-B22_6xEN.js","assets/house-D_gjXlRt.js","assets/image-xUrgiZ2i.js","assets/inbox-48iST-IJ.js","assets/info-BHB-83EA.js","assets/keyboard-9HUE6Zs7.js","assets/laptop-05PEAB3d.js","assets/layers-BqgDAlx3.js","assets/lightbulb-CEqRo_1f.js","assets/link-2-B_p2EG7Q.js","assets/link-zAXVcUwk.js","assets/list-checks-CQu2FTgJ.js","assets/list-filter-BOx8tW9q.js","assets/list-ordered-f2n8ZhGo.js","assets/list-todo-D7F9k-PE.js","assets/list-BAEaXVbr.js","assets/loader-circle-B3Ce8JIQ.js","assets/lock-open-Bt3QlIE2.js","assets/lock-Cc3mNdEd.js","assets/log-in-BpPtfyCd.js","assets/mail-J8kfrAC7.js","assets/maximize-2-CHT2IkVy.js","assets/maximize-CoWtPryT.js","assets/memory-stick-C7kBEkBW.js","assets/message-circle-question-mark-Blboafqi.js","assets/message-circle-CwQpPAbq.js","assets/message-square-dashed-DrEYZ6F3.js","assets/message-square-off-BstjdZP9.js","assets/message-square-text-CJTpB0rs.js","assets/message-square-warning-I95tWaoN.js","assets/message-square-DLzUyuIE.js","assets/messages-square-BNeF2306.js","assets/minimize-2-DOhpJbnX.js","assets/minus-C7W28oE7.js","assets/monitor-Ddj8MK6z.js","assets/moon-B9ss2TfK.js","assets/mouse-pointer-2-DbBU41il.js","assets/mouse-pointer-click-DsDE4K7M.js","assets/octagon-alert-BKVCgU--.js","assets/package-plus-Cl7EzKuY.js","assets/package-CeeyHFJU.js","assets/paintbrush-D1BKpWrm.js","assets/palette-Xj4s0pmv.js","assets/panel-bottom-BzpRd9wr.js","assets/panel-left-DzXd97so.js","assets/panel-right-C3EFo10c.js","assets/paperclip-BCpF_jt0.js","assets/panels-top-left-C5lf6BGD.js","assets/pen-line-BeMREvYs.js","assets/pencil-ruler-CU_Sl28D.js","assets/pencil-CnxrJI7X.js","assets/picture-in-picture-2-g5nsWFVw.js","assets/pilcrow-DMiXqMTk.js","assets/pin-DfMqpQHz.js","assets/play-Bvcnzkvl.js","assets/plug-2-DkrvJqyh.js","assets/plus-Cr075-cy.js","assets/plug-Cdxb0djR.js","assets/power-BZu57mPF.js","assets/presentation-DvMc9hxG.js","assets/puzzle-Bv9mngwk.js","assets/qr-code-D3ZNC-wH.js","assets/quote-zNyOHYG3.js","assets/radio-tower-CT5Np78y.js","assets/redo-2-DRHZshO-.js","assets/refresh-cw-PY_ECjtI.js","assets/rotate-ccw-Dr4MwDMq.js","assets/rotate-cw-10CQA0Ej.js","assets/route-CQ6wZzks.js","assets/rows-3-Bhc8vjss.js","assets/scale-V7dmr96y.js","assets/search-Cr9eaeTj.js","assets/send-CMOvB09P.js","assets/server-Le_hLOlf.js","assets/settings-2-XzWAl_8P.js","assets/settings-CTjEqsg3.js","assets/shield-check-k2SY7zjx.js","assets/shield-question-mark-pgYZYoSI.js","assets/shield-veV1FXDO.js","assets/sliders-horizontal-lg5XUMZM.js","assets/smartphone-zkhAIn1Q.js","assets/smile-plus-20kjE9KX.js","assets/sparkles-cStmYKbH.js","assets/square-arrow-out-up-right-DRKYZdVU.js","assets/square-pen-DIW48FdK.js","assets/square-split-horizontal-Ba4BZbro.js","assets/square-split-vertical-BqJX4cZa.js","assets/square-terminal-CB0QR1vW.js","assets/square-DVrCvZRU.js","assets/star-DJ6Ycqv6.js","assets/sun-C8irSiA-.js","assets/tag-DhRIoqTo.js","assets/target-DziMQLku.js","assets/terminal-6kKaKv-Q.js","assets/text-align-start-C-EHiBr4.js","assets/text-search-BsqmpFYh.js","assets/text-wrap-C8SwAUbc.js","assets/ticket-LnwYlhC1.js","assets/trash-2-CiyAV2xI.js","assets/trending-down-CZZKiTTZ.js","assets/trending-up-CyMfjRD-.js","assets/triangle-alert-BiHUyRl3.js","assets/type-ChjbxAhu.js","assets/undo-2-ZlIXiNdF.js","assets/unlink-2-DKAoaBiV.js","assets/unplug-Dg15iaHA.js","assets/upload-D9-Kv89Z.js","assets/user-check-BtCtF_-l.js","assets/user-lock-BWt0Um72.js","assets/user-plus-DbG1t95t.js","assets/user-round-x-D7izbSMH.js","assets/user-round-GtkOza8y.js","assets/users-LmqvhHnq.js","assets/wifi-off-DtJhRDhE.js","assets/workflow-Za5zYpKH.js","assets/wrench-CSZxFJCP.js","assets/x-CSwbgjBe.js","assets/zap-CrtYfJ8v.js","assets/toggle-group--s5MIuQv.js","assets/CompositeRoot-DXqEvNI3.js","assets/toggle-DTjg9Rvs.js","assets/input-CDBTiBJx.js","assets/Input-BcEftKLM.js","assets/FieldControl-D-HuGl-Y.js","assets/useRegisterFieldControl-Cuo8UAhZ.js","assets/scroll-area-CT3H0nmo.js","assets/ScrollAreaCorner-CpFtD7m1.js","assets/CSPContext-BOMhNaNg.js","assets/dialog-Bdi4gsq5.js","assets/DialogTitle-B_iSZXaO.js","assets/ProjectMonogram-C1SBXbLc.js","assets/dynamic-Cog_ioOk.js","assets/index-B0OiR0Ol.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./index-B0OiR0Ol.js";import{r as n}from"./Icon-l19w4AjM.js";import{$n as r,$o as i,BE as a,Bp as o,D as s,O_ as c,Om as l,P_ as u,Rf as d,S_ as f,Ts as p,Xn as m,Xs as h,Yn as ee,Ys as g,Zn as _,_w as v,cr as y,hy as b,im as x,in as S,kc as C,lr as w,mE as T,n as E,qn as D,r as O,rr as te,vs as k,xd as ne}from"./utils-B0w8dSf5.js";import{R as re,U as A,W as ie,z as j}from"./runtime-mg6KxRIi.js";import{A as M,F as N,G as P,w as F}from"./entities-BhpgabTo.js";import{Sn as I}from"./runtime-V62Oyi1q.js";import{t as L}from"./useNavigate-CSxB1zLo.js";import{t as R}from"./useLocation-XbiRdmmb.js";import{i as z}from"./toast-B2B2ECBW.js";import{E as ae,J as B,K as V,O as oe}from"./useSettings-BEKkRzL1.js";import{f as H,s as U}from"./server-C8OpoOTL.js";import{n as W,o as G}from"./session-BAH17FBJ.js";import{t as K}from"./use-atom-command-BWLbyoVN.js";import{n as q}from"./toastHelpers-Dsph6LwL.js";import{t as J}from"./input-CDBTiBJx.js";import{D as Y,E as X,O as se,j as ce,y as le}from"./keybindings-4i_VvPsX.js";import{t as ue}from"./PierreEntryIcon-DZSPzXnW.js";import{t as de}from"./ProjectFavicon-CE_urBAW.js";import{d as fe}from"./projectFilesQueryState-DM9_vSRA.js";import{n as pe}from"./p4ProjectFile-BrXxii5J.js";import{h as me,n as he}from"./composerDraftUploads-DojMN9dn.js";import{r as ge,t as _e}from"./alert-D4hu_q2y.js";import{B as ve,H as ye,I as be,a as Z,i as xe,r as Se,s as Ce}from"./settingsLayout-DaLF8Hfm.js";import{i as we,o as Te,r as Ee}from"./command-Bdd9mlwd.js";import{cn as De,tn as Oe,un as ke}from"./main-BgKiw-9f.js";import{c as Ae,f as je,i as Me,n as Ne,o as Pe,r as Fe,s as Ie,t as Le}from"./projectScriptEditor-Pml2NkVE.js";import{t as Re}from"./ProjectDefaultsSettings-Ibem_Z4L.js";import{t as ze}from"./SettingsScopeNotice-DvcB28n8.js";var Be=a(),Q=e(n(),1),$=e(T(),1);function Ve(e,t,n){return t||(n?e.trim()?`Searching project files…`:`Indexing project files…`:e.trim()?`No matching image files.`:`No image files found.`)}function He(e,t){return!O(t)||I(e)}function Ue(e){let[t,n]=(0,Q.useState)(``),[r,a]=(0,Q.useState)(null),[o,s]=(0,Q.useState)(!1),c=fe(e.environmentId,e.cwd,t,200,{imageOnly:!0}),{resolvedTheme:l}=V(),u=i(U),d=e.onPickExternal,f=E(typeof navigator>`u`?``:navigator.platform),p=(0,Q.useMemo)(()=>Oe(c.entries,c.matchedQuery).map(t=>({kind:`action`,value:`project-favicon:${t.path}`,searchTerms:[t.name,t.path],title:t.name,description:t.path,icon:(0,$.jsx)(ue,{pathValue:t.path,kind:`file`,theme:l}),run:async()=>e.onSelect(t.path)})),[e.onSelect,l,c.entries,c.matchedQuery]);return(0,$.jsx)(Ee,{open:e.open,onOpenChange:e.onOpenChange,children:e.open?(0,$.jsx)(we,{"aria-label":`Choose project icon`,className:`overflow-hidden`,onBackdropPointerDown:()=>e.onOpenChange(!1),children:(0,$.jsx)(ke,{"aria-label":`Choose project icon`,autoHighlight:`always`,escapeLabel:`Close`,footerActionLabel:`Select icon`,footerTrailing:d?(0,$.jsx)(Te,{disabled:o,onClick:()=>{s(!0),d().then(t=>{t&&(e.onOpenChange(!1),e.onSelect(t))}).catch(e=>{z.add({type:`error`,title:`Could not open image picker`,description:e instanceof Error?e.message:`An error occurred.`})}).finally(()=>s(!1))},children:`Open in ${f}`}):null,inputProps:{placeholder:`Search image files…`},mode:`none`,onItemHighlighted:e=>{a(typeof e==`string`?e:null)},onValueChange:e=>{a(null),n(e)},panelSize:`tall-list`,testId:`project-favicon-picker`,value:t,children:(0,$.jsx)(De,{groups:p.length>0?[{value:`project-favicon-files`,label:e.projectName,items:p}]:[],highlightedItemValue:r,isActionsOnly:!1,keybindings:u,onExecuteItem:t=>{t.kind===`action`&&(e.onOpenChange(!1),t.run())},emptyStateMessage:Ve(t,c.error,c.isPending)})})}):null})}function We(e){let t=(0,Be.c)(10),{scripts:n,keybindings:r,disabled:i,onEdit:a}=e;if(n.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`px-3 py-2 text-base text-muted-foreground sm:px-4 sm:text-sm`,children:`No actions configured.`}),t[0]=e):e=t[0],e}let o;if(t[1]!==i||t[2]!==r||t[3]!==a||t[4]!==n){let e;t[6]!==i||t[7]!==r||t[8]!==a?(e=e=>{let t=le(r,Y(e.id));return(0,$.jsx)(Z,{className:`group py-2`,title:(0,$.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,$.jsx)(Fe,{icon:e.icon,className:`size-4 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name}),e.runOnWorktreeCreate?(0,$.jsx)(`span`,{className:`shrink-0 rounded-sm border border-border/60 px-1.5 py-px text-2xs font-normal text-muted-foreground`,children:`setup`}):null,e.runOnSettle?(0,$.jsx)(`span`,{className:`shrink-0 rounded-sm border border-border/60 px-1.5 py-px text-2xs font-normal text-muted-foreground`,children:`on settle`}):null,e.previewUrl?(0,$.jsx)(`span`,{className:`shrink-0 rounded-sm border border-border/60 px-1.5 py-px text-2xs font-normal text-muted-foreground max-sm:hidden`,children:`preview · desktop only`}):null]}),description:(0,$.jsx)(`code`,{className:`block max-w-full truncate font-mono`,children:e.command}),control:(0,$.jsxs)($.Fragment,{children:[t?(0,$.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t}):null,(0,$.jsx)(`span`,{className:`flex shrink-0 opacity-0 group-focus-within:opacity-100 group-hover:opacity-100`,children:(0,$.jsx)(w,{size:`icon-xs`,variant:`ghost-muted`,"aria-label":`Edit ${e.name}`,disabled:i,onClick:()=>a(e),children:(0,$.jsx)(x,{className:`size-3.5`})})})]})},e.id)},t[6]=i,t[7]=r,t[8]=a,t[9]=e):e=t[9],o=n.map(e),t[1]=i,t[2]=r,t[3]=a,t[4]=n,t[5]=o}else o=t[5];return o}function Ge(e){if(e._tag===`Failure`&&!re(e)){let t=ie(e);z.add({type:`error`,title:`Failed to save project actions`,description:t instanceof Error?t.message:`An error occurred.`})}return j(e,()=>void 0)}function Ke(e){let t=F(),[n,r]=(0,Q.useState)(!1),i=(0,Q.useRef)(!1),a=K(H.updateSettings,`project actions update`),o=K(H.upsertKeybinding,`action shortcut update`),s=K(H.removeKeybinding,`action shortcut removal`);async function l(n,l,d){if(i.current||e.length===0){let e=`No available machine, or another action change is saving.`;return z.add({type:`error`,title:`Actions not saved`,description:e}),k(v(Error(e)))}if(e.some(({environmentId:e})=>!W(e,`settings:write`)))return Ge(k(v(new u({requiredScope:c,message:`This connection cannot change environment settings.`}))));i.current=!0,r(!0);try{for(let{environmentId:r,settings:i,keybindings:c,project:u}of e){let e=u?je(i,u):i.defaultProjectScripts,f=n(e),p=f??i.defaultProjectScripts,m=await a({environmentId:r,input:{patch:u?{projectSettingsOverrides:{[u.id]:f===null?pe(i,u.id,[`defaultProjectScripts`]):{...i.projectSettingsOverrides[u.id],defaultProjectScripts:f}}}:{defaultProjectScripts:f??[]}}});if(m._tag===`Failure`)return Ge(m);let h=l?[l]:e.filter(e=>!p.some(t=>t.id===e.id)).map(e=>e.id);for(let e of h){let n=Y(e),a=Ae(c,n),l=a?Ie({keybinding:a,command:n}):null,p=Ie({keybinding:d,command:n}),m=!f?.some(t=>t.id===e)&&(u&&i.defaultProjectScripts.some(t=>t.id===e)||Object.entries(i.projectSettingsOverrides).some(([t,n])=>t!==u?.id&&n.defaultProjectScripts?.some(t=>t.id===e))||t.some(t=>t.environmentId===r&&t.id!==u?.id&&(u?je(i,t):t.scripts).some(t=>t.id===e))),h=p?await o({environmentId:r,input:l&&l.key!==p.key?{...p,replace:l}:p}):l&&!m?await s({environmentId:r,input:l}):null;if(h?._tag===`Failure`)return Ge(h)}}return p(void 0)}finally{i.current=!1,r(!1)}}function d(n,r){let i=[...t.flatMap(e=>e.scripts.map(e=>e.id)),...e.flatMap(({settings:e,project:t})=>[...e.defaultProjectScripts,...Object.values(e.projectSettingsOverrides).flatMap(e=>e.defaultProjectScripts??[]),...t?.scripts??[]].map(e=>e.id))],a=n??se(r.name,i),o=X(a,r);return l(e=>{let t=e.map(e=>e.id===a?o:ce(e,r));return n===null?[...t,o]:t},a,r.keybinding)}return{saving:n,persist:l,submit:d}}function qe(){let e=(0,Be.c)(67),{scope:t,targets:n,target:i}=ve(),{environments:a}=ae(),s=t.kind===`project`||t.kind===`checkout`,c;e[0]!==a||e[1]!==i?(c=i?a.find(e=>e.environmentId===i.environmentId)?.serverConfig:void 0,e[0]=a,e[1]=i,e[2]=c):c=e[2];let l=c,u;e[3]===i?.settings.defaultProjectScripts?u=e[4]:(u=i?.settings.defaultProjectScripts??[],e[3]=i?.settings.defaultProjectScripts,e[4]=u);let d=u,f=l?.keybindings??C,p;if(e[5]!==d||e[6]!==n){let t;e[8]===d?t=e[9]:(t=e=>JSON.stringify(e.settings.defaultProjectScripts)!==JSON.stringify(d),e[8]=d,e[9]=t),p=n.some(t),e[5]=d,e[6]=n,e[7]=p}else p=e[7];let h=p,g=be(),[v,x]=(0,Q.useState)(null),S,T,E;e[10]!==a||e[11]!==s||e[12]!==t.members||e[13]!==n?(S=new Map(s?t.members.map(Ye):[]),T=Ke,E=n.flatMap(e=>{let t=a.find(t=>t.environmentId===e.environmentId);if(!t?.serverConfig)return[];let n=e.projectId?S.get(e.projectId):void 0;return n&&t.serverConfig.environment?.capabilities.projectSettingsOverrides!==!0?[]:[{environmentId:e.environmentId,settings:t.serverConfig.settings,keybindings:t.serverConfig.keybindings,...n?{project:n}:{}}]}),e[10]=a,e[11]=s,e[12]=t.members,e[13]=n,e[14]=S,e[15]=T,e[16]=E):(S=e[14],T=e[15],E=e[16]);let{saving:O,persist:k,submit:A}=T(E),j;e[17]!==S||e[18]!==i?(j=i?.projectId?S.get(i.projectId):void 0,e[17]=S,e[18]=i,e[19]=j):j=e[19];let M=j,N;e[20]===M?.environmentId?N=e[21]:(N=M?.environmentId??b.make(`none`),e[20]=M?.environmentId,e[21]=N);let P=Pe(N,M?.workspaceRoot??null),F;if(e[22]!==P.scripts||e[23]!==d){let t;e[25]===d?t=e[26]:(t=e=>!d.some(t=>t.command===e.command||t.name.toLowerCase()===e.name.toLowerCase()),e[25]=d,e[26]=t),F=P.scripts.filter(t),e[22]=P.scripts,e[23]=d,e[24]=F}else F=e[24];let I=F,L;e[27]===A?L=e[28]:(L=async e=>{let t={name:e.name,command:e.command,icon:e.icon??`play`,runOnWorktreeCreate:e.runOnWorktreeCreate??!1,waitForSetup:e.runOnWorktreeCreate===!0&&e.async===!1,runOnSettle:e.runOnSettle??!1,keybinding:null,previewUrl:e.previewUrl??null,autoOpenPreview:e.previewUrl?e.autoOpenPreview??!1:!1},n=await A(null,t);if(n._tag===`Failure`&&!re(n)){let e=ie(n);x({scriptId:null,initial:t,error:e instanceof Error?e.message:`Failed to import action.`})}},e[27]=A,e[28]=L);let R=L,z;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(z=[`defaultProjectScripts`],e[29]=z):z=e[29];let B;e[30]===k?B=e[31]:(B=()=>void k(Je),e[30]=k,e[31]=B);let V;e[32]!==g||e[33]!==R||e[34]!==I||e[35]!==O?(V=I.length>0?(0,$.jsxs)(D,{children:[(0,$.jsxs)(y,{render:(0,$.jsx)(w,{id:`import-scripts`,size:`xs`,variant:`ghost`,disabled:O||!g,type:`button`}),children:[`Import scripts`,(0,$.jsx)(ne,{className:`size-3.5`})]}),(0,$.jsxs)(r,{align:`end`,children:[(0,$.jsxs)(ee,{children:[(0,$.jsx)(m,{children:`Import from p4.json`}),(0,$.jsx)(`p`,{className:`px-2 pb-2 text-pretty text-sm text-muted-foreground`,children:`Add actions declared by this checkout without editing them first.`})]}),(0,$.jsx)(te,{}),I.map(e=>(0,$.jsxs)(_,{onClick:()=>void R(e),children:[(0,$.jsx)(Fe,{icon:e.icon??`play`,className:`size-4 shrink-0`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:`truncate font-medium`,children:e.name}),(0,$.jsx)(`div`,{className:`truncate font-mono text-muted-foreground`,children:e.command})]})]},`${e.name} ${e.command}`))]})]}):null,e[32]=g,e[33]=R,e[34]=I,e[35]=O,e[36]=V):V=e[36];let oe=O||!g||n.length===0,H,U;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(H=()=>x({scriptId:null,initial:Le}),U=(0,$.jsx)(o,{className:`size-3.5`}),e[37]=H,e[38]=U):(H=e[37],U=e[38]);let W;e[39]===oe?W=e[40]:(W=(0,$.jsxs)(w,{size:`xs`,variant:`outline`,disabled:oe,onClick:H,children:[U,`Add action`]}),e[39]=oe,e[40]=W);let G;e[41]!==V||e[42]!==W?(G=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[V,W]}),e[41]=V,e[42]=W,e[43]=G):G=e[43];let K;e[44]!==h||e[45]!==B||e[46]!==G?(K=(0,$.jsx)(Z,{serverScoped:!0,settingKeys:z,mixed:h,title:`Actions`,description:`Commands that run in this project's checkout or its worktree, with optional shortcuts.`,onResetOverride:B,control:G}),e[44]=h,e[45]=B,e[46]=G,e[47]=K):K=e[47];let q;e[48]!==g||e[49]!==f||e[50]!==h||e[51]!==O||e[52]!==d?(q=h?(0,$.jsx)(Z,{title:`Different actions across environments`,description:`Choose one environment to edit its list. Adding an action here adds it on every selected environment.`}):(0,$.jsx)(We,{scripts:d,keybindings:f,disabled:O||!g,onEdit:e=>x(Me(e,f))}),e[48]=g,e[49]=f,e[50]=h,e[51]=O,e[52]=d,e[53]=q):q=e[53];let J;e[54]===P.status?J=e[55]:(J=P.status===`invalid`?(0,$.jsx)(Z,{title:`p4.json is invalid`,description:`A p4.json exists in this checkout but fails to parse, so every action and icon it declares is ignored. Check the JSON syntax and icon values.`,className:`text-warning`}):null,e[54]=P.status,e[55]=J);let Y;e[56]!==k||e[57]!==v||e[58]!==d||e[59]!==A||e[60]!==i?(Y=i&&(0,$.jsx)(Ne,{environmentId:i.environmentId,editScope:`settings:write`,request:v,scripts:d,onSubmit:A,onDelete:e=>void k(t=>t.filter(t=>t.id!==e),e,null),onClose:()=>x(null)}),e[56]=k,e[57]=v,e[58]=d,e[59]=A,e[60]=i,e[61]=Y):Y=e[61];let X;return e[62]!==K||e[63]!==q||e[64]!==J||e[65]!==Y?(X=(0,$.jsxs)(Ce,{id:`project-actions`,title:`Actions`,children:[K,q,J,Y]}),e[62]=K,e[63]=q,e[64]=J,e[65]=Y,e[66]=X):X=e[66],X}function Je(){return null}function Ye(e){return[e.id,e]}function Xe(e,t,n){return n&&e.some(e=>e!==t)}var Ze=(0,Q.lazy)(()=>t(()=>import(`./ProjectIconPickerDialog-D0OZSLq9.js`).then(e=>({default:e.ProjectIconPickerDialog})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232])));function Qe(e){return`${e.environmentId}:${e.id}`}function $e(e){let t=(0,Be.c)(34),{projectKey:n,environmentId:r,checkoutKey:i}=e,a=r===void 0?null:r,o=i===void 0?null:i,s=ye(),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={from:`/settings`},t[0]=c):c=t[0];let l=L(c),u;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(u={select:tt},t[1]=u):u=t[1];let d=R(u),f;t[2]!==s||t[3]!==n?(f=s.find(e=>e.projectKey===n)??null,t[2]=s,t[3]=n,t[4]=f):f=t[4];let p=f,m;t[5]!==o||t[6]!==a||t[7]!==p?.memberProjects?(m=p?.memberProjects.filter(e=>(a===null||e.environmentId===a)&&(o===null||e.physicalProjectKey===o))??[],t[5]=o,t[6]=a,t[7]=p?.memberProjects,t[8]=m):m=t[8];let h=m,ee=(0,Q.useRef)(null),g,_;t[9]!==o||t[10]!==a||t[11]!==h||t[12]!==p?(g=()=>{p&&h.length!==0&&(ee.current={key:p.projectKey,environmentId:a,checkoutKey:o,memberKeys:h.map(et)})},_=[p,h,a,o],t[9]=o,t[10]=a,t[11]=h,t[12]=p,t[13]=g,t[14]=_):(g=t[13],_=t[14]),(0,Q.useEffect)(g,_);let v,y;if(t[15]!==o||t[16]!==a||t[17]!==s||t[18]!==h.length||t[19]!==l||t[20]!==d||t[21]!==n?(y=()=>{if(h.length>0)return;let e=ee.current;if(e?.key!==n||e.environmentId!==a||e.checkoutKey!==o)return;let t=s.find(t=>t.memberProjects.some(t=>e.memberKeys.includes(t.physicalProjectKey)));t&&l({to:d,search:()=>({project:t.projectKey,machine:a??void 0,checkout:o??void 0}),replace:!0,hashScrollIntoView:!1})},v=[s,l,d,n,h.length,a,o],t[15]=o,t[16]=a,t[17]=s,t[18]=h.length,t[19]=l,t[20]=d,t[21]=n,t[22]=v,t[23]=y):(v=t[22],y=t[23]),(0,Q.useEffect)(y,v),!p){let e=s.length===0?`Add a project from the sidebar to configure it here.`:`This project is no longer available.`,n;return t[24]===e?n=t[25]:(n=(0,$.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-8 text-sm text-muted-foreground`,children:e}),t[24]=e,t[25]=n),n}if(h.length===0){let e;return t[26]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`p`,{className:`p-8 text-sm text-muted-foreground`,children:`This checkout is no longer available in the selected project and environment.`}),t[26]=e):e=t[26],e}let b;t[27]!==h||t[28]!==p?(b={...p,memberProjects:h,environmentId:h[0].environmentId,id:h[0].id},t[27]=h,t[28]=p,t[29]=b):b=t[29];let x=b,S=`${p.projectKey}:${a??`all`}:${o??`all`}`,C=h.length<p.memberProjects.length,w;return t[30]!==x||t[31]!==S||t[32]!==C?(w=(0,$.jsx)(nt,{group:x,hasOtherMembers:C},S),t[30]=x,t[31]=S,t[32]=C,t[33]=w):w=t[33],w}function et(e){return e.physicalProjectKey}function tt(e){return e.pathname}function nt({group:e,hasOtherMembers:t}){let n=L({from:`/settings`}),r=oe(),{environments:i}=ae(),a=(0,Q.useMemo)(()=>new Map(i.map(e=>[e.environmentId,e])),[i]),o=G(e.memberProjects,f),c=e.memberProjects.every(e=>o.has(e.environmentId)),u=e.memberProjects.find(e=>a.get(e.environmentId)?.serverConfig!=null)??e.memberProjects[0],m=M(),ee=me(P.update,{reportFailure:!1}),_=me(P.delete,{reportFailure:!1}),y=(0,Q.useRef)(!1),b=u.faviconPath??null,x=u.projectIcon??null,C=typeof window<`u`&&e.memberProjects.every(e=>e.environmentId===r&&He(e.workspaceRoot,navigator.platform))?window.desktopBridge?.pickProjectFavicon:void 0,T=(0,Q.useCallback)((e,t)=>{if(t._tag!==`Failure`||re(t))return;let n=ie(t);z.add(q({type:`error`,title:e,description:n instanceof Error?n.message:`An error occurred.`}))},[]),E=(0,Q.useCallback)((e,t)=>{let n=e.find(e=>!W(e.environmentId,f));if(!n)return null;let r=k(v(Error(`This connection cannot change projects in ${n.environmentLabel??`this environment`}.`)));return T(t,r),r},[T]),D=(0,Q.useCallback)(async(t,n)=>{let r=E(e.memberProjects,n);if(r)return r;let i=e.memberProjects.find(e=>{let t=a.get(e.environmentId);return t?.connection.phase!==`connected`||!t.serverConfig});if(i){let e=Error(`Connect ${i.environmentLabel??`the selected environment`} and try again.`),t=k(v(e));return T(n,t),t}for(let r of e.memberProjects){let i=E([r],n);if(i)return i;let a=j(await ee({environmentId:r.environmentId,input:{projectId:r.id,...t}}),()=>void 0);if(a._tag===`Failure`)return T(e.memberProjects.length>1?`${n} on ${r.environmentLabel??`the current environment`}`:n,a),a}return p(void 0)},[E,a,e.memberProjects,T,ee]),O=(0,Q.useCallback)(async(t,n)=>{let r=t.trim();if(!r){z.add({type:`warning`,title:`Project title cannot be empty`});return}Xe(e.memberProjects.map(e=>e.title),r,n)&&await D({title:r},`Failed to rename project`)},[e.memberProjects,D]),[te,ne]=S(!c),[F,I]=S(!c),[R,V]=(0,Q.useState)(!1),H=(0,Q.useRef)(!1),U=(0,Q.useCallback)(async e=>{if(!H.current){H.current=!0,V(!0);try{await D(e,`Failed to update project icon`)}finally{H.current=!1,V(!1)}}},[D]),K=e.memberProjects.length>1,Y=(0,Q.useCallback)(async r=>{if(E(r,`Failed to remove project`))return;let i=B();if(!i)return;let a=new Set(r.map(Qe)),o=m.filter(e=>a.has(`${e.environmentId}:${e.projectId}`)),c=r.length===e.memberProjects.length,l=t||!c?`checkout`:`project`,u=r.length===1?r[0]:null,d=u?.title??e.displayName,f=await A(()=>i.dialogs.confirm([o.length>0?`Remove ${l} "${d}" and delete its ${o.length} thread${o.length===1?``:`s`}?`:`Remove ${l} "${d}"?`,...u?[`Path: ${u.workspaceRoot}`,...u.environmentLabel?[`Environment: ${u.environmentLabel}`]:[]]:[`This removes ${r.length} grouped project entries.`],...o.length>0?[`This permanently clears conversation history for those threads and any archived threads.`]:[`This permanently clears any archived conversation history.`],c&&!t?`This removes only the project entries, not the files on disk.`:`Other entries in this grouped project are unaffected.`,`This action cannot be undone.`].join(`
|
|
3
|
+
`),{variant:`destructive`}));if(f._tag===`Failure`||!f.value||E(r,`Failed to remove project`))return;let p=s.getState();for(let e of r){if(E([e],`Failed to remove project`))return;let t=o.filter(t=>t.environmentId===e.environmentId&&t.projectId===e.id),n=j(await _({environmentId:e.environmentId,input:{projectId:e.id,force:!0}}),()=>void 0);if(n._tag===`Failure`){T(`Failed to remove "${e.title}"`,n);return}let r=g(e.environmentId,e.id);await N(r),he(r,t.map(e=>h(e.environmentId,e.id)));let i=p.getDraftThreadByProjectRef(r);i&&p.clearDraftThread(i.draftId),p.clearProjectDraftThreadId(r)}c&&!t&&n({to:`/`,replace:!0})},[E,_,e.displayName,e.memberProjects.length,t,n,T,m]),X=(0,$.jsx)(Ce,{title:`Checkouts`,children:e.memberProjects.map(e=>(0,$.jsx)(Z,{title:e.environmentLabel??`Environment`,description:e.workspaceRoot,control:(0,$.jsx)(w,{size:`sm`,variant:`outline`,disabled:!o.has(e.environmentId),onClick:()=>void Y([e]),"aria-label":`Remove checkout ${e.workspaceRoot}`,children:`Remove`})},e.physicalProjectKey))});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(xe,{className:`gap-6`,children:[(0,$.jsxs)(_e,{variant:`info`,children:[(0,$.jsx)(d,{"aria-hidden":!0}),(0,$.jsx)(ge,{children:`Can't find a setting? Keep this project picked above and hop to any other settings page.`})]}),(0,$.jsxs)(Ce,{id:`project-overview`,title:`Project`,hideTitle:!0,children:[c?null:(0,$.jsx)(`p`,{className:`px-3 py-2 text-sm text-muted-foreground sm:px-4`,children:e.memberProjects.length>1?`Shared settings require permission to change every checkout in this group.`:`This connection cannot change this project.`}),(0,$.jsx)(Z,{title:`Name`,description:`The shared name for this project group in the sidebar and thread lists.`,control:(0,$.jsx)(J,{size:`sm`,className:`w-full sm:w-64`,"aria-label":`Project name`,disabled:!c,defaultValue:e.displayName,onChange:()=>{y.current=!0},onBlur:e=>{let t=y.current;y.current=!1,O(e.currentTarget.value,t)},onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}},`${e.projectKey}:${e.displayName}`)}),(0,$.jsx)(Z,{title:`Project icon`,description:x?.kind===`lucide`?`${x.name} · ${x.color}`:x?.kind===`monogram`?`${x.text} · ${x.color}`:x?.kind===`emoji`?x.emoji:b??`Automatic`,resetAction:e.memberProjects.some(e=>e.faviconPath!=null||e.projectIcon!=null)?(0,$.jsx)(Se,{label:`project icon`,disabled:R||!c,onClick:()=>void U({faviconPath:null,projectIcon:null})}):null,control:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(de,{project:u,className:`size-6`}),(0,$.jsx)(w,{size:`sm`,variant:`outline`,type:`button`,"aria-label":`Choose a project icon`,disabled:R||!c,onClick:()=>I(!0),children:`Choose icon`}),(0,$.jsx)(w,{size:`sm`,variant:`outline`,type:`button`,"aria-label":`Choose a project icon file`,disabled:R||!c,onClick:()=>ne(!0),children:`Choose file`})]})})]}),(0,$.jsx)(Re,{category:`project`}),(0,$.jsx)(qe,{}),K?X:null,(0,$.jsx)(Ce,{title:`Danger`,children:(0,$.jsx)(Z,{title:t?`Remove checkout`:e.memberProjects.length>1?`Remove this project everywhere`:`Remove project`,description:t?`Deletes the selected machine's checkout entries and their threads. Other machines and files on disk are not touched.`:e.memberProjects.length>1?`Deletes all ${e.memberProjects.length} checkout entries and their threads on every machine. Files on disk are not touched.`:`Deletes the project entry and its threads. Files on disk are not touched.`,control:(0,$.jsxs)(w,{size:`sm`,variant:`destructive-outline`,disabled:!c,onClick:()=>void Y(e.memberProjects),children:[(0,$.jsx)(l,{}),t?`Remove checkout`:e.memberProjects.length>1?`Remove all entries`:`Remove project`]})})})]}),(0,$.jsx)(Ue,{cwd:u.workspaceRoot,environmentId:u.environmentId,onOpenChange:ne,...C?{onPickExternal:()=>C(u.workspaceRoot)}:{},onSelect:e=>void U({faviconPath:e,projectIcon:null}),open:te&&c,projectName:e.displayName},`${u.environmentId}:${u.workspaceRoot}:${te}`),F&&c?(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(Ze,{current:x,projectName:u.title,open:!0,onOpenChange:I,onSelect:e=>void U({faviconPath:null,projectIcon:e})})}):null]})}function rt(){let e=(0,Be.c)(7),{search:t,scope:n}=ve(),r=n.kind===`project`||n.kind===`checkout`||n.kind===`unavailable`&&(n.reason===`project-missing`||n.reason===`checkout-missing`),i;return e[0]!==r||e[1]!==n.kind||e[2]!==n.message||e[3]!==t.checkout||e[4]!==t.machine||e[5]!==t.project?(i=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:t.project&&r?(0,$.jsx)($e,{projectKey:t.project,environmentId:t.machine?b.make(t.machine):null,checkoutKey:t.checkout??null}):n.kind===`unavailable`?(0,$.jsx)(xe,{children:(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n.message})}):(0,$.jsx)(ze,{target:`project`,children:`Choose a project to manage its name, icon, checkouts and actions.`})}),e[0]=r,e[1]=n.kind,e[2]=n.message,e[3]=t.checkout,e[4]=t.machine,e[5]=t.project,e[6]=i):i=e[6],i}var it=rt;export{it as component};
|
|
4
|
+
//# sourceMappingURL=settings.projects-DhhMAw0F.js.map
|