@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
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,s as n}from"./index-oAAq8XJa.js";import{n as r,t as i}from"./MutationTokenDialog-SkRxqV_I.js";import{t as a}from"./Button-DYv_KKxr.js";import{n as o}from"./use-guarded-action-C2HlSzkz.js";var s=n(e(),1),c={lead:`_lead_w05r1_8`,bar:`_bar_w05r1_14`,barSpacer:`_barSpacer_w05r1_22`,barSecondary:`_barSecondary_w05r1_26`,switchWrap:`_switchWrap_w05r1_32`,barLabel:`_barLabel_w05r1_38`,pillLabel:`_pillLabel_w05r1_39`,switchOption:`_switchOption_w05r1_48`,touchMark:`_touchMark_w05r1_54`,pill:`_pill_w05r1_39`,chip:`_chip_w05r1_59`,linkButton:`_linkButton_w05r1_88`,moreLink:`_moreLink_w05r1_89`,dot:`_dot_w05r1_103`,verdict:`_verdict_w05r1_126`,verdictPart:`_verdictPart_w05r1_135`,verdictSep:`_verdictSep_w05r1_149`,since:`_since_w05r1_153`,sinceLead:`_sinceLead_w05r1_162`,sinceEmpty:`_sinceEmpty_w05r1_166`,sinceChip:`_sinceChip_w05r1_170`,actionNote:`_actionNote_w05r1_196`,actionError:`_actionError_w05r1_197`,kbd:`_kbd_w05r1_251`,muted:`_muted_w05r1_260`,mono:`_mono_w05r1_267`,num:`_num_w05r1_272`,confirmBody:`_confirmBody_w05r1_277`,confirmActions:`_confirmActions_w05r1_283`,needsList:`_needsList_w05r1_291`,needsRow:`_needsRow_w05r1_299`,sevDot:`_sevDot_w05r1_313`,needsText:`_needsText_w05r1_327`,needsKind:`_needsKind_w05r1_335`,needsTitle:`_needsTitle_w05r1_347`,needsDetail:`_needsDetail_w05r1_359`,needsMeta:`_needsMeta_w05r1_367`,needsRepo:`_needsRepo_w05r1_376`,needsActions:`_needsActions_w05r1_380`,allClear:`_allClear_w05r1_388`,allClearTitle:`_allClearTitle_w05r1_395`,allClearBody:`_allClearBody_w05r1_403`,memo:`_memo_w05r1_409`,memoRow:`_memoRow_w05r1_416`,memoText:`_memoText_w05r1_427`,delta:`_delta_w05r1_433`,dryRun:`_dryRun_w05r1_446`,actionList:`_actionList_w05r1_458`,actionRow:`_actionRow_w05r1_467`,actionSummary:`_actionSummary_w05r1_476`,classBadge:`_classBadge_w05r1_481`,actionText:`_actionText_w05r1_504`,actionWhy:`_actionWhy_w05r1_517`,actionState:`_actionState_w05r1_524`,statusWord:`_statusWord_w05r1_530`,vetoChip:`_vetoChip_w05r1_545`,ring:`_ring_w05r1_549`,ringTrack:`_ringTrack_w05r1_559`,ringFill:`_ringFill_w05r1_565`,ringText:`_ringText_w05r1_572`,kpis:`_kpis_w05r1_577`,burnGrid:`_burnGrid_w05r1_592`,burnStrip:`_burnStrip_w05r1_604`,burnItem:`_burnItem_w05r1_615`,freeSeat:`_freeSeat_w05r1_623`,freeHead:`_freeHead_w05r1_633`,freeTitle:`_freeTitle_w05r1_639`,freeValue:`_freeValue_w05r1_646`,freeBody:`_freeBody_w05r1_653`,scope:`_scope_w05r1_660`,scopeBlock:`_scopeBlock_w05r1_666`,scopeLead:`_scopeLead_w05r1_672`,scopeMeta:`_scopeMeta_w05r1_679`,scopeTable:`_scopeTable_w05r1_686`,scopeList:`_scopeList_w05r1_706`,ladder:`_ladder_w05r1_714`,ladderId:`_ladderId_w05r1_733`,sheetFooter:`_sheetFooter_w05r1_738`,sheetFootnote:`_sheetFootnote_w05r1_744`,sheetButtons:`_sheetButtons_w05r1_751`},l=t();function u({spec:e,onConfirm:t,onCancel:n}){let i=(0,s.useId)(),o=(0,s.useRef)(null),u=(0,s.useRef)(null);return(0,l.jsxs)(r,{open:e!==null,onClose:n,titleId:i,title:e?.title??``,initialFocusRef:e?.destructive?o:u,children:[(0,l.jsx)(`div`,{className:c.confirmBody,children:e?.body}),(0,l.jsxs)(`div`,{className:c.confirmActions,children:[(0,l.jsx)(a,{ref:o,variant:`ghost`,onClick:n,children:`Cancel`}),(0,l.jsx)(a,{ref:u,variant:e?.destructive?`danger`:`primary`,onClick:t,children:e?.confirmLabel??`Confirm`})]})]})}function d(){let e=o(),[t,n]=(0,s.useState)(null),{request:r}=e,a=(0,s.useCallback)((e,t,i={})=>{let a=()=>r(e,t,i.onDone);i.confirm?n({spec:i.confirm,run:a}):a()},[r]),c=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(u,{spec:t?.spec??null,onCancel:()=>n(null),onConfirm:()=>{let e=t;n(null),e?.run()}}),(0,l.jsx)(i,{open:e.tokenOpen,onClose:e.closeToken,reason:e.tokenReason,tokenHelp:`the mutation token ashlr verse printed`})]});return{act:a,busy:e.busy,error:e.error,clearError:e.clearError,readOnly:e.readOnly,dialogs:c}}function f({actions:e}){return e.readOnly?(0,l.jsx)(`p`,{className:c.actionNote,role:`status`,children:`Read-only session: this server was started without dispatch, so switching, stopping and vetoing are unavailable. Everything shown is live.`}):e.error?(0,l.jsxs)(`p`,{className:c.actionError,role:`alert`,children:[e.error,(0,l.jsx)(`button`,{type:`button`,className:c.linkButton,onClick:e.clearError,children:`Dismiss`})]}):null}export{d as n,c as r,f as t};
|
|
2
|
-
//# sourceMappingURL=actions-s2lfm_5k.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{D as e,P as t,at as n,l as r,u as i}from"./global-Di2PUgj4.js";import{r as a}from"./verse-queries-DvIJcn6Z.js";var o=`verse-budget`,s=`verse-budget-preview`,c=`/api/verse/budget`,l=`/api/verse/budget/preview?task=code&difficulty=medium&autonomous=true`,u={key:o,fetch:e=>r(c,e)},d={key:s,fetch:e=>r(l,e)};async function f(r){let l=e();if(!l)throw new a;let u=await i(c,r,l);return t(),n(o),n(s),u}export{u as n,f as r,d as t};
|
|
2
|
-
//# sourceMappingURL=budget-queries-wUshcovN.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{D as e,P as t,at as n,l as r,s as i,u as a}from"./global-Di2PUgj4.js";import{r as o}from"./useActivity-Bk3XgXjL.js";import{c as s,d as c,l,o as u,r as d,s as f,u as p}from"./types-D5XOdyw8.js";var m=`verse-cloud`,h=3e4,g=class extends Error{constructor(){super(`Unlock actions with the mutation token first.`),this.name=`CloudLockedError`}},_=class extends Error{failure;constructor(e,t){super(e),this.failure=t,this.name=`CloudLaunchRefusedError`}};function v(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function y(e){if(!v(e))return null;let{seat:t,budget:n,tasks:r,backlog:i}=e;if(!v(t)||typeof t.ready!=`boolean`||!v(n)||!v(n.budget)||!v(n.canLaunch)||!v(n.canSelfImprove))return null;for(let e of[`creditsTotalUsd`,`estimatedSpentUsd`,`estimatedRemainingUsd`,`sessionsToday`,`selfImproveToday`,`running`])if(typeof n[e]!=`number`||!Number.isFinite(n[e]))return null;return!Array.isArray(r)||!r.every(e=>v(e)&&typeof e.id==`string`&&typeof e.state==`string`)||!v(i)||!Array.isArray(i.items)?null:e}function b(e){return e instanceof i?e.status===404?`The cloud lane is not in this build yet.`:e.status===503?`The cloud lane failed to load on the server.`:`The cloud lane answered HTTP ${e.status}.`:`The cloud lane could not be reached.`}var x={key:m,fetch:async e=>{try{let t=y(await r(l,e));return t===null?{value:null,available:!0,reason:`The cloud lane answered in a shape this version does not recognise, so nothing is shown rather than guessed.`}:{value:t,available:!0,reason:null}}catch(e){if(e instanceof i&&e.status===401||e instanceof DOMException&&e.name===`AbortError`)throw e;return{value:null,available:!1,reason:b(e)}}}};async function S(n,r){let i=e();if(!i)throw new g;let o=await a(n,r,i);return t(),o}function C(){n(m),o()}async function w(e){try{let t=await S(s,e);if(!v(t)||t.ok!==!0||!v(t.task))throw new _(v(t)&&typeof t.error==`string`&&t.error?t.error:`The cloud session was not started, and the server sent no reason.`,v(t)&&typeof t.failure==`string`?t.failure:null);return t}finally{C()}}async function T(e){let t=await S(u,e);return n(m),t}async function E(e={count:1}){try{let t=await S(f,e);return{launched:v(t)&&Array.isArray(t.launched)?t.launched:[],skipped:v(t)&&Array.isArray(t.skipped)?t.skipped:[]}}finally{C()}}async function D(){try{return await S(p,{})}finally{C()}}async function O(e){if(!d.test(e))throw Error(`That task id is not one Verse issued, so nothing was sent.`);try{return await S(`${c}/${e}/dismiss`,{})}finally{C()}}export{D as a,w as i,x as n,E as o,O as r,T as s,h as t};
|
|
2
|
-
//# sourceMappingURL=cloud-queries-CnV1yaNG.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var e=`ashlr:command`,t={"open-settings":`section.settings`,"toggle-theme":`appearance.toggle-theme`,"open-needs-you":`needs-you.open`,"new-chat":`chat.new`,"focus-composer":`app.summon`},n=/^open-session:([A-Za-z0-9._-]{1,128})$/;function r(e){if(typeof e!=`string`)return null;if(Object.prototype.hasOwnProperty.call(t,e)){let n=e;return{kind:`command`,name:n,commandId:t[n]}}let r=n.exec(e);return r?{kind:`open-session`,sessionId:r[1]}:null}var i=[{id:`needs-you`,label:`Needs you`},{id:`chats`,label:`Chats`},{id:`actions`,label:`Actions`},{id:`go-to`,label:`Go to`},{id:`seats-apps`,label:`Seats & Apps`},{id:`projects`,label:`Projects`}],a={">":`actions`,"#":`chats`},o=[`Surfaces`,`Navigation`,`Chat`,`Dock`,`Composer`,`Needs you`,`Charts`,`App`],s={confirm:{title:`Stop every running chat?`,body:`Each running turn is cancelled. Queued follow-ups are held, not sent.`,confirmLabel:`Stop chats`,destructive:!0},token:!0},c={confirm:{title:`Stop the fleet?`,body:`Autonomous work halts within one tick and stays stopped until you resume it. Chats keep running.`,confirmLabel:`Stop fleet`,destructive:!0},token:!0},l=(e,t,n)=>({id:`surface.${t}`,title:`Go to ${n}`,scope:`global`,keys:[{key:String(e),mod:!0}],group:`go-to`,section:`Surfaces`,keywords:[n.toLowerCase()]}),u=[l(1,`command`,`Command`),l(2,`fleet`,`Fleet`),l(3,`growth`,`Growth`),l(4,`mind`,`Mind`),l(5,`chat`,`Chat`),{id:`section.settings`,title:`Open Settings`,scope:`global`,keys:[{key:`,`,mod:!0}],group:`go-to`,section:`Surfaces`,keywords:[`preferences`,`appearance`],native:{kind:`menu`,desktopCommand:`open-settings`,accelerator:`CmdOrCtrl+,`}},{id:`section.apps`,title:`Open Apps & Accounts`,scope:`global`,keys:[],group:`go-to`,section:`Surfaces`,keywords:[`mcp`,`accounts`,`seats`,`integrations`,`ollama`]},{id:`section.usage`,title:`Open Usage`,scope:`global`,keys:[],group:`go-to`,section:`Surfaces`,keywords:[`capacity`,`spend`,`limits`]},{id:`palette.open`,title:`Command palette`,scope:`global`,keys:[{key:`k`,mod:!0}],group:null,section:`Navigation`},{id:`needs-you.open`,title:`Open Needs you`,scope:`global`,keys:[{key:`j`,mod:!0}],group:`actions`,section:`Navigation`,keywords:[`approvals`,`inbox`,`triage`]},{id:`shortcuts.open`,title:`Keyboard shortcuts`,scope:`global`,keys:[{key:`/`,mod:!0}],group:`actions`,section:`Navigation`,keywords:[`keys`,`help`]},{id:`resources.toggle`,title:`Show resources`,scope:`global`,keys:[{key:`.`,mod:!0}],group:`actions`,section:`Navigation`,keywords:[`accounts`,`seats`,`capacity`,`credits`,`cloud`,`local models`]},{id:`history.back`,title:`Back`,scope:`global`,keys:[{key:`[`,mod:!0}],group:null,section:`Navigation`,note:`through surfaces and chats`},{id:`history.forward`,title:`Forward`,scope:`global`,keys:[{key:`]`,mod:!0}],group:null,section:`Navigation`,note:`through surfaces and chats`},{id:`chat.recent-next`,title:`Next recent chat`,scope:`global`,keys:[{key:`tab`,ctrl:!0}],group:null,section:`Navigation`},{id:`chat.recent-prev`,title:`Previous recent chat`,scope:`global`,keys:[{key:`tab`,ctrl:!0,shift:!0}],group:null,section:`Navigation`},{id:`rail.toggle-labels`,title:`Show or hide rail labels`,scope:`global`,keys:[{key:`\\`,mod:!0,shift:!0}],group:`actions`,section:`Navigation`},{id:`chat.new`,title:`New chat`,scope:`global`,keys:[{key:`n`,mod:!0}],group:`actions`,section:`Chat`},{id:`chat.new-on`,title:`New chat on…`,scope:`global`,keys:[],group:`actions`,section:`Chat`,argument:{kind:`seat`,prompt:`Seat`},keywords:[`seat`,`account`,`engine`]},{id:`chat.sidebar`,title:`Show or hide the chat list`,scope:`chat`,keys:[{key:`b`,mod:!0}],group:`actions`,section:`Chat`},{id:`chat.find`,title:`Find in chat`,scope:`chat`,keys:[{key:`f`,mod:!0}],group:`actions`,section:`Chat`,keywords:[`search`]},{id:`chat.turn-prev`,title:`Previous turn`,scope:`chat`,keys:[{key:`arrowup`,alt:!0}],group:null,section:`Chat`},{id:`chat.turn-next`,title:`Next turn`,scope:`chat`,keys:[{key:`arrowdown`,alt:!0}],group:null,section:`Chat`},{id:`chats.stop-all`,title:`Stop running chats…`,scope:`global`,keys:[],group:`actions`,section:`Chat`,guard:s,keywords:[`cancel`,`halt`]},{id:`git.create-pr`,title:`Create pull request…`,scope:`chat`,keys:[],group:`actions`,section:`Chat`,keywords:[`pr`,`github`,`git`,`open pull request`]},{id:`git.merge-pr`,title:`Merge pull request…`,scope:`chat`,keys:[],group:`actions`,section:`Chat`,keywords:[`pr`,`github`,`git`,`land`,`ship`]},{id:`dock.toggle`,title:`Show or hide the dock`,scope:`chat`,keys:[{key:`\\`,mod:!0}],group:`actions`,section:`Dock`},{id:`dock.terminal`,title:`Terminal`,scope:`chat`,keys:[{key:"`",ctrl:!0}],group:`actions`,section:`Dock`,keywords:[`shell`,`console`]},{id:`dock.terminal-new`,title:`New terminal tab`,scope:`chat`,keys:[{key:"`",ctrl:!0,shift:!0}],group:`actions`,section:`Dock`},{id:`dock.preview`,title:`Preview`,scope:`chat`,keys:[{key:`b`,mod:!0,shift:!0}],group:`actions`,section:`Dock`,keywords:[`browser`,`dev server`]},{id:`dock.diff`,title:`Review changes`,scope:`chat`,keys:[{key:`d`,mod:!0,shift:!0}],group:`actions`,section:`Dock`,keywords:[`diff`,`git`]},{id:`composer.permission`,title:`Permission mode…`,scope:`chat`,keys:[{key:`m`,mod:!0,shift:!0}],group:`actions`,section:`Composer`,keywords:[`plan`,`bypass`,`auto`]},{id:`composer.model`,title:`Model…`,scope:`chat`,keys:[{key:`i`,mod:!0,shift:!0}],group:`actions`,section:`Composer`},{id:`composer.effort`,title:`Effort…`,scope:`chat`,keys:[{key:`e`,mod:!0,shift:!0}],group:`actions`,section:`Composer`,keywords:[`reasoning`,`thinking`]},{id:`composer.attach`,title:`Attach files…`,scope:`chat`,keys:[{key:`u`,mod:!0}],group:`actions`,section:`Composer`,keywords:[`upload`,`image`]},{id:`composer.send`,title:`Send`,scope:`composer`,keys:[{key:`enter`}],group:null,section:`Composer`,note:`queues while a turn runs (up to 3)`},{id:`composer.stop-and-send`,title:`Stop and send`,scope:`composer`,keys:[{key:`enter`,mod:!0,shift:!0}],group:null,section:`Composer`},{id:`composer.stop`,title:`Stop the running turn`,scope:`composer`,keys:[{key:`escape`}],group:null,section:`Composer`,note:`only from an empty composer with no overlay open`},{id:`drawer.next`,title:`Next item`,scope:`drawer`,keys:[{key:`j`}],group:null,section:`Needs you`},{id:`drawer.prev`,title:`Previous item`,scope:`drawer`,keys:[{key:`k`}],group:null,section:`Needs you`},{id:`drawer.open`,title:`Open item`,scope:`drawer`,keys:[{key:`enter`}],group:null,section:`Needs you`},{id:`drawer.approve`,title:`Approve`,scope:`drawer`,keys:[{key:`a`}],group:null,section:`Needs you`,note:`confirms, then asks for the token`},{id:`drawer.reject`,title:`Reject`,scope:`drawer`,keys:[{key:`r`}],group:null,section:`Needs you`,note:`confirms, then asks for the token`},{id:`drawer.veto`,title:`Veto`,scope:`drawer`,keys:[{key:`v`}],group:null,section:`Needs you`,note:`confirms, then asks for the token`},{id:`drawer.done`,title:`Mark done`,scope:`drawer`,keys:[{key:`e`}],group:null,section:`Needs you`},{id:`drawer.split-prev`,title:`Previous split`,scope:`drawer`,keys:[{key:`h`}],group:null,section:`Needs you`},{id:`drawer.split-next`,title:`Next split`,scope:`drawer`,keys:[{key:`l`}],group:null,section:`Needs you`},{id:`chart.table`,title:`Show as a table`,scope:`chart`,keys:[{key:`t`}],group:null,section:`Charts`,note:`when a chart card has focus`},{id:`appearance.toggle-theme`,title:`Toggle light / dark`,scope:`global`,keys:[{key:`l`,mod:!0,shift:!0}],group:`actions`,section:`App`,keywords:[`theme`,`dark mode`],native:{kind:`menu`,desktopCommand:`toggle-theme`,accelerator:`Shift+CmdOrCtrl+L`}},{id:`app.summon`,title:`Show Verse and focus the composer`,scope:`global`,keys:[{key:`space`,ctrl:!0,alt:!0}],group:null,section:`App`,note:`system-wide; turn on in Settings ▸ Desktop`,native:{kind:`global-hotkey`,accelerator:`Control+Alt+Space`}},{id:`fleet.stop`,title:`Stop the fleet…`,scope:`global`,keys:[],group:`actions`,section:`App`,guard:c,keywords:[`kill`,`halt`,`autonomy`]}],d=new Map(u.map(e=>[e.id,e]));function f(e){return d.get(e)??null}function p(e){return u.filter(t=>t.group===e)}function m(){let e=u.filter(e=>e.keys.length>0);return o.map(t=>({section:t,commands:e.filter(e=>e.section===t)})).filter(e=>e.commands.length>0)}function h(){if(typeof navigator>`u`)return`mac`;let e=navigator,t=e.userAgentData?.platform??e.platform??``;return/mac|iphone|ipad|ipod/i.test(t)?`mac`:`other`}var g={Backslash:`\\`,Backquote:"`",BracketLeft:`[`,BracketRight:`]`,Slash:`/`,Comma:`,`,Period:`.`,Semicolon:`;`,Quote:`'`,Minus:`-`,Equal:`=`,Space:`space`},_={" ":`space`,spacebar:`space`,esc:`escape`,return:`enter`,up:`arrowup`,down:`arrowdown`,left:`arrowleft`,right:`arrowright`};function v(e){let t=e.key??``;if(/^[a-z]$/i.test(t))return t.toLowerCase();let n=e.code??``;if(/^Digit[0-9]$/.test(n))return n.slice(5);if(g[n])return g[n];if(/^Key[A-Z]$/.test(n))return n.slice(3).toLowerCase();let r=t.toLowerCase();return _[r]??r}function y(e,t,n=h()){if(n===`mac`){if(!!t.mod!==e.metaKey||!!t.ctrl!==e.ctrlKey)return!1}else if(e.metaKey||!!(t.mod||t.ctrl)!==e.ctrlKey)return!1;return!!t.shift!==e.shiftKey||!!t.alt!==e.altKey?!1:v(e)===t.key}function b(e,t,n=h()){for(let r of t)for(let t of u)if(t.scope===r&&t.native?.kind!==`global-hotkey`&&t.keys.some(t=>y(e,t,n)))return t;return null}var x={enter:`↩`,escape:`Esc`,tab:`⇥`,space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`,backspace:`⌫`},S={enter:`Enter`,escape:`Esc`,tab:`Tab`,space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`,backspace:`Backspace`};function C(e,t=h()){let n=e.key.length===1?e.key.toUpperCase():(t===`mac`?x:S)[e.key]??e.key;return t===`mac`?`${e.ctrl?`⌃`:``}${e.alt?`⌥`:``}${e.shift?`⇧`:``}${e.mod?`⌘`:``}${n}`:[e.mod||e.ctrl?`Ctrl`:``,e.alt?`Alt`:``,e.shift?`Shift`:``,n].filter(Boolean).join(`+`)}export{h as a,C as c,r as d,m as f,y as i,b as l,a as n,v as o,e as r,f as s,i as t,p as u};
|
|
2
|
-
//# sourceMappingURL=command-catalog-BdtDH93o.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-catalog-BdtDH93o.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/command-catalog.ts"],"sourcesContent":["/**\n * routes/verse/shell/command-catalog.ts — every workbench command and its\n * keys, in ONE table (unit C0; SPEC-310C §1).\n *\n * The ⌘K palette (C1), the shortcuts overlay (⌘/), the native menu bridge\n * (C8), the drawer and every surface's key handler read this table; the key\n * test reads it too, which is how \"no two commands share a key\" and \"no key\n * the native menu already owns\" stay true as units add commands. A key that\n * is not here does not exist.\n *\n * Pure data plus pure helpers — no React, no DOM beyond reading a\n * KeyboardEvent-shaped object — so the palette can import it without pulling\n * a surface into its chunk.\n *\n * Adding a command: one entry below (a change request to C0 when another\n * unit needs it). The handler lives with the unit that owns the behaviour and\n * dispatches on the command `id`.\n */\n\n// ===========================================================================\n// Scopes — where a key is live\n// ===========================================================================\n\n/**\n * global anywhere in the workbench (except inside the palette, which\n * owns every key while open, and native text editing keys)\n * chat the Chat surface has focus (transcript, sidebar, dock)\n * composer the composer's text box has focus\n * drawer the Needs-you drawer list has focus (bare letters are safe\n * there: nothing in it takes text)\n * chart a chart card has focus\n */\nexport const COMMAND_SCOPES = ['global', 'chat', 'composer', 'drawer', 'chart'] as const;\nexport type CommandScope = (typeof COMMAND_SCOPES)[number];\n\n/**\n * The scopes live AT THE SAME TIME as each scope (itself included). A key\n * must be unique across every such set — the key test checks exactly this —\n * while two scopes that are never live together (the drawer's bare `Enter`\n * and the composer's) may reuse a key.\n */\nexport const SCOPE_LAYERS: Readonly<Record<CommandScope, readonly CommandScope[]>> = {\n global: ['global'],\n chat: ['chat', 'global'],\n composer: ['composer', 'chat', 'global'],\n drawer: ['drawer', 'global'],\n chart: ['chart', 'global'],\n};\n\n// ===========================================================================\n// Keys\n// ===========================================================================\n\n/**\n * One key chord. `key` is the UNSHIFTED US-layout name: a lowercase letter or\n * digit, a punctuation character, or one of the named keys below. `mod` is ⌘\n * on macOS and Ctrl elsewhere (\"CmdOrCtrl\"); `ctrl` is the literal ⌃ key.\n */\nexport interface KeyChord {\n key: string;\n mod?: true;\n ctrl?: true;\n shift?: true;\n alt?: true;\n}\n\nexport const NAMED_KEYS = ['enter', 'escape', 'tab', 'space', 'arrowup', 'arrowdown', 'arrowleft', 'arrowright', 'backspace'] as const;\n\n/**\n * Keys the page never binds, because macOS or the desktop shell answers them\n * first: the native menu's own accelerators live in app_menu.rs (the key test\n * parses that file), these are the system's.\n */\nexport const SYSTEM_RESERVED_CHORDS: readonly KeyChord[] = [\n { key: 'space', mod: true }, // Spotlight\n { key: 'space', ctrl: true }, // input sources\n { key: 'tab', mod: true }, // app switcher\n { key: 'tab', mod: true, shift: true },\n { key: '`', mod: true }, // cycle this app's windows\n { key: '3', mod: true, shift: true }, // screenshots\n { key: '4', mod: true, shift: true },\n { key: '5', mod: true, shift: true },\n];\n\n/**\n * How a key reaches the page when a native layer is involved.\n * menu the desktop menu owns the accelerator and forwards the\n * command (via `ashlr:desktop-command`); the page's own\n * handler only fires in a plain browser.\n * global-hotkey registered system-wide by the desktop app (C8); the page\n * never binds it — it is listed for the shortcuts overlay.\n */\nexport type NativeBinding =\n | { kind: 'menu'; desktopCommand: DesktopCommandName; accelerator: string }\n | { kind: 'global-hotkey'; accelerator: string };\n\n// ===========================================================================\n// The window event (units that are not on the command bus)\n// ===========================================================================\n\n/**\n * The window event the palette (C1) and the native menu bridge dispatch to\n * run a catalog command on a surface that listens for it instead of\n * registering on the command bus:\n * window.dispatchEvent(new CustomEvent(WORKBENCH_COMMAND_EVENT, { detail: { id } }))\n * The composer (C3) answers the `composer.*` ids it implements.\n *\n * It lives HERE, beside the ids it carries, so the shell (run-command.ts)\n * does not have to import a composer module to name its own event —\n * composer/composer-keys.ts re-exports it for its existing importers.\n */\nexport const WORKBENCH_COMMAND_EVENT = 'ashlr:command';\n\n// ===========================================================================\n// Desktop commands (C8 → page)\n// ===========================================================================\n\n/**\n * What the desktop shell may send the page (`ashlr:desktop-command`), and the\n * catalog command each one runs. C8 dispatches these from the menu bar, the\n * tray, a clicked notification (focus regained within 60 s) and the global\n * hotkey; C1 runs them. `open-session:<id>` carries a session id.\n */\nexport const DESKTOP_COMMAND_NAMES = ['open-settings', 'toggle-theme', 'open-needs-you', 'new-chat', 'focus-composer'] as const;\n// Its own literal list (not `keyof typeof DESKTOP_COMMANDS`): NativeBinding\n// names it, WORKBENCH_COMMANDS uses NativeBinding, and DESKTOP_COMMANDS is\n// typed by CommandId — deriving it from the map would make the types circular.\nexport type DesktopCommandName = (typeof DESKTOP_COMMAND_NAMES)[number];\n\nexport const DESKTOP_COMMANDS: Readonly<Record<DesktopCommandName, CommandId>> = {\n 'open-settings': 'section.settings',\n 'toggle-theme': 'appearance.toggle-theme',\n 'open-needs-you': 'needs-you.open',\n 'new-chat': 'chat.new',\n 'focus-composer': 'app.summon',\n};\n\n/** `open-session:<id>` — the notification for a finished or failed chat. */\nexport const OPEN_SESSION_COMMAND_RE = /^open-session:([A-Za-z0-9._-]{1,128})$/;\n\nexport type ParsedDesktopCommand =\n | { kind: 'command'; name: DesktopCommandName; commandId: CommandId }\n | { kind: 'open-session'; sessionId: string };\n\n/** Parse a raw desktop command string; null for anything unknown (never guessed). */\nexport function parseDesktopCommand(raw: unknown): ParsedDesktopCommand | null {\n if (typeof raw !== 'string') return null;\n if (Object.prototype.hasOwnProperty.call(DESKTOP_COMMANDS, raw)) {\n const name = raw as DesktopCommandName;\n return { kind: 'command', name, commandId: DESKTOP_COMMANDS[name] };\n }\n const session = OPEN_SESSION_COMMAND_RE.exec(raw);\n return session ? { kind: 'open-session', sessionId: session[1]! } : null;\n}\n\n// ===========================================================================\n// The palette\n// ===========================================================================\n\n/** Result groups, in the order the palette shows them (SPEC-310C §1). */\nexport const PALETTE_GROUPS = [\n { id: 'needs-you', label: 'Needs you' },\n { id: 'chats', label: 'Chats' },\n { id: 'actions', label: 'Actions' },\n { id: 'go-to', label: 'Go to' },\n { id: 'seats-apps', label: 'Seats & Apps' },\n { id: 'projects', label: 'Projects' },\n] as const;\nexport type PaletteGroupId = (typeof PALETTE_GROUPS)[number]['id'];\n\n/** A leading `>` limits results to actions; `#` to chats. */\nexport const PALETTE_PREFIXES: Readonly<Record<'>' | '#', PaletteGroupId>> = { '>': 'actions', '#': 'chats' };\n\n/** An empty query shows the last this-many actions run. */\nexport const PALETTE_RECENT_LIMIT = 5;\n\n/** The palette opens in under this (it lives in the shell chunk). */\nexport const PALETTE_OPEN_BUDGET_MS = 50;\n\n// ===========================================================================\n// Commands\n// ===========================================================================\n\nexport type CommandArgumentKind = 'seat' | 'project' | 'section' | 'session';\n\n/**\n * A guarded command asks for confirmation FIRST, then the mutation token\n * (the palette must never be a shortcut around the confirm step its regular\n * UI requires).\n */\nexport interface CommandGuard {\n confirm: { title: string; body: string; confirmLabel: string; destructive: boolean };\n token: boolean;\n}\n\n/** Sections of the shortcuts overlay (⌘/), in display order. */\nexport const SHORTCUT_SECTIONS = ['Surfaces', 'Navigation', 'Chat', 'Dock', 'Composer', 'Needs you', 'Charts', 'App'] as const;\nexport type ShortcutSection = (typeof SHORTCUT_SECTIONS)[number];\n\nexport interface WorkbenchCommand {\n id: string;\n /** Palette / overlay text: a verb phrase, operator language. */\n title: string;\n scope: CommandScope;\n /** Empty = reachable from the palette (or a button) only. */\n keys: readonly KeyChord[];\n /** Where the palette lists it; null = not a palette entry (drawer and chart keys). */\n group: 'actions' | 'go-to' | null;\n section: ShortcutSection;\n keywords?: readonly string[];\n /** Tab fills this argument (\"New chat on…\" → a seat). */\n argument?: { kind: CommandArgumentKind; prompt: string };\n guard?: CommandGuard;\n native?: NativeBinding;\n /** A qualifier the overlay prints under the title. */\n note?: string;\n}\n\nconst STOP_CHATS_GUARD: CommandGuard = {\n confirm: {\n title: 'Stop every running chat?',\n body: 'Each running turn is cancelled. Queued follow-ups are held, not sent.',\n confirmLabel: 'Stop chats',\n destructive: true,\n },\n token: true,\n};\n\nconst STOP_FLEET_GUARD: CommandGuard = {\n confirm: {\n title: 'Stop the fleet?',\n body: 'Autonomous work halts within one tick and stays stopped until you resume it. Chats keep running.',\n confirmLabel: 'Stop fleet',\n destructive: true,\n },\n token: true,\n};\n\nconst surface = (n: 1 | 2 | 3 | 4 | 5, id: string, name: string): WorkbenchCommand => ({\n id: `surface.${id}`,\n title: `Go to ${name}`,\n scope: 'global',\n keys: [{ key: String(n), mod: true }],\n group: 'go-to',\n section: 'Surfaces',\n keywords: [name.toLowerCase()],\n});\n\nexport const WORKBENCH_COMMANDS = [\n // ── Surfaces (⌘1 Command … ⌘5 Chat) and the gear tray ────────────────────\n surface(1, 'command', 'Command'),\n surface(2, 'fleet', 'Fleet'),\n surface(3, 'growth', 'Growth'),\n surface(4, 'mind', 'Mind'),\n surface(5, 'chat', 'Chat'),\n {\n id: 'section.settings',\n title: 'Open Settings',\n scope: 'global',\n keys: [{ key: ',', mod: true }],\n group: 'go-to',\n section: 'Surfaces',\n keywords: ['preferences', 'appearance'],\n native: { kind: 'menu', desktopCommand: 'open-settings', accelerator: 'CmdOrCtrl+,' },\n },\n { id: 'section.apps', title: 'Open Apps & Accounts', scope: 'global', keys: [], group: 'go-to', section: 'Surfaces', keywords: ['mcp', 'accounts', 'seats', 'integrations', 'ollama'] },\n { id: 'section.usage', title: 'Open Usage', scope: 'global', keys: [], group: 'go-to', section: 'Surfaces', keywords: ['capacity', 'spend', 'limits'] },\n\n // ── Navigation ───────────────────────────────────────────────────────────\n { id: 'palette.open', title: 'Command palette', scope: 'global', keys: [{ key: 'k', mod: true }], group: null, section: 'Navigation' },\n { id: 'needs-you.open', title: 'Open Needs you', scope: 'global', keys: [{ key: 'j', mod: true }], group: 'actions', section: 'Navigation', keywords: ['approvals', 'inbox', 'triage'] },\n { id: 'shortcuts.open', title: 'Keyboard shortcuts', scope: 'global', keys: [{ key: '/', mod: true }], group: 'actions', section: 'Navigation', keywords: ['keys', 'help'] },\n // The Resources drawer (3.11 C6): the key toggles it, the palette opens it.\n // ⌘. — not ⇧⌘R, which browsers keep for a hard reload.\n {\n id: 'resources.toggle',\n title: 'Show resources',\n scope: 'global',\n keys: [{ key: '.', mod: true }],\n group: 'actions',\n section: 'Navigation',\n keywords: ['accounts', 'seats', 'capacity', 'credits', 'cloud', 'local models'],\n },\n { id: 'history.back', title: 'Back', scope: 'global', keys: [{ key: '[', mod: true }], group: null, section: 'Navigation', note: 'through surfaces and chats' },\n { id: 'history.forward', title: 'Forward', scope: 'global', keys: [{ key: ']', mod: true }], group: null, section: 'Navigation', note: 'through surfaces and chats' },\n { id: 'chat.recent-next', title: 'Next recent chat', scope: 'global', keys: [{ key: 'tab', ctrl: true }], group: null, section: 'Navigation' },\n { id: 'chat.recent-prev', title: 'Previous recent chat', scope: 'global', keys: [{ key: 'tab', ctrl: true, shift: true }], group: null, section: 'Navigation' },\n { id: 'rail.toggle-labels', title: 'Show or hide rail labels', scope: 'global', keys: [{ key: '\\\\', mod: true, shift: true }], group: 'actions', section: 'Navigation' },\n\n // ── Chats ────────────────────────────────────────────────────────────────\n { id: 'chat.new', title: 'New chat', scope: 'global', keys: [{ key: 'n', mod: true }], group: 'actions', section: 'Chat' },\n {\n id: 'chat.new-on',\n title: 'New chat on…',\n scope: 'global',\n keys: [],\n group: 'actions',\n section: 'Chat',\n argument: { kind: 'seat', prompt: 'Seat' },\n keywords: ['seat', 'account', 'engine'],\n },\n { id: 'chat.sidebar', title: 'Show or hide the chat list', scope: 'chat', keys: [{ key: 'b', mod: true }], group: 'actions', section: 'Chat' },\n { id: 'chat.find', title: 'Find in chat', scope: 'chat', keys: [{ key: 'f', mod: true }], group: 'actions', section: 'Chat', keywords: ['search'] },\n { id: 'chat.turn-prev', title: 'Previous turn', scope: 'chat', keys: [{ key: 'arrowup', alt: true }], group: null, section: 'Chat' },\n { id: 'chat.turn-next', title: 'Next turn', scope: 'chat', keys: [{ key: 'arrowdown', alt: true }], group: null, section: 'Chat' },\n { id: 'chats.stop-all', title: 'Stop running chats…', scope: 'global', keys: [], group: 'actions', section: 'Chat', guard: STOP_CHATS_GUARD, keywords: ['cancel', 'halt'] },\n // ── Git (C5's BranchBar serves these) ─────────────────────────────────────\n // Palette-only and unguarded ON PURPOSE: each OPENS BranchBar's own dialog\n // (CreatePrDialog / MergeDialog), which carries the before-click disclosure,\n // and every write inside it still goes through the mutation-token gate —\n // so the palette is never a shortcut around a confirm step. No key: a\n // merge is never one keystroke away. Chat-scoped because the bar lives\n // above the composer; from another surface the shell switches to Chat and\n // parks the command until BranchBar registers (command-bus).\n { id: 'git.create-pr', title: 'Create pull request…', scope: 'chat', keys: [], group: 'actions', section: 'Chat', keywords: ['pr', 'github', 'git', 'open pull request'] },\n { id: 'git.merge-pr', title: 'Merge pull request…', scope: 'chat', keys: [], group: 'actions', section: 'Chat', keywords: ['pr', 'github', 'git', 'land', 'ship'] },\n\n // ── Dock (C2 container; panes from dock-catalog.ts) ───────────────────────\n { id: 'dock.toggle', title: 'Show or hide the dock', scope: 'chat', keys: [{ key: '\\\\', mod: true }], group: 'actions', section: 'Dock' },\n { id: 'dock.terminal', title: 'Terminal', scope: 'chat', keys: [{ key: '`', ctrl: true }], group: 'actions', section: 'Dock', keywords: ['shell', 'console'] },\n { id: 'dock.terminal-new', title: 'New terminal tab', scope: 'chat', keys: [{ key: '`', ctrl: true, shift: true }], group: 'actions', section: 'Dock' },\n { id: 'dock.preview', title: 'Preview', scope: 'chat', keys: [{ key: 'b', mod: true, shift: true }], group: 'actions', section: 'Dock', keywords: ['browser', 'dev server'] },\n { id: 'dock.diff', title: 'Review changes', scope: 'chat', keys: [{ key: 'd', mod: true, shift: true }], group: 'actions', section: 'Dock', keywords: ['diff', 'git'] },\n\n // ── Composer ─────────────────────────────────────────────────────────────\n { id: 'composer.permission', title: 'Permission mode…', scope: 'chat', keys: [{ key: 'm', mod: true, shift: true }], group: 'actions', section: 'Composer', keywords: ['plan', 'bypass', 'auto'] },\n { id: 'composer.model', title: 'Model…', scope: 'chat', keys: [{ key: 'i', mod: true, shift: true }], group: 'actions', section: 'Composer' },\n { id: 'composer.effort', title: 'Effort…', scope: 'chat', keys: [{ key: 'e', mod: true, shift: true }], group: 'actions', section: 'Composer', keywords: ['reasoning', 'thinking'] },\n { id: 'composer.attach', title: 'Attach files…', scope: 'chat', keys: [{ key: 'u', mod: true }], group: 'actions', section: 'Composer', keywords: ['upload', 'image'] },\n { id: 'composer.send', title: 'Send', scope: 'composer', keys: [{ key: 'enter' }], group: null, section: 'Composer', note: 'queues while a turn runs (up to 3)' },\n { id: 'composer.stop-and-send', title: 'Stop and send', scope: 'composer', keys: [{ key: 'enter', mod: true, shift: true }], group: null, section: 'Composer' },\n { id: 'composer.stop', title: 'Stop the running turn', scope: 'composer', keys: [{ key: 'escape' }], group: null, section: 'Composer', note: 'only from an empty composer with no overlay open' },\n\n // ── Needs-you drawer ─────────────────────────────────────────────────────\n { id: 'drawer.next', title: 'Next item', scope: 'drawer', keys: [{ key: 'j' }], group: null, section: 'Needs you' },\n { id: 'drawer.prev', title: 'Previous item', scope: 'drawer', keys: [{ key: 'k' }], group: null, section: 'Needs you' },\n { id: 'drawer.open', title: 'Open item', scope: 'drawer', keys: [{ key: 'enter' }], group: null, section: 'Needs you' },\n { id: 'drawer.approve', title: 'Approve', scope: 'drawer', keys: [{ key: 'a' }], group: null, section: 'Needs you', note: 'confirms, then asks for the token' },\n { id: 'drawer.reject', title: 'Reject', scope: 'drawer', keys: [{ key: 'r' }], group: null, section: 'Needs you', note: 'confirms, then asks for the token' },\n { id: 'drawer.veto', title: 'Veto', scope: 'drawer', keys: [{ key: 'v' }], group: null, section: 'Needs you', note: 'confirms, then asks for the token' },\n { id: 'drawer.done', title: 'Mark done', scope: 'drawer', keys: [{ key: 'e' }], group: null, section: 'Needs you' },\n { id: 'drawer.split-prev', title: 'Previous split', scope: 'drawer', keys: [{ key: 'h' }], group: null, section: 'Needs you' },\n { id: 'drawer.split-next', title: 'Next split', scope: 'drawer', keys: [{ key: 'l' }], group: null, section: 'Needs you' },\n\n // ── Charts ───────────────────────────────────────────────────────────────\n { id: 'chart.table', title: 'Show as a table', scope: 'chart', keys: [{ key: 't' }], group: null, section: 'Charts', note: 'when a chart card has focus' },\n\n // ── App ──────────────────────────────────────────────────────────────────\n {\n id: 'appearance.toggle-theme',\n title: 'Toggle light / dark',\n scope: 'global',\n keys: [{ key: 'l', mod: true, shift: true }],\n group: 'actions',\n section: 'App',\n keywords: ['theme', 'dark mode'],\n native: { kind: 'menu', desktopCommand: 'toggle-theme', accelerator: 'Shift+CmdOrCtrl+L' },\n },\n {\n id: 'app.summon',\n title: 'Show Verse and focus the composer',\n scope: 'global',\n keys: [{ key: 'space', ctrl: true, alt: true }],\n group: null,\n section: 'App',\n note: 'system-wide; turn on in Settings ▸ Desktop',\n native: { kind: 'global-hotkey', accelerator: 'Control+Alt+Space' },\n },\n { id: 'fleet.stop', title: 'Stop the fleet…', scope: 'global', keys: [], group: 'actions', section: 'App', guard: STOP_FLEET_GUARD, keywords: ['kill', 'halt', 'autonomy'] },\n] as const satisfies readonly WorkbenchCommand[];\n\nexport type CommandId = (typeof WORKBENCH_COMMANDS)[number]['id'];\n\nconst BY_ID: ReadonlyMap<string, WorkbenchCommand> = new Map(WORKBENCH_COMMANDS.map((c) => [c.id, c as WorkbenchCommand]));\n\nexport function findCommand(id: string): WorkbenchCommand | null {\n return BY_ID.get(id) ?? null;\n}\n\n/** Palette entries of one group, in catalog order. */\nexport function paletteCommands(group: 'actions' | 'go-to'): WorkbenchCommand[] {\n return (WORKBENCH_COMMANDS as readonly WorkbenchCommand[]).filter((c) => c.group === group);\n}\n\n/** The shortcuts overlay: every command with keys, grouped by section, in display order. */\nexport function shortcutSections(): Array<{ section: ShortcutSection; commands: WorkbenchCommand[] }> {\n const withKeys = (WORKBENCH_COMMANDS as readonly WorkbenchCommand[]).filter((c) => c.keys.length > 0);\n return SHORTCUT_SECTIONS.map((section) => ({ section, commands: withKeys.filter((c) => c.section === section) })).filter(\n (s) => s.commands.length > 0,\n );\n}\n\n// ===========================================================================\n// Matching and display\n// ===========================================================================\n\nexport type KeyPlatform = 'mac' | 'other';\n\n/** The platform the page runs on, for ⌘ vs Ctrl. */\nexport function detectKeyPlatform(): KeyPlatform {\n if (typeof navigator === 'undefined') return 'mac';\n const nav = navigator as Navigator & { userAgentData?: { platform?: string } };\n const platform = nav.userAgentData?.platform ?? nav.platform ?? '';\n return /mac|iphone|ipad|ipod/i.test(platform) ? 'mac' : 'other';\n}\n\n/** The part of a KeyboardEvent matching needs (so tests can pass plain objects). */\nexport interface KeyEventLike {\n key: string;\n code?: string;\n metaKey: boolean;\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n}\n\nconst CODE_CHARS: Readonly<Record<string, string>> = {\n Backslash: '\\\\',\n Backquote: '`',\n BracketLeft: '[',\n BracketRight: ']',\n Slash: '/',\n Comma: ',',\n Period: '.',\n Semicolon: ';',\n Quote: \"'\",\n Minus: '-',\n Equal: '=',\n Space: 'space',\n};\n\nconst KEY_ALIASES: Readonly<Record<string, string>> = {\n ' ': 'space',\n spacebar: 'space',\n esc: 'escape',\n return: 'enter',\n up: 'arrowup',\n down: 'arrowdown',\n left: 'arrowleft',\n right: 'arrowright',\n};\n\n/**\n * The event's key as a chord `key`. Letters come from `event.key` (so ⌘K is\n * ⌘K on any keyboard layout); digits and punctuation come from `event.code`\n * when it is known, because Shift and ⌥ change `event.key` (⇧\\ reads \"|\",\n * ⌥J reads \"∆\") while the chord names the unshifted key.\n */\nexport function eventKeyName(event: Pick<KeyEventLike, 'key' | 'code'>): string {\n const key = event.key ?? '';\n if (/^[a-z]$/i.test(key)) return key.toLowerCase();\n const code = event.code ?? '';\n if (/^Digit[0-9]$/.test(code)) return code.slice(5);\n if (CODE_CHARS[code]) return CODE_CHARS[code]!;\n if (/^Key[A-Z]$/.test(code)) return code.slice(3).toLowerCase();\n const lower = key.toLowerCase();\n return KEY_ALIASES[lower] ?? lower;\n}\n\n/**\n * Does `event` press `chord`? Modifiers must match EXACTLY (⌘K is not ⇧⌘K).\n * Off macOS, `mod` and `ctrl` are both the Ctrl key and ⌘/Win never matches.\n */\nexport function chordMatches(event: KeyEventLike, chord: KeyChord, platform: KeyPlatform = detectKeyPlatform()): boolean {\n if (platform === 'mac') {\n if (Boolean(chord.mod) !== event.metaKey) return false;\n if (Boolean(chord.ctrl) !== event.ctrlKey) return false;\n } else {\n if (event.metaKey) return false;\n if (Boolean(chord.mod || chord.ctrl) !== event.ctrlKey) return false;\n }\n if (Boolean(chord.shift) !== event.shiftKey) return false;\n if (Boolean(chord.alt) !== event.altKey) return false;\n return eventKeyName(event) === chord.key;\n}\n\n/**\n * The command a key press runs, given the scopes live right now (innermost\n * first, e.g. ['composer', 'chat', 'global']). Null when nothing is bound —\n * the caller must then leave the event alone.\n */\nexport function matchCommand(event: KeyEventLike, liveScopes: readonly CommandScope[], platform: KeyPlatform = detectKeyPlatform()): WorkbenchCommand | null {\n for (const scope of liveScopes) {\n for (const command of WORKBENCH_COMMANDS as readonly WorkbenchCommand[]) {\n if (command.scope !== scope) continue;\n // The page never handles a system-wide hotkey itself.\n if (command.native?.kind === 'global-hotkey') continue;\n if (command.keys.some((chord) => chordMatches(event, chord, platform))) return command;\n }\n }\n return null;\n}\n\n/** Stable identity for a chord (\"mod+shift+b\"), for de-duplication and tests. */\nexport function chordId(chord: KeyChord): string {\n return [chord.ctrl ? 'ctrl' : '', chord.alt ? 'alt' : '', chord.shift ? 'shift' : '', chord.mod ? 'mod' : '', chord.key].filter(Boolean).join('+');\n}\n\nconst MAC_KEY_GLYPHS: Readonly<Record<string, string>> = {\n enter: '↩',\n escape: 'Esc',\n tab: '⇥',\n space: 'Space',\n arrowup: '↑',\n arrowdown: '↓',\n arrowleft: '←',\n arrowright: '→',\n backspace: '⌫',\n};\n\nconst OTHER_KEY_NAMES: Readonly<Record<string, string>> = {\n enter: 'Enter',\n escape: 'Esc',\n tab: 'Tab',\n space: 'Space',\n arrowup: '↑',\n arrowdown: '↓',\n arrowleft: '←',\n arrowright: '→',\n backspace: 'Backspace',\n};\n\n/**\n * How a chord is printed. macOS uses Apple's modifier order (⌃ ⌥ ⇧ ⌘) with\n * no separators (\"⇧⌘B\", \"⌃`\", \"⌥↑\"); elsewhere \"Ctrl+Shift+B\".\n */\nexport function formatChord(chord: KeyChord, platform: KeyPlatform = detectKeyPlatform()): string {\n const key = chord.key.length === 1 ? chord.key.toUpperCase() : (platform === 'mac' ? MAC_KEY_GLYPHS : OTHER_KEY_NAMES)[chord.key] ?? chord.key;\n if (platform === 'mac') {\n return `${chord.ctrl ? '⌃' : ''}${chord.alt ? '⌥' : ''}${chord.shift ? '⇧' : ''}${chord.mod ? '⌘' : ''}${key}`;\n }\n const parts = [chord.mod || chord.ctrl ? 'Ctrl' : '', chord.alt ? 'Alt' : '', chord.shift ? 'Shift' : '', key].filter(Boolean);\n return parts.join('+');\n}\n\n/**\n * Tauri's accelerator string for a chord (\"Shift+CmdOrCtrl+L\") — what C8\n * writes in app_menu.rs, and what the key test compares against.\n */\nexport function chordAccelerator(chord: KeyChord): string {\n const TAURI_KEYS: Readonly<Record<string, string>> = {\n enter: 'Enter',\n escape: 'Escape',\n tab: 'Tab',\n space: 'Space',\n arrowup: 'Up',\n arrowdown: 'Down',\n arrowleft: 'Left',\n arrowright: 'Right',\n backspace: 'Backspace',\n };\n const key = TAURI_KEYS[chord.key] ?? (chord.key.length === 1 ? chord.key.toUpperCase() : chord.key);\n return [chord.shift ? 'Shift' : '', chord.ctrl ? 'Control' : '', chord.alt ? 'Alt' : '', chord.mod ? 'CmdOrCtrl' : '', key].filter(Boolean).join('+');\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$ as e,K as t,W as n,Y as r,Z as i,nt as a}from"./global-Di2PUgj4.js";import{C as o,S as s,r as c}from"./verse-store-DjBWj04q.js";import{g as l,t as u,v as d}from"./format-B8DAVcn2.js";import{c as f}from"./verse-model-D7NZQFAR.js";var p=/\s·\spart\s(\d+)$/;function m(e){let t=e.replace(/\s+/g,` `).trim(),n=p.exec(t),r=(n?t.slice(0,n.index):t)||`Untitled chat`,i=` · part ${n?Number.parseInt(n[1],10)+1:2}`,a=120-i.length;return`${r.length>a?`${r.slice(0,a-1).trimEnd()}…`:r}${i}`}function h(e,n){if(!e)return null;let r=e.models.find(e=>e.id===n);if(r)return r;let i=t(n);return e.models.find(e=>t(e.id)===i)??null}function g(e,t,n=Date.now()){return e?e.health.state===`unavailable`?`${e.label} is unavailable: ${u(d(e.health.summary??`no reason given`,n))}.`:t?t.unavailableReason?`${t.label} cannot run on ${e.label}: ${u(d(t.unavailableReason,n))}.`:null:`Pick a model on this seat.`:`Pick a seat to continue on.`}function _(e,t){let n=e.find(e=>e.id===t.seatId);if(n&&n.health.state!==`unavailable`){let e=h(n,t.model);if(e&&!e.unavailableReason)return{seatId:n.id,model:e.id};let r=n.models.find(e=>!e.unavailableReason);if(r)return{seatId:n.id,model:r.id}}for(let t of e){if(t.health.state===`unavailable`)continue;let e=t.models.find(e=>!e.unavailableReason);if(e)return{seatId:t.id,model:e.id}}return null}function v(e){let{option:r,target:i,source:a,preferences:o}=e,s=e=>e!==void 0&&n(r,e)!==null;if(i!==null&&i.seatId===a.seatId&&t(i.model)===t(a.model)&&s(a.contextMode??`standard`))return a.contextMode??`standard`;let c=i?o?.seats[i.seatId]?.contextMode:void 0;return s(c)?c:`standard`}function y(e,t){return n(e,t)===null?void 0:t}function b(e,t){let r=n(e,t);if(!r)return null;let i=`${c(r.contextWindow)} window`;return r.autoCompactAt===null?i:`${i} · compacts ≈${c(r.autoCompactAt)}`}function x(e,t,o,s){let u=r(e),d=a(s),f=u+d,p=i(u,t,d),m=`~${c(u)} tokens of handoff + an estimated ~${c(d)} of fixed prompt`,h=n(t,`standard`),g=h?h.autoCompactAt??h.contextWindow:null,_={verdict:p,handoffTokens:u,overheadTokens:d,needTokens:f};switch(p){case`fits`:return{..._,tone:`ok`,text:`Fits: ${m} leaves most of the budget before the first compaction.`};case`tight`:return{..._,tone:`warn`,text:`Tight: ${m} is ${l(f/(g??f)*100)} of where this model compacts — the new chat will compact early.`};case`expansive`:return o===`expansive`?{..._,tone:`warn`,text:`Fits only the expansive budget: ${m}.`}:{..._,tone:`danger`,text:`Too big for the standard budget (${m}). Switch to Expansive, or trim the handoff.`};case`split`:return{..._,tone:`danger`,text:`Too big for one context on this model (${m}). Trim the handoff or pick a seat with a larger window.`};default:return{..._,verdict:null,tone:`unknown`,text:`This model’s window is not known, so there is no fit estimate.`}}}function S(t){return e(t)}function C(e,t){return e===`local`?`Runs on this machine with ${t}; it spends no subscription usage.`:`Sends one turn to ${t} and spends from its usage. The automatic preview costs nothing.`}var w=typeof TextEncoder==`function`?new TextEncoder:null;function T(e){if(w)return w.encode(e).length;let t=0;for(let n of e){let e=n.codePointAt(0)??0;t+=e<128?1:e<2048?2:e<65536?3:4}return t}var E=65536,D=o;function O(e){return T(JSON.stringify(e)??``)}function k(e){if(!Number.isFinite(e)||e<0)return`—`;if(e<1024)return`${e} B`;let t=e/1024;return`${t<10?t.toFixed(1).replace(/\.0$/,``):Math.round(t)} KB`}function A(e,t=Date.now()){if(!e)return null;let n=f(e,t);return n?n===`now`?`just now`:/^\d+[mhd]$/.test(n)?`${n} ago`:`on ${n}`:null}var j=[{label:`a private key`,re:/-----BEGIN [A-Z ]*PRIVATE KEY-----/},{label:`an Anthropic API key`,re:/\bsk-ant-[A-Za-z0-9_-]{20,}/},{label:`an OpenAI-style API key`,re:/\bsk-(?:proj-)?[A-Za-z0-9_-]{32,}/},{label:`an xAI API key`,re:/\bxai-[A-Za-z0-9]{32,}/},{label:`a GitHub token`,re:/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{30,}|\bgithub_pat_[A-Za-z0-9_]{40,}/},{label:`an AWS access key`,re:/\b(?:AKIA|ASIA)[0-9A-Z]{16}\b/},{label:`a Slack token`,re:/\bxox[abprs]-[A-Za-z0-9-]{10,}/},{label:`a Google API key`,re:/\bAIza[0-9A-Za-z_-]{35}\b/},{label:`a Stripe secret key`,re:/\b(?:sk|rk)_live_[0-9A-Za-z]{20,}/}],M=s,N=`Reading and editing memory here spends nothing. On a paid seat it is not free to use: each new chat’s system prompt carries a memory block of up to ${M/1024} KB, re-sent every turn (cached after the first), and the agent reads and updates MEMORY.md as it works. Local seats spend nothing.`;function P(e){for(let{label:t,re:n}of j)if(n.test(e))return t;return null}var F=`[REDACTED]`;function I(e){return e.split(F).length-1}function L(e){let t=[];for(let n of e.toLowerCase().split(/\s+/))n&&!t.includes(n)&&t.push(n);return t}function R(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function z(e,t){let n=[...t].filter(e=>e.length>0).sort((e,t)=>t.length-e.length);if(n.length===0||e.length===0)return e?[{text:e,match:!1}]:[];let r=new RegExp(n.map(R).join(`|`),`gi`),i=[],a=0;for(let t of e.matchAll(r)){let n=t.index??0;t[0].length!==0&&(n>a&&i.push({text:e.slice(a,n),match:!1}),i.push({text:t[0],match:!0}),a=n+t[0].length)}return a<e.length&&i.push({text:e.slice(a),match:!1}),i}function B(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId);if(!e){t.set(n.sessionId,{sessionId:n.sessionId,title:n.title,projectPath:n.projectPath,engine:n.engine,top:n,count:1,latestAt:n.at});continue}e.count+=1,n.at>e.latestAt&&(e.latestAt=n.at)}return[...t.values()]}export{C,g as S,I as _,F as a,L as b,_ as c,x as d,m as f,S as g,h,N as i,k as l,O as m,M as n,b as o,z as p,D as r,v as s,E as t,B as u,A as v,T as w,P as x,y};
|
|
2
|
-
//# sourceMappingURL=context-model-Dwd49-dp.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$ as e,G as t,W as n,Z as r,nt as i}from"./global-Di2PUgj4.js";import{r as a}from"./verse-store-DjBWj04q.js";import{f as o}from"./format-B8DAVcn2.js";import{S as s,b as c,i as l,m as u,t as d}from"./verse-model-D7NZQFAR.js";function f(e,t){return e?u([e],{seatId:e.id,model:t}):null}function p(e,t){return t!==`standard`&&n(e,t)!==null?t:`standard`}function m(e,t){return n(e,p(e,t))}function h(e,t){let n=c(e);if(n!==null)return n;let r=t.unavailableReason;return typeof r==`string`&&r.trim().length>0?r.trim():null}var g={standard:`Standard`,expansive:`Expansive`},_={claude:`Claude Code`,codex:`Codex CLI`,grok:`Grok CLI`,local:`Claude Code`};function v(e){let t=typeof e.cliVersion==`string`?e.cliVersion.trim():``;return t.length>0?`${_[e.engine]} ${t}`:null}function y(e){return(e.notes??[]).filter(e=>typeof e==`string`&&e.trim().length>0)}function b(e){return e===`fallback`}function x(e,t=`standard`){let r=p(e,t),i=n(e,r);return i?`${`${a(i.contextWindow)} ctx${b(e.windowSource)?` (est.)`:``}`}${i.autoCompactAt===null?``:` · compacts ≈${a(i.autoCompactAt)}`}${r===`expansive`?` (expansive)`:``}`:`window unknown`}function S(t){let r=n(t,`standard`),i=e(t)?n(t,`expansive`):null,o=[];if(!r)o.push(`Context window unknown for this model.`);else{let e=r.autoCompactAt===null?``:`; compacts at about ${a(r.autoCompactAt)}${i?` in Standard`:``}`;o.push(`${a(r.contextWindow)}-token window${e}.`)}return i&&o.push(`Expansive runs to about ${a(i.autoCompactAt??i.contextWindow)} before compacting.`),t.windowSource&&o.push(`Window ${l[t.windowSource]}.`),o.join(` `)}function C(e){return e===`codex`?d:null}function w(e){let t=n(e,`standard`),r=n(e,`expansive`),i=t?t.autoCompactAt??t.contextWindow:null,o=r?r.autoCompactAt??r.contextWindow:null;return i===null||o===null||i<=0?null:`A turn at ${a(o)} re-sends ${(o/i).toFixed(1)}× the tokens of one at ${a(i)}.`}function T(e,t,r){let i=n(t,`standard`),o=n(t,`expansive`),s=i?i.autoCompactAt??i.contextWindow:null,c=o?o.autoCompactAt??o.contextWindow:null;if(r===`standard`||c===null)return s===null?`The CLI compacts at its own default point for this model.`:e===`claude`?`Compacts at about ${a(s)}. Every turn re-sends the whole context, so holding it under this point keeps each turn cheaper and recall sharper.`:`Compacts at about ${a(s)} — the CLI's own default budget for this model.`;let l=w(t),u=C(e);return`Runs to about ${a(c)} before compacting — for tightly coupled, cross-cutting work that needs everything in view at once. Each turn re-sends everything held, so a long expansive chat uses noticeably more of your plan per turn.${l?` ${l}`:``}${u?` ${u}`:``}`}function E(e,t){return n(t,`standard`)?e===`grok`||e===`local`?`One budget: this CLI compacts at its own fixed point, and Verse cannot raise it per chat.`:`One budget: this model has no larger window to expand into.`:`This model’s window is unknown, so Verse cannot offer a larger budget for it.`}var D={fits:`code fits`,tight:`code fits, tight`,expansive:`code needs expansive`,split:`code too big — split`},O={fits:`Fits`,tight:`Tight fit`,expansive:`Needs expansive`,split:`Split the work`};function k(e){return e.roots.some(e=>e.truncated)}function A(e,t,a,o){if(typeof e!=`number`||!Number.isFinite(e)||e<0)return null;let s=i(o);if(p(t,a)===`expansive`&&t){let i=n(t,`expansive`);return r(e,{...t,contextWindow:i.contextWindow,autoCompactAt:i.autoCompactAt,expansive:null},s)}return r(e,t,s)}function j(t){let r=`${t.floor?`at least `:``}~${a(t.tokens)} tokens of tracked code`,i=p(t.option,t.mode)===`expansive`,o=n(t.option,`standard`),s=n(t.option,`expansive`),c=o?a(o.autoCompactAt??o.contextWindow):null,l=s?a(s.autoCompactAt??s.contextWindow):null,u=i?l:c,d=i?`Expansive budget`:`budget`;switch(t.verdict){case`fits`:return`All ${r} fits well inside this model's ${d}${u?` (compacts ≈${u})`:``}, with room left for the conversation.`;case`tight`:{let n=!i&&l!==null&&e(t.option)?` Expansive (≈${l}) would hold it with room to spare.`:``;return`${N(r)} fits under the ≈${u??`?`} compaction point${i?` of the Expansive budget`:``}, with little room for the conversation — expect it to compact if the agent reads widely.${n}`}case`expansive`:return`${N(r)} is more than the Standard budget (≈${c??`?`}) holds; only Expansive (≈${l??`?`}) takes it all. Switch to Expansive, or narrow the folders to the part you are changing.`;case`split`:return`${N(r)} is more than any single context on this model holds${l?`, even Expansive (≈${l})`:``}. Split the work: fan it out across several chats, each scoped to one folder or subsystem, or narrow this chat to the part you are changing.`}}function M(e){let t=e?` for ${_[e]}`:``;return`Estimated from the size of tracked text files (bytes ÷ 4), plus an estimated ~${a(i(e))} of fixed prompt${t} that every chat starts with. An agent rarely reads everything, so this is a ceiling, not a forecast.`}function N(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function P(t,n){let r=s(n,t);return{tokens:Math.floor(r.contextTokens),exact:r.exact,window:r.contextWindow,autoCompactAt:r.autoCompactAt,source:r.source,mode:r.mode,hasModes:e(r.option)}}function F(e){return e.cacheReadTokens<=0&&e.cacheCreationTokens<=0?null:t(e)}function I(e){return e===null||!Number.isFinite(e)?`—`:o(e)}function L(e){let t=new Map,n=0,r=null,i=(e,n,r)=>{if(!Number.isFinite(n)||n<0)return;let i=t.get(e)??{exact:null,bound:null};r?i.exact=Math.max(i.exact??0,n):i.bound=Math.max(i.bound??0,n),t.set(e,i)};for(let t of e)switch(t.type){case`usage`:r=t.usage,i(t.turnId,t.usage.contextTokens,t.usage.contextTokensExact!==!1);break;case`context`:t.turnId!==null&&i(t.turnId,t.contextTokens,t.exact);break;case`compaction`:n+=1}let a=0,o=null,s=!0,c=0;for(let e of t.values()){let t=e.exact??e.bound;t!==null&&(e.exact===null&&(s=!1),c+=1,a+=t,o=o===null?t:Math.max(o,t))}return{turns:c,average:c===0?null:Math.round(a/c),peak:o,exact:s,compactions:n,lastTurnCacheHit:r===null?null:F(r)}}function R(e,t,n,r){if(e.status===`running`||r===null)return null;let a=Date.parse(r);if(!Number.isFinite(a))return null;let o=n-a;return o<36e5||t<i(e.engine)?null:{idleMs:o,tokens:t,local:e.engine===`local`}}function z(e,t){return e.window!==null&&t.window!==null?e.tokens/e.window>t.tokens/t.window:e.window!==null||t.window===null&&e.tokens>t.tokens}function B(e,t){let n=new Map;for(let t of e){let e=n.get(t.seatId)??[];e.push(t),n.set(t.seatId,e)}let r=[];for(let[e,i]of n){let n=t.find(t=>t.id===e)??null,a=0,o=0,s=0,c=0,l=0,u=0,d=0,f=null;for(let e of i){a+=e.usage.inputTokens,o+=e.usage.cacheReadTokens,s+=e.usage.cacheCreationTokens,c+=e.usage.outputTokens,l+=e.turnCount,u+=e.compactionCount??0;let n=P(e,t);if(n.mode===`expansive`&&(d+=1),n.tokens<=0)continue;let r={sessionId:e.id,title:e.title,tokens:n.tokens,window:n.window,exact:n.exact};(f===null||z(r,f))&&(f=r)}r.push({seatId:e,label:n?.label??e,engine:n?.engine??i[0].engine,retired:n===null,sessions:i.length,turns:l,promptTokens:a+o+s,outputTokens:c,cacheHitRatio:F({inputTokens:a,cacheReadTokens:o,cacheCreationTokens:s}),compactions:u,expansiveSessions:d,fullest:f})}return r.sort((e,t)=>t.promptTokens-e.promptTokens||e.label.localeCompare(t.label))}export{f as C,B as S,L as T,E as _,m as a,v as b,j as c,I as d,R as f,h as g,A as h,T as i,k as l,S as m,O as n,C as o,x as p,D as r,w as s,g as t,M as u,F as v,P as w,y as x,p as y};
|
|
2
|
-
//# sourceMappingURL=context-model-MT17V86_.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{D as e,M as t,O as n,P as r,at as i,ot as a,s as o,u as s}from"./global-Di2PUgj4.js";import{C as c,d as l,n as u,r as d}from"./verse-queries-DvIJcn6Z.js";import{f}from"./verse-store-DjBWj04q.js";import{t as p}from"./format-B8DAVcn2.js";var m=`verse-preferences`,h=`verse-memory:`;async function g(e){try{let t=await e.json();if(typeof t.error==`string`&&t.error)return t.error;if(typeof t.note==`string`&&t.note)return t.note}catch{}return null}async function _(e,r){let i=await fetch(e,{method:`GET`,credentials:`same-origin`,headers:{"x-ashlr-read-client":n()},signal:r});if(i.status===401)throw t(),new o(`Read session expired.`,401,e);if(!i.ok){let t=await g(i);throw new o(`GET ${e} failed (HTTP ${i.status})${t?`: ${p(t)}`:``}.`,i.status,e,t)}return await i.json()}async function v(t,n){let i=e();if(!i)throw new d;let a=await s(t,n,i);return r(),a}function y(e,t){let n=t.toString();return n?`${e}?${n}`:e}async function b(e,t){let n={mode:t},r=await v(c(e,`/context-mode`),n);return f(e,r),i(u),r}async function x(e,t={}){let n={};t.includeLastAssistant===!0&&(n.includeLastAssistant=!0);let r=typeof t.focus==`string`?t.focus.trim().slice(0,500):``;return r&&(n.focus=r),v(c(e,`/handoff-preview`),n)}async function S(e){let{source:t}=e,n={projectPath:t.projectPath,seatId:e.seatId,handoffFromSessionId:t.id},r=(t.extraRoots??[]).filter(e=>typeof e==`string`&&e.length>0&&e!==t.projectPath);r.length>0&&(n.extraRoots=r),e.model&&(n.model=e.model),e.contextMode&&(n.contextMode=e.contextMode);let i=e.title?.trim();i&&(n.title=i);let a=await v(`/api/verse/sessions`,n);return l(),a}function C(e){return _(`/api/verse/preferences`,e)}var w={key:m,fetch:e=>C(e)};async function T(e){let t=await v(`/api/verse/preferences`,e);return i(m),a(h),t}function E(e){let t=new URLSearchParams,n=e.workspaceId?.trim()??``,r=e.projectPath?.trim()??``,i=(e.extraRoots??[]).map(e=>e.trim()).filter(e=>e.length>0);if(n){if(r||i.length>0)throw Error(`Estimate a workspace or a folder set, not both.`);t.set(`workspaceId`,n)}else if(r){t.set(`projectPath`,r);for(let e of i)t.append(`extraRoots`,e)}else throw Error(`Pick a project or a workspace to estimate.`);return y(`/api/verse/context-fit`,t)}function D(e,t){return _(E(e),t)}function O(e,t,n){let r=new URLSearchParams({q:e});return typeof t==`number`&&Number.isFinite(t)&&r.set(`limit`,String(Math.max(1,Math.min(50,Math.floor(t))))),_(y(`/api/verse/search`,r),n)}function k(e){return`${h}${e}`}function A(e,t){return _(y(`/api/verse/memory`,new URLSearchParams({projectPath:e})),t)}function j(e){return{key:k(e),fetch:t=>A(e,t)}}async function M(e,t){let n=await v(`/api/verse/memory`,{projectPath:e,content:t});return i(k(e)),n}export{A as a,T as c,M as d,C as i,w as l,D as n,O as o,x as r,b as s,S as t,j as u};
|
|
2
|
-
//# sourceMappingURL=context-queries-xVKIeynP.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{D as e,P as t,at as n,l as r,u as i}from"./global-Di2PUgj4.js";import{i as a,n as o}from"./mutations-Dpsql5t7.js";var s={dailyBudgetUsd:{min:0,max:1e3},perTickItems:{min:1,max:50},parallel:{min:1,max:16},intervalMs:{min:3e4,max:864e5},maxConcurrent:{min:1,max:32},concurrency:{min:1,max:32},subscriptionMaxPercent:{min:1,max:100},foundryLimitMax:{min:0,max:1e6}},c=`verse-control`,l=`verse-caps`,u=`verse-scope`,d=`verse-safety`,f=`verse-audit:`,p=500,m={key:c,fetch:e=>r(`/api/verse/control`,e)},h={key:l,fetch:e=>r(`/api/verse/caps`,e)},g={key:d,fetch:e=>r(`/api/verse/safety`,e)};function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var v={key:u,fetch:e=>r(`/api/verse/scope`,e)};function y(e={}){let t=Math.min(e.limit??200,p),n=new URLSearchParams;return n.set(`limit`,String(t)),e.action&&n.set(`action`,e.action),e.result&&n.set(`result`,e.result),{key:`${f}${t}:${e.action??``}:${e.result??``}`,fetch:e=>r(`/api/verse/audit?${n.toString()}`,e)}}var b={key:`goals`,fetch:e=>r(`/api/goals`,e)};function x(e){return e==null?{items:[],absent:!0}:Array.isArray(e)?{items:e,absent:!1}:_(e)&&Array.isArray(e.items)?{items:e.items,absent:!1}:{items:[],absent:!0}}var S={key:`backlog`,fetch:e=>r(`/api/backlog`,e).then(x)},C=class extends Error{constructor(){super(`Unlock actions with the mutation token before changing the loop.`),this.name=`VerseControlLockedError`}};async function w(n,r){let a=e();if(!a)throw new C;let o=await i(n,r,a);return t(),o}function T(){n(c)}async function E(e){let t=await w(`/api/verse/caps`,e);return n(l),T(),t}async function D(e){await w(`/api/verse/scope`,e),n(u),T()}async function O(e){let t=await w(`/api/verse/daemon`,{action:e});return T(),n(`daemon`),t}async function k(){await o(),T()}async function A(){await a(),T()}export{O as a,y as c,m as d,b as f,s as h,A as i,S as l,v as m,C as n,E as o,g as p,k as r,D as s,c as t,h as u};
|
|
2
|
-
//# sourceMappingURL=control-queries-DOZR-D8G.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{_ as e}from"./dock-store-BA1cHOYA.js";import{o as t}from"./slots-Ds9ZIqUL.js";var n=Object.fromEntries(e.filter(e=>e.slot!==null).map(e=>[e.id,e.slot]));function r(e){let r=n[e];return r===void 0||t(r)}var i=Object.fromEntries(e.map(e=>[e.id,e.label]));export{r as n,i as t};
|
|
2
|
-
//# sourceMappingURL=dock-panes-UKS-mXhr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dock-panes-UKS-mXhr.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/dock/dock-panes.ts"],"sourcesContent":["/**\n * routes/verse/dock/dock-panes.ts — which dock panes exist in this build,\n * and their names (unit C2).\n *\n * Split out of Dock.tsx so the header's pane toggles can ask without pulling\n * the dock itself into the chat's first-paint chunk: the dock is lazy (it\n * starts closed), the toggles are not.\n */\nimport { DOCK_PANES, type DockPaneId } from '../shell/dock-catalog.js';\nimport { isSlotAvailable, type SlotId } from '../shell/slots.js';\n\nconst SLOT_FOR: Readonly<Partial<Record<DockPaneId, SlotId>>> = Object.fromEntries(\n DOCK_PANES.filter((p) => p.slot !== null).map((p) => [p.id, p.slot]),\n);\n\n/** A pane exists in this build: C2's always, a slot pane once its unit's file landed. */\nexport function isPaneAvailable(pane: DockPaneId): boolean {\n const slot = SLOT_FOR[pane];\n return slot === undefined || isSlotAvailable(slot);\n}\n\nexport const DOCK_PANE_LABEL: Readonly<Record<DockPaneId, string>> = Object.fromEntries(\n DOCK_PANES.map((p) => [p.id, p.label]),\n) as Record<DockPaneId, string>;\n"],"mappings":"qFAWA,IAAM,EAA0D,OAAO,YACrE,EAAW,OAAQ,GAAM,EAAE,OAAS,IAAI,CAAC,CAAC,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,IAAI,CAAC,CACrE,EAGA,SAAgB,EAAgB,EAA2B,CACzD,IAAM,EAAO,EAAS,GACtB,OAAO,IAAS,IAAA,IAAa,EAAgB,CAAI,CACnD,CAEA,IAAa,EAAwD,OAAO,YAC1E,EAAW,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,KAAK,CAAC,CACvC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,s as t}from"./index-oAAq8XJa.js";import{D as n,P as r,at as i,h as a,l as o,s,u as c}from"./global-Di2PUgj4.js";import{n as l,t as u}from"./control-queries-DOZR-D8G.js";import{d,l as f,u as p}from"./fleet-model-CNe8Wh-s.js";var m=t(e(),1),h=`verse-runtime`,g=`verse-fleet`,_=`verse-local-only`;function v(e,t){return t instanceof s?t.status===404?`This server does not expose ${e}, so this panel has no source. It is a missing route, not an idle machine.`:`${e} answered HTTP ${t.status}.`:`${e} could not be reached.`}function y(e,t){return async n=>{try{let r=t(await o(e,n));return r===null?{value:null,available:!0,reason:`${e} answered in a shape this client does not recognise, so nothing is shown rather than guessed.`}:{value:r,available:!0,reason:null}}catch(t){if(t instanceof s&&t.status===401||t instanceof DOMException&&t.name===`AbortError`)throw t;return{value:null,available:!1,reason:v(e,t)}}}}var b={key:h,fetch:y(`/api/verse/runtime`,d)},x={key:g,fetch:y(`/api/verse/fleet`,f)},S={key:_,fetch:y(`/api/verse/local-only`,p)};async function C(e,t){let i=n();if(!i)throw new l;let a=await c(e,t,i);return r(),a}async function w(e){let t=await C(`/api/verse/runtime`,{action:e});return i(h),i(g),i(u),t}async function T(e){let t=await C(`/api/verse/local-only`,{enabled:e});return i(_),i(u),t}var E=4e3;function D(e=E){let t=a(b),n=a(x);(0,m.useEffect)(()=>{let r=null,i=()=>{t(),n()},a=()=>{r===null&&(r=setInterval(i,e))},o=()=>{r!==null&&(clearInterval(r),r=null)},s=()=>{if(document.visibilityState===`hidden`){o();return}i(),a()};return document.visibilityState!==`hidden`&&a(),document.addEventListener(`visibilitychange`,s),()=>{o(),document.removeEventListener(`visibilitychange`,s)}},[e,t,n])}export{b as a,w as i,x as n,T as o,S as r,D as s,g as t};
|
|
2
|
-
//# sourceMappingURL=fleet-queries-BSdRlUwJ.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{D as e,M as t,O as n,P as r,s as i,u as a}from"./global-Di2PUgj4.js";import{r as o}from"./verse-queries-DvIJcn6Z.js";var s=`/api/verse/git`,c=new Set([`VERSE_GIT_NOT_A_REPO`,`VERSE_GIT_REFUSED`]);async function l(e,r){let a=await fetch(e,{method:`GET`,credentials:`same-origin`,headers:{"x-ashlr-read-client":n()},signal:r});if(a.status===401)throw t(),new i(`Read session expired.`,401,e);if(!a.ok){let t=null,n=null;try{let e=await a.json();t=typeof e.error==`string`&&e.error?e.error:null,n=typeof e.code==`string`&&e.code?e.code:null}catch{}throw new i(`GET ${e} failed (HTTP ${a.status}).`,a.status,e,t,n)}return await a.json()}function u(e,t){return l(`${s}/status?root=${encodeURIComponent(e)}`,t)}function d(e,t,n,r){let i=new URLSearchParams({root:e,scope:t});return n!==null&&i.set(`file`,n),l(`${s}/diff?${i.toString()}`,r)}async function f(t,n){let i=e();if(!i)throw new o;let s=await a(t,n,i);return r(),s}function p(e){return f(`${s}/commit`,e)}function m(e){return f(`${s}/push`,{root:e})}function h(e){return f(`${s}/pr`,e)}function g(e){return f(`${s}/pr/merge`,e)}function _(e,t){return f(`${s}/worktree`,{root:e,name:t})}function v(e){return e instanceof i&&e.code!==null&&c.has(e.code)}var y=new Intl.NumberFormat(`en-US`);function b(e){return y.format(Math.max(0,Math.round(e)))}function x(e,t){return`+${b(e)} −${b(t)}`}function S(e,t,n){return`${b(e)} ${e===1?`file`:`files`} changed, ${b(t)} added, ${b(n)} removed`}function C(e){return!!(e.dirty>0||e.ahead>0||e.diffstat.files>0||e.pr&&(e.pr.state===`open`||e.pr.state===`draft`))}function w(e){let t=new Set,n=[];for(let r of e){let e=r.gitRoot??r.root;t.has(e)||(t.add(e),n.push(r))}return n}function T(e){let t=e.branch??`HEAD`,n=e.base??`the default branch`;switch(e.suggested){case`commit`:return{action:`commit`,label:`Commit`,disclosure:`Commit ${b(e.dirty)} changed ${e.dirty===1?`file`:`files`} on ${t}.`};case`push`:return{action:`push`,label:`Push`,disclosure:e.upstream?`Push ${b(e.ahead)} ${e.ahead===1?`commit`:`commits`} on ${t} to ${e.upstream}.`:`Publish ${t} to origin.`};case`create-pr`:return{action:`create-pr`,label:`Create PR`,disclosure:`Open a pull request from ${t} into ${n}${e.upstream===null||e.ahead>0?`, pushing it first`:``}.`};case`merge`:return e.pr?{action:`merge`,label:`Merge`,disclosure:`Squash-merge #${e.pr.number} into ${e.pr.baseRef||n}. Checks passed.`}:null;case`view-pr`:return e.pr?{action:`view-pr`,label:`View PR`,disclosure:`Open #${e.pr.number} on GitHub.`}:null;default:return null}}function E(e){let t=e.branch===null,n=e.branch!==null&&e.base!==null&&e.branch===e.base,r=(e.conflicts??0)>0,i=e.pr!==null&&(e.pr.state===`open`||e.pr.state===`draft`);return[{id:`draft-pr`,label:`Create draft PR…`,disabledReason:t?`HEAD is detached`:n?`You are on ${e.base}`:i?`#${e.pr.number} is already open`:e.prLookup===`unavailable`?"GitHub is not reachable (is `gh` signed in?)":null},{id:`commit`,label:`Commit…`,disabledReason:t?`HEAD is detached`:r?`Resolve the conflicts first`:e.dirty===0?`Nothing to commit`:null},{id:`push`,label:e.upstream?`Push`:`Publish branch`,disabledReason:t?`HEAD is detached`:e.upstream!==null&&e.ahead===0?`Already pushed`:e.headSha===null?`No commits yet`:null},{id:`open-github`,label:`Open on GitHub`,disabledReason:e.pr?null:`No pull request for this branch`},{id:`copy-branch`,label:`Copy branch name`,disabledReason:t?`HEAD is detached`:null},{id:`review`,label:`Review changes`,disabledReason:e.diffstat.files===0&&e.dirty===0?`No changes`:null}]}function D(e,t){let n=e.state===`open`?`Open`:e.state===`draft`?`Draft`:e.state===`merged`?`Merged`:`Closed`,r=null,i=`neutral`;if(e.state===`merged`)i=`merged`;else if(e.state===`closed`)i=`neutral`;else{switch(e.checks){case`passing`:r=t&&t.total>0?`${t.passed}/${t.total} checks passed`:`checks passed`,i=e.mergeable===!1?`danger`:`success`;break;case`failing`:r=t?`${t.failed} of ${t.total} checks failing`:`checks failing`,i=`danger`;break;case`pending`:r=t?`${t.pending} of ${t.total} checks running`:`checks running`,i=`running`;break;case`none`:r=`no checks`;break;default:r=`checks —`}e.mergeable===!1&&(r=r?`${r}, conflicts`:`conflicts`)}let a=[`Pull request #${e.number}`,e.title,n,r].filter(Boolean).join(`, `);return{number:`#${e.number}`,title:e.title,state:n,checks:r,tone:i,label:a}}function O(e){let t=e.headSubject?.trim();if(t)return t;let n=((e.branch??``).split(`/`).pop()??``).replace(/[-_]+/g,` `).trim();return n?n[0].toUpperCase()+n.slice(1):``}function k(e){let t=e.pr;return t?{number:t.number,title:t.title,headSha:t.headSha,headRef:t.headRef||e.branch||``,baseRef:t.baseRef||e.base||``,checks:t.checks,mergeable:t.mergeable,counts:e.prCheckCounts??null}:null}function A(e){let t=e.headSha?e.headSha.slice(0,7):`—`,n=e.counts,r;switch(e.checks){case`passing`:r=n&&n.total>0?`${n.passed}/${n.total} checks passed`:`checks passed`;break;case`failing`:r=n&&n.total>0?`${n.failed} of ${n.total} checks failing`:`checks failing`;break;case`pending`:r=n&&n.total>0?`${n.pending} of ${n.total} checks still running`:`checks still running`;break;case`none`:r=`no checks reported`;break;default:r=`checks not known`}let i=e.mergeable===!0?`no conflicts`:e.mergeable===!1?`has conflicts`:`GitHub has not finished checking for conflicts`,a=`${r}, ${i}.`;return{sha:t,detail:a,text:`Head ${t}, ${a}`,verified:e.checks===`passing`&&e.mergeable===!0&&e.headSha!==null}}function j(e,t){let n=t?.pr??null;return!n||n.number!==e.number||n.state!==`open`?`#${e.number} is no longer an open, ready pull request — close this and check the branch bar.`:n.headSha===e.headSha?n.checks===`passing`?n.mergeable===!0?null:`GitHub no longer reports this head as mergeable — close and reopen to review.`:`Checks on this head are no longer passing — close and reopen once they are.`:`The PR changed since you opened this — new commits landed. Close and reopen to review the new head.`}function M(e){let t=new Map,n=[...e].sort((e,t)=>e.path<t.path?-1:+(e.path>t.path));for(let e of n){let n=e.path.lastIndexOf(`/`),r=n===-1?``:e.path.slice(0,n),i=n===-1?e.path:e.path.slice(n+1),a=t.get(r);a||(a={dir:r,files:[]},t.set(r,a)),a.files.push({...e,name:i})}return[...t.values()]}var N={M:`modified`,A:`added`,D:`deleted`,R:`renamed`,U:`conflicted`};function P(e){return[...e].sort((e,t)=>e.path===t.path?e.line-t.line:e.path<t.path?-1:1).map(e=>{let[t,...n]=e.note.trim().split(`
|
|
2
|
-
`);return[`${`${e.path}:${e.line}${e.side===`old`?` (removed line)`:``}`}: ${t??``}`,...n.map(e=>` ${e}`)].join(`
|
|
3
|
-
`)}).join(`
|
|
4
|
-
`)}function F(e){if(e&&typeof e==`object`){let t=e;if(t.name===`DispatchDisabledError`)return`This server is read-only (started without dispatch), so git actions are off.`;if(t.name===`VerseMutationLockedError`)return`Unlock actions with the mutation token first.`;if(t.status===401)return"The mutation token was rejected. Unlock again with the token `ashlr verse` printed.";if(t.detail)return t.detail;if(t.status===404)return"This server has no git routes yet. Update Ashlr and restart `ashlr verse`.";if(t.status===409)return`Git is busy in this repository. Try again in a moment.`}return`The git action failed. The terminal will show why.`}export{h as C,g as S,p as _,F as a,u as b,b as c,E as d,j as f,T as g,D as h,O as i,M as l,k as m,P as n,S as o,A as p,w as r,x as s,N as t,C as u,_ as v,m as w,v as x,d as y};
|
|
5
|
-
//# sourceMappingURL=git-model-CivuBY_D.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,r as n,s as r}from"./index-oAAq8XJa.js";var i=r(e(),1),a={data:void 0,error:void 0,status:`idle`,updatedAt:null},o=new Map,s=0,c=[],l=0,u=0;function d(){--s;let e=c.shift();e&&e()}function f(e){let t=()=>{let t=u;s+=1,s>l&&(l=s);let n=()=>{t===u&&d()},r;try{r=e()}catch(e){return n(),Promise.reject(e instanceof Error?e:Error(String(e)))}return r.then(e=>(n(),e),e=>{throw n(),e})};return s<4?t():new Promise((e,n)=>{c.push(()=>{t().then(e,n)})})}function ee(){u+=1,s=0,l=0;for(let e of c.splice(0))e()}function te(){return{active:s,queued:c.length,peak:l}}function p(e){let t=o.get(e);return t||(t={snapshot:a,inFlight:null,fetcher:null,subscribers:new Set,issued:0,issuedAt:0,applied:0},o.set(e,t)),t}function m(e,t){e.snapshot={...e.snapshot,...t}}function h(e){let t=o.get(e);if(t)for(let e of t.subscribers)e()}function g(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t||e===null||t===null||typeof e!=`object`||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((e,n)=>g(e,t[n]));let n=e,r=t,i=Object.keys(n);return i.length===Object.keys(r).length&&i.every(e=>Object.prototype.hasOwnProperty.call(r,e)&&g(n[e],r[e]))}function ne(e,t){let n=p(e);return n.subscribers.add(t),()=>{n.subscribers.delete(t)}}function re(e){return p(e).snapshot}function ie(e,t){return e.snapshot.updatedAt===null||e.snapshot.status===`error`?!1:Date.now()-e.snapshot.updatedAt<t}function ae(e,t){return e.inFlight===null?!1:t.joinWindowMs===void 0||Date.now()-e.issuedAt<t.joinWindowMs}function _(e,t,n){let r=p(e);if(r.fetcher=t,!n.force){if(ae(r,n))return r.inFlight;if(n.maxAgeMs!==void 0&&ie(r,n.maxAgeMs))return Promise.resolve()}let i=r.issued+=1;r.issuedAt=Date.now(),m(r,{status:r.snapshot.data===void 0?`loading`:`refreshing`}),h(e);let a=f(t).then(e=>{if(i<r.applied)return;r.applied=i;let t=r.snapshot.data!==void 0&&g(r.snapshot.data,e);m(r,{data:t?r.snapshot.data:e,error:void 0,status:`success`,updatedAt:Date.now()})}).catch(e=>{i<r.applied||(r.applied=i,m(r,{error:e instanceof Error?e:Error(String(e)),status:`error`}))}).finally(()=>{r.issued===i&&(r.inFlight=null),h(e)});return r.inFlight=a,a}function oe(e,t){return _(e,t,{})}function se(e,t,n){return _(e,t,{maxAgeMs:n})}function ce(e,t,n=!1){return _(e,t,n?{force:!0}:{joinWindowMs:250})}function v(e){let t=o.get(e);t&&t.fetcher&&oe(e,t.fetcher)}function le(e){for(let t of o.keys())t.startsWith(e)&&v(t)}function ue(e){for(let[t,n]of o)n.subscribers.size>0&&t.startsWith(e)&&v(t)}function de(e,t){t.snapshot=a,t.fetcher=null,t.inFlight=null,t.issued+=1,t.applied=t.issued,h(e)}function fe(){ee();for(let[e,t]of[...o]){if(t.subscribers.size===0){o.delete(e);continue}de(e,t)}}var pe=4e5,me=2e4,he=13e3,ge=.9,_e=36e5,ve={claude:25e3,codex:15e3,grok:2e4,local:15e3},ye=25e3;function be(e){return e?ve[e]??25e3:ye}ve.local+8e3+me+he;function y(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):null}function xe(e,t,n=null){let r=Math.min(e,y(n)??e),i=Math.min(y(t)??2e4,me);return Math.max(0,r-i-he)}function Se(e){return Math.floor(e*ge)}var Ce={"claude-opus-5.5":`claude-opus-5-5`};function we(e){return Ce[e]??e}function b(e,t){if(!e)return null;if(t===`expansive`)return e.expansive??null;let n=y(e.contextWindow);return n===null?null:{contextWindow:n,autoCompactAt:y(e.autoCompactAt??null)}}function Te(e){let t=b(e,`standard`),n=b(e,`expansive`);return n?!t||(n.autoCompactAt??n.contextWindow)>(t.autoCompactAt??t.contextWindow):!1}function Ee(e,t){if(t===`expansive`)return null;let n=y(e?.contextWindow??null);return n!==null&&n>4e5&&Te(e)?pe:null}function De(e){let t=y(e.runtimeWindow);if(t===null)return e.budget?.autoCompactAt??null;if(e.budget&&e.budget.contextWindow===t)return e.budget.autoCompactAt;switch(e.engine){case`claude`:case`local`:return xe(t,e.maxOutputTokens??null,e.autocompactWindow??null);case`codex`:return Se(Math.round(t*100/95));default:{let n=e.budget;return!n||n.autoCompactAt===null||n.contextWindow<=0?null:Math.floor(t*(n.autoCompactAt/n.contextWindow))}}}var Oe=.8,ke=.95;function Ae(e){let t=Math.max(0,Math.floor(e.contextTokens||0)),n=y(e.contextWindow),r=y(e.autoCompactAt??null),i=n===null?null:t/n,a=r===null?null:t/r,o=a??i,s=e.contextTokensExact!==!1,c=`unknown`;return!s&&o!==null&&o>=1?c=`unknown`:n!==null&&t>n?c=`over`:o!==null&&(c=o>=.95?`danger`:o>=.8?`warn`:`ok`),{tokens:t,window:n,autoCompactAt:r,ofWindow:i,ofCompaction:a,untilCompaction:r===null?null:Math.max(0,r-t),tone:c,exact:s}}function je(e){let t=e.inputTokens+e.cacheReadTokens+e.cacheCreationTokens;return t>0?e.cacheReadTokens/t:null}function Me(e){return Math.ceil(Math.max(0,e)/4)}function Ne(e,t,n=ye){let r=b(t,`standard`);if(!r)return null;let i=Math.max(0,e)+Math.max(0,n),a=r.autoCompactAt??r.contextWindow;if(i<=a*.6)return`fits`;if(i<=a)return`tight`;let o=b(t,`expansive`);return o&&i<=(o.autoCompactAt??o.contextWindow)?`expansive`:`split`}function x(e){return e>=1e6?`${(e/1e6).toFixed(e%1e6==0?0:1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:String(e)}function Pe(e){let t=Ae(e.usage),n=[],r=`none`,i=e=>{(e===`urge`||e===`suggest`&&r===`none`)&&(r=e)};t.exact&&(t.tone===`over`?(i(`urge`),n.push(`Context (${x(t.tokens)}) is past the ${x(t.window??0)} window.`)):t.ofCompaction!==null&&t.ofCompaction>=.8&&(i(`suggest`),n.push(`About ${x(t.untilCompaction??0)} tokens left before the CLI auto-compacts.`)));let a=e.compactionCount??0;if(a>=2&&(i(`suggest`),n.push(`Compacted ${a} times — early turns now survive only as summaries.`)),e.lastActivityAt){let r=e.now-Date.parse(e.lastActivityAt);t.exact&&Number.isFinite(r)&&r>=36e5&&t.tokens>=1e5&&(i(`suggest`),n.push(`Idle over an hour: the prompt cache has likely expired, so the next turn re-reads ~${x(t.tokens)} tokens at full cost.`))}return{level:r,reasons:n}}function Fe(e){if((e.session.contextMode??`standard`)!==`standard`||!Te(e.option))return{suggest:!1,reason:null};let t=e.session.compactionCount??0;return t>=2?{suggest:!0,reason:`This session has compacted ${t} times; expansive mode keeps more of it in view.`}:typeof e.workingSetTokens==`number`&&Ne(e.workingSetTokens,e.option)===`expansive`?{suggest:!0,reason:`The reachable code (~${x(e.workingSetTokens)} tokens) only fits the expansive budget.`}:{suggest:!1,reason:null}}function Ie(e){return e===`claude`||e===`codex`}var S=`ashlr.verse.drafts.v1`,C=`ashlr.verse.sent.v1`,Le=40,w=65536;function T(e,t){let n={};try{let r=localStorage.getItem(e),i=r?JSON.parse(r):null;if(i&&typeof i==`object`&&!Array.isArray(i))for(let[e,r]of Object.entries(i)){let i=t(r);i!==null&&(n[e]=i)}}catch{}return n}function Re(e,t){let n=Object.keys(t);for(let e of n.slice(0,Math.max(0,n.length-Le)))delete t[e];try{return localStorage.setItem(e,JSON.stringify(t)),!0}catch{return!1}}var ze=e=>typeof e==`string`&&e.length>0?e.slice(0,w):null,Be=e=>{if(!Array.isArray(e))return null;let t=e.filter(e=>typeof e==`string`&&e.length>0).slice(-25).map(e=>e.slice(0,w));return t.length>0?t:null},E=new Map;function Ve(e){if(!e)return``;let t=E.get(e);return t===void 0?T(S,ze)[e]??``:t}function He(e,t){if(!e)return;let n=t.trim().length>0?t.slice(0,w):``,r=T(S,ze);if(delete r[e],n&&(r[e]=n),E.delete(e),!Re(S,r)){E.set(e,n);for(let e of[...E.keys()].slice(0,Math.max(0,E.size-Le)))E.delete(e)}}function Ue(e){return e?T(C,Be)[e]??[]:[]}function We(e,t){if(!e||t.trim().length===0)return;let n=T(C,Be),r=n[e]??[];delete n[e],n[e]=(r[r.length-1]===t?r:[...r,t.slice(0,w)]).slice(-25),Re(C,n)}function Ge(e){if(e){E.delete(e);for(let[t,n]of[[S,ze],[C,Be]]){let r=T(t,n);e in r&&(delete r[e],Re(t,r))}}}function Ke(){E.clear();for(let e of[S,C])try{localStorage.removeItem(e)}catch{}}function qe(e){let t=e.trim();return t.length===0?0:Math.max(1,Math.ceil(t.length/4))}function Je(e,t){let n=qe(e);if(n===0)return null;let r=typeof t.contextWindow==`number`&&t.contextWindow>0?t.contextWindow:null;if(r===null)return null;let i=Ae({contextTokens:(typeof t.contextTokens==`number`&&Number.isFinite(t.contextTokens)?Math.max(0,t.contextTokens):0)+n,contextWindow:r,autoCompactAt:t.autoCompactAt??null,contextTokensExact:t.exact});return i.tone===`ok`||i.tone===`unknown`?null:{draftTokens:n,projectedTokens:i.tokens,projectedPercent:Math.min(999,Math.round((i.ofWindow??0)*100)),autoCompactAt:i.autoCompactAt,pastCompaction:i.ofCompaction!==null&&i.ofCompaction>=1,tone:i.tone,exact:i.exact}}var Ye=`ashlr.readClientProof.v1`,Xe=/^[a-f0-9]{64}$/,Ze=12e5;function Qe(){let e=new Uint8Array(32);return crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function $e(){try{let e=sessionStorage.getItem(Ye);if(e&&Xe.test(e))return e}catch{}let e=Qe();try{sessionStorage.setItem(Ye,e)}catch{}return e}var et=$e(),D=null,O=null,tt=!1,k=null,A=null,j=null,M={phase:`checking`,checked:!1,mutationTokenHeldUntil:null},nt=new Set;function rt(){for(let e of nt)e()}function N(e){M={...M,...e},rt()}function P(e){return nt.add(e),()=>nt.delete(e)}function F(){return M}function I(){return et}async function L(e){let t=e.trim();if(!/^[a-f0-9]{64}$/.test(t))throw Error(`That does not look like a read token — expected 64 hex characters.`);let n=await fetch(`/api/session`,{method:`POST`,credentials:`same-origin`,headers:{"x-ashlr-token":t,"x-ashlr-read-client":et}});if(n.status===204){k=t,N({phase:`authenticated`,checked:!0});return}throw n.status===401?Error(`Server rejected that token. Double-check the read token printed by this server at startup.`):Error(`Unexpected response establishing session (HTTP ${n.status}).`)}async function it(){try{await fetch(`/api/session`,{method:`DELETE`,credentials:`same-origin`,headers:{"x-ashlr-read-client":et}})}catch{}k=null,j=null,R()}function R(){B(),fe(),Ke(),N({phase:`unauthenticated`,checked:!0})}function z(){if(M.phase===`authenticated`){if(k){at();return}R()}}function at(){if(A)return A;let e=k;return e?(A=(async()=>{try{return await L(e),ue(``),!0}catch{return k=null,j=null,R(),!1}finally{A=null}})(),A):Promise.resolve(!1)}function ot(e){N({phase:e?`authenticated`:`unauthenticated`,checked:!0})}function st(){let e=window.__ASHLR_TOKENS__;if(e&&typeof e==`object`){try{delete window.__ASHLR_TOKENS__}catch{window.__ASHLR_TOKENS__=void 0}typeof e.readToken==`string`&&(j={readToken:e.readToken,...typeof e.token==`string`?{token:e.token}:{}})}return j?{...j}:null}async function ct(){let e=st();if(!e)return!1;try{await L(e.readToken)}catch{return j=null,!1}return e.token&&/^[a-f0-9]{64}$/.test(e.token.trim())&&ft(e.token.trim(),{host:!0}),!0}function lt(){return D}function ut(){return D!==null}function dt(){O&&clearTimeout(O),O=setTimeout(()=>{tt&&D!==null?pt():B()},Ze)}function ft(e,t={}){D=e,tt=t.host===!0,N({mutationTokenHeldUntil:Date.now()+Ze}),dt()}function pt(){D!==null&&(N({mutationTokenHeldUntil:Date.now()+Ze}),dt())}function B(){D=null,tt=!1,O&&=(clearTimeout(O),null),N({mutationTokenHeldUntil:null})}var mt=[`runs`,`swarms`,`inbox`,`daemon`,`daemon-observation`,`fleet-activity-ping`,`fleet-activity-observation`,`snapshot`,`session-expired`],ht={runs:[`runs`],swarms:[`swarms`],inbox:[`inbox`],daemon:[`daemon`,`control-snapshot`,`verse-control`,`verse-usage-control`,`verse-caps`],"daemon-observation":[`daemon`,`control-snapshot`,`verse-control`,`verse-usage-control`,`verse-caps`],"fleet-activity-ping":[`fleet-activity`,`fleet`],"fleet-activity-observation":[`fleet-activity`,`fleet`],snapshot:[`dashboard-snapshot`,`agent-os-snapshot`],"session-expired":[]},gt=new Map,V=null,H=null,U=0;function _t(){return Math.min(1e3*2**U,15e3)}function vt(){V&&=(V.close(),null),H&&=(clearTimeout(H),null)}function yt(){H||=setTimeout(()=>{H=null,U+=1,bt()},_t())}function bt(){if(n()){vt();return}if(F().phase!==`authenticated`)return;vt();let e=`/api/events?client=${encodeURIComponent(I())}`,t=new EventSource(e,{withCredentials:!0});V=t,t.onopen=()=>{U=0};for(let e of mt)t.addEventListener(e,t=>{let n=t,r;try{r=JSON.parse(n.data)}catch{r=void 0}for(let t of ht[e])v(t);e===`inbox`&&(le(`inbox-list:`),le(`proposal-detail-`)),e===`session-expired`&&z();let i=gt.get(e);if(i)for(let e of i)e(r)});t.onerror=()=>{t.close(),V===t&&(V=null),F().phase===`authenticated`&&yt()}}P(()=>{F().phase===`authenticated`?(U=0,bt()):vt()});var xt=`ashlr.theme.v1`;function St(e){let t=document.documentElement;e===`system`?t.removeAttribute(`data-theme`):t.setAttribute(`data-theme`,e)}function Ct(){try{let e=localStorage.getItem(xt);if(e===`light`||e===`dark`||e===`system`)return e}catch{}return`system`}var W=Ct();St(W);var wt=new Set;function Tt(){for(let e of wt)e()}function Et(e){return wt.add(e),()=>wt.delete(e)}function G(){return W}function K(e){W=e,St(W);try{localStorage.setItem(xt,W)}catch{}Tt()}function Dt(){K(W===`system`?`light`:W===`light`?`dark`:`system`)}var Ot=`ashlr.verse.appearance.v1`,kt=30,At=78,q={h:245,s:72,l:58},jt=[{id:`indigo`,label:`Indigo`,h:245,s:72,l:58},{id:`blue`,label:`Blue`,h:212,s:80,l:50},{id:`cyan`,label:`Cyan`,h:190,s:80,l:40},{id:`teal`,label:`Teal`,h:168,s:70,l:38},{id:`green`,label:`Green`,h:145,s:60,l:38},{id:`amber`,label:`Amber`,h:38,s:80,l:42},{id:`rose`,label:`Rose`,h:348,s:72,l:50},{id:`violet`,label:`Violet`,h:278,s:66,l:55}];function Mt(){try{return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}catch{return!1}}function J(){return{theme:`system`,accentH:q.h,accentS:q.s,accentL:q.l,density:`comfortable`,uiScale:`default`,displayFont:`grotesk`,radius:`default`,motion:`system`,reduceMotion:Mt()}}function Nt(e){return e===`system`||e===`reduce`||e===`full`}function Pt(e){return e===`reduce`||e!==`full`&&Mt()}var Ft=(e,t,n)=>Math.min(n,Math.max(t,e));function It(e){return e===`comfortable`||e===`compact`}function Lt(e){return e==="default"||e===`large`||e===`xlarge`}function Rt(e){return e===`grotesk`||e===`ui`||e===`mono`}function zt(e){return e===`sharp`||e==="default"||e===`soft`}function Bt(e,t){let n={...e,...t},r=t.reduceMotion,i=Nt(t.motion)?t.motion:typeof r==`boolean`?r?`reduce`:`full`:Nt(e.motion)?e.motion:`system`;return{theme:n.theme===`light`||n.theme===`dark`?n.theme:`system`,accentH:Number.isFinite(n.accentH)?(Math.round(n.accentH)%360+360)%360:q.h,accentS:Number.isFinite(n.accentS)?Ft(Math.round(n.accentS),0,100):q.s,accentL:Number.isFinite(n.accentL)?Ft(Math.round(n.accentL),kt,At):q.l,density:It(n.density)?n.density:`comfortable`,uiScale:Lt(n.uiScale)?n.uiScale:`default`,displayFont:Rt(n.displayFont)?n.displayFont:`grotesk`,radius:zt(n.radius)?n.radius:`default`,motion:i,reduceMotion:Pt(i)}}function Vt(){let e=J(),t={};try{let e=localStorage.getItem(Ot);if(e){let n=JSON.parse(e);n&&typeof n==`object`&&(t=n)}}catch{}let{reduceMotion:n,...r}=t;return Bt(e,{...r,theme:G()})}function Ht(e){try{let{theme:t,reduceMotion:n,...r}=e;localStorage.setItem(Ot,JSON.stringify(r))}catch{}}var Ut={grotesk:null,ui:`var(--font-ui)`,mono:`var(--font-mono)`};function Wt(e){if(typeof document>`u`)return;let t=document.documentElement;t.style.setProperty(`--accent-h`,String(e.accentH)),t.style.setProperty(`--accent-s`,`${e.accentS}%`),t.style.setProperty(`--accent-l`,`${e.accentL}%`);let n=Ut[e.displayFont];n===null?t.style.removeProperty(`--font-display`):t.style.setProperty(`--font-display`,n),t.setAttribute(`data-density`,e.density),t.setAttribute(`data-ui-scale`,e.uiScale),t.setAttribute(`data-radius`,e.radius),e.motion===`system`?t.removeAttribute(`data-motion`):t.setAttribute(`data-motion`,e.motion)}var Y=Vt();Wt(Y);var Gt=new Set;function Kt(){for(let e of Gt)e()}Et(()=>{Y.theme!==G()&&(Y={...Y,theme:G()},Kt())});function qt(e){return Gt.add(e),()=>Gt.delete(e)}function Jt(){return Y}function Yt(e){let t=Bt(Y,e),n=t.theme!==Y.theme;Y=t,Wt(Y),Ht(Y),n&&K(Y.theme),Kt()}function Xt(){try{localStorage.removeItem(Ot)}catch{}Y=J(),Wt(Y),K(`system`),Kt()}function Zt(e=Y){let t=J();return e.theme===t.theme&&e.accentH===t.accentH&&e.accentS===t.accentS&&e.accentL===t.accentL&&e.density===t.density&&e.uiScale===t.uiScale&&e.displayFont===t.displayFont&&e.radius===t.radius&&e.motion===t.motion}function Qt(e=Y){return jt.find(t=>t.h===e.accentH&&t.s===e.accentS&&t.l===e.accentL)??null}var $t={min:kt,max:At};function en(e,t){let n=t?.freshMs??1e4,r=(0,i.useSyncExternalStore)((0,i.useCallback)(t=>ne(e.key,t),[e.key]),()=>re(e.key),()=>re(e.key));return(0,i.useEffect)(()=>{se(e.key,()=>e.fetch(),n)},[e.key,n]),r}function tn(e){return(0,i.useCallback)(()=>{ce(e.key,()=>e.fetch())},[e])}function nn(e){return(0,i.useCallback)(()=>{ce(e.key,()=>e.fetch(),!0)},[e])}function rn(){return(0,i.useSyncExternalStore)(P,()=>F().phase,()=>F().phase)}function an(){let e=(0,i.useSyncExternalStore)(P,()=>F().mutationTokenHeldUntil,()=>F().mutationTokenHeldUntil);return{hasHold:ut(),token:lt(),heldUntil:e,setToken:ft,touch:pt,clear:B}}function on(){return{theme:(0,i.useSyncExternalStore)(Et,G,G),set:K,cycle:Dt}}function sn(){return{appearance:(0,i.useSyncExternalStore)(qt,Jt,Jt),set:Yt,reset:Xt}}var X=class extends Error{status;path;detail;code;constructor(e,t,n,r=null,i=null){super(e),this.status=t,this.path=n,this.detail=r,this.code=i,this.name=`ApiError`}},cn=class extends X{constructor(e){super(`This server was started without --allow-dispatch, so mutations are disabled.`,404,e),this.name=`DispatchDisabledError`}};async function ln(e,t){let n=await fetch(e,{method:`GET`,credentials:`same-origin`,headers:{"x-ashlr-read-client":I()},signal:t});if(n.status===401)throw z(),new X(`Read session expired.`,401,e);if(!n.ok)throw new X(`GET ${e} failed (HTTP ${n.status}).`,n.status,e);return await n.json()}async function un(e,t,n,r){let i=await fetch(e,{method:`POST`,credentials:`same-origin`,headers:{"Content-Type":`application/json`,"x-ashlr-token":n},body:JSON.stringify(t??{}),signal:r});if(i.status===401)throw new X(`Mutation token was rejected.`,401,e);if(!i.ok){let{detail:t,code:n}=await dn(i);throw i.status===404&&n===null?new cn(e):new X(`POST ${e} failed (HTTP ${i.status})${t?`: ${t}`:``}.`,i.status,e,t||null,n)}if(i.status!==204)return await i.json()}async function dn(e){try{let t=await e.json();return{detail:typeof t.error==`string`&&t.error?t.error:typeof t.note==`string`?t.note:``,code:typeof t.code==`string`&&t.code?t.code:null}}catch{return{detail:``,code:null}}}var Z={grid:`_grid_x7p2y_1`,card:`_card_x7p2y_10`,title:`_title_x7p2y_19`,stat:`_stat_x7p2y_25`,caption:`_caption_x7p2y_31`,line:`_line_x7p2y_37`,row:`_row_x7p2y_42`,cell:`_cell_x7p2y_51`},Q=t();function fn({width:e=`100%`}){return(0,Q.jsx)(`div`,{className:`skeleton ${Z.line}`,style:{width:e}})}function pn(){return(0,Q.jsxs)(`div`,{className:Z.card,children:[(0,Q.jsx)(`div`,{className:`skeleton ${Z.title}`}),(0,Q.jsx)(`div`,{className:`skeleton ${Z.stat}`}),(0,Q.jsx)(`div`,{className:`skeleton ${Z.caption}`})]})}function mn(){return(0,Q.jsxs)(`div`,{className:Z.row,children:[(0,Q.jsx)(`div`,{className:`skeleton ${Z.cell}`,style:{width:`18%`}}),(0,Q.jsx)(`div`,{className:`skeleton ${Z.cell}`,style:{width:`38%`}}),(0,Q.jsx)(`div`,{className:`skeleton ${Z.cell}`,style:{width:`14%`}}),(0,Q.jsx)(`div`,{className:`skeleton ${Z.cell}`,style:{width:`10%`}})]})}function hn({count:e=4}){return(0,Q.jsx)(`div`,{className:Z.grid,children:Array.from({length:e},(e,t)=>(0,Q.jsx)(pn,{},t))})}var gn={skipLink:`_skipLink_1uply_1`};function _n(){return(0,Q.jsx)(`button`,{type:`button`,className:gn.skipLink,onClick:()=>{let e=document.getElementById(`main-content`);e?.focus(),e?.scrollIntoView({block:`start`})},children:`Skip to content`})}var $={wrap:`_wrap_14qw9_1`,card:`_card_14qw9_10`,badge:`_badge_14qw9_19`,heading:`_heading_14qw9_24`,body:`_body_14qw9_31`,code:`_code_14qw9_38`,example:`_example_14qw9_49`,form:`_form_14qw9_56`,label:`_label_14qw9_63`,input:`_input_14qw9_68`,error:`_error_14qw9_82`,submit:`_submit_14qw9_87`,optional:`_optional_14qw9_107`},vn=/^[a-f0-9]{64}$/;function yn({onAuthenticated:e,heading:t=`Connect to ashlr serve`,command:n=`ashlr serve`,subject:r=`This dashboard`,mutationField:a=!1}){let[o,s]=(0,i.useState)(``),[c,l]=(0,i.useState)(``),[u,d]=(0,i.useState)(null),[f,ee]=(0,i.useState)(!1),te=(0,i.useRef)(null),p=(0,i.useId)(),m=(0,i.useId)(),h=(0,i.useId)(),g=(0,i.useRef)(e);g.current=e,(0,i.useEffect)(()=>{let e=!1;return ct().then(t=>{t&&!e&&g.current?.()}),()=>{e=!0}},[]);async function ne(t){t.preventDefault(),d(null);let n=c.trim();if(a&&n&&!vn.test(n)){d(`That does not look like a mutation token — expected 64 hex characters (leave it empty to unlock later).`);return}ee(!0);try{await L(o),s(``),a&&n&&ft(n),l(``),e?.()}catch(e){d(e instanceof Error?e.message:`Could not establish a session.`),te.current?.select()}finally{ee(!1)}}return(0,Q.jsx)(`div`,{className:$.wrap,children:(0,Q.jsxs)(`div`,{className:$.card,children:[(0,Q.jsx)(`div`,{className:$.badge,"aria-hidden":`true`,children:`⛺`}),(0,Q.jsx)(`h1`,{className:$.heading,children:t}),(0,Q.jsxs)(`p`,{className:$.body,children:[r,` only ever talks to the ashlr server running on this machine (`,(0,Q.jsx)(`code`,{children:`127.0.0.1`}),`, never a remote host). To read data, paste the`,` `,(0,Q.jsx)(`strong`,{children:`read token`}),` printed in the terminal where you ran:`]}),(0,Q.jsx)(`pre`,{className:$.code,children:n}),(0,Q.jsxs)(`p`,{className:$.body,children:[`It looks like a 64-character hex string, printed once at startup — something like`,` `,(0,Q.jsx)(`code`,{className:$.example,children:`a1b2c3…`}),`. This dialog never stores it: it is exchanged once for a short-lived session cookie, then discarded.`]}),(0,Q.jsxs)(`form`,{onSubmit:ne,className:$.form,noValidate:!0,children:[(0,Q.jsx)(`label`,{htmlFor:p,className:$.label,children:`Read token`}),(0,Q.jsx)(`input`,{ref:te,id:p,name:`read-token`,type:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,inputMode:`text`,className:$.input,value:o,onChange:e=>s(e.target.value),"aria-invalid":u?!0:void 0,"aria-describedby":u?h:void 0,placeholder:`64 hex characters`,autoFocus:!0}),a?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`label`,{htmlFor:m,className:$.label,children:[`Mutation token `,(0,Q.jsx)(`span`,{className:$.optional,children:`optional — paste it now to enable sending`})]}),(0,Q.jsx)(`input`,{id:m,name:`mutation-token`,type:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,inputMode:`text`,className:$.input,value:c,onChange:e=>l(e.target.value),placeholder:`64 hex characters, printed under “Dispatch enabled”`})]}):null,u?(0,Q.jsx)(`p`,{id:h,className:$.error,role:`alert`,children:u}):null,(0,Q.jsx)(`button`,{type:`submit`,className:$.submit,disabled:f||o.trim().length===0,children:f?`Connecting…`:`Connect`})]})]})})}export{Te as $,ot as A,He as B,ct as C,lt as D,F as E,Je as F,je as G,ke as H,Ge as I,Ie as J,we as K,Ve as L,z as M,P as N,I as O,pt as P,Pe as Q,Ue as R,Dt as S,it as T,Oe as U,_e as V,b as W,Fe as X,Me as Y,Ne as Z,on as _,fn as a,v as at,Zt as b,cn as c,ce as ct,sn as d,Ae as et,rn as f,nn as g,tn as h,hn as i,re as it,at as j,ut as k,ln as l,oe as lt,en as m,_n as n,be as nt,mn as o,le as ot,an as p,Ee as q,pn as r,se as rt,X as s,te as st,yn as t,De as tt,un as u,ne as ut,$t as v,B as w,Qt as x,jt as y,We as z};
|
|
2
|
-
//# sourceMappingURL=global-Di2PUgj4.js.map
|