@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/{CommandSection-Bx2knNqY.js → CommandSection-rIeMK5Ch.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,n as t,s as n}from"./index-DbDw9UAs.js";import{H as r,J as i,m as a,p as o,s}from"./global-BkNl4e6E.js";import{t as c}from"./focus-trap-QqQxQdvH.js";import{t as l}from"./Dialog-BpgcEW6b.js";import{n as u}from"./StatusBadge-Q9YYkijx.js";import{t as d}from"./RefreshIndicator-CKY5BGdD.js";import{D as f,E as p,L as m,O as h,P as g,c as _,l as v,n as y,p as b,t as x,u as S}from"./useChartWidth-D9M7kUw7.js";import{c as C}from"./colors-BZ3a9wFf.js";import{t as ee}from"./Swimlane-Cdc4TqDe.js";import{n as w,t as T}from"./BurnDown-C1fgcFqo.js";import{s as E}from"./command-catalog-Bb_PxC5w.js";import{n as D}from"./viewport-BYGH5EgA.js";import{i as O,r as k}from"./section-visibility-B0xXUQJ0.js";import{E as A,I as te,Z as j}from"./VerseConsoleApp-CTF3Shs0.js";import{f as ne,n as re}from"./verse-model-BQ0Y2CSr.js";import{t as M}from"./Segmented-DnKP6rr7.js";import{t as N,v as P,y as ie}from"./format-CaMmVQCn.js";import{t as ae}from"./Tag-Bv8u6APt.js";import{n as oe}from"./budget-queries-CP7hgR-p.js";import{n as se,t as F}from"./Button-DqgLUZvd.js";import{c as ce,d as le,g as ue,h as de,i as fe,m as pe,y as me}from"./icons-C5EFt_Ts.js";import{t as he}from"./Meter-CeGDXdDM.js";import{t as ge}from"./Switch-CUrvzO2k.js";import{t as _e}from"./BudgetControl-Mm1ZL4u6.js";import{n as ve,t as ye}from"./types-D5XOdyw8.js";import{S as be,_ as xe,b as Se,c as Ce,d as we,g as Te,h as I,i as Ee,l as De,p as Oe,r as ke,s as Ae,t as L,u as je,v as Me,x as Ne,y as Pe}from"./cloud.module-DoFnr8ZH.js";import{a as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"./cloud-queries-BsOepFz6.js";import{t as He}from"./use-ticker-OXAjob3y.js";import{t as Ue}from"./use-guarded-action-UCX2u1t1.js";import{i as We,n as Ge,r as Ke,t as qe}from"./nav-C0IunEYF.js";import{a as Je,f as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as R,t as et,u as tt}from"./surface-data-BFxAlefI.js";import{t as nt}from"./Input-ekTehVaH.js";import{t as rt}from"./Sheet-BvNYOYv5.js";import{n as it,r as z,t as at}from"./actions-MtxBGS5B.js";import{n as ot,r as st,t as ct}from"./dark-since-DOMvtB_G.js";import{a as lt,i as B,n as V,r as H,t as ut}from"./Surface-DBovMq4P.js";import{_ as dt,d as ft,f as pt,s as mt,v as ht}from"./live-model-DEwrl7_A.js";import{n as gt}from"./LeaderCard-85VBbbaZ.js";import{d as _t,n as vt,u as yt}from"./NeedsYouList-ChnRmbSk.js";import{t as bt}from"./CloudBudgetForm-2OW38o_C.js";var U=n(e(),1),W={off:0,propose:1,autonomous:2},G={off:`Off`,propose:`Propose`,autonomous:`Autonomous`},xt={off:`Off`,propose:`Propose`,autonomous:`Auto`},St=[`off`,`propose`,`autonomous`];function Ct(e,t){let n=W[e.switch],r=W[t];return r===n?`same`:r<n?`lower`:r<=W[e.maxSwitchWithoutGrant]?`raise`:`raise-needs-grant`}function wt(e){return St.map(t=>{let n=W[t]>Math.max(W[e.switch],W[e.maxSwitchWithoutGrant]);return{value:t,label:G[t],short:xt[t],needsGrant:n,ariaLabel:n?`${G[t]} (needs a new grant — Touch ID)`:G[t]}})}var K=864e5,Tt=36e5;function Et(e){if(!Number.isFinite(e)||e<=0)return`0m`;if(e>=3*K)return`${Math.floor(e/K)}d`;if(e>=K){let t=Math.floor(e/K),n=Math.floor((e-t*K)/Tt);return n?`${t}d ${n}h`:`${t}d`}return e>=Tt?`${Math.floor(e/Tt)}h`:`${Math.max(1,Math.floor(e/6e4))}m`}var q={none:`No grant`,active:`Active`,paused:`Paused, re-approve`,expired:`Expired, renew`,revoked:`Revoked, new grant`,invalid:`Grant invalid`};function Dt(e,t){if(!e)return{label:`Grant unknown`,tone:`unknown`,detail:`The authority service did not answer, so the grant state is unknown.`,action:null};let n=e.grant;switch(n.state){case`active`:{let e=n.expiresAt?Date.parse(n.expiresAt):NaN;if(!Number.isFinite(e))return{label:`Active`,tone:`success`,detail:`A grant is active; its expiry could not be read.`,action:null};let r=e-t,i=r<K?`danger`:r<3*K?`warning`:`success`;return{label:Et(r),tone:i,detail:`Grant active until ${new Date(e).toLocaleString(`en-US`,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}${r<3*K?` — renew soon`:``}.`,action:r<3*K?`grant`:null}}case`paused`:return{label:q.paused,tone:`warning`,detail:n.reason??`The grant is paused until you re-approve it.`,action:`re-approve`};case`expired`:return{label:q.expired,tone:`danger`,detail:n.reason??`The grant expired; autonomy is dark until a new one is signed.`,action:`grant`};case`revoked`:return{label:q.revoked,tone:`danger`,detail:n.reason??`The grant was revoked; a new one needs Touch ID.`,action:`grant`};case`invalid`:return{label:q.invalid,tone:`danger`,detail:n.reason??`The installed grant failed verification.`,action:`grant`};default:return{label:q.none,tone:`neutral`,detail:`No standing grant is installed; autonomy can only propose.`,action:`grant`}}}function Ot(e){return e?e.kill?{key:`mode`,text:`Stopped`,tone:`danger`}:e.grant.state===`paused`?{key:`mode`,text:`Paused, re-approve`,tone:`warning`}:{key:`mode`,text:G[e.effectiveSwitch],tone:e.effectiveSwitch===`autonomous`?`success`:`neutral`}:{key:`mode`,text:`Autonomy unknown`,tone:`unknown`}}function kt(e){let t=[Ot(e.authority)],n=e.building!==null||e.mergedToday!==null||e.revertsToday!==null;return e.darkSince&&!(e.building&&e.building>0)?t.push({key:`dark`,text:`fleet dark since ${ct(e.darkSince)}`,tone:`neutral`}):n?(e.building!==null&&t.push({key:`building`,text:`${e.building} building`}),e.mergedToday!==null&&t.push({key:`merged`,text:`${e.mergedToday} merged today`}),e.revertsToday!==null&&t.push({key:`reverts`,text:`${e.revertsToday} revert${e.revertsToday===1?``:`s`}`,tone:e.revertsToday>0?`warning`:void 0})):t.push({key:`fleet`,text:`fleet status unknown`,tone:`unknown`}),e.reserve&&t.push({key:`reserve`,text:`${e.reserve.label} ${Math.round(e.reserve.percent)}% reserved for you`}),t}function At(e,t){let n=e.kind;return n===`new`?`grant`:n===`reapprove`?`re-approve`:t}function jt(e){if(typeof e!=`object`||!e)return null;let t=e.result?.stop;if(typeof t!=`object`||!t)return null;let n=t,r=typeof n.liveExecutionLeases==`number`&&Number.isFinite(n.liveExecutionLeases)?Math.max(0,Math.round(n.liveExecutionLeases)):null,i=[];n.quiesced===!0||r===0?i.push(`Stopped. No agent is still running.`):r===null?i.push(`Stopped. Agents started before Stop may still be finishing; no new work starts.`):i.push(`Stopped. ${r} agent${r===1?``:`s`} started before Stop ${r===1?`is`:`are`} still finishing; no new work starts.`),typeof n.mergesRevoked==`number`&&n.mergesRevoked>0&&i.push(`${n.mergesRevoked} armed merge${n.mergesRevoked===1?` was`:`s were`} revoked.`);let a=Array.isArray(n.mergeRevokeFailures)?n.mergeRevokeFailures.length:0;return a>0&&i.push(`${a} armed merge${a===1?``:`s`} could not be revoked; Stop still blocks ${a===1?`it`:`them`}.`),i.join(` `)}var J=t(),Mt=864e5;function Nt(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`}):`—`}function Pt(e){let t=Date.parse(e.issuedAt),n=Date.parse(e.expiresAt);return Number.isFinite(t)&&Number.isFinite(n)?Math.round((n-t)/Mt):null}function Ft(e){let t=e.criteria,n=[`${e.repos.length} repo${e.repos.length===1?``:`s`}`,`${e.maxRisk} risk`,`≤ ${e.maxFiles} files / ${e.maxLines} lines`,`≤ ${e.maxMergesPerRepoPerDay} merges/repo/day`],r=[`${t.minMerges} merges`,`${t.minHours} h`,t.minPostMergeGreenPct?`≥ ${t.minPostMergeGreenPct}% green`:null,`≤ ${t.maxRevertRatePct}% reverts`].filter(Boolean);return`${n.join(` · `)} — advances after ${r.join(`, `)}`}function It({draft:e}){let t=e.payload,n=Pt(t);return(0,J.jsxs)(`div`,{className:z.scope,children:[(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Expiry`,children:[(0,J.jsx)(B,{children:`Expiry`}),(0,J.jsxs)(`p`,{className:z.scopeLead,children:[n===null?`—`:`${n} days`,`, until `,Nt(t.expiresAt)]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Signed by key `,(0,J.jsx)(`span`,{className:z.mono,children:t.keyId}),` · sequence `,t.grantSeq,` · bound to this Mac`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Repositories`,children:[(0,J.jsxs)(B,{children:[`Repositories (`,t.repos.length,`)`]}),(0,J.jsxs)(`table`,{className:z.scopeTable,children:[(0,J.jsx)(`thead`,{children:(0,J.jsxs)(`tr`,{children:[(0,J.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,J.jsx)(`th`,{scope:`col`,children:`Up to`}),(0,J.jsx)(`th`,{scope:`col`,children:`Checks`}),(0,J.jsx)(`th`,{scope:`col`,children:`Risk`}),(0,J.jsx)(`th`,{scope:`col`,className:z.num,children:`Merges/day`})]})}),(0,J.jsx)(`tbody`,{children:t.repos.map(e=>(0,J.jsxs)(`tr`,{children:[(0,J.jsx)(`td`,{className:z.mono,children:e.nameWithOwner}),(0,J.jsx)(`td`,{children:e.stage===`merge`?`Merge`:`Propose`}),(0,J.jsx)(`td`,{children:e.enforcement===`server`?`GitHub`:`Local only`}),(0,J.jsx)(`td`,{children:e.maxRisk}),(0,J.jsx)(`td`,{className:z.num,children:e.maxMergesPerDay})]},e.nameWithOwner))})]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Every merge ≤ `,t.merge.maxFiles,` files / `,t.merge.maxLines,` lines · ashlr-hub itself: `,t.merge.selfRepo===`propose-only`?`propose only`:`merge outside authority code`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Spend`,children:[(0,J.jsx)(B,{children:`Spend`}),(0,J.jsxs)(`p`,{className:z.scopeLead,children:[`Up to `,t.spend.maxMode===`all-in`?`All-in`:t.spend.maxMode===`balanced`?`Balanced`:`Reserve`,` · metered APIs $`,t.spend.meteredUsdPerDay,`/day`]}),(0,J.jsx)(`ul`,{className:z.scopeList,children:Object.entries(t.spend.seats).map(([e,t])=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:z.mono,children:e}),t.enabled?`: keeps ${t.reserveFloorPercent}% for you`:`: not used by autonomy`,t.enabled&&t.maxSessionWindowPercent!==void 0?`, never above ${t.maxSessionWindowPercent}% of its 5-hour window`:``,t.enabled?` · ${t.roles.join(`, `)}`:``]},e))})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Engines and Leader`,children:[(0,J.jsx)(B,{children:`Engines and Leader`}),(0,J.jsx)(`p`,{className:z.scopeLead,children:t.engines.join(`, `)||`none`}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Leader classes `,t.leader.classes.length?t.leader.classes.join(` + `):`none (proposes only)`,` · class-B veto window `,t.leader.vetoMinutes,` min · goal conductor `,t.conductorGoals?`on`:`off`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Rollout ladder`,children:[(0,J.jsxs)(B,{children:[`Rollout ladder (`,t.rollout.stages.length,` stages, advances by itself)`]}),(0,J.jsx)(`ol`,{className:z.ladder,children:t.rollout.stages.map(e=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:z.ladderId,children:e.id}),(0,J.jsx)(`span`,{children:Ft(e)})]},e.id))}),(0,J.jsx)(`p`,{className:z.scopeMeta,children:`Any sandbox violation or reserve breach drops it back one stage. It can never climb past the last stage.`})]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Draft digest `,(0,J.jsxs)(`span`,{className:z.mono,children:[e.digest.slice(0,16),`…`]})]})]})}function Lt({open:e,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:o}){let s=(0,U.useId)();return e?(0,J.jsx)(Rt,{titleId:s,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:o}):null}function Rt({titleId:e,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:s}){let c=o(et,{freshMs:0}),l=c.data?.value??null,u=c.data?.reason??null;return(0,J.jsx)(rt,{open:!0,onClose:s,titleId:e,width:600,title:t===`re-approve`?`Re-approve the standing grant`:`Approve a standing grant`,description:i,footer:(0,J.jsxs)(`div`,{className:z.sheetFooter,children:[(0,J.jsxs)(`p`,{className:z.sheetFootnote,children:[`Touch ID appears on this Mac. Lowering authority — Off, Stop, Revoke — never needs it.`,n?` After approval the switch moves to ${G[n]}.`:``]}),(0,J.jsxs)(`span`,{className:z.sheetButtons,children:[(0,J.jsx)(F,{variant:`ghost`,onClick:s,children:`Cancel`}),(0,J.jsx)(F,{variant:`primary`,icon:(0,J.jsx)(le,{}),disabled:!l,busy:r,onClick:()=>l&&a(l),children:`Approve with Touch ID`})]})]}),children:c.status===`loading`&&!c.data?(0,J.jsx)(`p`,{className:z.muted,"aria-busy":`true`,children:`Preparing the grant draft…`}):l?(0,J.jsx)(It,{draft:l}):(0,J.jsx)(V,{tone:`unknown`,children:u??`The grant draft could not be read, so nothing can be approved from here.`})})}var zt={"all-in":`All-in`,balanced:`Balanced`,reserve:`Reserve`};function Bt(){let e=E(`fleet.stop`)?.guard?.confirm;return{title:e?.title??`Stop the fleet?`,body:e?.body??`Autonomous work halts within one tick and stays stopped until you resume it. Chats keep running.`,confirmLabel:e?.confirmLabel??`Stop fleet`,destructive:!0}}var Vt={title:`Resume the fleet?`,body:`Autonomy picks up at the switch position on its next tick. Stopping again is one click.`,confirmLabel:`Resume fleet`,destructive:!1};function Ht({tone:e}){return(0,J.jsx)(`span`,{className:z.dot,"data-tone":e,"aria-hidden":`true`})}function Ut({read:e,loading:t,budgetMode:n,actions:r,compact:i,now:a}){let o=e?.value??null,[s,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(!1),p=!o,m=Dt(o,a);function h(e){if(!o)return;let t=Ct(o,e);if(t!==`same`){if(t===`raise-needs-grant`){let t=o.grant.state===`paused`;c({intent:t?`re-approve`:`grant`,then:e,why:t?`${o.grant.reason??`The grant is paused.`} ${G[e]} needs it re-approved.`:`${G[e]} is beyond what the installed grant allows, so it needs a new grant.`});return}r.act(()=>R({action:`switch`,to:e}),`Switch autonomy to ${G[e]}`)}}function g(e){if(!s)return;let{then:t}=s,n=At(e,s.intent);r.act(()=>R({action:n,draftDigest:e.digest}),n===`re-approve`?`Re-approve the standing grant`:`Sign a new standing grant`,{onDone:e=>{c(null),t&&e&&W[t]<=W[e.maxSwitchWithoutGrant]&&t!==e.switch&&r.act(()=>R({action:`switch`,to:t}),`Switch autonomy to ${G[t]}`)}})}let _=wt(o||{switch:`off`,maxSwitchWithoutGrant:`off`}),v=o?.kill??!1,y=p||r.busy||r.readOnly,b=(0,J.jsxs)(`div`,{className:z.switchWrap,title:p?e?.reason??`Reading autonomy state…`:void 0,children:[i?null:(0,J.jsx)(`span`,{className:z.barLabel,"aria-hidden":`true`,children:`Autonomy`}),(0,J.jsx)(M,{size:`sm`,"aria-label":`Autonomy`,value:o?.switch??`off`,onChange:h,options:_.map(e=>({value:e.value,label:(0,J.jsxs)(`span`,{className:z.switchOption,children:[i?e.short:e.label,e.needsGrant?(0,J.jsx)(le,{className:z.touchMark,width:12,height:12,"aria-hidden":`true`}):null]}),ariaLabel:e.ariaLabel,disabled:y}))})]}),x=()=>r.act(()=>R({action:`stop`}),`Stop the fleet`,{confirm:Bt(),onDone:e=>u(jt(e))}),S=()=>r.act(()=>R({action:`clear-stop`}),`Resume the fleet`,{confirm:Vt,onDone:()=>u(null)}),C=v?i?(0,J.jsx)(F,{variant:`subtle`,size:`sm`,icon:(0,J.jsx)(pe,{}),iconOnly:!0,"aria-label":`Resume the fleet`,disabled:y,onClick:S}):(0,J.jsx)(F,{variant:`subtle`,size:`sm`,icon:(0,J.jsx)(pe,{}),disabled:y,onClick:S,children:`Resume`}):i?(0,J.jsx)(F,{variant:`danger`,size:`sm`,icon:(0,J.jsx)(me,{}),iconOnly:!0,"aria-label":`Stop the fleet`,disabled:y,onClick:x}):(0,J.jsx)(F,{variant:`danger`,size:`sm`,icon:(0,J.jsx)(me,{}),disabled:y,onClick:x,children:`Stop`});return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:z.bar,role:`toolbar`,"aria-label":`Autonomy controls`,"data-loading":t||void 0,children:[b,i?null:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Wt,{mode:n,onOpen:()=>f(!0)}),(0,J.jsx)(Gt,{chip:m,onOpen:e=>c({intent:e,then:null,why:m.detail})})]}),(0,J.jsx)(`span`,{className:z.barSpacer}),C]}),v&&l?(0,J.jsx)(`p`,{className:z.muted,role:`status`,children:l}):null,i?(0,J.jsxs)(`div`,{className:z.barSecondary,children:[(0,J.jsx)(Wt,{mode:n,onOpen:()=>f(!0)}),(0,J.jsx)(Gt,{chip:m,onOpen:e=>c({intent:e,then:null,why:m.detail})})]}):null,(0,J.jsx)(Lt,{open:s!==null,intent:s?.intent??`grant`,then:s?.then??null,why:s?.why??``,busy:r.busy,onApprove:g,onClose:()=>c(null)}),(0,J.jsx)(Kt,{open:d,onClose:()=>f(!1),status:o})]})}function Wt({mode:e,onOpen:t}){return(0,J.jsxs)(`button`,{type:`button`,className:z.pill,"aria-haspopup":`dialog`,onClick:t,children:[(0,J.jsx)(`span`,{className:z.pillLabel,children:`Budget`}),(0,J.jsx)(`span`,{children:e?zt[e]:`—`}),(0,J.jsx)(fe,{width:14,height:14,"aria-hidden":`true`})]})}function Gt({chip:e,onOpen:t}){let n=(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ht,{tone:e.tone}),(0,J.jsx)(`span`,{className:z.pillLabel,children:`Grant`}),(0,J.jsx)(`span`,{children:e.label})]});if(!e.action)return(0,J.jsx)(`span`,{className:z.chip,"data-tone":e.tone,title:e.detail,"aria-label":`Grant: ${e.label}. ${e.detail}`,role:`status`,children:n});let r=e.action;return(0,J.jsx)(`button`,{type:`button`,className:z.chip,"data-tone":e.tone,title:e.detail,"aria-haspopup":`dialog`,onClick:()=>t(r),"aria-label":`Grant: ${e.label}. ${e.detail}`,children:n})}function Kt({open:e,onClose:t,status:n}){let r=n?.grant.state===`active`?n.grant.maxMode:null;return(0,J.jsx)(rt,{open:e,onClose:t,titleId:`command-budget-sheet`,width:560,title:`Budget`,description:r?`Your grant allows up to ${zt[r]}. Autonomy never spends past it, whatever is selected here — moving toward Reserve is always instant.`:`No active grant: autonomy only proposes. The budget still decides which seats it would use.`,children:e?(0,J.jsx)(_e,{maxMode:r}):null})}function qt(e,t){if(!e.resetsAt)return null;let n=Date.parse(e.resetsAt);return Number.isFinite(n)?n-t:null}function Jt(e,t,n){let r=t.id;if(e===`claude`){if(r===`five_hour`)return`session`;if(r===`seven_day`)return`weekly`;if(r.startsWith(`seven_day_`))return`model`}if(e===`grok`)return`weekly`;let i=qt(t,n);if(e===`codex`){if(r.endsWith(`_secondary`))return`weekly`;if(r.endsWith(`_primary`))return i!==null&&i>189e5?`weekly`:`session`}return i!==null&&i<=189e5?`session`:`weekly`}var Yt=864e5,Xt=36e5;function Y(e,t,n,r=0){let i=e.length-r,a=i-n;if(a<0||n<=0)return null;let o=0;for(let n=a;n<i;n++){let r=t(e[n]);if(r===null||!Number.isFinite(r))return null;o+=r}return o}function Zt(e,t,n){return e.slice(Math.max(0,e.length-n)).map(t)}function Qt(e){let t=e.filter(e=>e!==null&&Number.isFinite(e));return t.length?t.reduce((e,t)=>e+t,0)/t.length:null}function $t(e){let t=e.meteredCostUsd;return typeof t==`number`&&Number.isFinite(t)&&t>=0?t:null}function en(e){if(!e)return null;let t=new Map(e.seatInfo.map(e=>[e.seatId,e])),n=[];for(let r of e.headroom){let e=t.get(r.seatId);if(!e||e.free)continue;let i=r.bindingWindow===`session`?r.sessionUsedPercent:r.bindingWindow===`weekly`?r.weeklyUsedPercent:null;n.push(`${e.label} ${i===null||!Number.isFinite(i)?`—`:A(i)}`)}return n.length?`${n.join(` · `)} of window used`:null}var tn=e=>e>0?`+${e}`:String(e),X=e=>`${e>0?`+`:``}${e.toFixed(1)}`,nn=e=>`${e>0?`+`:e<0?`−`:``}$${Math.abs(e).toFixed(2)}`;function rn(e){if(e===null||!Number.isFinite(e)||e<0)return`—`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60);if(n<48)return t%60?`${n}h ${t%60}m`:`${n}h`;let r=Math.floor(n/24);return n%24?`${r}d ${n%24}h`:`${r}d`}function an(e){if(!e||e.repos.length===0)return[];let t=Math.max(...e.repos.map(e=>e.greenTrend.length));return Array.from({length:t},(n,r)=>Qt(e.repos.map(e=>e.greenTrend[r-(t-e.greenTrend.length)]??null)))}function on({fleet:e,history:t,learning:n,policy:r,budget:i}){let a=t?.days??[],o=e=>e.merges.realized,s=$t,c=e?.summary.merged7d??Y(a,o,7),l=Y(a,o,7,7),u=Y(a,o,7),d=u!==null&&l!==null?u-l:null,f=e?.summary.postMergeGreenPct7d??null,p=an(e),m=p.length>=14?Qt(p.slice(-7)):null,h=p.length>=14?Qt(p.slice(-14,-7)):null,g=m!==null&&h!==null?m-h:null,_=Y(a,s,7),v=Y(a,s,7,7),y=r?r.spend.meteredUsdPerDay:null,b=_===null?`—`:`$${_.toFixed(2)}${y===null?``:` / $${(y*7).toFixed(0)}`}`,x=a.some(e=>$t(e)!==null),S=y===null?null:y===0?`metered APIs off ($0 cap)`:`cap $${y}/day`,C=en(i),ee=[S,x?null:`metered split not reported yet`,C?`subscriptions: ${C}`:`subscriptions are window usage, not dollars — see seat capacity`].filter(Boolean).join(` · `),w=n?.active??null,T=(w?.experimentId?n?.experiments.find(e=>e.id===w.experimentId)??null:null)?.lift??null;return[{id:`merged`,label:`Merged · 7d`,value:c===null?`—`:String(c),delta:d===null?null:{value:d,unit:Math.abs(d)===1?`merge`:`merges`,versus:`vs prior 7d`,goodWhenPositive:!0,format:tn},trend:a.length?Zt(a,o,14):void 0,trendLabel:`Merges per day, last 14 days`,caption:e?.summary.mergedToday==null?`fleet merges on default branches`:`${e.summary.mergedToday} today`},{id:`green`,label:`Post-merge green`,value:f===null?`—`:`${Math.round(f)}%`,delta:g===null?null:{value:g,unit:`pts`,versus:`vs prior 7d`,goodWhenPositive:!0,format:X},trend:p.length?p:void 0,trendLabel:`Post-merge green percent per day`,caption:f===null?`no completed post-merge watch yet`:`CI + suite 2 h after each merge`},{id:`cycle`,label:`Cycle time`,value:rn(e?.summary.cycleTimeP50Ms7d??null),delta:null,trend:void 0,trendLabel:`Cycle time`,caption:`median, proposal → merge, 7d`},{id:`spend`,label:`Metered spend · 7d`,value:b,delta:_!==null&&v!==null?{value:_-v,versus:`vs prior 7d`,goodWhenPositive:!1,format:nn}:null,trend:x?Zt(a,s,14):void 0,trendLabel:`Metered (per-token API) spend per day`,caption:ee},{id:`lift`,label:`Lift`,value:T?`${X(T.mean)} pts`:`—`,delta:null,trend:void 0,trendLabel:`Harness lift`,caption:w?`harness ${w.id} vs baseline${T?` (95% ${X(T.ciLow)} to ${X(T.ciHigh)})`:``}`:`no harness adopted — defaults in force`}]}var sn=(e,t)=>e!==null&&Date.parse(e)>t;function cn({lastLookedAt:e,fleet:t,leader:n,activity:r}){if(!e)return[];let i=Date.parse(e);if(!Number.isFinite(i))return[];let a=[],o=(t?.runs??[]).filter(e=>sn(e.endedAt,i)),s=e=>o.filter(t=>t.outcome===e).length,c=s(`merged`),l=s(`reverted`),u=s(`failed`)+s(`refused`);c&&a.push({id:`merged`,text:`${c} merged`,tone:`success`}),l&&a.push({id:`reverted`,text:`${l} reverted`,tone:`danger`}),u&&a.push({id:`failed`,text:`${u} refused or failed`,tone:`warning`});let d=(n?.timeline??[]).filter(e=>Date.parse(e.at)>i&&e.status===`ok`).length;d&&a.push({id:`memos`,text:`${d} new memo${d===1?``:`s`}`,tone:`info`});let f=(r?.needsYou??[]).filter(e=>Date.parse(e.since)>i).length;return f&&a.push({id:`needs`,text:`${f} new for you`,tone:`warning`}),a}var ln={high:0,warn:1,info:2};function un(e){return[...e].sort((e,t)=>ln[e.severity]-ln[t.severity]||Date.parse(t.since)-Date.parse(e.since))}function dn(e,t){let n=new Map,r=(e,t)=>{typeof e==`string`&&typeof t==`string`&&t.trim().length>0&&n.set(e,t.trim())};for(let e of t?.seatInfo??[])r(e.seatId,e.label);for(let t of e??[])r(t.id,t.label);return n}function fn(e){return e?Object.entries(e.sources).filter(([,e])=>e!==`ok`).map(([e])=>e):[]}function pn(e,t){return`${e}#${t}`}var mn=20;function hn(e,t){let n=e.length;return n>=2&&e[n-1].used===t&&e[n-2].used===t}function gn(e,t){if(!t)return{...e};let n=Date.parse(t.sampledAt);if(!Number.isFinite(n))return{...e};let r={...e};for(let e of t.headroom){let t=[[`session`,e.sessionUsedPercent],[`weekly`,e.weeklyUsedPercent]];for(let[i,a]of t){if(a===null||!Number.isFinite(a))continue;let t=pn(e.seatId,i),o=r[t]??[];if(o.length&&o[o.length-1].t>=n)continue;let s=o.length&&a+mn<o[o.length-1].used?[]:o;r[t]=[...hn(s,a)?s.slice(0,-1):s,{t:n,used:a}].slice(-240)}}return r}function _n(e,t){let n=typeof t?.generatedAt==`string`?Date.parse(t.generatedAt):NaN,r=new Map;for(let e of Array.isArray(t?.series)?t.series:[]){if(!e||typeof e.seatId!=`string`||e.window!==`session`&&e.window!==`weekly`||!Array.isArray(e.points))continue;let t=[];for(let n of e.points){if(!Array.isArray(n))continue;let[e,r]=n;typeof e==`number`&&Number.isFinite(e)&&typeof r==`number`&&Number.isFinite(r)&&r>=0&&r<=100&&t.push({t:e,used:r})}if(t.length===0)continue;let n=pn(e.seatId,e.window);r.set(n,[...r.get(n)??[],...t])}let i={},a=new Set;for(let t of new Set([...Object.keys(e),...r.keys()])){let o=r.get(t)??[],s=e[t]??[];if(o.length>0){a.add(t);let e=Math.max(...o.map(e=>e.t)),r=Number.isFinite(n)?Math.max(n,e):e;s=s.filter(e=>e.t>r)}let c=new Map;for(let e of o)c.set(e.t,e);for(let e of s)c.set(e.t,e);let l=[...c.values()].sort((e,t)=>e.t-t.t),u=0;for(let e=1;e<l.length;e++)l[e].used+mn<l[e-1].used&&(u=e);let d=[];for(let e of l.slice(u))hn(d,e.used)&&d.pop(),d.push(e);i[t]=d.slice(-2e3)}return{readings:i,recorded:a}}var vn={session:5*Xt,weekly:7*Yt};function yn(e,t){if(!t||e.bindingWindow===null)return null;let n=100-t.reservePercent,r=t.maxSessionWindowPercent??100,i,a;e.bindingWindow===`weekly`||e.weeklyUsedPercent===null&&n<r?(i=n,a=`Reserved for you`):(i=r,a=`5-hour ceiling`);let o=100-i;return o>0?{value:o,label:a}:null}function bn(e){let t=e===`session`?{weekday:`short`,hour:`numeric`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`};return e=>{let n=new Date(e);return Number.isNaN(n.getTime())?``:n.toLocaleString(`en-US`,t)}}function xn(e,t,n,r){if(!e?.capacity||n===null||t===`local`)return null;for(let i of e.capacity.windows){let e=typeof i.resetDescription==`string`?i.resetDescription.trim():``;if(e.length!==0&&Jt(t,{id:i.id,usedPercent:i.usedPercent,resetsAt:i.resetsAt,resetDescription:i.resetDescription,limitReached:i.limitReached},r)===n)return e}return null}function Sn(e){return`resets ${e.replace(/^resets\s+/i,``)}`}var Cn=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`aug`,`sep`,`oct`,`nov`,`dec`],wn=/^(?:resets\s+)?(?:([A-Za-z]{3}) ([1-9]|[12]\d|3[01]) at )?([1-9]|1[0-2])(?::([0-5]\d))?(am|pm) \(([A-Za-z0-9_+-]+(?:\/[A-Za-z0-9_+-]+){0,2})\)$/i;function Tn(e,t){let n=t.formatToParts(new Date(e)),r=e=>Number(n.find(t=>t.type===e)?.value),i={y:r(`year`),mo:r(`month`)-1,d:r(`day`),h:r(`hour`)%24,mi:r(`minute`)};return Object.values(i).every(Number.isFinite)?i:null}var En=e=>Date.UTC(e.y,e.mo,e.d,e.h,e.mi);function Dn(e,t){let n=En(e),r=n;for(let e=0;e<3;e++){let e=Tn(r,t);if(!e)return null;let i=n-En(e);if(i===0)return r;r+=i}return null}function On(e,t){let n=wn.exec(e.trim());if(!n||!Number.isFinite(t))return null;let[,r,i,a,o,s,c]=n,l;try{l=new Intl.DateTimeFormat(`en-US`,{timeZone:c,hourCycle:`h23`,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`})}catch{return null}let u=Tn(t,l);if(!u)return null;let d=Number(a)%12+(s.toLowerCase()===`pm`?12:0),f=o===void 0?0:Number(o),p=[];if(r!==void 0){let e=Cn.indexOf(r.toLowerCase()),t=Number(i);if(e<0)return null;for(let n of[u.y-1,u.y,u.y+1])new Date(Date.UTC(n,e,t)).getUTCDate()===t&&p.push({y:n,mo:e,d:t,h:d,mi:f})}else for(let e of[-1,0,1]){let t=new Date(Date.UTC(u.y,u.mo,u.d+e));p.push({y:t.getUTCFullYear(),mo:t.getUTCMonth(),d:t.getUTCDate(),h:d,mi:f})}let m=null;for(let e of p){let n=Dn(e,l);n!==null&&(m===null||Math.abs(n-t)<Math.abs(m-t))&&(m=n)}return m}var kn=9e5,An=Date.UTC(2e3,0,1);function jn(e,t,n,r){let i=e?Date.parse(e):NaN;if(Number.isFinite(i)&&i>=An)return{at:i,from:`provider`};if(t===null||n===null)return null;let a=On(t,r);return a===null||a<r-kn||a>r+n+kn?null:{at:a,from:`words`}}function Mn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim().length>0).map(ht):[]}var Nn=6e4,Pn=new Set([`reserve`,`session-ceiling`]);function Fn(e){return typeof e==`string`?e.trim().replace(/^resets\s+/i,``):``}function In(e){for(let t of e){if(!Pn.has(t.kind))continue;let e=Fn(t.resetDescription);if(e)return e}return null}function Ln(e,t,n){let r=typeof e.resetsAt==`string`?Date.parse(e.resetsAt):NaN;if(Number.isFinite(r))return t.resetAt!==null&&Math.abs(r-t.resetAt)<=Nn?null:ie(e.resetsAt,n);let i=Fn(e.resetDescription);return!i||t.resetText!==null&&Fn(t.resetText).toLowerCase()===i.toLowerCase()?null:i}function Rn(e,t,n){if(!e)return null;let r=pt(dt(e.text,n));if(!r)return null;let i=Ln(e,t,n);return i?`${r} Resets ${i}.`:r}function zn(e,t,n,r){if(!e)return[];let i=new Map(e.seatInfo.map(e=>[e.seatId,e])),a=new Map((n??[]).map(e=>[e.id,e])),o=Date.parse(e.sampledAt),s=Number.isFinite(o)?o:Date.now();return e.headroom.map(n=>{let o=i.get(n.seatId),c=o?.engine??`local`,l=n.bindingWindow?vn[n.bindingWindow]:null,u=Mn(n.reasons),d=xn(a.get(n.seatId),c,n.bindingWindow,s)??(n.bindingWindow===null||c===`local`?null:In(u)),f=l===null?null:jn(n.resetAt,d,l,s),p=f&&l!==null?f.at-l:null,m=n.bindingWindow?pn(n.seatId,n.bindingWindow):null,h=m?t[m]??[]:[];return{seatId:n.seatId,label:o?.label??n.seatId,engine:c,window:n.bindingWindow,points:h.filter(e=>p===null||e.t>=p).map(e=>({t:e.t,remaining:Math.max(0,100-e.used)})),start:p,resetAt:f?.at??null,resetFrom:f?.from??null,resetText:d,reservePercent:e.effective[n.seatId]?.reservePercent??0,line:yn(n,e.effective[n.seatId]),enabled:e.effective[n.seatId]?.enabled??!1,free:o?.free??!1,eligible:n.eligibleForAutonomy,reason:Rn(u[0],{resetAt:f?.at??null,resetText:d},s),recorded:m!==null&&(r?.has(m)??!1)}}).sort((e,t)=>Number(e.free)-Number(t.free)||e.label.localeCompare(t.label))}function Bn(e){if(!e)return null;let t=e.seatInfo.find(e=>e.engine===`claude`);if(!t)return null;let n=e.effective[t.seatId];return n?{label:`Claude`,percent:n.reservePercent}:null}function Vn({kpis:e}){return(0,J.jsx)(`div`,{className:z.kpis,role:`group`,"aria-label":`Key numbers`,children:e.map(e=>(0,J.jsx)(w,{label:e.label,value:e.value,delta:e.delta,trend:e.trend,trendLabel:e.trendLabel,caption:e.caption},e.id))})}var Hn=3e4,Un={high:`Urgent`,warn:`Soon`,info:`FYI`},Wn={approvals:`approvals`,authority:`authority`,fleet:`fleet`,leader:`Leader`,chats:`chats`,accounts:`accounts`};function Gn(e,t){if(t.confirm)return{...t.confirm,destructive:t.destructive};if(t.kind===`approve`||t.kind===`reject`||t.kind===`veto`)return{title:`${t.kind===`approve`?`Approve`:t.kind===`reject`?`Reject`:`Veto`}?`,body:_t(e).text,confirmLabel:t.label,destructive:t.destructive}}function Kn(e){let t=e.target;switch(t.kind){case`url`:return/^https:\/\//.test(t.url)?{label:`Open`,href:t.url}:null;case`section`:return{label:`Show`,onOpen:()=>Ge(t.section,t.anchor)};case`session`:return{label:`Open chat`,onOpen:()=>Ke(t.sessionId)};case`approval`:case`seat`:return{label:`Open`,onOpen:()=>We(e.id)};default:return null}}function qn(e){return e===null?null:e.replace(/(^|· )(Partial )?([a-z][\w-]*) run$/,(e,t,n,r)=>{let i=ne(r)?re[r]:`${r.charAt(0).toUpperCase()}${r.slice(1)}`;return`${t}${n??``}${i} run`})}function Jn({item:e,view:t,seatNames:n}){let r=e.subject,i=[];if(t.repo&&i.push((0,J.jsx)(`span`,{className:z.needsRepo,title:t.repoFull,children:t.repo},`repo`)),r.pr&&i.push((0,J.jsxs)(`span`,{children:[`#`,r.pr]},`pr`)),r.seatId){let e=n?.get(r.seatId)??r.seatId;i.push((0,J.jsx)(`span`,{title:e===r.seatId?void 0:r.seatId,children:e},`seat`))}return i.push((0,J.jsx)(`span`,{title:t.ageStamp,children:t.age},`age`)),(0,J.jsx)(`span`,{className:z.needsMeta,children:i.map((e,t)=>(0,J.jsxs)(U.Fragment,{children:[t>0?(0,J.jsx)(`span`,{"aria-hidden":`true`,children:`·`}):null,e]},e.key))})}function Yn({item:e,actions:t,now:n,seatNames:r}){let i=Kn(e),a=e.actions.filter(e=>e.request!==null),o=yt(e,n),s=qn(o.kindLabel);return(0,J.jsxs)(`li`,{className:z.needsRow,"data-severity":e.severity,id:qe(e.id),children:[(0,J.jsx)(`span`,{className:z.sevDot,"data-severity":e.severity,"aria-hidden":`true`}),(0,J.jsxs)(`div`,{className:z.needsText,children:[s?(0,J.jsx)(`span`,{className:z.needsKind,children:s}):null,(0,J.jsxs)(`span`,{className:z.needsTitle,title:o.fullTitle,children:[(0,J.jsxs)(`span`,{className:`visually-hidden`,children:[Un[e.severity],`: `]}),o.title]}),o.run?(0,J.jsx)(vt,{run:o.run}):null,o.detail?(0,J.jsx)(`span`,{className:z.needsDetail,children:o.detail}):null,(0,J.jsx)(Jn,{item:e,view:o,seatNames:r})]}),(0,J.jsxs)(`div`,{className:z.needsActions,children:[a.map(n=>(0,J.jsx)(F,{size:`sm`,variant:n.destructive?`danger`:n.kind===`approve`?`primary`:`subtle`,disabled:t.busy||t.readOnly,onClick:()=>t.act(()=>tt(n.request.path,n.request.body),`${n.label}: ${o.title}`,{confirm:Gn(e,n)}),children:n.label},n.kind)),i?i.href?(0,J.jsxs)(`a`,{className:z.linkButton,href:i.href,target:`_blank`,rel:`noopener noreferrer`,children:[i.label,(0,J.jsx)(ce,{width:12,height:12,"aria-hidden":`true`}),(0,J.jsx)(`span`,{className:`visually-hidden`,children:` (opens in a new tab)`})]}):(0,J.jsx)(`button`,{type:`button`,className:z.linkButton,onClick:i.onOpen,children:i.label}):null]})]})}function Xn(e){return e.status===`unavailable`?{activity:null,loading:!1,reason:`The Needs-you inbox is not in this build yet, so this card has no source.`,stale:!1}:e.data?{activity:e.data,loading:!1,reason:null,stale:e.status===`stale`}:{activity:null,loading:!0,reason:null,stale:!1}}function Zn({state:e,actions:t,fleetLine:n,seatNames:r}){let{activity:i,loading:a,reason:o,stale:s}=Xn(e),c=He(Hn),l=i?un(i.needsYou):[],u=fn(i),d=l.slice(0,5),f=i?i.needsYou.length:null;return(0,J.jsx)(ut,{title:f===null?`Needs you`:`Needs you (${f})`,caption:f===null||f===0?void 0:`Most urgent first`,tone:f?`attention`:void 0,actions:(0,J.jsxs)(`button`,{type:`button`,className:z.linkButton,onClick:()=>We(),"aria-keyshortcuts":`Meta+J`,children:[`Open all `,(0,J.jsx)(`kbd`,{className:z.kbd,children:`⌘J`})]}),children:a?(0,J.jsx)(`p`,{className:z.muted,"aria-busy":`true`,children:`Reading the inbox…`}):i?d.length===0?u.length||s?(0,J.jsx)(V,{tone:`unknown`,children:u.length?`Nothing to show, but ${u.map(e=>Wn[e]??e).join(`, `)} ${u.length===1?`is`:`are`} not answering — this is not an all-clear.`:`Nothing to show, but the last refresh failed — this is not an all-clear.`}):(0,J.jsxs)(`div`,{className:z.allClear,role:`status`,children:[(0,J.jsx)(`span`,{className:z.allClearTitle,children:`All clear`}),(0,J.jsx)(`span`,{className:z.allClearBody,children:n})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`ul`,{className:z.needsList,children:d.map(e=>(0,J.jsx)(Yn,{item:e,actions:t,now:c,seatNames:r},e.id))}),l.length>d.length?(0,J.jsxs)(`button`,{type:`button`,className:z.moreLink,onClick:()=>We(),children:[l.length-d.length,` more in the drawer`]}):null,u.length?(0,J.jsxs)(`p`,{className:z.muted,children:[u.map(e=>Wn[e]??e).join(`, `),` not answering — the list may be incomplete.`]}):null,s?(0,J.jsx)(`p`,{className:z.muted,children:`The last refresh failed; showing the previous list.`}):null]}):(0,J.jsxs)(V,{tone:`unknown`,children:[o??`The Needs-you inbox did not answer.`,` Nothing is shown rather than a false all-clear.`]})})}var Qn={session:`5-hour`,weekly:`weekly`};function $n(){return(0,J.jsx)(`svg`,{width:`1.6em`,height:`0.8em`,viewBox:`0 0 24 12`,fill:`none`,stroke:`currentColor`,strokeWidth:1.6,strokeLinecap:`round`,focusable:`false`,"aria-hidden":`true`,children:(0,J.jsx)(`path`,{d:`M6 2.5a3.5 3.5 0 1 0 0 7c2.5 0 3.5-2 6-3.5s3.5-3.5 6-3.5a3.5 3.5 0 1 1 0 7c-2.5 0-3.5-2-6-3.5S8.5 2.5 6 2.5Z`})})}var er=16,tr=14,nr=160,Z=e=>`${Math.round(e)}%`,rr=h(0,100,4),ir=.05,ar=`Readings since Verse opened — the line fills in as it watches this seat.`;function or(e,t,n){return e.recorded&&t!==null?`No reading was recorded in this window before ${n(t)}.`:ar}function sr({title:e,description:t,caveat:n,points:r,from:i,to:a,line:o,width:s,formatTime:c,ariaLabel:l}){let u=(0,U.useRef)(null),d=x(u,s),h=r.filter(e=>e.t>=i&&e.t<=a).sort((e,t)=>e.t-t.t),ee=S(),w=m(rr.map(e=>Z(e)),28,56,ee),T=Math.max(40,d-w-tr),E=f(i,a,w,w+T),D=f(0,100,134,er),O=e=>D(Math.min(100,Math.max(0,e))),k=g(h.map(e=>({x:e.t,y:e.remaining}))).map(e=>e.map(e=>({x:E(e.x),y:O(e.y)}))),A=[...h].reverse().find(e=>e.remaining!==null)??null;return(0,J.jsx)(y,{title:e,description:t,caveat:n,status:A?{kind:`ready`}:{kind:`empty`,message:`No reading inside this window.`},table:(0,J.jsx)(v,{caption:e,columns:[{key:`t`,label:`When`,render:e=>c(e.t)},{key:`r`,label:`Remaining`,numeric:!0,render:e=>e.remaining===null?`—`:Z(e.remaining)}],rows:h,rowKey:e=>String(e.t)}),children:(0,J.jsx)(`div`,{ref:u,className:_.plotWrap,children:(0,J.jsxs)(`svg`,{className:_.svg,width:d,height:nr,viewBox:`0 0 ${d} ${nr}`,role:`img`,"aria-label":l,children:[rr.map(e=>(0,J.jsxs)(`g`,{children:[(0,J.jsx)(`line`,{className:_.grid,x1:w,x2:w+T,y1:D(e),y2:D(e)}),(0,J.jsx)(`text`,{className:_.tick,x:w-6,y:D(e),dy:`0.32em`,textAnchor:`end`,children:Z(e)})]},e)),(0,J.jsx)(`line`,{className:_.axis,x1:w,x2:w+T,y1:D(0),y2:D(0)}),(0,J.jsx)(`text`,{className:_.tick,x:w,y:152,textAnchor:`start`,children:c(i)}),(0,J.jsx)(`text`,{className:_.tick,x:w+T,y:152,textAnchor:`end`,children:`Now`}),o?(0,J.jsxs)(`g`,{"data-role":`reserve`,children:[(0,J.jsx)(`line`,{className:_.reference,x1:w,x2:w+T,y1:D(o.value),y2:D(o.value)}),(0,J.jsxs)(`text`,{"data-role":`reserve-label`,className:`${_.tick} ${_.halo}`,x:w+4,y:D(o.value)-5,textAnchor:`start`,children:[o.label,` · `,Z(o.value)]})]}):null,k.map((e,t)=>(0,J.jsxs)(`g`,{"data-role":`remaining`,children:[(0,J.jsx)(`path`,{className:_.wash,fill:C,d:b(e,e.map(e=>({x:e.x,y:D(0)})))}),(0,J.jsx)(`path`,{className:_.line,stroke:C,d:p(e)})]},t)),A&&A.remaining!==null?(0,J.jsx)(`circle`,{className:_.marker,cx:E(A.t),cy:O(A.remaining),r:4,fill:C}):null]})})})}function cr({burn:e,now:t,width:n}){if(e.free)return(0,J.jsxs)(`section`,{className:z.freeSeat,"aria-label":`${e.label}: free local seat`,children:[(0,J.jsxs)(`span`,{className:z.freeHead,children:[(0,J.jsx)(ae,{engine:e.engine}),(0,J.jsx)(`span`,{className:z.freeTitle,children:e.label})]}),(0,J.jsx)(`span`,{className:z.freeValue,children:(0,J.jsx)($n,{})}),(0,J.jsxs)(`span`,{className:z.freeBody,children:[`Local — free, no provider window. `,e.eligible?`Takes autonomous work.`:e.reason??``]})]});let r=`${e.label}${e.window?` · ${Qn[e.window]}`:``}`,i=N(e.enabled?e.eligible?`Autonomy may use it now`:e.reason??`Held back from autonomy`:`Not used by autonomy`),a=[...e.points].reverse().find(e=>e.remaining!==null)?.remaining??null,o=(0,J.jsxs)(`section`,{className:z.freeSeat,"aria-label":r,children:[(0,J.jsxs)(`span`,{className:z.freeHead,children:[(0,J.jsx)(ae,{engine:e.engine}),(0,J.jsx)(`span`,{className:z.freeTitle,children:e.label})]}),(0,J.jsx)(V,{tone:`unknown`,children:`No window reading — unknown usage is never treated as headroom.`})]});if(e.window===null)return o;let s=vn[e.window],c=bn(e.window),l=e.resetText?Sn(e.resetText):null,u=e.points.filter(e=>e.remaining!==null),d=u.length?Math.min(...u.map(e=>e.t)):null,f=e=>u.length<2||d===null||d-e>ir*s;if(e.resetAt===null||e.start===null){if(a===null)return o;let p=Math.max(...u.map(e=>e.t)),m=Math.max(t,p),h=m-s,g=l??`reset time not reported`,_=l?`The provider's reset words could not be placed on a clock`:`No reset time was reported for this window`;return(0,J.jsx)(sr,{title:r,description:`${Z(a)} left · ${g} · ${i}`,caveat:`${_}, so nothing is projected to a reset.${f(h)?` ${or(e,d,c)}`:``}`,points:e.points,from:h,to:m,line:e.line,width:n,formatTime:c,ariaLabel:`${r}: ${Z(a)} left, ${g}. ${pt(i)}`})}let p=e.resetFrom===`words`&&l!==null?`${a===null?``:`${Z(a)} left · `}${l} · ${i}`:i;return(0,J.jsx)(T,{title:r,description:p,caveat:f(e.start)?or(e,d,c):void 0,status:e.points.length===0?{kind:`empty`,message:`No reading yet in this window.`}:void 0,points:e.points,capacity:100,start:e.start,resetAt:e.resetAt,now:t,reserve:e.line??void 0,height:nr,width:n,formatValue:Z,formatTime:c})}function lr({burns:e,now:t,compact:n}){return e.length===0?(0,J.jsx)(V,{tone:`unknown`,children:`Seat capacity is not available — the budget route did not answer.`}):(0,J.jsx)(`div`,{className:n?z.burnStrip:z.burnGrid,role:`group`,"aria-label":`Capacity per seat`,children:e.map(e=>(0,J.jsx)(`div`,{className:z.burnItem,children:(0,J.jsx)(cr,{burn:e,now:t,width:n?300:void 0})},e.seatId))})}var ur=new Intl.NumberFormat(`en-US`);function dr({open:e,onClose:t,actions:n,estimatePerSessionUsd:r,onLaunched:i,defaultRepo:a=ke}){let o=(0,U.useId)(),c=(0,U.useId)(),u=(0,U.useId)(),d=(0,U.useRef)(null),[f,p]=(0,U.useState)({repo:a,baseBranch:``,prompt:``}),[m,h]=(0,U.useState)({}),[g,_]=(0,U.useState)(null);(0,U.useEffect)(()=>{e&&(h({}),_(null))},[e]);let v=e=>{_(null),p(t=>({...t,...e})),h(t=>{let n={...t};for(let t of Object.keys(e))delete n[t];return n})},y=e=>{e.preventDefault();let r=be(f);if(!r.ok){h(r.errors);return}h({}),_(null),n.act(async()=>{try{let e=await Ie({...r.request,origin:`operator`});p(e=>({...e,prompt:``})),i(e.task),t()}catch(e){if(e instanceof s)throw e;_(Ue(e))}},`Launch a Claude Code cloud session with this task.`)},b=f.prompt.trim().length;return(0,J.jsx)(l,{open:e,onClose:t,titleId:o,title:`New cloud task`,description:`Runs as a Claude Code cloud session on your Claude account. It delivers a draft PR; nothing merges on its own.`,widthClassName:L.dialogWidth,initialFocusRef:d,children:(0,J.jsxs)(`form`,{className:L.form,onSubmit:y,noValidate:!0,children:[(0,J.jsxs)(`div`,{className:L.fieldGrid,children:[(0,J.jsx)(nt,{label:`Repository`,hint:`GitHub owner/name`,mono:!0,value:f.repo,error:m.repo,autoComplete:`off`,spellCheck:!1,onChange:e=>v({repo:e.target.value})}),(0,J.jsx)(nt,{label:`Base branch`,hint:`Must be pushed. Empty uses the default branch.`,mono:!0,value:f.baseBranch,placeholder:`default branch`,error:m.baseBranch,autoComplete:`off`,spellCheck:!1,onChange:e=>v({baseBranch:e.target.value})})]}),(0,J.jsxs)(`div`,{className:L.textareaField,children:[(0,J.jsx)(`label`,{className:L.label,htmlFor:c,children:`Task`}),(0,J.jsx)(`textarea`,{ref:d,id:c,className:L.textarea,value:f.prompt,placeholder:`What should the cloud session do? It reads the repo's own guidance and opens a draft PR.`,"aria-invalid":m.prompt?!0:void 0,"aria-describedby":m.prompt?u:void 0,onChange:e=>v({prompt:e.target.value})}),m.prompt?(0,J.jsx)(`p`,{id:u,className:L.fieldError,role:`alert`,children:m.prompt}):null,(0,J.jsxs)(`p`,{className:L.muted,children:[ur.format(b),` of `,ur.format(ve),` characters`,r===null?``:` · estimated at ${je(r)} per session`]})]}),g?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`danger`,role:`alert`,children:g}):null,(0,J.jsxs)(`div`,{className:L.formActions,children:[(0,J.jsx)(F,{variant:`ghost`,onClick:t,disabled:n.busy,children:`Cancel`}),(0,J.jsx)(F,{type:`submit`,variant:`primary`,busy:n.busy,children:`Launch`})]})]})})}function Q({href:e,children:t,label:n}){return(0,J.jsxs)(`a`,{className:L.link,href:e,target:`_blank`,rel:`noreferrer noopener`,"aria-label":n,children:[t,` `,(0,J.jsx)(ce,{width:12,height:12,"aria-hidden":`true`})]})}function fr({task:e,actions:t,now:n}){let r=I(e.sessionUrl,`claude.ai`),i=e.pr?I(e.pr.url,`github.com`):null,a=Se(e,n);return(0,J.jsxs)(`li`,{className:L.task,"data-state":e.state,children:[(0,J.jsx)(`span`,{className:L.taskChip,children:(0,J.jsx)(u,{status:e.state,tone:Ee[e.state],children:Pe(e)})}),(0,J.jsxs)(`span`,{className:L.taskMain,children:[(0,J.jsx)(`p`,{className:L.taskTitle,children:e.title}),(0,J.jsx)(`span`,{className:L.muted,children:Ne(e,n)}),a?(0,J.jsx)(`span`,{className:L.facts,children:a}):null,(0,J.jsxs)(`span`,{className:L.taskLinks,children:[r?(0,J.jsx)(Q,{href:r,label:`Open “${e.title}” in Claude`,children:`Open in Claude`}):null,i&&e.pr?(0,J.jsx)(Q,{href:i,label:`Pull request #${e.pr.number} on GitHub`,children:`PR #${e.pr.number}`}):null,Ae(e)?(0,J.jsx)(`button`,{type:`button`,className:L.linkButton,disabled:t.busy||t.readOnly,"aria-label":`Dismiss “${e.title}”`,onClick:()=>t.act(()=>ze(e.id),`Dismiss the cloud task “${e.title}”.`,{confirm:{title:`Dismiss this cloud task?`,body:`Verse stops tracking “${e.title}”. Nothing on GitHub or claude.ai changes — the session and any PR stay where they are.`,confirmLabel:`Dismiss`}}),children:`Dismiss`}):null]})]})]})}function pr({overview:e,actions:t,onClose:n}){let r=(0,U.useRef)(null),i=(0,U.useId)();return c({open:!0,containerRef:r,onClose:n}),(0,J.jsxs)(`div`,{ref:r,className:L.popover,role:`dialog`,"aria-modal":`false`,"aria-labelledby":i,tabIndex:-1,children:[(0,J.jsx)(`h4`,{id:i,className:L.popoverTitle,children:`Cloud budget`}),(0,J.jsx)(bt,{idPrefix:`cloud-card-budget`,budget:e.budget.budget,busy:t.busy,disabled:t.readOnly,onSave:e=>t.act(()=>Be(e),`Change the cloud budget.`,{onDone:n}),onCancel:n})]})}function mr({overview:e,actions:t,now:n,onNotice:r}){let i=e.budget,a=De(i),o=Te(e.seat),s=we(i.canLaunch,`The cloud budget does not allow another launch right now.`),{shown:c,hidden:l}=Ce(e.tasks,n),u=i.budget.selfImprove;return(0,J.jsxs)(`div`,{className:L.body,children:[(0,J.jsxs)(`div`,{className:L.meterBlock,children:[(0,J.jsx)(he,{value:a.value,max:a.max,label:`Credits remaining`,valueText:a.text,tone:a.tone,"aria-label":`Estimated credits remaining: ${a.text}, ${a.usedText}`}),(0,J.jsxs)(`p`,{className:L.estimateNote,children:[P(i.estimateNote,n),` `,(0,J.jsx)(Q,{href:ye,label:`Check the real balance on claude.ai`,children:`Check usage on claude.ai`})]}),a.warning?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,children:a.warning}):null]}),(0,J.jsx)(`p`,{className:L.facts,children:Me(i,n)}),o?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,children:o}):null,s?(0,J.jsxs)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,"data-testid":`cloud-budget-refused`,children:[`New launches are paused: `,s]}):null,(0,J.jsxs)(`div`,{className:L.toggleRow,children:[(0,J.jsx)(ge,{checked:u.enabled,label:`Self-improvement`,disabled:t.busy||t.readOnly,onChange:e=>t.act(()=>Be({selfImprove:{enabled:e}}),e?`Let Verse launch its own self-improvement tasks.`:`Stop Verse launching its own self-improvement tasks.`,{onDone:()=>r({tone:`success`,text:e?`Self-improvement is on — up to ${u.maxPerDay} a day.`:`Self-improvement is off.`})})}),(0,J.jsx)(`span`,{className:`${L.muted} ${L.toggleText}`,children:xe(i)})]}),c.length===0?(0,J.jsx)(V,{children:`No cloud tasks yet. Start one with New cloud task, or let Verse improve itself.`}):(0,J.jsx)(`ul`,{className:L.tasks,"aria-label":`Cloud tasks`,children:c.map(e=>(0,J.jsx)(fr,{task:e,actions:t,now:n},e.id))}),l>0?(0,J.jsxs)(`p`,{className:L.muted,children:[l,` more `,l===1?`task is`:`tasks are`,` listed by ashlr cloud list.`]}):null]})}function hr({actions:e,now:t=Date.now()}){let n=o(Le,{freshMs:15e3}),r=a(Le);k(r,Ve);let[i,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null),f=n.data?.value??null,p=!n.data&&(n.status===`loading`||n.status===`idle`),m=f?Oe(f.seat,f.budget):null,h=e.busy||e.readOnly,g=f?.backlog.nextUp?f.backlog.items.find(e=>e.id===f.backlog.nextUp)??null:null,_=f?Te(f.seat)??we(f.budget.canLaunch,`The cloud budget does not allow another launch right now.`)??(g?null:`The self-improvement backlog has nothing left to launch.`):null,v=f?f.budget.budget.estimatedCostPerSessionUsd:null,y=f?(0,J.jsxs)(`span`,{className:L.headActions,children:[(0,J.jsx)(j,{label:m??`Start a cloud session with your own task`,children:(0,J.jsx)(F,{size:`sm`,variant:`primary`,icon:(0,J.jsx)(de,{width:14,height:14}),disabled:h||m!==null,onClick:()=>s(!0),children:`New cloud task`})}),(0,J.jsx)(j,{label:_??(g?`Launch the next backlog item: ${g.title}`:`Launch the next backlog item`),children:(0,J.jsx)(F,{size:`sm`,disabled:h||_!==null,onClick:()=>{f&&g&&e.act(()=>Re({count:1}),`Launch the next self-improvement task as a cloud session.`,{confirm:{title:`Improve Verse now?`,body:`Launches “${g.title}” as a cloud session on ${g.repo??f.budget.budget.selfImprove.repo}${v===null?``:`, estimated at ${je(v)}`}. It delivers a draft PR; nothing merges on its own.`,confirmLabel:`Launch`},onDone:e=>{let t=e.launched[0]??null;if(t)d({tone:`success`,text:`Started “${t.title}”.`,href:I(t.sessionUrl,`claude.ai`),linkText:`Open in Claude`});else{let t=e.skipped[0]?.reason??`Nothing was launched, and the server sent no reason.`;d({tone:`warning`,text:P(t)})}}})},children:`Improve Verse`})}),(0,J.jsx)(j,{label:`Credits, per-session estimate and daily caps`,children:(0,J.jsx)(F,{size:`sm`,variant:`ghost`,"aria-expanded":c,"aria-haspopup":`dialog`,onClick:()=>l(e=>!e),disabled:e.readOnly,children:`Edit budget`})}),(0,J.jsx)(j,{label:`Check GitHub for task updates now`,children:(0,J.jsx)(se,{size:`sm`,variant:`ghost`,icon:(0,J.jsx)(ue,{width:14,height:14}),"aria-label":`Check GitHub for task updates now`,disabled:h,onClick:()=>e.act(()=>Fe(),`Re-read the cloud tasks from GitHub.`)})}),c?(0,J.jsx)(pr,{overview:f,actions:e,onClose:()=>l(!1)}):null]}):null;return(0,J.jsx)(ut,{title:`Cloud`,caption:`Claude Code cloud sessions on your Claude credits`,actions:y,children:p?(0,J.jsx)(`p`,{className:L.muted,"aria-busy":`true`,children:`Reading the cloud lane…`}):f?(0,J.jsxs)(J.Fragment,{children:[u?(0,J.jsx)(`div`,{className:L.notice,"data-tone":u.tone,role:`status`,children:(0,J.jsxs)(`span`,{className:L.noticeRow,children:[(0,J.jsxs)(`span`,{children:[u.text,u.href?(0,J.jsxs)(J.Fragment,{children:[` `,(0,J.jsx)(Q,{href:u.href,children:u.linkText??`Open`})]}):null]}),(0,J.jsx)(`button`,{type:`button`,className:L.linkButton,onClick:()=>d(null),children:`Dismiss`})]})}):null,(0,J.jsx)(mr,{overview:f,actions:e,now:t,onNotice:d}),(0,J.jsx)(dr,{open:i,onClose:()=>s(!1),actions:e,estimatePerSessionUsd:v,onLaunched:e=>d({tone:`success`,text:`Started “${e.title}”.`,href:I(e.sessionUrl,`claude.ai`),linkText:`Open in Claude`})})]}):(0,J.jsx)(V,{tone:`unknown`,children:n.data?.reason??n.error?.message??`The cloud lane did not answer.`})})}function gr(e){let t=kt(e);return(0,J.jsx)(`p`,{className:z.verdict,"data-testid":`verdict`,children:t.map((e,t)=>(0,J.jsxs)(`span`,{className:z.verdictPart,"data-tone":e.tone,children:[t>0?(0,J.jsx)(`span`,{className:z.verdictSep,"aria-hidden":`true`,children:` · `}):null,e.text]},e.key))})}var _r=`ashlr.verse.command.lastLooked.v1`;function vr(){try{let e=window.localStorage.getItem(_r);return e&&Number.isFinite(Date.parse(e))?e:null}catch{return null}}function yr(e){try{window.localStorage.setItem(_r,e)}catch{}}function br(){let e=O(),[t,n]=(0,U.useState)(null),r=(0,U.useRef)(!1);return(0,U.useEffect)(()=>{e&&!r.current&&(n(vr()),yr(new Date().toISOString())),r.current=e},[e]),t}function xr({lastLookedAt:e,items:t}){if(!e)return null;let n=new Date(e),r=n.toDateString()===new Date().toDateString()?n.toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`}):n.toLocaleString(`en-US`,{weekday:`short`,hour:`numeric`,minute:`2-digit`});return(0,J.jsxs)(`div`,{className:z.since,role:`group`,"aria-label":`Since you looked at ${r}`,children:[(0,J.jsxs)(`span`,{className:z.sinceLead,children:[`Since `,r]}),t.length===0?(0,J.jsx)(`span`,{className:z.sinceEmpty,children:`nothing new`}):t.map(e=>(0,J.jsx)(`span`,{className:z.sinceChip,"data-tone":e.tone,children:e.text},e.id))]})}var Sr=36e5,Cr=1e4,wr=3e4,Tr=3e5,$={};function Er(){let{compact:e}=D(),t=o(Ze),n=o(Xe),s=te(),c=o(Je),l=o(Qe,{freshMs:6e4}),u=o($e,{freshMs:6e4}),f=o(oe,{freshMs:15e3}),p=o(Ye,{freshMs:6e4}),m={authority:a(Ze),fleet:a(Xe),leader:a(Je),learning:a(Qe),history:a($e),budget:a(oe),seatHistory:a(Ye)};k(()=>{m.authority(),m.fleet()},Cr),k(()=>{m.leader(),m.budget()},wr),k(()=>{m.history(),m.learning(),m.seatHistory()},Tr);let h=He(3e4),g=it(),_=br(),v=(0,U.useSyncExternalStore)((0,U.useCallback)(e=>i(`verse-bootstrap`,e),[]),()=>r(`verse-bootstrap`),()=>r(`verse-bootstrap`)).data?.seats??null,[y,b]=(0,U.useState)($),x=f.data??null;(0,U.useEffect)(()=>{x&&($=gn($,x),b($))},[x]);let S=t.data?.value??null,C=n.data?.value??null,w=u.data?.value??null,T=ot(C),E=(0,U.useMemo)(()=>on({fleet:C,history:w,learning:l.data?.value??null,policy:S?.policy??null,budget:x}),[C,w,l.data,S,x]),O=p.data?.value??null,A=(0,U.useMemo)(()=>_n(y,O),[y,O]),j=(0,U.useMemo)(()=>zn(x,A.readings,v,A.recorded),[x,A,v]),ne=(0,U.useMemo)(()=>dn(v,x),[v,x]),re=cn({lastLookedAt:_,fleet:C,leader:c.data?.value??null,activity:s.data}),M=e?6:12,N=h-M*Sr,P=(0,U.useMemo)(()=>C?mt(C.runs,N,h):[],[C,N,h]),ie=n.data?C?C.state===`dark`&&P.length===0?st(C):P.length===0?{kind:`empty`,message:`No runs in the last ${M} hours.`}:{kind:`ready`}:{kind:`unknown`,reason:n.data.reason??`the live fleet view did not answer.`}:{kind:`loading`},ae=C?C.state===`dark`?`Fleet dark${T?` since ${ct(T)}`:``}.`:`Fleet ${C.state}: ${C.summary.building??`—`} building, ${C.summary.queued??`—`} queued.`:`Fleet status unknown.`,se=[t,n].some(e=>e.status===`refreshing`);return(0,J.jsxs)(lt,{title:`Command`,actions:se?(0,J.jsx)(d,{}):null,lead:(0,J.jsxs)(`div`,{className:z.lead,children:[(0,J.jsx)(Ut,{read:t.data,loading:t.status===`loading`,budgetMode:x?.mode??null,actions:g,compact:e,now:h}),(0,J.jsx)(at,{actions:g}),(0,J.jsx)(gr,{authority:S,building:C?.summary.building??null,mergedToday:C?.summary.mergedToday??null,revertsToday:C?.summary.revertsToday??null,reserve:Bn(x),darkSince:T}),(0,J.jsx)(xr,{lastLookedAt:_,items:re})]}),children:[(0,J.jsx)(H,{span:5,children:(0,J.jsx)(Zn,{state:s,actions:g,fleetLine:ae,seatNames:ne})}),(0,J.jsx)(H,{span:7,children:(0,J.jsx)(gt,{read:c.data,loading:c.status===`loading`,actions:g})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(Vn,{kpis:E})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(lr,{burns:j,now:h,compact:e})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(hr,{actions:g,now:h})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(ee,{title:`Last ${M} hours`,description:`Fleet lanes; bars coloured by status, outlines are queued or parked`,status:ie,lanes:P,from:N,to:h,now:h,toneOf:ft})}),g.dialogs]})}export{Cr as COMMAND_FAST_POLL_MS,Tr as COMMAND_HISTORY_POLL_MS,wr as COMMAND_SLOW_POLL_MS,Er as CommandSection};
|
|
2
|
-
//# sourceMappingURL=CommandSection-
|
|
1
|
+
import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{H as r,J as i,m as a,p as o,s}from"./global-oEl9Qj8u.js";import{t as c}from"./focus-trap-HtcoXeEq.js";import{t as l}from"./Dialog-BS9Dxi3G.js";import{n as u}from"./StatusBadge-HCZp416_.js";import{t as d}from"./RefreshIndicator-CMwSCiz5.js";import{D as f,E as p,L as m,O as h,P as g,c as _,l as v,n as y,p as b,t as x,u as S}from"./useChartWidth-owwodNVz.js";import{c as C}from"./colors-BZ3a9wFf.js";import{t as ee}from"./Swimlane-DGcIcnNA.js";import{n as w,t as T}from"./BurnDown-sFXkUGdB.js";import{s as E}from"./command-catalog-Bb_PxC5w.js";import{n as D}from"./viewport-nTubFCwf.js";import{i as O,r as k}from"./section-visibility-Yctxu-if.js";import{E as A,I as te,Z as j}from"./VerseConsoleApp-DTjDpGCd.js";import{f as ne,n as re}from"./verse-model-DyCwZF-M.js";import{t as M}from"./Segmented-BE53BenI.js";import{t as N,v as P,y as ie}from"./format-BkWdOQDL.js";import{t as ae}from"./Tag-DH15CUJp.js";import{n as oe}from"./budget-queries-V3wcJVK_.js";import{n as se,t as F}from"./Button-HHXgoXGr.js";import{c as ce,d as le,g as ue,h as de,i as fe,m as pe,y as me}from"./icons-DEQa2rTx.js";import{t as he}from"./Meter-DNeocJnD.js";import{t as ge}from"./Switch-iveI-8NY.js";import{t as _e}from"./BudgetControl-TL3FeZ1D.js";import{n as ve,t as ye}from"./types-D5XOdyw8.js";import{S as be,_ as xe,b as Se,c as Ce,d as we,g as Te,h as I,i as Ee,l as De,p as Oe,r as ke,s as Ae,t as L,u as je,v as Me,x as Ne,y as Pe}from"./cloud.module-ascz58c3.js";import{a as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"./cloud-queries-Br_r0UAz.js";import{t as He}from"./use-ticker-D9yi49my.js";import{t as Ue}from"./use-guarded-action-Cf4MeNBa.js";import{i as We,n as Ge,r as Ke,t as qe}from"./nav-NVtnuG7A.js";import{a as Je,f as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as R,t as et,u as tt}from"./surface-data-DTI7LjvH.js";import{t as nt}from"./Input-B5dmGLZx.js";import{t as rt}from"./Sheet-DVP2Mgy6.js";import{n as it,r as z,t as at}from"./actions-tWevL9HV.js";import{n as ot,r as st,t as ct}from"./dark-since-DOMvtB_G.js";import{a as lt,i as B,n as V,r as H,t as ut}from"./Surface-B75lVfzm.js";import{_ as dt,d as ft,f as pt,s as mt,v as ht}from"./live-model-bmsJgnYD.js";import{n as gt}from"./LeaderCard-DZrmjDbI.js";import{d as _t,n as vt,u as yt}from"./NeedsYouList-CzDZbzRD.js";import{t as bt}from"./CloudBudgetForm-DJbiT1wi.js";var U=n(e(),1),W={off:0,propose:1,autonomous:2},G={off:`Off`,propose:`Propose`,autonomous:`Autonomous`},xt={off:`Off`,propose:`Propose`,autonomous:`Auto`},St=[`off`,`propose`,`autonomous`];function Ct(e,t){let n=W[e.switch],r=W[t];return r===n?`same`:r<n?`lower`:r<=W[e.maxSwitchWithoutGrant]?`raise`:`raise-needs-grant`}function wt(e){return St.map(t=>{let n=W[t]>Math.max(W[e.switch],W[e.maxSwitchWithoutGrant]);return{value:t,label:G[t],short:xt[t],needsGrant:n,ariaLabel:n?`${G[t]} (needs a new grant — Touch ID)`:G[t]}})}var K=864e5,Tt=36e5;function Et(e){if(!Number.isFinite(e)||e<=0)return`0m`;if(e>=3*K)return`${Math.floor(e/K)}d`;if(e>=K){let t=Math.floor(e/K),n=Math.floor((e-t*K)/Tt);return n?`${t}d ${n}h`:`${t}d`}return e>=Tt?`${Math.floor(e/Tt)}h`:`${Math.max(1,Math.floor(e/6e4))}m`}var q={none:`No grant`,active:`Active`,paused:`Paused, re-approve`,expired:`Expired, renew`,revoked:`Revoked, new grant`,invalid:`Grant invalid`};function Dt(e,t){if(!e)return{label:`Grant unknown`,tone:`unknown`,detail:`The authority service did not answer, so the grant state is unknown.`,action:null};let n=e.grant;switch(n.state){case`active`:{let e=n.expiresAt?Date.parse(n.expiresAt):NaN;if(!Number.isFinite(e))return{label:`Active`,tone:`success`,detail:`A grant is active; its expiry could not be read.`,action:null};let r=e-t,i=r<K?`danger`:r<3*K?`warning`:`success`;return{label:Et(r),tone:i,detail:`Grant active until ${new Date(e).toLocaleString(`en-US`,{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`})}${r<3*K?` — renew soon`:``}.`,action:r<3*K?`grant`:null}}case`paused`:return{label:q.paused,tone:`warning`,detail:n.reason??`The grant is paused until you re-approve it.`,action:`re-approve`};case`expired`:return{label:q.expired,tone:`danger`,detail:n.reason??`The grant expired; autonomy is dark until a new one is signed.`,action:`grant`};case`revoked`:return{label:q.revoked,tone:`danger`,detail:n.reason??`The grant was revoked; a new one needs Touch ID.`,action:`grant`};case`invalid`:return{label:q.invalid,tone:`danger`,detail:n.reason??`The installed grant failed verification.`,action:`grant`};default:return{label:q.none,tone:`neutral`,detail:`No standing grant is installed; autonomy can only propose.`,action:`grant`}}}function Ot(e){return e?e.kill?{key:`mode`,text:`Stopped`,tone:`danger`}:e.grant.state===`paused`?{key:`mode`,text:`Paused, re-approve`,tone:`warning`}:{key:`mode`,text:G[e.effectiveSwitch],tone:e.effectiveSwitch===`autonomous`?`success`:`neutral`}:{key:`mode`,text:`Autonomy unknown`,tone:`unknown`}}function kt(e){let t=[Ot(e.authority)],n=e.building!==null||e.mergedToday!==null||e.revertsToday!==null;return e.darkSince&&!(e.building&&e.building>0)?t.push({key:`dark`,text:`fleet dark since ${ct(e.darkSince)}`,tone:`neutral`}):n?(e.building!==null&&t.push({key:`building`,text:`${e.building} building`}),e.mergedToday!==null&&t.push({key:`merged`,text:`${e.mergedToday} merged today`}),e.revertsToday!==null&&t.push({key:`reverts`,text:`${e.revertsToday} revert${e.revertsToday===1?``:`s`}`,tone:e.revertsToday>0?`warning`:void 0})):t.push({key:`fleet`,text:`fleet status unknown`,tone:`unknown`}),e.reserve&&t.push({key:`reserve`,text:`${e.reserve.label} ${Math.round(e.reserve.percent)}% reserved for you`}),t}function At(e,t){let n=e.kind;return n===`new`?`grant`:n===`reapprove`?`re-approve`:t}function jt(e){if(typeof e!=`object`||!e)return null;let t=e.result?.stop;if(typeof t!=`object`||!t)return null;let n=t,r=typeof n.liveExecutionLeases==`number`&&Number.isFinite(n.liveExecutionLeases)?Math.max(0,Math.round(n.liveExecutionLeases)):null,i=[];n.quiesced===!0||r===0?i.push(`Stopped. No agent is still running.`):r===null?i.push(`Stopped. Agents started before Stop may still be finishing; no new work starts.`):i.push(`Stopped. ${r} agent${r===1?``:`s`} started before Stop ${r===1?`is`:`are`} still finishing; no new work starts.`),typeof n.mergesRevoked==`number`&&n.mergesRevoked>0&&i.push(`${n.mergesRevoked} armed merge${n.mergesRevoked===1?` was`:`s were`} revoked.`);let a=Array.isArray(n.mergeRevokeFailures)?n.mergeRevokeFailures.length:0;return a>0&&i.push(`${a} armed merge${a===1?``:`s`} could not be revoked; Stop still blocks ${a===1?`it`:`them`}.`),i.join(` `)}var J=t(),Mt=864e5;function Nt(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`}):`—`}function Pt(e){let t=Date.parse(e.issuedAt),n=Date.parse(e.expiresAt);return Number.isFinite(t)&&Number.isFinite(n)?Math.round((n-t)/Mt):null}function Ft(e){let t=e.criteria,n=[`${e.repos.length} repo${e.repos.length===1?``:`s`}`,`${e.maxRisk} risk`,`≤ ${e.maxFiles} files / ${e.maxLines} lines`,`≤ ${e.maxMergesPerRepoPerDay} merges/repo/day`],r=[`${t.minMerges} merges`,`${t.minHours} h`,t.minPostMergeGreenPct?`≥ ${t.minPostMergeGreenPct}% green`:null,`≤ ${t.maxRevertRatePct}% reverts`].filter(Boolean);return`${n.join(` · `)} — advances after ${r.join(`, `)}`}function It({draft:e}){let t=e.payload,n=Pt(t);return(0,J.jsxs)(`div`,{className:z.scope,children:[(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Expiry`,children:[(0,J.jsx)(B,{children:`Expiry`}),(0,J.jsxs)(`p`,{className:z.scopeLead,children:[n===null?`—`:`${n} days`,`, until `,Nt(t.expiresAt)]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Signed by key `,(0,J.jsx)(`span`,{className:z.mono,children:t.keyId}),` · sequence `,t.grantSeq,` · bound to this Mac`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Repositories`,children:[(0,J.jsxs)(B,{children:[`Repositories (`,t.repos.length,`)`]}),(0,J.jsxs)(`table`,{className:z.scopeTable,children:[(0,J.jsx)(`thead`,{children:(0,J.jsxs)(`tr`,{children:[(0,J.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,J.jsx)(`th`,{scope:`col`,children:`Up to`}),(0,J.jsx)(`th`,{scope:`col`,children:`Checks`}),(0,J.jsx)(`th`,{scope:`col`,children:`Risk`}),(0,J.jsx)(`th`,{scope:`col`,className:z.num,children:`Merges/day`})]})}),(0,J.jsx)(`tbody`,{children:t.repos.map(e=>(0,J.jsxs)(`tr`,{children:[(0,J.jsx)(`td`,{className:z.mono,children:e.nameWithOwner}),(0,J.jsx)(`td`,{children:e.stage===`merge`?`Merge`:`Propose`}),(0,J.jsx)(`td`,{children:e.enforcement===`server`?`GitHub`:`Local only`}),(0,J.jsx)(`td`,{children:e.maxRisk}),(0,J.jsx)(`td`,{className:z.num,children:e.maxMergesPerDay})]},e.nameWithOwner))})]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Every merge ≤ `,t.merge.maxFiles,` files / `,t.merge.maxLines,` lines · ashlr-hub itself: `,t.merge.selfRepo===`propose-only`?`propose only`:`merge outside authority code`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Spend`,children:[(0,J.jsx)(B,{children:`Spend`}),(0,J.jsxs)(`p`,{className:z.scopeLead,children:[`Up to `,t.spend.maxMode===`all-in`?`All-in`:t.spend.maxMode===`balanced`?`Balanced`:`Reserve`,` · metered APIs $`,t.spend.meteredUsdPerDay,`/day`]}),(0,J.jsx)(`ul`,{className:z.scopeList,children:Object.entries(t.spend.seats).map(([e,t])=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:z.mono,children:e}),t.enabled?`: keeps ${t.reserveFloorPercent}% for you`:`: not used by autonomy`,t.enabled&&t.maxSessionWindowPercent!==void 0?`, never above ${t.maxSessionWindowPercent}% of its 5-hour window`:``,t.enabled?` · ${t.roles.join(`, `)}`:``]},e))})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Engines and Leader`,children:[(0,J.jsx)(B,{children:`Engines and Leader`}),(0,J.jsx)(`p`,{className:z.scopeLead,children:t.engines.join(`, `)||`none`}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Leader classes `,t.leader.classes.length?t.leader.classes.join(` + `):`none (proposes only)`,` · class-B veto window `,t.leader.vetoMinutes,` min · goal conductor `,t.conductorGoals?`on`:`off`]})]}),(0,J.jsxs)(`section`,{className:z.scopeBlock,"aria-label":`Rollout ladder`,children:[(0,J.jsxs)(B,{children:[`Rollout ladder (`,t.rollout.stages.length,` stages, advances by itself)`]}),(0,J.jsx)(`ol`,{className:z.ladder,children:t.rollout.stages.map(e=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:z.ladderId,children:e.id}),(0,J.jsx)(`span`,{children:Ft(e)})]},e.id))}),(0,J.jsx)(`p`,{className:z.scopeMeta,children:`Any sandbox violation or reserve breach drops it back one stage. It can never climb past the last stage.`})]}),(0,J.jsxs)(`p`,{className:z.scopeMeta,children:[`Draft digest `,(0,J.jsxs)(`span`,{className:z.mono,children:[e.digest.slice(0,16),`…`]})]})]})}function Lt({open:e,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:o}){let s=(0,U.useId)();return e?(0,J.jsx)(Rt,{titleId:s,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:o}):null}function Rt({titleId:e,intent:t,then:n,busy:r,why:i,onApprove:a,onClose:s}){let c=o(et,{freshMs:0}),l=c.data?.value??null,u=c.data?.reason??null;return(0,J.jsx)(rt,{open:!0,onClose:s,titleId:e,width:600,title:t===`re-approve`?`Re-approve the standing grant`:`Approve a standing grant`,description:i,footer:(0,J.jsxs)(`div`,{className:z.sheetFooter,children:[(0,J.jsxs)(`p`,{className:z.sheetFootnote,children:[`Touch ID appears on this Mac. Lowering authority — Off, Stop, Revoke — never needs it.`,n?` After approval the switch moves to ${G[n]}.`:``]}),(0,J.jsxs)(`span`,{className:z.sheetButtons,children:[(0,J.jsx)(F,{variant:`ghost`,onClick:s,children:`Cancel`}),(0,J.jsx)(F,{variant:`primary`,icon:(0,J.jsx)(le,{}),disabled:!l,busy:r,onClick:()=>l&&a(l),children:`Approve with Touch ID`})]})]}),children:c.status===`loading`&&!c.data?(0,J.jsx)(`p`,{className:z.muted,"aria-busy":`true`,children:`Preparing the grant draft…`}):l?(0,J.jsx)(It,{draft:l}):(0,J.jsx)(V,{tone:`unknown`,children:u??`The grant draft could not be read, so nothing can be approved from here.`})})}var zt={"all-in":`All-in`,balanced:`Balanced`,reserve:`Reserve`};function Bt(){let e=E(`fleet.stop`)?.guard?.confirm;return{title:e?.title??`Stop the fleet?`,body:e?.body??`Autonomous work halts within one tick and stays stopped until you resume it. Chats keep running.`,confirmLabel:e?.confirmLabel??`Stop fleet`,destructive:!0}}var Vt={title:`Resume the fleet?`,body:`Autonomy picks up at the switch position on its next tick. Stopping again is one click.`,confirmLabel:`Resume fleet`,destructive:!1};function Ht({tone:e}){return(0,J.jsx)(`span`,{className:z.dot,"data-tone":e,"aria-hidden":`true`})}function Ut({read:e,loading:t,budgetMode:n,actions:r,compact:i,now:a}){let o=e?.value??null,[s,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(!1),p=!o,m=Dt(o,a);function h(e){if(!o)return;let t=Ct(o,e);if(t!==`same`){if(t===`raise-needs-grant`){let t=o.grant.state===`paused`;c({intent:t?`re-approve`:`grant`,then:e,why:t?`${o.grant.reason??`The grant is paused.`} ${G[e]} needs it re-approved.`:`${G[e]} is beyond what the installed grant allows, so it needs a new grant.`});return}r.act(()=>R({action:`switch`,to:e}),`Switch autonomy to ${G[e]}`)}}function g(e){if(!s)return;let{then:t}=s,n=At(e,s.intent);r.act(()=>R({action:n,draftDigest:e.digest}),n===`re-approve`?`Re-approve the standing grant`:`Sign a new standing grant`,{onDone:e=>{c(null),t&&e&&W[t]<=W[e.maxSwitchWithoutGrant]&&t!==e.switch&&r.act(()=>R({action:`switch`,to:t}),`Switch autonomy to ${G[t]}`)}})}let _=wt(o||{switch:`off`,maxSwitchWithoutGrant:`off`}),v=o?.kill??!1,y=p||r.busy||r.readOnly,b=(0,J.jsxs)(`div`,{className:z.switchWrap,title:p?e?.reason??`Reading autonomy state…`:void 0,children:[i?null:(0,J.jsx)(`span`,{className:z.barLabel,"aria-hidden":`true`,children:`Autonomy`}),(0,J.jsx)(M,{size:`sm`,"aria-label":`Autonomy`,value:o?.switch??`off`,onChange:h,options:_.map(e=>({value:e.value,label:(0,J.jsxs)(`span`,{className:z.switchOption,children:[i?e.short:e.label,e.needsGrant?(0,J.jsx)(le,{className:z.touchMark,width:12,height:12,"aria-hidden":`true`}):null]}),ariaLabel:e.ariaLabel,disabled:y}))})]}),x=()=>r.act(()=>R({action:`stop`}),`Stop the fleet`,{confirm:Bt(),onDone:e=>u(jt(e))}),S=()=>r.act(()=>R({action:`clear-stop`}),`Resume the fleet`,{confirm:Vt,onDone:()=>u(null)}),C=v?i?(0,J.jsx)(F,{variant:`subtle`,size:`sm`,icon:(0,J.jsx)(pe,{}),iconOnly:!0,"aria-label":`Resume the fleet`,disabled:y,onClick:S}):(0,J.jsx)(F,{variant:`subtle`,size:`sm`,icon:(0,J.jsx)(pe,{}),disabled:y,onClick:S,children:`Resume`}):i?(0,J.jsx)(F,{variant:`danger`,size:`sm`,icon:(0,J.jsx)(me,{}),iconOnly:!0,"aria-label":`Stop the fleet`,disabled:y,onClick:x}):(0,J.jsx)(F,{variant:`danger`,size:`sm`,icon:(0,J.jsx)(me,{}),disabled:y,onClick:x,children:`Stop`});return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:z.bar,role:`toolbar`,"aria-label":`Autonomy controls`,"data-loading":t||void 0,children:[b,i?null:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Wt,{mode:n,onOpen:()=>f(!0)}),(0,J.jsx)(Gt,{chip:m,onOpen:e=>c({intent:e,then:null,why:m.detail})})]}),(0,J.jsx)(`span`,{className:z.barSpacer}),C]}),v&&l?(0,J.jsx)(`p`,{className:z.muted,role:`status`,children:l}):null,i?(0,J.jsxs)(`div`,{className:z.barSecondary,children:[(0,J.jsx)(Wt,{mode:n,onOpen:()=>f(!0)}),(0,J.jsx)(Gt,{chip:m,onOpen:e=>c({intent:e,then:null,why:m.detail})})]}):null,(0,J.jsx)(Lt,{open:s!==null,intent:s?.intent??`grant`,then:s?.then??null,why:s?.why??``,busy:r.busy,onApprove:g,onClose:()=>c(null)}),(0,J.jsx)(Kt,{open:d,onClose:()=>f(!1),status:o})]})}function Wt({mode:e,onOpen:t}){return(0,J.jsxs)(`button`,{type:`button`,className:z.pill,"aria-haspopup":`dialog`,onClick:t,children:[(0,J.jsx)(`span`,{className:z.pillLabel,children:`Budget`}),(0,J.jsx)(`span`,{children:e?zt[e]:`—`}),(0,J.jsx)(fe,{width:14,height:14,"aria-hidden":`true`})]})}function Gt({chip:e,onOpen:t}){let n=(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ht,{tone:e.tone}),(0,J.jsx)(`span`,{className:z.pillLabel,children:`Grant`}),(0,J.jsx)(`span`,{children:e.label})]});if(!e.action)return(0,J.jsx)(`span`,{className:z.chip,"data-tone":e.tone,title:e.detail,"aria-label":`Grant: ${e.label}. ${e.detail}`,role:`status`,children:n});let r=e.action;return(0,J.jsx)(`button`,{type:`button`,className:z.chip,"data-tone":e.tone,title:e.detail,"aria-haspopup":`dialog`,onClick:()=>t(r),"aria-label":`Grant: ${e.label}. ${e.detail}`,children:n})}function Kt({open:e,onClose:t,status:n}){let r=n?.grant.state===`active`?n.grant.maxMode:null;return(0,J.jsx)(rt,{open:e,onClose:t,titleId:`command-budget-sheet`,width:560,title:`Budget`,description:r?`Your grant allows up to ${zt[r]}. Autonomy never spends past it, whatever is selected here — moving toward Reserve is always instant.`:`No active grant: autonomy only proposes. The budget still decides which seats it would use.`,children:e?(0,J.jsx)(_e,{maxMode:r}):null})}function qt(e,t){if(!e.resetsAt)return null;let n=Date.parse(e.resetsAt);return Number.isFinite(n)?n-t:null}function Jt(e,t,n){let r=t.id;if(e===`claude`){if(r===`five_hour`)return`session`;if(r===`seven_day`)return`weekly`;if(r.startsWith(`seven_day_`))return`model`}if(e===`grok`)return`weekly`;let i=qt(t,n);if(e===`codex`){if(r.endsWith(`_secondary`))return`weekly`;if(r.endsWith(`_primary`))return i!==null&&i>189e5?`weekly`:`session`}return i!==null&&i<=189e5?`session`:`weekly`}var Yt=864e5,Xt=36e5;function Y(e,t,n,r=0){let i=e.length-r,a=i-n;if(a<0||n<=0)return null;let o=0;for(let n=a;n<i;n++){let r=t(e[n]);if(r===null||!Number.isFinite(r))return null;o+=r}return o}function Zt(e,t,n){return e.slice(Math.max(0,e.length-n)).map(t)}function Qt(e){let t=e.filter(e=>e!==null&&Number.isFinite(e));return t.length?t.reduce((e,t)=>e+t,0)/t.length:null}function $t(e){let t=e.meteredCostUsd;return typeof t==`number`&&Number.isFinite(t)&&t>=0?t:null}function en(e){if(!e)return null;let t=new Map(e.seatInfo.map(e=>[e.seatId,e])),n=[];for(let r of e.headroom){let e=t.get(r.seatId);if(!e||e.free)continue;let i=r.bindingWindow===`session`?r.sessionUsedPercent:r.bindingWindow===`weekly`?r.weeklyUsedPercent:null;n.push(`${e.label} ${i===null||!Number.isFinite(i)?`—`:A(i)}`)}return n.length?`${n.join(` · `)} of window used`:null}var tn=e=>e>0?`+${e}`:String(e),X=e=>`${e>0?`+`:``}${e.toFixed(1)}`,nn=e=>`${e>0?`+`:e<0?`−`:``}$${Math.abs(e).toFixed(2)}`;function rn(e){if(e===null||!Number.isFinite(e)||e<0)return`—`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60);if(n<48)return t%60?`${n}h ${t%60}m`:`${n}h`;let r=Math.floor(n/24);return n%24?`${r}d ${n%24}h`:`${r}d`}function an(e){if(!e||e.repos.length===0)return[];let t=Math.max(...e.repos.map(e=>e.greenTrend.length));return Array.from({length:t},(n,r)=>Qt(e.repos.map(e=>e.greenTrend[r-(t-e.greenTrend.length)]??null)))}function on({fleet:e,history:t,learning:n,policy:r,budget:i}){let a=t?.days??[],o=e=>e.merges.realized,s=$t,c=e?.summary.merged7d??Y(a,o,7),l=Y(a,o,7,7),u=Y(a,o,7),d=u!==null&&l!==null?u-l:null,f=e?.summary.postMergeGreenPct7d??null,p=an(e),m=p.length>=14?Qt(p.slice(-7)):null,h=p.length>=14?Qt(p.slice(-14,-7)):null,g=m!==null&&h!==null?m-h:null,_=Y(a,s,7),v=Y(a,s,7,7),y=r?r.spend.meteredUsdPerDay:null,b=_===null?`—`:`$${_.toFixed(2)}${y===null?``:` / $${(y*7).toFixed(0)}`}`,x=a.some(e=>$t(e)!==null),S=y===null?null:y===0?`metered APIs off ($0 cap)`:`cap $${y}/day`,C=en(i),ee=[S,x?null:`metered split not reported yet`,C?`subscriptions: ${C}`:`subscriptions are window usage, not dollars — see seat capacity`].filter(Boolean).join(` · `),w=n?.active??null,T=(w?.experimentId?n?.experiments.find(e=>e.id===w.experimentId)??null:null)?.lift??null;return[{id:`merged`,label:`Merged · 7d`,value:c===null?`—`:String(c),delta:d===null?null:{value:d,unit:Math.abs(d)===1?`merge`:`merges`,versus:`vs prior 7d`,goodWhenPositive:!0,format:tn},trend:a.length?Zt(a,o,14):void 0,trendLabel:`Merges per day, last 14 days`,caption:e?.summary.mergedToday==null?`fleet merges on default branches`:`${e.summary.mergedToday} today`},{id:`green`,label:`Post-merge green`,value:f===null?`—`:`${Math.round(f)}%`,delta:g===null?null:{value:g,unit:`pts`,versus:`vs prior 7d`,goodWhenPositive:!0,format:X},trend:p.length?p:void 0,trendLabel:`Post-merge green percent per day`,caption:f===null?`no completed post-merge watch yet`:`CI + suite 2 h after each merge`},{id:`cycle`,label:`Cycle time`,value:rn(e?.summary.cycleTimeP50Ms7d??null),delta:null,trend:void 0,trendLabel:`Cycle time`,caption:`median, proposal → merge, 7d`},{id:`spend`,label:`Metered spend · 7d`,value:b,delta:_!==null&&v!==null?{value:_-v,versus:`vs prior 7d`,goodWhenPositive:!1,format:nn}:null,trend:x?Zt(a,s,14):void 0,trendLabel:`Metered (per-token API) spend per day`,caption:ee},{id:`lift`,label:`Lift`,value:T?`${X(T.mean)} pts`:`—`,delta:null,trend:void 0,trendLabel:`Harness lift`,caption:w?`harness ${w.id} vs baseline${T?` (95% ${X(T.ciLow)} to ${X(T.ciHigh)})`:``}`:`no harness adopted — defaults in force`}]}var sn=(e,t)=>e!==null&&Date.parse(e)>t;function cn({lastLookedAt:e,fleet:t,leader:n,activity:r}){if(!e)return[];let i=Date.parse(e);if(!Number.isFinite(i))return[];let a=[],o=(t?.runs??[]).filter(e=>sn(e.endedAt,i)),s=e=>o.filter(t=>t.outcome===e).length,c=s(`merged`),l=s(`reverted`),u=s(`failed`)+s(`refused`);c&&a.push({id:`merged`,text:`${c} merged`,tone:`success`}),l&&a.push({id:`reverted`,text:`${l} reverted`,tone:`danger`}),u&&a.push({id:`failed`,text:`${u} refused or failed`,tone:`warning`});let d=(n?.timeline??[]).filter(e=>Date.parse(e.at)>i&&e.status===`ok`).length;d&&a.push({id:`memos`,text:`${d} new memo${d===1?``:`s`}`,tone:`info`});let f=(r?.needsYou??[]).filter(e=>Date.parse(e.since)>i).length;return f&&a.push({id:`needs`,text:`${f} new for you`,tone:`warning`}),a}var ln={high:0,warn:1,info:2};function un(e){return[...e].sort((e,t)=>ln[e.severity]-ln[t.severity]||Date.parse(t.since)-Date.parse(e.since))}function dn(e,t){let n=new Map,r=(e,t)=>{typeof e==`string`&&typeof t==`string`&&t.trim().length>0&&n.set(e,t.trim())};for(let e of t?.seatInfo??[])r(e.seatId,e.label);for(let t of e??[])r(t.id,t.label);return n}function fn(e){return e?Object.entries(e.sources).filter(([,e])=>e!==`ok`).map(([e])=>e):[]}function pn(e,t){return`${e}#${t}`}var mn=20;function hn(e,t){let n=e.length;return n>=2&&e[n-1].used===t&&e[n-2].used===t}function gn(e,t){if(!t)return{...e};let n=Date.parse(t.sampledAt);if(!Number.isFinite(n))return{...e};let r={...e};for(let e of t.headroom){let t=[[`session`,e.sessionUsedPercent],[`weekly`,e.weeklyUsedPercent]];for(let[i,a]of t){if(a===null||!Number.isFinite(a))continue;let t=pn(e.seatId,i),o=r[t]??[];if(o.length&&o[o.length-1].t>=n)continue;let s=o.length&&a+mn<o[o.length-1].used?[]:o;r[t]=[...hn(s,a)?s.slice(0,-1):s,{t:n,used:a}].slice(-240)}}return r}function _n(e,t){let n=typeof t?.generatedAt==`string`?Date.parse(t.generatedAt):NaN,r=new Map;for(let e of Array.isArray(t?.series)?t.series:[]){if(!e||typeof e.seatId!=`string`||e.window!==`session`&&e.window!==`weekly`||!Array.isArray(e.points))continue;let t=[];for(let n of e.points){if(!Array.isArray(n))continue;let[e,r]=n;typeof e==`number`&&Number.isFinite(e)&&typeof r==`number`&&Number.isFinite(r)&&r>=0&&r<=100&&t.push({t:e,used:r})}if(t.length===0)continue;let n=pn(e.seatId,e.window);r.set(n,[...r.get(n)??[],...t])}let i={},a=new Set;for(let t of new Set([...Object.keys(e),...r.keys()])){let o=r.get(t)??[],s=e[t]??[];if(o.length>0){a.add(t);let e=Math.max(...o.map(e=>e.t)),r=Number.isFinite(n)?Math.max(n,e):e;s=s.filter(e=>e.t>r)}let c=new Map;for(let e of o)c.set(e.t,e);for(let e of s)c.set(e.t,e);let l=[...c.values()].sort((e,t)=>e.t-t.t),u=0;for(let e=1;e<l.length;e++)l[e].used+mn<l[e-1].used&&(u=e);let d=[];for(let e of l.slice(u))hn(d,e.used)&&d.pop(),d.push(e);i[t]=d.slice(-2e3)}return{readings:i,recorded:a}}var vn={session:5*Xt,weekly:7*Yt};function yn(e,t){if(!t||e.bindingWindow===null)return null;let n=100-t.reservePercent,r=t.maxSessionWindowPercent??100,i,a;e.bindingWindow===`weekly`||e.weeklyUsedPercent===null&&n<r?(i=n,a=`Reserved for you`):(i=r,a=`5-hour ceiling`);let o=100-i;return o>0?{value:o,label:a}:null}function bn(e){let t=e===`session`?{weekday:`short`,hour:`numeric`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`};return e=>{let n=new Date(e);return Number.isNaN(n.getTime())?``:n.toLocaleString(`en-US`,t)}}function xn(e,t,n,r){if(!e?.capacity||n===null||t===`local`)return null;for(let i of e.capacity.windows){let e=typeof i.resetDescription==`string`?i.resetDescription.trim():``;if(e.length!==0&&Jt(t,{id:i.id,usedPercent:i.usedPercent,resetsAt:i.resetsAt,resetDescription:i.resetDescription,limitReached:i.limitReached},r)===n)return e}return null}function Sn(e){return`resets ${e.replace(/^resets\s+/i,``)}`}var Cn=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`aug`,`sep`,`oct`,`nov`,`dec`],wn=/^(?:resets\s+)?(?:([A-Za-z]{3}) ([1-9]|[12]\d|3[01]) at )?([1-9]|1[0-2])(?::([0-5]\d))?(am|pm) \(([A-Za-z0-9_+-]+(?:\/[A-Za-z0-9_+-]+){0,2})\)$/i;function Tn(e,t){let n=t.formatToParts(new Date(e)),r=e=>Number(n.find(t=>t.type===e)?.value),i={y:r(`year`),mo:r(`month`)-1,d:r(`day`),h:r(`hour`)%24,mi:r(`minute`)};return Object.values(i).every(Number.isFinite)?i:null}var En=e=>Date.UTC(e.y,e.mo,e.d,e.h,e.mi);function Dn(e,t){let n=En(e),r=n;for(let e=0;e<3;e++){let e=Tn(r,t);if(!e)return null;let i=n-En(e);if(i===0)return r;r+=i}return null}function On(e,t){let n=wn.exec(e.trim());if(!n||!Number.isFinite(t))return null;let[,r,i,a,o,s,c]=n,l;try{l=new Intl.DateTimeFormat(`en-US`,{timeZone:c,hourCycle:`h23`,year:`numeric`,month:`numeric`,day:`numeric`,hour:`numeric`,minute:`numeric`})}catch{return null}let u=Tn(t,l);if(!u)return null;let d=Number(a)%12+(s.toLowerCase()===`pm`?12:0),f=o===void 0?0:Number(o),p=[];if(r!==void 0){let e=Cn.indexOf(r.toLowerCase()),t=Number(i);if(e<0)return null;for(let n of[u.y-1,u.y,u.y+1])new Date(Date.UTC(n,e,t)).getUTCDate()===t&&p.push({y:n,mo:e,d:t,h:d,mi:f})}else for(let e of[-1,0,1]){let t=new Date(Date.UTC(u.y,u.mo,u.d+e));p.push({y:t.getUTCFullYear(),mo:t.getUTCMonth(),d:t.getUTCDate(),h:d,mi:f})}let m=null;for(let e of p){let n=Dn(e,l);n!==null&&(m===null||Math.abs(n-t)<Math.abs(m-t))&&(m=n)}return m}var kn=9e5,An=Date.UTC(2e3,0,1);function jn(e,t,n,r){let i=e?Date.parse(e):NaN;if(Number.isFinite(i)&&i>=An)return{at:i,from:`provider`};if(t===null||n===null)return null;let a=On(t,r);return a===null||a<r-kn||a>r+n+kn?null:{at:a,from:`words`}}function Mn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim().length>0).map(ht):[]}var Nn=6e4,Pn=new Set([`reserve`,`session-ceiling`]);function Fn(e){return typeof e==`string`?e.trim().replace(/^resets\s+/i,``):``}function In(e){for(let t of e){if(!Pn.has(t.kind))continue;let e=Fn(t.resetDescription);if(e)return e}return null}function Ln(e,t,n){let r=typeof e.resetsAt==`string`?Date.parse(e.resetsAt):NaN;if(Number.isFinite(r))return t.resetAt!==null&&Math.abs(r-t.resetAt)<=Nn?null:ie(e.resetsAt,n);let i=Fn(e.resetDescription);return!i||t.resetText!==null&&Fn(t.resetText).toLowerCase()===i.toLowerCase()?null:i}function Rn(e,t,n){if(!e)return null;let r=pt(dt(e.text,n));if(!r)return null;let i=Ln(e,t,n);return i?`${r} Resets ${i}.`:r}function zn(e,t,n,r){if(!e)return[];let i=new Map(e.seatInfo.map(e=>[e.seatId,e])),a=new Map((n??[]).map(e=>[e.id,e])),o=Date.parse(e.sampledAt),s=Number.isFinite(o)?o:Date.now();return e.headroom.map(n=>{let o=i.get(n.seatId),c=o?.engine??`local`,l=n.bindingWindow?vn[n.bindingWindow]:null,u=Mn(n.reasons),d=xn(a.get(n.seatId),c,n.bindingWindow,s)??(n.bindingWindow===null||c===`local`?null:In(u)),f=l===null?null:jn(n.resetAt,d,l,s),p=f&&l!==null?f.at-l:null,m=n.bindingWindow?pn(n.seatId,n.bindingWindow):null,h=m?t[m]??[]:[];return{seatId:n.seatId,label:o?.label??n.seatId,engine:c,window:n.bindingWindow,points:h.filter(e=>p===null||e.t>=p).map(e=>({t:e.t,remaining:Math.max(0,100-e.used)})),start:p,resetAt:f?.at??null,resetFrom:f?.from??null,resetText:d,reservePercent:e.effective[n.seatId]?.reservePercent??0,line:yn(n,e.effective[n.seatId]),enabled:e.effective[n.seatId]?.enabled??!1,free:o?.free??!1,eligible:n.eligibleForAutonomy,reason:Rn(u[0],{resetAt:f?.at??null,resetText:d},s),recorded:m!==null&&(r?.has(m)??!1)}}).sort((e,t)=>Number(e.free)-Number(t.free)||e.label.localeCompare(t.label))}function Bn(e){if(!e)return null;let t=e.seatInfo.find(e=>e.engine===`claude`);if(!t)return null;let n=e.effective[t.seatId];return n?{label:`Claude`,percent:n.reservePercent}:null}function Vn({kpis:e}){return(0,J.jsx)(`div`,{className:z.kpis,role:`group`,"aria-label":`Key numbers`,children:e.map(e=>(0,J.jsx)(w,{label:e.label,value:e.value,delta:e.delta,trend:e.trend,trendLabel:e.trendLabel,caption:e.caption},e.id))})}var Hn=3e4,Un={high:`Urgent`,warn:`Soon`,info:`FYI`},Wn={approvals:`approvals`,authority:`authority`,fleet:`fleet`,leader:`Leader`,chats:`chats`,accounts:`accounts`};function Gn(e,t){if(t.confirm)return{...t.confirm,destructive:t.destructive};if(t.kind===`approve`||t.kind===`reject`||t.kind===`veto`)return{title:`${t.kind===`approve`?`Approve`:t.kind===`reject`?`Reject`:`Veto`}?`,body:_t(e).text,confirmLabel:t.label,destructive:t.destructive}}function Kn(e){let t=e.target;switch(t.kind){case`url`:return/^https:\/\//.test(t.url)?{label:`Open`,href:t.url}:null;case`section`:return{label:`Show`,onOpen:()=>Ge(t.section,t.anchor)};case`session`:return{label:`Open chat`,onOpen:()=>Ke(t.sessionId)};case`approval`:case`seat`:return{label:`Open`,onOpen:()=>We(e.id)};default:return null}}function qn(e){return e===null?null:e.replace(/(^|· )(Partial )?([a-z][\w-]*) run$/,(e,t,n,r)=>{let i=ne(r)?re[r]:`${r.charAt(0).toUpperCase()}${r.slice(1)}`;return`${t}${n??``}${i} run`})}function Jn({item:e,view:t,seatNames:n}){let r=e.subject,i=[];if(t.repo&&i.push((0,J.jsx)(`span`,{className:z.needsRepo,title:t.repoFull,children:t.repo},`repo`)),r.pr&&i.push((0,J.jsxs)(`span`,{children:[`#`,r.pr]},`pr`)),r.seatId){let e=n?.get(r.seatId)??r.seatId;i.push((0,J.jsx)(`span`,{title:e===r.seatId?void 0:r.seatId,children:e},`seat`))}return i.push((0,J.jsx)(`span`,{title:t.ageStamp,children:t.age},`age`)),(0,J.jsx)(`span`,{className:z.needsMeta,children:i.map((e,t)=>(0,J.jsxs)(U.Fragment,{children:[t>0?(0,J.jsx)(`span`,{"aria-hidden":`true`,children:`·`}):null,e]},e.key))})}function Yn({item:e,actions:t,now:n,seatNames:r}){let i=Kn(e),a=e.actions.filter(e=>e.request!==null),o=yt(e,n),s=qn(o.kindLabel);return(0,J.jsxs)(`li`,{className:z.needsRow,"data-severity":e.severity,id:qe(e.id),children:[(0,J.jsx)(`span`,{className:z.sevDot,"data-severity":e.severity,"aria-hidden":`true`}),(0,J.jsxs)(`div`,{className:z.needsText,children:[s?(0,J.jsx)(`span`,{className:z.needsKind,children:s}):null,(0,J.jsxs)(`span`,{className:z.needsTitle,title:o.fullTitle,children:[(0,J.jsxs)(`span`,{className:`visually-hidden`,children:[Un[e.severity],`: `]}),o.title]}),o.run?(0,J.jsx)(vt,{run:o.run}):null,o.detail?(0,J.jsx)(`span`,{className:z.needsDetail,children:o.detail}):null,(0,J.jsx)(Jn,{item:e,view:o,seatNames:r})]}),(0,J.jsxs)(`div`,{className:z.needsActions,children:[a.map(n=>(0,J.jsx)(F,{size:`sm`,variant:n.destructive?`danger`:n.kind===`approve`?`primary`:`subtle`,disabled:t.busy||t.readOnly,onClick:()=>t.act(()=>tt(n.request.path,n.request.body),`${n.label}: ${o.title}`,{confirm:Gn(e,n)}),children:n.label},n.kind)),i?i.href?(0,J.jsxs)(`a`,{className:z.linkButton,href:i.href,target:`_blank`,rel:`noopener noreferrer`,children:[i.label,(0,J.jsx)(ce,{width:12,height:12,"aria-hidden":`true`}),(0,J.jsx)(`span`,{className:`visually-hidden`,children:` (opens in a new tab)`})]}):(0,J.jsx)(`button`,{type:`button`,className:z.linkButton,onClick:i.onOpen,children:i.label}):null]})]})}function Xn(e){return e.status===`unavailable`?{activity:null,loading:!1,reason:`The Needs-you inbox is not in this build yet, so this card has no source.`,stale:!1}:e.data?{activity:e.data,loading:!1,reason:null,stale:e.status===`stale`}:{activity:null,loading:!0,reason:null,stale:!1}}function Zn({state:e,actions:t,fleetLine:n,seatNames:r}){let{activity:i,loading:a,reason:o,stale:s}=Xn(e),c=He(Hn),l=i?un(i.needsYou):[],u=fn(i),d=l.slice(0,5),f=i?i.needsYou.length:null;return(0,J.jsx)(ut,{title:f===null?`Needs you`:`Needs you (${f})`,caption:f===null||f===0?void 0:`Most urgent first`,tone:f?`attention`:void 0,actions:(0,J.jsxs)(`button`,{type:`button`,className:z.linkButton,onClick:()=>We(),"aria-keyshortcuts":`Meta+J`,children:[`Open all `,(0,J.jsx)(`kbd`,{className:z.kbd,children:`⌘J`})]}),children:a?(0,J.jsx)(`p`,{className:z.muted,"aria-busy":`true`,children:`Reading the inbox…`}):i?d.length===0?u.length||s?(0,J.jsx)(V,{tone:`unknown`,children:u.length?`Nothing to show, but ${u.map(e=>Wn[e]??e).join(`, `)} ${u.length===1?`is`:`are`} not answering — this is not an all-clear.`:`Nothing to show, but the last refresh failed — this is not an all-clear.`}):(0,J.jsxs)(`div`,{className:z.allClear,role:`status`,children:[(0,J.jsx)(`span`,{className:z.allClearTitle,children:`All clear`}),(0,J.jsx)(`span`,{className:z.allClearBody,children:n})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`ul`,{className:z.needsList,children:d.map(e=>(0,J.jsx)(Yn,{item:e,actions:t,now:c,seatNames:r},e.id))}),l.length>d.length?(0,J.jsxs)(`button`,{type:`button`,className:z.moreLink,onClick:()=>We(),children:[l.length-d.length,` more in the drawer`]}):null,u.length?(0,J.jsxs)(`p`,{className:z.muted,children:[u.map(e=>Wn[e]??e).join(`, `),` not answering — the list may be incomplete.`]}):null,s?(0,J.jsx)(`p`,{className:z.muted,children:`The last refresh failed; showing the previous list.`}):null]}):(0,J.jsxs)(V,{tone:`unknown`,children:[o??`The Needs-you inbox did not answer.`,` Nothing is shown rather than a false all-clear.`]})})}var Qn={session:`5-hour`,weekly:`weekly`};function $n(){return(0,J.jsx)(`svg`,{width:`1.6em`,height:`0.8em`,viewBox:`0 0 24 12`,fill:`none`,stroke:`currentColor`,strokeWidth:1.6,strokeLinecap:`round`,focusable:`false`,"aria-hidden":`true`,children:(0,J.jsx)(`path`,{d:`M6 2.5a3.5 3.5 0 1 0 0 7c2.5 0 3.5-2 6-3.5s3.5-3.5 6-3.5a3.5 3.5 0 1 1 0 7c-2.5 0-3.5-2-6-3.5S8.5 2.5 6 2.5Z`})})}var er=16,tr=14,nr=160,Z=e=>`${Math.round(e)}%`,rr=h(0,100,4),ir=.05,ar=`Readings since Verse opened — the line fills in as it watches this seat.`;function or(e,t,n){return e.recorded&&t!==null?`No reading was recorded in this window before ${n(t)}.`:ar}function sr({title:e,description:t,caveat:n,points:r,from:i,to:a,line:o,width:s,formatTime:c,ariaLabel:l}){let u=(0,U.useRef)(null),d=x(u,s),h=r.filter(e=>e.t>=i&&e.t<=a).sort((e,t)=>e.t-t.t),ee=S(),w=m(rr.map(e=>Z(e)),28,56,ee),T=Math.max(40,d-w-tr),E=f(i,a,w,w+T),D=f(0,100,134,er),O=e=>D(Math.min(100,Math.max(0,e))),k=g(h.map(e=>({x:e.t,y:e.remaining}))).map(e=>e.map(e=>({x:E(e.x),y:O(e.y)}))),A=[...h].reverse().find(e=>e.remaining!==null)??null;return(0,J.jsx)(y,{title:e,description:t,caveat:n,status:A?{kind:`ready`}:{kind:`empty`,message:`No reading inside this window.`},table:(0,J.jsx)(v,{caption:e,columns:[{key:`t`,label:`When`,render:e=>c(e.t)},{key:`r`,label:`Remaining`,numeric:!0,render:e=>e.remaining===null?`—`:Z(e.remaining)}],rows:h,rowKey:e=>String(e.t)}),children:(0,J.jsx)(`div`,{ref:u,className:_.plotWrap,children:(0,J.jsxs)(`svg`,{className:_.svg,width:d,height:nr,viewBox:`0 0 ${d} ${nr}`,role:`img`,"aria-label":l,children:[rr.map(e=>(0,J.jsxs)(`g`,{children:[(0,J.jsx)(`line`,{className:_.grid,x1:w,x2:w+T,y1:D(e),y2:D(e)}),(0,J.jsx)(`text`,{className:_.tick,x:w-6,y:D(e),dy:`0.32em`,textAnchor:`end`,children:Z(e)})]},e)),(0,J.jsx)(`line`,{className:_.axis,x1:w,x2:w+T,y1:D(0),y2:D(0)}),(0,J.jsx)(`text`,{className:_.tick,x:w,y:152,textAnchor:`start`,children:c(i)}),(0,J.jsx)(`text`,{className:_.tick,x:w+T,y:152,textAnchor:`end`,children:`Now`}),o?(0,J.jsxs)(`g`,{"data-role":`reserve`,children:[(0,J.jsx)(`line`,{className:_.reference,x1:w,x2:w+T,y1:D(o.value),y2:D(o.value)}),(0,J.jsxs)(`text`,{"data-role":`reserve-label`,className:`${_.tick} ${_.halo}`,x:w+4,y:D(o.value)-5,textAnchor:`start`,children:[o.label,` · `,Z(o.value)]})]}):null,k.map((e,t)=>(0,J.jsxs)(`g`,{"data-role":`remaining`,children:[(0,J.jsx)(`path`,{className:_.wash,fill:C,d:b(e,e.map(e=>({x:e.x,y:D(0)})))}),(0,J.jsx)(`path`,{className:_.line,stroke:C,d:p(e)})]},t)),A&&A.remaining!==null?(0,J.jsx)(`circle`,{className:_.marker,cx:E(A.t),cy:O(A.remaining),r:4,fill:C}):null]})})})}function cr({burn:e,now:t,width:n}){if(e.free)return(0,J.jsxs)(`section`,{className:z.freeSeat,"aria-label":`${e.label}: free local seat`,children:[(0,J.jsxs)(`span`,{className:z.freeHead,children:[(0,J.jsx)(ae,{engine:e.engine}),(0,J.jsx)(`span`,{className:z.freeTitle,children:e.label})]}),(0,J.jsx)(`span`,{className:z.freeValue,children:(0,J.jsx)($n,{})}),(0,J.jsxs)(`span`,{className:z.freeBody,children:[`Local — free, no provider window. `,e.eligible?`Takes autonomous work.`:e.reason??``]})]});let r=`${e.label}${e.window?` · ${Qn[e.window]}`:``}`,i=N(e.enabled?e.eligible?`Autonomy may use it now`:e.reason??`Held back from autonomy`:`Not used by autonomy`),a=[...e.points].reverse().find(e=>e.remaining!==null)?.remaining??null,o=(0,J.jsxs)(`section`,{className:z.freeSeat,"aria-label":r,children:[(0,J.jsxs)(`span`,{className:z.freeHead,children:[(0,J.jsx)(ae,{engine:e.engine}),(0,J.jsx)(`span`,{className:z.freeTitle,children:e.label})]}),(0,J.jsx)(V,{tone:`unknown`,children:`No window reading — unknown usage is never treated as headroom.`})]});if(e.window===null)return o;let s=vn[e.window],c=bn(e.window),l=e.resetText?Sn(e.resetText):null,u=e.points.filter(e=>e.remaining!==null),d=u.length?Math.min(...u.map(e=>e.t)):null,f=e=>u.length<2||d===null||d-e>ir*s;if(e.resetAt===null||e.start===null){if(a===null)return o;let p=Math.max(...u.map(e=>e.t)),m=Math.max(t,p),h=m-s,g=l??`reset time not reported`,_=l?`The provider's reset words could not be placed on a clock`:`No reset time was reported for this window`;return(0,J.jsx)(sr,{title:r,description:`${Z(a)} left · ${g} · ${i}`,caveat:`${_}, so nothing is projected to a reset.${f(h)?` ${or(e,d,c)}`:``}`,points:e.points,from:h,to:m,line:e.line,width:n,formatTime:c,ariaLabel:`${r}: ${Z(a)} left, ${g}. ${pt(i)}`})}let p=e.resetFrom===`words`&&l!==null?`${a===null?``:`${Z(a)} left · `}${l} · ${i}`:i;return(0,J.jsx)(T,{title:r,description:p,caveat:f(e.start)?or(e,d,c):void 0,status:e.points.length===0?{kind:`empty`,message:`No reading yet in this window.`}:void 0,points:e.points,capacity:100,start:e.start,resetAt:e.resetAt,now:t,reserve:e.line??void 0,height:nr,width:n,formatValue:Z,formatTime:c})}function lr({burns:e,now:t,compact:n}){return e.length===0?(0,J.jsx)(V,{tone:`unknown`,children:`Seat capacity is not available — the budget route did not answer.`}):(0,J.jsx)(`div`,{className:n?z.burnStrip:z.burnGrid,role:`group`,"aria-label":`Capacity per seat`,children:e.map(e=>(0,J.jsx)(`div`,{className:z.burnItem,children:(0,J.jsx)(cr,{burn:e,now:t,width:n?300:void 0})},e.seatId))})}var ur=new Intl.NumberFormat(`en-US`);function dr({open:e,onClose:t,actions:n,estimatePerSessionUsd:r,onLaunched:i,defaultRepo:a=ke}){let o=(0,U.useId)(),c=(0,U.useId)(),u=(0,U.useId)(),d=(0,U.useRef)(null),[f,p]=(0,U.useState)({repo:a,baseBranch:``,prompt:``}),[m,h]=(0,U.useState)({}),[g,_]=(0,U.useState)(null);(0,U.useEffect)(()=>{e&&(h({}),_(null))},[e]);let v=e=>{_(null),p(t=>({...t,...e})),h(t=>{let n={...t};for(let t of Object.keys(e))delete n[t];return n})},y=e=>{e.preventDefault();let r=be(f);if(!r.ok){h(r.errors);return}h({}),_(null),n.act(async()=>{try{let e=await Ie({...r.request,origin:`operator`});p(e=>({...e,prompt:``})),i(e.task),t()}catch(e){if(e instanceof s)throw e;_(Ue(e))}},`Launch a Claude Code cloud session with this task.`)},b=f.prompt.trim().length;return(0,J.jsx)(l,{open:e,onClose:t,titleId:o,title:`New cloud task`,description:`Runs as a Claude Code cloud session on your Claude account. It delivers a draft PR; nothing merges on its own.`,widthClassName:L.dialogWidth,initialFocusRef:d,children:(0,J.jsxs)(`form`,{className:L.form,onSubmit:y,noValidate:!0,children:[(0,J.jsxs)(`div`,{className:L.fieldGrid,children:[(0,J.jsx)(nt,{label:`Repository`,hint:`GitHub owner/name`,mono:!0,value:f.repo,error:m.repo,autoComplete:`off`,spellCheck:!1,onChange:e=>v({repo:e.target.value})}),(0,J.jsx)(nt,{label:`Base branch`,hint:`Must be pushed. Empty uses the default branch.`,mono:!0,value:f.baseBranch,placeholder:`default branch`,error:m.baseBranch,autoComplete:`off`,spellCheck:!1,onChange:e=>v({baseBranch:e.target.value})})]}),(0,J.jsxs)(`div`,{className:L.textareaField,children:[(0,J.jsx)(`label`,{className:L.label,htmlFor:c,children:`Task`}),(0,J.jsx)(`textarea`,{ref:d,id:c,className:L.textarea,value:f.prompt,placeholder:`What should the cloud session do? It reads the repo's own guidance and opens a draft PR.`,"aria-invalid":m.prompt?!0:void 0,"aria-describedby":m.prompt?u:void 0,onChange:e=>v({prompt:e.target.value})}),m.prompt?(0,J.jsx)(`p`,{id:u,className:L.fieldError,role:`alert`,children:m.prompt}):null,(0,J.jsxs)(`p`,{className:L.muted,children:[ur.format(b),` of `,ur.format(ve),` characters`,r===null?``:` · estimated at ${je(r)} per session`]})]}),g?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`danger`,role:`alert`,children:g}):null,(0,J.jsxs)(`div`,{className:L.formActions,children:[(0,J.jsx)(F,{variant:`ghost`,onClick:t,disabled:n.busy,children:`Cancel`}),(0,J.jsx)(F,{type:`submit`,variant:`primary`,busy:n.busy,children:`Launch`})]})]})})}function Q({href:e,children:t,label:n}){return(0,J.jsxs)(`a`,{className:L.link,href:e,target:`_blank`,rel:`noreferrer noopener`,"aria-label":n,children:[t,` `,(0,J.jsx)(ce,{width:12,height:12,"aria-hidden":`true`})]})}function fr({task:e,actions:t,now:n}){let r=I(e.sessionUrl,`claude.ai`),i=e.pr?I(e.pr.url,`github.com`):null,a=Se(e,n);return(0,J.jsxs)(`li`,{className:L.task,"data-state":e.state,children:[(0,J.jsx)(`span`,{className:L.taskChip,children:(0,J.jsx)(u,{status:e.state,tone:Ee[e.state],children:Pe(e)})}),(0,J.jsxs)(`span`,{className:L.taskMain,children:[(0,J.jsx)(`p`,{className:L.taskTitle,children:e.title}),(0,J.jsx)(`span`,{className:L.muted,children:Ne(e,n)}),a?(0,J.jsx)(`span`,{className:L.facts,children:a}):null,(0,J.jsxs)(`span`,{className:L.taskLinks,children:[r?(0,J.jsx)(Q,{href:r,label:`Open “${e.title}” in Claude`,children:`Open in Claude`}):null,i&&e.pr?(0,J.jsx)(Q,{href:i,label:`Pull request #${e.pr.number} on GitHub`,children:`PR #${e.pr.number}`}):null,Ae(e)?(0,J.jsx)(`button`,{type:`button`,className:L.linkButton,disabled:t.busy||t.readOnly,"aria-label":`Dismiss “${e.title}”`,onClick:()=>t.act(()=>ze(e.id),`Dismiss the cloud task “${e.title}”.`,{confirm:{title:`Dismiss this cloud task?`,body:`Verse stops tracking “${e.title}”. Nothing on GitHub or claude.ai changes — the session and any PR stay where they are.`,confirmLabel:`Dismiss`}}),children:`Dismiss`}):null]})]})]})}function pr({overview:e,actions:t,onClose:n}){let r=(0,U.useRef)(null),i=(0,U.useId)();return c({open:!0,containerRef:r,onClose:n}),(0,J.jsxs)(`div`,{ref:r,className:L.popover,role:`dialog`,"aria-modal":`false`,"aria-labelledby":i,tabIndex:-1,children:[(0,J.jsx)(`h4`,{id:i,className:L.popoverTitle,children:`Cloud budget`}),(0,J.jsx)(bt,{idPrefix:`cloud-card-budget`,budget:e.budget.budget,busy:t.busy,disabled:t.readOnly,onSave:e=>t.act(()=>Be(e),`Change the cloud budget.`,{onDone:n}),onCancel:n})]})}function mr({overview:e,actions:t,now:n,onNotice:r}){let i=e.budget,a=De(i),o=Te(e.seat),s=we(i.canLaunch,`The cloud budget does not allow another launch right now.`),{shown:c,hidden:l}=Ce(e.tasks,n),u=i.budget.selfImprove;return(0,J.jsxs)(`div`,{className:L.body,children:[(0,J.jsxs)(`div`,{className:L.meterBlock,children:[(0,J.jsx)(he,{value:a.value,max:a.max,label:`Credits remaining`,valueText:a.text,tone:a.tone,"aria-label":`Estimated credits remaining: ${a.text}, ${a.usedText}`}),(0,J.jsxs)(`p`,{className:L.estimateNote,children:[P(i.estimateNote,n),` `,(0,J.jsx)(Q,{href:ye,label:`Check the real balance on claude.ai`,children:`Check usage on claude.ai`})]}),a.warning?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,children:a.warning}):null]}),(0,J.jsx)(`p`,{className:L.facts,children:Me(i,n)}),o?(0,J.jsx)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,children:o}):null,s?(0,J.jsxs)(`p`,{className:L.notice,"data-tone":`warning`,role:`note`,"data-testid":`cloud-budget-refused`,children:[`New launches are paused: `,s]}):null,(0,J.jsxs)(`div`,{className:L.toggleRow,children:[(0,J.jsx)(ge,{checked:u.enabled,label:`Self-improvement`,disabled:t.busy||t.readOnly,onChange:e=>t.act(()=>Be({selfImprove:{enabled:e}}),e?`Let Verse launch its own self-improvement tasks.`:`Stop Verse launching its own self-improvement tasks.`,{onDone:()=>r({tone:`success`,text:e?`Self-improvement is on — up to ${u.maxPerDay} a day.`:`Self-improvement is off.`})})}),(0,J.jsx)(`span`,{className:`${L.muted} ${L.toggleText}`,children:xe(i)})]}),c.length===0?(0,J.jsx)(V,{children:`No cloud tasks yet. Start one with New cloud task, or let Verse improve itself.`}):(0,J.jsx)(`ul`,{className:L.tasks,"aria-label":`Cloud tasks`,children:c.map(e=>(0,J.jsx)(fr,{task:e,actions:t,now:n},e.id))}),l>0?(0,J.jsxs)(`p`,{className:L.muted,children:[l,` more `,l===1?`task is`:`tasks are`,` listed by ashlr cloud list.`]}):null]})}function hr({actions:e,now:t=Date.now()}){let n=o(Le,{freshMs:15e3}),r=a(Le);k(r,Ve);let[i,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null),f=n.data?.value??null,p=!n.data&&(n.status===`loading`||n.status===`idle`),m=f?Oe(f.seat,f.budget):null,h=e.busy||e.readOnly,g=f?.backlog.nextUp?f.backlog.items.find(e=>e.id===f.backlog.nextUp)??null:null,_=f?Te(f.seat)??we(f.budget.canLaunch,`The cloud budget does not allow another launch right now.`)??(g?null:`The self-improvement backlog has nothing left to launch.`):null,v=f?f.budget.budget.estimatedCostPerSessionUsd:null,y=f?(0,J.jsxs)(`span`,{className:L.headActions,children:[(0,J.jsx)(j,{label:m??`Start a cloud session with your own task`,children:(0,J.jsx)(F,{size:`sm`,variant:`primary`,icon:(0,J.jsx)(de,{width:14,height:14}),disabled:h||m!==null,onClick:()=>s(!0),children:`New cloud task`})}),(0,J.jsx)(j,{label:_??(g?`Launch the next backlog item: ${g.title}`:`Launch the next backlog item`),children:(0,J.jsx)(F,{size:`sm`,disabled:h||_!==null,onClick:()=>{f&&g&&e.act(()=>Re({count:1}),`Launch the next self-improvement task as a cloud session.`,{confirm:{title:`Improve Verse now?`,body:`Launches “${g.title}” as a cloud session on ${g.repo??f.budget.budget.selfImprove.repo}${v===null?``:`, estimated at ${je(v)}`}. It delivers a draft PR; nothing merges on its own.`,confirmLabel:`Launch`},onDone:e=>{let t=e.launched[0]??null;if(t)d({tone:`success`,text:`Started “${t.title}”.`,href:I(t.sessionUrl,`claude.ai`),linkText:`Open in Claude`});else{let t=e.skipped[0]?.reason??`Nothing was launched, and the server sent no reason.`;d({tone:`warning`,text:P(t)})}}})},children:`Improve Verse`})}),(0,J.jsx)(j,{label:`Credits, per-session estimate and daily caps`,children:(0,J.jsx)(F,{size:`sm`,variant:`ghost`,"aria-expanded":c,"aria-haspopup":`dialog`,onClick:()=>l(e=>!e),disabled:e.readOnly,children:`Edit budget`})}),(0,J.jsx)(j,{label:`Check GitHub for task updates now`,children:(0,J.jsx)(se,{size:`sm`,variant:`ghost`,icon:(0,J.jsx)(ue,{width:14,height:14}),"aria-label":`Check GitHub for task updates now`,disabled:h,onClick:()=>e.act(()=>Fe(),`Re-read the cloud tasks from GitHub.`)})}),c?(0,J.jsx)(pr,{overview:f,actions:e,onClose:()=>l(!1)}):null]}):null;return(0,J.jsx)(ut,{title:`Cloud`,caption:`Claude Code cloud sessions on your Claude credits`,actions:y,children:p?(0,J.jsx)(`p`,{className:L.muted,"aria-busy":`true`,children:`Reading the cloud lane…`}):f?(0,J.jsxs)(J.Fragment,{children:[u?(0,J.jsx)(`div`,{className:L.notice,"data-tone":u.tone,role:`status`,children:(0,J.jsxs)(`span`,{className:L.noticeRow,children:[(0,J.jsxs)(`span`,{children:[u.text,u.href?(0,J.jsxs)(J.Fragment,{children:[` `,(0,J.jsx)(Q,{href:u.href,children:u.linkText??`Open`})]}):null]}),(0,J.jsx)(`button`,{type:`button`,className:L.linkButton,onClick:()=>d(null),children:`Dismiss`})]})}):null,(0,J.jsx)(mr,{overview:f,actions:e,now:t,onNotice:d}),(0,J.jsx)(dr,{open:i,onClose:()=>s(!1),actions:e,estimatePerSessionUsd:v,onLaunched:e=>d({tone:`success`,text:`Started “${e.title}”.`,href:I(e.sessionUrl,`claude.ai`),linkText:`Open in Claude`})})]}):(0,J.jsx)(V,{tone:`unknown`,children:n.data?.reason??n.error?.message??`The cloud lane did not answer.`})})}function gr(e){let t=kt(e);return(0,J.jsx)(`p`,{className:z.verdict,"data-testid":`verdict`,children:t.map((e,t)=>(0,J.jsxs)(`span`,{className:z.verdictPart,"data-tone":e.tone,children:[t>0?(0,J.jsx)(`span`,{className:z.verdictSep,"aria-hidden":`true`,children:` · `}):null,e.text]},e.key))})}var _r=`ashlr.verse.command.lastLooked.v1`;function vr(){try{let e=window.localStorage.getItem(_r);return e&&Number.isFinite(Date.parse(e))?e:null}catch{return null}}function yr(e){try{window.localStorage.setItem(_r,e)}catch{}}function br(){let e=O(),[t,n]=(0,U.useState)(null),r=(0,U.useRef)(!1);return(0,U.useEffect)(()=>{e&&!r.current&&(n(vr()),yr(new Date().toISOString())),r.current=e},[e]),t}function xr({lastLookedAt:e,items:t}){if(!e)return null;let n=new Date(e),r=n.toDateString()===new Date().toDateString()?n.toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`}):n.toLocaleString(`en-US`,{weekday:`short`,hour:`numeric`,minute:`2-digit`});return(0,J.jsxs)(`div`,{className:z.since,role:`group`,"aria-label":`Since you looked at ${r}`,children:[(0,J.jsxs)(`span`,{className:z.sinceLead,children:[`Since `,r]}),t.length===0?(0,J.jsx)(`span`,{className:z.sinceEmpty,children:`nothing new`}):t.map(e=>(0,J.jsx)(`span`,{className:z.sinceChip,"data-tone":e.tone,children:e.text},e.id))]})}var Sr=36e5,Cr=1e4,wr=3e4,Tr=3e5,$={};function Er(){let{compact:e}=D(),t=o(Ze),n=o(Xe),s=te(),c=o(Je),l=o(Qe,{freshMs:6e4}),u=o($e,{freshMs:6e4}),f=o(oe,{freshMs:15e3}),p=o(Ye,{freshMs:6e4}),m={authority:a(Ze),fleet:a(Xe),leader:a(Je),learning:a(Qe),history:a($e),budget:a(oe),seatHistory:a(Ye)};k(()=>{m.authority(),m.fleet()},Cr),k(()=>{m.leader(),m.budget()},wr),k(()=>{m.history(),m.learning(),m.seatHistory()},Tr);let h=He(3e4),g=it(),_=br(),v=(0,U.useSyncExternalStore)((0,U.useCallback)(e=>i(`verse-bootstrap`,e),[]),()=>r(`verse-bootstrap`),()=>r(`verse-bootstrap`)).data?.seats??null,[y,b]=(0,U.useState)($),x=f.data??null;(0,U.useEffect)(()=>{x&&($=gn($,x),b($))},[x]);let S=t.data?.value??null,C=n.data?.value??null,w=u.data?.value??null,T=ot(C),E=(0,U.useMemo)(()=>on({fleet:C,history:w,learning:l.data?.value??null,policy:S?.policy??null,budget:x}),[C,w,l.data,S,x]),O=p.data?.value??null,A=(0,U.useMemo)(()=>_n(y,O),[y,O]),j=(0,U.useMemo)(()=>zn(x,A.readings,v,A.recorded),[x,A,v]),ne=(0,U.useMemo)(()=>dn(v,x),[v,x]),re=cn({lastLookedAt:_,fleet:C,leader:c.data?.value??null,activity:s.data}),M=e?6:12,N=h-M*Sr,P=(0,U.useMemo)(()=>C?mt(C.runs,N,h):[],[C,N,h]),ie=n.data?C?C.state===`dark`&&P.length===0?st(C):P.length===0?{kind:`empty`,message:`No runs in the last ${M} hours.`}:{kind:`ready`}:{kind:`unknown`,reason:n.data.reason??`the live fleet view did not answer.`}:{kind:`loading`},ae=C?C.state===`dark`?`Fleet dark${T?` since ${ct(T)}`:``}.`:`Fleet ${C.state}: ${C.summary.building??`—`} building, ${C.summary.queued??`—`} queued.`:`Fleet status unknown.`,se=[t,n].some(e=>e.status===`refreshing`);return(0,J.jsxs)(lt,{title:`Command`,actions:se?(0,J.jsx)(d,{}):null,lead:(0,J.jsxs)(`div`,{className:z.lead,children:[(0,J.jsx)(Ut,{read:t.data,loading:t.status===`loading`,budgetMode:x?.mode??null,actions:g,compact:e,now:h}),(0,J.jsx)(at,{actions:g}),(0,J.jsx)(gr,{authority:S,building:C?.summary.building??null,mergedToday:C?.summary.mergedToday??null,revertsToday:C?.summary.revertsToday??null,reserve:Bn(x),darkSince:T}),(0,J.jsx)(xr,{lastLookedAt:_,items:re})]}),children:[(0,J.jsx)(H,{span:5,children:(0,J.jsx)(Zn,{state:s,actions:g,fleetLine:ae,seatNames:ne})}),(0,J.jsx)(H,{span:7,children:(0,J.jsx)(gt,{read:c.data,loading:c.status===`loading`,actions:g})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(Vn,{kpis:E})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(lr,{burns:j,now:h,compact:e})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(hr,{actions:g,now:h})}),(0,J.jsx)(H,{span:12,children:(0,J.jsx)(ee,{title:`Last ${M} hours`,description:`Fleet lanes; bars coloured by status, outlines are queued or parked`,status:ie,lanes:P,from:N,to:h,now:h,toneOf:ft})}),g.dialogs]})}export{Cr as COMMAND_FAST_POLL_MS,Tr as COMMAND_HISTORY_POLL_MS,wr as COMMAND_SLOW_POLL_MS,Er as CommandSection};
|
|
2
|
+
//# sourceMappingURL=CommandSection-rIeMK5Ch.js.map
|