@p4code/cli 0.8.18 → 0.8.20
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-usgrWcNe.mjs → binCli-BU4pyUVV.mjs} +697 -479
- package/dist/client/.vite/manifest.json +2275 -2186
- package/dist/client/assets/AlertDialogRoot-CI-BT04n.js +2 -0
- package/dist/client/assets/{AnimatedHeight-CO3_zEQw.js → AnimatedHeight-B1LdeRxh.js} +2 -2
- package/dist/client/assets/{AuthSurfaceShell-BBPbK1uA.js → AuthSurfaceShell-Di1ASoMs.js} +2 -2
- package/dist/client/assets/{CSPContext-D8znCJtI.js → CSPContext-Bn8q5RdR.js} +2 -2
- package/dist/client/assets/{ChatGptUsageButton-Bda8Ir5S.js → ChatGptUsageButton-Ckccc0cE.js} +2 -2
- package/dist/client/assets/{ChatMarkdown-BS1t8pnS.js → ChatMarkdown-BHsOWwiC.js} +13 -13
- package/dist/client/assets/{CheckboxIndicator-D-KUEtIm.js → CheckboxIndicator-DUUgNp1r.js} +2 -2
- package/dist/client/assets/CodexSetupSection.logic-BbXZAyvp.js +2 -0
- package/dist/client/assets/{CollapsiblePanel-84e9KCIs.js → CollapsiblePanel-D1aZAbsh.js} +2 -2
- package/dist/client/assets/{ComboboxClear-FsZ2LcVw.js → ComboboxClear-CMNv82AR.js} +2 -2
- package/dist/client/assets/ComboboxGroupLabel-BqpdqndG.js +2 -0
- package/dist/client/assets/CommandBlock-Da6pXLt_.js +2 -0
- package/dist/client/assets/{ComposerPromptEditor-BGcYrFoa.js → ComposerPromptEditor-DxcWPWlA.js} +13 -13
- package/dist/client/assets/{CompositeRoot-fbPbFqqK.js → CompositeRoot-BP063J4d.js} +2 -2
- package/dist/client/assets/{ConnectionStatusDot-t_vHmaco.js → ConnectionStatusDot-DvalNlEr.js} +2 -2
- package/dist/client/assets/DevicePanel-DePWOu4d.js +2 -0
- package/dist/client/assets/DeviceSetup-BK7tjknq.js +2 -0
- package/dist/client/assets/{DialogTitle-DnR18OB7.js → DialogTitle-OaePW-Ih.js} +2 -2
- package/dist/client/assets/{DiffCommentAnnotation-Br9sOo_6.js → DiffCommentAnnotation-BzohZvIj.js} +2 -2
- package/dist/client/assets/DiffFileTree-OcbtQyxq.js +2 -0
- package/dist/client/assets/DiffPanel-BajglAZa.js +2 -0
- package/dist/client/assets/{DiffWorkerPoolProvider-DydpPFgM.js → DiffWorkerPoolProvider--30q2unm.js} +3 -3
- package/dist/client/assets/EmbeddedDesign-BcPI7zAV.js +19 -0
- package/dist/client/assets/{EmbeddedDesign-BsHZJ1Ch.css → EmbeddedDesign-DmybFtYo.css} +1 -1
- package/dist/client/assets/{EnvironmentMachineIcon-BMWCDR69.js → EnvironmentMachineIcon-DszKXxD_.js} +2 -2
- package/dist/client/assets/{ExpandableText-B6Dvgn62.js → ExpandableText-hoL-6ubc.js} +2 -2
- package/dist/client/assets/{FieldControl-CVOjReHh.js → FieldControl-DDVVfmpB.js} +2 -2
- package/dist/client/assets/{FileDiff-Dhyt7ZAJ.js → FileDiff-DSxfw81M.js} +2 -2
- package/dist/client/assets/FilePreviewPanel-jsWBRHEP.js +34 -0
- package/dist/client/assets/{FoldedSettingsSection-Clo0JgyS.js → FoldedSettingsSection-B66vyjYD.js} +2 -2
- package/dist/client/assets/{FormContext--axmNCbu.js → FormContext-B0PXExmu.js} +2 -2
- package/dist/client/assets/{Icons-BYSK3arN.js → Icons-CX6xNdVb.js} +2 -2
- package/dist/client/assets/Input-C7aWgRC_.js +2 -0
- package/dist/client/assets/{KeybindingsSettings.logic-30fwcukL.js → KeybindingsSettings.logic-6FRd2ilb.js} +2 -2
- package/dist/client/assets/NoProjectsHero-BJh2xTW2.js +2 -0
- package/dist/client/assets/{PanelLayoutControls-DL7sleZ-.js → PanelLayoutControls-BH9E0RgY.js} +10 -10
- package/dist/client/assets/{PierreEntryIcon-DKHnMJOl.js → PierreEntryIcon-DqZ3rsf9.js} +2 -2
- package/dist/client/assets/{PopoverHandle-C-e81PS3.js → PopoverHandle-DRjGw1Yt.js} +2 -2
- package/dist/client/assets/PreviewPanel-BvQZWo4y.js +2 -0
- package/dist/client/assets/ProjectDefaultsSettings-DpMGLYiX.js +2 -0
- package/dist/client/assets/ProjectFavicon-C3ZH51Lw.js +3 -0
- package/dist/client/assets/{ProjectIconPickerDialog-Bxa9i4w_.js → ProjectIconPickerDialog-R3JbSZVv.js} +2 -2
- package/dist/client/assets/{ProjectMonogram-CYD6eMbI.js → ProjectMonogram-IuYJI7zN.js} +2 -2
- package/dist/client/assets/{ProviderAuthTerminal-Cm88QElc.js → ProviderAuthTerminal-C-Y-b2Id.js} +2 -2
- package/dist/client/assets/ProviderModelPicker-DcDT2aJc.js +2 -0
- package/dist/client/assets/{ProviderSettingsForm-CLYzJJII.js → ProviderSettingsForm-CPtnly6g.js} +2 -2
- package/dist/client/assets/PullRequestCodeTab-CHzbe4Pg.js +6 -0
- package/dist/client/assets/{ReadOnlySourcePreview-D2Vkrzyc.js → ReadOnlySourcePreview-BdxBRo90.js} +2 -2
- package/dist/client/assets/RenderErrorBoundary-DOhJQzqI.js +2 -0
- package/dist/client/assets/ScheduledTasksSettings-BhwaQrJM.js +4 -0
- package/dist/client/assets/{ScopedSwitch-BrJEJr8I.js → ScopedSwitch--Y2Q_Dkg.js} +2 -2
- package/dist/client/assets/{ScrollAreaCorner-BYUnXNwJ.js → ScrollAreaCorner-Ck3L5tlH.js} +2 -2
- package/dist/client/assets/{SecretInput-CIbdWrQZ.js → SecretInput-UofV3Jxx.js} +2 -2
- package/dist/client/assets/{SelectScrollUpArrow-Cr4PrE_F.js → SelectScrollUpArrow-C_YHAw_f.js} +2 -2
- package/dist/client/assets/{SettingsPanels-B8q4OSW7.js → SettingsPanels-rRn3RxRM.js} +8 -8
- package/dist/client/assets/{SettingsPanels.logic-C5FkY28P.js → SettingsPanels.logic-CSbITXNG.js} +2 -2
- package/dist/client/assets/SettingsScopeNotice-B7r3-bw2.js +2 -0
- package/dist/client/assets/{T3ConnectAccountPages-DDSM7QWS.js → T3ConnectAccountPages-CZ221lRl.js} +2 -2
- package/dist/client/assets/{T3ConnectSidebarSignIn-GnkVas23.js → T3ConnectSidebarSignIn-pHxwsU9J.js} +2 -2
- package/dist/client/assets/ThemeEditorPanel-BRKQI9pP.js +5 -0
- package/dist/client/assets/{ThreadTerminalDrawer-4huAp-uS.js → ThreadTerminalDrawer-CYuLsPbc.js} +4 -4
- package/dist/client/assets/TooltipViewport-B_Oz-gLq.js +2 -0
- package/dist/client/assets/{Virtualizer-DjBOkz4F.js → Virtualizer-ChNeVtXh.js} +2 -2
- package/dist/client/assets/{WorkspaceBreadcrumb-ClxInGsT.js → WorkspaceBreadcrumb-CpHuVRke.js} +2 -2
- package/dist/client/assets/{WorkspacePageContainer-DwN_ETF0.js → WorkspacePageContainer-BQ0Bk5Qy.js} +2 -2
- package/dist/client/assets/{WorkspacePageHeader-BvKCy7v2.js → WorkspacePageHeader-Cx1gpU1l.js} +2 -2
- package/dist/client/assets/{_chat-C2VZmKVT.js → _chat-BNr1JB8N.js} +34 -34
- package/dist/client/assets/_chat.index-CGo_2dVK.js +2 -0
- package/dist/client/assets/_chat.new-B8h0E9bY.js +4 -0
- package/dist/client/assets/_chat.pull-requests-C9e5UJiQ.js +2 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-Cv0dw1u8.js → abnfDiagram-VCTEODGH-BewL_eNL.js} +2 -2
- package/dist/client/assets/{alert-DYmkyE3l.js → alert-CNni4aGm.js} +2 -2
- package/dist/client/assets/architecture-7GRP2DOG-DB68MNLl.js +1 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-BvQMjhmC.js → architectureDiagram-5GKGNRK7-C9j-xrz2.js} +2 -2
- package/dist/client/assets/{assets-COg7jyyX.js → assets-Co5XIu-W.js} +2 -2
- package/dist/client/assets/{blockDiagram-I7D4REHJ-DR7f58YJ.js → blockDiagram-I7D4REHJ-DSaqyAe3.js} +2 -2
- package/dist/client/assets/browserHistoryStore-C3MIb5y-.js +2 -0
- package/dist/client/assets/{browserLinkTarget-Bp-zUm0R.js → browserLinkTarget-B0Nl9z4y.js} +2 -2
- package/dist/client/assets/{c4Diagram-7LVT6UL2-zgFjNACn.js → c4Diagram-7LVT6UL2-DCgzKaRE.js} +2 -2
- package/dist/client/assets/channel-C9_T9oRs.js +2 -0
- package/dist/client/assets/{checkbox-brLYzznm.js → checkbox-BpAfakhx.js} +2 -2
- package/dist/client/assets/{chunk-4HAMMTFA-Q6ZY3Aj6.js → chunk-4HAMMTFA-DstDTNNT.js} +2 -2
- package/dist/client/assets/{chunk-75Z2AOVW-Dv4NtCmQ.js → chunk-75Z2AOVW-Dz-DtxrH.js} +2 -2
- package/dist/client/assets/{chunk-DU6HZSFF-D-pyRDMG.js → chunk-DU6HZSFF-Ll_1n6K5.js} +2 -2
- package/dist/client/assets/{chunk-F27PBJKO-BOXrNdwG.js → chunk-F27PBJKO-BhJS5B0M.js} +2 -2
- package/dist/client/assets/{chunk-GMAD6QVW-uYd_Q5lX.js → chunk-GMAD6QVW-YF2_U_Rb.js} +2 -2
- package/dist/client/assets/{chunk-GVQU2GXP-C3aAR6o_.js → chunk-GVQU2GXP-VQA2Ub_O.js} +2 -2
- package/dist/client/assets/{chunk-IMKFNOWR-CbCHd80E.js → chunk-IMKFNOWR-CUKSWZZL.js} +2 -2
- package/dist/client/assets/{chunk-L3NEJ4N5-B5jDlsms.js → chunk-L3NEJ4N5-B1mYJGkp.js} +2 -2
- package/dist/client/assets/{chunk-OSK3NFVY-DgNZQb8q.js → chunk-OSK3NFVY-DeMda-I1.js} +2 -2
- package/dist/client/assets/{chunk-P2QGCYS3-ptp4LKHi.js → chunk-P2QGCYS3-Cw7ng-Rc.js} +2 -2
- package/dist/client/assets/{chunk-POPQ4Y6H-CRBmOW8B.js → chunk-POPQ4Y6H-UV50oooU.js} +2 -2
- package/dist/client/assets/{chunk-PWAF6VOD-DHkc8IcS.js → chunk-PWAF6VOD-DN41TR2O.js} +2 -2
- package/dist/client/assets/{chunk-SHT3W25Y-B5XMb9ST.js → chunk-SHT3W25Y-wined05I.js} +2 -2
- package/dist/client/assets/{chunk-SVP7TREG-Lt0ZENIq.js → chunk-SVP7TREG-Cwfsds3m.js} +2 -2
- package/dist/client/assets/{chunk-TICWLB2K-BhZt3DVX.js → chunk-TICWLB2K-COhBRrwy.js} +2 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-DKnt792Z.js +2 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-DKnt792Z.js +2 -0
- package/dist/client/assets/{color-picker-D7d1go0g.js → color-picker-KVitc2gM.js} +2 -2
- package/dist/client/assets/{combobox-DSVavlIH.js → combobox-DiUoVqyf.js} +2 -2
- package/dist/client/assets/command-CMR1n6Uf.js +2 -0
- package/dist/client/assets/composer-logic-BcXfvdPq.js +6 -0
- package/dist/client/assets/composerDraftUploads-CDI8NeKM.js +2 -0
- package/dist/client/assets/{connect-C39BhZ-c.js → connect-BmEDcR9c.js} +2 -2
- package/dist/client/assets/{connect-agent-Dj_Cfdx6.js → connect-agent-CfaBrLrx.js} +2 -2
- package/dist/client/assets/{cynefin-OW5HDTMX-CNKdS-0M.js → cynefin-OW5HDTMX-NISsUCRb.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-CoFxzJSW.js → cynefinDiagram-5FMLGOSQ-CcmIsbpK.js} +2 -2
- package/dist/client/assets/{dagre-GXQ25YYZ-q0omC4bc.js → dagre-GXQ25YYZ-UITp4lya.js} +2 -2
- package/dist/client/assets/design-C4-KEBUo.js +2 -0
- package/dist/client/assets/{device-CWgOLpbF.js → device-BcFks_r6.js} +2 -2
- package/dist/client/assets/{diagram-S7CK7UJ4-CdFkGs_B.js → diagram-S7CK7UJ4-DGjl3T82.js} +2 -2
- package/dist/client/assets/{diagram-UQ7AKVKN-B0KtokqT.js → diagram-UQ7AKVKN-CXGDugDN.js} +2 -2
- package/dist/client/assets/{diagram-VSXAHHWV-DjtTeImL.js → diagram-VSXAHHWV-ClIfV-Eb.js} +2 -2
- package/dist/client/assets/{diagram-VX7I27RA-DRYLlkkf.js → diagram-VX7I27RA-CcyEAXBh.js} +2 -2
- package/dist/client/assets/{diagram-Z3DM3KII-C-x2EfL6.js → diagram-Z3DM3KII-B4b4azfJ.js} +2 -2
- package/dist/client/assets/{dialog-DYFQxVoN.js → dialog-D--IO2tX.js} +2 -2
- package/dist/client/assets/{diffRendering-6DuM2rGF.js → diffRendering-CCO51SHu.js} +2 -2
- package/dist/client/assets/{discovery-list-BvblDG7m.js → discovery-list-E9mW3ie9.js} +2 -2
- package/dist/client/assets/{dist-CkgAUeqn.js → dist-BUfo2bac.js} +3 -3
- package/dist/client/assets/{draft-input-27erQjx_.js → draft-input-BqhTvFTz.js} +2 -2
- package/dist/client/assets/{duoViewer-CBnLVCTt.js → duoViewer-DrRt1X-q.js} +2 -2
- package/dist/client/assets/{dynamic-Cjr9H8t4.js → dynamic-BHunf18B.js} +3 -3
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-UISo4OT-.js → ebnfDiagram-PWID7BFC-C4BXGn4k.js} +2 -2
- package/dist/client/assets/{embeddedScripts-Dr-tOtuJ.js → embeddedScripts-3mOBT50V.js} +2 -2
- package/dist/client/assets/{empty-2jxBvPLn.js → empty-IIGW45Hv.js} +2 -2
- package/dist/client/assets/{entities-DCbEYTvn.js → entities-ByTmol1p.js} +2 -2
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CeWlUdOf.js → erDiagram-RLTQ6QDP-DCS17tz_.js} +2 -2
- package/dist/client/assets/eventmodeling-NTZA5JFV-DnLkFrkm.js +1 -0
- package/dist/client/assets/{fileLinks-5NSgRKPU.js → fileLinks-Xjn6JEGT.js} +2 -2
- package/dist/client/assets/{fileTreeExpansion-CA6c4E3-.js → fileTreeExpansion-tsD7A-Z5.js} +2 -2
- package/dist/client/assets/flowDiagram-HODETNUW-BFbQWgza.js +1 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-KPPMvqNL.js → ganttDiagram-EL5Y4UJY-BGFtO7uE.js} +2 -2
- package/dist/client/assets/{getDiffFileInput-CuM1lgsL.js → getDiffFileInput-DFWDPe9O.js} +2 -2
- package/dist/client/assets/git-compare-DW_c6fci.js +2 -0
- package/dist/client/assets/{gitGraph-4MIJSDKK-BGSFaZro.js → gitGraph-4MIJSDKK-DZeZydG5.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-CwYf9r63.js → gitGraphDiagram-WWUBYQGX-3uL4kQuc.js} +2 -2
- package/dist/client/assets/{guideRunStore-B3Y6e_nf.js → guideRunStore-CGkdBBWi.js} +2 -2
- package/dist/client/assets/{htmlRender-BaqdfJ6m.js → htmlRender-n-z4ejOb.js} +2 -2
- package/dist/client/assets/{index-DmPPPGJb.js → index-CB8eLeeR.js} +3 -3
- package/dist/client/assets/{info-A6RAGUB7-C831OtOR.js → info-A6RAGUB7-C3L7Iy2t.js} +1 -1
- package/dist/client/assets/{infoDiagram-27XIBGKW-DVstIW76.js → infoDiagram-27XIBGKW-B8XmKHVk.js} +2 -2
- package/dist/client/assets/{input-83N8btBC.js → input-DX_wpYEr.js} +2 -2
- package/dist/client/assets/{input-group-Q757vhrD.js → input-group-B7App4HX.js} +2 -2
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CJq0N-AL.js → ishikawaDiagram-5VMMS53U-DqYb5ghg.js} +2 -2
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-D76KCD6f.js → journeyDiagram-3NMN7TZE-f4xls24M.js} +2 -2
- package/dist/client/assets/{kanban-definition-UXKFOSKX-D1kzRMIP.js → kanban-definition-UXKFOSKX-C4hiNifc.js} +2 -2
- package/dist/client/assets/{kbd-D8UfTN0o.js → kbd-CBsCsK1C.js} +2 -2
- package/dist/client/assets/{keybindings-DLDyoB30.js → keybindings-DQLn36Qh.js} +2 -2
- package/dist/client/assets/layout-grid-CCkPw5ih.js +2 -0
- package/dist/client/assets/{lazyRouteComponent-BCGAjyjO.js → lazyRouteComponent-F8XJwdjp.js} +2 -2
- package/dist/client/assets/{line-QHGhF6Vm.js → line-CAwl86yA.js} +2 -2
- package/dist/client/assets/{link-Bgj44djS.js → link-Dsk-mMeT.js} +2 -2
- package/dist/client/assets/{linkedPrompt-D1aW6nV5.js → linkedPrompt-D3xnUYyG.js} +2 -2
- package/dist/client/assets/main-B3UqEpE9.css +2 -0
- package/dist/client/assets/main-DzuY7nUi.js +26 -0
- package/dist/client/assets/{mediaReference-CQtke4j3.js → mediaReference-DFBMieZe.js} +2 -2
- package/dist/client/assets/{mediaSource-CI2bKK3n.js → mediaSource-DwE2MD82.js} +2 -2
- package/dist/client/assets/{mermaid-parser.core-Brqe55KM.js → mermaid-parser.core-CQTH3UnZ.js} +4 -4
- package/dist/client/assets/{mermaid.core-Cdl6aiT5.js → mermaid.core-D6j4Oepc.js} +5 -5
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-CcdCCRbd.js → mindmap-definition-YA3MSWOX-mUjULOXx.js} +2 -2
- package/dist/client/assets/{number-field-DQIrEOoj.js → number-field-CO0djGoZ.js} +2 -2
- package/dist/client/assets/{observeResize-BaPAtI3Q.js → observeResize-DnTxIA8M.js} +2 -2
- package/dist/client/assets/{onboarding-ObMsA9VF.js → onboarding-BWsXQF-8.js} +2 -2
- package/dist/client/assets/{openFileInPreview-CdBR5kuZ.js → openFileInPreview-BjXtA6rm.js} +2 -2
- package/dist/client/assets/{p4ProjectFile--u7SOSK5.js → p4ProjectFile-Cit38tzd.js} +2 -2
- package/dist/client/assets/{packet-AYTQ26CC-BSuHbq7S.js → packet-AYTQ26CC-B6oJlnoT.js} +1 -1
- package/dist/client/assets/{pair-C11lrlzi.js → pair-BOAY3H4W.js} +2 -2
- package/dist/client/assets/{pegDiagram-XKGWAZYB-Iy9neoGN.js → pegDiagram-XKGWAZYB-MKsaJe-e.js} +2 -2
- package/dist/client/assets/{phoneViewer-iqsNqM8D.js → phoneViewer-DhI2RNKg.js} +2 -2
- package/dist/client/assets/{pie-WAS4IAKB-BlC5Ctcv.js → pie-WAS4IAKB-CVr4vbdT.js} +1 -1
- package/dist/client/assets/{pieDiagram-E7YTZNPT-CtVgATJF.js → pieDiagram-E7YTZNPT-CU60SxBF.js} +2 -2
- package/dist/client/assets/{pierre-icons-fSsw9aa-.js → pierre-icons-B278VAke.js} +2 -2
- package/dist/client/assets/{popover-B1MF5i1c.js → popover-BJ6nvlLO.js} +2 -2
- package/dist/client/assets/{preview-DwLWkMZG.js → preview-BPE4Ptwy.js} +2 -2
- package/dist/client/assets/{preview-ITad1JAy.js → preview-Cf8NQ1hB.js} +2 -2
- package/dist/client/assets/{previewMiniPlayerStore-DN-AYBed.js → previewMiniPlayerStore-C-S6Z_7R.js} +2 -2
- package/dist/client/assets/{primary-8A8hvHFL.js → primary-C8ChofNZ.js} +2 -2
- package/dist/client/assets/primaryCloudLinkState-CC_tdVXQ.js +2 -0
- package/dist/client/assets/{projectFilesQueryState-CGllQp_V.js → projectFilesQueryState-Btmth-fd.js} +2 -2
- package/dist/client/assets/{projectScriptEditor-DwqFzld2.js → projectScriptEditor-jVLgvupi.js} +2 -2
- package/dist/client/assets/providerSkills-CQC96ZMr.js +2 -0
- package/dist/client/assets/{pullRequestDetail.logic-CkxKh0fV.js → pullRequestDetail.logic-CM8xaqJx.js} +2 -2
- package/dist/client/assets/{pullRequestIcons-CSZus-cz.js → pullRequestIcons-BjW5TUsG.js} +2 -2
- package/dist/client/assets/{pullRequestReviewStore-78f71w6J.js → pullRequestReviewStore-CfDcNEFp.js} +2 -2
- package/dist/client/assets/pullRequests-BhR0uCs5.js +2 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-kq18RP_F.js → quadrantDiagram-AXDQQJYC-YO_Vicsa.js} +2 -2
- package/dist/client/assets/{queries-DCKH7ltg.js → queries-BEkNnQZg.js} +2 -2
- package/dist/client/assets/{query-B1uAr_ii.js → query-MZn8giyP.js} +2 -2
- package/dist/client/assets/{radar-RG4KPBEZ-Cbkq33o2.js → radar-RG4KPBEZ-C7MHhieK.js} +1 -1
- package/dist/client/assets/{radio-group-CFJMQH66.js → radio-group-Ca6IMyWa.js} +2 -2
- package/dist/client/assets/{railroad-74A4TZTK-Ba3TZ4Wg.js → railroad-74A4TZTK-SZuHkN8h.js} +1 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DrVmy01m.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-BcPn9yic.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-Dv1rvzCW.js +1 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-BfOnyiaT.js → railroadDiagram-O6MQD6OU-Da7fqGWf.js} +2 -2
- package/dist/client/assets/{renderScheduler-CcWhS7Yq.js → renderScheduler-lUltsq6V.js} +2 -2
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-DFzAGiJp.js → requirementDiagram-BXWQKSXE-i46-nz91.js} +2 -2
- package/dist/client/assets/{rightPanelStore-DfMWWfvR.js → rightPanelStore-UcehuwgS.js} +2 -2
- package/dist/client/assets/{runtime-B9IDNXDU.js → runtime-BunkcrGh.js} +3 -3
- package/dist/client/assets/runtime-DTzyj6T4.js +2 -0
- package/dist/client/assets/{runtimeModeConfig-C3TbI2qR.js → runtimeModeConfig-CTQ97M7F.js} +2 -2
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-D9gFGibV.js → sankeyDiagram-P5KCCOFB-CZzNX2hl.js} +2 -2
- package/dist/client/assets/{scheduledTasksSettings.logic-DVbZRIYJ.js → scheduledTasksSettings.logic-CkbvhKba.js} +2 -2
- package/dist/client/assets/{scroll-area-DGS0jgnh.js → scroll-area-BStafc_O.js} +2 -2
- package/dist/client/assets/{select-Dsx46akG.js → select-BIK-KVyd.js} +2 -2
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-C9pRaNT5.js → sequenceDiagram-WJ2MYXX4-32aHdDFl.js} +2 -2
- package/dist/client/assets/{server-CoH7V4JL.js → server-COuN0pwg.js} +2 -2
- package/dist/client/assets/{session-logic-C4wGF3_E.js → session-logic-CqRiME2K.js} +2 -2
- package/dist/client/assets/{session-Bo2ZSprC.js → session-seR2OUj0.js} +2 -2
- package/dist/client/assets/settings-CiPM9fHt.js +2 -0
- package/dist/client/assets/{settings.appearance-6ktu9wdJ.js → settings.appearance-B91nMGep.js} +2 -2
- package/dist/client/assets/settings.archived-CucIYN3P.js +2 -0
- package/dist/client/assets/{settings.computer-use-C24sO93u.js → settings.computer-use-eCFCpqRb.js} +2 -2
- package/dist/client/assets/settings.connections-C-yLB0Yr.js +2 -0
- package/dist/client/assets/settings.data-controls-BGHuOOAF.js +2 -0
- package/dist/client/assets/{settings.decisions-kar2kv7T.js → settings.decisions-DbzSG84P.js} +2 -2
- package/dist/client/assets/settings.designs-DzW0uzhe.js +2 -0
- package/dist/client/assets/settings.diagnostics-Vw2M9wTQ.js +2 -0
- package/dist/client/assets/{settings.general-C1zsJgwK.js → settings.general-CfY4GAoq.js} +2 -2
- package/dist/client/assets/settings.integrations-C0hzJpnr.js +2 -0
- package/dist/client/assets/{settings.keybindings-CYcsJ6DQ.js → settings.keybindings-QcHgKHxE.js} +2 -2
- package/dist/client/assets/{settings.open-source-licenses-DnBHlZE2.js → settings.open-source-licenses-CVPaYBdL.js} +2 -2
- package/dist/client/assets/settings.plugins-Db2nz9n9.js +5 -0
- package/dist/client/assets/settings.projects-Bxf_7lyF.js +4 -0
- package/dist/client/assets/settings.providers-XFKxTM8C.js +3 -0
- package/dist/client/assets/{settings.scheduled-tasks-Bf37L1OK.js → settings.scheduled-tasks-B7OyO0sP.js} +2 -2
- package/dist/client/assets/settings.snap-shot-BabiAbdd.js +2 -0
- package/dist/client/assets/settings.source-control-BKphaihu.js +2 -0
- package/dist/client/assets/{settings.storage-DmbTXujz.js → settings.storage-CUhQEKB5.js} +2 -2
- package/dist/client/assets/settingsLayout-BNfRQ-bS.js +3 -0
- package/dist/client/assets/sidebar-CilourkR.js +2 -0
- package/dist/client/assets/{sidebarProjectGrouping-DrnsFA8t.js → sidebarProjectGrouping-BVhK5qEe.js} +2 -2
- package/dist/client/assets/{skeleton-0mC3wMw1.js → skeleton-DoQ8WJ33.js} +2 -2
- package/dist/client/assets/{sourceControl-D6TEHNpa.js → sourceControl-CZSeEF87.js} +2 -2
- package/dist/client/assets/sourceControlClients-gLUbjqCT.js +2 -0
- package/dist/client/assets/{spinner-DHOdl-gn.js → spinner-dBHTxMdw.js} +2 -2
- package/dist/client/assets/{standalone-page-Dx8vGwaJ.js → standalone-page-7u6OMfTi.js} +2 -2
- package/dist/client/assets/{stateDiagram-D77RDMKH-D8n56CID.js → stateDiagram-D77RDMKH-DzKAnfb5.js} +2 -2
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-B8R9PPf1.js +2 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-DZZct2ih.js → swimlanes-42K2YHIH-CQb8er0I.js} +2 -2
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CM0Ncs1m.js +9 -0
- package/dist/client/assets/{terminal-links-Di9Ijg8X.js → terminal-links-DaTgSxq7.js} +2 -2
- package/dist/client/assets/{terminalSessions-B8EDcX8b.js → terminalSessions-DijGQOOD.js} +2 -2
- package/dist/client/assets/{textarea-BvPoR1cI.js → textarea-DyCJe8OO.js} +2 -2
- package/dist/client/assets/{themePalette-zFOiBKDi.js → themePalette-mGukKeaJ.js} +2 -2
- package/dist/client/assets/threadSort-Bd2rijEy.js +2 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-BGfuRztb.js → timeline-definition-24CTP7MA-DznrmSZM.js} +2 -2
- package/dist/client/assets/toast-WpVvhflo.js +2 -0
- package/dist/client/assets/{toggle-DeCGfzT2.js → toggle-C4iGKTHY.js} +2 -2
- package/dist/client/assets/{toggle-group-DekLc0Ax.js → toggle-group-CM-lVPv_.js} +2 -2
- package/dist/client/assets/tooltip-C85X81rS.js +2 -0
- package/dist/client/assets/{treeView-Q6P3EWNA-BPM2x-ME.js → treeView-Q6P3EWNA-ChE0E3HR.js} +1 -1
- package/dist/client/assets/{treemap-WGGIJYW6-sku0fChI.js → treemap-WGGIJYW6-BzvvYy-b.js} +1 -1
- package/dist/client/assets/uiStateStore-DGq3v0QD.js +6 -0
- package/dist/client/assets/usage-B75rDU8q.js +2 -0
- package/dist/client/assets/{usageAccess-BGb3m0YV.js → usageAccess-BS7RH41F.js} +2 -2
- package/dist/client/assets/{usageFormat-H-RgZ0fy.js → usageFormat-neDCKBUu.js} +2 -2
- package/dist/client/assets/{usageShortcuts-C320W17X.js → usageShortcuts-BXE7khxl.js} +2 -2
- package/dist/client/assets/{use-atom-command-GpCw1tWF.js → use-atom-command-6Jnx7WG6.js} +2 -2
- package/dist/client/assets/{useAriaLabelledBy-C8nSWyQ9.js → useAriaLabelledBy-0jbiz1G5.js} +2 -2
- package/dist/client/assets/{useHandleNewThread-FJLPEfoH.js → useHandleNewThread-ot_mP7L5.js} +2 -2
- package/dist/client/assets/{useLocation-Ccsih1eo.js → useLocation-CEeuom34.js} +2 -2
- package/dist/client/assets/useNavigate-B5WzUZJ7.js +2 -0
- package/dist/client/assets/{useNavigateBack-PnWVFtkU.js → useNavigateBack-B1hKrkap.js} +2 -2
- package/dist/client/assets/{useParams-CoeDewwU.js → useParams-DPNRViD9.js} +2 -2
- package/dist/client/assets/{usePermissionStatus-mBtsOu9K.js → usePermissionStatus-DhHAmOgT.js} +2 -2
- package/dist/client/assets/usePullRequestActions-CC8iuW6L.js +3 -0
- package/dist/client/assets/{useRegisterFieldControl-9rSmWR2W.js → useRegisterFieldControl-DHg4qk95.js} +2 -2
- package/dist/client/assets/useScopedModelAvailability-AfE61RiJ.js +2 -0
- package/dist/client/assets/useSettings-Dr8XPXiN.js +3 -0
- package/dist/client/assets/{useT3ConnectAuthPrompt-ZyPZIXm7.js → useT3ConnectAuthPrompt-CVbTUWTC.js} +2 -2
- package/dist/client/assets/utils-ChK8VEFC.js +37 -0
- package/dist/client/assets/{vcsRefInvalidation-DfCz0cGO.js → vcsRefInvalidation-4ukX8s_d.js} +2 -2
- package/dist/client/assets/{vennDiagram-4TSXK5OY-CjhblZp4.js → vennDiagram-4TSXK5OY-B7LoDpFP.js} +2 -2
- package/dist/client/assets/{wardley-WFR3VGLG-Cuf_pn9-.js → wardley-WFR3VGLG-BGtlW2Xe.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-CMQ-_cYv.js → wardleyDiagram-VM6X3IG4-BFhvdWVx.js} +2 -2
- package/dist/client/assets/welcome-B_CtEQwh.js +2 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-BlCqmJgA.js → xychartDiagram-S5SC5T6Z-CEb-52Rm.js} +2 -2
- package/dist/client/index.html +1 -1
- package/dist/{renderer-7OJ6c0Me.mjs → renderer-5lNN05tA.mjs} +2 -2
- package/dist/{runtime-BHqdsO3Y.mjs → runtime-BuR0otfT.mjs} +135 -55
- package/package.json +1 -1
- package/dist/client/assets/AlertDialogRoot-D6ed6zQR.js +0 -2
- package/dist/client/assets/CodexSetupSection.logic-Ed9SDkqP.js +0 -2
- package/dist/client/assets/CommandBlock-C7ASE_F_.js +0 -2
- package/dist/client/assets/DevicePanel-CS1FTu-C.js +0 -2
- package/dist/client/assets/DeviceSetup-DZAK0_tm.js +0 -2
- package/dist/client/assets/DiffFileTree-DkLJXYZf.js +0 -2
- package/dist/client/assets/DiffPanel-CGV12wM6.js +0 -2
- package/dist/client/assets/EmbeddedDesign--Xz14U92.js +0 -19
- package/dist/client/assets/FilePreviewPanel-8tUtMikb.js +0 -34
- package/dist/client/assets/Input-CVwvVqbx.js +0 -2
- package/dist/client/assets/NoProjectsHero-Lsb9cuvO.js +0 -2
- package/dist/client/assets/PreviewPanel-DmaoFTEA.js +0 -2
- package/dist/client/assets/ProjectDefaultsSettings-CrKY01_P.js +0 -2
- package/dist/client/assets/ProjectFavicon-B5C6TpKj.js +0 -3
- package/dist/client/assets/ProviderModelPicker-CeB11O3P.js +0 -2
- package/dist/client/assets/PullRequestCodeTab-BqH4glgo.js +0 -6
- package/dist/client/assets/RenderErrorBoundary-BgOA8qma.js +0 -2
- package/dist/client/assets/ScheduledTasksSettings-BMQ-_Rms.js +0 -4
- package/dist/client/assets/SettingsScopeNotice-_WSLtOW4.js +0 -2
- package/dist/client/assets/ThemeEditorPanel-DB8D5_6u.js +0 -5
- package/dist/client/assets/TooltipViewport-kqulS2nz.js +0 -2
- package/dist/client/assets/_chat.index-CQSbFMBa.js +0 -2
- package/dist/client/assets/_chat.new-BxObe9FX.js +0 -4
- package/dist/client/assets/_chat.pull-requests-JS9EZDI7.js +0 -2
- package/dist/client/assets/architecture-7GRP2DOG-Dd1d-ckm.js +0 -1
- package/dist/client/assets/browserHistoryStore-_SurQa0e.js +0 -2
- package/dist/client/assets/channel-Dsne2IjR.js +0 -2
- package/dist/client/assets/classDiagram-ZZMXUADV-Dazl0CLN.js +0 -2
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-Dazl0CLN.js +0 -2
- package/dist/client/assets/command-DsE3Ju6m.js +0 -2
- package/dist/client/assets/environments-iW64jjyO.js +0 -2
- package/dist/client/assets/eventmodeling-NTZA5JFV-B5z8GPGl.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-CEpweBDE.js +0 -1
- package/dist/client/assets/git-compare-CCnx9obs.js +0 -2
- package/dist/client/assets/layout-grid-DDlG0mCT.js +0 -2
- package/dist/client/assets/main-ChIB1-3M.css +0 -2
- package/dist/client/assets/main-lV-t-UZx.js +0 -30
- package/dist/client/assets/primaryCloudLinkState-BP-HZzf2.js +0 -2
- package/dist/client/assets/providerSkills-O72EMm0V.js +0 -2
- package/dist/client/assets/pullRequests-7IQc0VIk.js +0 -2
- package/dist/client/assets/railroad-abnf-HS5TGJTU-l3gFfdc2.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-eiWL8AW4.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-UK0E-Txe.js +0 -1
- package/dist/client/assets/runtime-B5cKWtKn.js +0 -2
- package/dist/client/assets/settings-mrxLMm57.js +0 -2
- package/dist/client/assets/settings.archived-Hl4HyrFx.js +0 -2
- package/dist/client/assets/settings.connections-CgaYGg_W.js +0 -2
- package/dist/client/assets/settings.data-controls-DNY0fL9E.js +0 -2
- package/dist/client/assets/settings.diagnostics-BHSEPjF8.js +0 -2
- package/dist/client/assets/settings.integrations-DykwmCf7.js +0 -2
- package/dist/client/assets/settings.plugins-B7Nlb85S.js +0 -5
- package/dist/client/assets/settings.projects-Ob8jKbIh.js +0 -4
- package/dist/client/assets/settings.providers-BIm-8j9C.js +0 -3
- package/dist/client/assets/settings.snap-shot-D37zM8an.js +0 -2
- package/dist/client/assets/settings.source-control-DmRUgcsk.js +0 -2
- package/dist/client/assets/settingsLayout-CqGfrbmD.js +0 -3
- package/dist/client/assets/sidebar-C_I_pq_E.js +0 -2
- package/dist/client/assets/sortable.esm-DuAaqmgD.js +0 -6
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DqXgq-FS.js +0 -2
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DAX63YhZ.js +0 -9
- package/dist/client/assets/threadSort-Cn23YHH2.js +0 -2
- package/dist/client/assets/toast-CN7Jd-pG.js +0 -2
- package/dist/client/assets/tooltip-DaSC-3cL.js +0 -2
- package/dist/client/assets/usage-CKRSqJso.js +0 -2
- package/dist/client/assets/useNavigate-Dhy_1-Mg.js +0 -2
- package/dist/client/assets/usePullRequestActions-_K7fD4Ny.js +0 -3
- package/dist/client/assets/useScopedModelAvailability-DE1E_lbg.js +0 -2
- package/dist/client/assets/useSettings-CKA-LDDj.js +0 -3
- package/dist/client/assets/utils-BAPnqm16.js +0 -37
- package/dist/client/assets/welcome-nE6tva7L.js +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{r as t}from"./Icon-l19w4AjM.js";import{$y as n,C_ as r,Df as i,Dw as a,Gn as o,Jn as s,LT as c,NE as l,N_ as u,Pp as d,Qc as f,Qm as p,Um as m,Wn as h,Wu as g,Yn as _,Zc as v,Zn as y,bg as b,cg as x,cp as S,cr as C,dp as w,fg as T,gg as E,hd as D,l as O,lE as k,mg as A,oh as j,or as M,qn as N,qu as P,sg as F,sh as I,sp as L,sr as R,t as z,tr as ee,vg as te,yg as ne}from"./utils-BAPnqm16.js";import{W as re}from"./runtime-B9IDNXDU.js";import{w as ie}from"./entities-DCbEYTvn.js";import{a as ae,r as B,t as V}from"./number-field-DQIrEOoj.js";import{a as H,c as oe,i as se,o as U,r as ce,s as W,t as G}from"./select-Dsx46akG.js";import{t as le}from"./spinner-DHOdl-gn.js";import{i as K}from"./toast-CN7Jd-pG.js";import{a as ue,n as q,t as de}from"./tooltip-DaSC-3cL.js";import{a as fe,o as pe}from"./environments-iW64jjyO.js";import{f as me}from"./server-CoH7V4JL.js";import{i as he,n as ge}from"./session-Bo2ZSprC.js";import{t as J}from"./use-atom-command-GpCw1tWF.js";import{R as _e,c as ve,o as ye,r as be,s as xe,x as Se}from"./useSettings-CKA-LDDj.js";import{t as Ce}from"./env-wK1YYxA8.js";import{t as we}from"./input-83N8btBC.js";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./dialog-DYFQxVoN.js";import{i as Ne,t as Pe}from"./device-CWgOLpbF.js";import{a as Fe,c as Ie,i as Le,n as Re,o as ze,s as Be,t as Ve}from"./DeviceSetup-DZAK0_tm.js";import{t as He}from"./AnimatedHeight-CO3_zEQw.js";import{i as Ue,n as We}from"./Icons-BYSK3arN.js";import{t as Ge}from"./preview-DwLWkMZG.js";import{a as Ke,i as qe,o as Je,t as Ye}from"./popover-B1MF5i1c.js";import{B as Xe,C as Ze,L as Qe,P as $e,a as Y,c as et,i as tt,r as nt,s as rt}from"./settingsLayout-CqGfrbmD.js";import{Ar as it,Fr as at,Ir as ot,La as st,Mr as ct,Nr as lt,Pr as ut,aa as dt,fa as ft,ia as pt,ir as X,jr as mt}from"./main-lV-t-UZx.js";import{t as ht}from"./ProjectDefaultsSettings-CrKY01_P.js";import{t as gt}from"./draft-input-27erQjx_.js";import{t as _t}from"./ScopedSwitch-BrJEJr8I.js";import{n as vt,r as yt,t as bt}from"./usePermissionStatus-mBtsOu9K.js";var Z=l(),Q=e(k(),1);function xt(e){let t=(0,Z.c)(27),{tools:n,action:r,kind:i,owner:a,error:o}=e,s=i?n?.[i]:void 0,c;t[0]===s?c=t[1]:(c=s?.runningVersion??(s?.installedVersions.includes(s.requiredVersion)?s.requiredVersion:s?.installedVersions.toSorted(St).at(-1)),t[0]=s,t[1]=c);let l=c,u=i===`hub`?`Device hub`:`Agent device`,d=i?`${u}: ${l?`version ${l}`:s?`not installed`:`version unknown`}. Show details`:void 0,f;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,Q.jsx)(C,{tone:`muted`}),t[2]=f):f=t[2];let p=i?l?`v${l}`:s?`Not installed`:`Version unknown`:o?`Versions unavailable`:`Versions`,m;t[3]!==d||t[4]!==p?(m=(0,Q.jsx)(Je,{"aria-label":d,render:f,children:p}),t[3]=d,t[4]=p,t[5]=m):m=t[5];let h=i?u:`Device tools`,g;t[6]===h?g=t[7]:(g=(0,Q.jsx)(Ke,{children:h}),t[6]=h,t[7]=g);let _;t[8]!==i||t[9]!==u||t[10]!==n?(_=n?(0,Q.jsx)(`div`,{className:`mt-4 divide-y divide-border/50`,children:[[`Device hub`,n.hub],[`Agent device`,n.agent]].filter(e=>{let[t]=e;return!i||t===u}).map(e=>{let[t,n]=e;return(0,Q.jsxs)(`div`,{className:`space-y-2 py-3 first:pt-0 last:pb-0`,children:[i?null:(0,Q.jsx)(`p`,{className:`text-xs font-medium`,children:t}),(0,Q.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-6 gap-y-1 text-xs`,children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:`Running`}),(0,Q.jsx)(`dd`,{className:`text-right font-mono`,children:n.runningVersion??`Not running`}),(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:`Required`}),(0,Q.jsx)(`dd`,{className:`text-right font-mono`,children:n.requiredVersion}),(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:`Installed`}),(0,Q.jsx)(`dd`,{className:`text-right font-mono break-words`,children:n.installedVersions.join(`, `)||`None`})]})]},t)})}):(0,Q.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:`Versions have not been checked.`}),t[8]=i,t[9]=u,t[10]=n,t[11]=_):_=t[11];let v=a?`Managed by ${a}. `:``,y;t[12]===v?y=t[13]:(y=(0,Q.jsxs)(`p`,{className:`mt-4 border-t border-border/50 pt-3 text-xs text-muted-foreground`,children:[v,`Tools update automatically on this host when needed.`]}),t[12]=v,t[13]=y);let b;t[14]===o?b=t[15]:(b=o?(0,Q.jsx)(`p`,{role:`status`,className:`mt-2 text-xs text-destructive`,children:o}):null,t[14]=o,t[15]=b);let x;t[16]===r?x=t[17]:(x=r?(0,Q.jsx)(`div`,{className:`mt-3`,children:r}):null,t[16]=r,t[17]=x);let S;t[18]!==y||t[19]!==b||t[20]!==x||t[21]!==g||t[22]!==_?(S=(0,Q.jsxs)(qe,{align:`end`,width:`md`,children:[g,_,y,b,x]}),t[18]=y,t[19]=b,t[20]=x,t[21]=g,t[22]=_,t[23]=S):S=t[23];let w;return t[24]!==S||t[25]!==m?(w=(0,Q.jsxs)(Ye,{children:[m,S]}),t[24]=S,t[25]=m,t[26]=w):w=t[26],w}function St(e,t){return e.localeCompare(t,void 0,{numeric:!0})}var $=e(t(),1);function Ct(e,t,n,r=t){let i=(e,t)=>e.target===t.target&&e.port===t.port&&e.identityFile===t.identityFile,a=t=>{let n=e.filter(e=>i(e,t));if(n.length>1)throw Error(`Multiple hosts match this SSH destination. Select the environment to edit its hosts.`);return n[0]},o=e.find(e=>e.id===r.id)??a(r)??(n?void 0:a(t));return n?e.filter(e=>e.id!==o?.id):o?e.map(e=>e.id===o.id?{...t,id:o.id}:e):[...e,t]}function wt(e){let t=(0,Z.c)(4),{platforms:n}=e,r;t[0]===n?r=t[1]:(r=n.map(Tt),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:r}),t[2]=r,t[3]=i),i}function Tt(e){return(0,Q.jsxs)(de,{children:[(0,Q.jsxs)(ue,{render:(0,Q.jsx)(`span`,{tabIndex:0,className:`inline-flex items-center gap-1`}),children:[e.available?(0,Q.jsx)(D,{className:`size-3`}):(0,Q.jsx)(L,{className:`size-3`}),e.platform===`ios`?`iOS`:`Android`,` `,e.available?`available`:`unavailable`]}),(0,Q.jsx)(q,{children:e.reason??(e.platform===`ios`?`iOS available`:`Android available`)})]},e.platform)}var Et=n(u);function Dt(e){let{identityFile:t,...n}=e;return Et({...n,...t?.trim()?{identityFile:t.trim()}:{}})}function Ot(e){return JSON.stringify([e.target.trim(),e.port,e.identityFile?.trim()||void 0])}async function kt(e,t,n,r){await Promise.all(e.map(async e=>{r(e.environmentId,{status:`pending`});try{if(!e.connected)throw Error(`Environment disconnected`);let i=await n(e.environmentId,t);r(e.environmentId,i.kind===`local`?{status:`local`}:{status:`connected`,platforms:i.platforms,...i.tools?{tools:i.tools}:{}})}catch(t){r(e.environmentId,{status:`failed`,error:t instanceof Error?t.message:String(t)})}}))}function At(e){let t=J(Pe.testHost,{reportFailure:!1}),[n,r]=(0,$.useState)({}),i=(0,$.useRef)(new Set);return{checks:n,testConnection:async n=>{let o=Ot(n);if(i.current.has(o))return;i.current.add(o),r(e=>({...e,[o]:{}}));let s={};try{return await kt(e,n,async(e,n)=>{if(!ge(e,`settings:write`))throw Error(`This connection cannot test device hosts.`);let r=await t({environmentId:e,input:n});if(r._tag===`Failure`)throw Error(a(r.cause));return r.value},(e,t)=>{s[e]=t,r(n=>({...n,[o]:{...n[o],[e]:t}}))}),s}finally{i.current.delete(o)}}}}function jt(e){let t=(0,Z.c)(107),{host:n,isNew:r,targets:i,busy:a,onSave:o,onClose:s}=e,[l,u]=(0,$.useState)(n),{checks:d,testConnection:f}=At(i),p=d[Ot(l)],h=Object.values(p??{}).some(Nt),g,_;t[0]===l?(g=t[1],_=t[2]):(g=Dt({...l,label:l.label.trim()||l.target}),_=c(g),t[0]=l,t[1]=g,t[2]=_);let v=_,y;t[3]===p?y=t[4]:(y=Object.values(p??{}).filter(Mt),t[3]=p,t[4]=y);let b=y.length,x;t[5]!==a||t[6]!==s?(x=e=>{!e&&!a&&s()},t[5]=a,t[6]=s,t[7]=x):x=t[7];let C=!a,w;t[8]!==a||t[9]!==h||t[10]!==l.label||t[11]!==g||t[12]!==o?(w=(0,Q.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),c(g)&&l.label.trim()&&!a&&!h&&o(g.value)}}),t[8]=a,t[9]=h,t[10]=l.label,t[11]=g,t[12]=o,t[13]=w):w=t[13];let T=r?`Add device host`:`Edit device host`,E;t[14]===T?E=t[15]:(E=(0,Q.jsx)(Ee,{children:T}),t[14]=T,t[15]=E);let O=i.length===1?`Connect from ${i[0]?.label}.`:`Connect from ${i.length} selected environments.`,k;t[16]===O?k=t[17]:(k=(0,Q.jsxs)(Ae,{children:[O,` `,`Hosts on the same machine are skipped.`]}),t[16]=O,t[17]=k);let A;t[18]!==E||t[19]!==k?(A=(0,Q.jsxs)(Te,{children:[E,k]}),t[18]=E,t[19]=k,t[20]=A):A=t[20];let j;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(j=(0,Q.jsx)(`span`,{children:`Name`}),t[21]=j):j=t[21];let M;t[22]===l?M=t[23]:(M=e=>u({...l,label:e.target.value}),t[22]=l,t[23]=M);let N;t[24]!==a||t[25]!==l.label||t[26]!==M?(N=(0,Q.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[j,(0,Q.jsx)(we,{autoFocus:!0,required:!0,value:l.label,disabled:a,onChange:M,placeholder:`Mac mini`})]}),t[24]=a,t[25]=l.label,t[26]=M,t[27]=N):N=t[27];let P;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Q.jsx)(`span`,{children:`SSH target`}),t[28]=P):P=t[28];let F;t[29]===l?F=t[30]:(F=e=>u({...l,target:e.target.value}),t[29]=l,t[30]=F);let I;t[31]!==a||t[32]!==l.target||t[33]!==F?(I=(0,Q.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[P,(0,Q.jsx)(we,{required:!0,value:l.target,disabled:a,onChange:F,placeholder:`user@host or SSH alias`})]}),t[31]=a,t[32]=l.target,t[33]=F,t[34]=I):I=t[34];let L=n.port!==void 0||n.identityFile!==void 0||void 0,z;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,Q.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:`SSH options`}),t[35]=z):z=t[35];let ee;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,Q.jsx)(`span`,{children:`Identity file`}),t[36]=ee):ee=t[36];let te=l.identityFile??``,ne;t[37]===l?ne=t[38]:(ne=e=>{let{identityFile:t,...n}=l;u(e.target.value?{...n,identityFile:e.target.value}:n)},t[37]=l,t[38]=ne);let re;t[39]!==a||t[40]!==te||t[41]!==ne?(re=(0,Q.jsxs)(`label`,{className:`block space-y-1.5`,children:[ee,(0,Q.jsx)(we,{value:te,disabled:a,onChange:ne,placeholder:`SSH config default`})]}),t[39]=a,t[40]=te,t[41]=ne,t[42]=re):re=t[42];let ie;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(ie=(0,Q.jsx)(`span`,{children:`Port`}),t[43]=ie):ie=t[43];let ae=l.port??``,B;t[44]===l?B=t[45]:(B=e=>{let{port:t,...n}=l;u(e.target.value?{...n,port:Number(e.target.value)}:n)},t[44]=l,t[45]=B);let V;t[46]!==a||t[47]!==ae||t[48]!==B?(V=(0,Q.jsxs)(`label`,{className:`block space-y-1.5`,children:[ie,(0,Q.jsx)(we,{type:`number`,min:1,max:65535,value:ae,disabled:a,onChange:B,placeholder:`Default`})]}),t[46]=a,t[47]=ae,t[48]=B,t[49]=V):V=t[49];let H;t[50]!==re||t[51]!==V?(H=(0,Q.jsxs)(`div`,{className:`mt-3 grid grid-cols-[minmax(0,1fr)_7rem] gap-3`,children:[re,V]}),t[50]=re,t[51]=V,t[52]=H):H=t[52];let oe;t[53]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,Q.jsx)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:`Optional. Resolved separately on each environment.`}),t[53]=oe):oe=t[53];let se;t[54]!==L||t[55]!==H?(se=(0,Q.jsxs)(`details`,{open:L,className:`text-sm`,children:[z,H,oe]}),t[54]=L,t[55]=H,t[56]=se):se=t[56];let U=h?`Checking environments…`:p?b?`${b} of ${i.length} failed`:`Connection checks passed`:`Check access before saving`,ce;t[57]===U?ce=t[58]:(ce=(0,Q.jsx)(`p`,{role:`status`,className:`text-xs text-muted-foreground`,children:U}),t[57]=U,t[58]=ce);let W=a||h||!v,G;t[59]!==g||t[60]!==f?(G=()=>{c(g)&&f(g.value)},t[59]=g,t[60]=f,t[61]=G):G=t[61];let K;t[62]===h?K=t[63]:(K=h?(0,Q.jsx)(le,{size:`xs`}):null,t[62]=h,t[63]=K);let ue;t[64]!==W||t[65]!==G||t[66]!==K?(ue=(0,Q.jsxs)(R,{type:`button`,size:`sm`,variant:`outline`,disabled:W,onClick:G,children:[K,` Test connection`]}),t[64]=W,t[65]=G,t[66]=K,t[67]=ue):ue=t[67];let q;t[68]!==ce||t[69]!==ue?(q=(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-3 py-2.5`,children:[ce,ue]}),t[68]=ce,t[69]=ue,t[70]=q):q=t[70];let de;t[71]!==p||t[72]!==i?(de=p?(0,Q.jsx)(`ul`,{className:`border-t border-border/60 divide-y divide-border/40`,children:i.map(e=>{let t=p[e.environmentId];return t?(0,Q.jsxs)(`li`,{className:`px-3 py-2.5 text-xs`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Q.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,Q.jsx)(`span`,{className:`flex shrink-0 items-center gap-1.5 ${t.status===`failed`?`text-destructive`:`text-muted-foreground`}`,children:t.status===`pending`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(le,{size:`xs`}),` Checking…`]}):t.status===`local`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(S,{className:`size-3`}),` Already available locally`]}):t.status===`failed`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(m,{className:`size-3`}),` Failed`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(D,{className:`size-3`}),` Connected`]})})]}),t.status===`connected`?(0,Q.jsx)(`div`,{className:`mt-1.5`,children:(0,Q.jsx)(wt,{platforms:t.platforms})}):null,t.status===`failed`?(0,Q.jsxs)(`details`,{className:`mt-1.5 text-muted-foreground`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer`,children:`Show error`}),(0,Q.jsx)(`p`,{className:`mt-1 max-h-32 overflow-auto whitespace-pre-wrap break-words`,children:t.error})]}):null]},e.environmentId):null})}):null,t[71]=p,t[72]=i,t[73]=de):de=t[73];let fe;t[74]!==q||t[75]!==de?(fe=(0,Q.jsxs)(`div`,{className:`rounded-lg border border-border/60`,children:[q,de]}),t[74]=q,t[75]=de,t[76]=fe):fe=t[76];let pe;t[77]!==N||t[78]!==I||t[79]!==se||t[80]!==fe?(pe=(0,Q.jsxs)(ke,{children:[N,I,se,fe]}),t[77]=N,t[78]=I,t[79]=se,t[80]=fe,t[81]=pe):pe=t[81];let me;t[82]!==a||t[83]!==s?(me=(0,Q.jsx)(R,{type:`button`,variant:`ghost`,disabled:a,onClick:s,children:`Cancel`}),t[82]=a,t[83]=s,t[84]=me):me=t[84];let he;t[85]!==a||t[86]!==h||t[87]!==l.label||t[88]!==v?(he=a||h||!v||!l.label.trim(),t[85]=a,t[86]=h,t[87]=l.label,t[88]=v,t[89]=he):he=t[89];let ge;t[90]===a?ge=t[91]:(ge=a?(0,Q.jsx)(le,{size:`xs`}):null,t[90]=a,t[91]=ge);let J;t[92]!==he||t[93]!==ge?(J=(0,Q.jsxs)(R,{type:`submit`,disabled:he,children:[ge,` Save host`]}),t[92]=he,t[93]=ge,t[94]=J):J=t[94];let _e;t[95]!==me||t[96]!==J?(_e=(0,Q.jsxs)(De,{children:[me,J]}),t[95]=me,t[96]=J,t[97]=_e):_e=t[97];let ve;t[98]!==A||t[99]!==pe||t[100]!==C||t[101]!==_e||t[102]!==w?(ve=(0,Q.jsxs)(je,{showCloseButton:C,render:w,children:[A,pe,_e]}),t[98]=A,t[99]=pe,t[100]=C,t[101]=_e,t[102]=w,t[103]=ve):ve=t[103];let ye;return t[104]!==x||t[105]!==ve?(ye=(0,Q.jsx)(Me,{open:!0,onOpenChange:x,children:ve}),t[104]=x,t[105]=ve,t[106]=ye):ye=t[106],ye}function Mt(e){return e.status===`failed`}function Nt(e){return e.status===`pending`}function Pt(e){let{scope:t,environments:n,connectedEnvironments:i}=Xe(),a=he(e.environmentId,r),o=t.kind===`project`||t.kind===`checkout`,s=J(me.updateSettings,{reportFailure:!1}),[c,l]=(0,$.useState)(null),[u,f]=(0,$.useState)(null),[p,m]=(0,$.useState)(!1),h=n.map(e=>({environmentId:e.environmentId,label:e.label,connected:e.connection.phase===`connected`})),{checks:g,testConnection:_}=At(h),v=async(t,r=!1,i=t)=>{if(e.environmentId&&!o){m(!0);try{let e=await Promise.allSettled(n.map(async e=>{if(e.connection.phase!==`connected`||!e.serverConfig)throw Error(`Environment disconnected`);if(!ge(e.environmentId,`settings:write`))throw Error(`This connection cannot change device settings.`);return s({environmentId:e.environmentId,input:{patch:{deviceHosts:Ct(e.serverConfig.settings.deviceHosts,t,r,i)}}})})),a=n.filter((t,n)=>{let r=e[n];return r?.status!==`fulfilled`||r.value._tag===`Failure`});a.length===0?l(null):K.add({type:`error`,title:`Device hosts not saved on all environments`,description:`Could not update ${a.map(e=>e.label).join(`, `)}.`})}finally{m(!1)}}};return(0,Q.jsx)(Y,{id:`device-hosts`,title:`Device hosts`,serverScoped:!0,settingKeys:[`deviceHosts`],description:`Add remote machines with simulator or emulator runtimes installed, and the selected environments will connect over SSH and set up device tools automatically.`,control:(0,Q.jsxs)(R,{size:`sm`,variant:`outline`,disabled:!a||o||p||!e.environmentId||c!==null,onClick:()=>{f(null),l({id:O(),label:``,target:``})},children:[(0,Q.jsx)(d,{className:`size-3.5`}),` Add host`]}),children:(0,Q.jsx)(`div`,{className:`pt-3 pb-2`,children:e.environmentId?(0,Q.jsxs)(Q.Fragment,{children:[i.map(e=>(0,Q.jsxs)(`div`,{children:[i.length>1?(0,Q.jsx)(`p`,{className:`pt-3 pb-1 text-xs font-medium text-muted-foreground`,children:e.label}):null,(0,Q.jsx)(Ft,{environmentLabel:e.label,environmentId:e.environmentId,hosts:e.serverConfig?.settings.deviceHosts??[],busy:!a||o||p,checks:g,testConnection:async e=>{let t=await _(e);if(!t)return;let n=h.filter(e=>t[e.environmentId]?.status===`failed`);return K.add({type:n.length?`error`:`success`,title:n.length?`${e.label}: ${n.length} of ${h.length} environments failed`:`${e.label}: connection checks passed`,description:n.length?`Could not connect from ${n.map(e=>e.label).join(`, `)}.`:`Connected or already available locally on each selected environment.`}),t},onEdit:e=>{f(e),l(e)},onRemove:e=>void v(e,!0)})]},e.environmentId)),c?(0,Q.jsx)(jt,{host:c,isNew:u===null,targets:h,busy:p,onSave:e=>void v(e,!1,u??e),onClose:()=>l(null)},c.id):null]}):(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Connect a selected environment to manage device hosts.`})})})}function Ft(e){let t=(0,Z.c)(28),{environmentLabel:n,environmentId:r,hosts:i,busy:a,onEdit:s,onRemove:c,checks:l,testConnection:u}=e,{state:d}=Ne(r),f=J(Pe.list),[p,m]=(0,$.useState)(null),h;t[0]===i.length?h=t[1]:(h=i.length===0?(0,Q.jsx)(`p`,{className:`py-2 text-sm text-muted-foreground`,children:`No device hosts.`}):null,t[0]=i.length,t[1]=h);let g;if(t[2]!==a||t[3]!==l||t[4]!==r||t[5]!==n||t[6]!==i||t[7]!==s||t[8]!==c||t[9]!==f||t[10]!==p||t[11]!==d||t[12]!==u){let e;t[14]!==a||t[15]!==l||t[16]!==r||t[17]!==n||t[18]!==s||t[19]!==c||t[20]!==f||t[21]!==p||t[22]!==d||t[23]!==u?(e=e=>{let t=d.hostStatuses[e.id],i=l[Ot(e)]?.[r],h=(i?.status===`connected`?i.platforms:void 0)??d.hosts.find(t=>t.id===e.id)?.platforms??[],g=i?.status===`pending`?`Checking connection…`:t?.status===`installing`?`Installing device support…`:t?.status===`starting`?`Connecting…`:null,v=i?.status===`failed`?i.error:i?.status===`local`?void 0:t?.status===`failed`?t.detail:void 0;return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/50 py-2.5`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(`p`,{className:`truncate text-sm font-medium`,children:e.label}),h.filter(Lt).map(It)]}),(0,Q.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:e.target}),(0,Q.jsx)(xt,{owner:n,error:d.hosts.find(t=>t.id===e.id)?.toolInspectionError,tools:d.hosts.find(t=>t.id===e.id)?.tools??(i?.status===`connected`?i.tools:void 0)}),i?.status===`local`?(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Already available locally`}):null,v?(0,Q.jsx)(`div`,{className:`mt-1`,role:`status`,children:(0,Q.jsxs)(`details`,{className:`text-xs text-destructive`,children:[(0,Q.jsx)(`summary`,{children:`Connection failed`}),(0,Q.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap break-words`,children:v})]})}):null]}),g?(0,Q.jsxs)(`span`,{role:`status`,className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,Q.jsx)(le,{size:`xs`}),g]}):null,(0,Q.jsxs)(o,{children:[(0,Q.jsx)(M,{render:(0,Q.jsx)(R,{size:`icon-sm`,variant:`ghost-muted`,disabled:a,"aria-label":e.label+` options`}),children:(0,Q.jsx)(w,{})}),(0,Q.jsxs)(y,{align:`end`,children:[(0,Q.jsx)(_,{onClick:()=>{s(e)},children:`Edit`}),(0,Q.jsx)(_,{variant:`destructive`,onClick:()=>c(e),children:`Remove`})]})]}),t?.status===`failed`&&d.supportsHostRetry&&d.hostStatus!==`disabled`?(0,Q.jsx)(R,{size:`sm`,variant:`outline`,disabled:a||p!==null,onClick:()=>{m(e.id),f({environmentId:r,input:{retryHostId:e.id}}).finally(()=>m(null))},children:p===e.id?`Retrying…`:`Retry`}):(0,Q.jsx)(R,{size:`sm`,variant:`outline`,disabled:a||g!==null,onClick:()=>void u(e),children:`Test connection`})]},e.id)},t[14]=a,t[15]=l,t[16]=r,t[17]=n,t[18]=s,t[19]=c,t[20]=f,t[21]=p,t[22]=d,t[23]=u,t[24]=e):e=t[24],g=i.map(e),t[2]=a,t[3]=l,t[4]=r,t[5]=n,t[6]=i,t[7]=s,t[8]=c,t[9]=f,t[10]=p,t[11]=d,t[12]=u,t[13]=g}else g=t[13];let v;return t[25]!==h||t[26]!==g?(v=(0,Q.jsxs)(Q.Fragment,{children:[h,g]}),t[25]=h,t[26]=g,t[27]=v):v=t[27],v}function It(e){return(0,Q.jsxs)(de,{children:[(0,Q.jsx)(ue,{render:(0,Q.jsx)(`span`,{tabIndex:0,role:`img`,"aria-label":e.platform===`ios`?`iOS available`:`Android available`,className:`shrink-0 text-muted-foreground`}),children:e.platform===`ios`?(0,Q.jsx)(Ue,{className:`size-3.5 -translate-y-px`}):(0,Q.jsx)(We,{className:`size-3.5`})}),(0,Q.jsx)(q,{children:e.platform===`ios`?`iOS available`:`Android available`})]},e.platform)}function Lt(e){return e.available}function Rt(e,t){if(e)return{kind:`new`};let n=t[0];return n?{kind:`existing`,profileId:n.id}:{kind:`new`}}function zt(e,t,n){if(e.kind===`new`)return{kind:`new`,profileId:t};let r=n.find(t=>t.id===e.profileId);if(r!==void 0)return{kind:`existing`,profileId:e.profileId,name:r.name}}function Bt(e){return e.step!==`importing`}function Vt(e){return e.unavailable===`browserRunning`?{step:`quit`}:e.unavailable===`needsFullDiskAccess`?{step:`fullDiskAccess`,resume:`configure`}:e.unavailable===void 0?e.profiles.length===0?{step:`blocked`,reason:`unknownSourceProfile`}:{step:`configure`}:{step:`blocked`,reason:e.unavailable}}function Ht(e){return e.kind===`imported`?{step:`done`,imported:e.imported,skipped:e.skipped,skippedDomains:e.skippedDomains,targetName:e.targetName}:e.reason===`browserRunning`?{step:`quit`}:e.reason===`needsFullDiskAccess`?{step:`fullDiskAccess`,resume:`import`,checked:!0}:{step:`blocked`,reason:e.reason}}function Ut(e){return e===void 0?{step:`blocked`,reason:`unknownSource`}:Vt(e)}function Wt(e){let t=Ut(e);return t.step===`fullDiskAccess`?{...t,checked:!0}:t}function Gt(e,t){return t.profiles.some(t=>t.directory===e)?e:t.profiles[0]?.directory??``}function Kt(e){switch(e){case`needsKeychainApproval`:case`keychainItemMissing`:case`keychainUnavailable`:case`readFailed`:case`sessionUnavailable`:case`profileNotSaved`:return!0;default:return!1}}function qt(e){return e.length===0?``:e.length===1?e[0]:e.length<=3?`${e.slice(0,-1).join(`, `)} and ${e.at(-1)}`:`${e.slice(0,3).join(`, `)} and ${e.length-3} more`}function Jt(e){let t=(0,Z.c)(46),{source:n,destinationEnvironmentName:r,targetProfiles:i,canCreateProfile:a,onImport:o,onRefreshSource:s,onOpenFullDiskAccessSettings:c,onCheckFullDiskAccess:l,onClose:u}=e,[d,f]=(0,$.useState)(n),p;t[0]===n?p=t[1]:(p=()=>Vt(n),t[0]=n,t[1]=p);let[m,h]=(0,$.useState)(p),g;t[2]===n.profiles[0]?.directory?g=t[3]:(g=()=>n.profiles[0]?.directory??``,t[2]=n.profiles[0]?.directory,t[3]=g);let[_,v]=(0,$.useState)(g),y;t[4]!==a||t[5]!==i?(y=()=>Rt(a,i),t[4]=a,t[5]=i,t[6]=y):y=t[6];let[b,x]=(0,$.useState)(y),[S,C]=(0,$.useState)(),w;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(w=O(),t[7]=w):w=t[7];let T=(0,$.useRef)(`profile-${w}`),E=(0,$.useRef)(!1),D;t[8]!==o||t[9]!==_||t[10]!==b||t[11]!==i?(D=()=>{if(E.current)return;let e=zt(b,T.current,i);if(e===void 0){C(`That profile is no longer available. Choose where to import these cookies.`),h({step:`configure`});return}C(void 0),E.current=!0,h({step:`importing`}),o({sourceProfileDirectory:_,target:e}).then(e=>h(Ht(e))).catch(()=>h({step:`blocked`,reason:`readFailed`})).finally(()=>{E.current=!1})},t[8]=o,t[9]=_,t[10]=b,t[11]=i,t[12]=D):D=t[12];let k=D,A;t[13]===s?A=t[14]:(A=(e,t)=>{h({step:`checking`,check:e}),s().then(e=>{e&&(f(e),v(t=>Gt(t,e))),h(t(e))}).catch(()=>h({step:`blocked`,reason:`readFailed`}))},t[13]=s,t[14]=A);let j=A,M;t[15]===j?M=t[16]:(M=()=>j(`browser`,Ut),t[15]=j,t[16]=M);let N=M,P;t[17]===j?P=t[18]:(P=()=>j(`fullDiskAccess`,Wt),t[17]=j,t[18]=P);let F=P,I;t[19]!==u||t[20]!==m?(I=e=>e||!Bt(m)?void 0:u(),t[19]=u,t[20]=m,t[21]=I):I=t[21];let L;t[22]===m?L=t[23]:(L=Bt(m),t[22]=m,t[23]=L);let R;t[24]!==a||t[25]!==r||t[26]!==l||t[27]!==u||t[28]!==c||t[29]!==s||t[30]!==N||t[31]!==F||t[32]!==k||t[33]!==d||t[34]!==_||t[35]!==m||t[36]!==b||t[37]!==S||t[38]!==i?(R=m.step===`quit`?(0,Q.jsx)(Yt,{source:d,onCancel:u,onRechecked:N}):m.step===`fullDiskAccess`?(0,Q.jsx)(Qt,{source:d,onCancel:u,onOpenSettings:c,onCheck:l??(async()=>{let e=await s();return e!==void 0&&e.unavailable===void 0}),onGranted:m.resume===`import`?k:F,stillRequired:m.checked===!0}):m.step===`importing`?(0,Q.jsx)(tn,{}):m.step===`checking`?(0,Q.jsx)(nn,{sourceName:d.name,check:m.check}):m.step===`done`?(0,Q.jsx)(rn,{...m,destinationEnvironmentName:r,onClose:u}):m.step===`blocked`?(0,Q.jsx)(an,{source:d,reason:m.reason,onClose:u,onRetry:Kt(m.reason)?k:void 0}):(0,Q.jsx)($t,{source:d,destinationEnvironmentName:r,targetProfiles:i,canCreateProfile:a,sourceProfileDirectory:_,onSourceProfileChange:v,target:b,onTargetChange:e=>{x(e),C(void 0)},targetError:S,onCancel:u,onImport:k}),t[24]=a,t[25]=r,t[26]=l,t[27]=u,t[28]=c,t[29]=s,t[30]=N,t[31]=F,t[32]=k,t[33]=d,t[34]=_,t[35]=m,t[36]=b,t[37]=S,t[38]=i,t[39]=R):R=t[39];let z;t[40]!==L||t[41]!==R?(z=(0,Q.jsx)(je,{className:`max-w-lg`,showCloseButton:L,children:R}),t[40]=L,t[41]=R,t[42]=z):z=t[42];let ee;return t[43]!==z||t[44]!==I?(ee=(0,Q.jsx)(Me,{open:!0,onOpenChange:I,children:z}),t[43]=z,t[44]=I,t[45]=ee):ee=t[45],ee}function Yt(e){let t=(0,Z.c)(12),{source:n,onCancel:r,onRechecked:i}=e,a;t[0]===n.name?a=t[1]:(a=(0,Q.jsxs)(Te,{children:[(0,Q.jsxs)(Ee,{children:[`Quit `,n.name,` to import`]}),(0,Q.jsxs)(Ae,{children:[n.name,` is open, so its cookies can’t be read yet. Quit it, then continue.`]})]}),t[0]=n.name,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Q.jsx)(R,{variant:`outline`,onClick:r,children:`Cancel`}),t[2]=r,t[3]=o);let s;t[4]===i?s=t[5]:(s=(0,Q.jsx)(R,{onClick:i,children:`I’ve quit it`}),t[4]=i,t[5]=s);let c;t[6]!==o||t[7]!==s?(c=(0,Q.jsxs)(De,{children:[o,s]}),t[6]=o,t[7]=s,t[8]=c):c=t[8];let l;return t[9]!==a||t[10]!==c?(l=(0,Q.jsxs)(Q.Fragment,{children:[a,c]}),t[9]=a,t[10]=c,t[11]=l):l=t[11],l}function Xt(e){if(e!==void 0)return e===0?`no cookies`:`${e.toLocaleString()} ${e===1?`cookie`:`cookies`}`}function Zt(e){return`${e.toLocaleString()} ${e===1?`cookie`:`cookies`}`}function Qt(e){let t=(0,Z.c)(43),{source:n,onCancel:r,onOpenSettings:a,onGranted:o,stillRequired:s,onCheck:c}=e,[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(null),p;t[0]===c?p=t[1]:(p=async()=>({fullDiskAccess:await c()}),t[0]=c,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m={fullDiskAccess:!1},t[2]=m):m=t[2];let h=bt(p,m),g;t[3]!==a||t[4]!==l?(g=()=>{l||(u(!0),f(null),Promise.resolve().then(a).catch(()=>f(`Could not open System Settings. Try Allow again.`)).finally(()=>u(!1)))},t[3]=a,t[4]=l,t[5]=g):g=t[5];let _=g,v;t[6]===n.name?v=t[7]:(v=(0,Q.jsxs)(Te,{children:[(0,Q.jsxs)(Ee,{children:[`Let P4 Code read `,n.name,`’s cookies`]}),(0,Q.jsxs)(Ae,{children:[`To import cookies from `,n.name,`, P4 Code needs Full Disk Access. Turn it on in System Settings, then come back to finish the import — you can revoke it again once the import is done.`]})]}),t[6]=n.name,t[7]=v);let y;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Q.jsx)(i,{className:`size-8 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),t[8]=y):y=t[8];let b=`Read ${n.name}'s cookies for this import.`,x;t[9]===_?x=t[10]:(x=()=>void _(),t[9]=_,t[10]=x);let S;t[11]!==h.status.fullDiskAccess||t[12]!==b||t[13]!==x?(S=[{id:`fullDiskAccess`,icon:y,title:`Full Disk Access`,description:b,granted:h.status.fullDiskAccess,onAllow:x}],t[11]=h.status.fullDiskAccess,t[12]=b,t[13]=x,t[14]=S):S=t[14];let C;t[15]!==l||t[16]!==S?(C=(0,Q.jsx)(vt,{busy:l,permissions:S}),t[15]=l,t[16]=S,t[17]=C):C=t[17];let w;t[18]!==d||t[19]!==h.error?(w=d||h.error?(0,Q.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-muted-foreground`,children:d??h.error}):null,t[18]=d,t[19]=h.error,t[20]=w):w=t[20];let T;t[21]!==h||t[22]!==s?(T=h.isReady([`fullDiskAccess`])?null:(0,Q.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:s?`Access is still required. Quit and reopen P4 Code if you just allowed it, then retry the import.`:`If access doesn't update after you allow it, quit and reopen P4 Code, then retry the import.`}),t[21]=h,t[22]=s,t[23]=T):T=t[23];let E;t[24]!==w||t[25]!==T||t[26]!==C?(E=(0,Q.jsxs)(ke,{children:[C,w,T]}),t[24]=w,t[25]=T,t[26]=C,t[27]=E):E=t[27];let D;t[28]===r?D=t[29]:(D=(0,Q.jsx)(R,{variant:`outline`,onClick:r,children:`Cancel`}),t[28]=r,t[29]=D);let O;t[30]===h?O=t[31]:(O=h.isReady([`fullDiskAccess`]),t[30]=h,t[31]=O);let k;t[32]!==o||t[33]!==l||t[34]!==O?(k=(0,Q.jsx)(yt,{ready:O,busy:l,onClick:o,children:`Continue`}),t[32]=o,t[33]=l,t[34]=O,t[35]=k):k=t[35];let A;t[36]!==D||t[37]!==k?(A=(0,Q.jsxs)(De,{children:[D,k]}),t[36]=D,t[37]=k,t[38]=A):A=t[38];let j;return t[39]!==E||t[40]!==A||t[41]!==v?(j=(0,Q.jsxs)(Q.Fragment,{children:[v,E,A]}),t[39]=E,t[40]=A,t[41]=v,t[42]=j):j=t[42],j}function $t(e){let t=(0,Z.c)(59),{source:n,destinationEnvironmentName:r,targetProfiles:i,canCreateProfile:a,sourceProfileDirectory:o,onSourceProfileChange:s,target:c,targetError:l,onTargetChange:u,onCancel:d,onImport:f}=e,p;t[0]!==c.kind||t[1]!==c.profileId||t[2]!==i?(p=c.kind===`existing`&&!i.some(e=>e.id===c.profileId),t[0]=c.kind,t[1]=c.profileId,t[2]=i,t[3]=p):p=t[3];let m=p,h=c.kind===`new`&&!a,_=l??(m?`That profile is no longer available. Choose where to import these cookies.`:h?`You've reached the profile limit. Choose an existing profile to import into.`:void 0),v;t[4]===n.name?v=t[5]:(v=(0,Q.jsxs)(Ee,{children:[`Import from `,n.name]}),t[4]=n.name,t[5]=v);let y;t[6]===r?y=t[7]:(y=(0,Q.jsxs)(Ae,{children:[`Choose which cookies to import for `,r,`.`]}),t[6]=r,t[7]=y);let b;t[8]!==v||t[9]!==y?(b=(0,Q.jsxs)(Te,{children:[v,y]}),t[8]=v,t[9]=y,t[10]=b):b=t[10];let x;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,Q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:`From`}),t[11]=x):x=t[11];let S;if(t[12]!==s||t[13]!==n.profiles||t[14]!==o){let e;t[16]!==s||t[17]!==o?(e=e=>(0,Q.jsx)(en,{selected:o===e.directory,title:e.name,subtitle:Xt(e.cookieCount),onSelect:()=>s(e.directory)},e.directory),t[16]=s,t[17]=o,t[18]=e):e=t[18],S=n.profiles.map(e),t[12]=s,t[13]=n.profiles,t[14]=o,t[15]=S}else S=t[15];let C;t[19]===S?C=t[20]:(C=(0,Q.jsxs)(`section`,{className:`flex-1 space-y-2`,children:[x,S]}),t[19]=S,t[20]=C);let w;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center text-muted-foreground`,children:[(0,Q.jsx)(g,{className:`size-4 sm:hidden`}),(0,Q.jsx)(P,{className:`hidden size-4 sm:block`})]}),t[21]=w):w=t[21];let T;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,Q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:`Into`}),t[22]=T):T=t[22];let E;t[23]!==a||t[24]!==u||t[25]!==c.kind?(E=a?(0,Q.jsx)(en,{selected:c.kind===`new`,title:`New profile`,subtitle:`Created for these cookies`,onSelect:()=>u({kind:`new`})}):null,t[23]=a,t[24]=u,t[25]=c.kind,t[26]=E):E=t[26];let D;if(t[27]!==u||t[28]!==c.kind||t[29]!==c.profileId||t[30]!==i){let e;t[32]!==u||t[33]!==c.kind||t[34]!==c.profileId?(e=e=>(0,Q.jsx)(en,{selected:c.kind===`existing`&&c.profileId===e.id,title:e.name,subtitle:`Existing profile`,onSelect:()=>u({kind:`existing`,profileId:e.id})},e.id),t[32]=u,t[33]=c.kind,t[34]=c.profileId,t[35]=e):e=t[35],D=i.map(e),t[27]=u,t[28]=c.kind,t[29]=c.profileId,t[30]=i,t[31]=D}else D=t[31];let O;t[36]!==E||t[37]!==D?(O=(0,Q.jsxs)(`section`,{className:`flex-1 space-y-2`,children:[T,E,D]}),t[36]=E,t[37]=D,t[38]=O):O=t[38];let k;t[39]!==O||t[40]!==C?(k=(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4`,children:[C,w,O]}),t[39]=O,t[40]=C,t[41]=k):k=t[41];let A;t[42]===_?A=t[43]:(A=_?(0,Q.jsx)(`p`,{role:`alert`,className:`mt-3 text-sm text-destructive`,children:_}):null,t[42]=_,t[43]=A);let j;t[44]!==k||t[45]!==A?(j=(0,Q.jsxs)(ke,{children:[k,A]}),t[44]=k,t[45]=A,t[46]=j):j=t[46];let M;t[47]===d?M=t[48]:(M=(0,Q.jsx)(R,{variant:`outline`,onClick:d,children:`Cancel`}),t[47]=d,t[48]=M);let N=o===``||m||h,F;t[49]!==f||t[50]!==N?(F=(0,Q.jsx)(R,{disabled:N,onClick:f,children:`Import`}),t[49]=f,t[50]=N,t[51]=F):F=t[51];let I;t[52]!==M||t[53]!==F?(I=(0,Q.jsxs)(De,{children:[M,F]}),t[52]=M,t[53]=F,t[54]=I):I=t[54];let L;return t[55]!==j||t[56]!==I||t[57]!==b?(L=(0,Q.jsxs)(Q.Fragment,{children:[b,j,I]}),t[55]=j,t[56]=I,t[57]=b,t[58]=L):L=t[58],L}function en(e){let t=(0,Z.c)(22),{selected:n,title:r,subtitle:i,onSelect:a}=e,o=n?`border-primary bg-primary/8`:`border-border/60 hover:border-border hover:bg-muted/40`,s;t[0]===o?s=t[1]:(s=z(`flex w-full cursor-pointer items-center justify-between gap-3 rounded-lg border px-3 py-2 text-left outline-none transition-colors focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background`,o),t[0]=o,t[1]=s);let c;t[2]===r?c=t[3]:(c=(0,Q.jsx)(`span`,{className:`block truncate text-sm font-medium text-foreground`,children:r}),t[2]=r,t[3]=c);let l;t[4]===i?l=t[5]:(l=i?(0,Q.jsx)(`span`,{className:`block truncate text-xs tabular-nums text-muted-foreground`,children:i}):null,t[4]=i,t[5]=l);let u;t[6]!==c||t[7]!==l?(u=(0,Q.jsxs)(`span`,{className:`min-w-0`,children:[c,l]}),t[6]=c,t[7]=l,t[8]=u):u=t[8];let d=n?`border-primary bg-primary text-primary-foreground`:`border-input`,f;t[9]===d?f=t[10]:(f=z(`grid size-4 shrink-0 place-items-center rounded-full border`,d),t[9]=d,t[10]=f);let p;t[11]===n?p=t[12]:(p=n?(0,Q.jsx)(D,{className:`size-2.5`}):null,t[11]=n,t[12]=p);let m;t[13]!==f||t[14]!==p?(m=(0,Q.jsx)(`span`,{className:f,children:p}),t[13]=f,t[14]=p,t[15]=m):m=t[15];let h;return t[16]!==a||t[17]!==n||t[18]!==s||t[19]!==u||t[20]!==m?(h=(0,Q.jsxs)(`button`,{type:`button`,"aria-pressed":n,onClick:a,className:s,children:[u,m]}),t[16]=a,t[17]=n,t[18]=s,t[19]=u,t[20]=m,t[21]=h):h=t[21],h}function tn(){let e=(0,Z.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,Q.jsxs)(Te,{children:[(0,Q.jsx)(Ee,{children:`Importing cookies`}),(0,Q.jsx)(Ae,{children:`This may take a moment.`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsxs)(Q.Fragment,{children:[t,(0,Q.jsx)(ke,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[(0,Q.jsx)(le,{size:`md`,tone:`muted`}),(0,Q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Importing…`})]})})]}),e[1]=n):n=e[1],n}function nn(e){let t=(0,Z.c)(13),{sourceName:n,check:r}=e,i;t[0]===n?i=t[1]:(i=(0,Q.jsxs)(Ee,{children:[`Checking `,n]}),t[0]=n,t[1]=i);let a=r===`fullDiskAccess`?`Checking Full Disk Access.`:`Checking whether the browser has closed.`,o;t[2]===a?o=t[3]:(o=(0,Q.jsx)(Ae,{children:a}),t[2]=a,t[3]=o);let s;t[4]!==i||t[5]!==o?(s=(0,Q.jsxs)(Te,{children:[i,o]}),t[4]=i,t[5]=o,t[6]=s):s=t[6];let c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,Q.jsx)(le,{size:`md`,tone:`muted`}),t[7]=c):c=t[7];let l=r===`fullDiskAccess`?`Checking access…`:`Checking…`,u;t[8]===l?u=t[9]:(u=(0,Q.jsx)(ke,{children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 py-2`,children:[c,(0,Q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:l})]})}),t[8]=l,t[9]=u);let d;return t[10]!==s||t[11]!==u?(d=(0,Q.jsxs)(Q.Fragment,{children:[s,u]}),t[10]=s,t[11]=u,t[12]=d):d=t[12],d}function rn(e){let t=(0,Z.c)(24),{imported:n,skipped:r,skippedDomains:i,targetName:a,destinationEnvironmentName:o,onClose:s}=e,c;t[0]!==n||t[1]!==r?(c=n>0?`Imported ${Zt(n)}`:r>0?`Skipped ${Zt(r)}`:`No cookies found`,t[0]=n,t[1]=r,t[2]=c):c=t[2];let l;t[3]===c?l=t[4]:(l=(0,Q.jsx)(Ee,{children:c}),t[3]=c,t[4]=l);let u;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==a?(u=n>0?`Added to ${a} for ${o}.${r>0?` ${Zt(r)} skipped.`:``}`:r>0?`No cookies were imported for ${o}.`:`There were no cookies to import for ${o}.`,t[5]=o,t[6]=n,t[7]=r,t[8]=a,t[9]=u):u=t[9];let d;t[10]===u?d=t[11]:(d=(0,Q.jsx)(Ae,{children:u}),t[10]=u,t[11]=d);let f;t[12]!==l||t[13]!==d?(f=(0,Q.jsxs)(Te,{children:[l,d]}),t[12]=l,t[13]=d,t[14]=f):f=t[14];let p;t[15]===i?p=t[16]:(p=i.length>0?(0,Q.jsxs)(ke,{children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:`Skipped`}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm text-foreground`,children:qt(i)})]}):null,t[15]=i,t[16]=p);let m;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,Q.jsx)(R,{}),t[17]=m):m=t[17];let h;t[18]===s?h=t[19]:(h=(0,Q.jsx)(De,{children:(0,Q.jsx)(Oe,{render:m,onClick:s,children:`Done`})}),t[18]=s,t[19]=h);let g;return t[20]!==f||t[21]!==p||t[22]!==h?(g=(0,Q.jsxs)(Q.Fragment,{children:[f,p,h]}),t[20]=f,t[21]=p,t[22]=h,t[23]=g):g=t[23],g}function an(e){let t=(0,Z.c)(17),{source:n,reason:r,onClose:i,onRetry:a}=e,o;t[0]===n.name?o=t[1]:(o=(0,Q.jsxs)(Ee,{children:[`Couldn’t import from `,n.name]}),t[0]=n.name,t[1]=o);let s=v[r],c;t[2]===s?c=t[3]:(c=(0,Q.jsx)(Ae,{children:s}),t[2]=s,t[3]=c);let l;t[4]!==o||t[5]!==c?(l=(0,Q.jsxs)(Te,{children:[o,c]}),t[4]=o,t[5]=c,t[6]=l):l=t[6];let u;t[7]===i?u=t[8]:(u=(0,Q.jsx)(R,{variant:`outline`,onClick:i,children:`Close`}),t[7]=i,t[8]=u);let d;t[9]===a?d=t[10]:(d=a?(0,Q.jsx)(R,{onClick:a,children:`Try again`}):null,t[9]=a,t[10]=d);let f;t[11]!==u||t[12]!==d?(f=(0,Q.jsxs)(De,{children:[u,d]}),t[11]=u,t[12]=d,t[13]=f):f=t[13];let p;return t[14]!==l||t[15]!==f?(p=(0,Q.jsxs)(Q.Fragment,{children:[l,f]}),t[14]=l,t[15]=f,t[16]=p):p=t[16],p}var on=`fill`,sn=`responsive`;async function cn(e,t,n,r){let i=e===null?[]:t,a=r?.environmentIds??[];if(i.length===0&&a.length===0)throw Error(`Browser profile data is not available to clear.`);await Promise.all([...i.flatMap(t=>[e.clearCookies(t,n),e.clearCache(t,n)]),...a.map(e=>r.clear(e,n))])}function ln(e,t,n,r=0){return(e||r>0)&&t&&n>0}var un={width:1280,height:800},dn={useGrouping:!1},fn={system:`System`,light:`Light`,dark:`Dark`},pn=e=>`${Math.round(e*100)}%`,mn=class extends Error{constructor(){super(`Browser profile limit reached.`),this.name=`ProfileLimitReachedError`}},hn=e=>{let t=String(e?.message??``);return f.literals.find(e=>t.includes(`failed: ${e}.`))??`readFailed`},gn=e=>e._tag===`fill`?on:e._tag===`preset`&&dt.some(t=>t.id===e.presetId)?e.presetId:sn,_n=e=>{let t=gn(e);return t===on?`Fill panel`:t===sn?`Responsive`:dt.find(e=>e.id===t)?.label??`Responsive`},vn=e=>Number.isInteger(e)&&e>=240&&e<=3840,yn=e=>({...e,width:e.height,height:e.width});function bn(e){let t=(0,Z.c)(42),{disabled:n}=e,r=xe(Sn),i=Se(),a=r._tag===`fill`?null:r,o=a?.width??un.width,s=a?.height??un.height,c;t[0]!==o||t[1]!==s?(c={width:o,height:s},t[0]=o,t[1]=s,t[2]=c):c=t[2];let l=c,u;t[3]!==a?.height||t[4]!==a?.width||t[5]!==i?(u=e=>{if(e===on){i({browserDefaultViewport:x});return}if(e===sn){i({browserDefaultViewport:{_tag:`freeform`,width:a?.width??un.width,height:a?.height??un.height}});return}let t=dt.find(t=>t.id===e);t&&i({browserDefaultViewport:{_tag:`preset`,width:t.width,height:t.height,presetId:t.id}})},t[3]=a?.height,t[4]=a?.width,t[5]=i,t[6]=u):u=t[6];let d=u,f;t[7]!==l||t[8]!==a||t[9]!==i?(f=(e,t)=>{if(t===null||!vn(t))return;let n={...l,[e]:t};n.width*n.height>8294400||a&&n.width===a.width&&n.height===a.height||i({browserDefaultViewport:{_tag:`freeform`,...n}})},t[7]=l,t[8]=a,t[9]=i,t[10]=f):f=t[10];let p=f,m;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(m=X(`browser-default-viewport`),t[11]=m):m=t[11];let h;t[12]!==n||t[13]!==i||t[14]!==r._tag?(h=!n&&r._tag!==I._tag?(0,Q.jsx)(nt,{label:`default browser viewport`,onClick:()=>i({browserDefaultViewport:I})}):null,t[12]=n,t[13]=i,t[14]=r._tag,t[15]=h):h=t[15];let g;t[16]===r?g=t[17]:(g=gn(r),t[16]=r,t[17]=g);let _;t[18]===r?_=t[19]:(_=_n(r),t[18]=r,t[19]=_);let v;t[20]===_?v=t[21]:(v=(0,Q.jsx)(W,{size:`sm`,className:`w-full min-w-0 sm:w-44`,"aria-label":`Default browser viewport`,children:(0,Q.jsx)(oe,{children:_})}),t[20]=_,t[21]=v);let y,b;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,Q.jsx)(H,{value:on,children:`Fill panel`}),b=(0,Q.jsx)(H,{value:sn,children:`Responsive`}),t[22]=y,t[23]=b):(y=t[22],b=t[23]);let S;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,Q.jsxs)(U,{align:`end`,alignItemWithTrigger:!1,children:[y,b,(0,Q.jsxs)(ce,{children:[(0,Q.jsx)(se,{children:`Standard`}),dt.map(xn)]})]}),t[24]=S):S=t[24];let C;t[25]!==n||t[26]!==d||t[27]!==v||t[28]!==g?(C=(0,Q.jsxs)(G,{value:g,onValueChange:d,disabled:n,children:[v,S]}),t[25]=n,t[26]=d,t[27]=v,t[28]=g,t[29]=C):C=t[29];let w;t[30]!==p||t[31]!==n||t[32]!==l||t[33]!==a||t[34]!==i?(w=a?(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1`,children:[(0,Q.jsx)(V,{value:l.width,min:240,max:T,disabled:n,format:dn,size:`sm`,className:`w-20`,onValueCommitted:e=>p(`width`,e),children:(0,Q.jsx)(B,{children:(0,Q.jsx)(ae,{"aria-label":`Default viewport width`})})}),(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`×`}),(0,Q.jsx)(V,{value:l.height,min:240,max:T,disabled:n,format:dn,size:`sm`,className:`w-20`,onValueCommitted:e=>p(`height`,e),children:(0,Q.jsx)(B,{children:(0,Q.jsx)(ae,{"aria-label":`Default viewport height`})})}),(0,Q.jsxs)(de,{children:[(0,Q.jsx)(ue,{render:(0,Q.jsx)(R,{size:`icon-sm`,variant:`ghost-muted`,disabled:n,"aria-label":`Rotate to ${l.height>=l.width?`landscape`:`portrait`}`,onClick:()=>i({browserDefaultViewport:yn(a)}),children:(0,Q.jsx)(pt,{})})}),(0,Q.jsx)(q,{side:`top`,children:`Rotate`})]})]}):null,t[30]=p,t[31]=n,t[32]=l,t[33]=a,t[34]=i,t[35]=w):w=t[35];let E;t[36]!==C||t[37]!==w?(E=(0,Q.jsxs)(`div`,{className:`flex w-full flex-wrap items-center justify-end gap-2 sm:w-auto`,children:[C,w]}),t[36]=C,t[37]=w,t[38]=E):E=t[38];let D;return t[39]!==E||t[40]!==h?(D=(0,Q.jsx)(Y,{...m,description:`Tab size for you and agents. Fill fits the panel; other sizes show the device toolbar.`,resetAction:h,control:E}),t[39]=E,t[40]=h,t[41]=D):D=t[41],D}function xn(e){return(0,Q.jsx)(H,{value:e.id,children:(0,Q.jsxs)(`span`,{className:`flex w-full items-center justify-between gap-5`,children:[(0,Q.jsx)(`span`,{children:e.label}),(0,Q.jsx)(`span`,{className:`text-xs tabular-nums text-muted-foreground`,children:e.detail})]})},e.id)}function Sn(e){return e.browserDefaultViewport}function Cn(e){let t=(0,Z.c)(20),{disabled:n}=e,r=xe(Tn),i=Se(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=X(`browser-default-zoom`),t[0]=a):a=t[0];let o;t[1]!==n||t[2]!==i||t[3]!==r?(o=!n&&r!==1?(0,Q.jsx)(nt,{label:`default browser zoom`,onClick:()=>i({browserDefaultZoomFactor:1})}):null,t[1]=n,t[2]=i,t[3]=r,t[4]=o):o=t[4];let s=String(r),c;t[5]===i?c=t[6]:(c=e=>{let t=A.find(t=>String(t)===e);t!==void 0&&i({browserDefaultZoomFactor:t})},t[5]=i,t[6]=c);let l;t[7]===r?l=t[8]:(l=pn(r),t[7]=r,t[8]=l);let u;t[9]===l?u=t[10]:(u=(0,Q.jsx)(W,{size:`sm`,className:`w-full sm:w-40`,"aria-label":`Default browser zoom`,children:(0,Q.jsx)(oe,{children:l})}),t[9]=l,t[10]=u);let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Q.jsx)(U,{align:`end`,alignItemWithTrigger:!1,children:A.map(wn)}),t[11]=d):d=t[11];let f;t[12]!==n||t[13]!==s||t[14]!==c||t[15]!==u?(f=(0,Q.jsxs)(G,{disabled:n,value:s,onValueChange:c,children:[u,d]}),t[12]=n,t[13]=s,t[14]=c,t[15]=u,t[16]=f):f=t[16];let p;return t[17]!==o||t[18]!==f?(p=(0,Q.jsx)(Y,{...a,description:`Page zoom applied to new browser tabs.`,resetAction:o,control:f}),t[17]=o,t[18]=f,t[19]=p):p=t[19],p}function wn(e){return(0,Q.jsx)(H,{hideIndicator:!0,value:String(e),children:pn(e)},e)}function Tn(e){return e.browserDefaultZoomFactor}function En(e){let t=(0,Z.c)(18),{disabled:n}=e,r=xe(On),i=Se(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=X(`browser-default-appearance`),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==n||t[3]!==i?(o=!n&&r!==`system`?(0,Q.jsx)(nt,{label:`default browser appearance`,onClick:()=>i({browserDefaultAppearance:F})}):null,t[1]=r,t[2]=n,t[3]=i,t[4]=o):o=t[4];let s;t[5]===i?s=t[6]:(s=e=>{(e===`system`||e===`light`||e===`dark`)&&i({browserDefaultAppearance:e})},t[5]=i,t[6]=s);let c=fn[r],l;t[7]===c?l=t[8]:(l=(0,Q.jsx)(W,{size:`sm`,className:`w-full sm:w-40`,"aria-label":`Default browser appearance`,children:(0,Q.jsx)(oe,{children:c})}),t[7]=c,t[8]=l);let u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(U,{align:`end`,alignItemWithTrigger:!1,children:Object.entries(fn).map(Dn)}),t[9]=u):u=t[9];let d;t[10]!==r||t[11]!==n||t[12]!==s||t[13]!==l?(d=(0,Q.jsxs)(G,{disabled:n,value:r,onValueChange:s,children:[l,u]}),t[10]=r,t[11]=n,t[12]=s,t[13]=l,t[14]=d):d=t[14];let f;return t[15]!==o||t[16]!==d?(f=(0,Q.jsx)(Y,{...a,description:`The color scheme pages are told to prefer. System follows your OS setting.`,resetAction:o,control:d}),t[15]=o,t[16]=d,t[17]=f):f=t[17],f}function Dn(e){let[t,n]=e;return(0,Q.jsx)(H,{hideIndicator:!0,value:t,children:n},t)}function On(e){return e.browserDefaultAppearance}function kn(e){let t=(0,Z.c)(17),{disabled:n}=e,r=xe(jn),i=xe(An),a=Se(),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=X(`browser-recording-key-presses`),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=e=>a({browserRecordingShowKeyPresses:!!e}),t[1]=a,t[2]=s);let c;t[3]!==n||t[4]!==r||t[5]!==s?(c=(0,Q.jsx)(Y,{...o,description:`Show pressed keys and shortcuts in new recordings. Password fields are excluded.`,control:(0,Q.jsx)(st,{disabled:n,checked:r,"aria-label":`Show key presses in recordings`,onCheckedChange:s})}),t[3]=n,t[4]=r,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=X(`browser-recording-mouse-presses`),t[7]=l):l=t[7];let u;t[8]===a?u=t[9]:(u=e=>a({browserRecordingShowMousePresses:!!e}),t[8]=a,t[9]=u);let d;t[10]!==n||t[11]!==i||t[12]!==u?(d=(0,Q.jsx)(Y,{...l,description:`Highlight mouse presses and held buttons in new recordings.`,control:(0,Q.jsx)(st,{disabled:n,checked:i,"aria-label":`Show mouse presses in recordings`,onCheckedChange:u})}),t[10]=n,t[11]=i,t[12]=u,t[13]=d):d=t[13];let f;return t[14]!==c||t[15]!==d?(f=(0,Q.jsxs)(Q.Fragment,{children:[c,d]}),t[14]=c,t[15]=d,t[16]=f):f=t[16],f}function An(e){return e.browserRecordingShowMousePresses}function jn(e){return e.browserRecordingShowKeyPresses}function Mn(e){let t=(0,Z.c)(18),{disabled:n}=e,r=xe(Pn),i=Se(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=X(`browser-recording-frame-rate`),t[0]=a):a=t[0];let o;t[1]!==n||t[2]!==r||t[3]!==i?(o=!n&&r!==30?(0,Q.jsx)(nt,{label:`browser recording frame rate`,onClick:()=>i({browserRecordingFrameRate:30})}):null,t[1]=n,t[2]=r,t[3]=i,t[4]=o):o=t[4];let s=String(r),c;t[5]===i?c=t[6]:(c=e=>{let t=p.find(t=>String(t)===e);t!==void 0&&i({browserRecordingFrameRate:t})},t[5]=i,t[6]=c);let l;t[7]===r?l=t[8]:(l=(0,Q.jsx)(W,{size:`sm`,className:`w-full sm:w-40`,"aria-label":`Browser recording frame rate`,children:(0,Q.jsxs)(oe,{children:[r,` fps`]})}),t[7]=r,t[8]=l);let u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,Q.jsx)(U,{align:`end`,alignItemWithTrigger:!1,children:p.map(Nn)}),t[9]=u):u=t[9];let d;t[10]!==n||t[11]!==s||t[12]!==c||t[13]!==l?(d=(0,Q.jsxs)(G,{disabled:n,value:s,onValueChange:c,children:[l,u]}),t[10]=n,t[11]=s,t[12]=c,t[13]=l,t[14]=d):d=t[14];let f;return t[15]!==o||t[16]!==d?(f=(0,Q.jsx)(Y,{...a,description:`Maximum recording rate. 30 fps saves CPU and storage; 60 fps is smoother.`,resetAction:o,control:d}),t[15]=o,t[16]=d,t[17]=f):f=t[17],f}function Nn(e){return(0,Q.jsxs)(H,{hideIndicator:!0,value:String(e),children:[e,` fps`]},e)}function Pn(e){return e.browserRecordingFrameRate}var Fn={system:`Your default browser`,app:`P4 Code`};function In(e){let t=(0,Z.c)(19),{disabled:n}=e,r=xe(Rn),i=Se(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=X(`browser-link-target`),t[0]=a):a=t[0];let o;t[1]!==n||t[2]!==r||t[3]!==i?(o=!n&&r!==`system`?(0,Q.jsx)(nt,{label:`link target`,onClick:()=>i({browserLinkTarget:j})}):null,t[1]=n,t[2]=r,t[3]=i,t[4]=o):o=t[4];let s;t[5]===i?s=t[6]:(s=e=>{(e===`system`||e===`app`)&&i({browserLinkTarget:e})},t[5]=i,t[6]=s);let c=Fn[r],l;t[7]===c?l=t[8]:(l=(0,Q.jsx)(W,{size:`sm`,className:`w-full sm:w-40`,"aria-label":`Open links in`,children:(0,Q.jsx)(oe,{children:c})}),t[7]=c,t[8]=l);let u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u=Object.keys(Fn),t[9]=u):u=t[9];let d;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,Q.jsx)(U,{align:`end`,alignItemWithTrigger:!1,children:u.map(Ln)}),t[10]=d):d=t[10];let f;t[11]!==n||t[12]!==r||t[13]!==s||t[14]!==l?(f=(0,Q.jsxs)(G,{disabled:n,value:r,onValueChange:s,children:[l,d]}),t[11]=n,t[12]=r,t[13]=s,t[14]=l,t[15]=f):f=t[15];let p;return t[16]!==o||t[17]!==f?(p=(0,Q.jsx)(Y,{...a,description:`Where links in the chat and terminal open. Hold ⌘ or Ctrl while clicking a link to open it in your default browser either way.`,resetAction:o,control:f}),t[16]=o,t[17]=f,t[18]=p):p=t[18],p}function Ln(e){return(0,Q.jsx)(H,{hideIndicator:!0,value:e,children:Fn[e]},e)}function Rn(e){return e.browserLinkTarget}function zn(){let e=(0,Z.c)(7),{search:t,environment:n}=Xe(),r=$e(),i=n?.connection.phase===`connected`&&n.serverConfig!==null?n.environmentId:null,a;e[0]===t?a=e[1]:(a=JSON.stringify(t),e[0]=t,e[1]=a);let o=`${i}:${a}`,s;return e[2]!==i||e[3]!==r.enableAgentDeviceAccess||e[4]!==r.enableDeviceSupport||e[5]!==o?(s=(0,Q.jsx)(rt,{id:`devices`,title:`Devices`,children:(0,Q.jsx)(Bn,{environmentId:i,enabled:r.enableDeviceSupport,agentAccessEnabled:r.enableAgentDeviceAccess},o)}),e[2]=i,e[3]=r.enableAgentDeviceAccess,e[4]=r.enableDeviceSupport,e[5]=o,e[6]=s):s=e[6],s}function Bn({environmentId:e,enabled:t,agentAccessEnabled:n}){let i=he(e,r),{state:a,loaded:o}=Ne(e),{scope:s,environments:c,connectedEnvironments:l}=Xe(),u=Qe(),d=s.kind===`project`||s.kind===`checkout`,f=l.some(e=>e.serverConfig?.settings.enableDeviceSupport),p=J(Pe.configure,{reportFailure:!1}),m=J(Pe.list,{reportFailure:!1}),[h,g]=(0,$.useState)(null),_=a.hostStatus===`installing`||a.hostStatus===`starting`,v=a.hosts.some(e=>e.kind===`local`&&!e.platforms.some(e=>e.available)),[y,b]=(0,$.useState)(!1);y&&!t&&b(!1),t&&!y&&(a.hostStatus===`ready`||v)&&h!==`hub`&&b(!0);let x=async(t,n)=>{if(e&&ge(e,`settings:write`)){g(t);try{let e=await Promise.allSettled(c.map(async e=>{if(e.connection.phase!==`connected`||!e.serverConfig)throw Error(`Environment disconnected`);if(!ge(e.environmentId,`settings:write`))throw Error(`This connection cannot change device settings.`);return p({environmentId:e.environmentId,input:{...n,...n.enabled?{onboardingCompleted:!0}:{}}})})),t=c.filter((t,n)=>{let r=e[n];return r?.status!==`fulfilled`||r.value._tag===`Failure`});t.length>0&&K.add({type:`error`,title:`Device settings not saved on all environments`,description:`Could not update ${t.map(e=>e.label).join(`, `)}.`})}finally{g(null)}}},[S,C]=(0,$.useState)(null),w=a.hosts.find(e=>e.kind===`local`)?.tools,T=t=>{let n=w?.[t],r=n&&!n.installedVersions.includes(n.requiredVersion);return(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[a.supportsToolUpdate&&r?(0,Q.jsx)(R,{size:`sm`,disabled:!e||h!==null||_,onClick:()=>{e&&(C(null),g(`update-${t}`),m({environmentId:e,input:{updateTool:t}}).then(e=>{e._tag===`Failure`&&C({tool:t,message:`Update failed. Check this host's network connection and try again.`})}).finally(()=>g(null)))},children:h===`update-${t}`?`Updating…`:`Update to v${n.requiredVersion}`}):null,a.supportsToolInspection?(0,Q.jsx)(R,{size:`sm`,variant:`outline`,disabled:!e||h!==null||_,onClick:()=>{e&&(g(`check`),m({environmentId:e,input:{inspectOnly:!0}}).finally(()=>g(null)))},children:h===`check`?`Checking…`:`Check versions`}):null]}),S?.tool===t?(0,Q.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:S.message}):null]})};return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Y,{...X(`device-hub`),serverScoped:!0,settingKeys:[`enableDeviceSupport`],description:ze,control:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(xt,{action:T(`hub`),kind:`hub`,tools:a.hosts.find(e=>e.kind===`local`)?.tools}),h===`hub`?(0,Q.jsx)(Re,{state:a,pending:!0,compact:!0}):null,(0,Q.jsx)(_t,{settingKeys:[`enableDeviceSupport`],checked:t,disabled:!i||d||!o||!e||_||h!==null,"aria-label":`Device hub`,onCheckedChange:e=>void x(`hub`,{enabled:!!e,...e?{}:{agentAccessEnabled:!1}})})]})}),(0,Q.jsx)(He,{children:y?(0,Q.jsx)(Y,{...X(`device-platform-support`),description:l.length>1?`Status for ${l.find(t=>t.environmentId===e)?.label}. Select an environment to inspect its simulator support.`:void 0,status:(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-x-5 gap-y-2`,children:[(0,Q.jsx)(Le,{compact:!0,platform:`iOS`,status:Be(a,`ios`)}),(0,Q.jsx)(Le,{compact:!0,platform:`Android`,status:Be(a,`android`)})]}),control:(0,Q.jsx)(R,{size:`sm`,variant:`outline`,disabled:!e||!t||_||h!==null,onClick:()=>{e&&(g(`check`),m({environmentId:e,input:{}}).finally(()=>g(null)))},children:h===`check`?`Checking…`:`Refresh`})}):null}),(0,Q.jsx)(Y,{...X(`agent-device-access`),serverScoped:!0,settingKeys:[`enableAgentDeviceAccess`],description:Fe,control:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(xt,{action:T(`agent`),kind:`agent`,tools:a.hosts.find(e=>e.kind===`local`)?.tools}),h===`agent`?(0,Q.jsx)(Ve,{state:a,pending:!0,compact:!0}):null,(0,Q.jsx)(_t,{settingKeys:[`enableAgentDeviceAccess`],checked:n,disabled:!i||l.length===0||!d&&(!o||!f||_)||h!==null,"aria-label":`Agent device access`,onCheckedChange:e=>d?u({enableAgentDeviceAccess:!!e}):void x(`agent`,{agentAccessEnabled:!!e})})]})}),e?(0,Q.jsx)(Ie,{state:{...a,hosts:a.hosts.filter(e=>e.kind===`local`)},environmentId:e}):null,(0,Q.jsx)(Pt,{environmentId:e})]})}function Vn(e){let t=(0,Z.c)(14),{disabled:n}=e,r=xe(Hn),i=Se(),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=X(`browser-auto-show-floating-preview`),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==n||t[3]!==i?(o=!n&&r!==!0?(0,Q.jsx)(nt,{label:`auto-show floating preview`,onClick:()=>i({browserAutoShowFloatingPreview:!0})}):null,t[1]=r,t[2]=n,t[3]=i,t[4]=o):o=t[4];let s;t[5]===i?s=t[6]:(s=e=>i({browserAutoShowFloatingPreview:!!e}),t[5]=i,t[6]=s);let c;t[7]!==r||t[8]!==n||t[9]!==s?(c=(0,Q.jsx)(st,{disabled:n,checked:r,onCheckedChange:s,"aria-label":`Auto-show floating preview`}),t[7]=r,t[8]=n,t[9]=s,t[10]=c):c=t[10];let l;return t[11]!==o||t[12]!==c?(l=(0,Q.jsx)(Y,{...a,description:`Show the floating preview when an agent opens a browser or device unless the agent says otherwise.`,resetAction:o,control:c}),t[11]=o,t[12]=c,t[13]=l):l=t[13],l}function Hn(e){return e.browserAutoShowFloatingPreview}function Un({disabled:e}){let t=xe(e=>e.browserProfiles),n=xe(e=>e.browserDefaultProfileId),r=ve(),i=Se(),{environments:a,isReady:c}=fe(),l=pe(),[u,f]=(0,$.useState)(null),[p,m]=(0,$.useState)(null),[g,v]=(0,$.useState)(null),[x,S]=(0,$.useState)(null),[C,T]=(0,$.useState)(null),[D,k]=(0,$.useState)(!1),A=ie(),j=J(Ge.clearProfile,{reportFailure:!1}),P={environmentIds:a.map(e=>e.environmentId).filter(e=>A.get(e)?.environment.capabilities.serverBrowser===!0),clear:async(e,t)=>{let n=await j({environmentId:e,input:{profileId:t}});if(n._tag===`Failure`)throw re(n)}},F=ln(ft!==null,c,a.length,P.environmentIds.length),I=(0,$.useRef)(!1),[L,ae]=(0,$.useState)(!1),B=e||!r,V=b(t).filter(e=>e.kind!==`incognito`),H=te(V,n)?.id??`default`,oe=e=>{if(!r||I.current)return;let t=be().browserProfiles;if(t.length>=24)return;let n=b(t),a=new Set(n.map(e=>e.name)),o=e;for(let t=2;a.has(o);t+=1)o=`${e} ${t}`;let s={id:`profile-${O()}`,name:o,kind:`persistent`};return i({browserProfiles:[...t,s]}),s},se=(e,t)=>{if(!r||I.current)return;let n=t.trim().slice(0,48);if(n===``)return;let a=be().browserProfiles;i({browserProfiles:a.map(t=>t.id===e?{...t,name:n}:t)})},U=(e,t)=>{if(r&&!I.current){if(!F){K.add({type:`error`,title:`Could not clear ${t}'s data`,description:`You're not connected to a server yet.`});return}cn(ft,a.map(e=>e.environmentId),e,P).then(()=>{K.add({type:`success`,title:`Cleared ${t}'s cookies and cache`})}).catch(()=>{K.add({type:`error`,title:`Could not clear ${t}'s data`})})}},ce=async e=>{if(!r||I.current)return;if(!F){T(`Connect to an environment before removing this profile.`);return}T(null),k(!0);try{await cn(ft,c?a.map(e=>e.environmentId):[],e,P)}catch{T(`Profile data could not be deleted. Try again.`),k(!1);return}let t=be();i({browserProfiles:t.browserProfiles.filter(t=>t.id!==e),...t.browserDefaultProfileId===e?{browserDefaultProfileId:E}:{}}),k(!1),v(null)},W=(u??[]).filter(e=>e.unavailable!==`notInstalled`&&e.unavailable!==`unsupportedPlatform`),G=(0,$.useCallback)(()=>{ft&&ft.listBrowserImportSources().then(f).catch(()=>f(e=>e??[]))},[]),le=async(e,t,n)=>{if(!ft||!r)return{kind:`blocked`,reason:`sessionUnavailable`};if(n.target.kind===`existing`&&!b(be().browserProfiles).some(e=>e.id===n.target.profileId)||I.current)return{kind:`blocked`,reason:`readFailed`};I.current=!0,ae(!0);try{let r=await ft.importBrowserCookies({environmentId:t,sourceId:e.id,sourceProfileDirectory:n.sourceProfileDirectory,targetProfileId:n.target.profileId});if(n.target.kind===`existing`&&!b(be().browserProfiles).some(e=>e.id===n.target.profileId))return{kind:`blocked`,reason:`readFailed`};let i;if(n.target.kind===`new`){if(r.imported>0)try{i=(await ye(t=>{if(t.browserProfiles.find(e=>e.id===n.target.profileId))return t;if(t.browserProfiles.length>=24)throw new mn;let r=new Set(b(t.browserProfiles).map(e=>e.name)),i=e.name;for(let t=2;r.has(i);t+=1)i=`${e.name} ${t}`;return{...t,browserProfiles:[...t.browserProfiles,{id:n.target.profileId,name:i,kind:`persistent`}]}})).browserProfiles.find(e=>e.id===n.target.profileId)?.name??e.name}catch(r){await cn(ft,[t],n.target.profileId).catch(()=>void 0);let i=r instanceof mn?`profileLimitReached`:`profileNotSaved`;throw Error(`Importing cookies from ${e.id} failed: ${i}.`,{cause:r})}else i=e.name}else i=n.target.name;return{kind:`imported`,imported:r.imported,skipped:r.skipped,skippedDomains:r.skippedDomains,targetName:i}}catch(e){return{kind:`blocked`,reason:hn(e)}}finally{I.current=!1,ae(!1)}},ue=async e=>{if(ft)try{let t=await ft.listBrowserImportSources();return f(t),t.find(t=>t.id===e)}catch{return}},q=t.length>=24;return(0,Q.jsxs)(Y,{...X(`browser-profiles`),description:`Profiles separate cookies and logins. Incognito data is cleared when the app closes.`,control:(0,Q.jsxs)(o,{onOpenChange:e=>e&&G(),children:[(0,Q.jsxs)(M,{render:(0,Q.jsx)(R,{size:`sm`,variant:`outline`,disabled:B||L}),children:[(0,Q.jsx)(d,{}),`Add profile`]}),(0,Q.jsxs)(y,{align:`end`,children:[(0,Q.jsx)(_,{disabled:!r||q,onClick:()=>oe(`New profile`),children:`Blank profile`}),q?(0,Q.jsx)(_,{disabled:!0,children:`You’ve reached the profile limit`}):null,(0,Q.jsx)(ee,{}),(0,Q.jsxs)(N,{children:[(0,Q.jsx)(s,{children:`Import from`}),u===null?(0,Q.jsx)(_,{disabled:!0,children:`Looking for browsers…`}):W.length===0?(0,Q.jsx)(_,{disabled:!0,children:`No supported browsers found`}):(0,Q.jsxs)(Q.Fragment,{children:[W.map(e=>(0,Q.jsx)(_,{disabled:!r||l==null,onClick:()=>{r&&l!=null&&m({source:e,environmentId:l.environmentId,environmentName:Ze({isPrimary:!0,environmentId:l.environmentId,runtimeLabel:l.label})})},children:e.name},e.id)),l==null?(0,Q.jsx)(_,{disabled:!0,children:`Connect to an environment to import cookies`}):null]})]})]})]}),children:[(0,Q.jsx)(`div`,{className:`mt-2 mb-2 overflow-hidden rounded-lg border border-border/60`,children:V.map((e,t)=>{let n=ne(e.id),a=e.id===H;return(0,Q.jsxs)(`div`,{className:z(`flex items-center gap-3 px-3 py-2`,t>0&&`border-t border-border/60`),children:[(0,Q.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[n?(0,Q.jsx)(`span`,{className:z(`truncate text-sm text-foreground`,B&&`opacity-64`),children:e.name}):(0,Q.jsx)(gt,{nativeInput:!0,size:`sm`,className:`w-full max-w-56`,"aria-label":`Rename ${e.name}`,disabled:B||L,maxLength:48,value:e.name,onCommit:t=>se(e.id,t)}),a?(0,Q.jsx)(`span`,{className:z(`flex`,B&&`opacity-64`),children:(0,Q.jsx)(h,{children:`Default`})}):null]}),(0,Q.jsxs)(o,{children:[(0,Q.jsx)(M,{render:(0,Q.jsx)(R,{size:`icon-xs`,variant:`ghost-muted`,disabled:B||L,"aria-label":`${e.name} options`}),children:(0,Q.jsx)(w,{})}),(0,Q.jsxs)(y,{align:`end`,children:[(0,Q.jsx)(_,{disabled:!r||a,onClick:()=>{r&&i({browserDefaultProfileId:e.id})},children:`Set as default`}),(0,Q.jsx)(_,{disabled:!r||!F,onClick:()=>{P.environmentIds.length>0?S(e):U(e.id,e.name)},children:`Clear cookies and cache`}),n?null:(0,Q.jsx)(_,{variant:`destructive`,disabled:!r||!F,onClick:()=>{r&&v(e)},children:`Remove profile and data`}),F?null:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(ee,{}),(0,Q.jsx)(_,{disabled:!0,children:c?`Connect to an environment to clear profile data`:`Checking environments…`})]})]})]})]},e.id)})}),(0,Q.jsx)(it,{open:g!==null,onOpenChange:e=>{!e&&!D&&(v(null),T(null))},children:(0,Q.jsxs)(at,{children:[(0,Q.jsxs)(ut,{children:[(0,Q.jsxs)(ot,{children:[`Remove “`,g?.name,`”?`]}),(0,Q.jsx)(ct,{children:`Its cookies and logins are deleted. Desktop tabs already open in this profile stay open until you close them; server browser tabs close now.`}),C?(0,Q.jsx)(`p`,{"aria-live":`polite`,className:`text-sm text-destructive`,children:C}):null,F?null:(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Connect to an environment to remove this profile and its data.`})]}),(0,Q.jsxs)(lt,{children:[(0,Q.jsx)(mt,{disabled:D,render:(0,Q.jsx)(R,{variant:`outline`,disabled:D}),children:`Cancel`}),(0,Q.jsx)(R,{variant:`destructive`,disabled:D||!r||!F,onClick:()=>{g&&r&&F&&ce(g.id)},children:D?`Removing…`:`Remove profile`})]})]})}),(0,Q.jsx)(it,{open:x!==null,onOpenChange:e=>{e||S(null)},children:(0,Q.jsxs)(at,{children:[(0,Q.jsxs)(ut,{children:[(0,Q.jsxs)(ot,{children:[`Clear “`,x?.name,`”’s cookies and cache?`]}),(0,Q.jsx)(ct,{children:`You are signed out of its sites. Server browser tabs open in this profile close now.`})]}),(0,Q.jsxs)(lt,{children:[(0,Q.jsx)(mt,{render:(0,Q.jsx)(R,{variant:`outline`}),children:`Cancel`}),(0,Q.jsx)(R,{variant:`destructive`,onClick:()=>{x&&U(x.id,x.name),S(null)},children:`Clear data`})]})]})}),p?(0,Q.jsx)(Jt,{source:p.source,destinationEnvironmentName:p.environmentName,targetProfiles:V.map(e=>({id:e.id,name:e.name})),canCreateProfile:r&&!q,onImport:e=>le(p.source,p.environmentId,e),onRefreshSource:()=>ue(p.source.id),onCheckFullDiskAccess:window.desktopBridge?.checkSystemPermission?()=>window.desktopBridge.checkSystemPermission(`full-disk-access`):void 0,onOpenFullDiskAccessSettings:async()=>{await _e()?.shell.openSystemSettings(`full-disk-access`).catch(()=>{K.add({type:`error`,title:`Could not open System Settings`,description:`Open Privacy & Security → Full Disk Access manually.`})})},onClose:()=>m(null)}):null]})}function Wn(){let e=(0,Z.c)(3),t=!Ce,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Un,{disabled:t}),(0,Q.jsx)(bn,{disabled:t}),(0,Q.jsx)(Cn,{disabled:t}),(0,Q.jsx)(En,{disabled:t}),(0,Q.jsx)(Mn,{disabled:t}),(0,Q.jsx)(kn,{disabled:t}),(0,Q.jsx)(In,{disabled:t}),(0,Q.jsx)(Vn,{disabled:t})]}),e[0]=n):n=e[0];let r=n,i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,Q.jsx)(ht,{category:`integrations`}),e[1]=i):i=e[1];let a;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Q.jsxs)(tt,{children:[i,(0,Q.jsx)(rt,{id:`browser`,title:`Browser`,children:t?(0,Q.jsx)(et,{message:`Only available in the desktop app.`,children:r}):r}),(0,Q.jsx)(zn,{})]}),e[2]=a):a=e[2],a}var Gn=Wn;export{Gn as component};
|
|
2
|
-
//# sourceMappingURL=settings.integrations-DykwmCf7.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{r as t}from"./Icon-l19w4AjM.js";import{$g as n,Aw as r,Cm as i,Gn as a,Hp as o,Jp as s,Ku as c,Lp as l,NE as u,NT as d,Np as f,Pp as p,Qg as m,Qp as h,Ss as g,Wn as _,Xg as v,Yg as y,Yn as b,Yo as x,Zg as S,Zn as C,e_ as w,gd as T,ib as E,l as D,lE as O,n_ as k,od as A,or as j,sr as M,t as N,t_ as P,up as F}from"./utils-BAPnqm16.js";import{n as I}from"./ChatMarkdown-BS1t8pnS.js";import{a as L,c as R,o as z,s as B,t as V}from"./select-Dsx46akG.js";import{t as H}from"./useLocation-Ccsih1eo.js";import{p as U}from"./toast-CN7Jd-pG.js";import{a as W,n as G,t as K}from"./tooltip-DaSC-3cL.js";import{n as q}from"./environments-iW64jjyO.js";import{f as J}from"./server-CoH7V4JL.js";import{t as Y}from"./use-atom-command-GpCw1tWF.js";import{s as ee,u as te}from"./providerSkills-O72EMm0V.js";import{t as ne}from"./skeleton-0mC3wMw1.js";import{t as re}from"./textarea-BvPoR1cI.js";import{n as ie,t as ae}from"./toggle-group-DekLc0Ax.js";import{t as oe}from"./input-83N8btBC.js";import{c as se,r as ce,s as le,t as ue}from"./dialog-DYFQxVoN.js";import{i as de,o as fe,r as pe,t as me}from"./empty-2jxBvPLn.js";import{n as he,r as ge,t as _e}from"./input-group-Q757vhrD.js";import{a as ve}from"./projectFilesQueryState-CGllQp_V.js";import{B as ye,P as be,U as xe,a as Se,i as Ce,s as we}from"./settingsLayout-CqGfrbmD.js";import{Ar as Te,Fr as Ee,Ir as De,La as Oe,Mr as ke,Ni as Ae,Nr as je,Pr as Me,ir as Ne,jr as Pe}from"./main-lV-t-UZx.js";import{t as Fe}from"./SecretInput-CIbdWrQZ.js";var X=u(),Ie={spawn:`Failed to start`,timeout:`Timed out`,protocol:`Not an MCP server`,http:`Can't connect`,auth:`Credentials rejected`};function Le(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:Ie[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 Re(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 Z=e(t(),1),Q=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ze=e=>typeof e==`string`&&e.trim()?e:void 0,Be=e=>{if(e!==null)try{let t=JSON.parse(e);return Q(t)?t:void 0}catch{return}},Ve=e=>{let t=ze(e)?.replace(/^\.\//,``);if(t!==void 0&&t.toLowerCase().endsWith(`.svg`)&&!(t.startsWith(`/`)||t.split(/[\\/]/).includes(`..`)))return t};function He(e,t){let n=Be(e),r=Be(t),i=Q(r?.interface)?r.interface:void 0,a=n?.author??r?.author,o={displayName:ze(n?.displayName)??ze(i?.displayName),description:ze(n?.description)??ze(r?.description),publisher:ze(a)??(Q(a)?ze(a.name):void 0),iconPath:Ve(n?.icon)??Ve(i?.logo)??Ve(i?.composerIcon)};return Object.fromEntries(Object.entries(o).filter(([,e])=>e!==void 0))}function Ue(e){let t=Be(e)?.userConfig;return Q(t)?Object.entries(t).map(([e,t])=>{let n=Q(t)?t:{},r=ze(n.description);return{key:e,title:ze(n.title)??e,...r===void 0?{}:{description:r},required:n.required===!0}}):[]}var $=e(O(),1),We=e=>{let t=d(g(e));return t&&!t.truncated?t.contents:null};function Ge(e){let t=(0,X.c)(48),{environmentId:n,plugin:r,enabled:i,disabled:o,onDetails:s,onToggle:c}=e,u;t[0]!==n||t[1]!==r.path?(u=ve(n,r.path,`.claude-plugin/plugin.json`),t[0]=n,t[1]=r.path,t[2]=u):u=t[2];let d=x(u),f;t[3]!==n||t[4]!==r.path?(f=ve(n,r.path,`.codex-plugin/plugin.json`),t[3]=n,t[4]=r.path,t[5]=f):f=t[5];let p=x(f),{displayName:m,description:h,publisher:g,iconPath:_}=He(We(d),We(p)),v=We(x(ve(n,r.path,_??null))),y=_&&v?.trimStart().startsWith(`<`)?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(v)}`:null,S=te(n),w;t[6]===y?w=t[7]:(w=(0,$.jsx)(`span`,{"aria-hidden":!0,className:`flex size-10 shrink-0 items-center justify-center rounded-xl border border-border/60 bg-muted`,children:y?(0,$.jsx)(`img`,{src:y,alt:``,className:`size-6 object-contain`}):(0,$.jsx)(l,{className:`size-5 text-muted-foreground`})}),t[6]=y,t[7]=w);let T=m??r.name,E;t[8]===T?E=t[9]:(E=(0,$.jsx)(`span`,{className:`break-words text-sm font-medium`,children:T}),t[8]=T,t[9]=E);let D;t[10]===g?D=t[11]:(D=g?(0,$.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:g}):null,t[10]=g,t[11]=D);let O;t[12]!==E||t[13]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2`,children:[E,D]}),t[12]=E,t[13]=D,t[14]=O):O=t[14];let k=h??`Local plugin`,A;t[15]===k?A=t[16]:(A=(0,$.jsx)(`p`,{className:`break-words text-xs text-muted-foreground`,children:k}),t[15]=k,t[16]=A);let N;t[17]!==O||t[18]!==A?(N=(0,$.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[O,A]}),t[17]=O,t[18]=A,t[19]=N):N=t[19];let P=`More for ${r.name}`,I;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,$.jsx)(F,{"aria-hidden":!0}),t[20]=I):I=t[20];let L;t[21]===P?L=t[22]:(L=(0,$.jsx)(W,{render:(0,$.jsx)(j,{render:(0,$.jsx)(M,{variant:`ghost`,size:`icon-sm`,"aria-label":P,children:I})})}),t[21]=P,t[22]=L);let R;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,$.jsx)(G,{children:`Plugin actions`}),t[23]=R):R=t[23];let z;t[24]===L?z=t[25]:(z=(0,$.jsxs)(K,{children:[L,R]}),t[24]=L,t[25]=z);let B;t[26]!==n||t[27]!==S||t[28]!==r.path?(B=S.capabilities.canOpenDefault?(0,$.jsx)(b,{onClick:()=>void S.activate(`open`,{environmentId:n,filePath:r.path,workspaceRoot:void 0}),children:`Open`}):null,t[26]=n,t[27]=S,t[28]=r.path,t[29]=B):B=t[29];let V;t[30]===s?V=t[31]:(V=(0,$.jsx)(b,{onClick:s,children:`Details`}),t[30]=s,t[31]=V);let H;t[32]!==B||t[33]!==V?(H=(0,$.jsxs)(C,{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,$.jsxs)(a,{children:[z,H]}),t[35]=z,t[36]=H,t[37]=U):U=t[37];let q=`Load ${r.name}`,J;t[38]!==o||t[39]!==i||t[40]!==c||t[41]!==q?(J=(0,$.jsx)(Oe,{"aria-label":q,checked:i,disabled:o,onCheckedChange:c}),t[38]=o,t[39]=i,t[40]=c,t[41]=q,t[42]=J):J=t[42];let Y;return t[43]!==N||t[44]!==U||t[45]!==J||t[46]!==w?(Y=(0,$.jsxs)(`li`,{className:`flex items-center gap-4 py-4`,children:[w,N,U,J]}),t[43]=N,t[44]=U,t[45]=J,t[46]=w,t[47]=Y):Y=t[47],Y}var Ke=[`Personal`,`Built-in`,`Project`,`Plugins`,`Other`];function qe(e){switch(ee(e)){case`personal`:return`Personal`;case`system`:return`Built-in`;case`repo`:case`project`:return`Project`;case`app`:return`Plugins`;default:return`Other`}}var Je=[[`codex`,`Codex`],[`claudeAgent`,`Claude`],[`cursor`,`Cursor`],[`grok`,`Grok`],[`antigravity`,`Antigravity`],[`opencode`,`OpenCode`],[`muse`,`Muse`],[`pi`,`Pi`]],Ye={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 Xe(e){return Je.find(([t])=>t===e)?.[1]??e}function Ze(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 Qe(e,t){if(!w(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 $e(e){return Je.map(([t,n])=>{let r=m(t,e.transport),i=k.make(t);return{driver:i,label:n,enabled:r.supported&&!e.disabledProviders.includes(i),...r.supported?{}:{unsupported:Ye[r.reason]}}})}var et={name:``,type:`stdio`,command:``,args:``,cwd:``,url:``,auth:`none`,values:[]};function tt(e){let t=e.transport;return t.type===`stdio`?{...et,name:e.name,type:`stdio`,command:t.command,args:t.args.join(`
|
|
2
|
-
`),cwd:t.cwd??``,values:Object.entries(t.env).map(([e,t])=>({key:e,value:t}))}:{...et,name:e.name,type:`http`,url:t.url,auth:t.auth,values:Object.entries(t.headers).map(([e,t])=>({key:e,value:t}))}}var nt=/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;function rt(e,t){let n=e.name.trim();if(!n)return`Enter a name.`;if(!nt.test(n)||n.length>64)return`Use letters, numbers, dashes, and underscores.`;if(n===`t3-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 it(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 at(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)=>ot(e.skill).localeCompare(ot(t.skill)))}var ot=e=>e.displayName??e.name.split(/[-_\s]+/).filter(e=>e.length>0).map(e=>e[0].toUpperCase()+e.slice(1)).join(` `);function st(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 ct(e){let t=/^---\r?\n[\s\S]*?\r?\n---\r?\n?/.exec(e);return(t===null?e:e.slice(t[0].length)).trimStart()}function lt(e){let t=(0,X.c)(14),{title:n,onBack:r,onUninstall:a,children:o}=e,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(c,{"aria-hidden":!0}),t[0]=s):s=t[0];let l;t[1]===r?l=t[2]:(l=(0,$.jsxs)(M,{size:`xs`,variant:`ghost`,className:`w-fit`,onClick:r,children:[s,`Back`]}),t[1]=r,t[2]=l);let u;t[3]===n?u=t[4]:(u=(0,$.jsx)(`h2`,{className:`min-w-0 truncate text-xl font-semibold text-foreground`,children:n}),t[3]=n,t[4]=u);let d;t[5]===a?d=t[6]:(d=a?(0,$.jsxs)(M,{size:`sm`,variant:`destructive-outline`,onClick:a,children:[(0,$.jsx)(i,{"aria-hidden":!0}),`Uninstall`]}):null,t[5]=a,t[6]=d);let f;t[7]!==u||t[8]!==d?(f=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[u,d]}),t[7]=u,t[8]=d,t[9]=f):f=t[9];let p;return t[10]!==o||t[11]!==l||t[12]!==f?(p=(0,$.jsxs)(`div`,{className:`grid gap-6`,children:[l,f,o]}),t[10]=o,t[11]=l,t[12]=f,t[13]=p):p=t[13],p}function ut(e){let t=(0,X.c)(6),{label:n,htmlFor:r,children:i}=e,a;t[0]!==r||t[1]!==n?(a=(0,$.jsx)(Ae,{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,$.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,X.c)(69),{server:n,takenNames:r,onSave:a}=e,o;t[0]===n?o=t[1]:(o=n===void 0?et:tt(n),t[0]=n,t[1]=o);let s=o,[c,l]=(0,Z.useState)(s),u;t[2]===s?u=t[3]:(u=JSON.stringify(s),t[2]=s,t[3]=u);let d=u,[f,m]=(0,Z.useState)(d);d!==f&&(m(d),l(s));let h;t[4]!==c||t[5]!==r?(h=rt(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=_!==d,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]!==a||t[15]!==g||t[16]!==n?(w=e=>{e.preventDefault(),v&&g===void 0&&a(it(c,n))},t[12]=v,t[13]=c,t[14]=a,t[15]=g,t[16]=n,t[17]=w):w=t[17];let T;t[18]===n?T=t[19]:(T=n===void 0?null:(0,$.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]=T);let E;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>b({name:e.target.value}),t[20]=E):E=t[20];let D;t[21]===c.name?D=t[22]:(D=(0,$.jsx)(ut,{label:`Name`,htmlFor:`mcp-server-name`,children:(0,$.jsx)(oe,{id:`mcp-server-name`,placeholder:`github`,value:c.name,onChange:E})}),t[21]=c.name,t[22]=D);let O;t[23]!==c.type||t[24]!==n?(O=n===void 0?(0,$.jsx)(ut,{label:`Type`,children:(0,$.jsxs)(ie,{"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,$.jsx)(ae,{value:`stdio`,children:`Command`}),(0,$.jsx)(ae,{value:`http`,children:`URL`})]})}):null,t[23]=c.type,t[24]=n,t[25]=O):O=t[25];let k;t[26]!==c.args||t[27]!==c.auth||t[28]!==c.command||t[29]!==c.cwd||t[30]!==c.type||t[31]!==c.url?(k=c.type===`stdio`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ut,{label:`Command`,htmlFor:`mcp-server-command`,children:(0,$.jsx)(oe,{id:`mcp-server-command`,placeholder:`npx`,value:c.command,onChange:e=>b({command:e.target.value})})}),(0,$.jsx)(ut,{label:`Arguments, one per line`,htmlFor:`mcp-server-args`,children:(0,$.jsx)(re,{id:`mcp-server-args`,placeholder:`-y
|
|
4
|
-
@modelcontextprotocol/server-postgres`,value:c.args,onChange:e=>b({args:e.target.value})})}),(0,$.jsx)(ut,{label:`Working directory (optional)`,htmlFor:`mcp-server-cwd`,children:(0,$.jsx)(oe,{id:`mcp-server-cwd`,placeholder:`The session's project folder`,value:c.cwd,onChange:e=>b({cwd:e.target.value})})})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ut,{label:`URL`,htmlFor:`mcp-server-url`,children:(0,$.jsx)(oe,{id:`mcp-server-url`,placeholder:`https://mcp.example.com/mcp`,value:c.url,onChange:e=>b({url:e.target.value})})}),(0,$.jsx)(ut,{label:`Authentication`,children:(0,$.jsxs)(V,{value:c.auth,onValueChange:e=>{(e===`none`||e===`oauth`)&&b({auth:e})},children:[(0,$.jsx)(B,{"aria-label":`Authentication`,children:(0,$.jsx)(R,{children:ft})}),(0,$.jsxs)(z,{alignItemWithTrigger:!1,children:[(0,$.jsx)(L,{value:`none`,children:`None or headers`}),(0,$.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]=k):k=t[32];let A;t[33]!==c.type||t[34]!==c.values||t[35]!==C||t[36]!==x?(A=c.values.map((e,t)=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(oe,{"aria-label":`${x} name`,placeholder:c.type===`stdio`?`API_TOKEN`:`Authorization`,value:e.key,onChange:e=>C(t,{key:e.target.value})}),(0,$.jsx)(Fe,{"aria-label":`${x} value`,placeholder:`Value`,value:e.value,onChange:e=>C(t,{value:e.target.value})}),(0,$.jsx)(M,{size:`icon-sm`,variant:`ghost`,"aria-label":`Remove ${e.key||`row`}`,onClick:()=>b({values:c.values.filter((e,n)=>n!==t)}),children:(0,$.jsx)(i,{"aria-hidden":!0})})]},t)),t[33]=c.type,t[34]=c.values,t[35]=C,t[36]=x,t[37]=A):A=t[37];let j;t[38]===c.values?j=t[39]:(j=()=>b({values:[...c.values,{key:``,value:``}]}),t[38]=c.values,t[39]=j);let N;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(p,{"aria-hidden":!0}),t[40]=N):N=t[40];let P=c.type===`stdio`?`variable`:`header`,F;t[41]!==j||t[42]!==P?(F=(0,$.jsxs)(M,{variant:`soft`,onClick:j,children:[N,`Add `,P]}),t[41]=j,t[42]=P,t[43]=F):F=t[43];let I;t[44]!==A||t[45]!==F?(I=(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[A,F]}),t[44]=A,t[45]=F,t[46]=I):I=t[46];let H;t[47]!==I||t[48]!==x?(H=(0,$.jsx)(ut,{label:x,children:I}),t[47]=I,t[48]=x,t[49]=H):H=t[49];let U;t[50]!==D||t[51]!==O||t[52]!==k||t[53]!==H?(U=(0,$.jsxs)(xe,{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]!==v||t[56]!==g?(W=v&&g!==void 0?(0,$.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,$.jsx)(M,{type:`submit`,disabled:G,children:K}),t[58]=G,t[59]=K,t[60]=q):q=t[60];let J;t[61]!==W||t[62]!==q?(J=(0,$.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[W,q]}),t[61]=W,t[62]=q,t[63]=J):J=t[63];let Y;return t[64]!==U||t[65]!==J||t[66]!==w||t[67]!==T?(Y=(0,$.jsxs)(`form`,{className:`grid gap-3`,onSubmit:w,children:[T,U,J]}),t[64]=U,t[65]=J,t[66]=w,t[67]=T,t[68]=Y):Y=t[68],Y}function ft(e){return e===`oauth`?`OAuth (sign in after saving)`:`None or headers`}function pt(e){let t=(0,X.c)(55),{environmentId:n,plugin:r,environmentLabel:i,onSave:a}=e,o=r?.path??``,s=r===void 0?null:`.claude-plugin/plugin.json`,c;t[0]!==n||t[1]!==o||t[2]!==s?(c=ve(n,o,s),t[0]=n,t[1]=o,t[2]=s,t[3]=c):c=t[3];let l=d(g(x(c))),u=Ue(r!==void 0&&l!==null&&!l.truncated?l.contents:null),f;t[4]===r?.options?f=t[5]:(f=r?.options??{},t[4]=r?.options,t[5]=f);let p=f,m=[...u,...Object.keys(p).filter(e=>!u.some(t=>t.key===e)).map(ht)],[h,_]=(0,Z.useState)(r?.name??``),[v,y]=(0,Z.useState)(r?.path??``),[b,S]=(0,Z.useState)(p),C;t[6]!==r?.name||t[7]!==r?.path||t[8]!==p?(C=JSON.stringify([r?.name??``,r?.path??``,p]),t[6]=r?.name,t[7]=r?.path,t[8]=p,t[9]=C):C=t[9];let w=C,[T,E]=(0,Z.useState)(w);w!==T&&(E(w),_(r?.name??``),y(r?.path??``),S(p));let D,O;t[10]!==h||t[11]!==b||t[12]!==v||t[13]!==r?.name||t[14]!==r?.path||t[15]!==p?(D=Object.fromEntries(Object.entries(b).filter(mt)),O=h!==(r?.name??``)||v!==(r?.path??``)||JSON.stringify(D)!==JSON.stringify(p),t[10]=h,t[11]=b,t[12]=v,t[13]=r?.name,t[14]=r?.path,t[15]=p,t[16]=D,t[17]=O):(D=t[16],O=t[17]);let k=O,A;t[18]!==h||t[19]!==v?(A=h.trim().length>0&&v.trim().startsWith(`/`),t[18]=h,t[19]=v,t[20]=A):A=t[20];let j=A,N;t[21]!==k||t[22]!==h||t[23]!==D||t[24]!==a||t[25]!==v||t[26]!==r?.enabled||t[27]!==j?(N=e=>{e.preventDefault(),k&&j&&a({name:h.trim(),path:v.trim(),enabled:r?.enabled??!0,options:D})},t[21]=k,t[22]=h,t[23]=D,t[24]=a,t[25]=v,t[26]=r?.enabled,t[27]=j,t[28]=N):N=t[28];let P;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(P=e=>_(e.target.value),t[29]=P):P=t[29];let F;t[30]===h?F=t[31]:(F=(0,$.jsx)(ut,{label:`Name`,htmlFor:`plugin-name`,children:(0,$.jsx)(oe,{id:`plugin-name`,value:h,onChange:P})}),t[30]=h,t[31]=F);let I=`Folder on ${i}`,L;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>y(e.target.value),t[32]=L):L=t[32];let R;t[33]===v?R=t[34]:(R=(0,$.jsx)(oe,{id:`plugin-path`,placeholder:`/Users/me/plugins/my-plugin`,value:v,onChange:L}),t[33]=v,t[34]=R);let z;t[35]!==I||t[36]!==R?(z=(0,$.jsx)(ut,{label:I,htmlFor:`plugin-path`,children:R}),t[35]=I,t[36]=R,t[37]=z):z=t[37];let B=m.map(e=>(0,$.jsx)(ut,{label:e.required?e.title:`${e.title} (optional)`,htmlFor:`plugin-option-${e.key}`,children:(0,$.jsx)(Fe,{id:`plugin-option-${e.key}`,placeholder:`description`in e?e.description:void 0,value:b[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,$.jsxs)(xe,{children:[F,z,B]}),t[38]=F,t[39]=z,t[40]=B,t[41]=V):V=t[41];let H;t[42]!==k||t[43]!==j?(H=k&&!j?(0,$.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive-foreground`,children:`Enter a name and the plugin folder's full path.`}):null,t[42]=k,t[43]=j,t[44]=H):H=t[44];let U=!k||!j,W=r===void 0?`Add plugin`:`Save`,G;t[45]!==U||t[46]!==W?(G=(0,$.jsx)(M,{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,$.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,$.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,X.c)(69),{entry:n,environmentId:r,onClose:i}=e,{skill:o,providers:s}=n,c,l,u;t[0]!==r||t[1]!==o.path?(c=gt(o.path),l=x,u=ve(r,c,o.path),t[0]=r,t[1]=o.path,t[2]=c,t[3]=l,t[4]=u):(c=t[2],l=t[3],u=t[4]);let f=l(u),p;t[5]===f?p=t[6]:(p=d(g(f)),t[5]=f,t[6]=p);let m=p,h=te(r),{copyToClipboard:_}=U(),v;t[7]!==r||t[8]!==o.path?(v={environmentId:r,filePath:o.path,workspaceRoot:void 0},t[7]=r,t[8]=o.path,t[9]=v):v=t[9];let y=v,S=o.shortDescription??o.description,w;t[10]===o.scope?w=t[11]:(w=st(o.scope),t[10]=o.scope,t[11]=w);let T=w,E;t[12]===i?E=t[13]:(E=e=>!e&&i(),t[12]=i,t[13]=E);let D;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.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,$.jsx)(A,{className:`size-5`})}),t[14]=D):D=t[14];let O;t[15]===o?O=t[16]:(O=ot(o),t[15]=o,t[16]=O);let k=`More for ${O}`,N;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(F,{"aria-hidden":!0}),t[17]=N):N=t[17];let P;t[18]===k?P=t[19]:(P=(0,$.jsx)(j,{render:(0,$.jsx)(M,{size:`icon-sm`,variant:`ghost`,"aria-label":k,children:N})}),t[18]=k,t[19]=P);let L;t[20]!==h||t[21]!==y?(L=h.capabilities.canOpenDefault?(0,$.jsx)(b,{onClick:()=>void h.activate(`open`,y),children:`Open`}):null,t[20]=h,t[21]=y,t[22]=L):L=t[22];let R;t[23]!==h||t[24]!==y?(R=h.capabilities.revealLabel?(0,$.jsx)(b,{onClick:()=>void h.activate(`reveal-in-folder`,y),children:h.capabilities.revealLabel}):null,t[23]=h,t[24]=y,t[25]=R):R=t[25];let z=m===null,B;t[26]!==_||t[27]!==m?(B=()=>m&&_(m.contents,void 0),t[26]=_,t[27]=m,t[28]=B):B=t[28];let V;t[29]!==z||t[30]!==B?(V=(0,$.jsx)(b,{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,$.jsxs)(C,{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]!==P||t[37]!==H?(W=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3 pe-8`,children:[D,(0,$.jsxs)(a,{children:[P,H]})]}),t[36]=P,t[37]=H,t[38]=W):W=t[38];let G;t[39]===o?G=t[40]:(G=ot(o),t[39]=o,t[40]=G);let K;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,$.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,$.jsxs)(se,{children:[G,` `,K]}),t[42]=G,t[43]=q);let J;t[44]===S?J=t[45]:(J=S?(0,$.jsx)(ce,{children:S}):null,t[44]=S,t[45]=J);let Y;t[46]!==q||t[47]!==J?(Y=(0,$.jsxs)(`div`,{className:`grid gap-1.5`,children:[q,J]}),t[46]=q,t[47]=J,t[48]=Y):Y=t[48];let ee;t[49]!==c||t[50]!==r||t[51]!==m||t[52]!==f?(ee=(0,$.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:m===null?f._tag===`Failure`?(0,$.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,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(ne,{className:`h-4 w-3/4`}),(0,$.jsx)(ne,{className:`h-4 w-full`}),(0,$.jsx)(ne,{className:`h-4 w-2/3`})]}):(0,$.jsx)(I,{text:ct(m.contents),cwd:c,environmentId:r})}),t[49]=c,t[50]=r,t[51]=m,t[52]=f,t[53]=ee):ee=t[53];let re;t[54]===s?re=t[55]:(re=s.join(`, `),t[54]=s,t[55]=re);let ie=`Loaded by ${re}`,ae;t[56]!==T||t[57]!==ie?(ae=[T,ie].filter(Boolean),t[56]=T,t[57]=ie,t[58]=ae):ae=t[58];let oe=ae.join(` · `),de;t[59]===oe?de=t[60]:(de=(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:oe}),t[59]=oe,t[60]=de);let fe;t[61]!==W||t[62]!==Y||t[63]!==ee||t[64]!==de?(fe=(0,$.jsx)(le,{className:`max-w-2xl`,children:(0,$.jsxs)(`div`,{className:`grid min-h-0 gap-4 p-6`,children:[W,Y,ee,de]})}),t[61]=W,t[62]=Y,t[63]=ee,t[64]=de,t[65]=fe):fe=t[65];let pe;return t[66]!==fe||t[67]!==E?(pe=(0,$.jsx)(ue,{open:!0,onOpenChange:E,children:fe}),t[66]=fe,t[67]=E,t[68]=pe):pe=t[68],pe}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=E(y);function St(e){let t=r(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,X.c)(13),{status:n,className:r}=e,i=bt[n.tone],a;t[0]!==r||t[1]!==i?(a=N(`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=N(`size-1.5 shrink-0 rounded-full`,o),t[3]=o,t[4]=s);let c;t[5]===s?c=t[6]:(c=(0,$.jsx)(`span`,{"aria-hidden":!0,className:s}),t[5]=s,t[6]=c);let l;t[7]===n.label?l=t[8]:(l=(0,$.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,$.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,X.c)(6),{environment:t,scope:n}=ye(),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,$.jsx)(Ce,{width:`wide`,children:t===null||!r?(0,$.jsx)(me,{children:(0,$.jsxs)(de,{children:[(0,$.jsx)(fe,{children:`Connect to manage plugins and MCP servers`}),(0,$.jsx)(pe,{children:`They live on each environment. Choose a connected one above.`})]})}):!a||i===null?(0,$.jsx)(me,{children:(0,$.jsxs)(de,{children:[(0,$.jsxs)(fe,{children:[`Update `,t.label,` to manage plugins and MCP servers`]}),(0,$.jsx)(pe,{children:`This environment runs a version without them.`})]})}):(0,$.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,X.c)(9),{text:n}=e,r=(0,Z.useRef)(null),[i,a]=(0,Z.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,$.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,$.jsx)(W,{render:s,children:n}),l=(0,$.jsx)(G,{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,$.jsxs)(K,{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:r,projectLabel:i}){let c=H({select:e=>e.hash}),[u,d]=(0,Z.useState)(()=>c.replace(/^#/,``)===`mcp-servers`?`mcps`:c.replace(/^#/,``)===`skills`?`skills`:`plugins`),[p,m]=(0,Z.useState)(``),[g,_]=(0,Z.useState)(`All categories`),y=x(J.configValueAtom(e))?.providers,w=(0,Z.useMemo)(()=>at(y??[]),[y]),[E,O]=(0,Z.useState)(null),k=be(e=>e.mcpServers),N=be(e=>e.plugins),I=be(e=>e.projectSettingsOverrides),U=be(e=>e.skillOverrides),ee=te(e),ne=x(J.updateSettings.permissionAtom(e)),[re,oe]=(0,Z.useState)(null),se=x(J.mcpRegistryTest.permissionAtom(e)),ce=q(e),le=Y(J.updateSettings,{label:`update MCP registry`,reportFailure:!0}),ue=Y(J.mcpRegistryState,{reportFailure:!1}),de=Y(J.mcpRegistryTest,{label:`check MCP server`,reportFailure:!0}),fe=Y(J.mcpRegistryOAuthStart,{label:`start MCP sign-in`,reportFailure:!0}),pe=Y(J.mcpRegistryOAuthSignOut,{label:`sign out of MCP server`,reportFailure:!0}),me=Y(J.mcpRegistryDiscover,{reportFailure:!1}),ve=Y(J.mcpRegistryImport,{label:`import MCP servers`,reportFailure:!0}),[ye,xe]=(0,Z.useState)({}),[Se,Ce]=(0,Z.useState)(new Set),[Ae,Fe]=(0,Z.useState)([]),[X,Ie]=(0,Z.useState)({kind:`list`}),Q=X.kind!==`list`&&X.id!==null&&(X.kind===`server`?k[X.id]===void 0:N[X.id]===void 0)?{kind:`list`}:X,[ze,Be]=(0,Z.useState)(c);if(c!==ze){Be(c);let e=c.replace(/^#/,``);(e===`mcp-servers`||e===`plugins`||e===`skills`)&&(d(e===`mcp-servers`?`mcps`:e),Ie({kind:`list`}))}let[Ve,He]=(0,Z.useState)(null),Ue=(0,Z.useRef)(new Map),[We,Je]=(0,Z.useState)(null),[Ye,Xe]=(0,Z.useState)({}),Ze=(0,Z.useMemo)(()=>Object.entries(k).map(([e,t])=>[v.make(e),t]).toSorted(([,e],[,t])=>e.name.localeCompare(t.name)),[k]),Qe=(0,Z.useMemo)(()=>Object.entries(N).map(([e,t])=>[S.make(e),t]),[N]),$e=(0,Z.useCallback)(async()=>{let t=await ue({environmentId:e,input:{}});t._tag===`Success`&&xe(t.value.servers)},[e,ue]),et=(0,Z.useCallback)(async()=>{if(!se)return;let t=await me({environmentId:e,input:r===void 0?{}:{projectId:r}});t._tag===`Success`&&Fe(t.value.servers)},[se,me,e,r]);(0,Z.useEffect)(()=>{$e(),et()},[$e,et]);let tt=e=>{d(`mcps`),Ie({kind:`server`,id:e})},nt=e=>{d(`plugins`),Ie({kind:`plugin`,id:e})},rt=t=>le({environmentId:e,input:{patch:t}}),it=async t=>{Ce(e=>new Set(e).add(t));let n=await de({environmentId:e,input:{serverId:t}});if(Ce(e=>{let n=new Set(e);return n.delete(t),n}),n._tag===`Success`)return xe(e=>({...e,[t]:n.value})),n.value},st=(0,Z.useEffectEvent)(async e=>{(await it(e))?.health.status===`connected`&&Je(null)});(0,Z.useEffect)(()=>{if(We===null)return;let e=()=>void st(We);return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[We]);let ct=async(e,t,n)=>{(await rt({mcpServers:{[e]:t}}))._tag===`Success`&&(n&&Ie({kind:`list`}),et(),t.enabled&&await it(e))},ut=async(t,n=!1)=>{let r=Ue.current.get(t);if(!n&&We===t&&r){window.open(r,`_blank`,`noopener,noreferrer`);return}let i=ce??window.location.origin;Xe(e=>{let n={...e};return delete n[t],n});let a=await fe({environmentId:e,input:{serverId:t,origin:new URL(i,window.location.href).origin,...n?{reauthenticate:n}:{}}});if(a._tag!==`Success`){a._tag===`Failure`&&Xe(e=>({...e,[t]:St(a.cause)}));return}if(a.value.authorizationUrl===null){await it(t);return}Ue.current.set(t,a.value.authorizationUrl),Je(t),window.open(a.value.authorizationUrl,`_blank`,`noopener,noreferrer`)},ft=async t=>{let n=await pe({environmentId:e,input:{serverId:t}});n._tag===`Success`&&xe(e=>({...e,[t]:n.value}))},mt=(e,t,n)=>{if(r===void 0)return;let i=I[r]??{},a={...i[e]};n===void 0?delete a[t]:a[t]={enabled:n},rt({projectSettingsOverrides:{[r]:{...i,[e]:a}}})},ht=async()=>{let t=Ve;if(He(null),t!==null){if(t.kind===`server`){let n=k[t.id];n?.transport.type===`http`&&n.transport.auth===`oauth`&&await pe({environmentId:e,input:{serverId:t.id}}),await rt({mcpServers:{[t.id]:null}})}else await rt({plugins:{[t.id]:null}});Ie({kind:`list`})}},gt=Ae.filter(e=>!e.alreadyAdded),yt=new Set(Ze.filter(([e])=>Q.kind!==`server`||e!==Q.id).map(([,e])=>e.name)),bt=p.trim().toLowerCase(),xt=Ze.filter(([,e])=>Dt(bt,e.name,Re(e))),Tt=Qe.filter(([,e])=>Dt(bt,e.name,e.path)),kt=gt.filter(e=>Dt(bt,e.name,e.summary)),At=(e,t)=>n({mcpServers:k,plugins:N,projectSettingsOverrides:I},e,r??null,t),Mt=(e,t,n)=>{if(r!==void 0){mt(e,t,n);return}rt(e===`mcpServers`?{mcpServers:{[t]:{...k[t],enabled:n}}}:{plugins:{[t]:{...N[t],enabled:n}}})},Nt=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,$.jsxs)(`div`,{className:`grid gap-1`,children:[(0,$.jsx)(`h1`,{className:`text-2xl font-semibold text-foreground`,children:`Plugins`}),(0,$.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Manage plugins, skills, and MCP servers given to agents on `,t,`.`]})]}),se?(0,$.jsxs)(a,{children:[(0,$.jsx)(j,{render:(0,$.jsxs)(M,{children:[`Add`,(0,$.jsx)(T,{"aria-hidden":!0})]})}),(0,$.jsxs)(C,{align:`end`,children:[(0,$.jsxs)(b,{onClick:()=>tt(null),children:[(0,$.jsx)(f,{"aria-hidden":!0}),`Add MCP server`]}),(0,$.jsxs)(b,{onClick:()=>nt(null),children:[(0,$.jsx)(l,{"aria-hidden":!0}),`Add plugin`]})]})]}):null]}),Pt=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,$.jsxs)(ie,{"aria-label":`Show`,variant:`default`,value:[u],onValueChange:e=>{let t=e[0];(t===`plugins`||t===`mcps`||t===`skills`)&&(d(t),Ie({kind:`list`}))},children:[(0,$.jsxs)(ae,{value:`plugins`,...Ne(`plugins`),children:[`Plugins `,(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:Qe.length})]}),(0,$.jsxs)(ae,{value:`mcps`,...Ne(`mcp-servers`),children:[`MCPs `,(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:Ze.length})]}),(0,$.jsxs)(ae,{value:`skills`,...Ne(`skills`),children:[`Skills `,(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:w.length})]})]}),(0,$.jsxs)(`div`,{className:`flex w-full gap-2 sm:w-auto`,children:[u===`skills`?(0,$.jsx)(`div`,{className:`w-fit shrink-0`,children:(0,$.jsxs)(V,{value:g,onValueChange:e=>e&&_(e),children:[(0,$.jsx)(B,{"aria-label":`Skill category`,children:(0,$.jsx)(R,{})}),(0,$.jsxs)(z,{children:[(0,$.jsx)(L,{value:`All categories`,children:`All categories`}),Ke.filter(e=>e===`Personal`||e===`Built-in`||w.some(({skill:t})=>qe(t)===e)).map(e=>(0,$.jsx)(L,{value:e,children:e},e))]})]})}):null,(0,$.jsxs)(_e,{className:`min-w-0 flex-1 sm:w-56`,children:[(0,$.jsx)(he,{children:(0,$.jsx)(s,{"aria-hidden":!0})}),(0,$.jsx)(ge,{"aria-label":Et[u],placeholder:Et[u],value:p,onChange:e=>m(e.currentTarget.value)})]})]})]}),Ft=(e,t)=>(0,$.jsxs)(K,{children:[(0,$.jsx)(W,{render:(0,$.jsx)(M,{size:`icon-sm`,variant:`ghost`,"aria-label":e,onClick:t,children:(0,$.jsx)(h,{"aria-hidden":!0})})}),(0,$.jsx)(G,{children:e})]}),It=Tt.length===0?(0,$.jsx)(`p`,{className:`py-6 text-sm text-muted-foreground`,children:Qe.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,$.jsx)(`ul`,{className:`grid gap-1`,children:Tt.map(([t,n])=>(0,$.jsx)(Ge,{environmentId:e,plugin:n,enabled:At(`plugins`,t),disabled:!ne,onDetails:()=>nt(t),onToggle:e=>Mt(`plugins`,t,e)},t))}),Lt=w.filter(({skill:e})=>(g===`All categories`||qe(e)===g)&&Dt(bt,ot(e),e.name,e.shortDescription??``,e.description??``)),Rt=Lt.length===0?(0,$.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,$.jsxs)(`div`,{className:`grid gap-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Switches apply to new Claude and OpenCode sessions.`}),(0,$.jsx)(`ul`,{className:`grid gap-1`,children:Lt.map(t=>{let n=qe(t.skill),i=(y??[]).filter(e=>P(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,$.jsxs)(`li`,{className:`flex items-center gap-3 py-3`,children:[(0,$.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,$.jsx)(A,{className:`size-4`})}),(0,$.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-1`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:()=>O(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:ot(t.skill)}),(0,$.jsx)(Ot,{text:t.skill.shortDescription??t.skill.description??t.skill.path}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:[n,o].filter(Boolean).join(` · `)})]}),(0,$.jsxs)(a,{children:[(0,$.jsxs)(K,{children:[(0,$.jsx)(W,{render:(0,$.jsx)(j,{render:(0,$.jsx)(M,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${ot(t.skill)}`,children:(0,$.jsx)(F,{"aria-hidden":!0})})})}),(0,$.jsx)(G,{children:`Skill actions`})]}),(0,$.jsxs)(C,{align:`end`,children:[ee.capabilities.canOpenDefault?(0,$.jsx)(b,{onClick:()=>void ee.activate(`open`,{environmentId:e,filePath:t.skill.path,workspaceRoot:void 0}),children:`Open`}):null,(0,$.jsx)(b,{onClick:()=>O(t),children:`Details`}),r!==void 0&&I[r]?.skillOverrides?.[t.skill.name]!==void 0?(0,$.jsx)(b,{onClick:()=>{let e=I[r]??{},n={...e.skillOverrides};delete n[t.skill.name],rt({projectSettingsOverrides:{[r]:{...e,skillOverrides:n}}})},children:`Use environment setting`}):null]})]}),(0,$.jsx)(Oe,{"aria-label":`Enable ${ot(t.skill)} for ${o}`,checked:(r===void 0?void 0:I[r]?.skillOverrides?.[t.skill.name])??U[t.skill.name]??t.skill.enabled,disabled:!ne||re!==null||i.length===0,onCheckedChange:e=>{oe(t.skill.name),rt(r===void 0?{skillOverrides:{[t.skill.name]:e}}:{projectSettingsOverrides:{[r]:{...I[r],skillOverrides:{...I[r]?.skillOverrides,[t.skill.name]:e}}}}).finally(()=>oe(null))}})]},t.skill.path)})})]}),Bt=(0,$.jsxs)(`div`,{className:`grid gap-6`,children:[Ze.length>0?(0,$.jsx)(we,{title:`Servers`,children:xt.length===0?(0,$.jsx)(`p`,{className:`px-3 text-sm text-muted-foreground sm:px-4`,children:`No MCP servers match your search.`}):(0,$.jsx)($.Fragment,{children:xt.map(([e,t])=>{let n=At(`mcpServers`,e),r=Le({...t,enabled:n},ye[e],Se.has(e)),i=Ye[e],o=Ct(t,r,ye[e]);return(0,$.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,$.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),r.tone===`error`||o?(0,$.jsx)(wt,{status:r}):null,i?(0,$.jsx)(`span`,{className:`text-xs text-destructive-foreground`,children:i}):null]}),r.needsSignIn&&se?(0,$.jsx)(M,{size:`xs`,variant:`outline`,onClick:()=>void ut(e),children:`Authenticate`}):null,o&&!r.needsSignIn&&se?(0,$.jsxs)(a,{children:[(0,$.jsxs)(K,{children:[(0,$.jsx)(W,{render:(0,$.jsx)(j,{render:(0,$.jsx)(M,{variant:`ghost`,size:`icon-sm`,"aria-label":`More for ${t.name}`,children:(0,$.jsx)(F,{"aria-hidden":!0})})})}),(0,$.jsx)(G,{children:`Sign-in actions`})]}),(0,$.jsxs)(C,{align:`end`,children:[(0,$.jsx)(b,{onClick:()=>void ut(e,!0),children:`Re-authenticate`}),ye[e]?.auth===`signed-in`?(0,$.jsx)(b,{onClick:()=>void ft(e),children:`Sign out`}):null]})]}):null,Ft(`Settings for ${t.name}`,()=>tt(e)),(0,$.jsx)(Oe,{"aria-label":`Give ${t.name} to agents`,checked:n,disabled:!se,onCheckedChange:t=>Mt(`mcpServers`,e,t)})]},e)})})}):null,se&&kt.length>0?(0,$.jsx)(we,{title:`Found in provider configs`,headerAction:(0,$.jsx)(M,{size:`icon-xs`,variant:`ghost`,"aria-label":`Look again`,onClick:()=>void et(),children:(0,$.jsx)(o,{"aria-hidden":!0})}),children:(0,$.jsx)($.Fragment,{children:kt.map(t=>(0,$.jsxs)(`div`,{className:`flex min-h-14 items-center gap-3 px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,$.jsx)(`span`,{className:`break-words text-sm font-medium text-foreground`,children:t.name}),kt.filter(e=>e.name===t.name).length>1?(0,$.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:(t.providers??[t.provider]).map(e=>vt[e]).join(`, `)}):null]}),(0,$.jsx)(M,{size:`xs`,variant:`outline`,onClick:async()=>{(await ve({environmentId:e,input:{...r===void 0?{}:{projectId:r},servers:[{provider:t.provider,path:t.path,name:t.name}]}}))._tag===`Success`&&(et(),$e())},children:`Import`})]},`${t.provider}:${t.path}:${t.name}`))})}):null]}),Vt=Q.kind===`server`?(0,$.jsxs)(lt,{title:Q.id===null?`Add MCP server`:`Update ${k[Q.id]?.name??`server`} MCP`,onBack:()=>Ie({kind:`list`}),onUninstall:Q.id!==null&&se?()=>He({kind:`server`,id:Q.id}):void 0,children:[(0,$.jsx)(dt,{server:Q.id===null?void 0:k[Q.id],takenNames:yt,onSave:e=>void ct(Q.id??v.make(D()),e,Q.id===null)},Q.id??`new`),Q.id!==null&&k[Q.id]!==void 0?(0,$.jsx)(jt,{environmentId:e,id:Q.id,server:k[Q.id],runtime:ye[Q.id],checking:Se.has(Q.id),canManage:se,projectLabel:i,projectOverride:r===void 0?void 0:I[r]?.mcpServers?.[Q.id],awaitingSignIn:We===Q.id,onProviderToggle:(e,t)=>{let n=k[Q.id],r=t?n.disabledProviders.filter(t=>t!==e):[...n.disabledProviders,e];rt({mcpServers:{[Q.id]:{...n,disabledProviders:r}}})},onProjectOverride:r===void 0?void 0:e=>mt(`mcpServers`,Q.id,e),signInError:Ye[Q.id],onTest:()=>void it(Q.id),onSignIn:()=>void ut(Q.id),onReauthenticate:()=>void ut(Q.id,!0),onSignOut:()=>void ft(Q.id)},`${e}:${Q.id}`):null]}):null,Ht=Q.kind===`plugin`?(0,$.jsxs)(lt,{title:Q.id===null?`Add plugin`:`Update ${N[Q.id]?.name??`plugin`}`,onBack:()=>Ie({kind:`list`}),onUninstall:Q.id!==null&&se?()=>He({kind:`plugin`,id:Q.id}):void 0,children:[(0,$.jsx)(pt,{environmentId:e,plugin:Q.id===null?void 0:N[Q.id],environmentLabel:t,onSave:async e=>{let t=Q.id??S.make(D());(await rt({plugins:{[t]:e}}))._tag===`Success`&&Q.id===null&&Ie({kind:`list`})}},Q.id??`new`),Q.id!==null&&N[Q.id]!==void 0?(0,$.jsx)(zt,{plugin:N[Q.id],projectLabel:i,projectOverride:r===void 0?void 0:I[r]?.plugins?.[Q.id],onProjectOverride:r===void 0?void 0:e=>mt(`plugins`,Q.id,e)}):null]}):null;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`grid gap-6`,children:[Nt,Pt,Vt??Ht??(u===`plugins`?It:u===`mcps`?Bt:Rt)]}),E===null?null:(0,$.jsx)(_t,{entry:E,environmentId:e,onClose:()=>O(null)}),(0,$.jsx)(Te,{open:Ve!==null,onOpenChange:e=>!e&&He(null),children:(0,$.jsxs)(Ee,{children:[(0,$.jsxs)(Me,{children:[(0,$.jsxs)(De,{children:[`Remove`,` `,Ve?.kind===`server`?k[Ve.id]?.name??`server`:Ve?.kind===`plugin`?N[Ve.id]?.name??`plugin`:``,`?`]}),(0,$.jsxs)(ke,{children:[`New sessions on `,t,` stop getting it. Its stored values and sign-in are deleted. Provider config files are not changed.`]})]}),(0,$.jsxs)(je,{children:[(0,$.jsx)(Pe,{render:(0,$.jsx)(M,{variant:`outline`,children:`Cancel`})}),(0,$.jsx)(M,{variant:`destructive`,onClick:()=>void ht(),children:`Remove`})]})]})})]})}function At(e){let t=(0,X.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,$.jsx)(M,{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,$.jsx)(Oe,{"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,$.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,$.jsx)(Se,{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,X.c)(108),{environmentId:n,id:r,server:i,runtime:a,checking:o,canManage:s,projectLabel:c,projectOverride:l,awaitingSignIn:u,signInError:d,onProviderToggle:f,onProjectOverride:p,onTest:m,onSignIn:h,onReauthenticate:g,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=Le(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 T=w,E;t[6]!==C||t[7]!==T||t[8]!==x||t[9]!==y?(E=y?{...C,tone:`muted`,label:x===null?`Checking providers…`:T>0?`Available to ${T} ${T===1?`provider`:`providers`}`:`No providers connected`}:C,t[6]=C,t[7]=T,t[8]=x,t[9]=y,t[10]=E):E=t[10];let D=E,O,k,A,j,N,P,F;if(t[11]!==u||t[12]!==s||t[13]!==o||t[14]!==x||t[15]!==r||t[16]!==f||t[17]!==g||t[18]!==h||t[19]!==v||t[20]!==m||t[21]!==a?.auth||t[22]!==i||t[23]!==d||t[24]!==b||t[25]!==D||t[26]!==y){let e;t[34]===x?e=t[35]:(e=e=>({...e,badge:x===null||e.unsupported!==void 0?void 0:Qe(e.driver,x)}),t[34]=x,t[35]=e);let n=$e(i).map(e),c=i.transport.type===`http`&&a?.auth===`signed-in`,l=d??D.detail;N=`grid gap-6`,P=r;let p;t[36]===D?p=t[37]:(p=(0,$.jsx)(wt,{status:D,className:`flex-1 text-sm`}),t[36]=D,t[37]=p);let S;t[38]!==u||t[39]!==s||t[40]!==h||t[41]!==D.needsSignIn||t[42]!==y?(S=D.needsSignIn&&s&&!y?(0,$.jsx)(M,{size:`xs`,onClick:h,children:u?`Open sign-in again`:`Authenticate`}):null,t[38]=u,t[39]=s,t[40]=h,t[41]=D.needsSignIn,t[42]=y,t[43]=S):S=t[43];let C;t[44]!==s||t[45]!==g||t[46]!==c||t[47]!==D.needsSignIn?(C=c&&!D.needsSignIn&&s?(0,$.jsx)(M,{size:`xs`,variant:`outline`,onClick:g,children:`Re-authenticate`}):null,t[44]=s,t[45]=g,t[46]=c,t[47]=D.needsSignIn,t[48]=C):C=t[48];let w;t[49]!==s||t[50]!==v||t[51]!==c?(w=c&&s?(0,$.jsx)(M,{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 T;t[53]!==s||t[54]!==o||t[55]!==m||t[56]!==i.enabled?(T=s&&i.enabled?(0,$.jsx)(M,{size:`xs`,variant:`outline`,disabled:o,onClick:m,children:`Test connection`}):null,t[53]=s,t[54]=o,t[55]=m,t[56]=i.enabled,t[57]=T):T=t[57];let E;t[58]!==p||t[59]!==S||t[60]!==C||t[61]!==w||t[62]!==T?(E=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[p,S,C,w,T]}),t[58]=p,t[59]=S,t[60]=C,t[61]=w,t[62]=T,t[63]=E):E=t[63];let I;t[64]!==u||t[65]!==D.needsSignIn||t[66]!==y?(I=D.needsSignIn&&!y?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:u?`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]=u,t[65]=D.needsSignIn,t[66]=y,t[67]=I):I=t[67];let L;t[68]!==l||t[69]!==y?(L=l&&!y?(0,$.jsx)(`p`,{className:`rounded-md bg-destructive/8 px-2.5 py-1.5 text-xs text-destructive-foreground`,children:l}):null,t[68]=l,t[69]=y,t[70]=L):L=t[70];let R;t[71]!==u||t[72]!==l||t[73]!==h||t[74]!==y?(R=y?(0,$.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer`,children:l?`Shared sign-in unavailable`:`Shared sign-in`}),(0,$.jsxs)(`div`,{className:`grid gap-2 pt-2`,children:[(0,$.jsx)(`p`,{children:l??`Sign in through P4 Code to share access with every enabled provider.`}),(0,$.jsx)(`div`,{children:(0,$.jsx)(M,{size:`xs`,variant:`outline`,onClick:h,children:u?`Open browser`:l?`Retry shared sign-in`:`Sign in through P4 Code`})})]})]}):null,t[71]=u,t[72]=l,t[73]=h,t[74]=y,t[75]=R):R=t[75];let z;t[76]===i.source?z=t[77]:(z=i.source?(0,$.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,$.jsx)(`summary`,{className:`cursor-pointer`,children:`Import source`}),(0,$.jsx)(`p`,{className:`break-all pt-2`,children:i.source.path})]}):null,t[76]=i.source,t[77]=z);let B=y?(0,$.jsx)(Lt,{serverName:i.name,signIns:b,blocked:n.filter(Mt).length}):null;t[78]!==E||t[79]!==I||t[80]!==L||t[81]!==R||t[82]!==z||t[83]!==B?(F=(0,$.jsx)(we,{title:`Status`,children:(0,$.jsx)(xe,{children:(0,$.jsxs)(`div`,{className:`grid gap-2 px-4 py-3`,children:[E,I,L,R,z,B]})})}),t[78]=E,t[79]=I,t[80]=L,t[81]=R,t[82]=z,t[83]=B,t[84]=F):F=t[84],k=we,j=`Providers`,O=xe;let V;t[85]!==s||t[86]!==f||t[87]!==i.name?(V=e=>(0,$.jsx)(Se,{title:e.label,...e.unsupported===void 0?{}:{description:e.unsupported},control:(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.badge===void 0?null:(0,$.jsx)(_,{variant:Rt[e.badge].variant,children:Rt[e.badge].label}),(0,$.jsx)(Oe,{"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=>f(e.driver,t)})]})},e.driver),t[85]=s,t[86]=f,t[87]=i.name,t[88]=V):V=t[88],A=n.map(V),t[11]=u,t[12]=s,t[13]=o,t[14]=x,t[15]=r,t[16]=f,t[17]=g,t[18]=h,t[19]=v,t[20]=m,t[21]=a?.auth,t[22]=i,t[23]=d,t[24]=b,t[25]=D,t[26]=y,t[27]=O,t[28]=k,t[29]=A,t[30]=j,t[31]=N,t[32]=P,t[33]=F}else O=t[27],k=t[28],A=t[29],j=t[30],N=t[31],P=t[32],F=t[33];let I;t[89]!==O||t[90]!==A?(I=(0,$.jsx)(O,{children:A}),t[89]=O,t[90]=A,t[91]=I):I=t[91];let L;t[92]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,$.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]!==k||t[94]!==j||t[95]!==I?(R=(0,$.jsxs)(k,{title:j,children:[I,L]}),t[93]=k,t[94]=j,t[95]=I,t[96]=R):R=t[96];let z;t[97]!==p||t[98]!==c||t[99]!==l||t[100]!==i.enabled?(z=c!==void 0&&p!==void 0?(0,$.jsx)(we,{title:`Project`,children:(0,$.jsx)(xe,{children:(0,$.jsx)(At,{projectLabel:c,override:l,inherited:i.enabled,onChange:p})})}):null,t[97]=p,t[98]=c,t[99]=l,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,$.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=r(e);return xt(t)&&t.detail!==void 0?t.detail:`Sign-in could not start. Try again.`}function Ft(e,t,n){let r=Y(J.mcpRegistryProviderSignInState,{reportFailure:!1}),i=Y(J.mcpRegistryProviderSignInStart,{reportFailure:!1}),a=Y(J.mcpRegistryProviderSignInWait,{reportFailure:!1}),o=Y(J.mcpRegistryProviderSignInComplete,{reportFailure:!1}),s=Y(J.mcpRegistryProviderSignInCancel,{reportFailure:!1}),c=Y(J.mcpRegistryProviderSignOut,{reportFailure:!1}),l=x(J.mcpRegistryProviderSignInComplete.permissionAtom(e)),u=x(J.mcpRegistryProviderSignInCancel.permissionAtom(e)),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)({}),[h,g]=(0,Z.useState)(new Set),_=(0,Z.useRef)(new Set),v=e=>f(t=>t?.map(t=>t.instanceId===e.instanceId?e:t)??null),y=(e,t)=>m(n=>{let r={...n};return t===void 0?delete r[e]:r[e]=t,r});return(0,Z.useEffect)(()=>{if(!n)return;let i=!1;return r({environmentId:e,input:{serverId:t}}).then(e=>{i||f(e._tag===`Success`?e.value.providers:[])}),()=>{i=!0}},[n,e,r,t]),(0,Z.useEffect)(()=>{if(!n)return;let r=!1;for(let n of d??[]){let i=n.pending;i&&a({environmentId:e,input:{serverId:t,instanceId:n.instanceId,flowId:i.flowId}}).then(e=>{r||(f(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`?y(n.instanceId,Pt(e.cause)):e._tag===`Success`&&e.value.status!==`signed-in`&&!_.current.has(n.instanceId)&&y(n.instanceId,`Sign-in ended without connecting. Try again.`))})}return()=>{r=!0}},[n,d,e,t,a]),{entries:n?d:null,errors:p,busy:h,run:async(n,r,a)=>{if(!_.current.has(n.instanceId)){_.current.add(n.instanceId),g(new Set(_.current)),y(n.instanceId,void 0);try{let l={serverId:t,instanceId:n.instanceId};if(r===`start`){let t=await i({environmentId:e,input:l});t._tag===`Success`?(v({...n,pending:t.value}),window.open(t.value.authorizationUrl,`_blank`,`noopener,noreferrer`)):t._tag===`Failure`&&y(n.instanceId,Pt(t.cause));return}let u={...l,flowId:n.pending?.flowId??``},d=r===`complete`?await o({environmentId:e,input:{...u,callbackUrl:a.trim()}}):r===`cancel`?await s({environmentId:e,input:u}):await c({environmentId:e,input:l});d._tag===`Success`?v(d.value):d._tag===`Failure`&&y(n.instanceId,Pt(d.cause))}finally{_.current.delete(n.instanceId),g(new Set(_.current))}}},canComplete:l,canCancel:u}}function It(e){let t=(0,X.c)(39),{entry:n,signIns:r}=e,i;t[0]!==n.displayName||t[1]!==n.driver?(i=n.displayName??Xe(n.driver),t[0]=n.displayName,t[1]=n.driver,t[2]=i):i=t[2];let a=i,[o,s]=(0,Z.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,$.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=N(`text-xs`,m),t[8]=m,t[9]=h);let g;t[10]!==n.status||t[11]!==c?(g=c?`Waiting for sign-in`:Ze(n.status),t[10]=n.status,t[11]=c,t[12]=g):g=t[12];let _;t[13]!==h||t[14]!==g?(_=(0,$.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,$.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,$.jsx)(M,{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,$.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,$.jsxs)(`form`,{className:`grid gap-2`,onSubmit:e=>{e.preventDefault(),o.trim()&&!u&&r.canComplete&&r.run(n,`complete`,o)},children:[(0,$.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,$.jsx)(`label`,{htmlFor:f,className:`text-xs font-medium`,children:`Callback URL`}),(0,$.jsx)(oe,{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,$.jsx)(`p`,{id:`${f}-error`,role:`alert`,className:`text-xs text-destructive-foreground`,children:d}):null,(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsx)(M,{type:`submit`,size:`xs`,disabled:u||!o.trim()||!r.canComplete,children:u?`Please wait…`:`Finish sign-in`}),(0,$.jsx)(M,{type:`button`,size:`xs`,variant:`outline`,disabled:u,onClick:()=>window.open(c.authorizationUrl,`_blank`,`noopener,noreferrer`),children:`Open browser`}),(0,$.jsx)(M,{type:`button`,size:`xs`,variant:`ghost`,disabled:u||!r.canCancel,onClick:()=>void r.run(n,`cancel`),children:`Cancel`})]})]}):d?(0,$.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,$.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,X.c)(8),{serverName:n,signIns:r,blocked:i}=e,a;t[0]===r?a=t[1]:(a=r.entries===null?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Checking providers…`}):r.entries.length===0?(0,$.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,$.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,$.jsxs)(`details`,{className:`text-xs text-muted-foreground`,children:[(0,$.jsxs)(`summary`,{className:`cursor-pointer`,children:[i,` other `,i===1?`provider`:`providers`,` unavailable`]}),(0,$.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,$.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,X.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,$.jsx)(we,{title:`Project`,children:(0,$.jsx)(xe,{children:(0,$.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,$.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-B7Nlb85S.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectIconPickerDialog-Bxa9i4w_.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/Icon-l19w4AjM.js","assets/utils-BAPnqm16.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/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-plus-CeFmBUPF.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-DekLc0Ax.js","assets/CompositeRoot-fbPbFqqK.js","assets/toggle-DeCGfzT2.js","assets/input-83N8btBC.js","assets/Input-CVwvVqbx.js","assets/FieldControl-CVOjReHh.js","assets/useRegisterFieldControl-9rSmWR2W.js","assets/scroll-area-DGS0jgnh.js","assets/ScrollAreaCorner-BYUnXNwJ.js","assets/CSPContext-D8znCJtI.js","assets/dialog-DYFQxVoN.js","assets/DialogTitle-DnR18OB7.js","assets/ProjectMonogram-CYD6eMbI.js","assets/dynamic-Cjr9H8t4.js","assets/index-DmPPPGJb.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./index-DmPPPGJb.js";import{r as n}from"./Icon-l19w4AjM.js";import{C_ as r,Cm as i,D as a,Gn as o,Gs as s,Jn as c,Ks as l,Mf as u,NE as d,Pp as f,Qp as p,Tc as m,Yn as h,Yo as g,Zn as _,__ as v,fw as y,gd as b,in as x,k_ as S,lE as C,ms as w,n as T,or as E,qn as ee,r as D,sr as O,tr as te,uy as ne,xs as k}from"./utils-BAPnqm16.js";import{R as re,U as A,W as ie,z as j}from"./runtime-B9IDNXDU.js";import{C as M,P as ae,W as N,k as P}from"./entities-DCbEYTvn.js";import{yn as F}from"./runtime-B5cKWtKn.js";import{t as I}from"./useNavigate-Dhy_1-Mg.js";import{t as L}from"./useLocation-Ccsih1eo.js";import{i as R}from"./toast-CN7Jd-pG.js";import{a as oe,s as z}from"./environments-iW64jjyO.js";import{f as B,s as V}from"./server-CoH7V4JL.js";import{n as H,o as U}from"./session-Bo2ZSprC.js";import{t as W}from"./use-atom-command-GpCw1tWF.js";import{I as G,R as K}from"./useSettings-CKA-LDDj.js";import{n as q}from"./toastHelpers-Dsph6LwL.js";import{i as J,o as Y,r as X}from"./command-DsE3Ju6m.js";import{t as se}from"./input-83N8btBC.js";import{D as ce,E as le,O as ue,j as de,y as fe}from"./keybindings-DLDyoB30.js";import{t as pe}from"./PierreEntryIcon-DKHnMJOl.js";import{t as me}from"./ProjectFavicon-B5C6TpKj.js";import{d as he}from"./projectFilesQueryState-CGllQp_V.js";import{n as ge}from"./p4ProjectFile--u7SOSK5.js";import{r as _e,t as ve}from"./alert-DYmkyE3l.js";import{B as ye,H as be,I as xe,a as Z,i as Se,r as Ce,s as we}from"./settingsLayout-CqGfrbmD.js";import{Mi as Te,Sn as Ee,bn as De,pn as Oe,yi as ke}from"./main-lV-t-UZx.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-DwqFzld2.js";import{t as Re}from"./ProjectDefaultsSettings-CrKY01_P.js";import{t as ze}from"./SettingsScopeNotice-_WSLtOW4.js";var Be=d(),Q=e(n(),1),$=e(C(),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!D(t)||F(e)}function Ue(e){let[t,n]=(0,Q.useState)(``),[r,i]=(0,Q.useState)(null),[a,o]=(0,Q.useState)(!1),s=he(e.environmentId,e.cwd,t,200,{imageOnly:!0}),{resolvedTheme:c}=G(),l=g(V),u=e.onPickExternal,d=T(typeof navigator>`u`?``:navigator.platform),f=(0,Q.useMemo)(()=>Oe(s.entries,s.matchedQuery).map(t=>({kind:`action`,value:`project-favicon:${t.path}`,searchTerms:[t.name,t.path],title:t.name,description:t.path,icon:(0,$.jsx)(pe,{pathValue:t.path,kind:`file`,theme:c}),run:async()=>e.onSelect(t.path)})),[e.onSelect,c,s.entries,s.matchedQuery]);return(0,$.jsx)(X,{open:e.open,onOpenChange:e.onOpenChange,children:e.open?(0,$.jsx)(J,{"aria-label":`Choose project icon`,className:`overflow-hidden`,onBackdropPointerDown:()=>e.onOpenChange(!1),children:(0,$.jsx)(Ee,{"aria-label":`Choose project icon`,autoHighlight:`always`,escapeLabel:`Close`,footerActionLabel:`Select icon`,footerTrailing:u?(0,$.jsx)(Y,{disabled:a,onClick:()=>{o(!0),u().then(t=>{t&&(e.onOpenChange(!1),e.onSelect(t))}).catch(e=>{R.add({type:`error`,title:`Could not open image picker`,description:e instanceof Error?e.message:`An error occurred.`})}).finally(()=>o(!1))},children:`Open in ${d}`}):null,inputProps:{placeholder:`Search image files…`},mode:`none`,onItemHighlighted:e=>{i(typeof e==`string`?e:null)},onValueChange:e=>{i(null),n(e)},panelSize:`tall-list`,testId:`project-favicon-picker`,value:t,children:(0,$.jsx)(De,{groups:f.length>0?[{value:`project-favicon-files`,label:e.projectName,items:f}]:[],highlightedItemValue:r,isActionsOnly:!1,keybindings:l,onExecuteItem:t=>{t.kind===`action`&&(e.onOpenChange(!1),t.run())},emptyStateMessage:Ve(t,s.error,s.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=fe(r,ce(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)(O,{size:`icon-xs`,variant:`ghost-muted`,"aria-label":`Edit ${e.name}`,disabled:i,onClick:()=>a(e),children:(0,$.jsx)(p,{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);R.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=M(),[n,i]=(0,Q.useState)(!1),a=(0,Q.useRef)(!1),o=W(B.updateSettings,`project actions update`),s=W(B.upsertKeybinding,`action shortcut update`),c=W(B.removeKeybinding,`action shortcut removal`);async function l(n,l,u){if(a.current||e.length===0){let e=`No available machine, or another action change is saving.`;return R.add({type:`error`,title:`Actions not saved`,description:e}),w(y(Error(e)))}if(e.some(({environmentId:e})=>!H(e,`settings:write`)))return Ge(w(y(new S({requiredScope:r,message:`This connection cannot change environment settings.`}))));a.current=!0,i(!0);try{for(let{environmentId:r,settings:i,keybindings:a,project:d}of e){let e=d?je(i,d):i.defaultProjectScripts,f=n(e),p=f??i.defaultProjectScripts,m=await o({environmentId:r,input:{patch:d?{projectSettingsOverrides:{[d.id]:f===null?ge(i,d.id,[`defaultProjectScripts`]):{...i.projectSettingsOverrides[d.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=ce(e),o=Ae(a,n),l=o?Ie({keybinding:o,command:n}):null,p=Ie({keybinding:u,command:n}),m=!f?.some(t=>t.id===e)&&(d&&i.defaultProjectScripts.some(t=>t.id===e)||Object.entries(i.projectSettingsOverrides).some(([t,n])=>t!==d?.id&&n.defaultProjectScripts?.some(t=>t.id===e))||t.some(t=>t.environmentId===r&&t.id!==d?.id&&(d?je(i,t):t.scripts).some(t=>t.id===e))),h=p?await s({environmentId:r,input:l&&l.key!==p.key?{...p,replace:l}:p}):l&&!m?await c({environmentId:r,input:l}):null;if(h?._tag===`Failure`)return Ge(h)}}return k(void 0)}finally{a.current=!1,i(!1)}}function u(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??ue(r.name,i),o=le(a,r);return l(e=>{let t=e.map(e=>e.id===a?o:de(e,r));return n===null?[...t,o]:t},a,r.keybinding)}return{saving:n,persist:l,submit:u}}function qe(){let e=(0,Be.c)(67),{scope:t,targets:n,target:r}=ye(),{environments:i}=oe(),a=t.kind===`project`||t.kind===`checkout`,s;e[0]!==i||e[1]!==r?(s=r?i.find(e=>e.environmentId===r.environmentId)?.serverConfig:void 0,e[0]=i,e[1]=r,e[2]=s):s=e[2];let l=s,u;e[3]===r?.settings.defaultProjectScripts?u=e[4]:(u=r?.settings.defaultProjectScripts??[],e[3]=r?.settings.defaultProjectScripts,e[4]=u);let d=u,p=l?.keybindings??m,g;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),g=n.some(t),e[5]=d,e[6]=n,e[7]=g}else g=e[7];let v=g,y=xe(),[x,S]=(0,Q.useState)(null),C,w,T;e[10]!==i||e[11]!==a||e[12]!==t.members||e[13]!==n?(C=new Map(a?t.members.map(Ye):[]),w=Ke,T=n.flatMap(e=>{let t=i.find(t=>t.environmentId===e.environmentId);if(!t?.serverConfig)return[];let n=e.projectId?C.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]=i,e[11]=a,e[12]=t.members,e[13]=n,e[14]=C,e[15]=w,e[16]=T):(C=e[14],w=e[15],T=e[16]);let{saving:D,persist:k,submit:A}=w(T),j;e[17]!==C||e[18]!==r?(j=r?.projectId?C.get(r.projectId):void 0,e[17]=C,e[18]=r,e[19]=j):j=e[19];let M=j,ae;e[20]===M?.environmentId?ae=e[21]:(ae=M?.environmentId??ne.make(`none`),e[20]=M?.environmentId,e[21]=ae);let N=Pe(ae,M?.workspaceRoot??null),P;if(e[22]!==d||e[23]!==N.scripts){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),P=N.scripts.filter(t),e[22]=d,e[23]=N.scripts,e[24]=P}else P=e[24];let F=P,I;e[27]===A?I=e[28]:(I=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);S({scriptId:null,initial:t,error:e instanceof Error?e.message:`Failed to import action.`})}},e[27]=A,e[28]=I);let L=I,R;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(R=[`defaultProjectScripts`],e[29]=R):R=e[29];let z;e[30]===k?z=e[31]:(z=()=>void k(Je),e[30]=k,e[31]=z);let B;e[32]!==y||e[33]!==L||e[34]!==F||e[35]!==D?(B=F.length>0?(0,$.jsxs)(o,{children:[(0,$.jsxs)(E,{render:(0,$.jsx)(O,{id:`import-scripts`,size:`xs`,variant:`ghost`,disabled:D||!y,type:`button`}),children:[`Import scripts`,(0,$.jsx)(b,{className:`size-3.5`})]}),(0,$.jsxs)(_,{align:`end`,children:[(0,$.jsxs)(ee,{children:[(0,$.jsx)(c,{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,{}),F.map(e=>(0,$.jsxs)(h,{onClick:()=>void L(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]=y,e[33]=L,e[34]=F,e[35]=D,e[36]=B):B=e[36];let V=D||!y||n.length===0,H,U;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(H=()=>S({scriptId:null,initial:Le}),U=(0,$.jsx)(f,{className:`size-3.5`}),e[37]=H,e[38]=U):(H=e[37],U=e[38]);let W;e[39]===V?W=e[40]:(W=(0,$.jsxs)(O,{size:`xs`,variant:`outline`,disabled:V,onClick:H,children:[U,`Add action`]}),e[39]=V,e[40]=W);let G;e[41]!==B||e[42]!==W?(G=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[B,W]}),e[41]=B,e[42]=W,e[43]=G):G=e[43];let K;e[44]!==v||e[45]!==z||e[46]!==G?(K=(0,$.jsx)(Z,{serverScoped:!0,settingKeys:R,mixed:v,title:`Actions`,description:`Commands that run in this project's checkout or its worktree, with optional shortcuts.`,onResetOverride:z,control:G}),e[44]=v,e[45]=z,e[46]=G,e[47]=K):K=e[47];let q;e[48]!==y||e[49]!==p||e[50]!==v||e[51]!==D||e[52]!==d?(q=v?(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:p,disabled:D||!y,onEdit:e=>S(Me(e,p))}),e[48]=y,e[49]=p,e[50]=v,e[51]=D,e[52]=d,e[53]=q):q=e[53];let J;e[54]===N.status?J=e[55]:(J=N.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]=N.status,e[55]=J);let Y;e[56]!==k||e[57]!==x||e[58]!==d||e[59]!==A||e[60]!==r?(Y=r&&(0,$.jsx)(Ne,{environmentId:r.environmentId,editScope:`settings:write`,request:x,scripts:d,onSubmit:A,onDelete:e=>void k(t=>t.filter(t=>t.id!==e),e,null),onClose:()=>S(null)}),e[56]=k,e[57]=x,e[58]=d,e[59]=A,e[60]=r,e[61]=Y):Y=e[61];let X;return e[62]!==K||e[63]!==q||e[64]!==J||e[65]!==Y?(X=(0,$.jsxs)(we,{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-Bxa9i4w_.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=be(),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={from:`/settings`},t[0]=c):c=t[0];let l=I(c),u;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(u={select:tt},t[1]=u):u=t[1];let d=L(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,g=(0,Q.useRef)(null),_,v;t[9]!==o||t[10]!==a||t[11]!==h||t[12]!==p?(_=()=>{p&&h.length!==0&&(g.current={key:p.projectKey,environmentId:a,checkoutKey:o,memberKeys:h.map(et)})},v=[p,h,a,o],t[9]=o,t[10]=a,t[11]=h,t[12]=p,t[13]=_,t[14]=v):(_=t[13],v=t[14]),(0,Q.useEffect)(_,v);let y,b;if(t[15]!==o||t[16]!==a||t[17]!==s||t[18]!==h.length||t[19]!==l||t[20]!==d||t[21]!==n?(b=()=>{if(h.length>0)return;let e=g.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})},y=[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]=y,t[23]=b):(y=t[22],b=t[23]),(0,Q.useEffect)(b,y),!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 x;t[27]!==h||t[28]!==p?(x={...p,memberProjects:h,environmentId:h[0].environmentId,id:h[0].id},t[27]=h,t[28]=p,t[29]=x):x=t[29];let S=x,C=`${p.projectKey}:${a??`all`}:${o??`all`}`,w=h.length<p.memberProjects.length,T;return t[30]!==S||t[31]!==C||t[32]!==w?(T=(0,$.jsx)(nt,{group:S,hasOtherMembers:w},C),t[30]=S,t[31]=C,t[32]=w,t[33]=T):T=t[33],T}function et(e){return e.physicalProjectKey}function tt(e){return e.pathname}function nt({group:e,hasOtherMembers:t}){let n=I({from:`/settings`}),r=z(),{environments:o}=oe(),c=(0,Q.useMemo)(()=>new Map(o.map(e=>[e.environmentId,e])),[o]),d=U(e.memberProjects,v),f=e.memberProjects.every(e=>d.has(e.environmentId)),p=e.memberProjects.find(e=>c.get(e.environmentId)?.serverConfig!=null)??e.memberProjects[0],m=P(),h=Te(N.update,{reportFailure:!1}),g=Te(N.delete,{reportFailure:!1}),_=(0,Q.useRef)(!1),b=p.faviconPath??null,S=p.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);R.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=>!H(e.environmentId,v));if(!n)return null;let r=w(y(Error(`This connection cannot change projects in ${n.environmentLabel??`this environment`}.`)));return T(t,r),r},[T]),ee=(0,Q.useCallback)(async(t,n)=>{let r=E(e.memberProjects,n);if(r)return r;let i=e.memberProjects.find(e=>{let t=c.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=w(y(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 h({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 k(void 0)},[E,c,e.memberProjects,T,h]),D=(0,Q.useCallback)(async(t,n)=>{let r=t.trim();if(!r){R.add({type:`warning`,title:`Project title cannot be empty`});return}Xe(e.memberProjects.map(e=>e.title),r,n)&&await ee({title:r},`Failed to rename project`)},[e.memberProjects,ee]),[te,ne]=x(!f),[M,F]=x(!f),[L,B]=(0,Q.useState)(!1),V=(0,Q.useRef)(!1),W=(0,Q.useCallback)(async e=>{if(!V.current){V.current=!0,B(!0);try{await ee(e,`Failed to update project icon`)}finally{V.current=!1,B(!1)}}},[ee]),G=e.memberProjects.length>1,J=(0,Q.useCallback)(async r=>{if(E(r,`Failed to remove project`))return;let i=K();if(!i)return;let o=new Set(r.map(Qe)),c=m.filter(e=>o.has(`${e.environmentId}:${e.projectId}`)),u=r.length===e.memberProjects.length,d=t||!u?`checkout`:`project`,f=r.length===1?r[0]:null,p=f?.title??e.displayName,h=await A(()=>i.dialogs.confirm([c.length>0?`Remove ${d} "${p}" and delete its ${c.length} thread${c.length===1?``:`s`}?`:`Remove ${d} "${p}"?`,...f?[`Path: ${f.workspaceRoot}`,...f.environmentLabel?[`Environment: ${f.environmentLabel}`]:[]]:[`This removes ${r.length} grouped project entries.`],...c.length>0?[`This permanently clears conversation history for those threads and any archived threads.`]:[`This permanently clears any archived conversation history.`],u&&!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(h._tag===`Failure`||!h.value||E(r,`Failed to remove project`))return;let _=a.getState();for(let e of r){if(E([e],`Failed to remove project`))return;let t=c.filter(t=>t.environmentId===e.environmentId&&t.projectId===e.id),n=j(await g({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=s(e.environmentId,e.id);await ae(r),ke(r,t.map(e=>l(e.environmentId,e.id)));let i=_.getDraftThreadByProjectRef(r);i&&_.clearDraftThread(i.draftId),_.clearProjectDraftThreadId(r)}u&&!t&&n({to:`/`,replace:!0})},[E,g,e.displayName,e.memberProjects.length,t,n,T,m]),Y=(0,$.jsx)(we,{title:`Checkouts`,children:e.memberProjects.map(e=>(0,$.jsx)(Z,{title:e.environmentLabel??`Environment`,description:e.workspaceRoot,control:(0,$.jsx)(O,{size:`sm`,variant:`outline`,disabled:!d.has(e.environmentId),onClick:()=>void J([e]),"aria-label":`Remove checkout ${e.workspaceRoot}`,children:`Remove`})},e.physicalProjectKey))});return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(Se,{className:`gap-6`,children:[(0,$.jsxs)(ve,{variant:`info`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(_e,{children:`Can't find a setting? Keep this project picked above and hop to any other settings page.`})]}),(0,$.jsxs)(we,{id:`project-overview`,title:`Project`,hideTitle:!0,children:[f?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)(se,{size:`sm`,className:`w-full sm:w-64`,"aria-label":`Project name`,disabled:!f,defaultValue:e.displayName,onChange:()=>{_.current=!0},onBlur:e=>{let t=_.current;_.current=!1,D(e.currentTarget.value,t)},onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}},`${e.projectKey}:${e.displayName}`)}),(0,$.jsx)(Z,{title:`Project icon`,description:S?.kind===`lucide`?`${S.name} · ${S.color}`:S?.kind===`monogram`?`${S.text} · ${S.color}`:S?.kind===`emoji`?S.emoji:b??`Automatic`,resetAction:e.memberProjects.some(e=>e.faviconPath!=null||e.projectIcon!=null)?(0,$.jsx)(Ce,{label:`project icon`,disabled:L||!f,onClick:()=>void W({faviconPath:null,projectIcon:null})}):null,control:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(me,{project:p,className:`size-6`}),(0,$.jsx)(O,{size:`sm`,variant:`outline`,type:`button`,"aria-label":`Choose a project icon`,disabled:L||!f,onClick:()=>F(!0),children:`Choose icon`}),(0,$.jsx)(O,{size:`sm`,variant:`outline`,type:`button`,"aria-label":`Choose a project icon file`,disabled:L||!f,onClick:()=>ne(!0),children:`Choose file`})]})})]}),(0,$.jsx)(Re,{category:`project`}),(0,$.jsx)(qe,{}),G?Y:null,(0,$.jsx)(we,{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)(O,{size:`sm`,variant:`destructive-outline`,disabled:!f,onClick:()=>void J(e.memberProjects),children:[(0,$.jsx)(i,{}),t?`Remove checkout`:e.memberProjects.length>1?`Remove all entries`:`Remove project`]})})})]}),(0,$.jsx)(Ue,{cwd:p.workspaceRoot,environmentId:p.environmentId,onOpenChange:ne,...C?{onPickExternal:()=>C(p.workspaceRoot)}:{},onSelect:e=>void W({faviconPath:e,projectIcon:null}),open:te&&f,projectName:e.displayName},`${p.environmentId}:${p.workspaceRoot}:${te}`),M&&f?(0,$.jsx)(Q.Suspense,{fallback:null,children:(0,$.jsx)(Ze,{current:S,projectName:p.title,open:!0,onOpenChange:F,onSelect:e=>void W({faviconPath:null,projectIcon:e})})}):null]})}function rt(){let e=(0,Be.c)(7),{search:t,scope:n}=ye(),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?ne.make(t.machine):null,checkoutKey:t.checkout??null}):n.kind===`unavailable`?(0,$.jsx)(Se,{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-Ob8jKbIh.js.map
|