@ashlr/hub 3.11.5 → 3.13.0
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 +153 -0
- package/README.md +29 -16
- package/dist/authority-surface.json +91 -45
- package/dist/build-identity.json +2 -2
- package/dist/cli/authority.d.ts +145 -33
- package/dist/cli/authority.js +1196 -313
- package/dist/cli/authority.js.map +1 -1
- package/dist/cli/cloud.js +12 -3
- package/dist/cli/cloud.js.map +1 -1
- package/dist/core/authority/protected-paths.js +11 -0
- package/dist/core/authority/protected-paths.js.map +1 -1
- package/dist/core/authority/resident.d.ts +101 -0
- package/dist/core/authority/resident.js +246 -0
- package/dist/core/authority/resident.js.map +1 -0
- package/dist/core/authority/trust-roots.js +7 -1
- package/dist/core/authority/trust-roots.js.map +1 -1
- package/dist/core/authority/types.d.ts +43 -0
- package/dist/core/authority/types.js +6 -0
- package/dist/core/authority/types.js.map +1 -1
- package/dist/core/cloud/budget.js +11 -1
- package/dist/core/cloud/budget.js.map +1 -1
- package/dist/core/cloud/cloud-api.d.ts +25 -2
- package/dist/core/cloud/cloud-api.js +139 -5
- package/dist/core/cloud/cloud-api.js.map +1 -1
- package/dist/core/cloud/pr-actions.d.ts +93 -0
- package/dist/core/cloud/pr-actions.js +436 -0
- package/dist/core/cloud/pr-actions.js.map +1 -0
- package/dist/core/cloud/pr-preview.d.ts +128 -0
- package/dist/core/cloud/pr-preview.js +228 -0
- package/dist/core/cloud/pr-preview.js.map +1 -0
- package/dist/core/cloud/store.d.ts +2 -0
- package/dist/core/cloud/store.js +28 -0
- package/dist/core/cloud/store.js.map +1 -1
- package/dist/core/cloud/timeline-api.d.ts +24 -0
- package/dist/core/cloud/timeline-api.js +46 -0
- package/dist/core/cloud/timeline-api.js.map +1 -0
- package/dist/core/cloud/timeline-types.d.ts +62 -0
- package/dist/core/cloud/timeline-types.js +36 -0
- package/dist/core/cloud/timeline-types.js.map +1 -0
- package/dist/core/cloud/timeline.d.ts +102 -0
- package/dist/core/cloud/timeline.js +919 -0
- package/dist/core/cloud/timeline.js.map +1 -0
- package/dist/core/cloud/tracker.js +67 -0
- package/dist/core/cloud/tracker.js.map +1 -1
- package/dist/core/cloud/types.d.ts +38 -0
- package/dist/core/cloud/types.js +1 -1
- package/dist/core/cloud/types.js.map +1 -1
- package/dist/core/daemon/service-install-authority.d.ts +10 -2
- package/dist/core/daemon/service-install-authority.js +14 -5
- package/dist/core/daemon/service-install-authority.js.map +1 -1
- package/dist/core/daemon/service.d.ts +15 -0
- package/dist/core/daemon/service.js +26 -0
- package/dist/core/daemon/service.js.map +1 -1
- package/dist/core/fleet/cloud-intake.d.ts +95 -0
- package/dist/core/fleet/cloud-intake.js +557 -0
- package/dist/core/fleet/cloud-intake.js.map +1 -0
- package/dist/core/fleet/dispatch-router.d.ts +13 -0
- package/dist/core/fleet/dispatch-router.js +32 -8
- package/dist/core/fleet/dispatch-router.js.map +1 -1
- package/dist/core/fleet/fleet-merge-state.d.ts +10 -0
- package/dist/core/fleet/fleet-merge-state.js.map +1 -1
- package/dist/core/fleet/host-merge.d.ts +5 -0
- package/dist/core/fleet/host-merge.js +11 -0
- package/dist/core/fleet/host-merge.js.map +1 -1
- package/dist/core/fleet/merge-gates.d.ts +8 -0
- package/dist/core/fleet/merge-gates.js +25 -5
- package/dist/core/fleet/merge-gates.js.map +1 -1
- package/dist/core/fleet/standing-merge-pass.js +30 -0
- package/dist/core/fleet/standing-merge-pass.js.map +1 -1
- package/dist/core/fleet/tick-hooks-live.d.ts +9 -0
- package/dist/core/fleet/tick-hooks-live.js +44 -5
- package/dist/core/fleet/tick-hooks-live.js.map +1 -1
- package/dist/core/fleet/verify-check-run.d.ts +90 -0
- package/dist/core/fleet/verify-check-run.js +274 -0
- package/dist/core/fleet/verify-check-run.js.map +1 -0
- package/dist/core/routing/budget-api.d.ts +11 -0
- package/dist/core/routing/budget-api.js +64 -8
- package/dist/core/routing/budget-api.js.map +1 -1
- package/dist/core/routing/budget-store.d.ts +22 -1
- package/dist/core/routing/budget-store.js +22 -8
- package/dist/core/routing/budget-store.js.map +1 -1
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +8 -2
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +7 -1
- package/dist/core/verse/account-health.js +9 -3
- package/dist/core/verse/account-health.js.map +1 -1
- package/dist/core/verse/activity-api.d.ts +5 -1
- package/dist/core/verse/activity-api.js +62 -14
- package/dist/core/verse/activity-api.js.map +1 -1
- package/dist/core/verse/authority-api.d.ts +9 -1
- package/dist/core/verse/authority-api.js +82 -2
- package/dist/core/verse/authority-api.js.map +1 -1
- package/dist/core/verse/seat-readiness.d.ts +25 -0
- package/dist/core/verse/seat-readiness.js +43 -6
- package/dist/core/verse/seat-readiness.js.map +1 -1
- package/dist/core/verse/verse-api.d.ts +3 -1
- package/dist/core/verse/verse-api.js +6 -0
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-DffwPklw.js → ActionMenu-Dwjk6rUQ.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-DffwPklw.js.map → ActionMenu-Dwjk6rUQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-cVYTAsfB.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-CxzE6ekM.js.map → Advanced-cVYTAsfB.js.map} +1 -1
- package/dist/core/web/public/next/assets/App-IsaWDsdF.js +7 -0
- package/dist/core/web/public/next/assets/{App-DFlp-vdv.js.map → App-IsaWDsdF.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-DDqeSrty.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-Ct2O605-.js.map → AppsSection-DDqeSrty.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js → AreaTrend-C32rUaxm.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js.map → AreaTrend-C32rUaxm.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-CmSSTHVe.css +1 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-CpFYS3tQ.js +3 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-CpFYS3tQ.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomySection-Dwn8UtOy.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-BTg7yVa1.js.map → AutonomySection-Dwn8UtOy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js → BranchBar-ISZ7xUCj.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js.map → BranchBar-ISZ7xUCj.js.map} +1 -1
- package/dist/core/web/public/next/assets/BudgetControl-BARVp-En.js +2 -0
- package/dist/core/web/public/next/assets/BudgetControl-BARVp-En.js.map +1 -0
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js → Button-DtE0rlWD.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js.map → Button-DtE0rlWD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js → CapacityStrip-DKbKA_Aa.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js.map → CapacityStrip-DKbKA_Aa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js → ChartFrame-DK_BDXCt.js} +2 -2
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js.map → ChartFrame-DK_BDXCt.js.map} +1 -1
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js.map +1 -0
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js → CloudBudgetForm-CvjK4Oh6.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js.map → CloudBudgetForm-CvjK4Oh6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js → CommandPalette-DzPsth0u.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js.map → CommandPalette-DzPsth0u.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js +3 -0
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js.map +1 -0
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js → ConfirmDialog-CLUhzaBj.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js.map → ConfirmDialog-CLUhzaBj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js → DeleteChatDialog-C_eDhV8b.js} +2 -2
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js.map → DeleteChatDialog-C_eDhV8b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js → Dialog-BRd_B9OE.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js.map → Dialog-BRd_B9OE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js → DiffPane-Cpr9soB2.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js.map → DiffPane-Cpr9soB2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js → DiffViewer-CNwd0W3Q.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js.map → DiffViewer-CNwd0W3Q.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-BcEq2qaS.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-BPqyhtCP.js.map → DockHost-BcEq2qaS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js → EmptyState-DsN1H6MC.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js.map → EmptyState-DsN1H6MC.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js → Epistemic-fycQTBRO.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js.map → Epistemic-fycQTBRO.js.map} +1 -1
- package/dist/core/web/public/next/assets/EvidenceTimeline-PBDAiSuG.css +1 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-sCCAdnBK.js +2 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-sCCAdnBK.js.map +1 -0
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js → FleetSection-BG8iGraG.js} +3 -3
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js.map → FleetSection-BG8iGraG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js → Funnel-B88_wpA4.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js.map → Funnel-B88_wpA4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js → GearTray-CpDt0xwj.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js.map → GearTray-CpDt0xwj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js → GrowthSection-BvZezOsX.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js.map → GrowthSection-BvZezOsX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js → HandoffDialog-B1G6gQyk.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js.map → HandoffDialog-B1G6gQyk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js → Input-CI0yBHmn.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js.map → Input-CI0yBHmn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js → LeaderCard-BxxiEg4e.js} +2 -2
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js.map → LeaderCard-BxxiEg4e.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js → MatrixHeatmap-iPFEU2Tv.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js.map → MatrixHeatmap-iPFEU2Tv.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-nuXer4K-.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-D1tDvlRa.js.map → McpSection-nuXer4K-.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js → MessageMarkdown-BCe4TsXk.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js.map → MessageMarkdown-BCe4TsXk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js → MessageMarkdownRenderer-DL3LU5kL.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js.map → MessageMarkdownRenderer-DL3LU5kL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js → Meter-b69LM0mU.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js.map → Meter-b69LM0mU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js → MindSection-Dc5v5rH3.js} +2 -2
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js.map → MindSection-Dc5v5rH3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js → MutationTokenDialog-Bm34BNVV.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js.map → MutationTokenDialog-Bm34BNVV.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js +3 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouList-CH6Mq-E_.css +1 -0
- package/dist/core/web/public/next/assets/NeedsYouList-D5Kk549g.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouList-eBOlJr0b.js.map → NeedsYouList-D5Kk549g.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js → NewChatDialog-BqFTWgHU.js} +2 -2
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js.map → NewChatDialog-BqFTWgHU.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-DcDsguAM.js +3 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-DcDsguAM.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingGate-BZafM1Vf.js +3 -0
- package/dist/core/web/public/next/assets/{OnboardingGate-DrDEVBqw.js.map → OnboardingGate-BZafM1Vf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js → PreviewPane-zT3gK9TD.js} +2 -2
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js.map → PreviewPane-zT3gK9TD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js → ProviderLogo-AwHn2sKm.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js.map → ProviderLogo-AwHn2sKm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js → RailStatus-xHrovWvI.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js.map → RailStatus-xHrovWvI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js → RefreshIndicator-SEFZlMB2.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js.map → RefreshIndicator-SEFZlMB2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js → ResourcePoolConsoleApp-CAxPQ4sZ.js} +3 -3
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js.map → ResourcePoolConsoleApp-CAxPQ4sZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js +3 -0
- package/dist/core/web/public/next/assets/{ResourcesChrome-C2ZrA7la.js.map → ResourcesChrome-BnhnEdJe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js → ResourcesDrawer-BAFGodny.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js.map → ResourcesDrawer-BAFGodny.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js → RouteErrorBoundary-C8WGiixc.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js.map → RouteErrorBoundary-C8WGiixc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js → RunInCloudAction-1-IPLYhf.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js.map → RunInCloudAction-1-IPLYhf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js → SeatSelector-DpwNiX8F.js} +2 -2
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js.map → SeatSelector-DpwNiX8F.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js → Segmented-Wt1ATod9.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js.map → Segmented-Wt1ATod9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js → Select-By-V9lMc.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js.map → Select-By-V9lMc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js → SessionGate-WROS02tK.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js.map → SessionGate-WROS02tK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js → SessionInsightChip-DNUcruwp.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js.map → SessionInsightChip-DNUcruwp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js → SessionSearch-UHtt7a8f.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js.map → SessionSearch-UHtt7a8f.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js → SettingsSection-Bf74l0Gj.js} +2 -2
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js.map → SettingsSection-Bf74l0Gj.js.map} +1 -1
- package/dist/core/web/public/next/assets/SetupChecklist-BhZpFLsj.css +1 -0
- package/dist/core/web/public/next/assets/SetupChecklist-CzpEcfOl.js +2 -0
- package/dist/core/web/public/next/assets/SetupChecklist-CzpEcfOl.js.map +1 -0
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js → Sheet-HkBOBMTT.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js.map → Sheet-HkBOBMTT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js → ShortcutsOverlay-DiigiT8H.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js.map → ShortcutsOverlay-DiigiT8H.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js +3 -0
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js → Slider-DaEDws-b.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js.map → Slider-DaEDws-b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js → StatTile-CTX41O6y.js} +2 -2
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js.map → StatTile-CTX41O6y.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js → StatusBadge-CXG3iNL4.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js.map → StatusBadge-CXG3iNL4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js → StepBand-jJTqYIdX.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js.map → StepBand-jJTqYIdX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js → Surface-5bNA08tK.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js.map → Surface-5bNA08tK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js → Swimlane-LrslsGxw.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js.map → Swimlane-LrslsGxw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js → Switch-BmCzfFnu.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js.map → Switch-BmCzfFnu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js → Tag-WSUIaMVy.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js.map → Tag-WSUIaMVy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js → TerminalPane-BVFgYX6K.js} +5 -5
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js.map → TerminalPane-BVFgYX6K.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js → UniverseConsoleApp-BpphLqoz.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js.map → UniverseConsoleApp-BpphLqoz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js → UniverseView-DbpbSMwO.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js.map → UniverseView-DbpbSMwO.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js → UsageSection-CUlaKtws.js} +3 -3
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js.map → UsageSection-CUlaKtws.js.map} +1 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js.map +1 -0
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js → Workspace-RXy0pqp6.js} +5 -5
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js.map → Workspace-RXy0pqp6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js → actions-BZTidCXZ.js} +2 -2
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js.map → actions-BZTidCXZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js → apps-model-CHO133qt.js} +2 -2
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js.map → apps-model-CHO133qt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js → authority-model-8NeAEwAF.js} +2 -2
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js.map → authority-model-8NeAEwAF.js.map} +1 -1
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js → budget-queries-DFF-3ICg.js} +2 -2
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js.map → budget-queries-DFF-3ICg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js → capacity-strip-model-5ViUgUlP.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js.map → capacity-strip-model-5ViUgUlP.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js → charts-CzxWrZn7.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js.map → charts-CzxWrZn7.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-model-CfRydq8N.js +2 -0
- package/dist/core/web/public/next/assets/{cloud-model-DoxBMDvx.js.map → cloud-model-CfRydq8N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js → cloud-queries-DmptbjS8.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js.map → cloud-queries-DmptbjS8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js → command-catalog-ffCAijVY.js} +2 -2
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js.map → command-catalog-ffCAijVY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js → context-model-Bb15chFt.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js.map → context-model-Bb15chFt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js → context-model-CDeyP0cA.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js.map → context-model-CDeyP0cA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js → context-queries-_9bFWb9v.js} +2 -2
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js.map → context-queries-_9bFWb9v.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js → control-queries-CXtmZZH6.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js.map → control-queries-CXtmZZH6.js.map} +1 -1
- package/dist/core/web/public/next/assets/copy-setup-BIp0iaiZ.js +2 -0
- package/dist/core/web/public/next/assets/copy-setup-BIp0iaiZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js → dock-icons-Cc43W7r4.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js.map → dock-icons-Cc43W7r4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js → fleet-model-DOK8ZtEt.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js.map → fleet-model-DOK8ZtEt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js → fleet-queries-BeEAqD6y.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js.map → fleet-queries-BeEAqD6y.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js → focus-trap-ChZ5EFfM.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js.map → focus-trap-ChZ5EFfM.js.map} +1 -1
- package/dist/core/web/public/next/assets/format-BmH2yWL6.js +2 -0
- package/dist/core/web/public/next/assets/format-BmH2yWL6.js.map +1 -0
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js → git-model-BFwAVbxF.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js.map → git-model-BFwAVbxF.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-y_exIyAP.js +2 -0
- package/dist/core/web/public/next/assets/{global-CXHHMz9o.js.map → global-y_exIyAP.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js → guarded-runners-Cd4POBtI.js} +2 -2
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js.map → guarded-runners-Cd4POBtI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js → icons-CygCEFWs.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js.map → icons-CygCEFWs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-BG177cPN.js → index-CyK31YRm.js} +3 -3
- package/dist/core/web/public/next/assets/{index-BG177cPN.js.map → index-CyK31YRm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-CEf01wrW.js → live-model-D7hilYFk.js} +2 -2
- package/dist/core/web/public/next/assets/live-model-D7hilYFk.js.map +1 -0
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js → mind.module-B15k0Y9q.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js.map → mind.module-B15k0Y9q.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-CWlxEMEm.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-CbTSofVH.js.map → mutations-CWlxEMEm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js → nav-mimleI0R.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js.map → nav-mimleI0R.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js → overnight-queries-DJ4mZKSj.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js.map → overnight-queries-DJ4mZKSj.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-DMijqcu0.js +1 -0
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js → queries-Bw1McHTj.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js.map → queries-Bw1McHTj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js → reasoning-pref-KkhI_5-j.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js.map → reasoning-pref-KkhI_5-j.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js → reveal-anchor-CCCx_kfT.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js.map → reveal-anchor-CCCx_kfT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js → seat-subscription-BhUUz7VL.js} +2 -2
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js.map → seat-subscription-BhUUz7VL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js → sidebar-model-Dcd437cf.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js.map → sidebar-model-Dcd437cf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js → slots-BL_J5mmV.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js.map → slots-BL_J5mmV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js → surface-data-C3UAQ4QX.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js.map → surface-data-C3UAQ4QX.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-DO8r4ttQ.js.map → surface-prefetch-BXKjPsV5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js → tasks-model-CzHvclVm.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js.map → tasks-model-CzHvclVm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js → terminal-icons-BwgQTQP0.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js.map → terminal-icons-BwgQTQP0.js.map} +1 -1
- package/dist/core/web/public/next/assets/types-IYKrYLku.js +2 -0
- package/dist/core/web/public/next/assets/types-IYKrYLku.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js → usage-queries-pXxvy54x.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js.map → usage-queries-pXxvy54x.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js → use-guarded-action-EgVWjM5c.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js.map → use-guarded-action-EgVWjM5c.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js → use-ticker-BoqFxRFG.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js.map → use-ticker-BoqFxRFG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js → use-token-gate-DSNIIpI6.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js.map → use-token-gate-DSNIIpI6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js → useOnboarding-Bk0VnkxQ.js} +2 -2
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js.map → useOnboarding-Bk0VnkxQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js → useSeatsRefresh-q7Id9RcW.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js.map → useSeatsRefresh-q7Id9RcW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js → useVerseTranscript-CqH51rt9.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js.map → useVerseTranscript-CqH51rt9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js → verse-icons-DsG1dOQx.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js.map → verse-icons-DsG1dOQx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js → verse-model-JTuvRBVK.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js.map → verse-model-JTuvRBVK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js → warmup-Bv1RumVq.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js.map → warmup-Bv1RumVq.js.map} +1 -1
- package/dist/core/web/public/next/assets/why-seat-model-Cau8qG6O.js +2 -0
- package/dist/core/web/public/next/assets/why-seat-model-Cau8qG6O.js.map +1 -0
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js → workspace-model-D-SLfads.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js.map → workspace-model-D-SLfads.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/AUTONOMY-GAP.md +1 -1
- package/package.json +1 -1
- package/dist/core/web/public/next/assets/Advanced-CxzE6ekM.js +0 -2
- package/dist/core/web/public/next/assets/App-DFlp-vdv.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-Ct2O605-.js +0 -2
- package/dist/core/web/public/next/assets/AutonomyOffState-CXhXpsim.js +0 -2
- package/dist/core/web/public/next/assets/AutonomyOffState-CXhXpsim.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-DmbE71vI.css +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-BTg7yVa1.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-ng6swoZp.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-ng6swoZp.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-Bisj9R6E.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-Bisj9R6E.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-D8ZihzvE.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-D8ZihzvE.js.map +0 -1
- package/dist/core/web/public/next/assets/DockHost-BPqyhtCP.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-D1tDvlRa.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouDrawer-D992XTOn.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouDrawer-D992XTOn.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouList-CruOt4JT.css +0 -1
- package/dist/core/web/public/next/assets/NeedsYouList-eBOlJr0b.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingFlow-D3yfITK1.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingFlow-D3yfITK1.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingGate-DrDEVBqw.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-C2ZrA7la.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-BuO3sViG.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-BuO3sViG.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DeuBEvAO.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-DeuBEvAO.js.map +0 -1
- package/dist/core/web/public/next/assets/cloud-model-DoxBMDvx.js +0 -2
- package/dist/core/web/public/next/assets/copy-setup-CJQhFl-4.js +0 -2
- package/dist/core/web/public/next/assets/copy-setup-CJQhFl-4.js.map +0 -1
- package/dist/core/web/public/next/assets/format-DEAaVF6X.js +0 -2
- package/dist/core/web/public/next/assets/format-DEAaVF6X.js.map +0 -1
- package/dist/core/web/public/next/assets/global-CXHHMz9o.js +0 -2
- package/dist/core/web/public/next/assets/live-model-CEf01wrW.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-CbTSofVH.js +0 -2
- package/dist/core/web/public/next/assets/primitives-DNI-uJBd.js +0 -1
- package/dist/core/web/public/next/assets/surface-prefetch-DO8r4ttQ.js +0 -2
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js +0 -2
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +0 -1
- package/dist/core/web/public/next/assets/why-seat-model-D68ZA7G8.js +0 -2
- package/dist/core/web/public/next/assets/why-seat-model-D68ZA7G8.js.map +0 -1
package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js.map → RailStatus-xHrovWvI.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RailStatus-Ckw9nvYU.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/RailStatus.module.css","../../../../../../src/web-ui/routes/verse/shell/RailStatus.tsx"],"sourcesContent":["/* Rail badges: pinned to the icon's own 16px box (RailIcon), so they read the\n same in the 56px and the labelled rail. Shape carries meaning; colour\n confirms it. */\n\n.count {\n position: absolute;\n top: -6px;\n right: -9px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: var(--radius-full);\n /* The status pair, not solid + ink: the bg/fg tokens are the ones tuned\n for text contrast in BOTH themes (the solid flips nothing). */\n background: var(--status-warning-bg);\n box-shadow: 0 0 0 2px var(--bg-canvas), inset 0 0 0 1px var(--status-warning-solid);\n color: var(--status-warning-fg);\n font-family: var(--font-ui);\n font-size: var(--text-2xs-size);\n font-weight: var(--font-weight-semibold);\n line-height: 16px;\n text-align: center;\n font-variant-numeric: tabular-nums;\n}\n\n.dot,\n.pulse {\n position: absolute;\n top: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 0 2px var(--bg-canvas);\n background: var(--status-info-solid);\n}\n.pulse { background: var(--status-running-solid); animation: pulse var(--duration-pulse) ease-in-out infinite; }\n\n/* Autonomy: off = hollow ring, propose = half, autonomous = full,\n paused = a bar, stopped = a square. */\n.autonomy {\n position: absolute;\n top: -3px;\n right: -4px;\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 0 2px var(--bg-canvas);\n border: 1.5px solid var(--text-tertiary);\n background: transparent;\n}\n.autonomy[data-shape='propose'] { border-color: var(--status-info-solid); background: linear-gradient(90deg, var(--status-info-solid) 50%, transparent 50%); }\n.autonomy[data-shape='autonomous'] { border-color: var(--status-success-solid); background: var(--status-success-solid); }\n.autonomy[data-shape='paused'] { border-radius: 1px; border: 0; width: 8px; height: 3px; top: 0; background: var(--status-warning-solid); }\n.autonomy[data-shape='stopped'] { border-radius: 1px; border-color: var(--status-danger-solid); background: var(--status-danger-solid); }\n\n.ring { display: block; }\n.ringTrack { fill: none; stroke: var(--meter-track); stroke-width: 2.5; }\n.ringFill { fill: none; stroke: var(--data-seq-5); stroke-width: 2.5; stroke-linecap: round; }\n.ring[data-tone='tight'] .ringFill { stroke: var(--status-warning-solid); }\n.ring[data-tone='critical'] .ringFill { stroke: var(--status-danger-solid); }\n\n@keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.55; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion='full']) .pulse { animation: none; }\n}\n:root[data-motion='reduce'] .pulse { animation: none; }\n","/**\n * routes/verse/shell/RailStatus.tsx — what the rail says without being\n * opened (unit C1; SPEC-310C §1 \"Rail badges\"):\n *\n * Command the Needs-you count\n * Chat a pulsing amber dot while chats run (the count rides the\n * accessible name); a quiet dot for unread replies\n * Fleet the autonomy state (off / propose / autonomous, paused, stopped)\n * Mind a dot when there is a memo the operator has not opened\n * foot a capacity ring for the scarcest seat — C6's `scarcestSeat`\n * over the shared capacity rows, so the ring and Apps & Accounts\n * can never describe the same seat two ways\n *\n * Every badge is a SHAPE plus words in the accessible name — never colour\n * alone — and an unknown state draws nothing at all: no dot is \"we do not\n * know\", never \"zero\" (the activity route may not be in this build yet).\n */\nimport { useMemo } from 'react';\nimport type {\n VerseActivityResponse,\n VerseAutonomyBadge,\n VerseCapacityBadge,\n} from '../../../../core/verse/workbench-types.js';\nimport { buildCapacityRows, scarcestSeat, type CapacityRow } from '../usage/capacity-strip-model.js';\nimport { useCapacityData } from '../usage/CapacityStrip.js';\nimport type { VerseSectionId } from '../verse-ui-store.js';\nimport styles from './RailStatus.module.css';\nimport { usedPercentText } from '../percent-text.js';\n\nexport interface RailBadge {\n /** Appended to the rail button's accessible name (\", 3 need you\"). */\n spoken: string;\n kind: 'count' | 'pulse' | 'dot' | 'autonomy';\n /** The visible count, for `count`. */\n count?: number;\n tone?: 'running' | 'info' | 'warning' | 'danger' | 'success' | 'neutral';\n autonomy?: VerseAutonomyBadge;\n}\n\nexport function autonomyTone(badge: VerseAutonomyBadge): NonNullable<RailBadge['tone']> {\n if (badge.stopped) return 'danger';\n if (badge.paused) return 'warning';\n if (badge.mode === 'autonomous') return 'success';\n if (badge.mode === 'propose') return 'info';\n return 'neutral';\n}\n\n/** The badge a rail item shows, or null (nothing to say, or not known). */\nexport function railBadgeFor(section: VerseSectionId, data: VerseActivityResponse | null): RailBadge | null {\n if (!data) return null;\n switch (section) {\n case 'command': {\n const n = data.counts.needsYou;\n return n > 0 ? { kind: 'count', count: n, spoken: `, ${n} need${n === 1 ? 's' : ''} you`, tone: 'warning' } : null;\n }\n case 'chat': {\n const running = data.counts.running;\n if (running > 0) return { kind: 'pulse', spoken: `, ${running} running`, tone: 'running' };\n const unread = data.counts.unread;\n return unread > 0 ? { kind: 'dot', spoken: `, ${unread} unread`, tone: 'info' } : null;\n }\n case 'fleet':\n return data.autonomy ? { kind: 'autonomy', spoken: `, ${data.autonomy.label}`, autonomy: data.autonomy, tone: autonomyTone(data.autonomy) } : null;\n case 'mind':\n return data.mind?.unseen ? { kind: 'dot', spoken: ', new memo', tone: 'info' } : null;\n default:\n return null;\n }\n}\n\nexport function RailBadgeMark({ badge }: { badge: RailBadge }) {\n if (badge.kind === 'count') {\n const n = badge.count ?? 0;\n return (\n <span className={styles.count} data-tone={badge.tone} aria-hidden=\"true\" data-badge=\"count\">\n {n > 99 ? '99+' : n}\n </span>\n );\n }\n if (badge.kind === 'autonomy' && badge.autonomy) {\n const a = badge.autonomy;\n const shape = a.stopped ? 'stopped' : a.paused ? 'paused' : a.mode;\n return <span className={styles.autonomy} data-shape={shape} data-tone={badge.tone} aria-hidden=\"true\" data-badge=\"autonomy\" />;\n }\n return <span className={badge.kind === 'pulse' ? styles.pulse : styles.dot} data-tone={badge.tone} aria-hidden=\"true\" data-badge={badge.kind} />;\n}\n\n// ---------------------------------------------------------------------------\n// Capacity ring\n// ---------------------------------------------------------------------------\n\nexport function capacityTone(usedPercent: number): 'ok' | 'tight' | 'critical' {\n if (usedPercent >= 90) return 'critical';\n if (usedPercent >= 70) return 'tight';\n return 'ok';\n}\n\n/**\n * What the rail foot shows for the scarcest seat: one CapacityRow (C6's\n * projection) reduced to a ring and a sentence. Built ONLY from a row that\n * `scarcestSeat` chose, so there is always a measured binding window or a\n * blocked seat behind it — never an invented percent.\n */\nexport interface RailCapacity {\n seatId: string;\n label: string;\n /** \"5-hour window\", \"weekly fable window\"; null when the seat is blocked with no window read. */\n windowLabel: string | null;\n /** 0–100 for the ring. A reached limit or a blocked seat fills it. */\n usedPercent: number;\n limitReached: boolean;\n /** Provider prose or a formatted instant; null when neither. */\n resetText: string | null;\n /** \"blocked\", \"tight\", … — C6's word for the class. */\n word: string;\n}\n\nexport function railCapacityFromRow(row: CapacityRow | null): RailCapacity | null {\n if (!row) return null;\n const binding = row.windows.find((w) => w.binding) ?? null;\n const limitReached = binding?.limitReached === true;\n // Blocked (signed out, out of usage) reads as a full ring whatever the last\n // window said: the engine will refuse a turn on it.\n const used = row.cls === 'blocked' || limitReached ? 100 : binding?.usedPercent ?? null;\n if (used === null) return null;\n return {\n seatId: row.seatId,\n label: row.label,\n windowLabel: binding?.label ?? null,\n usedPercent: Math.max(0, Math.min(100, used)),\n limitReached,\n resetText: binding?.resetText ?? null,\n word: row.word,\n };\n}\n\n/** \"Claude Max: weekly fable window 92% used · resets Sep 25\" — the tooltip and the accessible name. */\nexport function describeRailCapacity(c: RailCapacity): string {\n const reset = c.resetText ? ` · ${c.resetText}` : '';\n if (c.limitReached) return `${c.label}: ${c.windowLabel ?? 'window'} limit reached${reset}`;\n if (c.windowLabel === null) return `${c.label}: ${c.word}`;\n return `${c.label}: ${c.windowLabel} ${usedPercentText(c.usedPercent)} used${reset}`;\n}\n\n/**\n * The rail's scarcest seat, live. Reads the app-wide seat + health caches the\n * capacity strip uses (mounting it costs no extra request when Apps or Usage\n * is also mounted). Budget is NOT read: the reserve does not change which\n * seat is closest to running out, and the rail is on screen on every surface,\n * so it should not keep the 60 s budget poll alive by itself. Local seats are\n * left out — they have no quota to run out of.\n */\nexport function useRailCapacity(): RailCapacity | null {\n const data = useCapacityData({ withBudget: false });\n return useMemo(\n () => railCapacityFromRow(scarcestSeat(buildCapacityRows(data.seats, { health: data.health, local: 'hide' }))),\n [data.seats, data.health],\n );\n}\n\nconst R = 7;\nconst C = 2 * Math.PI * R;\n\nexport function CapacityRing({ badge }: { badge: Pick<VerseCapacityBadge, 'usedPercent'> }) {\n const used = Math.max(0, Math.min(100, badge.usedPercent));\n const tone = capacityTone(used);\n return (\n <svg className={styles.ring} data-tone={tone} viewBox=\"0 0 18 18\" width={18} height={18} aria-hidden=\"true\" focusable=\"false\">\n <circle className={styles.ringTrack} cx=\"9\" cy=\"9\" r={R} />\n <circle\n className={styles.ringFill}\n cx=\"9\"\n cy=\"9\"\n r={R}\n strokeDasharray={`${(used / 100) * C} ${C}`}\n transform=\"rotate(-90 9 9)\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RailStatus-xHrovWvI.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/shell/RailStatus.module.css","../../../../../../src/web-ui/routes/verse/shell/RailStatus.tsx"],"sourcesContent":["/* Rail badges: pinned to the icon's own 16px box (RailIcon), so they read the\n same in the 56px and the labelled rail. Shape carries meaning; colour\n confirms it. */\n\n.count {\n position: absolute;\n top: -6px;\n right: -9px;\n min-width: 16px;\n height: 16px;\n padding: 0 4px;\n border-radius: var(--radius-full);\n /* The status pair, not solid + ink: the bg/fg tokens are the ones tuned\n for text contrast in BOTH themes (the solid flips nothing). */\n background: var(--status-warning-bg);\n box-shadow: 0 0 0 2px var(--bg-canvas), inset 0 0 0 1px var(--status-warning-solid);\n color: var(--status-warning-fg);\n font-family: var(--font-ui);\n font-size: var(--text-2xs-size);\n font-weight: var(--font-weight-semibold);\n line-height: 16px;\n text-align: center;\n font-variant-numeric: tabular-nums;\n}\n\n.dot,\n.pulse {\n position: absolute;\n top: -3px;\n right: -3px;\n width: 7px;\n height: 7px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 0 2px var(--bg-canvas);\n background: var(--status-info-solid);\n}\n.pulse { background: var(--status-running-solid); animation: pulse var(--duration-pulse) ease-in-out infinite; }\n\n/* Autonomy: off = hollow ring, propose = half, autonomous = full,\n paused = a bar, stopped = a square. */\n.autonomy {\n position: absolute;\n top: -3px;\n right: -4px;\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n box-shadow: 0 0 0 2px var(--bg-canvas);\n border: 1.5px solid var(--text-tertiary);\n background: transparent;\n}\n.autonomy[data-shape='propose'] { border-color: var(--status-info-solid); background: linear-gradient(90deg, var(--status-info-solid) 50%, transparent 50%); }\n.autonomy[data-shape='autonomous'] { border-color: var(--status-success-solid); background: var(--status-success-solid); }\n.autonomy[data-shape='paused'] { border-radius: 1px; border: 0; width: 8px; height: 3px; top: 0; background: var(--status-warning-solid); }\n.autonomy[data-shape='stopped'] { border-radius: 1px; border-color: var(--status-danger-solid); background: var(--status-danger-solid); }\n\n.ring { display: block; }\n.ringTrack { fill: none; stroke: var(--meter-track); stroke-width: 2.5; }\n.ringFill { fill: none; stroke: var(--data-seq-5); stroke-width: 2.5; stroke-linecap: round; }\n.ring[data-tone='tight'] .ringFill { stroke: var(--status-warning-solid); }\n.ring[data-tone='critical'] .ringFill { stroke: var(--status-danger-solid); }\n\n@keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.55; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion='full']) .pulse { animation: none; }\n}\n:root[data-motion='reduce'] .pulse { animation: none; }\n","/**\n * routes/verse/shell/RailStatus.tsx — what the rail says without being\n * opened (unit C1; SPEC-310C §1 \"Rail badges\"):\n *\n * Command the Needs-you count\n * Chat a pulsing amber dot while chats run (the count rides the\n * accessible name); a quiet dot for unread replies\n * Fleet the autonomy state (off / propose / autonomous, paused, stopped)\n * Mind a dot when there is a memo the operator has not opened\n * foot a capacity ring for the scarcest seat — C6's `scarcestSeat`\n * over the shared capacity rows, so the ring and Apps & Accounts\n * can never describe the same seat two ways\n *\n * Every badge is a SHAPE plus words in the accessible name — never colour\n * alone — and an unknown state draws nothing at all: no dot is \"we do not\n * know\", never \"zero\" (the activity route may not be in this build yet).\n */\nimport { useMemo } from 'react';\nimport type {\n VerseActivityResponse,\n VerseAutonomyBadge,\n VerseCapacityBadge,\n} from '../../../../core/verse/workbench-types.js';\nimport { buildCapacityRows, scarcestSeat, type CapacityRow } from '../usage/capacity-strip-model.js';\nimport { useCapacityData } from '../usage/CapacityStrip.js';\nimport type { VerseSectionId } from '../verse-ui-store.js';\nimport styles from './RailStatus.module.css';\nimport { usedPercentText } from '../percent-text.js';\n\nexport interface RailBadge {\n /** Appended to the rail button's accessible name (\", 3 need you\"). */\n spoken: string;\n kind: 'count' | 'pulse' | 'dot' | 'autonomy';\n /** The visible count, for `count`. */\n count?: number;\n tone?: 'running' | 'info' | 'warning' | 'danger' | 'success' | 'neutral';\n autonomy?: VerseAutonomyBadge;\n}\n\nexport function autonomyTone(badge: VerseAutonomyBadge): NonNullable<RailBadge['tone']> {\n if (badge.stopped) return 'danger';\n if (badge.paused) return 'warning';\n if (badge.mode === 'autonomous') return 'success';\n if (badge.mode === 'propose') return 'info';\n return 'neutral';\n}\n\n/** The badge a rail item shows, or null (nothing to say, or not known). */\nexport function railBadgeFor(section: VerseSectionId, data: VerseActivityResponse | null): RailBadge | null {\n if (!data) return null;\n switch (section) {\n case 'command': {\n const n = data.counts.needsYou;\n return n > 0 ? { kind: 'count', count: n, spoken: `, ${n} need${n === 1 ? 's' : ''} you`, tone: 'warning' } : null;\n }\n case 'chat': {\n const running = data.counts.running;\n if (running > 0) return { kind: 'pulse', spoken: `, ${running} running`, tone: 'running' };\n const unread = data.counts.unread;\n return unread > 0 ? { kind: 'dot', spoken: `, ${unread} unread`, tone: 'info' } : null;\n }\n case 'fleet':\n return data.autonomy ? { kind: 'autonomy', spoken: `, ${data.autonomy.label}`, autonomy: data.autonomy, tone: autonomyTone(data.autonomy) } : null;\n case 'mind':\n return data.mind?.unseen ? { kind: 'dot', spoken: ', new memo', tone: 'info' } : null;\n default:\n return null;\n }\n}\n\nexport function RailBadgeMark({ badge }: { badge: RailBadge }) {\n if (badge.kind === 'count') {\n const n = badge.count ?? 0;\n return (\n <span className={styles.count} data-tone={badge.tone} aria-hidden=\"true\" data-badge=\"count\">\n {n > 99 ? '99+' : n}\n </span>\n );\n }\n if (badge.kind === 'autonomy' && badge.autonomy) {\n const a = badge.autonomy;\n const shape = a.stopped ? 'stopped' : a.paused ? 'paused' : a.mode;\n return <span className={styles.autonomy} data-shape={shape} data-tone={badge.tone} aria-hidden=\"true\" data-badge=\"autonomy\" />;\n }\n return <span className={badge.kind === 'pulse' ? styles.pulse : styles.dot} data-tone={badge.tone} aria-hidden=\"true\" data-badge={badge.kind} />;\n}\n\n// ---------------------------------------------------------------------------\n// Capacity ring\n// ---------------------------------------------------------------------------\n\nexport function capacityTone(usedPercent: number): 'ok' | 'tight' | 'critical' {\n if (usedPercent >= 90) return 'critical';\n if (usedPercent >= 70) return 'tight';\n return 'ok';\n}\n\n/**\n * What the rail foot shows for the scarcest seat: one CapacityRow (C6's\n * projection) reduced to a ring and a sentence. Built ONLY from a row that\n * `scarcestSeat` chose, so there is always a measured binding window or a\n * blocked seat behind it — never an invented percent.\n */\nexport interface RailCapacity {\n seatId: string;\n label: string;\n /** \"5-hour window\", \"weekly fable window\"; null when the seat is blocked with no window read. */\n windowLabel: string | null;\n /** 0–100 for the ring. A reached limit or a blocked seat fills it. */\n usedPercent: number;\n limitReached: boolean;\n /** Provider prose or a formatted instant; null when neither. */\n resetText: string | null;\n /** \"blocked\", \"tight\", … — C6's word for the class. */\n word: string;\n}\n\nexport function railCapacityFromRow(row: CapacityRow | null): RailCapacity | null {\n if (!row) return null;\n const binding = row.windows.find((w) => w.binding) ?? null;\n const limitReached = binding?.limitReached === true;\n // Blocked (signed out, out of usage) reads as a full ring whatever the last\n // window said: the engine will refuse a turn on it.\n const used = row.cls === 'blocked' || limitReached ? 100 : binding?.usedPercent ?? null;\n if (used === null) return null;\n return {\n seatId: row.seatId,\n label: row.label,\n windowLabel: binding?.label ?? null,\n usedPercent: Math.max(0, Math.min(100, used)),\n limitReached,\n resetText: binding?.resetText ?? null,\n word: row.word,\n };\n}\n\n/** \"Claude Max: weekly fable window 92% used · resets Sep 25\" — the tooltip and the accessible name. */\nexport function describeRailCapacity(c: RailCapacity): string {\n const reset = c.resetText ? ` · ${c.resetText}` : '';\n if (c.limitReached) return `${c.label}: ${c.windowLabel ?? 'window'} limit reached${reset}`;\n if (c.windowLabel === null) return `${c.label}: ${c.word}`;\n return `${c.label}: ${c.windowLabel} ${usedPercentText(c.usedPercent)} used${reset}`;\n}\n\n/**\n * The rail's scarcest seat, live. Reads the app-wide seat + health caches the\n * capacity strip uses (mounting it costs no extra request when Apps or Usage\n * is also mounted). Budget is NOT read: the reserve does not change which\n * seat is closest to running out, and the rail is on screen on every surface,\n * so it should not keep the 60 s budget poll alive by itself. Local seats are\n * left out — they have no quota to run out of.\n */\nexport function useRailCapacity(): RailCapacity | null {\n const data = useCapacityData({ withBudget: false });\n return useMemo(\n () => railCapacityFromRow(scarcestSeat(buildCapacityRows(data.seats, { health: data.health, local: 'hide' }))),\n [data.seats, data.health],\n );\n}\n\nconst R = 7;\nconst C = 2 * Math.PI * R;\n\nexport function CapacityRing({ badge }: { badge: Pick<VerseCapacityBadge, 'usedPercent'> }) {\n const used = Math.max(0, Math.min(100, badge.usedPercent));\n const tone = capacityTone(used);\n return (\n <svg className={styles.ring} data-tone={tone} viewBox=\"0 0 18 18\" width={18} height={18} aria-hidden=\"true\" focusable=\"false\">\n <circle className={styles.ringTrack} cx=\"9\" cy=\"9\" r={R} />\n <circle\n className={styles.ringFill}\n cx=\"9\"\n cy=\"9\"\n r={R}\n strokeDasharray={`${(used / 100) * C} ${C}`}\n transform=\"rotate(-90 9 9)\"\n />\n </svg>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./index-
|
|
2
|
-
//# sourceMappingURL=RefreshIndicator-
|
|
1
|
+
import{n as e}from"./index-CyK31YRm.js";var t={root:`_root_1lgxn_1`,spinner:`_spinner_1lgxn_9`,spin:`_spin_1lgxn_9`},n=e();function r({label:e=`Refreshing`}){return(0,n.jsxs)(`span`,{className:t.root,role:`status`,"aria-live":`polite`,children:[(0,n.jsx)(`span`,{className:t.spinner,"aria-hidden":`true`}),(0,n.jsx)(`span`,{className:`visually-hidden`,children:e})]})}export{r as t};
|
|
2
|
+
//# sourceMappingURL=RefreshIndicator-SEFZlMB2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshIndicator-
|
|
1
|
+
{"version":3,"file":"RefreshIndicator-SEFZlMB2.js","names":[],"sources":["../../../../../../src/web-ui/components/primitives/RefreshIndicator.module.css","../../../../../../src/web-ui/components/primitives/RefreshIndicator.tsx"],"sourcesContent":[".root {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n}\n\n.spinner {\n width: 12px;\n height: 12px;\n border-radius: var(--radius-full);\n border: 2px solid var(--border-strong);\n border-top-color: var(--accent-500);\n animation: spin 0.7s linear infinite;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion=\"full\"]) .spinner {\n animation: none;\n border-top-color: var(--border-strong);\n }\n}\n\n:root[data-motion=\"reduce\"] .spinner {\n animation: none;\n border-top-color: var(--border-strong);\n}\n","/**\n * components/primitives/RefreshIndicator.tsx — the \"stale data, quietly\n * refreshing\" signal (foundation brief item 4: never blank the screen on\n * refresh). Pair with a QueryEntry's `status`:\n *\n * loading -> render a Skeleton instead of the view\n * refreshing -> render the view with data, plus <RefreshIndicator />\n * success -> render the view with data, no indicator\n * error -> render the view's error state\n */\nimport styles from './RefreshIndicator.module.css';\n\nexport function RefreshIndicator({ label = 'Refreshing' }: { label?: string }) {\n return (\n <span className={styles.root} role=\"status\" aria-live=\"polite\">\n <span className={styles.spinner} aria-hidden=\"true\" />\n <span className=\"visually-hidden\">{label}</span>\n </span>\n );\n}\n"],"mappings":"2HCYA,SAAgB,EAAiB,CAAE,QAAQ,cAAoC,CAC7E,OACE,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAO,KAAM,KAAK,SAAS,YAAU,SAAtD,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAO,QAAS,cAAY,MAAQ,CAAA,GACrD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,kBAAmB,SAAA,CAAY,CAAA,CAC3C,GAEV"}
|