@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.
Files changed (471) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +343 -82
  3. package/dist/authority-surface.json +80 -15
  4. package/dist/build-identity.json +2 -2
  5. package/dist/cli/cloud.d.ts +39 -0
  6. package/dist/cli/cloud.js +448 -0
  7. package/dist/cli/cloud.js.map +1 -0
  8. package/dist/cli/completions.js +4 -0
  9. package/dist/cli/completions.js.map +1 -1
  10. package/dist/cli/help.js +2 -0
  11. package/dist/cli/help.js.map +1 -1
  12. package/dist/cli/index.d.ts +1 -0
  13. package/dist/cli/index.js +10 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/core/cloud/backlog.d.ts +17 -0
  16. package/dist/core/cloud/backlog.js +177 -0
  17. package/dist/core/cloud/backlog.js.map +1 -0
  18. package/dist/core/cloud/budget.d.ts +19 -0
  19. package/dist/core/cloud/budget.js +99 -0
  20. package/dist/core/cloud/budget.js.map +1 -0
  21. package/dist/core/cloud/checkout.d.ts +41 -0
  22. package/dist/core/cloud/checkout.js +168 -0
  23. package/dist/core/cloud/checkout.js.map +1 -0
  24. package/dist/core/cloud/cloud-api.d.ts +86 -0
  25. package/dist/core/cloud/cloud-api.js +599 -0
  26. package/dist/core/cloud/cloud-api.js.map +1 -0
  27. package/dist/core/cloud/delivery-contract.d.ts +25 -0
  28. package/dist/core/cloud/delivery-contract.js +138 -0
  29. package/dist/core/cloud/delivery-contract.js.map +1 -0
  30. package/dist/core/cloud/improvement-backlog.d.ts +11 -0
  31. package/dist/core/cloud/improvement-backlog.js +26 -0
  32. package/dist/core/cloud/improvement-backlog.js.map +1 -0
  33. package/dist/core/cloud/launcher.d.ts +68 -0
  34. package/dist/core/cloud/launcher.js +312 -0
  35. package/dist/core/cloud/launcher.js.map +1 -0
  36. package/dist/core/cloud/service.d.ts +51 -0
  37. package/dist/core/cloud/service.js +215 -0
  38. package/dist/core/cloud/service.js.map +1 -0
  39. package/dist/core/cloud/store.d.ts +41 -0
  40. package/dist/core/cloud/store.js +278 -0
  41. package/dist/core/cloud/store.js.map +1 -0
  42. package/dist/core/cloud/tracker.d.ts +30 -0
  43. package/dist/core/cloud/tracker.js +152 -0
  44. package/dist/core/cloud/tracker.js.map +1 -0
  45. package/dist/core/cloud/types.d.ts +233 -0
  46. package/dist/core/cloud/types.js +73 -0
  47. package/dist/core/cloud/types.js.map +1 -0
  48. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  49. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +5 -4
  50. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +4 -3
  51. package/dist/core/universe/campaign.js +9 -1
  52. package/dist/core/universe/campaign.js.map +1 -1
  53. package/dist/core/universe/runner.d.ts +3 -0
  54. package/dist/core/universe/runner.js +7 -3
  55. package/dist/core/universe/runner.js.map +1 -1
  56. package/dist/core/verse/activity-api.d.ts +3 -1
  57. package/dist/core/verse/activity-api.js +16 -1
  58. package/dist/core/verse/activity-api.js.map +1 -1
  59. package/dist/core/verse/activity.d.ts +7 -0
  60. package/dist/core/verse/activity.js +23 -0
  61. package/dist/core/verse/activity.js.map +1 -1
  62. package/dist/core/verse/compaction-point.d.ts +55 -0
  63. package/dist/core/verse/compaction-point.js +75 -0
  64. package/dist/core/verse/compaction-point.js.map +1 -0
  65. package/dist/core/verse/context-math.d.ts +1 -38
  66. package/dist/core/verse/context-math.js +5 -59
  67. package/dist/core/verse/context-math.js.map +1 -1
  68. package/dist/core/verse/verse-api.d.ts +1 -1
  69. package/dist/core/verse/verse-api.js +2 -0
  70. package/dist/core/verse/verse-api.js.map +1 -1
  71. package/dist/core/vision/leader-cloud.d.ts +63 -0
  72. package/dist/core/vision/leader-cloud.js +134 -0
  73. package/dist/core/vision/leader-cloud.js.map +1 -0
  74. package/dist/core/vision/leader.d.ts +6 -0
  75. package/dist/core/vision/leader.js +12 -1
  76. package/dist/core/vision/leader.js.map +1 -1
  77. package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.js → ActionMenu-_DhtX2gO.js} +2 -2
  78. package/dist/core/web/public/next/assets/{ActionMenu-BBB7VYjz.js.map → ActionMenu-_DhtX2gO.js.map} +1 -1
  79. package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js +2 -0
  80. package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js.map +1 -0
  81. package/dist/core/web/public/next/assets/App-BAywyjE8.js +7 -0
  82. package/dist/core/web/public/next/assets/{App-CbDCLAxn.js.map → App-BAywyjE8.js.map} +1 -1
  83. package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js +2 -0
  84. package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js.map +1 -0
  85. package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.js → AreaTrend-CblDqC8Q.js} +2 -2
  86. package/dist/core/web/public/next/assets/{AreaTrend-BgnK0wAy.js.map → AreaTrend-CblDqC8Q.js.map} +1 -1
  87. package/dist/core/web/public/next/assets/AutonomySection-D3d8lYO3.js +2 -0
  88. package/dist/core/web/public/next/assets/{AutonomySection-BF5UCsMv.js.map → AutonomySection-D3d8lYO3.js.map} +1 -1
  89. package/dist/core/web/public/next/assets/BranchBar-DU0jAV1E.js +2 -0
  90. package/dist/core/web/public/next/assets/{BranchBar-nfSb59Kv.js.map → BranchBar-DU0jAV1E.js.map} +1 -1
  91. package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js → BudgetControl-Mm1ZL4u6.js} +2 -2
  92. package/dist/core/web/public/next/assets/{BudgetControl-BESM12dO.js.map → BudgetControl-Mm1ZL4u6.js.map} +1 -1
  93. package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js → BurnDown-C1fgcFqo.js} +2 -2
  94. package/dist/core/web/public/next/assets/{BurnDown-D1AfskPT.js.map → BurnDown-C1fgcFqo.js.map} +1 -1
  95. package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.js → Button-DqgLUZvd.js} +2 -2
  96. package/dist/core/web/public/next/assets/{Button-Cr_qkQEc.js.map → Button-DqgLUZvd.js.map} +1 -1
  97. package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js +2 -0
  98. package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js.map +1 -0
  99. package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js +3 -0
  100. package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js.map +1 -0
  101. package/dist/core/web/public/next/assets/CloudBudgetForm-2OW38o_C.js +2 -0
  102. package/dist/core/web/public/next/assets/CloudBudgetForm-2OW38o_C.js.map +1 -0
  103. package/dist/core/web/public/next/assets/CommandPalette-C5w2o1-r.js +2 -0
  104. package/dist/core/web/public/next/assets/{CommandPalette-lLV-OR63.js.map → CommandPalette-C5w2o1-r.js.map} +1 -1
  105. package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js +2 -0
  106. package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js.map +1 -0
  107. package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js +2 -0
  108. package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js.map +1 -0
  109. package/dist/core/web/public/next/assets/ConfirmDialog-Dx15x0Ho.css +1 -0
  110. package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js +2 -0
  111. package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js.map +1 -0
  112. package/dist/core/web/public/next/assets/Dialog-tQ8kFulD.css +1 -0
  113. package/dist/core/web/public/next/assets/{DiffPane-BVxhK-cy.js → DiffPane-DpqRUtCx.js} +2 -2
  114. package/dist/core/web/public/next/assets/{DiffPane-BVxhK-cy.js.map → DiffPane-DpqRUtCx.js.map} +1 -1
  115. package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.js → DiffViewer-CoV5-nUf.js} +2 -2
  116. package/dist/core/web/public/next/assets/{DiffViewer-yCdw9J-Y.js.map → DiffViewer-CoV5-nUf.js.map} +1 -1
  117. package/dist/core/web/public/next/assets/DockHost-C0Pq7Jak.js +2 -0
  118. package/dist/core/web/public/next/assets/{DockHost-BZReKwos.js.map → DockHost-C0Pq7Jak.js.map} +1 -1
  119. package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js → EmptyState-DYW29ncw.js} +2 -2
  120. package/dist/core/web/public/next/assets/{EmptyState-D1GDxVZy.js.map → EmptyState-DYW29ncw.js.map} +1 -1
  121. package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.js → Epistemic-DVx6oHzp.js} +2 -2
  122. package/dist/core/web/public/next/assets/{Epistemic-DRp4dBfB.js.map → Epistemic-DVx6oHzp.js.map} +1 -1
  123. package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js +3 -0
  124. package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js.map +1 -0
  125. package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.js → Funnel-DxiGqJrt.js} +2 -2
  126. package/dist/core/web/public/next/assets/{Funnel-zvDj3He4.js.map → Funnel-DxiGqJrt.js.map} +1 -1
  127. package/dist/core/web/public/next/assets/GearTray-C3I89sIt.js +2 -0
  128. package/dist/core/web/public/next/assets/{GearTray-CkviqjYr.js.map → GearTray-C3I89sIt.js.map} +1 -1
  129. package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.js → GrowthSection-C3m2bPEz.js} +2 -2
  130. package/dist/core/web/public/next/assets/{GrowthSection-Bg5sW0jI.js.map → GrowthSection-C3m2bPEz.js.map} +1 -1
  131. package/dist/core/web/public/next/assets/HandoffDialog-Bjb96a0N.js +2 -0
  132. package/dist/core/web/public/next/assets/{HandoffDialog-DcPj1ri9.js.map → HandoffDialog-Bjb96a0N.js.map} +1 -1
  133. package/dist/core/web/public/next/assets/{Input-Ci7TD96x.js → Input-ekTehVaH.js} +2 -2
  134. package/dist/core/web/public/next/assets/{Input-Ci7TD96x.js.map → Input-ekTehVaH.js.map} +1 -1
  135. package/dist/core/web/public/next/assets/LeaderCard-85VBbbaZ.js +2 -0
  136. package/dist/core/web/public/next/assets/{LeaderCard-BSFTlMRF.js.map → LeaderCard-85VBbbaZ.js.map} +1 -1
  137. package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.js → MatrixHeatmap-Bo8j0QPC.js} +2 -2
  138. package/dist/core/web/public/next/assets/{MatrixHeatmap-DojKZe9L.js.map → MatrixHeatmap-Bo8j0QPC.js.map} +1 -1
  139. package/dist/core/web/public/next/assets/McpSection-DvHFaVyp.js +2 -0
  140. package/dist/core/web/public/next/assets/{McpSection-CvcYu1X_.js.map → McpSection-DvHFaVyp.js.map} +1 -1
  141. package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js → MessageMarkdown-fsY_ltVa.js} +3 -3
  142. package/dist/core/web/public/next/assets/{MessageMarkdown-BrLCrb73.js.map → MessageMarkdown-fsY_ltVa.js.map} +1 -1
  143. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js → MessageMarkdownRenderer-DDdtu82l.js} +2 -2
  144. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CjmdBw2p.js.map → MessageMarkdownRenderer-DDdtu82l.js.map} +1 -1
  145. package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.js → Meter-CeGDXdDM.js} +2 -2
  146. package/dist/core/web/public/next/assets/{Meter-DTHbmhQg.js.map → Meter-CeGDXdDM.js.map} +1 -1
  147. package/dist/core/web/public/next/assets/MindSection-CDVhHvXl.js +2 -0
  148. package/dist/core/web/public/next/assets/{MindSection-DcO9fmYe.js.map → MindSection-CDVhHvXl.js.map} +1 -1
  149. package/dist/core/web/public/next/assets/MutationTokenDialog-CrfJ0PdD.css +1 -0
  150. package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js +2 -0
  151. package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js.map +1 -0
  152. package/dist/core/web/public/next/assets/NeedsYouDrawer-6AuN0BF3.js +2 -0
  153. package/dist/core/web/public/next/assets/{NeedsYouDrawer-hiTINupk.js.map → NeedsYouDrawer-6AuN0BF3.js.map} +1 -1
  154. package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.js → NeedsYouList-ChnRmbSk.js} +2 -2
  155. package/dist/core/web/public/next/assets/{NeedsYouList-B4Z37Phx.js.map → NeedsYouList-ChnRmbSk.js.map} +1 -1
  156. package/dist/core/web/public/next/assets/NewChatDialog-B06E7sqg.js +3 -0
  157. package/dist/core/web/public/next/assets/{NewChatDialog-utSckh7C.js.map → NewChatDialog-B06E7sqg.js.map} +1 -1
  158. package/dist/core/web/public/next/assets/OnboardingFlow-C2M3zov9.js +2 -0
  159. package/dist/core/web/public/next/assets/{OnboardingFlow-7N3YSUHN.js.map → OnboardingFlow-C2M3zov9.js.map} +1 -1
  160. package/dist/core/web/public/next/assets/PreviewPane-Bd6HsX1k.js +2 -0
  161. package/dist/core/web/public/next/assets/{PreviewPane-CqzkaAjG.js.map → PreviewPane-Bd6HsX1k.js.map} +1 -1
  162. package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js +2 -0
  163. package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js.map +1 -0
  164. package/dist/core/web/public/next/assets/RailStatus-CctCuuLy.js +2 -0
  165. package/dist/core/web/public/next/assets/{RailStatus-sZhApA8k.js.map → RailStatus-CctCuuLy.js.map} +1 -1
  166. package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.js → RefreshIndicator-CKY5BGdD.js} +2 -2
  167. package/dist/core/web/public/next/assets/{RefreshIndicator-C1uQIegT.js.map → RefreshIndicator-CKY5BGdD.js.map} +1 -1
  168. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CM_8pJs6.css → ResourcePoolConsoleApp-BX9JLkT4.css} +1 -1
  169. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-DXjjV6Sh.js → ResourcePoolConsoleApp-CspIsW_G.js} +5 -5
  170. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-DXjjV6Sh.js.map → ResourcePoolConsoleApp-CspIsW_G.js.map} +1 -1
  171. package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js +3 -0
  172. package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js.map +1 -0
  173. package/dist/core/web/public/next/assets/ResourcesChrome-uZEqC2EM.css +1 -0
  174. package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js +2 -0
  175. package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js.map +1 -0
  176. package/dist/core/web/public/next/assets/ResourcesDrawer-CSKIO_wZ.css +1 -0
  177. package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js +2 -0
  178. package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js.map +1 -0
  179. package/dist/core/web/public/next/assets/RouteErrorBoundary-DdxhTdZ6.css +1 -0
  180. package/dist/core/web/public/next/assets/RunInCloudAction-_juw4EXd.js +2 -0
  181. package/dist/core/web/public/next/assets/RunInCloudAction-_juw4EXd.js.map +1 -0
  182. package/dist/core/web/public/next/assets/SeatSelector-D_YXvkPy.js +3 -0
  183. package/dist/core/web/public/next/assets/{SeatSelector-CT92PqM_.js.map → SeatSelector-D_YXvkPy.js.map} +1 -1
  184. package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js → Segmented-DnKP6rr7.js} +2 -2
  185. package/dist/core/web/public/next/assets/{Segmented-BMvq-FfD.js.map → Segmented-DnKP6rr7.js.map} +1 -1
  186. package/dist/core/web/public/next/assets/{Select-DkdeoSQn.js → Select-DlbUupTX.js} +2 -2
  187. package/dist/core/web/public/next/assets/{Select-DkdeoSQn.js.map → Select-DlbUupTX.js.map} +1 -1
  188. package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js +2 -0
  189. package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js.map +1 -0
  190. package/dist/core/web/public/next/assets/SessionGate-DvMpXNpJ.css +1 -0
  191. package/dist/core/web/public/next/assets/SessionInsightChip-C33-k-Q5.js +2 -0
  192. package/dist/core/web/public/next/assets/{SessionInsightChip-CwlakUYU.js.map → SessionInsightChip-C33-k-Q5.js.map} +1 -1
  193. package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.js → SessionSearch-DhhR9Csg.js} +2 -2
  194. package/dist/core/web/public/next/assets/{SessionSearch-DFByh2NZ.js.map → SessionSearch-DhhR9Csg.js.map} +1 -1
  195. package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js +2 -0
  196. package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js.map +1 -0
  197. package/dist/core/web/public/next/assets/Sheet-BvNYOYv5.js +2 -0
  198. package/dist/core/web/public/next/assets/{Sheet-C7APkGPt.js.map → Sheet-BvNYOYv5.js.map} +1 -1
  199. package/dist/core/web/public/next/assets/ShortcutsOverlay-1nUBVO-Z.js +2 -0
  200. package/dist/core/web/public/next/assets/{ShortcutsOverlay-ZPyXUS_I.js.map → ShortcutsOverlay-1nUBVO-Z.js.map} +1 -1
  201. package/dist/core/web/public/next/assets/Sidebar-YrVvvBNM.js +3 -0
  202. package/dist/core/web/public/next/assets/{Sidebar-Chsgazmk.js.map → Sidebar-YrVvvBNM.js.map} +1 -1
  203. package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js → Slider-B2c-dbQb.js} +2 -2
  204. package/dist/core/web/public/next/assets/{Slider-B0kjW7cd.js.map → Slider-B2c-dbQb.js.map} +1 -1
  205. package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js → StatusBadge-Q9YYkijx.js} +2 -2
  206. package/dist/core/web/public/next/assets/{StatusBadge-wv4e6f8b.js.map → StatusBadge-Q9YYkijx.js.map} +1 -1
  207. package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js → StepBand-Ci-C0GUG.js} +2 -2
  208. package/dist/core/web/public/next/assets/{StepBand-Db8WPw8J.js.map → StepBand-Ci-C0GUG.js.map} +1 -1
  209. package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js → Surface-DBovMq4P.js} +2 -2
  210. package/dist/core/web/public/next/assets/{Surface-BkDrQ4t3.js.map → Surface-DBovMq4P.js.map} +1 -1
  211. package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js → Swimlane-Cdc4TqDe.js} +2 -2
  212. package/dist/core/web/public/next/assets/{Swimlane-Dcve56cP.js.map → Swimlane-Cdc4TqDe.js.map} +1 -1
  213. package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js → Switch-CUrvzO2k.js} +2 -2
  214. package/dist/core/web/public/next/assets/{Switch-DamlpSMY.js.map → Switch-CUrvzO2k.js.map} +1 -1
  215. package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.js → Tag-Bv8u6APt.js} +2 -2
  216. package/dist/core/web/public/next/assets/{Tag-Cs4tudBN.js.map → Tag-Bv8u6APt.js.map} +1 -1
  217. package/dist/core/web/public/next/assets/TerminalPane-BE4Xlqi5.js +7 -0
  218. package/dist/core/web/public/next/assets/{TerminalPane-BDkKFych.js.map → TerminalPane-BE4Xlqi5.js.map} +1 -1
  219. package/dist/core/web/public/next/assets/UniverseConsoleApp-BGwejf0m.js +2 -0
  220. package/dist/core/web/public/next/assets/{UniverseConsoleApp-BE72VyBL.js.map → UniverseConsoleApp-BGwejf0m.js.map} +1 -1
  221. package/dist/core/web/public/next/assets/{UniverseConsoleApp-Dh7A-hLD.css → UniverseConsoleApp-DfuT-wFw.css} +1 -1
  222. package/dist/core/web/public/next/assets/{UniverseView-BbmYY2P4.js → UniverseView-CgKa-WXC.js} +4 -4
  223. package/dist/core/web/public/next/assets/{UniverseView-BbmYY2P4.js.map → UniverseView-CgKa-WXC.js.map} +1 -1
  224. package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js +2 -0
  225. package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js.map +1 -0
  226. package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js +3 -0
  227. package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js.map +1 -0
  228. package/dist/core/web/public/next/assets/VerseConsoleApp-Cxqr-3qc.css +1 -0
  229. package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js +10 -0
  230. package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js.map +1 -0
  231. package/dist/core/web/public/next/assets/Workspace-Dwri2jFJ.css +1 -0
  232. package/dist/core/web/public/next/assets/actions-MtxBGS5B.js +2 -0
  233. package/dist/core/web/public/next/assets/{actions-BnjZy8a-.js.map → actions-MtxBGS5B.js.map} +1 -1
  234. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +2 -0
  235. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +1 -0
  236. package/dist/core/web/public/next/assets/budget-queries-CP7hgR-p.js +2 -0
  237. package/dist/core/web/public/next/assets/{budget-queries-Cp6vO7FH.js.map → budget-queries-CP7hgR-p.js.map} +1 -1
  238. package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js → capacity-strip-model-fHfu5cph.js} +2 -2
  239. package/dist/core/web/public/next/assets/{capacity-strip-model-9-Yb211u.js.map → capacity-strip-model-fHfu5cph.js.map} +1 -1
  240. package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js → charts-Bis9WSiS.js} +2 -2
  241. package/dist/core/web/public/next/assets/{charts-BmbKhjqw.js.map → charts-Bis9WSiS.js.map} +1 -1
  242. package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +1 -0
  243. package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js +2 -0
  244. package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js.map +1 -0
  245. package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js +2 -0
  246. package/dist/core/web/public/next/assets/cloud.module-DoFnr8ZH.js.map +1 -0
  247. package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.js → command-bus-CMvbYP5K.js} +2 -2
  248. package/dist/core/web/public/next/assets/{command-bus-DHJJLWh8.js.map → command-bus-CMvbYP5K.js.map} +1 -1
  249. package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +2 -0
  250. package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +1 -0
  251. package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js +2 -0
  252. package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js.map +1 -0
  253. package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js → composer-keys-su0g1h9o.js} +2 -2
  254. package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js.map → composer-keys-su0g1h9o.js.map} +1 -1
  255. package/dist/core/web/public/next/assets/context-model-Ci3Ch9t5.js +2 -0
  256. package/dist/core/web/public/next/assets/{context-model-DeJ28uSZ.js.map → context-model-Ci3Ch9t5.js.map} +1 -1
  257. package/dist/core/web/public/next/assets/context-model-CjiJTnf1.js +2 -0
  258. package/dist/core/web/public/next/assets/{context-model-BGznyHNQ.js.map → context-model-CjiJTnf1.js.map} +1 -1
  259. package/dist/core/web/public/next/assets/context-queries-BDXT6LQ3.js +2 -0
  260. package/dist/core/web/public/next/assets/{context-queries-_mEgy4eg.js.map → context-queries-BDXT6LQ3.js.map} +1 -1
  261. package/dist/core/web/public/next/assets/control-queries-Dv-h1Clu.js +2 -0
  262. package/dist/core/web/public/next/assets/{control-queries-C4TG8blN.js.map → control-queries-Dv-h1Clu.js.map} +1 -1
  263. package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js → dock-icons-t--Eugrd.js} +2 -2
  264. package/dist/core/web/public/next/assets/{dock-icons-BB7Fi6hT.js.map → dock-icons-t--Eugrd.js.map} +1 -1
  265. package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js → dock-store-qIu7kSQE.js} +2 -2
  266. package/dist/core/web/public/next/assets/{dock-store-CdHQRP8s.js.map → dock-store-qIu7kSQE.js.map} +1 -1
  267. package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.js → fleet-model-IRbwfhkR.js} +2 -2
  268. package/dist/core/web/public/next/assets/{fleet-model-B4FKC7fH.js.map → fleet-model-IRbwfhkR.js.map} +1 -1
  269. package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js +2 -0
  270. package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js.map +1 -0
  271. package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js +2 -0
  272. package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js.map +1 -0
  273. package/dist/core/web/public/next/assets/{format-lW58rL2y.js → format-CaMmVQCn.js} +2 -2
  274. package/dist/core/web/public/next/assets/{format-lW58rL2y.js.map → format-CaMmVQCn.js.map} +1 -1
  275. package/dist/core/web/public/next/assets/git-model-B4S_GUNA.js +5 -0
  276. package/dist/core/web/public/next/assets/{git-model-DaGw1SzS.js.map → git-model-B4S_GUNA.js.map} +1 -1
  277. package/dist/core/web/public/next/assets/global-BkNl4e6E.js +2 -0
  278. package/dist/core/web/public/next/assets/global-BkNl4e6E.js.map +1 -0
  279. package/dist/core/web/public/next/assets/global-BlI2BYa1.css +1 -0
  280. package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js +3 -0
  281. package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js.map +1 -0
  282. package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js +2 -0
  283. package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js.map +1 -0
  284. package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js +2 -0
  285. package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js.map +1 -0
  286. package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js +2 -0
  287. package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js.map +1 -0
  288. package/dist/core/web/public/next/assets/{index-Dk8R-3a7.js → index-DbDw9UAs.js} +3 -3
  289. package/dist/core/web/public/next/assets/{index-Dk8R-3a7.js.map → index-DbDw9UAs.js.map} +1 -1
  290. package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js → live-model-DEwrl7_A.js} +2 -2
  291. package/dist/core/web/public/next/assets/{live-model-44wEU6I8.js.map → live-model-DEwrl7_A.js.map} +1 -1
  292. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +2 -0
  293. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +1 -0
  294. package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.js → mind.module-CLhqMQak.js} +2 -2
  295. package/dist/core/web/public/next/assets/{mind.module-BOABBdi_.js.map → mind.module-CLhqMQak.js.map} +1 -1
  296. package/dist/core/web/public/next/assets/mutations-Kvzsg-iK.js +2 -0
  297. package/dist/core/web/public/next/assets/{mutations-DjXM3IDg.js.map → mutations-Kvzsg-iK.js.map} +1 -1
  298. package/dist/core/web/public/next/assets/nav-C0IunEYF.js +2 -0
  299. package/dist/core/web/public/next/assets/nav-C0IunEYF.js.map +1 -0
  300. package/dist/core/web/public/next/assets/overnight-queries-C_AfcL7q.js +2 -0
  301. package/dist/core/web/public/next/assets/{overnight-queries-Be_eossf.js.map → overnight-queries-C_AfcL7q.js.map} +1 -1
  302. package/dist/core/web/public/next/assets/preloaded-CctOitLu.js +2 -0
  303. package/dist/core/web/public/next/assets/preloaded-CctOitLu.js.map +1 -0
  304. package/dist/core/web/public/next/assets/primitives-CbAGCNKt.js +1 -0
  305. package/dist/core/web/public/next/assets/{queries-CYEVCq5r.js → queries-THD05gHP.js} +2 -2
  306. package/dist/core/web/public/next/assets/{queries-CYEVCq5r.js.map → queries-THD05gHP.js.map} +1 -1
  307. package/dist/core/web/public/next/assets/reasoning-pref-BVPu0SME.js +2 -0
  308. package/dist/core/web/public/next/assets/{reasoning-pref-a_ZP6GzU.js.map → reasoning-pref-BVPu0SME.js.map} +1 -1
  309. package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js +2 -0
  310. package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js.map +1 -0
  311. package/dist/core/web/public/next/assets/seat-subscription-CR_VylsK.js +2 -0
  312. package/dist/core/web/public/next/assets/{seat-subscription-CRigL-GE.js.map → seat-subscription-CR_VylsK.js.map} +1 -1
  313. package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js → section-visibility-B0xXUQJ0.js} +2 -2
  314. package/dist/core/web/public/next/assets/{section-visibility-u7q-Q9AA.js.map → section-visibility-B0xXUQJ0.js.map} +1 -1
  315. package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.js → sidebar-model-C5wVXGpb.js} +2 -2
  316. package/dist/core/web/public/next/assets/{sidebar-model-i4WRuQ6j.js.map → sidebar-model-C5wVXGpb.js.map} +1 -1
  317. package/dist/core/web/public/next/assets/slots-DDd8cEoh.js +3 -0
  318. package/dist/core/web/public/next/assets/{slots-CV9ZuLQU.js.map → slots-DDd8cEoh.js.map} +1 -1
  319. package/dist/core/web/public/next/assets/surface-data-BFxAlefI.js +2 -0
  320. package/dist/core/web/public/next/assets/{surface-data-DLvmUX9z.js.map → surface-data-BFxAlefI.js.map} +1 -1
  321. package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js +2 -0
  322. package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js.map +1 -0
  323. package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js → tasks-model-DvkWveXs.js} +2 -2
  324. package/dist/core/web/public/next/assets/{tasks-model-DWs5u9RO.js.map → tasks-model-DvkWveXs.js.map} +1 -1
  325. package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js → terminal-icons-Dp6pJgV2.js} +2 -2
  326. package/dist/core/web/public/next/assets/{terminal-icons-Ct9cZsEK.js.map → terminal-icons-Dp6pJgV2.js.map} +1 -1
  327. package/dist/core/web/public/next/assets/types-D5XOdyw8.js +2 -0
  328. package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -0
  329. package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.js → usage-queries-CUTmnegA.js} +2 -2
  330. package/dist/core/web/public/next/assets/{usage-queries-CI_y9oWZ.js.map → usage-queries-CUTmnegA.js.map} +1 -1
  331. package/dist/core/web/public/next/assets/use-guarded-action-UCX2u1t1.js +2 -0
  332. package/dist/core/web/public/next/assets/{use-guarded-action-DVCtLzSo.js.map → use-guarded-action-UCX2u1t1.js.map} +1 -1
  333. package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.js → use-ticker-OXAjob3y.js} +2 -2
  334. package/dist/core/web/public/next/assets/{use-ticker-C3LQ2IYs.js.map → use-ticker-OXAjob3y.js.map} +1 -1
  335. package/dist/core/web/public/next/assets/use-token-gate-CDDRAoKH.js +2 -0
  336. package/dist/core/web/public/next/assets/{use-token-gate-B5gOFkeH.js.map → use-token-gate-CDDRAoKH.js.map} +1 -1
  337. package/dist/core/web/public/next/assets/useChartWidth-BW6SwYIK.css +1 -0
  338. package/dist/core/web/public/next/assets/useChartWidth-D9M7kUw7.js +2 -0
  339. package/dist/core/web/public/next/assets/{useChartWidth-0APW0BR3.js.map → useChartWidth-D9M7kUw7.js.map} +1 -1
  340. package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.js → useSeatsRefresh-B2dCVcj9.js} +2 -2
  341. package/dist/core/web/public/next/assets/{useSeatsRefresh-BN8bso-n.js.map → useSeatsRefresh-B2dCVcj9.js.map} +1 -1
  342. package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js +2 -0
  343. package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js.map +1 -0
  344. package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js +2 -0
  345. package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js.map +1 -0
  346. package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js +2 -0
  347. package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js.map +1 -0
  348. package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +3 -0
  349. package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +1 -0
  350. package/dist/core/web/public/next/assets/verse-ui-store-D7YXi63q.js +3 -0
  351. package/dist/core/web/public/next/assets/{verse-ui-store-Dy4HuDBV.js.map → verse-ui-store-D7YXi63q.js.map} +1 -1
  352. package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js → viewport-BYGH5EgA.js} +2 -2
  353. package/dist/core/web/public/next/assets/{viewport-DDoJ_xVq.js.map → viewport-BYGH5EgA.js.map} +1 -1
  354. package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js → warmup-AsqwWCUi.js} +3 -3
  355. package/dist/core/web/public/next/assets/{warmup-BsL2LdR-.js.map → warmup-AsqwWCUi.js.map} +1 -1
  356. package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.js → workspace-model-CXorJr0G.js} +2 -2
  357. package/dist/core/web/public/next/assets/{workspace-model-Dd3LmIym.js.map → workspace-model-CXorJr0G.js.map} +1 -1
  358. package/dist/core/web/public/next/index.html +1 -1
  359. package/dist/release-dependency-inventory.json +1 -1
  360. package/package.json +5 -2
  361. package/dist/cli/activation.d.ts +0 -41
  362. package/dist/cli/activation.js +0 -485
  363. package/dist/cli/activation.js.map +0 -1
  364. package/dist/core/fleet/generated-repair-resolution.d.ts +0 -36
  365. package/dist/core/fleet/generated-repair-resolution.js +0 -245
  366. package/dist/core/fleet/generated-repair-resolution.js.map +0 -1
  367. package/dist/core/local-runtime/llama/port.d.ts +0 -17
  368. package/dist/core/local-runtime/llama/port.js +0 -47
  369. package/dist/core/local-runtime/llama/port.js.map +0 -1
  370. package/dist/core/local-runtime/llama/proxy-host.d.ts +0 -54
  371. package/dist/core/local-runtime/llama/proxy-host.js +0 -159
  372. package/dist/core/local-runtime/llama/proxy-host.js.map +0 -1
  373. package/dist/core/local-runtime/llama/proxy-process.d.ts +0 -148
  374. package/dist/core/local-runtime/llama/proxy-process.js +0 -250
  375. package/dist/core/local-runtime/llama/proxy-process.js.map +0 -1
  376. package/dist/core/local-runtime/llama/proxy-record.d.ts +0 -40
  377. package/dist/core/local-runtime/llama/proxy-record.js +0 -133
  378. package/dist/core/local-runtime/llama/proxy-record.js.map +0 -1
  379. package/dist/core/local-runtime/llama/proxy-supervisor.d.ts +0 -118
  380. package/dist/core/local-runtime/llama/proxy-supervisor.js +0 -511
  381. package/dist/core/local-runtime/llama/proxy-supervisor.js.map +0 -1
  382. package/dist/core/web/public/next/assets/Advanced-xVYFAeA8.js +0 -2
  383. package/dist/core/web/public/next/assets/Advanced-xVYFAeA8.js.map +0 -1
  384. package/dist/core/web/public/next/assets/App-CbDCLAxn.js +0 -7
  385. package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js +0 -2
  386. package/dist/core/web/public/next/assets/AppsSection-B5HWJi9I.js.map +0 -1
  387. package/dist/core/web/public/next/assets/AutonomySection-BF5UCsMv.js +0 -2
  388. package/dist/core/web/public/next/assets/BranchBar-nfSb59Kv.js +0 -2
  389. package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js +0 -2
  390. package/dist/core/web/public/next/assets/CapacityStrip-DqqYnLek.js.map +0 -1
  391. package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js +0 -3
  392. package/dist/core/web/public/next/assets/ChatSection-DoqjyVoj.js.map +0 -1
  393. package/dist/core/web/public/next/assets/CommandPalette-lLV-OR63.js +0 -2
  394. package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js +0 -2
  395. package/dist/core/web/public/next/assets/CommandSection-fiZ4DJpM.js.map +0 -1
  396. package/dist/core/web/public/next/assets/DockHost-BZReKwos.js +0 -2
  397. package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js +0 -3
  398. package/dist/core/web/public/next/assets/FleetSection-rPLy_NPo.js.map +0 -1
  399. package/dist/core/web/public/next/assets/GearTray-CkviqjYr.js +0 -2
  400. package/dist/core/web/public/next/assets/HandoffDialog-DcPj1ri9.js +0 -2
  401. package/dist/core/web/public/next/assets/LeaderCard-BSFTlMRF.js +0 -2
  402. package/dist/core/web/public/next/assets/McpSection-CvcYu1X_.js +0 -2
  403. package/dist/core/web/public/next/assets/MindSection-DcO9fmYe.js +0 -2
  404. package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js +0 -2
  405. package/dist/core/web/public/next/assets/MutationTokenDialog-Cqn2uPV6.js.map +0 -1
  406. package/dist/core/web/public/next/assets/MutationTokenDialog-Cum_DqQZ.css +0 -1
  407. package/dist/core/web/public/next/assets/NeedsYouDrawer-hiTINupk.js +0 -2
  408. package/dist/core/web/public/next/assets/NewChatDialog-utSckh7C.js +0 -3
  409. package/dist/core/web/public/next/assets/OnboardingFlow-7N3YSUHN.js +0 -2
  410. package/dist/core/web/public/next/assets/PreviewPane-CqzkaAjG.js +0 -2
  411. package/dist/core/web/public/next/assets/RailStatus-sZhApA8k.js +0 -2
  412. package/dist/core/web/public/next/assets/RouteErrorBoundary-6RMd_aZg.css +0 -1
  413. package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js +0 -2
  414. package/dist/core/web/public/next/assets/RouteErrorBoundary-D1LZxQjN.js.map +0 -1
  415. package/dist/core/web/public/next/assets/SeatSelector-CT92PqM_.js +0 -3
  416. package/dist/core/web/public/next/assets/SessionInsightChip-CwlakUYU.js +0 -2
  417. package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js +0 -2
  418. package/dist/core/web/public/next/assets/SettingsSection-DgSaHFK4.js.map +0 -1
  419. package/dist/core/web/public/next/assets/Sheet-C7APkGPt.js +0 -2
  420. package/dist/core/web/public/next/assets/ShortcutsOverlay-ZPyXUS_I.js +0 -2
  421. package/dist/core/web/public/next/assets/Sidebar-Chsgazmk.js +0 -3
  422. package/dist/core/web/public/next/assets/TerminalPane-BDkKFych.js +0 -7
  423. package/dist/core/web/public/next/assets/UniverseConsoleApp-BE72VyBL.js +0 -2
  424. package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js +0 -2
  425. package/dist/core/web/public/next/assets/UsageSection-DsC5WmLk.js.map +0 -1
  426. package/dist/core/web/public/next/assets/VerseConsoleApp-CXJWDiEM.css +0 -1
  427. package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js +0 -3
  428. package/dist/core/web/public/next/assets/VerseConsoleApp-Dq_hREXs.js.map +0 -1
  429. package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +0 -1
  430. package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js +0 -10
  431. package/dist/core/web/public/next/assets/Workspace-CKvVEPFq.js.map +0 -1
  432. package/dist/core/web/public/next/assets/actions-BnjZy8a-.js +0 -2
  433. package/dist/core/web/public/next/assets/budget-queries-Cp6vO7FH.js +0 -2
  434. package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js +0 -2
  435. package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js.map +0 -1
  436. package/dist/core/web/public/next/assets/context-model-BGznyHNQ.js +0 -2
  437. package/dist/core/web/public/next/assets/context-model-DeJ28uSZ.js +0 -2
  438. package/dist/core/web/public/next/assets/context-queries-_mEgy4eg.js +0 -2
  439. package/dist/core/web/public/next/assets/control-queries-C4TG8blN.js +0 -2
  440. package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js +0 -2
  441. package/dist/core/web/public/next/assets/dock-panes-mnIwSpRp.js.map +0 -1
  442. package/dist/core/web/public/next/assets/git-model-DaGw1SzS.js +0 -5
  443. package/dist/core/web/public/next/assets/global-DG1fmn4y.js +0 -2
  444. package/dist/core/web/public/next/assets/global-DG1fmn4y.js.map +0 -1
  445. package/dist/core/web/public/next/assets/global-_tOCFt9y.css +0 -1
  446. package/dist/core/web/public/next/assets/guarded-action--lguLXfz.js +0 -2
  447. package/dist/core/web/public/next/assets/guarded-action--lguLXfz.js.map +0 -1
  448. package/dist/core/web/public/next/assets/icons-YPgbel-I.js +0 -2
  449. package/dist/core/web/public/next/assets/icons-YPgbel-I.js.map +0 -1
  450. package/dist/core/web/public/next/assets/mutations-DjXM3IDg.js +0 -2
  451. package/dist/core/web/public/next/assets/overnight-queries-Be_eossf.js +0 -2
  452. package/dist/core/web/public/next/assets/primitives-Dl3SEQvh.js +0 -1
  453. package/dist/core/web/public/next/assets/reasoning-pref-a_ZP6GzU.js +0 -2
  454. package/dist/core/web/public/next/assets/seat-subscription-CRigL-GE.js +0 -2
  455. package/dist/core/web/public/next/assets/slots-CV9ZuLQU.js +0 -3
  456. package/dist/core/web/public/next/assets/surface-data-DLvmUX9z.js +0 -2
  457. package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js +0 -2
  458. package/dist/core/web/public/next/assets/surface-prefetch-Ct2JwXvL.js.map +0 -1
  459. package/dist/core/web/public/next/assets/use-guarded-action-DVCtLzSo.js +0 -2
  460. package/dist/core/web/public/next/assets/use-token-gate-B5gOFkeH.js +0 -2
  461. package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js +0 -2
  462. package/dist/core/web/public/next/assets/useActivity-C3R1Sudh.js.map +0 -1
  463. package/dist/core/web/public/next/assets/useChartWidth-0APW0BR3.js +0 -2
  464. package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +0 -1
  465. package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js +0 -2
  466. package/dist/core/web/public/next/assets/verse-model-yHPwjf-7.js.map +0 -1
  467. package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js +0 -2
  468. package/dist/core/web/public/next/assets/verse-queries-2PxoBISm.js.map +0 -1
  469. package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js +0 -3
  470. package/dist/core/web/public/next/assets/verse-store-DHTuZpYa.js.map +0 -1
  471. package/dist/core/web/public/next/assets/verse-ui-store-Dy4HuDBV.js +0 -3
@@ -194,6 +194,61 @@
194
194
  "sha256": "d1a8b5532c5d03ecc7835dea9b3751de7a36fbc3c13be2cdc299a8f5ef1921d0",
195
195
  "bytes": 18568
196
196
  },
197
+ {
198
+ "path": "dist/core/cloud/backlog.js",
199
+ "sha256": "7e590b92e595d0803c19432974870c06da4ffc5797f66e0d9eb2e7684069e91c",
200
+ "bytes": 8186
201
+ },
202
+ {
203
+ "path": "dist/core/cloud/budget.js",
204
+ "sha256": "68362ee6c3d7c8bbdce41d2e51383e76fd604b8a29e3a8d333eb9cce5c103e2d",
205
+ "bytes": 5034
206
+ },
207
+ {
208
+ "path": "dist/core/cloud/checkout.js",
209
+ "sha256": "23c809eac408aa8502111f9f9cf4a74b76998caab804dd600c1c2f39ed82ea69",
210
+ "bytes": 8076
211
+ },
212
+ {
213
+ "path": "dist/core/cloud/cloud-api.js",
214
+ "sha256": "f56466058c2a932af45349b2fe9d137b97e2466bea4897d271c84607c8e3cab0",
215
+ "bytes": 25620
216
+ },
217
+ {
218
+ "path": "dist/core/cloud/delivery-contract.js",
219
+ "sha256": "ea8bb76f0cb6b6731ebe1245291a3191670bdf9a8b0963ec2060b3141d8f9e2f",
220
+ "bytes": 6714
221
+ },
222
+ {
223
+ "path": "dist/core/cloud/improvement-backlog.js",
224
+ "sha256": "d6609600e539c6d3db94d91c947250e7995895dc27939d1d0c7f86604ee9d4db",
225
+ "bytes": 9462
226
+ },
227
+ {
228
+ "path": "dist/core/cloud/launcher.js",
229
+ "sha256": "a8949f1b3e5d5ebdad5e56929abda2034c4c17dd0f8ddf825fd17d2d5b3296de",
230
+ "bytes": 15055
231
+ },
232
+ {
233
+ "path": "dist/core/cloud/service.js",
234
+ "sha256": "d07028772d97533de87b6042ae9a5a60176e13538416236b84f70c93a7248e7e",
235
+ "bytes": 10730
236
+ },
237
+ {
238
+ "path": "dist/core/cloud/store.js",
239
+ "sha256": "fc56141115fbae8b3215d4fa944a572076e18a8030a619fe0d7e15f94632b307",
240
+ "bytes": 13524
241
+ },
242
+ {
243
+ "path": "dist/core/cloud/tracker.js",
244
+ "sha256": "a076198b200de95872a812d39fd10804a8bced2756a7bd382e5eec24c98a4b03",
245
+ "bytes": 6969
246
+ },
247
+ {
248
+ "path": "dist/core/cloud/types.js",
249
+ "sha256": "30b3823fea97bce3f40e28aac35bd4d9915d0eae26bfb73509a901b440adcfaa",
250
+ "bytes": 4202
251
+ },
197
252
  {
198
253
  "path": "dist/core/comms/director-context.js",
199
254
  "sha256": "f08d2887833ba4d7eb42d6ed19f15d3ffd082c44ef50d871567b0fc3ee1fe966",
@@ -2186,8 +2241,8 @@
2186
2241
  },
2187
2242
  {
2188
2243
  "path": "dist/core/universe/campaign.js",
2189
- "sha256": "0b26b7fec61b4da85ea4ebe7a301eeafbf0d624cc013890dbba3159cea83e44f",
2190
- "bytes": 18894
2244
+ "sha256": "5cce2297b8cd587090858a92d94ab5d74c2518cfe0147ff8c5a40d71729107f5",
2245
+ "bytes": 19515
2191
2246
  },
2192
2247
  {
2193
2248
  "path": "dist/core/universe/cold-verifier.js",
@@ -2461,8 +2516,8 @@
2461
2516
  },
2462
2517
  {
2463
2518
  "path": "dist/core/universe/runner.js",
2464
- "sha256": "dc77b6feb06dcd7d8608b8d0df384ce0ae1c0b9b8b9b4d20585d779e751c02cb",
2465
- "bytes": 33629
2519
+ "sha256": "2c7441abff55cae1518b50f6d664767cbd605bb3ce440d1789331f82b59f1909",
2520
+ "bytes": 33928
2466
2521
  },
2467
2522
  {
2468
2523
  "path": "dist/core/universe/search-context.js",
@@ -2561,13 +2616,13 @@
2561
2616
  },
2562
2617
  {
2563
2618
  "path": "dist/core/verse/activity-api.js",
2564
- "sha256": "95be999a7ee7238fd08c36102c9a5237c74c96bf72bbee2222ba2e3c0ca3df96",
2565
- "bytes": 13581
2619
+ "sha256": "812524849c0215f29cb60365cb5320197deaf7f47b797009805980e02443f77c",
2620
+ "bytes": 14046
2566
2621
  },
2567
2622
  {
2568
2623
  "path": "dist/core/verse/activity.js",
2569
- "sha256": "5d5b5c9974fbaf906e7b7b917b4c5351442059b49d38b291ac39e13997dccb2e",
2570
- "bytes": 30334
2624
+ "sha256": "2adf795b5d4920a9871c8cd632cdfbe48b1027a231f18b7c9eaab9dcfc91af36",
2625
+ "bytes": 31483
2571
2626
  },
2572
2627
  {
2573
2628
  "path": "dist/core/verse/adapters/claude.js",
@@ -2624,6 +2679,11 @@
2624
2679
  "sha256": "2bc584f8aa2d88c654d691a552c62f63c36da62b687443bbcffd5d9d508c6659",
2625
2680
  "bytes": 32706
2626
2681
  },
2682
+ {
2683
+ "path": "dist/core/verse/compaction-point.js",
2684
+ "sha256": "526968e0ce4b138f3cf41e47cd51a74ec7bffd0d75630f959814e54e9991bb34",
2685
+ "bytes": 3848
2686
+ },
2627
2687
  {
2628
2688
  "path": "dist/core/verse/context-fit.js",
2629
2689
  "sha256": "526164f640a353af0d92962246455b0fa86e5077811a42bcd4719c91895e0066",
@@ -2631,8 +2691,8 @@
2631
2691
  },
2632
2692
  {
2633
2693
  "path": "dist/core/verse/context-math.js",
2634
- "sha256": "892245d0d72310f90a14f72c5cd3096b3510d9a2f7358b00b0610965e4bfa5d4",
2635
- "bytes": 17912
2694
+ "sha256": "2fe62b622104619d846dc347b12c69f0331cbb94fd60f59a0e9733ce1e54966e",
2695
+ "bytes": 15497
2636
2696
  },
2637
2697
  {
2638
2698
  "path": "dist/core/verse/control-api.js",
@@ -2866,8 +2926,8 @@
2866
2926
  },
2867
2927
  {
2868
2928
  "path": "dist/core/verse/verse-api.js",
2869
- "sha256": "9417d0979eaaf1974fd849cd935d813eed566d92951a1a23484782bcd608a344",
2870
- "bytes": 89355
2929
+ "sha256": "830541b9a742edaf8ce9ee78a0ed8c528f22726d0117e3bec74340f3bfa4b394",
2930
+ "bytes": 89520
2871
2931
  },
2872
2932
  {
2873
2933
  "path": "dist/core/verse/verse-log.js",
@@ -2944,6 +3004,11 @@
2944
3004
  "sha256": "8a55d8f6ef3675573825d8d9f418f6fae9742bc0a964299765cc672803e879c9",
2945
3005
  "bytes": 84506
2946
3006
  },
3007
+ {
3008
+ "path": "dist/core/vision/leader-cloud.js",
3009
+ "sha256": "4b999d47bc2d355ae0b15c5994d53e3d3129d545d3a6c59aeebfb4e099f9e621",
3010
+ "bytes": 5893
3011
+ },
2947
3012
  {
2948
3013
  "path": "dist/core/vision/leader-memo.js",
2949
3014
  "sha256": "33170fd58336016aa4b89bbfdf808a2e6154e84fbb4b0f606ae137d6c176fcad",
@@ -2961,8 +3026,8 @@
2961
3026
  },
2962
3027
  {
2963
3028
  "path": "dist/core/vision/leader.js",
2964
- "sha256": "643134544872872a6c260f2774ecc3483d7e6726c84dc84a4e882feca8135149",
2965
- "bytes": 39571
3029
+ "sha256": "7cfa353f85882542fd4f5009d3d4ae768aed4f209b7195fd1b7ccc019b92a181",
3030
+ "bytes": 40229
2966
3031
  },
2967
3032
  {
2968
3033
  "path": "dist/core/vision/mission-graph.js",
@@ -3091,5 +3156,5 @@
3091
3156
  "dist/core/swarm/runner.js -> import(<computed>) x3",
3092
3157
  "dist/core/verse/session-engine.js -> import(<computed>) x1"
3093
3158
  ],
3094
- "digest": "8745b1609150c6f0b0b8812eb881cba2530bc4dbe2f5b1045c2f4ea58ba2c70d"
3159
+ "digest": "248347e536e2686f44efc28018752e0679f0987e70b45932448d613536d43135"
3095
3160
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "3.10.1",
4
- "revision": "01519cf87386a9a55eca5611a5ec2243e84464a5",
3
+ "packageVersion": "3.11.2",
4
+ "revision": "c6ecafc73acd5c64c236362157b5ba854b0df219",
5
5
  "dirty": false,
6
6
  "provenance": "git"
7
7
  }
@@ -0,0 +1,39 @@
1
+ import type { CloudBacklogView, CloudBudgetUpdate, CloudBudgetV1, CloudBudgetView, CloudImproveResponse, CloudLaunchRequest, CloudLaunchResponse, CloudSeatStatus, CloudTaskV1 } from '../core/cloud/types.js';
2
+ export interface CloudCliDeps {
3
+ launch: (req: CloudLaunchRequest) => Promise<CloudLaunchResponse>;
4
+ listTasks: (limit?: number) => CloudTaskV1[];
5
+ readBudget: () => CloudBudgetV1;
6
+ updateBudget: (update: CloudBudgetUpdate) => CloudBudgetV1;
7
+ budgetView: (tasks: readonly CloudTaskV1[], budget: CloudBudgetV1, now: Date) => CloudBudgetView;
8
+ refresh: () => Promise<{
9
+ checked: number;
10
+ updated: number;
11
+ }>;
12
+ improve: (opts: {
13
+ count?: number;
14
+ auto: boolean;
15
+ }) => Promise<CloudImproveResponse>;
16
+ backlog: (tasks: readonly CloudTaskV1[], now: Date) => CloudBacklogView;
17
+ seat: () => CloudSeatStatus;
18
+ /** `owner/name` of the folder's GitHub origin, or null. */
19
+ originRepo: (cwd: string) => string | null;
20
+ cwd: () => string;
21
+ now: () => Date;
22
+ out: (line: string) => void;
23
+ err: (line: string) => void;
24
+ color: boolean;
25
+ }
26
+ /**
27
+ * `owner/name` from a GitHub remote URL — https, scp-style ssh and ssh://
28
+ * forms, with or without `.git`. Null for anything that is not github.com:
29
+ * a cloud session can only clone from GitHub.
30
+ */
31
+ export declare function parseGithubRepo(url: string): string | null;
32
+ /** "today 2:05 PM", "yesterday 9:40 AM", "Sep 21 4:00 PM" — the operator's local time, never ISO. */
33
+ export declare function localWhen(iso: string | null | undefined, now: Date): string;
34
+ export declare function usd(value: number): string;
35
+ /** Tasks `list` shows: everything in flight plus what finished recently; `all` shows every task. */
36
+ export declare function tasksToList(tasks: readonly CloudTaskV1[], now: Date, all: boolean): CloudTaskV1[];
37
+ /** Budget flags → a CloudBudgetUpdate (empty when no flag was given). Exported for tests. */
38
+ export declare function parseBudgetFlags(args: string[]): CloudBudgetUpdate;
39
+ export declare function runCloudCli(argv: string[], injected?: Partial<CloudCliDeps>): Promise<number>;
@@ -0,0 +1,448 @@
1
+ /**
2
+ * `ashlr cloud` — the 3.11 cloud lane (unit C2): launch Claude Code cloud
3
+ * sessions that deliver a draft PR, track them, and keep spend inside the
4
+ * operator's budget.
5
+ *
6
+ * ashlr cloud launch "<task>" [--repo owner/name] [--base branch] [--title t] [--json]
7
+ * ashlr cloud list [--all] [--json]
8
+ * ashlr cloud refresh [--json]
9
+ * ashlr cloud improve [--count N] [--json]
10
+ * ashlr cloud budget [--total N] [--spent N] [--per-session N] [--max-per-day N]
11
+ * [--max-concurrent N] [--self-improve on|off]
12
+ * [--self-improve-max N] [--reserve N] [--json]
13
+ * ashlr cloud backlog [--json]
14
+ *
15
+ * Talks to the cloud service in-process (src/core/cloud/*), NOT to the Verse
16
+ * server, and never imports cloud-api.ts — that module starts the background
17
+ * scheduler, which belongs to the long-running server, not to a one-shot CLI.
18
+ *
19
+ * Output is for people: local times, no ISO stamps, no absolute paths.
20
+ * `--json` prints the service's own shapes for scripts. `launch` and
21
+ * `improve` start real cloud sessions that spend Claude credits (an estimate
22
+ * is charged against the budget); nothing here ever merges.
23
+ * Exit codes: 0 success, 1 error / refused, 2 bad usage.
24
+ */
25
+ import { execFileSync } from 'node:child_process';
26
+ import { makeColors, isTty } from './ui.js';
27
+ const USAGE = `ashlr cloud — Claude Code cloud sessions that deliver draft PRs
28
+
29
+ Usage:
30
+ ashlr cloud launch "<task>" [--repo owner/name] [--base branch] [--title "short title"] [--json]
31
+ Start a cloud session on the task. The repo defaults to this folder's GitHub origin.
32
+ ashlr cloud list [--all] [--json]
33
+ Tasks in flight and recently finished (--all: every task).
34
+ ashlr cloud refresh [--json]
35
+ Ask GitHub for each open task's pull request now.
36
+ ashlr cloud improve [--count N] [--json]
37
+ Launch the next N (1–5, default 1) self-improvement backlog items.
38
+ ashlr cloud budget [--total N] [--spent N] [--per-session N] [--max-per-day N] [--max-concurrent N]
39
+ [--self-improve on|off] [--self-improve-max N] [--reserve N] [--json]
40
+ Show the estimated credits and limits; any flag updates them first.
41
+ ashlr cloud backlog [--json]
42
+ The self-improvement backlog and what each item's latest task did.
43
+
44
+ Spend is an estimate: Claude doesn't expose the credit balance.`;
45
+ async function defaultDeps() {
46
+ const [service, store, budget, backlog, tracker] = await Promise.all([
47
+ import('../core/cloud/service.js'),
48
+ import('../core/cloud/store.js'),
49
+ import('../core/cloud/budget.js'),
50
+ import('../core/cloud/backlog.js'),
51
+ import('../core/cloud/tracker.js'),
52
+ ]);
53
+ return {
54
+ launch: (req) => service.launchCloudTask(req),
55
+ listTasks: (limit) => store.listCloudTasks(limit),
56
+ readBudget: () => store.readCloudBudget(),
57
+ updateBudget: (update) => store.updateCloudBudget(update),
58
+ budgetView: (tasks, b, now) => budget.cloudBudgetView(tasks, b, now),
59
+ refresh: () => tracker.refreshCloudTasks(),
60
+ improve: (opts) => service.runSelfImprove(opts),
61
+ backlog: (tasks, now) => backlog.readCloudBacklog(tasks, now),
62
+ seat: () => service.cloudSeatStatus(),
63
+ originRepo: readOriginRepo,
64
+ cwd: () => process.cwd(),
65
+ now: () => new Date(),
66
+ out: (line) => console.log(line),
67
+ err: (line) => console.error(line),
68
+ color: isTty(),
69
+ };
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Pure helpers (exported for tests)
73
+ // ---------------------------------------------------------------------------
74
+ /**
75
+ * `owner/name` from a GitHub remote URL — https, scp-style ssh and ssh://
76
+ * forms, with or without `.git`. Null for anything that is not github.com:
77
+ * a cloud session can only clone from GitHub.
78
+ */
79
+ export function parseGithubRepo(url) {
80
+ const trimmed = url.trim();
81
+ const m = /^(?:https?:\/\/(?:[^@/]+@)?github\.com\/|git@github\.com:|ssh:\/\/git@github\.com(?::\d+)?\/)([A-Za-z0-9-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?\/?$/.exec(trimmed);
82
+ if (!m)
83
+ return null;
84
+ return `${m[1]}/${m[2]}`;
85
+ }
86
+ function readOriginRepo(cwd) {
87
+ try {
88
+ const url = execFileSync('git', ['remote', 'get-url', 'origin'], {
89
+ cwd,
90
+ encoding: 'utf8',
91
+ stdio: ['ignore', 'pipe', 'ignore'],
92
+ timeout: 5_000,
93
+ });
94
+ return parseGithubRepo(url);
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ function sameLocalDay(a, b) {
101
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
102
+ }
103
+ /** "today 2:05 PM", "yesterday 9:40 AM", "Sep 21 4:00 PM" — the operator's local time, never ISO. */
104
+ export function localWhen(iso, now) {
105
+ if (!iso)
106
+ return 'unknown time';
107
+ const at = new Date(iso);
108
+ if (Number.isNaN(at.getTime()))
109
+ return 'unknown time';
110
+ const time = at.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' });
111
+ if (sameLocalDay(at, now))
112
+ return `today ${time}`;
113
+ const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
114
+ if (sameLocalDay(at, yesterday))
115
+ return `yesterday ${time}`;
116
+ const day = at.toLocaleDateString('en-US', {
117
+ month: 'short',
118
+ day: 'numeric',
119
+ ...(at.getFullYear() === now.getFullYear() ? {} : { year: 'numeric' }),
120
+ });
121
+ return `${day} ${time}`;
122
+ }
123
+ export function usd(value) {
124
+ return `$${value.toFixed(2)}`;
125
+ }
126
+ const TERMINAL = new Set(['merged', 'closed', 'failed', 'expired']);
127
+ /** Default `list` window for finished tasks. */
128
+ const RECENT_MS = 3 * 24 * 60 * 60 * 1000;
129
+ const STATE_LABEL = {
130
+ queued: 'queued',
131
+ launching: 'launching',
132
+ running: 'running',
133
+ 'pr-open': 'PR open',
134
+ merged: 'merged',
135
+ closed: 'closed',
136
+ failed: 'failed',
137
+ expired: 'expired',
138
+ };
139
+ /** Tasks `list` shows: everything in flight plus what finished recently; `all` shows every task. */
140
+ export function tasksToList(tasks, now, all) {
141
+ if (all)
142
+ return [...tasks];
143
+ return tasks.filter((t) => {
144
+ if (!TERMINAL.has(t.state))
145
+ return true;
146
+ const at = Date.parse(t.updatedAt);
147
+ return !Number.isNaN(at) && now.getTime() - at <= RECENT_MS;
148
+ });
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // Argument parsing
152
+ // ---------------------------------------------------------------------------
153
+ class UsageError extends Error {
154
+ }
155
+ function takeFlag(args, name) {
156
+ const i = args.indexOf(name);
157
+ if (i === -1)
158
+ return false;
159
+ args.splice(i, 1);
160
+ return true;
161
+ }
162
+ function takeOption(args, name) {
163
+ const i = args.indexOf(name);
164
+ if (i === -1)
165
+ return null;
166
+ const value = args[i + 1];
167
+ if (value === undefined || value.startsWith('--'))
168
+ throw new UsageError(`${name} needs a value.`);
169
+ args.splice(i, 2);
170
+ return value;
171
+ }
172
+ function takeNumber(args, name, whole) {
173
+ const raw = takeOption(args, name);
174
+ if (raw === null)
175
+ return null;
176
+ const value = Number(raw.replace(/^\$/, ''));
177
+ if (raw.trim() === '' || !Number.isFinite(value) || value < 0)
178
+ throw new UsageError(`${name} must be a number of zero or more.`);
179
+ if (whole && !Number.isInteger(value))
180
+ throw new UsageError(`${name} must be a whole number.`);
181
+ return value;
182
+ }
183
+ function rejectLeftovers(args) {
184
+ const unknown = args.find((a) => a.startsWith('-'));
185
+ if (unknown)
186
+ throw new UsageError(`Unknown option ${unknown}.`);
187
+ if (args.length > 0)
188
+ throw new UsageError(`Unexpected argument "${args[0]}".`);
189
+ }
190
+ /** Budget flags → a CloudBudgetUpdate (empty when no flag was given). Exported for tests. */
191
+ export function parseBudgetFlags(args) {
192
+ const update = {};
193
+ const total = takeNumber(args, '--total', false);
194
+ if (total !== null)
195
+ update.creditsTotalUsd = total;
196
+ const spent = takeNumber(args, '--spent', false);
197
+ if (spent !== null)
198
+ update.creditsSpentAdjustmentUsd = spent;
199
+ const perSession = takeNumber(args, '--per-session', false);
200
+ if (perSession !== null)
201
+ update.estimatedCostPerSessionUsd = perSession;
202
+ const perDay = takeNumber(args, '--max-per-day', true);
203
+ if (perDay !== null)
204
+ update.maxSessionsPerDay = perDay;
205
+ const concurrent = takeNumber(args, '--max-concurrent', true);
206
+ if (concurrent !== null)
207
+ update.maxConcurrent = concurrent;
208
+ const self = {};
209
+ const toggle = takeOption(args, '--self-improve');
210
+ if (toggle !== null) {
211
+ if (toggle !== 'on' && toggle !== 'off')
212
+ throw new UsageError('--self-improve takes on or off.');
213
+ self.enabled = toggle === 'on';
214
+ }
215
+ const selfMax = takeNumber(args, '--self-improve-max', true);
216
+ if (selfMax !== null)
217
+ self.maxPerDay = selfMax;
218
+ const reserve = takeNumber(args, '--reserve', false);
219
+ if (reserve !== null)
220
+ self.reserveUsd = reserve;
221
+ if (Object.keys(self).length > 0)
222
+ update.selfImprove = self;
223
+ return update;
224
+ }
225
+ // ---------------------------------------------------------------------------
226
+ // Printing
227
+ // ---------------------------------------------------------------------------
228
+ function printTask(deps, task) {
229
+ const c = makeColors(deps.color);
230
+ const now = deps.now();
231
+ const tone = task.state === 'failed' ? c.red : task.state === 'pr-open' ? c.green : TERMINAL.has(task.state) ? c.dim : c.cyan;
232
+ deps.out(`${tone(STATE_LABEL[task.state].padEnd(9))} ${task.title}`);
233
+ const facts = [task.repo, `started ${localWhen(task.createdAt, now)}`];
234
+ if (task.state !== 'queued' && task.state !== 'launching' && !TERMINAL.has(task.state)) {
235
+ facts.push(`updated ${localWhen(task.updatedAt, now)}`);
236
+ }
237
+ deps.out(` ${c.dim(facts.join(' · '))} ${c.dim(task.id)}`);
238
+ if (task.pr)
239
+ deps.out(` PR #${task.pr.number}: ${task.pr.url}`);
240
+ else if (task.sessionUrl)
241
+ deps.out(` Session: ${task.sessionUrl}`);
242
+ if (task.report)
243
+ deps.out(` Report (${task.report.status}): ${task.report.summary}`);
244
+ if (task.stateReason)
245
+ deps.out(` ${task.stateReason}`);
246
+ }
247
+ function gateLine(ok, reason) {
248
+ return ok ? 'allowed' : `blocked — ${reason ?? 'no reason given'}`;
249
+ }
250
+ function printBudget(view, out) {
251
+ const b = view.budget;
252
+ out(`Cloud credits (estimate): ${usd(view.estimatedRemainingUsd)} of ${usd(view.creditsTotalUsd)} left · ${usd(view.estimatedSpentUsd)} spent`);
253
+ out(` ${view.estimateNote}`);
254
+ out(` Real balance: ${view.balanceUrl}`);
255
+ out(`Sessions today: ${view.sessionsToday} of ${b.maxSessionsPerDay} · running now: ${view.running} of ${b.maxConcurrent} at once`);
256
+ out(` Estimated cost per session: ${usd(b.estimatedCostPerSessionUsd)}${b.creditsSpentAdjustmentUsd > 0 ? ` · spent before tracking: ${usd(b.creditsSpentAdjustmentUsd)}` : ''}`);
257
+ const self = b.selfImprove;
258
+ out(`Self-improvement: ${self.enabled ? 'on' : 'off'} · ${view.selfImproveToday} of ${self.maxPerDay} today · ${self.repo} · pauses below ${usd(self.reserveUsd)} left`);
259
+ out(`Launch now: ${gateLine(view.canLaunch.ok, view.canLaunch.reason)}`);
260
+ out(`Self-improve now: ${gateLine(view.canSelfImprove.ok, view.canSelfImprove.reason)}`);
261
+ }
262
+ function json(deps, value) {
263
+ deps.out(JSON.stringify(value, null, 2));
264
+ }
265
+ // ---------------------------------------------------------------------------
266
+ // Subcommands
267
+ // ---------------------------------------------------------------------------
268
+ async function cmdLaunch(deps, args) {
269
+ const asJson = takeFlag(args, '--json');
270
+ const repoFlag = takeOption(args, '--repo');
271
+ const base = takeOption(args, '--base');
272
+ const title = takeOption(args, '--title');
273
+ const unknown = args.find((a) => a.startsWith('--'));
274
+ if (unknown)
275
+ throw new UsageError(`Unknown option ${unknown}.`);
276
+ const prompt = args.join(' ').trim();
277
+ if (!prompt)
278
+ throw new UsageError('Describe the task: ashlr cloud launch "<task>".');
279
+ const repo = repoFlag ?? deps.originRepo(deps.cwd());
280
+ if (!repo) {
281
+ deps.err('This folder has no GitHub origin. Pass --repo owner/name.');
282
+ return 2;
283
+ }
284
+ const req = { repo, prompt, origin: 'cli' };
285
+ if (base !== null)
286
+ req.baseBranch = base;
287
+ if (title !== null)
288
+ req.title = title;
289
+ const result = await deps.launch(req);
290
+ if (asJson) {
291
+ json(deps, result);
292
+ return result.ok ? 0 : 1;
293
+ }
294
+ if (!result.ok || !result.task) {
295
+ deps.err(`Not launched: ${result.error ?? 'the cloud session could not be started.'}`);
296
+ return 1;
297
+ }
298
+ const task = result.task;
299
+ deps.out(`Launched cloud task: ${task.title}`);
300
+ if (task.sessionUrl)
301
+ deps.out(` Open in Claude: ${task.sessionUrl}`);
302
+ deps.out(` It delivers a draft PR from branch ${task.branch} into ${task.baseBranch} on ${task.repo}.`);
303
+ deps.out(` Estimated cost: ${usd(task.estimatedCostUsd)}. Track it with: ashlr cloud list`);
304
+ return 0;
305
+ }
306
+ function cmdList(deps, args) {
307
+ const asJson = takeFlag(args, '--json');
308
+ const all = takeFlag(args, '--all');
309
+ rejectLeftovers(args);
310
+ const tasks = tasksToList(deps.listTasks(all ? 500 : undefined), deps.now(), all);
311
+ if (asJson) {
312
+ json(deps, tasks);
313
+ return 0;
314
+ }
315
+ if (tasks.length === 0) {
316
+ deps.out(all ? 'No cloud tasks yet.' : 'No cloud tasks in flight or finished in the last 3 days. Use --all for older ones.');
317
+ return 0;
318
+ }
319
+ for (const task of tasks)
320
+ printTask(deps, task);
321
+ return 0;
322
+ }
323
+ async function cmdRefresh(deps, args) {
324
+ const asJson = takeFlag(args, '--json');
325
+ rejectLeftovers(args);
326
+ const result = await deps.refresh();
327
+ if (asJson)
328
+ json(deps, result);
329
+ else
330
+ deps.out(`Checked ${result.checked} ${result.checked === 1 ? 'task' : 'tasks'} on GitHub; ${result.updated} changed.`);
331
+ return 0;
332
+ }
333
+ async function cmdImprove(deps, args) {
334
+ const asJson = takeFlag(args, '--json');
335
+ const count = takeNumber(args, '--count', true);
336
+ rejectLeftovers(args);
337
+ if (count !== null && (count < 1 || count > 5))
338
+ throw new UsageError('--count must be from 1 to 5.');
339
+ const result = await deps.improve({ count: count ?? 1, auto: false });
340
+ if (asJson) {
341
+ json(deps, result);
342
+ return result.launched.length > 0 || result.skipped.length === 0 ? 0 : 1;
343
+ }
344
+ if (result.launched.length === 0 && result.skipped.length === 0) {
345
+ deps.out('Nothing to launch: the backlog has no available items.');
346
+ return 0;
347
+ }
348
+ for (const task of result.launched) {
349
+ deps.out(`Launched: ${task.title}${task.sessionUrl ? ` — ${task.sessionUrl}` : ''}`);
350
+ }
351
+ for (const skip of result.skipped)
352
+ deps.out(`Skipped ${skip.itemId}: ${skip.reason}`);
353
+ return result.launched.length > 0 ? 0 : 1;
354
+ }
355
+ function cmdBudget(deps, args) {
356
+ const asJson = takeFlag(args, '--json');
357
+ const update = parseBudgetFlags(args);
358
+ rejectLeftovers(args);
359
+ const budget = Object.keys(update).length > 0 ? deps.updateBudget(update) : deps.readBudget();
360
+ const view = deps.budgetView(deps.listTasks(), budget, deps.now());
361
+ if (asJson)
362
+ json(deps, view);
363
+ else {
364
+ if (Object.keys(update).length > 0)
365
+ deps.out('Cloud budget updated.');
366
+ printBudget(view, deps.out);
367
+ const seat = deps.seat();
368
+ if (!seat.ready)
369
+ deps.out(`Seat ${seat.id}: not ready — ${seat.reason ?? 'unknown reason'}`);
370
+ }
371
+ return 0;
372
+ }
373
+ function cmdBacklog(deps, args) {
374
+ const asJson = takeFlag(args, '--json');
375
+ rejectLeftovers(args);
376
+ const view = deps.backlog(deps.listTasks(), deps.now());
377
+ if (asJson) {
378
+ json(deps, view);
379
+ return 0;
380
+ }
381
+ const c = makeColors(deps.color);
382
+ if (view.items.length === 0) {
383
+ deps.out('The self-improvement backlog is empty.');
384
+ return 0;
385
+ }
386
+ deps.out(`Self-improvement backlog · next up: ${view.nextUp ?? 'nothing available'}`);
387
+ for (const item of view.items) {
388
+ const status = item.claimedBy
389
+ ? c.dim(` (${item.lastState ? STATE_LABEL[item.lastState] : 'claimed'} · ${item.claimedBy})`)
390
+ : '';
391
+ const marker = item.id === view.nextUp ? c.green('→') : ' ';
392
+ deps.out(`${marker} P${item.priority} ${item.title}${status}`);
393
+ deps.out(` ${c.dim(`${item.id} · ${item.area}${item.repo ? ` · ${item.repo}` : ''}`)}`);
394
+ }
395
+ return 0;
396
+ }
397
+ // ---------------------------------------------------------------------------
398
+ // Entry point
399
+ // ---------------------------------------------------------------------------
400
+ export async function runCloudCli(argv, injected) {
401
+ const args = [...argv];
402
+ const sub = args.shift();
403
+ const print = injected?.out ?? ((line) => console.log(line));
404
+ const printErr = injected?.err ?? ((line) => console.error(line));
405
+ if (!sub || sub === 'help' || sub === '--help' || sub === '-h') {
406
+ (sub ? print : printErr)(USAGE);
407
+ return sub ? 0 : 2;
408
+ }
409
+ const known = ['launch', 'list', 'ls', 'refresh', 'improve', 'budget', 'backlog'];
410
+ if (!known.includes(sub)) {
411
+ printErr(`Unknown cloud command "${sub}".\n\n${USAGE}`);
412
+ return 2;
413
+ }
414
+ // Only a known verb pays for loading the cloud core.
415
+ const deps = injected && isComplete(injected) ? injected : { ...(await defaultDeps()), ...injected };
416
+ try {
417
+ switch (sub) {
418
+ case 'launch': return await cmdLaunch(deps, args);
419
+ case 'list':
420
+ case 'ls': return cmdList(deps, args);
421
+ case 'refresh': return await cmdRefresh(deps, args);
422
+ case 'improve': return await cmdImprove(deps, args);
423
+ case 'budget': return cmdBudget(deps, args);
424
+ default: return cmdBacklog(deps, args);
425
+ }
426
+ }
427
+ catch (err) {
428
+ if (err instanceof UsageError) {
429
+ deps.err(`${err.message}\n\n${USAGE}`);
430
+ return 2;
431
+ }
432
+ deps.err(`cloud ${sub} failed: ${withoutHome(err instanceof Error ? err.message : String(err))}`);
433
+ return 1;
434
+ }
435
+ }
436
+ /** No absolute home paths in output: an error from the checkout or store can quote one. */
437
+ function withoutHome(text) {
438
+ const home = process.env['HOME'];
439
+ return home && home.length > 1 ? text.split(home).join('~') : text;
440
+ }
441
+ const DEP_KEYS = [
442
+ 'launch', 'listTasks', 'readBudget', 'updateBudget', 'budgetView', 'refresh', 'improve', 'backlog',
443
+ 'seat', 'originRepo', 'cwd', 'now', 'out', 'err', 'color',
444
+ ];
445
+ function isComplete(deps) {
446
+ return DEP_KEYS.every((key) => deps[key] !== undefined);
447
+ }
448
+ //# sourceMappingURL=cloud.js.map