@ashlr/hub 3.10.1 → 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 +151 -0
- package/README.md +343 -82
- package/dist/authority-surface.json +80 -15
- package/dist/build-identity.json +2 -2
- package/dist/cli/cloud.d.ts +39 -0
- package/dist/cli/cloud.js +448 -0
- package/dist/cli/cloud.js.map +1 -0
- package/dist/cli/completions.js +4 -0
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/help.js +2 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +10 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/cloud/backlog.d.ts +17 -0
- package/dist/core/cloud/backlog.js +177 -0
- package/dist/core/cloud/backlog.js.map +1 -0
- package/dist/core/cloud/budget.d.ts +19 -0
- package/dist/core/cloud/budget.js +99 -0
- package/dist/core/cloud/budget.js.map +1 -0
- package/dist/core/cloud/checkout.d.ts +41 -0
- package/dist/core/cloud/checkout.js +168 -0
- package/dist/core/cloud/checkout.js.map +1 -0
- package/dist/core/cloud/cloud-api.d.ts +86 -0
- package/dist/core/cloud/cloud-api.js +599 -0
- package/dist/core/cloud/cloud-api.js.map +1 -0
- package/dist/core/cloud/delivery-contract.d.ts +25 -0
- package/dist/core/cloud/delivery-contract.js +138 -0
- package/dist/core/cloud/delivery-contract.js.map +1 -0
- package/dist/core/cloud/improvement-backlog.d.ts +11 -0
- package/dist/core/cloud/improvement-backlog.js +26 -0
- package/dist/core/cloud/improvement-backlog.js.map +1 -0
- package/dist/core/cloud/launcher.d.ts +68 -0
- package/dist/core/cloud/launcher.js +312 -0
- package/dist/core/cloud/launcher.js.map +1 -0
- package/dist/core/cloud/service.d.ts +51 -0
- package/dist/core/cloud/service.js +215 -0
- package/dist/core/cloud/service.js.map +1 -0
- package/dist/core/cloud/store.d.ts +41 -0
- package/dist/core/cloud/store.js +278 -0
- package/dist/core/cloud/store.js.map +1 -0
- package/dist/core/cloud/tracker.d.ts +30 -0
- package/dist/core/cloud/tracker.js +152 -0
- package/dist/core/cloud/tracker.js.map +1 -0
- package/dist/core/cloud/types.d.ts +233 -0
- package/dist/core/cloud/types.js +73 -0
- package/dist/core/cloud/types.js.map +1 -0
- 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/activity-api.d.ts +3 -1
- package/dist/core/verse/activity-api.js +16 -1
- package/dist/core/verse/activity-api.js.map +1 -1
- package/dist/core/verse/activity.d.ts +7 -0
- package/dist/core/verse/activity.js +23 -0
- package/dist/core/verse/activity.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/verse/verse-api.d.ts +1 -1
- package/dist/core/verse/verse-api.js +2 -0
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/vision/leader-cloud.d.ts +63 -0
- package/dist/core/vision/leader-cloud.js +134 -0
- package/dist/core/vision/leader-cloud.js.map +1 -0
- package/dist/core/vision/leader.d.ts +6 -0
- package/dist/core/vision/leader.js +12 -1
- package/dist/core/vision/leader.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.js → ActionMenu-_DhtX2gO.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.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-CAAfaBke.js.map +1 -0
- package/dist/core/web/public/next/assets/App-BAywyjE8.js +7 -0
- package/dist/core/web/public/next/assets/{App-CbDCLAxn.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-CUypKeog.js.map +1 -0
- package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.js → AreaTrend-CblDqC8Q.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.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-BF5UCsMv.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-nfSb59Kv.js.map → BranchBar-DU0jAV1E.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js → BudgetControl-Mm1ZL4u6.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js.map → BudgetControl-Mm1ZL4u6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js → BurnDown-C1fgcFqo.js} +2 -2
- package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js.map → BurnDown-C1fgcFqo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.js → Button-DqgLUZvd.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.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-2OW38o_C.js +2 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-2OW38o_C.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandPalette-C5w2o1-r.js +2 -0
- package/dist/core/web/public/next/assets/{CommandPalette-lLV-OR63.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-Bx2knNqY.js.map +1 -0
- 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-BVxhK-cy.js → DiffPane-DpqRUtCx.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-BVxhK-cy.js.map → DiffPane-DpqRUtCx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.js → DiffViewer-CoV5-nUf.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.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-BZReKwos.js.map → DockHost-C0Pq7Jak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js → EmptyState-DYW29ncw.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js.map → EmptyState-DYW29ncw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.js → Epistemic-DVx6oHzp.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.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-DSETviPK.js.map +1 -0
- package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.js → Funnel-DxiGqJrt.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.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-CkviqjYr.js.map → GearTray-C3I89sIt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.js → GrowthSection-C3m2bPEz.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.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-DcPj1ri9.js.map → HandoffDialog-Bjb96a0N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-Ci7TD96x.js → Input-ekTehVaH.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-Ci7TD96x.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-BSFTlMRF.js.map → LeaderCard-85VBbbaZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.js → MatrixHeatmap-Bo8j0QPC.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.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-CvcYu1X_.js.map → McpSection-DvHFaVyp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js → MessageMarkdown-fsY_ltVa.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js.map → MessageMarkdown-fsY_ltVa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js → MessageMarkdownRenderer-DDdtu82l.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js.map → MessageMarkdownRenderer-DDdtu82l.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.js → Meter-CeGDXdDM.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.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-DcO9fmYe.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-hiTINupk.js.map → NeedsYouDrawer-6AuN0BF3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.js → NeedsYouList-ChnRmbSk.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.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-utSckh7C.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-7N3YSUHN.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-CqzkaAjG.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-CctCuuLy.js +2 -0
- package/dist/core/web/public/next/assets/{RailStatus-sZhApA8k.js.map → RailStatus-CctCuuLy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.js → RefreshIndicator-CKY5BGdD.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.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-DXjjV6Sh.js → ResourcePoolConsoleApp-CspIsW_G.js} +5 -5
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-DXjjV6Sh.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/ResourcesDrawer-CSKIO_wZ.css +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-_juw4EXd.js +2 -0
- package/dist/core/web/public/next/assets/RunInCloudAction-_juw4EXd.js.map +1 -0
- package/dist/core/web/public/next/assets/SeatSelector-D_YXvkPy.js +3 -0
- package/dist/core/web/public/next/assets/{SeatSelector-CT92PqM_.js.map → SeatSelector-D_YXvkPy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js → Segmented-DnKP6rr7.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js.map → Segmented-DnKP6rr7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DkdeoSQn.js → Select-DlbUupTX.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DkdeoSQn.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-CwlakUYU.js.map → SessionInsightChip-C33-k-Q5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.js → SessionSearch-DhhR9Csg.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.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-C7APkGPt.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-ZPyXUS_I.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-Chsgazmk.js.map → Sidebar-YrVvvBNM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js → Slider-B2c-dbQb.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js.map → Slider-B2c-dbQb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js → StatusBadge-Q9YYkijx.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js.map → StatusBadge-Q9YYkijx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js → StepBand-Ci-C0GUG.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js.map → StepBand-Ci-C0GUG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js → Surface-DBovMq4P.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js.map → Surface-DBovMq4P.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js → Swimlane-Cdc4TqDe.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js.map → Swimlane-Cdc4TqDe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js → Switch-CUrvzO2k.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js.map → Switch-CUrvzO2k.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.js → Tag-Bv8u6APt.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.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-BDkKFych.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-BE72VyBL.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-BbmYY2P4.js → UniverseView-CgKa-WXC.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-BbmYY2P4.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-CazsHm1f.js.map +1 -0
- 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/VerseConsoleApp-Cxqr-3qc.css +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-BnjZy8a-.js.map → actions-MtxBGS5B.js.map} +1 -1
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +2 -0
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +1 -0
- package/dist/core/web/public/next/assets/budget-queries-CP7hgR-p.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-Cp6vO7FH.js.map → budget-queries-CP7hgR-p.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js → capacity-strip-model-fHfu5cph.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js.map → capacity-strip-model-fHfu5cph.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js → charts-Bis9WSiS.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js.map → charts-Bis9WSiS.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +1 -0
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js +2 -0
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js +2 -0
- package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js.map +1 -0
- package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.js → command-bus-CMvbYP5K.js} +2 -2
- package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.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-CYz4U4Bg.js → composer-keys-su0g1h9o.js} +2 -2
- package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.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-DeJ28uSZ.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-BGznyHNQ.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-_mEgy4eg.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-C4TG8blN.js.map → control-queries-Dv-h1Clu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js → dock-icons-t--Eugrd.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js.map → dock-icons-t--Eugrd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js → dock-store-qIu7kSQE.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js.map → dock-store-qIu7kSQE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.js → fleet-model-IRbwfhkR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.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-7FVNByX1.js.map +1 -0
- 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-lW58rL2y.js → format-CaMmVQCn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-lW58rL2y.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-DaGw1SzS.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-Dk8R-3a7.js → index-DbDw9UAs.js} +3 -3
- package/dist/core/web/public/next/assets/{index-Dk8R-3a7.js.map → index-DbDw9UAs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js → live-model-DEwrl7_A.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js.map → live-model-DEwrl7_A.js.map} +1 -1
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +2 -0
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +1 -0
- package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.js → mind.module-CLhqMQak.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.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-DjXM3IDg.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-Be_eossf.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-CYEVCq5r.js → queries-THD05gHP.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-CYEVCq5r.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-a_ZP6GzU.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-CRigL-GE.js.map → seat-subscription-CR_VylsK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js → section-visibility-B0xXUQJ0.js} +2 -2
- package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js.map → section-visibility-B0xXUQJ0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.js → sidebar-model-C5wVXGpb.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.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-CV9ZuLQU.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-DLvmUX9z.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-CHusyO9q.js.map +1 -0
- package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js → tasks-model-DvkWveXs.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js.map → tasks-model-DvkWveXs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js → terminal-icons-Dp6pJgV2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js.map → terminal-icons-Dp6pJgV2.js.map} +1 -1
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js +2 -0
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.js → usage-queries-CUTmnegA.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.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-DVCtLzSo.js.map → use-guarded-action-UCX2u1t1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.js → use-ticker-OXAjob3y.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.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-B5gOFkeH.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-0APW0BR3.js.map → useChartWidth-D9M7kUw7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.js → useSeatsRefresh-B2dCVcj9.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.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-Dy4HuDBV.js.map → verse-ui-store-D7YXi63q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js → viewport-BYGH5EgA.js} +2 -2
- package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js.map → viewport-BYGH5EgA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js → warmup-AsqwWCUi.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js.map → warmup-AsqwWCUi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.js → workspace-model-CXorJr0G.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.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-xVYFAeA8.js +0 -2
- package/dist/core/web/public/next/assets/Advanced-xVYFAeA8.js.map +0 -1
- package/dist/core/web/public/next/assets/App-CbDCLAxn.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-BF5UCsMv.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-nfSb59Kv.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-lLV-OR63.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js.map +0 -1
- package/dist/core/web/public/next/assets/DockHost-BZReKwos.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js +0 -3
- package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js.map +0 -1
- package/dist/core/web/public/next/assets/GearTray-CkviqjYr.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-DcPj1ri9.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BSFTlMRF.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-CvcYu1X_.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-DcO9fmYe.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js.map +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cum_DqQZ.css +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-hiTINupk.js +0 -2
- package/dist/core/web/public/next/assets/NewChatDialog-utSckh7C.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingFlow-7N3YSUHN.js +0 -2
- package/dist/core/web/public/next/assets/PreviewPane-CqzkaAjG.js +0 -2
- package/dist/core/web/public/next/assets/RailStatus-sZhApA8k.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-6RMd_aZg.css +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js.map +0 -1
- package/dist/core/web/public/next/assets/SeatSelector-CT92PqM_.js +0 -3
- package/dist/core/web/public/next/assets/SessionInsightChip-CwlakUYU.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-C7APkGPt.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-ZPyXUS_I.js +0 -2
- package/dist/core/web/public/next/assets/Sidebar-Chsgazmk.js +0 -3
- package/dist/core/web/public/next/assets/TerminalPane-BDkKFych.js +0 -7
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BE72VyBL.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-CXJWDiEM.css +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +0 -1
- package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js +0 -10
- package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-BnjZy8a-.js +0 -2
- package/dist/core/web/public/next/assets/budget-queries-Cp6vO7FH.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-BGznyHNQ.js +0 -2
- package/dist/core/web/public/next/assets/context-model-DeJ28uSZ.js +0 -2
- package/dist/core/web/public/next/assets/context-queries-_mEgy4eg.js +0 -2
- package/dist/core/web/public/next/assets/control-queries-C4TG8blN.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js.map +0 -1
- package/dist/core/web/public/next/assets/git-model-DaGw1SzS.js +0 -5
- package/dist/core/web/public/next/assets/global-DG1fmn4y.js +0 -2
- package/dist/core/web/public/next/assets/global-DG1fmn4y.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--lguLXfz.js +0 -2
- package/dist/core/web/public/next/assets/guarded-action--lguLXfz.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-YPgbel-I.js +0 -2
- package/dist/core/web/public/next/assets/icons-YPgbel-I.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-DjXM3IDg.js +0 -2
- package/dist/core/web/public/next/assets/overnight-queries-Be_eossf.js +0 -2
- package/dist/core/web/public/next/assets/primitives-Dl3SEQvh.js +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-a_ZP6GzU.js +0 -2
- package/dist/core/web/public/next/assets/seat-subscription-CRigL-GE.js +0 -2
- package/dist/core/web/public/next/assets/slots-CV9ZuLQU.js +0 -3
- package/dist/core/web/public/next/assets/surface-data-DLvmUX9z.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js.map +0 -1
- package/dist/core/web/public/next/assets/use-guarded-action-DVCtLzSo.js +0 -2
- package/dist/core/web/public/next/assets/use-token-gate-B5gOFkeH.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js.map +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-0APW0BR3.js +0 -2
- package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +0 -1
- package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js +0 -2
- package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js +0 -3
- package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-ui-store-Dy4HuDBV.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"surface-prefetch-Ct2JwXvL.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/surface-prefetch.ts"],"sourcesContent":["/**\n * routes/verse/shell/surface-prefetch.ts — the reads each rail surface opens\n * with, so the shell can warm them while the operator is still reading chat\n * (shell/warmup.ts, once the operator is idle after first paint). A first\n * visit to Command, Fleet, Growth or Mind then paints from the cache instead\n * of a skeleton; the surface's own useQuery still refreshes whatever is older\n * than it accepts.\n *\n * LAZY ONLY. shell/warmup.ts loads this module with import(): these query\n * defs pull in the surfaces' data modules, none of which may cost chat\n * first-paint bytes (VerseApp.first-paint.test.ts pins it). The QueryDefs\n * themselves are the surfaces' own — same keys, same fetchers — so a warmed\n * entry IS the entry the surface reads.\n *\n * Keep each list in step with its surface's useQuery calls:\n * surface-prefetch.test.ts renders Command, Growth and Mind and fails when\n * they read something this table does not warm.\n */\nimport { ensureQuery } from '../../../data/cache.js';\nimport { modelsQuery, type QueryDef } from '../../../data/queries.js';\nimport { overnightQuery } from '../autonomy/overnight-queries.js';\nimport { budgetPreviewQuery, budgetQuery } from '../budget/budget-queries.js';\nimport {\n authorityQuery,\n fleetHistoryQuery,\n fleetLiveQuery,\n leaderQuery,\n learningQuery,\n reasoningDigestQuery,\n seatHistoryQuery,\n} from '../command/surface-data.js';\nimport { verseBootstrapQuery, verseSessionsQuery, verseWorkspacesQuery } from '../verse-queries.js';\nimport type { VerseSectionId } from '../verse-ui-store.js';\n\ntype AnyQuery = QueryDef<unknown>;\n\n/** What each rail surface reads the moment it mounts. */\nexport const SURFACE_PREFETCH: Readonly<Partial<Record<VerseSectionId, readonly AnyQuery[]>>> = {\n // seatHistoryQuery: without it the first Command visit draws each seat's\n // burn-down from this page's own readings (\"since Verse opened\"), then\n // redraws once the recorded week lands — the reset-on-reload look 3.10.1\n // set out to remove.\n command: [authorityQuery, fleetLiveQuery, leaderQuery, learningQuery, fleetHistoryQuery, budgetQuery, seatHistoryQuery],\n fleet: [fleetLiveQuery, overnightQuery, budgetQuery, budgetPreviewQuery],\n growth: [fleetHistoryQuery, learningQuery, modelsQuery('30d')],\n mind: [leaderQuery, reasoningDigestQuery, verseBootstrapQuery, verseWorkspacesQuery],\n chat: [verseBootstrapQuery, verseSessionsQuery, verseWorkspacesQuery],\n};\n\n/**\n * A cached answer younger than this is left alone. The surfaces accept 10–60 s\n * old data on mount, so anything fresher than a minute is already as good as\n * a warm-up can make it.\n */\nexport const PREFETCH_FRESH_MS = 60_000;\n\ntype Ensure = (key: string, fetcher: () => Promise<unknown>, maxAgeMs: number) => Promise<void>;\n\nexport interface PrefetchOptions {\n /** The cache's mount path (a seam for tests). */\n ensure?: Ensure;\n /**\n * Awaited before EACH read (the warm-up's idle gate). Resolving false stops\n * the warm-up there — the gate was cancelled.\n */\n beforeEach?: () => Promise<boolean> | boolean;\n}\n\n/**\n * Warm one surface's reads through the shared cache (joins an in-flight read,\n * skips a fresh one, and goes through the cache's concurrency gate).\n *\n * ONE AT A TIME: each read is awaited before the next is even considered, so\n * the warm-up never holds more than one of the gate's slots, and the operator\n * (who gets the other three, and whose reads the next `beforeEach` waits out)\n * is never queued behind a burst of it.\n *\n * Never rejects: a read that fails leaves the surface to load it as it always did.\n */\nexport async function prefetchSurfaceData(id: VerseSectionId, options: PrefetchOptions = {}): Promise<void> {\n const ensure = options.ensure ?? ensureQuery;\n for (const def of SURFACE_PREFETCH[id] ?? []) {\n try {\n if (options.beforeEach && !(await options.beforeEach())) return;\n await ensure(def.key, () => def.fetch(), PREFETCH_FRESH_MS);\n } catch {\n // A warm-up read that fails (or cannot even start) is not worth surfacing.\n }\n }\n}\n"],"mappings":"uVAqCA,IAAa,EAAmF,CAK9F,QAAS,CAAC,EAAgB,EAAgB,EAAa,EAAe,EAAmB,EAAa,CAAgB,EACtH,MAAO,CAAC,EAAgB,EAAgB,EAAa,CAAkB,EACvE,OAAQ,CAAC,EAAmB,EAAe,EAAY,KAAK,CAAC,EAC7D,KAAM,CAAC,EAAa,EAAsB,EAAqB,CAAoB,EACnF,KAAM,CAAC,EAAqB,EAAoB,CAAoB,CACtE,EAOa,EAAoB,IAyBjC,eAAsB,EAAoB,EAAoB,EAA2B,CAAC,EAAkB,CAC1G,IAAM,EAAS,EAAQ,QAAU,EACjC,IAAK,IAAM,KAAO,EAAiB,IAAO,CAAC,EACzC,GAAI,CACF,GAAI,EAAQ,YAAc,CAAE,MAAM,EAAQ,WAAW,EAAI,OACzD,MAAM,EAAO,EAAI,QAAW,EAAI,MAAM,EAAG,CAAiB,CAC5D,MAAQ,CAER,CAEJ"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,s as t}from"./index-Dk8R-3a7.js";import{c as n,k as r,s as i}from"./global-DG1fmn4y.js";import{v as a}from"./format-lW58rL2y.js";import{n as o}from"./control-queries-C4TG8blN.js";var s=t(e(),1);function c(e){return e instanceof n?`This server runs without dispatch, so that action is unavailable.`:e instanceof o?e.message:e instanceof i?e.status===401?"The mutation token was rejected. Unlock again with the token `ashlr verse` printed.":e.detail?a(e.detail):e.status===400?a(e.message):e.status===409?`The server refused the action, and sent no reason.`:a(e.message):e instanceof Error?a(e.message):`That action failed. Try again.`}function l(){let[e,t]=(0,s.useState)(!1),[i,a]=(0,s.useState)(null),[o,l]=(0,s.useState)(!1),[u,d]=(0,s.useState)(!1),[f,p]=(0,s.useState)(``),m=(0,s.useRef)(null),h=(0,s.useCallback)(async(e,r)=>{t(!0),a(null);try{let t=await e();r?.(t)}catch(e){e instanceof n?l(!0):a(c(e))}finally{t(!1)}},[]),g=(0,s.useCallback)((e,t,n)=>{a(null);let i=n;if(r()){h(e,i);return}m.current={fn:e,onResult:i},p(t),d(!0)},[h]),_=(0,s.useCallback)(()=>{d(!1);let e=m.current;m.current=null,e&&r()&&h(e.fn,e.onResult)},[h]);return{request:g,busy:e,error:i,clearError:(0,s.useCallback)(()=>a(null),[]),readOnly:o,tokenOpen:u,tokenReason:f,closeToken:_}}export{l as t};
|
|
2
|
-
//# sourceMappingURL=use-guarded-action-DVCtLzSo.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,s as t}from"./index-Dk8R-3a7.js";import{c as n,k as r,s as i}from"./global-DG1fmn4y.js";import{r as a}from"./verse-queries-2PxoBISm.js";import{v as o}from"./format-lW58rL2y.js";var s=t(e(),1);function c(){let[e,t]=(0,s.useState)({open:!1,reason:``}),n=(0,s.useRef)(null),i=(0,s.useCallback)((e,i)=>r()?i():(n.current?.cancel(),new Promise((r,a)=>{n.current={run:()=>{i().then(r,a)},cancel:()=>r(null)},t({open:!0,reason:e})})),[]),a=(0,s.useCallback)(()=>{t({open:!1,reason:``});let e=n.current;e&&setTimeout(()=>{n.current===e&&(n.current=null,e.cancel())},0)},[]),o=(0,s.useCallback)(()=>{let e=n.current;n.current=null,e?.run()},[]);return{run:i,dialog:{open:e.open,reason:e.reason,onClose:a,onUnlocked:o}}}function l(e){return e instanceof n?"This server is read-only (started without dispatch — run `ashlr verse`), or older than this console.":e instanceof a?`Unlock actions with the mutation token first.`:e instanceof i?e.status===401?"The mutation token was rejected. Unlock again with the token `ashlr verse` printed.":e.code===`VERSE_SESSION_NOT_FOUND`?`This chat no longer exists on the server — it may have been deleted. Refresh the chat list.`:e.detail?o(e.detail):e.status===404?"This server does not have that route yet — update Ashlr and restart `ashlr verse`.":e.status===409?`A turn is already running in this chat. Wait for it or stop it first.`:o(e.message):e instanceof Error&&e.message?o(e.message):`Something went wrong.`}export{c as n,l as t};
|
|
2
|
-
//# sourceMappingURL=use-token-gate-B5gOFkeH.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,s as t}from"./index-Dk8R-3a7.js";import{l as n,s as r}from"./global-DG1fmn4y.js";import{a as i}from"./workbench-types-DzN-5trg.js";import{t as a}from"./section-visibility-u7q-Q9AA.js";var o=t(e(),1),s=5e3,c=3e4,l=(e,t)=>n(e,t),u={status:`idle`,data:null,updatedAt:null},d=null,f=null,p=null,m=0,h=new Set,g=new Set;function _(e){u=e;for(let e of[...h])e()}function v(){return typeof document<`u`&&document.visibilityState===`hidden`}function y(){if(f&&clearTimeout(f),f=null,m===0)return;let e=Math.max(a,v()?c:s);f=setTimeout(()=>{b()},e)}function b(){if(p)return p;u.status===`idle`&&_({...u,status:`loading`});let e=d?`${i}?since=${encodeURIComponent(d)}`:i;return p=(async()=>{try{let t=await l(e),n=d===null;if(d=typeof t.cursor==`string`?t.cursor:null,_({status:`ready`,data:t,updatedAt:Date.now()}),!n&&Array.isArray(t.completions)&&t.completions.length>0)for(let e of[...g])try{e(t.completions)}catch{}}catch(e){e instanceof r&&e.status===404?_({status:`unavailable`,data:null,updatedAt:u.updatedAt}):e instanceof r&&e.status===400&&d?(d=null,_({...u,status:u.data?`stale`:`loading`})):_({...u,status:u.data?`stale`:`unavailable`})}finally{p=null,y()}})(),p}function x(){!v()&&m>0?b():y()}function S(){m+=1,m===1&&(typeof document<`u`&&document.addEventListener(`visibilitychange`,x),b())}function C(){m=Math.max(0,m-1),!(m>0)&&(f&&clearTimeout(f),f=null,typeof document<`u`&&document.removeEventListener(`visibilitychange`,x))}function w(e){return h.add(e),S(),()=>{h.delete(e),C()}}function T(){return u}function E(){return(0,o.useSyncExternalStore)(w,T,T)}function D(e){return g.add(e),()=>g.delete(e)}export{E as i,D as n,b as r,T as t};
|
|
2
|
-
//# sourceMappingURL=useActivity-C3R1Sudh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActivity-C3R1Sudh.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/useActivity.ts"],"sourcesContent":["/**\n * routes/verse/shell/useActivity.ts — the shell's one CURSOR loop over\n * GET /api/verse/activity (unit C1; route: core/verse/activity-api.ts).\n *\n * The rail badges, the palette's \"Needs you\" and running chats, the Needs-you\n * drawer and the in-app \"Finished / Failed\" toasts all read this ONE store,\n * so the whole shell costs one request per tick however many things show a\n * count. (The chat list polls the same route WITHOUT a cursor for its\n * present-tense view — chat/use-chat-activity.ts, C2.)\n *\n * CADENCE. Every 5 s while the window is visible, every 30 s while it is\n * hidden (the badges still need to be right when it comes back, and the tab\n * title count; C8's Rust owns native notifications). Never under the 2 s\n * floor (section-visibility MIN_POLL_INTERVAL_MS). Polls only while\n * something is subscribed.\n *\n * HONESTY. A 404 means the activity module is not in this build →\n * `unavailable`, and every badge renders \"unknown\" (no dot), never zero. A\n * failed poll keeps the last good data and says `stale` — a badge that\n * flashes to 0 on one dropped request would read as a false all-clear.\n *\n * COMPLETIONS arrive once per cursor; `onActivityCompletions` listeners get\n * each batch exactly once. The first poll of a page carries none (history is\n * not news).\n */\nimport { useSyncExternalStore } from 'react';\nimport type { VerseActivityCompletion, VerseActivityResponse } from '../../../../core/verse/workbench-types.js';\nimport { VERSE_ACTIVITY_PATH } from '../../../../core/verse/workbench-types.js';\nimport { ApiError, apiGet } from '../../../data/client.js';\nimport { MIN_POLL_INTERVAL_MS } from './section-visibility.js';\n\nexport const ACTIVITY_POLL_VISIBLE_MS = 5_000;\nexport const ACTIVITY_POLL_HIDDEN_MS = 30_000;\n\nexport type ActivityStatus = 'idle' | 'loading' | 'ready' | 'stale' | 'unavailable';\n\nexport interface ActivityState {\n status: ActivityStatus;\n data: VerseActivityResponse | null;\n /** ms epoch of the last successful poll. */\n updatedAt: number | null;\n}\n\ntype Fetcher = (path: string, signal?: AbortSignal) => Promise<VerseActivityResponse>;\n\nlet fetcher: Fetcher = (path, signal) => apiGet<VerseActivityResponse>(path, signal);\nlet snapshot: ActivityState = { status: 'idle', data: null, updatedAt: null };\nlet cursor: string | null = null;\nlet timer: ReturnType<typeof setTimeout> | null = null;\nlet inFlight: Promise<void> | null = null;\nlet subscribers = 0;\nconst listeners = new Set<() => void>();\nconst completionListeners = new Set<(batch: VerseActivityCompletion[]) => void>();\n\nfunction emit(next: ActivityState): void {\n snapshot = next;\n for (const l of [...listeners]) l();\n}\n\nfunction hidden(): boolean {\n return typeof document !== 'undefined' && document.visibilityState === 'hidden';\n}\n\nfunction schedule(): void {\n if (timer) clearTimeout(timer);\n timer = null;\n if (subscribers === 0) return;\n const every = Math.max(MIN_POLL_INTERVAL_MS, hidden() ? ACTIVITY_POLL_HIDDEN_MS : ACTIVITY_POLL_VISIBLE_MS);\n timer = setTimeout(() => {\n void refreshActivity();\n }, every);\n}\n\n/** Poll now (joins one already running). Resolves when it has settled; never rejects. */\nexport function refreshActivity(): Promise<void> {\n if (inFlight) return inFlight;\n if (snapshot.status === 'idle') emit({ ...snapshot, status: 'loading' });\n const path = cursor ? `${VERSE_ACTIVITY_PATH}?since=${encodeURIComponent(cursor)}` : VERSE_ACTIVITY_PATH;\n inFlight = (async () => {\n try {\n const data = await fetcher(path);\n const firstPoll = cursor === null;\n cursor = typeof data.cursor === 'string' ? data.cursor : null;\n emit({ status: 'ready', data, updatedAt: Date.now() });\n if (!firstPoll && Array.isArray(data.completions) && data.completions.length > 0) {\n for (const l of [...completionListeners]) {\n try { l(data.completions); } catch { /* a listener must not stop the loop */ }\n }\n }\n } catch (err) {\n if (err instanceof ApiError && err.status === 404) {\n emit({ status: 'unavailable', data: null, updatedAt: snapshot.updatedAt });\n } else if (err instanceof ApiError && err.status === 400 && cursor) {\n // A cursor the server no longer accepts: start over rather than stall.\n cursor = null;\n emit({ ...snapshot, status: snapshot.data ? 'stale' : 'loading' });\n } else {\n emit({ ...snapshot, status: snapshot.data ? 'stale' : 'unavailable' });\n }\n } finally {\n inFlight = null;\n schedule();\n }\n })();\n return inFlight;\n}\n\nfunction onVisibility(): void {\n // Back in view: catch up now rather than up to 30 s late.\n if (!hidden() && subscribers > 0) void refreshActivity();\n else schedule();\n}\n\nfunction start(): void {\n subscribers += 1;\n if (subscribers === 1) {\n if (typeof document !== 'undefined') document.addEventListener('visibilitychange', onVisibility);\n void refreshActivity();\n }\n}\n\nfunction stop(): void {\n subscribers = Math.max(0, subscribers - 1);\n if (subscribers > 0) return;\n if (timer) clearTimeout(timer);\n timer = null;\n if (typeof document !== 'undefined') document.removeEventListener('visibilitychange', onVisibility);\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n start();\n return () => {\n listeners.delete(listener);\n stop();\n };\n}\n\nexport function getActivityState(): ActivityState {\n return snapshot;\n}\n\n/** The shell's activity. Subscribing starts the poll; the last unsubscribe stops it. */\nexport function useActivity(): ActivityState {\n return useSyncExternalStore(subscribe, getActivityState, getActivityState);\n}\n\n/** Each batch of newly finished turns, exactly once. Returns the unsubscribe. */\nexport function onActivityCompletions(listener: (batch: VerseActivityCompletion[]) => void): () => void {\n completionListeners.add(listener);\n return () => completionListeners.delete(listener);\n}\n\n/** Test seam: inject the fetch, clear state (and any timer). */\nexport function resetActivityForTest(next?: Fetcher): void {\n if (timer) clearTimeout(timer);\n timer = null;\n inFlight = null;\n cursor = null;\n subscribers = 0;\n listeners.clear();\n completionListeners.clear();\n fetcher = next ?? ((path, signal) => apiGet<VerseActivityResponse>(path, signal));\n snapshot = { status: 'idle', data: null, updatedAt: null };\n}\n"],"mappings":"qNA+Ba,EAA2B,IAC3B,EAA0B,IAanC,GAAoB,EAAM,IAAW,EAA8B,EAAM,CAAM,EAC/E,EAA0B,CAAE,OAAQ,OAAQ,KAAM,KAAM,UAAW,IAAK,EACxE,EAAwB,KACxB,EAA8C,KAC9C,EAAiC,KACjC,EAAc,EACZ,EAAY,IAAI,IAChB,EAAsB,IAAI,IAEhC,SAAS,EAAK,EAA2B,CACvC,EAAW,EACX,IAAK,IAAM,IAAK,CAAC,GAAG,CAAS,EAAG,EAAE,CACpC,CAEA,SAAS,GAAkB,CACzB,OAAO,OAAO,SAAa,KAAe,SAAS,kBAAoB,QACzE,CAEA,SAAS,GAAiB,CAGxB,GAFI,GAAO,aAAa,CAAK,EAC7B,EAAQ,KACJ,IAAgB,EAAG,OACvB,IAAM,EAAQ,KAAK,IAAI,EAAsB,EAAO,EAAI,EAA0B,CAAwB,EAC1G,EAAQ,eAAiB,CACvB,EAAqB,CACvB,EAAG,CAAK,CACV,CAGA,SAAgB,GAAiC,CAC/C,GAAI,EAAU,OAAO,EACjB,EAAS,SAAW,QAAQ,EAAK,CAAE,GAAG,EAAU,OAAQ,SAAU,CAAC,EACvE,IAAM,EAAO,EAAS,GAAG,EAAoB,SAAS,mBAAmB,CAAM,IAAM,EA2BrF,MA1BA,IAAY,SAAY,CACtB,GAAI,CACF,IAAM,EAAO,MAAM,EAAQ,CAAI,EACzB,EAAY,IAAW,KAG7B,GAFA,EAAS,OAAO,EAAK,QAAW,SAAW,EAAK,OAAS,KACzD,EAAK,CAAE,OAAQ,QAAS,OAAM,UAAW,KAAK,IAAI,CAAE,CAAC,EACjD,CAAC,GAAa,MAAM,QAAQ,EAAK,WAAW,GAAK,EAAK,YAAY,OAAS,EAC7E,IAAK,IAAM,IAAK,CAAC,GAAG,CAAmB,EACrC,GAAI,CAAE,EAAE,EAAK,WAAW,CAAG,MAAQ,CAA0C,CAGnF,OAAS,EAAK,CACR,aAAe,GAAY,EAAI,SAAW,IAC5C,EAAK,CAAE,OAAQ,cAAe,KAAM,KAAM,UAAW,EAAS,SAAU,CAAC,EAChE,aAAe,GAAY,EAAI,SAAW,KAAO,GAE1D,EAAS,KACT,EAAK,CAAE,GAAG,EAAU,OAAQ,EAAS,KAAO,QAAU,SAAU,CAAC,GAEjE,EAAK,CAAE,GAAG,EAAU,OAAQ,EAAS,KAAO,QAAU,aAAc,CAAC,CAEzE,QAAU,CACR,EAAW,KACX,EAAS,CACX,CACF,EAAA,CAAG,EACI,CACT,CAEA,SAAS,GAAqB,CAExB,CAAC,EAAO,GAAK,EAAc,EAAG,EAAqB,EAClD,EAAS,CAChB,CAEA,SAAS,GAAc,CACrB,GAAe,EACX,IAAgB,IACd,OAAO,SAAa,KAAa,SAAS,iBAAiB,mBAAoB,CAAY,EAC/F,EAAqB,EAEzB,CAEA,SAAS,GAAa,CACpB,EAAc,KAAK,IAAI,EAAG,EAAc,CAAC,EACrC,IAAc,KACd,GAAO,aAAa,CAAK,EAC7B,EAAQ,KACJ,OAAO,SAAa,KAAa,SAAS,oBAAoB,mBAAoB,CAAY,EACpG,CAEA,SAAS,EAAU,EAAkC,CAGnD,OAFA,EAAU,IAAI,CAAQ,EACtB,EAAM,MACO,CACX,EAAU,OAAO,CAAQ,EACzB,EAAK,CACP,CACF,CAEA,SAAgB,GAAkC,CAChD,OAAO,CACT,CAGA,SAAgB,GAA6B,CAC3C,OAAA,EAAO,EAAA,qBAAA,CAAqB,EAAW,EAAkB,CAAgB,CAC3E,CAGA,SAAgB,EAAsB,EAAkE,CAEtG,OADA,EAAoB,IAAI,CAAQ,MACnB,EAAoB,OAAO,CAAQ,CAClD"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,n as t,s as n}from"./index-Dk8R-3a7.js";import{d as r,f as i}from"./colors-BZ3a9wFf.js";import{a,c as o,n as s}from"./format-DKrNjdwD.js";var c=n(e(),1),l=t();function u(e,t,n=4,r={}){if(!Number.isFinite(e)||!Number.isFinite(t))return[0];if(t<e&&([e,t]=[t,e]),t===e){if(t===0)return[0,1];let i=Math.abs(t)*.5;return u(Math.min(0,e-i),t+i,n,r)}let i=(t-e)/Math.max(1,n),a=10**Math.floor(Math.log10(i)),o=i/a,s=(o<=1?1:o<=2?2:o<=2.5?a>=10?2.5:2:o<=5?5:10)*a;r.integer&&s<1&&(s=1),r.minStep!==void 0&&Number.isFinite(r.minStep)&&s<r.minStep&&(s=r.minStep);let c=Math.floor(e/s)*s,l=Math.ceil(t/s)*s,d=Math.round((l-c)/s),f=Math.max(0,-Math.floor(Math.log10(s))+1),p=[];for(let e=0;e<=d;e++)p.push(Number((c+e*s).toFixed(f))||0);return p}function d(e){return e.every(e=>Number.isInteger(e))}function f(e,t){return new Set(t).size===t.length&&e.every((e,n)=>{if(e===0)return!0;let r=/\d[\d,]*(?:\.\d+)?/.exec(t[n]??``);if(!r)return!0;let i=Number(r[0].replace(/,/g,``));if(!Number.isFinite(i)||i===0)return!1;let a=i/Math.abs(e),o=10**Math.round(Math.log10(a));return Math.abs(a/o-1)<1e-6})}function p(e,t,n={}){let r=Math.max(1,n.count??4),i=n.integer===!0,s=n.format,c=(n,r,i)=>{let c=u(e,t,n,{integer:r,minStep:i}),l=c.length>1?c[1]-c[0]:1;if(s)return{ticks:c,labels:c.map(e=>s(e)),step:l};let d=o(c,l);return{ticks:c,labels:c.map(e=>a(e,l,d)),step:l}},l=c(r,i);if(!n.format||f(l.ticks,l.labels)||!Number.isFinite(e)||!Number.isFinite(t)||!(l.step>0))return l;let d=(e,t)=>{for(let n=r;n>=1;n--){let r=c(n,e,t);if(f(r.ticks,r.labels))return r}return null},p=d(i);if(p)return p;let m=Math.max(Math.abs(e),Math.abs(t),1);for(let e=Math.floor(Math.log10(l.step))+1;10**e<=m*10;e++){let t=d(i,Number((10**e).toPrecision(1)));if(t)return t}return d(!0)??l}function m(e){let t=t=>{let n=e(t).trim();if(!n.endsWith(`%`))return null;let r=Number(n.slice(0,-1).replace(/[,\s+]/g,``));return Number.isFinite(r)?r:null};return t(50)===50?100:t(.5)===50?1:null}function h(e){return Number.isFinite(e)&&e>=9466848e5}function g(e){return e.some(h)}function _(e){return g(e)?h:Number.isFinite}var ee=6e5;function te(e,t,n,r=`center`){if(t<e&&([e,t]=[t,e]),t-e>=n)return[e,t];if(r===`end`)return[t-n,t];let i=(e+t)/2;return[i-n/2,i+n/2]}var v=12*.6;function y(e){return Number.isFinite(e)&&e>0?e:1}function b(e=1){return v*y(e)}function x(e,t=v){return e.length*t}var S=7;function C(e,t,n,r=1){let i=y(r),a=Math.max(0,...e.map(e=>e.length));return Math.min(n*i,Math.max(t,a*S*i+10))}function w(e,t,n){let r=n.gap??8,i=e.map((e,t)=>({s:e,i:t})).sort((e,t)=>t.s.priority-e.s.priority||e.i-t.i),a=[];for(let{s:e,i:o}of i){let i=e.variants[Math.min(t,e.variants.length-1)]??``;if(!i)continue;let s=x(i,n.charPx);if(s>n.max-n.min)continue;let c=e.anchor===`start`?e.x:e.anchor===`end`?e.x-s:e.x-s/2,l=e.x,u=e.anchor;c<n.min?(c=n.min,l=n.min,u=`start`):c+s>n.max&&(c=n.max-s,l=n.max,u=`end`);let d=c+s;a.some(e=>e.text===i||c<e.right+r&&e.left<d+r)||a.push({left:c,right:d,text:i,i:o,label:{key:e.key,text:i,x:l,anchor:u}})}return a.sort((e,t)=>e.i-t.i).map(e=>e.label)}function T(e,t){if(e.length===0)return[];let n=Math.max(1,...e.map(e=>e.variants.length)),r=new Set(e.filter(e=>e.required!==!1).map(e=>e.key)),i=[],a=-1;for(let o=0;o<n;o++){let n=w(e,o,t),s=n.filter(e=>r.has(e.key)).length;if(s>a&&(i=n,a=s),a===r.size)break}return i}function E(e,t,n,r){if(e.length===0)return new Map;if((e.length-1)*t>r-n+1e-9)return null;let i=e.map((e,t)=>({...e,i:t})).sort((e,t)=>e.y-t.y||e.i-t.i),a=e=>{let i=e.reduce((e,t)=>e+t.y,0)/e.length,a=(e.length-1)*t;return{members:e,top:D(i-a/2,n,r-a)}},o=i.map(e=>a([e]));for(let e=!0;e;){e=!1;for(let n=0;n+1<o.length;n++){let r=o[n],i=o[n+1];if(r.top+r.members.length*t>i.top+1e-9){o=[...o.slice(0,n),a([...r.members,...i.members]),...o.slice(n+2)],e=!0;break}}}let s=new Map;for(let e of o)e.members.forEach((n,r)=>s.set(n.key,e.top+r*t));return s}function ne(e,t,n,r){let i=t-e;return i===0?()=>(n+r)/2:t=>n+(t-e)/i*(r-n)}function re(e,t){if(e<=0)return[];if(t<=1)return[e-1];if(e<=t)return Array.from({length:e},(e,t)=>t);let n=Math.ceil((e-1)/(t-1)),r=[];for(let t=e-1;t>=0;t-=n)r.push(t);return r.reverse()}function D(e,t,n){return Math.min(n,Math.max(t,e))}function ie(e){let t=[],n=[];for(let r of e){if(r.y===null||!Number.isFinite(r.y)){n.length&&t.push(n),n=[];continue}n.push({x:r.x,y:r.y})}return n.length&&t.push(n),t}function O(e){return e.map((e,t)=>`${t===0?`M`:`L`}${A(e.x)},${A(e.y)}`).join(` `)}function k(e,t){if(e.length===0)return``;let n=[...t].reverse();return`${O(e)} ${n.map(e=>`L${A(e.x)},${A(e.y)}`).join(` `)} Z`}function A(e){return Math.round(e*10)/10}function j(e){let t=0,n=!1,r=0,i=[];return e.forEach((e,a)=>{if(e===null||!Number.isFinite(e)){n=!0;return}r++;let o=Math.max(0,e);o>0&&i.push({index:a,value:o,y0:t,y1:t+o}),t+=o}),{segments:i,total:t,incomplete:n,unknown:r===0&&e.length>0}}function M(e,t,n,r,i=4){if(r<=0||n<=0)return``;let a=Math.max(0,Math.min(i,n/2,r));return[`M${A(e)},${A(t+r)}`,`L${A(e)},${A(t+a)}`,`Q${A(e)},${A(t)} ${A(e+a)},${A(t)}`,`L${A(e+n-a)},${A(t)}`,`Q${A(e+n)},${A(t)} ${A(e+n)},${A(t+a)}`,`L${A(e+n)},${A(t+r)}`,`Z`].join(` `)}function N(e,t,n,r,i=4){if(r<=0||n<=0)return``;let a=Math.max(0,Math.min(i,r/2,n));return[`M${A(e)},${A(t)}`,`L${A(e+n-a)},${A(t)}`,`Q${A(e+n)},${A(t)} ${A(e+n)},${A(t+a)}`,`L${A(e+n)},${A(t+r-a)}`,`Q${A(e+n)},${A(t+r)} ${A(e+n-a)},${A(t+r)}`,`L${A(e)},${A(t+r)}`,`Z`].join(` `)}function P(e){let t=e[0]??null;return e.map((n,r)=>{let i=r>0?e[r-1]??null:null;return{value:n,ofFirst:n!==null&&t!==null&&t>0?n/t:null,ofPrevious:r>0&&n!==null&&i!==null&&i>0?n/i:null}})}var F=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`];function I(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return null;let t=Date.parse(`${e}T00:00:00Z`);return Number.isFinite(t)&&new Date(t).toISOString().slice(0,10)===e?t:null}function L(e,t=1){let n=new Map,r=1/0,i=-1/0;for(let t of e){let e=I(t.day);e===null||e<9466848e5||(n.set(t.day,t.value),r=Math.min(r,e),i=Math.max(i,e))}if(!Number.isFinite(r))return{cells:[],weeks:0,months:[]};let a=864e5,o=(new Date(r).getUTCDay()-t+7)%7,s=r-o*a,c=(new Date(i).getUTCDay()-t+7)%7,l=i+(6-c)*a,u=[],d=[],f=-1;for(let e=s,t=0;e<=l;e+=a,t++){let a=new Date(e).toISOString().slice(0,10),o=Math.floor(t/7),s=t%7,c=e<r||e>i;u.push({day:a,value:c?null:n.has(a)?n.get(a):null,week:o,weekday:s,outside:c});let l=new Date(e).getUTCMonth();!c&&l!==f&&(d.push({week:o,label:F[l]}),f=l)}return{cells:u,weeks:Math.floor((l-s)/a/7)+1,months:d}}function R(e,t,n=4){return e===null||!Number.isFinite(e)?null:e<=0||t<=0?0:D(Math.ceil(e/t*n),1,n)}function z(e,t,n={}){let r=t!==null&&Number.isFinite(t)?t:null,i=e.filter(e=>e.remaining!==null&&Number.isFinite(e.remaining)&&Number.isFinite(e.t)).sort((e,t)=>e.t-t.t),a=i.length?i[i.length-1]:null,o=i.slice(-(n.window??6));if(!a||o.length<2)return{slopePerMs:null,exhaustAt:null,reserveAt:null,remainingAtReset:null,from:a};let s=o.length,c=o.reduce((e,t)=>e+t.t,0)/s,l=o.reduce((e,t)=>e+t.remaining,0)/s,u=0,d=0;for(let e of o)u+=(e.t-c)*(e.remaining-l),d+=(e.t-c)**2;let f=d===0?0:u/d,p=e=>{if(a.remaining<=e)return a.t;if(f>=0||r===null)return null;let t=a.t+(e-a.remaining)/f;return t<=r?t:null},m=n.reserve??null;return{slopePerMs:f,exhaustAt:p(0),reserveAt:m===null?null:p(m),remainingAtReset:r===null?null:Math.max(0,a.remaining+f*Math.max(0,r-a.t)),from:a}}function B(e,t,n,r){return{x:e+n*Math.cos(r),y:t-n*Math.sin(r)}}function V(e,t,n,r,i){let a=D(r,0,1),o=D(i,0,1);if(o<=a)return``;let s=B(e,t,n,Math.PI*(1-a)),c=B(e,t,n,Math.PI*(1-o));return`M${A(s.x)},${A(s.y)} A${n},${n} 0 0 1 ${A(c.x)},${A(c.y)}`}function H(e,t,n){return e===null||!Number.isFinite(e)?`unknown`:e>=n?`danger`:e>=t?`warn`:`ok`}function U(e=typeof document>`u`?null:document.documentElement){return!e||typeof getComputedStyle!=`function`?1:y(Number.parseFloat(getComputedStyle(e).getPropertyValue(`--ui-text-scale`)))}var W=new Set,G=null,K=null;function q(){let e=U();if(e!==G){G=e;for(let e of W)e()}}function J(){G=U();let e=document.documentElement,t=typeof MutationObserver>`u`?null:new MutationObserver(q);t?.observe(e,{attributes:!0,attributeFilter:[`data-ui-scale`,`style`]});let n=typeof requestAnimationFrame==`function`,r=0,i=()=>{if(!n)return q();cancelAnimationFrame(r),r=requestAnimationFrame(q)};return window.addEventListener(`resize`,i),()=>{t?.disconnect(),n&&cancelAnimationFrame(r),window.removeEventListener(`resize`,i)}}function ae(e){return W.add(e),W.size===1&&typeof document<`u`&&(K=J()),()=>{W.delete(e),!(W.size>0)&&(K?.(),K=null,G=null)}}function oe(){return G??U()}function se(){return(0,c.useSyncExternalStore)(ae,oe,()=>1)}var Y={table:`_table_x2yvy_1`,numeric:`_numeric_x2yvy_22`,empty:`_empty_x2yvy_27`};function ce({caption:e,columns:t,rows:n,rowKey:r,emptyMessage:i=`No rows.`}){return(0,l.jsxs)(`table`,{className:Y.table,children:[(0,l.jsx)(`caption`,{className:`visually-hidden`,children:e}),(0,l.jsx)(`thead`,{children:(0,l.jsx)(`tr`,{children:t.map(e=>(0,l.jsx)(`th`,{scope:`col`,className:e.numeric?Y.numeric:void 0,children:e.label},e.key))})}),(0,l.jsxs)(`tbody`,{children:[n.length===0?(0,l.jsx)(`tr`,{children:(0,l.jsx)(`td`,{colSpan:Math.max(1,t.length),className:Y.empty,children:i})}):null,n.map((e,n)=>(0,l.jsx)(`tr`,{children:t.map(t=>(0,l.jsx)(`td`,{className:t.numeric?Y.numeric:void 0,children:t.render(e)},t.key))},r(e,n)))]})]})}var X={plotWrap:`_plotWrap_11912_3`,svg:`_svg_11912_9`,grid:`_grid_11912_15`,axis:`_axis_11912_21`,tick:`_tick_11912_27`,label:`_label_11912_34`,labelStrong:`_labelStrong_11912_40`,line:`_line_11912_47`,wash:`_wash_11912_54`,reference:`_reference_11912_59`,projection:`_projection_11912_66`,marker:`_marker_11912_73`,crosshair:`_crosshair_11912_78`,hit:`_hit_11912_84`,focusable:`_focusable_11912_98`,track:`_track_11912_108`,trackEmpty:`_trackEmpty_11912_122`,noData:`_noData_11912_126`,tooltip:`_tooltip_11912_133`,tooltipTitle:`_tooltipTitle_11912_148`,tooltipRow:`_tooltipRow_11912_153`,tooltipKey:`_tooltipKey_11912_159`,tooltipValue:`_tooltipValue_11912_166`,tooltipMuted:`_tooltipMuted_11912_173`,legend:`_legend_11912_178`,legendItem:`_legendItem_11912_189`,swatch:`_swatch_11912_195`,swatchLine:`_swatchLine_11912_202`,swatchEmpty:`_swatchEmpty_11912_208`,note:`_note_11912_216`,srOnly:`_srOnly_11912_222`,animated:`_animated_11912_235`,monogram:`_monogram_11912_241`,unknownMark:`_unknownMark_11912_249`,swatchHatch:`_swatchHatch_11912_255`,halo:`_halo_11912_266`};function le({items:e,min:t=2}){return e.length<t?null:(0,l.jsx)(`ul`,{className:X.legend,children:e.map(e=>(0,l.jsxs)(`li`,{className:X.legendItem,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,className:e.kind===`line`?X.swatchLine:e.kind===`empty`?X.swatchEmpty:e.kind===`hatch`?X.swatchHatch:X.swatch,style:e.kind===`empty`||e.kind===`hatch`?void 0:{background:e.color}}),e.label]},e.label))})}function ue({left:e,top:t,title:n,rows:r}){return(0,l.jsxs)(`div`,{className:X.tooltip,style:{left:e,top:t},role:`presentation`,children:[(0,l.jsx)(`div`,{className:X.tooltipTitle,children:n}),r.map(e=>(0,l.jsxs)(`div`,{className:X.tooltipRow,children:[e.color?(0,l.jsx)(`span`,{className:X.tooltipKey,style:{background:e.color},"aria-hidden":`true`}):null,(0,l.jsx)(`span`,{children:e.label}),e.value===null?(0,l.jsx)(`span`,{className:`${X.tooltipValue} ${X.tooltipMuted}`,children:`no data`}):(0,l.jsx)(`span`,{className:X.tooltipValue,children:e.value})]},e.key))]})}function de(e,t,n=70){return Math.min(Math.max(e,Math.min(n,t/2)),Math.max(t-n,t/2))}function fe({id:e}){let{size:t,angle:n,strokeWidth:i,stroke:a}=r;return(0,l.jsx)(`pattern`,{id:e,width:t,height:t,patternUnits:`userSpaceOnUse`,patternTransform:`rotate(${n})`,children:(0,l.jsx)(`line`,{x1:0,y1:0,x2:0,y2:t,stroke:a,strokeWidth:i})})}var pe={claude:`C`,codex:`X`,grok:`G`,local:`L`};function me({engine:e,x:t,y:n,height:r}){return(0,l.jsxs)(`g`,{"data-engine":e,"aria-hidden":`true`,children:[(0,l.jsx)(`rect`,{x:t,y:n,width:2,height:r,rx:1,fill:i(e)}),(0,l.jsx)(`text`,{className:X.monogram,x:t+6,y:n+r/2,dy:`0.34em`,children:pe[e]})]})}function he(){return(0,l.jsxs)(`svg`,{width:16,height:16,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:[(0,l.jsx)(`circle`,{cx:3.5,cy:8,r:1.4,fill:`currentColor`}),(0,l.jsx)(`circle`,{cx:8,cy:8,r:1.4,fill:`currentColor`}),(0,l.jsx)(`circle`,{cx:12.5,cy:8,r:1.4,fill:`currentColor`})]})}var Z={frame:`_frame_it6x9_1`,header:`_header_it6x9_11`,actions:`_actions_it6x9_20`,menuWrap:`_menuWrap_it6x9_28`,more:`_more_it6x9_34`,menu:`_menu_it6x9_28`,menuItem:`_menuItem_it6x9_75`,check:`_check_it6x9_97`,hint:`_hint_it6x9_102`,heading:`_heading_it6x9_112`,title:`_title_it6x9_119`,description:`_description_it6x9_125`,plot:`_plot_it6x9_130`,table:`_table_it6x9_136`,caveat:`_caveat_it6x9_141`,state:`_state_it6x9_151`,dark:`_dark_it6x9_159`,darkTitle:`_darkTitle_it6x9_166`,darkBody:`_darkBody_it6x9_172`,unknown:`_unknown_it6x9_178`};function ge(e){return s(e.slice(0,10))}function _e({status:e}){switch(e.kind){case`loading`:return(0,l.jsx)(`p`,{className:Z.state,"aria-busy":`true`,children:`Loading…`});case`empty`:return(0,l.jsx)(`p`,{className:Z.state,children:e.message??`Nothing happened in this window.`});case`dark`:return(0,l.jsxs)(`div`,{className:`${Z.state} ${Z.dark}`,children:[(0,l.jsxs)(`p`,{className:Z.darkTitle,children:[e.subject??`Fleet`,` dark since `,ge(e.since)]}),(0,l.jsx)(`p`,{className:Z.darkBody,children:e.detail??`No runs or proposals have been recorded since then.`})]});case`unknown`:return(0,l.jsxs)(`p`,{className:`${Z.state} ${Z.unknown}`,role:`note`,children:[`Unknown — `,e.reason??`the data source could not be read.`,` Nothing is shown rather than a guess.`]})}}function Q(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||e.isContentEditable}var $=[{view:`chart`,label:`Show as chart`,hint:null},{view:`table`,label:`Show as table`,hint:`T`}];function ve({title:e,view:t,onPick:n}){let[r,i]=(0,c.useState)(!1),[a,o]=(0,c.useState)(0),s=(0,c.useRef)(null),u=(0,c.useRef)(null),d=(0,c.useId)(),f=(0,c.useCallback)(e=>{i(!1),e&&s.current?.focus()},[]);(0,c.useEffect)(()=>{if(!r)return;let e=e=>{let t=e.target;t&&(u.current?.contains(t)||s.current?.contains(t))||i(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[r]),(0,c.useEffect)(()=>{r&&u.current?.querySelectorAll(`[role="menuitemradio"]`)[a]?.focus()},[r,a]);function p(e){o(e),i(!0)}function m(e){(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),p(e.key===`ArrowUp`?$.length-1:0))}function h(e){e.key===`ArrowDown`?(e.preventDefault(),o(e=>(e+1)%$.length)):e.key===`ArrowUp`?(e.preventDefault(),o(e=>(e-1+$.length)%$.length)):e.key===`Home`?(e.preventDefault(),o(0)):e.key===`End`?(e.preventDefault(),o($.length-1)):e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),f(!0)):e.key===`Tab`&&f(!1)}return(0,l.jsxs)(`span`,{className:Z.menuWrap,children:[(0,l.jsx)(`button`,{ref:s,type:`button`,className:Z.more,"aria-label":`${e}: view options`,"aria-haspopup":`menu`,"aria-expanded":r,"aria-controls":r?d:void 0,title:`View options (T toggles the table)`,onClick:()=>r?f(!1):p(Math.max(0,$.findIndex(e=>e.view===t))),onKeyDown:m,children:(0,l.jsx)(he,{})}),r?(0,l.jsx)(`div`,{ref:u,id:d,role:`menu`,"aria-label":`${e} view`,className:Z.menu,onKeyDown:h,children:$.map((e,r)=>(0,l.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":t===e.view,tabIndex:r===a?0:-1,className:Z.menuItem,onClick:()=>{n(e.view),f(!0)},children:[(0,l.jsx)(`span`,{className:Z.check,"aria-hidden":`true`,children:t===e.view?`✓`:``}),(0,l.jsx)(`span`,{children:e.label}),e.hint?(0,l.jsx)(`kbd`,{className:Z.hint,children:e.hint}):null]},e.view))}):null]})}function ye({title:e,description:t,caveat:n,status:r={kind:`ready`},defaultView:i=`chart`,hideToggle:a=!1,actions:o,children:s,table:u,footer:d}){let[f,p]=(0,c.useState)(i),m=(0,c.useId)(),h=r.kind===`ready`,g=h&&!a;function _(e){g&&!e.defaultPrevented&&(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||e.key.toLowerCase()!==`t`||Q(e.target)||(e.preventDefault(),p(e=>e===`chart`?`table`:`chart`)))}return(0,l.jsxs)(`figure`,{className:Z.frame,"aria-labelledby":m,"data-chart-card":``,"data-view":f,onKeyDown:_,children:[(0,l.jsxs)(`figcaption`,{className:Z.header,children:[(0,l.jsxs)(`span`,{className:Z.heading,children:[(0,l.jsx)(`span`,{id:m,className:Z.title,children:e}),t?(0,l.jsx)(`span`,{className:Z.description,children:t}):null]}),o||g?(0,l.jsxs)(`span`,{className:Z.actions,children:[o,g?(0,l.jsx)(ve,{title:e,view:f,onPick:p}):null]}):null]}),n?(0,l.jsx)(`p`,{className:Z.caveat,role:`note`,children:n}):null,h?f===`table`?(0,l.jsx)(`div`,{className:Z.table,children:u}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{className:Z.plot,children:s}),d]}):(0,l.jsx)(_e,{status:r})]})}function be(e,t,n=640){let[r,i]=(0,c.useState)(null),[a,o]=(0,c.useState)(null);return(0,c.useLayoutEffect)(()=>{e.current!==a&&o(e.current)}),(0,c.useLayoutEffect)(()=>{if(t!==void 0)return;let e=a;if(!e)return;let n=()=>{let t=Math.floor(e.getBoundingClientRect().width);t>0&&i(e=>e===t?e:t)};if(n(),typeof ResizeObserver>`u`)return;let r=0,o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=requestAnimationFrame(n)});return o.observe(e),()=>{cancelAnimationFrame(r),o.disconnect()}},[a,t]),Math.max(280,t??r??n)}export{B as A,g as C,ne as D,O as E,j as F,re as I,C as L,N as M,M as N,u as O,ie as P,_ as R,h as S,T,te as _,me as a,H as b,X as c,ee as d,d as f,E as g,L as h,ue as i,z as j,m as k,ce as l,p as m,ye as n,fe as o,k as p,le as r,de as s,be as t,se as u,P as v,b as w,R as x,V as y};
|
|
2
|
-
//# sourceMappingURL=useChartWidth-0APW0BR3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--chart-series-1:var(--data-cat-1);--chart-series-2:var(--data-cat-2);--chart-series-3:var(--data-cat-3);--chart-series-4:var(--data-cat-4);--chart-series-5:var(--data-cat-5);--chart-series-6:var(--data-cat-6);--chart-neutral:var(--status-neutral-solid);--chart-seq-1:var(--data-seq-1);--chart-seq-2:var(--data-seq-2);--chart-seq-3:var(--data-seq-3);--chart-seq-4:var(--data-seq-4);--chart-seq-5:var(--data-seq-5);--chart-seq-6:var(--data-seq-6);--chart-seq-7:var(--data-seq-7);--chart-sequential:var(--chart-seq-5);--chart-sequential-soft:var(--chart-seq-3);--chart-diverging-pos:var(--chart-seq-5);--chart-diverging-neg:var(--status-danger-solid);--chart-diverging-mid:var(--border-strong);--chart-unknown:var(--status-unknown-solid);--chart-unknown-hatch:repeating-linear-gradient(135deg, var(--chart-unknown) 0 1px, transparent 1px 5px);--chart-queued-outline:var(--status-neutral-solid);--chart-grid:var(--border-subtle);--chart-axis:var(--border-strong);--chart-surface:var(--bg-surface);--chart-tooltip-bg:var(--bg-surface-raised);--chart-tooltip-border:var(--border-default);--chart-heat-0:var(--chart-grid);--chart-heat-1:var(--chart-seq-2);--chart-heat-2:var(--chart-seq-3);--chart-heat-3:var(--chart-seq-5);--chart-heat-4:var(--chart-seq-7);--chart-track:var(--chart-seq-1);--chart-quantity-ink:var(--gray-950)}._table_x2yvy_1{border-collapse:collapse;width:100%;font-size:var(--text-xs-size)}._table_x2yvy_1 th,._table_x2yvy_1 td{text-align:left;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border-subtle)}._table_x2yvy_1 th{color:var(--text-tertiary);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.04em;font-size:var(--text-xs-size)}._numeric_x2yvy_22{text-align:right;font-variant-numeric:tabular-nums}._empty_x2yvy_27{color:var(--text-tertiary);text-align:center}._plotWrap_11912_3{width:100%;min-width:0;position:relative}._svg_11912_9{max-width:100%;display:block;overflow:visible}._grid_11912_15{stroke:var(--chart-grid);stroke-width:1px;shape-rendering:crispedges}._axis_11912_21{stroke:var(--chart-axis);stroke-width:1px;shape-rendering:crispedges}._tick_11912_27{font-family:var(--font-ui);font-size:var(--text-xs-size);fill:var(--text-tertiary);font-variant-numeric:tabular-nums}._label_11912_34{font-family:var(--font-ui);font-size:var(--text-xs-size);fill:var(--text-secondary)}._labelStrong_11912_40{font-family:var(--font-ui);font-size:var(--text-xs-size);font-weight:var(--font-weight-medium);fill:var(--text-primary)}._line_11912_47{fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}._wash_11912_54{stroke:none;opacity:.1}._reference_11912_59{fill:none;stroke:var(--text-tertiary);stroke-width:1px;stroke-dasharray:4 3}._projection_11912_66{fill:none;stroke-width:2px;stroke-dasharray:5 4;stroke-linecap:round}._marker_11912_73{stroke:var(--chart-surface);stroke-width:2px}._crosshair_11912_78{stroke:var(--chart-axis);stroke-width:1px;pointer-events:none}._hit_11912_84{fill:#0000;cursor:default}._hit_11912_84:focus{outline:none}._hit_11912_84:focus-visible{stroke:var(--border-focus);stroke-width:2px}._focusable_11912_98:focus{outline:none}._focusable_11912_98:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-sm)}._track_11912_108{fill:var(--chart-track)}._trackEmpty_11912_122{fill:var(--meter-track)}._noData_11912_126{fill:none;stroke:var(--chart-grid);stroke-width:1px;stroke-dasharray:2 2}._tooltip_11912_133{z-index:var(--z-dropdown);pointer-events:none;padding:var(--space-2);border:1px solid var(--chart-tooltip-border);border-radius:var(--radius-sm);background:var(--chart-tooltip-bg);box-shadow:var(--shadow-md);color:var(--text-primary);font-size:var(--text-xs-size);white-space:nowrap;position:absolute;transform:translate(-50%,calc(-100% - 8px))}._tooltipTitle_11912_148{color:var(--text-tertiary);margin-bottom:var(--space-1)}._tooltipRow_11912_153{align-items:center;gap:var(--space-2);display:flex}._tooltipKey_11912_159{border-radius:2px;flex:none;width:8px;height:8px}._tooltipValue_11912_166{padding-left:var(--space-3);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;margin-left:auto}._tooltipMuted_11912_173{color:var(--text-tertiary);font-style:italic}._legend_11912_178{gap:var(--space-1) var(--space-3);margin:var(--space-2) 0 0;font-size:var(--text-xs-size);color:var(--text-secondary);flex-wrap:wrap;padding:0;list-style:none;display:flex}._legendItem_11912_189{align-items:center;gap:var(--space-1);display:inline-flex}._swatch_11912_195{border-radius:2px;flex:none;width:10px;height:10px}._swatchLine_11912_202{flex:none;width:12px;height:2px}._swatchEmpty_11912_208{border:1px dashed var(--chart-axis);border-radius:2px;flex:none;width:10px;height:10px}._note_11912_216{margin:var(--space-2) 0 0;font-size:var(--text-xs-size);color:var(--text-tertiary)}._srOnly_11912_222{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){._animated_11912_235{transition:opacity .12s}}._monogram_11912_241{font-family:var(--font-display);font-size:var(--text-2xs-size);font-weight:var(--font-weight-semibold);fill:var(--text-secondary)}._unknownMark_11912_249{stroke:var(--chart-unknown);stroke-width:1px}._swatchHatch_11912_255{border:1px solid var(--chart-unknown);background:var(--chart-unknown-hatch);border-radius:2px;flex:none;width:10px;height:10px}._halo_11912_266{paint-order:stroke;stroke:var(--chart-surface);stroke-width:3px;stroke-linejoin:round}._frame_it6x9_1{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);min-width:0;padding:var(--card-pad,var(--space-4));margin:0}._header_it6x9_11{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}._actions_it6x9_20{align-items:center;gap:var(--space-2);flex:none;margin-left:auto;display:inline-flex}._menuWrap_it6x9_28{display:inline-flex;position:relative}._more_it6x9_34{width:calc(var(--control-h-xs,20px) + 4px);height:calc(var(--control-h-xs,20px) + 4px);border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}._more_it6x9_34:hover,._more_it6x9_34[aria-expanded=true]{background:var(--bg-hover);color:var(--text-primary)}._more_it6x9_34:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}._menu_it6x9_28{top:calc(100% + var(--space-1));z-index:var(--z-dropdown);min-width:176px;padding:var(--space-1);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface-raised);box-shadow:var(--shadow-menu);flex-direction:column;display:flex;position:absolute;right:0}._menuItem_it6x9_75{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-primary);font:inherit;font-size:var(--text-xs-size);line-height:var(--text-xs-line);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}._menuItem_it6x9_75:hover,._menuItem_it6x9_75:focus-visible{background:var(--bg-hover);outline:none}._check_it6x9_97{width:1em;color:var(--text-secondary)}._hint_it6x9_102{padding:0 var(--space-1);border:1px solid var(--border-subtle);border-radius:var(--radius-xs,3px);color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-2xs-size);margin-left:auto}._heading_it6x9_112{flex-direction:column;gap:2px;min-width:0;display:flex}._title_it6x9_119{font-size:var(--text-sm-size);font-weight:var(--font-weight-semibold);color:var(--text-primary)}._description_it6x9_125{font-size:var(--text-xs-size);color:var(--text-tertiary)}._plot_it6x9_130{width:100%;min-width:0;position:relative}._table_it6x9_136{max-height:360px;overflow:auto}._caveat_it6x9_141{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--status-unknown-bg);color:var(--status-unknown-fg);font-size:var(--text-xs-size);line-height:var(--text-sm-line)}._state_it6x9_151{padding:var(--space-6) var(--space-3);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm-size);margin:0}._dark_it6x9_159{gap:var(--space-1);flex-direction:column;align-items:center;display:flex}._darkTitle_it6x9_166{color:var(--text-secondary);font-weight:var(--font-weight-semibold);margin:0}._darkBody_it6x9_172{font-size:var(--text-xs-size);max-width:44ch;margin:0}._unknown_it6x9_178{color:var(--status-unknown-fg)}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./index-Dk8R-3a7.js";import{K as t,W as n,q as r,tt as i}from"./global-DG1fmn4y.js";import{t as a}from"./VerseConsoleApp-Dq_hREXs.js";var o=e({CODEX_EXPANSIVE_METERING_NOTE:()=>y,ENGINE_LABEL:()=>c,ENGINE_ORDER:()=>s,SEAT_CAPACITY_WORD:()=>S,WINDOW_SOURCE_TEXT:()=>_,firstRunnableModel:()=>b,formatDuration:()=>k,formatElapsed:()=>O,formatRelative:()=>A,groupSeats:()=>E,groupSessions:()=>D,isAbsolutePath:()=>P,isVerseEngine:()=>l,modelLabel:()=>p,modelOptionFor:()=>m,prettyJson:()=>N,projectName:()=>u,seatById:()=>d,seatCapacity:()=>T,seatLabel:()=>f,seatPillLabel:()=>F,seatUnavailableReason:()=>x,seatWindowLabel:()=>w,sessionContextBudget:()=>g,summarizeToolInput:()=>j,truncate:()=>M,windowSourceText:()=>v}),s=[`claude`,`codex`,`grok`,`local`],c={claude:`Claude`,codex:`Codex`,grok:`Grok`,local:`Local`};function l(e){return s.includes(e)}function u(e,t=[]){let n=t.find(t=>t.path===e);return n?n.name:e.split(/[\\/]/).filter(Boolean).at(-1)??e}function d(e,t){return e.find(e=>e.id===t)}function f(e,t){return d(e,t.seatId)?.label??c[t.engine]}function p(e,t){return d(e,t.seatId)?.models.find(e=>e.id===t.model)?.label??t.model}function m(e,n){let r=d(e,n.seatId);if(!r)return null;let i=r.models.find(e=>e.id===n.model);if(i)return i;let a=t(n.model);return r.models.find(e=>t(e.id)===a)??null}function h(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:null}function g(e,t){let a=t.usage,o=t.contextMode??`standard`,s=m(e,t),c={contextTokens:typeof a.contextTokens==`number`&&Number.isFinite(a.contextTokens)?Math.max(0,a.contextTokens):0,exact:a.contextTokensExact!==!1,mode:o,option:s},l=n(s,o),u=h(a.contextWindow);if(u!==null&&(t.engine===`local`||a.contextWindowSource===`runtime`)){let e=h(a.autoCompactAt??null)??i({engine:t.engine,runtimeWindow:u,budget:t.engine===`local`?null:l,autocompactWindow:t.engine===`claude`?r(s,o):null,maxOutputTokens:s?.maxOutputTokens??null}),n=t.engine===`local`?a.contextWindowSource??null:`runtime`;return{...c,contextWindow:u,autoCompactAt:e,source:n}}if(l)return{...c,contextWindow:l.contextWindow,autoCompactAt:l.autoCompactAt,source:s?.windowSource??`fallback`};if(u!==null)return{...c,contextWindow:u,autoCompactAt:h(a.autoCompactAt??null),source:a.contextWindowSource??null};let f=h(d(e,t.seatId)?.contextWindow??null);return{...c,contextWindow:f,autoCompactAt:null,source:f===null?null:`fallback`}}var _={runtime:`reported by the CLI on the last turn`,"provider-catalog":`from this seat's own model catalog`,"cli-catalog":`from the pinned CLI's built-in model table`,documented:`from the provider's published model table`,fallback:`a default estimate — the CLI has not reported the real window yet`};function v(e,t){return t===`local`?`${e===`runtime`?`measured from the local model server`:e===`fallback`?`a default estimate — the model server did not report one`:_[e]}; Verse passes this window to Claude Code for this chat`:_[e]}var y=`OpenAI reportedly also counts requests above 272k tokens at about 2× against plan limits, so a turn near the expansive limit may cost roughly twice that.`;function b(e){return e.models.find(e=>!e.unavailableReason)??null}function x(e){return e.health.state===`unavailable`?e.health.summary??`seat unavailable`:null}var S={ready:`usable`,tight:`tight`,blocked:`blocked`,unread:`no reading`},C=85;function w(e){let t={five_hour:`5-hour window`,seven_day:`weekly window`,codex:`weekly window`};if(t[e])return t[e];let n=/^seven_day_(.+)$/.exec(e);return n?`weekly ${n[1].replace(/_/g,` `)} window`:`${e.replace(/_/g,` `)} window`}function T(e){let t=x(e);if(t!==null)return{cls:`blocked`,usedPercent:null,text:t};let n=e.health.windows.filter(e=>typeof e.usedPercent==`number`&&Number.isFinite(e.usedPercent));if(n.length===0)return{cls:`unread`,usedPercent:null,text:`no capacity reading`};let r=n.reduce((e,t)=>t.usedPercent>e.usedPercent?t:e),i=Math.max(0,Math.min(100,r.usedPercent)),o=w(r.id);return i>=100?{cls:`blocked`,usedPercent:null,text:`${o} limit reached`}:{cls:i>=C?`tight`:`ready`,usedPercent:i,text:`${a(i)} of ${o} used`}}function E(e){return s.map(t=>({engine:t,seats:e.filter(e=>e.engine===t)})).filter(e=>e.seats.length>0)}function D(e,t,n=``){let r=n.trim().toLowerCase(),i=r?e.filter(e=>e.title.toLowerCase().includes(r)||e.projectPath.toLowerCase().includes(r)||e.model.toLowerCase().includes(r)||e.seatId.toLowerCase().includes(r)):[...e],a=new Map;for(let e of i){let t=a.get(e.projectPath)??[];t.push(e),a.set(e.projectPath,t)}let o=[];for(let[e,n]of a)n.sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt)),o.push({projectPath:e,name:u(e,t),enrolled:t.find(t=>t.path===e)?.enrolled??!1,sessions:n});return o.sort((e,t)=>t.sessions[0].updatedAt.localeCompare(e.sessions[0].updatedAt)),o}function O(e){if(!Number.isFinite(e)||e<0)return`0s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}function k(e){return!Number.isFinite(e)||e<0?`—`:e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:O(e)}function A(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.round((t-n)/1e3);if(r<0||r<60)return`now`;let i=Math.floor(r/60);if(i<60)return`${i}m`;let a=Math.floor(i/60);if(a<24)return`${a}h`;let o=Math.floor(a/24);return o<7?`${o}d`:new Date(n).toLocaleDateString([],{month:`short`,day:`numeric`})}function j(e){if(e==null)return``;if(typeof e==`string`)return M(e,96);if(typeof e!=`object`)return M(String(e),96);let t=e;for(let e of[`command`,`cmd`,`file_path`,`path`,`pattern`,`query`,`url`,`description`,`prompt`,`text`]){let n=t[e];if(typeof n==`string`&&n.trim())return M(n.trim().replace(/\s+/g,` `),96)}let n=Object.keys(t);if(n.length===0)return``;let r=t[n[0]],i=typeof r==`string`?r:JSON.stringify(r);return M(`${n[0]}: ${i??``}`.replace(/\s+/g,` `),96)}function M(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}function N(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function P(e){return/^(?:\/|~(?:\/|$)|[a-zA-Z]:[\\/]|\\\\)/.test(e)&&![...e].some(e=>e.charCodeAt(0)<32||e.charCodeAt(0)>=127&&e.charCodeAt(0)<=159)}function F(e,t){let n=f(e,t),r=p(e,t);return!r||n.toLowerCase().includes(r.toLowerCase())?n:`${n} · ${r}`}export{j as C,g as S,v as T,d as _,b as a,x as b,A as c,P as d,l as f,u as g,N as h,_ as i,E as l,m,c as n,k as o,p,S as r,O as s,y as t,D as u,T as v,o as w,w as x,F as y};
|
|
2
|
-
//# sourceMappingURL=verse-model-yHPwjf-7.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verse-model-yHPwjf-7.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/verse-model.ts"],"sourcesContent":["/**\n * routes/verse/verse-model.ts — small pure helpers shared by the Verse\n * components (labels, grouping, health → tone). No React, no I/O.\n */\nimport type { VerseEngine, VerseModelOption, VerseProject, VerseSeat, VerseSeatHealth, VerseSession } from '../../data/api-types.js';\nimport type { VerseContextMode, VerseWindowSource } from '../../../core/verse/types.js';\nimport type { Tone } from '../../components/primitives/StatusBadge.js';\n// context-math is PURE and browser-safe by contract (its only import is\n// type-only), so a value import here does not drag node into the bundle.\nimport { budgetFor, canonicalModelId, claudeAutocompactFlag, reconcileAutoCompactAt } from '../../../core/verse/context-math.js';\nimport { usedPercentText } from './percent-text.js';\n\nexport const ENGINE_ORDER: readonly VerseEngine[] = ['claude', 'codex', 'grok', 'local'];\n\nexport const ENGINE_LABEL: Record<VerseEngine, string> = {\n claude: 'Claude',\n codex: 'Codex',\n grok: 'Grok',\n local: 'Local',\n};\n\nexport function isVerseEngine(value: string): value is VerseEngine {\n return (ENGINE_ORDER as readonly string[]).includes(value);\n}\n\nexport function projectName(path: string, projects: readonly VerseProject[] = []): string {\n const known = projects.find((p) => p.path === path);\n if (known) return known.name;\n return path.split(/[\\\\/]/).filter(Boolean).at(-1) ?? path;\n}\n\nexport function seatById(seats: readonly VerseSeat[], seatId: string): VerseSeat | undefined {\n return seats.find((s) => s.id === seatId);\n}\n\nexport function seatLabel(seats: readonly VerseSeat[], session: Pick<VerseSession, 'seatId' | 'engine'>): string {\n return seatById(seats, session.seatId)?.label ?? ENGINE_LABEL[session.engine];\n}\n\nexport function modelLabel(seats: readonly VerseSeat[], session: Pick<VerseSession, 'seatId' | 'model'>): string {\n const seat = seatById(seats, session.seatId);\n return seat?.models.find((m) => m.id === session.model)?.label ?? session.model;\n}\n\n/**\n * The seat's catalog entry for a session's model. Exact id first; then the\n * canonical form, because a session created before the alias fix stores\n * `claude-opus-5.5` while today's catalog lists `claude-opus-5-5` (context-math\n * `VERSE_MODEL_ID_ALIASES`) — the record keeps its id, the lookup must not miss.\n */\nexport function modelOptionFor(seats: readonly VerseSeat[], session: Pick<VerseSession, 'seatId' | 'model'>): VerseModelOption | null {\n const seat = seatById(seats, session.seatId);\n if (!seat) return null;\n const exact = seat.models.find((m) => m.id === session.model);\n if (exact) return exact;\n const canonical = canonicalModelId(session.model);\n return seat.models.find((m) => canonicalModelId(m.id) === canonical) ?? null;\n}\n\n/** Everything the meter, the composer's cost hint and the advice banners read. */\nexport interface SessionContextBudget {\n /** Live occupancy as stored — UNCLAMPED; only the drawing clamps. */\n contextTokens: number;\n contextWindow: number | null;\n autoCompactAt: number | null;\n /** False when `contextTokens` is an upper bound (codex before its rollout is read). */\n exact: boolean;\n /** Where `contextWindow` came from; null when nothing on the record says. */\n source: VerseWindowSource | null;\n mode: VerseContextMode;\n /** The catalog option the session's model maps to on its seat, when listed. */\n option: VerseModelOption | null;\n}\n\nfunction positive(value: number | null | undefined): number | null {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null;\n}\n\n/**\n * The window a session is measured against, and where it compacts.\n *\n * Precedence (docs/VERSE-CONTEXT.md, \"honesty rules\"):\n *\n * 0. LOCAL — the window STORED on the record, whatever its source. Verse\n * SETS a local seat's window: the claude adapter passes the stored\n * `usage.contextWindow` as `CLAUDE_CODE_MAX_CONTEXT_TOKENS`, and the\n * engine refreshes that stored value from live discovery before each\n * turn. The seat's CURRENT option can differ (another dispatch lane,\n * another resident num_ctx), and drawing it measured the chat against a\n * window the CLI was never told — \"past the 66k window\" for a chat the\n * CLI compacts at 229k. The meter and the CLI must quote one number.\n * 1. RUNTIME — the CLI reported the window for this session's last turn\n * (`usage.contextWindowSource === 'runtime'`). Nothing outranks what the\n * CLI said it is actually running with (e.g. Claude Code clamping a 1M\n * model to 200k when long-context credit runs out).\n * 2. CATALOG — the seat's CURRENT option for the session's model, in the\n * session's mode. Current rather than stored so a corrected catalog (a\n * fixed window table, a mode switch) shows up without waiting for a turn.\n * 3. STORED — whatever the record carries (every pre-3.9 session).\n * 4. The seat's default window, marked `fallback`.\n *\n * A compaction point is only ever DERIVED from a window it belongs to: a\n * runtime window without a stored point is reconciled with context-math's\n * per-engine formula, never paired with a catalog point for another window.\n */\nexport function sessionContextBudget(\n seats: readonly VerseSeat[],\n session: Pick<VerseSession, 'seatId' | 'model' | 'usage' | 'engine' | 'contextMode'>,\n): SessionContextBudget {\n const usage = session.usage;\n // No UI-side legacy rule: the engine materialises a pre-3.9 Claude\n // record's mode (and its budget) on startup and on every touch, so every\n // record reaching the browser already names the mode it runs in.\n const mode: VerseContextMode = session.contextMode ?? 'standard';\n const option = modelOptionFor(seats, session);\n const base = {\n contextTokens: typeof usage.contextTokens === 'number' && Number.isFinite(usage.contextTokens) ? Math.max(0, usage.contextTokens) : 0,\n exact: usage.contextTokensExact !== false,\n mode,\n option,\n };\n const catalog = budgetFor(option, mode);\n\n const stored = positive(usage.contextWindow);\n if (stored !== null && (session.engine === 'local' || usage.contextWindowSource === 'runtime')) {\n const storedPoint = positive(usage.autoCompactAt ?? null);\n const autoCompactAt = storedPoint ?? reconcileAutoCompactAt({\n engine: session.engine,\n runtimeWindow: stored,\n // A local window is the whole budget (no --autocompact); pairing it\n // with the seat's current option would borrow another window's point.\n budget: session.engine === 'local' ? null : catalog,\n autocompactWindow: session.engine === 'claude' ? claudeAutocompactFlag(option, mode) : null,\n maxOutputTokens: option?.maxOutputTokens ?? null,\n });\n const source = session.engine === 'local' ? usage.contextWindowSource ?? null : 'runtime';\n return { ...base, contextWindow: stored, autoCompactAt, source };\n }\n if (catalog) {\n return { ...base, contextWindow: catalog.contextWindow, autoCompactAt: catalog.autoCompactAt, source: option?.windowSource ?? 'fallback' };\n }\n if (stored !== null) {\n return { ...base, contextWindow: stored, autoCompactAt: positive(usage.autoCompactAt ?? null), source: usage.contextWindowSource ?? null };\n }\n const seatWindow = positive(seatById(seats, session.seatId)?.contextWindow ?? null);\n return { ...base, contextWindow: seatWindow, autoCompactAt: null, source: seatWindow !== null ? 'fallback' : null };\n}\n\n/** Context window for a session — see {@link sessionContextBudget} for the precedence. */\nexport function contextWindowFor(\n seats: readonly VerseSeat[],\n session: Pick<VerseSession, 'seatId' | 'model' | 'usage' | 'engine' | 'contextMode'>,\n): number | null {\n return sessionContextBudget(seats, session).contextWindow;\n}\n\n/** Plain words for a window's provenance — the meter's tooltip and the resources panel share them. */\nexport const WINDOW_SOURCE_TEXT: Record<VerseWindowSource, string> = {\n runtime: 'reported by the CLI on the last turn',\n 'provider-catalog': \"from this seat's own model catalog\",\n 'cli-catalog': \"from the pinned CLI's built-in model table\",\n documented: \"from the provider's published model table\",\n fallback: 'a default estimate — the CLI has not reported the real window yet',\n};\n\n/**\n * The same provenance, per engine. On a LOCAL seat nothing is \"reported by\n * the CLI\": Verse measures the window from the model server (llama-server\n * slot, Ollama residency/defaults) and TELLS Claude Code to use it, so the\n * sentence names both halves.\n */\nexport function windowSourceText(source: VerseWindowSource, engine: VerseEngine | null | undefined): string {\n if (engine !== 'local') return WINDOW_SOURCE_TEXT[source];\n const from = source === 'runtime' ? 'measured from the local model server'\n : source === 'fallback' ? 'a default estimate — the model server did not report one'\n : WINDOW_SOURCE_TEXT[source];\n return `${from}; Verse passes this window to Claude Code for this chat`;\n}\n\n/**\n * The one sentence about Codex's surcharge above its standard window, for\n * every surface that prices Expansive on codex (the mode menu, the\n * \"Expansive could help\" chip, the new-chat mode selector, the handoff\n * dialog). Worded as REPORTED because that is all it is: the sources\n * docs/VERSE-CONTEXT.md §2.3 cites say GPT-5.6-class requests above 272k\n * count about 2× against plan limits, and Verse has no reading of its own\n * that confirms the multiplier. It multiplies the size ratio the copy quotes\n * (the ratio of the two compaction points), which is why it says \"twice that\".\n */\nexport const CODEX_EXPANSIVE_METERING_NOTE =\n 'OpenAI reportedly also counts requests above 272k tokens at about 2× against plan limits, so a turn near the expansive limit may cost roughly twice that.';\n\n/** The first model on a seat that can actually run (skips ones listed with an `unavailableReason`). */\nexport function firstRunnableModel(seat: VerseSeat): VerseModelOption | null {\n return seat.models.find((m) => !m.unavailableReason) ?? null;\n}\n\nexport function healthTone(state: VerseSeatHealth['state']): Tone {\n switch (state) {\n case 'ready':\n return 'success';\n case 'degraded':\n return 'warning';\n case 'unavailable':\n return 'danger';\n default:\n return 'unknown';\n }\n}\n\nexport function seatUnavailableReason(seat: VerseSeat): string | null {\n if (seat.health.state !== 'unavailable') return null;\n return seat.health.summary ?? 'seat unavailable';\n}\n\n// ---------------------------------------------------------------------------\n// Seat capacity — \"which account can I actually use right now\", at the point\n// the choice is made\n// ---------------------------------------------------------------------------\n\n/**\n * The four answers a picker needs. Same vocabulary as the Usage section's\n * `CapacityClass` so the two surfaces never use different words for one state.\n */\nexport type SeatCapacityClass = 'ready' | 'tight' | 'blocked' | 'unread';\n\n/** Word, never colour alone (DESIGN-V2 §6). */\nexport const SEAT_CAPACITY_WORD: Record<SeatCapacityClass, string> = {\n ready: 'usable',\n tight: 'tight',\n blocked: 'blocked',\n unread: 'no reading',\n};\n\n/** Above this share of the binding window a seat is worth flagging. */\nconst TIGHT_PERCENT = 85;\n\nexport interface SeatCapacityNote {\n cls: SeatCapacityClass;\n /**\n * The binding window's percent when it is a real measurement. Null for an\n * unread seat AND at the 100 ceiling, where the upstream value may be the\n * provider's \"limit reached\" sentinel rather than a reading\n * (docs/VERSE-TELEMETRY-V2.md) — and \"limit reached\" is true under either.\n */\n usedPercent: number | null;\n /** One short phrase for an option label, a pill title, a menu row. */\n text: string;\n}\n\n/** `seven_day_fable` → `weekly (fable)`; `five_hour` → `5-hour`. */\nexport function seatWindowLabel(id: string): string {\n const known: Record<string, string> = {\n five_hour: '5-hour window',\n seven_day: 'weekly window',\n codex: 'weekly window',\n };\n if (known[id]) return known[id];\n const perModel = /^seven_day_(.+)$/.exec(id);\n if (perModel) return `weekly ${perModel[1]!.replace(/_/g, ' ')} window`;\n return `${id.replace(/_/g, ' ')} window`;\n}\n\n/**\n * What a seat's own health says about whether a turn sent to it will land.\n *\n * This exists because the seat picker showed NOTHING: it annotated an option\n * only when `health.state === 'unavailable'`, and Claude's `health` is\n * `unknown` by construction (docs/VERSE-TELEMETRY-V2.md). So a Claude seat\n * whose binding weekly window reads 100% used appeared as an ordinary,\n * enabled, unannotated choice, and the exhaustion was discovered at turn time\n * — exactly the failure the Usage section was built to prevent.\n *\n * A `blocked` seat is MARKED, never disabled: a used-up window can coexist\n * with a spendable credit balance, so refusing the choice would be a stronger\n * claim than the data supports.\n */\nexport function seatCapacity(seat: VerseSeat): SeatCapacityNote {\n const reason = seatUnavailableReason(seat);\n if (reason !== null) return { cls: 'blocked', usedPercent: null, text: reason };\n\n const measured = seat.health.windows.filter(\n (w): w is { id: string; usedPercent: number; resetsAt: string | null } =>\n typeof w.usedPercent === 'number' && Number.isFinite(w.usedPercent),\n );\n // No window reported a number. That is an unanswered question, not a zero —\n // an empty meter would read \"plenty left\".\n if (measured.length === 0) return { cls: 'unread', usedPercent: null, text: 'no capacity reading' };\n\n const binding = measured.reduce((a, b) => (b.usedPercent > a.usedPercent ? b : a));\n const pct = Math.max(0, Math.min(100, binding.usedPercent));\n const where = seatWindowLabel(binding.id);\n if (pct >= 100) return { cls: 'blocked', usedPercent: null, text: `${where} limit reached` };\n return {\n cls: pct >= TIGHT_PERCENT ? 'tight' : 'ready',\n usedPercent: pct,\n text: `${usedPercentText(pct)} of ${where} used`,\n };\n}\n\n/** Seats grouped in the fixed engine order; empty engines are omitted. */\nexport function groupSeats(seats: readonly VerseSeat[]): Array<{ engine: VerseEngine; seats: VerseSeat[] }> {\n return ENGINE_ORDER.map((engine) => ({ engine, seats: seats.filter((s) => s.engine === engine) })).filter((g) => g.seats.length > 0);\n}\n\nexport interface SessionGroup {\n projectPath: string;\n name: string;\n enrolled: boolean;\n sessions: VerseSession[];\n}\n\n/** Sidebar grouping: by project, most recently touched project first, sessions newest first. */\nexport function groupSessions(sessions: readonly VerseSession[], projects: readonly VerseProject[], query = ''): SessionGroup[] {\n const q = query.trim().toLowerCase();\n const filtered = q\n ? sessions.filter((s) =>\n s.title.toLowerCase().includes(q) ||\n s.projectPath.toLowerCase().includes(q) ||\n s.model.toLowerCase().includes(q) ||\n s.seatId.toLowerCase().includes(q))\n : [...sessions];\n const byProject = new Map<string, VerseSession[]>();\n for (const s of filtered) {\n const list = byProject.get(s.projectPath) ?? [];\n list.push(s);\n byProject.set(s.projectPath, list);\n }\n const groups: SessionGroup[] = [];\n for (const [projectPath, list] of byProject) {\n list.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));\n groups.push({\n projectPath,\n name: projectName(projectPath, projects),\n enrolled: projects.find((p) => p.path === projectPath)?.enrolled ?? false,\n sessions: list,\n });\n }\n groups.sort((a, b) => b.sessions[0]!.updatedAt.localeCompare(a.sessions[0]!.updatedAt));\n return groups;\n}\n\nexport function formatElapsed(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) return '0s';\n const s = Math.floor(ms / 1000);\n if (s < 60) return `${s}s`;\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ${s % 60}s`;\n const h = Math.floor(m / 60);\n return `${h}h ${m % 60}m`;\n}\n\nexport function formatDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) return '—';\n if (ms < 1000) return `${Math.round(ms)}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n return formatElapsed(ms);\n}\n\n/**\n * Sidebar rows carry a right-aligned relative time. Short by design — the\n * row has ~5ch for it — and it degrades to a date rather than \"412d\".\n * `now` is injectable so the format is testable without faking the clock.\n */\nexport function formatRelative(iso: string, now: number = Date.now()): string {\n const then = Date.parse(iso);\n if (!Number.isFinite(then)) return '';\n const seconds = Math.round((now - then) / 1000);\n if (seconds < 0) return 'now';\n if (seconds < 60) return 'now';\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes}m`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours}h`;\n const days = Math.floor(hours / 24);\n if (days < 7) return `${days}d`;\n return new Date(then).toLocaleDateString([], { month: 'short', day: 'numeric' });\n}\n\nexport function formatClock(iso: string): string {\n const d = new Date(iso);\n if (Number.isNaN(d.getTime())) return '';\n return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n}\n\n/** One-line description of a tool call for a collapsed card header. */\nexport function summarizeToolInput(input: unknown): string {\n if (input === null || input === undefined) return '';\n if (typeof input === 'string') return truncate(input, 96);\n if (typeof input !== 'object') return truncate(String(input), 96);\n const record = input as Record<string, unknown>;\n const preferred = ['command', 'cmd', 'file_path', 'path', 'pattern', 'query', 'url', 'description', 'prompt', 'text'];\n for (const key of preferred) {\n const v = record[key];\n if (typeof v === 'string' && v.trim()) return truncate(v.trim().replace(/\\s+/g, ' '), 96);\n }\n const keys = Object.keys(record);\n if (keys.length === 0) return '';\n const first = record[keys[0]!];\n const rendered = typeof first === 'string' ? first : JSON.stringify(first);\n return truncate(`${keys[0]}: ${rendered ?? ''}`.replace(/\\s+/g, ' '), 96);\n}\n\nexport function truncate(value: string, max: number): string {\n return value.length > max ? `${value.slice(0, max - 1)}…` : value;\n}\n\n/** Pretty JSON for tool cards; falls back to String() for non-serializable input. */\nexport function prettyJson(value: unknown): string {\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value, null, 2) ?? '';\n } catch {\n return String(value);\n }\n}\n\n/**\n * Accepts POSIX/Windows absolute paths and `~/...`. The server rewrites the\n * home directory as `~` in every outbound payload (sanitizePublicJson) and\n * expands it again on the way in, so a `~/` project from bootstrap is valid.\n */\nexport function isAbsolutePath(value: string): boolean {\n return /^(?:\\/|~(?:\\/|$)|[a-zA-Z]:[\\\\/]|\\\\\\\\)/.test(value) &&\n ![...value].some((c) => c.charCodeAt(0) < 32 || (c.charCodeAt(0) >= 127 && c.charCodeAt(0) <= 159));\n}\n\n/**\n * Seat pill text: \"<seat> · <model>\", collapsing to just the seat when the\n * model label is already contained in it (local seats expose one model whose\n * name is the seat name), so the pill never reads \"Qwen3-Coder · Qwen3-Coder\".\n */\nexport function seatPillLabel(seats: readonly VerseSeat[], ref: Pick<VerseSession, 'seatId' | 'engine' | 'model'>): string {\n const seat = seatLabel(seats, ref);\n const model = modelLabel(seats, ref);\n if (!model || seat.toLowerCase().includes(model.toLowerCase())) return seat;\n return `${seat} · ${model}`;\n}\n"],"mappings":"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"}
|
|
@@ -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-DG1fmn4y.js";import{a as o,g as s,o as c}from"./workbench-types-DzN-5trg.js";var l=`verse-bootstrap`,u=`verse-sessions`,d={key:l,fetch:e=>r(`/api/verse/bootstrap`,e)},f={key:u,fetch:e=>r(`/api/verse/sessions`,e)};function p(e,t=``){return`/api/verse/sessions/${encodeURIComponent(e)}${t}`}function m(e,t){return r(p(e),t)}var h=class extends Error{constructor(){super(`Unlock actions with the mutation token before chatting.`),this.name=`VerseMutationLockedError`}};async function g(n,r){let i=e();if(!i)throw new h;let o=await a(n,r,i);return t(),o}function _(){n(u),n(l)}async function v(e){let t=await g(`/api/verse/sessions`,e);return _(),t}async function y(e,t){let r={text:t},i=await g(p(e,`/turns`),r);return n(u),i}async function b(e){await g(p(e,`/cancel`),{}),n(u)}async function x(e){await g(p(e,`/delete`),{}),_()}async function S(e,t){let r=await g(p(e,`/rename`),{title:t});return n(u),r}var C=`verse-workspaces`,w=`verse-autonomy-scope`,T={key:C,fetch:e=>r(`/api/verse/workspaces`,e)},E={key:w,fetch:e=>r(`/api/verse/autonomy-scope`,e)};function D(e,t){return r(p(e,`/roots`),t)}function O(){n(C),n(w),n(l)}async function k(e){let t=await g(`/api/verse/workspaces`,e);return O(),t}async function A(e,t){let n=await g(`/api/verse/workspaces/${encodeURIComponent(e)}/update`,t);return O(),n}async function j(e){await g(`/api/verse/workspaces/${encodeURIComponent(e)}/delete`,{}),O()}async function M(e,t){await g(`/api/verse/workspaces/priority`,{path:e,priority:t}),O()}async function N(e){await g(`/api/verse/workspaces/focus`,{sectionId:e}),O()}var P=`verse-activity`,F=`verse-session-meta`;async function I(e,t){try{return await r(e,t)}catch(e){if(e instanceof i&&e.status===404)return null;throw e}}var L={key:P,fetch:e=>I(o,e)},R={key:F,fetch:e=>I(s,e)};async function z(e,t){let r={};typeof t.pinned==`boolean`&&(r.pinned=t.pinned),typeof t.archived==`boolean`&&(r.archived=t.archived);let i=await g(`${s}/${encodeURIComponent(e)}`,r);return n(F),i}async function B(t,n){let r=e();if(!r)return!1;let i={sessionId:t,turnCount:n};try{return await a(c,i,r),!0}catch{return!1}}export{p as C,R as S,T,z as _,v as a,E as b,j as c,_ as d,B as f,M as g,N as h,b as i,m as l,y as m,u as n,k as o,S as p,h as r,x as s,l as t,D as u,A as v,f as w,d as x,L as y};
|
|
2
|
-
//# sourceMappingURL=verse-queries-2PxoBISm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verse-queries-2PxoBISm.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/verse-queries.ts"],"sourcesContent":["/**\n * routes/verse/verse-queries.ts — every /api/verse/* call the Verse console\n * makes. Reads are QueryDefs consumed through useQuery (cache-backed, so a\n * sidebar refresh never blanks the list); writes are wrapped like\n * data/mutations.ts's helpers — they pull the held mutation token from\n * auth-store, touch the hold on success, and invalidate the cache keys they\n * obviously affect. Nothing here ever sees launcher commands or env: the\n * server strips those before any payload leaves it (docs/VERSE-CONTRACT-V1).\n */\nimport type {\n VerseAutonomyScopeView,\n VerseBootstrap,\n VerseCreateSessionRequest,\n VerseRootPriority,\n VerseSession,\n VerseSessionDetail,\n VerseSessionRootsResponse,\n VerseTurnRequest,\n VerseTurnResponse,\n VerseWorkspace,\n VerseWorkspaceCreateRequest,\n VerseWorkspacesResponse,\n VerseWorkspaceUpdateRequest,\n} from '../../data/api-types.js';\nimport type {\n VerseActivityResponse,\n VerseActivitySeenRequest,\n VerseSessionMeta,\n VerseSessionMetaResponse,\n VerseSessionMetaUpdate,\n} from '../../../core/verse/workbench-types.js';\nimport { VERSE_ACTIVITY_PATH, VERSE_ACTIVITY_SEEN_PATH, VERSE_SESSION_META_PATH } from '../../../core/verse/workbench-types.js';\nimport { getMutationToken, touchMutationHold } from '../../data/auth-store.js';\nimport { ApiError, apiGet, apiPost } from '../../data/client.js';\nimport { invalidate } from '../../data/cache.js';\nimport type { QueryDef } from '../../data/queries.js';\n\nexport const VERSE_BOOTSTRAP_KEY = 'verse-bootstrap';\nexport const VERSE_SESSIONS_KEY = 'verse-sessions';\n\nexport const verseBootstrapQuery: QueryDef<VerseBootstrap> = {\n key: VERSE_BOOTSTRAP_KEY,\n fetch: (signal) => apiGet<VerseBootstrap>('/api/verse/bootstrap', signal),\n};\n\nexport const verseSessionsQuery: QueryDef<VerseSession[]> = {\n key: VERSE_SESSIONS_KEY,\n fetch: (signal) => apiGet<VerseSession[]>('/api/verse/sessions', signal),\n};\n\nexport function verseSessionPath(sessionId: string, suffix = ''): string {\n return `/api/verse/sessions/${encodeURIComponent(sessionId)}${suffix}`;\n}\n\nexport function fetchVerseSessionDetail(sessionId: string, signal?: AbortSignal): Promise<VerseSessionDetail> {\n return apiGet<VerseSessionDetail>(verseSessionPath(sessionId), signal);\n}\n\nexport class VerseMutationLockedError extends Error {\n constructor() {\n super('Unlock actions with the mutation token before chatting.');\n this.name = 'VerseMutationLockedError';\n }\n}\n\nasync function post<T>(path: string, body: unknown): Promise<T> {\n const token = getMutationToken();\n if (!token) throw new VerseMutationLockedError();\n const result = await apiPost<T>(path, body, token);\n touchMutationHold();\n return result;\n}\n\n/** Sidebar + resources panel both read these; refresh them after any write. */\nexport function invalidateVerseLists(): void {\n invalidate(VERSE_SESSIONS_KEY);\n invalidate(VERSE_BOOTSTRAP_KEY);\n}\n\nexport async function createVerseSession(req: VerseCreateSessionRequest): Promise<VerseSession> {\n const session = await post<VerseSession>('/api/verse/sessions', req);\n invalidateVerseLists();\n return session;\n}\n\nexport async function sendVerseTurn(sessionId: string, text: string): Promise<VerseTurnResponse> {\n const body: VerseTurnRequest = { text };\n const response = await post<VerseTurnResponse>(verseSessionPath(sessionId, '/turns'), body);\n invalidate(VERSE_SESSIONS_KEY);\n return response;\n}\n\nexport async function cancelVerseTurn(sessionId: string): Promise<void> {\n await post<{ ok: true }>(verseSessionPath(sessionId, '/cancel'), {});\n invalidate(VERSE_SESSIONS_KEY);\n}\n\nexport async function deleteVerseSession(sessionId: string): Promise<void> {\n await post<{ ok: true }>(verseSessionPath(sessionId, '/delete'), {});\n invalidateVerseLists();\n}\n\nexport async function renameVerseSession(sessionId: string, title: string): Promise<VerseSession> {\n const session = await post<VerseSession>(verseSessionPath(sessionId, '/rename'), { title });\n invalidate(VERSE_SESSIONS_KEY);\n return session;\n}\n\n// ---------------------------------------------------------------------------\n// Workspaces (V2.2)\n// ---------------------------------------------------------------------------\n\nexport const VERSE_WORKSPACES_KEY = 'verse-workspaces';\nexport const VERSE_AUTONOMY_SCOPE_KEY = 'verse-autonomy-scope';\n\nexport const verseWorkspacesQuery: QueryDef<VerseWorkspacesResponse> = {\n key: VERSE_WORKSPACES_KEY,\n fetch: (signal) => apiGet<VerseWorkspacesResponse>('/api/verse/workspaces', signal),\n};\n\n/**\n * Enrolled repos, ordered by section focus and priority. Kept on its own key\n * from `verseScopeQuery` (which is the raw registry) so a re-rank refreshes\n * the ORDER without re-reading enrollment — and so it is obvious in the cache\n * that these are two different facts.\n */\nexport const verseAutonomyScopeQuery: QueryDef<VerseAutonomyScopeView> = {\n key: VERSE_AUTONOMY_SCOPE_KEY,\n fetch: (signal) => apiGet<VerseAutonomyScopeView>('/api/verse/autonomy-scope', signal),\n};\n\n/**\n * Per-root identity for one session: branch, dirty state, remote, whether the\n * engine can reach each root and whether the autonomous lane would.\n *\n * Deliberately NOT cached by session id alone at module scope — a branch goes\n * stale the moment a turn commits, so the panel refetches it per open.\n */\nexport function fetchVerseSessionRoots(sessionId: string, signal?: AbortSignal): Promise<VerseSessionRootsResponse> {\n return apiGet<VerseSessionRootsResponse>(verseSessionPath(sessionId, '/roots'), signal);\n}\n\nfunction invalidateWorkspaces(): void {\n invalidate(VERSE_WORKSPACES_KEY);\n invalidate(VERSE_AUTONOMY_SCOPE_KEY);\n invalidate(VERSE_BOOTSTRAP_KEY);\n}\n\nexport async function createVerseWorkspace(req: VerseWorkspaceCreateRequest): Promise<VerseWorkspace> {\n const workspace = await post<VerseWorkspace>('/api/verse/workspaces', req);\n invalidateWorkspaces();\n return workspace;\n}\n\nexport async function updateVerseWorkspace(id: string, patch: VerseWorkspaceUpdateRequest): Promise<VerseWorkspace> {\n const workspace = await post<VerseWorkspace>(`/api/verse/workspaces/${encodeURIComponent(id)}/update`, patch);\n invalidateWorkspaces();\n return workspace;\n}\n\nexport async function deleteVerseWorkspace(id: string): Promise<void> {\n await post<{ ok: true }>(`/api/verse/workspaces/${encodeURIComponent(id)}/delete`, {});\n invalidateWorkspaces();\n}\n\nexport async function setVerseRootPriority(path: string, priority: VerseRootPriority): Promise<void> {\n await post<unknown>('/api/verse/workspaces/priority', { path, priority });\n invalidateWorkspaces();\n}\n\nexport async function setVerseFocusSection(sectionId: string | null): Promise<void> {\n await post<unknown>('/api/verse/workspaces/focus', { sectionId });\n invalidateWorkspaces();\n}\n\n// ---------------------------------------------------------------------------\n// 3.10 — activity + per-chat meta (C1's routes; C2's sidebar reads them)\n// ---------------------------------------------------------------------------\n//\n// Both route families are mounted lazily (C0's mount table): on a build where\n// C1's module has not landed they answer a plain 404. That is \"this server\n// has no activity yet\", not an error the sidebar should paint red — so a 404\n// reads as `null` and every consumer falls back to what the session list\n// alone can say (running dot from `status`, no pins, no unread).\n\nexport const VERSE_ACTIVITY_KEY = 'verse-activity';\nexport const VERSE_SESSION_META_KEY = 'verse-session-meta';\n\nasync function getOrNull<T>(path: string, signal?: AbortSignal): Promise<T | null> {\n try {\n return await apiGet<T>(path, signal);\n } catch (err) {\n if (err instanceof ApiError && err.status === 404) return null;\n throw err;\n }\n}\n\n/**\n * The poll-shaped read (no `since`): running chats with their live line and\n * the Needs-you items. Completions are C1's concern (its cursor loop feeds\n * the rail and the native notifications); the sidebar needs only the present.\n */\nexport const verseActivityQuery: QueryDef<VerseActivityResponse | null> = {\n key: VERSE_ACTIVITY_KEY,\n fetch: (signal) => getOrNull<VerseActivityResponse>(VERSE_ACTIVITY_PATH, signal),\n};\n\nexport const verseSessionMetaQuery: QueryDef<VerseSessionMetaResponse | null> = {\n key: VERSE_SESSION_META_KEY,\n fetch: (signal) => getOrNull<VerseSessionMetaResponse>(VERSE_SESSION_META_PATH, signal),\n};\n\n/** Pin / archive one chat. Unknown keys are a 400 on the server, so only the two known ones are ever sent. */\nexport async function setVerseSessionMeta(sessionId: string, update: VerseSessionMetaUpdate): Promise<VerseSessionMeta> {\n const body: VerseSessionMetaUpdate = {};\n if (typeof update.pinned === 'boolean') body.pinned = update.pinned;\n if (typeof update.archived === 'boolean') body.archived = update.archived;\n const meta = await post<VerseSessionMeta>(`${VERSE_SESSION_META_PATH}/${encodeURIComponent(sessionId)}`, body);\n invalidate(VERSE_SESSION_META_KEY);\n return meta;\n}\n\n/**\n * \"The operator has read this chat up to `turnCount`.\" Best-effort and SILENT:\n * it runs only when a token is already held (opening a chat must never raise\n * the token dialog), and a failure is swallowed — the sidebar keeps its own\n * optimistic read state, so the unread dot clears either way.\n */\nexport async function markVerseSessionSeen(sessionId: string, turnCount: number): Promise<boolean> {\n const token = getMutationToken();\n if (!token) return false;\n const body: VerseActivitySeenRequest = { sessionId, turnCount };\n try {\n // apiPost, not post(): reading a chat is not operator ACTIVITY, so it\n // must not extend the mutation hold the way a real write does.\n await apiPost<unknown>(VERSE_ACTIVITY_SEEN_PATH, body, token);\n return true;\n } catch {\n return false;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{tt as e}from"./global-DG1fmn4y.js";var t=[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],n=new Set([`thinking-delta`,`thinking-progress`,`progress`,`status`]);function r(e){return n.has(e.type)}var i=65536,a=12e3,o=[`This conversation is about to continue in a fresh session that has none of its context.`,`Write the handoff note that new session should start from. Do not edit files or run commands for this — only write the note.`,``,`Cover, concretely:`,`- The goal, and what "done" looks like.`,`- Decisions made so far, each with the reason it was made.`,`- Current state: what is finished, what is half-done, what is untested.`,`- Files changed and anything not yet committed.`,`- How to verify the work (exact commands).`,`- Open questions, risks, and approaches already tried that did not work.`,``,`Keep it under 600 words. Prefer file paths and commands over prose.`].join(`
|
|
2
|
-
`),s=65536,c=139264,l=6144,u={turnId:null,startedAt:null,progress:null,thinking:null,notice:null,settledTurnId:null},d={session:null,events:[],lastSeq:0,loaded:!1,loadError:null,stream:`idle`,live:u},f=new Map,p=new Map,m=new Map,h=new Map,g=new Set,_=new Map,v=new Set;function y(e){if(e!==null){let t=_.get(e);if(t)for(let e of[...t])e()}else for(let e of[..._.values()])for(let t of[...e])t();for(let e of[...g])e()}function b(e){return g.add(e),()=>g.delete(e)}function ee(e,t){let n=_.get(e);return n||(n=new Set,_.set(e,n)),n.add(t),()=>{let n=_.get(e);n&&(n.delete(t),n.size===0&&_.delete(e))}}function x(e){return v.add(e),()=>v.delete(e)}function S(e){return{sessionId:e.sessionId,session:e.session,events:e.events,lastSeq:e.lastSeq,loaded:e.loaded,loadError:e.loadError,stream:e.stream}}function C(e){let t=f.get(e);return t||(t={sessionId:e,...d},f.set(e,t),p.set(e,S(t))),t}function w(e,t,n){f.set(e,t);let r=p.get(e);(!r||n||r.session!==t.session||r.loaded!==t.loaded||r.loadError!==t.loadError||r.stream!==t.stream)&&p.set(e,S(t))}function T(e,t,n=!1){w(e,{...C(e),...t},n),y(e)}var E={sessionId:``,...d},te=S(E);function ne(e){return e?C(e):E}function re(e){return e?(C(e),p.get(e)):te}function D(e){return e?C(e).live:u}var O={items:[],live:!1,usage:null,segments:[]};function k(e){if(!e)return O;let t=C(e),n=h.get(e);if(n&&n.events===t.events)return n.transcript;let r=n?.cache??ce(),i=le(t.events,{cache:r,thinkingStats:m.get(e)});return h.set(e,{events:t.events,transcript:i,cache:r}),i}function A(e,t,n){let r=C(e),i=ae(r.events,n),a=P(t,i),o=r.session&&se(r.session,a)?r.session:a,s=i!==r.events,c=s||o!==r.session?H(r.live,i,o):r.live;(s||o!==r.session||!r.loaded||r.loadError!==null||c!==r.live)&&(w(e,{...r,session:o,events:i,lastSeq:i.length?Math.max(r.lastSeq,i[i.length-1].seq):r.lastSeq,loaded:!0,loadError:null,live:c},s),y(e))}function j(e,t){T(e,{loadError:t,loaded:!0})}function M(e,t){C(e).stream!==t&&T(e,{stream:t})}function N(e,t,n){T(e,{session:P(t,C(e).events,n)})}function P(e,t,n){if(e.status!==`running`)return e;let r=-1,i=n??null;if(!n){for(let e of t)(e.type===`user-message`||e.type===`turn-started`)&&(r=e.seq,i=e.turnId);if(i===null)return e}let a=null,o=null;for(let e of t)e.seq<=r||(e.type===`error`&&e.turnId===i&&(o=e.message),(e.type===`turn-done`||e.type===`cancelled`)&&e.turnId===i&&(a=e));if(!a)return e;let s=a.type===`turn-done`&&!a.ok&&o!==null;return{...e,status:s?`error`:`idle`,lastError:s?o:null,updatedAt:a.at>e.updatedAt?a.at:e.updatedAt}}function F(e,t){let n=C(e);n.session&&n.session.status!==t&&T(e,{session:{...n.session,status:t}})}function I(e,t){let n=C(e),i=n.events,a=!1,o=n.lastSeq,s=n.session,c=n.live,l=0,u=!1,d=!1,f=!1,p=Date.now();for(let n of t){if(r(n)){let e=B(c,n,p);e!==c&&(c=e,f=!0);continue}if(!Number.isFinite(n.seq))continue;let t=i.length>0?i[i.length-1].seq:-1/0;if(n.seq>t)a||=(i=i.slice(),!0),i.push(n);else{let e=J(i,n.seq);if(e.found)continue;a||=(i=i.slice(),!0),i.splice(e.index,0,n)}l+=1,o=Math.max(o,n.seq),n.type!==`text-delta`&&(d=!0),(n.type===`turn-done`||n.type===`cancelled`||n.type===`error`)&&(u=!0),s&&=L(s,n);let m=V(c,n,p,e);m!==c&&(c=m)}return l===0&&!f?{applied:0,settled:!1,liveChanged:!1}:(w(e,{...n,events:i,lastSeq:o,session:s,live:c},d),y(e),{applied:l,settled:u,liveChanged:f})}function L(e,t){switch(t.type){case`turn-started`:return{...e,status:`running`,lastError:null,updatedAt:t.at};case`usage`:return{...e,usage:ie(e,t.usage),updatedAt:t.at};case`context`:return{...e,usage:G(e,t),updatedAt:t.at};case`compaction`:return{...e,compactionCount:(e.compactionCount??0)+1,updatedAt:t.at};case`turn-done`:return{...e,status:t.ok?`idle`:e.lastError?`error`:`idle`,turnCount:e.turnCount+1,nativeSessionId:t.nativeSessionId??e.nativeSessionId,updatedAt:t.at};case`error`:return{...e,status:`error`,lastError:t.message,updatedAt:t.at};case`cancelled`:return{...e,status:`idle`,updatedAt:t.at};default:return e}}function R(e,t){let n=Date.parse(e);return Number.isFinite(n)?n:t}function z(e,t,n){return e.turnId===t?e:{...u,turnId:t,startedAt:n,settledTurnId:e.settledTurnId}}function B(e,t,n){if(t.turnId!==null&&t.turnId===e.settledTurnId)return e;let r=t.turnId===null?e:z(e,t.turnId,n);switch(t.type){case`thinking-delta`:{if(t.text.length===0)return r;let e=r.thinking&&r.thinking.turnId===t.turnId?{...r.thinking,text:r.thinking.text+t.text}:{turnId:t.turnId,text:t.text,startedAt:n,estimatedTokens:null};return{...r,thinking:e,notice:null}}case`thinking-progress`:{let e=r.thinking&&r.thinking.turnId===t.turnId?{...r.thinking,estimatedTokens:t.estimatedTokens}:{turnId:t.turnId,text:``,startedAt:n,estimatedTokens:t.estimatedTokens};return{...r,thinking:e}}case`progress`:return{...r,progress:{phase:t.phase,tool:typeof t.tool==`string`&&t.tool.length>0?t.tool:null,elapsedMs:t.elapsedMs,outTokens:t.outTokens??null,tokPerSec:t.tokPerSec??null,receivedAt:n}};case`status`:return{...r,notice:{kind:t.kind,message:t.message,at:t.at,receivedAt:n}};default:return r}}function V(e,t,n,r){switch(t.type){case`turn-started`:return t.turnId===e.settledTurnId?e:e.turnId===t.turnId?{...e,startedAt:R(t.at,e.startedAt??n)}:{...u,turnId:t.turnId,startedAt:R(t.at,n),settledTurnId:e.settledTurnId};case`thinking`:{let i=e.thinking&&e.thinking.turnId===t.turnId?e.thinking:null;if(i){let e=m.get(r);e||(e=new Map,m.set(r,e)),e.set(t.seq,{durationMs:typeof t.durationMs==`number`?t.durationMs:Math.max(0,n-i.startedAt),estimatedTokens:i.estimatedTokens})}return i||e.notice?{...e,thinking:i?null:e.thinking,notice:null}:e}case`text-delta`:case`assistant-message`:case`tool-use`:case`tool-result`:return e.notice&&(t.turnId===e.turnId||e.turnId===null)?{...e,notice:null}:e;case`turn-done`:case`cancelled`:return{...u,settledTurnId:t.turnId};default:return e}}function H(e,t,n){let r=null,i=e.settledTurnId;for(let e=t.length-1;e>=0;--e){let n=t[e];if(n.type===`turn-done`||n.type===`cancelled`){i=n.turnId;break}if(n.type===`turn-started`){r=n;break}}return r?n&&n.status!==`running`?e.turnId===null?e:{...u,settledTurnId:e.settledTurnId}:e.turnId===r.turnId?e:{...u,turnId:r.turnId,startedAt:R(r.at,Date.now()),settledTurnId:e.settledTurnId}:e.turnId!==null&&e.turnId===i?{...u,settledTurnId:i}:e.settledTurnId===i?e:{...e,settledTurnId:i}}function ie(e,t){let n=e.usage,r={...n,inputTokens:n.inputTokens+t.inputTokens,outputTokens:n.outputTokens+t.outputTokens,cacheReadTokens:n.cacheReadTokens+t.cacheReadTokens,cacheCreationTokens:n.cacheCreationTokens+t.cacheCreationTokens,contextTokens:t.contextTokens},i=typeof t.contextWindow==`number`&&t.contextWindow>0?t.contextWindow:null,a=t.contextWindowSource!==void 0||e.engine!==`local`;return i!==null&&a&&(r.contextWindow=i),t.contextWindowSource!==void 0&&(r.contextWindowSource=t.contextWindowSource),t.autoCompactAt!==void 0&&(r.autoCompactAt=t.autoCompactAt),t.contextTokensExact===!1?r.contextTokensExact=!1:t.contextWindowSource!==void 0&&delete r.contextTokensExact,r}var U=new Set([`runtime`,`provider-catalog`,`cli-catalog`,`documented`,`fallback`]);function W(e){return typeof e==`string`&&U.has(e)?e:null}function G(t,n){let r=t.usage,i={...r,contextTokens:Math.max(0,Math.floor(n.contextTokens)),contextTokensExact:n.exact},a=typeof n.contextWindow==`number`&&n.contextWindow>0?n.contextWindow:null,o=W(n.contextWindowSource);return a===null||t.engine===`local`&&o===null?(n.autoCompactAt!==void 0&&n.autoCompactAt!==null&&(i.autoCompactAt=n.autoCompactAt),i):(i.contextWindow=a,i.contextWindowSource=o??`runtime`,n.autoCompactAt===void 0?a!==r.contextWindow&&(i.autoCompactAt=e({engine:t.engine,runtimeWindow:a,budget:r.contextWindow?{contextWindow:r.contextWindow,autoCompactAt:r.autoCompactAt??null}:null})):i.autoCompactAt=n.autoCompactAt,i)}function K(e){let t=null;for(let n of e)(n.type===`usage`||n.type===`turn-done`||n.type===`cancelled`||n.type===`context`&&n.turnId!==null)&&typeof n.at==`string`&&(t===null||n.at>t)&&(t=n.at);return t}function q(e){let t=f.delete(e);p.delete(e),h.delete(e),m.delete(e);for(let t of[...v])t({kind:`forget`,sessionId:e});t&&y(e)}function J(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1,a=e[i].seq;if(a===t)return{found:!0,index:i};a<t?n=i+1:r=i}return{found:!1,index:n}}function Y(e){let t=!0;for(let n=0;n<e.length;n+=1){let r=e[n].seq;if(!Number.isFinite(r)||n>0&&r<=e[n-1].seq){t=!1;break}}if(t)return e.slice();let n=new Map;for(let t of e)Number.isFinite(t.seq)&&!n.has(t.seq)&&n.set(t.seq,t);return[...n.values()].sort((e,t)=>e.seq-t.seq)}function ae(e,t){if(t.length===0)return e;let n=Y(t);if(n.length===0)return e;if(e.length===0)return n;if(n[0].seq>e[e.length-1].seq)return e.concat(n);let r=[],i=0,a=0,o=0;for(;a<e.length||o<n.length;){let t=e[a],s=n[o];s===void 0||t!==void 0&&t.seq<s.seq?(r.push(t),a+=1):t===void 0||s.seq<t.seq?(r.push(s),i+=1,o+=1):(r.push(t),a+=1,o+=1)}return i===0?e:r}function oe(e,t){if(Object.is(e,t))return!0;if(!e||!t||typeof e!=`object`||typeof t!=`object`||Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.is(e[r],t[r]))return!1;return!0}function se(e,t){if(e===t)return!0;let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>oe(e[n],t[n]))}function X(e,t){let n=Date.parse(e),r=Date.parse(t);return Number.isFinite(n)&&Number.isFinite(r)?Math.max(0,r-n):null}function ce(){return{segments:new Map}}function Z(e,t,n,r){let i=[],a=new Map,o=[],s=[],c=null,l=null,u=null,d=()=>{c&&=(i.push({kind:`assistant`,key:c.key,turnId:c.turnId,at:c.at,text:c.text,streaming:!1}),null)};for(let f=t;f<n;f+=1){let t=e[f];switch(t.type){case`user-message`:d(),i.push({kind:`user`,key:`u-${t.seq}`,turnId:t.turnId,at:t.at,text:t.text});break;case`turn-started`:l=!0;break;case`text-delta`:c&&c.turnId!==t.turnId&&d(),c||={turnId:t.turnId,at:t.at,text:``,key:`d-${t.seq}`},c.text+=t.text;break;case`assistant-message`:c=null,i.push({kind:`assistant`,key:`a-${t.seq}`,turnId:t.turnId,at:t.at,text:t.text,streaming:!1});break;case`thinking`:{d();let e=r?.get(t.seq);i.push({kind:`thinking`,key:`t-${t.seq}`,turnId:t.turnId,at:t.at,text:t.text,redacted:t.redacted===!0,durationMs:typeof t.durationMs==`number`&&Number.isFinite(t.durationMs)&&t.durationMs>=0?t.durationMs:e?.durationMs??null,estimatedTokens:e?.estimatedTokens??null,thinkingKind:t.kind??null});break}case`tool-use`:d(),a.set(t.toolUseId,i.length),s.push(t.toolUseId),i.push({kind:`tool`,key:`tu-${t.seq}`,turnId:t.turnId,at:t.at,toolUseId:t.toolUseId,name:t.name,input:t.input,result:null,durationMs:null});break;case`tool-result`:{let e=a.get(t.toolUseId),n=e===void 0?void 0:i[e];n&&n.kind===`tool`?i[e]={...n,result:{output:t.output,isError:t.isError},durationMs:X(n.at,t.at)}:(o.push(t.toolUseId),i.push({kind:`tool`,key:`tr-${t.seq}`,turnId:t.turnId,at:t.at,toolUseId:t.toolUseId,name:`tool`,input:null,result:{output:t.output,isError:t.isError},durationMs:null}));break}case`usage`:u=t.usage;break;case`compaction`:i.push({kind:`compaction`,key:`k-${t.seq}`,turnId:t.turnId,at:t.at,trigger:t.trigger,preTokens:t.preTokens,postTokens:t.postTokens,durationMs:t.durationMs});break;case`error`:d(),i.push({kind:`error`,key:`e-${t.seq}`,turnId:t.turnId,at:t.at,message:t.message,code:typeof t.code==`string`&&t.code?t.code:null});break;case`cancelled`:d(),l=!1,i.push({kind:`cancelled`,key:`c-${t.seq}`,turnId:t.turnId,at:t.at});break;case`turn-done`:d(),l=!1,i.push({kind:`turn-done`,key:`td-${t.seq}`,turnId:t.turnId,at:t.at,ok:t.ok,durationMs:t.durationMs});break;case`recovered`:i.push({kind:`recovered`,key:`r-${t.seq}`,turnId:t.turnId,at:t.at,how:t.how,message:t.message});break;case`history-truncated`:i.push({kind:`truncated`,key:`h-${t.seq}`,turnId:null,at:t.at,droppedBefore:t.droppedBefore})}}return{items:i,pending:c,liveEffect:l,usage:u,orphanResults:o,toolUseIds:s}}function Q(e,t,n){let r=t.pending;return r?{key:e,items:[...t.items,{kind:`assistant`,key:r.key,turnId:r.turnId,at:r.at,text:r.text,streaming:n}]}:{key:e,items:t.items}}function le(e,t={}){let{cache:n,thinkingStats:r}=t;if(e.length===0)return{items:[],live:!1,usage:null,segments:[]};let i=[0];for(let t=1;t<e.length;t+=1)e[t].type===`user-message`&&i.push(t);let a=[],o=new Set;for(let t=0;t<i.length;t+=1){let s=i[t],c=t+1<i.length?i[t+1]:e.length,l=e[s].seq,u=e[c-1].seq,d=c-s,f=`s-${l}`;o.add(f);let p=n?.segments.get(f);if(p&&p.firstSeq===l&&p.lastSeq===u&&p.count===d){a.push({key:f,build:p.build,cached:p});continue}let m=Z(e,s,c,r),h={firstSeq:l,lastSeq:u,count:d,build:m,finalized:null};n?.segments.set(f,h),a.push({key:f,build:m,cached:h})}if(n)for(let e of[...n.segments.keys()])o.has(e)||n.segments.delete(e);if(a.length>1){let t=new Set;for(let n of a){if(n.build.orphanResults.some(e=>t.has(e)))return $(e,r);for(let e of n.build.toolUseIds)t.add(e)}}let s=!1,c=null;for(let e of a)e.build.liveEffect!==null&&(s=e.build.liveEffect),e.build.usage!==null&&(c=e.build.usage);let l=[],u=[];for(let e=0;e<a.length;e+=1){let t=a[e],n=e===a.length-1&&s,r;t.cached?.finalized&&t.cached.finalized.streaming===n?r=t.cached.finalized.segment:(r=Q(t.key,t.build,n),t.cached&&(t.cached.finalized={streaming:n,segment:r})),l.push(r);for(let e of r.items)u.push(e)}return{items:u,live:s,usage:c,segments:l}}function $(e,t){let n=Z(e,0,e.length,t),r=n.liveEffect??!1,i=Q(`s-${e[0].seq}`,n,r);return{items:i.items,live:r,usage:n.usage,segments:[i]}}function ue(e){let t=[],n=[],r=()=>{if(n.length===0)return;let e=n.length;for(;e>0&&n[e-1].kind===`thinking`;)--e;let r=n.slice(0,e),i=n.slice(e);if(r.filter(e=>e.kind===`tool`).length>=2)t.push(de(r));else for(let e of r)t.push(e);for(let e of i)t.push(e);n=[]};for(let i of e){if((i.kind===`tool`||i.kind===`thinking`)&&(n.length===0||n[0].turnId===i.turnId)){n.push(i);continue}r(),i.kind===`tool`||i.kind===`thinking`?n.push(i):t.push(i)}return r(),t}function de(e){let t=new Map,n=0,r=!1;for(let i of e)i.kind===`tool`&&(t.set(i.name,(t.get(i.name)??0)+1),i.result===null?r=!0:i.result.isError&&(n+=1));let i=[...t.values()].reduce((e,t)=>e+t,0),a=[...t.entries()].map(([e,t])=>t>1?`${e} ×${t}`:e).join(`, `),o=X(e[0].at,e[e.length-1].at);return{kind:`toolGroup`,key:`g-${e[0].key}`,turnId:e[0].turnId,at:e[0].at,items:e,toolCount:i,summary:a,errorCount:n,pending:r,spanMs:o}}function fe(e){return e==null||!Number.isFinite(e)?`—`:Math.round(e)<1e3?String(Math.round(e)):Math.round(e/1e3)<1e3?`${Math.round(e/1e3)}k`:`${(e/1e6).toFixed(1).replace(/\.0$/,``)}M`}export{c as C,l as S,x as _,re as a,o as b,ue as c,j as d,N as f,b as g,ee as h,D as i,K as l,M as m,q as n,ne as o,F as p,fe as r,k as s,I as t,A as u,t as v,s as w,i as x,a as y};
|
|
3
|
-
//# sourceMappingURL=verse-store-DHTuZpYa.js.map
|