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/bin.cjs
CHANGED
|
@@ -32832,7 +32832,7 @@ const consumeResetCreditWithClient = (client, input, runtime, verifyRuntime) =>
|
|
|
32832
32832
|
const consumeResetCredit = (runtime, input, verifyRuntime) => withResetCreditClient(runtime, (client) => consumeResetCreditWithClient(client, input, runtimeBinding(runtime), verifyRuntime)).pipe(effect.Effect.mapError((error) => effect.Schema.is(require_src.CodexResetCreditError)(error) ? error : new require_src.CodexResetCreditError({ message: "The reset result is uncertain. Retry this same attempt after reconnecting; do not start another reset." })));
|
|
32833
32833
|
//#endregion
|
|
32834
32834
|
//#region package.json
|
|
32835
|
-
var version$2 = "0.1.
|
|
32835
|
+
var version$2 = "0.1.29";
|
|
32836
32836
|
//#endregion
|
|
32837
32837
|
//#region src/provider/Layers/CodexProvider.ts
|
|
32838
32838
|
const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
|
|
@@ -61241,7 +61241,20 @@ function parseDesktopResourceTelemetry(value) {
|
|
|
61241
61241
|
entry.privateBytes,
|
|
61242
61242
|
entry.idleWakeupsPerSecond
|
|
61243
61243
|
].every(counter)) return null;
|
|
61244
|
-
|
|
61244
|
+
const snapshot = value;
|
|
61245
|
+
return {
|
|
61246
|
+
...snapshot,
|
|
61247
|
+
processes: snapshot.processes.map((entry) => ({
|
|
61248
|
+
pid: entry.pid,
|
|
61249
|
+
startTimeMs: Math.trunc(entry.startTimeMs),
|
|
61250
|
+
type: entry.type,
|
|
61251
|
+
cpuPercent: entry.cpuPercent,
|
|
61252
|
+
cpuTimeMs: Math.trunc(entry.cpuTimeMs),
|
|
61253
|
+
residentBytes: entry.residentBytes,
|
|
61254
|
+
privateBytes: entry.privateBytes,
|
|
61255
|
+
idleWakeupsPerSecond: entry.idleWakeupsPerSecond
|
|
61256
|
+
}))
|
|
61257
|
+
};
|
|
61245
61258
|
}
|
|
61246
61259
|
/** Reject oversized frames before parsing and bound unterminated input. */
|
|
61247
61260
|
function createTelemetryLineReader(onValue, onInvalid) {
|
|
@@ -62385,7 +62398,7 @@ const makeProviderHandlers = (ctx) => {
|
|
|
62385
62398
|
yield* providerRegistry.refreshInstance(input.instanceId).pipe(effect.Effect.timeout(effect.Duration.seconds(3)), effect.Effect.ignoreCause);
|
|
62386
62399
|
return result;
|
|
62387
62400
|
})),
|
|
62388
|
-
[require_src.WS_METHODS.serverSearchAcpRegistry]: (input) =>
|
|
62401
|
+
[require_src.WS_METHODS.serverSearchAcpRegistry]: (input) => ctx.withAccess("viewer", require_src.WS_METHODS.serverSearchAcpRegistry, effect.Effect.tryPromise({
|
|
62389
62402
|
try: () => registry.search(input.query),
|
|
62390
62403
|
catch: registryError
|
|
62391
62404
|
}).pipe(effect.Effect.map((agents) => ({ agents })))),
|
|
@@ -62427,7 +62440,7 @@ const makeProviderHandlers = (ctx) => {
|
|
|
62427
62440
|
issues: []
|
|
62428
62441
|
};
|
|
62429
62442
|
})), { "rpc.aggregate": "server" }),
|
|
62430
|
-
[require_src.WS_METHODS.serverGetProjectPreferences]: ({ projectId }) =>
|
|
62443
|
+
[require_src.WS_METHODS.serverGetProjectPreferences]: ({ projectId }) => ctx.withAccess("viewer", require_src.WS_METHODS.serverGetProjectPreferences, effect.Effect.gen(function* () {
|
|
62431
62444
|
const settings = yield* serverSettings.getSettings;
|
|
62432
62445
|
if (projectId === void 0) return resolveProjectPreferences({ settings });
|
|
62433
62446
|
const project = yield* projectionSnapshotQuery.getProjectShellById(projectId).pipe(effect.Effect.mapError((cause) => new require_src.ServerSettingsError({
|
package/dist/bin.mjs
CHANGED
|
@@ -32800,7 +32800,7 @@ const consumeResetCreditWithClient = (client, input, runtime, verifyRuntime) =>
|
|
|
32800
32800
|
const consumeResetCredit = (runtime, input, verifyRuntime) => withResetCreditClient(runtime, (client) => consumeResetCreditWithClient(client, input, runtimeBinding(runtime), verifyRuntime)).pipe(Effect.mapError((error) => Schema.is(CodexResetCreditError)(error) ? error : new CodexResetCreditError({ message: "The reset result is uncertain. Retry this same attempt after reconnecting; do not start another reset." })));
|
|
32801
32801
|
//#endregion
|
|
32802
32802
|
//#region package.json
|
|
32803
|
-
var version$2 = "0.1.
|
|
32803
|
+
var version$2 = "0.1.29";
|
|
32804
32804
|
//#endregion
|
|
32805
32805
|
//#region src/provider/Layers/CodexProvider.ts
|
|
32806
32806
|
const PROVIDER_PROBE_TIMEOUT_MS = 8e3;
|
|
@@ -61209,7 +61209,20 @@ function parseDesktopResourceTelemetry(value) {
|
|
|
61209
61209
|
entry.privateBytes,
|
|
61210
61210
|
entry.idleWakeupsPerSecond
|
|
61211
61211
|
].every(counter)) return null;
|
|
61212
|
-
|
|
61212
|
+
const snapshot = value;
|
|
61213
|
+
return {
|
|
61214
|
+
...snapshot,
|
|
61215
|
+
processes: snapshot.processes.map((entry) => ({
|
|
61216
|
+
pid: entry.pid,
|
|
61217
|
+
startTimeMs: Math.trunc(entry.startTimeMs),
|
|
61218
|
+
type: entry.type,
|
|
61219
|
+
cpuPercent: entry.cpuPercent,
|
|
61220
|
+
cpuTimeMs: Math.trunc(entry.cpuTimeMs),
|
|
61221
|
+
residentBytes: entry.residentBytes,
|
|
61222
|
+
privateBytes: entry.privateBytes,
|
|
61223
|
+
idleWakeupsPerSecond: entry.idleWakeupsPerSecond
|
|
61224
|
+
}))
|
|
61225
|
+
};
|
|
61213
61226
|
}
|
|
61214
61227
|
/** Reject oversized frames before parsing and bound unterminated input. */
|
|
61215
61228
|
function createTelemetryLineReader(onValue, onInvalid) {
|
|
@@ -62353,7 +62366,7 @@ const makeProviderHandlers = (ctx) => {
|
|
|
62353
62366
|
yield* providerRegistry.refreshInstance(input.instanceId).pipe(Effect.timeout(Duration.seconds(3)), Effect.ignoreCause);
|
|
62354
62367
|
return result;
|
|
62355
62368
|
})),
|
|
62356
|
-
[WS_METHODS.serverSearchAcpRegistry]: (input) =>
|
|
62369
|
+
[WS_METHODS.serverSearchAcpRegistry]: (input) => ctx.withAccess("viewer", WS_METHODS.serverSearchAcpRegistry, Effect.tryPromise({
|
|
62357
62370
|
try: () => registry.search(input.query),
|
|
62358
62371
|
catch: registryError
|
|
62359
62372
|
}).pipe(Effect.map((agents) => ({ agents })))),
|
|
@@ -62395,7 +62408,7 @@ const makeProviderHandlers = (ctx) => {
|
|
|
62395
62408
|
issues: []
|
|
62396
62409
|
};
|
|
62397
62410
|
})), { "rpc.aggregate": "server" }),
|
|
62398
|
-
[WS_METHODS.serverGetProjectPreferences]: ({ projectId }) =>
|
|
62411
|
+
[WS_METHODS.serverGetProjectPreferences]: ({ projectId }) => ctx.withAccess("viewer", WS_METHODS.serverGetProjectPreferences, Effect.gen(function* () {
|
|
62399
62412
|
const settings = yield* serverSettings.getSettings;
|
|
62400
62413
|
if (projectId === void 0) return resolveProjectPreferences({ settings });
|
|
62401
62414
|
const project = yield* projectionSnapshotQuery.getProjectShellById(projectId).pipe(Effect.mapError((cause) => new ServerSettingsError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import"./src-DHNjfMxR.js";import{$l as t,I as n,N as r,P as i,Qr as a,Zr as o,ho as s,lo as c,mo as l,oo as u}from"./runtime-DpHhg0dl.js";import{t as d}from"./react-CwJFpaho.js";import{Gt as f,J as p,Jt as m,K as h,Q as g,Qt as _,X as v,Xt as ee,Y as y,Yt as te,Z as ne,Zt as re,l as b,q as x,qt as ie,wt as S,xn as C}from"./switch-DgLijJhN.js";import{t as w}from"./compiler-runtime-C4g8XhC5.js";import{t as T}from"./badge-DqZmJa1g.js";import{J as E}from"./ContextHandoffEndpointLabel-BCNMjnEV.js";import{t as D}from"./key-round-DLUapaUr.js";import{t as O}from"./refresh-cw-DBJIPv7m.js";import{t as k}from"./shield-check-Dgpx5EQs.js";import{t as A}from"./user-round-BtyrzbBf.js";import{_ as j,o as M}from"./authorization-BugIGt5e.js";import{n as ae,t as oe}from"./input-zI-YDU9i.js";import{i as N,n as se,r as P,t as F}from"./alert-DVbwtykC.js";import{C as I,S as L,_ as R,a as ce,b as z,c as le,d as ue,f as B,g as V,h as H,i as U,l as W,m as G,n as K,o as q,p as J,r as de,s as Y,t as fe,u as X,v as Z,x as pe,y as me}from"./ExternalIdentityWeb.logic-DsTJQkg-.js";import{i as he,n as ge,r as _e}from"./settingsLayout-3SUkadS6.js";import{t as ve}from"./qr-code-HMr6crTy.js";var ye={name:`monitor-smartphone`,size:24,node:[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]};ye.node;var be=s(ye),Q=e(d(),1),xe=w(),Se=`Signed-in native apps use these device keys to establish encrypted connections automatically. The Hub authorizes account-trusted connections, so this does not protect against a malicious Hub; independent node verification remains the stronger option.`,Ce={darwin:`macOS`,linux:`Linux`,windows:`Windows`,ios:`iPhone or iPad`,android:`Android`},we={"secure-enclave":`Secure Enclave`,strongbox:`StrongBox`,tee:`Hardware-backed TEE`,tpm:`TPM`,"hardware-backed":`Hardware backed`,unavailable:`Unavailable`};function Te(e){return Ce[e.platform]}function Ee(e){return`${we[e.reportedKeyBacking]} · reported by device`}function De(e){switch(e.status){case`active`:return`Active`;case`revoked`:return`Revoked`;case`superseded`:return`Superseded`}}function Oe(e){let t=e.trim();return t.length>0&&t.length<=100?t:null}function ke(e,t){return[{label:`Enrollment`,value:e.enrollmentId},{label:`Identity fingerprint`,value:e.identityFingerprint,fingerprint:!0},{label:`Agreement fingerprint`,value:e.agreementFingerprint,fingerprint:!0},{label:`Key backing`,value:Ee(e)},{label:`First enrolled`,value:t(e.createdAt)},{label:`Last used`,value:e.lastUsedAt===null?`Not used yet`:t(e.lastUsedAt)},...e.revokedAt===null?[]:[{label:`Revoked`,value:t(e.revokedAt)}]]}var $=t(),Ae=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function je(e){return Ae.format(new Date(e))}function Me(){let e=(0,xe.c)(75),t=r(Re),n=r(Le),i=r(Ie),[o,s]=(0,Q.useState)(null),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(null),C=i!==`idle`,w=i===`renaming-e2ee-device`,E=i===`revoking-e2ee-device`,D;e[0]===c?D=e[1]:(D=Oe(c),e[0]=c,e[1]=D);let O=D,k;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(k=[],e[2]=k):k=e[2],(0,Q.useEffect)(Fe,k);let A;e[3]!==O||e[4]!==o?(A=async()=>{o&&O!==null&&(await M.renameE2eeDevice(o.enrollmentId,{expectedEnrollmentRevision:o.enrollmentRevision,deviceLabel:O})).status===`committed`&&(s(null),l(``))},e[3]=O,e[4]=o,e[5]=A):A=e[5];let j=A,N;e[6]===u?N=e[7]:(N=async()=>{u&&(await M.revokeE2eeDevice(u.enrollmentId,{expectedEnrollmentRevision:u.enrollmentRevision,reasonCode:`owner_requested`})).status===`committed`&&d(null)},e[6]=u,e[7]=N);let se=N,P;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,$.jsx)(be,{"aria-hidden":!0,className:`size-3.5`}),e[8]=P):P=e[8];let F=C||n===`loading`,I;e[9]===F?I=e[10]:(I=(0,$.jsx)(a,{size:`xs`,variant:`ghost`,disabled:F,onClick:Pe,children:`Refresh`}),e[9]=F,e[10]=I);let L;e[11]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,$.jsx)(_e,{title:`Automatic native encryption`,description:Se,status:`A new signed-in Desktop or mobile app enrolls its own keys; private keys stay on that device.`}),e[11]=L):L=e[11];let R;e[12]!==C||e[13]!==t||e[14]!==n?(R=t.length===0?(0,$.jsx)(_e,{title:n===`loading`?`Loading devices…`:`No native devices yet`,description:`Sign in from Ryco Desktop or mobile to enroll that app automatically. Web sessions stay separate and do not join this native device trust set.`,status:n===`stale`?`The device directory is temporarily unavailable.`:null,control:n===`loading`?(0,$.jsx)(S,{className:`size-3.5`}):null}):t.map(e=>{let t=e.status===`active`;return(0,$.jsx)(_e,{title:(0,$.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[e.deviceLabel,(0,$.jsx)(T,{variant:t?`success`:`secondary`,children:De(e)})]}),description:`${Te(e)} · Ryco ${e.appVersion}`,status:n===`stale`?`Showing the last device directory Ryco read.`:null,control:t?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:C,onClick:()=>{s(e),l(e.deviceLabel)},children:`Rename`}),(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,disabled:C,onClick:()=>d(e),children:`Revoke`})]}):null,children:(0,$.jsx)(`dl`,{className:`mt-3 grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 border-t border-border/60 py-3`,children:ke(e,je).map(Ne)})},`${e.enrollmentId}:${String(e.enrollmentRevision)}`)}),e[12]=C,e[13]=t,e[14]=n,e[15]=R):R=e[15];let ce=o!==null,z;e[16]===w?z=e[17]:(z=e=>{e||w||(s(null),l(``))},e[16]=w,e[17]=z);let le;e[18]===j?le=e[19]:(le=e=>{e.preventDefault(),j()},e[18]=j,e[19]=le);let ue;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(ue=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Rename encrypted device`}),(0,$.jsx)(ie,{children:`This label is account metadata. Renaming does not rotate or replace the device keys.`})]}),e[20]=ue):ue=e[20];let B;e[21]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,$.jsx)(b,{htmlFor:`account-e2ee-device-label`,children:`Device name`}),e[21]=B):B=e[21];let V;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(V=e=>l(e.target.value),e[22]=V):V=e[22];let H;e[23]!==c||e[24]!==w?(H=(0,$.jsxs)(ee,{className:`space-y-2`,children:[B,(0,$.jsx)(oe,{id:`account-e2ee-device-label`,value:c,maxLength:100,disabled:w,className:ae,onChange:V})]}),e[23]=c,e[24]=w,e[25]=H):H=e[25];let U;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>{s(null),l(``)},e[26]=U):U=e[26];let W;e[27]===w?W=e[28]:(W=(0,$.jsx)(a,{type:`button`,variant:`outline`,disabled:w,onClick:U,children:`Cancel`}),e[27]=w,e[28]=W);let G=w||O===null,K;e[29]===w?K=e[30]:(K=w?(0,$.jsx)(S,{className:`size-3.5`}):null,e[29]=w,e[30]=K);let q;e[31]!==G||e[32]!==K?(q=(0,$.jsxs)(a,{type:`submit`,disabled:G,children:[K,`Save name`]}),e[31]=G,e[32]=K,e[33]=q):q=e[33];let J;e[34]!==W||e[35]!==q?(J=(0,$.jsxs)(m,{children:[W,q]}),e[34]=W,e[35]=q,e[36]=J):J=e[36];let de;e[37]!==le||e[38]!==H||e[39]!==J?(de=(0,$.jsx)(re,{className:`max-w-sm`,children:(0,$.jsxs)(`form`,{onSubmit:le,children:[ue,H,J]})}),e[37]=le,e[38]=H,e[39]=J,e[40]=de):de=e[40];let Y;e[41]!==z||e[42]!==de||e[43]!==ce?(Y=(0,$.jsx)(f,{open:ce,onOpenChange:z,children:de}),e[41]=z,e[42]=de,e[43]=ce,e[44]=Y):Y=e[44];let fe=u!==null,X;e[45]===E?X=e[46]:(X=e=>{!e&&!E&&d(null)},e[45]=E,e[46]=X);let Z;e[47]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,$.jsx)(g,{children:`Revoke this encrypted device?`}),e[47]=Z):Z=e[47];let pe=u?.deviceLabel??`The selected device`,me;e[48]===pe?me=e[49]:(me=(0,$.jsxs)(v,{children:[Z,(0,$.jsxs)(p,{children:[pe,` will lose account-authorized native connections. Signing in again can enroll fresh keys, but this enrollment cannot be restored.`]})]}),e[48]=pe,e[49]=me);let ge;e[50]===E?ge=e[51]:(ge=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`,disabled:E}),children:`Cancel`}),e[50]=E,e[51]=ge);let ve;e[52]===se?ve=e[53]:(ve=()=>void se(),e[52]=se,e[53]=ve);let ye;e[54]===E?ye=e[55]:(ye=E?(0,$.jsx)(S,{className:`size-3.5`}):null,e[54]=E,e[55]=ye);let Ce;e[56]!==E||e[57]!==ve||e[58]!==ye?(Ce=(0,$.jsxs)(a,{variant:`destructive`,disabled:E,onClick:ve,children:[ye,`Revoke device`]}),e[56]=E,e[57]=ve,e[58]=ye,e[59]=Ce):Ce=e[59];let we;e[60]!==ge||e[61]!==Ce?(we=(0,$.jsxs)(y,{children:[ge,Ce]}),e[60]=ge,e[61]=Ce,e[62]=we):we=e[62];let Ee;e[63]!==me||e[64]!==we?(Ee=(0,$.jsxs)(ne,{children:[me,we]}),e[63]=me,e[64]=we,e[65]=Ee):Ee=e[65];let Ae;e[66]!==fe||e[67]!==X||e[68]!==Ee?(Ae=(0,$.jsx)(h,{open:fe,onOpenChange:X,children:Ee}),e[66]=fe,e[67]=X,e[68]=Ee,e[69]=Ae):Ae=e[69];let Me;return e[70]!==Y||e[71]!==Ae||e[72]!==I||e[73]!==R?(Me=(0,$.jsxs)(he,{title:`Encrypted devices`,icon:P,headerAction:I,children:[L,R,Y,Ae]}),e[70]=Y,e[71]=Ae,e[72]=I,e[73]=R,e[74]=Me):Me=e[74],Me}function Ne(e){return(0,$.jsxs)(`div`,{className:`contents`,children:[(0,$.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:e.label}),(0,$.jsx)(`dd`,{className:e.fingerprint?`min-w-0 font-mono text-xs break-all`:`min-w-0 text-xs break-all`,children:e.value})]},e.label)}function Pe(){M.refreshE2eeDevices({force:!0})}function Fe(){M.refreshE2eeDevices()}function Ie(e){return e.actionStatus}function Le(e){return e.e2eeDevicesStatus??`idle`}function Re(e){return e.e2eeDevices??[]}var ze=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function Be(e){return e===null||!Number.isFinite(e)?null:ze.format(new Date(e))}function Ve(){let e=(0,xe.c)(15),[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(0),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(!1),l=(0,Q.useRef)(0),u;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=()=>{n(null),i(0),o(``)},e[0]=u):u=e[0];let d=u,f;e[1]===t?.options?f=e[2]:(f=()=>{l.current+=1,M.cancelAccountAction(),t?.options?.onAbandoned?.(),c(!1),d()},e[1]=t?.options,e[2]=f);let p=f,m;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(m=async(e,t,r)=>{let a=l.current+=1;c(!1);let s=await t({});if(l.current===a){if(B(s)){o(``),i(0),n({action:e,run:t,options:r,inferred:s.inferredErrorCode===!0});return}s.status===`committed`&&r?.onCommitted?.()}},e[3]=m):m=e[3];let h=m,g;e[4]!==t||e[5]!==a||e[6]!==r?(g=async()=>{if(!t)return;let e=H(a);if(e.length===0)return;let n=l.current+=1,s=await t.run({totpCode:e});if(l.current===n){if(B(s)){let e=r+1;if(z(s,e)){i(e),o(``);return}c(!0),t.options?.onAbandoned?.(),d();return}s.status===`committed`&&t.options?.onCommitted?.(),d()}},e[4]=t,e[5]=a,e[6]=r,e[7]=g):g=e[7];let _=g,v;return e[8]!==p||e[9]!==t||e[10]!==a||e[11]!==r||e[12]!==s||e[13]!==_?(v={run:h,cancel:p,stepUp:t,stepUpAttempts:r,stepUpCode:a,stepUpUnresolved:s,setStepUpCode:o,submitStepUp:_},e[8]=p,e[9]=t,e[10]=a,e[11]=r,e[12]=s,e[13]=_,e[14]=v):v=e[14],v}function He(){let e=(0,xe.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],(0,Q.useEffect)(Ue,t)}function Ue(){return M.leaseRecoveryCodeDisplay()}function We(e){let t=(0,xe.c)(3),{busy:n,children:r}=e,i;return t[0]!==n||t[1]!==r?(i=n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(S,{className:`size-3.5`}),r]}):(0,$.jsx)($.Fragment,{children:r}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function Ge(){let e=(0,xe.c)(100),t=i(ut),o=i(lt),[s,c]=(0,Q.useState)(!1),l=r(ct),d=r(st),f=r(ot),p=r(at),m=r(it),h=r(rt),g=r(nt),_=r(tt),v=i(et),ee=i($e),[y,te]=(0,Q.useState)(!1),[ne,re]=(0,Q.useState)(null),b=(0,Q.useRef)(!1),x=Ve(),ie=x.run;He();let S=h!==`idle`,C;e[0]===m?C=e[1]:(C=de(m),e[0]=m,e[1]=C);let w=C,T;e[2]===f?.externalIdentities?T=e[3]:(T=f?.externalIdentities.find(Qe)??null,e[2]=f?.externalIdentities,e[3]=T);let E=T,D;e[4]===y?D=e[5]:(D=async()=>{if(!y){te(!0),re(null);try{await fe({intent:`link`,returnTo:`/account/security`,start:Ze,navigate:Xe})}catch(e){let t=e;re(t instanceof j?t.message:`GitHub connection is temporarily unavailable.`),te(!1)}}},e[4]=y,e[5]=D);let O=D,M;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(M=[],e[6]=M):M=e[6],(0,Q.useEffect)(Ye,M);let ae,oe;if(e[7]!==t||e[8]!==ie?(ae=()=>{if(t!==`authenticated`||b.current)return;b.current=!0;let e=new AbortController;return n.getPendingExternalIdentity(e.signal).then(e=>{if(e.status===`link`)return ie(`connect-github`,Je);e.status===`error`&&re(K(e.code))}).catch(qe),()=>e.abort()},oe=[t,ie],e[7]=t,e[8]=ie,e[9]=ae,e[10]=oe):(ae=e[9],oe=e[10]),(0,Q.useEffect)(ae,oe),t!==`authenticated`){let t;return e[11]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(ge,{children:(0,$.jsxs)(F,{variant:`warning`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`Not signed in`}),(0,$.jsx)(P,{children:`Sign in to the Hub to manage passkeys, two-factor authentication, and recovery codes.`})]})}),e[11]=t):t=e[11],t}let I;e[12]!==x.stepUp||e[13]!==x.stepUpUnresolved||e[14]!==_||e[15]!==g?(I=x.stepUpUnresolved?U:W(g,_,x.stepUp!==null),e[12]=x.stepUp,e[13]=x.stepUpUnresolved,e[14]=_,e[15]=g,e[16]=I):I=e[16];let L=I,R;e[17]!==x.stepUpUnresolved||e[18]!==_?(R=!x.stepUpUnresolved&&ue(_),e[17]=x.stepUpUnresolved,e[18]=_,e[19]=R):R=e[19];let z=R,le;e[20]!==l||e[21]!==d?(le=ce(l,d),e[20]=l,e[21]=d,e[22]=le):le=e[22];let B=le,V;e[23]!==L||e[24]!==z?(V=L?(0,$.jsxs)(F,{variant:z?`info`:`error`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:z?`Passkey needed`:`That did not work`}),(0,$.jsx)(P,{children:L})]}):null,e[23]=L,e[24]=z,e[25]=V):V=e[25];let H;e[26]===ne?H=e[27]:(H=ne?(0,$.jsxs)(F,{variant:`warning`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`GitHub connection did not complete`}),(0,$.jsx)(P,{children:ne})]}):null,e[26]=ne,e[27]=H);let G;e[28]!==f||e[29]!==p?(G=f===null&&p!==`stale`?(0,$.jsxs)(F,{variant:`info`,"aria-live":`polite`,children:[(0,$.jsx)(k,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`Checking account security`}),(0,$.jsx)(P,{children:`Reading which fallback sign-in methods are configured on this Hub.`})]}):null,e[28]=f,e[29]=p,e[30]=G):G=e[30];let q;e[31]!==S||e[32]!==f||e[33]!==p?(q=p===`stale`?(0,$.jsxs)(F,{variant:`warning`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:f===null?`Account security unavailable`:`Account security may be outdated`}),(0,$.jsx)(P,{children:f===null?`Ryco could not read the current password, authenticator, and email state.`:`These controls use the last state Ryco successfully read from the Hub.`}),(0,$.jsx)(se,{children:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:S,onClick:Ke,children:`Retry`})})]}):null,e[31]=S,e[32]=f,e[33]=p,e[34]=q):q=e[34];let J;e[35]!==S||e[36]!==B?(J=B?(0,$.jsxs)(F,{variant:B.variant,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:B.title}),(0,$.jsx)(P,{children:B.description}),(0,$.jsx)(se,{children:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:S,onClick:()=>c(!0),children:B.actionLabel})})]}):null,e[35]=S,e[36]=B,e[37]=J):J=e[37];let Y;e[38]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,$.jsx)(A,{"aria-hidden":!0,className:`size-3.5`}),e[38]=Y):Y=e[38];let X=o?.displayName??`Signed in`,Z;e[39]===o?Z=e[40]:(Z=o?`${o.role} · joined ${Be(o.createdAt)??`unknown`}`:null,e[39]=o,e[40]=Z);let pe;e[41]!==X||e[42]!==Z?(pe=(0,$.jsx)(he,{title:`Account`,icon:Y,children:(0,$.jsx)(_e,{title:X,description:`The Hub account these credentials belong to.`,status:Z})}),e[41]=X,e[42]=Z,e[43]=pe):pe=e[43];let me;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,$.jsx)(Me,{}),e[44]=me):me=e[44];let ve;e[45]!==h||e[46]!==S||e[47]!==y||e[48]!==E||e[49]!==w?.link||e[50]!==ie||e[51]!==O?(ve=E||w?.link?(0,$.jsx)(dt,{identity:E,actionsAvailable:w?.link===!0,busy:S||y,actionStatus:h,onConnect:()=>void O(),run:ie}):null,e[45]=h,e[46]=S,e[47]=y,e[48]=E,e[49]=w?.link,e[50]=ie,e[51]=O,e[52]=ve):ve=e[52];let ye=d===`loading`,be=d===`stale`,Se;e[53]!==x.cancel||e[54]!==x.run||e[55]!==h||e[56]!==s||e[57]!==S||e[58]!==l||e[59]!==ye||e[60]!==be?(Se=(0,$.jsx)(pt,{passkeys:l,loading:ye,stale:be,busy:S,actionStatus:h,addOpen:s,setAddOpen:c,run:x.run,cancel:x.cancel}),e[53]=x.cancel,e[54]=x.run,e[55]=h,e[56]=s,e[57]=S,e[58]=l,e[59]=ye,e[60]=be,e[61]=Se):Se=e[61];let Ce=f?.totpEnrolled??null,we;e[62]!==x.run||e[63]!==h||e[64]!==S||e[65]!==Ce||e[66]!==ee?(we=(0,$.jsx)(mt,{busy:S,actionStatus:h,enrollment:ee,enrolled:Ce,run:x.run}),e[62]=x.run,e[63]=h,e[64]=S,e[65]=Ce,e[66]=ee,e[67]=we):we=e[67];let Te;e[68]!==x.run||e[69]!==h||e[70]!==S||e[71]!==v?(Te=(0,$.jsx)(bt,{busy:S,actionStatus:h,recoveryCodes:v,run:x.run}),e[68]=x.run,e[69]=h,e[70]=S,e[71]=v,e[72]=Te):Te=e[72];let Ee;e[73]!==x.cancel||e[74]!==x.run||e[75]!==h||e[76]!==S||e[77]!==f?(Ee=(0,$.jsx)(_t,{busy:S,actionStatus:h,security:f,run:x.run,cancel:x.cancel}),e[73]=x.cancel,e[74]=x.run,e[75]=h,e[76]=S,e[77]=f,e[78]=Ee):Ee=e[78];let De;e[79]!==x.cancel||e[80]!==x.setStepUpCode||e[81]!==x.stepUp||e[82]!==x.stepUpAttempts||e[83]!==x.stepUpCode||e[84]!==x.submitStepUp||e[85]!==S?(De=(0,$.jsx)(Tt,{pending:x.stepUp,attempts:x.stepUpAttempts,code:x.stepUpCode,onCodeChange:x.setStepUpCode,onSubmit:x.submitStepUp,onCancel:x.cancel,busy:S}),e[79]=x.cancel,e[80]=x.setStepUpCode,e[81]=x.stepUp,e[82]=x.stepUpAttempts,e[83]=x.stepUpCode,e[84]=x.submitStepUp,e[85]=S,e[86]=De):De=e[86];let Oe;return e[87]!==H||e[88]!==G||e[89]!==q||e[90]!==J||e[91]!==pe||e[92]!==ve||e[93]!==Se||e[94]!==we||e[95]!==Te||e[96]!==Ee||e[97]!==De||e[98]!==V?(Oe=(0,$.jsxs)(ge,{children:[V,H,G,q,J,pe,me,ve,Se,we,Te,Ee,De]}),e[87]=H,e[88]=G,e[89]=q,e[90]=J,e[91]=pe,e[92]=ve,e[93]=Se,e[94]=we,e[95]=Te,e[96]=Ee,e[97]=De,e[98]=V,e[99]=Oe):Oe=e[99],Oe}function Ke(){M.refreshAccountSecurity({force:!0})}function qe(){}function Je(e){return M.finishBrowserExternalIdentityConnection(`github`,e)}function Ye(){M.refreshPasskeys(),M.refreshAccountSecurity(),M.refreshExternalIdentityConfiguration()}function Xe(e){return window.location.assign(e)}function Ze(e){return n.startExternalIdentityAuthorization(e)}function Qe(e){return e.provider===`github`}function $e(e){return e.totpEnrollment??null}function et(e){return e.recoveryCodes}function tt(e){return e.errorCode??null}function nt(e){return e.errorMessage}function rt(e){return e.actionStatus}function it(e){return e.externalIdentityConfiguration}function at(e){return e.securityStatus}function ot(e){return e.security}function st(e){return e.passkeysStatus}function ct(e){return e.passkeys}function lt(e){return e.account}function ut(e){return e.accountStatus}function dt(e){let t=(0,xe.c)(33),{identity:n,actionsAvailable:r,busy:i,actionStatus:o,onConnect:s,run:c}=e,[l,u]=(0,Q.useState)(!1),d=o===`connecting-external-identity`,f=o===`disconnecting-external-identity`,m;t[0]===c?m=t[1]:(m=async()=>{await c(`disconnect-github`,ft,{onCommitted:()=>u(!1)})},t[0]=c,t[1]=m);let _=m,ee;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,$.jsx)(C,{"aria-hidden":!0,className:`size-3.5`}),t[2]=ee):ee=t[2];let te=n?`GitHub · @${n.login}`:`GitHub`,re=n?`Use this GitHub identity to sign in to Ryco. Repository access remains separate.`:`Connect GitHub as another way to sign in. Ryco requests no repository access.`,b;t[3]===n?b=t[4]:(b=n?`Connected ${Be(n.connectedAt)??`at an unknown time`}${n.lastUsedAt===null?``:` · last used ${Be(n.lastUsedAt)??`at an unknown time`}`}`:null,t[3]=n,t[4]=b);let ie;t[5]!==r||t[6]!==i||t[7]!==d||t[8]!==f||t[9]!==n||t[10]!==s?(ie=r?n?(0,$.jsx)(a,{size:`sm`,variant:`outline`,disabled:i,onClick:()=>u(!0),children:(0,$.jsx)(We,{busy:f,children:`Disconnect`})}):(0,$.jsx)(a,{size:`sm`,variant:`outline`,disabled:i,onClick:s,children:(0,$.jsx)(We,{busy:d,children:`Connect GitHub`})}):null,t[5]=r,t[6]=i,t[7]=d,t[8]=f,t[9]=n,t[10]=s,t[11]=ie):ie=t[11];let S;t[12]!==te||t[13]!==re||t[14]!==b||t[15]!==ie?(S=(0,$.jsx)(_e,{title:te,description:re,status:b,control:ie}),t[12]=te,t[13]=re,t[14]=b,t[15]=ie,t[16]=S):S=t[16];let w;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Disconnect GitHub?`}),(0,$.jsx)(p,{children:`You will no longer be able to sign in with GitHub. Ryco refuses this change if GitHub is your only remaining sign-in method.`})]}),t[17]=w):w=t[17];let T;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Cancel`}),t[18]=T):T=t[18];let E;t[19]===_?E=t[20]:(E=()=>void _(),t[19]=_,t[20]=E);let D;t[21]===f?D=t[22]:(D=(0,$.jsx)(We,{busy:f,children:`Disconnect GitHub`}),t[21]=f,t[22]=D);let O;t[23]!==i||t[24]!==E||t[25]!==D?(O=(0,$.jsxs)(ne,{children:[w,(0,$.jsxs)(y,{children:[T,(0,$.jsx)(a,{disabled:i,onClick:E,children:D})]})]}),t[23]=i,t[24]=E,t[25]=D,t[26]=O):O=t[26];let k;t[27]!==l||t[28]!==O?(k=(0,$.jsx)(h,{open:l,onOpenChange:u,children:O}),t[27]=l,t[28]=O,t[29]=k):k=t[29];let A;return t[30]!==k||t[31]!==S?(A=(0,$.jsxs)(he,{title:`Connected accounts`,icon:ee,children:[S,k]}),t[30]=k,t[31]=S,t[32]=A):A=t[32],A}function ft(e){return M.disconnectExternalIdentity(`github`,e)}function pt({passkeys:e,loading:t,stale:n,busy:r,actionStatus:i,addOpen:o,setAddOpen:s,run:c,cancel:l}){let[u,d]=(0,Q.useState)(``),[S,C]=(0,Q.useState)(null),[w,O]=(0,Q.useState)(null),k=i===`adding-passkey`,A=i===`revoking-passkey`,j=q(e),N=I(e),se=V(e),P=(0,Q.useCallback)(()=>{d(``),s(!1)},[s]),F=async e=>{e.preventDefault();let t=G(u);await c(`add-passkey`,e=>M.addPasskey({passkeyLabel:t,...e}),{onCommitted:P,onAbandoned:P})},L=async()=>{let e=S;if(e){C(null),O(e.id);try{await M.revokePasskey(e.id)}finally{O(null)}}};return(0,$.jsxs)(he,{title:`Passkeys`,icon:(0,$.jsx)(D,{"aria-hidden":!0,className:`size-3.5`}),headerAction:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:r,onClick:()=>s(!0),children:`Add passkey`}),children:[(0,$.jsx)(_e,{title:`Passkeys on this account`,description:`A passkey is the strongest way in. Add one for every device you sign in from, and keep at least two so losing a device does not lock you out.`,status:n?`This list could not be refreshed and may be out of date.`:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{children:`${String(j.length)} usable ${j.length===1?`passkey`:`passkeys`}`}),N>0?(0,$.jsx)(`span`,{children:` · ${String(N)} synced to a password manager`}):null]})}),t&&e.length===0?(0,$.jsx)(_e,{title:`Loading passkeys…`,description:`Reading the credentials on file.`}):null,!t&&e.length===0?(0,$.jsx)(_e,{title:`No passkeys yet`,description:`Add one now — without a passkey you can only get back in through a fallback credential.`}):null,se.map(e=>{let t=X(e),n=R(e),i=Be(e.createdAt),o=Be(e.lastUsedAt);return(0,$.jsx)(_e,{title:(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Z(e),t?(0,$.jsx)(T,{variant:`error`,size:`sm`,children:`Revoked`}):null]}),description:t?`Revoked${e.revocationReasonCode?` — ${e.revocationReasonCode}`:``}. This credential can no longer sign in.`:n??`The Hub did not report whether this credential is backed up.`,status:[i?`Added ${i}`:null,o?`Last used ${o}`:`Never used`].filter(e=>e!==null).join(` · `),control:t?null:(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Revoke ${Z(e)}`,disabled:r,onClick:()=>C(e),children:(0,$.jsxs)(We,{busy:A&&w===e.id,children:[(0,$.jsx)(E,{"aria-hidden":!0}),`Revoke`]})})},e.id)}),(0,$.jsx)(f,{open:o,onOpenChange:e=>{if(e){s(!0);return}r||P()},children:(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:e=>void F(e),children:[(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Add a passkey`}),(0,$.jsx)(ie,{children:`Your browser will ask you to create a passkey for this account. Adding one replaces the current Hub session with a fresh one.`})]}),(0,$.jsxs)(ee,{className:`space-y-3`,children:[(0,$.jsx)(b,{htmlFor:`account-passkey-label`,children:`Name (optional)`}),(0,$.jsx)(oe,{id:`account-passkey-label`,value:u,autoComplete:`off`,placeholder:`Work laptop`,disabled:k,className:ae,onChange:e=>d(e.target.value)})]}),(0,$.jsxs)(m,{children:[(0,$.jsx)(a,{variant:`outline`,onClick:()=>{l(),P()},children:`Cancel`}),(0,$.jsx)(a,{type:`submit`,disabled:r,children:(0,$.jsx)(We,{busy:k,children:`Create passkey`})})]})]})})}),(0,$.jsx)(h,{open:S!==null,onOpenChange:e=>{r||e||C(null)},children:(0,$.jsxs)(ne,{children:[(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Revoke this passkey?`}),(0,$.jsxs)(p,{children:[j.length===1?`This is the only usable passkey on this account. `:``,S?Z(S):``,` will stop working immediately, on every device it is stored on. This cannot be undone — you would have to enrol the device again.`]})]}),(0,$.jsxs)(y,{children:[(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it`}),(0,$.jsx)(a,{variant:`destructive`,disabled:r,onClick:()=>void L(),children:`Revoke passkey`})]})]})})]})}function mt(e){let t=(0,xe.c)(61),{busy:n,actionStatus:r,enrollment:i,enrolled:o,run:s}=e,[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(!1),S=r===`enrolling-totp`,C=r===`confirming-totp`,w=r===`revoking-totp`,T;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>{l(``),M.dismissTotpEnrollment()},t[0]=T):T=t[0];let E=T,D;t[1]===c?D=t[2]:(D=async e=>{e.preventDefault();let t=H(c);t.length!==0&&(await M.confirmTotpEnrollment({code:t}),l(``))},t[1]=c,t[2]=D);let O=D,A;t[3]===s?A=t[4]:(A=async()=>{d(!1),await s(`revoke-totp`,gt)},t[3]=s,t[4]=A);let j=A,N;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(k,{"aria-hidden":!0,className:`size-3.5`}),t[5]=N):N=t[5];let se=o===null?`Checking current state…`:o?`On`:`Off`,P;t[6]!==n||t[7]!==o||t[8]!==S||t[9]!==w?(P=o===null?null:o?(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Turn off two-factor authentication`,disabled:n,onClick:()=>d(!0),children:(0,$.jsx)(We,{busy:w,children:`Turn off`})}):(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:n,onClick:ht,children:(0,$.jsx)(We,{busy:S,children:`Set up`})}),t[6]=n,t[7]=o,t[8]=S,t[9]=w,t[10]=P):P=t[10];let F;t[11]!==se||t[12]!==P?(F=(0,$.jsx)(_e,{title:`Authenticator app`,description:`A six-digit code from an authenticator app, required whenever you change credentials from a session that was not started with a passkey. Signing in with a passkey never asks for one.`,status:se,control:P}),t[11]=se,t[12]=P,t[13]=F):F=t[13];let I=i!==null,L;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>{e||E()},t[14]=L):L=t[14];let R;t[15]===O?R=t[16]:(R=e=>void O(e),t[15]=O,t[16]=R);let ce;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Set up two-factor authentication`}),(0,$.jsx)(ie,{children:`Scan this with your authenticator app, then enter the code it shows. This is the only time the key is displayed.`})]}),t[17]=ce):ce=t[17];let z;t[18]===i?z=t[19]:(z=i?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex justify-center rounded-xl border border-border bg-white p-4`,children:(0,$.jsx)(ve,{value:i.provisioningUri,size:168,level:`M`,marginSize:1,title:`Two-factor setup code`})}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Can't scan? Enter this key manually:`}),(0,$.jsx)(`p`,{"aria-label":`Two-factor setup key`,className:`rounded-lg border border-border bg-background px-3 py-2 font-mono text-sm break-all`,children:i.secretBase32})]})]}):null,t[18]=i,t[19]=z);let le;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,$.jsx)(b,{htmlFor:`account-totp-confirm`,children:`Code from your app`}),t[20]=le):le=t[20];let ue;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(ue=e=>l(H(e.target.value)),t[21]=ue):ue=t[21];let B;t[22]!==c||t[23]!==C?(B=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[le,(0,$.jsx)(oe,{id:`account-totp-confirm`,value:c,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:16,disabled:C,className:ae,onChange:ue})]}),t[22]=c,t[23]=C,t[24]=B):B=t[24];let V;t[25]!==z||t[26]!==B?(V=(0,$.jsxs)(ee,{className:`space-y-4`,children:[z,B]}),t[25]=z,t[26]=B,t[27]=V):V=t[27];let U;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,$.jsx)(a,{variant:`outline`,onClick:E,children:`Cancel`}),t[28]=U):U=t[28];let W;t[29]!==n||t[30]!==c?(W=n||!J(c),t[29]=n,t[30]=c,t[31]=W):W=t[31];let G;t[32]===C?G=t[33]:(G=(0,$.jsx)(We,{busy:C,children:`Turn on`}),t[32]=C,t[33]=G);let K;t[34]!==W||t[35]!==G?(K=(0,$.jsxs)(m,{children:[U,(0,$.jsx)(a,{type:`submit`,disabled:W,children:G})]}),t[34]=W,t[35]=G,t[36]=K):K=t[36];let q;t[37]!==R||t[38]!==V||t[39]!==K?(q=(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:R,children:[ce,V,K]})}),t[37]=R,t[38]=V,t[39]=K,t[40]=q):q=t[40];let de;t[41]!==q||t[42]!==I?(de=(0,$.jsx)(f,{open:I,onOpenChange:L,children:q}),t[41]=q,t[42]=I,t[43]=de):de=t[43];let Y;t[44]===n?Y=t[45]:(Y=e=>{n||d(e)},t[44]=n,t[45]=Y);let fe;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Remove two-factor authentication?`}),(0,$.jsx)(p,{children:`Password, recovery-code, and emailed-link sign-ins will no longer need a code from your authenticator app. You can set it up again at any time.`})]}),t[46]=fe):fe=t[46];let X;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it on`}),t[47]=X):X=t[47];let Z;t[48]===j?Z=t[49]:(Z=()=>void j(),t[48]=j,t[49]=Z);let pe;t[50]!==n||t[51]!==Z?(pe=(0,$.jsxs)(ne,{children:[fe,(0,$.jsxs)(y,{children:[X,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:Z,children:`Remove two-factor`})]})]}),t[50]=n,t[51]=Z,t[52]=pe):pe=t[52];let me;t[53]!==u||t[54]!==Y||t[55]!==pe?(me=(0,$.jsx)(h,{open:u,onOpenChange:Y,children:pe}),t[53]=u,t[54]=Y,t[55]=pe,t[56]=me):me=t[56];let ge;return t[57]!==de||t[58]!==me||t[59]!==F?(ge=(0,$.jsxs)(he,{title:`Two-factor authentication`,icon:N,children:[F,de,me]}),t[57]=de,t[58]=me,t[59]=F,t[60]=ge):ge=t[60],ge}function ht(){M.beginTotpEnrollment()}function gt(e){return M.revokeTotp(e)}function _t(e){let t=(0,xe.c)(86),{busy:n,actionStatus:r,security:i,run:o,cancel:s}=e,[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(``),[S,C]=(0,Q.useState)(``),[w,T]=(0,Q.useState)(!1),[E,O]=(0,Q.useState)(!1),k=r===`setting-password`,A=r===`removing-password`,j;t[0]!==S||t[1]!==u?(j=me(u,S),t[0]=S,t[1]=u,t[2]=j):j=t[2];let N=j,se;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>{d(``),C(``),T(!1)},t[3]=se):se=t[3];let P=se,F;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>{P(),l(!1)},t[4]=F):F=t[4];let I=F,L;t[5]===s?L=t[6]:(L=()=>{s(),I()},t[5]=s,t[6]=L);let R=L,ce;t[7]!==N||t[8]!==u||t[9]!==o?(ce=async e=>{e.preventDefault(),T(!0),!N&&await o(`set-password`,e=>M.setPassword({password:u,...e}),{onCommitted:I,onAbandoned:I})},t[7]=N,t[8]=u,t[9]=o,t[10]=ce):ce=t[10];let z=ce,le;t[11]===o?le=t[12]:(le=async()=>{O(!1),await o(`remove-password`,vt)},t[11]=o,t[12]=le);let ue=le,B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,$.jsx)(D,{"aria-hidden":!0,className:`size-3.5`}),t[13]=B):B=t[13];let V=i===null?`Checking current state…`:i.passwordConfigured?`Set`:`Not set`,H;t[14]!==n||t[15]!==A||t[16]!==i||t[17]!==k?(H=i===null?null:(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:n,onClick:()=>l(!0),children:(0,$.jsx)(We,{busy:k,children:i.passwordConfigured?`Change`:`Set password`})}),i.passwordConfigured?(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Delete the fallback password`,disabled:n,onClick:()=>O(!0),children:(0,$.jsx)(We,{busy:A,children:`Remove`})}):null]}),t[14]=n,t[15]=A,t[16]=i,t[17]=k,t[18]=H):H=t[18];let U;t[19]!==V||t[20]!==H?(U=(0,$.jsx)(_e,{title:`Fallback password`,description:`A password is a fallback, not an equal of a passkey: it can be phished and reused, and a session started with one has to prove itself again before changing credentials. Keep a passkey as your normal way in.`,status:V,control:H}),t[19]=V,t[20]=H,t[21]=U):U=t[21];let W=i===null?void 0:i.email,G=i?.emailDeliveryConfigured,K;t[22]!==r||t[23]!==n||t[24]!==o||t[25]!==W||t[26]!==G?(K=(0,$.jsx)(yt,{busy:n,actionStatus:r,email:W,deliveryConfigured:G,run:o}),t[22]=r,t[23]=n,t[24]=o,t[25]=W,t[26]=G,t[27]=K):K=t[27];let q;t[28]===R?q=t[29]:(q=e=>{if(e){l(!0);return}R()},t[28]=R,t[29]=q);let J;t[30]===z?J=t[31]:(J=e=>void z(e),t[30]=z,t[31]=J);let de;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(de=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Set a fallback password`}),(0,$.jsx)(ie,{children:`This replaces any password already on the account. The Hub rejects passwords that have appeared in a known breach.`})]}),t[32]=de):de=t[32];let Y;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,$.jsx)(b,{htmlFor:`account-password`,children:`New password`}),t[33]=Y):Y=t[33];let fe;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(fe=e=>d(e.target.value),t[34]=fe):fe=t[34];let X;t[35]!==u||t[36]!==k?(X=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[Y,(0,$.jsx)(oe,{id:`account-password`,type:`password`,value:u,autoComplete:`new-password`,maxLength:256,disabled:k,className:ae,onChange:fe})]}),t[35]=u,t[36]=k,t[37]=X):X=t[37];let Z;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,$.jsx)(b,{htmlFor:`account-password-confirm`,children:`Confirm password`}),t[38]=Z):Z=t[38];let pe;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(pe=e=>C(e.target.value),t[39]=pe):pe=t[39];let ge;t[40]!==S||t[41]!==k?(ge=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[Z,(0,$.jsx)(oe,{id:`account-password-confirm`,type:`password`,value:S,autoComplete:`new-password`,maxLength:256,disabled:k,className:ae,onChange:pe})]}),t[40]=S,t[41]=k,t[42]=ge):ge=t[42];let ve;t[43]!==N||t[44]!==w?(ve=w&&N?(0,$.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive-foreground`,children:N}):null,t[43]=N,t[44]=w,t[45]=ve):ve=t[45];let ye;t[46]!==X||t[47]!==ge||t[48]!==ve?(ye=(0,$.jsxs)(ee,{className:`space-y-3`,children:[X,ge,ve]}),t[46]=X,t[47]=ge,t[48]=ve,t[49]=ye):ye=t[49];let be;t[50]===R?be=t[51]:(be=(0,$.jsx)(a,{variant:`outline`,onClick:R,children:`Cancel`}),t[50]=R,t[51]=be);let Se;t[52]===k?Se=t[53]:(Se=(0,$.jsx)(We,{busy:k,children:`Save password`}),t[52]=k,t[53]=Se);let Ce;t[54]!==n||t[55]!==Se?(Ce=(0,$.jsx)(a,{type:`submit`,disabled:n,children:Se}),t[54]=n,t[55]=Se,t[56]=Ce):Ce=t[56];let we;t[57]!==be||t[58]!==Ce?(we=(0,$.jsxs)(m,{children:[be,Ce]}),t[57]=be,t[58]=Ce,t[59]=we):we=t[59];let Te;t[60]!==J||t[61]!==ye||t[62]!==we?(Te=(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:J,children:[de,ye,we]})}),t[60]=J,t[61]=ye,t[62]=we,t[63]=Te):Te=t[63];let Ee;t[64]!==c||t[65]!==q||t[66]!==Te?(Ee=(0,$.jsx)(f,{open:c,onOpenChange:q,children:Te}),t[64]=c,t[65]=q,t[66]=Te,t[67]=Ee):Ee=t[67];let De;t[68]===n?De=t[69]:(De=e=>{n||O(e)},t[68]=n,t[69]=De);let Oe;t[70]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Remove the password?`}),(0,$.jsx)(p,{children:`You will no longer be able to sign in with a password. Make sure you still have a passkey, or recovery codes you have saved.`})]}),t[70]=Oe):Oe=t[70];let ke;t[71]===Symbol.for(`react.memo_cache_sentinel`)?(ke=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it`}),t[71]=ke):ke=t[71];let Ae;t[72]===ue?Ae=t[73]:(Ae=()=>void ue(),t[72]=ue,t[73]=Ae);let je;t[74]!==n||t[75]!==Ae?(je=(0,$.jsxs)(ne,{children:[Oe,(0,$.jsxs)(y,{children:[ke,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:Ae,children:`Remove password`})]})]}),t[74]=n,t[75]=Ae,t[76]=je):je=t[76];let Me;t[77]!==E||t[78]!==De||t[79]!==je?(Me=(0,$.jsx)(h,{open:E,onOpenChange:De,children:je}),t[77]=E,t[78]=De,t[79]=je,t[80]=Me):Me=t[80];let Ne;return t[81]!==U||t[82]!==K||t[83]!==Ee||t[84]!==Me?(Ne=(0,$.jsxs)(he,{title:`Fallback sign-in`,icon:B,children:[U,K,Ee,Me]}),t[81]=U,t[82]=K,t[83]=Ee,t[84]=Me,t[85]=Ne):Ne=t[85],Ne}function vt(e){return M.removePassword(e)}function yt(e){let t=(0,xe.c)(25),{busy:n,actionStatus:r,email:i,deliveryConfigured:o,run:s}=e,[c,l]=(0,Q.useState)(``),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(!1),h=r===`requesting-email-verification`,g;t[0]===c?g=t[1]:(g=Y(c),t[0]=c,t[1]=g);let _=g,v;t[2]!==c||t[3]!==_||t[4]!==s?(v=async e=>{e.preventDefault(),f(!0),m(!1),!_&&await s(`request-email-verification`,e=>M.requestEmailVerification({email:c.trim(),...e}),{onCommitted:()=>{m(!0),l(``),f(!1)}})},t[2]=c,t[3]=_,t[4]=s,t[5]=v):v=t[5];let ee=v,y;t[6]===o?y=t[7]:(y=o===!1?(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 pt-3.5 sm:px-5`,children:(0,$.jsxs)(F,{variant:`warning`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`No mail will arrive yet`}),(0,$.jsx)(P,{children:`This Hub has no mail transport configured, so verification messages are generated and discarded. The request below will be accepted and nothing will be delivered until an operator wires one up. Do not rely on email as your way back into the account.`})]})}):null,t[6]=o,t[7]=y);let te=o?`Used for account recovery after verification. The Hub answers the same way whether or not the address is already known, so this never confirms who owns it.`:`Used for account recovery once mail delivery is switched on. The Hub answers the same way whether or not the address is already known, so this never confirms who owns it.`,ne=i===void 0?`Checking current state…`:i===null?`Not set`:`${i.verified?`Verified`:`Verification pending`} · ${i.address}`,re;t[8]!==p||t[9]!==n||t[10]!==i||t[11]!==o||t[12]!==c||t[13]!==_||t[14]!==h||t[15]!==ee||t[16]!==d?(re=i===void 0?null:(0,$.jsxs)(`form`,{className:`pt-3 pb-3.5`,onSubmit:e=>void ee(e),children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,$.jsx)(oe,{"aria-label":`Email address`,type:`email`,value:c,autoComplete:`email`,placeholder:`you@example.com`,maxLength:254,disabled:h,className:ae,onChange:e=>{l(e.target.value),m(!1)}}),(0,$.jsx)(a,{type:`submit`,size:`sm`,variant:`outline`,disabled:n,className:`shrink-0`,children:(0,$.jsx)(We,{busy:h,children:i===null?`Send verification`:i.verified?`Change email`:`Resend or change`})})]}),d&&_?(0,$.jsx)(`p`,{role:`alert`,className:`pt-2 text-xs text-destructive-foreground`,children:_}):null,p?(0,$.jsx)(`p`,{role:`status`,className:`pt-2 text-xs text-muted-foreground`,children:o?`Verification email requested. Check your inbox and spam folder; delivery may take a moment.`:`Request accepted by the Hub. No message will be delivered until a mail transport is configured.`}):null]}),t[8]=p,t[9]=n,t[10]=i,t[11]=o,t[12]=c,t[13]=_,t[14]=h,t[15]=ee,t[16]=d,t[17]=re):re=t[17];let b;t[18]!==te||t[19]!==ne||t[20]!==re?(b=(0,$.jsx)(_e,{title:`Recovery email`,description:te,status:ne,children:re}),t[18]=te,t[19]=ne,t[20]=re,t[21]=b):b=t[21];let x;return t[22]!==y||t[23]!==b?(x=(0,$.jsxs)($.Fragment,{children:[y,b]}),t[22]=y,t[23]=b,t[24]=x):x=t[24],x}function bt(e){let t=(0,xe.c)(52),{busy:n,actionStatus:r,recoveryCodes:i,run:s}=e,[u,d]=(0,Q.useState)(!1),b=r===`regenerating-recovery-codes`,{copyToClipboard:S,isCopied:C}=o(),w;t[0]===s?w=t[1]:(w=async()=>{d(!1),await s(`regenerate-recovery-codes`,wt)},t[0]=s,t[1]=w);let T=w,E;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(O,{"aria-hidden":!0,className:`size-3.5`}),t[2]=E):E=t[2];let D;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(D=()=>d(!0),t[3]=D):D=t[3];let k;t[4]===b?k=t[5]:(k=(0,$.jsx)(We,{busy:b,children:`Generate new codes`}),t[4]=b,t[5]=k);let A;t[6]!==n||t[7]!==k?(A=(0,$.jsx)(_e,{title:`One-time recovery codes`,description:`Single-use codes that get you back in when you have lost every passkey. They are a last resort, not a substitute for one — anyone holding a code can sign in as you.`,status:`Ryco shows them once and never writes them to browser storage.`,control:(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,disabled:n,onClick:D,children:k})}),t[6]=n,t[7]=k,t[8]=A):A=t[8];let j;t[9]===n?j=t[10]:(j=e=>{n||d(e)},t[9]=n,t[10]=j);let M;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Replace your recovery codes?`}),(0,$.jsx)(p,{children:`Every code you have already saved stops working immediately. You will get a new set, shown once — if you lose them you will have to generate another set from a session you can still sign in to.`})]}),t[11]=M):M=t[11];let ae;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Cancel`}),t[12]=ae):ae=t[12];let oe;t[13]===T?oe=t[14]:(oe=()=>void T(),t[13]=T,t[14]=oe);let N;t[15]!==n||t[16]!==oe?(N=(0,$.jsxs)(ne,{children:[M,(0,$.jsxs)(y,{children:[ae,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:oe,children:`Replace codes`})]})]}),t[15]=n,t[16]=oe,t[17]=N):N=t[17];let se;t[18]!==u||t[19]!==N||t[20]!==j?(se=(0,$.jsx)(h,{open:u,onOpenChange:j,children:N}),t[18]=u,t[19]=N,t[20]=j,t[21]=se):se=t[21];let P=i.length>0,F;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,$.jsx)(_,{children:`Save your recovery codes`}),t[22]=F):F=t[22];let I=String(i.length),L;t[23]===I?L=t[24]:(L=(0,$.jsxs)(te,{children:[F,(0,$.jsxs)(ie,{children:[`Save all `,I,` codes — they are shown once and cannot be retrieved later. Store them somewhere only you can reach — a password manager, or paper somewhere safe.`]})]}),t[23]=I,t[24]=L);let R;t[25]===i?R=t[26]:(R=i.map(St),t[25]=i,t[26]=R);let ce;t[27]===R?ce=t[28]:(ce=(0,$.jsx)(ee,{children:(0,$.jsx)(`ul`,{"aria-label":`Recovery codes`,className:`grid gap-2 rounded-xl border border-border bg-background p-4 font-mono text-sm break-all sm:grid-cols-2`,children:R})}),t[27]=R,t[28]=ce);let z;t[29]!==S||t[30]!==i?(z=()=>S(le(i),void 0),t[29]=S,t[30]=i,t[31]=z):z=t[31];let ue;t[32]===C?ue=t[33]:(ue=C?(0,$.jsx)(l,{"aria-hidden":!0}):(0,$.jsx)(c,{"aria-hidden":!0}),t[32]=C,t[33]=ue);let B=C?`Copied`:`Copy codes`,V;t[34]!==z||t[35]!==ue||t[36]!==B?(V=(0,$.jsxs)(a,{variant:`outline`,onClick:z,children:[ue,B]}),t[34]=z,t[35]=ue,t[36]=B,t[37]=V):V=t[37];let H;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,$.jsx)(a,{onClick:xt,children:`I saved the codes`}),t[38]=H):H=t[38];let U;t[39]===V?U=t[40]:(U=(0,$.jsxs)(m,{children:[V,H]}),t[39]=V,t[40]=U);let W;t[41]!==L||t[42]!==ce||t[43]!==U?(W=(0,$.jsxs)(re,{className:`max-w-md`,showCloseButton:!1,children:[L,ce,U]}),t[41]=L,t[42]=ce,t[43]=U,t[44]=W):W=t[44];let G;t[45]!==P||t[46]!==W?(G=(0,$.jsx)(f,{open:P,disablePointerDismissal:!0,onOpenChange:Ct,children:W}),t[45]=P,t[46]=W,t[47]=G):G=t[47];let K;return t[48]!==se||t[49]!==G||t[50]!==A?(K=(0,$.jsxs)(he,{title:`Recovery codes`,icon:E,children:[A,se,G]}),t[48]=se,t[49]=G,t[50]=A,t[51]=K):K=t[51],K}function xt(){return M.dismissRecoveryCodes()}function St(e){return(0,$.jsx)(`li`,{children:e},e)}function Ct(e,t){e||t.cancel()}function wt(e){return M.regenerateRecoveryCodes(e)}function Tt(e){let t=(0,xe.c)(45),{pending:n,attempts:r,code:i,onCodeChange:o,onSubmit:s,onCancel:c,busy:l}=e,u=n!==null,d;t[0]===c?d=t[1]:(d=e=>{e||c()},t[0]=c,t[1]=d);let p;t[2]===s?p=t[3]:(p=e=>{e.preventDefault(),s()},t[2]=s,t[3]=p);let h;t[4]===n?h=t[5]:(h=n?L(n.action):``,t[4]=n,t[5]=h);let g;t[6]===h?g=t[7]:(g=(0,$.jsx)(_,{children:h}),t[6]=h,t[7]=g);let v=n?.inferred??!1,y;t[8]!==r||t[9]!==v?(y=pe(r,v),t[8]=r,t[9]=v,t[10]=y):y=t[10];let ne;t[11]===y?ne=t[12]:(ne=(0,$.jsx)(ie,{children:y}),t[11]=y,t[12]=ne);let x;t[13]!==g||t[14]!==ne?(x=(0,$.jsxs)(te,{children:[g,ne]}),t[13]=g,t[14]=ne,t[15]=x):x=t[15];let S;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(b,{htmlFor:`account-step-up-code`,children:`Authenticator code`}),t[16]=S):S=t[16];let C;t[17]===o?C=t[18]:(C=e=>o(H(e.target.value)),t[17]=o,t[18]=C);let w;t[19]!==l||t[20]!==i||t[21]!==C?(w=(0,$.jsxs)(ee,{className:`space-y-2`,children:[S,(0,$.jsx)(oe,{id:`account-step-up-code`,value:i,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:16,disabled:l,className:ae,onChange:C})]}),t[19]=l,t[20]=i,t[21]=C,t[22]=w):w=t[22];let T;t[23]===c?T=t[24]:(T=(0,$.jsx)(a,{variant:`outline`,onClick:c,children:`Cancel`}),t[23]=c,t[24]=T);let E;t[25]!==l||t[26]!==i?(E=l||!J(i),t[25]=l,t[26]=i,t[27]=E):E=t[27];let D;t[28]===l?D=t[29]:(D=(0,$.jsx)(We,{busy:l,children:`Confirm code`}),t[28]=l,t[29]=D);let O;t[30]!==E||t[31]!==D?(O=(0,$.jsx)(a,{type:`submit`,disabled:E,children:D}),t[30]=E,t[31]=D,t[32]=O):O=t[32];let k;t[33]!==T||t[34]!==O?(k=(0,$.jsxs)(m,{children:[T,O]}),t[33]=T,t[34]=O,t[35]=k):k=t[35];let A;t[36]!==w||t[37]!==k||t[38]!==p||t[39]!==x?(A=(0,$.jsx)(re,{className:`max-w-sm`,children:(0,$.jsxs)(`form`,{onSubmit:p,children:[x,w,k]})}),t[36]=w,t[37]=k,t[38]=p,t[39]=x,t[40]=A):A=t[40];let j;return t[41]!==u||t[42]!==A||t[43]!==d?(j=(0,$.jsx)(f,{open:u,onOpenChange:d,children:A}),t[41]=u,t[42]=A,t[43]=d,t[44]=j):j=t[44],j}export{Ge as AccountSettingsPanel};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import"./src-DHNjfMxR.js";import{$l as t,I as n,N as r,P as i,Qr as a,Zr as o,ho as s,lo as c,mo as l,oo as u}from"./runtime-OM-uAtaj.js";import{t as d}from"./react-CwJFpaho.js";import{Gt as f,J as p,Jt as m,K as h,Q as g,Qt as _,X as v,Xt as ee,Y as y,Yt as te,Z as ne,Zt as re,l as b,q as x,qt as ie,wt as S,xn as C}from"./switch-D9inWKdd.js";import{t as w}from"./compiler-runtime-C4g8XhC5.js";import{t as T}from"./badge-BswOCwph.js";import{J as E}from"./ContextHandoffEndpointLabel-BzI4Wi1i.js";import{t as D}from"./key-round-CvyrSjb2.js";import{t as O}from"./refresh-cw-K_hU8_ld.js";import{t as k}from"./shield-check-CdFhWT_o.js";import{t as A}from"./user-round-C-U7TZKG.js";import{_ as j,o as M}from"./authorization-BugIGt5e.js";import{n as ae,t as oe}from"./input-CzU08wbL.js";import{i as N,n as se,r as P,t as F}from"./alert-CwrDisFU.js";import{C as I,S as L,_ as R,a as ce,b as z,c as le,d as ue,f as B,g as V,h as H,i as U,l as W,m as G,n as K,o as q,p as J,r as de,s as Y,t as fe,u as X,v as Z,x as pe,y as me}from"./ExternalIdentityWeb.logic-DsTJQkg-.js";import{i as he,n as ge,r as _e}from"./settingsLayout-BbjDM-p0.js";import{t as ve}from"./qr-code-BFO8lV1M.js";var ye={name:`monitor-smartphone`,size:24,node:[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]};ye.node;var be=s(ye),Q=e(d(),1),xe=w(),Se=`Signed-in native apps use these device keys to establish encrypted connections automatically. The Hub authorizes account-trusted connections, so this does not protect against a malicious Hub; independent node verification remains the stronger option.`,Ce={darwin:`macOS`,linux:`Linux`,windows:`Windows`,ios:`iPhone or iPad`,android:`Android`},we={"secure-enclave":`Secure Enclave`,strongbox:`StrongBox`,tee:`Hardware-backed TEE`,tpm:`TPM`,"hardware-backed":`Hardware backed`,unavailable:`Unavailable`};function Te(e){return Ce[e.platform]}function Ee(e){return`${we[e.reportedKeyBacking]} · reported by device`}function De(e){switch(e.status){case`active`:return`Active`;case`revoked`:return`Revoked`;case`superseded`:return`Superseded`}}function Oe(e){let t=e.trim();return t.length>0&&t.length<=100?t:null}function ke(e,t){return[{label:`Enrollment`,value:e.enrollmentId},{label:`Identity fingerprint`,value:e.identityFingerprint,fingerprint:!0},{label:`Agreement fingerprint`,value:e.agreementFingerprint,fingerprint:!0},{label:`Key backing`,value:Ee(e)},{label:`First enrolled`,value:t(e.createdAt)},{label:`Last used`,value:e.lastUsedAt===null?`Not used yet`:t(e.lastUsedAt)},...e.revokedAt===null?[]:[{label:`Revoked`,value:t(e.revokedAt)}]]}var $=t(),Ae=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function je(e){return Ae.format(new Date(e))}function Me(){let e=(0,xe.c)(75),t=r(Re),n=r(Le),i=r(Ie),[o,s]=(0,Q.useState)(null),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(null),C=i!==`idle`,w=i===`renaming-e2ee-device`,E=i===`revoking-e2ee-device`,D;e[0]===c?D=e[1]:(D=Oe(c),e[0]=c,e[1]=D);let O=D,k;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(k=[],e[2]=k):k=e[2],(0,Q.useEffect)(Fe,k);let A;e[3]!==O||e[4]!==o?(A=async()=>{o&&O!==null&&(await M.renameE2eeDevice(o.enrollmentId,{expectedEnrollmentRevision:o.enrollmentRevision,deviceLabel:O})).status===`committed`&&(s(null),l(``))},e[3]=O,e[4]=o,e[5]=A):A=e[5];let j=A,N;e[6]===u?N=e[7]:(N=async()=>{u&&(await M.revokeE2eeDevice(u.enrollmentId,{expectedEnrollmentRevision:u.enrollmentRevision,reasonCode:`owner_requested`})).status===`committed`&&d(null)},e[6]=u,e[7]=N);let se=N,P;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,$.jsx)(be,{"aria-hidden":!0,className:`size-3.5`}),e[8]=P):P=e[8];let F=C||n===`loading`,I;e[9]===F?I=e[10]:(I=(0,$.jsx)(a,{size:`xs`,variant:`ghost`,disabled:F,onClick:Pe,children:`Refresh`}),e[9]=F,e[10]=I);let L;e[11]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,$.jsx)(_e,{title:`Automatic native encryption`,description:Se,status:`A new signed-in Desktop or mobile app enrolls its own keys; private keys stay on that device.`}),e[11]=L):L=e[11];let R;e[12]!==C||e[13]!==t||e[14]!==n?(R=t.length===0?(0,$.jsx)(_e,{title:n===`loading`?`Loading devices…`:`No native devices yet`,description:`Sign in from Ryco Desktop or mobile to enroll that app automatically. Web sessions stay separate and do not join this native device trust set.`,status:n===`stale`?`The device directory is temporarily unavailable.`:null,control:n===`loading`?(0,$.jsx)(S,{className:`size-3.5`}):null}):t.map(e=>{let t=e.status===`active`;return(0,$.jsx)(_e,{title:(0,$.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[e.deviceLabel,(0,$.jsx)(T,{variant:t?`success`:`secondary`,children:De(e)})]}),description:`${Te(e)} · Ryco ${e.appVersion}`,status:n===`stale`?`Showing the last device directory Ryco read.`:null,control:t?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:C,onClick:()=>{s(e),l(e.deviceLabel)},children:`Rename`}),(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,disabled:C,onClick:()=>d(e),children:`Revoke`})]}):null,children:(0,$.jsx)(`dl`,{className:`mt-3 grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 border-t border-border/60 py-3`,children:ke(e,je).map(Ne)})},`${e.enrollmentId}:${String(e.enrollmentRevision)}`)}),e[12]=C,e[13]=t,e[14]=n,e[15]=R):R=e[15];let ce=o!==null,z;e[16]===w?z=e[17]:(z=e=>{e||w||(s(null),l(``))},e[16]=w,e[17]=z);let le;e[18]===j?le=e[19]:(le=e=>{e.preventDefault(),j()},e[18]=j,e[19]=le);let ue;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(ue=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Rename encrypted device`}),(0,$.jsx)(ie,{children:`This label is account metadata. Renaming does not rotate or replace the device keys.`})]}),e[20]=ue):ue=e[20];let B;e[21]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,$.jsx)(b,{htmlFor:`account-e2ee-device-label`,children:`Device name`}),e[21]=B):B=e[21];let V;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(V=e=>l(e.target.value),e[22]=V):V=e[22];let H;e[23]!==c||e[24]!==w?(H=(0,$.jsxs)(ee,{className:`space-y-2`,children:[B,(0,$.jsx)(oe,{id:`account-e2ee-device-label`,value:c,maxLength:100,disabled:w,className:ae,onChange:V})]}),e[23]=c,e[24]=w,e[25]=H):H=e[25];let U;e[26]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>{s(null),l(``)},e[26]=U):U=e[26];let W;e[27]===w?W=e[28]:(W=(0,$.jsx)(a,{type:`button`,variant:`outline`,disabled:w,onClick:U,children:`Cancel`}),e[27]=w,e[28]=W);let G=w||O===null,K;e[29]===w?K=e[30]:(K=w?(0,$.jsx)(S,{className:`size-3.5`}):null,e[29]=w,e[30]=K);let q;e[31]!==G||e[32]!==K?(q=(0,$.jsxs)(a,{type:`submit`,disabled:G,children:[K,`Save name`]}),e[31]=G,e[32]=K,e[33]=q):q=e[33];let J;e[34]!==W||e[35]!==q?(J=(0,$.jsxs)(m,{children:[W,q]}),e[34]=W,e[35]=q,e[36]=J):J=e[36];let de;e[37]!==le||e[38]!==H||e[39]!==J?(de=(0,$.jsx)(re,{className:`max-w-sm`,children:(0,$.jsxs)(`form`,{onSubmit:le,children:[ue,H,J]})}),e[37]=le,e[38]=H,e[39]=J,e[40]=de):de=e[40];let Y;e[41]!==z||e[42]!==de||e[43]!==ce?(Y=(0,$.jsx)(f,{open:ce,onOpenChange:z,children:de}),e[41]=z,e[42]=de,e[43]=ce,e[44]=Y):Y=e[44];let fe=u!==null,X;e[45]===E?X=e[46]:(X=e=>{!e&&!E&&d(null)},e[45]=E,e[46]=X);let Z;e[47]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,$.jsx)(g,{children:`Revoke this encrypted device?`}),e[47]=Z):Z=e[47];let pe=u?.deviceLabel??`The selected device`,me;e[48]===pe?me=e[49]:(me=(0,$.jsxs)(v,{children:[Z,(0,$.jsxs)(p,{children:[pe,` will lose account-authorized native connections. Signing in again can enroll fresh keys, but this enrollment cannot be restored.`]})]}),e[48]=pe,e[49]=me);let ge;e[50]===E?ge=e[51]:(ge=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`,disabled:E}),children:`Cancel`}),e[50]=E,e[51]=ge);let ve;e[52]===se?ve=e[53]:(ve=()=>void se(),e[52]=se,e[53]=ve);let ye;e[54]===E?ye=e[55]:(ye=E?(0,$.jsx)(S,{className:`size-3.5`}):null,e[54]=E,e[55]=ye);let Ce;e[56]!==E||e[57]!==ve||e[58]!==ye?(Ce=(0,$.jsxs)(a,{variant:`destructive`,disabled:E,onClick:ve,children:[ye,`Revoke device`]}),e[56]=E,e[57]=ve,e[58]=ye,e[59]=Ce):Ce=e[59];let we;e[60]!==ge||e[61]!==Ce?(we=(0,$.jsxs)(y,{children:[ge,Ce]}),e[60]=ge,e[61]=Ce,e[62]=we):we=e[62];let Ee;e[63]!==me||e[64]!==we?(Ee=(0,$.jsxs)(ne,{children:[me,we]}),e[63]=me,e[64]=we,e[65]=Ee):Ee=e[65];let Ae;e[66]!==fe||e[67]!==X||e[68]!==Ee?(Ae=(0,$.jsx)(h,{open:fe,onOpenChange:X,children:Ee}),e[66]=fe,e[67]=X,e[68]=Ee,e[69]=Ae):Ae=e[69];let Me;return e[70]!==Y||e[71]!==Ae||e[72]!==I||e[73]!==R?(Me=(0,$.jsxs)(he,{title:`Encrypted devices`,icon:P,headerAction:I,children:[L,R,Y,Ae]}),e[70]=Y,e[71]=Ae,e[72]=I,e[73]=R,e[74]=Me):Me=e[74],Me}function Ne(e){return(0,$.jsxs)(`div`,{className:`contents`,children:[(0,$.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:e.label}),(0,$.jsx)(`dd`,{className:e.fingerprint?`min-w-0 font-mono text-xs break-all`:`min-w-0 text-xs break-all`,children:e.value})]},e.label)}function Pe(){M.refreshE2eeDevices({force:!0})}function Fe(){M.refreshE2eeDevices()}function Ie(e){return e.actionStatus}function Le(e){return e.e2eeDevicesStatus??`idle`}function Re(e){return e.e2eeDevices??[]}var ze=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`});function Be(e){return e===null||!Number.isFinite(e)?null:ze.format(new Date(e))}function Ve(){let e=(0,xe.c)(15),[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(0),[a,o]=(0,Q.useState)(``),[s,c]=(0,Q.useState)(!1),l=(0,Q.useRef)(0),u;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=()=>{n(null),i(0),o(``)},e[0]=u):u=e[0];let d=u,f;e[1]===t?.options?f=e[2]:(f=()=>{l.current+=1,M.cancelAccountAction(),t?.options?.onAbandoned?.(),c(!1),d()},e[1]=t?.options,e[2]=f);let p=f,m;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(m=async(e,t,r)=>{let a=l.current+=1;c(!1);let s=await t({});if(l.current===a){if(B(s)){o(``),i(0),n({action:e,run:t,options:r,inferred:s.inferredErrorCode===!0});return}s.status===`committed`&&r?.onCommitted?.()}},e[3]=m):m=e[3];let h=m,g;e[4]!==t||e[5]!==a||e[6]!==r?(g=async()=>{if(!t)return;let e=H(a);if(e.length===0)return;let n=l.current+=1,s=await t.run({totpCode:e});if(l.current===n){if(B(s)){let e=r+1;if(z(s,e)){i(e),o(``);return}c(!0),t.options?.onAbandoned?.(),d();return}s.status===`committed`&&t.options?.onCommitted?.(),d()}},e[4]=t,e[5]=a,e[6]=r,e[7]=g):g=e[7];let _=g,v;return e[8]!==p||e[9]!==t||e[10]!==a||e[11]!==r||e[12]!==s||e[13]!==_?(v={run:h,cancel:p,stepUp:t,stepUpAttempts:r,stepUpCode:a,stepUpUnresolved:s,setStepUpCode:o,submitStepUp:_},e[8]=p,e[9]=t,e[10]=a,e[11]=r,e[12]=s,e[13]=_,e[14]=v):v=e[14],v}function He(){let e=(0,xe.c)(1),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],(0,Q.useEffect)(Ue,t)}function Ue(){return M.leaseRecoveryCodeDisplay()}function We(e){let t=(0,xe.c)(3),{busy:n,children:r}=e,i;return t[0]!==n||t[1]!==r?(i=n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(S,{className:`size-3.5`}),r]}):(0,$.jsx)($.Fragment,{children:r}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function Ge(){let e=(0,xe.c)(100),t=i(ut),o=i(lt),[s,c]=(0,Q.useState)(!1),l=r(ct),d=r(st),f=r(ot),p=r(at),m=r(it),h=r(rt),g=r(nt),_=r(tt),v=i(et),ee=i($e),[y,te]=(0,Q.useState)(!1),[ne,re]=(0,Q.useState)(null),b=(0,Q.useRef)(!1),x=Ve(),ie=x.run;He();let S=h!==`idle`,C;e[0]===m?C=e[1]:(C=de(m),e[0]=m,e[1]=C);let w=C,T;e[2]===f?.externalIdentities?T=e[3]:(T=f?.externalIdentities.find(Qe)??null,e[2]=f?.externalIdentities,e[3]=T);let E=T,D;e[4]===y?D=e[5]:(D=async()=>{if(!y){te(!0),re(null);try{await fe({intent:`link`,returnTo:`/account/security`,start:Ze,navigate:Xe})}catch(e){let t=e;re(t instanceof j?t.message:`GitHub connection is temporarily unavailable.`),te(!1)}}},e[4]=y,e[5]=D);let O=D,M;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(M=[],e[6]=M):M=e[6],(0,Q.useEffect)(Ye,M);let ae,oe;if(e[7]!==t||e[8]!==ie?(ae=()=>{if(t!==`authenticated`||b.current)return;b.current=!0;let e=new AbortController;return n.getPendingExternalIdentity(e.signal).then(e=>{if(e.status===`link`)return ie(`connect-github`,Je);e.status===`error`&&re(K(e.code))}).catch(qe),()=>e.abort()},oe=[t,ie],e[7]=t,e[8]=ie,e[9]=ae,e[10]=oe):(ae=e[9],oe=e[10]),(0,Q.useEffect)(ae,oe),t!==`authenticated`){let t;return e[11]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(ge,{children:(0,$.jsxs)(F,{variant:`warning`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`Not signed in`}),(0,$.jsx)(P,{children:`Sign in to the Hub to manage passkeys, two-factor authentication, and recovery codes.`})]})}),e[11]=t):t=e[11],t}let I;e[12]!==x.stepUp||e[13]!==x.stepUpUnresolved||e[14]!==_||e[15]!==g?(I=x.stepUpUnresolved?U:W(g,_,x.stepUp!==null),e[12]=x.stepUp,e[13]=x.stepUpUnresolved,e[14]=_,e[15]=g,e[16]=I):I=e[16];let L=I,R;e[17]!==x.stepUpUnresolved||e[18]!==_?(R=!x.stepUpUnresolved&&ue(_),e[17]=x.stepUpUnresolved,e[18]=_,e[19]=R):R=e[19];let z=R,le;e[20]!==l||e[21]!==d?(le=ce(l,d),e[20]=l,e[21]=d,e[22]=le):le=e[22];let B=le,V;e[23]!==L||e[24]!==z?(V=L?(0,$.jsxs)(F,{variant:z?`info`:`error`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:z?`Passkey needed`:`That did not work`}),(0,$.jsx)(P,{children:L})]}):null,e[23]=L,e[24]=z,e[25]=V):V=e[25];let H;e[26]===ne?H=e[27]:(H=ne?(0,$.jsxs)(F,{variant:`warning`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`GitHub connection did not complete`}),(0,$.jsx)(P,{children:ne})]}):null,e[26]=ne,e[27]=H);let G;e[28]!==f||e[29]!==p?(G=f===null&&p!==`stale`?(0,$.jsxs)(F,{variant:`info`,"aria-live":`polite`,children:[(0,$.jsx)(k,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`Checking account security`}),(0,$.jsx)(P,{children:`Reading which fallback sign-in methods are configured on this Hub.`})]}):null,e[28]=f,e[29]=p,e[30]=G):G=e[30];let q;e[31]!==S||e[32]!==f||e[33]!==p?(q=p===`stale`?(0,$.jsxs)(F,{variant:`warning`,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:f===null?`Account security unavailable`:`Account security may be outdated`}),(0,$.jsx)(P,{children:f===null?`Ryco could not read the current password, authenticator, and email state.`:`These controls use the last state Ryco successfully read from the Hub.`}),(0,$.jsx)(se,{children:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:S,onClick:Ke,children:`Retry`})})]}):null,e[31]=S,e[32]=f,e[33]=p,e[34]=q):q=e[34];let J;e[35]!==S||e[36]!==B?(J=B?(0,$.jsxs)(F,{variant:B.variant,"aria-live":`polite`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:B.title}),(0,$.jsx)(P,{children:B.description}),(0,$.jsx)(se,{children:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:S,onClick:()=>c(!0),children:B.actionLabel})})]}):null,e[35]=S,e[36]=B,e[37]=J):J=e[37];let Y;e[38]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,$.jsx)(A,{"aria-hidden":!0,className:`size-3.5`}),e[38]=Y):Y=e[38];let X=o?.displayName??`Signed in`,Z;e[39]===o?Z=e[40]:(Z=o?`${o.role} · joined ${Be(o.createdAt)??`unknown`}`:null,e[39]=o,e[40]=Z);let pe;e[41]!==X||e[42]!==Z?(pe=(0,$.jsx)(he,{title:`Account`,icon:Y,children:(0,$.jsx)(_e,{title:X,description:`The Hub account these credentials belong to.`,status:Z})}),e[41]=X,e[42]=Z,e[43]=pe):pe=e[43];let me;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,$.jsx)(Me,{}),e[44]=me):me=e[44];let ve;e[45]!==h||e[46]!==S||e[47]!==y||e[48]!==E||e[49]!==w?.link||e[50]!==ie||e[51]!==O?(ve=E||w?.link?(0,$.jsx)(dt,{identity:E,actionsAvailable:w?.link===!0,busy:S||y,actionStatus:h,onConnect:()=>void O(),run:ie}):null,e[45]=h,e[46]=S,e[47]=y,e[48]=E,e[49]=w?.link,e[50]=ie,e[51]=O,e[52]=ve):ve=e[52];let ye=d===`loading`,be=d===`stale`,Se;e[53]!==x.cancel||e[54]!==x.run||e[55]!==h||e[56]!==s||e[57]!==S||e[58]!==l||e[59]!==ye||e[60]!==be?(Se=(0,$.jsx)(pt,{passkeys:l,loading:ye,stale:be,busy:S,actionStatus:h,addOpen:s,setAddOpen:c,run:x.run,cancel:x.cancel}),e[53]=x.cancel,e[54]=x.run,e[55]=h,e[56]=s,e[57]=S,e[58]=l,e[59]=ye,e[60]=be,e[61]=Se):Se=e[61];let Ce=f?.totpEnrolled??null,we;e[62]!==x.run||e[63]!==h||e[64]!==S||e[65]!==Ce||e[66]!==ee?(we=(0,$.jsx)(mt,{busy:S,actionStatus:h,enrollment:ee,enrolled:Ce,run:x.run}),e[62]=x.run,e[63]=h,e[64]=S,e[65]=Ce,e[66]=ee,e[67]=we):we=e[67];let Te;e[68]!==x.run||e[69]!==h||e[70]!==S||e[71]!==v?(Te=(0,$.jsx)(bt,{busy:S,actionStatus:h,recoveryCodes:v,run:x.run}),e[68]=x.run,e[69]=h,e[70]=S,e[71]=v,e[72]=Te):Te=e[72];let Ee;e[73]!==x.cancel||e[74]!==x.run||e[75]!==h||e[76]!==S||e[77]!==f?(Ee=(0,$.jsx)(_t,{busy:S,actionStatus:h,security:f,run:x.run,cancel:x.cancel}),e[73]=x.cancel,e[74]=x.run,e[75]=h,e[76]=S,e[77]=f,e[78]=Ee):Ee=e[78];let De;e[79]!==x.cancel||e[80]!==x.setStepUpCode||e[81]!==x.stepUp||e[82]!==x.stepUpAttempts||e[83]!==x.stepUpCode||e[84]!==x.submitStepUp||e[85]!==S?(De=(0,$.jsx)(Tt,{pending:x.stepUp,attempts:x.stepUpAttempts,code:x.stepUpCode,onCodeChange:x.setStepUpCode,onSubmit:x.submitStepUp,onCancel:x.cancel,busy:S}),e[79]=x.cancel,e[80]=x.setStepUpCode,e[81]=x.stepUp,e[82]=x.stepUpAttempts,e[83]=x.stepUpCode,e[84]=x.submitStepUp,e[85]=S,e[86]=De):De=e[86];let Oe;return e[87]!==H||e[88]!==G||e[89]!==q||e[90]!==J||e[91]!==pe||e[92]!==ve||e[93]!==Se||e[94]!==we||e[95]!==Te||e[96]!==Ee||e[97]!==De||e[98]!==V?(Oe=(0,$.jsxs)(ge,{children:[V,H,G,q,J,pe,me,ve,Se,we,Te,Ee,De]}),e[87]=H,e[88]=G,e[89]=q,e[90]=J,e[91]=pe,e[92]=ve,e[93]=Se,e[94]=we,e[95]=Te,e[96]=Ee,e[97]=De,e[98]=V,e[99]=Oe):Oe=e[99],Oe}function Ke(){M.refreshAccountSecurity({force:!0})}function qe(){}function Je(e){return M.finishBrowserExternalIdentityConnection(`github`,e)}function Ye(){M.refreshPasskeys(),M.refreshAccountSecurity(),M.refreshExternalIdentityConfiguration()}function Xe(e){return window.location.assign(e)}function Ze(e){return n.startExternalIdentityAuthorization(e)}function Qe(e){return e.provider===`github`}function $e(e){return e.totpEnrollment??null}function et(e){return e.recoveryCodes}function tt(e){return e.errorCode??null}function nt(e){return e.errorMessage}function rt(e){return e.actionStatus}function it(e){return e.externalIdentityConfiguration}function at(e){return e.securityStatus}function ot(e){return e.security}function st(e){return e.passkeysStatus}function ct(e){return e.passkeys}function lt(e){return e.account}function ut(e){return e.accountStatus}function dt(e){let t=(0,xe.c)(33),{identity:n,actionsAvailable:r,busy:i,actionStatus:o,onConnect:s,run:c}=e,[l,u]=(0,Q.useState)(!1),d=o===`connecting-external-identity`,f=o===`disconnecting-external-identity`,m;t[0]===c?m=t[1]:(m=async()=>{await c(`disconnect-github`,ft,{onCommitted:()=>u(!1)})},t[0]=c,t[1]=m);let _=m,ee;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(ee=(0,$.jsx)(C,{"aria-hidden":!0,className:`size-3.5`}),t[2]=ee):ee=t[2];let te=n?`GitHub · @${n.login}`:`GitHub`,re=n?`Use this GitHub identity to sign in to Ryco. Repository access remains separate.`:`Connect GitHub as another way to sign in. Ryco requests no repository access.`,b;t[3]===n?b=t[4]:(b=n?`Connected ${Be(n.connectedAt)??`at an unknown time`}${n.lastUsedAt===null?``:` · last used ${Be(n.lastUsedAt)??`at an unknown time`}`}`:null,t[3]=n,t[4]=b);let ie;t[5]!==r||t[6]!==i||t[7]!==d||t[8]!==f||t[9]!==n||t[10]!==s?(ie=r?n?(0,$.jsx)(a,{size:`sm`,variant:`outline`,disabled:i,onClick:()=>u(!0),children:(0,$.jsx)(We,{busy:f,children:`Disconnect`})}):(0,$.jsx)(a,{size:`sm`,variant:`outline`,disabled:i,onClick:s,children:(0,$.jsx)(We,{busy:d,children:`Connect GitHub`})}):null,t[5]=r,t[6]=i,t[7]=d,t[8]=f,t[9]=n,t[10]=s,t[11]=ie):ie=t[11];let S;t[12]!==te||t[13]!==re||t[14]!==b||t[15]!==ie?(S=(0,$.jsx)(_e,{title:te,description:re,status:b,control:ie}),t[12]=te,t[13]=re,t[14]=b,t[15]=ie,t[16]=S):S=t[16];let w;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Disconnect GitHub?`}),(0,$.jsx)(p,{children:`You will no longer be able to sign in with GitHub. Ryco refuses this change if GitHub is your only remaining sign-in method.`})]}),t[17]=w):w=t[17];let T;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Cancel`}),t[18]=T):T=t[18];let E;t[19]===_?E=t[20]:(E=()=>void _(),t[19]=_,t[20]=E);let D;t[21]===f?D=t[22]:(D=(0,$.jsx)(We,{busy:f,children:`Disconnect GitHub`}),t[21]=f,t[22]=D);let O;t[23]!==i||t[24]!==E||t[25]!==D?(O=(0,$.jsxs)(ne,{children:[w,(0,$.jsxs)(y,{children:[T,(0,$.jsx)(a,{disabled:i,onClick:E,children:D})]})]}),t[23]=i,t[24]=E,t[25]=D,t[26]=O):O=t[26];let k;t[27]!==l||t[28]!==O?(k=(0,$.jsx)(h,{open:l,onOpenChange:u,children:O}),t[27]=l,t[28]=O,t[29]=k):k=t[29];let A;return t[30]!==k||t[31]!==S?(A=(0,$.jsxs)(he,{title:`Connected accounts`,icon:ee,children:[S,k]}),t[30]=k,t[31]=S,t[32]=A):A=t[32],A}function ft(e){return M.disconnectExternalIdentity(`github`,e)}function pt({passkeys:e,loading:t,stale:n,busy:r,actionStatus:i,addOpen:o,setAddOpen:s,run:c,cancel:l}){let[u,d]=(0,Q.useState)(``),[S,C]=(0,Q.useState)(null),[w,O]=(0,Q.useState)(null),k=i===`adding-passkey`,A=i===`revoking-passkey`,j=q(e),N=I(e),se=V(e),P=(0,Q.useCallback)(()=>{d(``),s(!1)},[s]),F=async e=>{e.preventDefault();let t=G(u);await c(`add-passkey`,e=>M.addPasskey({passkeyLabel:t,...e}),{onCommitted:P,onAbandoned:P})},L=async()=>{let e=S;if(e){C(null),O(e.id);try{await M.revokePasskey(e.id)}finally{O(null)}}};return(0,$.jsxs)(he,{title:`Passkeys`,icon:(0,$.jsx)(D,{"aria-hidden":!0,className:`size-3.5`}),headerAction:(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:r,onClick:()=>s(!0),children:`Add passkey`}),children:[(0,$.jsx)(_e,{title:`Passkeys on this account`,description:`A passkey is the strongest way in. Add one for every device you sign in from, and keep at least two so losing a device does not lock you out.`,status:n?`This list could not be refreshed and may be out of date.`:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{children:`${String(j.length)} usable ${j.length===1?`passkey`:`passkeys`}`}),N>0?(0,$.jsx)(`span`,{children:` · ${String(N)} synced to a password manager`}):null]})}),t&&e.length===0?(0,$.jsx)(_e,{title:`Loading passkeys…`,description:`Reading the credentials on file.`}):null,!t&&e.length===0?(0,$.jsx)(_e,{title:`No passkeys yet`,description:`Add one now — without a passkey you can only get back in through a fallback credential.`}):null,se.map(e=>{let t=X(e),n=R(e),i=Be(e.createdAt),o=Be(e.lastUsedAt);return(0,$.jsx)(_e,{title:(0,$.jsxs)(`span`,{className:`flex items-center gap-2`,children:[Z(e),t?(0,$.jsx)(T,{variant:`error`,size:`sm`,children:`Revoked`}):null]}),description:t?`Revoked${e.revocationReasonCode?` — ${e.revocationReasonCode}`:``}. This credential can no longer sign in.`:n??`The Hub did not report whether this credential is backed up.`,status:[i?`Added ${i}`:null,o?`Last used ${o}`:`Never used`].filter(e=>e!==null).join(` · `),control:t?null:(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Revoke ${Z(e)}`,disabled:r,onClick:()=>C(e),children:(0,$.jsxs)(We,{busy:A&&w===e.id,children:[(0,$.jsx)(E,{"aria-hidden":!0}),`Revoke`]})})},e.id)}),(0,$.jsx)(f,{open:o,onOpenChange:e=>{if(e){s(!0);return}r||P()},children:(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:e=>void F(e),children:[(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Add a passkey`}),(0,$.jsx)(ie,{children:`Your browser will ask you to create a passkey for this account. Adding one replaces the current Hub session with a fresh one.`})]}),(0,$.jsxs)(ee,{className:`space-y-3`,children:[(0,$.jsx)(b,{htmlFor:`account-passkey-label`,children:`Name (optional)`}),(0,$.jsx)(oe,{id:`account-passkey-label`,value:u,autoComplete:`off`,placeholder:`Work laptop`,disabled:k,className:ae,onChange:e=>d(e.target.value)})]}),(0,$.jsxs)(m,{children:[(0,$.jsx)(a,{variant:`outline`,onClick:()=>{l(),P()},children:`Cancel`}),(0,$.jsx)(a,{type:`submit`,disabled:r,children:(0,$.jsx)(We,{busy:k,children:`Create passkey`})})]})]})})}),(0,$.jsx)(h,{open:S!==null,onOpenChange:e=>{r||e||C(null)},children:(0,$.jsxs)(ne,{children:[(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Revoke this passkey?`}),(0,$.jsxs)(p,{children:[j.length===1?`This is the only usable passkey on this account. `:``,S?Z(S):``,` will stop working immediately, on every device it is stored on. This cannot be undone — you would have to enrol the device again.`]})]}),(0,$.jsxs)(y,{children:[(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it`}),(0,$.jsx)(a,{variant:`destructive`,disabled:r,onClick:()=>void L(),children:`Revoke passkey`})]})]})})]})}function mt(e){let t=(0,xe.c)(61),{busy:n,actionStatus:r,enrollment:i,enrolled:o,run:s}=e,[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(!1),S=r===`enrolling-totp`,C=r===`confirming-totp`,w=r===`revoking-totp`,T;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>{l(``),M.dismissTotpEnrollment()},t[0]=T):T=t[0];let E=T,D;t[1]===c?D=t[2]:(D=async e=>{e.preventDefault();let t=H(c);t.length!==0&&(await M.confirmTotpEnrollment({code:t}),l(``))},t[1]=c,t[2]=D);let O=D,A;t[3]===s?A=t[4]:(A=async()=>{d(!1),await s(`revoke-totp`,gt)},t[3]=s,t[4]=A);let j=A,N;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(k,{"aria-hidden":!0,className:`size-3.5`}),t[5]=N):N=t[5];let se=o===null?`Checking current state…`:o?`On`:`Off`,P;t[6]!==n||t[7]!==o||t[8]!==S||t[9]!==w?(P=o===null?null:o?(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Turn off two-factor authentication`,disabled:n,onClick:()=>d(!0),children:(0,$.jsx)(We,{busy:w,children:`Turn off`})}):(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:n,onClick:ht,children:(0,$.jsx)(We,{busy:S,children:`Set up`})}),t[6]=n,t[7]=o,t[8]=S,t[9]=w,t[10]=P):P=t[10];let F;t[11]!==se||t[12]!==P?(F=(0,$.jsx)(_e,{title:`Authenticator app`,description:`A six-digit code from an authenticator app, required whenever you change credentials from a session that was not started with a passkey. Signing in with a passkey never asks for one.`,status:se,control:P}),t[11]=se,t[12]=P,t[13]=F):F=t[13];let I=i!==null,L;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(L=e=>{e||E()},t[14]=L):L=t[14];let R;t[15]===O?R=t[16]:(R=e=>void O(e),t[15]=O,t[16]=R);let ce;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ce=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Set up two-factor authentication`}),(0,$.jsx)(ie,{children:`Scan this with your authenticator app, then enter the code it shows. This is the only time the key is displayed.`})]}),t[17]=ce):ce=t[17];let z;t[18]===i?z=t[19]:(z=i?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`flex justify-center rounded-xl border border-border bg-white p-4`,children:(0,$.jsx)(ve,{value:i.provisioningUri,size:168,level:`M`,marginSize:1,title:`Two-factor setup code`})}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Can't scan? Enter this key manually:`}),(0,$.jsx)(`p`,{"aria-label":`Two-factor setup key`,className:`rounded-lg border border-border bg-background px-3 py-2 font-mono text-sm break-all`,children:i.secretBase32})]})]}):null,t[18]=i,t[19]=z);let le;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,$.jsx)(b,{htmlFor:`account-totp-confirm`,children:`Code from your app`}),t[20]=le):le=t[20];let ue;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(ue=e=>l(H(e.target.value)),t[21]=ue):ue=t[21];let B;t[22]!==c||t[23]!==C?(B=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[le,(0,$.jsx)(oe,{id:`account-totp-confirm`,value:c,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:16,disabled:C,className:ae,onChange:ue})]}),t[22]=c,t[23]=C,t[24]=B):B=t[24];let V;t[25]!==z||t[26]!==B?(V=(0,$.jsxs)(ee,{className:`space-y-4`,children:[z,B]}),t[25]=z,t[26]=B,t[27]=V):V=t[27];let U;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,$.jsx)(a,{variant:`outline`,onClick:E,children:`Cancel`}),t[28]=U):U=t[28];let W;t[29]!==n||t[30]!==c?(W=n||!J(c),t[29]=n,t[30]=c,t[31]=W):W=t[31];let G;t[32]===C?G=t[33]:(G=(0,$.jsx)(We,{busy:C,children:`Turn on`}),t[32]=C,t[33]=G);let K;t[34]!==W||t[35]!==G?(K=(0,$.jsxs)(m,{children:[U,(0,$.jsx)(a,{type:`submit`,disabled:W,children:G})]}),t[34]=W,t[35]=G,t[36]=K):K=t[36];let q;t[37]!==R||t[38]!==V||t[39]!==K?(q=(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:R,children:[ce,V,K]})}),t[37]=R,t[38]=V,t[39]=K,t[40]=q):q=t[40];let de;t[41]!==q||t[42]!==I?(de=(0,$.jsx)(f,{open:I,onOpenChange:L,children:q}),t[41]=q,t[42]=I,t[43]=de):de=t[43];let Y;t[44]===n?Y=t[45]:(Y=e=>{n||d(e)},t[44]=n,t[45]=Y);let fe;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Remove two-factor authentication?`}),(0,$.jsx)(p,{children:`Password, recovery-code, and emailed-link sign-ins will no longer need a code from your authenticator app. You can set it up again at any time.`})]}),t[46]=fe):fe=t[46];let X;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it on`}),t[47]=X):X=t[47];let Z;t[48]===j?Z=t[49]:(Z=()=>void j(),t[48]=j,t[49]=Z);let pe;t[50]!==n||t[51]!==Z?(pe=(0,$.jsxs)(ne,{children:[fe,(0,$.jsxs)(y,{children:[X,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:Z,children:`Remove two-factor`})]})]}),t[50]=n,t[51]=Z,t[52]=pe):pe=t[52];let me;t[53]!==u||t[54]!==Y||t[55]!==pe?(me=(0,$.jsx)(h,{open:u,onOpenChange:Y,children:pe}),t[53]=u,t[54]=Y,t[55]=pe,t[56]=me):me=t[56];let ge;return t[57]!==de||t[58]!==me||t[59]!==F?(ge=(0,$.jsxs)(he,{title:`Two-factor authentication`,icon:N,children:[F,de,me]}),t[57]=de,t[58]=me,t[59]=F,t[60]=ge):ge=t[60],ge}function ht(){M.beginTotpEnrollment()}function gt(e){return M.revokeTotp(e)}function _t(e){let t=(0,xe.c)(86),{busy:n,actionStatus:r,security:i,run:o,cancel:s}=e,[c,l]=(0,Q.useState)(!1),[u,d]=(0,Q.useState)(``),[S,C]=(0,Q.useState)(``),[w,T]=(0,Q.useState)(!1),[E,O]=(0,Q.useState)(!1),k=r===`setting-password`,A=r===`removing-password`,j;t[0]!==S||t[1]!==u?(j=me(u,S),t[0]=S,t[1]=u,t[2]=j):j=t[2];let N=j,se;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>{d(``),C(``),T(!1)},t[3]=se):se=t[3];let P=se,F;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>{P(),l(!1)},t[4]=F):F=t[4];let I=F,L;t[5]===s?L=t[6]:(L=()=>{s(),I()},t[5]=s,t[6]=L);let R=L,ce;t[7]!==N||t[8]!==u||t[9]!==o?(ce=async e=>{e.preventDefault(),T(!0),!N&&await o(`set-password`,e=>M.setPassword({password:u,...e}),{onCommitted:I,onAbandoned:I})},t[7]=N,t[8]=u,t[9]=o,t[10]=ce):ce=t[10];let z=ce,le;t[11]===o?le=t[12]:(le=async()=>{O(!1),await o(`remove-password`,vt)},t[11]=o,t[12]=le);let ue=le,B;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,$.jsx)(D,{"aria-hidden":!0,className:`size-3.5`}),t[13]=B):B=t[13];let V=i===null?`Checking current state…`:i.passwordConfigured?`Set`:`Not set`,H;t[14]!==n||t[15]!==A||t[16]!==i||t[17]!==k?(H=i===null?null:(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsx)(a,{size:`xs`,variant:`outline`,disabled:n,onClick:()=>l(!0),children:(0,$.jsx)(We,{busy:k,children:i.passwordConfigured?`Change`:`Set password`})}),i.passwordConfigured?(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,"aria-label":`Delete the fallback password`,disabled:n,onClick:()=>O(!0),children:(0,$.jsx)(We,{busy:A,children:`Remove`})}):null]}),t[14]=n,t[15]=A,t[16]=i,t[17]=k,t[18]=H):H=t[18];let U;t[19]!==V||t[20]!==H?(U=(0,$.jsx)(_e,{title:`Fallback password`,description:`A password is a fallback, not an equal of a passkey: it can be phished and reused, and a session started with one has to prove itself again before changing credentials. Keep a passkey as your normal way in.`,status:V,control:H}),t[19]=V,t[20]=H,t[21]=U):U=t[21];let W=i===null?void 0:i.email,G=i?.emailDeliveryConfigured,K;t[22]!==r||t[23]!==n||t[24]!==o||t[25]!==W||t[26]!==G?(K=(0,$.jsx)(yt,{busy:n,actionStatus:r,email:W,deliveryConfigured:G,run:o}),t[22]=r,t[23]=n,t[24]=o,t[25]=W,t[26]=G,t[27]=K):K=t[27];let q;t[28]===R?q=t[29]:(q=e=>{if(e){l(!0);return}R()},t[28]=R,t[29]=q);let J;t[30]===z?J=t[31]:(J=e=>void z(e),t[30]=z,t[31]=J);let de;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(de=(0,$.jsxs)(te,{children:[(0,$.jsx)(_,{children:`Set a fallback password`}),(0,$.jsx)(ie,{children:`This replaces any password already on the account. The Hub rejects passwords that have appeared in a known breach.`})]}),t[32]=de):de=t[32];let Y;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(Y=(0,$.jsx)(b,{htmlFor:`account-password`,children:`New password`}),t[33]=Y):Y=t[33];let fe;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(fe=e=>d(e.target.value),t[34]=fe):fe=t[34];let X;t[35]!==u||t[36]!==k?(X=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[Y,(0,$.jsx)(oe,{id:`account-password`,type:`password`,value:u,autoComplete:`new-password`,maxLength:256,disabled:k,className:ae,onChange:fe})]}),t[35]=u,t[36]=k,t[37]=X):X=t[37];let Z;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,$.jsx)(b,{htmlFor:`account-password-confirm`,children:`Confirm password`}),t[38]=Z):Z=t[38];let pe;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(pe=e=>C(e.target.value),t[39]=pe):pe=t[39];let ge;t[40]!==S||t[41]!==k?(ge=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[Z,(0,$.jsx)(oe,{id:`account-password-confirm`,type:`password`,value:S,autoComplete:`new-password`,maxLength:256,disabled:k,className:ae,onChange:pe})]}),t[40]=S,t[41]=k,t[42]=ge):ge=t[42];let ve;t[43]!==N||t[44]!==w?(ve=w&&N?(0,$.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive-foreground`,children:N}):null,t[43]=N,t[44]=w,t[45]=ve):ve=t[45];let ye;t[46]!==X||t[47]!==ge||t[48]!==ve?(ye=(0,$.jsxs)(ee,{className:`space-y-3`,children:[X,ge,ve]}),t[46]=X,t[47]=ge,t[48]=ve,t[49]=ye):ye=t[49];let be;t[50]===R?be=t[51]:(be=(0,$.jsx)(a,{variant:`outline`,onClick:R,children:`Cancel`}),t[50]=R,t[51]=be);let Se;t[52]===k?Se=t[53]:(Se=(0,$.jsx)(We,{busy:k,children:`Save password`}),t[52]=k,t[53]=Se);let Ce;t[54]!==n||t[55]!==Se?(Ce=(0,$.jsx)(a,{type:`submit`,disabled:n,children:Se}),t[54]=n,t[55]=Se,t[56]=Ce):Ce=t[56];let we;t[57]!==be||t[58]!==Ce?(we=(0,$.jsxs)(m,{children:[be,Ce]}),t[57]=be,t[58]=Ce,t[59]=we):we=t[59];let Te;t[60]!==J||t[61]!==ye||t[62]!==we?(Te=(0,$.jsx)(re,{className:`max-w-md`,children:(0,$.jsxs)(`form`,{onSubmit:J,children:[de,ye,we]})}),t[60]=J,t[61]=ye,t[62]=we,t[63]=Te):Te=t[63];let Ee;t[64]!==c||t[65]!==q||t[66]!==Te?(Ee=(0,$.jsx)(f,{open:c,onOpenChange:q,children:Te}),t[64]=c,t[65]=q,t[66]=Te,t[67]=Ee):Ee=t[67];let De;t[68]===n?De=t[69]:(De=e=>{n||O(e)},t[68]=n,t[69]=De);let Oe;t[70]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Remove the password?`}),(0,$.jsx)(p,{children:`You will no longer be able to sign in with a password. Make sure you still have a passkey, or recovery codes you have saved.`})]}),t[70]=Oe):Oe=t[70];let ke;t[71]===Symbol.for(`react.memo_cache_sentinel`)?(ke=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Keep it`}),t[71]=ke):ke=t[71];let Ae;t[72]===ue?Ae=t[73]:(Ae=()=>void ue(),t[72]=ue,t[73]=Ae);let je;t[74]!==n||t[75]!==Ae?(je=(0,$.jsxs)(ne,{children:[Oe,(0,$.jsxs)(y,{children:[ke,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:Ae,children:`Remove password`})]})]}),t[74]=n,t[75]=Ae,t[76]=je):je=t[76];let Me;t[77]!==E||t[78]!==De||t[79]!==je?(Me=(0,$.jsx)(h,{open:E,onOpenChange:De,children:je}),t[77]=E,t[78]=De,t[79]=je,t[80]=Me):Me=t[80];let Ne;return t[81]!==U||t[82]!==K||t[83]!==Ee||t[84]!==Me?(Ne=(0,$.jsxs)(he,{title:`Fallback sign-in`,icon:B,children:[U,K,Ee,Me]}),t[81]=U,t[82]=K,t[83]=Ee,t[84]=Me,t[85]=Ne):Ne=t[85],Ne}function vt(e){return M.removePassword(e)}function yt(e){let t=(0,xe.c)(25),{busy:n,actionStatus:r,email:i,deliveryConfigured:o,run:s}=e,[c,l]=(0,Q.useState)(``),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(!1),h=r===`requesting-email-verification`,g;t[0]===c?g=t[1]:(g=Y(c),t[0]=c,t[1]=g);let _=g,v;t[2]!==c||t[3]!==_||t[4]!==s?(v=async e=>{e.preventDefault(),f(!0),m(!1),!_&&await s(`request-email-verification`,e=>M.requestEmailVerification({email:c.trim(),...e}),{onCommitted:()=>{m(!0),l(``),f(!1)}})},t[2]=c,t[3]=_,t[4]=s,t[5]=v):v=t[5];let ee=v,y;t[6]===o?y=t[7]:(y=o===!1?(0,$.jsx)(`div`,{className:`border-t border-border/60 px-4 pt-3.5 sm:px-5`,children:(0,$.jsxs)(F,{variant:`warning`,children:[(0,$.jsx)(u,{"aria-hidden":!0}),(0,$.jsx)(N,{children:`No mail will arrive yet`}),(0,$.jsx)(P,{children:`This Hub has no mail transport configured, so verification messages are generated and discarded. The request below will be accepted and nothing will be delivered until an operator wires one up. Do not rely on email as your way back into the account.`})]})}):null,t[6]=o,t[7]=y);let te=o?`Used for account recovery after verification. The Hub answers the same way whether or not the address is already known, so this never confirms who owns it.`:`Used for account recovery once mail delivery is switched on. The Hub answers the same way whether or not the address is already known, so this never confirms who owns it.`,ne=i===void 0?`Checking current state…`:i===null?`Not set`:`${i.verified?`Verified`:`Verification pending`} · ${i.address}`,re;t[8]!==p||t[9]!==n||t[10]!==i||t[11]!==o||t[12]!==c||t[13]!==_||t[14]!==h||t[15]!==ee||t[16]!==d?(re=i===void 0?null:(0,$.jsxs)(`form`,{className:`pt-3 pb-3.5`,onSubmit:e=>void ee(e),children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,$.jsx)(oe,{"aria-label":`Email address`,type:`email`,value:c,autoComplete:`email`,placeholder:`you@example.com`,maxLength:254,disabled:h,className:ae,onChange:e=>{l(e.target.value),m(!1)}}),(0,$.jsx)(a,{type:`submit`,size:`sm`,variant:`outline`,disabled:n,className:`shrink-0`,children:(0,$.jsx)(We,{busy:h,children:i===null?`Send verification`:i.verified?`Change email`:`Resend or change`})})]}),d&&_?(0,$.jsx)(`p`,{role:`alert`,className:`pt-2 text-xs text-destructive-foreground`,children:_}):null,p?(0,$.jsx)(`p`,{role:`status`,className:`pt-2 text-xs text-muted-foreground`,children:o?`Verification email requested. Check your inbox and spam folder; delivery may take a moment.`:`Request accepted by the Hub. No message will be delivered until a mail transport is configured.`}):null]}),t[8]=p,t[9]=n,t[10]=i,t[11]=o,t[12]=c,t[13]=_,t[14]=h,t[15]=ee,t[16]=d,t[17]=re):re=t[17];let b;t[18]!==te||t[19]!==ne||t[20]!==re?(b=(0,$.jsx)(_e,{title:`Recovery email`,description:te,status:ne,children:re}),t[18]=te,t[19]=ne,t[20]=re,t[21]=b):b=t[21];let x;return t[22]!==y||t[23]!==b?(x=(0,$.jsxs)($.Fragment,{children:[y,b]}),t[22]=y,t[23]=b,t[24]=x):x=t[24],x}function bt(e){let t=(0,xe.c)(52),{busy:n,actionStatus:r,recoveryCodes:i,run:s}=e,[u,d]=(0,Q.useState)(!1),b=r===`regenerating-recovery-codes`,{copyToClipboard:S,isCopied:C}=o(),w;t[0]===s?w=t[1]:(w=async()=>{d(!1),await s(`regenerate-recovery-codes`,wt)},t[0]=s,t[1]=w);let T=w,E;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(O,{"aria-hidden":!0,className:`size-3.5`}),t[2]=E):E=t[2];let D;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(D=()=>d(!0),t[3]=D):D=t[3];let k;t[4]===b?k=t[5]:(k=(0,$.jsx)(We,{busy:b,children:`Generate new codes`}),t[4]=b,t[5]=k);let A;t[6]!==n||t[7]!==k?(A=(0,$.jsx)(_e,{title:`One-time recovery codes`,description:`Single-use codes that get you back in when you have lost every passkey. They are a last resort, not a substitute for one — anyone holding a code can sign in as you.`,status:`Ryco shows them once and never writes them to browser storage.`,control:(0,$.jsx)(a,{size:`xs`,variant:`destructive-outline`,disabled:n,onClick:D,children:k})}),t[6]=n,t[7]=k,t[8]=A):A=t[8];let j;t[9]===n?j=t[10]:(j=e=>{n||d(e)},t[9]=n,t[10]=j);let M;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,$.jsxs)(v,{children:[(0,$.jsx)(g,{children:`Replace your recovery codes?`}),(0,$.jsx)(p,{children:`Every code you have already saved stops working immediately. You will get a new set, shown once — if you lose them you will have to generate another set from a session you can still sign in to.`})]}),t[11]=M):M=t[11];let ae;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,$.jsx)(x,{render:(0,$.jsx)(a,{variant:`outline`}),children:`Cancel`}),t[12]=ae):ae=t[12];let oe;t[13]===T?oe=t[14]:(oe=()=>void T(),t[13]=T,t[14]=oe);let N;t[15]!==n||t[16]!==oe?(N=(0,$.jsxs)(ne,{children:[M,(0,$.jsxs)(y,{children:[ae,(0,$.jsx)(a,{variant:`destructive`,disabled:n,onClick:oe,children:`Replace codes`})]})]}),t[15]=n,t[16]=oe,t[17]=N):N=t[17];let se;t[18]!==u||t[19]!==N||t[20]!==j?(se=(0,$.jsx)(h,{open:u,onOpenChange:j,children:N}),t[18]=u,t[19]=N,t[20]=j,t[21]=se):se=t[21];let P=i.length>0,F;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,$.jsx)(_,{children:`Save your recovery codes`}),t[22]=F):F=t[22];let I=String(i.length),L;t[23]===I?L=t[24]:(L=(0,$.jsxs)(te,{children:[F,(0,$.jsxs)(ie,{children:[`Save all `,I,` codes — they are shown once and cannot be retrieved later. Store them somewhere only you can reach — a password manager, or paper somewhere safe.`]})]}),t[23]=I,t[24]=L);let R;t[25]===i?R=t[26]:(R=i.map(St),t[25]=i,t[26]=R);let ce;t[27]===R?ce=t[28]:(ce=(0,$.jsx)(ee,{children:(0,$.jsx)(`ul`,{"aria-label":`Recovery codes`,className:`grid gap-2 rounded-xl border border-border bg-background p-4 font-mono text-sm break-all sm:grid-cols-2`,children:R})}),t[27]=R,t[28]=ce);let z;t[29]!==S||t[30]!==i?(z=()=>S(le(i),void 0),t[29]=S,t[30]=i,t[31]=z):z=t[31];let ue;t[32]===C?ue=t[33]:(ue=C?(0,$.jsx)(l,{"aria-hidden":!0}):(0,$.jsx)(c,{"aria-hidden":!0}),t[32]=C,t[33]=ue);let B=C?`Copied`:`Copy codes`,V;t[34]!==z||t[35]!==ue||t[36]!==B?(V=(0,$.jsxs)(a,{variant:`outline`,onClick:z,children:[ue,B]}),t[34]=z,t[35]=ue,t[36]=B,t[37]=V):V=t[37];let H;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,$.jsx)(a,{onClick:xt,children:`I saved the codes`}),t[38]=H):H=t[38];let U;t[39]===V?U=t[40]:(U=(0,$.jsxs)(m,{children:[V,H]}),t[39]=V,t[40]=U);let W;t[41]!==L||t[42]!==ce||t[43]!==U?(W=(0,$.jsxs)(re,{className:`max-w-md`,showCloseButton:!1,children:[L,ce,U]}),t[41]=L,t[42]=ce,t[43]=U,t[44]=W):W=t[44];let G;t[45]!==P||t[46]!==W?(G=(0,$.jsx)(f,{open:P,disablePointerDismissal:!0,onOpenChange:Ct,children:W}),t[45]=P,t[46]=W,t[47]=G):G=t[47];let K;return t[48]!==se||t[49]!==G||t[50]!==A?(K=(0,$.jsxs)(he,{title:`Recovery codes`,icon:E,children:[A,se,G]}),t[48]=se,t[49]=G,t[50]=A,t[51]=K):K=t[51],K}function xt(){return M.dismissRecoveryCodes()}function St(e){return(0,$.jsx)(`li`,{children:e},e)}function Ct(e,t){e||t.cancel()}function wt(e){return M.regenerateRecoveryCodes(e)}function Tt(e){let t=(0,xe.c)(45),{pending:n,attempts:r,code:i,onCodeChange:o,onSubmit:s,onCancel:c,busy:l}=e,u=n!==null,d;t[0]===c?d=t[1]:(d=e=>{e||c()},t[0]=c,t[1]=d);let p;t[2]===s?p=t[3]:(p=e=>{e.preventDefault(),s()},t[2]=s,t[3]=p);let h;t[4]===n?h=t[5]:(h=n?L(n.action):``,t[4]=n,t[5]=h);let g;t[6]===h?g=t[7]:(g=(0,$.jsx)(_,{children:h}),t[6]=h,t[7]=g);let v=n?.inferred??!1,y;t[8]!==r||t[9]!==v?(y=pe(r,v),t[8]=r,t[9]=v,t[10]=y):y=t[10];let ne;t[11]===y?ne=t[12]:(ne=(0,$.jsx)(ie,{children:y}),t[11]=y,t[12]=ne);let x;t[13]!==g||t[14]!==ne?(x=(0,$.jsxs)(te,{children:[g,ne]}),t[13]=g,t[14]=ne,t[15]=x):x=t[15];let S;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(b,{htmlFor:`account-step-up-code`,children:`Authenticator code`}),t[16]=S):S=t[16];let C;t[17]===o?C=t[18]:(C=e=>o(H(e.target.value)),t[17]=o,t[18]=C);let w;t[19]!==l||t[20]!==i||t[21]!==C?(w=(0,$.jsxs)(ee,{className:`space-y-2`,children:[S,(0,$.jsx)(oe,{id:`account-step-up-code`,value:i,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:16,disabled:l,className:ae,onChange:C})]}),t[19]=l,t[20]=i,t[21]=C,t[22]=w):w=t[22];let T;t[23]===c?T=t[24]:(T=(0,$.jsx)(a,{variant:`outline`,onClick:c,children:`Cancel`}),t[23]=c,t[24]=T);let E;t[25]!==l||t[26]!==i?(E=l||!J(i),t[25]=l,t[26]=i,t[27]=E):E=t[27];let D;t[28]===l?D=t[29]:(D=(0,$.jsx)(We,{busy:l,children:`Confirm code`}),t[28]=l,t[29]=D);let O;t[30]!==E||t[31]!==D?(O=(0,$.jsx)(a,{type:`submit`,disabled:E,children:D}),t[30]=E,t[31]=D,t[32]=O):O=t[32];let k;t[33]!==T||t[34]!==O?(k=(0,$.jsxs)(m,{children:[T,O]}),t[33]=T,t[34]=O,t[35]=k):k=t[35];let A;t[36]!==w||t[37]!==k||t[38]!==p||t[39]!==x?(A=(0,$.jsx)(re,{className:`max-w-sm`,children:(0,$.jsxs)(`form`,{onSubmit:p,children:[x,w,k]})}),t[36]=w,t[37]=k,t[38]=p,t[39]=x,t[40]=A):A=t[40];let j;return t[41]!==u||t[42]!==A||t[43]!==d?(j=(0,$.jsx)(f,{open:u,onOpenChange:d,children:A}),t[41]=u,t[42]=A,t[43]=d,t[44]=j):j=t[44],j}export{Ge as AccountSettingsPanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$t as t,n}from"./primary-CQh_KHGG.js";import{F as r,O as i,_i as a}from"./src-DHNjfMxR.js";import{$l as o,Aa as s,Ea as c,Hr as l,Kr as u,Na as d,Ql as ee,Qr as f,Vl as p,Vr as te,Zl as ne,b as m,co as re,mr as ie,nu as h,p as g,u as _,wa as v,y}from"./runtime-DpHhg0dl.js";import{t as b}from"./react-CwJFpaho.js";import{t as ae}from"./switch-DgLijJhN.js";import{t as x}from"./compiler-runtime-C4g8XhC5.js";import{a as S,c as C,n as w,o as oe,s as se}from"./badge-DqZmJa1g.js";import{r as ce,x as T}from"./RootAppShell-CYT2IfYW.js";import{n as le}from"./capabilities-C9OPiefV.js";import{l as E}from"./SettingsPanels.editor-zrq4ZT2j.js";import{t as ue}from"./refresh-cw-DBJIPv7m.js";import{t as D}from"./toastHelpers-CSQRKo4F.js";import{i as O,n as de,r as k}from"./settingsLayout-3SUkadS6.js";var fe=[`Thread titles`,`Project or repository names`,`Branch names`,`Bucketed creation and activity age`,`Running, approval, input, queue, failure, and delivery state`,`Pull request or linked issue title and state`,`Up to 600 characters from the latest user request`],pe=[{value:0,label:`Manual only`},{value:3e5,label:`Every 5 minutes`},{value:6e5,label:`Every 10 minutes`},{value:18e5,label:`Every 30 minutes`},{value:36e5,label:`Every hour`},{value:216e5,label:`Every 6 hours`},{value:864e5,label:`Every 24 hours`}];function me(e){return{...e.enabled===void 0?{}:{aiFocusEnabled:e.enabled},...e.refreshIntervalMs===void 0?{}:{aiFocusRefreshIntervalMs:e.refreshIntervalMs}}}function he(e){return e.map(e=>{let t=e.serverConfig,n=t?.environment.capabilities.threadPriorityRanking===!0,r=t?.settings.inboxPriorityModelSelection??null,i=t?r??t.settings.textGenerationModelSelection:null,a=i===null?null:t?.providers.find(e=>e.instanceId===i.instanceId)??null;return{...e,supported:n,inherited:r===null,effectiveModelSelection:i,effectiveProvider:a}})}function A(e,t){let n=e.find(e=>e.instanceId===t);return!!(n&&n.enabled&&n.installed&&n.availability!==`unavailable`&&n.status!==`disabled`&&n.status!==`error`)}function j(e){if(e.selection!==null&&!A(e.serverConfig.providers,e.selection.instanceId))throw Error(`That provider instance is not available on this environment.`);return{inboxPriorityModelSelection:e.selection}}var M=x(),N=e(b(),1),P=o();function F(e){return e instanceof Error?e.message:`An unexpected error occurred.`}function ge(e){let t=(0,M.c)(12),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,P.jsx)(T,{className:`size-3.5`}),t[0]=n):n=t[0];let i;t[1]===e.value?i=t[2]:(i=e.value?.toString()??`off`,t[1]=e.value,t[2]=i);let a;t[3]===e?a=t[4]:(a=t=>{let n=t===`off`?null:Number(t);(n===null||r.includes(n))&&e.onChange(n)},t[3]=e,t[4]=a);let o=e.value===null?`Off`:`After ${e.value} ${e.value===1?`day`:`days`}`,s;t[5]===o?s=t[6]:(s=(0,P.jsx)(se,{className:`w-48`,"aria-label":`Auto-settle inactive tasks`,children:(0,P.jsx)(C,{children:o})}),t[5]=o,t[6]=s);let c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,P.jsxs)(oe,{align:`end`,alignItemWithTrigger:!1,children:[(0,P.jsx)(S,{hideIndicator:!0,value:`off`,children:`Off`}),r.map(I)]}),t[7]=c):c=t[7];let l;return t[8]!==i||t[9]!==a||t[10]!==s?(l=(0,P.jsx)(O,{owner:`client`,title:`Housekeeping`,icon:n,children:(0,P.jsx)(k,{title:`Auto-settle inactive tasks`,description:`Move inactive tasks to Settled after their last message or turn. Running work, queued messages, pending input, open pull requests, and tasks kept active are protected.`,control:(0,P.jsxs)(w,{value:i,onValueChange:a,children:[s,c]})})}),t[8]=i,t[9]=a,t[10]=s,t[11]=l):l=t[11],l}function I(e){return(0,P.jsxs)(S,{hideIndicator:!0,value:String(e),children:[`After `,e,` `,e===1?`day`:`days`]},e)}function _e(){let e=(0,M.c)(2),[t,n]=(0,N.useState)(L),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>y(()=>{n(_())}),i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,N.useEffect)(r,i),t}function L(){return _()}function R({row:e}){let[t,n]=(0,N.useState)(!1),r=e.serverConfig;if(!r||!e.effectiveModelSelection)return null;let a={...r.settings,...i},o=e.effectiveModelSelection,l=d(s(r.providers)),ee=v(a,r.providers,o.instanceId,o.model),p=async t=>{n(!0);try{let n=j({serverConfig:r,selection:t});await m(e.environmentId,n)}catch(t){u.add(D({type:`error`,title:`Could not update ${e.label}`,description:F(t)}))}finally{n(!1)}};return(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,P.jsx)(E,{activeInstanceId:o.instanceId,model:o.model,modelOptions:o.options,lockedProvider:null,instanceEntries:l,modelOptionsByInstance:ee,compact:!0,disabled:t||!e.connected,...e.connected?{}:{disabledReason:`Connect this environment to change its model.`},onInstanceModelChange:(e,t,n)=>{p(c({...a,textGenerationModelSelection:h(e,t,n)},r.providers))}}),e.inherited?null:(0,P.jsx)(f,{size:`xs`,variant:`ghost`,disabled:t||!e.connected,onClick:()=>void p(null),children:`Use text model`})]})}function z(e){let t=(0,M.c)(6),{row:n}=e,r=n.effectiveProvider?.displayName??n.effectiveProvider?.driver??null,i=n.connected?n.supported?n.inherited?`Inherits the text-generation model${r?` (${r})`:``}.`:`Uses a separate model for Inbox ranking.`:`This node version does not support AI Focus ranking. Other supported nodes still work.`:`Offline — ranking waits for an existing connection.`,a;t[0]===n?a=t[1]:(a=n.supported?(0,P.jsx)(R,{row:n}):void 0,t[0]=n,t[1]=a);let o;return t[2]!==n.label||t[3]!==i||t[4]!==a?(o=(0,P.jsx)(k,{title:n.label,description:i,control:a}),t[2]=n.label,t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function B(){let e=(0,M.c)(59),t=ne(),r=ee(),i=te(),{updateSettings:o}=l(),s=p(),c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=n(),e[0]=c):c=e[0];let d=c,m=ie(Se),h=_e(),[g,_]=(0,N.useState)(!1);d?.environmentId,d?.label;let v;bb0:{if(t===`node`&&r){let t=r.connected&&r.canManage!==!1,n;e[1]!==t||e[2]!==r.environmentId||e[3]!==r.nodeLabel||e[4]!==r.serverConfig?(n=he([{environmentId:r.environmentId,label:r.nodeLabel,connected:t,serverConfig:r.serverConfig}]),e[1]=t,e[2]=r.environmentId,e[3]=r.nodeLabel,e[4]=r.serverConfig,e[5]=n):n=e[5],v=n;break bb0}let n;if(e[6]!==h||e[7]!==s||e[8]!==m){let t=new Map;d?.environmentId&&t.set(d.environmentId,{label:d.label,config:s});for(let e of h){if(t.has(e.environmentId))continue;let n=m[e.environmentId];t.set(e.environmentId,{label:n?.descriptor?.label??e.knownEnvironment.label,config:n?.serverConfig??null})}for(let[e,n]of Object.entries(m)){let r=a.make(e);t.has(r)||t.set(r,{label:n.descriptor?.label??`Saved environment`,config:n.serverConfig})}n=he([...t].map(xe)),e[6]=h,e[7]=s,e[8]=m,e[9]=n}else n=e[9];v=n}let y=v,b;e[10]===y?b=e[11]:(b=async()=>{_(!0);let e=await ce(),t=e.failures;t.length>0?u.add(D({type:`error`,title:`AI Focus refresh failed`,description:t.map(e=>{let{environmentId:t,error:n}=e;return`${y.find(e=>e.environmentId===t)?.label??`Environment`}: ${F(n)}`}).join(` · `)})):u.add(D({type:`success`,title:e.attempted.length>0?`AI Focus refreshed`:`No connected supported nodes`,description:e.attempted.length>0?`Updated ${e.succeeded.length} environment${e.succeeded.length===1?``:`s`}.`:`Connect a supported node to rank its Inbox.`})),_(!1)},e[10]=y,e[11]=b);let x=b,S;e[12]===o?S=e[13]:(S=e=>o({sidebarAutoSettleAfterDays:e}),e[12]=o,e[13]=S);let T;e[14]!==i.sidebarAutoSettleAfterDays||e[15]!==S?(T=(0,P.jsx)(ge,{value:i.sidebarAutoSettleAfterDays,onChange:S}),e[14]=i.sidebarAutoSettleAfterDays,e[15]=S,e[16]=T):T=e[16];let E;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,P.jsx)(le,{className:`size-3.5`}),e[17]=E):E=e[17];let A;e[18]===o?A=e[19]:(A=e=>o(me({enabled:e})),e[18]=o,e[19]=A);let j;e[20]!==i.aiFocusEnabled||e[21]!==A?(j=(0,P.jsx)(k,{title:`Prioritize the Inbox`,description:`Create a Focus section from pinned, actionable, and model-ranked threads. Focused threads are removed from Active, never duplicated.`,control:(0,P.jsx)(ae,{"aria-label":`Enable AI Focus`,checked:i.aiFocusEnabled,onCheckedChange:A})}),e[20]=i.aiFocusEnabled,e[21]=A,e[22]=j):j=e[22];let I=String(i.aiFocusRefreshIntervalMs),L;e[23]===o?L=e[24]:(L=e=>{let t=Number(e);o(me({refreshIntervalMs:t}))},e[23]=o,e[24]=L);let R;e[25]===i.aiFocusRefreshIntervalMs?R=e[26]:(R=pe.find(e=>e.value===i.aiFocusRefreshIntervalMs)?.label??`Every 10 minutes`,e[25]=i.aiFocusRefreshIntervalMs,e[26]=R);let z;e[27]===R?z=e[28]:(z=(0,P.jsx)(se,{className:`w-48`,"aria-label":`AI Focus refresh interval`,children:(0,P.jsx)(C,{children:R})}),e[27]=R,e[28]=z);let B;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,P.jsx)(oe,{align:`end`,alignItemWithTrigger:!1,children:pe.map(be)}),e[29]=B):B=e[29];let V;e[30]!==z||e[31]!==I||e[32]!==L?(V=(0,P.jsxs)(w,{value:I,onValueChange:L,children:[z,B]}),e[30]=z,e[31]=I,e[32]=L,e[33]=V):V=e[33];let H;e[34]===x?H=e[35]:(H=()=>void x(),e[34]=x,e[35]=H);let U=g?`size-4 animate-spin`:`size-4`,W;e[36]===U?W=e[37]:(W=(0,P.jsx)(ue,{className:U}),e[36]=U,e[37]=W);let G;e[38]!==g||e[39]!==H||e[40]!==W?(G=(0,P.jsx)(f,{size:`icon-sm`,variant:`outline`,"aria-label":`Refresh AI Focus now`,disabled:g,onClick:H,children:W}),e[38]=g,e[39]=H,e[40]=W,e[41]=G):G=e[41];let K;e[42]!==V||e[43]!==G?(K=(0,P.jsx)(k,{title:`Refresh rankings`,description:`Automatic checks use only nodes that are already connected. Manual-only never starts a connection.`,control:(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[V,G]})}),e[42]=V,e[43]=G,e[44]=K):K=e[44];let q;e[45]!==K||e[46]!==j?(q=(0,P.jsxs)(O,{owner:`client`,title:`AI Focus`,icon:E,children:[j,K]}),e[45]=K,e[46]=j,e[47]=q):q=e[47];let J;e[48]===y?J=e[49]:(J=y.length>0?y.map(ye):(0,P.jsx)(k,{title:`No environments available`,description:`Connect a node to configure its Inbox ranking model.`}),e[48]=y,e[49]=J);let Y;e[50]===J?Y=e[51]:(Y=(0,P.jsx)(O,{owner:`node`,title:`Models`,children:J}),e[50]=J,e[51]=Y);let X;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,P.jsx)(re,{className:`size-3.5`}),e[52]=X):X=e[52];let Z;e[53]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,P.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:`Ranking sends only this bounded metadata from each environment. It does not send full chat history, file contents, or message responses.`}),e[53]=Z):Z=e[53];let Q;e[54]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,P.jsx)(O,{owner:`node`,title:`Data sent to the selected model`,icon:X,children:(0,P.jsxs)(`div`,{className:`px-5 py-4`,children:[Z,(0,P.jsx)(`ul`,{className:`grid gap-1.5 text-xs text-foreground/80 sm:grid-cols-2`,children:fe.map(ve)})]})}),e[54]=Q):Q=e[54];let $;return e[55]!==q||e[56]!==Y||e[57]!==T?($=(0,P.jsxs)(de,{children:[T,q,Y,Q]}),e[55]=q,e[56]=Y,e[57]=T,e[58]=$):$=e[58],$}function ve(e){return(0,P.jsxs)(`li`,{className:`flex gap-2`,children:[(0,P.jsx)(`span`,{"aria-hidden":!0,className:`text-muted-foreground`,children:`•`}),(0,P.jsx)(`span`,{children:e})]},e)}function ye(e){return(0,P.jsx)(z,{row:e},e.environmentId)}function be(e){return(0,P.jsx)(S,{hideIndicator:!0,value:String(e.value),children:e.label},e.value)}function xe(e){let[n,r]=e;return{environmentId:n,label:r.label,connected:g(n)!==null&&t(n).phase===`connected`,serverConfig:r.config}}function Se(e){return e.byId}export{B as AiFocusSettings};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$t as t,n}from"./primary-CQh_KHGG.js";import{F as r,O as i,_i as a}from"./src-DHNjfMxR.js";import{$l as o,Aa as s,Ea as c,Hr as l,Kr as u,Na as d,Ql as ee,Qr as f,Vl as p,Vr as te,Zl as ne,b as m,co as re,mr as ie,nu as h,p as g,u as _,wa as v,y}from"./runtime-OM-uAtaj.js";import{t as b}from"./react-CwJFpaho.js";import{t as ae}from"./switch-D9inWKdd.js";import{t as x}from"./compiler-runtime-C4g8XhC5.js";import{a as S,c as C,n as w,o as oe,s as se}from"./badge-BswOCwph.js";import{r as ce,x as T}from"./RootAppShell-DwiWD4Cy.js";import{n as le}from"./capabilities-Bj_X9FZ-.js";import{l as E}from"./SettingsPanels.editor-64bM0lhg.js";import{t as ue}from"./refresh-cw-K_hU8_ld.js";import{t as D}from"./toastHelpers-CSQRKo4F.js";import{i as O,n as de,r as k}from"./settingsLayout-BbjDM-p0.js";var fe=[`Thread titles`,`Project or repository names`,`Branch names`,`Bucketed creation and activity age`,`Running, approval, input, queue, failure, and delivery state`,`Pull request or linked issue title and state`,`Up to 600 characters from the latest user request`],pe=[{value:0,label:`Manual only`},{value:3e5,label:`Every 5 minutes`},{value:6e5,label:`Every 10 minutes`},{value:18e5,label:`Every 30 minutes`},{value:36e5,label:`Every hour`},{value:216e5,label:`Every 6 hours`},{value:864e5,label:`Every 24 hours`}];function me(e){return{...e.enabled===void 0?{}:{aiFocusEnabled:e.enabled},...e.refreshIntervalMs===void 0?{}:{aiFocusRefreshIntervalMs:e.refreshIntervalMs}}}function he(e){return e.map(e=>{let t=e.serverConfig,n=t?.environment.capabilities.threadPriorityRanking===!0,r=t?.settings.inboxPriorityModelSelection??null,i=t?r??t.settings.textGenerationModelSelection:null,a=i===null?null:t?.providers.find(e=>e.instanceId===i.instanceId)??null;return{...e,supported:n,inherited:r===null,effectiveModelSelection:i,effectiveProvider:a}})}function A(e,t){let n=e.find(e=>e.instanceId===t);return!!(n&&n.enabled&&n.installed&&n.availability!==`unavailable`&&n.status!==`disabled`&&n.status!==`error`)}function j(e){if(e.selection!==null&&!A(e.serverConfig.providers,e.selection.instanceId))throw Error(`That provider instance is not available on this environment.`);return{inboxPriorityModelSelection:e.selection}}var M=x(),N=e(b(),1),P=o();function F(e){return e instanceof Error?e.message:`An unexpected error occurred.`}function ge(e){let t=(0,M.c)(12),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,P.jsx)(T,{className:`size-3.5`}),t[0]=n):n=t[0];let i;t[1]===e.value?i=t[2]:(i=e.value?.toString()??`off`,t[1]=e.value,t[2]=i);let a;t[3]===e?a=t[4]:(a=t=>{let n=t===`off`?null:Number(t);(n===null||r.includes(n))&&e.onChange(n)},t[3]=e,t[4]=a);let o=e.value===null?`Off`:`After ${e.value} ${e.value===1?`day`:`days`}`,s;t[5]===o?s=t[6]:(s=(0,P.jsx)(se,{className:`w-48`,"aria-label":`Auto-settle inactive tasks`,children:(0,P.jsx)(C,{children:o})}),t[5]=o,t[6]=s);let c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,P.jsxs)(oe,{align:`end`,alignItemWithTrigger:!1,children:[(0,P.jsx)(S,{hideIndicator:!0,value:`off`,children:`Off`}),r.map(I)]}),t[7]=c):c=t[7];let l;return t[8]!==i||t[9]!==a||t[10]!==s?(l=(0,P.jsx)(O,{owner:`client`,title:`Housekeeping`,icon:n,children:(0,P.jsx)(k,{title:`Auto-settle inactive tasks`,description:`Move inactive tasks to Settled after their last message or turn. Running work, queued messages, pending input, open pull requests, and tasks kept active are protected.`,control:(0,P.jsxs)(w,{value:i,onValueChange:a,children:[s,c]})})}),t[8]=i,t[9]=a,t[10]=s,t[11]=l):l=t[11],l}function I(e){return(0,P.jsxs)(S,{hideIndicator:!0,value:String(e),children:[`After `,e,` `,e===1?`day`:`days`]},e)}function _e(){let e=(0,M.c)(2),[t,n]=(0,N.useState)(L),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>y(()=>{n(_())}),i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,N.useEffect)(r,i),t}function L(){return _()}function R({row:e}){let[t,n]=(0,N.useState)(!1),r=e.serverConfig;if(!r||!e.effectiveModelSelection)return null;let a={...r.settings,...i},o=e.effectiveModelSelection,l=d(s(r.providers)),ee=v(a,r.providers,o.instanceId,o.model),p=async t=>{n(!0);try{let n=j({serverConfig:r,selection:t});await m(e.environmentId,n)}catch(t){u.add(D({type:`error`,title:`Could not update ${e.label}`,description:F(t)}))}finally{n(!1)}};return(0,P.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[(0,P.jsx)(E,{activeInstanceId:o.instanceId,model:o.model,modelOptions:o.options,lockedProvider:null,instanceEntries:l,modelOptionsByInstance:ee,compact:!0,disabled:t||!e.connected,...e.connected?{}:{disabledReason:`Connect this environment to change its model.`},onInstanceModelChange:(e,t,n)=>{p(c({...a,textGenerationModelSelection:h(e,t,n)},r.providers))}}),e.inherited?null:(0,P.jsx)(f,{size:`xs`,variant:`ghost`,disabled:t||!e.connected,onClick:()=>void p(null),children:`Use text model`})]})}function z(e){let t=(0,M.c)(6),{row:n}=e,r=n.effectiveProvider?.displayName??n.effectiveProvider?.driver??null,i=n.connected?n.supported?n.inherited?`Inherits the text-generation model${r?` (${r})`:``}.`:`Uses a separate model for Inbox ranking.`:`This node version does not support AI Focus ranking. Other supported nodes still work.`:`Offline — ranking waits for an existing connection.`,a;t[0]===n?a=t[1]:(a=n.supported?(0,P.jsx)(R,{row:n}):void 0,t[0]=n,t[1]=a);let o;return t[2]!==n.label||t[3]!==i||t[4]!==a?(o=(0,P.jsx)(k,{title:n.label,description:i,control:a}),t[2]=n.label,t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function B(){let e=(0,M.c)(59),t=ne(),r=ee(),i=te(),{updateSettings:o}=l(),s=p(),c;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=n(),e[0]=c):c=e[0];let d=c,m=ie(Se),h=_e(),[g,_]=(0,N.useState)(!1);d?.environmentId,d?.label;let v;bb0:{if(t===`node`&&r){let t=r.connected&&r.canManage!==!1,n;e[1]!==t||e[2]!==r.environmentId||e[3]!==r.nodeLabel||e[4]!==r.serverConfig?(n=he([{environmentId:r.environmentId,label:r.nodeLabel,connected:t,serverConfig:r.serverConfig}]),e[1]=t,e[2]=r.environmentId,e[3]=r.nodeLabel,e[4]=r.serverConfig,e[5]=n):n=e[5],v=n;break bb0}let n;if(e[6]!==h||e[7]!==s||e[8]!==m){let t=new Map;d?.environmentId&&t.set(d.environmentId,{label:d.label,config:s});for(let e of h){if(t.has(e.environmentId))continue;let n=m[e.environmentId];t.set(e.environmentId,{label:n?.descriptor?.label??e.knownEnvironment.label,config:n?.serverConfig??null})}for(let[e,n]of Object.entries(m)){let r=a.make(e);t.has(r)||t.set(r,{label:n.descriptor?.label??`Saved environment`,config:n.serverConfig})}n=he([...t].map(xe)),e[6]=h,e[7]=s,e[8]=m,e[9]=n}else n=e[9];v=n}let y=v,b;e[10]===y?b=e[11]:(b=async()=>{_(!0);let e=await ce(),t=e.failures;t.length>0?u.add(D({type:`error`,title:`AI Focus refresh failed`,description:t.map(e=>{let{environmentId:t,error:n}=e;return`${y.find(e=>e.environmentId===t)?.label??`Environment`}: ${F(n)}`}).join(` · `)})):u.add(D({type:`success`,title:e.attempted.length>0?`AI Focus refreshed`:`No connected supported nodes`,description:e.attempted.length>0?`Updated ${e.succeeded.length} environment${e.succeeded.length===1?``:`s`}.`:`Connect a supported node to rank its Inbox.`})),_(!1)},e[10]=y,e[11]=b);let x=b,S;e[12]===o?S=e[13]:(S=e=>o({sidebarAutoSettleAfterDays:e}),e[12]=o,e[13]=S);let T;e[14]!==i.sidebarAutoSettleAfterDays||e[15]!==S?(T=(0,P.jsx)(ge,{value:i.sidebarAutoSettleAfterDays,onChange:S}),e[14]=i.sidebarAutoSettleAfterDays,e[15]=S,e[16]=T):T=e[16];let E;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,P.jsx)(le,{className:`size-3.5`}),e[17]=E):E=e[17];let A;e[18]===o?A=e[19]:(A=e=>o(me({enabled:e})),e[18]=o,e[19]=A);let j;e[20]!==i.aiFocusEnabled||e[21]!==A?(j=(0,P.jsx)(k,{title:`Prioritize the Inbox`,description:`Create a Focus section from pinned, actionable, and model-ranked threads. Focused threads are removed from Active, never duplicated.`,control:(0,P.jsx)(ae,{"aria-label":`Enable AI Focus`,checked:i.aiFocusEnabled,onCheckedChange:A})}),e[20]=i.aiFocusEnabled,e[21]=A,e[22]=j):j=e[22];let I=String(i.aiFocusRefreshIntervalMs),L;e[23]===o?L=e[24]:(L=e=>{let t=Number(e);o(me({refreshIntervalMs:t}))},e[23]=o,e[24]=L);let R;e[25]===i.aiFocusRefreshIntervalMs?R=e[26]:(R=pe.find(e=>e.value===i.aiFocusRefreshIntervalMs)?.label??`Every 10 minutes`,e[25]=i.aiFocusRefreshIntervalMs,e[26]=R);let z;e[27]===R?z=e[28]:(z=(0,P.jsx)(se,{className:`w-48`,"aria-label":`AI Focus refresh interval`,children:(0,P.jsx)(C,{children:R})}),e[27]=R,e[28]=z);let B;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,P.jsx)(oe,{align:`end`,alignItemWithTrigger:!1,children:pe.map(be)}),e[29]=B):B=e[29];let V;e[30]!==z||e[31]!==I||e[32]!==L?(V=(0,P.jsxs)(w,{value:I,onValueChange:L,children:[z,B]}),e[30]=z,e[31]=I,e[32]=L,e[33]=V):V=e[33];let H;e[34]===x?H=e[35]:(H=()=>void x(),e[34]=x,e[35]=H);let U=g?`size-4 animate-spin`:`size-4`,W;e[36]===U?W=e[37]:(W=(0,P.jsx)(ue,{className:U}),e[36]=U,e[37]=W);let G;e[38]!==g||e[39]!==H||e[40]!==W?(G=(0,P.jsx)(f,{size:`icon-sm`,variant:`outline`,"aria-label":`Refresh AI Focus now`,disabled:g,onClick:H,children:W}),e[38]=g,e[39]=H,e[40]=W,e[41]=G):G=e[41];let K;e[42]!==V||e[43]!==G?(K=(0,P.jsx)(k,{title:`Refresh rankings`,description:`Automatic checks use only nodes that are already connected. Manual-only never starts a connection.`,control:(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[V,G]})}),e[42]=V,e[43]=G,e[44]=K):K=e[44];let q;e[45]!==K||e[46]!==j?(q=(0,P.jsxs)(O,{owner:`client`,title:`AI Focus`,icon:E,children:[j,K]}),e[45]=K,e[46]=j,e[47]=q):q=e[47];let J;e[48]===y?J=e[49]:(J=y.length>0?y.map(ye):(0,P.jsx)(k,{title:`No environments available`,description:`Connect a node to configure its Inbox ranking model.`}),e[48]=y,e[49]=J);let Y;e[50]===J?Y=e[51]:(Y=(0,P.jsx)(O,{owner:`node`,title:`Models`,children:J}),e[50]=J,e[51]=Y);let X;e[52]===Symbol.for(`react.memo_cache_sentinel`)?(X=(0,P.jsx)(re,{className:`size-3.5`}),e[52]=X):X=e[52];let Z;e[53]===Symbol.for(`react.memo_cache_sentinel`)?(Z=(0,P.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:`Ranking sends only this bounded metadata from each environment. It does not send full chat history, file contents, or message responses.`}),e[53]=Z):Z=e[53];let Q;e[54]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,P.jsx)(O,{owner:`node`,title:`Data sent to the selected model`,icon:X,children:(0,P.jsxs)(`div`,{className:`px-5 py-4`,children:[Z,(0,P.jsx)(`ul`,{className:`grid gap-1.5 text-xs text-foreground/80 sm:grid-cols-2`,children:fe.map(ve)})]})}),e[54]=Q):Q=e[54];let $;return e[55]!==q||e[56]!==Y||e[57]!==T?($=(0,P.jsxs)(de,{children:[T,q,Y,Q]}),e[55]=q,e[56]=Y,e[57]=T,e[58]=$):$=e[58],$}function ve(e){return(0,P.jsxs)(`li`,{className:`flex gap-2`,children:[(0,P.jsx)(`span`,{"aria-hidden":!0,className:`text-muted-foreground`,children:`•`}),(0,P.jsx)(`span`,{children:e})]},e)}function ye(e){return(0,P.jsx)(z,{row:e},e.environmentId)}function be(e){return(0,P.jsx)(S,{hideIndicator:!0,value:String(e.value),children:e.label},e.value)}function xe(e){let[n,r]=e;return{environmentId:n,label:r.label,connected:g(n)!==null&&t(n).phase===`connected`,serverConfig:r.config}}function Se(e){return e.byId}export{B as AiFocusSettings};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t}from"./runtime-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$l as t}from"./runtime-OM-uAtaj.js";import{t as n}from"./react-CwJFpaho.js";import{t as r}from"./compiler-runtime-C4g8XhC5.js";var i=r(),a=e(n(),1),o=t(),s=250;function c(e){let t=(0,i.c)(17),{children:n}=e,r=(0,a.useRef)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c={height:null,isClipping:!1},t[0]=c):c=t[0];let[d,f]=(0,a.useState)(c),p;t[1]===d.isClipping?p=t[2]:(p=()=>{if(!d.isClipping)return;let e=window.setTimeout(()=>{f(u)},s);return()=>window.clearTimeout(e)},t[1]=d.isClipping,t[2]=p);let m;t[3]!==d.height||t[4]!==d.isClipping?(m=[d.height,d.isClipping],t[3]=d.height,t[4]=d.isClipping,t[5]=m):m=t[5],(0,a.useEffect)(p,m);let h,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{let e=r.current;if(!e)return;let t=null,n=null,i=()=>{let t=Math.ceil(e.scrollHeight||e.getBoundingClientRect().height);f(e=>e.height===t?e:{height:t,isClipping:e.height!==null})},a=()=>{t!==null&&(window.cancelAnimationFrame(t),t=null),n!==null&&(window.cancelAnimationFrame(n),n=null)},o=()=>{a(),i(),t=window.requestAnimationFrame(()=>{t=null,i(),n=window.requestAnimationFrame(()=>{n=null,i()})})};o();let s=new ResizeObserver(o);return s.observe(e),()=>{s.disconnect(),a()}},g=[],t[6]=h,t[7]=g):(h=t[6],g=t[7]),(0,a.useLayoutEffect)(h,g);let _;t[8]!==d.height||t[9]!==d.isClipping?(_=d.height===null?void 0:{height:d.height,overflow:d.isClipping?`hidden`:`visible`},t[8]=d.height,t[9]=d.isClipping,t[10]=_):_=t[10];let v;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(v=e=>{e.target===e.currentTarget&&e.propertyName===`height`&&f(l)},t[11]=v):v=t[11];let y;t[12]===n?y=t[13]:(y=(0,o.jsx)(`div`,{ref:r,children:n}),t[12]=n,t[13]=y);let b;return t[14]!==_||t[15]!==y?(b=(0,o.jsx)(`div`,{"data-slot":`animated-height`,className:`transition-[height] duration-200 ease-out motion-reduce:transition-none`,style:_,onTransitionEnd:v,children:y}),t[14]=_,t[15]=y,t[16]=b):b=t[16],b}function l(e){return e.isClipping?{...e,isClipping:!1}:e}function u(e){return e.isClipping?{...e,isClipping:!1}:e}export{c as t};
|