@ashlr/hub 3.10.1 → 3.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +151 -0
- package/README.md +343 -82
- package/dist/authority-surface.json +80 -15
- package/dist/build-identity.json +2 -2
- package/dist/cli/cloud.d.ts +39 -0
- package/dist/cli/cloud.js +448 -0
- package/dist/cli/cloud.js.map +1 -0
- package/dist/cli/completions.js +4 -0
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/help.js +2 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +10 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/cloud/backlog.d.ts +17 -0
- package/dist/core/cloud/backlog.js +177 -0
- package/dist/core/cloud/backlog.js.map +1 -0
- package/dist/core/cloud/budget.d.ts +19 -0
- package/dist/core/cloud/budget.js +99 -0
- package/dist/core/cloud/budget.js.map +1 -0
- package/dist/core/cloud/checkout.d.ts +41 -0
- package/dist/core/cloud/checkout.js +168 -0
- package/dist/core/cloud/checkout.js.map +1 -0
- package/dist/core/cloud/cloud-api.d.ts +86 -0
- package/dist/core/cloud/cloud-api.js +599 -0
- package/dist/core/cloud/cloud-api.js.map +1 -0
- package/dist/core/cloud/delivery-contract.d.ts +25 -0
- package/dist/core/cloud/delivery-contract.js +138 -0
- package/dist/core/cloud/delivery-contract.js.map +1 -0
- package/dist/core/cloud/improvement-backlog.d.ts +11 -0
- package/dist/core/cloud/improvement-backlog.js +26 -0
- package/dist/core/cloud/improvement-backlog.js.map +1 -0
- package/dist/core/cloud/launcher.d.ts +68 -0
- package/dist/core/cloud/launcher.js +312 -0
- package/dist/core/cloud/launcher.js.map +1 -0
- package/dist/core/cloud/service.d.ts +51 -0
- package/dist/core/cloud/service.js +215 -0
- package/dist/core/cloud/service.js.map +1 -0
- package/dist/core/cloud/store.d.ts +41 -0
- package/dist/core/cloud/store.js +278 -0
- package/dist/core/cloud/store.js.map +1 -0
- package/dist/core/cloud/tracker.d.ts +30 -0
- package/dist/core/cloud/tracker.js +152 -0
- package/dist/core/cloud/tracker.js.map +1 -0
- package/dist/core/cloud/types.d.ts +233 -0
- package/dist/core/cloud/types.js +73 -0
- package/dist/core/cloud/types.js.map +1 -0
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +5 -4
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +4 -3
- package/dist/core/universe/campaign.js +9 -1
- package/dist/core/universe/campaign.js.map +1 -1
- package/dist/core/universe/runner.d.ts +3 -0
- package/dist/core/universe/runner.js +7 -3
- package/dist/core/universe/runner.js.map +1 -1
- package/dist/core/verse/activity-api.d.ts +3 -1
- package/dist/core/verse/activity-api.js +16 -1
- package/dist/core/verse/activity-api.js.map +1 -1
- package/dist/core/verse/activity.d.ts +7 -0
- package/dist/core/verse/activity.js +23 -0
- package/dist/core/verse/activity.js.map +1 -1
- package/dist/core/verse/compaction-point.d.ts +55 -0
- package/dist/core/verse/compaction-point.js +75 -0
- package/dist/core/verse/compaction-point.js.map +1 -0
- package/dist/core/verse/context-math.d.ts +1 -38
- package/dist/core/verse/context-math.js +5 -59
- package/dist/core/verse/context-math.js.map +1 -1
- package/dist/core/verse/verse-api.d.ts +1 -1
- package/dist/core/verse/verse-api.js +2 -0
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/vision/leader-cloud.d.ts +63 -0
- package/dist/core/vision/leader-cloud.js +134 -0
- package/dist/core/vision/leader-cloud.js.map +1 -0
- package/dist/core/vision/leader.d.ts +6 -0
- package/dist/core/vision/leader.js +12 -1
- package/dist/core/vision/leader.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.js → ActionMenu-_DhtX2gO.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.js.map → ActionMenu-_DhtX2gO.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js +2 -0
- package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js.map +1 -0
- package/dist/core/web/public/next/assets/App-BAywyjE8.js +7 -0
- package/dist/core/web/public/next/assets/{App-CbDCLAxn.js.map → App-BAywyjE8.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js +2 -0
- package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js.map +1 -0
- package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.js → AreaTrend-CblDqC8Q.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.js.map → AreaTrend-CblDqC8Q.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-D3d8lYO3.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-BF5UCsMv.js.map → AutonomySection-D3d8lYO3.js.map} +1 -1
- package/dist/core/web/public/next/assets/BranchBar-DU0jAV1E.js +2 -0
- package/dist/core/web/public/next/assets/{BranchBar-nfSb59Kv.js.map → BranchBar-DU0jAV1E.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js → BudgetControl-Mm1ZL4u6.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js.map → BudgetControl-Mm1ZL4u6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js → BurnDown-C1fgcFqo.js} +2 -2
- package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js.map → BurnDown-C1fgcFqo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.js → Button-DqgLUZvd.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.js.map → Button-DqgLUZvd.js.map} +1 -1
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js +2 -0
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js.map +1 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-2OW38o_C.js +2 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-2OW38o_C.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandPalette-C5w2o1-r.js +2 -0
- package/dist/core/web/public/next/assets/{CommandPalette-lLV-OR63.js.map → CommandPalette-C5w2o1-r.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js +2 -0
- package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js +2 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-Dx15x0Ho.css +1 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js +2 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js.map +1 -0
- package/dist/core/web/public/next/assets/Dialog-tQ8kFulD.css +1 -0
- package/dist/core/web/public/next/assets/{DiffPane-BVxhK-cy.js → DiffPane-DpqRUtCx.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-BVxhK-cy.js.map → DiffPane-DpqRUtCx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.js → DiffViewer-CoV5-nUf.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.js.map → DiffViewer-CoV5-nUf.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-C0Pq7Jak.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-BZReKwos.js.map → DockHost-C0Pq7Jak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js → EmptyState-DYW29ncw.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js.map → EmptyState-DYW29ncw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.js → Epistemic-DVx6oHzp.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.js.map → Epistemic-DVx6oHzp.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js +3 -0
- package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js.map +1 -0
- package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.js → Funnel-DxiGqJrt.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.js.map → Funnel-DxiGqJrt.js.map} +1 -1
- package/dist/core/web/public/next/assets/GearTray-C3I89sIt.js +2 -0
- package/dist/core/web/public/next/assets/{GearTray-CkviqjYr.js.map → GearTray-C3I89sIt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.js → GrowthSection-C3m2bPEz.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.js.map → GrowthSection-C3m2bPEz.js.map} +1 -1
- package/dist/core/web/public/next/assets/HandoffDialog-Bjb96a0N.js +2 -0
- package/dist/core/web/public/next/assets/{HandoffDialog-DcPj1ri9.js.map → HandoffDialog-Bjb96a0N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-Ci7TD96x.js → Input-ekTehVaH.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-Ci7TD96x.js.map → Input-ekTehVaH.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-85VBbbaZ.js +2 -0
- package/dist/core/web/public/next/assets/{LeaderCard-BSFTlMRF.js.map → LeaderCard-85VBbbaZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.js → MatrixHeatmap-Bo8j0QPC.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.js.map → MatrixHeatmap-Bo8j0QPC.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-DvHFaVyp.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-CvcYu1X_.js.map → McpSection-DvHFaVyp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js → MessageMarkdown-fsY_ltVa.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js.map → MessageMarkdown-fsY_ltVa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js → MessageMarkdownRenderer-DDdtu82l.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js.map → MessageMarkdownRenderer-DDdtu82l.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.js → Meter-CeGDXdDM.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.js.map → Meter-CeGDXdDM.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-CDVhHvXl.js +2 -0
- package/dist/core/web/public/next/assets/{MindSection-DcO9fmYe.js.map → MindSection-CDVhHvXl.js.map} +1 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-CrfJ0PdD.css +1 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js +2 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-6AuN0BF3.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-hiTINupk.js.map → NeedsYouDrawer-6AuN0BF3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.js → NeedsYouList-ChnRmbSk.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.js.map → NeedsYouList-ChnRmbSk.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-B06E7sqg.js +3 -0
- package/dist/core/web/public/next/assets/{NewChatDialog-utSckh7C.js.map → NewChatDialog-B06E7sqg.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-C2M3zov9.js +2 -0
- package/dist/core/web/public/next/assets/{OnboardingFlow-7N3YSUHN.js.map → OnboardingFlow-C2M3zov9.js.map} +1 -1
- package/dist/core/web/public/next/assets/PreviewPane-Bd6HsX1k.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-CqzkaAjG.js.map → PreviewPane-Bd6HsX1k.js.map} +1 -1
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js +2 -0
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js.map +1 -0
- package/dist/core/web/public/next/assets/RailStatus-CctCuuLy.js +2 -0
- package/dist/core/web/public/next/assets/{RailStatus-sZhApA8k.js.map → RailStatus-CctCuuLy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.js → RefreshIndicator-CKY5BGdD.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.js.map → RefreshIndicator-CKY5BGdD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CM_8pJs6.css → ResourcePoolConsoleApp-BX9JLkT4.css} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-DXjjV6Sh.js → ResourcePoolConsoleApp-CspIsW_G.js} +5 -5
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-DXjjV6Sh.js.map → ResourcePoolConsoleApp-CspIsW_G.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-uZEqC2EM.css +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-CSKIO_wZ.css +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js +2 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DdxhTdZ6.css +1 -0
- package/dist/core/web/public/next/assets/RunInCloudAction-_juw4EXd.js +2 -0
- package/dist/core/web/public/next/assets/RunInCloudAction-_juw4EXd.js.map +1 -0
- package/dist/core/web/public/next/assets/SeatSelector-D_YXvkPy.js +3 -0
- package/dist/core/web/public/next/assets/{SeatSelector-CT92PqM_.js.map → SeatSelector-D_YXvkPy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js → Segmented-DnKP6rr7.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js.map → Segmented-DnKP6rr7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DkdeoSQn.js → Select-DlbUupTX.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DkdeoSQn.js.map → Select-DlbUupTX.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js +2 -0
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionGate-DvMpXNpJ.css +1 -0
- package/dist/core/web/public/next/assets/SessionInsightChip-C33-k-Q5.js +2 -0
- package/dist/core/web/public/next/assets/{SessionInsightChip-CwlakUYU.js.map → SessionInsightChip-C33-k-Q5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.js → SessionSearch-DhhR9Csg.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.js.map → SessionSearch-DhhR9Csg.js.map} +1 -1
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js +2 -0
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js.map +1 -0
- package/dist/core/web/public/next/assets/Sheet-BvNYOYv5.js +2 -0
- package/dist/core/web/public/next/assets/{Sheet-C7APkGPt.js.map → Sheet-BvNYOYv5.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShortcutsOverlay-1nUBVO-Z.js +2 -0
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-ZPyXUS_I.js.map → ShortcutsOverlay-1nUBVO-Z.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-YrVvvBNM.js +3 -0
- package/dist/core/web/public/next/assets/{Sidebar-Chsgazmk.js.map → Sidebar-YrVvvBNM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js → Slider-B2c-dbQb.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js.map → Slider-B2c-dbQb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js → StatusBadge-Q9YYkijx.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js.map → StatusBadge-Q9YYkijx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js → StepBand-Ci-C0GUG.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js.map → StepBand-Ci-C0GUG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js → Surface-DBovMq4P.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js.map → Surface-DBovMq4P.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js → Swimlane-Cdc4TqDe.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js.map → Swimlane-Cdc4TqDe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js → Switch-CUrvzO2k.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js.map → Switch-CUrvzO2k.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.js → Tag-Bv8u6APt.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.js.map → Tag-Bv8u6APt.js.map} +1 -1
- package/dist/core/web/public/next/assets/TerminalPane-BE4Xlqi5.js +7 -0
- package/dist/core/web/public/next/assets/{TerminalPane-BDkKFych.js.map → TerminalPane-BE4Xlqi5.js.map} +1 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BGwejf0m.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BE72VyBL.js.map → UniverseConsoleApp-BGwejf0m.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-Dh7A-hLD.css → UniverseConsoleApp-DfuT-wFw.css} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-BbmYY2P4.js → UniverseView-CgKa-WXC.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-BbmYY2P4.js.map → UniverseView-CgKa-WXC.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js +2 -0
- package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-Cxqr-3qc.css +1 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js +10 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-Dwri2jFJ.css +1 -0
- package/dist/core/web/public/next/assets/actions-MtxBGS5B.js +2 -0
- package/dist/core/web/public/next/assets/{actions-BnjZy8a-.js.map → actions-MtxBGS5B.js.map} +1 -1
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +2 -0
- package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +1 -0
- package/dist/core/web/public/next/assets/budget-queries-CP7hgR-p.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-Cp6vO7FH.js.map → budget-queries-CP7hgR-p.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js → capacity-strip-model-fHfu5cph.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js.map → capacity-strip-model-fHfu5cph.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js → charts-Bis9WSiS.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js.map → charts-Bis9WSiS.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +1 -0
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js +2 -0
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js +2 -0
- package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js.map +1 -0
- package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.js → command-bus-CMvbYP5K.js} +2 -2
- package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.js.map → command-bus-CMvbYP5K.js.map} +1 -1
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +2 -0
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +1 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js +2 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js.map +1 -0
- package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js → composer-keys-su0g1h9o.js} +2 -2
- package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js.map → composer-keys-su0g1h9o.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-Ci3Ch9t5.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-DeJ28uSZ.js.map → context-model-Ci3Ch9t5.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-CjiJTnf1.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-BGznyHNQ.js.map → context-model-CjiJTnf1.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-queries-BDXT6LQ3.js +2 -0
- package/dist/core/web/public/next/assets/{context-queries-_mEgy4eg.js.map → context-queries-BDXT6LQ3.js.map} +1 -1
- package/dist/core/web/public/next/assets/control-queries-Dv-h1Clu.js +2 -0
- package/dist/core/web/public/next/assets/{control-queries-C4TG8blN.js.map → control-queries-Dv-h1Clu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js → dock-icons-t--Eugrd.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js.map → dock-icons-t--Eugrd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js → dock-store-qIu7kSQE.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js.map → dock-store-qIu7kSQE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.js → fleet-model-IRbwfhkR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.js.map → fleet-model-IRbwfhkR.js.map} +1 -1
- package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js +2 -0
- package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js.map +1 -0
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js +2 -0
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js.map +1 -0
- package/dist/core/web/public/next/assets/{format-lW58rL2y.js → format-CaMmVQCn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-lW58rL2y.js.map → format-CaMmVQCn.js.map} +1 -1
- package/dist/core/web/public/next/assets/git-model-B4S_GUNA.js +5 -0
- package/dist/core/web/public/next/assets/{git-model-DaGw1SzS.js.map → git-model-B4S_GUNA.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js +2 -0
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js.map +1 -0
- package/dist/core/web/public/next/assets/global-BlI2BYa1.css +1 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js +3 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js.map +1 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js +2 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js.map +1 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js +2 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js.map +1 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js +2 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js.map +1 -0
- package/dist/core/web/public/next/assets/{index-Dk8R-3a7.js → index-DbDw9UAs.js} +3 -3
- package/dist/core/web/public/next/assets/{index-Dk8R-3a7.js.map → index-DbDw9UAs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js → live-model-DEwrl7_A.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js.map → live-model-DEwrl7_A.js.map} +1 -1
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +2 -0
- package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +1 -0
- package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.js → mind.module-CLhqMQak.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.js.map → mind.module-CLhqMQak.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-Kvzsg-iK.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-DjXM3IDg.js.map → mutations-Kvzsg-iK.js.map} +1 -1
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js +2 -0
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js.map +1 -0
- package/dist/core/web/public/next/assets/overnight-queries-C_AfcL7q.js +2 -0
- package/dist/core/web/public/next/assets/{overnight-queries-Be_eossf.js.map → overnight-queries-C_AfcL7q.js.map} +1 -1
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js +2 -0
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js.map +1 -0
- package/dist/core/web/public/next/assets/primitives-CbAGCNKt.js +1 -0
- package/dist/core/web/public/next/assets/{queries-CYEVCq5r.js → queries-THD05gHP.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-CYEVCq5r.js.map → queries-THD05gHP.js.map} +1 -1
- package/dist/core/web/public/next/assets/reasoning-pref-BVPu0SME.js +2 -0
- package/dist/core/web/public/next/assets/{reasoning-pref-a_ZP6GzU.js.map → reasoning-pref-BVPu0SME.js.map} +1 -1
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js +2 -0
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js.map +1 -0
- package/dist/core/web/public/next/assets/seat-subscription-CR_VylsK.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-CRigL-GE.js.map → seat-subscription-CR_VylsK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js → section-visibility-B0xXUQJ0.js} +2 -2
- package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js.map → section-visibility-B0xXUQJ0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.js → sidebar-model-C5wVXGpb.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.js.map → sidebar-model-C5wVXGpb.js.map} +1 -1
- package/dist/core/web/public/next/assets/slots-DDd8cEoh.js +3 -0
- package/dist/core/web/public/next/assets/{slots-CV9ZuLQU.js.map → slots-DDd8cEoh.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-data-BFxAlefI.js +2 -0
- package/dist/core/web/public/next/assets/{surface-data-DLvmUX9z.js.map → surface-data-BFxAlefI.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js +2 -0
- package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js.map +1 -0
- package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js → tasks-model-DvkWveXs.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js.map → tasks-model-DvkWveXs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js → terminal-icons-Dp6pJgV2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js.map → terminal-icons-Dp6pJgV2.js.map} +1 -1
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js +2 -0
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.js → usage-queries-CUTmnegA.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.js.map → usage-queries-CUTmnegA.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-guarded-action-UCX2u1t1.js +2 -0
- package/dist/core/web/public/next/assets/{use-guarded-action-DVCtLzSo.js.map → use-guarded-action-UCX2u1t1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.js → use-ticker-OXAjob3y.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.js.map → use-ticker-OXAjob3y.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-token-gate-CDDRAoKH.js +2 -0
- package/dist/core/web/public/next/assets/{use-token-gate-B5gOFkeH.js.map → use-token-gate-CDDRAoKH.js.map} +1 -1
- package/dist/core/web/public/next/assets/useChartWidth-BW6SwYIK.css +1 -0
- package/dist/core/web/public/next/assets/useChartWidth-D9M7kUw7.js +2 -0
- package/dist/core/web/public/next/assets/{useChartWidth-0APW0BR3.js.map → useChartWidth-D9M7kUw7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.js → useSeatsRefresh-B2dCVcj9.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.js.map → useSeatsRefresh-B2dCVcj9.js.map} +1 -1
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js +2 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js +2 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js +2 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +3 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-ui-store-D7YXi63q.js +3 -0
- package/dist/core/web/public/next/assets/{verse-ui-store-Dy4HuDBV.js.map → verse-ui-store-D7YXi63q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js → viewport-BYGH5EgA.js} +2 -2
- package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js.map → viewport-BYGH5EgA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js → warmup-AsqwWCUi.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js.map → warmup-AsqwWCUi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.js → workspace-model-CXorJr0G.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.js.map → workspace-model-CXorJr0G.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +5 -2
- package/dist/cli/activation.d.ts +0 -41
- package/dist/cli/activation.js +0 -485
- package/dist/cli/activation.js.map +0 -1
- package/dist/core/fleet/generated-repair-resolution.d.ts +0 -36
- package/dist/core/fleet/generated-repair-resolution.js +0 -245
- package/dist/core/fleet/generated-repair-resolution.js.map +0 -1
- package/dist/core/local-runtime/llama/port.d.ts +0 -17
- package/dist/core/local-runtime/llama/port.js +0 -47
- package/dist/core/local-runtime/llama/port.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-host.d.ts +0 -54
- package/dist/core/local-runtime/llama/proxy-host.js +0 -159
- package/dist/core/local-runtime/llama/proxy-host.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-process.d.ts +0 -148
- package/dist/core/local-runtime/llama/proxy-process.js +0 -250
- package/dist/core/local-runtime/llama/proxy-process.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-record.d.ts +0 -40
- package/dist/core/local-runtime/llama/proxy-record.js +0 -133
- package/dist/core/local-runtime/llama/proxy-record.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-supervisor.d.ts +0 -118
- package/dist/core/local-runtime/llama/proxy-supervisor.js +0 -511
- package/dist/core/local-runtime/llama/proxy-supervisor.js.map +0 -1
- package/dist/core/web/public/next/assets/Advanced-xVYFAeA8.js +0 -2
- package/dist/core/web/public/next/assets/Advanced-xVYFAeA8.js.map +0 -1
- package/dist/core/web/public/next/assets/App-CbDCLAxn.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-BF5UCsMv.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-nfSb59Kv.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-lLV-OR63.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js.map +0 -1
- package/dist/core/web/public/next/assets/DockHost-BZReKwos.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js +0 -3
- package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js.map +0 -1
- package/dist/core/web/public/next/assets/GearTray-CkviqjYr.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-DcPj1ri9.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BSFTlMRF.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-CvcYu1X_.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-DcO9fmYe.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js.map +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cum_DqQZ.css +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-hiTINupk.js +0 -2
- package/dist/core/web/public/next/assets/NewChatDialog-utSckh7C.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingFlow-7N3YSUHN.js +0 -2
- package/dist/core/web/public/next/assets/PreviewPane-CqzkaAjG.js +0 -2
- package/dist/core/web/public/next/assets/RailStatus-sZhApA8k.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-6RMd_aZg.css +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js.map +0 -1
- package/dist/core/web/public/next/assets/SeatSelector-CT92PqM_.js +0 -3
- package/dist/core/web/public/next/assets/SessionInsightChip-CwlakUYU.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-C7APkGPt.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-ZPyXUS_I.js +0 -2
- package/dist/core/web/public/next/assets/Sidebar-Chsgazmk.js +0 -3
- package/dist/core/web/public/next/assets/TerminalPane-BDkKFych.js +0 -7
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BE72VyBL.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-CXJWDiEM.css +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +0 -1
- package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js +0 -10
- package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-BnjZy8a-.js +0 -2
- package/dist/core/web/public/next/assets/budget-queries-Cp6vO7FH.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-BGznyHNQ.js +0 -2
- package/dist/core/web/public/next/assets/context-model-DeJ28uSZ.js +0 -2
- package/dist/core/web/public/next/assets/context-queries-_mEgy4eg.js +0 -2
- package/dist/core/web/public/next/assets/control-queries-C4TG8blN.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js.map +0 -1
- package/dist/core/web/public/next/assets/git-model-DaGw1SzS.js +0 -5
- package/dist/core/web/public/next/assets/global-DG1fmn4y.js +0 -2
- package/dist/core/web/public/next/assets/global-DG1fmn4y.js.map +0 -1
- package/dist/core/web/public/next/assets/global-_tOCFt9y.css +0 -1
- package/dist/core/web/public/next/assets/guarded-action--lguLXfz.js +0 -2
- package/dist/core/web/public/next/assets/guarded-action--lguLXfz.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-YPgbel-I.js +0 -2
- package/dist/core/web/public/next/assets/icons-YPgbel-I.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-DjXM3IDg.js +0 -2
- package/dist/core/web/public/next/assets/overnight-queries-Be_eossf.js +0 -2
- package/dist/core/web/public/next/assets/primitives-Dl3SEQvh.js +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-a_ZP6GzU.js +0 -2
- package/dist/core/web/public/next/assets/seat-subscription-CRigL-GE.js +0 -2
- package/dist/core/web/public/next/assets/slots-CV9ZuLQU.js +0 -3
- package/dist/core/web/public/next/assets/surface-data-DLvmUX9z.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js.map +0 -1
- package/dist/core/web/public/next/assets/use-guarded-action-DVCtLzSo.js +0 -2
- package/dist/core/web/public/next/assets/use-token-gate-B5gOFkeH.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js.map +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-0APW0BR3.js +0 -2
- package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +0 -1
- package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js +0 -2
- package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js +0 -3
- package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-ui-store-Dy4HuDBV.js +0 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface CloudTrackerDeps {
|
|
2
|
+
gh?: (args: string[]) => Promise<{
|
|
3
|
+
ok: boolean;
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
}>;
|
|
7
|
+
now?: () => Date;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* `expired` only means Verse stopped waiting: the session keeps running on
|
|
11
|
+
* claude.ai and may still open its PR. Expired tasks stay watched this long
|
|
12
|
+
* after creation so a late delivery is not lost, then are left alone.
|
|
13
|
+
*/
|
|
14
|
+
export declare const EXPIRED_WATCH_MS: number;
|
|
15
|
+
/**
|
|
16
|
+
* A task still `queued`/`launching` this long after creation was orphaned by
|
|
17
|
+
* a server restart mid-launch (a live launch finishes within the checkout +
|
|
18
|
+
* CLOUD_LAUNCH_TIMEOUT_MS). Left alone it would hold a concurrency slot forever.
|
|
19
|
+
*/
|
|
20
|
+
export declare const STALE_LAUNCH_MS: number;
|
|
21
|
+
/** Production gh: argv only, bounded, never prompts (git-ops' runner and env). */
|
|
22
|
+
export declare function defaultCloudGh(args: string[]): Promise<{
|
|
23
|
+
ok: boolean;
|
|
24
|
+
stdout: string;
|
|
25
|
+
stderr: string;
|
|
26
|
+
}>;
|
|
27
|
+
export declare function refreshCloudTasks(deps?: CloudTrackerDeps): Promise<{
|
|
28
|
+
checked: number;
|
|
29
|
+
updated: number;
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery tracker (unit C1): for every non-terminal task, ask GitHub for a
|
|
3
|
+
* PR whose head is `task.branch` (`gh pr list --repo <repo> --head <branch>
|
|
4
|
+
* --state all --json number,url,state,isDraft,title,body --limit 1`), update
|
|
5
|
+
* state/pr/report, and expire tasks with no PR after CLOUD_TASK_EXPIRY_MS.
|
|
6
|
+
* `gh` failures leave tasks unchanged (never throw into callers).
|
|
7
|
+
*
|
|
8
|
+
* Transitions:
|
|
9
|
+
* running → pr-open | merged | closed (a PR appeared on the branch)
|
|
10
|
+
* pr-open → merged | closed (and pr/report stay current while open)
|
|
11
|
+
* running → expired (no PR after CLOUD_TASK_EXPIRY_MS)
|
|
12
|
+
* expired → pr-open | merged | closed (a late PR, within EXPIRED_WATCH_MS)
|
|
13
|
+
* queued | launching → failed (a launch interrupted by a restart)
|
|
14
|
+
*/
|
|
15
|
+
import { tmpdir } from 'node:os';
|
|
16
|
+
import { defaultGitRunner } from '../verse/git-ops.js';
|
|
17
|
+
import { parseCloudReport } from './delivery-contract.js';
|
|
18
|
+
import { listCloudTasks, readCloudTask, writeCloudTask } from './store.js';
|
|
19
|
+
import { CLOUD_LAUNCH_TIMEOUT_MS, CLOUD_TASK_EXPIRY_MS } from './types.js';
|
|
20
|
+
const HOUR = 60 * 60 * 1000;
|
|
21
|
+
/**
|
|
22
|
+
* `expired` only means Verse stopped waiting: the session keeps running on
|
|
23
|
+
* claude.ai and may still open its PR. Expired tasks stay watched this long
|
|
24
|
+
* after creation so a late delivery is not lost, then are left alone.
|
|
25
|
+
*/
|
|
26
|
+
export const EXPIRED_WATCH_MS = 48 * HOUR;
|
|
27
|
+
/**
|
|
28
|
+
* A task still `queued`/`launching` this long after creation was orphaned by
|
|
29
|
+
* a server restart mid-launch (a live launch finishes within the checkout +
|
|
30
|
+
* CLOUD_LAUNCH_TIMEOUT_MS). Left alone it would hold a concurrency slot forever.
|
|
31
|
+
*/
|
|
32
|
+
export const STALE_LAUNCH_MS = 10 * CLOUD_LAUNCH_TIMEOUT_MS;
|
|
33
|
+
/** Bound on gh calls per refresh; newest tasks are checked first. */
|
|
34
|
+
const MAX_CHECKS_PER_REFRESH = 50;
|
|
35
|
+
const GH_TIMEOUT_MS = 30_000;
|
|
36
|
+
/** Production gh: argv only, bounded, never prompts (git-ops' runner and env). */
|
|
37
|
+
export async function defaultCloudGh(args) {
|
|
38
|
+
const result = await defaultGitRunner('gh', args, { cwd: tmpdir(), timeoutMs: GH_TIMEOUT_MS, maxStdoutBytes: 2 * 1024 * 1024 });
|
|
39
|
+
return { ok: result.code === 0 && !result.timedOut && !result.truncated, stdout: result.stdout, stderr: result.stderr };
|
|
40
|
+
}
|
|
41
|
+
/** First PR of `gh pr list --json …` output; undefined when the output is not what gh prints (a failure, not "no PR"). */
|
|
42
|
+
function parseGhPrList(stdout) {
|
|
43
|
+
let value;
|
|
44
|
+
try {
|
|
45
|
+
value = JSON.parse(stdout);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
if (!Array.isArray(value))
|
|
51
|
+
return undefined;
|
|
52
|
+
if (value.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
const pr = value[0];
|
|
55
|
+
if (!pr || typeof pr !== 'object' || typeof pr['number'] !== 'number' || typeof pr['url'] !== 'string' || typeof pr['state'] !== 'string')
|
|
56
|
+
return undefined;
|
|
57
|
+
return {
|
|
58
|
+
number: pr['number'],
|
|
59
|
+
url: pr['url'],
|
|
60
|
+
state: pr['state'],
|
|
61
|
+
isDraft: pr['isDraft'] === true,
|
|
62
|
+
title: typeof pr['title'] === 'string' ? pr['title'] : '',
|
|
63
|
+
body: typeof pr['body'] === 'string' ? pr['body'] : null,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function prFrom(gh) {
|
|
67
|
+
const state = gh.state.toUpperCase();
|
|
68
|
+
const mapped = state === 'OPEN' ? 'open' : state === 'MERGED' ? 'merged' : state === 'CLOSED' ? 'closed' : null;
|
|
69
|
+
if (!mapped || !/^https:\/\/github\.com\//.test(gh.url))
|
|
70
|
+
return null;
|
|
71
|
+
return { number: gh.number, url: gh.url, state: mapped, draft: gh.isDraft, title: gh.title.slice(0, 300) };
|
|
72
|
+
}
|
|
73
|
+
function stateFor(pr) {
|
|
74
|
+
if (pr.state === 'merged')
|
|
75
|
+
return { state: 'merged', reason: `Pull request #${pr.number} was merged.` };
|
|
76
|
+
if (pr.state === 'closed')
|
|
77
|
+
return { state: 'closed', reason: `Pull request #${pr.number} was closed without merging.` };
|
|
78
|
+
return { state: 'pr-open', reason: `${pr.draft ? 'Draft pull request' : 'Pull request'} #${pr.number} is open for review.` };
|
|
79
|
+
}
|
|
80
|
+
const watched = (task, nowMs) => task.state === 'running' || task.state === 'pr-open'
|
|
81
|
+
|| (task.state === 'expired' && task.pr === null && nowMs - Date.parse(task.createdAt) < EXPIRED_WATCH_MS);
|
|
82
|
+
/** Writes `next` only when the task on disk is still the one this refresh read (a launch or dismiss in between wins). */
|
|
83
|
+
function commit(before, next) {
|
|
84
|
+
const current = readCloudTask(before.id);
|
|
85
|
+
if (!current || current.updatedAt !== before.updatedAt || current.state !== before.state)
|
|
86
|
+
return false;
|
|
87
|
+
writeCloudTask(next);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
91
|
+
export async function refreshCloudTasks(deps = {}) {
|
|
92
|
+
const gh = deps.gh ?? defaultCloudGh;
|
|
93
|
+
const nowMs = (deps.now ?? (() => new Date()))().getTime();
|
|
94
|
+
let checked = 0;
|
|
95
|
+
let updated = 0;
|
|
96
|
+
let tasks;
|
|
97
|
+
try {
|
|
98
|
+
tasks = listCloudTasks();
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return { checked, updated };
|
|
102
|
+
}
|
|
103
|
+
for (const task of tasks) {
|
|
104
|
+
if ((task.state === 'queued' || task.state === 'launching') && nowMs - Date.parse(task.createdAt) > STALE_LAUNCH_MS) {
|
|
105
|
+
try {
|
|
106
|
+
if (commit(task, { ...task, state: 'failed', failure: 'unknown', stateReason: 'The launch was interrupted before a cloud session started.' }))
|
|
107
|
+
updated += 1;
|
|
108
|
+
}
|
|
109
|
+
catch { /* never throw into callers */ }
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const task of tasks.filter((t) => watched(t, nowMs)).slice(0, MAX_CHECKS_PER_REFRESH)) {
|
|
113
|
+
checked += 1;
|
|
114
|
+
let result;
|
|
115
|
+
try {
|
|
116
|
+
result = await gh(['pr', 'list', '--repo', task.repo, '--head', task.branch, '--state', 'all',
|
|
117
|
+
'--json', 'number,url,state,isDraft,title,body', '--limit', '1']);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (!result.ok)
|
|
123
|
+
continue;
|
|
124
|
+
const ghPr = parseGhPrList(result.stdout);
|
|
125
|
+
if (ghPr === undefined)
|
|
126
|
+
continue;
|
|
127
|
+
let next = null;
|
|
128
|
+
if (ghPr) {
|
|
129
|
+
const pr = prFrom(ghPr);
|
|
130
|
+
if (!pr)
|
|
131
|
+
continue;
|
|
132
|
+
const { state, reason } = stateFor(pr);
|
|
133
|
+
// A PR edited to drop its report keeps the last good one.
|
|
134
|
+
const report = parseCloudReport(ghPr.body) ?? task.report;
|
|
135
|
+
if (state !== task.state || !same(pr, task.pr) || !same(report, task.report) || reason !== task.stateReason) {
|
|
136
|
+
next = { ...task, state, pr, report, stateReason: reason, failure: null };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (task.state === 'running' && nowMs - Date.parse(task.launchedAt ?? task.createdAt) > CLOUD_TASK_EXPIRY_MS) {
|
|
140
|
+
next = { ...task, state: 'expired', stateReason: `No pull request arrived within ${Math.round(CLOUD_TASK_EXPIRY_MS / HOUR)} hours. The session link still works.` };
|
|
141
|
+
}
|
|
142
|
+
if (!next)
|
|
143
|
+
continue;
|
|
144
|
+
try {
|
|
145
|
+
if (commit(task, next))
|
|
146
|
+
updated += 1;
|
|
147
|
+
}
|
|
148
|
+
catch { /* a failed write leaves the task as it was */ }
|
|
149
|
+
}
|
|
150
|
+
return { checked, updated };
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/core/cloud/tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud lane (3.11) — FROZEN CONTRACTS.
|
|
3
|
+
*
|
|
4
|
+
* Ashlr Verse launches Claude Code cloud sessions (claude.ai/code) that run on
|
|
5
|
+
* the operator's Claude account — including its cloud / usage credits once
|
|
6
|
+
* the subscription window is spent — and tracks what they deliver.
|
|
7
|
+
*
|
|
8
|
+
* How a launch works (verified 2026-09-24 against Claude Code 2.1.280):
|
|
9
|
+
* - A NEW cloud session can only be created by the interactive CLI:
|
|
10
|
+
* `claude --cloud "<task>"` (with `-p` it is refused). Run under a
|
|
11
|
+
* pseudo-terminal it prints, then exits 0:
|
|
12
|
+
* Created cloud session: <title>
|
|
13
|
+
* View: https://claude.ai/code/session_<id>?from=cli&m=0
|
|
14
|
+
* Resume with: claude --teleport session_<id>
|
|
15
|
+
* - It must run as the `claude-a` seat's native-profile launcher, which is
|
|
16
|
+
* signed in with a claude.ai account; API-key auth is refused ("cloud
|
|
17
|
+
* sessions require authentication with a Claude.ai account").
|
|
18
|
+
* - The session clones the cwd's `origin` GitHub repo at the cwd's CURRENT
|
|
19
|
+
* branch, which must be pushed. The Claude GitHub app already has access
|
|
20
|
+
* to ashlrai/*.
|
|
21
|
+
* - Attaching to / reading an existing session from the CLI is NOT enabled
|
|
22
|
+
* for this account, so Verse never reads a session back. Every task is
|
|
23
|
+
* told to DELIVER to GitHub instead (see delivery-contract.ts): push
|
|
24
|
+
* branch `ashlr-cloud/<taskId>` and open a DRAFT PR whose body carries a
|
|
25
|
+
* fenced `ashlr-cloud-report` JSON block. Verse tracks tasks with `gh`.
|
|
26
|
+
* - The credit balance is not readable (neither `/usage` nor the CLI show
|
|
27
|
+
* it), so spend is an ESTIMATE the operator can calibrate; the UI always
|
|
28
|
+
* says so and links to https://claude.ai/settings/usage.
|
|
29
|
+
*
|
|
30
|
+
* Nothing here merges. A cloud PR is judged and merged by the existing merge
|
|
31
|
+
* gates (custody) or by Mason — never by the cloud lane.
|
|
32
|
+
*/
|
|
33
|
+
export declare const CLOUD_TASK_SCHEMA_VERSION: 1;
|
|
34
|
+
export declare const CLOUD_BUDGET_SCHEMA_VERSION: 1;
|
|
35
|
+
/** Branch every cloud task delivers to: `ashlr-cloud/<taskId>`. */
|
|
36
|
+
export declare const CLOUD_BRANCH_PREFIX: "ashlr-cloud/";
|
|
37
|
+
/** Fenced block language tag carrying the task report in the PR body. */
|
|
38
|
+
export declare const CLOUD_REPORT_FENCE: "ashlr-cloud-report";
|
|
39
|
+
/** Draft PR title prefix, so tasks are recognisable in GitHub lists. */
|
|
40
|
+
export declare const CLOUD_PR_TITLE_PREFIX: "[ashlr-cloud]";
|
|
41
|
+
/** Where the real credit balance lives (not readable programmatically). */
|
|
42
|
+
export declare const CLOUD_BALANCE_URL: "https://claude.ai/settings/usage";
|
|
43
|
+
/** The seat whose claude.ai login launches cloud sessions. */
|
|
44
|
+
export declare const CLOUD_SEAT_ID: "claude-a";
|
|
45
|
+
/** A task with no PR after this long is marked `expired` (still linkable). */
|
|
46
|
+
export declare const CLOUD_TASK_EXPIRY_MS: number;
|
|
47
|
+
/** Max prompt length accepted from any entry point (chars). */
|
|
48
|
+
export declare const CLOUD_PROMPT_MAX_CHARS = 20000;
|
|
49
|
+
/** Launch timeout for the PTY-wrapped CLI (creation took < 10 s in testing). */
|
|
50
|
+
export declare const CLOUD_LAUNCH_TIMEOUT_MS = 90000;
|
|
51
|
+
/** Task ids look like `ct_20260924T2331_k3f9q2` (sortable, branch-safe). */
|
|
52
|
+
export declare const CLOUD_TASK_ID_PATTERN: RegExp;
|
|
53
|
+
export type CloudTaskOrigin = 'chat' | 'operator' | 'leader' | 'self-improve' | 'cli';
|
|
54
|
+
/**
|
|
55
|
+
* queued accepted, waiting for its repo's launch slot (launches are
|
|
56
|
+
* serialised per checkout folder — two concurrent `--cloud` runs
|
|
57
|
+
* in one folder conflict).
|
|
58
|
+
* launching PTY launch in flight.
|
|
59
|
+
* running session created; no PR yet.
|
|
60
|
+
* pr-open draft/ready PR exists on `ashlr-cloud/<id>`.
|
|
61
|
+
* merged PR merged (by gates or Mason).
|
|
62
|
+
* closed PR closed without merge (or dismissed by the operator).
|
|
63
|
+
* failed launch failed (see stateReason / failure code).
|
|
64
|
+
* expired no PR after CLOUD_TASK_EXPIRY_MS — the session link still works.
|
|
65
|
+
*/
|
|
66
|
+
export type CloudTaskState = 'queued' | 'launching' | 'running' | 'pr-open' | 'merged' | 'closed' | 'failed' | 'expired';
|
|
67
|
+
export declare const CLOUD_TERMINAL_STATES: readonly CloudTaskState[];
|
|
68
|
+
export type CloudLaunchFailureCode = 'seat-unavailable' | 'auth' | 'not-enabled' | 'rate-limited' | 'no-remote' | 'checkout-failed' | 'budget' | 'timeout' | 'unparsed' | 'unknown';
|
|
69
|
+
export interface CloudTaskReport {
|
|
70
|
+
status: 'done' | 'partial' | 'blocked' | 'no-change';
|
|
71
|
+
summary: string;
|
|
72
|
+
testsRun: string[];
|
|
73
|
+
risks: string[];
|
|
74
|
+
filesChanged?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface CloudTaskPr {
|
|
77
|
+
number: number;
|
|
78
|
+
url: string;
|
|
79
|
+
state: 'open' | 'closed' | 'merged';
|
|
80
|
+
draft: boolean;
|
|
81
|
+
title: string;
|
|
82
|
+
}
|
|
83
|
+
export interface CloudTaskV1 {
|
|
84
|
+
v: typeof CLOUD_TASK_SCHEMA_VERSION;
|
|
85
|
+
id: string;
|
|
86
|
+
/** GitHub `owner/name`. */
|
|
87
|
+
repo: string;
|
|
88
|
+
/** Branch the session starts from (must exist on origin). */
|
|
89
|
+
baseBranch: string;
|
|
90
|
+
/** Always `${CLOUD_BRANCH_PREFIX}${id}`. */
|
|
91
|
+
branch: string;
|
|
92
|
+
/** Short human title (≤ 80 chars). */
|
|
93
|
+
title: string;
|
|
94
|
+
/** The operator's / Leader's task text — WITHOUT the delivery contract. */
|
|
95
|
+
prompt: string;
|
|
96
|
+
origin: CloudTaskOrigin;
|
|
97
|
+
requestedBy: 'mason' | 'leader' | 'self-improve';
|
|
98
|
+
seat: string;
|
|
99
|
+
sessionId: string | null;
|
|
100
|
+
sessionUrl: string | null;
|
|
101
|
+
state: CloudTaskState;
|
|
102
|
+
/** Plain-language reason for the current state (never raw ISO / paths). */
|
|
103
|
+
stateReason: string | null;
|
|
104
|
+
failure: CloudLaunchFailureCode | null;
|
|
105
|
+
createdAt: string;
|
|
106
|
+
launchedAt: string | null;
|
|
107
|
+
updatedAt: string;
|
|
108
|
+
pr: CloudTaskPr | null;
|
|
109
|
+
report: CloudTaskReport | null;
|
|
110
|
+
/** Budget accounting — an ESTIMATE fixed at launch. */
|
|
111
|
+
estimatedCostUsd: number;
|
|
112
|
+
/** Backlog item this task came from (self-improvement), if any. */
|
|
113
|
+
backlogItemId: string | null;
|
|
114
|
+
/** Needs-you item created for approval (Leader-suggested tasks), if any. */
|
|
115
|
+
needsYouId: string | null;
|
|
116
|
+
}
|
|
117
|
+
export interface CloudBudgetV1 {
|
|
118
|
+
v: typeof CLOUD_BUDGET_SCHEMA_VERSION;
|
|
119
|
+
/** Credits the operator says the account has (default 250). */
|
|
120
|
+
creditsTotalUsd: number;
|
|
121
|
+
/**
|
|
122
|
+
* Operator calibration: credits already spent BEFORE the tasks Verse
|
|
123
|
+
* tracks (or a correction after checking claude.ai). Added to the estimate.
|
|
124
|
+
*/
|
|
125
|
+
creditsSpentAdjustmentUsd: number;
|
|
126
|
+
/** Flat per-session estimate used for accounting (default 3). */
|
|
127
|
+
estimatedCostPerSessionUsd: number;
|
|
128
|
+
/** Max sessions in `launching|running` at once (all origins). */
|
|
129
|
+
maxConcurrent: number;
|
|
130
|
+
/** Max sessions per local day from ANY origin. */
|
|
131
|
+
maxSessionsPerDay: number;
|
|
132
|
+
selfImprove: {
|
|
133
|
+
/** Verse may launch its own self-improvement tasks without a click. */
|
|
134
|
+
enabled: boolean;
|
|
135
|
+
/** Repo self-improvement targets (default ashlrai/ashlr-hub). */
|
|
136
|
+
repo: string;
|
|
137
|
+
/** Max self-improvement launches per local day. */
|
|
138
|
+
maxPerDay: number;
|
|
139
|
+
/** Stop self-improvement when estimated remaining credits fall below this. */
|
|
140
|
+
reserveUsd: number;
|
|
141
|
+
};
|
|
142
|
+
updatedAt: string;
|
|
143
|
+
}
|
|
144
|
+
export declare const DEFAULT_CLOUD_BUDGET: Omit<CloudBudgetV1, 'updatedAt'>;
|
|
145
|
+
export interface CloudGate {
|
|
146
|
+
ok: boolean;
|
|
147
|
+
/** Plain sentence when !ok ("4 of 4 self-improvement launches used today."). */
|
|
148
|
+
reason: string | null;
|
|
149
|
+
}
|
|
150
|
+
export interface CloudBudgetView {
|
|
151
|
+
creditsTotalUsd: number;
|
|
152
|
+
estimatedSpentUsd: number;
|
|
153
|
+
estimatedRemainingUsd: number;
|
|
154
|
+
sessionsToday: number;
|
|
155
|
+
selfImproveToday: number;
|
|
156
|
+
running: number;
|
|
157
|
+
canLaunch: CloudGate;
|
|
158
|
+
canSelfImprove: CloudGate;
|
|
159
|
+
/** Always shown next to spend: why this is an estimate. */
|
|
160
|
+
estimateNote: string;
|
|
161
|
+
balanceUrl: typeof CLOUD_BALANCE_URL;
|
|
162
|
+
budget: CloudBudgetV1;
|
|
163
|
+
}
|
|
164
|
+
export interface CloudSeatStatus {
|
|
165
|
+
id: string;
|
|
166
|
+
ready: boolean;
|
|
167
|
+
/** Plain sentence when not ready. */
|
|
168
|
+
reason: string | null;
|
|
169
|
+
}
|
|
170
|
+
/** One self-improvement item: built in (improvement-backlog.ts) or added by the operator/Leader (<cloudHome>/backlog.json). */
|
|
171
|
+
export interface CloudBacklogItem {
|
|
172
|
+
id: string;
|
|
173
|
+
title: string;
|
|
174
|
+
/** Full task prompt handed to the cloud session. */
|
|
175
|
+
prompt: string;
|
|
176
|
+
area: string;
|
|
177
|
+
priority: 1 | 2 | 3;
|
|
178
|
+
/** Repo the item targets (default: budget.selfImprove.repo). */
|
|
179
|
+
repo?: string;
|
|
180
|
+
}
|
|
181
|
+
export interface CloudBacklogView {
|
|
182
|
+
items: Array<CloudBacklogItem & {
|
|
183
|
+
claimedBy: string | null;
|
|
184
|
+
lastState: CloudTaskState | null;
|
|
185
|
+
}>;
|
|
186
|
+
nextUp: string | null;
|
|
187
|
+
}
|
|
188
|
+
export declare const VERSE_CLOUD_PATH: "/api/verse/cloud";
|
|
189
|
+
export declare const VERSE_CLOUD_LAUNCH_PATH: "/api/verse/cloud/launch";
|
|
190
|
+
export declare const VERSE_CLOUD_BUDGET_PATH: "/api/verse/cloud/budget";
|
|
191
|
+
export declare const VERSE_CLOUD_REFRESH_PATH: "/api/verse/cloud/refresh";
|
|
192
|
+
export declare const VERSE_CLOUD_IMPROVE_PATH: "/api/verse/cloud/improve";
|
|
193
|
+
/** POST `${VERSE_CLOUD_TASKS_PATH}/<id>/dismiss` */
|
|
194
|
+
export declare const VERSE_CLOUD_TASKS_PATH: "/api/verse/cloud/tasks";
|
|
195
|
+
/** GET /api/verse/cloud */
|
|
196
|
+
export interface CloudOverviewResponse {
|
|
197
|
+
generatedAt: string;
|
|
198
|
+
seat: CloudSeatStatus;
|
|
199
|
+
budget: CloudBudgetView;
|
|
200
|
+
/** Newest first, at most 100. */
|
|
201
|
+
tasks: CloudTaskV1[];
|
|
202
|
+
backlog: CloudBacklogView;
|
|
203
|
+
}
|
|
204
|
+
/** POST /api/verse/cloud/launch (write token + read session) */
|
|
205
|
+
export interface CloudLaunchRequest {
|
|
206
|
+
repo: string;
|
|
207
|
+
baseBranch?: string;
|
|
208
|
+
title?: string;
|
|
209
|
+
prompt: string;
|
|
210
|
+
origin: Extract<CloudTaskOrigin, 'chat' | 'operator' | 'cli'>;
|
|
211
|
+
}
|
|
212
|
+
export interface CloudLaunchResponse {
|
|
213
|
+
ok: boolean;
|
|
214
|
+
task: CloudTaskV1 | null;
|
|
215
|
+
/** Plain sentence on refusal/failure. */
|
|
216
|
+
error: string | null;
|
|
217
|
+
failure: CloudLaunchFailureCode | null;
|
|
218
|
+
}
|
|
219
|
+
/** POST /api/verse/cloud/budget — any subset; validated and clamped. */
|
|
220
|
+
export type CloudBudgetUpdate = Partial<Pick<CloudBudgetV1, 'creditsTotalUsd' | 'creditsSpentAdjustmentUsd' | 'estimatedCostPerSessionUsd' | 'maxConcurrent' | 'maxSessionsPerDay'>> & {
|
|
221
|
+
selfImprove?: Partial<CloudBudgetV1['selfImprove']>;
|
|
222
|
+
};
|
|
223
|
+
/** POST /api/verse/cloud/improve — launch up to `count` backlog items now. */
|
|
224
|
+
export interface CloudImproveRequest {
|
|
225
|
+
count?: number;
|
|
226
|
+
}
|
|
227
|
+
export interface CloudImproveResponse {
|
|
228
|
+
launched: CloudTaskV1[];
|
|
229
|
+
skipped: Array<{
|
|
230
|
+
itemId: string;
|
|
231
|
+
reason: string;
|
|
232
|
+
}>;
|
|
233
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud lane (3.11) — FROZEN CONTRACTS.
|
|
3
|
+
*
|
|
4
|
+
* Ashlr Verse launches Claude Code cloud sessions (claude.ai/code) that run on
|
|
5
|
+
* the operator's Claude account — including its cloud / usage credits once
|
|
6
|
+
* the subscription window is spent — and tracks what they deliver.
|
|
7
|
+
*
|
|
8
|
+
* How a launch works (verified 2026-09-24 against Claude Code 2.1.280):
|
|
9
|
+
* - A NEW cloud session can only be created by the interactive CLI:
|
|
10
|
+
* `claude --cloud "<task>"` (with `-p` it is refused). Run under a
|
|
11
|
+
* pseudo-terminal it prints, then exits 0:
|
|
12
|
+
* Created cloud session: <title>
|
|
13
|
+
* View: https://claude.ai/code/session_<id>?from=cli&m=0
|
|
14
|
+
* Resume with: claude --teleport session_<id>
|
|
15
|
+
* - It must run as the `claude-a` seat's native-profile launcher, which is
|
|
16
|
+
* signed in with a claude.ai account; API-key auth is refused ("cloud
|
|
17
|
+
* sessions require authentication with a Claude.ai account").
|
|
18
|
+
* - The session clones the cwd's `origin` GitHub repo at the cwd's CURRENT
|
|
19
|
+
* branch, which must be pushed. The Claude GitHub app already has access
|
|
20
|
+
* to ashlrai/*.
|
|
21
|
+
* - Attaching to / reading an existing session from the CLI is NOT enabled
|
|
22
|
+
* for this account, so Verse never reads a session back. Every task is
|
|
23
|
+
* told to DELIVER to GitHub instead (see delivery-contract.ts): push
|
|
24
|
+
* branch `ashlr-cloud/<taskId>` and open a DRAFT PR whose body carries a
|
|
25
|
+
* fenced `ashlr-cloud-report` JSON block. Verse tracks tasks with `gh`.
|
|
26
|
+
* - The credit balance is not readable (neither `/usage` nor the CLI show
|
|
27
|
+
* it), so spend is an ESTIMATE the operator can calibrate; the UI always
|
|
28
|
+
* says so and links to https://claude.ai/settings/usage.
|
|
29
|
+
*
|
|
30
|
+
* Nothing here merges. A cloud PR is judged and merged by the existing merge
|
|
31
|
+
* gates (custody) or by Mason — never by the cloud lane.
|
|
32
|
+
*/
|
|
33
|
+
export const CLOUD_TASK_SCHEMA_VERSION = 1;
|
|
34
|
+
export const CLOUD_BUDGET_SCHEMA_VERSION = 1;
|
|
35
|
+
/** Branch every cloud task delivers to: `ashlr-cloud/<taskId>`. */
|
|
36
|
+
export const CLOUD_BRANCH_PREFIX = 'ashlr-cloud/';
|
|
37
|
+
/** Fenced block language tag carrying the task report in the PR body. */
|
|
38
|
+
export const CLOUD_REPORT_FENCE = 'ashlr-cloud-report';
|
|
39
|
+
/** Draft PR title prefix, so tasks are recognisable in GitHub lists. */
|
|
40
|
+
export const CLOUD_PR_TITLE_PREFIX = '[ashlr-cloud]';
|
|
41
|
+
/** Where the real credit balance lives (not readable programmatically). */
|
|
42
|
+
export const CLOUD_BALANCE_URL = 'https://claude.ai/settings/usage';
|
|
43
|
+
/** The seat whose claude.ai login launches cloud sessions. */
|
|
44
|
+
export const CLOUD_SEAT_ID = 'claude-a';
|
|
45
|
+
/** A task with no PR after this long is marked `expired` (still linkable). */
|
|
46
|
+
export const CLOUD_TASK_EXPIRY_MS = 6 * 60 * 60 * 1000;
|
|
47
|
+
/** Max prompt length accepted from any entry point (chars). */
|
|
48
|
+
export const CLOUD_PROMPT_MAX_CHARS = 20_000;
|
|
49
|
+
/** Launch timeout for the PTY-wrapped CLI (creation took < 10 s in testing). */
|
|
50
|
+
export const CLOUD_LAUNCH_TIMEOUT_MS = 90_000;
|
|
51
|
+
/** Task ids look like `ct_20260924T2331_k3f9q2` (sortable, branch-safe). */
|
|
52
|
+
export const CLOUD_TASK_ID_PATTERN = /^ct_\d{8}T\d{4}_[a-z0-9]{6}$/;
|
|
53
|
+
export const CLOUD_TERMINAL_STATES = ['merged', 'closed', 'failed', 'expired'];
|
|
54
|
+
export const DEFAULT_CLOUD_BUDGET = Object.freeze({
|
|
55
|
+
v: CLOUD_BUDGET_SCHEMA_VERSION,
|
|
56
|
+
creditsTotalUsd: 250,
|
|
57
|
+
creditsSpentAdjustmentUsd: 0,
|
|
58
|
+
estimatedCostPerSessionUsd: 3,
|
|
59
|
+
maxConcurrent: 4,
|
|
60
|
+
maxSessionsPerDay: 20,
|
|
61
|
+
selfImprove: Object.freeze({ enabled: true, repo: 'ashlrai/ashlr-hub', maxPerDay: 4, reserveUsd: 40 }),
|
|
62
|
+
});
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// HTTP contract — mounted as the 'cloud' module (verse-api.ts)
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
export const VERSE_CLOUD_PATH = '/api/verse/cloud';
|
|
67
|
+
export const VERSE_CLOUD_LAUNCH_PATH = '/api/verse/cloud/launch';
|
|
68
|
+
export const VERSE_CLOUD_BUDGET_PATH = '/api/verse/cloud/budget';
|
|
69
|
+
export const VERSE_CLOUD_REFRESH_PATH = '/api/verse/cloud/refresh';
|
|
70
|
+
export const VERSE_CLOUD_IMPROVE_PATH = '/api/verse/cloud/improve';
|
|
71
|
+
/** POST `${VERSE_CLOUD_TASKS_PATH}/<id>/dismiss` */
|
|
72
|
+
export const VERSE_CLOUD_TASKS_PATH = '/api/verse/cloud/tasks';
|
|
73
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +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;AAkBpE,MAAM,CAAC,MAAM,qBAAqB,GAA8B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AA6F1G,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"id":"preparation-measurement-v1","files":[{"name":"preparation-bridge.mjs","digest":"
|
|
1
|
+
{"schemaVersion":1,"id":"preparation-measurement-v1","files":[{"name":"preparation-bridge.mjs","digest":"a152d75de89c59fc6af920a15661a7ce34a726fd655afc5c3ac0c38d7adbccd6"},{"name":"preparation-verification-activity.mjs","digest":"bf0eb9f5cc3f059b6ae2b4075ba5934103511c1eed3e3bed2e398d07ed4ac2cf"},{"name":"preparation-verification-child.mjs","digest":"f89798b6b43006c72e00f53a2fabea8b27c121d4f4a55e081783974851b0ef37"},{"name":"preparation-verification-controller.mjs","digest":"4c7e80cb73a7f3b6df7a40301544273e9d08cdb28ee4d904223ae4e029c873bf"},{"name":"preparation-verification-fixtures.mjs","digest":"929b69440637b4f6ce342a5b38cff2182da8e108dc8ab69daae4d4260a2475a6"},{"name":"preparation-verification-native.mjs","digest":"f61520b2dc6d3fb6d7e99afc167865ecefd0bb548df307166c32e2cac4787a5c"},{"name":"preparation-verification-protocol.mjs","digest":"9b9664097862c2391d0d9c12060905517a285e1fb8862e079e880bcb2ebb56c6"},{"name":"preparation-verification-tool.mjs","digest":"5e42f135f463c13f777e2ceef6751fabd252a02c2c11266dac550f13713e33e3"},{"name":"preparation-verification.mjs","digest":"f228f7767bb21fc49deb44a69632a644a88ecd71e75d1d61a00d8ba278eebd97"}]}
|