@ashlr/hub 3.11.2 → 3.11.3
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/CHANGELOG.md +8 -0
- package/dist/build-identity.json +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-_DhtX2gO.js → ActionMenu-FxXeRbPx.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-_DhtX2gO.js.map → ActionMenu-FxXeRbPx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Advanced-CAAfaBke.js → Advanced-D_eS4472.js} +2 -2
- package/dist/core/web/public/next/assets/{Advanced-CAAfaBke.js.map → Advanced-D_eS4472.js.map} +1 -1
- package/dist/core/web/public/next/assets/{App-BAywyjE8.js → App-Cj4zKbG3.js} +2 -2
- package/dist/core/web/public/next/assets/{App-BAywyjE8.js.map → App-Cj4zKbG3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AppsSection-CUypKeog.js → AppsSection-Ddu_RCQE.js} +2 -2
- package/dist/core/web/public/next/assets/{AppsSection-CUypKeog.js.map → AppsSection-Ddu_RCQE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-CblDqC8Q.js → AreaTrend-CDxrQU4b.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-CblDqC8Q.js.map → AreaTrend-CDxrQU4b.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-DuQkHGD_.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-D3d8lYO3.js.map → AutonomySection-DuQkHGD_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BranchBar-DU0jAV1E.js → BranchBar-CLsvOcyK.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-DU0jAV1E.js.map → BranchBar-CLsvOcyK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-Mm1ZL4u6.js → BudgetControl-TL3FeZ1D.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-Mm1ZL4u6.js.map → BudgetControl-TL3FeZ1D.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BurnDown-C1fgcFqo.js → BurnDown-sFXkUGdB.js} +2 -2
- package/dist/core/web/public/next/assets/{BurnDown-C1fgcFqo.js.map → BurnDown-sFXkUGdB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-DqgLUZvd.js → Button-HHXgoXGr.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-DqgLUZvd.js.map → Button-HHXgoXGr.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-nWFHvqFB.js → CapacityStrip-qReu0RaF.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-nWFHvqFB.js.map → CapacityStrip-qReu0RaF.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ChatSection-DUZNpiVr.js → ChatSection-DZuZfTaC.js} +3 -3
- package/dist/core/web/public/next/assets/{ChatSection-DUZNpiVr.js.map → ChatSection-DZuZfTaC.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CloudBudgetForm-2OW38o_C.js → CloudBudgetForm-DJbiT1wi.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-2OW38o_C.js.map → CloudBudgetForm-DJbiT1wi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandPalette-C5w2o1-r.js → CommandPalette-zYLFZRnj.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandPalette-C5w2o1-r.js.map → CommandPalette-zYLFZRnj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandSection-Bx2knNqY.js → CommandSection-rIeMK5Ch.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandSection-Bx2knNqY.js.map → CommandSection-rIeMK5Ch.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ConfirmDialog-B7ZwCQOX.js → ConfirmDialog-DLrLKM0c.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-B7ZwCQOX.js.map → ConfirmDialog-DLrLKM0c.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BpgcEW6b.js → Dialog-BS9Dxi3G.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BpgcEW6b.js.map → Dialog-BS9Dxi3G.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-DpqRUtCx.js → DiffPane-TOmUf3b2.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-DpqRUtCx.js.map → DiffPane-TOmUf3b2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-CoV5-nUf.js → DiffViewer-BpH56302.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-CoV5-nUf.js.map → DiffViewer-BpH56302.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DockHost-C0Pq7Jak.js → DockHost-DzkzR-HD.js} +2 -2
- package/dist/core/web/public/next/assets/{DockHost-C0Pq7Jak.js.map → DockHost-DzkzR-HD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DYW29ncw.js → EmptyState-BqR5YAmf.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DYW29ncw.js.map → EmptyState-BqR5YAmf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-DVx6oHzp.js → Epistemic-dhvDTwAZ.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-DVx6oHzp.js.map → Epistemic-dhvDTwAZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{FleetSection-DSETviPK.js → FleetSection-ViAb549H.js} +3 -3
- package/dist/core/web/public/next/assets/{FleetSection-DSETviPK.js.map → FleetSection-ViAb549H.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-DxiGqJrt.js → Funnel-D2u7Wlzc.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-DxiGqJrt.js.map → Funnel-D2u7Wlzc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GearTray-C3I89sIt.js → GearTray-Cb2npoxM.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-C3I89sIt.js.map → GearTray-Cb2npoxM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-C3m2bPEz.js → GrowthSection-C5aDPs8B.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-C3m2bPEz.js.map → GrowthSection-C5aDPs8B.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-Bjb96a0N.js → HandoffDialog-BF3AYg-X.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-Bjb96a0N.js.map → HandoffDialog-BF3AYg-X.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-ekTehVaH.js → Input-B5dmGLZx.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-ekTehVaH.js.map → Input-B5dmGLZx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{LeaderCard-85VBbbaZ.js → LeaderCard-DZrmjDbI.js} +2 -2
- package/dist/core/web/public/next/assets/{LeaderCard-85VBbbaZ.js.map → LeaderCard-DZrmjDbI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-Bo8j0QPC.js → MatrixHeatmap-BgEUs2Eu.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-Bo8j0QPC.js.map → MatrixHeatmap-BgEUs2Eu.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-DZkiOuoq.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-DvHFaVyp.js.map → McpSection-DZkiOuoq.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-fsY_ltVa.js → MessageMarkdown-BauY8ZTY.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-fsY_ltVa.js.map → MessageMarkdown-BauY8ZTY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DDdtu82l.js → MessageMarkdownRenderer-DLBNLfsn.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DDdtu82l.js.map → MessageMarkdownRenderer-DLBNLfsn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-CeGDXdDM.js → Meter-DNeocJnD.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-CeGDXdDM.js.map → Meter-DNeocJnD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MindSection-CDVhHvXl.js → MindSection-BvJXFjyX.js} +2 -2
- package/dist/core/web/public/next/assets/{MindSection-CDVhHvXl.js.map → MindSection-BvJXFjyX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MutationTokenDialog-DTQzEOHR.js → MutationTokenDialog-mxrw0Yvy.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-DTQzEOHR.js.map → MutationTokenDialog-mxrw0Yvy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-6AuN0BF3.js → NeedsYouDrawer-CO-Balfp.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-6AuN0BF3.js.map → NeedsYouDrawer-CO-Balfp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-ChnRmbSk.js → NeedsYouList-CzDZbzRD.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-ChnRmbSk.js.map → NeedsYouList-CzDZbzRD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NewChatDialog-B06E7sqg.js → NewChatDialog-B8eJjlFf.js} +2 -2
- package/dist/core/web/public/next/assets/{NewChatDialog-B06E7sqg.js.map → NewChatDialog-B8eJjlFf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{OnboardingFlow-C2M3zov9.js → OnboardingFlow-Cij6KWat.js} +2 -2
- package/dist/core/web/public/next/assets/{OnboardingFlow-C2M3zov9.js.map → OnboardingFlow-Cij6KWat.js.map} +1 -1
- package/dist/core/web/public/next/assets/{PreviewPane-Bd6HsX1k.js → PreviewPane-BS-CleCd.js} +2 -2
- package/dist/core/web/public/next/assets/{PreviewPane-Bd6HsX1k.js.map → PreviewPane-BS-CleCd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-Bz7KR5j3.js → ProviderLogo-C5mBg8i0.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-Bz7KR5j3.js.map → ProviderLogo-C5mBg8i0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-CctCuuLy.js → RailStatus-cPRyOmrk.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-CctCuuLy.js.map → RailStatus-cPRyOmrk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-CKY5BGdD.js → RefreshIndicator-CMwSCiz5.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-CKY5BGdD.js.map → RefreshIndicator-CMwSCiz5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CspIsW_G.js → ResourcePoolConsoleApp-BFi1opsC.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CspIsW_G.js.map → ResourcePoolConsoleApp-BFi1opsC.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesChrome-B7fHZ6zX.js → ResourcesChrome-BJCauW_t.js} +3 -3
- package/dist/core/web/public/next/assets/{ResourcesChrome-B7fHZ6zX.js.map → ResourcesChrome-BJCauW_t.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesDrawer-B7-N9n7-.js → ResourcesDrawer-BDecg6nO.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcesDrawer-B7-N9n7-.js.map → ResourcesDrawer-BDecg6nO.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C_B11J0s.js → RouteErrorBoundary-DYtwc2ja.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C_B11J0s.js.map → RouteErrorBoundary-DYtwc2ja.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-_juw4EXd.js → RunInCloudAction-BEGEEM8O.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-_juw4EXd.js.map → RunInCloudAction-BEGEEM8O.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-D_YXvkPy.js → SeatSelector-CYHRR7Wp.js} +2 -2
- package/dist/core/web/public/next/assets/{SeatSelector-D_YXvkPy.js.map → SeatSelector-CYHRR7Wp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-DnKP6rr7.js → Segmented-BE53BenI.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-DnKP6rr7.js.map → Segmented-BE53BenI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DlbUupTX.js → Select-BwSGkHCS.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DlbUupTX.js.map → Select-BwSGkHCS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-DnuTZACL.js → SessionGate-e0dFJm9d.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-DnuTZACL.js.map → SessionGate-e0dFJm9d.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-C33-k-Q5.js → SessionInsightChip-CxlSyueJ.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-C33-k-Q5.js.map → SessionInsightChip-CxlSyueJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DhhR9Csg.js → SessionSearch-_yp7S2TP.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DhhR9Csg.js.map → SessionSearch-_yp7S2TP.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-C0xQvCz3.js → SettingsSection-wGnpWeGW.js} +2 -2
- package/dist/core/web/public/next/assets/{SettingsSection-C0xQvCz3.js.map → SettingsSection-wGnpWeGW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Sheet-BvNYOYv5.js → Sheet-DVP2Mgy6.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-BvNYOYv5.js.map → Sheet-DVP2Mgy6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-1nUBVO-Z.js → ShortcutsOverlay-BcIcoClX.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-1nUBVO-Z.js.map → ShortcutsOverlay-BcIcoClX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Sidebar-YrVvvBNM.js → Sidebar-DjQOqPbm.js} +3 -3
- package/dist/core/web/public/next/assets/{Sidebar-YrVvvBNM.js.map → Sidebar-DjQOqPbm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-B2c-dbQb.js → Slider-BypUWjpH.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-B2c-dbQb.js.map → Slider-BypUWjpH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-Q9YYkijx.js → StatusBadge-HCZp416_.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-Q9YYkijx.js.map → StatusBadge-HCZp416_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-Ci-C0GUG.js → StepBand-Duz1PUes.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-Ci-C0GUG.js.map → StepBand-Duz1PUes.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-DBovMq4P.js → Surface-B75lVfzm.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-DBovMq4P.js.map → Surface-B75lVfzm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-Cdc4TqDe.js → Swimlane-DGcIcnNA.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-Cdc4TqDe.js.map → Swimlane-DGcIcnNA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CUrvzO2k.js → Switch-iveI-8NY.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CUrvzO2k.js.map → Switch-iveI-8NY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-Bv8u6APt.js → Tag-DH15CUJp.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-Bv8u6APt.js.map → Tag-DH15CUJp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-BE4Xlqi5.js → TerminalPane-MQT-veKZ.js} +2 -2
- package/dist/core/web/public/next/assets/{TerminalPane-BE4Xlqi5.js.map → TerminalPane-MQT-veKZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BGwejf0m.js → UniverseConsoleApp-C8yQ0AaR.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BGwejf0m.js.map → UniverseConsoleApp-C8yQ0AaR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-CgKa-WXC.js → UniverseView-_nPURPqe.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseView-CgKa-WXC.js.map → UniverseView-_nPURPqe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UsageSection-CazsHm1f.js → UsageSection-CqxRGJ40.js} +2 -2
- package/dist/core/web/public/next/assets/{UsageSection-CazsHm1f.js.map → UsageSection-CqxRGJ40.js.map} +1 -1
- package/dist/core/web/public/next/assets/{VerseConsoleApp-CTF3Shs0.js → VerseConsoleApp-DTjDpGCd.js} +3 -3
- package/dist/core/web/public/next/assets/{VerseConsoleApp-CTF3Shs0.js.map → VerseConsoleApp-DTjDpGCd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Workspace-CgdyXiEV.js → Workspace-DfcFGzME.js} +5 -5
- package/dist/core/web/public/next/assets/{Workspace-CgdyXiEV.js.map → Workspace-DfcFGzME.js.map} +1 -1
- package/dist/core/web/public/next/assets/{actions-MtxBGS5B.js → actions-tWevL9HV.js} +2 -2
- package/dist/core/web/public/next/assets/{actions-MtxBGS5B.js.map → actions-tWevL9HV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{budget-queries-CP7hgR-p.js → budget-queries-V3wcJVK_.js} +2 -2
- package/dist/core/web/public/next/assets/{budget-queries-CP7hgR-p.js.map → budget-queries-V3wcJVK_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-fHfu5cph.js → capacity-strip-model-BDbmQ3e3.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-fHfu5cph.js.map → capacity-strip-model-BDbmQ3e3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-Bis9WSiS.js → charts-CfAjuKMv.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-Bis9WSiS.js.map → charts-CfAjuKMv.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-BsOepFz6.js → cloud-queries-Br_r0UAz.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-BsOepFz6.js.map → cloud-queries-Br_r0UAz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud.module-DoFnr8ZH.js → cloud.module-ascz58c3.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud.module-DoFnr8ZH.js.map → cloud.module-ascz58c3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-bus-CMvbYP5K.js → command-bus-xYZoK9nQ.js} +2 -2
- package/dist/core/web/public/next/assets/{command-bus-CMvbYP5K.js.map → command-bus-xYZoK9nQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-Ci3Ch9t5.js → context-model-BC-HOmPo.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-Ci3Ch9t5.js.map → context-model-BC-HOmPo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-CjiJTnf1.js → context-model-CIBmSugV.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-CjiJTnf1.js.map → context-model-CIBmSugV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-queries-BDXT6LQ3.js → context-queries-CrPcHWTz.js} +2 -2
- package/dist/core/web/public/next/assets/{context-queries-BDXT6LQ3.js.map → context-queries-CrPcHWTz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-Dv-h1Clu.js → control-queries-CmgBgKV7.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-Dv-h1Clu.js.map → control-queries-CmgBgKV7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-t--Eugrd.js → dock-icons-CUh8dOxJ.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-t--Eugrd.js.map → dock-icons-CUh8dOxJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-store-qIu7kSQE.js → dock-store-B2vlxqPu.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-store-qIu7kSQE.js.map → dock-store-B2vlxqPu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-IRbwfhkR.js → fleet-model-7i-FbzKI.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-IRbwfhkR.js.map → fleet-model-7i-FbzKI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-7FVNByX1.js → fleet-queries-DzGoqq8X.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-7FVNByX1.js.map → fleet-queries-DzGoqq8X.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-QqQxQdvH.js → focus-trap-HtcoXeEq.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-QqQxQdvH.js.map → focus-trap-HtcoXeEq.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-CaMmVQCn.js → format-BkWdOQDL.js} +2 -2
- package/dist/core/web/public/next/assets/{format-CaMmVQCn.js.map → format-BkWdOQDL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{git-model-B4S_GUNA.js → git-model-bk_RXh3y.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-B4S_GUNA.js.map → git-model-bk_RXh3y.js.map} +1 -1
- package/dist/core/web/public/next/assets/{global-BkNl4e6E.js → global-oEl9Qj8u.js} +2 -2
- package/dist/core/web/public/next/assets/{global-BkNl4e6E.js.map → global-oEl9Qj8u.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-action-DHiL8tY5.js → guarded-action-OzqcPjmh.js} +3 -3
- package/dist/core/web/public/next/assets/{guarded-action-DHiL8tY5.js.map → guarded-action-OzqcPjmh.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-runners-DmGEkM2P.js → guarded-runners-LHLXmXIk.js} +2 -2
- package/dist/core/web/public/next/assets/{guarded-runners-DmGEkM2P.js.map → guarded-runners-LHLXmXIk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icon-base-NtFmP2yB.js → icon-base-DvM1eI5V.js} +2 -2
- package/dist/core/web/public/next/assets/{icon-base-NtFmP2yB.js.map → icon-base-DvM1eI5V.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-C5EFt_Ts.js → icons-DEQa2rTx.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-C5EFt_Ts.js.map → icons-DEQa2rTx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-DbDw9UAs.js → index-BVxOlseC.js} +3 -3
- package/dist/core/web/public/next/assets/{index-DbDw9UAs.js.map → index-BVxOlseC.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-DEwrl7_A.js → live-model-bmsJgnYD.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-DEwrl7_A.js.map → live-model-bmsJgnYD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-CLhqMQak.js → mind.module-gTGAuJt1.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-CLhqMQak.js.map → mind.module-gTGAuJt1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mutations-Kvzsg-iK.js → mutations-C5S7okTW.js} +2 -2
- package/dist/core/web/public/next/assets/{mutations-Kvzsg-iK.js.map → mutations-C5S7okTW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-C0IunEYF.js → nav-NVtnuG7A.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-C0IunEYF.js.map → nav-NVtnuG7A.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-C_AfcL7q.js → overnight-queries-DGm3qL1b.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-C_AfcL7q.js.map → overnight-queries-DGm3qL1b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{preloaded-CctOitLu.js → preloaded-Cwf9rsnZ.js} +2 -2
- package/dist/core/web/public/next/assets/{preloaded-CctOitLu.js.map → preloaded-Cwf9rsnZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-DyCKYSBG.js +1 -0
- package/dist/core/web/public/next/assets/{queries-THD05gHP.js → queries-CYisSAAB.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-THD05gHP.js.map → queries-CYisSAAB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-BVPu0SME.js → reasoning-pref-BUcFF_5G.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-BVPu0SME.js.map → reasoning-pref-BUcFF_5G.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-wCT5b4m3.js → reveal-anchor-D-tV8xau.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-wCT5b4m3.js.map → reveal-anchor-D-tV8xau.js.map} +1 -1
- package/dist/core/web/public/next/assets/{seat-subscription-CR_VylsK.js → seat-subscription-B-f9ViU2.js} +2 -2
- package/dist/core/web/public/next/assets/{seat-subscription-CR_VylsK.js.map → seat-subscription-B-f9ViU2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{section-visibility-B0xXUQJ0.js → section-visibility-Yctxu-if.js} +2 -2
- package/dist/core/web/public/next/assets/{section-visibility-B0xXUQJ0.js.map → section-visibility-Yctxu-if.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-C5wVXGpb.js → sidebar-model-DQ-FyBHW.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-C5wVXGpb.js.map → sidebar-model-DQ-FyBHW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-DDd8cEoh.js → slots-BhP8b8tf.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-DDd8cEoh.js.map → slots-BhP8b8tf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-BFxAlefI.js → surface-data-DTI7LjvH.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-BFxAlefI.js.map → surface-data-DTI7LjvH.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CdUEBFrl.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-CHusyO9q.js.map → surface-prefetch-CdUEBFrl.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-DvkWveXs.js → tasks-model-BKDNqmmt.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-DvkWveXs.js.map → tasks-model-BKDNqmmt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-Dp6pJgV2.js → terminal-icons-D2xe-aM1.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-Dp6pJgV2.js.map → terminal-icons-D2xe-aM1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{usage-queries-CUTmnegA.js → usage-queries-BZuAANlI.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-CUTmnegA.js.map → usage-queries-BZuAANlI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-UCX2u1t1.js → use-guarded-action-Cf4MeNBa.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-UCX2u1t1.js.map → use-guarded-action-Cf4MeNBa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-OXAjob3y.js → use-ticker-D9yi49my.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-OXAjob3y.js.map → use-ticker-D9yi49my.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-CDDRAoKH.js → use-token-gate-DqrSXdX6.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-CDDRAoKH.js.map → use-token-gate-DqrSXdX6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useChartWidth-D9M7kUw7.js → useChartWidth-owwodNVz.js} +2 -2
- package/dist/core/web/public/next/assets/{useChartWidth-D9M7kUw7.js.map → useChartWidth-owwodNVz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-B2dCVcj9.js → useSeatsRefresh-DgFy-Ph4.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-B2dCVcj9.js.map → useSeatsRefresh-DgFy-Ph4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-BL3CljSI.js → useVerseTranscript-CDYrrWOO.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-BL3CljSI.js.map → useVerseTranscript-CDYrrWOO.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-DASWdYuE.js → verse-icons-F9VwX07_.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-DASWdYuE.js.map → verse-icons-F9VwX07_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-model-BQ0Y2CSr.js → verse-model-DyCwZF-M.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-model-BQ0Y2CSr.js.map → verse-model-DyCwZF-M.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-ui-store-D7YXi63q.js → verse-ui-store-62DxpVHS.js} +3 -3
- package/dist/core/web/public/next/assets/{verse-ui-store-D7YXi63q.js.map → verse-ui-store-62DxpVHS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{viewport-BYGH5EgA.js → viewport-nTubFCwf.js} +2 -2
- package/dist/core/web/public/next/assets/{viewport-BYGH5EgA.js.map → viewport-nTubFCwf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-AsqwWCUi.js → warmup-HG5vYbsN.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-AsqwWCUi.js.map → warmup-HG5vYbsN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-CXorJr0G.js → workspace-model-CbhdPhei.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-CXorJr0G.js.map → workspace-model-CbhdPhei.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-D3d8lYO3.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-DvHFaVyp.js +0 -2
- package/dist/core/web/public/next/assets/primitives-CbAGCNKt.js +0 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js +0 -2
package/dist/core/web/public/next/assets/{AppsSection-CUypKeog.js → AppsSection-Ddu_RCQE.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,n as t,s as n}from"./index-DbDw9UAs.js";import{D as r,F as i,K as a,U as o,c as s,i as c,l,m as u,o as d,p as f}from"./global-BkNl4e6E.js";import{t as p}from"./Dialog-BpgcEW6b.js";import{t as m}from"./MutationTokenDialog-DTQzEOHR.js";import{s as h,v as g}from"./workbench-types-DzN-5trg.js";import{s as _}from"./dock-store-qIu7kSQE.js";import{C as v}from"./verse-ui-store-D7YXi63q.js";import{r as y}from"./section-visibility-B0xXUQJ0.js";import{N as b,r as x,x as S}from"./VerseConsoleApp-CTF3Shs0.js";import{a as C,i as ee,n as w,o as T}from"./CapacityStrip-nWFHvqFB.js";import{a as E,i as te,r as D}from"./useSeatsRefresh-B2dCVcj9.js";import{f as ne,t as O}from"./capacity-strip-model-fHfu5cph.js";import{t as k}from"./Button-DqgLUZvd.js";import{a as re,g as ie,h as A,i as j,m as M,n as ae,o as N}from"./icons-C5EFt_Ts.js";import{n as oe,t as P}from"./use-token-gate-CDDRAoKH.js";import{o as se}from"./slots-DDd8cEoh.js";import{t as F}from"./Switch-CUrvzO2k.js";import{t as ce}from"./BudgetControl-Mm1ZL4u6.js";import{t as I}from"./Select-DlbUupTX.js";import{t as L}from"./Input-ekTehVaH.js";import{t as R}from"./Sheet-BvNYOYv5.js";import{a as le,c as z,d as B,f as ue,i as de,l as V,m as H,n as U,o as fe,p as pe,r as W,s as G,t as me,u as he}from"./apps-model-CDFvmsQV.js";var K=n(e(),1),q=t();function ge({tone:e,label:t}){return(0,q.jsxs)(`span`,{className:T.health,"data-tone":e,children:[(0,q.jsx)(`span`,{className:T.healthDot,"aria-hidden":`true`}),t]})}function J({id:e,name:t,monogram:n,engine:r,description:i,version:a,health:o,detail:s,aside:c,children:l}){return(0,q.jsxs)(`li`,{className:T.row,"data-app":e,children:[(0,q.jsx)(C,{monogram:n,engine:r}),(0,q.jsxs)(`div`,{className:T.rowMain,children:[(0,q.jsxs)(`div`,{className:T.rowHead,children:[(0,q.jsx)(`span`,{id:`${e}-name`,className:T.rowName,children:t}),a?(0,q.jsx)(`span`,{className:T.rowVersion,children:a}):null,(0,q.jsx)(ge,{tone:o.tone,label:o.label})]}),(0,q.jsx)(`p`,{className:T.rowDesc,children:i}),s?(0,q.jsx)(`p`,{className:T.rowDetail,children:s}):null,l]}),c?(0,q.jsx)(`div`,{className:T.rowAside,children:c}):null]})}function Y({id:e,title:t,caveat:n,action:r,children:i,headingRef:a}){let o=`apps-group-${e}`;return(0,q.jsxs)(`section`,{className:T.group,"aria-labelledby":o,"data-group":e,children:[(0,q.jsxs)(`div`,{className:T.groupHead,children:[(0,q.jsx)(`h3`,{id:o,ref:a,tabIndex:-1,className:T.groupTitle,children:t}),r]}),n?(0,q.jsx)(`p`,{className:T.caveat,children:n}):null,(0,q.jsx)(`div`,{className:T.card,children:i})]})}var _e=1200;async function ve(e){try{if(typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=!1;try{n=typeof document.execCommand==`function`&&document.execCommand(`copy`)}catch{n=!1}return t.remove(),n}function X({text:e,label:t,what:n}){let[r,i]=(0,K.useState)(`idle`),a=(0,K.useRef)(null);(0,K.useEffect)(()=>()=>{a.current&&clearTimeout(a.current)},[]);let o=async()=>{let t=await ve(e);i(t?`copied`:`failed`),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(`idle`),_e)};return(0,q.jsxs)(`span`,{className:T.pillWrap,children:[(0,q.jsxs)(`button`,{type:`button`,className:T.pill,"data-state":r,onClick:()=>void o(),"aria-label":`Copy ${n}: ${e}`,title:`Copy: ${e}`,children:[(0,q.jsx)(`code`,{className:T.pillText,children:t??e}),(0,q.jsx)(`span`,{className:T.pillIcon,"aria-hidden":`true`,children:r===`copied`?(0,q.jsx)(ae,{size:14}):(0,q.jsx)(N,{size:14})})]}),(0,q.jsx)(`span`,{className:T.visuallyHidden,role:`status`,"aria-live":`polite`,children:r===`copied`?`Copied`:r===`failed`?`Copy failed — select the command and copy it yourself`:``})]})}var Z=ne;function ye(e){return e.slotLanded??se(`terminal-pane`)?e.terminalAvailable===!0?e.activeSessionId===null?{available:!1,reason:`Open a chat first — its terminal hosts the agent.`}:{available:!0,reason:null}:{available:!1,reason:e.terminalReason??`The Verse terminal needs the desktop app.`}:{available:!1,reason:`This build has no Verse terminal yet.`}}function be(e,t){t.via===`native`&&t.model===null?_({newTab:!0,appId:e}):_({newTab:!0,appId:e,via:`ollama`,...t.model===null?{}:{model:t.model}}),v(`chat`)}var xe=`No accounts connected yet. Sign in to Claude Code, Codex or Grok in a terminal, or start Ollama for local models — they show up here within a minute.`;function Se({seats:e,health:t,budget:n,loading:r,reconnecting:i,onReconnect:a,now:o}){let[s,c]=(0,K.useState)(null),[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),_=oe(),v=(0,K.useId)(),y=(0,K.useId)(),b=(0,K.useRef)(null),x=t!==null,S=async e=>{f(e.seatId),g(null);try{await _.run(`Check ${e.label} again (status commands only — nothing is spent)`,()=>E())&&g({tone:`neutral`,text:`Checked ${e.label} again.`})}catch(e){g({tone:`danger`,text:P(e)})}finally{f(null)}};return(0,q.jsxs)(Y,{id:`accounts`,title:`Accounts`,caveat:`Which accounts you can use now, which are spent and when they reset, and how much autonomy leaves for you.`,children:[r?(0,q.jsx)(`p`,{className:T.loadingLine,"aria-busy":`true`,children:`Reading accounts…`}):(0,q.jsx)(w,{seats:e,health:t,budget:n,labelledBy:`apps-group-accounts`,emptyText:xe,accounts:{healthRead:x,checkingSeatId:d,...o===void 0?{}:{now:o}},renderActions:e=>me(e,O(e,{healthRead:x,...o===void 0?{}:{now:o}})).map(t=>(0,q.jsx)(k,{size:`sm`,variant:t.primary&&t.kind!==`edit-budget`?`primary`:`ghost`,busy:t.kind===`reconnect`&&i===e.seatId||t.kind===`check-again`&&d===e.seatId,"aria-label":`${t.label}: ${e.label}`,onClick:()=>{t.kind===`reconnect`?a(e):t.kind===`check-again`?S(e):t.kind===`fix`?c(e):u(!0)},children:t.label},t.kind))}),(0,q.jsx)(`p`,{className:h?T.accountsNote:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),s!==null&&s.connection?.fixCommand?(0,q.jsx)(p,{open:!0,onClose:()=>c(null),titleId:v,title:`Fix ${s.label}`,description:s.connection.word,initialFocusRef:b,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[s.connection.reasons.map(e=>(0,q.jsx)(`p`,{children:e},e)),(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Run this in a terminal`}),(0,q.jsx)(X,{text:Z(s.connection.fixCommand),what:`the fix for ${s.label}`})]}),(0,q.jsx)(`p`,{children:`Verse shows the command and never runs it for you: it changes which CLI this seat is pinned to.`}),(0,q.jsx)(`div`,{className:T.dialogActions,children:(0,q.jsx)(k,{ref:b,variant:`subtle`,onClick:()=>c(null),children:`Done`})})]})}):null,(0,q.jsx)(R,{open:l,onClose:()=>u(!1),titleId:y,title:`Budget`,description:`How much of each seat autonomy may use, and how much is kept for you.`,width:560,children:l?(0,q.jsx)(ce,{}):null}),(0,q.jsx)(m,{open:_.dialog.open,reason:_.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:_.dialog.onClose,onUnlocked:_.dialog.onUnlocked})]})}var Ce=`verse-apps`,we=`verse-terminal-status`;async function Te(e,t){try{return{available:!0,data:await s(e,t)}}catch(e){if(e instanceof d&&e.status===401||e instanceof DOMException&&e.name===`AbortError`)throw e;return e instanceof d&&e.status===404?{available:!1,reason:`This server is older than Apps & Accounts, so desktop, terminal and local rows are not available.`}:{available:!1,reason:e instanceof d?`The apps check answered HTTP ${e.status}.`:`The apps check could not be reached.`}}}var Q={key:Ce,fetch:e=>Te(h,e)},Ee={key:we,fetch:e=>Te(g,e)};async function De(e,t){let n=r();if(!n)throw new x;let a=await l(e,t,n);return i(),a}async function Oe(){let e=await De(`${h}/refresh`,{});return await a(Ce,D(()=>Promise.resolve({available:!0,data:e}),()=>Q.fetch()),!0),e}async function ke(e,t){let n=await De(`${h}/${encodeURIComponent(e)}/toggle`,{enabled:t,confirm:!0});return a(Ce,()=>Q.fetch(),!0),n}function Ae(e,t){return De(`${h}/${encodeURIComponent(e)}/launch`,{root:t.root,...t.via?{via:t.via}:{},...t.model?{model:t.model}:{}})}function je({row:e,enable:t,busy:n,error:r,onCancel:i,onConfirm:a}){let o=(0,K.useId)(),s=(0,K.useRef)(null);if(e===null||e.toggle===null)return null;let c=t?e.toggle.command:e.toggle.restoreCommand,l=t?e.toggle.restoreCommand:e.toggle.command,u=t?`Turn on “${e.description}”?`:`Restore ${e.name}?`;return(0,q.jsx)(p,{open:!0,onClose:i,titleId:o,title:u,initialFocusRef:s,description:t?`This changes ${e.name}’s own settings until you restore it.`:`This puts ${e.name} back on its own defaults.`,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[e.detail?(0,q.jsx)(`p`,{children:e.detail}):null,t&&e.id===`claude-desktop`?(0,q.jsx)(`p`,{children:`Recommended: leave this off. Claude Desktop would run local models instead of its own, and Verse’s local seats already use Ollama.`}):null,(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Runs`}),(0,q.jsx)(X,{text:Z(c),what:`the command this runs`})]}),(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:t?`Undo later with`:`Turn back on with`}),(0,q.jsx)(X,{text:Z(l),what:t?`the restore command`:`the command that turns it on`})]}),(0,q.jsx)(`p`,{children:`It opens in a Terminal window so you can answer its prompts. Verse does not answer them for you, and nothing changes until you do.`}),r?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:r}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{ref:s,variant:`subtle`,onClick:i,children:`Cancel`}),(0,q.jsx)(k,{variant:t?`danger`:`primary`,busy:n,onClick:a,children:t?`Open in Terminal`:`Restore in Terminal`})]})]})})}function Me({row:e,projects:t,models:n,inVerse:r,busy:i,error:a,onCancel:o,onLaunch:s}){let c=(0,K.useId)(),l=(0,K.useRef)(null),[u,d]=(0,K.useState)(`native`),[f,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(t[0]?.path??``);(0,K.useEffect)(()=>{d(`native`),m(``),g(t[0]?.path??``)},[e?.id]);let _={via:u,model:u===`ollama`&&f!==``?f:null},v=(0,K.useMemo)(()=>e?W(e,_):null,[e,_.via,_.model]);if(e===null)return null;let y=W(e,{via:`native`,model:null}),b=e.ollamaLaunch,x=`${c}-via`,S=h!==``;return(0,q.jsx)(p,{open:!0,onClose:o,titleId:c,title:`Launch ${e.name}`,description:`Nothing starts until you choose where.`,initialFocusRef:l,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[(0,q.jsxs)(`fieldset`,{className:T.fieldset,children:[(0,q.jsx)(`legend`,{className:T.legend,children:`Run`}),y?(0,q.jsxs)(`label`,{className:T.radio,children:[(0,q.jsx)(`input`,{ref:l,type:`radio`,name:x,checked:u===`native`,onChange:()=>d(`native`)}),(0,q.jsx)(`code`,{className:T.inlineCode,children:Z(y)}),(0,q.jsx)(`span`,{className:T.hint,children:`its own command`})]}):null,b?(0,q.jsxs)(`label`,{className:T.radio,children:[(0,q.jsx)(`input`,{type:`radio`,name:x,checked:u===`ollama`,onChange:()=>d(`ollama`)}),(0,q.jsx)(`code`,{className:T.inlineCode,children:Z(b)}),(0,q.jsx)(`span`,{className:T.hint,children:`through Ollama`})]}):null]}),u===`ollama`?n.length>0?(0,q.jsxs)(I,{label:`Local model`,value:f,onChange:e=>m(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:`Ollama’s default`}),n.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]}):(0,q.jsx)(`p`,{className:T.hint,children:`No local models are known to Verse, so Ollama will ask which to use.`}):null,(0,q.jsxs)(I,{label:`Folder (Terminal.app)`,value:h,onChange:e=>g(e.target.value),hint:t.length===0?`No chat folders or enrolled projects yet.`:`A Verse tab opens in the chat you have open.`,disabled:t.length===0,children:[t.length===0?(0,q.jsx)(`option`,{value:``,children:`—`}):null,t.map(e=>(0,q.jsx)(`option`,{value:e.path,children:e.name},e.path))]}),v?(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Command`}),(0,q.jsx)(X,{text:Z(v),what:`the ${e.name} launch command`})]}):null,u===`ollama`&&r.available?(0,q.jsx)(`p`,{className:T.hint,children:`In a Verse tab this runs exactly the command above — Verse builds it from what is installed, never from this page.`}):null,!r.available&&r.reason?(0,q.jsxs)(`p`,{className:T.hint,children:[`Verse terminal: `,r.reason]}):null,a?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:a}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{variant:`ghost`,onClick:o,children:`Cancel`}),(0,q.jsx)(k,{variant:r.available?`subtle`:`primary`,busy:i,disabled:!S||v===null,onClick:()=>v&&s({choice:_,target:`terminal-app`,root:h,command:v}),children:`Open in Terminal.app`}),r.available?(0,q.jsx)(k,{variant:`primary`,disabled:v===null,onClick:()=>v&&s({choice:_,target:`verse`,root:null,command:v}),children:`Open in Verse terminal`}):null]})]})})}var $={section:`_section_mum7s_11`,body:`_body_mum7s_19`,panel:`_panel_mum7s_29`,panelHead:`_panelHead_mum7s_35`,panelTitle:`_panelTitle_mum7s_43`,panelNote:`_panelNote_mum7s_51`,muted:`_muted_mum7s_52`,alert:`_alert_mum7s_61`,alertTitle:`_alertTitle_mum7s_72`,seatList:`_seatList_mum7s_78`,rowList:`_rowList_mum7s_79`,seatRow:`_seatRow_mum7s_85`,healthRow:`_healthRow_mum7s_86`,seatHead:`_seatHead_mum7s_94`,seatLabel:`_seatLabel_mum7s_101`,engineTag:`_engineTag_mum7s_106`,code:`_code_mum7s_107`,count:`_count_mum7s_118`,disclosure:`_disclosure_mum7s_124`,commandLine:`_commandLine_mum7s_134`,envList:`_envList_mum7s_143`,envItem:`_envItem_mum7s_152`,warnList:`_warnList_mum7s_161`,digest:`_digest_mum7s_171`,actions:`_actions_mum7s_178`};function Ne({server:e,heading:t}){let n=e.env===null?[]:Object.keys(e.env);return(0,q.jsxs)(`div`,{className:$.disclosure,children:[t===void 0?null:(0,q.jsx)(`p`,{className:$.alertTitle,children:t}),(0,q.jsxs)(`p`,{className:$.commandLine,children:[e.command,e.args.length>0?` ${e.args.join(` `)}`:``]}),n.length===0?(0,q.jsx)(`p`,{className:$.muted,children:`No environment variables are passed to this server.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:$.muted,children:[n.length,` environment variable`,n.length===1?``:`s`,` passed to this server. Values are never displayed.`]}),(0,q.jsx)(`ul`,{className:$.envList,children:n.map(e=>(0,q.jsxs)(`li`,{className:$.envItem,children:[e,`=<set>`]},e))})]}),(0,q.jsxs)(`p`,{className:$.code,children:[`configured in `,e.sourceRef]})]})}var Pe=`verse-mcp-snapshot`,Fe=`verse-mcp-cli-health`;function Ie(e,t){return t instanceof d?t.status===404?`This server does not expose ${e}, so this panel has no source.`:`${e} answered HTTP ${t.status}.`:`${e} could not be reached.`}function Le(e){return async t=>{try{return{raw:await s(e,t),available:!0,reason:null}}catch(t){if(t instanceof d&&t.status===401||t instanceof DOMException&&t.name===`AbortError`)throw t;return{raw:null,available:!1,reason:Ie(e,t)}}}}var Re={key:Pe,fetch:Le(`/api/verse/mcp`)},ze={key:Fe,fetch:Le(`/api/verse/mcp/cli-health`)},Be=class extends Error{constructor(){super(`Unlock actions with the mutation token before changing MCP configuration.`),this.name=`McpLockedError`}};async function Ve(e,t){let n=r();if(!n)throw new Be;let a=await l(e,t,n);return i(),a}function He(e,t){return Ve(`/api/verse/mcp/proposal`,{target:e,server:t})}async function Ue(e,t,n){let r=await Ve(`/api/verse/mcp/apply`,{target:e,server:t,digest:n,confirm:!0});return o(Pe),r}function We({row:e}){let[t,n]=(0,K.useState)(!1),r=(0,K.useId)(),i=e.servers.length>0;return(0,q.jsxs)(J,{id:`mcp-${e.seatId}`,name:e.label,monogram:e.monogram,engine:e.engine,description:e.sentence,health:{tone:i?`success`:`off`,label:e.loads},aside:i?(0,q.jsx)(k,{variant:`ghost`,size:`sm`,"aria-expanded":t,"aria-controls":r,icon:t?(0,q.jsx)(j,{size:14}):(0,q.jsx)(re,{size:14}),onClick:()=>n(e=>!e),children:t?`Hide servers`:`Show servers`}):null,children:[(0,q.jsx)(`span`,{className:T.reasonCode,children:e.reason}),i&&t?(0,q.jsx)(`div`,{id:r,className:T.servers,children:e.servers.map(e=>(0,q.jsx)(Ne,{server:e,heading:e.name},e.name))}):null]})}function Ge(e){if(typeof e!=`object`||!e)return null;let t=e,n=B(t.server),r=t.target;return!n||typeof t.digest!=`string`||!r?null:{server:n,targetRef:typeof r.ref==`string`?r.ref:``,targetLabel:typeof r.label==`string`?r.label:``,action:t.action===`replace`?`replace`:`add`,replaces:B(t.replaces),warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):[],note:typeof t.note==`string`?t.note:``,digest:t.digest}}function Ke(e){return e instanceof d?e.detail??`The server refused (HTTP ${e.status}).`:e instanceof Error&&e.name===`VerseMutationLockedError`?`Unlock actions with the mutation token first.`:`The request could not be completed.`}function qe({open:e,snapshot:t,run:n,onClose:r,onAdded:i}){let a=(0,K.useId)(),o=G(t),[s,c]=(0,K.useState)(`hub`),[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(``),[p,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(``),[_,v]=(0,K.useState)(null),[y,b]=(0,K.useState)(!1),[x,S]=(0,K.useState)(null),C=()=>{S(null),v(null),b(!1)},ee=async e=>{e.preventDefault(),v(null);let t=z(h);if(!t.ok){v(t.error);return}let r={name:l.trim(),command:d.trim(),args:V(p),...Object.keys(t.env).length>0?{env:t.env}:{}};b(!0);try{let e=await n(`Review an MCP server before adding it`,()=>He(s,r));if(e===null)return;let t=Ge(e);t?S({input:r,target:s,value:t}):v(`The server answered with something that is not a proposal.`)}catch(e){v(Ke(e))}finally{b(!1)}},w=async()=>{if(x){b(!0),v(null);try{if(await n(`Add an MCP server`,()=>Ue(x.target,x.input,x.value.digest))===null)return;i(`${x.value.action===`replace`?`Replaced`:`Added`} ${x.value.server.name} in ${x.value.targetRef}.`),u(``),f(``),m(``),g(``),C(),r()}catch(e){v(Ke(e))}finally{b(!1)}}},E=o.find(e=>e.id===s);return(0,q.jsx)(R,{open:e,onClose:()=>{C(),r()},titleId:a,title:x?`Review before adding`:`Add an MCP server`,description:`An MCP server is a program that runs with the agent’s permissions. Nothing is written until you confirm what you read.`,width:520,children:x===null?(0,q.jsxs)(`form`,{className:T.dialogBody,onSubmit:e=>void ee(e),children:[(0,q.jsx)(I,{label:`Add to`,value:s,onChange:e=>c(e.target.value),hint:E?.disabledReason??(s===`hub`?`The hub’s own registry.`:`A Verse chat on a Claude seat still loads none; Claude Code in a terminal does.`),children:o.map(e=>(0,q.jsx)(`option`,{value:e.id,disabled:e.disabledReason!==null,children:e.label},e.id))}),(0,q.jsx)(L,{label:`Name`,value:l,onChange:e=>u(e.target.value),required:!0,placeholder:`filesystem`,autoComplete:`off`}),(0,q.jsx)(L,{label:`Command`,value:d,onChange:e=>f(e.target.value),required:!0,placeholder:`/opt/homebrew/bin/npx`,autoComplete:`off`,hint:`An absolute path is safest; a bare name is looked up on PATH when the server starts.`}),(0,q.jsx)(L,{label:`Arguments`,value:p,onChange:e=>m(e.target.value),placeholder:`-y @modelcontextprotocol/server-filesystem "~/code"`,autoComplete:`off`}),(0,q.jsxs)(`label`,{className:T.fieldLabel,children:[`Environment `,(0,q.jsx)(`span`,{className:T.hint,children:`One KEY=value per line. Values are sent once and never shown again.`}),(0,q.jsx)(`textarea`,{className:T.textarea,value:h,onChange:e=>g(e.target.value),spellCheck:!1,autoComplete:`off`})]}),_?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{type:`button`,variant:`ghost`,onClick:r,children:`Cancel`}),(0,q.jsx)(k,{type:`submit`,variant:`primary`,busy:y,disabled:l.trim()===``||d.trim()===``||E?.disabledReason!=null,children:`Review`})]})]}):(0,q.jsxs)(`div`,{className:T.dialogBody,children:[(0,q.jsxs)(`p`,{children:[x.value.action===`replace`?`Replaces`:`Adds`,` `,(0,q.jsx)(`strong`,{children:x.value.server.name}),` in`,` `,(0,q.jsx)(`code`,{className:T.inlineCode,children:x.value.targetRef}),x.value.targetLabel?` (${x.value.targetLabel})`:``,`.`]}),(0,q.jsx)(Ne,{server:x.value.server,heading:`This will run`}),x.value.replaces?(0,q.jsx)(Ne,{server:x.value.replaces,heading:`Replacing`}):null,x.value.warnings.length>0?(0,q.jsx)(`ul`,{className:T.warnings,children:x.value.warnings.map(e=>(0,q.jsx)(`li`,{children:e},e))}):null,x.value.note?(0,q.jsx)(`p`,{className:T.hint,children:x.value.note}):null,_?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{variant:`ghost`,onClick:()=>S(null),children:`Back`}),(0,q.jsx)(k,{variant:`primary`,busy:y,onClick:()=>void w(),children:x.value.action===`replace`?`Replace server`:`Add server`})]})]})})}function Je({snapshot:e,cliHealth:t,unavailable:n,loading:r,run:i,onAdded:a,headingRef:o}){let[s,c]=(0,K.useState)(!1),l=e?fe(e):[];return(0,q.jsxs)(Y,{id:`mcp-servers`,title:`MCP servers`,headingRef:o,action:(0,q.jsx)(k,{variant:`subtle`,size:`sm`,icon:(0,q.jsx)(A,{size:14}),onClick:()=>c(!0),"aria-haspopup":`dialog`,children:`Add server`}),caveat:(0,q.jsxs)(q.Fragment,{children:[`Claude and local seats load no MCP servers: Verse starts them with`,` `,(0,q.jsx)(`code`,{children:`--strict-mcp-config`}),` and an empty `,(0,q.jsx)(`code`,{children:`--mcp-config`}),`. Codex and Grok seats load their own account’s config — and an `,(0,q.jsx)(`code`,{children:`ashlr__`}),` write through one is refused on a folder that is not enrolled.`]}),children:[e!==null&&e.notes.length>0?(0,q.jsxs)(`div`,{className:T.loadingLine,role:`note`,children:[(0,q.jsx)(`strong`,{children:`Configured, but unused.`}),` `,e.notes.join(` `),` `,e.machine.note]}):null,t!==null&&t.driftDetected?(0,q.jsxs)(`div`,{className:T.loadingLine,role:`alert`,children:[(0,q.jsx)(`strong`,{children:`CLI version drift.`}),` `,t.notes.join(` `),` `,t.accounts.filter(e=>e.versionState===`drift`).map(e=>`${e.label}: ${e.version??`unread`}, pinned ${e.pinnedVersion??`—`}.`).join(` `)]}):null,e===null?(0,q.jsx)(`p`,{className:T.loadingLine,"aria-busy":r||void 0,children:r?`Reading each seat’s configuration…`:n??`No per-seat reading is available.`}):(0,q.jsx)(`ul`,{className:T.rows,children:l.map(e=>(0,q.jsx)(We,{row:e},e.seatId))}),e?.scope?(0,q.jsxs)(`p`,{className:T.scopeLine,children:[`Scope: `,H(he,e.scope.reason,`Locus did not report a usable scope.`),e.scope.tenantRef?` (${e.scope.tenantRef})`:``]}):null,(0,q.jsx)(qe,{open:s,snapshot:e,run:i,onClose:()=>c(!1),onAdded:a})]})}function Ye(e){return{tone:U(e.health.state),label:e.health.label}}function Xe({group:e,onToggle:t,onRestore:n}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let r=e.actions.find(e=>e.kind===`restore`)??null;return(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,health:Ye(e),detail:e.toggle===null?e.detail:null,aside:e.toggle===null?null:(0,q.jsxs)(q.Fragment,{children:[r?(0,q.jsx)(k,{variant:`ghost`,size:`sm`,onClick:()=>n(e),disabled:r.disabledReason!==null,title:Z(r.command??[]),children:r.label}):null,(0,q.jsx)(F,{checked:e.toggle.enabled,onChange:n=>t(e,n),"aria-label":`${e.description}: ${e.toggle.enabled?`on`:`off`}`,"aria-describedby":`app-${e.id}-name`})]})},e.id)})})})}function Ze({group:e,quickLaunchReason:t,onQuickLaunch:n,onLaunchOptions:r}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let i=e.actions.find(e=>e.kind===`launch`)??null,a=i?.disabledReason??t;return(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail,aside:(0,q.jsxs)(q.Fragment,{children:[e.copy&&e.installed?(0,q.jsx)(X,{text:e.copy.text,label:e.copy.label,what:`the ${e.name} command`}):null,e.ollamaLaunch?(0,q.jsx)(X,{text:Z(e.ollamaLaunch),what:`the Ollama launch command for ${e.name}`}):null,i?i.disabledReason===null?(0,q.jsxs)(`span`,{className:T.split,children:[(0,q.jsx)(k,{variant:`subtle`,size:`sm`,icon:(0,q.jsx)(M,{size:14}),disabled:a!==null,title:a??void 0,onClick:()=>n(e),"aria-label":`Launch ${e.name}`,children:`Launch`}),(0,q.jsx)(k,{variant:`subtle`,size:`sm`,iconOnly:!0,icon:(0,q.jsx)(j,{size:14}),"aria-label":`Launch options for ${e.name}`,title:`Launch options for ${e.name}`,"aria-haspopup":`dialog`,onClick:()=>r(e)})]}):(0,q.jsx)(`span`,{className:T.disabledNote,children:i.disabledReason}):null]})},e.id)})})})}function Qe({group:e}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail},e.id))})})}var $e=6e4;function et(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`not checked`;let r=Math.max(0,Math.round((t-n)/6e4));return r<1?`checked just now`:r<120?`checked ${r} min ago`:`checked ${Math.round(r/60)} h ago`}function tt({focusGroup:e}={}){let t=f(Q),n=u(Q);y(n,$e);let r=f(Ee),i=f(Re),a=f(ze),o=u(Re),s=f(S),l=ee(),d=b(),p=oe(),[h,g]=(0,K.useState)(null),[_,v]=(0,K.useState)(!1),[x,C]=(0,K.useState)(null),[w,D]=(0,K.useState)(null),[ne,O]=(0,K.useState)(!1),[re,A]=(0,K.useState)(null),[j,M]=(0,K.useState)(null),[ae,N]=(0,K.useState)(!1),[se,F]=(0,K.useState)(null),[ce,I]=(0,K.useState)(()=>Date.now());y(()=>I(Date.now()),3e4);let L=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(e!==`mcp-servers`)return;let t=L.current;t&&(typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`start`}),t.focus({preventScroll:!0}))},[e]);let R=s.data,z=de(R),B=le(l.seats),V=ye({terminalAvailable:r.data?.available?r.data.data.available:!r.data&&null,terminalReason:r.data?.available?r.data.data.reason:null,activeSessionId:d.activeSessionId}),H=t.data?.available?t.data.data:null,U=e=>H?.groups.find(t=>t.id===e)??null,fe=i.data?.available?pe(i.data.raw):null,W=a.data?.available?ue(a.data.raw):null,G=(0,K.useCallback)((e,t=`neutral`)=>g({text:e,tone:t}),[]),me=async()=>{v(!0);try{await p.run(`Check every app and seat again`,async()=>(await Promise.all([Oe(),E().catch(()=>null)]),o(),!0))&&(I(Date.now()),G(`Checked again.`))}catch(e){G(P(e),`danger`)}finally{v(!1)}},he=async e=>{C(e.seatId);try{await p.run(`Open the sign-in for ${e.label} in Terminal`,async()=>(await te(e.seatId),!0))&&G(`Opened the sign-in for ${e.label} in Terminal. Finish it there; this page picks it up.`)}catch(e){G(P(e),`danger`)}finally{C(null)}},ge=async()=>{if(w){O(!0),A(null);try{let e=await p.run(`${w.enable?`Switch on`:`Restore`} ${w.row.name}`,()=>ke(w.row.id,w.enable));e&&(G(`Opened “${e.command.join(` `)}” in Terminal. Answer its prompts there.`),D(null))}catch(e){A(P(e))}finally{O(!1)}}},J=async(e,t)=>{if(t.target===`verse`){be(e.id,t.choice),M(null);return}if(t.root!==null){N(!0),F(null);try{await p.run(`Launch ${e.name} in Terminal`,()=>Ae(e.id,{root:t.root,via:t.choice.via,model:t.choice.model}))&&(G(`Opened ${e.name} in Terminal.`),M(null))}catch(e){let t=P(e);j?F(t):G(t,`danger`)}finally{N(!1)}}},Y=V.available||z.length>0?null:`Open a chat or enrol a project first.`,_e=e=>{let t={via:`native`,model:null},n=e.actions.find(e=>e.kind===`launch`)?.command??null;n&&J(e,{choice:t,target:V.available?`verse`:`terminal-app`,root:z[0]?.path??null,command:n})},ve=t.data===void 0&&(t.status===`loading`||t.status===`idle`);return(0,q.jsxs)(`section`,{className:T.section,"aria-label":`Apps & Accounts`,children:[(0,q.jsx)(`div`,{className:T.scroll,children:(0,q.jsxs)(`div`,{className:T.page,children:[(0,q.jsxs)(`header`,{className:T.header,children:[(0,q.jsxs)(`div`,{className:T.headerText,children:[(0,q.jsx)(`h2`,{className:T.title,children:`Apps & Accounts`}),(0,q.jsx)(`p`,{className:T.lede,children:`Everything Verse can run with on this Mac, and whether it is ready.`})]}),(0,q.jsxs)(`div`,{className:T.headerMeta,children:[H?(0,q.jsxs)(`span`,{children:[et(H.checkedAt,ce),H.pathSource===`fallback`?` · PATH from known folders (your login shell did not answer)`:``]}):null,(0,q.jsx)(k,{variant:`ghost`,size:`sm`,icon:(0,q.jsx)(ie,{size:14}),busy:_,onClick:()=>void me(),children:`Check again`})]})]}),(0,q.jsx)(`p`,{className:h?T.banner:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),(0,q.jsx)(Se,{seats:l.seats,health:l.health,budget:l.budget,loading:l.loading,reconnecting:x,onReconnect:e=>void he(e)}),t.data&&!t.data.available?(0,q.jsx)(`p`,{className:T.banner,children:t.data.reason}):ve?(0,q.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Checking apps`,children:[(0,q.jsx)(c,{width:`30%`}),(0,q.jsx)(c,{width:`80%`}),(0,q.jsx)(c,{width:`70%`})]}):(0,q.jsxs)(q.Fragment,{children:[U(`desktop`)?(0,q.jsx)(Xe,{group:U(`desktop`),onToggle:(e,t)=>{A(null),D({row:e,enable:t})},onRestore:e=>{A(null),D({row:e,enable:!1})}}):null,U(`terminal-agents`)?(0,q.jsx)(Ze,{group:U(`terminal-agents`),quickLaunchReason:Y,onQuickLaunch:_e,onLaunchOptions:e=>{F(null),M(e)}}):null,U(`local-models`)?(0,q.jsx)(Qe,{group:U(`local-models`)}):null]}),(0,q.jsx)(Je,{snapshot:fe,cliHealth:W,unavailable:i.data&&!i.data.available?i.data.reason:null,loading:i.data===void 0,run:p.run,onAdded:e=>{G(e),o()},headingRef:L})]})}),(0,q.jsx)(je,{row:w?.row??null,enable:w?.enable??!1,busy:ne,error:re,onCancel:()=>D(null),onConfirm:()=>void ge()}),(0,q.jsx)(Me,{row:j,projects:z,models:B,inVerse:V,busy:ae,error:se,onCancel:()=>M(null),onLaunch:e=>{j&&J(j,e)}}),(0,q.jsx)(m,{open:p.dialog.open,reason:p.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:p.dialog.onClose,onUnlocked:p.dialog.onUnlocked})]})}export{$e as APPS_POLL_MS,tt as AppsSection};
|
|
2
|
-
//# sourceMappingURL=AppsSection-
|
|
1
|
+
import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{D as r,F as i,K as a,U as o,c as s,i as c,l,m as u,o as d,p as f}from"./global-oEl9Qj8u.js";import{t as p}from"./Dialog-BS9Dxi3G.js";import{t as m}from"./MutationTokenDialog-mxrw0Yvy.js";import{s as h,v as g}from"./workbench-types-DzN-5trg.js";import{s as _}from"./dock-store-B2vlxqPu.js";import{C as v}from"./verse-ui-store-62DxpVHS.js";import{r as y}from"./section-visibility-Yctxu-if.js";import{N as b,r as x,x as S}from"./VerseConsoleApp-DTjDpGCd.js";import{a as C,i as ee,n as w,o as T}from"./CapacityStrip-qReu0RaF.js";import{a as E,i as te,r as D}from"./useSeatsRefresh-DgFy-Ph4.js";import{f as ne,t as O}from"./capacity-strip-model-BDbmQ3e3.js";import{t as k}from"./Button-HHXgoXGr.js";import{a as re,g as ie,h as A,i as j,m as M,n as ae,o as N}from"./icons-DEQa2rTx.js";import{n as oe,t as P}from"./use-token-gate-DqrSXdX6.js";import{o as se}from"./slots-BhP8b8tf.js";import{t as F}from"./Switch-iveI-8NY.js";import{t as ce}from"./BudgetControl-TL3FeZ1D.js";import{t as I}from"./Select-BwSGkHCS.js";import{t as L}from"./Input-B5dmGLZx.js";import{t as R}from"./Sheet-DVP2Mgy6.js";import{a as le,c as z,d as B,f as ue,i as de,l as V,m as H,n as U,o as fe,p as pe,r as W,s as G,t as me,u as he}from"./apps-model-CDFvmsQV.js";var K=n(e(),1),q=t();function ge({tone:e,label:t}){return(0,q.jsxs)(`span`,{className:T.health,"data-tone":e,children:[(0,q.jsx)(`span`,{className:T.healthDot,"aria-hidden":`true`}),t]})}function J({id:e,name:t,monogram:n,engine:r,description:i,version:a,health:o,detail:s,aside:c,children:l}){return(0,q.jsxs)(`li`,{className:T.row,"data-app":e,children:[(0,q.jsx)(C,{monogram:n,engine:r}),(0,q.jsxs)(`div`,{className:T.rowMain,children:[(0,q.jsxs)(`div`,{className:T.rowHead,children:[(0,q.jsx)(`span`,{id:`${e}-name`,className:T.rowName,children:t}),a?(0,q.jsx)(`span`,{className:T.rowVersion,children:a}):null,(0,q.jsx)(ge,{tone:o.tone,label:o.label})]}),(0,q.jsx)(`p`,{className:T.rowDesc,children:i}),s?(0,q.jsx)(`p`,{className:T.rowDetail,children:s}):null,l]}),c?(0,q.jsx)(`div`,{className:T.rowAside,children:c}):null]})}function Y({id:e,title:t,caveat:n,action:r,children:i,headingRef:a}){let o=`apps-group-${e}`;return(0,q.jsxs)(`section`,{className:T.group,"aria-labelledby":o,"data-group":e,children:[(0,q.jsxs)(`div`,{className:T.groupHead,children:[(0,q.jsx)(`h3`,{id:o,ref:a,tabIndex:-1,className:T.groupTitle,children:t}),r]}),n?(0,q.jsx)(`p`,{className:T.caveat,children:n}):null,(0,q.jsx)(`div`,{className:T.card,children:i})]})}var _e=1200;async function ve(e){try{if(typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=!1;try{n=typeof document.execCommand==`function`&&document.execCommand(`copy`)}catch{n=!1}return t.remove(),n}function X({text:e,label:t,what:n}){let[r,i]=(0,K.useState)(`idle`),a=(0,K.useRef)(null);(0,K.useEffect)(()=>()=>{a.current&&clearTimeout(a.current)},[]);let o=async()=>{let t=await ve(e);i(t?`copied`:`failed`),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(`idle`),_e)};return(0,q.jsxs)(`span`,{className:T.pillWrap,children:[(0,q.jsxs)(`button`,{type:`button`,className:T.pill,"data-state":r,onClick:()=>void o(),"aria-label":`Copy ${n}: ${e}`,title:`Copy: ${e}`,children:[(0,q.jsx)(`code`,{className:T.pillText,children:t??e}),(0,q.jsx)(`span`,{className:T.pillIcon,"aria-hidden":`true`,children:r===`copied`?(0,q.jsx)(ae,{size:14}):(0,q.jsx)(N,{size:14})})]}),(0,q.jsx)(`span`,{className:T.visuallyHidden,role:`status`,"aria-live":`polite`,children:r===`copied`?`Copied`:r===`failed`?`Copy failed — select the command and copy it yourself`:``})]})}var Z=ne;function ye(e){return e.slotLanded??se(`terminal-pane`)?e.terminalAvailable===!0?e.activeSessionId===null?{available:!1,reason:`Open a chat first — its terminal hosts the agent.`}:{available:!0,reason:null}:{available:!1,reason:e.terminalReason??`The Verse terminal needs the desktop app.`}:{available:!1,reason:`This build has no Verse terminal yet.`}}function be(e,t){t.via===`native`&&t.model===null?_({newTab:!0,appId:e}):_({newTab:!0,appId:e,via:`ollama`,...t.model===null?{}:{model:t.model}}),v(`chat`)}var xe=`No accounts connected yet. Sign in to Claude Code, Codex or Grok in a terminal, or start Ollama for local models — they show up here within a minute.`;function Se({seats:e,health:t,budget:n,loading:r,reconnecting:i,onReconnect:a,now:o}){let[s,c]=(0,K.useState)(null),[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),_=oe(),v=(0,K.useId)(),y=(0,K.useId)(),b=(0,K.useRef)(null),x=t!==null,S=async e=>{f(e.seatId),g(null);try{await _.run(`Check ${e.label} again (status commands only — nothing is spent)`,()=>E())&&g({tone:`neutral`,text:`Checked ${e.label} again.`})}catch(e){g({tone:`danger`,text:P(e)})}finally{f(null)}};return(0,q.jsxs)(Y,{id:`accounts`,title:`Accounts`,caveat:`Which accounts you can use now, which are spent and when they reset, and how much autonomy leaves for you.`,children:[r?(0,q.jsx)(`p`,{className:T.loadingLine,"aria-busy":`true`,children:`Reading accounts…`}):(0,q.jsx)(w,{seats:e,health:t,budget:n,labelledBy:`apps-group-accounts`,emptyText:xe,accounts:{healthRead:x,checkingSeatId:d,...o===void 0?{}:{now:o}},renderActions:e=>me(e,O(e,{healthRead:x,...o===void 0?{}:{now:o}})).map(t=>(0,q.jsx)(k,{size:`sm`,variant:t.primary&&t.kind!==`edit-budget`?`primary`:`ghost`,busy:t.kind===`reconnect`&&i===e.seatId||t.kind===`check-again`&&d===e.seatId,"aria-label":`${t.label}: ${e.label}`,onClick:()=>{t.kind===`reconnect`?a(e):t.kind===`check-again`?S(e):t.kind===`fix`?c(e):u(!0)},children:t.label},t.kind))}),(0,q.jsx)(`p`,{className:h?T.accountsNote:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),s!==null&&s.connection?.fixCommand?(0,q.jsx)(p,{open:!0,onClose:()=>c(null),titleId:v,title:`Fix ${s.label}`,description:s.connection.word,initialFocusRef:b,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[s.connection.reasons.map(e=>(0,q.jsx)(`p`,{children:e},e)),(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Run this in a terminal`}),(0,q.jsx)(X,{text:Z(s.connection.fixCommand),what:`the fix for ${s.label}`})]}),(0,q.jsx)(`p`,{children:`Verse shows the command and never runs it for you: it changes which CLI this seat is pinned to.`}),(0,q.jsx)(`div`,{className:T.dialogActions,children:(0,q.jsx)(k,{ref:b,variant:`subtle`,onClick:()=>c(null),children:`Done`})})]})}):null,(0,q.jsx)(R,{open:l,onClose:()=>u(!1),titleId:y,title:`Budget`,description:`How much of each seat autonomy may use, and how much is kept for you.`,width:560,children:l?(0,q.jsx)(ce,{}):null}),(0,q.jsx)(m,{open:_.dialog.open,reason:_.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:_.dialog.onClose,onUnlocked:_.dialog.onUnlocked})]})}var Ce=`verse-apps`,we=`verse-terminal-status`;async function Te(e,t){try{return{available:!0,data:await s(e,t)}}catch(e){if(e instanceof d&&e.status===401||e instanceof DOMException&&e.name===`AbortError`)throw e;return e instanceof d&&e.status===404?{available:!1,reason:`This server is older than Apps & Accounts, so desktop, terminal and local rows are not available.`}:{available:!1,reason:e instanceof d?`The apps check answered HTTP ${e.status}.`:`The apps check could not be reached.`}}}var Q={key:Ce,fetch:e=>Te(h,e)},Ee={key:we,fetch:e=>Te(g,e)};async function De(e,t){let n=r();if(!n)throw new x;let a=await l(e,t,n);return i(),a}async function Oe(){let e=await De(`${h}/refresh`,{});return await a(Ce,D(()=>Promise.resolve({available:!0,data:e}),()=>Q.fetch()),!0),e}async function ke(e,t){let n=await De(`${h}/${encodeURIComponent(e)}/toggle`,{enabled:t,confirm:!0});return a(Ce,()=>Q.fetch(),!0),n}function Ae(e,t){return De(`${h}/${encodeURIComponent(e)}/launch`,{root:t.root,...t.via?{via:t.via}:{},...t.model?{model:t.model}:{}})}function je({row:e,enable:t,busy:n,error:r,onCancel:i,onConfirm:a}){let o=(0,K.useId)(),s=(0,K.useRef)(null);if(e===null||e.toggle===null)return null;let c=t?e.toggle.command:e.toggle.restoreCommand,l=t?e.toggle.restoreCommand:e.toggle.command,u=t?`Turn on “${e.description}”?`:`Restore ${e.name}?`;return(0,q.jsx)(p,{open:!0,onClose:i,titleId:o,title:u,initialFocusRef:s,description:t?`This changes ${e.name}’s own settings until you restore it.`:`This puts ${e.name} back on its own defaults.`,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[e.detail?(0,q.jsx)(`p`,{children:e.detail}):null,t&&e.id===`claude-desktop`?(0,q.jsx)(`p`,{children:`Recommended: leave this off. Claude Desktop would run local models instead of its own, and Verse’s local seats already use Ollama.`}):null,(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Runs`}),(0,q.jsx)(X,{text:Z(c),what:`the command this runs`})]}),(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:t?`Undo later with`:`Turn back on with`}),(0,q.jsx)(X,{text:Z(l),what:t?`the restore command`:`the command that turns it on`})]}),(0,q.jsx)(`p`,{children:`It opens in a Terminal window so you can answer its prompts. Verse does not answer them for you, and nothing changes until you do.`}),r?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:r}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{ref:s,variant:`subtle`,onClick:i,children:`Cancel`}),(0,q.jsx)(k,{variant:t?`danger`:`primary`,busy:n,onClick:a,children:t?`Open in Terminal`:`Restore in Terminal`})]})]})})}function Me({row:e,projects:t,models:n,inVerse:r,busy:i,error:a,onCancel:o,onLaunch:s}){let c=(0,K.useId)(),l=(0,K.useRef)(null),[u,d]=(0,K.useState)(`native`),[f,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(t[0]?.path??``);(0,K.useEffect)(()=>{d(`native`),m(``),g(t[0]?.path??``)},[e?.id]);let _={via:u,model:u===`ollama`&&f!==``?f:null},v=(0,K.useMemo)(()=>e?W(e,_):null,[e,_.via,_.model]);if(e===null)return null;let y=W(e,{via:`native`,model:null}),b=e.ollamaLaunch,x=`${c}-via`,S=h!==``;return(0,q.jsx)(p,{open:!0,onClose:o,titleId:c,title:`Launch ${e.name}`,description:`Nothing starts until you choose where.`,initialFocusRef:l,children:(0,q.jsxs)(`div`,{className:T.dialogBody,children:[(0,q.jsxs)(`fieldset`,{className:T.fieldset,children:[(0,q.jsx)(`legend`,{className:T.legend,children:`Run`}),y?(0,q.jsxs)(`label`,{className:T.radio,children:[(0,q.jsx)(`input`,{ref:l,type:`radio`,name:x,checked:u===`native`,onChange:()=>d(`native`)}),(0,q.jsx)(`code`,{className:T.inlineCode,children:Z(y)}),(0,q.jsx)(`span`,{className:T.hint,children:`its own command`})]}):null,b?(0,q.jsxs)(`label`,{className:T.radio,children:[(0,q.jsx)(`input`,{type:`radio`,name:x,checked:u===`ollama`,onChange:()=>d(`ollama`)}),(0,q.jsx)(`code`,{className:T.inlineCode,children:Z(b)}),(0,q.jsx)(`span`,{className:T.hint,children:`through Ollama`})]}):null]}),u===`ollama`?n.length>0?(0,q.jsxs)(I,{label:`Local model`,value:f,onChange:e=>m(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:`Ollama’s default`}),n.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]}):(0,q.jsx)(`p`,{className:T.hint,children:`No local models are known to Verse, so Ollama will ask which to use.`}):null,(0,q.jsxs)(I,{label:`Folder (Terminal.app)`,value:h,onChange:e=>g(e.target.value),hint:t.length===0?`No chat folders or enrolled projects yet.`:`A Verse tab opens in the chat you have open.`,disabled:t.length===0,children:[t.length===0?(0,q.jsx)(`option`,{value:``,children:`—`}):null,t.map(e=>(0,q.jsx)(`option`,{value:e.path,children:e.name},e.path))]}),v?(0,q.jsxs)(`div`,{className:T.commandBlock,children:[(0,q.jsx)(`span`,{className:T.commandLabel,children:`Command`}),(0,q.jsx)(X,{text:Z(v),what:`the ${e.name} launch command`})]}):null,u===`ollama`&&r.available?(0,q.jsx)(`p`,{className:T.hint,children:`In a Verse tab this runs exactly the command above — Verse builds it from what is installed, never from this page.`}):null,!r.available&&r.reason?(0,q.jsxs)(`p`,{className:T.hint,children:[`Verse terminal: `,r.reason]}):null,a?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:a}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{variant:`ghost`,onClick:o,children:`Cancel`}),(0,q.jsx)(k,{variant:r.available?`subtle`:`primary`,busy:i,disabled:!S||v===null,onClick:()=>v&&s({choice:_,target:`terminal-app`,root:h,command:v}),children:`Open in Terminal.app`}),r.available?(0,q.jsx)(k,{variant:`primary`,disabled:v===null,onClick:()=>v&&s({choice:_,target:`verse`,root:null,command:v}),children:`Open in Verse terminal`}):null]})]})})}var $={section:`_section_mum7s_11`,body:`_body_mum7s_19`,panel:`_panel_mum7s_29`,panelHead:`_panelHead_mum7s_35`,panelTitle:`_panelTitle_mum7s_43`,panelNote:`_panelNote_mum7s_51`,muted:`_muted_mum7s_52`,alert:`_alert_mum7s_61`,alertTitle:`_alertTitle_mum7s_72`,seatList:`_seatList_mum7s_78`,rowList:`_rowList_mum7s_79`,seatRow:`_seatRow_mum7s_85`,healthRow:`_healthRow_mum7s_86`,seatHead:`_seatHead_mum7s_94`,seatLabel:`_seatLabel_mum7s_101`,engineTag:`_engineTag_mum7s_106`,code:`_code_mum7s_107`,count:`_count_mum7s_118`,disclosure:`_disclosure_mum7s_124`,commandLine:`_commandLine_mum7s_134`,envList:`_envList_mum7s_143`,envItem:`_envItem_mum7s_152`,warnList:`_warnList_mum7s_161`,digest:`_digest_mum7s_171`,actions:`_actions_mum7s_178`};function Ne({server:e,heading:t}){let n=e.env===null?[]:Object.keys(e.env);return(0,q.jsxs)(`div`,{className:$.disclosure,children:[t===void 0?null:(0,q.jsx)(`p`,{className:$.alertTitle,children:t}),(0,q.jsxs)(`p`,{className:$.commandLine,children:[e.command,e.args.length>0?` ${e.args.join(` `)}`:``]}),n.length===0?(0,q.jsx)(`p`,{className:$.muted,children:`No environment variables are passed to this server.`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:$.muted,children:[n.length,` environment variable`,n.length===1?``:`s`,` passed to this server. Values are never displayed.`]}),(0,q.jsx)(`ul`,{className:$.envList,children:n.map(e=>(0,q.jsxs)(`li`,{className:$.envItem,children:[e,`=<set>`]},e))})]}),(0,q.jsxs)(`p`,{className:$.code,children:[`configured in `,e.sourceRef]})]})}var Pe=`verse-mcp-snapshot`,Fe=`verse-mcp-cli-health`;function Ie(e,t){return t instanceof d?t.status===404?`This server does not expose ${e}, so this panel has no source.`:`${e} answered HTTP ${t.status}.`:`${e} could not be reached.`}function Le(e){return async t=>{try{return{raw:await s(e,t),available:!0,reason:null}}catch(t){if(t instanceof d&&t.status===401||t instanceof DOMException&&t.name===`AbortError`)throw t;return{raw:null,available:!1,reason:Ie(e,t)}}}}var Re={key:Pe,fetch:Le(`/api/verse/mcp`)},ze={key:Fe,fetch:Le(`/api/verse/mcp/cli-health`)},Be=class extends Error{constructor(){super(`Unlock actions with the mutation token before changing MCP configuration.`),this.name=`McpLockedError`}};async function Ve(e,t){let n=r();if(!n)throw new Be;let a=await l(e,t,n);return i(),a}function He(e,t){return Ve(`/api/verse/mcp/proposal`,{target:e,server:t})}async function Ue(e,t,n){let r=await Ve(`/api/verse/mcp/apply`,{target:e,server:t,digest:n,confirm:!0});return o(Pe),r}function We({row:e}){let[t,n]=(0,K.useState)(!1),r=(0,K.useId)(),i=e.servers.length>0;return(0,q.jsxs)(J,{id:`mcp-${e.seatId}`,name:e.label,monogram:e.monogram,engine:e.engine,description:e.sentence,health:{tone:i?`success`:`off`,label:e.loads},aside:i?(0,q.jsx)(k,{variant:`ghost`,size:`sm`,"aria-expanded":t,"aria-controls":r,icon:t?(0,q.jsx)(j,{size:14}):(0,q.jsx)(re,{size:14}),onClick:()=>n(e=>!e),children:t?`Hide servers`:`Show servers`}):null,children:[(0,q.jsx)(`span`,{className:T.reasonCode,children:e.reason}),i&&t?(0,q.jsx)(`div`,{id:r,className:T.servers,children:e.servers.map(e=>(0,q.jsx)(Ne,{server:e,heading:e.name},e.name))}):null]})}function Ge(e){if(typeof e!=`object`||!e)return null;let t=e,n=B(t.server),r=t.target;return!n||typeof t.digest!=`string`||!r?null:{server:n,targetRef:typeof r.ref==`string`?r.ref:``,targetLabel:typeof r.label==`string`?r.label:``,action:t.action===`replace`?`replace`:`add`,replaces:B(t.replaces),warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):[],note:typeof t.note==`string`?t.note:``,digest:t.digest}}function Ke(e){return e instanceof d?e.detail??`The server refused (HTTP ${e.status}).`:e instanceof Error&&e.name===`VerseMutationLockedError`?`Unlock actions with the mutation token first.`:`The request could not be completed.`}function qe({open:e,snapshot:t,run:n,onClose:r,onAdded:i}){let a=(0,K.useId)(),o=G(t),[s,c]=(0,K.useState)(`hub`),[l,u]=(0,K.useState)(``),[d,f]=(0,K.useState)(``),[p,m]=(0,K.useState)(``),[h,g]=(0,K.useState)(``),[_,v]=(0,K.useState)(null),[y,b]=(0,K.useState)(!1),[x,S]=(0,K.useState)(null),C=()=>{S(null),v(null),b(!1)},ee=async e=>{e.preventDefault(),v(null);let t=z(h);if(!t.ok){v(t.error);return}let r={name:l.trim(),command:d.trim(),args:V(p),...Object.keys(t.env).length>0?{env:t.env}:{}};b(!0);try{let e=await n(`Review an MCP server before adding it`,()=>He(s,r));if(e===null)return;let t=Ge(e);t?S({input:r,target:s,value:t}):v(`The server answered with something that is not a proposal.`)}catch(e){v(Ke(e))}finally{b(!1)}},w=async()=>{if(x){b(!0),v(null);try{if(await n(`Add an MCP server`,()=>Ue(x.target,x.input,x.value.digest))===null)return;i(`${x.value.action===`replace`?`Replaced`:`Added`} ${x.value.server.name} in ${x.value.targetRef}.`),u(``),f(``),m(``),g(``),C(),r()}catch(e){v(Ke(e))}finally{b(!1)}}},E=o.find(e=>e.id===s);return(0,q.jsx)(R,{open:e,onClose:()=>{C(),r()},titleId:a,title:x?`Review before adding`:`Add an MCP server`,description:`An MCP server is a program that runs with the agent’s permissions. Nothing is written until you confirm what you read.`,width:520,children:x===null?(0,q.jsxs)(`form`,{className:T.dialogBody,onSubmit:e=>void ee(e),children:[(0,q.jsx)(I,{label:`Add to`,value:s,onChange:e=>c(e.target.value),hint:E?.disabledReason??(s===`hub`?`The hub’s own registry.`:`A Verse chat on a Claude seat still loads none; Claude Code in a terminal does.`),children:o.map(e=>(0,q.jsx)(`option`,{value:e.id,disabled:e.disabledReason!==null,children:e.label},e.id))}),(0,q.jsx)(L,{label:`Name`,value:l,onChange:e=>u(e.target.value),required:!0,placeholder:`filesystem`,autoComplete:`off`}),(0,q.jsx)(L,{label:`Command`,value:d,onChange:e=>f(e.target.value),required:!0,placeholder:`/opt/homebrew/bin/npx`,autoComplete:`off`,hint:`An absolute path is safest; a bare name is looked up on PATH when the server starts.`}),(0,q.jsx)(L,{label:`Arguments`,value:p,onChange:e=>m(e.target.value),placeholder:`-y @modelcontextprotocol/server-filesystem "~/code"`,autoComplete:`off`}),(0,q.jsxs)(`label`,{className:T.fieldLabel,children:[`Environment `,(0,q.jsx)(`span`,{className:T.hint,children:`One KEY=value per line. Values are sent once and never shown again.`}),(0,q.jsx)(`textarea`,{className:T.textarea,value:h,onChange:e=>g(e.target.value),spellCheck:!1,autoComplete:`off`})]}),_?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{type:`button`,variant:`ghost`,onClick:r,children:`Cancel`}),(0,q.jsx)(k,{type:`submit`,variant:`primary`,busy:y,disabled:l.trim()===``||d.trim()===``||E?.disabledReason!=null,children:`Review`})]})]}):(0,q.jsxs)(`div`,{className:T.dialogBody,children:[(0,q.jsxs)(`p`,{children:[x.value.action===`replace`?`Replaces`:`Adds`,` `,(0,q.jsx)(`strong`,{children:x.value.server.name}),` in`,` `,(0,q.jsx)(`code`,{className:T.inlineCode,children:x.value.targetRef}),x.value.targetLabel?` (${x.value.targetLabel})`:``,`.`]}),(0,q.jsx)(Ne,{server:x.value.server,heading:`This will run`}),x.value.replaces?(0,q.jsx)(Ne,{server:x.value.replaces,heading:`Replacing`}):null,x.value.warnings.length>0?(0,q.jsx)(`ul`,{className:T.warnings,children:x.value.warnings.map(e=>(0,q.jsx)(`li`,{children:e},e))}):null,x.value.note?(0,q.jsx)(`p`,{className:T.hint,children:x.value.note}):null,_?(0,q.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,q.jsxs)(`div`,{className:T.dialogActions,children:[(0,q.jsx)(k,{variant:`ghost`,onClick:()=>S(null),children:`Back`}),(0,q.jsx)(k,{variant:`primary`,busy:y,onClick:()=>void w(),children:x.value.action===`replace`?`Replace server`:`Add server`})]})]})})}function Je({snapshot:e,cliHealth:t,unavailable:n,loading:r,run:i,onAdded:a,headingRef:o}){let[s,c]=(0,K.useState)(!1),l=e?fe(e):[];return(0,q.jsxs)(Y,{id:`mcp-servers`,title:`MCP servers`,headingRef:o,action:(0,q.jsx)(k,{variant:`subtle`,size:`sm`,icon:(0,q.jsx)(A,{size:14}),onClick:()=>c(!0),"aria-haspopup":`dialog`,children:`Add server`}),caveat:(0,q.jsxs)(q.Fragment,{children:[`Claude and local seats load no MCP servers: Verse starts them with`,` `,(0,q.jsx)(`code`,{children:`--strict-mcp-config`}),` and an empty `,(0,q.jsx)(`code`,{children:`--mcp-config`}),`. Codex and Grok seats load their own account’s config — and an `,(0,q.jsx)(`code`,{children:`ashlr__`}),` write through one is refused on a folder that is not enrolled.`]}),children:[e!==null&&e.notes.length>0?(0,q.jsxs)(`div`,{className:T.loadingLine,role:`note`,children:[(0,q.jsx)(`strong`,{children:`Configured, but unused.`}),` `,e.notes.join(` `),` `,e.machine.note]}):null,t!==null&&t.driftDetected?(0,q.jsxs)(`div`,{className:T.loadingLine,role:`alert`,children:[(0,q.jsx)(`strong`,{children:`CLI version drift.`}),` `,t.notes.join(` `),` `,t.accounts.filter(e=>e.versionState===`drift`).map(e=>`${e.label}: ${e.version??`unread`}, pinned ${e.pinnedVersion??`—`}.`).join(` `)]}):null,e===null?(0,q.jsx)(`p`,{className:T.loadingLine,"aria-busy":r||void 0,children:r?`Reading each seat’s configuration…`:n??`No per-seat reading is available.`}):(0,q.jsx)(`ul`,{className:T.rows,children:l.map(e=>(0,q.jsx)(We,{row:e},e.seatId))}),e?.scope?(0,q.jsxs)(`p`,{className:T.scopeLine,children:[`Scope: `,H(he,e.scope.reason,`Locus did not report a usable scope.`),e.scope.tenantRef?` (${e.scope.tenantRef})`:``]}):null,(0,q.jsx)(qe,{open:s,snapshot:e,run:i,onClose:()=>c(!1),onAdded:a})]})}function Ye(e){return{tone:U(e.health.state),label:e.health.label}}function Xe({group:e,onToggle:t,onRestore:n}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let r=e.actions.find(e=>e.kind===`restore`)??null;return(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,health:Ye(e),detail:e.toggle===null?e.detail:null,aside:e.toggle===null?null:(0,q.jsxs)(q.Fragment,{children:[r?(0,q.jsx)(k,{variant:`ghost`,size:`sm`,onClick:()=>n(e),disabled:r.disabledReason!==null,title:Z(r.command??[]),children:r.label}):null,(0,q.jsx)(F,{checked:e.toggle.enabled,onChange:n=>t(e,n),"aria-label":`${e.description}: ${e.toggle.enabled?`on`:`off`}`,"aria-describedby":`app-${e.id}-name`})]})},e.id)})})})}function Ze({group:e,quickLaunchReason:t,onQuickLaunch:n,onLaunchOptions:r}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let i=e.actions.find(e=>e.kind===`launch`)??null,a=i?.disabledReason??t;return(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail,aside:(0,q.jsxs)(q.Fragment,{children:[e.copy&&e.installed?(0,q.jsx)(X,{text:e.copy.text,label:e.copy.label,what:`the ${e.name} command`}):null,e.ollamaLaunch?(0,q.jsx)(X,{text:Z(e.ollamaLaunch),what:`the Ollama launch command for ${e.name}`}):null,i?i.disabledReason===null?(0,q.jsxs)(`span`,{className:T.split,children:[(0,q.jsx)(k,{variant:`subtle`,size:`sm`,icon:(0,q.jsx)(M,{size:14}),disabled:a!==null,title:a??void 0,onClick:()=>n(e),"aria-label":`Launch ${e.name}`,children:`Launch`}),(0,q.jsx)(k,{variant:`subtle`,size:`sm`,iconOnly:!0,icon:(0,q.jsx)(j,{size:14}),"aria-label":`Launch options for ${e.name}`,title:`Launch options for ${e.name}`,"aria-haspopup":`dialog`,onClick:()=>r(e)})]}):(0,q.jsx)(`span`,{className:T.disabledNote,children:i.disabledReason}):null]})},e.id)})})})}function Qe({group:e}){return(0,q.jsx)(Y,{id:e.id,title:e.title,caveat:e.caveat,children:(0,q.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>(0,q.jsx)(J,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail},e.id))})})}var $e=6e4;function et(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`not checked`;let r=Math.max(0,Math.round((t-n)/6e4));return r<1?`checked just now`:r<120?`checked ${r} min ago`:`checked ${Math.round(r/60)} h ago`}function tt({focusGroup:e}={}){let t=f(Q),n=u(Q);y(n,$e);let r=f(Ee),i=f(Re),a=f(ze),o=u(Re),s=f(S),l=ee(),d=b(),p=oe(),[h,g]=(0,K.useState)(null),[_,v]=(0,K.useState)(!1),[x,C]=(0,K.useState)(null),[w,D]=(0,K.useState)(null),[ne,O]=(0,K.useState)(!1),[re,A]=(0,K.useState)(null),[j,M]=(0,K.useState)(null),[ae,N]=(0,K.useState)(!1),[se,F]=(0,K.useState)(null),[ce,I]=(0,K.useState)(()=>Date.now());y(()=>I(Date.now()),3e4);let L=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(e!==`mcp-servers`)return;let t=L.current;t&&(typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`start`}),t.focus({preventScroll:!0}))},[e]);let R=s.data,z=de(R),B=le(l.seats),V=ye({terminalAvailable:r.data?.available?r.data.data.available:!r.data&&null,terminalReason:r.data?.available?r.data.data.reason:null,activeSessionId:d.activeSessionId}),H=t.data?.available?t.data.data:null,U=e=>H?.groups.find(t=>t.id===e)??null,fe=i.data?.available?pe(i.data.raw):null,W=a.data?.available?ue(a.data.raw):null,G=(0,K.useCallback)((e,t=`neutral`)=>g({text:e,tone:t}),[]),me=async()=>{v(!0);try{await p.run(`Check every app and seat again`,async()=>(await Promise.all([Oe(),E().catch(()=>null)]),o(),!0))&&(I(Date.now()),G(`Checked again.`))}catch(e){G(P(e),`danger`)}finally{v(!1)}},he=async e=>{C(e.seatId);try{await p.run(`Open the sign-in for ${e.label} in Terminal`,async()=>(await te(e.seatId),!0))&&G(`Opened the sign-in for ${e.label} in Terminal. Finish it there; this page picks it up.`)}catch(e){G(P(e),`danger`)}finally{C(null)}},ge=async()=>{if(w){O(!0),A(null);try{let e=await p.run(`${w.enable?`Switch on`:`Restore`} ${w.row.name}`,()=>ke(w.row.id,w.enable));e&&(G(`Opened “${e.command.join(` `)}” in Terminal. Answer its prompts there.`),D(null))}catch(e){A(P(e))}finally{O(!1)}}},J=async(e,t)=>{if(t.target===`verse`){be(e.id,t.choice),M(null);return}if(t.root!==null){N(!0),F(null);try{await p.run(`Launch ${e.name} in Terminal`,()=>Ae(e.id,{root:t.root,via:t.choice.via,model:t.choice.model}))&&(G(`Opened ${e.name} in Terminal.`),M(null))}catch(e){let t=P(e);j?F(t):G(t,`danger`)}finally{N(!1)}}},Y=V.available||z.length>0?null:`Open a chat or enrol a project first.`,_e=e=>{let t={via:`native`,model:null},n=e.actions.find(e=>e.kind===`launch`)?.command??null;n&&J(e,{choice:t,target:V.available?`verse`:`terminal-app`,root:z[0]?.path??null,command:n})},ve=t.data===void 0&&(t.status===`loading`||t.status===`idle`);return(0,q.jsxs)(`section`,{className:T.section,"aria-label":`Apps & Accounts`,children:[(0,q.jsx)(`div`,{className:T.scroll,children:(0,q.jsxs)(`div`,{className:T.page,children:[(0,q.jsxs)(`header`,{className:T.header,children:[(0,q.jsxs)(`div`,{className:T.headerText,children:[(0,q.jsx)(`h2`,{className:T.title,children:`Apps & Accounts`}),(0,q.jsx)(`p`,{className:T.lede,children:`Everything Verse can run with on this Mac, and whether it is ready.`})]}),(0,q.jsxs)(`div`,{className:T.headerMeta,children:[H?(0,q.jsxs)(`span`,{children:[et(H.checkedAt,ce),H.pathSource===`fallback`?` · PATH from known folders (your login shell did not answer)`:``]}):null,(0,q.jsx)(k,{variant:`ghost`,size:`sm`,icon:(0,q.jsx)(ie,{size:14}),busy:_,onClick:()=>void me(),children:`Check again`})]})]}),(0,q.jsx)(`p`,{className:h?T.banner:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),(0,q.jsx)(Se,{seats:l.seats,health:l.health,budget:l.budget,loading:l.loading,reconnecting:x,onReconnect:e=>void he(e)}),t.data&&!t.data.available?(0,q.jsx)(`p`,{className:T.banner,children:t.data.reason}):ve?(0,q.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Checking apps`,children:[(0,q.jsx)(c,{width:`30%`}),(0,q.jsx)(c,{width:`80%`}),(0,q.jsx)(c,{width:`70%`})]}):(0,q.jsxs)(q.Fragment,{children:[U(`desktop`)?(0,q.jsx)(Xe,{group:U(`desktop`),onToggle:(e,t)=>{A(null),D({row:e,enable:t})},onRestore:e=>{A(null),D({row:e,enable:!1})}}):null,U(`terminal-agents`)?(0,q.jsx)(Ze,{group:U(`terminal-agents`),quickLaunchReason:Y,onQuickLaunch:_e,onLaunchOptions:e=>{F(null),M(e)}}):null,U(`local-models`)?(0,q.jsx)(Qe,{group:U(`local-models`)}):null]}),(0,q.jsx)(Je,{snapshot:fe,cliHealth:W,unavailable:i.data&&!i.data.available?i.data.reason:null,loading:i.data===void 0,run:p.run,onAdded:e=>{G(e),o()},headingRef:L})]})}),(0,q.jsx)(je,{row:w?.row??null,enable:w?.enable??!1,busy:ne,error:re,onCancel:()=>D(null),onConfirm:()=>void ge()}),(0,q.jsx)(Me,{row:j,projects:z,models:B,inVerse:V,busy:ae,error:se,onCancel:()=>M(null),onLaunch:e=>{j&&J(j,e)}}),(0,q.jsx)(m,{open:p.dialog.open,reason:p.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:p.dialog.onClose,onUnlocked:p.dialog.onUnlocked})]})}export{$e as APPS_POLL_MS,tt as AppsSection};
|
|
2
|
+
//# sourceMappingURL=AppsSection-Ddu_RCQE.js.map
|