ryco-cli 0.1.28 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +17 -4
- package/dist/bin.mjs +17 -4
- package/dist/client/assets/{AccountSettings-DF6okodO.js → AccountSettings-FN7pwqYA.js} +1 -1
- package/dist/client/assets/{AiFocusSettings-BNNr6MW3.js → AiFocusSettings-xcDAMaqH.js} +1 -1
- package/dist/client/assets/{AnimatedHeight-q2A-ikJ5.js → AnimatedHeight-BNg7wnTK.js} +1 -1
- package/dist/client/assets/{AppearanceSettings-BD0MZkm7.js → AppearanceSettings-BvsvAOsG.js} +1 -1
- package/dist/client/assets/{BranchToolbar.logic-DN0He2gp.js → BranchToolbar.logic-DFsXV3Qs.js} +1 -1
- package/dist/client/assets/{BrowserPanel-C_ddyv_7.js → BrowserPanel-D-g_xDZs.js} +1 -1
- package/dist/client/assets/{ChatRightPanel-B62ml3EW.js → ChatRightPanel-Bm906qNi.js} +5 -5
- package/dist/client/assets/{ChatThreadRouteView-BnvzR19h.js → ChatThreadRouteView-CATwakjI.js} +1 -1
- package/dist/client/assets/{CommandPaletteDialog-KtIlImWg.js → CommandPaletteDialog-Obv1bvxj.js} +1 -1
- package/dist/client/assets/{CompositeRoot-CTspN_gA.js → CompositeRoot-CfkIdky8.js} +1 -1
- package/dist/client/assets/{ComputerUseSettings-B4KnZnFy.js → ComputerUseSettings-ljYmTHea.js} +1 -1
- package/dist/client/assets/{ConnectionsSettings-BW1hWm-b.js → ConnectionsSettings-CIXs7x_E.js} +1 -1
- package/dist/client/assets/{ContextHandoffEndpointLabel-BCNMjnEV.js → ContextHandoffEndpointLabel-BzI4Wi1i.js} +1 -1
- package/dist/client/assets/{DiagnosticsSettings-Biqth29E.js → DiagnosticsSettings-DGX_2T2M.js} +1 -1
- package/dist/client/assets/{DialogHandle-B1kG1DEu.js → DialogHandle-CTtSYpsC.js} +1 -1
- package/dist/client/assets/{DialogPopup-CZ-twaqA.js → DialogPopup-DdZlhHuQ.js} +1 -1
- package/dist/client/assets/DialogRoot-k2_0SNKA.js +1 -0
- package/dist/client/assets/{DialogTitle-D8Vib3Xi.js → DialogTitle-Du7CAbaO.js} +1 -1
- package/dist/client/assets/{DialogTrigger-C8WNfJfY.js → DialogTrigger-VpFh8Xza.js} +1 -1
- package/dist/client/assets/{DialogViewport-BzuRIust.js → DialogViewport-BwuqbGLY.js} +1 -1
- package/dist/client/assets/{DraftChatThreadRouteView-Bf196For.js → DraftChatThreadRouteView-Cmc5HpWf.js} +1 -1
- package/dist/client/assets/{GlassSurface-R5jo7uZp.js → GlassSurface-BlWIlQ0s.js} +1 -1
- package/dist/client/assets/{HostedConnectionControls-xi9LAlqs.js → HostedConnectionControls-ySHqwr4K.js} +1 -1
- package/dist/client/assets/{HostedHubRoot-B5cJPL0b.js → HostedHubRoot-Caz8PElK.js} +1 -1
- package/dist/client/assets/{HostedNativeAuthorizationRoute-BPxYI2S8.js → HostedNativeAuthorizationRoute-BSq_AlY2.js} +1 -1
- package/dist/client/assets/{HostedNodeRenameDialog-CZ6B6eOA.js → HostedNodeRenameDialog-ChxJdr-Z.js} +1 -1
- package/dist/client/assets/{HostedRelayTrustNotice-Da0fanPZ.js → HostedRelayTrustNotice-DPVrIfj_.js} +1 -1
- package/dist/client/assets/{IntegrationsSettingsPanel-CVIFEYar.js → IntegrationsSettingsPanel-eAq5h-D5.js} +1 -1
- package/dist/client/assets/{KeybindingsSettings-FJVISTz3.js → KeybindingsSettings-D1XaEVGH.js} +1 -1
- package/dist/client/assets/{LazyBrowserPanel-ChCZntfd.js → LazyBrowserPanel-B6POLJh3.js} +1 -1
- package/dist/client/assets/{McpServersSettings-D5qSFad1.js → McpServersSettings-DqLA6n5v.js} +1 -1
- package/dist/client/assets/{MobileSheet-BZwVUjae.js → MobileSheet-CtQIYRlY.js} +1 -1
- package/dist/client/assets/{NodeSecuritySettings-C9eJS4Wt.js → NodeSecuritySettings-Skm7GQDl.js} +1 -1
- package/dist/client/assets/{NullStore-iCZTvdl5.js → NullStore-b8PhjwPZ.js} +1 -1
- package/dist/client/assets/{OnboardingDialog-lWnlzsHQ.js → OnboardingDialog-8-fKvY5H.js} +1 -1
- package/dist/client/assets/{OpinionatedPluginsSettings-DQ77FhYa.js → OpinionatedPluginsSettings-BIJfJ34L.js} +1 -1
- package/dist/client/assets/{PdfAttachmentPreview-CmCBedSk.js → PdfAttachmentPreview-CTo1AyZs.js} +1 -1
- package/dist/client/assets/{PhoneGetAppInterstitial-DU7Pjbrv.js → PhoneGetAppInterstitial-DwopOWnQ.js} +1 -1
- package/dist/client/assets/{PhoneHome-D91zzTlE.js → PhoneHome-CUzxhhR4.js} +1 -1
- package/dist/client/assets/{PhoneSettingsSurface-vyuCLVtH.js → PhoneSettingsSurface-BK2RHmYJ.js} +1 -1
- package/dist/client/assets/{ProvidersSettingsPanel-QMtod_bc.js → ProvidersSettingsPanel-DPxL7AsR.js} +1 -1
- package/dist/client/assets/{QuitShortcutFeedback-Bti16E53.js → QuitShortcutFeedback-eCvP_MNj.js} +1 -1
- package/dist/client/assets/{RedactedSensitiveText-9r8QC1lJ.js → RedactedSensitiveText-DH4mWpB6.js} +1 -1
- package/dist/client/assets/{RootAppShell-CYT2IfYW.js → RootAppShell-DwiWD4Cy.js} +2 -2
- package/dist/client/assets/{Separator-ClXl-hQH.js → Separator-BiINUUQl.js} +1 -1
- package/dist/client/assets/{SettingsDialog-BUcF48F9.js → SettingsDialog-CE8qy0qL.js} +1 -1
- package/dist/client/assets/{SettingsPanels-BydjDF1I.js → SettingsPanels-BYknk6GO.js} +1 -1
- package/dist/client/assets/{SettingsPanels.editor-zrq4ZT2j.js → SettingsPanels.editor-64bM0lhg.js} +1 -1
- package/dist/client/assets/{SourceControlSettings-CqVmc4sB.js → SourceControlSettings-BbveiAj3.js} +1 -1
- package/dist/client/assets/{StatisticsPage-k-gimGKE.js → StatisticsPage-CAO_tCeC.js} +1 -1
- package/dist/client/assets/{StatisticsPanel-CtShfsl4.js → StatisticsPanel-SNlgMv2o.js} +1 -1
- package/dist/client/assets/{StatisticsSettingsLink-BapVo9aC.js → StatisticsSettingsLink-BpkNubL2.js} +1 -1
- package/dist/client/assets/{ThreadTerminalDrawer-Bfs5NCNv.js → ThreadTerminalDrawer-9x_kqQPy.js} +1 -1
- package/dist/client/assets/{ThreadWorkspacePanel-L6uNQRNX.js → ThreadWorkspacePanel-BXE17C4x.js} +1 -1
- package/dist/client/assets/{abnfDiagram-N423BO3Z-BzwwixLv.js → abnfDiagram-N423BO3Z-DAmGykdr.js} +1 -1
- package/dist/client/assets/{activity-CPE_7Kqw.js → activity-DRZlu-MC.js} +1 -1
- package/dist/client/assets/{alert-DVbwtykC.js → alert-CwrDisFU.js} +1 -1
- package/dist/client/assets/architecture-7GRP2DOG-CQNNG5gU.js +1 -0
- package/dist/client/assets/{architectureDiagram-T3A2C74G-DEiVciWZ.js → architectureDiagram-T3A2C74G-DypU2ERW.js} +1 -1
- package/dist/client/assets/{arrow-left-Ce-aUiy1.js → arrow-left-XhcJWpRy.js} +1 -1
- package/dist/client/assets/{arrow-right-BEwkAmxp.js → arrow-right-BBs6iTUL.js} +1 -1
- package/dist/client/assets/{arrow-up-right-CLCNhOeC.js → arrow-up-right-CJ9Vq7nK.js} +1 -1
- package/dist/client/assets/{badge-DqZmJa1g.js → badge-BswOCwph.js} +1 -1
- package/dist/client/assets/{blockDiagram-VBNYF7ZC-C-PBzm5g.js → blockDiagram-VBNYF7ZC-B9MhR9hY.js} +1 -1
- package/dist/client/assets/{bot-k1yDQ5mQ.js → bot-D5wgL7pu.js} +1 -1
- package/dist/client/assets/{c4Diagram-5PPSVZJV-DB6SIv2V.js → c4Diagram-5PPSVZJV-C22FWSoE.js} +1 -1
- package/dist/client/assets/{capabilities-C9OPiefV.js → capabilities-Bj_X9FZ-.js} +1 -1
- package/dist/client/assets/channel-BtX-w3CK.js +1 -0
- package/dist/client/assets/{chart-column-CVU4MshQ.js → chart-column-D6Lnkklk.js} +1 -1
- package/dist/client/assets/chevron-right-Ddq5gL-L.js +1 -0
- package/dist/client/assets/{chunk-2GRJ4B5K-CFM4Ac_N.js → chunk-2GRJ4B5K-D1tZuCzA.js} +1 -1
- package/dist/client/assets/{chunk-4I5QYGJK-a9tLNjnj.js → chunk-4I5QYGJK-Clf86zK0.js} +1 -1
- package/dist/client/assets/{chunk-5RXB4S5H-CbEb4Ht8.js → chunk-5RXB4S5H-B36N5RYZ.js} +1 -1
- package/dist/client/assets/{chunk-6Q2QTUOP-DPUmSmhc.js → chunk-6Q2QTUOP-IAxdzsQJ.js} +1 -1
- package/dist/client/assets/{chunk-7Z6QIM7H-Ba8d__CQ.js → chunk-7Z6QIM7H-Ctqebv_4.js} +1 -1
- package/dist/client/assets/{chunk-GF5L2VYU-BKOdlQ2f.js → chunk-GF5L2VYU-CAfciJae.js} +1 -1
- package/dist/client/assets/{chunk-I66GZJ75-DAfCveu2.js → chunk-I66GZJ75-BZ7XtZf4.js} +1 -1
- package/dist/client/assets/{chunk-JQJVKLGR-CPzgDuD8.js → chunk-JQJVKLGR-DVuZCWnv.js} +1 -1
- package/dist/client/assets/{chunk-KBJHAD2P-X87J_pHD.js → chunk-KBJHAD2P-DtWbzsRm.js} +1 -1
- package/dist/client/assets/{chunk-NSK5VX7P-BgrjQWAz.js → chunk-NSK5VX7P-BVMz_Hc4.js} +1 -1
- package/dist/client/assets/{chunk-QR6OTTB3-NTX__XXO.js → chunk-QR6OTTB3-DWitTCy-.js} +1 -1
- package/dist/client/assets/{chunk-UBXNYLIW-BVySE3ty.js → chunk-UBXNYLIW-BuxXXP2s.js} +1 -1
- package/dist/client/assets/{chunk-W5SLKNZC-0-ctjkBJ.js → chunk-W5SLKNZC-Bnf3sQl4.js} +1 -1
- package/dist/client/assets/{chunk-WRU74C26-AGGo_1S7.js → chunk-WRU74C26-xu-KDOon.js} +1 -1
- package/dist/client/assets/classDiagram-JCYQIIEL-BgDa3HFl.js +1 -0
- package/dist/client/assets/classDiagram-v2-OCEON4UE-BgDa3HFl.js +1 -0
- package/dist/client/assets/{clipboard-copy-C3icJCGA.js → clipboard-copy-oDSkUUg4.js} +1 -1
- package/dist/client/assets/{cynefin-OW5HDTMX-BR32cltb.js → cynefin-OW5HDTMX-DGNyiNSf.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-MW4NZA55-B7S5bXUw.js → cynefinDiagram-MW4NZA55-_ctibv4i.js} +1 -1
- package/dist/client/assets/{dagre-VZM6K2ZE-BZOfZvme.js → dagre-VZM6K2ZE-Bo-bS1Y0.js} +1 -1
- package/dist/client/assets/{data-list-E_dNBqgV.js → data-list-DLsM39Hp.js} +1 -1
- package/dist/client/assets/{desktopWorkspace-DIoIhyml.js → desktopWorkspace-Ocqt625W.js} +1 -1
- package/dist/client/assets/{deviceName-BY2WK012.js → deviceName-z0ZWSq0z.js} +1 -1
- package/dist/client/assets/{diagram-7IWD3JNH-CypfFHxI.js → diagram-7IWD3JNH-DSjtw1SY.js} +1 -1
- package/dist/client/assets/{diagram-B4RE2ZJO-CaYsJtDz.js → diagram-B4RE2ZJO-B7fWEvIa.js} +1 -1
- package/dist/client/assets/{diagram-LBJQPF4R-BdhZtcd2.js → diagram-LBJQPF4R-trRYCE5d.js} +1 -1
- package/dist/client/assets/{diagram-Q27KOJAE-CW1SMIBy.js → diagram-Q27KOJAE-_DYcRggk.js} +1 -1
- package/dist/client/assets/{diagram-UB23O5K3-Cq8GGDkV.js → diagram-UB23O5K3-BkMzOHX8.js} +1 -1
- package/dist/client/assets/{download-Fq1MsYfI.js → download-CHdS3R_v.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-BXEA7PRR-CE78Op8p.js → ebnfDiagram-BXEA7PRR-DubiOMCG.js} +1 -1
- package/dist/client/assets/{editorPreferences-DzxKMQJx.js → editorPreferences-DVhg0CXd.js} +1 -1
- package/dist/client/assets/{empty-DXTz-nBL.js → empty-BlBl_Vvw.js} +1 -1
- package/dist/client/assets/{erDiagram-JOGREHBK-Bn6BFae6.js → erDiagram-JOGREHBK-CFDiNfSJ.js} +1 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-DpzGHjmu.js +1 -0
- package/dist/client/assets/flowDiagram-UKHOOZJN-CaDVMm72.js +1 -0
- package/dist/client/assets/{ganttDiagram-PKOTCBZU-C8NbmUQP.js → ganttDiagram-PKOTCBZU-DT2XhE-m.js} +1 -1
- package/dist/client/assets/{gitGraph-4MIJSDKK-Dg7W2mOf.js → gitGraph-4MIJSDKK-BI5UGiqb.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-DS77QQ5N-XEC1jydW.js → gitGraphDiagram-DS77QQ5N-CzAB97Rd.js} +1 -1
- package/dist/client/assets/{group-CcSMHbpZ.js → group-DZJuSiJL.js} +1 -1
- package/dist/client/assets/{hostedConnectionCoordinator-BkxMXc2s.js → hostedConnectionCoordinator-BztHfGNt.js} +1 -1
- package/dist/client/assets/{hubRoutes-Ch__ge2L.js → hubRoutes-DExWSvVE.js} +1 -1
- package/dist/client/assets/{index-3zoAo5bo.js → index-BAJdq3TK.js} +1 -1
- package/dist/client/assets/{info-A6RAGUB7-CPN5xH7s.js → info-A6RAGUB7-DdGYYgLX.js} +1 -1
- package/dist/client/assets/{infoDiagram-6WML65LV-DbXXnE3-.js → infoDiagram-6WML65LV-zhUpER6a.js} +1 -1
- package/dist/client/assets/{input-zI-YDU9i.js → input-CzU08wbL.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-WSZJBQD7-DAjJrXWe.js → ishikawaDiagram-WSZJBQD7-BQLkqykE.js} +1 -1
- package/dist/client/assets/{journeyDiagram-NVQOT4AX-CaGm-K-C.js → journeyDiagram-NVQOT4AX-DBgsbKOF.js} +1 -1
- package/dist/client/assets/{kanban-definition-27J2QSJJ-C2YRqY28.js → kanban-definition-27J2QSJJ-DF-Rr-xs.js} +1 -1
- package/dist/client/assets/{kbd-DlXUKjl1.js → kbd-DKuvGqFP.js} +1 -1
- package/dist/client/assets/{key-round-DLUapaUr.js → key-round-CvyrSjb2.js} +1 -1
- package/dist/client/assets/{layers-3D4z3mrk.js → layers-CwP65mnC.js} +1 -1
- package/dist/client/assets/{log-out-BxEBqpSs.js → log-out-D3rICSt5.js} +1 -1
- package/dist/client/assets/{main-DsnAjTqg.js → main-RFllWEko.js} +2 -2
- package/dist/client/assets/{mermaid-parser.core-Dhd66igk.js → mermaid-parser.core-BiGKtilP.js} +2 -2
- package/dist/client/assets/{mermaidEngine-3NZnIFOn.js → mermaidEngine-Cjfgf3Bg.js} +3 -3
- package/dist/client/assets/{mindmap-definition-FAOFIHXS-SuO77jBW.js → mindmap-definition-FAOFIHXS-SiU9JwWJ.js} +1 -1
- package/dist/client/assets/{motion-B4mmVewo.js → motion-C9rN_t9p.js} +1 -1
- package/dist/client/assets/{packet-AYTQ26CC-BZwkWo3N.js → packet-AYTQ26CC-F-HuW5Dr.js} +1 -1
- package/dist/client/assets/{palette-BXA2I3bI.js → palette-gaqgtube.js} +1 -1
- package/dist/client/assets/{pegDiagram-VL7TDLO6-DgWypDaQ.js → pegDiagram-VL7TDLO6-cC-QUd7I.js} +1 -1
- package/dist/client/assets/{pie-WAS4IAKB-C1iJ73d9.js → pie-WAS4IAKB-BI3XUcLN.js} +1 -1
- package/dist/client/assets/{pieDiagram-7S7Q4E2Y-DK1OTG7x.js → pieDiagram-7S7Q4E2Y-BP4gJ4ZK.js} +1 -1
- package/dist/client/assets/{play-CJNYRuck.js → play-BJZrOx6T.js} +1 -1
- package/dist/client/assets/{providerDriverMeta-DJ9TrG26.js → providerDriverMeta-LJ2vJxm-.js} +1 -1
- package/dist/client/assets/{qr-code-HMr6crTy.js → qr-code-BFO8lV1M.js} +1 -1
- package/dist/client/assets/{qr-code-CBzdIN1G.js → qr-code-Cmfz5JKf.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-CIZ2JOQS-CIgZ3afX.js → quadrantDiagram-CIZ2JOQS-DO-N1m-q.js} +1 -1
- package/dist/client/assets/{radar-RG4KPBEZ-vq15KQ2S.js → radar-RG4KPBEZ-CfayXQ5F.js} +1 -1
- package/dist/client/assets/{radio-group-1yuMmVHi.js → radio-group-BueX1AVO.js} +1 -1
- package/dist/client/assets/{railroad-74A4TZTK-DWMARNIs.js → railroad-74A4TZTK-CT6f-etT.js} +1 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-B890iayj.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-C079Tzw6.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-DxvOX5Rh.js +1 -0
- package/dist/client/assets/{railroadDiagram-AXF67PYL-rE9Jx5yK.js → railroadDiagram-AXF67PYL-DC8egbob.js} +1 -1
- package/dist/client/assets/{refresh-cw-DBJIPv7m.js → refresh-cw-K_hU8_ld.js} +1 -1
- package/dist/client/assets/{requirementDiagram-LRYGKXZP-Dkz6KTug.js → requirementDiagram-LRYGKXZP-DJMzcLk_.js} +1 -1
- package/dist/client/assets/{runtime-DpHhg0dl.js → runtime-OM-uAtaj.js} +2 -2
- package/dist/client/assets/{sankeyDiagram-W5VNT64P-qCyqmTya.js → sankeyDiagram-W5VNT64P-YR6aIYLj.js} +1 -1
- package/dist/client/assets/{save-BFsP9OG2.js → save-Mh-PA_2P.js} +1 -1
- package/dist/client/assets/{scroll-area-CxjQJZM9.js → scroll-area-BC-LB_zE.js} +1 -1
- package/dist/client/assets/{scrollEdges-CXvSHaVb.js → scrollEdges-Zcpuz3un.js} +1 -1
- package/dist/client/assets/{separator-D3j91Nju.js → separator-yx1r9ZDw.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-SI44F4Z6-GCGWxGKL.js → sequenceDiagram-SI44F4Z6-BVeSqWDA.js} +1 -1
- package/dist/client/assets/{settingsLayout-3SUkadS6.js → settingsLayout-BbjDM-p0.js} +1 -1
- package/dist/client/assets/{sheet-BOQ2T2gY.js → sheet-CpEwjOWn.js} +1 -1
- package/dist/client/assets/{shield-alert-CWQ-fgqm.js → shield-alert-CXmR7fM9.js} +1 -1
- package/dist/client/assets/{shield-check-Dgpx5EQs.js → shield-check-CdFhWT_o.js} +1 -1
- package/dist/client/assets/{shield-Colgxqw7.js → shield-i098Bm_B.js} +1 -1
- package/dist/client/assets/{sidebar-BIv8pHHx.js → sidebar-DayQTDZp.js} +1 -1
- package/dist/client/assets/{sidebarProjectFolders-BpKCw8IR.js → sidebarProjectFolders-DXqx3OlZ.js} +1 -1
- package/dist/client/assets/{sidebarStatusText-DSeDlb-o.js → sidebarStatusText-kdA6QMZS.js} +1 -1
- package/dist/client/assets/{sidebarUndo-DzblmE6P.js → sidebarUndo-BHFfJj0k.js} +1 -1
- package/dist/client/assets/{skeleton-BdJ4w_TS.js → skeleton-BwFgUtuE.js} +1 -1
- package/dist/client/assets/{smartphone-DhBEWfKK.js → smartphone-DGfizz51.js} +1 -1
- package/dist/client/assets/square-Cd2WS1gv.js +1 -0
- package/dist/client/assets/{star-BAzXRepp.js → star-J3x3fktG.js} +1 -1
- package/dist/client/assets/{stateDiagram-OKZ733FA-D8fRUjov.js → stateDiagram-OKZ733FA-DoIZN669.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-UEYNNEHI-BnzsGHaN.js +1 -0
- package/dist/client/assets/storeSelectors-D60AAN01.js +1 -0
- package/dist/client/assets/{swimlanes-SLNWSIFB-BKy9AxWZ.js → swimlanes-SLNWSIFB-BoFLigyK.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-BnA-oDvU.js +8 -0
- package/dist/client/assets/{switch-DgLijJhN.js → switch-D9inWKdd.js} +1 -1
- package/dist/client/assets/{timeline-definition-Z64GVDOM-DV53IwmP.js → timeline-definition-Z64GVDOM-D65EmNWc.js} +1 -1
- package/dist/client/assets/{toggle-group-DRIEnEQy.js → toggle-group-YNqzWsK0.js} +1 -1
- package/dist/client/assets/{toggle-BgR-G8hl.js → toggle-wMq3LLn1.js} +1 -1
- package/dist/client/assets/{tokenModePresentation-Bh3mJ9H-.js → tokenModePresentation-C0-NgmX5.js} +1 -1
- package/dist/client/assets/{tooltip-CsNk2GK1.js → tooltip-mwOCSCXF.js} +1 -1
- package/dist/client/assets/{treeView-Q6P3EWNA-BgFMn3HH.js → treeView-Q6P3EWNA-C2S-OPgI.js} +1 -1
- package/dist/client/assets/{treemap-WGGIJYW6-B45XVWgo.js → treemap-WGGIJYW6-6Ovsu9iH.js} +1 -1
- package/dist/client/assets/{unplug-0SZT8Az_.js → unplug-BEfcl9Ht.js} +1 -1
- package/dist/client/assets/useAppSidebarCollapsed-C0jpPtER.js +1 -0
- package/dist/client/assets/useBaseUiId-Bz8dcyjd.js +1 -0
- package/dist/client/assets/{useLabelableId-CTlGVpp_.js → useLabelableId-C8bc9a0F.js} +1 -1
- package/dist/client/assets/{useNavigate-xewFGSmS.js → useNavigate-01O5dMQe.js} +1 -1
- package/dist/client/assets/{usePhoneThreadActions-CuSwvIb4.js → usePhoneThreadActions-BIdh81kF.js} +1 -1
- package/dist/client/assets/{usePopupViewport-CCXjC0oV.js → usePopupViewport-DYYZwfTW.js} +1 -1
- package/dist/client/assets/{useScrollLock-DkiskCYn.js → useScrollLock-BO185DkJ.js} +1 -1
- package/dist/client/assets/{useStatistics-C5V0rg9r.js → useStatistics-D55-xLMz.js} +1 -1
- package/dist/client/assets/{useTriggerFocusGuards-Cd4IS7Sl.js → useTriggerFocusGuards-CMLVr18J.js} +1 -1
- package/dist/client/assets/{useValueChanged-DUWoN5BG.js → useValueChanged-DSyRHPje.js} +1 -1
- package/dist/client/assets/{user-round-BtyrzbBf.js → user-round-C-U7TZKG.js} +1 -1
- package/dist/client/assets/{vennDiagram-T6HMQDX7-DAr5h306.js → vennDiagram-T6HMQDX7-fZAexcYr.js} +1 -1
- package/dist/client/assets/{vscode-icons-LDoILSKI.js → vscode-icons-BYX6fBsM.js} +1 -1
- package/dist/client/assets/{wardley-WFR3VGLG-6MSUlbTx.js → wardley-WFR3VGLG-gdYWSMxK.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-T6FBY63Y-Bwv8xq6E.js → wardleyDiagram-T6FBY63Y-iDJxQb70.js} +1 -1
- package/dist/client/assets/{workspaceMetadataProjection-DzVpakWU.js → workspaceMetadataProjection-So9-wSEZ.js} +1 -1
- package/dist/client/assets/{wrench-BDHgkqDa.js → wrench-D79uBUSl.js} +1 -1
- package/dist/client/assets/{xychartDiagram-ELKLHX3M-Be0CbWLp.js → xychartDiagram-ELKLHX3M-B4cfMwpJ.js} +1 -1
- package/dist/client/index.html +1 -1
- 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/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/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/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-CATwakjI.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-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-OM-uAtaj.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-D9inWKdd.js";import{t as x}from"./compiler-runtime-C4g8XhC5.js";import{t as ie}from"./useNavigate-01O5dMQe.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-Bm906qNi.js";import{D as me,O as he}from"./ContextHandoffEndpointLabel-BzI4Wi1i.js";import{h as ge,m as _e,p as ve}from"./SettingsPanels.editor-64bM0lhg.js";import{t as ye}from"./usePresentationTier-hxB7Yv_Q.js";import{r as be}from"./desktopWorkspace-Ocqt625W.js";import"./storeSelectors-D60AAN01.js";import{o as xe}from"./sidebar-DayQTDZp.js";import{t as Se}from"./useAppSidebarCollapsed-C0jpPtER.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-RFllWEko.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-Obv1bvxj.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-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-OM-uAtaj.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-D9inWKdd.js";import{t as w}from"./compiler-runtime-C4g8XhC5.js";import{i as We,n as Ge,t as Ke}from"./tooltip-mwOCSCXF.js";import{t as qe}from"./useNavigate-01O5dMQe.js";import{_ as Je,b as T,v as Ye,y as Xe}from"./RootAppShell-DwiWD4Cy.js";import{t as Ze}from"./arrow-left-XhcJWpRy.js";import{t as Qe}from"./chart-column-D6Lnkklk.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-BzI4Wi1i.js";import{t as ct}from"./chevron-right-Ddq5gL-L.js";import{n as k,t as A}from"./kbd-DKuvGqFP.js";import{t as lt}from"./capabilities-Bj_X9FZ-.js";import{t as ut}from"./download-CHdS3R_v.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-DXqx3OlZ.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-BHFfJj0k.js";import{t as kt}from"./usePresentationTier-hxB7Yv_Q.js";import{c as At,m as jt,o as Mt}from"./BranchToolbar.logic-DFsXV3Qs.js";import{o as Nt}from"./desktopWorkspace-Ocqt625W.js";import{i as Pt,n as Ft,r as It}from"./deviceName-z0ZWSq0z.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-RFllWEko.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-OM-uAtaj.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-BO185DkJ.js";import{l as T,p as E}from"./badge-BswOCwph.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-ljYmTHea.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-OM-uAtaj.js";import{t as o}from"./react-CwJFpaho.js";import{Mr as s,_r as c,jr as l,t as u}from"./switch-D9inWKdd.js";import{t as d}from"./compiler-runtime-C4g8XhC5.js";import{t as f}from"./square-Cd2WS1gv.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};
|
package/dist/client/assets/{ConnectionsSettings-BW1hWm-b.js → ConnectionsSettings-CIXs7x_E.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,C as n,F as r,M as i,T as a,U as o,g as s,h as c,j as l,k as u,m as d,p as f,u as p}from"./primary-CQh_KHGG.js";import{_i as m,do as h}from"./src-DHNjfMxR.js";import{$l as g,Bn as _,K as v,Kr as y,Lt as b,Mt as x,Qr as S,V as C,Vl as w,Zr as T,ei as E,h as D,ho as O,jr as k,l as A,m as j,mr as M,n as N,oo as P,po as F,pr as I,r as L,s as R}from"./runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,C as n,F as r,M as i,T as a,U as o,g as s,h as c,j as l,k as u,m as d,p as f,u as p}from"./primary-CQh_KHGG.js";import{_i as m,do as h}from"./src-DHNjfMxR.js";import{$l as g,Bn as _,K as v,Kr as y,Lt as b,Mt as x,Qr as S,V as C,Vl as w,Zr as T,ei as E,h as D,ho as O,jr as k,l as A,m as j,mr as M,n as N,oo as P,po as F,pr as I,r as L,s as R}from"./runtime-OM-uAtaj.js";import{t as z}from"./react-CwJFpaho.js";import{$t as ee,Ct as B,Dt as te,Et as V,Ft as ne,Gt as H,J as re,Jt as U,K as ie,Kt as ae,Mt as oe,Nt as se,Pt as ce,Q as le,Qt as ue,Rt as W,Tt as de,Ut as fe,X as pe,Xt as me,Y as he,Yt as ge,Z as _e,Zt as ve,dr as ye,ir as be,jt as xe,q as Se,qt as Ce,rr as we,t as Te,wt as Ee}from"./switch-D9inWKdd.js";import{t as De}from"./compiler-runtime-C4g8XhC5.js";import{i as Oe,n as ke,t as G}from"./tooltip-mwOCSCXF.js";import{c as Ae,o as je,s as Me}from"./SettingsPanels-BYknk6GO.js";import{t as Ne}from"./arrow-up-right-CJ9Vq7nK.js";import{t as Pe}from"./qr-code-Cmfz5JKf.js";import{t as Fe}from"./refresh-cw-K_hU8_ld.js";import{n as K,t as Ie}from"./pairingUrl-rQM9kSGT.js";import{t as Le}from"./toastHelpers-CSQRKo4F.js";import{i as Re,t as ze}from"./hostedPairing-CqhLPQqG.js";import{n as Be,o as Ve,t as He}from"./desktopWorkspace-Ocqt625W.js";import{t as q}from"./input-CzU08wbL.js";import{t as Ue}from"./scroll-area-BC-LB_zE.js";import{a as We,i as Ge,n as Ke,r as J}from"./settingsLayout-BbjDM-p0.js";import{n as qe,t as Je}from"./data-list-DLsM39Hp.js";import{t as Ye}from"./AnimatedHeight-BNg7wnTK.js";import{n as Xe,t as Ze}from"./group-DZJuSiJL.js";import{t as Qe}from"./qr-code-BFO8lV1M.js";import{ut as $e}from"./main-RFllWEko.js";var Y={name:`chevrons-left-right-ellipsis`,size:24,node:[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`m17 7 5 5-5 5`,key:`1xlxn0`}],[`path`,{d:`m7 7-5 5 5 5`,key:`19njba`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}]]};Y.node;var et=O(Y),X=e(z(),1),Z=De();function tt(e,t){let n=new URL(e);return n.pathname=`/pair`,K(n,t).toString()}function Q(e,t){return new URL(e).protocol===`https:`?ze({host:e,token:t}):null}var nt=`/assets/relay-architecture-YeimmXuP.html`,$=g();function rt(e,t){return e===null||t===null||!e.fileSecretStoreFallbackSupported?!1:t.enrolled===`none`||t.enrolled===`unknown`&&!e.allowFileSecretStore}function it(e,t){return e===null||t===null?`Loading local launch configuration and identity state.`:e.fileSecretStoreFallbackSupported?t.enrolled===`active`||t.enrolled===`pending`?`Locked while this machine holds Hub identity material. Leave the Hub before changing it.`:t.enrolled===`unknown`?e.allowFileSecretStore?`Identity custody is unreadable, so an enabled fallback cannot be turned off.`:`Enable this only as a recovery action when an existing file-backed identity cannot be read.`:`Ryco still prefers the system credential store. This only permits the hardened POSIX file fallback when that store is unavailable.`:`Unavailable on Windows. Ryco requires the system credential store on this host.`}function at(e){return e<1024?`${e} B`:`${(e/1024).toFixed(+(e<10240))} KiB`}function ot(e,t){if(e===null)return[{label:`Protocol`,value:`Loading`},{label:`Channels`,value:`Loading`},{label:`Relay queue`,value:`Loading`},{label:`Reconnect`,value:`Loading`}];let n=e.state===`online`&&e.protocolMajor!==void 0&&e.protocolMinor!==void 0?`${e.protocolMajor}.${e.protocolMinor}`:`Not negotiated`,r=e.nextRetryAt===void 0?e.reconnectAttempt===void 0?`Not scheduled`:`Attempt ${e.reconnectAttempt}`:`Attempt ${e.reconnectAttempt??0}, ${Math.max(0,Math.ceil((Date.parse(e.nextRetryAt)-t)/1e3))}s`;return[{label:`Protocol`,value:n},{label:`Channels`,value:String(e.activeChannels)},{label:`Relay queue`,value:at(e.queuedBytes)},{label:`Reconnect`,value:r}]}function st(e){let t=(0,Z.c)(84),{config:n,identity:r,status:i,nowMs:a,savingFileFallback:o,configError:s,onFileFallbackChange:c,onOpenGuide:l}=e,[u,d]=(0,X.useState)(!1),f;t[0]!==n||t[1]!==r?(f=rt(n,r),t[0]=n,t[1]=r,t[2]=f):f=t[2];let p=f,m,h,g,_,v,y,b,x,C,w,T,E,D,O,k,A;if(t[3]!==p||t[4]!==n||t[5]!==s||t[6]!==r||t[7]!==a||t[8]!==c||t[9]!==l||t[10]!==u||t[11]!==o||t[12]!==i){let e=ot(i,a);g=je,y=u,b=d;let f=u?`Hide advanced options`:`Show advanced options`,j;t[29]===f?j=t[30]:(j=(0,$.jsx)(`span`,{className:`block text-[13px] font-semibold tracking-[-0.01em] text-foreground`,children:f}),t[29]=f,t[30]=j);let M;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsx)(`span`,{className:`mt-1 block text-xs text-muted-foreground/80`,children:`Key custody, startup ownership, CLI flags, and bounded relay diagnostics.`}),t[31]=M):M=t[31];let N;t[32]===s?N=t[33]:(N=s?(0,$.jsx)(`span`,{className:`mt-1 block text-[11px] text-destructive`,children:s}):null,t[32]=s,t[33]=N);let P;t[34]!==j||t[35]!==N?(P=(0,$.jsxs)(`span`,{children:[j,M,N]}),t[34]=j,t[35]=N,t[36]=P):P=t[36];let I=`size-4 shrink-0 text-muted-foreground transition-transform duration-200 motion-reduce:transition-none ${u?`rotate-180`:``}`,L;t[37]===I?L=t[38]:(L=(0,$.jsx)(F,{className:I,"aria-hidden":!0}),t[37]=I,t[38]=L),t[39]!==P||t[40]!==L?(x=(0,$.jsxs)(Ae,{className:`group flex w-full items-center justify-between gap-4 border-t border-border/60 px-4 py-3.5 text-left transition-colors hover:bg-muted/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring sm:px-5`,children:[P,L]}),t[39]=P,t[40]=L,t[41]=x):x=t[41],h=Me,v=`motion-reduce:transition-none`,O=`border-t border-border/60 bg-muted/10`;let R;t[42]!==n||t[43]!==r?(R=it(n,r),t[42]=n,t[43]=r,t[44]=R):R=t[44];let z=n?.allowFileSecretStore??!1,ee=!p||o,B;t[45]===c?B=t[46]:(B=e=>c(!!e),t[45]=c,t[46]=B);let te;t[47]!==z||t[48]!==ee||t[49]!==B?(te=(0,$.jsx)(Te,{checked:z,disabled:ee,onCheckedChange:B,"aria-label":`Allow permissioned-file Hub key storage`}),t[47]=z,t[48]=ee,t[49]=B,t[50]=te):te=t[50],t[51]!==R||t[52]!==te?(k=(0,$.jsx)(J,{title:`Protected key fallback`,description:R,status:`Changing this launch setting restarts Ryco. It never moves or exports an existing key.`,control:te}),t[51]=R,t[52]=te,t[53]=k):k=t[53],t[54]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,$.jsx)(J,{title:`Who owns startup`,description:`The desktop app owns Hub launch values for its bundled server and restarts that server to apply them. Exported Hub environment variables do not override this panel.`,status:`The Hub address stays outside ordinary server settings, diagnostics, and support output.`}),t[54]=A):A=t[54],t[55]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,$.jsx)(J,{title:`CLI equivalents`,description:`Use these flags for a headless Ryco node. Explicit flags override matching environment variables.`,status:`Use RYCO_HUB_NODE_NAME instead of --hub-node-name when environment configuration is preferable. Boolean flags also support canonical --no-... forms.`,children:(0,$.jsx)(`div`,{className:`pb-3.5 pt-3`,children:(0,$.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border border-border/60 bg-background/70 px-3 py-2.5 font-mono text-[11px] leading-5 text-foreground`,children:(0,$.jsx)(`code`,{children:`ryco serve \\
|
|
2
2
|
--hub-connector-enabled \\
|
|
3
3
|
--hub-origin https://app.ryco.space \\
|
|
4
4
|
--hub-node-name "Build node"
|