ryco-cli 0.1.28 → 0.1.30
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/README.md +37 -0
- package/dist/{AcpAdapter-CG1wRWcf.mjs → AcpAdapter-CKWzfB3Q.mjs} +4 -4
- package/dist/{AcpAdapter-8CSe4HK7.cjs → AcpAdapter-DjP0IHpH.cjs} +6 -6
- package/dist/{AcpNativeLogging-DbjnRnTf.cjs → AcpNativeLogging-5gTPK9Fq.cjs} +1 -1
- package/dist/{AcpNativeLogging-B6TtnnKL.mjs → AcpNativeLogging-Do0LktDb.mjs} +1 -1
- package/dist/{AcpRegistryDriver-16ZTxUs3.cjs → AcpRegistryDriver-BblCFfev.cjs} +3 -3
- package/dist/{AcpRegistryDriver-DZFasKaz.mjs → AcpRegistryDriver-BzohT-PC.mjs} +3 -3
- package/dist/{AzureDevOpsSourceControlProvider-DmJD1-WL.cjs → AzureDevOpsSourceControlProvider-CKSvfuDS.cjs} +1 -1
- package/dist/{AzureDevOpsSourceControlProvider-d5Ogsspk.mjs → AzureDevOpsSourceControlProvider-DRWSXTml.mjs} +1 -1
- package/dist/{BitbucketSourceControlProvider-B-ZwKj72.cjs → BitbucketSourceControlProvider-Bvl_q1o2.cjs} +1 -1
- package/dist/{BitbucketSourceControlProvider-DplKc8Wo.mjs → BitbucketSourceControlProvider-D5UVAc9z.mjs} +1 -1
- package/dist/{ClaudeDriver-0gGVop27.mjs → ClaudeDriver-BuQ_azDw.mjs} +7 -7
- package/dist/{ClaudeDriver-r0lJ9vmE.cjs → ClaudeDriver-DZkz0QPr.cjs} +8 -8
- package/dist/{CodexDriver-bJAbhSwY.cjs → CodexDriver-6Ph2cjAW.cjs} +5 -5
- package/dist/{CodexDriver-baT02xVb.mjs → CodexDriver-Bi49RIL4.mjs} +4 -4
- package/dist/{CodexTextGeneration-Dwp6X3dq.mjs → CodexTextGeneration-C5TIspJA.mjs} +4 -4
- package/dist/{CodexTextGeneration-DFZ5y4gj.cjs → CodexTextGeneration-sXPR9eld.cjs} +4 -4
- package/dist/{CopilotDriver-C0OhnSB1.mjs → CopilotDriver-Bcdpz6U_.mjs} +5 -5
- package/dist/{CopilotDriver-B_jEqfYQ.cjs → CopilotDriver-D6P0xgRX.cjs} +5 -5
- package/dist/{CursorDriver-DinXkGP9.mjs → CursorDriver-CRnDGwEv.mjs} +6 -6
- package/dist/{CursorDriver-BBFEW7ZI.cjs → CursorDriver-DMJ7sGSx.cjs} +7 -7
- package/dist/{ForgejoSourceControlProvider-iG9o7aZB.cjs → ForgejoSourceControlProvider-D4jGdaJX.cjs} +1 -1
- package/dist/{ForgejoSourceControlProvider-Dr0fxfud.mjs → ForgejoSourceControlProvider-Dl_Fk3RY.mjs} +1 -1
- package/dist/{GitHubSourceControlProvider-CnIu0n2Y.mjs → GitHubSourceControlProvider-DnwKf0ap.mjs} +1 -1
- package/dist/{GitHubSourceControlProvider-L1yFpep4.cjs → GitHubSourceControlProvider-QMe-zymI.cjs} +1 -1
- package/dist/{GitLabSourceControlProvider-BZdwXdJl.mjs → GitLabSourceControlProvider-Cj07OTBD.mjs} +1 -1
- package/dist/{GitLabSourceControlProvider-CrcBR6KQ.cjs → GitLabSourceControlProvider-CvvN5pHt.cjs} +1 -1
- package/dist/{GrokDriver-pX-N6HGS.mjs → GrokDriver-Bvq1jP3S.mjs} +7 -7
- package/dist/{GrokDriver-D_Ylzh5z.cjs → GrokDriver-jy8JIvYY.cjs} +10 -10
- package/dist/{Metrics-Bf96NJ4j.cjs → Metrics-C0LSU8s7.cjs} +979 -976
- package/dist/{Metrics-BjqGlIP4.mjs → Metrics-CnmjpbWk.mjs} +979 -976
- package/dist/{NodeSqliteClient-BGg70C7Q.cjs → NodeSqliteClient-D8bzGgPN.cjs} +1 -1
- package/dist/{OpenCodeDriver-BFEw5t09.cjs → OpenCodeDriver-Bu5D19tl.cjs} +6 -6
- package/dist/{OpenCodeDriver-Byu1pf_i.mjs → OpenCodeDriver-DhyVaBMT.mjs} +5 -5
- package/dist/{SideQuestionIsolation-81IoAuoi.mjs → SideQuestionIsolation-B-aE6aBz.mjs} +1 -1
- package/dist/{SideQuestionIsolation-CMPkCUP0.cjs → SideQuestionIsolation-CtJ4wX83.cjs} +1 -1
- package/dist/bin.cjs +8580 -305
- package/dist/bin.mjs +8560 -268
- package/dist/client/assets/{AccountSettings-DF6okodO.js → AccountSettings-v6-r6gYl.js} +1 -1
- package/dist/client/assets/{AiFocusSettings-BNNr6MW3.js → AiFocusSettings-BVdLON0q.js} +1 -1
- package/dist/client/assets/{AnimatedHeight-q2A-ikJ5.js → AnimatedHeight-UXn4-nUd.js} +1 -1
- package/dist/client/assets/{AppearanceSettings-BD0MZkm7.js → AppearanceSettings-DRChsQnN.js} +1 -1
- package/dist/client/assets/{BranchToolbar.logic-DN0He2gp.js → BranchToolbar.logic-YN3KjVr9.js} +1 -1
- package/dist/client/assets/{BrowserPanel-C_ddyv_7.js → BrowserPanel-Dxw3stFP.js} +1 -1
- package/dist/client/assets/{ChatRightPanel-B62ml3EW.js → ChatRightPanel-CygpcJiF.js} +5 -5
- package/dist/client/assets/{ChatThreadRouteView-BnvzR19h.js → ChatThreadRouteView-DYLZFHu0.js} +1 -1
- package/dist/client/assets/{CommandPaletteDialog-KtIlImWg.js → CommandPaletteDialog-BRvBzP1R.js} +1 -1
- package/dist/client/assets/{CompositeRoot-CTspN_gA.js → CompositeRoot-BeEGGWwn.js} +1 -1
- package/dist/client/assets/{ComputerUseSettings-B4KnZnFy.js → ComputerUseSettings-Cq8Pi0ZU.js} +1 -1
- package/dist/client/assets/{ConnectionsSettings-BW1hWm-b.js → ConnectionsSettings-RSYtexxd.js} +2 -2
- package/dist/client/assets/{ContextHandoffEndpointLabel-BCNMjnEV.js → ContextHandoffEndpointLabel-CeGDLNA4.js} +1 -1
- package/dist/client/assets/{DiagnosticsSettings-Biqth29E.js → DiagnosticsSettings-CDa6MVx4.js} +1 -1
- package/dist/client/assets/{DialogHandle-B1kG1DEu.js → DialogHandle-BE7egDQQ.js} +1 -1
- package/dist/client/assets/{DialogPopup-CZ-twaqA.js → DialogPopup-NfwDyR5c.js} +1 -1
- package/dist/client/assets/DialogRoot-C4mtzigX.js +1 -0
- package/dist/client/assets/{DialogTitle-D8Vib3Xi.js → DialogTitle-B_Q4DykI.js} +1 -1
- package/dist/client/assets/{DialogTrigger-C8WNfJfY.js → DialogTrigger-BSqd4Crj.js} +1 -1
- package/dist/client/assets/{DialogViewport-BzuRIust.js → DialogViewport-B6w_ROOE.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-Bf196For.js → DraftChatThreadRouteView-JW_bXVrM.js} +1 -1
- package/dist/client/assets/{ExternalIdentityWeb.logic-DsTJQkg-.js → ExternalIdentityWeb.logic-BlKX8J9h.js} +1 -1
- package/dist/client/assets/{GlassSurface-R5jo7uZp.js → GlassSurface-DDG4eTlj.js} +1 -1
- package/dist/client/assets/{HostedConnectionControls-xi9LAlqs.js → HostedConnectionControls-CscV6hm1.js} +1 -1
- package/dist/client/assets/{HostedHubRoot-B5cJPL0b.js → HostedHubRoot-gp7-ClBP.js} +1 -1
- package/dist/client/assets/{HostedNativeAuthorizationRoute-BPxYI2S8.js → HostedNativeAuthorizationRoute-j7oSlakZ.js} +1 -1
- package/dist/client/assets/{HostedNodeRenameDialog-CZ6B6eOA.js → HostedNodeRenameDialog-D1DSiTpx.js} +1 -1
- package/dist/client/assets/{HostedRelayTrustNotice-Da0fanPZ.js → HostedRelayTrustNotice-B9jp4SRh.js} +1 -1
- package/dist/client/assets/{IntegrationsSettingsPanel-CVIFEYar.js → IntegrationsSettingsPanel-DH7SfWtV.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-FJVISTz3.js → KeybindingsSettings-DkgYYSHS.js} +1 -1
- package/dist/client/assets/{LazyBrowserPanel-ChCZntfd.js → LazyBrowserPanel-D4e76vc_.js} +1 -1
- package/dist/client/assets/{McpServersSettings-D5qSFad1.js → McpServersSettings-Dc1kPa-X.js} +1 -1
- package/dist/client/assets/{MobileSheet-BZwVUjae.js → MobileSheet-lT--mLEz.js} +1 -1
- package/dist/client/assets/{NodeSecuritySettings-C9eJS4Wt.js → NodeSecuritySettings-DcfSx4KT.js} +1 -1
- package/dist/client/assets/{NullStore-iCZTvdl5.js → NullStore-8d2s-Re3.js} +1 -1
- package/dist/client/assets/{OnboardingDialog-lWnlzsHQ.js → OnboardingDialog-CnLjwM6Z.js} +1 -1
- package/dist/client/assets/{OpinionatedPluginsSettings-DQ77FhYa.js → OpinionatedPluginsSettings-BTJyS3rN.js} +1 -1
- package/dist/client/assets/{PdfAttachmentPreview-CmCBedSk.js → PdfAttachmentPreview-C8-hT8KQ.js} +1 -1
- package/dist/client/assets/{PhoneGetAppInterstitial-DU7Pjbrv.js → PhoneGetAppInterstitial-Zh0zpBgT.js} +1 -1
- package/dist/client/assets/{PhoneHome-D91zzTlE.js → PhoneHome-CIMkuDJF.js} +1 -1
- package/dist/client/assets/{PhoneSettingsSurface-vyuCLVtH.js → PhoneSettingsSurface-CfZQxJNI.js} +1 -1
- package/dist/client/assets/{ProvidersSettingsPanel-QMtod_bc.js → ProvidersSettingsPanel-DAVSiwE1.js} +1 -1
- package/dist/client/assets/{QuitShortcutFeedback-Bti16E53.js → QuitShortcutFeedback-Qs9XsuZ4.js} +1 -1
- package/dist/client/assets/{RedactedSensitiveText-9r8QC1lJ.js → RedactedSensitiveText-BHGbQJwB.js} +1 -1
- package/dist/client/assets/{RootAppShell-CYT2IfYW.js → RootAppShell-T056pByH.js} +2 -2
- package/dist/client/assets/{Separator-ClXl-hQH.js → Separator-B6Esv57Y.js} +1 -1
- package/dist/client/assets/{SettingsDialog-BUcF48F9.js → SettingsDialog-BERU2Qg7.js} +1 -1
- package/dist/client/assets/{SettingsPanels-BydjDF1I.js → SettingsPanels-De_XZOQF.js} +1 -1
- package/dist/client/assets/{SettingsPanels.editor-zrq4ZT2j.js → SettingsPanels.editor-Dkva9gX_.js} +1 -1
- package/dist/client/assets/{SourceControlSettings-CqVmc4sB.js → SourceControlSettings-B4HS17cB.js} +1 -1
- package/dist/client/assets/{StatisticsPage-k-gimGKE.js → StatisticsPage-Bj2ftFdH.js} +1 -1
- package/dist/client/assets/{StatisticsPanel-CtShfsl4.js → StatisticsPanel-Dw7GBBmd.js} +1 -1
- package/dist/client/assets/{StatisticsSettingsLink-BapVo9aC.js → StatisticsSettingsLink-_XL3ABoI.js} +1 -1
- package/dist/client/assets/{ThreadTerminalDrawer-Bfs5NCNv.js → ThreadTerminalDrawer-CPPzQSXN.js} +1 -1
- package/dist/client/assets/{ThreadWorkspacePanel-L6uNQRNX.js → ThreadWorkspacePanel-DWKU7Omm.js} +1 -1
- package/dist/client/assets/{abnfDiagram-N423BO3Z-BzwwixLv.js → abnfDiagram-N423BO3Z-ByEe3mC0.js} +1 -1
- package/dist/client/assets/{activity-CPE_7Kqw.js → activity-CwTUF6lv.js} +1 -1
- package/dist/client/assets/{alert-DVbwtykC.js → alert-DQEkrtUJ.js} +1 -1
- package/dist/client/assets/{appChrome-B_VWWDFj.js → appChrome-TkWLAGxk.js} +1 -1
- package/dist/client/assets/architecture-7GRP2DOG-HS59zfrk.js +1 -0
- package/dist/client/assets/{architectureDiagram-T3A2C74G-DEiVciWZ.js → architectureDiagram-T3A2C74G-Bd-yxaTr.js} +1 -1
- package/dist/client/assets/{arrow-left-Ce-aUiy1.js → arrow-left-DUOpzEbP.js} +1 -1
- package/dist/client/assets/{arrow-right-BEwkAmxp.js → arrow-right-HOYJnPKw.js} +1 -1
- package/dist/client/assets/{arrow-up-right-CLCNhOeC.js → arrow-up-right-DHnMKuVA.js} +1 -1
- package/dist/client/assets/{authorization-BugIGt5e.js → authorization-D8dOcEYq.js} +1 -1
- package/dist/client/assets/{badge-DqZmJa1g.js → badge-2AZ3HfVS.js} +1 -1
- package/dist/client/assets/{blockDiagram-VBNYF7ZC-C-PBzm5g.js → blockDiagram-VBNYF7ZC-CPDBonMC.js} +1 -1
- package/dist/client/assets/{bot-k1yDQ5mQ.js → bot-DxjPA7Bw.js} +1 -1
- package/dist/client/assets/{c4Diagram-5PPSVZJV-DB6SIv2V.js → c4Diagram-5PPSVZJV-BM6pAiqT.js} +1 -1
- package/dist/client/assets/{capabilities-C9OPiefV.js → capabilities-CsHjxjab.js} +1 -1
- package/dist/client/assets/channel-Dn3_cOkm.js +1 -0
- package/dist/client/assets/{chart-column-CVU4MshQ.js → chart-column-Cg7d41tb.js} +1 -1
- package/dist/client/assets/chevron-right-Dsw16yGn.js +1 -0
- package/dist/client/assets/{chunk-2GRJ4B5K-CFM4Ac_N.js → chunk-2GRJ4B5K-DVKozJ41.js} +1 -1
- package/dist/client/assets/{chunk-4I5QYGJK-a9tLNjnj.js → chunk-4I5QYGJK-BRoMwPkW.js} +1 -1
- package/dist/client/assets/{chunk-5RXB4S5H-CbEb4Ht8.js → chunk-5RXB4S5H-DFMKyoqP.js} +1 -1
- package/dist/client/assets/{chunk-6Q2QTUOP-DPUmSmhc.js → chunk-6Q2QTUOP-Ba6UENe9.js} +1 -1
- package/dist/client/assets/{chunk-7Z6QIM7H-Ba8d__CQ.js → chunk-7Z6QIM7H-B87gYLWH.js} +1 -1
- package/dist/client/assets/{chunk-GF5L2VYU-BKOdlQ2f.js → chunk-GF5L2VYU-DZ840GRQ.js} +1 -1
- package/dist/client/assets/{chunk-I66GZJ75-DAfCveu2.js → chunk-I66GZJ75-BO6p4Aqg.js} +1 -1
- package/dist/client/assets/{chunk-JQJVKLGR-CPzgDuD8.js → chunk-JQJVKLGR-5dTfVinz.js} +1 -1
- package/dist/client/assets/{chunk-KBJHAD2P-X87J_pHD.js → chunk-KBJHAD2P-BeWfBZdP.js} +1 -1
- package/dist/client/assets/{chunk-NSK5VX7P-BgrjQWAz.js → chunk-NSK5VX7P-DuRkdn5k.js} +1 -1
- package/dist/client/assets/{chunk-QR6OTTB3-NTX__XXO.js → chunk-QR6OTTB3-Duz4Y_uE.js} +1 -1
- package/dist/client/assets/{chunk-UBXNYLIW-BVySE3ty.js → chunk-UBXNYLIW-D-z8URgN.js} +1 -1
- package/dist/client/assets/{chunk-W5SLKNZC-0-ctjkBJ.js → chunk-W5SLKNZC-AGjFjjoJ.js} +1 -1
- package/dist/client/assets/{chunk-WRU74C26-AGGo_1S7.js → chunk-WRU74C26-BgY3UiXB.js} +1 -1
- package/dist/client/assets/classDiagram-JCYQIIEL-ZQvrS8No.js +1 -0
- package/dist/client/assets/classDiagram-v2-OCEON4UE-ZQvrS8No.js +1 -0
- package/dist/client/assets/{clipboard-copy-C3icJCGA.js → clipboard-copy-BWf3JuTE.js} +1 -1
- package/dist/client/assets/{cynefin-OW5HDTMX-BR32cltb.js → cynefin-OW5HDTMX-BuOAGqlK.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-MW4NZA55-B7S5bXUw.js → cynefinDiagram-MW4NZA55-DqV0Aokp.js} +1 -1
- package/dist/client/assets/{dagre-VZM6K2ZE-BZOfZvme.js → dagre-VZM6K2ZE-D_GFquDW.js} +1 -1
- package/dist/client/assets/{data-list-E_dNBqgV.js → data-list-BJCq3CVP.js} +1 -1
- package/dist/client/assets/{desktopWorkspace-DIoIhyml.js → desktopWorkspace-_iM6B9Kf.js} +1 -1
- package/dist/client/assets/{deviceName-BY2WK012.js → deviceName-C2N8ZRX3.js} +1 -1
- package/dist/client/assets/{diagram-7IWD3JNH-CypfFHxI.js → diagram-7IWD3JNH-B1wlsNg2.js} +1 -1
- package/dist/client/assets/{diagram-B4RE2ZJO-CaYsJtDz.js → diagram-B4RE2ZJO-D-CYoym7.js} +1 -1
- package/dist/client/assets/{diagram-LBJQPF4R-BdhZtcd2.js → diagram-LBJQPF4R-DqJ9NCqt.js} +1 -1
- package/dist/client/assets/{diagram-Q27KOJAE-CW1SMIBy.js → diagram-Q27KOJAE-3yp1D2u4.js} +1 -1
- package/dist/client/assets/{diagram-UB23O5K3-Cq8GGDkV.js → diagram-UB23O5K3-Byp25nGC.js} +1 -1
- package/dist/client/assets/{download-Fq1MsYfI.js → download-DsYNYJeu.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-BXEA7PRR-CE78Op8p.js → ebnfDiagram-BXEA7PRR-B_IM1l6o.js} +1 -1
- package/dist/client/assets/{editorPreferences-DzxKMQJx.js → editorPreferences-D8q1ItMW.js} +1 -1
- package/dist/client/assets/{empty-DXTz-nBL.js → empty-BbJHvskr.js} +1 -1
- package/dist/client/assets/{erDiagram-JOGREHBK-Bn6BFae6.js → erDiagram-JOGREHBK--OtcrCRJ.js} +1 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-Dj71kuPV.js +1 -0
- package/dist/client/assets/flowDiagram-UKHOOZJN-BaAiwuvL.js +1 -0
- package/dist/client/assets/{ganttDiagram-PKOTCBZU-C8NbmUQP.js → ganttDiagram-PKOTCBZU-w0seBi3Q.js} +1 -1
- package/dist/client/assets/{gitGraph-4MIJSDKK-Dg7W2mOf.js → gitGraph-4MIJSDKK-BOJ0lcSW.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-DS77QQ5N-XEC1jydW.js → gitGraphDiagram-DS77QQ5N-BMfOCCYn.js} +1 -1
- package/dist/client/assets/{group-CcSMHbpZ.js → group-tVMKGp7Q.js} +1 -1
- package/dist/client/assets/{hostedConnectionCoordinator-BkxMXc2s.js → hostedConnectionCoordinator-BuRWCvUG.js} +1 -1
- package/dist/client/assets/hostedPairing-5n5srRC9.js +1 -0
- package/dist/client/assets/{hubRoutes-Ch__ge2L.js → hubRoutes-jcMPIFy3.js} +1 -1
- package/dist/client/assets/{index-3zoAo5bo.js → index-BqZvnGNr.js} +1 -1
- package/dist/client/assets/{info-A6RAGUB7-CPN5xH7s.js → info-A6RAGUB7-acjBTQ5o.js} +1 -1
- package/dist/client/assets/{infoDiagram-6WML65LV-DbXXnE3-.js → infoDiagram-6WML65LV-DB01Nc2m.js} +1 -1
- package/dist/client/assets/{input-zI-YDU9i.js → input-BDWSVClC.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-WSZJBQD7-DAjJrXWe.js → ishikawaDiagram-WSZJBQD7-KhZTvm-J.js} +1 -1
- package/dist/client/assets/{journeyDiagram-NVQOT4AX-CaGm-K-C.js → journeyDiagram-NVQOT4AX-C3JCYk-2.js} +1 -1
- package/dist/client/assets/{kanban-definition-27J2QSJJ-C2YRqY28.js → kanban-definition-27J2QSJJ-Dbo0C1s6.js} +1 -1
- package/dist/client/assets/{kbd-DlXUKjl1.js → kbd-Dxm5Elqj.js} +1 -1
- package/dist/client/assets/{key-round-DLUapaUr.js → key-round-CETZqe3h.js} +1 -1
- package/dist/client/assets/{layers-3D4z3mrk.js → layers-Dqez1Uq8.js} +1 -1
- package/dist/client/assets/{log-out-BxEBqpSs.js → log-out-D5-aSBAz.js} +1 -1
- package/dist/client/assets/{logging-C6tXZlGQ.js → logging-B_qXVrk6.js} +1 -1
- package/dist/client/assets/{main-DsnAjTqg.js → main-DAbEANjY.js} +2 -2
- package/dist/client/assets/{mermaid-parser.core-Dhd66igk.js → mermaid-parser.core-B6Q-3x_q.js} +2 -2
- package/dist/client/assets/{mermaidEngine-3NZnIFOn.js → mermaidEngine-DksLcesB.js} +3 -3
- package/dist/client/assets/{mindmap-definition-FAOFIHXS-SuO77jBW.js → mindmap-definition-FAOFIHXS-LaMzRxqw.js} +1 -1
- package/dist/client/assets/{motion-B4mmVewo.js → motion-BdscFixQ.js} +1 -1
- package/dist/client/assets/{packet-AYTQ26CC-BZwkWo3N.js → packet-AYTQ26CC-BHhg59Si.js} +1 -1
- package/dist/client/assets/{pairingUrl-rQM9kSGT.js → pairingUrl-Dn1e2CVw.js} +1 -1
- package/dist/client/assets/{palette-BXA2I3bI.js → palette-92ylWqeC.js} +1 -1
- package/dist/client/assets/{pegDiagram-VL7TDLO6-DgWypDaQ.js → pegDiagram-VL7TDLO6-s7l7UD9d.js} +1 -1
- package/dist/client/assets/{pie-WAS4IAKB-C1iJ73d9.js → pie-WAS4IAKB-DygX31Z9.js} +1 -1
- package/dist/client/assets/{pieDiagram-7S7Q4E2Y-DK1OTG7x.js → pieDiagram-7S7Q4E2Y-bb6I9TtZ.js} +1 -1
- package/dist/client/assets/{play-CJNYRuck.js → play-DUvOxTpL.js} +1 -1
- package/dist/client/assets/{primary-CQh_KHGG.js → primary-DZjgHvyf.js} +3 -3
- package/dist/client/assets/{providerDriverMeta-DJ9TrG26.js → providerDriverMeta-T2YbXzuS.js} +1 -1
- package/dist/client/assets/{qr-code-CBzdIN1G.js → qr-code-D4CtBq2F.js} +1 -1
- package/dist/client/assets/{qr-code-HMr6crTy.js → qr-code-dbkTo07n.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-CIZ2JOQS-CIgZ3afX.js → quadrantDiagram-CIZ2JOQS-Cj1Y68ZF.js} +1 -1
- package/dist/client/assets/{radar-RG4KPBEZ-vq15KQ2S.js → radar-RG4KPBEZ-FHM3ftPp.js} +1 -1
- package/dist/client/assets/{radio-group-1yuMmVHi.js → radio-group-CRnHYWa8.js} +1 -1
- package/dist/client/assets/{railroad-74A4TZTK-DWMARNIs.js → railroad-74A4TZTK-CPMn18Cm.js} +1 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DxU7Mt1k.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-BYAPVjRd.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-BOqgR_X7.js +1 -0
- package/dist/client/assets/{railroadDiagram-AXF67PYL-rE9Jx5yK.js → railroadDiagram-AXF67PYL-DyV3SuDj.js} +1 -1
- package/dist/client/assets/{refresh-cw-DBJIPv7m.js → refresh-cw-CgDa2Ok_.js} +1 -1
- package/dist/client/assets/{requirementDiagram-LRYGKXZP-Dkz6KTug.js → requirementDiagram-LRYGKXZP-_xEAGWaH.js} +1 -1
- package/dist/client/assets/runtime-BwHA1GUS.js +18 -0
- package/dist/client/assets/{sankeyDiagram-W5VNT64P-qCyqmTya.js → sankeyDiagram-W5VNT64P-Clf6oTLi.js} +1 -1
- package/dist/client/assets/{save-BFsP9OG2.js → save-C8h0AMdl.js} +1 -1
- package/dist/client/assets/{scroll-area-CxjQJZM9.js → scroll-area-7n2X_RLQ.js} +1 -1
- package/dist/client/assets/{scrollEdges-CXvSHaVb.js → scrollEdges-BXYnwntN.js} +1 -1
- package/dist/client/assets/{separator-D3j91Nju.js → separator-CL1qjMqJ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-SI44F4Z6-GCGWxGKL.js → sequenceDiagram-SI44F4Z6-CcYtQLSe.js} +1 -1
- package/dist/client/assets/{settingsLayout-3SUkadS6.js → settingsLayout-DxsFwhF0.js} +1 -1
- package/dist/client/assets/{sheet-BOQ2T2gY.js → sheet-CGiaw8-i.js} +1 -1
- package/dist/client/assets/{shield-Colgxqw7.js → shield-DPC4oHTi.js} +1 -1
- package/dist/client/assets/{shield-alert-CWQ-fgqm.js → shield-alert-CwH36qZb.js} +1 -1
- package/dist/client/assets/{shield-check-Dgpx5EQs.js → shield-check-CGD7sEeF.js} +1 -1
- package/dist/client/assets/{sidebar-BIv8pHHx.js → sidebar-Cc6ANbOP.js} +1 -1
- package/dist/client/assets/{sidebarProjectFolders-BpKCw8IR.js → sidebarProjectFolders-DO2Uv84F.js} +1 -1
- package/dist/client/assets/{sidebarStatusText-DSeDlb-o.js → sidebarStatusText-B4AtFXZo.js} +1 -1
- package/dist/client/assets/{sidebarUndo-DzblmE6P.js → sidebarUndo-gdSrfa4O.js} +1 -1
- package/dist/client/assets/{skeleton-BdJ4w_TS.js → skeleton-rS3IgBob.js} +1 -1
- package/dist/client/assets/{smartphone-DhBEWfKK.js → smartphone-DgVJfbv3.js} +1 -1
- package/dist/client/assets/square-Cr9X8U6y.js +1 -0
- package/dist/client/assets/{src-DHNjfMxR.js → src-C3Y_imaX.js} +1 -1
- package/dist/client/assets/{star-BAzXRepp.js → star-Cqay-Cae.js} +1 -1
- package/dist/client/assets/{stateDiagram-OKZ733FA-D8fRUjov.js → stateDiagram-OKZ733FA-DEKURpRP.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-UEYNNEHI-CWtHILqh.js +1 -0
- package/dist/client/assets/storeSelectors-CTDWheMy.js +1 -0
- package/dist/client/assets/{swimlanes-SLNWSIFB-BKy9AxWZ.js → swimlanes-SLNWSIFB-DrR6sbi6.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-DuaPce9O.js +8 -0
- package/dist/client/assets/{switch-DgLijJhN.js → switch-DnpJB2xv.js} +1 -1
- package/dist/client/assets/{timeline-definition-Z64GVDOM-DV53IwmP.js → timeline-definition-Z64GVDOM-bQJvmJx5.js} +1 -1
- package/dist/client/assets/{toggle-BgR-G8hl.js → toggle-D10FsFoE.js} +1 -1
- package/dist/client/assets/{toggle-group-DRIEnEQy.js → toggle-group-BhzbQPEQ.js} +1 -1
- package/dist/client/assets/{tokenModePresentation-Bh3mJ9H-.js → tokenModePresentation-BkS-mry_.js} +1 -1
- package/dist/client/assets/{tooltip-CsNk2GK1.js → tooltip-BlweKBxc.js} +1 -1
- package/dist/client/assets/{treeView-Q6P3EWNA-BgFMn3HH.js → treeView-Q6P3EWNA-D4Ex5QTp.js} +1 -1
- package/dist/client/assets/{treemap-WGGIJYW6-B45XVWgo.js → treemap-WGGIJYW6-C4B6Y6qM.js} +1 -1
- package/dist/client/assets/{unplug-0SZT8Az_.js → unplug-B1dczi-t.js} +1 -1
- package/dist/client/assets/{usage-DF8oQrsy.js → usage-BBwaxMif.js} +1 -1
- package/dist/client/assets/useAppSidebarCollapsed-CFy476E3.js +1 -0
- package/dist/client/assets/useBaseUiId-DKOjzmu3.js +1 -0
- package/dist/client/assets/{useLabelableId-CTlGVpp_.js → useLabelableId-DQbY2GG1.js} +1 -1
- package/dist/client/assets/{useNavigate-xewFGSmS.js → useNavigate-B8oXtF30.js} +1 -1
- package/dist/client/assets/{usePhoneThreadActions-CuSwvIb4.js → usePhoneThreadActions-6DCLiyJ5.js} +1 -1
- package/dist/client/assets/{usePopupViewport-CCXjC0oV.js → usePopupViewport-CNWcP7Od.js} +1 -1
- package/dist/client/assets/{useScrollLock-DkiskCYn.js → useScrollLock-BbKeKZdj.js} +1 -1
- package/dist/client/assets/{useStatistics-C5V0rg9r.js → useStatistics-B76_r68I.js} +1 -1
- package/dist/client/assets/{useTriggerFocusGuards-Cd4IS7Sl.js → useTriggerFocusGuards-BC4Wb3GI.js} +1 -1
- package/dist/client/assets/{useValueChanged-DUWoN5BG.js → useValueChanged-BkTbyZdO.js} +1 -1
- package/dist/client/assets/{user-round-BtyrzbBf.js → user-round-CLy1Qy1Y.js} +1 -1
- package/dist/client/assets/{vennDiagram-T6HMQDX7-DAr5h306.js → vennDiagram-T6HMQDX7-8iiroXim.js} +1 -1
- package/dist/client/assets/{vscode-icons-LDoILSKI.js → vscode-icons-CJBVQtq5.js} +1 -1
- package/dist/client/assets/{wardley-WFR3VGLG-6MSUlbTx.js → wardley-WFR3VGLG-DpyNUbTc.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-T6FBY63Y-Bwv8xq6E.js → wardleyDiagram-T6FBY63Y-CI7is3QO.js} +1 -1
- package/dist/client/assets/{workspaceMetadataProjection-DzVpakWU.js → workspaceMetadataProjection-aqZEXDrQ.js} +1 -1
- package/dist/client/assets/{wrench-BDHgkqDa.js → wrench-7pbbxqrZ.js} +1 -1
- package/dist/client/assets/{xychartDiagram-ELKLHX3M-Be0CbWLp.js → xychartDiagram-ELKLHX3M-BTEX3m2y.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/{deviceHostWorker-CYnrwfrv.cjs → deviceHostWorker-D4HauWIV.cjs} +1 -1
- package/dist/{git-BKwGfw8A.mjs → git-9xWsJYIH.mjs} +1 -1
- package/dist/{git-Dn5wrgFY.cjs → git-xIkXFy_l.cjs} +2 -2
- package/dist/{makeManagedServerProvider-B_lPFNpL.mjs → makeManagedServerProvider-B90UKjnv.mjs} +1 -1
- package/dist/{makeManagedServerProvider-CUwxc0Pn.cjs → makeManagedServerProvider-CF776SAO.cjs} +2 -2
- package/dist/resource-monitor/ryco-resource-monitor +0 -0
- package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
- package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
- package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
- package/dist/{rolldown-runtime-LGfotAqq.cjs → rolldown-runtime-HbSU0i7K.cjs} +7 -0
- package/dist/{src-BzVJd3Me.cjs → src-CARHuYkT.cjs} +1059 -178
- package/dist/{src-7E1M4gTQ.mjs → src-CtsgPPhb.mjs} +198 -97
- package/package.json +1 -1
- package/dist/client/assets/DialogRoot-CEU7Xp57.js +0 -1
- package/dist/client/assets/architecture-7GRP2DOG-B6OTx_1D.js +0 -1
- package/dist/client/assets/channel-D_j9jK0M.js +0 -1
- package/dist/client/assets/chevron-right-D3dUAoht.js +0 -1
- package/dist/client/assets/classDiagram-JCYQIIEL-Ck79EbLj.js +0 -1
- package/dist/client/assets/classDiagram-v2-OCEON4UE-Ck79EbLj.js +0 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-COIUUd8Y.js +0 -1
- package/dist/client/assets/flowDiagram-UKHOOZJN-Cdhu8N9G.js +0 -1
- package/dist/client/assets/hostedPairing-CqhLPQqG.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DtRRa_PL.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-WQz4QHTw.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-1gkGEpqz.js +0 -1
- package/dist/client/assets/runtime-DpHhg0dl.js +0 -18
- package/dist/client/assets/square--aW0vCo4.js +0 -1
- package/dist/client/assets/stateDiagram-v2-UEYNNEHI-vKQeXqcV.js +0 -1
- package/dist/client/assets/storeSelectors-BFVEGU0F.js +0 -1
- package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-qtmvcwUS.js +0 -8
- package/dist/client/assets/useAppSidebarCollapsed-CvO9sEQ7.js +0 -1
- package/dist/client/assets/useBaseUiId-B5nK6G4h.js +0 -1
package/dist/client/assets/{ChatThreadRouteView-BnvzR19h.js → ChatThreadRouteView-DYLZFHu0.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Ut as t}from"./primary-CQh_KHGG.js";import{$l as n,Bn as r,In as i,Jr as a,Kr as o,On as s,Tn as c,Vr as l,_n as u,bn as d,ei as f,li as p,xo as m}from"./runtime-DpHhg0dl.js";import{t as h}from"./react-CwJFpaho.js";import{A as g,D as _,E as v,M as ee,N as te,O as ne,j as y,k as re,y as b}from"./switch-DgLijJhN.js";import{t as x}from"./compiler-runtime-C4g8XhC5.js";import{t as ie}from"./useNavigate-xewFGSmS.js";import{_ as ae,a as S,c as oe,d as se,g as ce,h as C,i as w,n as le,o as ue,p as de,r as T,t as fe,u as pe}from"./ChatRightPanel-B62ml3EW.js";import{D as me,O as he}from"./ContextHandoffEndpointLabel-BCNMjnEV.js";import{h as ge,m as _e,p as ve}from"./SettingsPanels.editor-zrq4ZT2j.js";import{t as ye}from"./usePresentationTier-hxB7Yv_Q.js";import{r as be}from"./desktopWorkspace-DIoIhyml.js";import"./storeSelectors-BFVEGU0F.js";import{o as xe}from"./sidebar-BIv8pHHx.js";import{t as Se}from"./useAppSidebarCollapsed-CvO9sEQ7.js";import{C as Ce,D as we,E as Te,O as Ee,S as De,T as Oe,b as ke,k as Ae,o as je,u as Me,w as Ne,y as Pe}from"./main-DsnAjTqg.js";var Fe=x(),E=e(h(),1),D=n();function Ie(e,t,n=``,r=[],i=[]){if(e.kind===`thread`)r.push({ref:e.ref,rect:t});else{i.push({path:n,node:e,rect:t});let a=e.axis===`horizontal`;Ie(e.first,{...t,width:a?t.width*e.ratio:t.width,height:a?t.height:t.height*e.ratio},`${n}0`,r,i),Ie(e.second,{left:t.left+(a?t.width*e.ratio:0),top:t.top+(a?0:t.height*e.ratio),width:a?t.width*(1-e.ratio):t.width,height:a?t.height:t.height*(1-e.ratio)},`${n}1`,r,i)}return{leaves:r,dividers:i}}function Le(e){let t=(0,Fe.c)(5),{threadRef:n,index:i}=e,a;t[0]===n?a=t[1]:(a=e=>s(e,n)?.title,t[0]=n,t[1]=a);let o=r(a),c=i+1,l=o??`Thread`,u;return t[2]!==c||t[3]!==l?(u=(0,D.jsxs)(`span`,{className:`block truncate`,children:[c,` · `,l]}),t[2]=c,t[3]=l,t[4]=u):u=t[4],u}function O(e){let t=(0,Fe.c)(16),{threadRef:n,focused:r,children:i,guards:a,inSplit:o}=e,s,c;t[0]!==n.environmentId||t[1]!==n.threadId?(s=()=>be(n.environmentId,n.threadId),c=[n.environmentId,n.threadId],t[0]=n.environmentId,t[1]=n.threadId,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,E.useEffect)(s,c);let l;t[4]!==a||t[5]!==n?(l=e=>{let t=y(n),r=a.get(t)??new Set;return r.add(e),a.set(t,r),()=>{r.delete(e),r.size||a.delete(t)}},t[4]=a,t[5]=n,t[6]=l):l=t[6];let u=l,d=o?n:null,f;t[7]!==i||t[8]!==u?(f=(0,D.jsx)(ve,{value:u,children:i}),t[7]=i,t[8]=u,t[9]=f):f=t[9];let p;t[10]!==r||t[11]!==f?(p=(0,D.jsx)(_e,{value:r,children:f}),t[10]=r,t[11]=f,t[12]=p):p=t[12];let m;return t[13]!==d||t[14]!==p?(m=(0,D.jsx)(ge,{value:d,children:p}),t[13]=d,t[14]=p,t[15]=m):m=t[15],m}function Re(e){let t=(0,Fe.c)(3),{threadRef:n,children:a}=e,o;t[0]===n?o=t[1]:(o=e=>i(e,n)&&!s(e,n)?.archivedAt,t[0]=n,t[1]=o);let c=r(o),l=ce(n);if(!c&&!l){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,D.jsx)(`div`,{className:`m-auto p-4 text-center text-sm text-muted-foreground`,role:`status`,children:`Thread unavailable. Reconnect to its machine or close this pane.`}),t[2]=e):e=t[2],e}return a}function ze({threadRef:e,children:t,enabled:n=!0}){let r=b(e=>e.root),i=(0,E.useMemo)(()=>n&&r&&re(r,e)?r:{kind:`thread`,ref:e},[n,r,e]),s=i.kind===`split`,c=ie(),l=m(),u=(0,E.useRef)(null),[d,f]=(0,E.useState)(!1),[p,h]=(0,E.useState)(null),[x,ae]=(0,E.useState)(null),S=(0,E.useRef)(null),oe=(0,E.useRef)(i);(0,E.useLayoutEffect)(()=>{oe.current=i},[i]);let[se]=(0,E.useState)(()=>new Map),ce=(0,E.useRef)(null);(0,E.useLayoutEffect)(()=>{let e=new AbortController;return ce.current=e,()=>e.abort()},[]);let C=(0,E.useRef)(!1),w=(0,E.useRef)(null),le=(0,E.useRef)(!0);(0,E.useLayoutEffect)(()=>(le.current=!0,()=>{le.current=!1}),[]);let ue=(0,E.useCallback)(async t=>{if(y(t)===y(e))return;let n=l.buildLocation({to:`/$environmentId/$threadId`,params:a(t)});await je(n.pathname,()=>c({to:`/$environmentId/$threadId`,params:a(t)}),ce.current.signal)},[ce,c,l,e]);(0,E.useEffect)(()=>(b.getState().setActiveRef(n?e:null),()=>b.getState().setActiveRef(null)),[n,e]),(0,E.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>f(e.clientWidth<900||e.clientHeight<520);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let de=async t=>{if(C.current)return;C.current=!0;let n=oe.current;try{for(let e of se.get(y(t))??[])if(!await e()){o.add({type:`warning`,title:`Finish or discard this pane’s unsent selection draft before closing it`});return}if(!await Me()){o.add({type:`error`,title:`Editor changes could not be saved`,description:`This pane and its draft are preserved. Resolve the error in File Preview before closing.`});return}if(oe.current!==n)return;let r=_(n,t);if(!r)return;if(y(t)===y(e)){let e=ee(r)[0];await ue(e);let t=l.buildLocation({to:`/$environmentId/$threadId`,params:a(e)});if(l.state.location.pathname!==t.pathname)return}b.getState().root===n&&b.getState().setRoot(r)}catch{o.add({type:`error`,title:`Could not close the pane`,description:`The pane and its draft are preserved.`})}finally{C.current=!1}},T=async(e,t)=>{if(!C.current){C.current=!0;try{await ue(e);let n=l.buildLocation({to:`/$environmentId/$threadId`,params:a(e)});if(!le.current)return;l.state.location.pathname===n.pathname&&t?.isConnected?t.focus({preventScroll:!0}):w.current?.isConnected&&w.current.focus({preventScroll:!0})}catch{o.add({type:`error`,title:`Could not activate the thread pane`}),le.current&&w.current?.focus({preventScroll:!0})}finally{C.current=!1}}},fe=Ie(x??i,{left:0,top:0,width:100,height:100});return(0,D.jsxs)(`div`,{ref:u,"data-chat-panes":!0,className:`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[s&&d?(0,D.jsx)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-b p-1`,role:`tablist`,"aria-label":`Split threads`,children:fe.leaves.map(({ref:t},n)=>(0,D.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":y(t)===y(e),className:`rounded px-3 py-1 text-xs aria-selected:bg-accent`,onClick:()=>void T(t),children:(0,D.jsx)(Le,{threadRef:t,index:n})},y(t)))}):null,(0,D.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[fe.leaves.map(({ref:r,rect:i},a)=>{let o=y(r),c=o===y(e),l=!s||!d||c;return(0,D.jsxs)(`section`,{"data-pane-thread":o,"data-pane-focused":c,"aria-label":`Thread pane ${a+1}`,className:`absolute flex min-h-0 min-w-0 flex-col overflow-hidden bg-background`,hidden:!l,inert:!l||void 0,style:{display:l?void 0:`none`,left:`${d?0:i.left}%`,top:`${d?0:i.top}%`,width:`${d?100:i.width}%`,height:`${d?100:i.height}%`},onPointerDownCapture:e=>{if(c||e.target instanceof Element&&e.target.closest(`[data-pane-close]`))return;let t=e.target instanceof HTMLElement?e.target:null;t?.closest(`[draggable=true]`)||e.preventDefault(),T(r,t)},onFocusCapture:e=>{if(e.target.closest(`[data-pane-close]`))return;if(c){w.current=e.target;return}let t=e.target;t.blur(),w.current?.focus({preventScroll:!0}),T(r,t)},onClickCapture:e=>{!c&&!(e.target instanceof Element&&e.target.closest(`[data-pane-close]`))&&(e.preventDefault(),e.stopPropagation())},onDragOver:e=>{if(!n||!e.dataTransfer.types.includes(`application/x-ryco-thread-pane`)||d&&s)return;e.preventDefault(),e.stopPropagation();let t=g(e.currentTarget.getBoundingClientRect(),e.clientX,e.clientY);t&&h({key:o,side:t})},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||h(null)},onDrop:e=>{if(!n||!e.dataTransfer.types.includes(`application/x-ryco-thread-pane`))return;e.preventDefault(),e.stopPropagation(),h(null);let t=g(e.currentTarget.getBoundingClientRect(),e.clientX,e.clientY);try{let n=ne(JSON.parse(e.dataTransfer.getData(v)));n&&t&&b.getState().open(n,t,r)}catch{}},children:[s?(0,D.jsxs)(`div`,{className:`flex h-7 shrink-0 items-center justify-between border-b px-2 text-xs ${c?`bg-accent text-accent-foreground`:`text-muted-foreground`}`,children:[(0,D.jsx)(`button`,{type:`button`,draggable:!d,className:`min-w-0 flex-1 truncate text-left`,"aria-label":`Focus pane ${a+1}`,onClick:()=>void T(r),onDragStart:e=>{e.dataTransfer.setData(v,JSON.stringify(r)),e.dataTransfer.effectAllowed=`move`},onDragEnd:()=>h(null),children:(0,D.jsx)(Le,{threadRef:r,index:a})}),(0,D.jsx)(`button`,{type:`button`,"data-pane-close":!0,"aria-label":`Close pane ${a+1}`,className:`px-2 hover:bg-muted`,onClick:e=>{e.stopPropagation(),de(r)},children:`×`})]}):null,(0,D.jsx)(O,{threadRef:r,focused:c&&l,guards:se,inSplit:s,children:t(r,c&&l)}),p?.key===o?(0,D.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute z-50 border-2 border-primary bg-primary/10`,style:{left:p.side===`right`?`50%`:0,top:p.side===`bottom`?`50%`:0,width:p.side===`left`||p.side===`right`?`50%`:`100%`,height:p.side===`top`||p.side===`bottom`?`50%`:`100%`}}):null]},o)}),!d&&fe.dividers.map(e=>{let{node:t,rect:n,path:r}=e,a=t.axis===`horizontal`;return(0,D.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-label":`Resize thread panes`,"aria-orientation":a?`vertical`:`horizontal`,"aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":Math.round(t.ratio*100),className:`absolute z-40 touch-none bg-border hover:bg-primary focus-visible:bg-primary ${a?`cursor-col-resize`:`cursor-row-resize`}`,style:{left:a?`calc(${n.left+n.width*t.ratio}% - 2px)`:`${n.left}%`,top:a?`${n.top}%`:`calc(${n.top+n.height*t.ratio}% - 2px)`,width:a?4:`${n.width}%`,height:a?`${n.height}%`:4},onKeyDown:e=>{let n=a?`ArrowLeft`:`ArrowUp`,o=a?`ArrowRight`:`ArrowDown`;[n,o,`Home`,`End`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),b.getState().setRoot(te(i,r,e.key===`Home`?.25:e.key===`End`?.75:t.ratio+(e.key===o?.05:-.05))))},onPointerDown:t=>{t.button===0&&u.current&&(t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),S.current={divider:e,bounds:t.currentTarget.parentElement.getBoundingClientRect(),original:i,current:i,pointerId:t.pointerId})},onPointerMove:e=>{let t=S.current;if(!t||t.pointerId!==e.pointerId)return;let i=((a?(e.clientX-t.bounds.left)/t.bounds.width*100:(e.clientY-t.bounds.top)/t.bounds.height*100)-(a?n.left:n.top))/(a?n.width:n.height);t.current=te(t.original,r,i),ae(t.current)},onPointerUp:()=>{let e=S.current;S.current=null,ae(null),e&&b.getState().root===e.original&&b.getState().setRoot(e.current)},onLostPointerCapture:()=>{S.current=null,ae(null)},onPointerCancel:()=>{S.current=null,ae(null)}},r)})]})]})}function Be(e){let n=(0,Fe.c)(211),{threadRef:o,search:s}=e;me(`ChatThreadRouteView`);let m=ie(),h=ye(),g=o?`${o.environmentId}:${o.threadId}`:null,_=o?.environmentId??null,v=o?.threadId??null,ee;n[0]!==m||n[1]!==o?(ee=e=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),replace:!0,search:e})},n[0]=m,n[1]=o,n[2]=ee):ee=n[2];let te=ee,ne;n[3]!==g||n[4]!==te||n[5]!==s?(ne={threadKey:g,search:s,replaceSearch:te},n[3]=g,n[4]=te,n[5]=s,n[6]=ne):ne=n[6];let y=se(ne),x;n[7]===o?.environmentId?x=n[8]:(x=e=>c(e,o?.environmentId??null).bootstrapComplete,n[7]=o?.environmentId,n[8]=x);let T=r(x),ge;n[9]===o?ge=n[10]:(ge=d(o),n[9]=o,n[10]=ge);let _e=r(ge),ve;n[11]===o?ve=n[12]:(ve=e=>i(e,o),n[11]=o,n[12]=ve);let je=r(ve),Me;n[13]===o?.environmentId?Me=n[14]:(Me=e=>c(e,o?.environmentId??null).threadIds.length>0,n[13]=o?.environmentId,n[14]=Me);let Ie=r(Me),Le=l(Ge),O;n[15]!==Le||n[16]!==o?.environmentId?(O=()=>u(o?.environmentId??null,Le),n[15]=Le,n[16]=o?.environmentId,n[17]=O):O=n[17],o?.environmentId;let Be;n[18]===O?Be=n[19]:(Be=O(),n[18]=O,n[19]=Be);let Ke=r(Be),qe=ce(o),Je=C(o),Ye=ae(o?.environmentId),Xe=b(We),Ze;n[20]!==Xe||n[21]!==h||n[22]!==o?(Ze=h!==`phone`&&!!o&&!!Xe&&re(Xe,o),n[20]=Xe,n[21]=h,n[22]=o,n[23]=Ze):Ze=n[23];let Qe=Ze,$e=je||qe,et;n[24]===_e?et=n[25]:(et=oe(_e),n[24]=_e,n[25]=et);let k=et,tt=Ie||Ye,nt=Qe||$e&&(qe||T||_e!==void 0),A=y.diff===`1`,j=y.preview===`1`,rt;n[26]===y?rt=n[27]:(rt=Pe(y),n[26]=y,n[27]=rt);let M=rt,it;n[28]===y?it=n[29]:(it=ke(y),n[28]=y,n[29]=it);let N=it,P=y.workspaceTab===`agent`&&y.workspaceAgentKey?y.workspaceAgentKey:null,at=he(pe),ot;n[30]===g?ot=n[31]:(ot=e=>g?e.pendingOpenByThreadKey[g]:void 0,n[30]=g,n[31]=ot);let st=t(ot),ct=t(Ue),lt=Se(),ut=!at&&h!==`phone`,dt;n[32]!==g||n[33]!==N||n[34]!==ut?(dt={threadKey:g,open:N,canMaximize:ut},n[32]=g,n[33]=N,n[34]=ut,n[35]=dt):dt=n[35];let{maximized:F,toggleMaximized:ft}=de(dt),pt;n[36]!==P||n[37]!==g||n[38]!==A||n[39]!==j||n[40]!==M?(pt=()=>({threadKey:g,hasOpenedDiff:A,hasOpenedPreview:j,hasOpenedTerminal:M===`terminal`,hasOpenedSimulator:M===`simulator`,hasOpenedBrowser:M===`browser`,hasOpenedAgents:M===`agents`,openedAgentKeys:P?[P]:[]}),n[36]=P,n[37]=g,n[38]=A,n[39]=j,n[40]=M,n[41]=pt):pt=n[41];let[I,mt]=(0,E.useState)(pt),ht,gt;n[42]!==_||n[43]!==v?(ht=()=>{if(_&&v)return be(_,v)},gt=[_,v],n[42]=_,n[43]=v,n[44]=ht,n[45]=gt):(ht=n[44],gt=n[45]),(0,E.useEffect)(ht,gt);let _t,vt;n[46]!==ct||n[47]!==m||n[48]!==st||n[49]!==h||n[50]!==o?(_t=()=>{o&&st&&h!==`phone`&&(ct(o.environmentId,o.threadId),m({to:`/$environmentId/$threadId`,params:a(o),search:He}))},vt=[ct,m,st,h,o],n[46]=ct,n[47]=m,n[48]=st,n[49]=h,n[50]=o,n[51]=_t,n[52]=vt):(_t=n[51],vt=n[52]),(0,E.useEffect)(_t,vt);let L=I.threadKey===g?I.hasOpenedDiff:A,R=I.threadKey===g?I.hasOpenedPreview:j,z=I.threadKey===g?I.hasOpenedTerminal:M===`terminal`,B=I.threadKey===g?I.hasOpenedSimulator:M===`simulator`,V=I.threadKey===g?I.hasOpenedBrowser:M===`browser`,H=I.threadKey===g?I.hasOpenedAgents:M===`agents`,yt;n[53]!==P||n[54]!==g||n[55]!==I.openedAgentKeys||n[56]!==I.threadKey?(yt=I.threadKey===g?I.openedAgentKeys:P?[P]:[],n[53]=P,n[54]=g,n[55]=I.openedAgentKeys,n[56]=I.threadKey,n[57]=yt):yt=n[57];let bt=yt,xt;n[58]!==P||n[59]!==bt?(xt=P&&!bt.includes(P)?[...bt,P]:bt,n[58]=P,n[59]=bt,n[60]=xt):xt=n[60];let U=xt,St;n[61]===M?St=n[62]:(St=()=>M??`review`,n[61]=M,n[62]=St);let[W,Ct]=(0,E.useState)(St),G;n[63]!==H||n[64]!==V||n[65]!==L||n[66]!==R||n[67]!==B||n[68]!==z||n[69]!==M?(G=[],(R||M===`files`)&&G.push(`files`),(L||M===`review`)&&G.push(`review`),(z||M===`terminal`)&&G.push(`terminal`),(B||M===`simulator`)&&G.push(`simulator`),(V||M===`browser`)&&G.push(`browser`),(H||M===`agents`)&&G.push(`agents`),n[63]=H,n[64]=V,n[65]=L,n[66]=R,n[67]=B,n[68]=z,n[69]=M,n[70]=G):G=n[70];let K=G,wt;n[71]!==g||n[72]!==A||n[73]!==U||n[74]!==j||n[75]!==M?(wt=e=>{Ct(e),mt(t=>{let n={threadKey:g,hasOpenedDiff:(t.threadKey===g?t.hasOpenedDiff:A)||e===`review`,hasOpenedPreview:(t.threadKey===g?t.hasOpenedPreview:j)||e===`files`,hasOpenedTerminal:(t.threadKey===g?t.hasOpenedTerminal:M===`terminal`)||e===`terminal`,hasOpenedSimulator:(t.threadKey===g?t.hasOpenedSimulator:M===`simulator`)||e===`simulator`,hasOpenedBrowser:(t.threadKey===g?t.hasOpenedBrowser:M===`browser`)||e===`browser`,hasOpenedAgents:(t.threadKey===g?t.hasOpenedAgents:M===`agents`)||e===`agents`,openedAgentKeys:t.threadKey===g?t.openedAgentKeys:U};return t.threadKey===n.threadKey&&t.hasOpenedDiff===n.hasOpenedDiff&&t.hasOpenedPreview===n.hasOpenedPreview&&t.hasOpenedTerminal===n.hasOpenedTerminal&&t.hasOpenedSimulator===n.hasOpenedSimulator&&t.hasOpenedBrowser===n.hasOpenedBrowser&&t.hasOpenedAgents===n.hasOpenedAgents&&t.openedAgentKeys===n.openedAgentKeys?t:n})},n[71]=g,n[72]=A,n[73]=U,n[74]=j,n[75]=M,n[76]=wt):wt=n[76];let q=wt,Tt;n[77]!==m||n[78]!==o?(Tt=()=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),search:Ve})},n[77]=m,n[78]=o,n[79]=Tt):Tt=n[79];let J=Tt,Et;n[80]!==H||n[81]!==V||n[82]!==L||n[83]!==R||n[84]!==B||n[85]!==z||n[86]!==W||n[87]!==m||n[88]!==U||n[89]!==o?(Et=()=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),search:e=>{let t=U[U.length-1];return W===`agent`&&t?De(e,t):W===`files`&&R?Oe(e):W===`review`&&L?Te(e):W===`terminal`&&z?Ee(e):W===`simulator`&&B?we(e):W===`browser`&&V?Ne(e):W===`agents`&&H?Ce(e):R?Oe(e):L?Te(e):z?Ee(e):B?we(e):V?Ne(e):H?Ce(e):t?De(e,t):Ae(e)}})},n[80]=H,n[81]=V,n[82]=L,n[83]=R,n[84]=B,n[85]=z,n[86]=W,n[87]=m,n[88]=U,n[89]=o,n[90]=Et):Et=n[90];let Y=Et,Dt;n[91]!==J||n[92]!==Y||n[93]!==N?(Dt=()=>{if(N){J();return}Y()},n[91]=J,n[92]=Y,n[93]=N,n[94]=Dt):Dt=n[94];let X=Dt,Ot;n[95]!==P||n[96]!==g||n[97]!==H||n[98]!==V||n[99]!==L||n[100]!==R||n[101]!==B||n[102]!==z||n[103]!==m||n[104]!==U||n[105]!==M||n[106]!==o?(Ot=e=>{if(!o)return;if(e.mode===`agent`){let t=U.filter(t=>t!==e.agentKey);mt(e=>({threadKey:g,hasOpenedDiff:e.threadKey===g?e.hasOpenedDiff:L,hasOpenedPreview:e.threadKey===g?e.hasOpenedPreview:R,hasOpenedTerminal:e.threadKey===g?e.hasOpenedTerminal:z,hasOpenedSimulator:e.threadKey===g?e.hasOpenedSimulator:B,hasOpenedBrowser:e.threadKey===g?e.hasOpenedBrowser:V,hasOpenedAgents:e.threadKey===g?e.hasOpenedAgents:H,openedAgentKeys:t})),M===`agent`&&P===e.agentKey&&m({to:`/$environmentId/$threadId`,params:a(o),search:e=>{let n=t[t.length-1];return n?De(e,n):R?Oe(e):L?Te(e):z?Ee(e):B?we(e):V?Ne(e):H?Ce(e):Ae(e)}});return}let t=e.mode===`review`?!1:L||M===`review`,n=e.mode===`files`?!1:R||M===`files`,r=e.mode===`terminal`?!1:z||M===`terminal`,i=e.mode===`simulator`?!1:B||M===`simulator`,s=e.mode===`browser`?!1:V||M===`browser`,c=e.mode===`agents`?!1:H||M===`agents`;mt(e=>{let a={threadKey:g,hasOpenedDiff:t,hasOpenedPreview:n,hasOpenedTerminal:r,hasOpenedSimulator:i,hasOpenedBrowser:s,hasOpenedAgents:c,openedAgentKeys:e.threadKey===g?e.openedAgentKeys:U};return e.threadKey===a.threadKey&&e.hasOpenedDiff===a.hasOpenedDiff&&e.hasOpenedPreview===a.hasOpenedPreview&&e.hasOpenedTerminal===a.hasOpenedTerminal&&e.hasOpenedSimulator===a.hasOpenedSimulator&&e.hasOpenedBrowser===a.hasOpenedBrowser&&e.hasOpenedAgents===a.hasOpenedAgents&&e.openedAgentKeys===a.openedAgentKeys?e:a}),M===e.mode&&m({to:`/$environmentId/$threadId`,params:a(o),search:a=>e.mode!==`files`&&n?Oe(a):e.mode!==`review`&&t?Te(a):e.mode!==`terminal`&&r?Ee(a):e.mode!==`simulator`&&i?we(a):e.mode!==`browser`&&s?Ne(a):e.mode!==`agents`&&c?Ce(a):Ae(a)})},n[95]=P,n[96]=g,n[97]=H,n[98]=V,n[99]=L,n[100]=R,n[101]=B,n[102]=z,n[103]=m,n[104]=U,n[105]=M,n[106]=o,n[107]=Ot):Ot=n[107];let Z=Ot,kt,At;n[108]!==q||n[109]!==M?(kt=()=>{M!==null&&(Ct(M),q(M))},At=[q,M],n[108]=q,n[109]=M,n[110]=kt,n[111]=At):(kt=n[110],At=n[111]),(0,E.useEffect)(kt,At);let jt,Mt;n[112]!==P||n[113]!==g||n[114]!==A||n[115]!==H||n[116]!==V||n[117]!==L||n[118]!==R||n[119]!==B||n[120]!==z||n[121]!==j||n[122]!==M?(jt=()=>{g&&P&&mt(e=>{let t=e.threadKey===g?e.openedAgentKeys:[];return t.includes(P)?e.threadKey===g?e:{threadKey:g,hasOpenedDiff:L,hasOpenedPreview:R,hasOpenedTerminal:z,hasOpenedSimulator:B,hasOpenedBrowser:V,hasOpenedAgents:H,openedAgentKeys:t}:{threadKey:g,hasOpenedDiff:e.threadKey===g?e.hasOpenedDiff:A,hasOpenedPreview:e.threadKey===g?e.hasOpenedPreview:j,hasOpenedTerminal:e.threadKey===g?e.hasOpenedTerminal:M===`terminal`,hasOpenedSimulator:e.threadKey===g?e.hasOpenedSimulator:M===`simulator`,hasOpenedBrowser:e.threadKey===g?e.hasOpenedBrowser:M===`browser`,hasOpenedAgents:e.threadKey===g?e.hasOpenedAgents:M===`agents`,openedAgentKeys:[...t,P]}})},Mt=[P,g,A,H,L,R,B,V,z,j,M],n[112]=P,n[113]=g,n[114]=A,n[115]=H,n[116]=V,n[117]=L,n[118]=R,n[119]=B,n[120]=z,n[121]=j,n[122]=M,n[123]=jt,n[124]=Mt):(jt=n[123],Mt=n[124]),(0,E.useEffect)(jt,Mt);let Nt,Pt;n[125]!==T||n[126]!==tt||n[127]!==Ke||n[128]!==m||n[129]!==Qe||n[130]!==$e||n[131]!==o?(Nt=()=>{o&&T&&!Qe&&!$e&&tt&&m(Ke?{to:`/$environmentId/$threadId`,params:a(Ke),replace:!0}:{to:`/`,replace:!0})},Pt=[T,tt,Ke,m,$e,Qe,o],n[125]=T,n[126]=tt,n[127]=Ke,n[128]=m,n[129]=Qe,n[130]=$e,n[131]=o,n[132]=Nt,n[133]=Pt):(Nt=n[132],Pt=n[133]),(0,E.useEffect)(Nt,Pt);let Ft;n[134]!==Je?.promotedTo||n[135]!==k||n[136]!==o?(Ft=()=>{o&&k&&Je?.promotedTo&&p(o)},n[134]=Je?.promotedTo,n[135]=k,n[136]=o,n[137]=Ft):Ft=n[137];let It=Je?.promotedTo,Lt;if(n[138]!==k||n[139]!==It||n[140]!==o?(Lt=[It,k,o],n[138]=k,n[139]=It,n[140]=o,n[141]=Lt):Lt=n[141],(0,E.useEffect)(Ft,Lt),!o||!nt)return null;let Q=N||M===`review`||L||M===`files`||R||M===`terminal`||z||M===`simulator`||B||M===`browser`||V||M===`agents`||H||M===`agent`||U.length>0,Rt=N||M===`review`||L||M===`files`||R||M===`terminal`||z||M===`agent`||U.length>0,$=N?M:W;if(h===`phone`){let e;n[142]!==q||n[143]!==N||n[144]!==o||n[145]!==X?(e=()=>(0,D.jsx)(Re,{threadRef:o,children:(0,D.jsx)(w,{environmentId:o.environmentId,threadId:o.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:N,onToggleWorkspacePanel:X,routeKind:`server`})}),n[142]=q,n[143]=N,n[144]=o,n[145]=X,n[146]=e):e=n[146];let t;n[147]!==e||n[148]!==o?(t=(0,D.jsx)(xe,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,D.jsx)(ze,{threadRef:o,enabled:!1,children:e})}),n[147]=e,n[148]=o,n[149]=t):t=n[149];let r;n[150]!==Z||n[151]!==$||n[152]!==U||n[153]!==K||n[154]!==Rt?(r=Rt?(0,D.jsx)(fe,{mode:`phone`,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z}):null,n[150]=Z,n[151]=$,n[152]=U,n[153]=K,n[154]=Rt,n[155]=r):r=n[155];let i;n[156]!==J||n[157]!==N||n[158]!==r?(i=(0,D.jsx)(ue,{label:`Workspace`,open:N,onClose:J,children:r}),n[156]=J,n[157]=N,n[158]=r,n[159]=i):i=n[159];let a;return n[160]!==t||n[161]!==i?(a=(0,D.jsxs)(D.Fragment,{children:[t,i]}),n[160]=t,n[161]=i,n[162]=a):a=n[162],a}if(!at){let e=F&&`w-0 flex-none`,t;n[163]===e?t=n[164]:(t=f(`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,e),n[163]=e,n[164]=t);let r=F?!0:void 0,i;n[165]!==q||n[166]!==N||n[167]!==X?(i=(e,t)=>(0,D.jsx)(Re,{threadRef:e,children:(0,D.jsx)(w,{environmentId:e.environmentId,threadId:e.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:t&&N,onToggleWorkspacePanel:()=>{t&&X()},routeKind:`server`,reserveTitleBarControlInset:t})}),n[165]=q,n[166]=N,n[167]=X,n[168]=i):i=n[168];let a;n[169]!==i||n[170]!==o?(a=(0,D.jsx)(ze,{threadRef:o,children:i}),n[169]=i,n[170]=o,n[171]=a):a=n[171];let s;n[172]!==t||n[173]!==r||n[174]!==a?(s=(0,D.jsx)(xe,{className:t,inert:r,children:a}),n[172]=t,n[173]=r,n[174]=a,n[175]=s):s=n[175];let c=F&<,l;n[176]!==Z||n[177]!==J||n[178]!==$||n[179]!==Y||n[180]!==U||n[181]!==K||n[182]!==F||n[183]!==N||n[184]!==Q||n[185]!==c||n[186]!==ft?(l=(0,D.jsx)(le,{open:N,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z,onClose:J,onOpen:Y,renderContent:Q,maximized:F,onToggleMaximized:ft,reserveChromeInset:c}),n[176]=Z,n[177]=J,n[178]=$,n[179]=Y,n[180]=U,n[181]=K,n[182]=F,n[183]=N,n[184]=Q,n[185]=c,n[186]=ft,n[187]=l):l=n[187];let u;return n[188]!==s||n[189]!==l?(u=(0,D.jsxs)(D.Fragment,{children:[s,l]}),n[188]=s,n[189]=l,n[190]=u):u=n[190],u}let zt;n[191]!==q||n[192]!==N||n[193]!==X?(zt=(e,t)=>(0,D.jsx)(Re,{threadRef:e,children:(0,D.jsx)(w,{environmentId:e.environmentId,threadId:e.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:t&&N,onToggleWorkspacePanel:()=>{t&&X()},routeKind:`server`,reserveTitleBarControlInset:t})}),n[191]=q,n[192]=N,n[193]=X,n[194]=zt):zt=n[194];let Bt;n[195]!==zt||n[196]!==o?(Bt=(0,D.jsx)(xe,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,D.jsx)(ze,{threadRef:o,children:zt})}),n[195]=zt,n[196]=o,n[197]=Bt):Bt=n[197];let Vt;n[198]!==Z||n[199]!==$||n[200]!==U||n[201]!==K||n[202]!==Q?(Vt=Q?(0,D.jsx)(fe,{mode:`sheet`,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z}):null,n[198]=Z,n[199]=$,n[200]=U,n[201]=K,n[202]=Q,n[203]=Vt):Vt=n[203];let Ht;n[204]!==J||n[205]!==N||n[206]!==Vt?(Ht=(0,D.jsx)(S,{open:N,onClose:J,children:Vt}),n[204]=J,n[205]=N,n[206]=Vt,n[207]=Ht):Ht=n[207];let Ut;return n[208]!==Bt||n[209]!==Ht?(Ut=(0,D.jsxs)(D.Fragment,{children:[Bt,Ht]}),n[208]=Bt,n[209]=Ht,n[210]=Ut):Ut=n[210],Ut}function Ve(e){return T(e)}function He(e){return we(e)}function Ue(e){return e.consumeOpenRequest}function We(e){return e.root}function Ge(e){return e.sidebarThreadSortOrder}export{Be as ChatThreadRouteView};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Ut as t}from"./primary-DZjgHvyf.js";import{$l as n,Bn as r,In as i,Jr as a,Kr as o,On as s,Tn as c,Vr as l,_n as u,bn as d,ei as f,li as p,xo as m}from"./runtime-BwHA1GUS.js";import{t as h}from"./react-CwJFpaho.js";import{A as g,D as _,E as v,M as ee,N as te,O as ne,j as y,k as re,y as b}from"./switch-DnpJB2xv.js";import{t as x}from"./compiler-runtime-C4g8XhC5.js";import{t as ie}from"./useNavigate-B8oXtF30.js";import{_ as ae,a as S,c as oe,d as se,g as ce,h as C,i as w,n as le,o as ue,p as de,r as T,t as fe,u as pe}from"./ChatRightPanel-CygpcJiF.js";import{D as me,O as he}from"./ContextHandoffEndpointLabel-CeGDLNA4.js";import{h as ge,m as _e,p as ve}from"./SettingsPanels.editor-Dkva9gX_.js";import{t as ye}from"./usePresentationTier-hxB7Yv_Q.js";import{r as be}from"./desktopWorkspace-_iM6B9Kf.js";import"./storeSelectors-CTDWheMy.js";import{o as xe}from"./sidebar-Cc6ANbOP.js";import{t as Se}from"./useAppSidebarCollapsed-CFy476E3.js";import{C as Ce,D as we,E as Te,O as Ee,S as De,T as Oe,b as ke,k as Ae,o as je,u as Me,w as Ne,y as Pe}from"./main-DAbEANjY.js";var Fe=x(),E=e(h(),1),D=n();function Ie(e,t,n=``,r=[],i=[]){if(e.kind===`thread`)r.push({ref:e.ref,rect:t});else{i.push({path:n,node:e,rect:t});let a=e.axis===`horizontal`;Ie(e.first,{...t,width:a?t.width*e.ratio:t.width,height:a?t.height:t.height*e.ratio},`${n}0`,r,i),Ie(e.second,{left:t.left+(a?t.width*e.ratio:0),top:t.top+(a?0:t.height*e.ratio),width:a?t.width*(1-e.ratio):t.width,height:a?t.height:t.height*(1-e.ratio)},`${n}1`,r,i)}return{leaves:r,dividers:i}}function Le(e){let t=(0,Fe.c)(5),{threadRef:n,index:i}=e,a;t[0]===n?a=t[1]:(a=e=>s(e,n)?.title,t[0]=n,t[1]=a);let o=r(a),c=i+1,l=o??`Thread`,u;return t[2]!==c||t[3]!==l?(u=(0,D.jsxs)(`span`,{className:`block truncate`,children:[c,` · `,l]}),t[2]=c,t[3]=l,t[4]=u):u=t[4],u}function O(e){let t=(0,Fe.c)(16),{threadRef:n,focused:r,children:i,guards:a,inSplit:o}=e,s,c;t[0]!==n.environmentId||t[1]!==n.threadId?(s=()=>be(n.environmentId,n.threadId),c=[n.environmentId,n.threadId],t[0]=n.environmentId,t[1]=n.threadId,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,E.useEffect)(s,c);let l;t[4]!==a||t[5]!==n?(l=e=>{let t=y(n),r=a.get(t)??new Set;return r.add(e),a.set(t,r),()=>{r.delete(e),r.size||a.delete(t)}},t[4]=a,t[5]=n,t[6]=l):l=t[6];let u=l,d=o?n:null,f;t[7]!==i||t[8]!==u?(f=(0,D.jsx)(ve,{value:u,children:i}),t[7]=i,t[8]=u,t[9]=f):f=t[9];let p;t[10]!==r||t[11]!==f?(p=(0,D.jsx)(_e,{value:r,children:f}),t[10]=r,t[11]=f,t[12]=p):p=t[12];let m;return t[13]!==d||t[14]!==p?(m=(0,D.jsx)(ge,{value:d,children:p}),t[13]=d,t[14]=p,t[15]=m):m=t[15],m}function Re(e){let t=(0,Fe.c)(3),{threadRef:n,children:a}=e,o;t[0]===n?o=t[1]:(o=e=>i(e,n)&&!s(e,n)?.archivedAt,t[0]=n,t[1]=o);let c=r(o),l=ce(n);if(!c&&!l){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,D.jsx)(`div`,{className:`m-auto p-4 text-center text-sm text-muted-foreground`,role:`status`,children:`Thread unavailable. Reconnect to its machine or close this pane.`}),t[2]=e):e=t[2],e}return a}function ze({threadRef:e,children:t,enabled:n=!0}){let r=b(e=>e.root),i=(0,E.useMemo)(()=>n&&r&&re(r,e)?r:{kind:`thread`,ref:e},[n,r,e]),s=i.kind===`split`,c=ie(),l=m(),u=(0,E.useRef)(null),[d,f]=(0,E.useState)(!1),[p,h]=(0,E.useState)(null),[x,ae]=(0,E.useState)(null),S=(0,E.useRef)(null),oe=(0,E.useRef)(i);(0,E.useLayoutEffect)(()=>{oe.current=i},[i]);let[se]=(0,E.useState)(()=>new Map),ce=(0,E.useRef)(null);(0,E.useLayoutEffect)(()=>{let e=new AbortController;return ce.current=e,()=>e.abort()},[]);let C=(0,E.useRef)(!1),w=(0,E.useRef)(null),le=(0,E.useRef)(!0);(0,E.useLayoutEffect)(()=>(le.current=!0,()=>{le.current=!1}),[]);let ue=(0,E.useCallback)(async t=>{if(y(t)===y(e))return;let n=l.buildLocation({to:`/$environmentId/$threadId`,params:a(t)});await je(n.pathname,()=>c({to:`/$environmentId/$threadId`,params:a(t)}),ce.current.signal)},[ce,c,l,e]);(0,E.useEffect)(()=>(b.getState().setActiveRef(n?e:null),()=>b.getState().setActiveRef(null)),[n,e]),(0,E.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=()=>f(e.clientWidth<900||e.clientHeight<520);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let de=async t=>{if(C.current)return;C.current=!0;let n=oe.current;try{for(let e of se.get(y(t))??[])if(!await e()){o.add({type:`warning`,title:`Finish or discard this pane’s unsent selection draft before closing it`});return}if(!await Me()){o.add({type:`error`,title:`Editor changes could not be saved`,description:`This pane and its draft are preserved. Resolve the error in File Preview before closing.`});return}if(oe.current!==n)return;let r=_(n,t);if(!r)return;if(y(t)===y(e)){let e=ee(r)[0];await ue(e);let t=l.buildLocation({to:`/$environmentId/$threadId`,params:a(e)});if(l.state.location.pathname!==t.pathname)return}b.getState().root===n&&b.getState().setRoot(r)}catch{o.add({type:`error`,title:`Could not close the pane`,description:`The pane and its draft are preserved.`})}finally{C.current=!1}},T=async(e,t)=>{if(!C.current){C.current=!0;try{await ue(e);let n=l.buildLocation({to:`/$environmentId/$threadId`,params:a(e)});if(!le.current)return;l.state.location.pathname===n.pathname&&t?.isConnected?t.focus({preventScroll:!0}):w.current?.isConnected&&w.current.focus({preventScroll:!0})}catch{o.add({type:`error`,title:`Could not activate the thread pane`}),le.current&&w.current?.focus({preventScroll:!0})}finally{C.current=!1}}},fe=Ie(x??i,{left:0,top:0,width:100,height:100});return(0,D.jsxs)(`div`,{ref:u,"data-chat-panes":!0,className:`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[s&&d?(0,D.jsx)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-b p-1`,role:`tablist`,"aria-label":`Split threads`,children:fe.leaves.map(({ref:t},n)=>(0,D.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":y(t)===y(e),className:`rounded px-3 py-1 text-xs aria-selected:bg-accent`,onClick:()=>void T(t),children:(0,D.jsx)(Le,{threadRef:t,index:n})},y(t)))}):null,(0,D.jsxs)(`div`,{className:`relative min-h-0 flex-1`,children:[fe.leaves.map(({ref:r,rect:i},a)=>{let o=y(r),c=o===y(e),l=!s||!d||c;return(0,D.jsxs)(`section`,{"data-pane-thread":o,"data-pane-focused":c,"aria-label":`Thread pane ${a+1}`,className:`absolute flex min-h-0 min-w-0 flex-col overflow-hidden bg-background`,hidden:!l,inert:!l||void 0,style:{display:l?void 0:`none`,left:`${d?0:i.left}%`,top:`${d?0:i.top}%`,width:`${d?100:i.width}%`,height:`${d?100:i.height}%`},onPointerDownCapture:e=>{if(c||e.target instanceof Element&&e.target.closest(`[data-pane-close]`))return;let t=e.target instanceof HTMLElement?e.target:null;t?.closest(`[draggable=true]`)||e.preventDefault(),T(r,t)},onFocusCapture:e=>{if(e.target.closest(`[data-pane-close]`))return;if(c){w.current=e.target;return}let t=e.target;t.blur(),w.current?.focus({preventScroll:!0}),T(r,t)},onClickCapture:e=>{!c&&!(e.target instanceof Element&&e.target.closest(`[data-pane-close]`))&&(e.preventDefault(),e.stopPropagation())},onDragOver:e=>{if(!n||!e.dataTransfer.types.includes(`application/x-ryco-thread-pane`)||d&&s)return;e.preventDefault(),e.stopPropagation();let t=g(e.currentTarget.getBoundingClientRect(),e.clientX,e.clientY);t&&h({key:o,side:t})},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||h(null)},onDrop:e=>{if(!n||!e.dataTransfer.types.includes(`application/x-ryco-thread-pane`))return;e.preventDefault(),e.stopPropagation(),h(null);let t=g(e.currentTarget.getBoundingClientRect(),e.clientX,e.clientY);try{let n=ne(JSON.parse(e.dataTransfer.getData(v)));n&&t&&b.getState().open(n,t,r)}catch{}},children:[s?(0,D.jsxs)(`div`,{className:`flex h-7 shrink-0 items-center justify-between border-b px-2 text-xs ${c?`bg-accent text-accent-foreground`:`text-muted-foreground`}`,children:[(0,D.jsx)(`button`,{type:`button`,draggable:!d,className:`min-w-0 flex-1 truncate text-left`,"aria-label":`Focus pane ${a+1}`,onClick:()=>void T(r),onDragStart:e=>{e.dataTransfer.setData(v,JSON.stringify(r)),e.dataTransfer.effectAllowed=`move`},onDragEnd:()=>h(null),children:(0,D.jsx)(Le,{threadRef:r,index:a})}),(0,D.jsx)(`button`,{type:`button`,"data-pane-close":!0,"aria-label":`Close pane ${a+1}`,className:`px-2 hover:bg-muted`,onClick:e=>{e.stopPropagation(),de(r)},children:`×`})]}):null,(0,D.jsx)(O,{threadRef:r,focused:c&&l,guards:se,inSplit:s,children:t(r,c&&l)}),p?.key===o?(0,D.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute z-50 border-2 border-primary bg-primary/10`,style:{left:p.side===`right`?`50%`:0,top:p.side===`bottom`?`50%`:0,width:p.side===`left`||p.side===`right`?`50%`:`100%`,height:p.side===`top`||p.side===`bottom`?`50%`:`100%`}}):null]},o)}),!d&&fe.dividers.map(e=>{let{node:t,rect:n,path:r}=e,a=t.axis===`horizontal`;return(0,D.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-label":`Resize thread panes`,"aria-orientation":a?`vertical`:`horizontal`,"aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":Math.round(t.ratio*100),className:`absolute z-40 touch-none bg-border hover:bg-primary focus-visible:bg-primary ${a?`cursor-col-resize`:`cursor-row-resize`}`,style:{left:a?`calc(${n.left+n.width*t.ratio}% - 2px)`:`${n.left}%`,top:a?`${n.top}%`:`calc(${n.top+n.height*t.ratio}% - 2px)`,width:a?4:`${n.width}%`,height:a?`${n.height}%`:4},onKeyDown:e=>{let n=a?`ArrowLeft`:`ArrowUp`,o=a?`ArrowRight`:`ArrowDown`;[n,o,`Home`,`End`].includes(e.key)&&(e.preventDefault(),e.stopPropagation(),b.getState().setRoot(te(i,r,e.key===`Home`?.25:e.key===`End`?.75:t.ratio+(e.key===o?.05:-.05))))},onPointerDown:t=>{t.button===0&&u.current&&(t.preventDefault(),t.currentTarget.setPointerCapture(t.pointerId),S.current={divider:e,bounds:t.currentTarget.parentElement.getBoundingClientRect(),original:i,current:i,pointerId:t.pointerId})},onPointerMove:e=>{let t=S.current;if(!t||t.pointerId!==e.pointerId)return;let i=((a?(e.clientX-t.bounds.left)/t.bounds.width*100:(e.clientY-t.bounds.top)/t.bounds.height*100)-(a?n.left:n.top))/(a?n.width:n.height);t.current=te(t.original,r,i),ae(t.current)},onPointerUp:()=>{let e=S.current;S.current=null,ae(null),e&&b.getState().root===e.original&&b.getState().setRoot(e.current)},onLostPointerCapture:()=>{S.current=null,ae(null)},onPointerCancel:()=>{S.current=null,ae(null)}},r)})]})]})}function Be(e){let n=(0,Fe.c)(211),{threadRef:o,search:s}=e;me(`ChatThreadRouteView`);let m=ie(),h=ye(),g=o?`${o.environmentId}:${o.threadId}`:null,_=o?.environmentId??null,v=o?.threadId??null,ee;n[0]!==m||n[1]!==o?(ee=e=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),replace:!0,search:e})},n[0]=m,n[1]=o,n[2]=ee):ee=n[2];let te=ee,ne;n[3]!==g||n[4]!==te||n[5]!==s?(ne={threadKey:g,search:s,replaceSearch:te},n[3]=g,n[4]=te,n[5]=s,n[6]=ne):ne=n[6];let y=se(ne),x;n[7]===o?.environmentId?x=n[8]:(x=e=>c(e,o?.environmentId??null).bootstrapComplete,n[7]=o?.environmentId,n[8]=x);let T=r(x),ge;n[9]===o?ge=n[10]:(ge=d(o),n[9]=o,n[10]=ge);let _e=r(ge),ve;n[11]===o?ve=n[12]:(ve=e=>i(e,o),n[11]=o,n[12]=ve);let je=r(ve),Me;n[13]===o?.environmentId?Me=n[14]:(Me=e=>c(e,o?.environmentId??null).threadIds.length>0,n[13]=o?.environmentId,n[14]=Me);let Ie=r(Me),Le=l(Ge),O;n[15]!==Le||n[16]!==o?.environmentId?(O=()=>u(o?.environmentId??null,Le),n[15]=Le,n[16]=o?.environmentId,n[17]=O):O=n[17],o?.environmentId;let Be;n[18]===O?Be=n[19]:(Be=O(),n[18]=O,n[19]=Be);let Ke=r(Be),qe=ce(o),Je=C(o),Ye=ae(o?.environmentId),Xe=b(We),Ze;n[20]!==Xe||n[21]!==h||n[22]!==o?(Ze=h!==`phone`&&!!o&&!!Xe&&re(Xe,o),n[20]=Xe,n[21]=h,n[22]=o,n[23]=Ze):Ze=n[23];let Qe=Ze,$e=je||qe,et;n[24]===_e?et=n[25]:(et=oe(_e),n[24]=_e,n[25]=et);let k=et,tt=Ie||Ye,nt=Qe||$e&&(qe||T||_e!==void 0),A=y.diff===`1`,j=y.preview===`1`,rt;n[26]===y?rt=n[27]:(rt=Pe(y),n[26]=y,n[27]=rt);let M=rt,it;n[28]===y?it=n[29]:(it=ke(y),n[28]=y,n[29]=it);let N=it,P=y.workspaceTab===`agent`&&y.workspaceAgentKey?y.workspaceAgentKey:null,at=he(pe),ot;n[30]===g?ot=n[31]:(ot=e=>g?e.pendingOpenByThreadKey[g]:void 0,n[30]=g,n[31]=ot);let st=t(ot),ct=t(Ue),lt=Se(),ut=!at&&h!==`phone`,dt;n[32]!==g||n[33]!==N||n[34]!==ut?(dt={threadKey:g,open:N,canMaximize:ut},n[32]=g,n[33]=N,n[34]=ut,n[35]=dt):dt=n[35];let{maximized:F,toggleMaximized:ft}=de(dt),pt;n[36]!==P||n[37]!==g||n[38]!==A||n[39]!==j||n[40]!==M?(pt=()=>({threadKey:g,hasOpenedDiff:A,hasOpenedPreview:j,hasOpenedTerminal:M===`terminal`,hasOpenedSimulator:M===`simulator`,hasOpenedBrowser:M===`browser`,hasOpenedAgents:M===`agents`,openedAgentKeys:P?[P]:[]}),n[36]=P,n[37]=g,n[38]=A,n[39]=j,n[40]=M,n[41]=pt):pt=n[41];let[I,mt]=(0,E.useState)(pt),ht,gt;n[42]!==_||n[43]!==v?(ht=()=>{if(_&&v)return be(_,v)},gt=[_,v],n[42]=_,n[43]=v,n[44]=ht,n[45]=gt):(ht=n[44],gt=n[45]),(0,E.useEffect)(ht,gt);let _t,vt;n[46]!==ct||n[47]!==m||n[48]!==st||n[49]!==h||n[50]!==o?(_t=()=>{o&&st&&h!==`phone`&&(ct(o.environmentId,o.threadId),m({to:`/$environmentId/$threadId`,params:a(o),search:He}))},vt=[ct,m,st,h,o],n[46]=ct,n[47]=m,n[48]=st,n[49]=h,n[50]=o,n[51]=_t,n[52]=vt):(_t=n[51],vt=n[52]),(0,E.useEffect)(_t,vt);let L=I.threadKey===g?I.hasOpenedDiff:A,R=I.threadKey===g?I.hasOpenedPreview:j,z=I.threadKey===g?I.hasOpenedTerminal:M===`terminal`,B=I.threadKey===g?I.hasOpenedSimulator:M===`simulator`,V=I.threadKey===g?I.hasOpenedBrowser:M===`browser`,H=I.threadKey===g?I.hasOpenedAgents:M===`agents`,yt;n[53]!==P||n[54]!==g||n[55]!==I.openedAgentKeys||n[56]!==I.threadKey?(yt=I.threadKey===g?I.openedAgentKeys:P?[P]:[],n[53]=P,n[54]=g,n[55]=I.openedAgentKeys,n[56]=I.threadKey,n[57]=yt):yt=n[57];let bt=yt,xt;n[58]!==P||n[59]!==bt?(xt=P&&!bt.includes(P)?[...bt,P]:bt,n[58]=P,n[59]=bt,n[60]=xt):xt=n[60];let U=xt,St;n[61]===M?St=n[62]:(St=()=>M??`review`,n[61]=M,n[62]=St);let[W,Ct]=(0,E.useState)(St),G;n[63]!==H||n[64]!==V||n[65]!==L||n[66]!==R||n[67]!==B||n[68]!==z||n[69]!==M?(G=[],(R||M===`files`)&&G.push(`files`),(L||M===`review`)&&G.push(`review`),(z||M===`terminal`)&&G.push(`terminal`),(B||M===`simulator`)&&G.push(`simulator`),(V||M===`browser`)&&G.push(`browser`),(H||M===`agents`)&&G.push(`agents`),n[63]=H,n[64]=V,n[65]=L,n[66]=R,n[67]=B,n[68]=z,n[69]=M,n[70]=G):G=n[70];let K=G,wt;n[71]!==g||n[72]!==A||n[73]!==U||n[74]!==j||n[75]!==M?(wt=e=>{Ct(e),mt(t=>{let n={threadKey:g,hasOpenedDiff:(t.threadKey===g?t.hasOpenedDiff:A)||e===`review`,hasOpenedPreview:(t.threadKey===g?t.hasOpenedPreview:j)||e===`files`,hasOpenedTerminal:(t.threadKey===g?t.hasOpenedTerminal:M===`terminal`)||e===`terminal`,hasOpenedSimulator:(t.threadKey===g?t.hasOpenedSimulator:M===`simulator`)||e===`simulator`,hasOpenedBrowser:(t.threadKey===g?t.hasOpenedBrowser:M===`browser`)||e===`browser`,hasOpenedAgents:(t.threadKey===g?t.hasOpenedAgents:M===`agents`)||e===`agents`,openedAgentKeys:t.threadKey===g?t.openedAgentKeys:U};return t.threadKey===n.threadKey&&t.hasOpenedDiff===n.hasOpenedDiff&&t.hasOpenedPreview===n.hasOpenedPreview&&t.hasOpenedTerminal===n.hasOpenedTerminal&&t.hasOpenedSimulator===n.hasOpenedSimulator&&t.hasOpenedBrowser===n.hasOpenedBrowser&&t.hasOpenedAgents===n.hasOpenedAgents&&t.openedAgentKeys===n.openedAgentKeys?t:n})},n[71]=g,n[72]=A,n[73]=U,n[74]=j,n[75]=M,n[76]=wt):wt=n[76];let q=wt,Tt;n[77]!==m||n[78]!==o?(Tt=()=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),search:Ve})},n[77]=m,n[78]=o,n[79]=Tt):Tt=n[79];let J=Tt,Et;n[80]!==H||n[81]!==V||n[82]!==L||n[83]!==R||n[84]!==B||n[85]!==z||n[86]!==W||n[87]!==m||n[88]!==U||n[89]!==o?(Et=()=>{o&&m({to:`/$environmentId/$threadId`,params:a(o),search:e=>{let t=U[U.length-1];return W===`agent`&&t?De(e,t):W===`files`&&R?Oe(e):W===`review`&&L?Te(e):W===`terminal`&&z?Ee(e):W===`simulator`&&B?we(e):W===`browser`&&V?Ne(e):W===`agents`&&H?Ce(e):R?Oe(e):L?Te(e):z?Ee(e):B?we(e):V?Ne(e):H?Ce(e):t?De(e,t):Ae(e)}})},n[80]=H,n[81]=V,n[82]=L,n[83]=R,n[84]=B,n[85]=z,n[86]=W,n[87]=m,n[88]=U,n[89]=o,n[90]=Et):Et=n[90];let Y=Et,Dt;n[91]!==J||n[92]!==Y||n[93]!==N?(Dt=()=>{if(N){J();return}Y()},n[91]=J,n[92]=Y,n[93]=N,n[94]=Dt):Dt=n[94];let X=Dt,Ot;n[95]!==P||n[96]!==g||n[97]!==H||n[98]!==V||n[99]!==L||n[100]!==R||n[101]!==B||n[102]!==z||n[103]!==m||n[104]!==U||n[105]!==M||n[106]!==o?(Ot=e=>{if(!o)return;if(e.mode===`agent`){let t=U.filter(t=>t!==e.agentKey);mt(e=>({threadKey:g,hasOpenedDiff:e.threadKey===g?e.hasOpenedDiff:L,hasOpenedPreview:e.threadKey===g?e.hasOpenedPreview:R,hasOpenedTerminal:e.threadKey===g?e.hasOpenedTerminal:z,hasOpenedSimulator:e.threadKey===g?e.hasOpenedSimulator:B,hasOpenedBrowser:e.threadKey===g?e.hasOpenedBrowser:V,hasOpenedAgents:e.threadKey===g?e.hasOpenedAgents:H,openedAgentKeys:t})),M===`agent`&&P===e.agentKey&&m({to:`/$environmentId/$threadId`,params:a(o),search:e=>{let n=t[t.length-1];return n?De(e,n):R?Oe(e):L?Te(e):z?Ee(e):B?we(e):V?Ne(e):H?Ce(e):Ae(e)}});return}let t=e.mode===`review`?!1:L||M===`review`,n=e.mode===`files`?!1:R||M===`files`,r=e.mode===`terminal`?!1:z||M===`terminal`,i=e.mode===`simulator`?!1:B||M===`simulator`,s=e.mode===`browser`?!1:V||M===`browser`,c=e.mode===`agents`?!1:H||M===`agents`;mt(e=>{let a={threadKey:g,hasOpenedDiff:t,hasOpenedPreview:n,hasOpenedTerminal:r,hasOpenedSimulator:i,hasOpenedBrowser:s,hasOpenedAgents:c,openedAgentKeys:e.threadKey===g?e.openedAgentKeys:U};return e.threadKey===a.threadKey&&e.hasOpenedDiff===a.hasOpenedDiff&&e.hasOpenedPreview===a.hasOpenedPreview&&e.hasOpenedTerminal===a.hasOpenedTerminal&&e.hasOpenedSimulator===a.hasOpenedSimulator&&e.hasOpenedBrowser===a.hasOpenedBrowser&&e.hasOpenedAgents===a.hasOpenedAgents&&e.openedAgentKeys===a.openedAgentKeys?e:a}),M===e.mode&&m({to:`/$environmentId/$threadId`,params:a(o),search:a=>e.mode!==`files`&&n?Oe(a):e.mode!==`review`&&t?Te(a):e.mode!==`terminal`&&r?Ee(a):e.mode!==`simulator`&&i?we(a):e.mode!==`browser`&&s?Ne(a):e.mode!==`agents`&&c?Ce(a):Ae(a)})},n[95]=P,n[96]=g,n[97]=H,n[98]=V,n[99]=L,n[100]=R,n[101]=B,n[102]=z,n[103]=m,n[104]=U,n[105]=M,n[106]=o,n[107]=Ot):Ot=n[107];let Z=Ot,kt,At;n[108]!==q||n[109]!==M?(kt=()=>{M!==null&&(Ct(M),q(M))},At=[q,M],n[108]=q,n[109]=M,n[110]=kt,n[111]=At):(kt=n[110],At=n[111]),(0,E.useEffect)(kt,At);let jt,Mt;n[112]!==P||n[113]!==g||n[114]!==A||n[115]!==H||n[116]!==V||n[117]!==L||n[118]!==R||n[119]!==B||n[120]!==z||n[121]!==j||n[122]!==M?(jt=()=>{g&&P&&mt(e=>{let t=e.threadKey===g?e.openedAgentKeys:[];return t.includes(P)?e.threadKey===g?e:{threadKey:g,hasOpenedDiff:L,hasOpenedPreview:R,hasOpenedTerminal:z,hasOpenedSimulator:B,hasOpenedBrowser:V,hasOpenedAgents:H,openedAgentKeys:t}:{threadKey:g,hasOpenedDiff:e.threadKey===g?e.hasOpenedDiff:A,hasOpenedPreview:e.threadKey===g?e.hasOpenedPreview:j,hasOpenedTerminal:e.threadKey===g?e.hasOpenedTerminal:M===`terminal`,hasOpenedSimulator:e.threadKey===g?e.hasOpenedSimulator:M===`simulator`,hasOpenedBrowser:e.threadKey===g?e.hasOpenedBrowser:M===`browser`,hasOpenedAgents:e.threadKey===g?e.hasOpenedAgents:M===`agents`,openedAgentKeys:[...t,P]}})},Mt=[P,g,A,H,L,R,B,V,z,j,M],n[112]=P,n[113]=g,n[114]=A,n[115]=H,n[116]=V,n[117]=L,n[118]=R,n[119]=B,n[120]=z,n[121]=j,n[122]=M,n[123]=jt,n[124]=Mt):(jt=n[123],Mt=n[124]),(0,E.useEffect)(jt,Mt);let Nt,Pt;n[125]!==T||n[126]!==tt||n[127]!==Ke||n[128]!==m||n[129]!==Qe||n[130]!==$e||n[131]!==o?(Nt=()=>{o&&T&&!Qe&&!$e&&tt&&m(Ke?{to:`/$environmentId/$threadId`,params:a(Ke),replace:!0}:{to:`/`,replace:!0})},Pt=[T,tt,Ke,m,$e,Qe,o],n[125]=T,n[126]=tt,n[127]=Ke,n[128]=m,n[129]=Qe,n[130]=$e,n[131]=o,n[132]=Nt,n[133]=Pt):(Nt=n[132],Pt=n[133]),(0,E.useEffect)(Nt,Pt);let Ft;n[134]!==Je?.promotedTo||n[135]!==k||n[136]!==o?(Ft=()=>{o&&k&&Je?.promotedTo&&p(o)},n[134]=Je?.promotedTo,n[135]=k,n[136]=o,n[137]=Ft):Ft=n[137];let It=Je?.promotedTo,Lt;if(n[138]!==k||n[139]!==It||n[140]!==o?(Lt=[It,k,o],n[138]=k,n[139]=It,n[140]=o,n[141]=Lt):Lt=n[141],(0,E.useEffect)(Ft,Lt),!o||!nt)return null;let Q=N||M===`review`||L||M===`files`||R||M===`terminal`||z||M===`simulator`||B||M===`browser`||V||M===`agents`||H||M===`agent`||U.length>0,Rt=N||M===`review`||L||M===`files`||R||M===`terminal`||z||M===`agent`||U.length>0,$=N?M:W;if(h===`phone`){let e;n[142]!==q||n[143]!==N||n[144]!==o||n[145]!==X?(e=()=>(0,D.jsx)(Re,{threadRef:o,children:(0,D.jsx)(w,{environmentId:o.environmentId,threadId:o.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:N,onToggleWorkspacePanel:X,routeKind:`server`})}),n[142]=q,n[143]=N,n[144]=o,n[145]=X,n[146]=e):e=n[146];let t;n[147]!==e||n[148]!==o?(t=(0,D.jsx)(xe,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,D.jsx)(ze,{threadRef:o,enabled:!1,children:e})}),n[147]=e,n[148]=o,n[149]=t):t=n[149];let r;n[150]!==Z||n[151]!==$||n[152]!==U||n[153]!==K||n[154]!==Rt?(r=Rt?(0,D.jsx)(fe,{mode:`phone`,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z}):null,n[150]=Z,n[151]=$,n[152]=U,n[153]=K,n[154]=Rt,n[155]=r):r=n[155];let i;n[156]!==J||n[157]!==N||n[158]!==r?(i=(0,D.jsx)(ue,{label:`Workspace`,open:N,onClose:J,children:r}),n[156]=J,n[157]=N,n[158]=r,n[159]=i):i=n[159];let a;return n[160]!==t||n[161]!==i?(a=(0,D.jsxs)(D.Fragment,{children:[t,i]}),n[160]=t,n[161]=i,n[162]=a):a=n[162],a}if(!at){let e=F&&`w-0 flex-none`,t;n[163]===e?t=n[164]:(t=f(`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,e),n[163]=e,n[164]=t);let r=F?!0:void 0,i;n[165]!==q||n[166]!==N||n[167]!==X?(i=(e,t)=>(0,D.jsx)(Re,{threadRef:e,children:(0,D.jsx)(w,{environmentId:e.environmentId,threadId:e.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:t&&N,onToggleWorkspacePanel:()=>{t&&X()},routeKind:`server`,reserveTitleBarControlInset:t})}),n[165]=q,n[166]=N,n[167]=X,n[168]=i):i=n[168];let a;n[169]!==i||n[170]!==o?(a=(0,D.jsx)(ze,{threadRef:o,children:i}),n[169]=i,n[170]=o,n[171]=a):a=n[171];let s;n[172]!==t||n[173]!==r||n[174]!==a?(s=(0,D.jsx)(xe,{className:t,inert:r,children:a}),n[172]=t,n[173]=r,n[174]=a,n[175]=s):s=n[175];let c=F&<,l;n[176]!==Z||n[177]!==J||n[178]!==$||n[179]!==Y||n[180]!==U||n[181]!==K||n[182]!==F||n[183]!==N||n[184]!==Q||n[185]!==c||n[186]!==ft?(l=(0,D.jsx)(le,{open:N,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z,onClose:J,onOpen:Y,renderContent:Q,maximized:F,onToggleMaximized:ft,reserveChromeInset:c}),n[176]=Z,n[177]=J,n[178]=$,n[179]=Y,n[180]=U,n[181]=K,n[182]=F,n[183]=N,n[184]=Q,n[185]=c,n[186]=ft,n[187]=l):l=n[187];let u;return n[188]!==s||n[189]!==l?(u=(0,D.jsxs)(D.Fragment,{children:[s,l]}),n[188]=s,n[189]=l,n[190]=u):u=n[190],u}let zt;n[191]!==q||n[192]!==N||n[193]!==X?(zt=(e,t)=>(0,D.jsx)(Re,{threadRef:e,children:(0,D.jsx)(w,{environmentId:e.environmentId,threadId:e.threadId,onDiffPanelOpen:()=>q(`review`),onPreviewPanelOpen:()=>q(`files`),onTerminalPanelOpen:()=>q(`terminal`),onAgentPanelOpen:()=>q(`agent`),workspacePanelOpen:t&&N,onToggleWorkspacePanel:()=>{t&&X()},routeKind:`server`,reserveTitleBarControlInset:t})}),n[191]=q,n[192]=N,n[193]=X,n[194]=zt):zt=n[194];let Bt;n[195]!==zt||n[196]!==o?(Bt=(0,D.jsx)(xe,{className:`h-svh min-h-0 overflow-hidden overscroll-y-none bg-background text-foreground md:h-dvh`,children:(0,D.jsx)(ze,{threadRef:o,children:zt})}),n[195]=zt,n[196]=o,n[197]=Bt):Bt=n[197];let Vt;n[198]!==Z||n[199]!==$||n[200]!==U||n[201]!==K||n[202]!==Q?(Vt=Q?(0,D.jsx)(fe,{mode:`sheet`,panelMode:$,openedPanelModes:K,openedAgentKeys:U,onClosePanelTab:Z}):null,n[198]=Z,n[199]=$,n[200]=U,n[201]=K,n[202]=Q,n[203]=Vt):Vt=n[203];let Ht;n[204]!==J||n[205]!==N||n[206]!==Vt?(Ht=(0,D.jsx)(S,{open:N,onClose:J,children:Vt}),n[204]=J,n[205]=N,n[206]=Vt,n[207]=Ht):Ht=n[207];let Ut;return n[208]!==Bt||n[209]!==Ht?(Ut=(0,D.jsxs)(D.Fragment,{children:[Bt,Ht]}),n[208]=Bt,n[209]=Ht,n[210]=Ut):Ut=n[210],Ut}function Ve(e){return T(e)}function He(e){return we(e)}function Ue(e){return e.consumeOpenRequest}function We(e){return e.root}function Ge(e){return e.sidebarThreadSortOrder}export{Be as ChatThreadRouteView};
|
package/dist/client/assets/{CommandPaletteDialog-KtIlImWg.js → CommandPaletteDialog-BRvBzP1R.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,$t as n,K as r,Kt as i,Q as a,X as o,Yt as s,Z as c,a as l,q as u,qt as d,r as f}from"./primary-CQh_KHGG.js";import{$ as ee,Nl as te,t as ne}from"./src-DHNjfMxR.js";import{$l as p,$n as re,Bn as ie,Cn as m,Dn as ae,H as oe,Jr as se,K as ce,Kr as h,Nr as le,O as ue,P as de,Pr as fe,Qr as pe,Ul as me,V as he,Vl as ge,Vr as _e,do as ve,ei as g,gr as ye,ho as _,kn as be,mr as xe,ni as Se,oi as Ce,p as v,pr as we,ri as Te,sr as Ee,ti as De,wt as y,x as Oe,xn as ke}from"./runtime-DpHhg0dl.js";import{t as b}from"./react-CwJFpaho.js";import{$n as Ae,Cn as x,Fr as je,Gn as Me,Ir as Ne,dn as Pe,fr as Fe,gn as Ie,hn as Le,nn as Re,or as S,tn as ze,ur as Be,vr as Ve,wr as He,xn as C,yn as Ue}from"./switch-DgLijJhN.js";import{t as w}from"./compiler-runtime-C4g8XhC5.js";import{i as We,n as Ge,t as Ke}from"./tooltip-CsNk2GK1.js";import{t as qe}from"./useNavigate-xewFGSmS.js";import{_ as Je,b as T,v as Ye,y as Xe}from"./RootAppShell-CYT2IfYW.js";import{t as Ze}from"./arrow-left-Ce-aUiy1.js";import{t as Qe}from"./chart-column-CVU4MshQ.js";import{B as E,F as D,G as $e,H as et,L as tt,N as nt,P as rt,U as it,V as at,W as ot,q as O,z as st}from"./ContextHandoffEndpointLabel-BCNMjnEV.js";import{t as ct}from"./chevron-right-D3dUAoht.js";import{n as k,t as A}from"./kbd-DlXUKjl1.js";import{t as lt}from"./capabilities-C9OPiefV.js";import{t as ut}from"./download-Fq1MsYfI.js";import{A as dt,D as ft,E as pt,F as mt,I as ht,L as gt,M as _t,N as vt,O as yt,P as bt,T as xt,j as St,k as Ct,w as wt,z as Tt}from"./sidebarProjectFolders-BpKCw8IR.js";import{t as j}from"./toastHelpers-CSQRKo4F.js";import{t as Et}from"./authorization-BugIGt5e.js";import{t as Dt}from"./presentationTier-xlIjcFab.js";import{n as Ot}from"./sidebarUndo-DzblmE6P.js";import{t as kt}from"./usePresentationTier-hxB7Yv_Q.js";import{c as At,m as jt,o as Mt}from"./BranchToolbar.logic-DN0He2gp.js";import{o as Nt}from"./desktopWorkspace-DIoIhyml.js";import{i as Pt,n as Ft,r as It}from"./deviceName-BY2WK012.js";import{t as Lt}from"./shallow-B--PNURq.js";import{I as Rt,L as zt,ct as Bt,dt as Vt,et as Ht,lt as Ut}from"./main-DsnAjTqg.js";var M={name:`corner-left-up`,size:24,node:[[`path`,{d:`M14 9 9 4 4 9`,key:`1af5af`}],[`path`,{d:`M20 20h-7a4 4 0 0 1-4-4V4`,key:`1blwi3`}]]};M.node;var Wt=_(M),N={name:`folder-symlink`,size:24,node:[[`path`,{d:`M2 9.35V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7`,key:`y8kt7d`}],[`path`,{d:`m8 16 3-3-3-3`,key:`rlqrt1`}]]};N.node;var Gt=_(N),P={name:`pin-off`,size:24,node:[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]};P.node;var Kt=_(P),F=e(b(),1),I=w();async function qt(e,i){let s=Ee(e.environmentId),l=v(e.environmentId),d={...n(e.environmentId)},f=()=>{let t=n(e.environmentId),r=de.getState();return v(e.environmentId)===l&&t.phase===`connected`&&t.connectedAt===d.connectedAt&&t.disconnectedAt===d.disconnectedAt&&Et({hosted:u(),role:r.effectiveRole,fresh:r.directoryStatus===`ready`&&r.transportStatus===`online`,browserCurrent:r.browserStatus===`current`,sessionReady:r.sessionStatus===`ready`,method:ee.getThreadWindow}).allowed};if(!s||!f())throw Error(o);let te=await c({api:s,threadId:e.threadId,signal:i,isCurrent:f}),ne=a(te),p=t(te.title);if(i.throwIfAborted(),!f())throw Error(o);if(new TextEncoder().encode(ne).length>33554432)throw Error(`Conversation exceeds the 32 MiB export limit. No partial file was saved.`);if(r){if(!window.desktopBridge?.saveThreadExport)throw Error(`Update the desktop app to save conversation exports.`);return(await window.desktopBridge.saveThreadExport({filename:p,contents:ne})).status}return jt(p,ne),`downloaded`}var L=`size-4 text-muted-foreground/80`,R=`size-4`;function Jt(e){return e.isAlias?`browse:alias:${e.name}:${e.fullPath}`:`browse:${e.fullPath}`}function Yt(e){let t=e.browseFilterQuery.toLowerCase(),n=e.browseFilterQuery.startsWith(`.`),r=e.browseEntries.filter(e=>e.name.toLowerCase().startsWith(t)&&(n||!e.name.startsWith(`.`))),i=null,a=e.highlightedItemValue;a&&a.startsWith(`browse:`)&&(i=r.find(e=>Jt(e)===a)??null);let o=e.browseFilterQuery.length>0?r.find(t=>t.name===e.browseFilterQuery)??null:null;return{filteredEntries:r,highlightedEntry:i,exactEntry:o}}function z(e){return e.trim().toLowerCase().replace(/\s+/g,` `)}function Xt(e){return e.projects.map(t=>({kind:`action`,value:`${e.valuePrefix}:${t.environmentId}:${t.id}`,searchTerms:[t.name,t.cwd],title:t.name,description:t.cwd,icon:e.icon(t),run:async()=>{await e.runProject(t)}}))}function Zt(e){let t=m(e.threads.filter(e=>e.archivedAt===null),e.sortOrder);return(e.limit===void 0?t:t.slice(0,e.limit)).map(t=>{let n=e.projectTitleById.get(t.projectId),r=[];n&&r.push(n),t.branch&&r.push(`#${t.branch}`),t.id===e.activeThreadId&&r.push(`Current thread`);let i=e.renderLeadingContent?.(t),a=e.renderTrailingContent?.(t);return Object.assign({kind:`action`,value:`thread:${t.id}`,searchTerms:[t.title,n??``,t.branch??``],title:t.title,description:r.join(` · `),timestamp:S(t.latestUserMessageAt??t.updatedAt??t.createdAt),icon:e.icon},i?{titleLeadingContent:i}:{},a?{titleTrailingContent:a}:{},{run:async()=>{await e.runThread(t)}})})}function Qt(e,t){let n=z(e);return n.length===0||!n.includes(t)?-1/0:n===t?3:n.startsWith(t)?2:1}function $t(e,t){let n=e.searchTerms.filter(e=>e.length>0);if(n.length===0)return 0;for(let[e,r]of n.entries()){let n=Qt(r,t);if(n!==-1/0)return 1e3-e*100+n}return 0}function en(e){return e.searchResults.map(t=>{let n=e.threadTitleById.get(t.threadId)??`Thread`,r=e.projectTitleByThreadId.get(t.threadId),i=[n,r].filter(Boolean).join(` · `);return{kind:`action`,value:`message:${t.environmentId}:${t.threadId}:${t.messageId}`,searchTerms:[t.snippet,n,r??``],title:t.snippet,description:i,timestamp:S(t.timestamp),icon:e.icon,run:async()=>{await e.runMessage(t)}}})}function tn(e){let t=e.query.startsWith(`>`),n=z(t?e.query.slice(1):e.query);if(n.length===0)return t?e.activeGroups.filter(e=>e.value===`actions`):[...e.activeGroups];let r=[...e.activeGroups];t?r=r.filter(e=>e.value===`actions`):e.isInSubmenu||(r=r.filter(e=>e.value!==`recent-threads`));let i=[...r];return!e.isInSubmenu&&!t&&(e.projectSearchItems.length>0&&i.push({value:`projects-search`,label:`Projects`,items:e.projectSearchItems}),e.threadSearchItems.length>0&&i.push({value:`threads-search`,label:`Threads`,items:e.threadSearchItems}),e.messageSearchItems&&e.messageSearchItems.length>0&&i.push({value:`messages-search`,label:`Messages`,items:e.messageSearchItems})),i.flatMap(e=>{let t=e.items.map((e,t)=>z(e.searchTerms.join(` `)).includes(n)?{item:e,index:t,rank:$t(e,n)}:null).filter(e=>e!==null).toSorted((e,t)=>t.rank-e.rank||e.index-t.index).map(e=>e.item);return t.length===0?[]:[{value:e.value,label:e.label,items:t}]})}function nn(e){let t=[];e.canBrowseUp&&t.push({kind:`action`,value:`browse:up`,searchTerms:[e.browseQuery,`..`],title:`..`,icon:e.upIcon,keepOpen:!0,run:async()=>{e.browseUp()}});for(let n of e.browseEntries)t.push({kind:`action`,value:Jt(n),searchTerms:[e.browseQuery,n.fullPath,n.name],title:n.name,icon:n.isSymlink?e.symlinkIcon:e.directoryIcon,keepOpen:!0,run:async()=>{n.isAlias?e.browseToPath(n.fullPath):e.browseTo(n.name)}});return[{value:`directories`,label:`Directories`,items:t}]}function rn(e){return e.currentView?e.isBrowsing?`submenu-browse`:`submenu`:e.isBrowsing?`root-browse`:`root`}function an(e){let t=[];return e.actionItems.length>0&&t.push({value:`actions`,label:`Actions`,items:e.actionItems}),e.recentThreadItems.length>0&&t.push({value:`recent-threads`,label:`Recent Threads`,items:e.recentThreadItems}),t}function on(e){switch(e){case`root`:return`Search commands, projects, and threads...`;case`root-browse`:return`Enter project path (e.g. ~/projects/my-app)`;case`submenu`:return`Search...`;case`submenu-browse`:return`Enter path (e.g. ~/projects/my-app)`}}var B=p();function sn(e){let t=(0,F.useRef)(null),[n,r]=(0,F.useState)(!1);(0,F.useEffect)(()=>()=>t.current?.abort(),[]);let i=lt(ee.getThreadWindow);return{kind:`action`,keepOpen:!0,value:`action:export-thread-markdown`,title:n?`Cancel thread export`:`Export thread as Markdown`,searchTerms:[`export`,`markdown`,`download`,`conversation`],icon:(0,B.jsx)(ut,{className:L}),disabled:!n&&(!e||!i.allowed),run:async()=>{if(t.current){t.current.abort();return}if(!e||!i.allowed)return;let n=new AbortController;t.current=n,r(!0);let a=h.add({title:`Loading retained conversation…`,timeout:0,actionProps:{children:`Cancel`,onClick:()=>n.abort()}});try{let t=await qt(e,n.signal);t!==`cancelled`&&h.add({type:`success`,title:t===`saved`?`Conversation saved`:`Conversation download started`})}catch(e){n.signal.aborted||h.add({type:`error`,title:`Export failed`,description:e instanceof Error?e.message:`No file was saved. Retry the export.`})}finally{h.close(a),t.current=null,r(!1)}}}}function cn(e){let t=(0,I.c)(13);if(e.groups.length===0){let n=e.emptyStateMessage??(e.isActionsOnly?`No matching actions.`:`No matching commands, projects, or threads.`),r;return t[0]===n?r=t[1]:(r=(0,B.jsx)(`div`,{className:`py-10 text-center text-sm text-muted-foreground`,children:n}),t[0]=n,t[1]=r),r}let n;if(t[2]!==e.groups||t[3]!==e.highlightedItemValue||t[4]!==e.keybindings||t[5]!==e.onExecuteItem){let r;t[7]!==e.highlightedItemValue||t[8]!==e.keybindings||t[9]!==e.onExecuteItem?(r=t=>(0,B.jsxs)(E,{items:t.items,children:[(0,B.jsx)(at,{children:t.label}),(0,B.jsx)(D,{children:t=>t.disabled?(0,B.jsx)(V,{item:t},t.value):(0,B.jsx)(ln,{item:t,keybindings:e.keybindings,isActive:e.highlightedItemValue===t.value,onExecuteItem:e.onExecuteItem},t.value)})]},t.value),t[7]=e.highlightedItemValue,t[8]=e.keybindings,t[9]=e.onExecuteItem,t[10]=r):r=t[10],n=e.groups.map(r),t[2]=e.groups,t[3]=e.highlightedItemValue,t[4]=e.keybindings,t[5]=e.onExecuteItem,t[6]=n}else n=t[6];let r;return t[11]===n?r=t[12]:(r=(0,B.jsx)(ot,{children:n}),t[11]=n,t[12]=r),r}function V(e){let t=(0,I.c)(8),n;t[0]!==e.item.description||t[1]!==e.item.title||t[2]!==e.item.titleLeadingContent?(n=e.item.description?(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[0]=e.item.description,t[1]=e.item.title,t[2]=e.item.titleLeadingContent,t[3]=n):n=t[3];let r;return t[4]!==e.item.icon||t[5]!==e.item.titleTrailingContent||t[6]!==n?(r=(0,B.jsxs)(`div`,{className:`flex min-h-8 select-none items-center gap-2 rounded-sm px-2 py-1.5 text-base opacity-64 sm:min-h-7 sm:text-sm`,children:[e.item.icon,n,e.item.titleTrailingContent]}),t[4]=e.item.icon,t[5]=e.item.titleTrailingContent,t[6]=n,t[7]=r):r=t[7],r}function ln(e){let t=(0,I.c)(27),n;t[0]!==e.item.shortcutCommand||t[1]!==e.keybindings?(n=e.item.shortcutCommand?Ht(e.keybindings,e.item.shortcutCommand):null,t[0]=e.item.shortcutCommand,t[1]=e.keybindings,t[2]=n):n=t[2];let r=n,i=e.item.value,a=e.isActive&&`bg-accent! text-accent-foreground!`,o;t[3]===a?o=t[4]:(o=g(`cursor-pointer gap-2 hover:bg-transparent hover:text-inherit data-highlighted:bg-transparent data-highlighted:text-inherit data-selected:bg-transparent data-selected:text-inherit [&[data-highlighted][data-selected]]:bg-transparent [&[data-highlighted][data-selected]]:text-inherit`,a),t[3]=a,t[4]=o);let s;t[5]===e?s=t[6]:(s=()=>{e.onExecuteItem(e.item)},t[5]=e,t[6]=s);let c;t[7]!==e.item.description||t[8]!==e.item.title||t[9]!==e.item.titleLeadingContent?(c=e.item.description?(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[7]=e.item.description,t[8]=e.item.title,t[9]=e.item.titleLeadingContent,t[10]=c):c=t[10];let l;t[11]===e.item.timestamp?l=t[12]:(l=e.item.timestamp?(0,B.jsx)(`span`,{className:`min-w-12 shrink-0 text-right text-[10px] tabular-nums text-muted-foreground/70`,children:e.item.timestamp}):null,t[11]=e.item.timestamp,t[12]=l);let u;t[13]===r?u=t[14]:(u=r?(0,B.jsx)(O,{children:r}):null,t[13]=r,t[14]=u);let d;t[15]===e.item.kind?d=t[16]:(d=e.item.kind===`submenu`?(0,B.jsx)(ct,{className:`ml-auto size-4 shrink-0 text-muted-foreground/50`}):null,t[15]=e.item.kind,t[16]=d);let f;return t[17]!==e.item.icon||t[18]!==e.item.titleTrailingContent||t[19]!==e.item.value||t[20]!==o||t[21]!==s||t[22]!==c||t[23]!==l||t[24]!==u||t[25]!==d?(f=(0,B.jsxs)(it,{value:i,className:o,onMouseDown:un,onClick:s,children:[e.item.icon,c,e.item.titleTrailingContent,l,u,d]}),t[17]=e.item.icon,t[18]=e.item.titleTrailingContent,t[19]=e.item.value,t[20]=o,t[21]=s,t[22]=c,t[23]=l,t[24]=u,t[25]=d,t[26]=f):f=t[26],f}function un(e){e.preventDefault()}var dn=[],fn=3e4,pn=2,mn=20;function hn(e){return De(e)?`Finder`:Se(e)?`Explorer`:`Files`}function gn(e){return e===`windows`?`Win32`:e===`darwin`?`MacIntel`:e===`linux`?`Linux`:typeof navigator>`u`?``:navigator.platform}var _n=[`url`,`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`],vn=[`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`];function yn(e){switch(e){case`github`:return`GitHub`;case`gitlab`:return`GitLab`;case`forgejo`:return`Forgejo`;case`bitbucket`:return`Bitbucket`;case`azure-devops`:return`Azure DevOps`;case`url`:return`Git URL`}}function bn(e){switch(e){case`github`:return`owner/repo`;case`gitlab`:return`group/project`;case`forgejo`:return`owner/repo`;case`bitbucket`:return`workspace/repository`;case`azure-devops`:return`project/repository`;case`url`:return`URL`}}function xn(e){return e===`url`?null:e}function H(e,t){switch(e){case`github`:return(0,B.jsx)(C,{className:t});case`gitlab`:return(0,B.jsx)(x,{className:t});case`forgejo`:return(0,B.jsx)(Ue,{className:t});case`bitbucket`:return(0,B.jsx)(Ie,{className:t});case`azure-devops`:return(0,B.jsx)(Le,{className:t});case`url`:return(0,B.jsx)(Vt,{className:t})}}function Sn(e){return!e||e.step===`confirm`?null:e.source===`url`?`Enter Git clone URL`:`Enter ${yn(e.source)} repository (${bn(e.source)})`}function Cn(e){return e.split(`/`).at(-1)?.trim()??e}function wn(e){return`remote-repository:${e.provider}:${encodeURIComponent(e.nameWithOwner)}`}function Tn(e,t){return e===`bitbucket`?t.url:t.sshUrl}function En(e){return!e.includes(`/`)&&!e.includes(`:`)}function U(e){return e===`url`?null:e}function Dn(e){return vn.toSorted((t,n)=>{let r=e[t].ready;return r===e[n].ready?yn(t).localeCompare(yn(n)):r?-1:1})}function On(e){let t={ready:!1,hint:`Provider status unavailable. Open Settings -> Source Control and rescan.`},n={url:{ready:!0,hint:null},github:t,gitlab:t,forgejo:t,bitbucket:t,"azure-devops":t};if(!e)return n;let r=new Map(e.sourceControlProviders.map(e=>[e.kind,e])),i={...n};for(let e of _n){let n=U(e);if(!n)continue;let a=r.get(n);if(!a){i[e]=t;continue}if(a.status!==`available`){i[e]={ready:!1,hint:a.installHint};continue}if(a.auth.status===`unauthenticated`){i[e]={ready:!1,hint:te(a.auth.detail)??`${a.label} is not authenticated. Open Settings -> Source Control for setup guidance.`};continue}i[e]={ready:!0,hint:null}}return i}function kn(e){return e instanceof Error&&e.message.trim().length>0?e.message:`An error occurred.`}function An(){let e=(0,I.c)(5),t=y(W),n=y(jn),r,i;e[0]===n?(r=e[1],i=e[2]):(r=()=>()=>{n(!1)},i=[n],e[0]=n,e[1]=r,e[2]=i),(0,F.useEffect)(r,i);let a;return e[3]===t?a=e[4]:(a=t?(0,B.jsx)(Mn,{}):null,e[3]=t,e[4]=a),a}function jn(e){return e.setOpen}function W(e){return e.open}function Mn(){let e=lt(ee.dispatchCommand),t=lt(ne.projectsAdd),n=lt(ne.serverGetStatistics),a=qe(),o=y(e=>e.setOpen),c=y(e=>e.openIntent),u=y(e=>e.clearOpenIntent),te=nt(),[p,m]=(0,F.useState)(``),_=(0,F.useDeferredValue)(p),Se=_.startsWith(`>`),[v,b]=(0,F.useState)(null),x=_e(),Ie=he(e=>e.pinnedThreadKeys),Le=ge(),{activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,handleNewThread:w}=Ot(),E=ie(Lt(ae)),D=ie(Lt(be)),it=me(),[at,ot]=(0,F.useState)([]),O=at.at(-1)??null,ct=O===null,[ut,Et]=(0,F.useState)(0),[jt,Vt]=(0,F.useState)(null),[Ht,M]=(0,F.useState)(!1),[N,P]=(0,F.useState)(null),[I,qt]=(0,F.useState)(!1),[Jt,z]=(0,F.useState)(!1),[Qt,$t]=(0,F.useState)([]),V=l(),ln=Ft(),un=Nt(),_n=de(e=>e.nodes),vn=we(e=>e.byId),U=xe(e=>e.byId),An=(0,F.useMemo)(()=>{let e=[],t=new Set;V&&(t.add(V),e.push({environmentId:V,label:Mt({isPrimary:!0,environmentId:V,runtimeLabel:ln}),isPrimary:!0}));for(let n of Object.values(vn)){if(t.has(n.environmentId)||It(n.environmentId,V,un.localEnvironmentId))continue;let i=U[n.environmentId];e.push({environmentId:n.environmentId,label:Pt({environmentId:n.environmentId,machines:r?un.machines:_n,fallback:Mt({isPrimary:!1,environmentId:n.environmentId,runtimeLabel:i?.descriptor?.label??null,savedLabel:n.label})}),isPrimary:!1})}return e.sort((e,t)=>e.isPrimary===t.isPrimary?e.label.localeCompare(t.label):e.isPrimary?-1:1),e},[V,ln,un,_n,vn,U]),jn=An[0]?.environmentId??null,W=jt??jn,Mn=(0,F.useMemo)(()=>gn(W&&V&&W===V?f()?.platform.os??null:W?U[W]?.descriptor?.platform.os??U[W]?.serverConfig?.environment.platform.os??null:null),[W,V,U]),Nn=N!==null,Pn=N?.step===`repository`,G=Pn&&N?xn(N.source):null,Fn=Pn?_.trim():``,K=Me({environmentId:N?.step===`repository`?N.environmentId:null,provider:G,query:Fn,limit:25,enabled:N?.step===`repository`&&N.source!==`url`&&G===`bitbucket`}),q=!Pn&&vt(p,Mn),In=rn({currentView:O,isBrowsing:q}),Ln=ct&&!Se&&!q&&!Nn,Rn=Ln?_.trim():``,[zn]=Be(Rn,{wait:200}),Bn=(0,F.useMemo)(()=>{let e=new Set,t=[];for(let n of D)e.has(n.environmentId)||(e.add(n.environmentId),t.push(n.environmentId));for(let n of E)e.has(n.environmentId)||(e.add(n.environmentId),t.push(n.environmentId));return t},[E,D]);(0,F.useEffect)(()=>{let e=zn.trim();if(!Ln||e.length<pn||Bn.length===0){$t([]);return}let t=!1,n=Bn.map(async t=>{let n=Ee(t);if(!n)return[];try{return(await n.orchestration.searchThreadMessages({query:e,limit:mn})).map(e=>Object.assign({environmentId:t},e))}catch{return[]}});return Promise.all(n).then(e=>{t||$t(e.flat().toSorted((e,t)=>t.timestamp.localeCompare(e.timestamp)).slice(0,mn))}),()=>{t=!0}},[Ln,zn,Bn]);let Vn=(0,F.useCallback)(e=>{let t=e&&V&&e===V?Le:e?U[e]?.serverConfig:null,n=e&&V&&e===V?x:e?U[e]?.serverConfig?.settings:null;return ht({workspaceAccessRoot:t?.workspaceAccessRoot,configuredBaseDirectory:n?.addProjectBaseDirectory})},[V,Le,U,x]),Hn=(0,F.useMemo)(()=>new Map(E.map(e=>[e.id,e.cwd])),[E]),Un=(0,F.useMemo)(()=>new Map(E.map(e=>[e.id,e.name])),[E]),Wn=(0,F.useMemo)(()=>new Map(D.map(e=>[e.id,e.title])),[D]),Gn=(0,F.useMemo)(()=>new Map(D.map(e=>[e.id,Un.get(e.projectId)??``])),[Un,D]),Kn=(0,F.useCallback)(async e=>{await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.threadId)),search:t=>({...t,messageId:e.messageId})})},[a]),qn=(0,F.useMemo)(()=>en({searchResults:Qt,threadTitleById:Wn,projectTitleByThreadId:Gn,icon:(0,B.jsx)(Ve,{className:L}),runMessage:Kn}),[Qt,Kn,Gn,Wn]),Jn=C?.id,Yn=C?s(d(C.environmentId,C.id)):null,Xn=Rt({threadKey:Yn,pinned:Yn?Ie[Yn]===!0:!1}),Zn=C?.environmentId??S?.environmentId??null,Qn=C?.projectId??S?.projectId??null,$n=Qn?Hn.get(Qn)??null:null,J=W&&Zn===W?$n:null,Y=ue(p.trim())&&J===null,er=q?yt(p):``,tr=q&&!St(p)?Ct(p):``,nr=At({environmentId:W,partialPath:er,cwd:J,staleTime:fn,enabled:q&&er.length>0&&W!==null&&!Y}),X=nr.data,rr=nr.isPending,ir=X?.entries??dn,ar=X?.workspaceAccessRoot!==void 0&&bt(X.parentPath,X.workspaceAccessRoot),or=q&&!Y&&!ar&&xt(er),{filteredEntries:sr,exactEntry:cr}=(0,F.useMemo)(()=>Yt({browseEntries:ir,browseFilterQuery:tr,highlightedItemValue:v}),[ir,tr,v]),lr=(0,F.useCallback)(e=>{re({environmentId:W,partialPath:e,cwd:J,staleTime:fn})},[W,J]);(0,F.useEffect)(()=>{q&&or&&lr(dt(p))},[or,q,lr,p]);let ur=(0,F.useMemo)(()=>async e=>{he.getState().setProjectExpanded(Oe(e,x),!0);let t=ke(D.filter(t=>t.environmentId===e.environmentId),e.id,x.sidebarThreadSortOrder);if(t){await a({to:`/$environmentId/$threadId`,params:se(d(t.environmentId,t.id))});return}await w(i(e.environmentId,e.id),{envMode:x.defaultThreadEnvMode})},[w,a,x,D]),dr=(0,F.useMemo)(()=>Xt({projects:E,valuePrefix:`project`,icon:e=>(0,B.jsx)(Pe,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:L}),runProject:ur}),[ur,E]),fr=(0,F.useMemo)(()=>Xt({projects:E,valuePrefix:`new-thread-in`,icon:e=>(0,B.jsx)(Pe,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:L}),runProject:async e=>{await Ut({activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,defaultThreadEnvMode:x.defaultThreadEnvMode,handleNewThread:w},i(e.environmentId,e.id))}}),[S,C,Ue,w,E,x.defaultThreadEnvMode]),pr=(0,F.useMemo)(()=>Zt({threads:D,...Jn?{activeThreadId:Jn}:{},projectTitleById:Un,sortOrder:x.sidebarThreadSortOrder,icon:(0,B.jsx)(Ve,{className:L}),renderLeadingContent:e=>(0,B.jsx)(ze,{thread:e}),renderTrailingContent:e=>(0,B.jsx)(Re,{thread:e}),runThread:async e=>{await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.id))})}}),[Jn,a,Un,x.sidebarThreadSortOrder,D]),mr=pr.slice(0,12);function hr(e){ot(t=>[...t,{addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}}]),b(null),m(e.initialQuery??``)}function gr(e){hr({addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}})}function _r(){P(null),at.length<=1&&Vt(null),ot(e=>e.slice(0,-1)),b(null),m(``)}function vr(e){b(null),m(e),e===``&&O?.initialQuery&&_r()}let yr=(0,F.useCallback)(e=>{Vt(e),P(null),hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:[],initialQuery:Vn(e)})},[Vn]),br=(0,F.useCallback)((e,t)=>{Vt(e),P({step:`repository`,environmentId:e,source:t}),hr({addonIcon:H(t,R),groups:[],initialQuery:``})},[]),xr=ce(e=>e.openSettings),Sr=(0,F.useCallback)(()=>{o(!1),xr(`source-control`)},[xr,o]),Cr=(0,F.useCallback)((e,t)=>{let n=[{kind:`action`,value:`action:add-project:${e}:local`,searchTerms:[`local`,`folder`,`directory`,`browse`],title:`Local folder`,description:`Browse a folder on disk`,icon:(0,B.jsx)(T,{className:L}),keepOpen:!0,run:async()=>{yr(e)}}],r=[`url`,...Dn(t)];for(let i of r){let r=yn(i),a=i===`url`?`Git URL`:`${r} repository`,o=i===`url`?`Clone from a remote URL`:`Clone ${r} ${bn(i)}`,s=t[i],c=s.hint,l=s.ready?void 0:(0,B.jsx)(`span`,{className:`ml-auto`,children:(0,B.jsxs)(Ke,{children:[(0,B.jsx)(We,{render:(0,B.jsx)(pe,{variant:`outline`,size:`xs`,className:`h-5 rounded-sm px-1.5 text-[10px] text-warning-foreground`,onClick:()=>{Sr()},children:`Setup Required`})}),(0,B.jsx)(Ge,{align:`end`,side:`left`,children:c??`Open Settings -> Source Control to configure this provider.`})]})});if(!s.ready){n.push({kind:`action`,value:`action:add-project:${e}:${i}:not-ready`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r,`setup required`],title:a,description:o,disabled:!0,icon:H(i,L),...l?{titleTrailingContent:l}:{},run:async()=>{}});continue}n.push({kind:`action`,value:`action:add-project:${e}:${i}`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r],title:a,description:o,icon:H(i,L),...l?{titleTrailingContent:l}:{},keepOpen:!0,run:async()=>{br(e,i)}})}return[{value:`sources:${e}`,label:`Sources`,items:n}]},[Sr,yr,br]),wr=(0,F.useCallback)(e=>{Vt(e),P(null);let t={environmentId:e},n=le(t).data;hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:Cr(e,On(n))}),fe(t).then(t=>{ot(n=>n.at(-1)?.groups[0]?.value===`sources:${e}`?[...n.slice(0,-1),{addonIcon:(0,B.jsx)(T,{className:R}),groups:Cr(e,On(t))}]:n)})},[Cr]),Tr=An.map(e=>({kind:`action`,value:`action:add-project:environment:${e.environmentId}`,searchTerms:[e.label,e.environmentId,e.isPrimary?`this device`:``],title:e.label,description:`Projects on ${e.label}`,icon:(0,B.jsx)(Ae,{environmentId:e.environmentId,label:e.label,className:L}),keepOpen:!0,run:async()=>{wr(e.environmentId)}})),Er=(0,F.useMemo)(()=>[{value:`environments`,label:`Environments`,items:Tr}],[Tr]),Dr=(0,F.useCallback)(()=>{if(!t.allowed){h.add(j({type:`error`,title:`Unable to add project`,description:t.reason??`This action is unavailable.`}));return}if(An.length>1){hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:Er});return}let e=jn;if(!e){h.add(j({type:`error`,title:`Unable to browse projects`,description:`No environment is available.`}));return}wr(e)},[t.allowed,t.reason,Er,An.length,jn,wr]);(0,F.useLayoutEffect)(()=>{c?.kind===`add-project`&&(u(),Dr())},[u,Dr,c]);let Or=sn(C?d(C.environmentId,C.id):null),Z=kt()===`phone`?[]:[Or];if(Z.push({kind:`action`,value:`action:show-inbox-sidebar`,searchTerms:[`sidebar`,`inbox`,`tasks`,`activity`],title:`Show Inbox sidebar`,icon:(0,B.jsx)(Ye,{className:L}),shortcutCommand:`sidebar.showInbox`,run:async()=>{oe.getState().clearSelection(),he.getState().setSidebarMode(`inbox`),o(!1)}},{kind:`action`,value:`action:show-projects-sidebar`,searchTerms:[`sidebar`,`projects`,`tree`,`folders`],title:`Show Projects sidebar`,icon:(0,B.jsx)(Xe,{className:L}),shortcutCommand:`sidebar.showProjects`,run:async()=>{oe.getState().clearSelection(),he.getState().setSidebarMode(`projects`),o(!1)}}),Z.push({kind:`action`,value:`action:toggle-current-thread-pin`,searchTerms:[`pin`,`unpin`,`thread`,`favorite`,`keep at top`],title:Xn.title,...Xn.description?{description:Xn.description}:{},disabled:Xn.disabled,icon:Xn.pinned?(0,B.jsx)(Kt,{className:L}):(0,B.jsx)(Tt,{className:L}),shortcutCommand:`thread.pinToggle`,run:async()=>{C&&Yn&&await zt({threadKey:Yn,threadTitle:C.title,confirmUnpin:x.confirmThreadUnpin})}}),E.length>0){let t=Qn?Un.get(Qn)??null:null;t&&Z.push({kind:`action`,value:`action:new-thread`,searchTerms:[`new thread`,`chat`,`create`,`draft`],title:(0,B.jsxs)(B.Fragment,{children:[`New thread in `,(0,B.jsx)(`span`,{className:`font-semibold`,children:t})]}),icon:(0,B.jsx)(Je,{className:L}),shortcutCommand:`chat.new`,...e.reason?{description:e.reason}:{},disabled:!e.allowed,run:async()=>{await Bt({activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,defaultThreadEnvMode:x.defaultThreadEnvMode,handleNewThread:w})}}),Z.push({kind:`submenu`,value:`action:new-thread-in`,searchTerms:[`new thread`,`project`,`pick`,`choose`,`select`],title:`New thread in...`,icon:(0,B.jsx)(Je,{className:L}),addonIcon:(0,B.jsx)(Je,{className:R}),groups:[{value:`projects`,label:`Projects`,items:fr}],...e.reason?{description:e.reason}:{},disabled:!e.allowed})}Z.push({kind:`action`,value:`action:add-project`,searchTerms:[`add project`,`folder`,`directory`,`browse`,`clone`,`remote`,`repository`,`repo`,`git`,`github`,`gitlab`,`forgejo`,`codeberg`,`bitbucket`,`azure`,`devops`,`url`,`environment`],title:`Add project`,...t.reason?{description:t.reason}:{},disabled:!t.allowed,icon:(0,B.jsx)(T,{className:L}),keepOpen:!0,run:async()=>{Dr()}}),Dt()!==`phone`&&Z.push({kind:`action`,value:`action:statistics`,searchTerms:[`statistics`,`usage`,`activity`,`tokens`,`cost`,`history`],title:`Open statistics`,...n.reason?{description:n.reason}:{},disabled:!n.allowed,icon:(0,B.jsx)(Qe,{className:L}),run:async()=>{o(!1),await a({to:`/statistics`})}}),Z.push({kind:`action`,value:`action:settings`,searchTerms:[`settings`,`preferences`,`configuration`,`keybindings`],title:`Open settings`,icon:(0,B.jsx)(Fe,{className:L}),run:async()=>{o(!1),xr()}});let kr=an({actionItems:Z,recentThreadItems:mr}),Ar=tn({activeGroups:O?O.groups:kr,query:_,isInSubmenu:O!==null,projectSearchItems:dr,threadSearchItems:pr,messageSearchItems:qn}),jr=(0,F.useCallback)(async(e,t)=>{let n=t?.environmentId??W;if(!n){h.add(j({type:`error`,title:`Failed to add project`,description:`Choose an environment and try again.`}));return}let r=t?.api??Ee(n);if(!r){h.add(j({type:`error`,title:`Failed to add project`,description:`The environment is still reconnecting. Try again shortly.`}));return}if(mt(e.trim(),Mn)){h.add(j({type:`error`,title:`Failed to add project`,description:`Windows-style paths are only supported on Windows.`}));return}if(ue(e.trim())&&!J){h.add(j({type:`error`,title:`Failed to add project`,description:`Relative paths require an active project.`}));return}let s=gt(e,J);if(s.length===0)return;let c=ft(E.filter(e=>e.environmentId===n),s);if(c){he.getState().setProjectExpanded(Oe(c,x),!0);let e=ke(D.filter(e=>e.environmentId===c.environmentId),c.id,x.sidebarThreadSortOrder);e?await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.id))}):await w(i(c.environmentId,c.id),{envMode:x.defaultThreadEnvMode}).catch(()=>void 0),o(!1);return}try{let e=Ce();await r.orchestration.dispatchCommand({type:`project.create`,commandId:Te(),projectId:e,title:_t(s),workspaceRoot:s,projectMetadataDir:`.ryco`,createWorkspaceRootIfMissing:!0,createdAt:new Date().toISOString()}),await w(i(n,e),{envMode:x.defaultThreadEnvMode}).catch(()=>void 0),o(!1)}catch(e){h.add(j({type:`error`,title:`Failed to add project`,description:e instanceof Error?e.message:`An error occurred.`}))}},[W,Mn,J,w,a,E,o,x,D]),Mr=(0,F.useCallback)(e=>Vn(e),[Vn]),Q=(0,F.useCallback)(e=>{let t=Mr(e.flow.environmentId);P({step:`confirm`,environmentId:e.flow.environmentId,source:e.flow.source,repositoryInput:e.repositoryInput,repository:e.repository,remoteUrl:e.remoteUrl}),b(null),m(t),Et(e=>e+1)},[Mr]);async function Nr(e){if(!N)return;let t=Ee(N.environmentId);if(!t){h.add(j({type:`error`,title:`Unable to clone project`,description:`Environment API is not available.`}));return}if(N.step===`repository`){let e=p.trim();if(e.length===0||I)return;let n=xn(N.source);if(!n){Q({flow:N,repositoryInput:e,repository:null,remoteUrl:e});return}let r=K.data?.repositories??[];if(En(e)&&Fn===e&&r.length===1){let e=r[0];Q({flow:N,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Tn(N.source,e)});return}qt(!0);try{let r=await t.sourceControl.lookupRepository({provider:n,repository:e});Q({flow:N,repositoryInput:e,repository:r,remoteUrl:Tn(N.source,r)})}catch(e){h.add(j({type:`error`,title:`Repository lookup failed`,description:kn(e)}))}finally{qt(!1)}return}let n=(e??p).trim();if(n.length===0||Jt)return;if(mt(n,Mn)){h.add(j({type:`error`,title:`Clone failed`,description:`Windows-style paths are only supported on Windows.`}));return}if(ue(n)&&!J){h.add(j({type:`error`,title:`Clone failed`,description:`Relative paths require an active project.`}));return}let r=gt(n,J);if(r.length!==0){z(!0);try{let e=xn(N.source),n=await t.sourceControl.cloneRepository({...e&&N.repository?{provider:e,repository:N.repository.nameWithOwner,remoteUrl:N.remoteUrl,...N.source===`bitbucket`?{protocol:`https`}:{}}:{remoteUrl:N.remoteUrl},destinationPath:r});await jr(n.cwd,{environmentId:N.environmentId,api:t})}catch(e){h.add(j({type:`error`,title:`Clone failed`,description:kn(e)}))}finally{z(!1)}}}function Pr(e){let t=wt(p,e);b(null),m(t),Et(e=>e+1)}function Fr(e){let t=pt(e);b(null),m(t),Et(e=>e+1)}function Ir(){if(!or)return;let e=dt(p);e!==null&&(b(null),m(e),Et(e=>e+1))}let Lr=St(p)?X?.parentPath??p.trim():cr?.fullPath??p.trim(),Rr=[...nr.error?[{value:`browse-status`,label:`Filesystem`,items:[{kind:`action`,value:`browse-status:error`,searchTerms:[`filesystem`,`unavailable`,`error`],title:`Unable to browse folders`,description:kn(nr.error),icon:(0,B.jsx)(ve,{className:L}),disabled:!0,run:async()=>{}}]}]:[],...nn({browseEntries:sr,browseQuery:p,canBrowseUp:or,upIcon:(0,B.jsx)(Wt,{className:L}),directoryIcon:(0,B.jsx)(He,{className:L}),symlinkIcon:(0,B.jsx)(Gt,{className:L}),browseUp:Ir,browseTo:Pr,browseToPath:Fr})],zr=Rr.map(e=>e.value===`directories`?{...e,label:`Select where to clone`}:e),Br=(0,F.useMemo)(()=>N?.step===`confirm`?{title:N.repository?.nameWithOwner??N.repositoryInput,description:N.repository?.url??N.remoteUrl,icon:H(N.source,L)}:null,[N]),Vr=(0,F.useMemo)(()=>{if(N?.step!==`repository`||N.source===`url`||G!==`bitbucket`)return[];let e=K.data?.repositories??[];return e.length>0?[{value:`remote-repositories:${N.environmentId}:${G}`,label:Fn.length>0?`Matching repositories`:`Available repositories`,items:e.map(e=>({kind:`action`,value:wn(e),searchTerms:[e.nameWithOwner,Cn(e.nameWithOwner),e.url,e.sshUrl],title:e.nameWithOwner,description:e.url,icon:H(N.source,L),keepOpen:!0,run:async()=>{Q({flow:N,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Tn(N.source,e)})}}))}]:K.isFetching?[{value:`remote-repositories:${N.environmentId}:${G}:loading`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:loading`,searchTerms:[`loading`,`repository`,`repo`],title:`Loading repositories`,description:`Reading available Bitbucket workspaces`,icon:H(N.source,L),disabled:!0,run:async()=>{}}]}]:K.error===null?[]:[{value:`remote-repositories:${N.environmentId}:${G}:error`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:error`,searchTerms:[`error`,`repository`,`repo`],title:`Unable to load repositories`,description:kn(K.error),icon:H(N.source,L),disabled:!0,run:async()=>{}}]}]},[N,Q,G,Fn,K.data?.repositories,K.error,K.isFetching]),Hr=N?.step===`repository`&&N.source===`bitbucket`?Fn.length===0?`No repositories found. Enter workspace/repository manually.`:`No matching repositories. Enter workspace/repository manually.`:null,Ur=Ar;N?.step===`repository`?Ur=Vr:N?.step===`confirm`?Ur=Y?[]:zr:q&&(Ur=Y?[]:Rr);let Wr=Sn(N)??on(In),Gr=In===`submenu`||In===`submenu-browse`,$=v?.startsWith(`browse:`)??!1,Kr=q&&!Y,qr=Kr&&!rr&&p.trim().length>0&&!$&&(St(p)?!X:cr===null),Jr=De(navigator.platform),Yr=Jr?`⌘`:`Ctrl`,Xr=N?.step===`confirm`,Zr=Xr?qr?`Create & Clone`:`Clone`:qr?`Create & Add`:`Add`,Qr=$?`${Yr} Enter`:`Enter`,$r=N?N.source===`url`?`Continue`:`Lookup`:null,ei=I||Jt,ti=N?.step===`repository`&&p.trim().length>0&&!ei,ni=hn(navigator.platform),ri=q&&W!==null&&V!==null&&W===V&&typeof window<`u`&&window.desktopBridge!==void 0,ii=(0,F.useMemo)(()=>{if(!ri)return;let e=p.trim();if(e.length===0)return;let t=St(p)?X?.parentPath??e:er||e,n=gt(t,J);return n.length>0?n:void 0},[er,X?.parentPath,ri,J,p]);function ai(e){return Jr?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey}function oi(e){if(N?.step===`repository`&&e.key===`Enter`){e.preventDefault();let t=K.data?.repositories.find(e=>wn(e)===v);if(t){Q({flow:N,repositoryInput:t.nameWithOwner,repository:t,remoteUrl:Tn(N.source,t)});return}Nr();return}if(Kr&&e.key===`Enter`&&(!$||ai(e))){e.preventDefault(),Xr?Nr(Lr):jr(Lr);return}e.key===`Backspace`&&p===``&&Gr&&(e.preventDefault(),_r())}function si(e){if(!e.disabled){if(e.kind===`submenu`){gr(e);return}e.keepOpen||o(!1),e.run().catch(e=>{h.add(j({type:`error`,title:`Unable to run command`,description:e instanceof Error?e.message:`An unexpected error occurred.`}))})}}let ci=(0,F.useCallback)(async()=>{if(!ri||Ht)return;let e=ye();if(!e)return;M(!0);let t=null;try{t=await e.dialogs.pickFolder(ii?{initialPath:ii}:void 0)}catch{M(!1);return}M(!1),t&&await jr(t)},[ri,ii,jr,Ht]);return(0,B.jsx)(tt,{"aria-label":`Command palette`,className:`project-glass-surface overflow-hidden p-0`,"data-testid":`command-palette`,surface:`glass`,finalFocus:()=>(te?.current?.focusAtEnd(),!1),onBackdropPointerDown:()=>{o(!1)},children:(0,B.jsxs)(rt,{"aria-label":`Command palette`,autoHighlight:q||Nn?!1:`always`,mode:`none`,onItemHighlighted:e=>{b(typeof e==`string`?e:null)},onValueChange:vr,value:p,children:[(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(et,{className:N?.step===`repository`?`pe-32`:q?qr?`pe-36`:`pe-16`:void 0,placeholder:Wr,wrapperClassName:Gr?`[&_[data-slot=autocomplete-start-addon]]:pointer-events-auto`:void 0,...Gr?{startAddon:(0,B.jsx)(`button`,{type:`button`,className:`flex cursor-pointer items-center`,"aria-label":`Back`,onClick:_r,children:(0,B.jsx)(Ze,{})})}:q&&!Gr?{startAddon:(0,B.jsx)(T,{})}:{},onKeyDown:oi}),N?.step===`repository`?(0,B.jsxs)(pe,{variant:`outline`,size:`xs`,tabIndex:-1,className:`absolute inset-e-2.5 top-1/2 gap-1.5 pe-1 ps-2 -translate-y-1/2`,"aria-label":`${$r??`Continue`} (Enter)`,disabled:!ti,onMouseDown:e=>{e.preventDefault()},onClick:()=>{Nr()},title:`${$r??`Continue`} (Enter)`,children:[(0,B.jsx)(`span`,{children:ei?`Working`:$r}),(0,B.jsx)(k,{className:`pointer-events-none -me-0.5 items-center gap-1 pointer-coarse:hidden`,children:(0,B.jsx)(A,{children:`Enter`})})]}):q?(0,B.jsxs)(pe,{variant:`outline`,size:`xs`,tabIndex:-1,className:g(`absolute inset-e-2.5 top-1/2 pe-1 ps-2 -translate-y-1/2`,$?`gap-1`:`gap-1.5`),"aria-label":`${Zr} (${Qr})`,disabled:Y||Xr&&ei,onMouseDown:e=>{e.preventDefault()},onClick:()=>{Y||(Xr?Nr(Lr):jr(Lr))},title:`${Zr} (${Qr})`,children:[(0,B.jsx)(`span`,{children:Xr&&ei?`Cloning`:Zr}),(0,B.jsx)(k,{className:`pointer-events-none -me-0.5 items-center gap-1 pointer-coarse:hidden`,children:(0,B.jsx)(A,{children:$?`${Yr} Enter`:`Enter`})})]}):null]}),(0,B.jsxs)($e,{className:`max-h-[min(28rem,70vh)] bg-transparent`,children:[Br?(0,B.jsxs)(`div`,{className:`p-2 pb-0`,children:[(0,B.jsx)(`div`,{className:`px-2 py-1.5 font-medium text-muted-foreground text-xs`,children:`Repository`}),(0,B.jsxs)(`div`,{className:`flex min-h-8 items-center gap-2 rounded-sm px-2 py-1.5`,children:[Br.icon,(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsx)(`span`,{className:`truncate text-foreground text-sm`,children:Br.title}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:Br.description})]})]})]}):null,(0,B.jsx)(cn,{groups:Ur,highlightedItemValue:v,isActionsOnly:Se,keybindings:it,onExecuteItem:si,...N?.step===`repository`?{emptyStateMessage:N.source===`url`?`Enter a Git clone URL and press Enter to continue.`:Hr??`Enter a repository path and press Enter to look it up.`}:N?.step===`confirm`?{emptyStateMessage:`Choose a destination path and press Enter to clone.`}:Y?{emptyStateMessage:`Relative paths require an active project.`}:qr?{emptyStateMessage:`Press Enter to create this folder and add it as a project.`}:{}})]}),(0,B.jsxs)(st,{className:`gap-3 max-sm:flex-col max-sm:items-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3 pointer-coarse:hidden`,children:[(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:(0,B.jsx)(je,{})}),(0,B.jsx)(A,{children:(0,B.jsx)(Ne,{})}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Navigate`})]}),N?.step===`repository`?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Enter`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:$r??`Continue`})]}):!Kr||$?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Enter`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Select`})]}):null,Gr?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Backspace`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Back`})]}):null,(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Esc`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Close`})]})]}),ri?(0,B.jsx)(pe,{variant:`ghost`,size:`xs`,className:`h-auto px-2 text-xs text-muted-foreground/80 hover:bg-transparent hover:text-foreground`,disabled:Ht,onClick:()=>{ci()},children:`Open in ${ni}`}):null]})]},`${at.length}-${ut}-${q}-${N?.step??`none`}`)})}export{An as CommandPaletteDialog};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,$t as n,K as r,Kt as i,Q as a,X as o,Yt as s,Z as c,a as l,q as u,qt as d,r as f}from"./primary-DZjgHvyf.js";import{$ as ee,Nl as te,t as ne}from"./src-C3Y_imaX.js";import{$l as p,$n as re,Bn as ie,Cn as m,Dn as ae,H as oe,Jr as se,K as ce,Kr as h,Nr as le,O as ue,P as de,Pr as fe,Qr as pe,Ul as me,V as he,Vl as ge,Vr as _e,do as ve,ei as g,gr as ye,ho as _,kn as be,mr as xe,ni as Se,oi as Ce,p as v,pr as we,ri as Te,sr as Ee,ti as De,wt as y,x as Oe,xn as ke}from"./runtime-BwHA1GUS.js";import{t as b}from"./react-CwJFpaho.js";import{$n as Ae,Cn as x,Fr as je,Gn as Me,Ir as Ne,dn as Pe,fr as Fe,gn as Ie,hn as Le,nn as Re,or as S,tn as ze,ur as Be,vr as Ve,wr as He,xn as C,yn as Ue}from"./switch-DnpJB2xv.js";import{t as w}from"./compiler-runtime-C4g8XhC5.js";import{i as We,n as Ge,t as Ke}from"./tooltip-BlweKBxc.js";import{t as qe}from"./useNavigate-B8oXtF30.js";import{_ as Je,b as T,v as Ye,y as Xe}from"./RootAppShell-T056pByH.js";import{t as Ze}from"./arrow-left-DUOpzEbP.js";import{t as Qe}from"./chart-column-Cg7d41tb.js";import{B as E,F as D,G as $e,H as et,L as tt,N as nt,P as rt,U as it,V as at,W as ot,q as O,z as st}from"./ContextHandoffEndpointLabel-CeGDLNA4.js";import{t as ct}from"./chevron-right-Dsw16yGn.js";import{n as k,t as A}from"./kbd-Dxm5Elqj.js";import{t as lt}from"./capabilities-CsHjxjab.js";import{t as ut}from"./download-DsYNYJeu.js";import{A as dt,D as ft,E as pt,F as mt,I as ht,L as gt,M as _t,N as vt,O as yt,P as bt,T as xt,j as St,k as Ct,w as wt,z as Tt}from"./sidebarProjectFolders-DO2Uv84F.js";import{t as j}from"./toastHelpers-CSQRKo4F.js";import{t as Et}from"./authorization-D8dOcEYq.js";import{t as Dt}from"./presentationTier-xlIjcFab.js";import{n as Ot}from"./sidebarUndo-gdSrfa4O.js";import{t as kt}from"./usePresentationTier-hxB7Yv_Q.js";import{c as At,m as jt,o as Mt}from"./BranchToolbar.logic-YN3KjVr9.js";import{o as Nt}from"./desktopWorkspace-_iM6B9Kf.js";import{i as Pt,n as Ft,r as It}from"./deviceName-C2N8ZRX3.js";import{t as Lt}from"./shallow-B--PNURq.js";import{I as Rt,L as zt,ct as Bt,dt as Vt,et as Ht,lt as Ut}from"./main-DAbEANjY.js";var M={name:`corner-left-up`,size:24,node:[[`path`,{d:`M14 9 9 4 4 9`,key:`1af5af`}],[`path`,{d:`M20 20h-7a4 4 0 0 1-4-4V4`,key:`1blwi3`}]]};M.node;var Wt=_(M),N={name:`folder-symlink`,size:24,node:[[`path`,{d:`M2 9.35V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7`,key:`y8kt7d`}],[`path`,{d:`m8 16 3-3-3-3`,key:`rlqrt1`}]]};N.node;var Gt=_(N),P={name:`pin-off`,size:24,node:[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]};P.node;var Kt=_(P),F=e(b(),1),I=w();async function qt(e,i){let s=Ee(e.environmentId),l=v(e.environmentId),d={...n(e.environmentId)},f=()=>{let t=n(e.environmentId),r=de.getState();return v(e.environmentId)===l&&t.phase===`connected`&&t.connectedAt===d.connectedAt&&t.disconnectedAt===d.disconnectedAt&&Et({hosted:u(),role:r.effectiveRole,fresh:r.directoryStatus===`ready`&&r.transportStatus===`online`,browserCurrent:r.browserStatus===`current`,sessionReady:r.sessionStatus===`ready`,method:ee.getThreadWindow}).allowed};if(!s||!f())throw Error(o);let te=await c({api:s,threadId:e.threadId,signal:i,isCurrent:f}),ne=a(te),p=t(te.title);if(i.throwIfAborted(),!f())throw Error(o);if(new TextEncoder().encode(ne).length>33554432)throw Error(`Conversation exceeds the 32 MiB export limit. No partial file was saved.`);if(r){if(!window.desktopBridge?.saveThreadExport)throw Error(`Update the desktop app to save conversation exports.`);return(await window.desktopBridge.saveThreadExport({filename:p,contents:ne})).status}return jt(p,ne),`downloaded`}var L=`size-4 text-muted-foreground/80`,R=`size-4`;function Jt(e){return e.isAlias?`browse:alias:${e.name}:${e.fullPath}`:`browse:${e.fullPath}`}function Yt(e){let t=e.browseFilterQuery.toLowerCase(),n=e.browseFilterQuery.startsWith(`.`),r=e.browseEntries.filter(e=>e.name.toLowerCase().startsWith(t)&&(n||!e.name.startsWith(`.`))),i=null,a=e.highlightedItemValue;a&&a.startsWith(`browse:`)&&(i=r.find(e=>Jt(e)===a)??null);let o=e.browseFilterQuery.length>0?r.find(t=>t.name===e.browseFilterQuery)??null:null;return{filteredEntries:r,highlightedEntry:i,exactEntry:o}}function z(e){return e.trim().toLowerCase().replace(/\s+/g,` `)}function Xt(e){return e.projects.map(t=>({kind:`action`,value:`${e.valuePrefix}:${t.environmentId}:${t.id}`,searchTerms:[t.name,t.cwd],title:t.name,description:t.cwd,icon:e.icon(t),run:async()=>{await e.runProject(t)}}))}function Zt(e){let t=m(e.threads.filter(e=>e.archivedAt===null),e.sortOrder);return(e.limit===void 0?t:t.slice(0,e.limit)).map(t=>{let n=e.projectTitleById.get(t.projectId),r=[];n&&r.push(n),t.branch&&r.push(`#${t.branch}`),t.id===e.activeThreadId&&r.push(`Current thread`);let i=e.renderLeadingContent?.(t),a=e.renderTrailingContent?.(t);return Object.assign({kind:`action`,value:`thread:${t.id}`,searchTerms:[t.title,n??``,t.branch??``],title:t.title,description:r.join(` · `),timestamp:S(t.latestUserMessageAt??t.updatedAt??t.createdAt),icon:e.icon},i?{titleLeadingContent:i}:{},a?{titleTrailingContent:a}:{},{run:async()=>{await e.runThread(t)}})})}function Qt(e,t){let n=z(e);return n.length===0||!n.includes(t)?-1/0:n===t?3:n.startsWith(t)?2:1}function $t(e,t){let n=e.searchTerms.filter(e=>e.length>0);if(n.length===0)return 0;for(let[e,r]of n.entries()){let n=Qt(r,t);if(n!==-1/0)return 1e3-e*100+n}return 0}function en(e){return e.searchResults.map(t=>{let n=e.threadTitleById.get(t.threadId)??`Thread`,r=e.projectTitleByThreadId.get(t.threadId),i=[n,r].filter(Boolean).join(` · `);return{kind:`action`,value:`message:${t.environmentId}:${t.threadId}:${t.messageId}`,searchTerms:[t.snippet,n,r??``],title:t.snippet,description:i,timestamp:S(t.timestamp),icon:e.icon,run:async()=>{await e.runMessage(t)}}})}function tn(e){let t=e.query.startsWith(`>`),n=z(t?e.query.slice(1):e.query);if(n.length===0)return t?e.activeGroups.filter(e=>e.value===`actions`):[...e.activeGroups];let r=[...e.activeGroups];t?r=r.filter(e=>e.value===`actions`):e.isInSubmenu||(r=r.filter(e=>e.value!==`recent-threads`));let i=[...r];return!e.isInSubmenu&&!t&&(e.projectSearchItems.length>0&&i.push({value:`projects-search`,label:`Projects`,items:e.projectSearchItems}),e.threadSearchItems.length>0&&i.push({value:`threads-search`,label:`Threads`,items:e.threadSearchItems}),e.messageSearchItems&&e.messageSearchItems.length>0&&i.push({value:`messages-search`,label:`Messages`,items:e.messageSearchItems})),i.flatMap(e=>{let t=e.items.map((e,t)=>z(e.searchTerms.join(` `)).includes(n)?{item:e,index:t,rank:$t(e,n)}:null).filter(e=>e!==null).toSorted((e,t)=>t.rank-e.rank||e.index-t.index).map(e=>e.item);return t.length===0?[]:[{value:e.value,label:e.label,items:t}]})}function nn(e){let t=[];e.canBrowseUp&&t.push({kind:`action`,value:`browse:up`,searchTerms:[e.browseQuery,`..`],title:`..`,icon:e.upIcon,keepOpen:!0,run:async()=>{e.browseUp()}});for(let n of e.browseEntries)t.push({kind:`action`,value:Jt(n),searchTerms:[e.browseQuery,n.fullPath,n.name],title:n.name,icon:n.isSymlink?e.symlinkIcon:e.directoryIcon,keepOpen:!0,run:async()=>{n.isAlias?e.browseToPath(n.fullPath):e.browseTo(n.name)}});return[{value:`directories`,label:`Directories`,items:t}]}function rn(e){return e.currentView?e.isBrowsing?`submenu-browse`:`submenu`:e.isBrowsing?`root-browse`:`root`}function an(e){let t=[];return e.actionItems.length>0&&t.push({value:`actions`,label:`Actions`,items:e.actionItems}),e.recentThreadItems.length>0&&t.push({value:`recent-threads`,label:`Recent Threads`,items:e.recentThreadItems}),t}function on(e){switch(e){case`root`:return`Search commands, projects, and threads...`;case`root-browse`:return`Enter project path (e.g. ~/projects/my-app)`;case`submenu`:return`Search...`;case`submenu-browse`:return`Enter path (e.g. ~/projects/my-app)`}}var B=p();function sn(e){let t=(0,F.useRef)(null),[n,r]=(0,F.useState)(!1);(0,F.useEffect)(()=>()=>t.current?.abort(),[]);let i=lt(ee.getThreadWindow);return{kind:`action`,keepOpen:!0,value:`action:export-thread-markdown`,title:n?`Cancel thread export`:`Export thread as Markdown`,searchTerms:[`export`,`markdown`,`download`,`conversation`],icon:(0,B.jsx)(ut,{className:L}),disabled:!n&&(!e||!i.allowed),run:async()=>{if(t.current){t.current.abort();return}if(!e||!i.allowed)return;let n=new AbortController;t.current=n,r(!0);let a=h.add({title:`Loading retained conversation…`,timeout:0,actionProps:{children:`Cancel`,onClick:()=>n.abort()}});try{let t=await qt(e,n.signal);t!==`cancelled`&&h.add({type:`success`,title:t===`saved`?`Conversation saved`:`Conversation download started`})}catch(e){n.signal.aborted||h.add({type:`error`,title:`Export failed`,description:e instanceof Error?e.message:`No file was saved. Retry the export.`})}finally{h.close(a),t.current=null,r(!1)}}}}function cn(e){let t=(0,I.c)(13);if(e.groups.length===0){let n=e.emptyStateMessage??(e.isActionsOnly?`No matching actions.`:`No matching commands, projects, or threads.`),r;return t[0]===n?r=t[1]:(r=(0,B.jsx)(`div`,{className:`py-10 text-center text-sm text-muted-foreground`,children:n}),t[0]=n,t[1]=r),r}let n;if(t[2]!==e.groups||t[3]!==e.highlightedItemValue||t[4]!==e.keybindings||t[5]!==e.onExecuteItem){let r;t[7]!==e.highlightedItemValue||t[8]!==e.keybindings||t[9]!==e.onExecuteItem?(r=t=>(0,B.jsxs)(E,{items:t.items,children:[(0,B.jsx)(at,{children:t.label}),(0,B.jsx)(D,{children:t=>t.disabled?(0,B.jsx)(V,{item:t},t.value):(0,B.jsx)(ln,{item:t,keybindings:e.keybindings,isActive:e.highlightedItemValue===t.value,onExecuteItem:e.onExecuteItem},t.value)})]},t.value),t[7]=e.highlightedItemValue,t[8]=e.keybindings,t[9]=e.onExecuteItem,t[10]=r):r=t[10],n=e.groups.map(r),t[2]=e.groups,t[3]=e.highlightedItemValue,t[4]=e.keybindings,t[5]=e.onExecuteItem,t[6]=n}else n=t[6];let r;return t[11]===n?r=t[12]:(r=(0,B.jsx)(ot,{children:n}),t[11]=n,t[12]=r),r}function V(e){let t=(0,I.c)(8),n;t[0]!==e.item.description||t[1]!==e.item.title||t[2]!==e.item.titleLeadingContent?(n=e.item.description?(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[0]=e.item.description,t[1]=e.item.title,t[2]=e.item.titleLeadingContent,t[3]=n):n=t[3];let r;return t[4]!==e.item.icon||t[5]!==e.item.titleTrailingContent||t[6]!==n?(r=(0,B.jsxs)(`div`,{className:`flex min-h-8 select-none items-center gap-2 rounded-sm px-2 py-1.5 text-base opacity-64 sm:min-h-7 sm:text-sm`,children:[e.item.icon,n,e.item.titleTrailingContent]}),t[4]=e.item.icon,t[5]=e.item.titleTrailingContent,t[6]=n,t[7]=r):r=t[7],r}function ln(e){let t=(0,I.c)(27),n;t[0]!==e.item.shortcutCommand||t[1]!==e.keybindings?(n=e.item.shortcutCommand?Ht(e.keybindings,e.item.shortcutCommand):null,t[0]=e.item.shortcutCommand,t[1]=e.keybindings,t[2]=n):n=t[2];let r=n,i=e.item.value,a=e.isActive&&`bg-accent! text-accent-foreground!`,o;t[3]===a?o=t[4]:(o=g(`cursor-pointer gap-2 hover:bg-transparent hover:text-inherit data-highlighted:bg-transparent data-highlighted:text-inherit data-selected:bg-transparent data-selected:text-inherit [&[data-highlighted][data-selected]]:bg-transparent [&[data-highlighted][data-selected]]:text-inherit`,a),t[3]=a,t[4]=o);let s;t[5]===e?s=t[6]:(s=()=>{e.onExecuteItem(e.item)},t[5]=e,t[6]=s);let c;t[7]!==e.item.description||t[8]!==e.item.title||t[9]!==e.item.titleLeadingContent?(c=e.item.description?(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:e.item.description})]}):(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm text-foreground`,children:[e.item.titleLeadingContent,(0,B.jsx)(`span`,{className:`truncate`,children:e.item.title})]}),t[7]=e.item.description,t[8]=e.item.title,t[9]=e.item.titleLeadingContent,t[10]=c):c=t[10];let l;t[11]===e.item.timestamp?l=t[12]:(l=e.item.timestamp?(0,B.jsx)(`span`,{className:`min-w-12 shrink-0 text-right text-[10px] tabular-nums text-muted-foreground/70`,children:e.item.timestamp}):null,t[11]=e.item.timestamp,t[12]=l);let u;t[13]===r?u=t[14]:(u=r?(0,B.jsx)(O,{children:r}):null,t[13]=r,t[14]=u);let d;t[15]===e.item.kind?d=t[16]:(d=e.item.kind===`submenu`?(0,B.jsx)(ct,{className:`ml-auto size-4 shrink-0 text-muted-foreground/50`}):null,t[15]=e.item.kind,t[16]=d);let f;return t[17]!==e.item.icon||t[18]!==e.item.titleTrailingContent||t[19]!==e.item.value||t[20]!==o||t[21]!==s||t[22]!==c||t[23]!==l||t[24]!==u||t[25]!==d?(f=(0,B.jsxs)(it,{value:i,className:o,onMouseDown:un,onClick:s,children:[e.item.icon,c,e.item.titleTrailingContent,l,u,d]}),t[17]=e.item.icon,t[18]=e.item.titleTrailingContent,t[19]=e.item.value,t[20]=o,t[21]=s,t[22]=c,t[23]=l,t[24]=u,t[25]=d,t[26]=f):f=t[26],f}function un(e){e.preventDefault()}var dn=[],fn=3e4,pn=2,mn=20;function hn(e){return De(e)?`Finder`:Se(e)?`Explorer`:`Files`}function gn(e){return e===`windows`?`Win32`:e===`darwin`?`MacIntel`:e===`linux`?`Linux`:typeof navigator>`u`?``:navigator.platform}var _n=[`url`,`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`],vn=[`github`,`gitlab`,`forgejo`,`bitbucket`,`azure-devops`];function yn(e){switch(e){case`github`:return`GitHub`;case`gitlab`:return`GitLab`;case`forgejo`:return`Forgejo`;case`bitbucket`:return`Bitbucket`;case`azure-devops`:return`Azure DevOps`;case`url`:return`Git URL`}}function bn(e){switch(e){case`github`:return`owner/repo`;case`gitlab`:return`group/project`;case`forgejo`:return`owner/repo`;case`bitbucket`:return`workspace/repository`;case`azure-devops`:return`project/repository`;case`url`:return`URL`}}function xn(e){return e===`url`?null:e}function H(e,t){switch(e){case`github`:return(0,B.jsx)(C,{className:t});case`gitlab`:return(0,B.jsx)(x,{className:t});case`forgejo`:return(0,B.jsx)(Ue,{className:t});case`bitbucket`:return(0,B.jsx)(Ie,{className:t});case`azure-devops`:return(0,B.jsx)(Le,{className:t});case`url`:return(0,B.jsx)(Vt,{className:t})}}function Sn(e){return!e||e.step===`confirm`?null:e.source===`url`?`Enter Git clone URL`:`Enter ${yn(e.source)} repository (${bn(e.source)})`}function Cn(e){return e.split(`/`).at(-1)?.trim()??e}function wn(e){return`remote-repository:${e.provider}:${encodeURIComponent(e.nameWithOwner)}`}function Tn(e,t){return e===`bitbucket`?t.url:t.sshUrl}function En(e){return!e.includes(`/`)&&!e.includes(`:`)}function U(e){return e===`url`?null:e}function Dn(e){return vn.toSorted((t,n)=>{let r=e[t].ready;return r===e[n].ready?yn(t).localeCompare(yn(n)):r?-1:1})}function On(e){let t={ready:!1,hint:`Provider status unavailable. Open Settings -> Source Control and rescan.`},n={url:{ready:!0,hint:null},github:t,gitlab:t,forgejo:t,bitbucket:t,"azure-devops":t};if(!e)return n;let r=new Map(e.sourceControlProviders.map(e=>[e.kind,e])),i={...n};for(let e of _n){let n=U(e);if(!n)continue;let a=r.get(n);if(!a){i[e]=t;continue}if(a.status!==`available`){i[e]={ready:!1,hint:a.installHint};continue}if(a.auth.status===`unauthenticated`){i[e]={ready:!1,hint:te(a.auth.detail)??`${a.label} is not authenticated. Open Settings -> Source Control for setup guidance.`};continue}i[e]={ready:!0,hint:null}}return i}function kn(e){return e instanceof Error&&e.message.trim().length>0?e.message:`An error occurred.`}function An(){let e=(0,I.c)(5),t=y(W),n=y(jn),r,i;e[0]===n?(r=e[1],i=e[2]):(r=()=>()=>{n(!1)},i=[n],e[0]=n,e[1]=r,e[2]=i),(0,F.useEffect)(r,i);let a;return e[3]===t?a=e[4]:(a=t?(0,B.jsx)(Mn,{}):null,e[3]=t,e[4]=a),a}function jn(e){return e.setOpen}function W(e){return e.open}function Mn(){let e=lt(ee.dispatchCommand),t=lt(ne.projectsAdd),n=lt(ne.serverGetStatistics),a=qe(),o=y(e=>e.setOpen),c=y(e=>e.openIntent),u=y(e=>e.clearOpenIntent),te=nt(),[p,m]=(0,F.useState)(``),_=(0,F.useDeferredValue)(p),Se=_.startsWith(`>`),[v,b]=(0,F.useState)(null),x=_e(),Ie=he(e=>e.pinnedThreadKeys),Le=ge(),{activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,handleNewThread:w}=Ot(),E=ie(Lt(ae)),D=ie(Lt(be)),it=me(),[at,ot]=(0,F.useState)([]),O=at.at(-1)??null,ct=O===null,[ut,Et]=(0,F.useState)(0),[jt,Vt]=(0,F.useState)(null),[Ht,M]=(0,F.useState)(!1),[N,P]=(0,F.useState)(null),[I,qt]=(0,F.useState)(!1),[Jt,z]=(0,F.useState)(!1),[Qt,$t]=(0,F.useState)([]),V=l(),ln=Ft(),un=Nt(),_n=de(e=>e.nodes),vn=we(e=>e.byId),U=xe(e=>e.byId),An=(0,F.useMemo)(()=>{let e=[],t=new Set;V&&(t.add(V),e.push({environmentId:V,label:Mt({isPrimary:!0,environmentId:V,runtimeLabel:ln}),isPrimary:!0}));for(let n of Object.values(vn)){if(t.has(n.environmentId)||It(n.environmentId,V,un.localEnvironmentId))continue;let i=U[n.environmentId];e.push({environmentId:n.environmentId,label:Pt({environmentId:n.environmentId,machines:r?un.machines:_n,fallback:Mt({isPrimary:!1,environmentId:n.environmentId,runtimeLabel:i?.descriptor?.label??null,savedLabel:n.label})}),isPrimary:!1})}return e.sort((e,t)=>e.isPrimary===t.isPrimary?e.label.localeCompare(t.label):e.isPrimary?-1:1),e},[V,ln,un,_n,vn,U]),jn=An[0]?.environmentId??null,W=jt??jn,Mn=(0,F.useMemo)(()=>gn(W&&V&&W===V?f()?.platform.os??null:W?U[W]?.descriptor?.platform.os??U[W]?.serverConfig?.environment.platform.os??null:null),[W,V,U]),Nn=N!==null,Pn=N?.step===`repository`,G=Pn&&N?xn(N.source):null,Fn=Pn?_.trim():``,K=Me({environmentId:N?.step===`repository`?N.environmentId:null,provider:G,query:Fn,limit:25,enabled:N?.step===`repository`&&N.source!==`url`&&G===`bitbucket`}),q=!Pn&&vt(p,Mn),In=rn({currentView:O,isBrowsing:q}),Ln=ct&&!Se&&!q&&!Nn,Rn=Ln?_.trim():``,[zn]=Be(Rn,{wait:200}),Bn=(0,F.useMemo)(()=>{let e=new Set,t=[];for(let n of D)e.has(n.environmentId)||(e.add(n.environmentId),t.push(n.environmentId));for(let n of E)e.has(n.environmentId)||(e.add(n.environmentId),t.push(n.environmentId));return t},[E,D]);(0,F.useEffect)(()=>{let e=zn.trim();if(!Ln||e.length<pn||Bn.length===0){$t([]);return}let t=!1,n=Bn.map(async t=>{let n=Ee(t);if(!n)return[];try{return(await n.orchestration.searchThreadMessages({query:e,limit:mn})).map(e=>Object.assign({environmentId:t},e))}catch{return[]}});return Promise.all(n).then(e=>{t||$t(e.flat().toSorted((e,t)=>t.timestamp.localeCompare(e.timestamp)).slice(0,mn))}),()=>{t=!0}},[Ln,zn,Bn]);let Vn=(0,F.useCallback)(e=>{let t=e&&V&&e===V?Le:e?U[e]?.serverConfig:null,n=e&&V&&e===V?x:e?U[e]?.serverConfig?.settings:null;return ht({workspaceAccessRoot:t?.workspaceAccessRoot,configuredBaseDirectory:n?.addProjectBaseDirectory})},[V,Le,U,x]),Hn=(0,F.useMemo)(()=>new Map(E.map(e=>[e.id,e.cwd])),[E]),Un=(0,F.useMemo)(()=>new Map(E.map(e=>[e.id,e.name])),[E]),Wn=(0,F.useMemo)(()=>new Map(D.map(e=>[e.id,e.title])),[D]),Gn=(0,F.useMemo)(()=>new Map(D.map(e=>[e.id,Un.get(e.projectId)??``])),[Un,D]),Kn=(0,F.useCallback)(async e=>{await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.threadId)),search:t=>({...t,messageId:e.messageId})})},[a]),qn=(0,F.useMemo)(()=>en({searchResults:Qt,threadTitleById:Wn,projectTitleByThreadId:Gn,icon:(0,B.jsx)(Ve,{className:L}),runMessage:Kn}),[Qt,Kn,Gn,Wn]),Jn=C?.id,Yn=C?s(d(C.environmentId,C.id)):null,Xn=Rt({threadKey:Yn,pinned:Yn?Ie[Yn]===!0:!1}),Zn=C?.environmentId??S?.environmentId??null,Qn=C?.projectId??S?.projectId??null,$n=Qn?Hn.get(Qn)??null:null,J=W&&Zn===W?$n:null,Y=ue(p.trim())&&J===null,er=q?yt(p):``,tr=q&&!St(p)?Ct(p):``,nr=At({environmentId:W,partialPath:er,cwd:J,staleTime:fn,enabled:q&&er.length>0&&W!==null&&!Y}),X=nr.data,rr=nr.isPending,ir=X?.entries??dn,ar=X?.workspaceAccessRoot!==void 0&&bt(X.parentPath,X.workspaceAccessRoot),or=q&&!Y&&!ar&&xt(er),{filteredEntries:sr,exactEntry:cr}=(0,F.useMemo)(()=>Yt({browseEntries:ir,browseFilterQuery:tr,highlightedItemValue:v}),[ir,tr,v]),lr=(0,F.useCallback)(e=>{re({environmentId:W,partialPath:e,cwd:J,staleTime:fn})},[W,J]);(0,F.useEffect)(()=>{q&&or&&lr(dt(p))},[or,q,lr,p]);let ur=(0,F.useMemo)(()=>async e=>{he.getState().setProjectExpanded(Oe(e,x),!0);let t=ke(D.filter(t=>t.environmentId===e.environmentId),e.id,x.sidebarThreadSortOrder);if(t){await a({to:`/$environmentId/$threadId`,params:se(d(t.environmentId,t.id))});return}await w(i(e.environmentId,e.id),{envMode:x.defaultThreadEnvMode})},[w,a,x,D]),dr=(0,F.useMemo)(()=>Xt({projects:E,valuePrefix:`project`,icon:e=>(0,B.jsx)(Pe,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:L}),runProject:ur}),[ur,E]),fr=(0,F.useMemo)(()=>Xt({projects:E,valuePrefix:`new-thread-in`,icon:e=>(0,B.jsx)(Pe,{environmentId:e.environmentId,cwd:e.cwd,projectId:e.id,customAvatarContentHash:e.customAvatarContentHash??null,className:L}),runProject:async e=>{await Ut({activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,defaultThreadEnvMode:x.defaultThreadEnvMode,handleNewThread:w},i(e.environmentId,e.id))}}),[S,C,Ue,w,E,x.defaultThreadEnvMode]),pr=(0,F.useMemo)(()=>Zt({threads:D,...Jn?{activeThreadId:Jn}:{},projectTitleById:Un,sortOrder:x.sidebarThreadSortOrder,icon:(0,B.jsx)(Ve,{className:L}),renderLeadingContent:e=>(0,B.jsx)(ze,{thread:e}),renderTrailingContent:e=>(0,B.jsx)(Re,{thread:e}),runThread:async e=>{await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.id))})}}),[Jn,a,Un,x.sidebarThreadSortOrder,D]),mr=pr.slice(0,12);function hr(e){ot(t=>[...t,{addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}}]),b(null),m(e.initialQuery??``)}function gr(e){hr({addonIcon:e.addonIcon,groups:e.groups,...e.initialQuery?{initialQuery:e.initialQuery}:{}})}function _r(){P(null),at.length<=1&&Vt(null),ot(e=>e.slice(0,-1)),b(null),m(``)}function vr(e){b(null),m(e),e===``&&O?.initialQuery&&_r()}let yr=(0,F.useCallback)(e=>{Vt(e),P(null),hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:[],initialQuery:Vn(e)})},[Vn]),br=(0,F.useCallback)((e,t)=>{Vt(e),P({step:`repository`,environmentId:e,source:t}),hr({addonIcon:H(t,R),groups:[],initialQuery:``})},[]),xr=ce(e=>e.openSettings),Sr=(0,F.useCallback)(()=>{o(!1),xr(`source-control`)},[xr,o]),Cr=(0,F.useCallback)((e,t)=>{let n=[{kind:`action`,value:`action:add-project:${e}:local`,searchTerms:[`local`,`folder`,`directory`,`browse`],title:`Local folder`,description:`Browse a folder on disk`,icon:(0,B.jsx)(T,{className:L}),keepOpen:!0,run:async()=>{yr(e)}}],r=[`url`,...Dn(t)];for(let i of r){let r=yn(i),a=i===`url`?`Git URL`:`${r} repository`,o=i===`url`?`Clone from a remote URL`:`Clone ${r} ${bn(i)}`,s=t[i],c=s.hint,l=s.ready?void 0:(0,B.jsx)(`span`,{className:`ml-auto`,children:(0,B.jsxs)(Ke,{children:[(0,B.jsx)(We,{render:(0,B.jsx)(pe,{variant:`outline`,size:`xs`,className:`h-5 rounded-sm px-1.5 text-[10px] text-warning-foreground`,onClick:()=>{Sr()},children:`Setup Required`})}),(0,B.jsx)(Ge,{align:`end`,side:`left`,children:c??`Open Settings -> Source Control to configure this provider.`})]})});if(!s.ready){n.push({kind:`action`,value:`action:add-project:${e}:${i}:not-ready`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r,`setup required`],title:a,description:o,disabled:!0,icon:H(i,L),...l?{titleTrailingContent:l}:{},run:async()=>{}});continue}n.push({kind:`action`,value:`action:add-project:${e}:${i}`,searchTerms:[`clone`,`remote`,`repository`,`repo`,`git`,r],title:a,description:o,icon:H(i,L),...l?{titleTrailingContent:l}:{},keepOpen:!0,run:async()=>{br(e,i)}})}return[{value:`sources:${e}`,label:`Sources`,items:n}]},[Sr,yr,br]),wr=(0,F.useCallback)(e=>{Vt(e),P(null);let t={environmentId:e},n=le(t).data;hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:Cr(e,On(n))}),fe(t).then(t=>{ot(n=>n.at(-1)?.groups[0]?.value===`sources:${e}`?[...n.slice(0,-1),{addonIcon:(0,B.jsx)(T,{className:R}),groups:Cr(e,On(t))}]:n)})},[Cr]),Tr=An.map(e=>({kind:`action`,value:`action:add-project:environment:${e.environmentId}`,searchTerms:[e.label,e.environmentId,e.isPrimary?`this device`:``],title:e.label,description:`Projects on ${e.label}`,icon:(0,B.jsx)(Ae,{environmentId:e.environmentId,label:e.label,className:L}),keepOpen:!0,run:async()=>{wr(e.environmentId)}})),Er=(0,F.useMemo)(()=>[{value:`environments`,label:`Environments`,items:Tr}],[Tr]),Dr=(0,F.useCallback)(()=>{if(!t.allowed){h.add(j({type:`error`,title:`Unable to add project`,description:t.reason??`This action is unavailable.`}));return}if(An.length>1){hr({addonIcon:(0,B.jsx)(T,{className:R}),groups:Er});return}let e=jn;if(!e){h.add(j({type:`error`,title:`Unable to browse projects`,description:`No environment is available.`}));return}wr(e)},[t.allowed,t.reason,Er,An.length,jn,wr]);(0,F.useLayoutEffect)(()=>{c?.kind===`add-project`&&(u(),Dr())},[u,Dr,c]);let Or=sn(C?d(C.environmentId,C.id):null),Z=kt()===`phone`?[]:[Or];if(Z.push({kind:`action`,value:`action:show-inbox-sidebar`,searchTerms:[`sidebar`,`inbox`,`tasks`,`activity`],title:`Show Inbox sidebar`,icon:(0,B.jsx)(Ye,{className:L}),shortcutCommand:`sidebar.showInbox`,run:async()=>{oe.getState().clearSelection(),he.getState().setSidebarMode(`inbox`),o(!1)}},{kind:`action`,value:`action:show-projects-sidebar`,searchTerms:[`sidebar`,`projects`,`tree`,`folders`],title:`Show Projects sidebar`,icon:(0,B.jsx)(Xe,{className:L}),shortcutCommand:`sidebar.showProjects`,run:async()=>{oe.getState().clearSelection(),he.getState().setSidebarMode(`projects`),o(!1)}}),Z.push({kind:`action`,value:`action:toggle-current-thread-pin`,searchTerms:[`pin`,`unpin`,`thread`,`favorite`,`keep at top`],title:Xn.title,...Xn.description?{description:Xn.description}:{},disabled:Xn.disabled,icon:Xn.pinned?(0,B.jsx)(Kt,{className:L}):(0,B.jsx)(Tt,{className:L}),shortcutCommand:`thread.pinToggle`,run:async()=>{C&&Yn&&await zt({threadKey:Yn,threadTitle:C.title,confirmUnpin:x.confirmThreadUnpin})}}),E.length>0){let t=Qn?Un.get(Qn)??null:null;t&&Z.push({kind:`action`,value:`action:new-thread`,searchTerms:[`new thread`,`chat`,`create`,`draft`],title:(0,B.jsxs)(B.Fragment,{children:[`New thread in `,(0,B.jsx)(`span`,{className:`font-semibold`,children:t})]}),icon:(0,B.jsx)(Je,{className:L}),shortcutCommand:`chat.new`,...e.reason?{description:e.reason}:{},disabled:!e.allowed,run:async()=>{await Bt({activeDraftThread:S,activeThread:C,defaultProjectRef:Ue,defaultThreadEnvMode:x.defaultThreadEnvMode,handleNewThread:w})}}),Z.push({kind:`submenu`,value:`action:new-thread-in`,searchTerms:[`new thread`,`project`,`pick`,`choose`,`select`],title:`New thread in...`,icon:(0,B.jsx)(Je,{className:L}),addonIcon:(0,B.jsx)(Je,{className:R}),groups:[{value:`projects`,label:`Projects`,items:fr}],...e.reason?{description:e.reason}:{},disabled:!e.allowed})}Z.push({kind:`action`,value:`action:add-project`,searchTerms:[`add project`,`folder`,`directory`,`browse`,`clone`,`remote`,`repository`,`repo`,`git`,`github`,`gitlab`,`forgejo`,`codeberg`,`bitbucket`,`azure`,`devops`,`url`,`environment`],title:`Add project`,...t.reason?{description:t.reason}:{},disabled:!t.allowed,icon:(0,B.jsx)(T,{className:L}),keepOpen:!0,run:async()=>{Dr()}}),Dt()!==`phone`&&Z.push({kind:`action`,value:`action:statistics`,searchTerms:[`statistics`,`usage`,`activity`,`tokens`,`cost`,`history`],title:`Open statistics`,...n.reason?{description:n.reason}:{},disabled:!n.allowed,icon:(0,B.jsx)(Qe,{className:L}),run:async()=>{o(!1),await a({to:`/statistics`})}}),Z.push({kind:`action`,value:`action:settings`,searchTerms:[`settings`,`preferences`,`configuration`,`keybindings`],title:`Open settings`,icon:(0,B.jsx)(Fe,{className:L}),run:async()=>{o(!1),xr()}});let kr=an({actionItems:Z,recentThreadItems:mr}),Ar=tn({activeGroups:O?O.groups:kr,query:_,isInSubmenu:O!==null,projectSearchItems:dr,threadSearchItems:pr,messageSearchItems:qn}),jr=(0,F.useCallback)(async(e,t)=>{let n=t?.environmentId??W;if(!n){h.add(j({type:`error`,title:`Failed to add project`,description:`Choose an environment and try again.`}));return}let r=t?.api??Ee(n);if(!r){h.add(j({type:`error`,title:`Failed to add project`,description:`The environment is still reconnecting. Try again shortly.`}));return}if(mt(e.trim(),Mn)){h.add(j({type:`error`,title:`Failed to add project`,description:`Windows-style paths are only supported on Windows.`}));return}if(ue(e.trim())&&!J){h.add(j({type:`error`,title:`Failed to add project`,description:`Relative paths require an active project.`}));return}let s=gt(e,J);if(s.length===0)return;let c=ft(E.filter(e=>e.environmentId===n),s);if(c){he.getState().setProjectExpanded(Oe(c,x),!0);let e=ke(D.filter(e=>e.environmentId===c.environmentId),c.id,x.sidebarThreadSortOrder);e?await a({to:`/$environmentId/$threadId`,params:se(d(e.environmentId,e.id))}):await w(i(c.environmentId,c.id),{envMode:x.defaultThreadEnvMode}).catch(()=>void 0),o(!1);return}try{let e=Ce();await r.orchestration.dispatchCommand({type:`project.create`,commandId:Te(),projectId:e,title:_t(s),workspaceRoot:s,projectMetadataDir:`.ryco`,createWorkspaceRootIfMissing:!0,createdAt:new Date().toISOString()}),await w(i(n,e),{envMode:x.defaultThreadEnvMode}).catch(()=>void 0),o(!1)}catch(e){h.add(j({type:`error`,title:`Failed to add project`,description:e instanceof Error?e.message:`An error occurred.`}))}},[W,Mn,J,w,a,E,o,x,D]),Mr=(0,F.useCallback)(e=>Vn(e),[Vn]),Q=(0,F.useCallback)(e=>{let t=Mr(e.flow.environmentId);P({step:`confirm`,environmentId:e.flow.environmentId,source:e.flow.source,repositoryInput:e.repositoryInput,repository:e.repository,remoteUrl:e.remoteUrl}),b(null),m(t),Et(e=>e+1)},[Mr]);async function Nr(e){if(!N)return;let t=Ee(N.environmentId);if(!t){h.add(j({type:`error`,title:`Unable to clone project`,description:`Environment API is not available.`}));return}if(N.step===`repository`){let e=p.trim();if(e.length===0||I)return;let n=xn(N.source);if(!n){Q({flow:N,repositoryInput:e,repository:null,remoteUrl:e});return}let r=K.data?.repositories??[];if(En(e)&&Fn===e&&r.length===1){let e=r[0];Q({flow:N,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Tn(N.source,e)});return}qt(!0);try{let r=await t.sourceControl.lookupRepository({provider:n,repository:e});Q({flow:N,repositoryInput:e,repository:r,remoteUrl:Tn(N.source,r)})}catch(e){h.add(j({type:`error`,title:`Repository lookup failed`,description:kn(e)}))}finally{qt(!1)}return}let n=(e??p).trim();if(n.length===0||Jt)return;if(mt(n,Mn)){h.add(j({type:`error`,title:`Clone failed`,description:`Windows-style paths are only supported on Windows.`}));return}if(ue(n)&&!J){h.add(j({type:`error`,title:`Clone failed`,description:`Relative paths require an active project.`}));return}let r=gt(n,J);if(r.length!==0){z(!0);try{let e=xn(N.source),n=await t.sourceControl.cloneRepository({...e&&N.repository?{provider:e,repository:N.repository.nameWithOwner,remoteUrl:N.remoteUrl,...N.source===`bitbucket`?{protocol:`https`}:{}}:{remoteUrl:N.remoteUrl},destinationPath:r});await jr(n.cwd,{environmentId:N.environmentId,api:t})}catch(e){h.add(j({type:`error`,title:`Clone failed`,description:kn(e)}))}finally{z(!1)}}}function Pr(e){let t=wt(p,e);b(null),m(t),Et(e=>e+1)}function Fr(e){let t=pt(e);b(null),m(t),Et(e=>e+1)}function Ir(){if(!or)return;let e=dt(p);e!==null&&(b(null),m(e),Et(e=>e+1))}let Lr=St(p)?X?.parentPath??p.trim():cr?.fullPath??p.trim(),Rr=[...nr.error?[{value:`browse-status`,label:`Filesystem`,items:[{kind:`action`,value:`browse-status:error`,searchTerms:[`filesystem`,`unavailable`,`error`],title:`Unable to browse folders`,description:kn(nr.error),icon:(0,B.jsx)(ve,{className:L}),disabled:!0,run:async()=>{}}]}]:[],...nn({browseEntries:sr,browseQuery:p,canBrowseUp:or,upIcon:(0,B.jsx)(Wt,{className:L}),directoryIcon:(0,B.jsx)(He,{className:L}),symlinkIcon:(0,B.jsx)(Gt,{className:L}),browseUp:Ir,browseTo:Pr,browseToPath:Fr})],zr=Rr.map(e=>e.value===`directories`?{...e,label:`Select where to clone`}:e),Br=(0,F.useMemo)(()=>N?.step===`confirm`?{title:N.repository?.nameWithOwner??N.repositoryInput,description:N.repository?.url??N.remoteUrl,icon:H(N.source,L)}:null,[N]),Vr=(0,F.useMemo)(()=>{if(N?.step!==`repository`||N.source===`url`||G!==`bitbucket`)return[];let e=K.data?.repositories??[];return e.length>0?[{value:`remote-repositories:${N.environmentId}:${G}`,label:Fn.length>0?`Matching repositories`:`Available repositories`,items:e.map(e=>({kind:`action`,value:wn(e),searchTerms:[e.nameWithOwner,Cn(e.nameWithOwner),e.url,e.sshUrl],title:e.nameWithOwner,description:e.url,icon:H(N.source,L),keepOpen:!0,run:async()=>{Q({flow:N,repositoryInput:e.nameWithOwner,repository:e,remoteUrl:Tn(N.source,e)})}}))}]:K.isFetching?[{value:`remote-repositories:${N.environmentId}:${G}:loading`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:loading`,searchTerms:[`loading`,`repository`,`repo`],title:`Loading repositories`,description:`Reading available Bitbucket workspaces`,icon:H(N.source,L),disabled:!0,run:async()=>{}}]}]:K.error===null?[]:[{value:`remote-repositories:${N.environmentId}:${G}:error`,label:`Repositories`,items:[{kind:`action`,value:`remote-repositories:error`,searchTerms:[`error`,`repository`,`repo`],title:`Unable to load repositories`,description:kn(K.error),icon:H(N.source,L),disabled:!0,run:async()=>{}}]}]},[N,Q,G,Fn,K.data?.repositories,K.error,K.isFetching]),Hr=N?.step===`repository`&&N.source===`bitbucket`?Fn.length===0?`No repositories found. Enter workspace/repository manually.`:`No matching repositories. Enter workspace/repository manually.`:null,Ur=Ar;N?.step===`repository`?Ur=Vr:N?.step===`confirm`?Ur=Y?[]:zr:q&&(Ur=Y?[]:Rr);let Wr=Sn(N)??on(In),Gr=In===`submenu`||In===`submenu-browse`,$=v?.startsWith(`browse:`)??!1,Kr=q&&!Y,qr=Kr&&!rr&&p.trim().length>0&&!$&&(St(p)?!X:cr===null),Jr=De(navigator.platform),Yr=Jr?`⌘`:`Ctrl`,Xr=N?.step===`confirm`,Zr=Xr?qr?`Create & Clone`:`Clone`:qr?`Create & Add`:`Add`,Qr=$?`${Yr} Enter`:`Enter`,$r=N?N.source===`url`?`Continue`:`Lookup`:null,ei=I||Jt,ti=N?.step===`repository`&&p.trim().length>0&&!ei,ni=hn(navigator.platform),ri=q&&W!==null&&V!==null&&W===V&&typeof window<`u`&&window.desktopBridge!==void 0,ii=(0,F.useMemo)(()=>{if(!ri)return;let e=p.trim();if(e.length===0)return;let t=St(p)?X?.parentPath??e:er||e,n=gt(t,J);return n.length>0?n:void 0},[er,X?.parentPath,ri,J,p]);function ai(e){return Jr?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey}function oi(e){if(N?.step===`repository`&&e.key===`Enter`){e.preventDefault();let t=K.data?.repositories.find(e=>wn(e)===v);if(t){Q({flow:N,repositoryInput:t.nameWithOwner,repository:t,remoteUrl:Tn(N.source,t)});return}Nr();return}if(Kr&&e.key===`Enter`&&(!$||ai(e))){e.preventDefault(),Xr?Nr(Lr):jr(Lr);return}e.key===`Backspace`&&p===``&&Gr&&(e.preventDefault(),_r())}function si(e){if(!e.disabled){if(e.kind===`submenu`){gr(e);return}e.keepOpen||o(!1),e.run().catch(e=>{h.add(j({type:`error`,title:`Unable to run command`,description:e instanceof Error?e.message:`An unexpected error occurred.`}))})}}let ci=(0,F.useCallback)(async()=>{if(!ri||Ht)return;let e=ye();if(!e)return;M(!0);let t=null;try{t=await e.dialogs.pickFolder(ii?{initialPath:ii}:void 0)}catch{M(!1);return}M(!1),t&&await jr(t)},[ri,ii,jr,Ht]);return(0,B.jsx)(tt,{"aria-label":`Command palette`,className:`project-glass-surface overflow-hidden p-0`,"data-testid":`command-palette`,surface:`glass`,finalFocus:()=>(te?.current?.focusAtEnd(),!1),onBackdropPointerDown:()=>{o(!1)},children:(0,B.jsxs)(rt,{"aria-label":`Command palette`,autoHighlight:q||Nn?!1:`always`,mode:`none`,onItemHighlighted:e=>{b(typeof e==`string`?e:null)},onValueChange:vr,value:p,children:[(0,B.jsxs)(`div`,{className:`relative`,children:[(0,B.jsx)(et,{className:N?.step===`repository`?`pe-32`:q?qr?`pe-36`:`pe-16`:void 0,placeholder:Wr,wrapperClassName:Gr?`[&_[data-slot=autocomplete-start-addon]]:pointer-events-auto`:void 0,...Gr?{startAddon:(0,B.jsx)(`button`,{type:`button`,className:`flex cursor-pointer items-center`,"aria-label":`Back`,onClick:_r,children:(0,B.jsx)(Ze,{})})}:q&&!Gr?{startAddon:(0,B.jsx)(T,{})}:{},onKeyDown:oi}),N?.step===`repository`?(0,B.jsxs)(pe,{variant:`outline`,size:`xs`,tabIndex:-1,className:`absolute inset-e-2.5 top-1/2 gap-1.5 pe-1 ps-2 -translate-y-1/2`,"aria-label":`${$r??`Continue`} (Enter)`,disabled:!ti,onMouseDown:e=>{e.preventDefault()},onClick:()=>{Nr()},title:`${$r??`Continue`} (Enter)`,children:[(0,B.jsx)(`span`,{children:ei?`Working`:$r}),(0,B.jsx)(k,{className:`pointer-events-none -me-0.5 items-center gap-1 pointer-coarse:hidden`,children:(0,B.jsx)(A,{children:`Enter`})})]}):q?(0,B.jsxs)(pe,{variant:`outline`,size:`xs`,tabIndex:-1,className:g(`absolute inset-e-2.5 top-1/2 pe-1 ps-2 -translate-y-1/2`,$?`gap-1`:`gap-1.5`),"aria-label":`${Zr} (${Qr})`,disabled:Y||Xr&&ei,onMouseDown:e=>{e.preventDefault()},onClick:()=>{Y||(Xr?Nr(Lr):jr(Lr))},title:`${Zr} (${Qr})`,children:[(0,B.jsx)(`span`,{children:Xr&&ei?`Cloning`:Zr}),(0,B.jsx)(k,{className:`pointer-events-none -me-0.5 items-center gap-1 pointer-coarse:hidden`,children:(0,B.jsx)(A,{children:$?`${Yr} Enter`:`Enter`})})]}):null]}),(0,B.jsxs)($e,{className:`max-h-[min(28rem,70vh)] bg-transparent`,children:[Br?(0,B.jsxs)(`div`,{className:`p-2 pb-0`,children:[(0,B.jsx)(`div`,{className:`px-2 py-1.5 font-medium text-muted-foreground text-xs`,children:`Repository`}),(0,B.jsxs)(`div`,{className:`flex min-h-8 items-center gap-2 rounded-sm px-2 py-1.5`,children:[Br.icon,(0,B.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,B.jsx)(`span`,{className:`truncate text-foreground text-sm`,children:Br.title}),(0,B.jsx)(`span`,{className:`truncate text-muted-foreground/70 text-xs`,children:Br.description})]})]})]}):null,(0,B.jsx)(cn,{groups:Ur,highlightedItemValue:v,isActionsOnly:Se,keybindings:it,onExecuteItem:si,...N?.step===`repository`?{emptyStateMessage:N.source===`url`?`Enter a Git clone URL and press Enter to continue.`:Hr??`Enter a repository path and press Enter to look it up.`}:N?.step===`confirm`?{emptyStateMessage:`Choose a destination path and press Enter to clone.`}:Y?{emptyStateMessage:`Relative paths require an active project.`}:qr?{emptyStateMessage:`Press Enter to create this folder and add it as a project.`}:{}})]}),(0,B.jsxs)(st,{className:`gap-3 max-sm:flex-col max-sm:items-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3 pointer-coarse:hidden`,children:[(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:(0,B.jsx)(je,{})}),(0,B.jsx)(A,{children:(0,B.jsx)(Ne,{})}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Navigate`})]}),N?.step===`repository`?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Enter`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:$r??`Continue`})]}):!Kr||$?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Enter`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Select`})]}):null,Gr?(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Backspace`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Back`})]}):null,(0,B.jsxs)(k,{className:`items-center gap-1.5`,children:[(0,B.jsx)(A,{children:`Esc`}),(0,B.jsx)(`span`,{className:g(`text-muted-foreground/80`),children:`Close`})]})]}),ri?(0,B.jsx)(pe,{variant:`ghost`,size:`xs`,className:`h-auto px-2 text-xs text-muted-foreground/80 hover:bg-transparent hover:text-foreground`,disabled:Ht,onClick:()=>{ci()},children:`Open in ${ni}`}):null]})]},`${at.length}-${ut}-${q}-${N?.step??`none`}`)})}export{An as CommandPaletteDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t,$s as n,Ll as r,Ns as i,Ol as a,Pl as o,Rl as s,Wo as c,Xs as l,_c as u,dc as d,gc as f,mc as p,pc as m,tl as h}from"./runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t,$s as n,Ll as r,Ns as i,Ol as a,Pl as o,Rl as s,Wo as c,Xs as l,_c as u,dc as d,gc as f,mc as p,pc as m,tl as h}from"./runtime-BwHA1GUS.js";import{t as g}from"./react-CwJFpaho.js";import{a as _,d as v,f as y,i as b,l as x,o as S,r as C,s as w}from"./useScrollLock-BbKeKZdj.js";import{l as T,p as E}from"./badge-2AZ3HfVS.js";var D=e(g(),1),O=`data-composite-item-active`;function k(e){let{loopFocus:t=!0,orientation:i=`both`,grid:s,onLoop:c,direction:l,highlightedIndex:g,onHighlightedIndexChange:x,rootRef:E,enableHomeAndEndKeys:O=!1,stopEventPropagation:k,disabledIndices:M,modifierKeys:N=r}=e,[P,F]=D.useState(0),I=s!=null,L=D.useRef(null),R=n(L,E),z=D.useRef([]),B=D.useRef(!1),V=D.useRef(null),H=g??P,U=a((e,t=!1)=>{if(V.current=z.current[e]??null,(x??F)(e),t){let t=z.current[e];y(L.current,t,l,i)}}),W=a(e=>{if(e.size===0)return;if(B.current){let e=z.current,t=e.indexOf(V.current);if(t===-1){let t=e[H];!t||u(e,H,M)?U(A(e,M)):V.current=t}else t!==H&&U(t);return}B.current=!0;let t=Array.from(e.keys()),n=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,r=n?e.get(n)?.index??-1:-1;if(r!==-1)U(r);else if(u(t,H,M)){let e=d(t,{disabledIndices:M});f(t,e)||U(e)}y(L.current,n,l,i)});o(()=>{if(M==null||g!=null||!B.current)return;let e=z.current;if(u(e,H,M)){let t=d(e,{disabledIndices:M});f(e,t)||U(t)}},[M,g,H,z,U]);let G=a((e,t,n)=>c?c(e,t,n,z):n),K=a(e=>{let n=e.key===`Home`||e.key===`End`;if(!w.has(e.key)||!O&&n||j(e,N)||!L.current)return;let r=l===`rtl`,a=r?b:_,o=r?_:b,u=i===`vertical`?C:a,g=i===`vertical`?S:o,y=h(e.nativeEvent);if(y!=null&&v(y)&&!T(y)){let t=y.selectionStart,n=y.selectionEnd,r=y.value;if(t==null||e.shiftKey||t!==n||e.key!==g&&t<r.length||e.key!==u&&t>0)return}let x=H,E=p(z,M),D=m(z,M);s!=null&&(x=s({disabledIndices:M,elementsRef:z,event:e,highlightedIndex:H,loopFocus:t,maxIndex:D,minIndex:E,onLoop:G,orientation:i,rtl:r}));let A=i!==`vertical`&&e.key===a||i!==`horizontal`&&e.key===`ArrowDown`,P=i!==`vertical`&&e.key===o||i!==`horizontal`&&e.key===`ArrowUp`;O&&(e.key===`Home`?x=E:e.key===`End`&&(x=D)),x===H&&(A||P)&&(t&&x===D&&A?(x=E,c&&(x=c(e,H,x,z))):t&&x===E&&P?(x=D,c&&(x=c(e,H,x,z))):x=d(z.current,{startingIndex:x,decrement:P,disabledIndices:M})),x!==H&&!f(z.current,x)&&(k&&e.stopPropagation(),(I||n||A||P)&&e.preventDefault(),U(x,!0),queueMicrotask(()=>{z.current[x]?.focus()}))});return{props:{ref:R,onFocus(e){let t=L.current,n=h(e.nativeEvent);t&&n!=null&&v(n)&&n.setSelectionRange(0,n.value.length)},onKeyDown:K},highlightedIndex:H,onHighlightedIndexChange:U,elementsRef:z,onMapChange:W,relayKeyboardEvent:K}}function A(e,t){let n=-1;for(let r=0;r<e.length;r+=1){let i=e[r];if(i&&!u(e,r,t)){if(i.hasAttribute(`data-composite-item-active`))return r;n===-1&&(n=r)}}return Math.max(n,0)}function j(e,t){for(let n of x)if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}var M=t();function N(e){let{render:t,className:n,style:a,refs:o=r,props:u=r,state:d=s,stateAttributesMapping:f,highlightedIndex:p,onHighlightedIndexChange:m,orientation:h,grid:g,loopFocus:_,onLoop:v,enableHomeAndEndKeys:y,onMapChange:b,stopEventPropagation:x=!0,rootRef:S,disabledIndices:C,modifierKeys:w,highlightItemOnHover:T=!1,tag:O=`div`,...A}=e,{props:j,highlightedIndex:N,onHighlightedIndexChange:P,elementsRef:F,onMapChange:I,relayKeyboardEvent:L}=k({grid:g,loopFocus:_,onLoop:v,orientation:h,highlightedIndex:p,onHighlightedIndexChange:m,rootRef:S,stopEventPropagation:x,enableHomeAndEndKeys:y,direction:c(),disabledIndices:C,modifierKeys:w}),R=l(O,e,{state:d,ref:o,props:[j,...u,A],stateAttributesMapping:f}),z=D.useMemo(()=>({highlightedIndex:N,onHighlightedIndexChange:P,highlightItemOnHover:T,relayKeyboardEvent:L}),[N,P,T,L]);return(0,M.jsx)(i.Provider,{value:z,children:(0,M.jsx)(E,{elementsRef:F,onMapChange:e=>{b?.(e),I(e)},children:R})})}export{O as n,N as t};
|
package/dist/client/assets/{ComputerUseSettings-B4KnZnFy.js → ComputerUseSettings-Cq8Pi0ZU.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t,Qr as n,Zr as r,ho as i,uo as a}from"./runtime-DpHhg0dl.js";import{t as o}from"./react-CwJFpaho.js";import{Mr as s,_r as c,jr as l,t as u}from"./switch-DgLijJhN.js";import{t as d}from"./compiler-runtime-C4g8XhC5.js";import{t as f}from"./square--aW0vCo4.js";var p={name:`mouse-pointer-2`,size:24,node:[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`,key:`edeuup`}]]};p.node;var m=i(p),h=d(),g=e(o(),1),_=t();function v(){let e=window.desktopBridge?.computerBeta,[t,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(null);if((0,g.useEffect)(()=>{if(!e)return;let t=!0,n=()=>{e.checkPermissions().then(e=>{t&&r(e)}).catch(()=>void 0)};e.getState().then(e=>{t&&r(e)}).catch(()=>void 0);let i=e.onUpdate(e=>{e.type===`state`&&r(e.state)});return window.addEventListener(`focus`,n),()=>{t=!1,i(),window.removeEventListener(`focus`,n)}},[e]),!e||t?.supported===!1)return null;let d=async e=>{s(!0),a(null);try{r(await e())}catch(e){a(e instanceof Error?e.message:`Computer setup failed.`)}finally{s(!1)}},f=n=>{t&&d(()=>e.setPreferences({...t.preferences,...n}))};return(0,_.jsx)(`section`,{"data-settings-section":`Computer Use beta`,className:`border-b p-6 sm:p-8`,children:(0,_.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-5`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`h2`,{className:`text-lg font-semibold`,children:[`Computer Use`,` `,(0,_.jsx)(`span`,{className:`ml-1 rounded border px-1.5 py-0.5 text-xs font-normal text-muted-foreground`,children:`Beta`})]}),(0,_.jsxs)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:[`Use Mac apps and an isolated browser from chat. Start one task with`,` `,(0,_.jsx)(`code`,{children:`/computer-use`}),`, or enable it by default. Requires Agent Control and a supported provider.`]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between gap-4 text-sm`,children:[`Enable Computer by default`,(0,_.jsx)(u,{"aria-label":`Enable Computer by default`,disabled:o||!t,checked:t?.preferences.defaultEnabled??!1,onCheckedChange:e=>f({defaultEnabled:!!e})})]}),(0,_.jsxs)(`div`,{className:`space-y-2 rounded-lg border p-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-medium`,children:`Mac permissions`}),(0,_.jsx)(`ol`,{className:`space-y-1 text-sm text-muted-foreground`,children:[[`Accessibility`,`accessibilityPermission`],[`Input Monitoring`,`inputMonitoringPermission`],[`Screen Recording`,`screenRecordingPermission`]].map(([e,n],r)=>(0,_.jsxs)(`li`,{children:[r+1,`. `,e,(0,_.jsx)(`span`,{className:`float-right`,children:t?.permissions[n]??`Not checked`})]},n))}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Grant access to this Ryco app in System Settings. Setup checks each grant again when you return. It never sends your prompt.`}),(0,_.jsxs)(`div`,{className:`flex gap-2`,children:[(0,_.jsx)(n,{size:`sm`,disabled:o,onClick:()=>void d(()=>e.setup()),children:`Set up Computer`}),(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:o,onClick:()=>void d(()=>e.checkPermissions()),children:`Check permissions`})]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Show preview automatically`,(0,_.jsx)(u,{"aria-label":`Show preview automatically`,disabled:!t||o,checked:t?.preferences.autoPreview??!0,onCheckedChange:e=>f({autoPreview:!!e})})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Preview size`,(0,_.jsxs)(`select`,{"aria-label":`Preview size`,className:`rounded border bg-background px-2 py-1`,value:t?.preferences.previewSize??`compact`,disabled:!t||o,onChange:e=>f({previewSize:e.target.value===`large`?`large`:`compact`}),children:[(0,_.jsx)(`option`,{value:`compact`,children:`Compact`}),(0,_.jsx)(`option`,{value:`large`,children:`Large`})]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Agent cursor color`,(0,_.jsx)(`input`,{"aria-label":`Agent cursor color`,type:`color`,value:t?.preferences.cursorColor??`#e8794a`,disabled:!t||o,onChange:e=>f({cursorColor:e.target.value})})]}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Escape interrupts the current action and requires a fresh observation. Stop in chat ends the task. Your own input pauses foreground work. The preview is view-only and is never added to model context.`}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(n,{size:`sm`,variant:`outline`,onClick:()=>void e.getHistory().then(l).catch(()=>a(`Could not load recent actions.`)),children:`Load recent actions`}),c?.nextCursor?(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>void e.getHistory({before:c.nextCursor}).then(l).catch(()=>a(`Could not load older actions.`)),children:`Older actions`}):null,c?.truncated?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Some older activity is no longer retained.`}):null,c?(0,_.jsxs)(`div`,{className:`mt-2 max-h-64 overflow-auto text-xs`,children:[(0,_.jsx)(`p`,{className:`mb-2 text-muted-foreground`,children:`Bounded local activity history. Typed values and clipboard contents are omitted.`}),c.entries.length?c.entries.map(e=>(0,_.jsxs)(`p`,{className:`flex justify-between gap-4 border-b py-2`,children:[(0,_.jsx)(`span`,{children:e.tool.replaceAll(`_`,` `)}),(0,_.jsxs)(`span`,{children:[e.effect.replaceAll(`-`,` `),` ·`,` `,new Date(e.ts).toLocaleTimeString()]})]},e.id)):(0,_.jsx)(`p`,{children:`No actions recorded.`})]}):null]}),i||t?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:i??t?.error}):null]})})}var y=[{id:`ryco`,label:`Ryco Browser`},{id:`chrome`,label:`Google Chrome`},{id:`brave`,label:`Brave`},{id:`edge`,label:`Microsoft Edge`}];function b(e){let t=(0,h.c)(7),{status:n,checked:r}=e,i=n===`granted`,o=n===`denied`||n===`restricted`,c=i?a:o?l:s,u=i?`Granted`:n===`restricted`?`Restricted`:o?`Not granted`:n===`not_required`?`Not required`:r?`Could not check`:`Not checked`,d=`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium ${i?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:o?`bg-red-500/10 text-red-700 dark:text-red-300`:`bg-muted text-muted-foreground`}`,f;t[0]===c?f=t[1]:(f=(0,_.jsx)(c,{"aria-hidden":`true`,className:`size-3`}),t[0]=c,t[1]=f);let p;return t[2]!==u||t[3]!==n||t[4]!==d||t[5]!==f?(p=(0,_.jsxs)(`span`,{"data-permission-status":n,className:d,children:[f,u]}),t[2]=u,t[3]=n,t[4]=d,t[5]=f,t[6]=p):p=t[6],p}function x(){let e=window.desktopBridge?.computerUse,[t,i]=(0,g.useState)(null),[a,o]=(0,g.useState)(null),[s,l]=(0,g.useState)(!1),[d,p]=(0,g.useState)(``),[h,x]=(0,g.useState)(null),[S,C]=(0,g.useState)(null),[w,T]=(0,g.useState)(null),E=(0,g.useRef)(!1),{copyToClipboard:D,isCopied:O}=r({onError:()=>o(`Could not copy. Select the text and copy it manually.`)});if((0,g.useEffect)(()=>{if(!e)return;let t=!0,n=!1,r=async(r=!1)=>{if(!n&&t){n=!0;try{let n=await(r?e.checkPermissions():e.getState());t&&i(n)}catch{t&&o(`Computer-use settings could not be loaded.`)}finally{n=!1}}};r();let a=()=>{E.current&&r(!0)},s=()=>{document.visibilityState===`visible`&&a()};window.addEventListener(`focus`,a),document.addEventListener(`visibilitychange`,s);let c=e.onState(e=>{t&&i(e)});return()=>{t=!1,c(),window.removeEventListener(`focus`,a),document.removeEventListener(`visibilitychange`,s)}},[e]),!e)return null;let k=async e=>{l(!0),o(null);try{await e()}catch(e){o(e instanceof Error?e.message:`Computer-use request failed.`)}finally{l(!1)}},A=n=>{t&&k(async()=>{i(await e.setPolicy({...t.policy,...n})),n.enabled!==void 0&&(E.current=n.enabled,n.enabled&&i(await e.checkPermissions())),x(null)})},j=t=>{E.current=!0,k(()=>e.requestPermission(t))},M=new Map(Object.keys(t?.policy.apps??{}).map(e=>[e,{id:e,name:e.replaceAll(`\\`,`/`).split(`/`).pop()??e}]));for(let e of t?.apps??[])M.set(e.id,e);for(let e of y)M.set(`browser:${e.id}`,{id:`browser:${e.id}`,name:e.label});return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(v,{}),(0,_.jsx)(`section`,{"data-settings-section":`Computer Use`,className:`scroll-mt-6 border-b p-6 sm:p-8`,"aria-labelledby":`computer-use-heading`,children:(0,_.jsxs)(`div`,{className:`mx-auto flex max-w-4xl flex-col gap-5`,children:[(0,_.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(c,{className:`size-4 text-muted-foreground`}),(0,_.jsx)(`h2`,{id:`computer-use-heading`,className:`text-lg font-semibold`,children:`Browser and legacy computer controls`})]}),(0,_.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm text-muted-foreground`,children:`Let agents work in apps on this computer while you keep working. An independent Ryco cursor shows their actions. Native tools require Agent Control in Integrations and a new provider session.`})]}),(0,_.jsx)(u,{"aria-label":`Enable computer use on this computer`,checked:t?.policy.enabled??!1,disabled:s||!t,onCheckedChange:e=>A({enabled:!!e})})]}),a||t?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:a??t?.error}):null,t?.policy.enabled?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border bg-muted/20 p-3`,role:`status`,children:[(0,_.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,_.jsx)(m,{className:`size-4`}),t.activity?`Working in ${t.activity.target} · ${t.activity.mode}`:`Enabled · waiting for an agent`]}),(0,_.jsxs)(n,{size:`sm`,variant:`outline`,onClick:()=>void k(()=>e.stop()),children:[(0,_.jsx)(f,{className:`size-3`}),`Stop all`]})]}),(0,_.jsx)(`p`,{className:`-mt-3 text-xs text-muted-foreground`,children:`Use ⌘/Ctrl + Shift + Escape while computer use is enabled to stop. A stopped turn must be restarted.`}),(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,_.jsx)(`span`,{className:`text-sm font-medium`,children:`Native permissions`}),(0,_.jsx)(n,{variant:`ghost`,size:`sm`,disabled:s,onClick:()=>void k(async()=>{E.current=!0,i(await e.checkPermissions())}),children:`Check permissions`})]}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,_.jsxs)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>j(`accessibility`),children:[`Accessibility`,` `,(0,_.jsx)(b,{status:t.accessibility,checked:!!t.permissionInfo?.checkedAt})]}),(0,_.jsxs)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>j(`screenRecording`),children:[`Screen recording`,` `,(0,_.jsx)(b,{status:t.screenRecording,checked:!!t.permissionInfo?.checkedAt})]})]}),t.permissionInfo?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:t.permissionInfo.error}):null,t.permissionInfo?.development?(0,_.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Development build: grant permissions to `,t.permissionInfo.appName,` in macOS Settings. Access is checked again when you return. If Screen Recording stays denied after granting it, restart this build.`]}):(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Permissions are checked automatically when you return from system settings.`}),(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`p`,{className:`text-sm font-medium`,children:`Allow foreground takeover requests`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Ask before taking over your mouse and keyboard when background control is unavailable.`})]}),(0,_.jsx)(u,{"aria-label":`Allow foreground takeover requests`,checked:t.policy.foregroundEnabled,disabled:s,onCheckedChange:e=>A({foregroundEnabled:!!e})})]})]}),(0,_.jsxs)(`section`,{"data-settings-section":`Browser Use`,className:`scroll-mt-6 space-y-3 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Browser Use`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Ryco Browser has a separate profile. Pair Chrome, Brave or Edge to use your existing tabs and sign-ins.`}),y.map(r=>(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,_.jsxs)(`div`,{className:`text-sm`,children:[r.label,(0,_.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:r.id===`ryco`?`Built in`:t.connectedBrowsers.includes(r.id)?`Connected`:`Not connected`})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-3`,children:[r.id!==`ryco`&&t.policy.browsers.includes(r.id)?(0,_.jsx)(n,{size:`sm`,variant:`ghost`,disabled:s,onClick:()=>void k(async()=>{x(JSON.stringify(await e.pairBrowser(r.id))),C(r.id)}),children:`Pair`}):null,(0,_.jsx)(u,{"aria-label":`Enable ${r.label} control`,checked:t.policy.browsers.includes(r.id),disabled:s,onCheckedChange:e=>A({browsers:e?[...t.policy.browsers,r.id]:t.policy.browsers.filter(e=>e!==r.id)})})]})]},r.id)),(0,_.jsx)(n,{variant:`outline`,size:`sm`,onClick:()=>void k(async()=>{T(await e.showExtension())}),children:`Show browser extension folder`}),h?(0,_.jsxs)(`div`,{className:`space-y-2 rounded-lg border p-3`,children:[(0,_.jsx)(`p`,{className:`text-sm font-medium`,children:`Connect your browser`}),(0,_.jsxs)(`ol`,{className:`list-decimal space-y-1 pl-4 text-xs text-muted-foreground`,children:[(0,_.jsx)(`li`,{children:`Open Extensions, enable Developer mode, then choose Load unpacked.`}),(0,_.jsx)(`li`,{children:`Select the Ryco extension folder shown below. On macOS, paste its path with ⌘ + Shift + G in the folder chooser.`}),(0,_.jsx)(`li`,{children:`Open Ryco Browser Control in the browser toolbar and paste the pairing configuration.`})]}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[S?(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>void k(()=>e.openBrowserSetup(S)),children:`Open browser Extensions`}):null,(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>void k(async()=>{T(await e.showExtension())}),children:`Show extension folder`}),(0,_.jsx)(n,{size:`sm`,variant:`outline`,onClick:()=>D(h,void 0),children:`Copy pairing configuration`})]}),w?(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(`input`,{"aria-label":`Extension folder path`,readOnly:!0,value:w,onFocus:e=>e.currentTarget.select(),className:`min-w-0 flex-1 rounded-md border bg-background p-2 font-mono text-xs`}),(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>D(w,void 0),children:`Copy folder path`})]}):null,O?(0,_.jsx)(`p`,{role:`status`,className:`text-xs text-emerald-700 dark:text-emerald-300`,children:`Copied`}):null,(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Pairing replaces the previous connection. Pair again after restarting Ryco.`}),(0,_.jsx)(`textarea`,{"aria-label":`Browser pairing configuration`,readOnly:!0,value:h,className:`h-20 w-full rounded-md border bg-background p-2 font-mono text-xs`,onFocus:e=>e.currentTarget.select()}),(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>x(null),children:`Hide configuration`})]}):null]}),(0,_.jsxs)(`div`,{className:`space-y-3 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`App access`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Apps ask on first use. Blocked apps cannot be inspected or controlled. Changing permissions stops current work.`}),(0,_.jsxs)(`form`,{className:`flex gap-2`,onSubmit:t=>{t.preventDefault(),k(async()=>{i(await e.refresh(d||void 0))})},children:[(0,_.jsx)(`input`,{"aria-label":`Find installed apps`,placeholder:`Find installed apps…`,value:d,onChange:e=>p(e.target.value),className:`min-w-0 flex-1 rounded-md border bg-background px-3 py-2 text-sm`}),(0,_.jsx)(n,{variant:`outline`,size:`sm`,disabled:s,children:`Find apps`})]}),(0,_.jsx)(`div`,{className:`max-h-80 divide-y overflow-y-auto`,children:[...M.values()].filter(e=>!d||e.name.toLowerCase().includes(d.toLowerCase())||t.policy.apps[e.id]!==void 0).map(e=>(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-2`,children:[(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(`p`,{className:`truncate text-sm`,children:e.name}),(0,_.jsx)(`p`,{className:`truncate text-[11px] text-muted-foreground`,title:e.id,children:e.id})]}),(0,_.jsxs)(`select`,{"aria-label":`Access to ${e.name}`,className:`rounded-md border bg-background px-2 py-1 text-sm`,disabled:s,value:t.policy.apps[e.id]??`ask`,onChange:n=>A({apps:{...t.policy.apps,[e.id]:n.target.value}}),children:[(0,_.jsx)(`option`,{value:`ask`,children:`Ask`}),(0,_.jsx)(`option`,{value:`allow`,children:`Always allow`}),(0,_.jsx)(`option`,{value:`block`,children:`Block`})]})]},e.id))})]})]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Off. Agents cannot inspect or operate apps or browsers through Ryco computer use.`}),(0,_.jsxs)(`section`,{"data-settings-section":`Browser Use`,className:`scroll-mt-6 space-y-2 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Browser Use`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Enable Computer Use above to configure Ryco Browser or pair Chrome, Brave, and Edge.`})]})]})]})})]})}export{x as ComputerUseSettings};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t,Qr as n,Zr as r,ho as i,uo as a}from"./runtime-BwHA1GUS.js";import{t as o}from"./react-CwJFpaho.js";import{Mr as s,_r as c,jr as l,t as u}from"./switch-DnpJB2xv.js";import{t as d}from"./compiler-runtime-C4g8XhC5.js";import{t as f}from"./square-Cr9X8U6y.js";var p={name:`mouse-pointer-2`,size:24,node:[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`,key:`edeuup`}]]};p.node;var m=i(p),h=d(),g=e(o(),1),_=t();function v(){let e=window.desktopBridge?.computerBeta,[t,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(!1),[c,l]=(0,g.useState)(null);if((0,g.useEffect)(()=>{if(!e)return;let t=!0,n=()=>{e.checkPermissions().then(e=>{t&&r(e)}).catch(()=>void 0)};e.getState().then(e=>{t&&r(e)}).catch(()=>void 0);let i=e.onUpdate(e=>{e.type===`state`&&r(e.state)});return window.addEventListener(`focus`,n),()=>{t=!1,i(),window.removeEventListener(`focus`,n)}},[e]),!e||t?.supported===!1)return null;let d=async e=>{s(!0),a(null);try{r(await e())}catch(e){a(e instanceof Error?e.message:`Computer setup failed.`)}finally{s(!1)}},f=n=>{t&&d(()=>e.setPreferences({...t.preferences,...n}))};return(0,_.jsx)(`section`,{"data-settings-section":`Computer Use beta`,className:`border-b p-6 sm:p-8`,children:(0,_.jsxs)(`div`,{className:`mx-auto max-w-4xl space-y-5`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`h2`,{className:`text-lg font-semibold`,children:[`Computer Use`,` `,(0,_.jsx)(`span`,{className:`ml-1 rounded border px-1.5 py-0.5 text-xs font-normal text-muted-foreground`,children:`Beta`})]}),(0,_.jsxs)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:[`Use Mac apps and an isolated browser from chat. Start one task with`,` `,(0,_.jsx)(`code`,{children:`/computer-use`}),`, or enable it by default. Requires Agent Control and a supported provider.`]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between gap-4 text-sm`,children:[`Enable Computer by default`,(0,_.jsx)(u,{"aria-label":`Enable Computer by default`,disabled:o||!t,checked:t?.preferences.defaultEnabled??!1,onCheckedChange:e=>f({defaultEnabled:!!e})})]}),(0,_.jsxs)(`div`,{className:`space-y-2 rounded-lg border p-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-medium`,children:`Mac permissions`}),(0,_.jsx)(`ol`,{className:`space-y-1 text-sm text-muted-foreground`,children:[[`Accessibility`,`accessibilityPermission`],[`Input Monitoring`,`inputMonitoringPermission`],[`Screen Recording`,`screenRecordingPermission`]].map(([e,n],r)=>(0,_.jsxs)(`li`,{children:[r+1,`. `,e,(0,_.jsx)(`span`,{className:`float-right`,children:t?.permissions[n]??`Not checked`})]},n))}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Grant access to this Ryco app in System Settings. Setup checks each grant again when you return. It never sends your prompt.`}),(0,_.jsxs)(`div`,{className:`flex gap-2`,children:[(0,_.jsx)(n,{size:`sm`,disabled:o,onClick:()=>void d(()=>e.setup()),children:`Set up Computer`}),(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:o,onClick:()=>void d(()=>e.checkPermissions()),children:`Check permissions`})]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Show preview automatically`,(0,_.jsx)(u,{"aria-label":`Show preview automatically`,disabled:!t||o,checked:t?.preferences.autoPreview??!0,onCheckedChange:e=>f({autoPreview:!!e})})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Preview size`,(0,_.jsxs)(`select`,{"aria-label":`Preview size`,className:`rounded border bg-background px-2 py-1`,value:t?.preferences.previewSize??`compact`,disabled:!t||o,onChange:e=>f({previewSize:e.target.value===`large`?`large`:`compact`}),children:[(0,_.jsx)(`option`,{value:`compact`,children:`Compact`}),(0,_.jsx)(`option`,{value:`large`,children:`Large`})]})]}),(0,_.jsxs)(`label`,{className:`flex items-center justify-between text-sm`,children:[`Agent cursor color`,(0,_.jsx)(`input`,{"aria-label":`Agent cursor color`,type:`color`,value:t?.preferences.cursorColor??`#e8794a`,disabled:!t||o,onChange:e=>f({cursorColor:e.target.value})})]}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Escape interrupts the current action and requires a fresh observation. Stop in chat ends the task. Your own input pauses foreground work. The preview is view-only and is never added to model context.`}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(n,{size:`sm`,variant:`outline`,onClick:()=>void e.getHistory().then(l).catch(()=>a(`Could not load recent actions.`)),children:`Load recent actions`}),c?.nextCursor?(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>void e.getHistory({before:c.nextCursor}).then(l).catch(()=>a(`Could not load older actions.`)),children:`Older actions`}):null,c?.truncated?(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Some older activity is no longer retained.`}):null,c?(0,_.jsxs)(`div`,{className:`mt-2 max-h-64 overflow-auto text-xs`,children:[(0,_.jsx)(`p`,{className:`mb-2 text-muted-foreground`,children:`Bounded local activity history. Typed values and clipboard contents are omitted.`}),c.entries.length?c.entries.map(e=>(0,_.jsxs)(`p`,{className:`flex justify-between gap-4 border-b py-2`,children:[(0,_.jsx)(`span`,{children:e.tool.replaceAll(`_`,` `)}),(0,_.jsxs)(`span`,{children:[e.effect.replaceAll(`-`,` `),` ·`,` `,new Date(e.ts).toLocaleTimeString()]})]},e.id)):(0,_.jsx)(`p`,{children:`No actions recorded.`})]}):null]}),i||t?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:i??t?.error}):null]})})}var y=[{id:`ryco`,label:`Ryco Browser`},{id:`chrome`,label:`Google Chrome`},{id:`brave`,label:`Brave`},{id:`edge`,label:`Microsoft Edge`}];function b(e){let t=(0,h.c)(7),{status:n,checked:r}=e,i=n===`granted`,o=n===`denied`||n===`restricted`,c=i?a:o?l:s,u=i?`Granted`:n===`restricted`?`Restricted`:o?`Not granted`:n===`not_required`?`Not required`:r?`Could not check`:`Not checked`,d=`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium ${i?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:o?`bg-red-500/10 text-red-700 dark:text-red-300`:`bg-muted text-muted-foreground`}`,f;t[0]===c?f=t[1]:(f=(0,_.jsx)(c,{"aria-hidden":`true`,className:`size-3`}),t[0]=c,t[1]=f);let p;return t[2]!==u||t[3]!==n||t[4]!==d||t[5]!==f?(p=(0,_.jsxs)(`span`,{"data-permission-status":n,className:d,children:[f,u]}),t[2]=u,t[3]=n,t[4]=d,t[5]=f,t[6]=p):p=t[6],p}function x(){let e=window.desktopBridge?.computerUse,[t,i]=(0,g.useState)(null),[a,o]=(0,g.useState)(null),[s,l]=(0,g.useState)(!1),[d,p]=(0,g.useState)(``),[h,x]=(0,g.useState)(null),[S,C]=(0,g.useState)(null),[w,T]=(0,g.useState)(null),E=(0,g.useRef)(!1),{copyToClipboard:D,isCopied:O}=r({onError:()=>o(`Could not copy. Select the text and copy it manually.`)});if((0,g.useEffect)(()=>{if(!e)return;let t=!0,n=!1,r=async(r=!1)=>{if(!n&&t){n=!0;try{let n=await(r?e.checkPermissions():e.getState());t&&i(n)}catch{t&&o(`Computer-use settings could not be loaded.`)}finally{n=!1}}};r();let a=()=>{E.current&&r(!0)},s=()=>{document.visibilityState===`visible`&&a()};window.addEventListener(`focus`,a),document.addEventListener(`visibilitychange`,s);let c=e.onState(e=>{t&&i(e)});return()=>{t=!1,c(),window.removeEventListener(`focus`,a),document.removeEventListener(`visibilitychange`,s)}},[e]),!e)return null;let k=async e=>{l(!0),o(null);try{await e()}catch(e){o(e instanceof Error?e.message:`Computer-use request failed.`)}finally{l(!1)}},A=n=>{t&&k(async()=>{i(await e.setPolicy({...t.policy,...n})),n.enabled!==void 0&&(E.current=n.enabled,n.enabled&&i(await e.checkPermissions())),x(null)})},j=t=>{E.current=!0,k(()=>e.requestPermission(t))},M=new Map(Object.keys(t?.policy.apps??{}).map(e=>[e,{id:e,name:e.replaceAll(`\\`,`/`).split(`/`).pop()??e}]));for(let e of t?.apps??[])M.set(e.id,e);for(let e of y)M.set(`browser:${e.id}`,{id:`browser:${e.id}`,name:e.label});return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(v,{}),(0,_.jsx)(`section`,{"data-settings-section":`Computer Use`,className:`scroll-mt-6 border-b p-6 sm:p-8`,"aria-labelledby":`computer-use-heading`,children:(0,_.jsxs)(`div`,{className:`mx-auto flex max-w-4xl flex-col gap-5`,children:[(0,_.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(c,{className:`size-4 text-muted-foreground`}),(0,_.jsx)(`h2`,{id:`computer-use-heading`,className:`text-lg font-semibold`,children:`Browser and legacy computer controls`})]}),(0,_.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm text-muted-foreground`,children:`Let agents work in apps on this computer while you keep working. An independent Ryco cursor shows their actions. Native tools require Agent Control in Integrations and a new provider session.`})]}),(0,_.jsx)(u,{"aria-label":`Enable computer use on this computer`,checked:t?.policy.enabled??!1,disabled:s||!t,onCheckedChange:e=>A({enabled:!!e})})]}),a||t?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:a??t?.error}):null,t?.policy.enabled?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border bg-muted/20 p-3`,role:`status`,children:[(0,_.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,_.jsx)(m,{className:`size-4`}),t.activity?`Working in ${t.activity.target} · ${t.activity.mode}`:`Enabled · waiting for an agent`]}),(0,_.jsxs)(n,{size:`sm`,variant:`outline`,onClick:()=>void k(()=>e.stop()),children:[(0,_.jsx)(f,{className:`size-3`}),`Stop all`]})]}),(0,_.jsx)(`p`,{className:`-mt-3 text-xs text-muted-foreground`,children:`Use ⌘/Ctrl + Shift + Escape while computer use is enabled to stop. A stopped turn must be restarted.`}),(0,_.jsxs)(`div`,{className:`space-y-3`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,_.jsx)(`span`,{className:`text-sm font-medium`,children:`Native permissions`}),(0,_.jsx)(n,{variant:`ghost`,size:`sm`,disabled:s,onClick:()=>void k(async()=>{E.current=!0,i(await e.checkPermissions())}),children:`Check permissions`})]}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,_.jsxs)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>j(`accessibility`),children:[`Accessibility`,` `,(0,_.jsx)(b,{status:t.accessibility,checked:!!t.permissionInfo?.checkedAt})]}),(0,_.jsxs)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>j(`screenRecording`),children:[`Screen recording`,` `,(0,_.jsx)(b,{status:t.screenRecording,checked:!!t.permissionInfo?.checkedAt})]})]}),t.permissionInfo?.error?(0,_.jsx)(`p`,{role:`alert`,className:`text-sm text-destructive`,children:t.permissionInfo.error}):null,t.permissionInfo?.development?(0,_.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Development build: grant permissions to `,t.permissionInfo.appName,` in macOS Settings. Access is checked again when you return. If Screen Recording stays denied after granting it, restart this build.`]}):(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Permissions are checked automatically when you return from system settings.`}),(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`p`,{className:`text-sm font-medium`,children:`Allow foreground takeover requests`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Ask before taking over your mouse and keyboard when background control is unavailable.`})]}),(0,_.jsx)(u,{"aria-label":`Allow foreground takeover requests`,checked:t.policy.foregroundEnabled,disabled:s,onCheckedChange:e=>A({foregroundEnabled:!!e})})]})]}),(0,_.jsxs)(`section`,{"data-settings-section":`Browser Use`,className:`scroll-mt-6 space-y-3 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Browser Use`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Ryco Browser has a separate profile. Pair Chrome, Brave or Edge to use your existing tabs and sign-ins.`}),y.map(r=>(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,_.jsxs)(`div`,{className:`text-sm`,children:[r.label,(0,_.jsx)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:r.id===`ryco`?`Built in`:t.connectedBrowsers.includes(r.id)?`Connected`:`Not connected`})]}),(0,_.jsxs)(`div`,{className:`flex items-center gap-3`,children:[r.id!==`ryco`&&t.policy.browsers.includes(r.id)?(0,_.jsx)(n,{size:`sm`,variant:`ghost`,disabled:s,onClick:()=>void k(async()=>{x(JSON.stringify(await e.pairBrowser(r.id))),C(r.id)}),children:`Pair`}):null,(0,_.jsx)(u,{"aria-label":`Enable ${r.label} control`,checked:t.policy.browsers.includes(r.id),disabled:s,onCheckedChange:e=>A({browsers:e?[...t.policy.browsers,r.id]:t.policy.browsers.filter(e=>e!==r.id)})})]})]},r.id)),(0,_.jsx)(n,{variant:`outline`,size:`sm`,onClick:()=>void k(async()=>{T(await e.showExtension())}),children:`Show browser extension folder`}),h?(0,_.jsxs)(`div`,{className:`space-y-2 rounded-lg border p-3`,children:[(0,_.jsx)(`p`,{className:`text-sm font-medium`,children:`Connect your browser`}),(0,_.jsxs)(`ol`,{className:`list-decimal space-y-1 pl-4 text-xs text-muted-foreground`,children:[(0,_.jsx)(`li`,{children:`Open Extensions, enable Developer mode, then choose Load unpacked.`}),(0,_.jsx)(`li`,{children:`Select the Ryco extension folder shown below. On macOS, paste its path with ⌘ + Shift + G in the folder chooser.`}),(0,_.jsx)(`li`,{children:`Open Ryco Browser Control in the browser toolbar and paste the pairing configuration.`})]}),(0,_.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[S?(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>void k(()=>e.openBrowserSetup(S)),children:`Open browser Extensions`}):null,(0,_.jsx)(n,{size:`sm`,variant:`outline`,disabled:s,onClick:()=>void k(async()=>{T(await e.showExtension())}),children:`Show extension folder`}),(0,_.jsx)(n,{size:`sm`,variant:`outline`,onClick:()=>D(h,void 0),children:`Copy pairing configuration`})]}),w?(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(`input`,{"aria-label":`Extension folder path`,readOnly:!0,value:w,onFocus:e=>e.currentTarget.select(),className:`min-w-0 flex-1 rounded-md border bg-background p-2 font-mono text-xs`}),(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>D(w,void 0),children:`Copy folder path`})]}):null,O?(0,_.jsx)(`p`,{role:`status`,className:`text-xs text-emerald-700 dark:text-emerald-300`,children:`Copied`}):null,(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Pairing replaces the previous connection. Pair again after restarting Ryco.`}),(0,_.jsx)(`textarea`,{"aria-label":`Browser pairing configuration`,readOnly:!0,value:h,className:`h-20 w-full rounded-md border bg-background p-2 font-mono text-xs`,onFocus:e=>e.currentTarget.select()}),(0,_.jsx)(n,{size:`sm`,variant:`ghost`,onClick:()=>x(null),children:`Hide configuration`})]}):null]}),(0,_.jsxs)(`div`,{className:`space-y-3 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`App access`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Apps ask on first use. Blocked apps cannot be inspected or controlled. Changing permissions stops current work.`}),(0,_.jsxs)(`form`,{className:`flex gap-2`,onSubmit:t=>{t.preventDefault(),k(async()=>{i(await e.refresh(d||void 0))})},children:[(0,_.jsx)(`input`,{"aria-label":`Find installed apps`,placeholder:`Find installed apps…`,value:d,onChange:e=>p(e.target.value),className:`min-w-0 flex-1 rounded-md border bg-background px-3 py-2 text-sm`}),(0,_.jsx)(n,{variant:`outline`,size:`sm`,disabled:s,children:`Find apps`})]}),(0,_.jsx)(`div`,{className:`max-h-80 divide-y overflow-y-auto`,children:[...M.values()].filter(e=>!d||e.name.toLowerCase().includes(d.toLowerCase())||t.policy.apps[e.id]!==void 0).map(e=>(0,_.jsxs)(`div`,{className:`flex items-center justify-between gap-4 py-2`,children:[(0,_.jsxs)(`div`,{className:`min-w-0`,children:[(0,_.jsx)(`p`,{className:`truncate text-sm`,children:e.name}),(0,_.jsx)(`p`,{className:`truncate text-[11px] text-muted-foreground`,title:e.id,children:e.id})]}),(0,_.jsxs)(`select`,{"aria-label":`Access to ${e.name}`,className:`rounded-md border bg-background px-2 py-1 text-sm`,disabled:s,value:t.policy.apps[e.id]??`ask`,onChange:n=>A({apps:{...t.policy.apps,[e.id]:n.target.value}}),children:[(0,_.jsx)(`option`,{value:`ask`,children:`Ask`}),(0,_.jsx)(`option`,{value:`allow`,children:`Always allow`}),(0,_.jsx)(`option`,{value:`block`,children:`Block`})]})]},e.id))})]})]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Off. Agents cannot inspect or operate apps or browsers through Ryco computer use.`}),(0,_.jsxs)(`section`,{"data-settings-section":`Browser Use`,className:`scroll-mt-6 space-y-2 border-t pt-4`,children:[(0,_.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Browser Use`}),(0,_.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Enable Computer Use above to configure Ryco Browser or pair Chrome, Brave, and Edge.`})]})]})]})})]})}export{x as ComputerUseSettings};
|