@ashlr/hub 3.11.3 → 3.12.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 +104 -0
- package/README.md +44 -18
- package/dist/authority-surface.json +74 -59
- package/dist/build-identity.json +2 -2
- package/dist/cli/authority.d.ts +39 -0
- package/dist/cli/authority.js +222 -55
- package/dist/cli/authority.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/verse.d.ts +3 -0
- package/dist/cli/verse.js +10 -0
- package/dist/cli/verse.js.map +1 -1
- 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 +2 -2
- package/dist/core/cloud/cloud-api.js +1 -1
- package/dist/core/cloud/cloud-api.js.map +1 -1
- package/dist/core/cloud/delivery-contract.d.ts +1 -1
- package/dist/core/cloud/delivery-contract.js +25 -15
- package/dist/core/cloud/delivery-contract.js.map +1 -1
- package/dist/core/cloud/store.js +6 -0
- package/dist/core/cloud/store.js.map +1 -1
- package/dist/core/cloud/tracker.d.ts +2 -0
- package/dist/core/cloud/tracker.js +140 -37
- package/dist/core/cloud/tracker.js.map +1 -1
- package/dist/core/cloud/types.d.ts +9 -1
- package/dist/core/cloud/types.js.map +1 -1
- package/dist/core/comms/dispatch.d.ts +5 -0
- package/dist/core/comms/dispatch.js +12 -1
- package/dist/core/comms/dispatch.js.map +1 -1
- package/dist/core/comms/requests.d.ts +27 -1
- package/dist/core/comms/requests.js +50 -1
- package/dist/core/comms/requests.js.map +1 -1
- package/dist/core/daemon/loop.d.ts +14 -0
- package/dist/core/daemon/loop.js +35 -0
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/fabric/claude-usage.js +23 -1
- package/dist/core/fabric/claude-usage.js.map +1 -1
- package/dist/core/fleet/dispatch-router.d.ts +7 -0
- package/dist/core/fleet/dispatch-router.js +4 -1
- package/dist/core/fleet/dispatch-router.js.map +1 -1
- package/dist/core/fleet/tick-hooks-live.d.ts +5 -1
- package/dist/core/fleet/tick-hooks-live.js +10 -1
- package/dist/core/fleet/tick-hooks-live.js.map +1 -1
- package/dist/core/local-runtime/llama/config.d.ts +14 -0
- package/dist/core/local-runtime/llama/config.js +20 -2
- package/dist/core/local-runtime/llama/config.js.map +1 -1
- package/dist/core/local-runtime/llama/process.d.ts +19 -0
- package/dist/core/local-runtime/llama/process.js +67 -17
- package/dist/core/local-runtime/llama/process.js.map +1 -1
- package/dist/core/local-runtime/llama/supervisor.js +14 -3
- package/dist/core/local-runtime/llama/supervisor.js.map +1 -1
- package/dist/core/observability/rollup.d.ts +12 -0
- package/dist/core/observability/rollup.js +37 -2
- package/dist/core/observability/rollup.js.map +1 -1
- package/dist/core/observability/usage-source.js +49 -1
- package/dist/core/observability/usage-source.js.map +1 -1
- package/dist/core/resources/connection-monitor.js +47 -4
- package/dist/core/resources/connection-monitor.js.map +1 -1
- package/dist/core/resources/engineering-mission-store.d.ts +1 -1
- package/dist/core/routing/headroom.js +7 -2
- package/dist/core/routing/headroom.js.map +1 -1
- package/dist/core/routing/router.d.ts +48 -0
- package/dist/core/routing/router.js +129 -13
- package/dist/core/routing/router.js.map +1 -1
- package/dist/core/run/best-of-n.d.ts +7 -0
- package/dist/core/run/best-of-n.js +3 -0
- package/dist/core/run/best-of-n.js.map +1 -1
- package/dist/core/run/harness-dispatch.d.ts +147 -0
- package/dist/core/run/harness-dispatch.js +234 -0
- package/dist/core/run/harness-dispatch.js.map +1 -0
- package/dist/core/run/orchestrator.js +3 -0
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/run/provider-client.d.ts +8 -0
- package/dist/core/run/provider-client.js +4 -0
- package/dist/core/run/provider-client.js.map +1 -1
- package/dist/core/run/sandboxed-engine.d.ts +8 -0
- package/dist/core/run/sandboxed-engine.js +60 -7
- package/dist/core/run/sandboxed-engine.js.map +1 -1
- package/dist/core/types.d.ts +14 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +188 -6
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +187 -5
- package/dist/core/universe/firm-demo.d.ts +1 -1
- package/dist/core/universe/firm-graph.d.ts +2 -2
- package/dist/core/util/scrub.js +16 -3
- package/dist/core/util/scrub.js.map +1 -1
- package/dist/core/verse/accounts.d.ts +9 -1
- package/dist/core/verse/accounts.js +52 -11
- package/dist/core/verse/accounts.js.map +1 -1
- package/dist/core/verse/apps-api.d.ts +12 -0
- package/dist/core/verse/apps-api.js +22 -4
- package/dist/core/verse/apps-api.js.map +1 -1
- package/dist/core/verse/apps.js +22 -12
- package/dist/core/verse/apps.js.map +1 -1
- package/dist/core/verse/local-models.js +3 -7
- package/dist/core/verse/local-models.js.map +1 -1
- package/dist/core/verse/model-display-name.d.ts +34 -0
- package/dist/core/verse/model-display-name.js +125 -0
- package/dist/core/verse/model-display-name.js.map +1 -0
- package/dist/core/verse/seats.d.ts +11 -2
- package/dist/core/verse/seats.js +42 -18
- package/dist/core/verse/seats.js.map +1 -1
- package/dist/core/verse/transient-events.d.ts +21 -0
- package/dist/core/verse/transient-events.js +12 -0
- package/dist/core/verse/transient-events.js.map +1 -0
- package/dist/core/verse/types.d.ts +6 -13
- package/dist/core/verse/types.js +5 -36
- package/dist/core/verse/types.js.map +1 -1
- package/dist/core/web/public/next/assets/ActionMenu-B4-39f2S.js +2 -0
- package/dist/core/web/public/next/assets/{ActionMenu-FxXeRbPx.js.map → ActionMenu-B4-39f2S.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-B-LqYXvd.js +2 -0
- package/dist/core/web/public/next/assets/Advanced-B-LqYXvd.js.map +1 -0
- package/dist/core/web/public/next/assets/App-E2zCDRxm.js +7 -0
- package/dist/core/web/public/next/assets/App-E2zCDRxm.js.map +1 -0
- package/dist/core/web/public/next/assets/AppsSection-8wXPPhZb.js +2 -0
- package/dist/core/web/public/next/assets/AppsSection-8wXPPhZb.js.map +1 -0
- package/dist/core/web/public/next/assets/AreaTrend-BFimExYn.js +2 -0
- package/dist/core/web/public/next/assets/{AreaTrend-CDxrQU4b.js.map → AreaTrend-BFimExYn.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js +2 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-DmbE71vI.css +1 -0
- package/dist/core/web/public/next/assets/AutonomySection-B46igJKR.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-DuQkHGD_.js.map → AutonomySection-B46igJKR.js.map} +1 -1
- package/dist/core/web/public/next/assets/BranchBar-BRkrEQGs.js +2 -0
- package/dist/core/web/public/next/assets/{BranchBar-CLsvOcyK.js.map → BranchBar-BRkrEQGs.js.map} +1 -1
- package/dist/core/web/public/next/assets/BudgetControl-T_RjPrw9.js +2 -0
- package/dist/core/web/public/next/assets/{BudgetControl-TL3FeZ1D.js.map → BudgetControl-T_RjPrw9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-HHXgoXGr.js → Button-BhO-WKPp.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-HHXgoXGr.js.map → Button-BhO-WKPp.js.map} +1 -1
- package/dist/core/web/public/next/assets/CapacityStrip-CkFz5vq2.js +2 -0
- package/dist/core/web/public/next/assets/{CapacityStrip-qReu0RaF.js.map → CapacityStrip-CkFz5vq2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useChartWidth-BW6SwYIK.css → ChartFrame-BVuBe6RP.css} +1 -1
- package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js +2 -0
- package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js.map +1 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-Bd91iStN.js +2 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-Bd91iStN.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js +2 -0
- package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandSection-CvAVd1w4.css +1 -0
- package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js +2 -0
- package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-Bv4hdK2T.js +2 -0
- package/dist/core/web/public/next/assets/{ConfirmDialog-DLrLKM0c.js.map → ConfirmDialog-Bv4hdK2T.js.map} +1 -1
- package/dist/core/web/public/next/assets/DeleteChatDialog-CH1Ix8Eh.js +2 -0
- package/dist/core/web/public/next/assets/DeleteChatDialog-CH1Ix8Eh.js.map +1 -0
- package/dist/core/web/public/next/assets/Dialog-BSsIFNqD.js +2 -0
- package/dist/core/web/public/next/assets/{Dialog-BS9Dxi3G.js.map → Dialog-BSsIFNqD.js.map} +1 -1
- package/dist/core/web/public/next/assets/DiffPane-BpNuJmth.js +2 -0
- package/dist/core/web/public/next/assets/{DiffPane-TOmUf3b2.js.map → DiffPane-BpNuJmth.js.map} +1 -1
- package/dist/core/web/public/next/assets/DiffViewer-CJarUvs0.js +2 -0
- package/dist/core/web/public/next/assets/{DiffViewer-BpH56302.js.map → DiffViewer-CJarUvs0.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-DW9q0NdR.js +2 -0
- package/dist/core/web/public/next/assets/DockHost-DW9q0NdR.js.map +1 -0
- package/dist/core/web/public/next/assets/{EmptyState-BqR5YAmf.js → EmptyState-DPrd2aak.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-BqR5YAmf.js.map → EmptyState-DPrd2aak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-dhvDTwAZ.js → Epistemic-D7MxSmED.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-dhvDTwAZ.js.map → Epistemic-D7MxSmED.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js +3 -0
- package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js.map +1 -0
- package/dist/core/web/public/next/assets/Funnel-BeNQZWv2.js +2 -0
- package/dist/core/web/public/next/assets/{Funnel-D2u7Wlzc.js.map → Funnel-BeNQZWv2.js.map} +1 -1
- package/dist/core/web/public/next/assets/GearTray-CIPtzeIx.js +2 -0
- package/dist/core/web/public/next/assets/{GearTray-Cb2npoxM.js.map → GearTray-CIPtzeIx.js.map} +1 -1
- package/dist/core/web/public/next/assets/GrowthSection-iiQg6wvK.js +2 -0
- package/dist/core/web/public/next/assets/{GrowthSection-C5aDPs8B.js.map → GrowthSection-iiQg6wvK.js.map} +1 -1
- package/dist/core/web/public/next/assets/HandoffDialog-DrQ6ofuy.js +2 -0
- package/dist/core/web/public/next/assets/{HandoffDialog-BF3AYg-X.js.map → HandoffDialog-DrQ6ofuy.js.map} +1 -1
- package/dist/core/web/public/next/assets/Input-C0MQxEM6.js +2 -0
- package/dist/core/web/public/next/assets/{Input-B5dmGLZx.js.map → Input-C0MQxEM6.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js +2 -0
- package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js.map +1 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-DZvZeWXL.js +2 -0
- package/dist/core/web/public/next/assets/{MatrixHeatmap-BgEUs2Eu.js.map → MatrixHeatmap-DZvZeWXL.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-BRuCcTjT.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-DZkiOuoq.js.map → McpSection-BRuCcTjT.js.map} +1 -1
- package/dist/core/web/public/next/assets/MessageMarkdown-bRvD5nSc.js +3 -0
- package/dist/core/web/public/next/assets/{MessageMarkdown-BauY8ZTY.js.map → MessageMarkdown-bRvD5nSc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DLBNLfsn.js → MessageMarkdownRenderer-FjjkPKA2.js} +4 -4
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DLBNLfsn.js.map → MessageMarkdownRenderer-FjjkPKA2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-DNeocJnD.js → Meter-CFNLpwA-.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-DNeocJnD.js.map → Meter-CFNLpwA-.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js +2 -0
- package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js.map +1 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-T7gv3a9r.js +2 -0
- package/dist/core/web/public/next/assets/{MutationTokenDialog-mxrw0Yvy.js.map → MutationTokenDialog-T7gv3a9r.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-lYN4G_aM.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-CO-Balfp.js.map → NeedsYouDrawer-lYN4G_aM.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouList-BgH8ezqf.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouList-CzDZbzRD.js.map → NeedsYouList-BgH8ezqf.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-Db5Xjrk8.js +3 -0
- package/dist/core/web/public/next/assets/NewChatDialog-Db5Xjrk8.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-HUNQGQuU.css +1 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js +2 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js +3 -0
- package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js.map +1 -0
- package/dist/core/web/public/next/assets/PreviewPane-BPBbcROb.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-BS-CleCd.js.map → PreviewPane-BPBbcROb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-C5mBg8i0.js → ProviderLogo-CT2cSfkg.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-C5mBg8i0.js.map → ProviderLogo-CT2cSfkg.js.map} +1 -1
- package/dist/core/web/public/next/assets/RailStatus-Vgl0GYtd.js +2 -0
- package/dist/core/web/public/next/assets/{RailStatus-cPRyOmrk.js.map → RailStatus-Vgl0GYtd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-CMwSCiz5.js → RefreshIndicator-CSyqpY_q.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-CMwSCiz5.js.map → RefreshIndicator-CSyqpY_q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BFi1opsC.js → ResourcePoolConsoleApp-BX2nkdmZ.js} +4 -4
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BFi1opsC.js.map → ResourcePoolConsoleApp-BX2nkdmZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-BCFJ2Uq8.css +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-BaC7YVzR.js +2 -0
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-DYtwc2ja.js.map → RouteErrorBoundary-BaC7YVzR.js.map} +1 -1
- package/dist/core/web/public/next/assets/RunInCloudAction-D5PDHJPE.js +2 -0
- package/dist/core/web/public/next/assets/{RunInCloudAction-BEGEEM8O.js.map → RunInCloudAction-D5PDHJPE.js.map} +1 -1
- package/dist/core/web/public/next/assets/SeatSelector-Cg75LInq.js +3 -0
- package/dist/core/web/public/next/assets/{SeatSelector-CYHRR7Wp.js.map → SeatSelector-Cg75LInq.js.map} +1 -1
- package/dist/core/web/public/next/assets/Segmented-CametjLt.js +2 -0
- package/dist/core/web/public/next/assets/{Segmented-BE53BenI.js.map → Segmented-CametjLt.js.map} +1 -1
- package/dist/core/web/public/next/assets/Select-De52fghU.js +2 -0
- package/dist/core/web/public/next/assets/{Select-BwSGkHCS.js.map → Select-De52fghU.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionGate-CzlcNq3O.js +2 -0
- package/dist/core/web/public/next/assets/{SessionGate-e0dFJm9d.js.map → SessionGate-CzlcNq3O.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionInsightChip-Bk_Owa7u.js +2 -0
- package/dist/core/web/public/next/assets/{SessionInsightChip-CxlSyueJ.js.map → SessionInsightChip-Bk_Owa7u.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionSearch-C6C8DHN8.js +2 -0
- package/dist/core/web/public/next/assets/{SessionSearch-_yp7S2TP.js.map → SessionSearch-C6C8DHN8.js.map} +1 -1
- package/dist/core/web/public/next/assets/SettingsSection-mI9wQYZg.js +2 -0
- package/dist/core/web/public/next/assets/SettingsSection-mI9wQYZg.js.map +1 -0
- package/dist/core/web/public/next/assets/Sheet-CJhK9Dqv.js +2 -0
- package/dist/core/web/public/next/assets/{Sheet-DVP2Mgy6.js.map → Sheet-CJhK9Dqv.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShortcutsOverlay-DDW-i9Fc.js +2 -0
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-BcIcoClX.js.map → ShortcutsOverlay-DDW-i9Fc.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js +3 -0
- package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js.map +1 -0
- package/dist/core/web/public/next/assets/Slider-Bwd9HfXl.js +2 -0
- package/dist/core/web/public/next/assets/{Slider-BypUWjpH.js.map → Slider-Bwd9HfXl.js.map} +1 -1
- package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js +2 -0
- package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js.map +1 -0
- package/dist/core/web/public/next/assets/{StatusBadge-HCZp416_.js → StatusBadge-DHKRtttH.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-HCZp416_.js.map → StatusBadge-DHKRtttH.js.map} +1 -1
- package/dist/core/web/public/next/assets/StepBand-DQykLkk_.js +2 -0
- package/dist/core/web/public/next/assets/{StepBand-Duz1PUes.js.map → StepBand-DQykLkk_.js.map} +1 -1
- package/dist/core/web/public/next/assets/Surface-D--LXgQm.js +2 -0
- package/dist/core/web/public/next/assets/Surface-D--LXgQm.js.map +1 -0
- package/dist/core/web/public/next/assets/Surface-e1z6GdZt.css +1 -0
- package/dist/core/web/public/next/assets/Swimlane-BzH6OCee.js +2 -0
- package/dist/core/web/public/next/assets/{Swimlane-DGcIcnNA.js.map → Swimlane-BzH6OCee.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-iveI-8NY.js → Switch-PMixU6b0.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-iveI-8NY.js.map → Switch-PMixU6b0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-DH15CUJp.js → Tag-fordBsrJ.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-DH15CUJp.js.map → Tag-fordBsrJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/TerminalPane-BSnGdUuF.js +7 -0
- package/dist/core/web/public/next/assets/TerminalPane-BSnGdUuF.js.map +1 -0
- package/dist/core/web/public/next/assets/UniverseConsoleApp-DtXFhAhw.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-C8yQ0AaR.js.map → UniverseConsoleApp-DtXFhAhw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-_nPURPqe.js → UniverseView-sWm3pnTW.js} +3 -3
- package/dist/core/web/public/next/assets/{UniverseView-_nPURPqe.js.map → UniverseView-sWm3pnTW.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js +3 -0
- package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-BQSZFSeO.js +10 -0
- package/dist/core/web/public/next/assets/Workspace-BQSZFSeO.js.map +1 -0
- package/dist/core/web/public/next/assets/actions-BmIf9avl.css +1 -0
- package/dist/core/web/public/next/assets/actions-Ci6I4C0l.js +2 -0
- package/dist/core/web/public/next/assets/actions-Ci6I4C0l.js.map +1 -0
- package/dist/core/web/public/next/assets/apps-model-DlwnfqwJ.js +2 -0
- package/dist/core/web/public/next/assets/apps-model-DlwnfqwJ.js.map +1 -0
- package/dist/core/web/public/next/assets/authority-model-BFuPezSo.js +2 -0
- package/dist/core/web/public/next/assets/authority-model-BFuPezSo.js.map +1 -0
- package/dist/core/web/public/next/assets/binding-left-DZpq5sLf.js +2 -0
- package/dist/core/web/public/next/assets/binding-left-DZpq5sLf.js.map +1 -0
- package/dist/core/web/public/next/assets/{budget-queries-V3wcJVK_.js → budget-queries-DsAjH8ac.js} +2 -2
- package/dist/core/web/public/next/assets/{budget-queries-V3wcJVK_.js.map → budget-queries-DsAjH8ac.js.map} +1 -1
- package/dist/core/web/public/next/assets/capacity-strip-model-Dn1cNOhz.js +2 -0
- package/dist/core/web/public/next/assets/capacity-strip-model-Dn1cNOhz.js.map +1 -0
- package/dist/core/web/public/next/assets/charts-C_xJbJiw.js +2 -0
- package/dist/core/web/public/next/assets/charts-C_xJbJiw.js.map +1 -0
- package/dist/core/web/public/next/assets/charts-DhKTrQLw.css +1 -0
- package/dist/core/web/public/next/assets/clipboard-DkZdqlxf.js +2 -0
- package/dist/core/web/public/next/assets/clipboard-DkZdqlxf.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud-D-HXms6q.css +1 -0
- package/dist/core/web/public/next/assets/cloud-model-CX407gPY.js +2 -0
- package/dist/core/web/public/next/assets/cloud-model-CX407gPY.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud-queries-QAhpExlz.js +2 -0
- package/dist/core/web/public/next/assets/cloud-queries-QAhpExlz.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud.module-DOP-N4Ch.js +2 -0
- package/dist/core/web/public/next/assets/cloud.module-DOP-N4Ch.js.map +1 -0
- package/dist/core/web/public/next/assets/command-catalog-CF0cQQac.js +2 -0
- package/dist/core/web/public/next/assets/command-catalog-CF0cQQac.js.map +1 -0
- package/dist/core/web/public/next/assets/context-model-Co4wh3SM.js +2 -0
- package/dist/core/web/public/next/assets/context-model-Co4wh3SM.js.map +1 -0
- package/dist/core/web/public/next/assets/context-model-DV1zCfAm.js +3 -0
- package/dist/core/web/public/next/assets/context-model-DV1zCfAm.js.map +1 -0
- package/dist/core/web/public/next/assets/{context-queries-CrPcHWTz.js → context-queries-CktFQqSS.js} +2 -2
- package/dist/core/web/public/next/assets/{context-queries-CrPcHWTz.js.map → context-queries-CktFQqSS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-CmgBgKV7.js → control-queries-DAvlh_YM.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-CmgBgKV7.js.map → control-queries-DAvlh_YM.js.map} +1 -1
- package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js +2 -0
- package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js.map +1 -0
- package/dist/core/web/public/next/assets/dock-icons-BFuBbqJl.js +2 -0
- package/dist/core/web/public/next/assets/{dock-icons-CUh8dOxJ.js.map → dock-icons-BFuBbqJl.js.map} +1 -1
- package/dist/core/web/public/next/assets/fleet-model-Dfd5JyLR.js +2 -0
- package/dist/core/web/public/next/assets/fleet-model-Dfd5JyLR.js.map +1 -0
- package/dist/core/web/public/next/assets/fleet-queries-RtMTd5rR.js +2 -0
- package/dist/core/web/public/next/assets/fleet-queries-RtMTd5rR.js.map +1 -0
- package/dist/core/web/public/next/assets/{focus-trap-HtcoXeEq.js → focus-trap-BdrbWfC4.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-HtcoXeEq.js.map → focus-trap-BdrbWfC4.js.map} +1 -1
- package/dist/core/web/public/next/assets/format-Dk4Fmxax.js +2 -0
- package/dist/core/web/public/next/assets/format-Dk4Fmxax.js.map +1 -0
- package/dist/core/web/public/next/assets/{git-model-bk_RXh3y.js → git-model-_BnI_Ogh.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-bk_RXh3y.js.map → git-model-_BnI_Ogh.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-CNNGMril.js +2 -0
- package/dist/core/web/public/next/assets/{global-oEl9Qj8u.js.map → global-CNNGMril.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-runners-LHLXmXIk.js → guarded-runners-DPh2d32e.js} +2 -2
- package/dist/core/web/public/next/assets/{guarded-runners-LHLXmXIk.js.map → guarded-runners-DPh2d32e.js.map} +1 -1
- package/dist/core/web/public/next/assets/icons-0haWy6nh.js +2 -0
- package/dist/core/web/public/next/assets/icons-0haWy6nh.js.map +1 -0
- package/dist/core/web/public/next/assets/{index-BVxOlseC.js → index-QesfXBsb.js} +3 -3
- package/dist/core/web/public/next/assets/{index-BVxOlseC.js.map → index-QesfXBsb.js.map} +1 -1
- package/dist/core/web/public/next/assets/live-model-De-q0ZFK.js +2 -0
- package/dist/core/web/public/next/assets/live-model-De-q0ZFK.js.map +1 -0
- package/dist/core/web/public/next/assets/local-model-C9xNi9fN.js +2 -0
- package/dist/core/web/public/next/assets/local-model-C9xNi9fN.js.map +1 -0
- package/dist/core/web/public/next/assets/mind.module-BrK2nFOL.js +2 -0
- package/dist/core/web/public/next/assets/{mind.module-gTGAuJt1.js.map → mind.module-BrK2nFOL.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-DTCtKCn_.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-C5S7okTW.js.map → mutations-DTCtKCn_.js.map} +1 -1
- package/dist/core/web/public/next/assets/nav-KmGX0CVz.js +2 -0
- package/dist/core/web/public/next/assets/{nav-NVtnuG7A.js.map → nav-KmGX0CVz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-DGm3qL1b.js → overnight-queries-mlO0xzsr.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-DGm3qL1b.js.map → overnight-queries-mlO0xzsr.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-D0Fb3TtS.js +1 -0
- package/dist/core/web/public/next/assets/{queries-CYisSAAB.js → queries-CyBE8nsW.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-CYisSAAB.js.map → queries-CyBE8nsW.js.map} +1 -1
- package/dist/core/web/public/next/assets/reasoning-pref-CaoA4_Vl.js +2 -0
- package/dist/core/web/public/next/assets/{reasoning-pref-BUcFF_5G.js.map → reasoning-pref-CaoA4_Vl.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-D-tV8xau.js → reveal-anchor-BP1VqnPU.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-D-tV8xau.js.map → reveal-anchor-BP1VqnPU.js.map} +1 -1
- package/dist/core/web/public/next/assets/seat-subscription-C5Tvr0WQ.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-B-f9ViU2.js.map → seat-subscription-C5Tvr0WQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-DQ-FyBHW.js → sidebar-model-B5Qk95k_.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-DQ-FyBHW.js.map → sidebar-model-B5Qk95k_.js.map} +1 -1
- package/dist/core/web/public/next/assets/slots-DHKQDoE6.js +3 -0
- package/dist/core/web/public/next/assets/{slots-BhP8b8tf.js.map → slots-DHKQDoE6.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-data-CchClvHo.js +2 -0
- package/dist/core/web/public/next/assets/surface-data-CchClvHo.js.map +1 -0
- package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js +2 -0
- package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js.map +1 -0
- package/dist/core/web/public/next/assets/{tasks-model-BKDNqmmt.js → tasks-model-D6WFVULI.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-BKDNqmmt.js.map → tasks-model-D6WFVULI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-D2xe-aM1.js → terminal-icons-BvCvuXk2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-D2xe-aM1.js.map → terminal-icons-BvCvuXk2.js.map} +1 -1
- package/dist/core/web/public/next/assets/transient-events-nTLhMBND.js +2 -0
- package/dist/core/web/public/next/assets/transient-events-nTLhMBND.js.map +1 -0
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -1
- package/dist/core/web/public/next/assets/{usage-queries-BZuAANlI.js → usage-queries-D1SU1t7r.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-BZuAANlI.js.map → usage-queries-D1SU1t7r.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-Cf4MeNBa.js → use-guarded-action-BZmBv7CJ.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-Cf4MeNBa.js.map → use-guarded-action-BZmBv7CJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-D9yi49my.js → use-ticker-CkJ4-0wU.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-D9yi49my.js.map → use-ticker-CkJ4-0wU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DqrSXdX6.js → use-token-gate-CYcfk_GS.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DqrSXdX6.js.map → use-token-gate-CYcfk_GS.js.map} +1 -1
- package/dist/core/web/public/next/assets/useOnboarding-CujRS6PK.js +2 -0
- package/dist/core/web/public/next/assets/useOnboarding-CujRS6PK.js.map +1 -0
- package/dist/core/web/public/next/assets/useSeatsRefresh-BEaQdkZs.js +2 -0
- package/dist/core/web/public/next/assets/useSeatsRefresh-BEaQdkZs.js.map +1 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-BQ0J6Xhx.js +2 -0
- package/dist/core/web/public/next/assets/{useVerseTranscript-CDYrrWOO.js.map → useVerseTranscript-BQ0J6Xhx.js.map} +1 -1
- package/dist/core/web/public/next/assets/verse-icons-DndgEgKS.js +2 -0
- package/dist/core/web/public/next/assets/verse-icons-DndgEgKS.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-model-MMySehjj.js +2 -0
- package/dist/core/web/public/next/assets/verse-model-MMySehjj.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-store-DNVRuiJL.js +2 -0
- package/dist/core/web/public/next/assets/verse-store-DNVRuiJL.js.map +1 -0
- package/dist/core/web/public/next/assets/warmup-CNEH_-be.js +3 -0
- package/dist/core/web/public/next/assets/{warmup-HG5vYbsN.js.map → warmup-CNEH_-be.js.map} +1 -1
- package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js +2 -0
- package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js.map +1 -0
- package/dist/core/web/public/next/assets/{workspace-model-CbhdPhei.js → workspace-model-Dukb2wwv.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-CbhdPhei.js.map → workspace-model-Dukb2wwv.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/README.md +2 -1
- package/package.json +1 -1
- package/dist/core/web/public/next/assets/ActionMenu-FxXeRbPx.js +0 -2
- package/dist/core/web/public/next/assets/Advanced-D_eS4472.js +0 -2
- package/dist/core/web/public/next/assets/Advanced-D_eS4472.js.map +0 -1
- package/dist/core/web/public/next/assets/App-Cj4zKbG3.js +0 -7
- package/dist/core/web/public/next/assets/App-Cj4zKbG3.js.map +0 -1
- package/dist/core/web/public/next/assets/AppsSection-Ddu_RCQE.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-Ddu_RCQE.js.map +0 -1
- package/dist/core/web/public/next/assets/AreaTrend-CDxrQU4b.js +0 -2
- package/dist/core/web/public/next/assets/AutonomySection-DuQkHGD_.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-CLsvOcyK.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-TL3FeZ1D.js +0 -2
- package/dist/core/web/public/next/assets/BurnDown-sFXkUGdB.js +0 -2
- package/dist/core/web/public/next/assets/BurnDown-sFXkUGdB.js.map +0 -1
- package/dist/core/web/public/next/assets/CapacityStrip-qReu0RaF.js +0 -2
- package/dist/core/web/public/next/assets/ChatSection-DZuZfTaC.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-DZuZfTaC.js.map +0 -1
- package/dist/core/web/public/next/assets/CloudBudgetForm-DJbiT1wi.js +0 -2
- package/dist/core/web/public/next/assets/CloudBudgetForm-DJbiT1wi.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-zYLFZRnj.js +0 -2
- package/dist/core/web/public/next/assets/CommandPalette-zYLFZRnj.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-rIeMK5Ch.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-rIeMK5Ch.js.map +0 -1
- package/dist/core/web/public/next/assets/ConfirmDialog-DLrLKM0c.js +0 -2
- package/dist/core/web/public/next/assets/Dialog-BS9Dxi3G.js +0 -2
- package/dist/core/web/public/next/assets/DiffPane-TOmUf3b2.js +0 -2
- package/dist/core/web/public/next/assets/DiffViewer-BpH56302.js +0 -2
- package/dist/core/web/public/next/assets/DockHost-DzkzR-HD.js +0 -2
- package/dist/core/web/public/next/assets/DockHost-DzkzR-HD.js.map +0 -1
- package/dist/core/web/public/next/assets/FleetSection-ViAb549H.js +0 -3
- package/dist/core/web/public/next/assets/FleetSection-ViAb549H.js.map +0 -1
- package/dist/core/web/public/next/assets/Funnel-D2u7Wlzc.js +0 -2
- package/dist/core/web/public/next/assets/GearTray-Cb2npoxM.js +0 -2
- package/dist/core/web/public/next/assets/GrowthSection-C5aDPs8B.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-BF3AYg-X.js +0 -2
- package/dist/core/web/public/next/assets/Input-B5dmGLZx.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-DZrmjDbI.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-DZrmjDbI.js.map +0 -1
- package/dist/core/web/public/next/assets/MatrixHeatmap-BgEUs2Eu.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-DZkiOuoq.js +0 -2
- package/dist/core/web/public/next/assets/MessageMarkdown-BauY8ZTY.js +0 -3
- package/dist/core/web/public/next/assets/MindSection-BvJXFjyX.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-BvJXFjyX.js.map +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-mxrw0Yvy.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouDrawer-CO-Balfp.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouList-CzDZbzRD.js +0 -2
- package/dist/core/web/public/next/assets/NewChatDialog-B8eJjlFf.js +0 -3
- package/dist/core/web/public/next/assets/NewChatDialog-B8eJjlFf.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-Cij6KWat.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingFlow-Cij6KWat.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-DSpPj8UE.css +0 -1
- package/dist/core/web/public/next/assets/PreviewPane-BS-CleCd.js +0 -2
- package/dist/core/web/public/next/assets/RailStatus-cPRyOmrk.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesChrome-BJCauW_t.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-BJCauW_t.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-BDecg6nO.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesDrawer-BDecg6nO.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-CSKIO_wZ.css +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DYtwc2ja.js +0 -2
- package/dist/core/web/public/next/assets/RunInCloudAction-BEGEEM8O.js +0 -2
- package/dist/core/web/public/next/assets/SeatSelector-CYHRR7Wp.js +0 -3
- package/dist/core/web/public/next/assets/Segmented-BE53BenI.js +0 -2
- package/dist/core/web/public/next/assets/Select-BwSGkHCS.js +0 -2
- package/dist/core/web/public/next/assets/SessionGate-e0dFJm9d.js +0 -2
- package/dist/core/web/public/next/assets/SessionInsightChip-CxlSyueJ.js +0 -2
- package/dist/core/web/public/next/assets/SessionSearch-_yp7S2TP.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-wGnpWeGW.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-wGnpWeGW.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-DVP2Mgy6.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-BcIcoClX.js +0 -2
- package/dist/core/web/public/next/assets/Sidebar-DjQOqPbm.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-DjQOqPbm.js.map +0 -1
- package/dist/core/web/public/next/assets/Slider-BypUWjpH.js +0 -2
- package/dist/core/web/public/next/assets/StepBand-Duz1PUes.js +0 -2
- package/dist/core/web/public/next/assets/Surface-B75lVfzm.js +0 -2
- package/dist/core/web/public/next/assets/Surface-B75lVfzm.js.map +0 -1
- package/dist/core/web/public/next/assets/Surface-DMca0gAe.css +0 -1
- package/dist/core/web/public/next/assets/Swimlane-DGcIcnNA.js +0 -2
- package/dist/core/web/public/next/assets/TerminalPane-MQT-veKZ.js +0 -7
- package/dist/core/web/public/next/assets/TerminalPane-MQT-veKZ.js.map +0 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-C8yQ0AaR.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-CqxRGJ40.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-CqxRGJ40.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DTjDpGCd.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-DTjDpGCd.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-DfcFGzME.js +0 -10
- package/dist/core/web/public/next/assets/Workspace-DfcFGzME.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-Ddfg2iLl.css +0 -1
- package/dist/core/web/public/next/assets/actions-tWevL9HV.js +0 -2
- package/dist/core/web/public/next/assets/actions-tWevL9HV.js.map +0 -1
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +0 -2
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +0 -1
- package/dist/core/web/public/next/assets/capacity-strip-model-BDbmQ3e3.js +0 -2
- package/dist/core/web/public/next/assets/capacity-strip-model-BDbmQ3e3.js.map +0 -1
- package/dist/core/web/public/next/assets/charts-CfAjuKMv.js +0 -2
- package/dist/core/web/public/next/assets/charts-CfAjuKMv.js.map +0 -1
- package/dist/core/web/public/next/assets/charts-uSX6xVYN.css +0 -1
- package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +0 -1
- package/dist/core/web/public/next/assets/cloud-queries-Br_r0UAz.js +0 -2
- package/dist/core/web/public/next/assets/cloud-queries-Br_r0UAz.js.map +0 -1
- package/dist/core/web/public/next/assets/cloud.module-ascz58c3.js +0 -2
- package/dist/core/web/public/next/assets/cloud.module-ascz58c3.js.map +0 -1
- package/dist/core/web/public/next/assets/command-bus-xYZoK9nQ.js +0 -2
- package/dist/core/web/public/next/assets/command-bus-xYZoK9nQ.js.map +0 -1
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +0 -1
- package/dist/core/web/public/next/assets/composer-keys-su0g1h9o.js +0 -2
- package/dist/core/web/public/next/assets/composer-keys-su0g1h9o.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-BC-HOmPo.js +0 -2
- package/dist/core/web/public/next/assets/context-model-BC-HOmPo.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-CIBmSugV.js +0 -2
- package/dist/core/web/public/next/assets/context-model-CIBmSugV.js.map +0 -1
- package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js +0 -2
- package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js.map +0 -1
- package/dist/core/web/public/next/assets/dock-icons-CUh8dOxJ.js +0 -2
- package/dist/core/web/public/next/assets/dock-store-B2vlxqPu.js +0 -2
- package/dist/core/web/public/next/assets/dock-store-B2vlxqPu.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-model-7i-FbzKI.js +0 -2
- package/dist/core/web/public/next/assets/fleet-model-7i-FbzKI.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-queries-DzGoqq8X.js +0 -2
- package/dist/core/web/public/next/assets/fleet-queries-DzGoqq8X.js.map +0 -1
- package/dist/core/web/public/next/assets/format-BkWdOQDL.js +0 -2
- package/dist/core/web/public/next/assets/format-BkWdOQDL.js.map +0 -1
- package/dist/core/web/public/next/assets/global-oEl9Qj8u.js +0 -2
- package/dist/core/web/public/next/assets/guarded-action-OzqcPjmh.js +0 -3
- package/dist/core/web/public/next/assets/guarded-action-OzqcPjmh.js.map +0 -1
- package/dist/core/web/public/next/assets/icon-base-DvM1eI5V.js +0 -2
- package/dist/core/web/public/next/assets/icon-base-DvM1eI5V.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-DEQa2rTx.js +0 -2
- package/dist/core/web/public/next/assets/icons-DEQa2rTx.js.map +0 -1
- package/dist/core/web/public/next/assets/live-model-bmsJgnYD.js +0 -2
- package/dist/core/web/public/next/assets/live-model-bmsJgnYD.js.map +0 -1
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +0 -2
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +0 -1
- package/dist/core/web/public/next/assets/mind.module-gTGAuJt1.js +0 -2
- package/dist/core/web/public/next/assets/mutations-C5S7okTW.js +0 -2
- package/dist/core/web/public/next/assets/nav-NVtnuG7A.js +0 -2
- package/dist/core/web/public/next/assets/preloaded-Cwf9rsnZ.js +0 -2
- package/dist/core/web/public/next/assets/preloaded-Cwf9rsnZ.js.map +0 -1
- package/dist/core/web/public/next/assets/primitives-DyCKYSBG.js +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-BUcFF_5G.js +0 -2
- package/dist/core/web/public/next/assets/seat-subscription-B-f9ViU2.js +0 -2
- package/dist/core/web/public/next/assets/section-visibility-Yctxu-if.js +0 -2
- package/dist/core/web/public/next/assets/section-visibility-Yctxu-if.js.map +0 -1
- package/dist/core/web/public/next/assets/slots-BhP8b8tf.js +0 -3
- package/dist/core/web/public/next/assets/surface-data-DTI7LjvH.js +0 -2
- package/dist/core/web/public/next/assets/surface-data-DTI7LjvH.js.map +0 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CdUEBFrl.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-CdUEBFrl.js.map +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-owwodNVz.js +0 -2
- package/dist/core/web/public/next/assets/useChartWidth-owwodNVz.js.map +0 -1
- package/dist/core/web/public/next/assets/useSeatsRefresh-DgFy-Ph4.js +0 -2
- package/dist/core/web/public/next/assets/useSeatsRefresh-DgFy-Ph4.js.map +0 -1
- package/dist/core/web/public/next/assets/useVerseTranscript-CDYrrWOO.js +0 -2
- package/dist/core/web/public/next/assets/verse-icons-F9VwX07_.js +0 -2
- package/dist/core/web/public/next/assets/verse-icons-F9VwX07_.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-model-DyCwZF-M.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-DyCwZF-M.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +0 -3
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-ui-store-62DxpVHS.js +0 -3
- package/dist/core/web/public/next/assets/verse-ui-store-62DxpVHS.js.map +0 -1
- package/dist/core/web/public/next/assets/viewport-nTubFCwf.js +0 -2
- package/dist/core/web/public/next/assets/viewport-nTubFCwf.js.map +0 -1
- package/dist/core/web/public/next/assets/warmup-HG5vYbsN.js +0 -3
- package/dist/core/web/public/next/assets/workbench-types-DzN-5trg.js +0 -2
- package/dist/core/web/public/next/assets/workbench-types-DzN-5trg.js.map +0 -1
- /package/dist/core/web/public/next/assets/{BurnDown-BuLMsJMx.css → StatTile-BuLMsJMx.css} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./index-
|
|
2
|
-
//# sourceMappingURL=Meter-
|
|
1
|
+
import{n as e}from"./index-QesfXBsb.js";var t={wrap:`_wrap_ti026_1`,lineWrap:`_lineWrap_ti026_8`,head:`_head_ti026_12`,label:`_label_ti026_19`,value:`_value_ti026_28`,unknown:`_unknown_ti026_37`,track:`_track_ti026_43`,bar:`_bar_ti026_49`,line:`_line_ti026_8`,fill:`_fill_ti026_61`,accent:`_accent_ti026_66`,neutral:`_neutral_ti026_69`,running:`_running_ti026_72`,warning:`_warning_ti026_75`,danger:`_danger_ti026_78`,engine:`_engine_ti026_81`},n=e();function r(e){return e>=1e6?`${(e/1e6).toFixed(e>=1e7?0:1)}m`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(Math.round(e))}function i(e){return e>=90?`danger`:e>=70?`warning`:`accent`}function a({value:e,max:a,variant:o=`labelled`,label:s,valueText:c,tone:l,engineColor:u,className:d,...f}){let p=e!==null&&Number.isFinite(e)&&a!==null&&Number.isFinite(a)&&a>0,m=p?Math.min(100,Math.max(0,e/a*100)):0,h=l??(p?i(m):`neutral`),g=p?c??`${r(e)} / ${r(a)}`:c??`unknown`,_=(0,n.jsx)(`div`,{className:`${t.track} ${o===`line`?t.line:t.bar}`,role:`meter`,"aria-valuenow":p?Math.round(m):void 0,"aria-valuemin":0,"aria-valuemax":100,"aria-valuetext":p?`${Math.round(m)}%`:`unknown`,...f,children:(0,n.jsx)(`div`,{className:`${t.fill} ${t[h]}`,style:{width:`${m}%`,...h===`engine`&&u?{background:u}:{}}})});return o===`line`?(0,n.jsx)(`div`,{className:`${t.lineWrap} ${d??``}`,children:_}):(0,n.jsxs)(`div`,{className:`${t.wrap} ${d??``}`,children:[s||g?(0,n.jsxs)(`div`,{className:t.head,children:[s?(0,n.jsx)(`span`,{className:t.label,children:s}):(0,n.jsx)(`span`,{}),(0,n.jsx)(`span`,{className:`${t.value} ${p?``:t.unknown}`,children:g})]}):null,_]})}export{a as t};
|
|
2
|
+
//# sourceMappingURL=Meter-CFNLpwA-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Meter-
|
|
1
|
+
{"version":3,"file":"Meter-CFNLpwA-.js","names":[],"sources":["../../../../../../src/web-ui/components/primitives/Meter.module.css","../../../../../../src/web-ui/components/primitives/Meter.tsx"],"sourcesContent":[".wrap {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n min-width: 0;\n}\n\n.lineWrap {\n width: 100%;\n}\n\n.head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--space-2);\n}\n\n.label {\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.value {\n flex: none;\n font-family: var(--font-display);\n font-variant-numeric: tabular-nums;\n font-size: var(--text-xs-size);\n letter-spacing: var(--tracking-display);\n color: var(--text-secondary);\n}\n\n.unknown {\n font-family: var(--font-ui);\n font-style: italic;\n color: var(--status-unknown-fg);\n}\n\n.track {\n width: 100%;\n overflow: hidden;\n background: var(--bg-active);\n}\n\n.bar {\n height: 4px;\n border-radius: var(--radius-full);\n}\n\n/* The 2px rule that sits under a header strip — square, full-bleed. */\n.line {\n height: 2px;\n border-radius: 0;\n background: var(--border-subtle);\n}\n\n.fill {\n height: 100%;\n transition: width var(--duration-base) var(--ease-standard);\n}\n\n.accent {\n background: var(--accent-500);\n}\n.neutral {\n background: var(--status-neutral-solid);\n}\n.running {\n background: var(--status-running-solid);\n}\n.warning {\n background: var(--status-warning-solid);\n}\n.danger {\n background: var(--status-danger-solid);\n}\n.engine {\n background: var(--status-neutral-solid);\n}\n","/**\n * components/primitives/Meter.tsx — occupancy against a limit: context\n * window, daily spend against the cap, a plan's usage window.\n *\n * Two forms, one component:\n * variant=\"line\" the 2px full-width rule the design language puts\n * directly under a header strip. No text of its own —\n * wrap it in <Tooltip> and put the numbers beside it.\n * variant=\"labelled\" a 4px bar with a label and a right-aligned\n * \"18k / 66k\" in the display face.\n *\n * Tone thresholds match the V1 context meter (amber >= 70%, danger >= 90%)\n * and are ALWAYS paired with the readable value, never color alone.\n * An unknown limit renders an honest empty track and the text \"unknown\" —\n * never a full bar, never zero (DESIGN.md §7).\n */\nimport type { ReactNode } from 'react';\nimport styles from './Meter.module.css';\n\nexport type MeterTone = 'accent' | 'neutral' | 'running' | 'warning' | 'danger' | 'engine';\n\nexport interface MeterProps {\n /** Current value. null = genuinely unknown. */\n value: number | null;\n /** Limit. null/0 = unknown limit; the meter says so instead of guessing. */\n max: number | null;\n variant?: 'line' | 'labelled';\n label?: ReactNode;\n /** Right-aligned readout. Defaults to `value / max` formatted compactly. */\n valueText?: ReactNode;\n /** Force a tone; by default it is derived from the percentage. */\n tone?: MeterTone;\n /** For tone=\"engine\": the CSS color to paint the fill (an --engine-* var). */\n engineColor?: string;\n /** Accessible name when no visible label is rendered (the line variant). */\n 'aria-label'?: string;\n className?: string;\n}\n\nfunction compact(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(n >= 10_000_000 ? 0 : 1)}m`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(n >= 10_000 ? 0 : 1)}k`;\n return String(Math.round(n));\n}\n\nexport function toneForPercent(percent: number): MeterTone {\n if (percent >= 90) return 'danger';\n if (percent >= 70) return 'warning';\n return 'accent';\n}\n\nexport function Meter({\n value,\n max,\n variant = 'labelled',\n label,\n valueText,\n tone,\n engineColor,\n className,\n ...aria\n}: MeterProps) {\n const known = value !== null && Number.isFinite(value) && max !== null && Number.isFinite(max) && max > 0;\n const percent = known ? Math.min(100, Math.max(0, (value! / max!) * 100)) : 0;\n const resolvedTone = tone ?? (known ? toneForPercent(percent) : 'neutral');\n const readout = known ? (valueText ?? `${compact(value!)} / ${compact(max!)}`) : (valueText ?? 'unknown');\n\n const track = (\n <div\n className={`${styles.track} ${variant === 'line' ? styles.line : styles.bar}`}\n role=\"meter\"\n aria-valuenow={known ? Math.round(percent) : undefined}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuetext={known ? `${Math.round(percent)}%` : 'unknown'}\n {...aria}\n >\n <div\n className={`${styles.fill} ${styles[resolvedTone]}`}\n style={{\n width: `${percent}%`,\n ...(resolvedTone === 'engine' && engineColor ? { background: engineColor } : {}),\n }}\n />\n </div>\n );\n\n if (variant === 'line') return <div className={`${styles.lineWrap} ${className ?? ''}`}>{track}</div>;\n\n return (\n <div className={`${styles.wrap} ${className ?? ''}`}>\n {label || readout ? (\n <div className={styles.head}>\n {label ? <span className={styles.label}>{label}</span> : <span />}\n <span className={`${styles.value} ${known ? '' : styles.unknown}`}>{readout}</span>\n </div>\n ) : null}\n {track}\n </div>\n );\n}\n"],"mappings":"mcCuCA,SAAS,EAAQ,EAAmB,CAGlC,OAFI,GAAK,IAAkB,IAAI,EAAI,IAAA,CAAW,QAAQ,GAAK,IAAa,EAAI,CAAC,EAAE,GAC3E,GAAK,IAAc,IAAI,EAAI,IAAA,CAAO,QAAQ,GAAK,IAAS,EAAI,CAAC,EAAE,GAC5D,OAAO,KAAK,MAAM,CAAC,CAAC,CAC7B,CAEA,SAAgB,EAAe,EAA4B,CAGzD,OAFI,GAAW,GAAW,SACtB,GAAW,GAAW,UACnB,QACT,CAEA,SAAgB,EAAM,CACpB,QACA,MACA,UAAU,WACV,QACA,YACA,OACA,cACA,YACA,GAAG,GACU,CACb,IAAM,EAAQ,IAAU,MAAQ,OAAO,SAAS,CAAK,GAAK,IAAQ,MAAQ,OAAO,SAAS,CAAG,GAAK,EAAM,EAClG,EAAU,EAAQ,KAAK,IAAI,IAAK,KAAK,IAAI,EAAI,EAAS,EAAQ,GAAG,CAAC,EAAI,EACtE,EAAe,IAAS,EAAQ,EAAe,CAAO,EAAI,WAC1D,EAAU,EAAS,GAAa,GAAG,EAAQ,CAAM,EAAE,KAAK,EAAQ,CAAI,IAAQ,GAAa,UAEzF,GACJ,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAW,GAAG,EAAO,MAAM,GAAG,IAAY,OAAS,EAAO,KAAO,EAAO,MACxE,KAAK,QACL,gBAAe,EAAQ,KAAK,MAAM,CAAO,EAAI,IAAA,GAC7C,gBAAe,EACf,gBAAe,IACf,iBAAgB,EAAQ,GAAG,KAAK,MAAM,CAAO,EAAE,GAAK,UACpD,GAAI,EAEJ,UAAA,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAW,GAAG,EAAO,KAAK,GAAG,EAAO,KACpC,MAAO,CACL,MAAO,GAAG,EAAQ,GAClB,GAAI,IAAiB,UAAY,EAAc,CAAE,WAAY,CAAY,EAAI,CAAC,CAChF,CACD,CAAA,CACE,CAAA,EAKP,OAFI,IAAY,QAAe,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,GAAG,EAAO,SAAS,GAAG,GAAa,KAAO,SAAA,CAAW,CAAA,GAGlG,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,GAAG,EAAO,KAAK,GAAG,GAAa,KAA/C,SAAA,CACG,GAAS,GACR,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAO,KAAvB,SAAA,CACG,GAAQ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAO,MAAQ,SAAA,CAAY,CAAA,GAAI,EAAA,EAAA,IAAA,CAAC,OAAD,CAAO,CAAA,GAChE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,GAAG,EAAO,MAAM,GAAG,EAAQ,GAAK,EAAO,UAAY,SAAA,CAAc,CAAA,CAC/E,CACH,CAAA,EAAA,KACH,CACE,GAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,c as t,n}from"./index-QesfXBsb.js";import{m as r,p as i}from"./global-CNNGMril.js";import{t as a}from"./RefreshIndicator-CSyqpY_q.js";import{t as o}from"./AreaTrend-BFimExYn.js";import{n as s,t as c}from"./MatrixHeatmap-DZvZeWXL.js";import{E as l,L as u,S as d,kt as f}from"./VerseConsoleApp-BCY5uSok.js";import{n as p,u as m}from"./format-Dk4Fmxax.js";import{t as h}from"./nav-KmGX0CVz.js";import{a as g,d as _,l as v}from"./surface-data-CchClvHo.js";import{a as ee,c as y,i as te,l as b,n as x,r as S,s as ne,t as C,u as re}from"./mind.module-BrK2nFOL.js";import{n as ie,t as w}from"./AutonomyOffState-B5eEkmiz.js";import{n as T,t as E}from"./actions-Ci6I4C0l.js";import{a as D,i as O,n as k,r as A,t as j}from"./Surface-D--LXgQm.js";import{a as M,i as N,o as ae,r as P,s as F,t as I}from"./LeaderCard-BRr3_yE-.js";var L=t(e(),1),R=n(),z={hit:`✓`,miss:`✗`,pending:`…`,ungraded:`—`};function B(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`}):`—`}function V({read:e,actions:t}){let n=e?.value??null,r=n?.timeline??[],i=n?.latest?.id??null,a=n?.latest?.actions.some(e=>M(n.actions.find(t=>t.id===e.id)??e))??!1;return(0,R.jsx)(j,{title:`Memos`,caption:n?`${r.length} in view · each move graded 7 days later`:void 0,children:e?n?r.length===0?(0,R.jsx)(k,{children:p(`No memos yet${n.lastRun?` — last run: ${n.lastRun.reason??n.lastRun.outcome}`:``}`)}):(0,R.jsx)(`ol`,{className:C.timeline,children:r.map(e=>{let n=F(e),r=N(e.expectedDelta);return(0,R.jsxs)(`li`,{className:C.memo,"data-outcome":n,id:h(`memo-${e.id}`),children:[(0,R.jsx)(`span`,{className:C.memoDay,children:B(e.at)}),(0,R.jsx)(`span`,{className:C.mark,"data-outcome":n,"aria-hidden":`true`,children:z[n]}),(0,R.jsxs)(`div`,{className:C.memoBody,children:[(0,R.jsx)(`span`,{className:C.memoMove,children:e.move??(e.status===`ok`?`No move`:`No memo (${e.status.replace(/-/g,` `)})`)}),e.bottleneck?(0,R.jsxs)(`span`,{className:C.memoWhy,children:[`Bottleneck: `,e.bottleneck]}):null,(0,R.jsxs)(`span`,{className:C.memoMeta,children:[r?`Expected ${r}`:`No expected delta`,` · `,(0,R.jsx)(`span`,{"data-outcome":n,children:n===`hit`||n===`miss`?`${P[n]} (actual ${e.outcome?.actualDelta===null||e.outcome?.actualDelta===void 0?`—`:`${e.outcome.actualDelta>=0?`+`:``}${e.outcome.actualDelta}`})`:P[n]}),` · ${e.actionCount} action${e.actionCount===1?``:`s`}`]})]}),e.id===i&&a?(0,R.jsx)(`button`,{type:`button`,className:C.veto,"aria-label":`Veto the memo of ${B(e.at)}`,disabled:t.busy||t.readOnly,onClick:()=>t.act(()=>v({action:`veto-memo`,memoId:e.id}),`Veto the whole memo`,{confirm:{title:`Veto this memo?`,body:`Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.`,confirmLabel:`Veto memo`,destructive:!0}}),children:`Veto`}):null]},e.id)})}):(0,R.jsx)(k,{tone:`unknown`,children:e.reason??`The Leader did not answer.`}):(0,R.jsx)(`p`,{className:C.muted,"aria-busy":`true`,children:`Reading the Leader…`})})}function H({read:e}){let t=e?.value??null,n=t?.hitRate??null,r=(t?.standards??[]).filter(e=>e.retiredAt===null);return(0,R.jsxs)(`div`,{className:C.stack,children:[(0,R.jsx)(s,{title:`Leader hit rate`,description:n?`${n.hits} of ${n.graded} graded moves · ${n.windowDays} days`:void 0,status:e?t?void 0:{kind:`unknown`,reason:e.reason??`the Leader did not answer.`}:{kind:`loading`},value:n?.rate??null,showState:!1,caption:n&&n.rate===null?`nothing graded yet — moves are graded after 7 days`:void 0,size:180}),(0,R.jsx)(j,{title:`Standards`,caption:t?`${r.length} in force`:void 0,children:t?r.length===0?(0,R.jsx)(k,{children:`No standards yet.`}):(0,R.jsx)(`ul`,{className:C.standards,children:r.map(e=>(0,R.jsxs)(`li`,{children:[(0,R.jsx)(`span`,{className:C.standardRule,children:e.rule}),(0,R.jsxs)(`span`,{className:C.standardMeta,children:[e.appliesTo,` · `,e.source===`mason`?`yours`:`Leader`,` · `,m(e.addedAt)]})]},e.id))}):(0,R.jsx)(k,{tone:`unknown`,children:e?.reason??`The Leader did not answer.`})})]})}var U={high:`High`,warn:`Worth a look`,info:`FYI`};function W({place:e}){return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`span`,{className:C.insightPlace,title:e.full,children:e.label}),e.scratch?(0,R.jsx)(`span`,{className:C.scratchTag,title:`A scratch folder under the system temp directory`,children:`scratch`}):null]})}function G({insights:e,reason:t,loading:n=!1,places:r,empty:i}){return n?(0,R.jsx)(`p`,{className:C.muted,"aria-busy":`true`,children:`Reading the reasoning digest…`}):t===null?e.length===0?(0,R.jsx)(k,{children:i??`No loops, repeated failures or verification gaps in the last 30 days.`}):(0,R.jsx)(`ul`,{className:C.insights,"aria-label":`Reasoning insights`,children:e.map(e=>{let t=e.repo?r?.get(e.repo)??y(e.repo):null,n=m(e.lastAt),i=[e.engine,`${e.count}×`,n===`—`?null:`last seen ${n}`].filter(Boolean).join(` · `);return(0,R.jsxs)(`li`,{className:C.insight,"data-severity":e.severity,children:[(0,R.jsxs)(`span`,{className:C.insightKind,children:[(0,R.jsx)(O,{children:x[e.kind]}),(0,R.jsx)(`span`,{className:C.insightSeverity,"data-severity":e.severity,children:U[e.severity]})]}),(0,R.jsx)(`span`,{className:C.insightTitle,children:e.title}),(0,R.jsxs)(`span`,{className:C.insightMeta,children:[t?(0,R.jsx)(W,{place:t}):null,t&&i?` · `:null,i]})]},e.id)})}):(0,R.jsx)(k,{tone:`unknown`,children:t})}function K({read:e,actions:t}){let n=e?.value??null,r=n?.actions??[];return(0,R.jsx)(j,{title:`Action log`,caption:n?`Newest first · Veto runs the recorded inverse`:void 0,children:e?n?r.length===0?(0,R.jsx)(k,{children:`The Leader has not acted yet.`}):(0,R.jsx)(`ul`,{className:C.log,"aria-label":`Leader actions`,children:r.map(e=>(0,R.jsx)(I,{action:e,actions:t},e.id))}):(0,R.jsx)(k,{tone:`unknown`,children:e.reason??`The Leader did not answer.`}):(0,R.jsx)(`p`,{className:C.muted,"aria-busy":`true`,children:`Reading the action log…`})})}var q=6e4;function oe(e,t){return t?e?`${e} ${t.title}.`:`${t.title}. ${t.why}`:e}var J=3e5;function Y(){let{compact:e}=f(),t=i(g),n=i(_,{freshMs:6e4}),s=r(g),p=r(_);u(()=>{s(),p()},q);let m=T(),v=(0,L.useId)(),y=i(d,{freshMs:J}),x=i(l,{freshMs:J}),O=n.data?.value??null,k=(0,L.useMemo)(()=>te(O),[O]),M=(0,L.useMemo)(()=>re(x.data?.workspaces,y.data?.projects),[x.data,y.data]),N=(0,L.useMemo)(()=>b(O?O.insights.flatMap(e=>e.repo?[e.repo]:[]):[],M),[O,M]),P=e=>{let t=N.get(e);return t?`${t.label}${t.scratch?` · scratch`:``}`:e},[F,I]=(0,L.useState)(null),z=F!==null&&k.includes(F)?F:null,B=(0,L.useMemo)(()=>S(O,z),[O,z]),U=ne(O),W=ee(O),Y=(e,t)=>n.data?O?e?{kind:`ready`}:{kind:`empty`,message:t}:{kind:`unknown`,reason:n.data.reason??`the reasoning digest did not answer.`}:{kind:`loading`},X=O?O.totals.steps>0:!1,Z=ie(),Q=ae(t.data?.value??null),$=O!==null&&!X&&U.length===0;return(0,R.jsxs)(D,{title:`Mind`,actions:[t,n].some(e=>e.status===`refreshing`)?(0,R.jsx)(a,{}):null,lead:(0,R.jsx)(E,{actions:m}),children:[Q?(0,R.jsx)(A,{span:12,children:(0,R.jsx)(w,{state:Z??null,here:`mind`,title:Q.title,why:oe(Q.why,Z??null)})}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(A,{span:8,children:(0,R.jsx)(V,{read:t.data,actions:m})}),(0,R.jsx)(A,{span:4,children:(0,R.jsx)(H,{read:t.data})})]}),Q&&$?null:(0,R.jsx)(A,{span:12,children:(0,R.jsx)(j,{title:`What the reasoning shows`,caption:O?`Last 30 days · ${O.totals.steps.toLocaleString(`en-US`)} reasoning steps across ${O.totals.sessions} sessions`:void 0,children:(0,R.jsx)(`div`,{id:h(`insights`),children:(0,R.jsx)(G,{insights:U,places:N,loading:!n.data,reason:!n.data||O?null:n.data.reason??`The reasoning digest did not answer.`,empty:$?`No reasoning recorded in the last 30 days.`:void 0})})})}),$?null:(0,R.jsx)(A,{span:8,children:(0,R.jsx)(c,{title:`Insights by kind and engine`,description:z?`In ${P(z)}`:`All repos · 30 days`,status:Y(X&&B.columns.length>0,`No reasoning was recorded in the last 30 days.`),rows:B.rows,columns:B.columns,values:B.values,unit:`insights`,defaultView:e?`table`:`chart`,actions:k.length>1?(0,R.jsxs)(`label`,{className:C.facet,htmlFor:v,children:[`Repo`,(0,R.jsxs)(`select`,{id:v,value:z??``,onChange:e=>I(e.target.value||null),children:[(0,R.jsx)(`option`,{value:``,children:`All`}),k.map(e=>(0,R.jsx)(`option`,{value:e,title:e,children:P(e)},e))]})]}):null})}),$?null:(0,R.jsx)(A,{span:4,children:(0,R.jsx)(o,{title:`Struggles and wins`,description:`Per day · days with no reasoning are gaps`,status:Y(X,`No reasoning was recorded in the last 30 days.`),series:W,height:200})}),Q?null:(0,R.jsx)(A,{span:12,children:(0,R.jsx)(K,{read:t.data,actions:m})}),m.dialogs]})}export{q as MIND_POLL_MS,Y as MindSection};
|
|
2
|
+
//# sourceMappingURL=MindSection-BTIiQS8P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MindSection-BTIiQS8P.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/mind/MindCards.tsx","../../../../../../src/web-ui/routes/verse/sections/MindSection.tsx"],"sourcesContent":["/**\n * routes/verse/mind/MindCards.tsx — Mind's cards (SPEC-310B §6, SPEC-310C §5;\n * unit C7): the memo timeline with each move's 7-day outcome ✓/✗ and Veto,\n * the hit-rate gauge with the standards, three A7 insight cards and the\n * action log. Everything the Leader or A7 wrote is untrusted text: rendered\n * as plain text, never as markdown or a link.\n */\nimport type { ReasoningInsight } from '../../../../core/reasoning/types.js';\nimport type { LeaderAction, LeaderStateV1 } from '../../../../core/vision/leader-types.js';\nimport { Gauge } from '../../../components/charts/Gauge.js';\nimport { UNKNOWN, asSentence, formatRelative } from '../autonomy/format.js';\nimport type { SurfaceActions } from '../command/actions.js';\nimport { ActionRow } from '../command/LeaderCard.js';\nimport { anchorId } from '../command/nav.js';\nimport { Card, CardNote, MicroLabel } from '../command/Surface.js';\nimport { postLeader, type OptionalRead } from '../command/surface-data.js';\nimport { KIND_LABEL } from './mind-model.js';\nimport { OUTCOME_WORD, expectedDeltaText, isVetoable, outcomeMark } from './leader-model.js';\nimport { projectLabel, type ProjectLabel } from './project-label.js';\nimport styles from './mind.module.css';\n\nconst MARK: Record<ReturnType<typeof outcomeMark>, string> = { hit: '✓', miss: '✗', pending: '…', ungraded: '—' };\n\nfunction dayHeading(iso: string): string {\n const t = Date.parse(iso);\n return Number.isFinite(t) ? new Date(t).toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' }) : '—';\n}\n\nexport function MemoTimeline({ read, actions }: { read: OptionalRead<LeaderStateV1> | undefined; actions: SurfaceActions }) {\n const state = read?.value ?? null;\n const memos = state?.timeline ?? [];\n const latestId = state?.latest?.id ?? null;\n const latestVetoable = state?.latest?.actions.some((a) => isVetoable(state.actions.find((x) => x.id === a.id) ?? a)) ?? false;\n return (\n <Card title=\"Memos\" caption={state ? `${memos.length} in view · each move graded 7 days later` : undefined}>\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the Leader…</p>\n ) : !state ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : memos.length === 0 ? (\n <CardNote>{asSentence(`No memos yet${state.lastRun ? ` — last run: ${state.lastRun.reason ?? state.lastRun.outcome}` : ''}`)}</CardNote>\n ) : (\n <ol className={styles.timeline}>\n {memos.map((m) => {\n const mark = outcomeMark(m);\n const delta = expectedDeltaText(m.expectedDelta);\n return (\n <li key={m.id} className={styles.memo} data-outcome={mark} id={anchorId(`memo-${m.id}`)}>\n <span className={styles.memoDay}>{dayHeading(m.at)}</span>\n <span className={styles.mark} data-outcome={mark} aria-hidden=\"true\">{MARK[mark]}</span>\n <div className={styles.memoBody}>\n <span className={styles.memoMove}>{m.move ?? (m.status === 'ok' ? 'No move' : `No memo (${m.status.replace(/-/g, ' ')})`)}</span>\n {m.bottleneck ? <span className={styles.memoWhy}>Bottleneck: {m.bottleneck}</span> : null}\n <span className={styles.memoMeta}>\n {delta ? `Expected ${delta}` : 'No expected delta'}\n {' · '}\n <span data-outcome={mark}>\n {mark === 'hit' || mark === 'miss'\n ? `${OUTCOME_WORD[mark]} (actual ${m.outcome?.actualDelta === null || m.outcome?.actualDelta === undefined ? '—' : `${m.outcome.actualDelta >= 0 ? '+' : ''}${m.outcome.actualDelta}`})`\n : OUTCOME_WORD[mark]}\n </span>\n {` · ${m.actionCount} action${m.actionCount === 1 ? '' : 's'}`}\n </span>\n </div>\n {m.id === latestId && latestVetoable ? (\n <button\n type=\"button\"\n className={styles.veto}\n aria-label={`Veto the memo of ${dayHeading(m.at)}`}\n disabled={actions.busy || actions.readOnly}\n onClick={() =>\n actions.act(() => postLeader({ action: 'veto-memo', memoId: m.id }), 'Veto the whole memo', {\n confirm: {\n title: 'Veto this memo?',\n body: 'Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.',\n confirmLabel: 'Veto memo',\n destructive: true,\n },\n })\n }\n >\n Veto\n </button>\n ) : null}\n </li>\n );\n })}\n </ol>\n )}\n </Card>\n );\n}\n\nexport function HitRateCard({ read }: { read: OptionalRead<LeaderStateV1> | undefined }) {\n const state = read?.value ?? null;\n const hr = state?.hitRate ?? null;\n const standards = (state?.standards ?? []).filter((s) => s.retiredAt === null);\n return (\n <div className={styles.stack}>\n <Gauge\n title=\"Leader hit rate\"\n description={hr ? `${hr.hits} of ${hr.graded} graded moves · ${hr.windowDays} days` : undefined}\n status={!read ? { kind: 'loading' } : !state ? { kind: 'unknown', reason: read.reason ?? 'the Leader did not answer.' } : undefined}\n value={hr?.rate ?? null}\n showState={false}\n caption={hr && hr.rate === null ? 'nothing graded yet — moves are graded after 7 days' : undefined}\n size={180}\n />\n <Card title=\"Standards\" caption={state ? `${standards.length} in force` : undefined}>\n {!state ? (\n <CardNote tone=\"unknown\">{read?.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : standards.length === 0 ? (\n <CardNote>No standards yet.</CardNote>\n ) : (\n <ul className={styles.standards}>\n {standards.map((s) => (\n <li key={s.id}>\n <span className={styles.standardRule}>{s.rule}</span>\n <span className={styles.standardMeta}>\n {s.appliesTo} · {s.source === 'mason' ? 'yours' : 'Leader'} · {formatRelative(s.addedAt)}\n </span>\n </li>\n ))}\n </ul>\n )}\n </Card>\n </div>\n );\n}\n\nconst SEVERITY_WORD = { high: 'High', warn: 'Worth a look', info: 'FYI' } as const;\n\n/**\n * Where the insight happened: the project's name, the full path only in the\n * tooltip, and a quiet `scratch` tag for a folder under the OS temp dir\n * (project-label.ts). Plain text, never a link.\n */\nfunction InsightPlace({ place }: { place: ProjectLabel }) {\n return (\n <>\n <span className={styles.insightPlace} title={place.full}>{place.label}</span>\n {place.scratch ? (\n <span className={styles.scratchTag} title=\"A scratch folder under the system temp directory\">scratch</span>\n ) : null}\n </>\n );\n}\n\nexport function InsightCards({\n insights,\n reason,\n loading = false,\n places,\n empty,\n}: {\n insights: ReasoningInsight[];\n reason: string | null;\n loading?: boolean;\n /** The no-insights line; Mind passes \"No reasoning recorded…\" when there was no reasoning at all. */\n empty?: string;\n /** Labels for the insights' repos (MindSection builds them once for the cards and the facet). */\n places?: ReadonlyMap<string, ProjectLabel>;\n}) {\n if (loading) return <p className={styles.muted} aria-busy=\"true\">Reading the reasoning digest…</p>;\n if (reason !== null) return <CardNote tone=\"unknown\">{reason}</CardNote>;\n if (insights.length === 0) {\n return <CardNote>{empty ?? 'No loops, repeated failures or verification gaps in the last 30 days.'}</CardNote>;\n }\n return (\n <ul className={styles.insights} aria-label=\"Reasoning insights\">\n {insights.map((i) => {\n const place = i.repo ? (places?.get(i.repo) ?? projectLabel(i.repo)) : null;\n const seen = formatRelative(i.lastAt);\n const rest = [i.engine, `${i.count}×`, seen === UNKNOWN ? null : `last seen ${seen}`].filter(Boolean).join(' · ');\n return (\n <li key={i.id} className={styles.insight} data-severity={i.severity}>\n <span className={styles.insightKind}>\n <MicroLabel>{KIND_LABEL[i.kind]}</MicroLabel>\n <span className={styles.insightSeverity} data-severity={i.severity}>{SEVERITY_WORD[i.severity]}</span>\n </span>\n <span className={styles.insightTitle}>{i.title}</span>\n <span className={styles.insightMeta}>\n {place ? <InsightPlace place={place} /> : null}\n {place && rest ? ' · ' : null}\n {rest}\n </span>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function ActionLog({ read, actions }: { read: OptionalRead<LeaderStateV1> | undefined; actions: SurfaceActions }) {\n const state = read?.value ?? null;\n const list: LeaderAction[] = state?.actions ?? [];\n return (\n <Card title=\"Action log\" caption={state ? 'Newest first · Veto runs the recorded inverse' : undefined}>\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the action log…</p>\n ) : !state ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : list.length === 0 ? (\n <CardNote>The Leader has not acted yet.</CardNote>\n ) : (\n <ul className={styles.log} aria-label=\"Leader actions\">\n {list.map((a) => (\n <ActionRow key={a.id} action={a} actions={actions} />\n ))}\n </ul>\n )}\n </Card>\n );\n}\n","/**\n * routes/verse/sections/MindSection.tsx — ⌘4 Mind: what did the Leader\n * decide, and was it right? (SPEC-310B §6, SPEC-310C §5; unit C7)\n *\n * Memo timeline with 7-day outcomes ✓/✗ and Veto (8) | Hit-rate gauge + standards (4)\n * Three A7 insight cards (12)\n * Insight matrix kind × engine, per repo (8) | Reasoning trends (4)\n * Action log with Veto (12)\n *\n * At 375 px one column in that order, and the matrix starts on its table\n * (a 6 × 4 grid of 22 px cells says less than its table on a phone).\n *\n * Nothing yet: a Leader with no memo, no action and nothing graded is ONE\n * card (\"The Leader hasn't run yet.\" + its last run's reason, and the\n * autonomy action when autonomy is off) in place of Memos, Hit rate and the\n * Action log; a digest with no reasoning drops the matrix and the trend\n * (the insights card says it once). Both empty: that one card is Mind.\n */\nimport { useId, useMemo, useState } from 'react';\nimport { AreaTrend } from '../../../components/charts/AreaTrend.js';\nimport type { ChartStatus } from '../../../components/charts/ChartFrame.js';\nimport { MatrixHeatmap } from '../../../components/charts/MatrixHeatmap.js';\nimport { RefreshIndicator } from '../../../components/primitives/RefreshIndicator.js';\nimport { useQuery, useRefetch } from '../../../data/hooks.js';\nimport { AutonomyOffState, useAutonomyOff } from '../autonomy/AutonomyOffState.js';\nimport type { AutonomyOffState as AutonomyOffStateModel } from '../autonomy/autonomy-off-model.js';\nimport { ActionStatus, useSurfaceActions } from '../command/actions.js';\nimport { anchorId } from '../command/nav.js';\nimport { Card, Cell, Surface } from '../command/Surface.js';\nimport { leaderQuery, reasoningDigestQuery } from '../command/surface-data.js';\nimport { usePollWhileVisible } from '../shell/section-visibility.js';\nimport { useViewport } from '../shell/viewport.js';\nimport { verseBootstrapQuery, verseWorkspacesQuery } from '../verse-queries.js';\nimport { ActionLog, HitRateCard, InsightCards, MemoTimeline } from '../mind/MindCards.js';\nimport { insightMatrix, insightRepos, reasoningTrendSeries, topInsights } from '../mind/mind-model.js';\nimport { leaderSilence } from '../mind/leader-model.js';\nimport { projectLabels, projectNames } from '../mind/project-label.js';\nimport styles from '../mind/mind.module.css';\n\nexport const MIND_POLL_MS = 60_000;\n\n/** The Leader's own reason first; with autonomy off, the one fact its action button answers. */\nfunction silenceLine(reason: string | null, off: AutonomyOffStateModel | null): string | null {\n if (!off) return reason;\n return reason ? `${reason} ${off.title}.` : `${off.title}. ${off.why}`;\n}\nconst NAMES_FRESH_MS = 5 * 60_000;\n\nexport function MindSection() {\n const { compact } = useViewport();\n const leader = useQuery(leaderQuery);\n const digest = useQuery(reasoningDigestQuery, { freshMs: 60_000 });\n const refetchLeader = useRefetch(leaderQuery);\n const refetchDigest = useRefetch(reasoningDigestQuery);\n usePollWhileVisible(() => {\n refetchLeader();\n refetchDigest();\n }, MIND_POLL_MS);\n const actions = useSurfaceActions();\n const facetId = useId();\n\n // Registered project names for the insight cards and the Repo facet. Both\n // reads are normally already cached by Chat (bootstrap on first paint, saved\n // projects in its sidebar) and names rarely change, so a cached answer up\n // to 5 minutes old is used as-is; either missing just means folder names.\n const bootstrap = useQuery(verseBootstrapQuery, { freshMs: NAMES_FRESH_MS });\n const saved = useQuery(verseWorkspacesQuery, { freshMs: NAMES_FRESH_MS });\n\n const d = digest.data?.value ?? null;\n // The facet offers one entry per folder; the labels cover every spelling an\n // insight recorded (`/tmp/x` and `/private/tmp/x` read the same), so a card\n // and the facet always agree.\n const repos = useMemo(() => insightRepos(d), [d]);\n const names = useMemo(() => projectNames(saved.data?.workspaces, bootstrap.data?.projects), [saved.data, bootstrap.data]);\n const places = useMemo(() => projectLabels(d ? d.insights.flatMap((i) => (i.repo ? [i.repo] : [])) : [], names), [d, names]);\n const placeText = (r: string) => {\n const p = places.get(r);\n return p ? `${p.label}${p.scratch ? ' · scratch' : ''}` : r;\n };\n const [repo, setRepo] = useState<string | null>(null);\n const facet = repo !== null && repos.includes(repo) ? repo : null;\n const matrix = useMemo(() => insightMatrix(d, facet), [d, facet]);\n const top = topInsights(d);\n const trends = reasoningTrendSeries(d);\n\n const digestStatus = (hasData: boolean, empty: string): ChartStatus =>\n !digest.data ? { kind: 'loading' } : !d ? { kind: 'unknown', reason: digest.data.reason ?? 'the reasoning digest did not answer.' } : hasData ? { kind: 'ready' } : { kind: 'empty', message: empty };\n const reasoned = d ? d.totals.steps > 0 : false;\n const off = useAutonomyOff();\n // Settled reads only: a loading Leader or digest keeps its own card.\n const silence = leaderSilence(leader.data?.value ?? null);\n const noReasoning = d !== null && !reasoned && top.length === 0;\n\n return (\n <Surface title=\"Mind\" actions={[leader, digest].some((q) => q.status === 'refreshing') ? <RefreshIndicator /> : null} lead={<ActionStatus actions={actions} />}>\n {silence ? (\n <Cell span={12}>\n <AutonomyOffState state={off ?? null} here=\"mind\" title={silence.title} why={silenceLine(silence.why, off ?? null)} />\n </Cell>\n ) : (\n <>\n <Cell span={8}>\n <MemoTimeline read={leader.data} actions={actions} />\n </Cell>\n <Cell span={4}>\n <HitRateCard read={leader.data} />\n </Cell>\n </>\n )}\n {silence && noReasoning ? null : (\n <Cell span={12}>\n <Card title=\"What the reasoning shows\" caption={d ? `Last 30 days · ${d.totals.steps.toLocaleString('en-US')} reasoning steps across ${d.totals.sessions} sessions` : undefined}>\n <div id={anchorId('insights')}>\n <InsightCards\n insights={top}\n places={places}\n loading={!digest.data}\n reason={!digest.data || d ? null : (digest.data.reason ?? 'The reasoning digest did not answer.')}\n empty={noReasoning ? 'No reasoning recorded in the last 30 days.' : undefined}\n />\n </div>\n </Card>\n </Cell>\n )}\n {noReasoning ? null : (\n <Cell span={8}>\n <MatrixHeatmap\n title=\"Insights by kind and engine\"\n description={facet ? `In ${placeText(facet)}` : 'All repos · 30 days'}\n status={digestStatus(reasoned && matrix.columns.length > 0, 'No reasoning was recorded in the last 30 days.')}\n rows={matrix.rows}\n columns={matrix.columns}\n values={matrix.values}\n unit=\"insights\"\n defaultView={compact ? 'table' : 'chart'}\n actions={\n repos.length > 1 ? (\n <label className={styles.facet} htmlFor={facetId}>\n Repo\n <select id={facetId} value={facet ?? ''} onChange={(e) => setRepo(e.target.value || null)}>\n <option value=\"\">All</option>\n {repos.map((r) => (\n <option key={r} value={r} title={r}>\n {placeText(r)}\n </option>\n ))}\n </select>\n </label>\n ) : null\n }\n />\n </Cell>\n )}\n {noReasoning ? null : (\n <Cell span={4}>\n <AreaTrend\n title=\"Struggles and wins\"\n description=\"Per day · days with no reasoning are gaps\"\n status={digestStatus(reasoned, 'No reasoning was recorded in the last 30 days.')}\n series={trends}\n height={200}\n />\n </Cell>\n )}\n {silence ? null : (\n <Cell span={12}>\n <ActionLog read={leader.data} actions={actions} />\n </Cell>\n )}\n {actions.dialogs}\n </Surface>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,c as t,n,s as r}from"./index-QesfXBsb.js";import{f as i}from"./global-CNNGMril.js";import{t as a}from"./Dialog-BSsIFNqD.js";var o=t(e(),1),s={body:`_body_1kukj_1`,form:`_form_1kukj_8`,label:`_label_1kukj_14`,inputRow:`_inputRow_1kukj_19`,input:`_input_1kukj_19`,reveal:`_reveal_1kukj_40`,error:`_error_1kukj_51`,actions:`_actions_1kukj_56`,cancel:`_cancel_1kukj_63`,submit:`_submit_1kukj_72`},c=r({MutationTokenDialog:()=>d}),l=n(),u=/^[a-f0-9]{64}$/;function d({open:e,onClose:t,onUnlocked:n,reason:r,tokenLabel:c=`Mutation token`,tokenHelp:d=`the mutation token ashlr serve printed`}){let{setToken:f}=i(),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(null),y=(0,o.useRef)(null),b=(0,o.useId)(),x=(0,o.useId)();function S(e){e.preventDefault();let r=p.trim();if(!u.test(r)){v(`Expected 64 hex characters — ${d}.`);return}f(r),m(``),v(null),t(),n?.()}return(0,l.jsxs)(a,{open:e,onClose:t,titleId:b,title:`Unlock actions`,initialFocusRef:y,children:[(0,l.jsxs)(`p`,{className:s.body,children:[r??`This action mutates the fleet and requires the dispatch token.`,` It is held in memory only, for this browser tab, and is cleared automatically after 20 minutes idle.`]}),(0,l.jsxs)(`form`,{onSubmit:S,className:s.form,noValidate:!0,children:[(0,l.jsx)(`label`,{htmlFor:x,className:s.label,children:c}),(0,l.jsxs)(`div`,{className:s.inputRow,children:[(0,l.jsx)(`input`,{ref:y,id:x,type:h?`text`:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,className:s.input,value:p,onChange:e=>m(e.target.value),"aria-invalid":_?!0:void 0,placeholder:`64 hex characters`}),(0,l.jsx)(`button`,{type:`button`,className:s.reveal,onClick:()=>g(e=>!e),"aria-pressed":h,children:h?`Hide`:`Show`})]}),_?(0,l.jsx)(`p`,{className:s.error,role:`alert`,children:_}):null,(0,l.jsxs)(`div`,{className:s.actions,children:[(0,l.jsx)(`button`,{type:`button`,className:s.cancel,onClick:t,children:`Cancel`}),(0,l.jsx)(`button`,{type:`submit`,className:s.submit,disabled:p.trim().length===0,children:`Unlock`})]})]})]})}export{c as n,d as t};
|
|
2
|
+
//# sourceMappingURL=MutationTokenDialog-T7gv3a9r.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationTokenDialog-
|
|
1
|
+
{"version":3,"file":"MutationTokenDialog-T7gv3a9r.js","names":[],"sources":["../../../../../../src/web-ui/components/auth/MutationTokenDialog.module.css","../../../../../../src/web-ui/components/auth/MutationTokenDialog.tsx"],"sourcesContent":[".body {\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n margin-bottom: var(--space-4);\n}\n\n.form {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n}\n\n.label {\n font-size: var(--text-sm-size);\n font-weight: var(--font-weight-medium);\n}\n\n.inputRow {\n display: flex;\n gap: var(--space-2);\n}\n\n.input {\n flex: 1;\n padding: var(--space-3);\n border-radius: var(--radius-md);\n border: 1px solid var(--border-default);\n background: var(--bg-input);\n font-family: var(--font-mono);\n font-size: var(--text-sm-size);\n min-width: 0;\n}\n\n.input:focus-visible {\n border-color: var(--border-focus);\n box-shadow: var(--shadow-focus-ring);\n}\n\n.reveal {\n padding: 0 var(--space-3);\n border-radius: var(--radius-md);\n border: 1px solid var(--border-default);\n font-size: var(--text-sm-size);\n color: var(--text-secondary);\n}\n.reveal:hover {\n background: var(--bg-hover);\n}\n\n.error {\n color: var(--status-danger-fg);\n font-size: var(--text-sm-size);\n}\n\n.actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--space-2);\n margin-top: var(--space-3);\n}\n\n.cancel {\n padding: var(--space-2) var(--space-4);\n border-radius: var(--radius-md);\n color: var(--text-secondary);\n}\n.cancel:hover {\n background: var(--bg-hover);\n}\n\n.submit {\n padding: var(--space-2) var(--space-4);\n border-radius: var(--radius-md);\n background: var(--accent-500);\n color: var(--text-on-accent);\n font-weight: var(--font-weight-medium);\n}\n.submit:hover:not(:disabled) {\n background: var(--accent-600);\n}\n.submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n","/**\n * components/auth/MutationTokenDialog.tsx — replaces window.prompt() for\n * the mutation token (foundation brief item 5, the \"biggest reason\n * operators abandon the UI for the CLI\" finding). A focus-managed dialog\n * instead of a blocking native prompt, and a session-scoped hold (see\n * auth-store.ts) so approving 12 proposals is one paste, not twelve.\n *\n * The token is NEVER written to localStorage/sessionStorage/cookies — only\n * held in an in-memory module variable in auth-store.ts, cleared on tab\n * close, idle timeout, or the explicit \"Lock\" action here.\n */\nimport { useId, useRef, useState, type FormEvent } from 'react';\nimport { Dialog } from '../primitives/Dialog.js';\nimport { useMutationHold } from '../../data/hooks.js';\nimport styles from './MutationTokenDialog.module.css';\n\nconst TOKEN_RE = /^[a-f0-9]{64}$/;\n\nexport interface MutationTokenDialogProps {\n open: boolean;\n onClose: () => void;\n onUnlocked?: () => void;\n /** Human context for why the token is being requested right now. */\n reason?: string;\n /** Scoped consoles can name their own startup token without changing the hold. */\n tokenLabel?: string;\n tokenHelp?: string;\n}\n\nexport function MutationTokenDialog({ open, onClose, onUnlocked, reason, tokenLabel = 'Mutation token',\n tokenHelp = 'the mutation token ashlr serve printed' }: MutationTokenDialogProps) {\n const { setToken } = useMutationHold();\n const [value, setValue] = useState('');\n const [reveal, setReveal] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const titleId = useId();\n const inputId = useId();\n\n function submit(e: FormEvent) {\n e.preventDefault();\n const trimmed = value.trim();\n if (!TOKEN_RE.test(trimmed)) {\n setError(`Expected 64 hex characters — ${tokenHelp}.`);\n return;\n }\n setToken(trimmed);\n setValue('');\n setError(null);\n onClose();\n onUnlocked?.();\n }\n\n return (\n <Dialog open={open} onClose={onClose} titleId={titleId} title=\"Unlock actions\" initialFocusRef={inputRef}>\n <p className={styles.body}>\n {reason ?? 'This action mutates the fleet and requires the dispatch token.'} It is held in\n memory only, for this browser tab, and is cleared automatically after 20 minutes idle.\n </p>\n <form onSubmit={submit} className={styles.form} noValidate>\n <label htmlFor={inputId} className={styles.label}>\n {tokenLabel}\n </label>\n <div className={styles.inputRow}>\n <input\n ref={inputRef}\n id={inputId}\n type={reveal ? 'text' : 'password'}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n className={styles.input}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n aria-invalid={error ? true : undefined}\n placeholder=\"64 hex characters\"\n />\n <button\n type=\"button\"\n className={styles.reveal}\n onClick={() => setReveal((r) => !r)}\n aria-pressed={reveal}\n >\n {reveal ? 'Hide' : 'Show'}\n </button>\n </div>\n {error ? (\n <p className={styles.error} role=\"alert\">\n {error}\n </p>\n ) : null}\n <div className={styles.actions}>\n <button type=\"button\" className={styles.cancel} onClick={onClose}>\n Cancel\n </button>\n <button type=\"submit\" className={styles.submit} disabled={value.trim().length === 0}>\n Unlock\n </button>\n </div>\n </form>\n </Dialog>\n );\n}\n"],"mappings":"8bCgBM,EAAW,iBAajB,SAAgB,EAAoB,CAAE,OAAM,UAAS,aAAY,SAAQ,aAAa,iBACpF,YAAY,0CAAsE,CAClF,GAAM,CAAE,YAAa,EAAgB,EAC/B,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,CAAS,EAAE,EAC/B,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAAS,EAAK,EACpC,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,CAAwB,IAAI,EAChD,GAAA,EAAW,EAAA,OAAA,CAAyB,IAAI,EACxC,GAAA,EAAU,EAAA,MAAA,CAAM,EAChB,GAAA,EAAU,EAAA,MAAA,CAAM,EAEtB,SAAS,EAAO,EAAc,CAC5B,EAAE,eAAe,EACjB,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,CAAC,EAAS,KAAK,CAAO,EAAG,CAC3B,EAAS,gCAAgC,EAAU,EAAE,EACrD,MACF,CACA,EAAS,CAAO,EAChB,EAAS,EAAE,EACX,EAAS,IAAI,EACb,EAAQ,EACR,IAAa,CACf,CAEA,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAc,OAAe,UAAkB,UAAS,MAAM,iBAAiB,gBAAiB,EAAhG,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,IAAD,CAAG,UAAW,EAAO,KAArB,SAAA,CACG,GAAU,iEAAiE,uGAE3E,CACH,CAAA,GAAA,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,SAAU,EAAQ,UAAW,EAAO,KAAM,WAAA,GAAhD,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,QAAD,CAAO,QAAS,EAAS,UAAW,EAAO,MACxC,SAAA,CACI,CAAA,GACP,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAO,SAAvB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,QAAD,CACE,IAAK,EACL,GAAI,EACJ,KAAM,EAAS,OAAS,WACxB,aAAa,MACb,YAAY,MACZ,WAAY,GACZ,UAAW,EAAO,MACX,QACP,SAAW,GAAM,EAAS,EAAE,OAAO,KAAK,EACxC,eAAc,EAAQ,GAAO,IAAA,GAC7B,YAAY,mBACb,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAO,OAClB,YAAe,EAAW,GAAM,CAAC,CAAC,EAClC,eAAc,EAEb,SAAA,EAAS,OAAS,MACb,CAAA,CACL,IACJ,GACC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAW,EAAO,MAAO,KAAK,QAC9B,SAAA,CACA,CAAA,EACD,MACJ,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,EAAO,QAAvB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,UAAW,EAAO,OAAQ,QAAS,EAAS,SAAA,QAE1D,CAAA,GACR,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,UAAW,EAAO,OAAQ,SAAU,EAAM,KAAK,CAAC,CAAC,SAAW,EAAG,SAAA,QAE7E,CAAA,CACL,GACD,CACA,CAAA,CAAA,GAEZ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,c as t,i as n,n as r}from"./index-QesfXBsb.js";import{E as i,H as a,O as o,P as s,U as c,a as l,i as u,l as d,o as f,p as ee,s as p}from"./global-CNNGMril.js";import{t as m}from"./focus-trap-BdrbWfC4.js";import{t as h}from"./Epistemic-D7MxSmED.js";import{n as g}from"./StatusBadge-DHKRtttH.js";import{h as te}from"./queries-CyBE8nsW.js";import{r as _,t as ne}from"./mutations-DTCtKCn_.js";import{t as v}from"./MutationTokenDialog-T7gv3a9r.js";import{t as y}from"./ConfirmDialog-Bv4hdK2T.js";import{r as b}from"./RouteErrorBoundary-BaC7YVzR.js";import{t as x}from"./RefreshIndicator-CSyqpY_q.js";import{t as S}from"./DiffViewer-CJarUvs0.js";import{At as C,F as w,I as T,J as E,K as D,Mt as O,N as k,S as A,Ut as j,X as M,ct as N,jt as P,kt as F,lt as I,ot as L,rn as R,rt as z}from"./VerseConsoleApp-BCY5uSok.js";import{y as B}from"./format-Dk4Fmxax.js";import{n as re,t as V}from"./Button-BhO-WKPp.js";import{C as ie,c as H}from"./icons-0haWy6nh.js";import{o as ae}from"./verse-icons-DndgEgKS.js";import{o as oe}from"./command-catalog-CF0cQQac.js";import{C as U,D as W,E as G,S as K,T as q,_ as se,a as J,b as ce,c as le,d as ue,f as de,g as fe,h as pe,i as me,l as he,m as ge,n as _e,o as ve,p as ye,r as Y,s as be,t as xe,u as Se,v as Ce,w as we,x as Te,y as Ee}from"./NeedsYouList-BgH8ezqf.js";var X=t(e(),1),De=t(n(),1),Z={layout:`_layout_141uy_8`,listPane:`_listPane_141uy_9`,detailPane:`_detailPane_141uy_10`,filters:`_filters_141uy_12`,filterField:`_filterField_141uy_13`,filterLabel:`_filterLabel_141uy_14`,filterSelect:`_filterSelect_141uy_31`,count:`_count_141uy_46`,rows:`_rows_141uy_48`,row:`_row_141uy_48`,rowActive:`_rowActive_141uy_63`,riskRule:`_riskRule_141uy_68`,rowTitle:`_rowTitle_141uy_72`,rowMeta:`_rowMeta_141uy_73`,rowMetaMono:`_rowMetaMono_141uy_82`,rowAge:`_rowAge_141uy_83`,riskWord:`_riskWord_141uy_84`,detail:`_detail_141uy_10`,detailHead:`_detailHead_141uy_91`,eyebrow:`_eyebrow_141uy_92`,detailTitle:`_detailTitle_141uy_95`,project:`_project_141uy_109`,runFacts:`_runFacts_141uy_110`,diffStats:`_diffStats_141uy_112`,runSource:`_runSource_141uy_113`,hint:`_hint_141uy_114`,detailMeta:`_detailMeta_141uy_115`,summary:`_summary_141uy_117`,block:`_block_141uy_119`,blockTitle:`_blockTitle_141uy_120`,defs:`_defs_141uy_129`,muted:`_muted_141uy_133`,failedChecks:`_failedChecks_141uy_134`,actions:`_actions_141uy_136`,actionNote:`_actionNote_141uy_137`,reject:`_reject_141uy_138`,approve:`_approve_141uy_139`,decided:`_decided_141uy_155`,empty:`_empty_141uy_157`,emptyStrong:`_emptyStrong_141uy_158`,error:`_error_141uy_159`,skeletons:`_skeletons_141uy_160`},Q=r(),Oe={"judge-ship-would-merge":{label:`Ship (would merge)`,tone:`success`},"judge-ship-review-required":{label:`Ship (review required)`,tone:`success`},"judge-review":{label:`Review`,tone:`warning`},"judge-noise":{label:`Noise`,tone:`neutral`},"judge-harmful":{label:`Harmful`,tone:`danger`},"judge-verdict-unrecognized":{label:`Unrecognized verdict`,tone:`unknown`},"judge-parse-failure":{label:`Judge parse failure — not a review`,tone:`unknown`},"judge-network-failure":{label:`Judge network failure — not a review`,tone:`unknown`}};function ke(e){let t=e.filter(e=>e.action===`judged`&&e.judgeReasonCode);return t.length===0?null:t.reduce((e,t)=>Date.parse(t.ts)>Date.parse(e.ts)?t:e)}function Ae({id:e,dispatchEnabled:t,onDispatchDisabled:n,onDecided:r}){let i=ee(te(e)),[a,s]=(0,X.useState)(null),[c,l]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[m,b]=(0,X.useState)(!1),[w,T]=(0,X.useState)(null);function E(e){T(null),s(e),f(!0)}function D(){l(!1),o()?(f(!0),k()):s(null)}function O(){if(a){if(!o()){f(!1),l(!0);return}k()}}async function k(){if(a){b(!0),T(null);try{a===`approve`?await ne(e):await _(e),f(!1),s(null),r()}catch(e){e instanceof p?(f(!1),s(null),n()):T(C(e))}finally{b(!1)}}}if(i.status===`loading`)return(0,Q.jsxs)(`div`,{className:Z.detail,children:[(0,Q.jsx)(u,{width:`55%`}),(0,Q.jsx)(u,{width:`30%`}),(0,Q.jsx)(u,{width:`88%`})]});if(i.status===`error`||!i.data)return(0,Q.jsx)(`p`,{className:Z.error,role:`alert`,children:i.error?.message??`Could not load this proposal.`});let A=i.data,j=A.decisionEvidence,M=ke(j?.decisions??[]),N=M?.judgeReasonCode?Oe[M.judgeReasonCode]:null,P=A.status===`pending`&&t,F=Ee(A),I=se(A.kind,A.repo),L=G(A.title),R=W(A.repo),z=we(A.summary),re=z?z.rest:A.summary?B(A.summary):null;return(0,Q.jsxs)(`div`,{className:Z.detail,children:[(0,Q.jsxs)(`header`,{className:Z.detailHead,children:[(0,Q.jsxs)(`p`,{className:Z.eyebrow,children:[Te(A.kind),L.eyebrow?` \u00b7 ${L.eyebrow}`:``]}),(0,Q.jsx)(`h3`,{className:Z.detailTitle,title:A.title,children:L.text}),(0,Q.jsxs)(`div`,{className:Z.detailMeta,children:[(0,Q.jsx)(g,{status:A.status}),R?(0,Q.jsx)(`span`,{className:Z.project,title:A.repo??void 0,children:R}):(0,Q.jsx)(`span`,{children:`no repository`}),(0,Q.jsx)(`span`,{children:A.riskClass?`${A.riskClass} risk`:`risk unstated`}),F?(0,Q.jsx)(`code`,{title:`The model that produced this change`,children:F}):null,(0,Q.jsxs)(`span`,{title:K(A.createdAt),children:[`created `,U(A.createdAt)]}),A.decidedAt?(0,Q.jsxs)(`span`,{title:K(A.decidedAt),children:[`decided `,U(A.decidedAt)]}):null,i.status===`refreshing`?(0,Q.jsx)(x,{}):null]}),z?(0,Q.jsxs)(`p`,{className:Z.runFacts,children:[(0,Q.jsx)(`span`,{className:Z.diffStats,"aria-hidden":`true`,children:ce(z)}),(0,Q.jsx)(`span`,{className:`visually-hidden`,children:Ce(z)}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{className:Z.runSource,title:z.sourceHint??void 0,children:[z.partial?`Partial · `:``,z.sourceLabel]}),F===null?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsx)(`code`,{title:`The model that produced this change`,children:z.model})]}):null]}):null,re?(0,Q.jsx)(`p`,{className:Z.summary,children:re}):null]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Evidence`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Evidence`}),(0,Q.jsxs)(`dl`,{className:Z.defs,children:[(0,Q.jsx)(`dt`,{children:`Judge verdict`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(h,{quality:j?.sourceQuality,label:`judge verdict`,children:N&&M?.judgeReasonCode?(0,Q.jsx)(g,{status:M.judgeReasonCode,tone:N.tone,children:N.label}):(0,Q.jsx)(`span`,{className:Z.muted,children:`not yet judged`})})}),(0,Q.jsx)(`dt`,{children:`Verification`}),(0,Q.jsx)(`dd`,{children:A.verifyResult?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(g,{status:A.verifyResult.passed?`success`:`failed`,children:A.verifyResult.passed?`passed`:`failed`}),A.verifyResult.ran&&A.verifyResult.ran.length>0?(0,Q.jsxs)(`span`,{className:Z.muted,children:[` · ran `,A.verifyResult.ran.map(e=>e.kind).join(`, `)]}):null,!A.verifyResult.passed&&A.verifyResult.failureCategory&&A.verifyResult.failureCategory!==`code`?(0,Q.jsxs)(`span`,{className:Z.muted,children:[` · `,A.verifyResult.failureCategory,` failure — the verifier itself, not the diff`]}):null,A.verifyResult.failed&&A.verifyResult.failed.length>0?(0,Q.jsxs)(`p`,{className:Z.failedChecks,children:[`failed: `,A.verifyResult.failed.join(`, `)]}):null]}):(0,Q.jsx)(`span`,{className:Z.muted,children:`not verified`})}),A.decisionReason?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Decision reason`}),(0,Q.jsx)(`dd`,{children:B(A.decisionReason)})]}):null,A.evidenceOutcome?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Gates`}),(0,Q.jsxs)(`dd`,{className:Z.muted,children:[A.evidenceOutcome.gateCount??0,` gate`,A.evidenceOutcome.gateCount===1?``:`s`,A.evidenceOutcome.policyAction?` · policy ${A.evidenceOutcome.policyAction}`:``,A.evidenceOutcome.trustBasis?` · trust ${A.evidenceOutcome.trustBasis}`:``]})]}):null,A.result?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Result`}),(0,Q.jsx)(`dd`,{children:B(A.result)})]}):null]})]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Provenance`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Provenance`}),(0,Q.jsxs)(`dl`,{className:Z.defs,children:[(0,Q.jsx)(`dt`,{children:`Produced by`}),(0,Q.jsx)(`dd`,{children:F?(0,Q.jsx)(`code`,{children:F}):(0,Q.jsx)(`span`,{className:Z.muted,children:`unknown engine`})}),(0,Q.jsx)(`dt`,{children:`Origin`}),(0,Q.jsx)(`dd`,{children:A.origin}),z?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`How it was made`}),(0,Q.jsxs)(`dd`,{children:[(0,Q.jsx)(`span`,{title:z.sourceHint??void 0,children:z.sourceLabel}),z.sourceHint?(0,Q.jsx)(`p`,{className:Z.hint,children:z.sourceHint}):null]})]}):null,A.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Repository`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:A.repo})})]}):null,A.workItemId?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Work item`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:A.workItemId})})]}):null,A.runId?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Run`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:A.runId})})]}):null,(0,Q.jsx)(`dt`,{children:`Attestation`}),(0,Q.jsxs)(`dd`,{className:Z.muted,children:[A.producerProvenanceSig?`signed by the sandboxed producer (v${A.producerProvenanceVersion??2})`:A.provenanceSig?`legacy signature present`:`unsigned — earns no positive routing credit`,A.diffHash?` · diff hashed at signing time`:``]})]})]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Diff`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Diff`}),(0,Q.jsx)(S,{diff:A.diff,proposalKind:A.kind})]}),A.status===`pending`?(0,Q.jsxs)(`footer`,{className:Z.actions,children:[(0,Q.jsx)(`p`,{className:Z.actionNote,children:t?I:`Read-only session — approve and reject are unavailable without dispatch.`}),w&&!d?(0,Q.jsx)(`p`,{className:Z.error,role:`alert`,children:w}):null,(0,Q.jsx)(`button`,{type:`button`,className:Z.reject,disabled:!P||m,onClick:()=>E(`reject`),children:`Reject`}),(0,Q.jsx)(`button`,{type:`button`,className:Z.approve,disabled:!P||m,onClick:()=>E(`approve`),children:`Approve…`})]}):(0,Q.jsxs)(`footer`,{className:Z.decided,children:[`This proposal is already `,(0,Q.jsx)(`strong`,{children:A.status}),` — no further action is available.`]}),(0,Q.jsx)(v,{open:c,onClose:D,reason:a===`approve`?`Approving a proposal writes to a real repository and requires the dispatch token.`:`Rejecting a proposal requires the dispatch token.`,tokenHelp:`the mutation token ashlr verse printed`}),(0,Q.jsx)(y,{open:d,onClose:()=>{f(!1),s(null),T(null)},title:a===`approve`?`Approve this ${A.kind} against ${R??`the repository`}?`:`Reject this proposal?`,body:a===`approve`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`strong`,{children:L.text}),(0,Q.jsx)(`br`,{}),Te(A.kind),` · `,(0,Q.jsx)(`strong`,{children:R??`unknown repository`}),A.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`code`,{children:A.repo})]}):null,(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`br`,{}),I,q(A.kind)?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`br`,{}),`This one leaves your machine.`]}):null]}):(0,Q.jsxs)(Q.Fragment,{children:[`This rejects `,(0,Q.jsx)(`strong`,{children:L.text}),` and discards it. It stays in history as rejected and is never applied.`]}),confirmLabel:a===`approve`?`Approve and ${q(A.kind)?`open the pull request`:`apply`}`:`Reject`,destructive:a===`approve`,busy:m,error:w,onConfirm:O})]})}var $=new Map,je=new Set;function Me(){for(let e of[...je])e()}function Ne(e,t=Date.now()){$=new Map($).set(e,t),Me()}function Pe(e,t=Date.now()){let n=!1,r=new Map($);for(let[i,a]of r)(!e.has(i)||t-a>6e4)&&(r.delete(i),n=!0);n&&($=r,Me())}function Fe(){return(0,X.useSyncExternalStore)(e=>(je.add(e),()=>je.delete(e)),()=>$,()=>$)}function Ie(e){Ne(e.id),e.source===`approvals`&&(a(`inbox`),a(`dashboard-snapshot`),c(`inbox-list:`),e.target.kind===`approval`&&a(`proposal-detail-${e.target.proposalId}`)),w()}function Le(e,t,n){let r=t.request;if(!r){n.openTarget(e);return}if(!R(r.path)){n.toast(`That action points outside this app and was not sent.`,`danger`);return}let a=be(e,t),o=ue(e).text,c=async()=>{let e=i();if(!e)throw new f(`Mutation token was rejected.`,401,r.path);await d(r.path,r.body,e),s()},l=me.has(t.kind)||a!==null;O({title:a?.title??t.label,body:a?.body??o,confirmLabel:a?.confirmLabel??t.label,destructive:t.destructive,token:!0,tokenReason:`${t.label} changes state on this machine and requires the dispatch token.`,skipConfirm:!l,run:c,onDone:()=>{Ie(e),n.toast(`${t.label}: ${o}`,`success`)},onError:l?void 0:e=>n.toast(e,`danger`)})}var Re={"drawer.approve":`approve`,"drawer.reject":`reject`,"drawer.veto":`veto`,"drawer.done":`done`};function ze(e){return e instanceof HTMLElement?e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName):!1}function Be(){let e=k(),t=T(),n=b(),r=ee(A),{compact:i}=F(),a=Fe(),o=(0,X.useId)(),s=(0,X.useRef)(null),c=(0,X.useRef)(null),u=(0,X.useRef)(null),[d,f]=(0,X.useState)(null),[p,h]=(0,X.useState)(null),[g,te]=(0,X.useState)(!1),[_,ne]=(0,X.useState)(()=>Date.now());(0,X.useEffect)(()=>{let e=setInterval(()=>ne(Date.now()),15e3);return()=>clearInterval(e)},[]);let v=t.data,y=v?.needsYou;(0,X.useEffect)(()=>{y&&Pe(new Set(y.map(e=>e.id)))},[y]);let x=(0,X.useMemo)(()=>(y??[]).filter(e=>!a.has(e.id)),[y,a]),S=e.needsYouSplit,C=(0,X.useMemo)(()=>he(x,S),[x,S]),E=(0,X.useMemo)(()=>ge(x),[x]),O=pe(v?.sources??null,S),j=(r.data?.dispatchEnabled??!0)&&!g,L=e.needsYouFocus;(0,X.useEffect)(()=>{if(!L)return;let e=x.find(e=>e.id===L);e&&(f(e.id),h(e.id))},[L,x]),(0,X.useEffect)(()=>{if(C.length===0){d!==null&&f(null);return}(!d||!C.some(e=>e.id===d))&&f(C[0].id)},[C,d]);let R=p?x.find(e=>e.id===p)??null:null;(0,X.useEffect)(()=>{p&&!R&&h(null)},[p,R]);let B=(0,X.useCallback)(()=>h(null),[]),V=(0,X.useCallback)(()=>{P()||document.querySelector(`[aria-modal="true"]:not([data-verse-overlay])`)||(p?B():M())},[p,B]);m({open:!0,containerRef:s,onClose:V,initialFocusRef:c});let H=(0,X.useRef)(!1);(0,X.useEffect)(()=>{p?(H.current=!0,u.current?.focus({preventScroll:!0})):H.current&&(H.current=!1,c.current?.focus({preventScroll:!0}))},[p]);let U=C.length>0;(0,X.useEffect)(()=>{if(!U||p)return;let e=document.activeElement;(e===null||e===document.body||e===s.current)&&c.current?.focus({preventScroll:!0})},[U,p]);let W=(0,X.useCallback)(e=>{let t=e.target;switch(t.kind){case`approval`:f(e.id),h(e.id);return;case`session`:M(),z(t.sessionId);return;case`section`:M(),I(t.section,t.anchor);return;case`seat`:M(),I(`apps`,`seat:${t.seatId}`);return;case`url`:window.open(t.url,`_blank`,`noopener,noreferrer`);return;default:return}},[]),G=(0,X.useCallback)((e,t)=>{let r=ve(e,t);if(!r){n.show(`Nothing to ${t} on this item.`,`neutral`);return}if(!j&&r.request){n.show("This server was started without dispatch — run `ashlr verse` to act.",`neutral`);return}Le(e,r,{openTarget:W,toast:n.show})},[j,W,n]);function K(e){if(C.length===0)return;let t=Math.max(0,C.findIndex(e=>e.id===d)),n=C[(t+e+C.length)%C.length];f(n.id),p&&h(n.id)}function q(e){let t=D.indexOf(S),n=D[(t+e+D.length)%D.length];N(n),h(null)}function se(e){if(e.defaultPrevented||ze(e.target)||!(e.target instanceof Node)||!s.current?.contains(e.target))return;let t=oe(e.nativeEvent,[`drawer`]);if(!t||t.id===`drawer.open`&&e.target instanceof HTMLButtonElement)return;e.preventDefault(),e.stopPropagation();let n=C.find(e=>e.id===(p??d))??null;switch(t.id){case`drawer.next`:K(1);return;case`drawer.prev`:K(-1);return;case`drawer.split-next`:q(1);return;case`drawer.split-prev`:q(-1);return;case`drawer.open`:n&&h(n.id);return;default:{let e=Re[t.id];e&&n&&G(n,e)}}}let ce=!v&&(t.status===`loading`||t.status===`idle`),ue=!v&&t.status===`unavailable`;return(0,De.createPortal)((0,Q.jsx)(`div`,{className:Y.backdrop,onMouseDown:e=>e.target===e.currentTarget&&M(),children:(0,Q.jsxs)(`div`,{ref:s,role:`dialog`,"aria-modal":`true`,"aria-labelledby":o,className:Y.panel,"data-presentation":i?`full`:`side`,"data-verse-overlay":`needs-you`,"data-scope":`drawer`,tabIndex:-1,onKeyDown:se,children:[(0,Q.jsxs)(`header`,{className:Y.head,children:[(0,Q.jsxs)(`h2`,{id:o,className:Y.title,children:[`Needs you`,v?(0,Q.jsx)(`span`,{className:Y.titleCount,children:E.all}):null]}),(0,Q.jsx)(re,{variant:`ghost`,size:`sm`,icon:(0,Q.jsx)(ie,{}),"aria-label":`Close Needs you`,onClick:M})]}),(0,Q.jsx)(`div`,{role:`tablist`,"aria-label":`Splits`,className:Y.splits,onKeyDown:e=>{(e.key===`ArrowRight`||e.key===`ArrowLeft`)&&(e.preventDefault(),q(e.key===`ArrowRight`?1:-1))},children:D.map(e=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===S,tabIndex:e===S?0:-1,className:Y.split,onClick:()=>{N(e),h(null)},children:[J[e],(0,Q.jsx)(`span`,{className:Y.splitCount,"aria-label":`${E[e]} items`,children:E[e]})]},e))}),(0,Q.jsxs)(`div`,{className:Y.body,children:[R?(0,Q.jsxs)(`div`,{ref:u,className:Y.detail,tabIndex:-1,"aria-label":`Item detail`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:Y.back,onClick:B,children:[`‹ All `,J[S].toLowerCase()]}),R.target.kind===`approval`?(0,Q.jsx)(`div`,{className:Y.approval,children:(0,Q.jsx)(Ae,{id:R.target.proposalId,dispatchEnabled:j,onDispatchDisabled:()=>te(!0),onDecided:()=>{Ne(R.id),w(),B()}},R.target.proposalId)}):(0,Q.jsx)(We,{item:R,now:_,seats:r.data?.seats??Ue,onAct:G,onOpenTarget:W,dispatchEnabled:j})]}):ce?(0,Q.jsxs)(`div`,{className:Y.loading,role:`status`,"aria-label":`Loading`,children:[(0,Q.jsx)(l,{}),(0,Q.jsx)(l,{}),(0,Q.jsx)(l,{})]}):ue?(0,Q.jsxs)(`div`,{className:Y.empty,children:[(0,Q.jsx)(`p`,{className:Y.emptyTitle,children:`Needs you isn't available on this server`}),(0,Q.jsx)(`p`,{className:Y.emptyBody,children:`This build does not report activity yet, so nothing here can be vouched for. Approvals still work from the inbox.`})]}):C.length===0?(0,Q.jsx)(Ve,{coverageText:le(O),vouched:O.vouched,autonomyLabel:v?.autonomy?.label??null,split:S}):(0,Q.jsx)(xe,{ref:c,items:C,selectedId:d,onSelect:f,onOpen:e=>{f(e),h(e)},now:_,label:`${J[S]} needing you`}),C.length===0&&!R?(0,Q.jsx)(`div`,{ref:c,tabIndex:-1,className:Y.focusSink,"aria-hidden":`true`}):null]}),i?null:(0,Q.jsxs)(`footer`,{className:Y.foot,"aria-hidden":`true`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`J`}),(0,Q.jsx)(`kbd`,{className:Y.key,children:`K`}),` move`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:(0,Q.jsx)(ae,{})}),` open`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`A`}),` approve`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`R`}),` reject`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`V`}),` veto`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`E`}),` done`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`H`}),(0,Q.jsx)(`kbd`,{className:Y.key,children:`L`}),` splits`]})]}),!O.vouched&&C.length>0?(0,Q.jsxs)(`p`,{className:Y.caveat,role:`note`,children:[le(O),` — this list may be incomplete.`]}):null]})}),document.body)}function Ve({vouched:e,coverageText:t,autonomyLabel:n,split:r}){return e?(0,Q.jsxs)(`div`,{className:Y.empty,"data-state":`clear`,children:[(0,Q.jsx)(`span`,{className:Y.clearMark,"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:Y.emptyTitle,children:`All clear`}),(0,Q.jsx)(`p`,{className:Y.emptyBody,children:n?`Fleet: ${n}.`:`Nothing is waiting on you.`})]}):(0,Q.jsxs)(`div`,{className:Y.empty,"data-state":`unknown`,children:[(0,Q.jsxs)(`p`,{className:Y.emptyTitle,children:[`Nothing to show`,r===`all`?``:` in ${J[r]}`,` — but it isn't an all-clear`]}),(0,Q.jsxs)(`p`,{className:Y.emptyBody,children:[t,`.`]})]})}var He=e=>{switch(e.target.kind){case`session`:return`Open chat`;case`section`:return`Open ${L(e.target.section).label}`;case`seat`:return`Open Apps & Accounts`;case`url`:return`Open on GitHub`;default:return null}},Ue=[];function We({item:e,now:t,seats:n,onAct:r,onOpenTarget:i,dispatchEnabled:a}){let o=He(e),s=Se(e,t),c=e.subject.seatId?ye(n,e.subject.seatId):null,l=s.run?de(n,s.run.model,e.subject.seatId):null;return(0,Q.jsxs)(`article`,{className:Y.item,children:[(0,Q.jsxs)(`header`,{className:Y.itemHead,children:[s.kindLabel?(0,Q.jsx)(`p`,{className:Y.rowKind,children:s.kindLabel}):null,(0,Q.jsx)(`h3`,{className:Y.itemTitle,title:s.fullTitle,children:s.title}),s.run?(0,Q.jsx)(_e,{run:s.run}):null]}),s.detail?(0,Q.jsx)(`p`,{className:Y.itemDetail,children:s.detail}):null,(0,Q.jsxs)(`dl`,{className:Y.defs,children:[s.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Repo`}),(0,Q.jsx)(`dd`,{className:Y.repo,title:s.repoFull,children:s.repo})]}):null,e.subject.pr?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Pull request`}),(0,Q.jsxs)(`dd`,{children:[`#`,e.subject.pr]})]}):null,c?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Seat`}),(0,Q.jsx)(`dd`,{className:c.raw?void 0:Y.mono,title:c.raw,children:c.text})]}):null,l?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Model`}),(0,Q.jsx)(`dd`,{className:l.raw?void 0:Y.mono,title:l.raw,children:l.text})]}):null,(0,Q.jsx)(`dt`,{children:`Raised`}),(0,Q.jsx)(`dd`,{title:s.ageStamp,children:s.age}),e.expiresAt?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Closes`}),(0,Q.jsx)(`dd`,{className:Y.deadline,children:fe(e.expiresAt,t)})]}):null]}),(0,Q.jsxs)(`div`,{className:Y.itemActions,children:[o?(0,Q.jsx)(V,{variant:`subtle`,size:`sm`,onClick:()=>i(e),trailingIcon:e.target.kind===`url`?(0,Q.jsx)(H,{}):void 0,children:o}):null,e.actions.map(t=>{let n=j[t.kind],i=t.request!==null;return(0,Q.jsxs)(V,{size:`sm`,variant:t.destructive?`danger`:t.kind===`approve`?`primary`:`subtle`,disabled:i&&!a,onClick:()=>r(e,t.kind),"aria-keyshortcuts":n,children:[t.label,n?(0,Q.jsx)(`kbd`,{className:Y.inlineKey,"aria-hidden":`true`,children:n}):null]},t.kind)})]}),a?null:(0,Q.jsx)(`p`,{className:Y.caveat,children:"Read-only session — actions need `ashlr verse`."})]})}export{Be as NeedsYouDrawer,E as VERSE_ANCHOR_EVENT};
|
|
2
|
+
//# sourceMappingURL=NeedsYouDrawer-lYN4G_aM.js.map
|