@ashlr/hub 3.11.0 → 3.11.2
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 +96 -0
- package/dist/authority-surface.json +12 -7
- package/dist/build-identity.json +2 -2
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +5 -4
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +4 -3
- package/dist/core/universe/campaign.js +9 -1
- package/dist/core/universe/campaign.js.map +1 -1
- package/dist/core/universe/runner.d.ts +3 -0
- package/dist/core/universe/runner.js +7 -3
- package/dist/core/universe/runner.js.map +1 -1
- package/dist/core/verse/compaction-point.d.ts +55 -0
- package/dist/core/verse/compaction-point.js +75 -0
- package/dist/core/verse/compaction-point.js.map +1 -0
- package/dist/core/verse/context-math.d.ts +1 -38
- package/dist/core/verse/context-math.js +5 -59
- package/dist/core/verse/context-math.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-CQvNJvHY.js → ActionMenu-_DhtX2gO.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-CQvNJvHY.js.map → ActionMenu-_DhtX2gO.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-DEM93sKI.js.map → Advanced-CAAfaBke.js.map} +1 -1
- package/dist/core/web/public/next/assets/App-BAywyjE8.js +7 -0
- package/dist/core/web/public/next/assets/{App-CimXmK0L.js.map → App-BAywyjE8.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-D6U-dSj6.js.map → AppsSection-CUypKeog.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-LD9lCPkT.js → AreaTrend-CblDqC8Q.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-LD9lCPkT.js.map → AreaTrend-CblDqC8Q.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-D3d8lYO3.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-3V9pUyxm.js.map → AutonomySection-D3d8lYO3.js.map} +1 -1
- package/dist/core/web/public/next/assets/BranchBar-DU0jAV1E.js +2 -0
- package/dist/core/web/public/next/assets/{BranchBar-U8UdpfEB.js.map → BranchBar-DU0jAV1E.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-DOTlMSmW.js → BudgetControl-Mm1ZL4u6.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-DOTlMSmW.js.map → BudgetControl-Mm1ZL4u6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BurnDown-x4PWH9JF.js → BurnDown-C1fgcFqo.js} +2 -2
- package/dist/core/web/public/next/assets/{BurnDown-x4PWH9JF.js.map → BurnDown-C1fgcFqo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-DYv_KKxr.js → Button-DqgLUZvd.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-DYv_KKxr.js.map → Button-DqgLUZvd.js.map} +1 -1
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js +2 -0
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js.map +1 -0
- package/dist/core/web/public/next/assets/{CloudBudgetForm-DJeJvBEu.js → CloudBudgetForm-2OW38o_C.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-DJeJvBEu.js.map → CloudBudgetForm-2OW38o_C.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandPalette-C5w2o1-r.js +2 -0
- package/dist/core/web/public/next/assets/{CommandPalette-FiD4N8XD.js.map → CommandPalette-C5w2o1-r.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js +2 -0
- package/dist/core/web/public/next/assets/{CommandSection-DN8KwH-X.js.map → CommandSection-Bx2knNqY.js.map} +1 -1
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js +2 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-Dx15x0Ho.css +1 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js +2 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js.map +1 -0
- package/dist/core/web/public/next/assets/Dialog-tQ8kFulD.css +1 -0
- package/dist/core/web/public/next/assets/{DiffPane-DLJ3gGGK.js → DiffPane-DpqRUtCx.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-DLJ3gGGK.js.map → DiffPane-DpqRUtCx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-B7NWPjIO.js → DiffViewer-CoV5-nUf.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-B7NWPjIO.js.map → DiffViewer-CoV5-nUf.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-C0Pq7Jak.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-DvR-hPhZ.js.map → DockHost-C0Pq7Jak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DhNgDDrF.js → EmptyState-DYW29ncw.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DhNgDDrF.js.map → EmptyState-DYW29ncw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-uARPnx9x.js → Epistemic-DVx6oHzp.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-uARPnx9x.js.map → Epistemic-DVx6oHzp.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js +3 -0
- package/dist/core/web/public/next/assets/{FleetSection-D_zRBCub.js.map → FleetSection-DSETviPK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-CL8uHONq.js → Funnel-DxiGqJrt.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-CL8uHONq.js.map → Funnel-DxiGqJrt.js.map} +1 -1
- package/dist/core/web/public/next/assets/GearTray-C3I89sIt.js +2 -0
- package/dist/core/web/public/next/assets/{GearTray-C7k4l_BW.js.map → GearTray-C3I89sIt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-DwdNSGj8.js → GrowthSection-C3m2bPEz.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-DwdNSGj8.js.map → GrowthSection-C3m2bPEz.js.map} +1 -1
- package/dist/core/web/public/next/assets/HandoffDialog-Bjb96a0N.js +2 -0
- package/dist/core/web/public/next/assets/{HandoffDialog-FPVOqOMN.js.map → HandoffDialog-Bjb96a0N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-B9-VLcHS.js → Input-ekTehVaH.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-B9-VLcHS.js.map → Input-ekTehVaH.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-85VBbbaZ.js +2 -0
- package/dist/core/web/public/next/assets/{LeaderCard-4R0BhDzT.js.map → LeaderCard-85VBbbaZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DiuushcS.js → MatrixHeatmap-Bo8j0QPC.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DiuushcS.js.map → MatrixHeatmap-Bo8j0QPC.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-DvHFaVyp.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-CJ__OJKl.js.map → McpSection-DvHFaVyp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-qWKyJvAQ.js → MessageMarkdown-fsY_ltVa.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-qWKyJvAQ.js.map → MessageMarkdown-fsY_ltVa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-x05TrsrW.js → MessageMarkdownRenderer-DDdtu82l.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-x05TrsrW.js.map → MessageMarkdownRenderer-DDdtu82l.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-D-hncpkO.js → Meter-CeGDXdDM.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-D-hncpkO.js.map → Meter-CeGDXdDM.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-CDVhHvXl.js +2 -0
- package/dist/core/web/public/next/assets/{MindSection-BjXHkQPS.js.map → MindSection-CDVhHvXl.js.map} +1 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-CrfJ0PdD.css +1 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js +2 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-6AuN0BF3.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-rSd1ZHAR.js.map → NeedsYouDrawer-6AuN0BF3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-CG-nB1tr.js → NeedsYouList-ChnRmbSk.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-CG-nB1tr.js.map → NeedsYouList-ChnRmbSk.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-B06E7sqg.js +3 -0
- package/dist/core/web/public/next/assets/{NewChatDialog-BeDQ1eW3.js.map → NewChatDialog-B06E7sqg.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-C2M3zov9.js +2 -0
- package/dist/core/web/public/next/assets/{OnboardingFlow-CkTZtt-m.js.map → OnboardingFlow-C2M3zov9.js.map} +1 -1
- package/dist/core/web/public/next/assets/PreviewPane-Bd6HsX1k.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-kzbbSK4u.js.map → PreviewPane-Bd6HsX1k.js.map} +1 -1
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js +2 -0
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js.map +1 -0
- package/dist/core/web/public/next/assets/{RailStatus-D-t2gPae.js → RailStatus-CctCuuLy.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-D-t2gPae.js.map → RailStatus-CctCuuLy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-BLnr9IOM.js → RefreshIndicator-CKY5BGdD.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-BLnr9IOM.js.map → RefreshIndicator-CKY5BGdD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CM_8pJs6.css → ResourcePoolConsoleApp-BX9JLkT4.css} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BeG0gBif.js → ResourcePoolConsoleApp-CspIsW_G.js} +5 -5
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BeG0gBif.js.map → ResourcePoolConsoleApp-CspIsW_G.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-uZEqC2EM.css +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js +2 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DdxhTdZ6.css +1 -0
- package/dist/core/web/public/next/assets/{RunInCloudAction-C3LBp7C4.js → RunInCloudAction-_juw4EXd.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-C3LBp7C4.js.map → RunInCloudAction-_juw4EXd.js.map} +1 -1
- package/dist/core/web/public/next/assets/SeatSelector-D_YXvkPy.js +3 -0
- package/dist/core/web/public/next/assets/{SeatSelector-DpvvbjNm.js.map → SeatSelector-D_YXvkPy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-BL40udoO.js → Segmented-DnKP6rr7.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-BL40udoO.js.map → Segmented-DnKP6rr7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-FWLnAw_j.js → Select-DlbUupTX.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-FWLnAw_j.js.map → Select-DlbUupTX.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js +2 -0
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionGate-DvMpXNpJ.css +1 -0
- package/dist/core/web/public/next/assets/SessionInsightChip-C33-k-Q5.js +2 -0
- package/dist/core/web/public/next/assets/{SessionInsightChip-CWye87Ju.js.map → SessionInsightChip-C33-k-Q5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-YvCHFUuN.js → SessionSearch-DhhR9Csg.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-YvCHFUuN.js.map → SessionSearch-DhhR9Csg.js.map} +1 -1
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js +2 -0
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js.map +1 -0
- package/dist/core/web/public/next/assets/Sheet-BvNYOYv5.js +2 -0
- package/dist/core/web/public/next/assets/{Sheet-DZKcQXQg.js.map → Sheet-BvNYOYv5.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShortcutsOverlay-1nUBVO-Z.js +2 -0
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-BpDimdPq.js.map → ShortcutsOverlay-1nUBVO-Z.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-YrVvvBNM.js +3 -0
- package/dist/core/web/public/next/assets/{Sidebar-BoBzBEFX.js.map → Sidebar-YrVvvBNM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-DUMo9HDD.js → Slider-B2c-dbQb.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-DUMo9HDD.js.map → Slider-B2c-dbQb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-BwnBNFQr.js → StatusBadge-Q9YYkijx.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-BwnBNFQr.js.map → StatusBadge-Q9YYkijx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-PDXMIlRk.js → StepBand-Ci-C0GUG.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-PDXMIlRk.js.map → StepBand-Ci-C0GUG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-B3TZVoER.js → Surface-DBovMq4P.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-B3TZVoER.js.map → Surface-DBovMq4P.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-DR4OgON_.js → Swimlane-Cdc4TqDe.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-DR4OgON_.js.map → Swimlane-Cdc4TqDe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CcR5Llk5.js → Switch-CUrvzO2k.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CcR5Llk5.js.map → Switch-CUrvzO2k.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-_-K1h7Hk.js → Tag-Bv8u6APt.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-_-K1h7Hk.js.map → Tag-Bv8u6APt.js.map} +1 -1
- package/dist/core/web/public/next/assets/TerminalPane-BE4Xlqi5.js +7 -0
- package/dist/core/web/public/next/assets/{TerminalPane-_1aH4ndN.js.map → TerminalPane-BE4Xlqi5.js.map} +1 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BGwejf0m.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BUsq-inZ.js.map → UniverseConsoleApp-BGwejf0m.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-Dh7A-hLD.css → UniverseConsoleApp-DfuT-wFw.css} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-Dogy_dsB.js → UniverseView-CgKa-WXC.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-Dogy_dsB.js.map → UniverseView-CgKa-WXC.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js +2 -0
- package/dist/core/web/public/next/assets/{UsageSection-DiX_dTyo.js.map → UsageSection-CazsHm1f.js.map} +1 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js +10 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-Dwri2jFJ.css +1 -0
- package/dist/core/web/public/next/assets/actions-MtxBGS5B.js +2 -0
- package/dist/core/web/public/next/assets/{actions-s2lfm_5k.js.map → actions-MtxBGS5B.js.map} +1 -1
- package/dist/core/web/public/next/assets/budget-queries-CP7hgR-p.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-wUshcovN.js.map → budget-queries-CP7hgR-p.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-Bj_9ztzs.js → capacity-strip-model-fHfu5cph.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-Bj_9ztzs.js.map → capacity-strip-model-fHfu5cph.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-CMSgAUKn.js → charts-Bis9WSiS.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-CMSgAUKn.js.map → charts-Bis9WSiS.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js +2 -0
- package/dist/core/web/public/next/assets/{cloud-queries-CnV1yaNG.js.map → cloud-queries-BsOepFz6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud.module-CiwatLj3.js → cloud.module-DoFnr8ZH.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud.module-CiwatLj3.js.map → cloud.module-DoFnr8ZH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-bus-DqimKCUY.js → command-bus-CMvbYP5K.js} +2 -2
- package/dist/core/web/public/next/assets/{command-bus-DqimKCUY.js.map → command-bus-CMvbYP5K.js.map} +1 -1
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +2 -0
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +1 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js +2 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js.map +1 -0
- package/dist/core/web/public/next/assets/{composer-keys-DBRymxQn.js → composer-keys-su0g1h9o.js} +2 -2
- package/dist/core/web/public/next/assets/{composer-keys-DBRymxQn.js.map → composer-keys-su0g1h9o.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-Ci3Ch9t5.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-Dwd49-dp.js.map → context-model-Ci3Ch9t5.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-CjiJTnf1.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-MT17V86_.js.map → context-model-CjiJTnf1.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-queries-BDXT6LQ3.js +2 -0
- package/dist/core/web/public/next/assets/{context-queries-xVKIeynP.js.map → context-queries-BDXT6LQ3.js.map} +1 -1
- package/dist/core/web/public/next/assets/control-queries-Dv-h1Clu.js +2 -0
- package/dist/core/web/public/next/assets/{control-queries-DOZR-D8G.js.map → control-queries-Dv-h1Clu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-8EtARwUm.js → dock-icons-t--Eugrd.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-8EtARwUm.js.map → dock-icons-t--Eugrd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-store-BA1cHOYA.js → dock-store-qIu7kSQE.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-store-BA1cHOYA.js.map → dock-store-qIu7kSQE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-CNe8Wh-s.js → fleet-model-IRbwfhkR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-CNe8Wh-s.js.map → fleet-model-IRbwfhkR.js.map} +1 -1
- package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js +2 -0
- package/dist/core/web/public/next/assets/{fleet-queries-BSdRlUwJ.js.map → fleet-queries-7FVNByX1.js.map} +1 -1
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js +2 -0
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js.map +1 -0
- package/dist/core/web/public/next/assets/{format-B8DAVcn2.js → format-CaMmVQCn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-B8DAVcn2.js.map → format-CaMmVQCn.js.map} +1 -1
- package/dist/core/web/public/next/assets/git-model-B4S_GUNA.js +5 -0
- package/dist/core/web/public/next/assets/{git-model-CivuBY_D.js.map → git-model-B4S_GUNA.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js +2 -0
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js.map +1 -0
- package/dist/core/web/public/next/assets/global-BlI2BYa1.css +1 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js +3 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js.map +1 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js +2 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js.map +1 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js +2 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js.map +1 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js +2 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js.map +1 -0
- package/dist/core/web/public/next/assets/{index-oAAq8XJa.js → index-DbDw9UAs.js} +3 -3
- package/dist/core/web/public/next/assets/{index-oAAq8XJa.js.map → index-DbDw9UAs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-DCw_IFRI.js → live-model-DEwrl7_A.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-DCw_IFRI.js.map → live-model-DEwrl7_A.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-vnuJcwvD.js → mind.module-CLhqMQak.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-vnuJcwvD.js.map → mind.module-CLhqMQak.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-Kvzsg-iK.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-Dpsql5t7.js.map → mutations-Kvzsg-iK.js.map} +1 -1
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js +2 -0
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js.map +1 -0
- package/dist/core/web/public/next/assets/overnight-queries-C_AfcL7q.js +2 -0
- package/dist/core/web/public/next/assets/{overnight-queries-X-44Gsw5.js.map → overnight-queries-C_AfcL7q.js.map} +1 -1
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js +2 -0
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js.map +1 -0
- package/dist/core/web/public/next/assets/primitives-CbAGCNKt.js +1 -0
- package/dist/core/web/public/next/assets/{queries-BA4rNGD-.js → queries-THD05gHP.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-BA4rNGD-.js.map → queries-THD05gHP.js.map} +1 -1
- package/dist/core/web/public/next/assets/reasoning-pref-BVPu0SME.js +2 -0
- package/dist/core/web/public/next/assets/{reasoning-pref-B9-DJUXP.js.map → reasoning-pref-BVPu0SME.js.map} +1 -1
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js +2 -0
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js.map +1 -0
- package/dist/core/web/public/next/assets/seat-subscription-CR_VylsK.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-CH6fW4fJ.js.map → seat-subscription-CR_VylsK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{section-visibility-qFqc_d4Z.js → section-visibility-B0xXUQJ0.js} +2 -2
- package/dist/core/web/public/next/assets/{section-visibility-qFqc_d4Z.js.map → section-visibility-B0xXUQJ0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-M1GaQU5l.js → sidebar-model-C5wVXGpb.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-M1GaQU5l.js.map → sidebar-model-C5wVXGpb.js.map} +1 -1
- package/dist/core/web/public/next/assets/slots-DDd8cEoh.js +3 -0
- package/dist/core/web/public/next/assets/{slots-Ds9ZIqUL.js.map → slots-DDd8cEoh.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-data-BFxAlefI.js +2 -0
- package/dist/core/web/public/next/assets/{surface-data-J52iIGMD.js.map → surface-data-BFxAlefI.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-CgZ-LEJK.js.map → surface-prefetch-CHusyO9q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-ent8f0jZ.js → tasks-model-DvkWveXs.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-ent8f0jZ.js.map → tasks-model-DvkWveXs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-DJTK7QpR.js → terminal-icons-Dp6pJgV2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-DJTK7QpR.js.map → terminal-icons-Dp6pJgV2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{usage-queries-Bn8ccqyN.js → usage-queries-CUTmnegA.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-Bn8ccqyN.js.map → usage-queries-CUTmnegA.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-guarded-action-UCX2u1t1.js +2 -0
- package/dist/core/web/public/next/assets/{use-guarded-action-C2HlSzkz.js.map → use-guarded-action-UCX2u1t1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-BNc1H4ZC.js → use-ticker-OXAjob3y.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-BNc1H4ZC.js.map → use-ticker-OXAjob3y.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-token-gate-CDDRAoKH.js +2 -0
- package/dist/core/web/public/next/assets/{use-token-gate-B3IJL6bf.js.map → use-token-gate-CDDRAoKH.js.map} +1 -1
- package/dist/core/web/public/next/assets/useChartWidth-BW6SwYIK.css +1 -0
- package/dist/core/web/public/next/assets/useChartWidth-D9M7kUw7.js +2 -0
- package/dist/core/web/public/next/assets/{useChartWidth-lZ9PrQn0.js.map → useChartWidth-D9M7kUw7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-CG4jczeL.js → useSeatsRefresh-B2dCVcj9.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-CG4jczeL.js.map → useSeatsRefresh-B2dCVcj9.js.map} +1 -1
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js +2 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js +2 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js +2 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +3 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-ui-store-D7YXi63q.js +3 -0
- package/dist/core/web/public/next/assets/{verse-ui-store-zafyzXKD.js.map → verse-ui-store-D7YXi63q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{viewport-BEqGUoTA.js → viewport-BYGH5EgA.js} +2 -2
- package/dist/core/web/public/next/assets/{viewport-BEqGUoTA.js.map → viewport-BYGH5EgA.js.map} +1 -1
- package/dist/core/web/public/next/assets/warmup-AsqwWCUi.js +3 -0
- package/dist/core/web/public/next/assets/{warmup-BR6pxAKs.js.map → warmup-AsqwWCUi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-D_tWD5Wt.js → workspace-model-CXorJr0G.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-D_tWD5Wt.js.map → workspace-model-CXorJr0G.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 +5 -2
- package/dist/cli/activation.d.ts +0 -41
- package/dist/cli/activation.js +0 -485
- package/dist/cli/activation.js.map +0 -1
- package/dist/core/fleet/generated-repair-resolution.d.ts +0 -36
- package/dist/core/fleet/generated-repair-resolution.js +0 -245
- package/dist/core/fleet/generated-repair-resolution.js.map +0 -1
- package/dist/core/local-runtime/llama/port.d.ts +0 -17
- package/dist/core/local-runtime/llama/port.js +0 -47
- package/dist/core/local-runtime/llama/port.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-host.d.ts +0 -54
- package/dist/core/local-runtime/llama/proxy-host.js +0 -159
- package/dist/core/local-runtime/llama/proxy-host.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-process.d.ts +0 -148
- package/dist/core/local-runtime/llama/proxy-process.js +0 -250
- package/dist/core/local-runtime/llama/proxy-process.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-record.d.ts +0 -40
- package/dist/core/local-runtime/llama/proxy-record.js +0 -133
- package/dist/core/local-runtime/llama/proxy-record.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-supervisor.d.ts +0 -118
- package/dist/core/local-runtime/llama/proxy-supervisor.js +0 -511
- package/dist/core/local-runtime/llama/proxy-supervisor.js.map +0 -1
- package/dist/core/web/public/next/assets/Advanced-DEM93sKI.js +0 -2
- package/dist/core/web/public/next/assets/App-CimXmK0L.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-D6U-dSj6.js +0 -2
- package/dist/core/web/public/next/assets/AutonomySection-3V9pUyxm.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-U8UdpfEB.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-CCcIPpOq.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-CCcIPpOq.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-FiD4N8XD.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-DN8KwH-X.js +0 -2
- package/dist/core/web/public/next/assets/DockHost-DvR-hPhZ.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-D_zRBCub.js +0 -3
- package/dist/core/web/public/next/assets/GearTray-C7k4l_BW.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-FPVOqOMN.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-4R0BhDzT.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-CJ__OJKl.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-BjXHkQPS.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cum_DqQZ.css +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-rSd1ZHAR.js +0 -2
- package/dist/core/web/public/next/assets/NewChatDialog-BeDQ1eW3.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingFlow-CkTZtt-m.js +0 -2
- package/dist/core/web/public/next/assets/PreviewPane-kzbbSK4u.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesChrome-B3Z3O98t.css +0 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js.map +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-6RMd_aZg.css +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C5SxA2Dg.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C5SxA2Dg.js.map +0 -1
- package/dist/core/web/public/next/assets/SeatSelector-DpvvbjNm.js +0 -3
- package/dist/core/web/public/next/assets/SessionInsightChip-CWye87Ju.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-DZKcQXQg.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-BpDimdPq.js +0 -2
- package/dist/core/web/public/next/assets/Sidebar-BoBzBEFX.js +0 -3
- package/dist/core/web/public/next/assets/TerminalPane-_1aH4ndN.js +0 -7
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BUsq-inZ.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DiX_dTyo.js +0 -2
- package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +0 -1
- package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js +0 -10
- package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-s2lfm_5k.js +0 -2
- package/dist/core/web/public/next/assets/budget-queries-wUshcovN.js +0 -2
- package/dist/core/web/public/next/assets/cloud-queries-CnV1yaNG.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-Dwd49-dp.js +0 -2
- package/dist/core/web/public/next/assets/context-model-MT17V86_.js +0 -2
- package/dist/core/web/public/next/assets/context-queries-xVKIeynP.js +0 -2
- package/dist/core/web/public/next/assets/control-queries-DOZR-D8G.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-UKS-mXhr.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-UKS-mXhr.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-queries-BSdRlUwJ.js +0 -2
- package/dist/core/web/public/next/assets/git-model-CivuBY_D.js +0 -5
- package/dist/core/web/public/next/assets/global-Di2PUgj4.js +0 -2
- package/dist/core/web/public/next/assets/global-Di2PUgj4.js.map +0 -1
- package/dist/core/web/public/next/assets/global-_tOCFt9y.css +0 -1
- package/dist/core/web/public/next/assets/guarded-action-CvOHcqyH.js +0 -2
- package/dist/core/web/public/next/assets/guarded-action-CvOHcqyH.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-B_yuAgdN.js +0 -2
- package/dist/core/web/public/next/assets/icons-B_yuAgdN.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-Dpsql5t7.js +0 -2
- package/dist/core/web/public/next/assets/overnight-queries-X-44Gsw5.js +0 -2
- package/dist/core/web/public/next/assets/primitives-BDIcUvob.js +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-B9-DJUXP.js +0 -2
- package/dist/core/web/public/next/assets/seat-subscription-CH6fW4fJ.js +0 -2
- package/dist/core/web/public/next/assets/slots-Ds9ZIqUL.js +0 -3
- package/dist/core/web/public/next/assets/surface-data-J52iIGMD.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-CgZ-LEJK.js +0 -2
- package/dist/core/web/public/next/assets/use-guarded-action-C2HlSzkz.js +0 -2
- package/dist/core/web/public/next/assets/use-token-gate-B3IJL6bf.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-Bk3XgXjL.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-Bk3XgXjL.js.map +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-lZ9PrQn0.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-queries-DvIJcn6Z.js +0 -2
- package/dist/core/web/public/next/assets/verse-queries-DvIJcn6Z.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js +0 -3
- package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-ui-store-zafyzXKD.js +0 -3
- package/dist/core/web/public/next/assets/warmup-BR6pxAKs.js +0 -3
package/dist/cli/activation.js
DELETED
|
@@ -1,485 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `ashlr activation` — operator authority for the autonomous fleet (M470).
|
|
3
|
-
*
|
|
4
|
-
* The daemon, goal/simple conductors, and resident-service install are all
|
|
5
|
-
* held shut by hard-coded denials until an operator EXPLICITLY grants
|
|
6
|
-
* authority here. Doing nothing keeps today's exact behavior: everything
|
|
7
|
-
* denied. This command group is how an operator opts in, on their own
|
|
8
|
-
* terms, with a real signed/expiring/revocable authorization trail.
|
|
9
|
-
*
|
|
10
|
-
* Subcommands:
|
|
11
|
-
* activation init [--label <text>] [--force] [--yes] [--json]
|
|
12
|
-
* Generate an Ed25519 keypair on this machine (private key never
|
|
13
|
-
* leaves it) and register the public half as a trust root. Grants
|
|
14
|
-
* NOTHING by itself — run `activation grant` next.
|
|
15
|
-
* activation status [--json]
|
|
16
|
-
* Trust roots, pending one-shot permit, standing grants, and what is
|
|
17
|
-
* currently authorized, right now, and why.
|
|
18
|
-
* activation grant <scope...> [--ttl <duration>] [--yes] [--json]
|
|
19
|
-
* Mint a scoped, signed, expiring authorization. `once`/`resident`
|
|
20
|
-
* mint a single-use permit for `ashlr daemon start`, good for a fixed
|
|
21
|
-
* 2-minute window; any of `residentStanding`/`conductor`/`automerge`/
|
|
22
|
-
* `repair`/`deploy`/`install`/`proposalOnly` mint a standing grant
|
|
23
|
-
* checked on every use until it expires (30d cap) or is revoked.
|
|
24
|
-
* `residentStanding` is what lets a resident daemon started by
|
|
25
|
-
* launchd/systemd/Task Scheduler after a reboot authorize itself with
|
|
26
|
-
* no operator present — grant it once, ahead of time, alongside
|
|
27
|
-
* whichever of `automerge`/`repair`/`deploy` the resident loop should
|
|
28
|
-
* also carry for its whole run.
|
|
29
|
-
* activation revoke --root <keyId> | --grant <grantId> [--yes] [--json]
|
|
30
|
-
* Immediately invalidate a trust root or a standing grant.
|
|
31
|
-
*
|
|
32
|
-
* Every subcommand supports --help. Mutating subcommands (init/grant/revoke)
|
|
33
|
-
* refuse to run unattended in a non-TTY session without --yes — the same
|
|
34
|
-
* confirm-gate convention as `ashlr inbox approve`.
|
|
35
|
-
*/
|
|
36
|
-
import { makeColors } from './ui.js';
|
|
37
|
-
import { DAEMON_ACTIVATION_SCOPE_KEYS, DEFAULT_STANDING_GRANT_VALIDITY_MS, EMPTY_DAEMON_ACTIVATION_SCOPE, MAX_STANDING_GRANT_VALIDITY_MS, daemonActivationDiagnosePendingPermitBindings, daemonActivationDirPath, daemonActivationGrantStatus, daemonActivationInit, daemonActivationMintOneShotPermit, daemonActivationMintStandingGrant, daemonActivationPermitPath, daemonActivationRevokeGrant, daemonActivationRevokeTrustRoot, daemonActivationScopeGranted, daemonActivationTrustRootStatus, inspectDaemonActivationPermit, } from '../core/daemon/activation-permit.js';
|
|
38
|
-
const ACTIVATION_SUBCOMMANDS = new Set(['init', 'status', 'grant', 'revoke']);
|
|
39
|
-
const ONE_SHOT_SCOPE_KEYS = new Set(['once', 'resident']);
|
|
40
|
-
const ACTIVATION_USAGE = {
|
|
41
|
-
init: 'Usage: ashlr activation init [--label <text>] [--force] [--yes] [--json]',
|
|
42
|
-
status: 'Usage: ashlr activation status [--json]',
|
|
43
|
-
grant: `Usage: ashlr activation grant <scope...> [--ttl <duration>] [--yes] [--json]\n` +
|
|
44
|
-
` scopes: ${DAEMON_ACTIVATION_SCOPE_KEYS.join(', ')}\n` +
|
|
45
|
-
` duration: <n>s | <n>m | <n>h | <n>d (default: 24h; hard cap: 30d; standing grants only)`,
|
|
46
|
-
revoke: 'Usage: ashlr activation revoke (--root <keyId> | --grant <grantId>) [--yes] [--json]',
|
|
47
|
-
};
|
|
48
|
-
const ACTIVATION_TOP_LEVEL_USAGE = `Usage: ashlr activation [subcommand] [flags]
|
|
49
|
-
|
|
50
|
-
Everything here is denied by default. Run \`activation init\` then
|
|
51
|
-
\`activation grant <scope...>\` to explicitly opt this machine's fleet into
|
|
52
|
-
real authority — nothing else changes anything on its own.
|
|
53
|
-
|
|
54
|
-
Subcommands:
|
|
55
|
-
init Generate an operator keypair and register the trust root
|
|
56
|
-
status Show what is granted, by whom, when, and current eligibility
|
|
57
|
-
grant Mint a scoped, signed, expiring permit or standing grant
|
|
58
|
-
revoke Immediately invalidate a trust root or a standing grant
|
|
59
|
-
|
|
60
|
-
Run \`ashlr activation <subcommand> --help\` for subcommand usage.`;
|
|
61
|
-
function isHelpFlag(arg) {
|
|
62
|
-
return arg === '--help' || arg === '-h';
|
|
63
|
-
}
|
|
64
|
-
function isActivationSubcommand(value) {
|
|
65
|
-
return ACTIVATION_SUBCOMMANDS.has(value);
|
|
66
|
-
}
|
|
67
|
-
function printActivationUsage(subcommand) {
|
|
68
|
-
console.log(subcommand ? ACTIVATION_USAGE[subcommand] : ACTIVATION_TOP_LEVEL_USAGE);
|
|
69
|
-
}
|
|
70
|
-
function printActivationUsageError(message, subcommand) {
|
|
71
|
-
const col = makeColors(process.stdout.isTTY === true);
|
|
72
|
-
console.error(col.red('error: ') + message);
|
|
73
|
-
console.error(col.dim(subcommand ? ACTIVATION_USAGE[subcommand] : ACTIVATION_TOP_LEVEL_USAGE));
|
|
74
|
-
return 2;
|
|
75
|
-
}
|
|
76
|
-
function parseDurationMs(text) {
|
|
77
|
-
const match = /^(\d+)(s|m|h|d)?$/u.exec(text.trim());
|
|
78
|
-
if (!match)
|
|
79
|
-
return null;
|
|
80
|
-
const value = Number(match[1]);
|
|
81
|
-
if (!Number.isFinite(value) || value <= 0)
|
|
82
|
-
return null;
|
|
83
|
-
const unit = match[2] ?? 'h';
|
|
84
|
-
const multiplier = unit === 's' ? 1_000 : unit === 'm' ? 60_000 : unit === 'h' ? 3_600_000 : 86_400_000;
|
|
85
|
-
return value * multiplier;
|
|
86
|
-
}
|
|
87
|
-
async function importConfig() {
|
|
88
|
-
try {
|
|
89
|
-
const mod = (await import('../core/config.js'));
|
|
90
|
-
return mod.loadConfigReadOnlyStrict;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/** Non-TTY without --yes refuses — no silently-automated grants, matching `inbox approve`. */
|
|
97
|
-
function refuseUnattended(yes, jsonMode, action) {
|
|
98
|
-
const tty = process.stdout.isTTY === true;
|
|
99
|
-
if (tty || yes)
|
|
100
|
-
return false;
|
|
101
|
-
const col = makeColors(false);
|
|
102
|
-
const msg = `non-TTY: activation ${action} requires --yes to prevent silent, unattended authorization`;
|
|
103
|
-
if (jsonMode) {
|
|
104
|
-
console.log(JSON.stringify({ ok: false, error: msg }));
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
console.error(col.red('error: ') + msg);
|
|
108
|
-
console.error(col.dim(` Use \`ashlr activation ${action} ... --yes\` in non-interactive environments.`));
|
|
109
|
-
}
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
// ---------------------------------------------------------------------------
|
|
113
|
-
// Subcommand: init
|
|
114
|
-
// ---------------------------------------------------------------------------
|
|
115
|
-
async function cmdActivationInit(args) {
|
|
116
|
-
const jsonMode = args.includes('--json');
|
|
117
|
-
const force = args.includes('--force');
|
|
118
|
-
const yes = args.includes('--yes');
|
|
119
|
-
const labelIndex = args.indexOf('--label');
|
|
120
|
-
const label = labelIndex !== -1 ? args[labelIndex + 1] : undefined;
|
|
121
|
-
const known = new Set(['--json', '--force', '--yes', '--label', label].filter((v) => v !== undefined));
|
|
122
|
-
const unknown = args.find((a, i) => !known.has(a) && !(args[i - 1] === '--label'));
|
|
123
|
-
if (unknown)
|
|
124
|
-
return printActivationUsageError(`Unknown flag: ${unknown}`, 'init');
|
|
125
|
-
if (labelIndex !== -1 && label === undefined) {
|
|
126
|
-
return printActivationUsageError('--label requires a value', 'init');
|
|
127
|
-
}
|
|
128
|
-
const col = makeColors(process.stdout.isTTY === true);
|
|
129
|
-
if (!jsonMode) {
|
|
130
|
-
console.log('');
|
|
131
|
-
console.log(col.bold(' ashlr activation init'));
|
|
132
|
-
console.log(col.dim(' Generates an Ed25519 keypair on THIS machine and registers the public\n'
|
|
133
|
-
+ ' half as a trust root. The private key never leaves this machine, is\n'
|
|
134
|
-
+ ' written 0600 under an 0700 directory, and is the ONLY thing that can\n'
|
|
135
|
-
+ ' sign a future `activation grant`. This step grants no capability by\n'
|
|
136
|
-
+ ' itself — the fleet stays exactly as denied as it is today until you\n'
|
|
137
|
-
+ ' run `ashlr activation grant <scope...>`.'));
|
|
138
|
-
console.log('');
|
|
139
|
-
}
|
|
140
|
-
if (refuseUnattended(yes, jsonMode, 'init'))
|
|
141
|
-
return 2;
|
|
142
|
-
const result = daemonActivationInit({ label, force });
|
|
143
|
-
if (!result.ok) {
|
|
144
|
-
const msg = `activation init refused: ${result.reason}`;
|
|
145
|
-
if (jsonMode)
|
|
146
|
-
console.log(JSON.stringify({ ok: false, error: result.reason }));
|
|
147
|
-
else
|
|
148
|
-
console.error(col.red('error: ') + msg);
|
|
149
|
-
return 1;
|
|
150
|
-
}
|
|
151
|
-
if (jsonMode) {
|
|
152
|
-
console.log(JSON.stringify({
|
|
153
|
-
ok: true,
|
|
154
|
-
keyId: result.keyId,
|
|
155
|
-
publicKeyPem: result.publicKeyPem,
|
|
156
|
-
rotated: result.rotated,
|
|
157
|
-
trustRootsPath: daemonActivationDirPath(),
|
|
158
|
-
}));
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
console.log(col.green('ok: ') + `trust root registered (keyId=${result.keyId}${result.rotated ? ', rotated' : ''}).`);
|
|
162
|
-
console.log(col.dim(` store: ${daemonActivationDirPath()}`));
|
|
163
|
-
console.log(col.dim(' Next: `ashlr activation grant <scope...>` to actually authorize something.'));
|
|
164
|
-
}
|
|
165
|
-
return 0;
|
|
166
|
-
}
|
|
167
|
-
// ---------------------------------------------------------------------------
|
|
168
|
-
// Subcommand: status
|
|
169
|
-
// ---------------------------------------------------------------------------
|
|
170
|
-
async function cmdActivationStatus(args) {
|
|
171
|
-
const jsonMode = args.includes('--json');
|
|
172
|
-
const unknown = args.find((a) => a !== '--json');
|
|
173
|
-
if (unknown)
|
|
174
|
-
return printActivationUsageError(`Unknown flag: ${unknown}`, 'status');
|
|
175
|
-
const col = makeColors(process.stdout.isTTY === true);
|
|
176
|
-
const trustRoots = daemonActivationTrustRootStatus();
|
|
177
|
-
const grants = daemonActivationGrantStatus();
|
|
178
|
-
const loadConfig = await importConfig();
|
|
179
|
-
let cfg = null;
|
|
180
|
-
try {
|
|
181
|
-
cfg = loadConfig ? loadConfig() : null;
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
cfg = null;
|
|
185
|
-
}
|
|
186
|
-
const onceReadiness = cfg ? inspectDaemonActivationPermit(cfg, { once: true, dryRun: false }) : null;
|
|
187
|
-
const residentReadiness = cfg ? inspectDaemonActivationPermit(cfg, { once: false, dryRun: false }) : null;
|
|
188
|
-
const bindingMismatch = onceReadiness?.reason === 'permit-runtime-binding-mismatch'
|
|
189
|
-
|| residentReadiness?.reason === 'permit-runtime-binding-mismatch';
|
|
190
|
-
const bindingDiagnosis = cfg && bindingMismatch
|
|
191
|
-
? daemonActivationDiagnosePendingPermitBindings(cfg)
|
|
192
|
-
: null;
|
|
193
|
-
const nowMs = Date.now();
|
|
194
|
-
const grantSummaries = grants.ok
|
|
195
|
-
? grants.records.map((record) => ({
|
|
196
|
-
grantId: record.grantId,
|
|
197
|
-
keyId: record.keyId,
|
|
198
|
-
scope: DAEMON_ACTIVATION_SCOPE_KEYS.filter((key) => record.scope[key]),
|
|
199
|
-
issuedAt: record.issuedAt,
|
|
200
|
-
expiresAt: record.expiresAt,
|
|
201
|
-
revoked: record.revokedAt !== null,
|
|
202
|
-
expired: Date.parse(record.expiresAt) <= nowMs,
|
|
203
|
-
}))
|
|
204
|
-
: [];
|
|
205
|
-
if (jsonMode) {
|
|
206
|
-
console.log(JSON.stringify({
|
|
207
|
-
ok: true,
|
|
208
|
-
store: daemonActivationDirPath(),
|
|
209
|
-
trustRoots: trustRoots.ok
|
|
210
|
-
? trustRoots.records.map((r) => ({
|
|
211
|
-
keyId: r.keyId, label: r.label, createdAt: r.createdAt, revoked: r.revokedAt !== null,
|
|
212
|
-
}))
|
|
213
|
-
: null,
|
|
214
|
-
trustRootStoreError: trustRoots.ok ? null : trustRoots.reason,
|
|
215
|
-
grants: grants.ok ? grantSummaries : null,
|
|
216
|
-
grantStoreError: grants.ok ? null : grants.reason,
|
|
217
|
-
pendingOneShotPermitPath: daemonActivationPermitPath(),
|
|
218
|
-
onceEligibility: onceReadiness,
|
|
219
|
-
residentEligibility: residentReadiness,
|
|
220
|
-
bindingMismatchDiagnosis: bindingDiagnosis,
|
|
221
|
-
}, null, 2));
|
|
222
|
-
return 0;
|
|
223
|
-
}
|
|
224
|
-
console.log('');
|
|
225
|
-
console.log(col.bold(' ashlr activation status'));
|
|
226
|
-
console.log(col.dim(` store: ${daemonActivationDirPath()}`));
|
|
227
|
-
console.log('');
|
|
228
|
-
console.log(col.bold(' Trust roots'));
|
|
229
|
-
if (!trustRoots.ok) {
|
|
230
|
-
console.log(col.yellow(` unreadable/unsafe (${trustRoots.reason}) — treated as NO authority.`));
|
|
231
|
-
}
|
|
232
|
-
else if (trustRoots.records.length === 0) {
|
|
233
|
-
console.log(col.dim(' none — run `ashlr activation init`.'));
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
for (const root of trustRoots.records) {
|
|
237
|
-
const state = root.revokedAt !== null ? col.red(`revoked ${root.revokedAt}`) : col.green('active');
|
|
238
|
-
console.log(` ${root.keyId} ${state} ${root.label ? `"${root.label}"` : ''} (created ${root.createdAt})`);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
console.log('');
|
|
242
|
-
console.log(col.bold(' Standing grants'));
|
|
243
|
-
if (!grants.ok) {
|
|
244
|
-
console.log(col.yellow(` unreadable/unsafe (${grants.reason}) — treated as NO authority.`));
|
|
245
|
-
}
|
|
246
|
-
else if (grantSummaries.length === 0) {
|
|
247
|
-
console.log(col.dim(' none.'));
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
for (const g of grantSummaries) {
|
|
251
|
-
const state = g.revoked ? col.red('revoked') : g.expired ? col.yellow('expired') : col.green('active');
|
|
252
|
-
console.log(` ${g.grantId} ${state} scope=[${g.scope.join(', ')}] keyId=${g.keyId} expires ${g.expiresAt}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
console.log('');
|
|
256
|
-
console.log(col.bold(' Currently granted, right now'));
|
|
257
|
-
for (const scopeKey of DAEMON_ACTIVATION_SCOPE_KEYS) {
|
|
258
|
-
if (ONE_SHOT_SCOPE_KEYS.has(scopeKey))
|
|
259
|
-
continue;
|
|
260
|
-
const check = daemonActivationScopeGranted(scopeKey);
|
|
261
|
-
console.log(` ${scopeKey.padEnd(12)} ${check.granted ? col.green('granted') : col.dim('denied')} (${check.reason})`);
|
|
262
|
-
}
|
|
263
|
-
console.log('');
|
|
264
|
-
console.log(col.bold(' One-shot permit (ashlr daemon start)'));
|
|
265
|
-
console.log(` pending file: ${daemonActivationPermitPath()}`);
|
|
266
|
-
if (onceReadiness) {
|
|
267
|
-
console.log(` --once: ${onceReadiness.state === 'ready' ? col.green('ready') : col.dim(onceReadiness.state)} (${onceReadiness.reason})`);
|
|
268
|
-
}
|
|
269
|
-
if (residentReadiness) {
|
|
270
|
-
console.log(` resident: ${residentReadiness.state === 'ready' ? col.green('ready') : col.dim(residentReadiness.state)} (${residentReadiness.reason})`);
|
|
271
|
-
}
|
|
272
|
-
if (bindingDiagnosis) {
|
|
273
|
-
console.log('');
|
|
274
|
-
if (bindingDiagnosis.ok || !bindingDiagnosis.mismatches) {
|
|
275
|
-
console.log(col.dim(` binding diagnosis: ${bindingDiagnosis.reason}`));
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
console.log(col.yellow(' binding mismatch — field(s) that differ between the signed permit and right now:'));
|
|
279
|
-
for (const [field, { signed, current }] of Object.entries(bindingDiagnosis.mismatches)) {
|
|
280
|
-
console.log(` ${col.bold(field)}:`);
|
|
281
|
-
console.log(` signed: ${formatBindingValue(signed)}`);
|
|
282
|
-
console.log(` current: ${formatBindingValue(current)}`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
console.log('');
|
|
287
|
-
return 0;
|
|
288
|
-
}
|
|
289
|
-
function formatBindingValue(value) {
|
|
290
|
-
if (value === null || typeof value !== 'object')
|
|
291
|
-
return JSON.stringify(value);
|
|
292
|
-
if ('sha256' in value) {
|
|
293
|
-
const binding = value;
|
|
294
|
-
return `${binding.path} sha256:${binding.sha256}`;
|
|
295
|
-
}
|
|
296
|
-
return JSON.stringify(value);
|
|
297
|
-
}
|
|
298
|
-
// ---------------------------------------------------------------------------
|
|
299
|
-
// Subcommand: grant
|
|
300
|
-
// ---------------------------------------------------------------------------
|
|
301
|
-
async function cmdActivationGrant(args) {
|
|
302
|
-
const jsonMode = args.includes('--json');
|
|
303
|
-
const yes = args.includes('--yes');
|
|
304
|
-
const ttlIndex = args.indexOf('--ttl');
|
|
305
|
-
const ttlText = ttlIndex !== -1 ? args[ttlIndex + 1] : undefined;
|
|
306
|
-
const flagsConsumed = new Set(['--json', '--yes', '--ttl', ttlText].filter((v) => v !== undefined));
|
|
307
|
-
const scopeArgs = args.filter((a, i) => !flagsConsumed.has(a) && args[i - 1] !== '--ttl');
|
|
308
|
-
const unknownFlag = args.find((a) => a.startsWith('--') && !['--json', '--yes', '--ttl'].includes(a));
|
|
309
|
-
if (unknownFlag)
|
|
310
|
-
return printActivationUsageError(`Unknown flag: ${unknownFlag}`, 'grant');
|
|
311
|
-
if (ttlIndex !== -1 && ttlText === undefined)
|
|
312
|
-
return printActivationUsageError('--ttl requires a value', 'grant');
|
|
313
|
-
if (scopeArgs.length === 0) {
|
|
314
|
-
return printActivationUsageError('At least one scope is required.', 'grant');
|
|
315
|
-
}
|
|
316
|
-
const invalidScope = scopeArgs.find((s) => !DAEMON_ACTIVATION_SCOPE_KEYS.includes(s));
|
|
317
|
-
if (invalidScope) {
|
|
318
|
-
return printActivationUsageError(`Unknown scope: ${invalidScope} (expected one of: ${DAEMON_ACTIVATION_SCOPE_KEYS.join(', ')})`, 'grant');
|
|
319
|
-
}
|
|
320
|
-
const scopeKeys = [...new Set(scopeArgs)];
|
|
321
|
-
const scope = { ...EMPTY_DAEMON_ACTIVATION_SCOPE };
|
|
322
|
-
for (const key of scopeKeys)
|
|
323
|
-
scope[key] = true;
|
|
324
|
-
const isOneShot = scopeKeys.some((key) => ONE_SHOT_SCOPE_KEYS.has(key));
|
|
325
|
-
let ttlMs = DEFAULT_STANDING_GRANT_VALIDITY_MS;
|
|
326
|
-
if (ttlText !== undefined) {
|
|
327
|
-
if (isOneShot) {
|
|
328
|
-
return printActivationUsageError('--ttl only applies to standing grants (not once/resident, which use a fixed 2-minute window).', 'grant');
|
|
329
|
-
}
|
|
330
|
-
const parsed = parseDurationMs(ttlText);
|
|
331
|
-
if (parsed === null || parsed > MAX_STANDING_GRANT_VALIDITY_MS) {
|
|
332
|
-
return printActivationUsageError(`Invalid --ttl (expected <n>s|m|h|d, max ${MAX_STANDING_GRANT_VALIDITY_MS / 86_400_000}d): ${ttlText}`, 'grant');
|
|
333
|
-
}
|
|
334
|
-
ttlMs = parsed;
|
|
335
|
-
}
|
|
336
|
-
const col = makeColors(process.stdout.isTTY === true);
|
|
337
|
-
if (!jsonMode) {
|
|
338
|
-
console.log('');
|
|
339
|
-
console.log(col.bold(' ashlr activation grant') + col.dim(` — scope=[${scopeKeys.join(', ')}]`));
|
|
340
|
-
console.log(col.dim(isOneShot
|
|
341
|
-
? ' Mints a SINGLE-USE, signed permit for `ashlr daemon start`. Consumed and\n'
|
|
342
|
-
+ ' deleted the moment the daemon starts; expires in 2 minutes if unused.'
|
|
343
|
-
: ` Mints a standing, signed grant valid for ${Math.round(ttlMs / 3_600_000)}h, checked on every\n`
|
|
344
|
-
+ ' use until it expires or you run `ashlr activation revoke`.'));
|
|
345
|
-
console.log('');
|
|
346
|
-
}
|
|
347
|
-
if (refuseUnattended(yes, jsonMode, 'grant'))
|
|
348
|
-
return 2;
|
|
349
|
-
if (isOneShot) {
|
|
350
|
-
const loadConfig = await importConfig();
|
|
351
|
-
if (!loadConfig) {
|
|
352
|
-
console.error(col.red('error: ') + 'activation grant requires src/core/config.ts.');
|
|
353
|
-
return 1;
|
|
354
|
-
}
|
|
355
|
-
let cfg;
|
|
356
|
-
try {
|
|
357
|
-
cfg = loadConfig();
|
|
358
|
-
}
|
|
359
|
-
catch (e) {
|
|
360
|
-
console.error(col.red('error: ') + 'Failed to load config: ' + (e instanceof Error ? e.message : String(e)));
|
|
361
|
-
return 1;
|
|
362
|
-
}
|
|
363
|
-
const result = daemonActivationMintOneShotPermit({ cfg, scope });
|
|
364
|
-
if (!result.ok) {
|
|
365
|
-
if (jsonMode)
|
|
366
|
-
console.log(JSON.stringify({ ok: false, error: result.reason }));
|
|
367
|
-
else
|
|
368
|
-
console.error(col.red('error: ') + `activation grant refused: ${result.reason}`);
|
|
369
|
-
return 1;
|
|
370
|
-
}
|
|
371
|
-
if (jsonMode) {
|
|
372
|
-
console.log(JSON.stringify({ kind: 'one-shot-permit', ...result }));
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
console.log(col.green('ok: ') + `one-shot permit minted (permitId=${result.permitId}, expires ${result.expiresAt}).`);
|
|
376
|
-
console.log(col.dim(` ${result.permitPath}`));
|
|
377
|
-
console.log(col.dim(' Run `ashlr daemon start' + (scope.once ? ' --once' : '') + '` now — the permit is single-use.'));
|
|
378
|
-
}
|
|
379
|
-
return 0;
|
|
380
|
-
}
|
|
381
|
-
const result = daemonActivationMintStandingGrant({ scope, ttlMs });
|
|
382
|
-
if (!result.ok) {
|
|
383
|
-
if (jsonMode)
|
|
384
|
-
console.log(JSON.stringify({ ok: false, error: result.reason }));
|
|
385
|
-
else
|
|
386
|
-
console.error(col.red('error: ') + `activation grant refused: ${result.reason}`);
|
|
387
|
-
return 1;
|
|
388
|
-
}
|
|
389
|
-
if (jsonMode) {
|
|
390
|
-
console.log(JSON.stringify({ ok: true, kind: 'standing-grant', record: result.record }));
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
console.log(col.green('ok: ') + `standing grant minted (grantId=${result.record.grantId}, expires ${result.record.expiresAt}).`);
|
|
394
|
-
console.log(col.dim(` scope=[${scopeKeys.join(', ')}]`));
|
|
395
|
-
}
|
|
396
|
-
return 0;
|
|
397
|
-
}
|
|
398
|
-
// ---------------------------------------------------------------------------
|
|
399
|
-
// Subcommand: revoke
|
|
400
|
-
// ---------------------------------------------------------------------------
|
|
401
|
-
async function cmdActivationRevoke(args) {
|
|
402
|
-
const jsonMode = args.includes('--json');
|
|
403
|
-
const yes = args.includes('--yes');
|
|
404
|
-
const rootIndex = args.indexOf('--root');
|
|
405
|
-
const grantIndex = args.indexOf('--grant');
|
|
406
|
-
const rootId = rootIndex !== -1 ? args[rootIndex + 1] : undefined;
|
|
407
|
-
const grantId = grantIndex !== -1 ? args[grantIndex + 1] : undefined;
|
|
408
|
-
const known = new Set(['--json', '--yes', '--root', '--grant', rootId, grantId].filter((v) => v !== undefined));
|
|
409
|
-
const unknown = args.find((a, i) => !known.has(a) && args[i - 1] !== '--root' && args[i - 1] !== '--grant');
|
|
410
|
-
if (unknown)
|
|
411
|
-
return printActivationUsageError(`Unknown flag: ${unknown}`, 'revoke');
|
|
412
|
-
if ((rootIndex === -1) === (grantIndex === -1)) {
|
|
413
|
-
return printActivationUsageError('Specify exactly one of --root <keyId> or --grant <grantId>.', 'revoke');
|
|
414
|
-
}
|
|
415
|
-
if (rootIndex !== -1 && rootId === undefined)
|
|
416
|
-
return printActivationUsageError('--root requires a value', 'revoke');
|
|
417
|
-
if (grantIndex !== -1 && grantId === undefined)
|
|
418
|
-
return printActivationUsageError('--grant requires a value', 'revoke');
|
|
419
|
-
const col = makeColors(process.stdout.isTTY === true);
|
|
420
|
-
if (!jsonMode) {
|
|
421
|
-
console.log('');
|
|
422
|
-
console.log(col.bold(' ashlr activation revoke'));
|
|
423
|
-
console.log(col.dim(rootId
|
|
424
|
-
? ` Immediately invalidates trust root ${rootId}. Every permit and standing\n`
|
|
425
|
-
+ ' grant signed by it stops verifying from this instant on.'
|
|
426
|
-
: ` Immediately invalidates standing grant ${grantId}. Every guard that\n`
|
|
427
|
-
+ ' consults it denies from this instant on.'));
|
|
428
|
-
console.log('');
|
|
429
|
-
}
|
|
430
|
-
if (refuseUnattended(yes, jsonMode, 'revoke'))
|
|
431
|
-
return 2;
|
|
432
|
-
const result = rootId !== undefined
|
|
433
|
-
? daemonActivationRevokeTrustRoot(rootId)
|
|
434
|
-
: daemonActivationRevokeGrant(grantId);
|
|
435
|
-
if (!result.ok) {
|
|
436
|
-
if (jsonMode)
|
|
437
|
-
console.log(JSON.stringify({ ok: false, error: result.reason }));
|
|
438
|
-
else
|
|
439
|
-
console.error(col.red('error: ') + `activation revoke refused: ${result.reason}`);
|
|
440
|
-
return 1;
|
|
441
|
-
}
|
|
442
|
-
if (jsonMode)
|
|
443
|
-
console.log(JSON.stringify({ ok: true }));
|
|
444
|
-
else
|
|
445
|
-
console.log(col.green('ok: ') + 'revoked.');
|
|
446
|
-
return 0;
|
|
447
|
-
}
|
|
448
|
-
// ---------------------------------------------------------------------------
|
|
449
|
-
// Entry point
|
|
450
|
-
// ---------------------------------------------------------------------------
|
|
451
|
-
/**
|
|
452
|
-
* `ashlr activation [init|status|grant|revoke] [flags]`
|
|
453
|
-
*
|
|
454
|
-
* Returns a process exit code (0 = success, non-zero = error/usage).
|
|
455
|
-
*/
|
|
456
|
-
export async function cmdActivation(args) {
|
|
457
|
-
const requestedSub = args[0];
|
|
458
|
-
if (requestedSub !== undefined && isHelpFlag(requestedSub)) {
|
|
459
|
-
printActivationUsage();
|
|
460
|
-
return 0;
|
|
461
|
-
}
|
|
462
|
-
if (requestedSub !== undefined && !isActivationSubcommand(requestedSub)) {
|
|
463
|
-
const message = requestedSub.startsWith('-')
|
|
464
|
-
? `Unknown flag: ${requestedSub}`
|
|
465
|
-
: `Unknown activation subcommand: ${requestedSub}`;
|
|
466
|
-
return printActivationUsageError(message);
|
|
467
|
-
}
|
|
468
|
-
const sub = requestedSub ?? 'status';
|
|
469
|
-
const rest = args.slice(1);
|
|
470
|
-
if (rest.some(isHelpFlag)) {
|
|
471
|
-
printActivationUsage(sub);
|
|
472
|
-
return 0;
|
|
473
|
-
}
|
|
474
|
-
switch (sub) {
|
|
475
|
-
case 'init':
|
|
476
|
-
return cmdActivationInit(rest);
|
|
477
|
-
case 'status':
|
|
478
|
-
return cmdActivationStatus(rest);
|
|
479
|
-
case 'grant':
|
|
480
|
-
return cmdActivationGrant(rest);
|
|
481
|
-
case 'revoke':
|
|
482
|
-
return cmdActivationRevoke(rest);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
//# sourceMappingURL=activation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation.js","sourceRoot":"","sources":["../../src/cli/activation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { AshlrConfig, Backlog, Sandbox, SandboxCleanupResult, WorkItem } from '../types.js';
|
|
2
|
-
import { type RepoExecutionProfile } from '../run/repo-profile.js';
|
|
3
|
-
import { type VerifyCommand, type VerifyCommandResult } from '../run/verify-commands.js';
|
|
4
|
-
import { type RepairHandoffReadResult } from './repair-handoff-journal.js';
|
|
5
|
-
export type GeneratedRepairResolutionStatus = 'ineligible' | 'unavailable' | 'parent-present' | 'verification-failed' | 'candidate-no-change';
|
|
6
|
-
export type GeneratedRepairResolutionReason = 'invalid-lineage' | 'parent-source-mismatch' | 'parent-objective-mismatch' | 'journal-unavailable' | 'backlog-unavailable' | 'verification-contract-missing' | 'verification-contract-invalid' | 'required-merge-commands-missing' | 'invalid-command-timeout' | 'sandbox-unavailable' | 'verification-tool-unavailable' | 'verification-infra-unavailable' | 'cleanup-incomplete' | 'parent-still-actionable' | 'required-command-failed' | 'all-required-commands-passed';
|
|
7
|
-
/** Fixed, text-free observation returned by the shadow evaluator. */
|
|
8
|
-
export interface GeneratedRepairResolutionResult {
|
|
9
|
-
status: GeneratedRepairResolutionStatus;
|
|
10
|
-
reason: GeneratedRepairResolutionReason;
|
|
11
|
-
requiredCommandCount: number;
|
|
12
|
-
completedCommandCount: number;
|
|
13
|
-
passedCommandCount: number;
|
|
14
|
-
parentObjectiveHash?: string;
|
|
15
|
-
verifierContractHash?: string;
|
|
16
|
-
baseHead?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface GeneratedRepairResolutionDependencies {
|
|
19
|
-
readRepairHandoffs: () => RepairHandoffReadResult;
|
|
20
|
-
buildBacklog: (opts: {
|
|
21
|
-
repos: string[];
|
|
22
|
-
persist: false;
|
|
23
|
-
cfg: Pick<AshlrConfig, 'foundry'>;
|
|
24
|
-
}) => Promise<Backlog>;
|
|
25
|
-
detectRepoExecutionProfile: (repo: string) => RepoExecutionProfile;
|
|
26
|
-
createSandbox: (repo: string) => Sandbox;
|
|
27
|
-
runVerifyCommand: (command: VerifyCommand, workspaceRoot: string, cfg: AshlrConfig, opts: {
|
|
28
|
-
timeoutMs: number;
|
|
29
|
-
}) => Promise<VerifyCommandResult>;
|
|
30
|
-
removeSandbox: (sandbox: Sandbox) => SandboxCleanupResult;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Observes whether a journal-authorized diagnostic reslice still has work to do.
|
|
34
|
-
* It never records lifecycle state or mutates queues, proposals, routing, or merge state.
|
|
35
|
-
*/
|
|
36
|
-
export declare function evaluateGeneratedRepairResolution(item: WorkItem, cfg: AshlrConfig, injected?: Partial<GeneratedRepairResolutionDependencies>): Promise<GeneratedRepairResolutionResult>;
|