@ashlr/hub 3.13.0 → 3.14.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 +74 -0
- package/dist/authority-surface.json +204 -124
- package/dist/build-identity.json +2 -2
- package/dist/cli/authority.js +112 -18
- package/dist/cli/authority.js.map +1 -1
- package/dist/cli/comms.d.ts +33 -19
- package/dist/cli/comms.js +128 -151
- package/dist/cli/comms.js.map +1 -1
- package/dist/cli/completions.js +1 -1
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/daemon.js +29 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/director.d.ts +8 -12
- package/dist/cli/director.js +17 -52
- package/dist/cli/director.js.map +1 -1
- package/dist/cli/fleet.js +4 -1
- package/dist/cli/fleet.js.map +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/leader.d.ts +27 -3
- package/dist/cli/leader.js +253 -4
- package/dist/cli/leader.js.map +1 -1
- package/dist/core/authority/server-enforcement.d.ts +110 -0
- package/dist/core/authority/server-enforcement.js +260 -0
- package/dist/core/authority/server-enforcement.js.map +1 -0
- package/dist/core/authority/standing-grant.d.ts +24 -4
- package/dist/core/authority/standing-grant.js +19 -3
- package/dist/core/authority/standing-grant.js.map +1 -1
- package/dist/core/cloud/timeline.js +13 -7
- package/dist/core/cloud/timeline.js.map +1 -1
- package/dist/core/comms/change-digest.d.ts +130 -0
- package/dist/core/comms/change-digest.js +451 -0
- package/dist/core/comms/change-digest.js.map +1 -0
- package/dist/core/comms/director-prompt.d.ts +4 -5
- package/dist/core/comms/director-prompt.js +4 -71
- package/dist/core/comms/director-prompt.js.map +1 -1
- package/dist/core/comms/director.d.ts +24 -61
- package/dist/core/comms/director.js +29 -382
- package/dist/core/comms/director.js.map +1 -1
- package/dist/core/comms/dispatch.d.ts +37 -12
- package/dist/core/comms/dispatch.js +244 -177
- package/dist/core/comms/dispatch.js.map +1 -1
- package/dist/core/comms/elon-dialogue.d.ts +23 -15
- package/dist/core/comms/elon-dialogue.js +36 -307
- package/dist/core/comms/elon-dialogue.js.map +1 -1
- package/dist/core/comms/fleet-pulse.js +4 -7
- package/dist/core/comms/fleet-pulse.js.map +1 -1
- package/dist/core/comms/handlers.d.ts +10 -6
- package/dist/core/comms/handlers.js +14 -48
- package/dist/core/comms/handlers.js.map +1 -1
- package/dist/core/comms/migrations.d.ts +47 -0
- package/dist/core/comms/migrations.js +125 -0
- package/dist/core/comms/migrations.js.map +1 -0
- package/dist/core/comms/requests.d.ts +32 -5
- package/dist/core/comms/requests.js +101 -5
- package/dist/core/comms/requests.js.map +1 -1
- package/dist/core/comms/telegram-channel.d.ts +104 -0
- package/dist/core/comms/telegram-channel.js +622 -0
- package/dist/core/comms/telegram-channel.js.map +1 -0
- package/dist/core/comms/telegram-thread-map.d.ts +56 -0
- package/dist/core/comms/telegram-thread-map.js +144 -0
- package/dist/core/comms/telegram-thread-map.js.map +1 -0
- package/dist/core/daemon/capacity-publisher.d.ts +8 -1
- package/dist/core/daemon/capacity-publisher.js +40 -2
- package/dist/core/daemon/capacity-publisher.js.map +1 -1
- package/dist/core/daemon/loop.js +18 -4
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/daemon/tick-deadline.d.ts +44 -0
- package/dist/core/daemon/tick-deadline.js +83 -0
- package/dist/core/daemon/tick-deadline.js.map +1 -0
- package/dist/core/daemon/tick-hooks.d.ts +7 -0
- package/dist/core/daemon/tick-hooks.js.map +1 -1
- package/dist/core/daemon/tick-progress.d.ts +39 -0
- package/dist/core/daemon/tick-progress.js +194 -0
- package/dist/core/daemon/tick-progress.js.map +1 -0
- package/dist/core/dashboard.js +3 -1
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/fleet/fleet-merge-state.d.ts +6 -0
- package/dist/core/fleet/fleet-merge-state.js.map +1 -1
- package/dist/core/fleet/host-merge.d.ts +9 -0
- package/dist/core/fleet/host-merge.js +13 -2
- package/dist/core/fleet/host-merge.js.map +1 -1
- package/dist/core/fleet/merge-gates.d.ts +13 -0
- package/dist/core/fleet/merge-gates.js +14 -0
- package/dist/core/fleet/merge-gates.js.map +1 -1
- package/dist/core/fleet/mirrors.d.ts +162 -6
- package/dist/core/fleet/mirrors.js +1051 -49
- package/dist/core/fleet/mirrors.js.map +1 -1
- package/dist/core/fleet/standing-merge-pass.d.ts +8 -0
- package/dist/core/fleet/standing-merge-pass.js +72 -1
- package/dist/core/fleet/standing-merge-pass.js.map +1 -1
- package/dist/core/fleet/status.d.ts +17 -0
- package/dist/core/fleet/status.js +22 -0
- package/dist/core/fleet/status.js.map +1 -1
- package/dist/core/fleet/tick-hooks-live.d.ts +1 -1
- package/dist/core/fleet/tick-hooks-live.js +13 -3
- package/dist/core/fleet/tick-hooks-live.js.map +1 -1
- package/dist/core/git.d.ts +17 -0
- package/dist/core/git.js +124 -25
- package/dist/core/git.js.map +1 -1
- package/dist/core/goals/open-goals.d.ts +47 -0
- package/dist/core/goals/open-goals.js +33 -0
- package/dist/core/goals/open-goals.js.map +1 -0
- package/dist/core/inbox/merge.d.ts +5 -0
- package/dist/core/inbox/merge.js +58 -2
- package/dist/core/inbox/merge.js.map +1 -1
- package/dist/core/integrations/locus.d.ts +28 -0
- package/dist/core/integrations/locus.js +155 -30
- package/dist/core/integrations/locus.js.map +1 -1
- package/dist/core/integrations/telegram-format.d.ts +40 -0
- package/dist/core/integrations/telegram-format.js +123 -0
- package/dist/core/integrations/telegram-format.js.map +1 -0
- package/dist/core/integrations/telegram.d.ts +60 -4
- package/dist/core/integrations/telegram.js +161 -28
- package/dist/core/integrations/telegram.js.map +1 -1
- package/dist/core/mcp-registry.d.ts +12 -0
- package/dist/core/mcp-registry.js +70 -0
- package/dist/core/mcp-registry.js.map +1 -1
- package/dist/core/observability/rollup.d.ts +12 -10
- package/dist/core/observability/rollup.js +44 -17
- package/dist/core/observability/rollup.js.map +1 -1
- package/dist/core/resources/connection-monitor.d.ts +9 -0
- package/dist/core/resources/connection-monitor.js +19 -9
- package/dist/core/resources/connection-monitor.js.map +1 -1
- package/dist/core/resources/quota-refresh-lease.d.ts +17 -0
- package/dist/core/resources/quota-refresh-lease.js +34 -1
- package/dist/core/resources/quota-refresh-lease.js.map +1 -1
- package/dist/core/routing/budget-api.d.ts +7 -1
- package/dist/core/routing/budget-api.js +56 -2
- package/dist/core/routing/budget-api.js.map +1 -1
- package/dist/core/routing/readiness-types.d.ts +82 -0
- package/dist/core/routing/readiness-types.js +23 -0
- package/dist/core/routing/readiness-types.js.map +1 -0
- package/dist/core/routing/readiness.d.ts +103 -0
- package/dist/core/routing/readiness.js +480 -0
- package/dist/core/routing/readiness.js.map +1 -0
- package/dist/core/sandbox/confine.js +22 -1
- package/dist/core/sandbox/confine.js.map +1 -1
- package/dist/core/sandbox/policy.d.ts +23 -0
- package/dist/core/sandbox/policy.js +100 -0
- package/dist/core/sandbox/policy.js.map +1 -1
- package/dist/core/types.d.ts +13 -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 +1204 -939
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +1319 -1054
- package/dist/core/usage/frontier-usage.d.ts +20 -2
- package/dist/core/usage/frontier-usage.js +75 -17
- package/dist/core/usage/frontier-usage.js.map +1 -1
- package/dist/core/verse/accounts.d.ts +45 -0
- package/dist/core/verse/accounts.js +246 -17
- package/dist/core/verse/accounts.js.map +1 -1
- package/dist/core/verse/apps-api.js +23 -11
- package/dist/core/verse/apps-api.js.map +1 -1
- package/dist/core/verse/apps.d.ts +11 -9
- package/dist/core/verse/apps.js +2 -2
- package/dist/core/verse/apps.js.map +1 -1
- package/dist/core/verse/authority-api.d.ts +8 -2
- package/dist/core/verse/authority-api.js +40 -5
- package/dist/core/verse/authority-api.js.map +1 -1
- package/dist/core/verse/autonomy-ladder.d.ts +172 -0
- package/dist/core/verse/autonomy-ladder.js +251 -0
- package/dist/core/verse/autonomy-ladder.js.map +1 -0
- package/dist/core/verse/context-fit.js +7 -5
- package/dist/core/verse/context-fit.js.map +1 -1
- package/dist/core/verse/control-api.d.ts +23 -1
- package/dist/core/verse/control-api.js +117 -10
- package/dist/core/verse/control-api.js.map +1 -1
- package/dist/core/verse/fleet-live-api.js +13 -5
- package/dist/core/verse/fleet-live-api.js.map +1 -1
- package/dist/core/verse/folder-io.d.ts +50 -0
- package/dist/core/verse/folder-io.js +142 -0
- package/dist/core/verse/folder-io.js.map +1 -0
- package/dist/core/verse/git-api.js +5 -4
- package/dist/core/verse/git-api.js.map +1 -1
- package/dist/core/verse/git-ops.d.ts +10 -1
- package/dist/core/verse/git-ops.js +18 -2
- package/dist/core/verse/git-ops.js.map +1 -1
- package/dist/core/verse/github-api.d.ts +1 -1
- package/dist/core/verse/github-api.js +5 -4
- package/dist/core/verse/github-api.js.map +1 -1
- package/dist/core/verse/github-repo.js +118 -14
- package/dist/core/verse/github-repo.js.map +1 -1
- package/dist/core/verse/leader-api.d.ts +5 -4
- package/dist/core/verse/leader-api.js +237 -10
- package/dist/core/verse/leader-api.js.map +1 -1
- package/dist/core/verse/local-models.d.ts +10 -0
- package/dist/core/verse/local-models.js +10 -1
- package/dist/core/verse/local-models.js.map +1 -1
- package/dist/core/verse/login-path.d.ts +73 -0
- package/dist/core/verse/login-path.js +123 -14
- package/dist/core/verse/login-path.js.map +1 -1
- package/dist/core/verse/mcp-control-api.js +4 -4
- package/dist/core/verse/mcp-control-api.js.map +1 -1
- package/dist/core/verse/mcp-scope.d.ts +22 -0
- package/dist/core/verse/mcp-scope.js +41 -1
- package/dist/core/verse/mcp-scope.js.map +1 -1
- package/dist/core/verse/mcp-seat-view.d.ts +10 -0
- package/dist/core/verse/mcp-seat-view.js +30 -4
- package/dist/core/verse/mcp-seat-view.js.map +1 -1
- package/dist/core/verse/overnight-api.js +20 -2
- package/dist/core/verse/overnight-api.js.map +1 -1
- package/dist/core/verse/path-guard.d.ts +24 -0
- package/dist/core/verse/path-guard.js +91 -22
- package/dist/core/verse/path-guard.js.map +1 -1
- package/dist/core/verse/preview-api.js +22 -0
- package/dist/core/verse/preview-api.js.map +1 -1
- package/dist/core/verse/projects.d.ts +21 -0
- package/dist/core/verse/projects.js +82 -0
- package/dist/core/verse/projects.js.map +1 -1
- package/dist/core/verse/session-controls-api.js +5 -3
- package/dist/core/verse/session-controls-api.js.map +1 -1
- package/dist/core/verse/session-handoff.d.ts +26 -0
- package/dist/core/verse/session-handoff.js +90 -12
- package/dist/core/verse/session-handoff.js.map +1 -1
- package/dist/core/verse/terminal-api.js +7 -4
- package/dist/core/verse/terminal-api.js.map +1 -1
- package/dist/core/verse/terminal.js +9 -5
- package/dist/core/verse/terminal.js.map +1 -1
- package/dist/core/verse/verse-api.js +81 -27
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/verse/workspaces.d.ts +51 -0
- package/dist/core/verse/workspaces.js +177 -47
- package/dist/core/verse/workspaces.js.map +1 -1
- package/dist/core/vision/leader-apply.d.ts +40 -0
- package/dist/core/vision/leader-apply.js +101 -30
- package/dist/core/vision/leader-apply.js.map +1 -1
- package/dist/core/vision/leader-cadence.d.ts +114 -0
- package/dist/core/vision/leader-cadence.js +127 -0
- package/dist/core/vision/leader-cadence.js.map +1 -0
- package/dist/core/vision/leader-goal-evidence.d.ts +25 -0
- package/dist/core/vision/leader-goal-evidence.js +36 -0
- package/dist/core/vision/leader-goal-evidence.js.map +1 -0
- package/dist/core/vision/leader-health.d.ts +53 -0
- package/dist/core/vision/leader-health.js +92 -0
- package/dist/core/vision/leader-health.js.map +1 -0
- package/dist/core/vision/leader-operator.d.ts +176 -0
- package/dist/core/vision/leader-operator.js +355 -0
- package/dist/core/vision/leader-operator.js.map +1 -0
- package/dist/core/vision/leader-run-chain.d.ts +41 -0
- package/dist/core/vision/leader-run-chain.js +54 -0
- package/dist/core/vision/leader-run-chain.js.map +1 -0
- package/dist/core/vision/leader-seat-plan.d.ts +68 -0
- package/dist/core/vision/leader-seat-plan.js +93 -0
- package/dist/core/vision/leader-seat-plan.js.map +1 -0
- package/dist/core/vision/leader-seat.d.ts +71 -5
- package/dist/core/vision/leader-seat.js +235 -33
- package/dist/core/vision/leader-seat.js.map +1 -1
- package/dist/core/vision/leader-thread-types.d.ts +104 -0
- package/dist/core/vision/leader-thread-types.js +9 -0
- package/dist/core/vision/leader-thread-types.js.map +1 -0
- package/dist/core/vision/leader-thread.d.ts +138 -0
- package/dist/core/vision/leader-thread.js +926 -0
- package/dist/core/vision/leader-thread.js.map +1 -0
- package/dist/core/vision/leader-types.d.ts +75 -1
- package/dist/core/vision/leader.d.ts +88 -18
- package/dist/core/vision/leader.js +269 -69
- package/dist/core/vision/leader.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-Dwjk6rUQ.js → ActionMenu-CIiX2X8w.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-Dwjk6rUQ.js.map → ActionMenu-CIiX2X8w.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-DHsysoIL.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-cVYTAsfB.js.map → Advanced-DHsysoIL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{App-IsaWDsdF.js → App-CMeAocmW.js} +5 -5
- package/dist/core/web/public/next/assets/{App-IsaWDsdF.js.map → App-CMeAocmW.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-DISYnMnc.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-DDqeSrty.js.map → AppsSection-DISYnMnc.js.map} +1 -1
- package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js +2 -0
- package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{AutonomyOffState-CpFYS3tQ.js → AutonomyOffState-CEPSZToP.js} +3 -3
- package/dist/core/web/public/next/assets/{AutonomyOffState-CpFYS3tQ.js.map → AutonomyOffState-CEPSZToP.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-DWc3ciAD.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-Dwn8UtOy.js.map → AutonomySection-DWc3ciAD.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js +2 -0
- package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js.map +1 -0
- package/dist/core/web/public/next/assets/{BranchBar-ISZ7xUCj.js → BranchBar-BxhdiIpx.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-ISZ7xUCj.js.map → BranchBar-BxhdiIpx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-BARVp-En.js → BudgetControl-C-0KhjRS.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-BARVp-En.js.map → BudgetControl-C-0KhjRS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-DtE0rlWD.js → Button-D90dzI_o.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-DtE0rlWD.js.map → Button-D90dzI_o.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-DKbKA_Aa.js → CapacityStrip-qKDBC65C.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-DKbKA_Aa.js.map → CapacityStrip-qKDBC65C.js.map} +1 -1
- package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js +2 -0
- package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js.map +1 -0
- package/dist/core/web/public/next/assets/ChartFrame-DyjmyV8N.css +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DlT4QU6a.js +3 -0
- package/dist/core/web/public/next/assets/{ChatSection-C9myY4ei.js.map → ChatSection-DlT4QU6a.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CloudBudgetForm-CvjK4Oh6.js → CloudBudgetForm-BrNun_Yu.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-CvjK4Oh6.js.map → CloudBudgetForm-BrNun_Yu.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js +2 -0
- package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandSection-B0xuU-yZ.css +1 -0
- package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js +3 -0
- package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js.map +1 -0
- package/dist/core/web/public/next/assets/{ConfirmDialog-CLUhzaBj.js → ConfirmDialog-BR4nZQ2D.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-CLUhzaBj.js.map → ConfirmDialog-BR4nZQ2D.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DeleteChatDialog-C_eDhV8b.js → DeleteChatDialog-BCfP12GH.js} +2 -2
- package/dist/core/web/public/next/assets/{DeleteChatDialog-C_eDhV8b.js.map → DeleteChatDialog-BCfP12GH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BRd_B9OE.js → Dialog-D3msQlCj.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BRd_B9OE.js.map → Dialog-D3msQlCj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-Cpr9soB2.js → DiffPane-Ix6hvXlY.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-Cpr9soB2.js.map → DiffPane-Ix6hvXlY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-CNwd0W3Q.js → DiffViewer-C4WKsCIe.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-CNwd0W3Q.js.map → DiffViewer-C4WKsCIe.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-aWP7liri.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-BcEq2qaS.js.map → DockHost-aWP7liri.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DsN1H6MC.js → EmptyState-D2IRy3Cg.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DsN1H6MC.js.map → EmptyState-D2IRy3Cg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-fycQTBRO.js → Epistemic-DMr18muX.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-fycQTBRO.js.map → Epistemic-DMr18muX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EvidenceTimeline-sCCAdnBK.js → EvidenceTimeline-DXmmz6Fi.js} +2 -2
- package/dist/core/web/public/next/assets/{EvidenceTimeline-sCCAdnBK.js.map → EvidenceTimeline-DXmmz6Fi.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js +3 -0
- package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js.map +1 -0
- package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js +2 -0
- package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js.map +1 -0
- package/dist/core/web/public/next/assets/{GearTray-CpDt0xwj.js → GearTray-Dt-ee32-.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-CpDt0xwj.js.map → GearTray-Dt-ee32-.js.map} +1 -1
- package/dist/core/web/public/next/assets/GrowthSection-P9EUfGeA.js +2 -0
- package/dist/core/web/public/next/assets/{GrowthSection-BvZezOsX.js.map → GrowthSection-P9EUfGeA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-B1G6gQyk.js → HandoffDialog-CLJQLe7M.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-B1G6gQyk.js.map → HandoffDialog-CLJQLe7M.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-CI0yBHmn.js → Input-D_KRJA9V.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-CI0yBHmn.js.map → Input-D_KRJA9V.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js +2 -0
- package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderCard-DNsbLwY3.css +1 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js +2 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DPHUTq6W.css +1 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js +2 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js.map +1 -0
- package/dist/core/web/public/next/assets/McpSection-DGbRcyv8.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-nuXer4K-.js.map → McpSection-DGbRcyv8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-BCe4TsXk.js → MessageMarkdown-DFvk06qG.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-BCe4TsXk.js.map → MessageMarkdown-DFvk06qG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DL3LU5kL.js → MessageMarkdownRenderer-BAv4oEUf.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DL3LU5kL.js.map → MessageMarkdownRenderer-BAv4oEUf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-b69LM0mU.js → Meter-CMj-VafN.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-b69LM0mU.js.map → Meter-CMj-VafN.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js +3 -0
- package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js.map +1 -0
- package/dist/core/web/public/next/assets/{MutationTokenDialog-Bm34BNVV.js → MutationTokenDialog-DbnO8aYi.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-Bm34BNVV.js.map → MutationTokenDialog-DbnO8aYi.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js +3 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js.map +1 -0
- package/dist/core/web/public/next/assets/{NeedsYouList-D5Kk549g.js → NeedsYouList-CCsijdWt.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-D5Kk549g.js.map → NeedsYouList-CCsijdWt.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-BlCHtOIr.js +3 -0
- package/dist/core/web/public/next/assets/{NewChatDialog-BqFTWgHU.js.map → NewChatDialog-BlCHtOIr.js.map} +1 -1
- package/dist/core/web/public/next/assets/{OnboardingFlow-DcDsguAM.js → OnboardingFlow-Cy9BA9eR.js} +3 -3
- package/dist/core/web/public/next/assets/{OnboardingFlow-DcDsguAM.js.map → OnboardingFlow-Cy9BA9eR.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingGate-BXpNFoLt.js +3 -0
- package/dist/core/web/public/next/assets/{OnboardingGate-BZafM1Vf.js.map → OnboardingGate-BXpNFoLt.js.map} +1 -1
- package/dist/core/web/public/next/assets/PreviewPane-COid5A0f.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-zT3gK9TD.js.map → PreviewPane-COid5A0f.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-AwHn2sKm.js → ProviderLogo-Cq-CYIwT.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-AwHn2sKm.js.map → ProviderLogo-Cq-CYIwT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-xHrovWvI.js → RailStatus-Co5UB6We.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-xHrovWvI.js.map → RailStatus-Co5UB6We.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-SEFZlMB2.js → RefreshIndicator-DO9ibnSq.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-SEFZlMB2.js.map → RefreshIndicator-DO9ibnSq.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-Dr2WRgkq.js +7 -0
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CAxPQ4sZ.js.map → ResourcePoolConsoleApp-Dr2WRgkq.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DrGoO8KG.css +1 -0
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C8WGiixc.js → RouteErrorBoundary-SkNhhUbt.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C8WGiixc.js.map → RouteErrorBoundary-SkNhhUbt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-1-IPLYhf.js → RunInCloudAction-BXPlZwJQ.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-1-IPLYhf.js.map → RunInCloudAction-BXPlZwJQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-DpwNiX8F.js → SeatSelector-J5R3zDkB.js} +3 -3
- package/dist/core/web/public/next/assets/{SeatSelector-DpwNiX8F.js.map → SeatSelector-J5R3zDkB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-Wt1ATod9.js → Segmented-CGh_-tBb.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-Wt1ATod9.js.map → Segmented-CGh_-tBb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-By-V9lMc.js → Select-CWnmUzs3.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-By-V9lMc.js.map → Select-CWnmUzs3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-WROS02tK.js → SessionGate-sp4KsnUo.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-WROS02tK.js.map → SessionGate-sp4KsnUo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-DNUcruwp.js → SessionInsightChip-DLFAzdbi.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-DNUcruwp.js.map → SessionInsightChip-DLFAzdbi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-UHtt7a8f.js → SessionSearch-DbFjwR1h.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-UHtt7a8f.js.map → SessionSearch-DbFjwR1h.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-Bf74l0Gj.js → SettingsSection-Ch23msJ5.js} +2 -2
- package/dist/core/web/public/next/assets/SettingsSection-Ch23msJ5.js.map +1 -0
- package/dist/core/web/public/next/assets/{SetupChecklist-CzpEcfOl.js → SetupChecklist-Bd76MBAR.js} +2 -2
- package/dist/core/web/public/next/assets/{SetupChecklist-CzpEcfOl.js.map → SetupChecklist-Bd76MBAR.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js +3 -0
- package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js.map +1 -0
- package/dist/core/web/public/next/assets/{Sheet-HkBOBMTT.js → Sheet-BZ2AG4Eo.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-HkBOBMTT.js.map → Sheet-BZ2AG4Eo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-DiigiT8H.js → ShortcutsOverlay-C8n8y3zf.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-DiigiT8H.js.map → ShortcutsOverlay-C8n8y3zf.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-DN--cPYN.js +3 -0
- package/dist/core/web/public/next/assets/{Sidebar-C9YtBYVZ.js.map → Sidebar-DN--cPYN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-DaEDws-b.js → Slider-KVoJLDD6.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-DaEDws-b.js.map → Slider-KVoJLDD6.js.map} +1 -1
- package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js +2 -0
- package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js.map +1 -0
- package/dist/core/web/public/next/assets/StatTile-CNCqDoPO.css +1 -0
- package/dist/core/web/public/next/assets/{StatusBadge-CXG3iNL4.js → StatusBadge-CXsYqmdU.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-CXG3iNL4.js.map → StatusBadge-CXsYqmdU.js.map} +1 -1
- package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js +2 -0
- package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js.map +1 -0
- package/dist/core/web/public/next/assets/{Surface-5bNA08tK.js → Surface-BfDmQcKe.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-5bNA08tK.js.map → Surface-BfDmQcKe.js.map} +1 -1
- package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js +2 -0
- package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js.map +1 -0
- package/dist/core/web/public/next/assets/Swimlane-Bf4Rjoy9.css +1 -0
- package/dist/core/web/public/next/assets/{Switch-BmCzfFnu.js → Switch-9NtO_6Lj.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-BmCzfFnu.js.map → Switch-9NtO_6Lj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-WSUIaMVy.js → Tag-DscCRFcN.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-WSUIaMVy.js.map → Tag-DscCRFcN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-BVFgYX6K.js → TerminalPane-B668-DJW.js} +5 -5
- package/dist/core/web/public/next/assets/{TerminalPane-BVFgYX6K.js.map → TerminalPane-B668-DJW.js.map} +1 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BUV_brY7.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BpphLqoz.js.map → UniverseConsoleApp-BUV_brY7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-DbpbSMwO.js → UniverseView-DG70zH0W.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-DbpbSMwO.js.map → UniverseView-DG70zH0W.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js +3 -0
- package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-D1nP9BhD.js +10 -0
- package/dist/core/web/public/next/assets/{Workspace-RXy0pqp6.js.map → Workspace-D1nP9BhD.js.map} +1 -1
- package/dist/core/web/public/next/assets/actions-CY-PjpGc.js +2 -0
- package/dist/core/web/public/next/assets/{actions-BZTidCXZ.js.map → actions-CY-PjpGc.js.map} +1 -1
- package/dist/core/web/public/next/assets/actions-DkWhhWIg.css +1 -0
- package/dist/core/web/public/next/assets/{apps-model-CHO133qt.js → apps-model-Du02KhAf.js} +2 -2
- package/dist/core/web/public/next/assets/{apps-model-CHO133qt.js.map → apps-model-Du02KhAf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{authority-model-8NeAEwAF.js → authority-model-79SeuKlJ.js} +2 -2
- package/dist/core/web/public/next/assets/{authority-model-8NeAEwAF.js.map → authority-model-79SeuKlJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/autonomy-ladder-BGWmZzP7.css +1 -0
- package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js +2 -0
- package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js.map +1 -0
- package/dist/core/web/public/next/assets/budget-queries-D8QV5XtH.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-DFF-3ICg.js.map → budget-queries-D8QV5XtH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-5ViUgUlP.js → capacity-strip-model-BwZ1ZbkU.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-5ViUgUlP.js.map → capacity-strip-model-BwZ1ZbkU.js.map} +1 -1
- package/dist/core/web/public/next/assets/charts-BZ50mZD_.js +2 -0
- package/dist/core/web/public/next/assets/charts-BZ50mZD_.js.map +1 -0
- package/dist/core/web/public/next/assets/charts-ClCB18la.css +1 -0
- package/dist/core/web/public/next/assets/{cloud-model-CfRydq8N.js → cloud-model-BDivRMqv.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-model-CfRydq8N.js.map → cloud-model-BDivRMqv.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-DmptbjS8.js → cloud-queries-BPQQ5_pJ.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-DmptbjS8.js.map → cloud-queries-BPQQ5_pJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js → colors-DvK0wMHH.js} +2 -2
- package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js.map → colors-DvK0wMHH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-catalog-ffCAijVY.js → command-catalog-BIntSa9l.js} +2 -2
- package/dist/core/web/public/next/assets/command-catalog-BIntSa9l.js.map +1 -0
- package/dist/core/web/public/next/assets/{context-model-CDeyP0cA.js → context-model-Br8t9jgG.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-CDeyP0cA.js.map → context-model-Br8t9jgG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-Bb15chFt.js → context-model-CokrgEUq.js} +3 -3
- package/dist/core/web/public/next/assets/{context-model-Bb15chFt.js.map → context-model-CokrgEUq.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-queries-eL3caKVG.js +2 -0
- package/dist/core/web/public/next/assets/{context-queries-_9bFWb9v.js.map → context-queries-eL3caKVG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-CXtmZZH6.js → control-queries-B9K-wmcB.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-CXtmZZH6.js.map → control-queries-B9K-wmcB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{copy-setup-BIp0iaiZ.js → copy-setup-XMgCC5f8.js} +2 -2
- package/dist/core/web/public/next/assets/{copy-setup-BIp0iaiZ.js.map → copy-setup-XMgCC5f8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-Cc43W7r4.js → dock-icons-BJ6ZqB2t.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-Cc43W7r4.js.map → dock-icons-BJ6ZqB2t.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-DOK8ZtEt.js → fleet-model-BvDR3gjp.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-DOK8ZtEt.js.map → fleet-model-BvDR3gjp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-BeEAqD6y.js → fleet-queries-W2UFVMZJ.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-BeEAqD6y.js.map → fleet-queries-W2UFVMZJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-ChZ5EFfM.js → focus-trap-CtI1SlMX.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-ChZ5EFfM.js.map → focus-trap-CtI1SlMX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-BmH2yWL6.js → format-CH4g_sl1.js} +2 -2
- package/dist/core/web/public/next/assets/{format-BmH2yWL6.js.map → format-CH4g_sl1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-DKrNjdwD.js → format-D7nBg2bn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-DKrNjdwD.js.map → format-D7nBg2bn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{git-model-BFwAVbxF.js → git-model-Dnkd1TnK.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-BFwAVbxF.js.map → git-model-Dnkd1TnK.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-CMNW_dqn.js +2 -0
- package/dist/core/web/public/next/assets/{global-y_exIyAP.js.map → global-CMNW_dqn.js.map} +1 -1
- package/dist/core/web/public/next/assets/guarded-runners-YeAc9wLQ.js +2 -0
- package/dist/core/web/public/next/assets/{guarded-runners-Cd4POBtI.js.map → guarded-runners-YeAc9wLQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-CygCEFWs.js → icons-D1sYbCTQ.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-CygCEFWs.js.map → icons-D1sYbCTQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-CyK31YRm.js → index-DZ-UQ7v8.js} +3 -3
- package/dist/core/web/public/next/assets/{index-CyK31YRm.js.map → index-DZ-UQ7v8.js.map} +1 -1
- package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js +2 -0
- package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js.map +1 -0
- package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js +2 -0
- package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js.map +1 -0
- package/dist/core/web/public/next/assets/{live-model-D7hilYFk.js → live-model-D_32RAOR.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-D7hilYFk.js.map → live-model-D_32RAOR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-B15k0Y9q.js → mind.module-7hA92hRg.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-B15k0Y9q.js.map → mind.module-7hA92hRg.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-DQPbFdRJ.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-CWlxEMEm.js.map → mutations-DQPbFdRJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-mimleI0R.js → nav-0dOYe2rJ.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-mimleI0R.js.map → nav-0dOYe2rJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-DJ4mZKSj.js → overnight-queries-C4wOnFtE.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-DJ4mZKSj.js.map → overnight-queries-C4wOnFtE.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-2A5Eq8FQ.js +1 -0
- package/dist/core/web/public/next/assets/{queries-Bw1McHTj.js → queries-BTXWdZzU.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-Bw1McHTj.js.map → queries-BTXWdZzU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-KkhI_5-j.js → reasoning-pref-Ca6lN6x_.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-KkhI_5-j.js.map → reasoning-pref-Ca6lN6x_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-CCCx_kfT.js → reveal-anchor-DfNLgK_I.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-CCCx_kfT.js.map → reveal-anchor-DfNLgK_I.js.map} +1 -1
- package/dist/core/web/public/next/assets/seat-subscription-C5uPHBsN.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-BhUUz7VL.js.map → seat-subscription-C5uPHBsN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-Dcd437cf.js → sidebar-model-CLCdqwkR.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-Dcd437cf.js.map → sidebar-model-CLCdqwkR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-BL_J5mmV.js → slots-C-qBeu-8.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-BL_J5mmV.js.map → slots-C-qBeu-8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-C3UAQ4QX.js → surface-data-Dj71tdD-.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-C3UAQ4QX.js.map → surface-data-Dj71tdD-.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js +2 -0
- package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js.map +1 -0
- package/dist/core/web/public/next/assets/{tasks-model-CzHvclVm.js → tasks-model-O8yR5YXp.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-CzHvclVm.js.map → tasks-model-O8yR5YXp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-BwgQTQP0.js → terminal-icons-CoRZq9iO.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-BwgQTQP0.js.map → terminal-icons-CoRZq9iO.js.map} +1 -1
- package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js +2 -0
- package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-pXxvy54x.js → usage-queries-AdjEyEtn.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-pXxvy54x.js.map → usage-queries-AdjEyEtn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-EgVWjM5c.js → use-guarded-action-CuuMHeDX.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-EgVWjM5c.js.map → use-guarded-action-CuuMHeDX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-BoqFxRFG.js → use-ticker-BBcp02SZ.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-BoqFxRFG.js.map → use-ticker-BBcp02SZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DSNIIpI6.js → use-token-gate-CbXVYQYI.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DSNIIpI6.js.map → use-token-gate-CbXVYQYI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useOnboarding-Bk0VnkxQ.js → useOnboarding-C_Fpe_sH.js} +2 -2
- package/dist/core/web/public/next/assets/{useOnboarding-Bk0VnkxQ.js.map → useOnboarding-C_Fpe_sH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-q7Id9RcW.js → useSeatsRefresh-Co1CnxLc.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-q7Id9RcW.js.map → useSeatsRefresh-Co1CnxLc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-CqH51rt9.js → useVerseTranscript-DgbigUlV.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-CqH51rt9.js.map → useVerseTranscript-DgbigUlV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-DsG1dOQx.js → verse-icons-S56hIiXS.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-DsG1dOQx.js.map → verse-icons-S56hIiXS.js.map} +1 -1
- package/dist/core/web/public/next/assets/verse-model-DAVevkNe.js +2 -0
- package/dist/core/web/public/next/assets/{verse-model-JTuvRBVK.js.map → verse-model-DAVevkNe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-Bv1RumVq.js → warmup-B_RAtNZ_.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-Bv1RumVq.js.map → warmup-B_RAtNZ_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{why-seat-model-Cau8qG6O.js → why-seat-model-M_r0wX3b.js} +2 -2
- package/dist/core/web/public/next/assets/{why-seat-model-Cau8qG6O.js.map → why-seat-model-M_r0wX3b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-D-SLfads.js → workspace-model-dji5-Al3.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-D-SLfads.js.map → workspace-model-dji5-Al3.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/core/web/read-projection-worker.js +2 -1
- package/dist/core/web/read-projection-worker.js.map +1 -1
- package/dist/core/web/read-projections.d.ts +3 -0
- package/dist/core/web/read-projections.js +2 -2
- package/dist/core/web/read-projections.js.map +1 -1
- package/dist/core/web/visibility.js +3 -4
- package/dist/core/web/visibility.js.map +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +3 -2
- package/dist/core/web/public/next/assets/Advanced-cVYTAsfB.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-DDqeSrty.js +0 -2
- package/dist/core/web/public/next/assets/AreaTrend-C32rUaxm.js +0 -2
- package/dist/core/web/public/next/assets/AreaTrend-C32rUaxm.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-Dwn8UtOy.js +0 -2
- package/dist/core/web/public/next/assets/ChartFrame-BVuBe6RP.css +0 -1
- package/dist/core/web/public/next/assets/ChartFrame-DK_BDXCt.js +0 -2
- package/dist/core/web/public/next/assets/ChartFrame-DK_BDXCt.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js +0 -3
- package/dist/core/web/public/next/assets/CommandPalette-DzPsth0u.js +0 -2
- package/dist/core/web/public/next/assets/CommandPalette-DzPsth0u.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js +0 -3
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-CvAVd1w4.css +0 -1
- package/dist/core/web/public/next/assets/DockHost-BcEq2qaS.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-BG8iGraG.js +0 -3
- package/dist/core/web/public/next/assets/FleetSection-BG8iGraG.js.map +0 -1
- package/dist/core/web/public/next/assets/Funnel-B88_wpA4.js +0 -2
- package/dist/core/web/public/next/assets/Funnel-B88_wpA4.js.map +0 -1
- package/dist/core/web/public/next/assets/GrowthSection-BvZezOsX.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BxxiEg4e.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BxxiEg4e.js.map +0 -1
- package/dist/core/web/public/next/assets/MatrixHeatmap-iPFEU2Tv.js +0 -2
- package/dist/core/web/public/next/assets/MatrixHeatmap-iPFEU2Tv.js.map +0 -1
- package/dist/core/web/public/next/assets/McpSection-nuXer4K-.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-Dc5v5rH3.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-Dc5v5rH3.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js +0 -3
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js.map +0 -1
- package/dist/core/web/public/next/assets/NewChatDialog-BqFTWgHU.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingGate-BZafM1Vf.js +0 -3
- package/dist/core/web/public/next/assets/PreviewPane-zT3gK9TD.js +0 -2
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CAxPQ4sZ.js +0 -7
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-BAFGodny.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesDrawer-BAFGodny.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-BCFJ2Uq8.css +0 -1
- package/dist/core/web/public/next/assets/SettingsSection-Bf74l0Gj.js.map +0 -1
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js +0 -3
- package/dist/core/web/public/next/assets/StatTile-BuLMsJMx.css +0 -1
- package/dist/core/web/public/next/assets/StatTile-CTX41O6y.js +0 -2
- package/dist/core/web/public/next/assets/StatTile-CTX41O6y.js.map +0 -1
- package/dist/core/web/public/next/assets/StepBand-jJTqYIdX.js +0 -2
- package/dist/core/web/public/next/assets/StepBand-jJTqYIdX.js.map +0 -1
- package/dist/core/web/public/next/assets/Swimlane-LrslsGxw.js +0 -2
- package/dist/core/web/public/next/assets/Swimlane-LrslsGxw.js.map +0 -1
- package/dist/core/web/public/next/assets/Swimlane-o6_Zsrnr.css +0 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BpphLqoz.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-CUlaKtws.js +0 -3
- package/dist/core/web/public/next/assets/UsageSection-CUlaKtws.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-RXy0pqp6.js +0 -10
- package/dist/core/web/public/next/assets/actions-BZTidCXZ.js +0 -2
- package/dist/core/web/public/next/assets/actions-BmIf9avl.css +0 -1
- package/dist/core/web/public/next/assets/budget-queries-DFF-3ICg.js +0 -2
- package/dist/core/web/public/next/assets/charts-CzxWrZn7.js +0 -2
- package/dist/core/web/public/next/assets/charts-CzxWrZn7.js.map +0 -1
- package/dist/core/web/public/next/assets/charts-DhKTrQLw.css +0 -1
- package/dist/core/web/public/next/assets/command-catalog-ffCAijVY.js.map +0 -1
- package/dist/core/web/public/next/assets/context-queries-_9bFWb9v.js +0 -2
- package/dist/core/web/public/next/assets/global-y_exIyAP.js +0 -2
- package/dist/core/web/public/next/assets/guarded-runners-Cd4POBtI.js +0 -2
- package/dist/core/web/public/next/assets/mutations-CWlxEMEm.js +0 -2
- package/dist/core/web/public/next/assets/primitives-DMijqcu0.js +0 -1
- package/dist/core/web/public/next/assets/seat-subscription-BhUUz7VL.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-model-JTuvRBVK.js +0 -2
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3.14: one-time comms queue migration — unblock the Telegram line.
|
|
3
|
+
*
|
|
4
|
+
* The live queue (~/.ashlr/comms/requests.jsonl) was held shut by a June
|
|
5
|
+
* legacy Strategist briefing (`elon-vision`, status `sent`) and backed up with
|
|
6
|
+
* hundreds of stale 6-hourly fleet digests, while the two Leader memos behind
|
|
7
|
+
* them were never delivered. On the first cycle after upgrade this:
|
|
8
|
+
*
|
|
9
|
+
* 1. expires stale LEGACY `elon-vision` requests (any meta.source other
|
|
10
|
+
* than 'leader'): every `sent` one (it holds the question slot) and
|
|
11
|
+
* pending ones older than 24 h — the Strategist path no longer posts;
|
|
12
|
+
* 2. expires pending `fleet-digest` reports older than 24 h — a digest about
|
|
13
|
+
* last week is noise, not news;
|
|
14
|
+
* 3. expires the pre-3.14 Leader-memo QUESTIONS ("Keep it / Veto / Show"):
|
|
15
|
+
* memos now reach Mason through the Leader thread
|
|
16
|
+
* (vision/leader-thread.ts syncs recent memos — summary plus one message
|
|
17
|
+
* per question — and the comms cycle drains pendingOutbound('telegram')
|
|
18
|
+
* with Approve / Veto / Details buttons), so re-posting them here would
|
|
19
|
+
* deliver the same memo twice.
|
|
20
|
+
*
|
|
21
|
+
* Expiry is fail-closed (an expired question is never treated as a yes).
|
|
22
|
+
* Everything expired is returned for logging and recorded in
|
|
23
|
+
* ~/.ashlr/comms/migrations.json, which also marks the migration done so it
|
|
24
|
+
* runs once. Never throws.
|
|
25
|
+
*/
|
|
26
|
+
/** Persisted wire kind of the legacy Strategist briefing AND the pre-3.14 Leader memo question. */
|
|
27
|
+
export declare const LEGACY_BRIEFING_KIND = "elon-vision";
|
|
28
|
+
/**
|
|
29
|
+
* 3.14 wire kind of an informational (non-blocking) Leader-memo report. Memos
|
|
30
|
+
* normally arrive through the Leader thread; the comms layer still renders a
|
|
31
|
+
* report of this kind with memo buttons if one is ever queued.
|
|
32
|
+
*/
|
|
33
|
+
export declare const LEADER_MEMO_KIND = "leader-memo";
|
|
34
|
+
export interface CommsMigrationSummary {
|
|
35
|
+
id: string;
|
|
36
|
+
ranAt: string;
|
|
37
|
+
expiredLegacyBriefings: number;
|
|
38
|
+
expiredStaleDigests: number;
|
|
39
|
+
expiredLeaderMemoQuestions: number;
|
|
40
|
+
/** Human-readable lines for the cycle log. */
|
|
41
|
+
log: string[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Run the migration if it has not run yet. Returns its summary on the run
|
|
45
|
+
* that performed it, null when it already ran. Idempotent either way.
|
|
46
|
+
*/
|
|
47
|
+
export declare function runCommsMigrationsOnce(nowMs?: number): CommsMigrationSummary | null;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3.14: one-time comms queue migration — unblock the Telegram line.
|
|
3
|
+
*
|
|
4
|
+
* The live queue (~/.ashlr/comms/requests.jsonl) was held shut by a June
|
|
5
|
+
* legacy Strategist briefing (`elon-vision`, status `sent`) and backed up with
|
|
6
|
+
* hundreds of stale 6-hourly fleet digests, while the two Leader memos behind
|
|
7
|
+
* them were never delivered. On the first cycle after upgrade this:
|
|
8
|
+
*
|
|
9
|
+
* 1. expires stale LEGACY `elon-vision` requests (any meta.source other
|
|
10
|
+
* than 'leader'): every `sent` one (it holds the question slot) and
|
|
11
|
+
* pending ones older than 24 h — the Strategist path no longer posts;
|
|
12
|
+
* 2. expires pending `fleet-digest` reports older than 24 h — a digest about
|
|
13
|
+
* last week is noise, not news;
|
|
14
|
+
* 3. expires the pre-3.14 Leader-memo QUESTIONS ("Keep it / Veto / Show"):
|
|
15
|
+
* memos now reach Mason through the Leader thread
|
|
16
|
+
* (vision/leader-thread.ts syncs recent memos — summary plus one message
|
|
17
|
+
* per question — and the comms cycle drains pendingOutbound('telegram')
|
|
18
|
+
* with Approve / Veto / Details buttons), so re-posting them here would
|
|
19
|
+
* deliver the same memo twice.
|
|
20
|
+
*
|
|
21
|
+
* Expiry is fail-closed (an expired question is never treated as a yes).
|
|
22
|
+
* Everything expired is returned for logging and recorded in
|
|
23
|
+
* ~/.ashlr/comms/migrations.json, which also marks the migration done so it
|
|
24
|
+
* runs once. Never throws.
|
|
25
|
+
*/
|
|
26
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
27
|
+
import { homedir } from 'node:os';
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { expireRequestsWhere } from './requests.js';
|
|
30
|
+
/** Persisted wire kind of the legacy Strategist briefing AND the pre-3.14 Leader memo question. */
|
|
31
|
+
export const LEGACY_BRIEFING_KIND = 'elon-vision';
|
|
32
|
+
/**
|
|
33
|
+
* 3.14 wire kind of an informational (non-blocking) Leader-memo report. Memos
|
|
34
|
+
* normally arrive through the Leader thread; the comms layer still renders a
|
|
35
|
+
* report of this kind with memo buttons if one is ever queued.
|
|
36
|
+
*/
|
|
37
|
+
export const LEADER_MEMO_KIND = 'leader-memo';
|
|
38
|
+
const MIGRATION_ID = 'telegram-leader-line-v1';
|
|
39
|
+
const DIGEST_STALE_MS = 24 * 3_600_000;
|
|
40
|
+
function migrationsPath() {
|
|
41
|
+
return join(homedir(), '.ashlr', 'comms', 'migrations.json');
|
|
42
|
+
}
|
|
43
|
+
function loadMigrations() {
|
|
44
|
+
try {
|
|
45
|
+
if (!existsSync(migrationsPath()))
|
|
46
|
+
return { v: 1, done: {} };
|
|
47
|
+
const parsed = JSON.parse(readFileSync(migrationsPath(), 'utf8'));
|
|
48
|
+
return { v: 1, done: parsed.done && typeof parsed.done === 'object' ? parsed.done : {} };
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return { v: 1, done: {} };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function saveMigrations(file) {
|
|
55
|
+
try {
|
|
56
|
+
mkdirSync(join(homedir(), '.ashlr', 'comms'), { recursive: true });
|
|
57
|
+
writeFileSync(migrationsPath(), JSON.stringify(file, null, 2) + '\n', { encoding: 'utf8', mode: 0o600 });
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// best-effort — worst case the (idempotent) migration runs again
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isLeaderMemoRequest(r) {
|
|
64
|
+
return r.kind === LEGACY_BRIEFING_KIND && r.meta?.['source'] === 'leader' && typeof r.meta?.['memoId'] === 'string';
|
|
65
|
+
}
|
|
66
|
+
function describe(r) {
|
|
67
|
+
const flat = r.text.replace(/\s+/g, ' ').trim();
|
|
68
|
+
const text = flat.length > 60 ? `${flat.slice(0, 59)}…` : flat;
|
|
69
|
+
return `${r.kind} ${r.status} ${r.id.slice(0, 8)} (created ${r.createdAt.slice(0, 10)}): "${text}"`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Run the migration if it has not run yet. Returns its summary on the run
|
|
73
|
+
* that performed it, null when it already ran. Idempotent either way.
|
|
74
|
+
*/
|
|
75
|
+
export function runCommsMigrationsOnce(nowMs = Date.now()) {
|
|
76
|
+
try {
|
|
77
|
+
const file = loadMigrations();
|
|
78
|
+
if (file.done[MIGRATION_ID])
|
|
79
|
+
return null;
|
|
80
|
+
const log = [];
|
|
81
|
+
const legacy = expireRequestsWhere((r) => {
|
|
82
|
+
if (r.kind !== LEGACY_BRIEFING_KIND || r.meta?.['source'] === 'leader')
|
|
83
|
+
return false;
|
|
84
|
+
// A sent one is holding the question slot: expire it whatever its age.
|
|
85
|
+
if (r.status === 'sent')
|
|
86
|
+
return true;
|
|
87
|
+
const created = Date.parse(r.createdAt);
|
|
88
|
+
return Number.isFinite(created) && nowMs - created > DIGEST_STALE_MS;
|
|
89
|
+
}, nowMs, 'migration: legacy Strategist briefing retired (3.14)');
|
|
90
|
+
const staleDigests = expireRequestsWhere((r) => {
|
|
91
|
+
if (r.kind !== 'fleet-digest' || r.status !== 'pending')
|
|
92
|
+
return false;
|
|
93
|
+
const created = Date.parse(r.createdAt);
|
|
94
|
+
return Number.isFinite(created) && nowMs - created > DIGEST_STALE_MS;
|
|
95
|
+
}, nowMs, 'migration: pending digest older than 24h (3.14)');
|
|
96
|
+
// Leader memos queued as blocking questions: the Leader thread delivers
|
|
97
|
+
// memos now, so these would only duplicate it.
|
|
98
|
+
const memoQs = expireRequestsWhere(isLeaderMemoRequest, nowMs, 'migration: Leader memos are delivered through the Leader thread (3.14)');
|
|
99
|
+
for (const r of legacy)
|
|
100
|
+
log.push(`expired legacy briefing: ${describe(r)}`);
|
|
101
|
+
if (staleDigests.length > 0) {
|
|
102
|
+
const oldest = staleDigests.map((r) => r.createdAt).sort()[0].slice(0, 10);
|
|
103
|
+
log.push(`expired ${staleDigests.length} pending fleet digest(s) older than 24h (oldest ${oldest})`);
|
|
104
|
+
}
|
|
105
|
+
for (const r of memoQs)
|
|
106
|
+
log.push(`expired Leader memo question: ${describe(r)} — the Leader thread delivers memos now`);
|
|
107
|
+
if (log.length === 0)
|
|
108
|
+
log.push('nothing to migrate');
|
|
109
|
+
const summary = {
|
|
110
|
+
id: MIGRATION_ID,
|
|
111
|
+
ranAt: new Date(nowMs).toISOString(),
|
|
112
|
+
expiredLegacyBriefings: legacy.length,
|
|
113
|
+
expiredStaleDigests: staleDigests.length,
|
|
114
|
+
expiredLeaderMemoQuestions: memoQs.length,
|
|
115
|
+
log,
|
|
116
|
+
};
|
|
117
|
+
file.done[MIGRATION_ID] = summary;
|
|
118
|
+
saveMigrations(file);
|
|
119
|
+
return summary;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../src/core/comms/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
* line). Mutations (markSent, resolveRequest) rewrite the file after loading
|
|
7
7
|
* all records.
|
|
8
8
|
*
|
|
9
|
-
* Protocol invariant: only ONE
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Protocol invariant: only ONE question/approval may be 'sent' (awaiting
|
|
10
|
+
* reply) at a time. Reports are informational: dispatch delivers them
|
|
11
|
+
* regardless of any outstanding question (3.14), so they never wait behind
|
|
12
|
+
* one. Requests that outlive their TTL are expired (see expireStaleRequests)
|
|
13
|
+
* so one unanswered question cannot hold the question slot shut
|
|
14
|
+
* indefinitely. postRequest always appends as 'pending'; dispatch decides
|
|
15
|
+
* when to promote pending→sent. Answers arrive as numeric indices (1-based)
|
|
16
|
+
* that map to the request's options array.
|
|
14
17
|
*
|
|
15
18
|
* Never throws. All I/O errors are caught and silently degrade.
|
|
16
19
|
*/
|
|
@@ -41,6 +44,10 @@ export interface CommsRequest {
|
|
|
41
44
|
answeredAt?: string;
|
|
42
45
|
/** ISO timestamp when the request aged out unsent or unanswered. */
|
|
43
46
|
expiredAt?: string;
|
|
47
|
+
/** Why it was expired, when not by plain TTL (e.g. a one-time migration). */
|
|
48
|
+
expiredReason?: string;
|
|
49
|
+
/** Consecutive failed send attempts (informational requests only). */
|
|
50
|
+
sendFailures?: number;
|
|
44
51
|
}
|
|
45
52
|
/**
|
|
46
53
|
* Post a new request. Returns the assigned id. The request is appended
|
|
@@ -96,3 +103,23 @@ export interface ExpireResult {
|
|
|
96
103
|
* never throws.
|
|
97
104
|
*/
|
|
98
105
|
export declare function expireStaleRequests(nowMs: number, ttlMs: number): ExpireResult;
|
|
106
|
+
/**
|
|
107
|
+
* 3.14: expire every pending/sent request matching `pred`, stamping
|
|
108
|
+
* `expiredReason`. Returns the expired records (as they were before expiry)
|
|
109
|
+
* so callers can log exactly what went. Answered/expired rows are never
|
|
110
|
+
* touched. Best-effort; never throws.
|
|
111
|
+
*/
|
|
112
|
+
export declare function expireRequestsWhere(pred: (r: CommsRequest) => boolean, nowMs: number, reason: string): CommsRequest[];
|
|
113
|
+
/**
|
|
114
|
+
* 3.14: count a failed send of a pending request; once it has failed
|
|
115
|
+
* `maxFailures` times it is expired (reason recorded) so one message the
|
|
116
|
+
* transport keeps rejecting cannot hold every later report back.
|
|
117
|
+
* Returns true when this call expired it. Best-effort; never throws.
|
|
118
|
+
*/
|
|
119
|
+
export declare function noteSendFailure(id: string, nowMs: number, maxFailures: number): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* 3.14: an informational request (a report) was delivered — record it as
|
|
122
|
+
* sent and answered in ONE rewrite. Reports never await a reply, so they
|
|
123
|
+
* never occupy the single outstanding-question slot.
|
|
124
|
+
*/
|
|
125
|
+
export declare function markReportDelivered(id: string, nowMs?: number): void;
|
|
@@ -6,11 +6,14 @@
|
|
|
6
6
|
* line). Mutations (markSent, resolveRequest) rewrite the file after loading
|
|
7
7
|
* all records.
|
|
8
8
|
*
|
|
9
|
-
* Protocol invariant: only ONE
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Protocol invariant: only ONE question/approval may be 'sent' (awaiting
|
|
10
|
+
* reply) at a time. Reports are informational: dispatch delivers them
|
|
11
|
+
* regardless of any outstanding question (3.14), so they never wait behind
|
|
12
|
+
* one. Requests that outlive their TTL are expired (see expireStaleRequests)
|
|
13
|
+
* so one unanswered question cannot hold the question slot shut
|
|
14
|
+
* indefinitely. postRequest always appends as 'pending'; dispatch decides
|
|
15
|
+
* when to promote pending→sent. Answers arrive as numeric indices (1-based)
|
|
16
|
+
* that map to the request's options array.
|
|
14
17
|
*
|
|
15
18
|
* Never throws. All I/O errors are caught and silently degrade.
|
|
16
19
|
*/
|
|
@@ -226,4 +229,97 @@ export function expireStaleRequests(nowMs, ttlMs) {
|
|
|
226
229
|
}
|
|
227
230
|
return result;
|
|
228
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* 3.14: expire every pending/sent request matching `pred`, stamping
|
|
234
|
+
* `expiredReason`. Returns the expired records (as they were before expiry)
|
|
235
|
+
* so callers can log exactly what went. Answered/expired rows are never
|
|
236
|
+
* touched. Best-effort; never throws.
|
|
237
|
+
*/
|
|
238
|
+
export function expireRequestsWhere(pred, nowMs, reason) {
|
|
239
|
+
const expired = [];
|
|
240
|
+
try {
|
|
241
|
+
const all = loadAll();
|
|
242
|
+
const expiredAt = new Date(nowMs).toISOString();
|
|
243
|
+
const updated = all.map((r) => {
|
|
244
|
+
if (r.status !== 'pending' && r.status !== 'sent')
|
|
245
|
+
return r;
|
|
246
|
+
if (!pred(r))
|
|
247
|
+
return r;
|
|
248
|
+
expired.push(r);
|
|
249
|
+
return { ...r, status: 'expired', expiredAt, expiredReason: reason };
|
|
250
|
+
});
|
|
251
|
+
if (expired.length > 0)
|
|
252
|
+
saveAll(updated);
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// best-effort
|
|
256
|
+
}
|
|
257
|
+
return expired;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* 3.14: count a failed send of a pending request; once it has failed
|
|
261
|
+
* `maxFailures` times it is expired (reason recorded) so one message the
|
|
262
|
+
* transport keeps rejecting cannot hold every later report back.
|
|
263
|
+
* Returns true when this call expired it. Best-effort; never throws.
|
|
264
|
+
*/
|
|
265
|
+
export function noteSendFailure(id, nowMs, maxFailures) {
|
|
266
|
+
let expired = false;
|
|
267
|
+
try {
|
|
268
|
+
const all = loadAll();
|
|
269
|
+
let found = false;
|
|
270
|
+
const updated = all.map((r) => {
|
|
271
|
+
if (r.id !== id || r.status !== 'pending')
|
|
272
|
+
return r;
|
|
273
|
+
found = true;
|
|
274
|
+
const failures = (r.sendFailures ?? 0) + 1;
|
|
275
|
+
if (failures >= maxFailures) {
|
|
276
|
+
expired = true;
|
|
277
|
+
return {
|
|
278
|
+
...r,
|
|
279
|
+
sendFailures: failures,
|
|
280
|
+
status: 'expired',
|
|
281
|
+
expiredAt: new Date(nowMs).toISOString(),
|
|
282
|
+
expiredReason: `send failed ${failures} times`,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
return { ...r, sendFailures: failures };
|
|
286
|
+
});
|
|
287
|
+
if (found)
|
|
288
|
+
saveAll(updated);
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
// best-effort
|
|
292
|
+
}
|
|
293
|
+
return expired;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 3.14: an informational request (a report) was delivered — record it as
|
|
297
|
+
* sent and answered in ONE rewrite. Reports never await a reply, so they
|
|
298
|
+
* never occupy the single outstanding-question slot.
|
|
299
|
+
*/
|
|
300
|
+
export function markReportDelivered(id, nowMs = Date.now()) {
|
|
301
|
+
try {
|
|
302
|
+
const all = loadAll();
|
|
303
|
+
const iso = new Date(nowMs).toISOString();
|
|
304
|
+
let found = false;
|
|
305
|
+
const updated = all.map((r) => {
|
|
306
|
+
if (r.id !== id)
|
|
307
|
+
return r;
|
|
308
|
+
found = true;
|
|
309
|
+
return {
|
|
310
|
+
...r,
|
|
311
|
+
status: 'answered',
|
|
312
|
+
sentAt: iso,
|
|
313
|
+
answeredAt: iso,
|
|
314
|
+
answerIndex: -1,
|
|
315
|
+
answerText: '(report delivered)',
|
|
316
|
+
};
|
|
317
|
+
});
|
|
318
|
+
if (found)
|
|
319
|
+
saveAll(updated);
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
// best-effort
|
|
323
|
+
}
|
|
324
|
+
}
|
|
229
325
|
//# 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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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3.14: Telegram as a real two-way line between Mason and the Leader.
|
|
3
|
+
*
|
|
4
|
+
* dispatch.ts owns the cycle (poll → route inbound → drain outbound); this
|
|
5
|
+
* module owns what each Telegram message MEANS:
|
|
6
|
+
*
|
|
7
|
+
* Outbound
|
|
8
|
+
* - Leader-thread messages (pendingOutbound('telegram')) are drained every
|
|
9
|
+
* cycle, paced by the caller, and marked delivered. A message that
|
|
10
|
+
* answers something is sent as a Telegram reply to the message it
|
|
11
|
+
* answers. Memo / action messages carry [Approve] [Veto] [Details].
|
|
12
|
+
* - Leader-memo reports from the comms queue get the same buttons.
|
|
13
|
+
* - Every message we send is recorded (telegram-thread-map) so a later
|
|
14
|
+
* reply or button tap can be traced back to the Leader-thread message.
|
|
15
|
+
*
|
|
16
|
+
* Inbound (text)
|
|
17
|
+
* 1. keywords: pause / resume / snapshot / revert:<id>:<repo>, and
|
|
18
|
+
* /help /start /status /leader [text] /directives;
|
|
19
|
+
* 2. a Telegram reply to a Leader QUESTION → answerLeaderQuestion;
|
|
20
|
+
* 3. a bare number while a button-question is outstanding → that option;
|
|
21
|
+
* 4. anything else (incl. a reply to any other Leader message, with
|
|
22
|
+
* replyTo) → appendMasonMessage; the Leader's reply goes back as a
|
|
23
|
+
* Telegram reply to Mason's message.
|
|
24
|
+
*
|
|
25
|
+
* Inbound (buttons): `lt:<a|v|d>:<token>` → approveLeaderAction / veto /
|
|
26
|
+
* full memo. Tokens resolve only to entries we created (see thread map).
|
|
27
|
+
*
|
|
28
|
+
* SAFETY: messages reach here only from Mason's own chat (telegram.ts drops
|
|
29
|
+
* every other chat id). Veto only lowers autonomy; Approve goes through the
|
|
30
|
+
* Leader's own approveLeaderAction gate. Model text is scrubbed of secrets
|
|
31
|
+
* and HTML-escaped at the transport. Never throws.
|
|
32
|
+
*/
|
|
33
|
+
import type { AshlrConfig } from '../types.js';
|
|
34
|
+
import { type InboundEvent, type TelegramButton } from '../integrations/telegram.js';
|
|
35
|
+
import type { CommsRequest } from './requests.js';
|
|
36
|
+
import { type TelegramButtonTarget } from './telegram-thread-map.js';
|
|
37
|
+
import type { LeaderThreadMessage } from '../vision/leader-thread.js';
|
|
38
|
+
export declare const LEADER_CALLBACK_PREFIX = "lt:";
|
|
39
|
+
export interface SendPacer {
|
|
40
|
+
/** Minimum gap between two sends in this cycle (ms). */
|
|
41
|
+
gapMs: number;
|
|
42
|
+
/** Informational sends left in this cycle's batch. */
|
|
43
|
+
remaining: number;
|
|
44
|
+
lastSendAt: number;
|
|
45
|
+
sleep: (ms: number) => Promise<void>;
|
|
46
|
+
now: () => number;
|
|
47
|
+
}
|
|
48
|
+
export declare function createPacer(opts?: {
|
|
49
|
+
gapMs?: number;
|
|
50
|
+
batchCap?: number;
|
|
51
|
+
sleep?: (ms: number) => Promise<void>;
|
|
52
|
+
now?: () => number;
|
|
53
|
+
}): SendPacer;
|
|
54
|
+
/** Wait out the gap since the previous send. Returns false when the batch cap is spent. */
|
|
55
|
+
export declare function paceNext(p: SendPacer): Promise<boolean>;
|
|
56
|
+
export declare function recordPacedSend(p: SendPacer): void;
|
|
57
|
+
/** [Approve] [Veto] [Details] for a memo / action message. Approve only when something awaits approval. */
|
|
58
|
+
export declare function leaderKeyboard(target: Omit<TelegramButtonTarget, 'at'>, show: {
|
|
59
|
+
approve: boolean;
|
|
60
|
+
veto: boolean;
|
|
61
|
+
}): TelegramButton[][];
|
|
62
|
+
/**
|
|
63
|
+
* Send one informational request (a report). Leader-memo reports get memo
|
|
64
|
+
* buttons and are recorded as delivered memos. Returns whether it landed.
|
|
65
|
+
*/
|
|
66
|
+
export declare function sendReportViaTelegram(req: CommsRequest, cfg: AshlrConfig): Promise<boolean>;
|
|
67
|
+
/** How a Leader-thread message reads on the phone (plain text; escaped at the transport). */
|
|
68
|
+
export declare function formatThreadMessage(msg: LeaderThreadMessage): string;
|
|
69
|
+
/**
|
|
70
|
+
* Send one Leader-thread message and record it. `replyToTg` overrides the
|
|
71
|
+
* Telegram message it replies to (used when answering Mason's message).
|
|
72
|
+
*/
|
|
73
|
+
export declare function sendThreadMessage(msg: LeaderThreadMessage, cfg: AshlrConfig, replyToTg?: number): Promise<boolean>;
|
|
74
|
+
export interface DrainResult {
|
|
75
|
+
sent: number;
|
|
76
|
+
failed: number;
|
|
77
|
+
skipped: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Deliver the Leader thread's pending Telegram messages, paced. A memo that
|
|
81
|
+
* already reached Mason through the comms queue is marked delivered without
|
|
82
|
+
* a second send. Stops at the first transport failure (the rest retry next
|
|
83
|
+
* cycle). Never throws.
|
|
84
|
+
*/
|
|
85
|
+
export declare function drainLeaderThread(cfg: AshlrConfig, pacer: SendPacer): Promise<DrainResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Hand Mason's text to the Leader thread and send the Leader's reply back as
|
|
88
|
+
* a Telegram reply to his message. Answers a Leader question when he replied
|
|
89
|
+
* to one. Never throws.
|
|
90
|
+
*/
|
|
91
|
+
export declare function converseWithLeader(event: InboundEvent, text: string, cfg: AshlrConfig): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Handle an `lt:` button tap. Acks the tap (toast) and replies under the
|
|
94
|
+
* tapped message with the outcome. Returns true when the tap was ours.
|
|
95
|
+
*/
|
|
96
|
+
export declare function handleLeaderButton(event: InboundEvent, cfg: AshlrConfig): Promise<boolean>;
|
|
97
|
+
export declare const TELEGRAM_HELP_TEXT: string;
|
|
98
|
+
/** /status — honest, local-only status (no model calls). */
|
|
99
|
+
export declare function buildStatusText(nowMs?: number): Promise<string>;
|
|
100
|
+
/**
|
|
101
|
+
* Handle a `/command`. Returns true when the text was a command (handled,
|
|
102
|
+
* including unknown commands, which get the help text).
|
|
103
|
+
*/
|
|
104
|
+
export declare function handleSlashCommand(event: InboundEvent, text: string, cfg: AshlrConfig): Promise<boolean>;
|