@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
|
@@ -57,7 +57,8 @@ export type CloudTaskOrigin = 'chat' | 'operator' | 'leader' | 'self-improve' |
|
|
|
57
57
|
* in one folder conflict).
|
|
58
58
|
* launching PTY launch in flight.
|
|
59
59
|
* running session created; no PR yet.
|
|
60
|
-
* pr-open draft/ready PR
|
|
60
|
+
* pr-open a draft/ready PR was observed on `ashlr-cloud/<id>`; `pr` is null
|
|
61
|
+
* while later verification is unavailable or its identity changed.
|
|
61
62
|
* merged PR merged (by gates or Mason).
|
|
62
63
|
* closed PR closed without merge (or dismissed by the operator).
|
|
63
64
|
* failed launch failed (see stateReason / failure code).
|
|
@@ -80,6 +81,11 @@ export interface CloudTaskPr {
|
|
|
80
81
|
draft: boolean;
|
|
81
82
|
title: string;
|
|
82
83
|
}
|
|
84
|
+
/** Immutable identity of the first PR verified for this task. Remains after a lookup outage. */
|
|
85
|
+
export interface CloudDeliveryPin {
|
|
86
|
+
number: number;
|
|
87
|
+
url: string;
|
|
88
|
+
}
|
|
83
89
|
export interface CloudTaskV1 {
|
|
84
90
|
v: typeof CLOUD_TASK_SCHEMA_VERSION;
|
|
85
91
|
id: string;
|
|
@@ -107,6 +113,8 @@ export interface CloudTaskV1 {
|
|
|
107
113
|
updatedAt: string;
|
|
108
114
|
pr: CloudTaskPr | null;
|
|
109
115
|
report: CloudTaskReport | null;
|
|
116
|
+
/** Optional for 3.11 task files written before PR identity was pinned. */
|
|
117
|
+
deliveryPin?: CloudDeliveryPin;
|
|
110
118
|
/** Budget accounting — an ESTIMATE fixed at launch. */
|
|
111
119
|
estimatedCostUsd: number;
|
|
112
120
|
/** Backlog item this task came from (self-improvement), if any. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAC;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AAEtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAuB,CAAC;AAC3D,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAA6B,CAAC;AAChE,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAwB,CAAC;AAC9D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAA2C,CAAC;AAC7E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AACjD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,gFAAgF;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/cloud/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAC;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAU,CAAC;AAEtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAuB,CAAC;AAC3D,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAA6B,CAAC;AAChE,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAwB,CAAC;AAC9D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAA2C,CAAC;AAC7E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AACjD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,gFAAgF;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;AAmBpE,MAAM,CAAC,MAAM,qBAAqB,GAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAqG1G,MAAM,CAAC,MAAM,oBAAoB,GAAqC,MAAM,CAAC,MAAM,CAAC;IAClF,CAAC,EAAE,2BAA2B;IAC9B,eAAe,EAAE,GAAG;IACpB,yBAAyB,EAAE,CAAC;IAC5B,0BAA0B,EAAE,CAAC;IAC7B,aAAa,EAAE,CAAC;IAChB,iBAAiB,EAAE,EAAE;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;CACvG,CAAqC,CAAC;AA+CvC,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAkC,CAAC;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAkC,CAAC;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAAmC,CAAC;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAAmC,CAAC;AAC5E,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAiC,CAAC"}
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Rate limit: won't send another message if one was sent < SEND_COOLDOWN_MS ago.
|
|
12
12
|
*
|
|
13
|
+
* Expiry: before sending, requests older than cfg.comms.requestTtlHours
|
|
14
|
+
* (default 48h) are expired, so an unanswered question cannot block the queue.
|
|
15
|
+
*
|
|
13
16
|
* Resolution handler registry: other modules call registerResolutionHandler(kind, fn)
|
|
14
17
|
* to receive callbacks when a request of their kind is answered. Best-effort.
|
|
15
18
|
*
|
|
@@ -17,6 +20,8 @@
|
|
|
17
20
|
*/
|
|
18
21
|
import { type CommsRequest } from './requests.js';
|
|
19
22
|
import type { AshlrConfig } from '../types.js';
|
|
23
|
+
/** Request TTL in ms from cfg.comms.requestTtlHours; invalid values use the default. */
|
|
24
|
+
export declare function commsRequestTtlMs(cfg: AshlrConfig): number;
|
|
20
25
|
type ResolutionHandler = (req: CommsRequest) => void | Promise<void>;
|
|
21
26
|
/**
|
|
22
27
|
* Register a handler invoked when a request of the given kind is answered.
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* Rate limit: won't send another message if one was sent < SEND_COOLDOWN_MS ago.
|
|
12
12
|
*
|
|
13
|
+
* Expiry: before sending, requests older than cfg.comms.requestTtlHours
|
|
14
|
+
* (default 48h) are expired, so an unanswered question cannot block the queue.
|
|
15
|
+
*
|
|
13
16
|
* Resolution handler registry: other modules call registerResolutionHandler(kind, fn)
|
|
14
17
|
* to receive callbacks when a request of their kind is answered. Best-effort.
|
|
15
18
|
*
|
|
@@ -21,11 +24,17 @@ import { join } from 'node:path';
|
|
|
21
24
|
import { sendIMessage } from '../integrations/imessage.js';
|
|
22
25
|
import { sendTelegramMessage, pollTelegramUpdates, answerCallbackQuery, telegramEnabled, } from '../integrations/telegram.js';
|
|
23
26
|
import { handleStrategicMessage } from './elon-dialogue.js';
|
|
24
|
-
import { listRequests, markSent, outstanding, resolveRequest, } from './requests.js';
|
|
27
|
+
import { DEFAULT_REQUEST_TTL_HOURS, expireStaleRequests, listRequests, markSent, outstanding, resolveRequest, } from './requests.js';
|
|
25
28
|
// ---------------------------------------------------------------------------
|
|
26
29
|
// Constants
|
|
27
30
|
// ---------------------------------------------------------------------------
|
|
28
31
|
const SEND_COOLDOWN_MS = 30_000; // minimum gap between outbound sends
|
|
32
|
+
/** Request TTL in ms from cfg.comms.requestTtlHours; invalid values use the default. */
|
|
33
|
+
export function commsRequestTtlMs(cfg) {
|
|
34
|
+
const hours = cfg.comms?.requestTtlHours;
|
|
35
|
+
const valid = typeof hours === 'number' && Number.isFinite(hours) && hours > 0;
|
|
36
|
+
return (valid ? hours : DEFAULT_REQUEST_TTL_HOURS) * 3_600_000;
|
|
37
|
+
}
|
|
29
38
|
function statePath() {
|
|
30
39
|
return join(homedir(), '.ashlr', 'comms', 'state.json');
|
|
31
40
|
}
|
|
@@ -115,6 +124,8 @@ export async function runCommsCycle(cfg) {
|
|
|
115
124
|
try {
|
|
116
125
|
const state = loadState();
|
|
117
126
|
const now = Date.now();
|
|
127
|
+
// ── 0. Expire stale requests so a dead question cannot block the queue ──
|
|
128
|
+
expireStaleRequests(now, commsRequestTtlMs(cfg));
|
|
118
129
|
// ── 1. Send next pending (if nothing outstanding + cooldown elapsed) ──────
|
|
119
130
|
const current = outstanding();
|
|
120
131
|
const cooldownOk = now - state.lastSentMs >= SEND_COOLDOWN_MS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/core/comms/dispatch.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/core/comms/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* all records.
|
|
8
8
|
*
|
|
9
9
|
* Protocol invariant: only ONE request may be 'sent' (awaiting reply) at a
|
|
10
|
-
* time.
|
|
10
|
+
* time. Requests that outlive their TTL are expired (see expireStaleRequests)
|
|
11
|
+
* so one unanswered question cannot hold the queue shut indefinitely. postRequest always appends as 'pending'; dispatch decides when to
|
|
11
12
|
* promote pending→sent. Answers arrive as numeric indices (1-based) that map
|
|
12
13
|
* to the request's options array.
|
|
13
14
|
*
|
|
@@ -38,6 +39,8 @@ export interface CommsRequest {
|
|
|
38
39
|
sentAt?: string;
|
|
39
40
|
/** ISO timestamp when the reply was matched and resolved. */
|
|
40
41
|
answeredAt?: string;
|
|
42
|
+
/** ISO timestamp when the request aged out unsent or unanswered. */
|
|
43
|
+
expiredAt?: string;
|
|
41
44
|
}
|
|
42
45
|
/**
|
|
43
46
|
* Post a new request. Returns the assigned id. The request is appended
|
|
@@ -70,3 +73,26 @@ export declare function resolveRequest(id: string, answerIndex: number, answerTe
|
|
|
70
73
|
* recently sent if somehow multiple exist.
|
|
71
74
|
*/
|
|
72
75
|
export declare function outstanding(): CommsRequest | undefined;
|
|
76
|
+
/** Default lifetime of a comms request before it is expired (hours). */
|
|
77
|
+
export declare const DEFAULT_REQUEST_TTL_HOURS = 48;
|
|
78
|
+
export interface ExpireResult {
|
|
79
|
+
/** Outstanding questions/approvals that were never answered in time. */
|
|
80
|
+
expiredSent: number;
|
|
81
|
+
/** Pending requests that were never sent in time. */
|
|
82
|
+
expiredPending: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Expire requests older than `ttlMs`: an outstanding (sent) question or
|
|
86
|
+
* approval nobody answered, and a pending request that was never sent.
|
|
87
|
+
*
|
|
88
|
+
* Without this, a single unanswered question blocks every later send forever
|
|
89
|
+
* (only one request may be outstanding), and the pending queue grows without
|
|
90
|
+
* bound — on a live machine one June question held 585 digests and briefings
|
|
91
|
+
* back for three months. Expiry is fail-closed: an expired approval is never
|
|
92
|
+
* treated as a yes, and a late reply or button tap on it resolves nothing
|
|
93
|
+
* because only the current outstanding request can be answered.
|
|
94
|
+
*
|
|
95
|
+
* Records with an unparseable timestamp are left untouched. Best-effort;
|
|
96
|
+
* never throws.
|
|
97
|
+
*/
|
|
98
|
+
export declare function expireStaleRequests(nowMs: number, ttlMs: number): ExpireResult;
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* all records.
|
|
8
8
|
*
|
|
9
9
|
* Protocol invariant: only ONE request may be 'sent' (awaiting reply) at a
|
|
10
|
-
* time.
|
|
10
|
+
* time. Requests that outlive their TTL are expired (see expireStaleRequests)
|
|
11
|
+
* so one unanswered question cannot hold the queue shut indefinitely. postRequest always appends as 'pending'; dispatch decides when to
|
|
11
12
|
* promote pending→sent. Answers arrive as numeric indices (1-based) that map
|
|
12
13
|
* to the request's options array.
|
|
13
14
|
*
|
|
@@ -177,4 +178,52 @@ export function outstanding() {
|
|
|
177
178
|
// Return the one most recently sent (last sentAt wins)
|
|
178
179
|
return sent.sort((a, b) => (b.sentAt ?? b.createdAt) > (a.sentAt ?? a.createdAt) ? 1 : -1)[0];
|
|
179
180
|
}
|
|
181
|
+
/** Default lifetime of a comms request before it is expired (hours). */
|
|
182
|
+
export const DEFAULT_REQUEST_TTL_HOURS = 48;
|
|
183
|
+
function ageStartMs(r) {
|
|
184
|
+
const iso = r.status === 'sent' ? (r.sentAt ?? r.createdAt) : r.createdAt;
|
|
185
|
+
return Date.parse(iso);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Expire requests older than `ttlMs`: an outstanding (sent) question or
|
|
189
|
+
* approval nobody answered, and a pending request that was never sent.
|
|
190
|
+
*
|
|
191
|
+
* Without this, a single unanswered question blocks every later send forever
|
|
192
|
+
* (only one request may be outstanding), and the pending queue grows without
|
|
193
|
+
* bound — on a live machine one June question held 585 digests and briefings
|
|
194
|
+
* back for three months. Expiry is fail-closed: an expired approval is never
|
|
195
|
+
* treated as a yes, and a late reply or button tap on it resolves nothing
|
|
196
|
+
* because only the current outstanding request can be answered.
|
|
197
|
+
*
|
|
198
|
+
* Records with an unparseable timestamp are left untouched. Best-effort;
|
|
199
|
+
* never throws.
|
|
200
|
+
*/
|
|
201
|
+
export function expireStaleRequests(nowMs, ttlMs) {
|
|
202
|
+
const result = { expiredSent: 0, expiredPending: 0 };
|
|
203
|
+
if (!Number.isFinite(ttlMs) || ttlMs <= 0 || !Number.isFinite(nowMs))
|
|
204
|
+
return result;
|
|
205
|
+
try {
|
|
206
|
+
const all = loadAll();
|
|
207
|
+
const expiredAt = new Date(nowMs).toISOString();
|
|
208
|
+
const updated = all.map((r) => {
|
|
209
|
+
const awaitingReply = r.status === 'sent' && (r.type === 'question' || r.type === 'approval');
|
|
210
|
+
if (!awaitingReply && r.status !== 'pending')
|
|
211
|
+
return r;
|
|
212
|
+
const started = ageStartMs(r);
|
|
213
|
+
if (!Number.isFinite(started) || nowMs - started < ttlMs)
|
|
214
|
+
return r;
|
|
215
|
+
if (awaitingReply)
|
|
216
|
+
result.expiredSent += 1;
|
|
217
|
+
else
|
|
218
|
+
result.expiredPending += 1;
|
|
219
|
+
return { ...r, status: 'expired', expiredAt };
|
|
220
|
+
});
|
|
221
|
+
if (result.expiredSent + result.expiredPending > 0)
|
|
222
|
+
saveAll(updated);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// best-effort
|
|
226
|
+
}
|
|
227
|
+
return result;
|
|
228
|
+
}
|
|
180
229
|
//# sourceMappingURL=requests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/core/comms/requests.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../src/core/comms/requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ import { killSwitchOn, setKill } from '../sandbox/policy.js';
|
|
|
42
42
|
import type { DaemonLock, SaveDaemonStateResult } from './state.js';
|
|
43
43
|
import { type RunWindowStopRule } from './run-window.js';
|
|
44
44
|
import { type TickHooks } from './tick-hooks.js';
|
|
45
|
+
import type { DispatchHarness } from '../run/harness-dispatch.js';
|
|
45
46
|
import { type DaemonActivationCapability } from './activation-permit.js';
|
|
46
47
|
import { readAgentActions, type AgentActionEvent } from '../fleet/agent-action-ledger.js';
|
|
47
48
|
import { type ContextRollupDecision } from '../fleet/context-rollup.js';
|
|
@@ -76,6 +77,19 @@ interface TickOptions {
|
|
|
76
77
|
* the goal is returned unchanged.
|
|
77
78
|
*/
|
|
78
79
|
export declare function withHarnessProducerPrompt(goal: string, hooks: TickHooks): string;
|
|
80
|
+
/**
|
|
81
|
+
* V3.11 (closes the 3.10 known gap): the active harness's per-lane effort and
|
|
82
|
+
* sampling for a standing dispatch, as `RunOptions.harness`. Before this the
|
|
83
|
+
* registry could adopt an effort / sampling change and the fleet kept running
|
|
84
|
+
* every engine at its compiled default — the canary then credited outcomes
|
|
85
|
+
* to settings that never ran. The sandboxed producers map each lane's entry
|
|
86
|
+
* to that engine's own flag (run/harness-dispatch.ts).
|
|
87
|
+
*
|
|
88
|
+
* null (no live hooks, no tick context, a throwing hook, or a harness that
|
|
89
|
+
* pins no effort / sampling at all) ⇒ nothing is forwarded and every engine
|
|
90
|
+
* runs its compiled defaults with a byte-identical argv.
|
|
91
|
+
*/
|
|
92
|
+
export declare function standingDispatchHarness(hooks: TickHooks): DispatchHarness | null;
|
|
79
93
|
interface DaemonRunOptions extends TickOptions {
|
|
80
94
|
once: boolean;
|
|
81
95
|
maxCycles?: number;
|
package/dist/core/daemon/loop.js
CHANGED
|
@@ -904,6 +904,37 @@ export function withHarnessProducerPrompt(goal, hooks) {
|
|
|
904
904
|
return goal;
|
|
905
905
|
return `${goal}\n\n## Fleet harness guidance (${harness.versionId ?? 'baseline'})\n${harness.producerPrompt.trim()}`;
|
|
906
906
|
}
|
|
907
|
+
/**
|
|
908
|
+
* V3.11 (closes the 3.10 known gap): the active harness's per-lane effort and
|
|
909
|
+
* sampling for a standing dispatch, as `RunOptions.harness`. Before this the
|
|
910
|
+
* registry could adopt an effort / sampling change and the fleet kept running
|
|
911
|
+
* every engine at its compiled default — the canary then credited outcomes
|
|
912
|
+
* to settings that never ran. The sandboxed producers map each lane's entry
|
|
913
|
+
* to that engine's own flag (run/harness-dispatch.ts).
|
|
914
|
+
*
|
|
915
|
+
* null (no live hooks, no tick context, a throwing hook, or a harness that
|
|
916
|
+
* pins no effort / sampling at all) ⇒ nothing is forwarded and every engine
|
|
917
|
+
* runs its compiled defaults with a byte-identical argv.
|
|
918
|
+
*/
|
|
919
|
+
export function standingDispatchHarness(hooks) {
|
|
920
|
+
const live = hooks;
|
|
921
|
+
if (typeof live.dispatchHarness !== 'function')
|
|
922
|
+
return null;
|
|
923
|
+
let harness = null;
|
|
924
|
+
try {
|
|
925
|
+
harness = live.dispatchHarness();
|
|
926
|
+
}
|
|
927
|
+
catch {
|
|
928
|
+
return null;
|
|
929
|
+
}
|
|
930
|
+
if (!harness)
|
|
931
|
+
return null;
|
|
932
|
+
const effort = harness.effort ?? {};
|
|
933
|
+
const sampling = harness.sampling ?? {};
|
|
934
|
+
if (Object.keys(effort).length === 0 && Object.keys(sampling).length === 0)
|
|
935
|
+
return null;
|
|
936
|
+
return { versionId: harness.versionId, effort, sampling };
|
|
937
|
+
}
|
|
907
938
|
/**
|
|
908
939
|
* V3.10 (B-U9): turn tuning suggestions into OPEN harness hypotheses next to
|
|
909
940
|
* their emission (`recordHypotheses(harnessHypothesesFromTuning(...))`). Pure
|
|
@@ -6216,6 +6247,8 @@ export async function tick(cfg, opts) {
|
|
|
6216
6247
|
// V3.10 (B-U9): a standing tick's producers run with the active harness —
|
|
6217
6248
|
// its producer prompt overlay rides on the goal (baseline: none).
|
|
6218
6249
|
const goal = standingTick ? withHarnessProducerPrompt(buildItemGoal(item), hooks) : buildItemGoal(item);
|
|
6250
|
+
// …and its effort / sampling ride on the engine invocation itself.
|
|
6251
|
+
const dispatchHarness = standingTick ? standingDispatchHarness(hooks) : null;
|
|
6219
6252
|
const dispatchCfg = dispatchConfigForItem(item, routingCfg);
|
|
6220
6253
|
const itemBudget = { maxTokens: perItemMaxTokens, maxSteps: 100, allowCloud: false };
|
|
6221
6254
|
const workItemGenerationId = generatedRepairGenerationId(item) ?? undefined;
|
|
@@ -6522,6 +6555,7 @@ export async function tick(cfg, opts) {
|
|
|
6522
6555
|
return runBestOfN(item, routingCfg, {
|
|
6523
6556
|
n: bestOfN, engine: backend, model: selectedModel,
|
|
6524
6557
|
...(standingCodexSeatId ? { seatId: standingCodexSeatId } : {}),
|
|
6558
|
+
...(dispatchHarness ? { harness: dispatchHarness } : {}),
|
|
6525
6559
|
budget: itemBudget,
|
|
6526
6560
|
...(_bonCandidates ? { candidates: _bonCandidates } : {}),
|
|
6527
6561
|
...(_bonCandidateConfigRefusal ? { candidateConfigRefusal: _bonCandidateConfigRefusal } : {}),
|
|
@@ -6661,6 +6695,7 @@ export async function tick(cfg, opts) {
|
|
|
6661
6695
|
budget: itemBudget, tools: true, noMemory: false, runId: attemptId,
|
|
6662
6696
|
...(selectedModel ? { model: selectedModel } : {}),
|
|
6663
6697
|
...(standingCodexSeatId ? { seatId: standingCodexSeatId } : {}),
|
|
6698
|
+
...(dispatchHarness ? { harness: dispatchHarness } : {}),
|
|
6664
6699
|
workItemId: item.id, workItemGenerationId, workSource: item.source, delegationScope,
|
|
6665
6700
|
signal: dispatchSignal,
|
|
6666
6701
|
});
|