@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
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Budget view + gates (unit C1). Spend = creditsSpentAdjustmentUsd + sum of
3
+ * estimatedCostUsd over tasks that reached `running` or later (failed
4
+ * launches cost nothing). "Today" = the operator's local calendar day.
5
+ *
6
+ * Pure: no clock, no disk — the caller passes the tasks, the budget and now.
7
+ */
8
+ import { CLOUD_BALANCE_URL } from './types.js';
9
+ const OK = Object.freeze({ ok: true, reason: null });
10
+ const refuse = (reason) => ({ ok: false, reason });
11
+ /**
12
+ * Whether a task consumed a session. A session id is the proof; the states
13
+ * cover a task recorded without one. A `closed` task with no session is a
14
+ * dismissed failure, not spend.
15
+ */
16
+ export function taskConsumedSession(task) {
17
+ return task.sessionId !== null || task.state === 'running' || task.state === 'pr-open' || task.state === 'merged' || task.state === 'expired';
18
+ }
19
+ /** In flight: accepted and not yet resolved into a session or a failure. Counts toward the daily caps so a burst cannot overshoot them. */
20
+ const inFlight = (task) => task.state === 'queued' || task.state === 'launching';
21
+ /** `YYYY-MM-DD` of the operator's local calendar day. */
22
+ export function localDayKey(date) {
23
+ return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
24
+ }
25
+ /** `$3`, `$2.50`, `$1,234` — whole dollars without cents. */
26
+ export function formatUsd(value) {
27
+ const rounded = Math.round(value * 100) / 100;
28
+ const whole = Number.isInteger(rounded);
29
+ return `$${rounded.toLocaleString('en-US', { minimumFractionDigits: whole ? 0 : 2, maximumFractionDigits: whole ? 0 : 2 })}`;
30
+ }
31
+ const plural = (n, one, many) => (n === 1 ? one : many);
32
+ export function cloudBudgetView(tasks, budget, now) {
33
+ const today = localDayKey(now);
34
+ let spent = budget.creditsSpentAdjustmentUsd;
35
+ let sessionsToday = 0;
36
+ let selfImproveToday = 0;
37
+ let running = 0;
38
+ let queued = 0;
39
+ for (const task of tasks) {
40
+ const consumed = taskConsumedSession(task);
41
+ if (consumed)
42
+ spent += task.estimatedCostUsd;
43
+ if (task.state === 'launching' || task.state === 'running')
44
+ running += 1;
45
+ if (task.state === 'queued')
46
+ queued += 1;
47
+ if (!consumed && !inFlight(task))
48
+ continue;
49
+ const at = Date.parse(task.launchedAt ?? task.createdAt);
50
+ if (!Number.isFinite(at) || localDayKey(new Date(at)) !== today)
51
+ continue;
52
+ sessionsToday += 1;
53
+ if (task.origin === 'self-improve')
54
+ selfImproveToday += 1;
55
+ }
56
+ const estimatedSpentUsd = Math.round(spent * 100) / 100;
57
+ const estimatedRemainingUsd = Math.max(0, Math.round((budget.creditsTotalUsd - estimatedSpentUsd) * 100) / 100);
58
+ const cost = budget.estimatedCostPerSessionUsd;
59
+ let canLaunch = OK;
60
+ if (estimatedRemainingUsd < cost || (cost === 0 && estimatedRemainingUsd <= 0)) {
61
+ canLaunch = refuse(`About ${formatUsd(estimatedRemainingUsd)} of estimated credits is left — not enough for another session at ${formatUsd(cost)} each.`);
62
+ }
63
+ else if (sessionsToday >= budget.maxSessionsPerDay) {
64
+ canLaunch = refuse(`${sessionsToday} of ${budget.maxSessionsPerDay} cloud ${plural(budget.maxSessionsPerDay, 'session', 'sessions')} used today.`);
65
+ }
66
+ else if (running + queued >= budget.maxConcurrent) {
67
+ // Queued tasks are about to launch, so they hold a slot: otherwise two
68
+ // launches accepted back to back (different repos) could both pass a cap of one.
69
+ canLaunch = refuse(`${running + queued} of ${budget.maxConcurrent} cloud ${plural(budget.maxConcurrent, 'session is', 'sessions are')} already running.`);
70
+ }
71
+ let canSelfImprove = canLaunch;
72
+ if (canLaunch.ok) {
73
+ if (!budget.selfImprove.enabled) {
74
+ canSelfImprove = refuse('Self-improvement is turned off.');
75
+ }
76
+ else if (selfImproveToday >= budget.selfImprove.maxPerDay) {
77
+ canSelfImprove = refuse(`${selfImproveToday} of ${budget.selfImprove.maxPerDay} self-improvement ${plural(budget.selfImprove.maxPerDay, 'launch', 'launches')} used today.`);
78
+ }
79
+ else if (estimatedRemainingUsd - cost < budget.selfImprove.reserveUsd) {
80
+ // The reserve is kept for the operator's own tasks: self-improvement
81
+ // stops BEFORE a launch would take the estimate below it.
82
+ canSelfImprove = refuse(`Another self-improvement session would take estimated credits below the ${formatUsd(budget.selfImprove.reserveUsd)} reserve.`);
83
+ }
84
+ }
85
+ return {
86
+ creditsTotalUsd: budget.creditsTotalUsd,
87
+ estimatedSpentUsd,
88
+ estimatedRemainingUsd,
89
+ sessionsToday,
90
+ selfImproveToday,
91
+ running,
92
+ canLaunch,
93
+ canSelfImprove,
94
+ estimateNote: `Estimated at ${formatUsd(cost)} per session — Claude doesn't expose the credit balance. Check it on claude.ai and adjust here.`,
95
+ balanceUrl: CLOUD_BALANCE_URL,
96
+ budget,
97
+ };
98
+ }
99
+ //# sourceMappingURL=budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../../src/core/cloud/budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export type CloudCheckoutResult = {
2
+ ok: true;
3
+ path: string;
4
+ } | {
5
+ ok: false;
6
+ failure: 'no-remote' | 'checkout-failed';
7
+ message: string;
8
+ };
9
+ export interface CloudCheckoutDeps {
10
+ git?: (args: string[], opts: {
11
+ cwd: string;
12
+ timeoutMs: number;
13
+ }) => Promise<{
14
+ ok: boolean;
15
+ stdout: string;
16
+ stderr: string;
17
+ }>;
18
+ originUrlFor?: (repo: string) => string;
19
+ }
20
+ export declare const CLOUD_CHECKOUTS_DIR = "checkouts";
21
+ /**
22
+ * In-process FIFO mutex keyed by string. Two `--cloud` runs (or a fetch and
23
+ * a launch) in one folder would race on the checked-out branch, so every
24
+ * user of a folder queues here. The map entry is dropped when the last
25
+ * waiter finishes, so it never grows with the number of repos ever used.
26
+ */
27
+ export declare class KeyedMutex {
28
+ private readonly tails;
29
+ run<T>(key: string, fn: () => Promise<T>): Promise<T>;
30
+ /** True while any caller holds or waits for `key` (tests, diagnostics). */
31
+ busy(key: string): boolean;
32
+ }
33
+ /**
34
+ * A branch name git accepts that also cannot be read as an option or escape
35
+ * the ref namespace. Stricter than check-ref-format on purpose: base
36
+ * branches are human names like `main` or `v3110-cloud`.
37
+ */
38
+ export declare function isSafeBranchName(branch: string): boolean;
39
+ /** Lower-cased: GitHub names are case-insensitive, and so is the default macOS filesystem — one repo, one folder, one lock. */
40
+ export declare function cloudCheckoutPath(repo: string): string;
41
+ export declare function ensureCloudCheckout(repo: string, branch: string, deps?: CloudCheckoutDeps): Promise<CloudCheckoutResult>;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Isolated launch checkouts (unit C1): `<cloudHome>/checkouts/<owner>__<name>`,
3
+ * a shallow single-branch clone of https://github.com/<owner>/<name>.git
4
+ * using the operator's normal git credentials. Before each launch:
5
+ * `git fetch --depth 1 origin <branch>` then `git checkout -B <branch>
6
+ * FETCH_HEAD` with upstream set, so the CLI sees a pushed branch. Never
7
+ * touches the operator's own clones or fleet mirrors. Serialise per path.
8
+ *
9
+ * WHY a checkout of our own: `claude --cloud` clones the cwd's origin at the
10
+ * cwd's CURRENT branch. Launching from the operator's working copy would pin
11
+ * the session to whatever branch they happen to have checked out (possibly
12
+ * unpushed); a private checkout pinned to the requested base makes the
13
+ * session start exactly where the task says.
14
+ */
15
+ import { lstatSync, rmSync } from 'node:fs';
16
+ import { join } from 'node:path';
17
+ import { defaultGitRunner } from '../verse/git-ops.js';
18
+ import { CLOUD_REPO_PATTERN, cloudHome, ensureCloudDirectory } from './store.js';
19
+ export const CLOUD_CHECKOUTS_DIR = 'checkouts';
20
+ const CLONE_TIMEOUT_MS = 180_000;
21
+ const GIT_TIMEOUT_MS = 60_000;
22
+ // ---------------------------------------------------------------------------
23
+ // Per-key mutex
24
+ // ---------------------------------------------------------------------------
25
+ /**
26
+ * In-process FIFO mutex keyed by string. Two `--cloud` runs (or a fetch and
27
+ * a launch) in one folder would race on the checked-out branch, so every
28
+ * user of a folder queues here. The map entry is dropped when the last
29
+ * waiter finishes, so it never grows with the number of repos ever used.
30
+ */
31
+ export class KeyedMutex {
32
+ tails = new Map();
33
+ async run(key, fn) {
34
+ const previous = this.tails.get(key) ?? Promise.resolve();
35
+ let release;
36
+ const current = new Promise((resolve) => { release = resolve; });
37
+ const tail = previous.then(() => current);
38
+ this.tails.set(key, tail);
39
+ await previous;
40
+ try {
41
+ return await fn();
42
+ }
43
+ finally {
44
+ release();
45
+ if (this.tails.get(key) === tail)
46
+ this.tails.delete(key);
47
+ }
48
+ }
49
+ /** True while any caller holds or waits for `key` (tests, diagnostics). */
50
+ busy(key) {
51
+ return this.tails.has(key);
52
+ }
53
+ }
54
+ const checkoutMutex = new KeyedMutex();
55
+ // ---------------------------------------------------------------------------
56
+ // Checkout
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * A branch name git accepts that also cannot be read as an option or escape
60
+ * the ref namespace. Stricter than check-ref-format on purpose: base
61
+ * branches are human names like `main` or `v3110-cloud`.
62
+ */
63
+ export function isSafeBranchName(branch) {
64
+ return typeof branch === 'string'
65
+ && branch.length > 0 && branch.length <= 200
66
+ && /^[A-Za-z0-9._/-]+$/.test(branch)
67
+ && !branch.startsWith('-') && !branch.startsWith('/') && !branch.endsWith('/')
68
+ && !branch.endsWith('.') && !branch.endsWith('.lock')
69
+ && !branch.includes('..') && !branch.includes('//') && !branch.includes('/.');
70
+ }
71
+ /** Lower-cased: GitHub names are case-insensitive, and so is the default macOS filesystem — one repo, one folder, one lock. */
72
+ export function cloudCheckoutPath(repo) {
73
+ const [owner, name] = repo.toLowerCase().split('/');
74
+ return join(cloudHome(), CLOUD_CHECKOUTS_DIR, `${owner}__${name}`);
75
+ }
76
+ const defaultOriginUrl = (repo) => `https://github.com/${repo}.git`;
77
+ async function defaultGit(args, opts) {
78
+ const result = await defaultGitRunner('git', args, { cwd: opts.cwd, timeoutMs: opts.timeoutMs });
79
+ return { ok: result.code === 0 && !result.timedOut, stdout: result.stdout, stderr: result.missing ? 'git is not installed' : result.stderr };
80
+ }
81
+ /** git's words for "that repo or branch is not on GitHub (or not reachable with these credentials)". */
82
+ function isMissingRemote(stderr) {
83
+ return /couldn't find remote ref|remote branch .* not found|repository not found|could not read from remote repository|could not read username|authentication failed|does not appear to be a git repository/i.test(stderr);
84
+ }
85
+ function failed(repo, branch, stderr) {
86
+ if (isMissingRemote(stderr)) {
87
+ return { ok: false, failure: 'no-remote', message: `Couldn't find branch ${branch} of ${repo} on GitHub. Check the repo name, that the branch is pushed, and that git can reach it.` };
88
+ }
89
+ return { ok: false, failure: 'checkout-failed', message: `Couldn't prepare a checkout of ${repo} at ${branch} for the cloud launch.` };
90
+ }
91
+ function isGitCheckout(path) {
92
+ try {
93
+ const dir = lstatSync(path);
94
+ if (!dir.isDirectory() || dir.isSymbolicLink())
95
+ return false;
96
+ return lstatSync(join(path, '.git')).isDirectory();
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ async function prepare(repo, branch, deps) {
103
+ const git = deps.git ?? defaultGit;
104
+ const url = (deps.originUrlFor ?? defaultOriginUrl)(repo);
105
+ let parent;
106
+ try {
107
+ parent = ensureCloudDirectory(CLOUD_CHECKOUTS_DIR);
108
+ }
109
+ catch {
110
+ return { ok: false, failure: 'checkout-failed', message: "Couldn't create the private folder for cloud checkouts." };
111
+ }
112
+ const path = cloudCheckoutPath(repo);
113
+ if (!isGitCheckout(path)) {
114
+ // Anything else at our own path is a clone that died half-way (or was
115
+ // tampered with); it is ours to replace, and git refuses a non-empty target.
116
+ try {
117
+ rmSync(path, { recursive: true, force: true });
118
+ }
119
+ catch { /* clone below reports it */ }
120
+ const clone = await git(['clone', '--depth', '1', '--single-branch', '--no-tags', '--branch', branch, '--', url, path], { cwd: parent, timeoutMs: CLONE_TIMEOUT_MS });
121
+ if (!clone.ok) {
122
+ try {
123
+ rmSync(path, { recursive: true, force: true });
124
+ }
125
+ catch { /* best effort */ }
126
+ return failed(repo, branch, clone.stderr);
127
+ }
128
+ }
129
+ const steps = [
130
+ // The origin URL is re-asserted every time so a checkout can never launch
131
+ // against a remote other than the one the task names.
132
+ ['remote', 'set-url', 'origin', url],
133
+ // A single-branch clone only maps its first branch to a remote-tracking
134
+ // ref; git refuses an upstream (and cannot resolve @{u}) for any other
135
+ // base until the remote's fetch refspec covers it.
136
+ ['remote', 'set-branches', 'origin', '*'],
137
+ // An explicit refspec keeps a remote-tracking ref even in a single-branch
138
+ // clone, which is what the upstream below points at.
139
+ ['fetch', '--depth', '1', '--no-tags', 'origin', `+refs/heads/${branch}:refs/remotes/origin/${branch}`],
140
+ ['checkout', '--force', '-B', branch, 'FETCH_HEAD'],
141
+ ['branch', `--set-upstream-to=origin/${branch}`, branch],
142
+ // Nothing a previous launch left behind may ride along into the next session.
143
+ ['clean', '-ffdx'],
144
+ ];
145
+ for (const args of steps) {
146
+ const step = await git(args, { cwd: path, timeoutMs: args[0] === 'fetch' ? CLONE_TIMEOUT_MS : GIT_TIMEOUT_MS });
147
+ if (!step.ok)
148
+ return failed(repo, branch, step.stderr);
149
+ }
150
+ return { ok: true, path };
151
+ }
152
+ export async function ensureCloudCheckout(repo, branch, deps = {}) {
153
+ if (typeof repo !== 'string' || !CLOUD_REPO_PATTERN.test(repo)) {
154
+ return { ok: false, failure: 'checkout-failed', message: 'The repo must look like owner/name.' };
155
+ }
156
+ if (!isSafeBranchName(branch)) {
157
+ return { ok: false, failure: 'checkout-failed', message: `"${String(branch).slice(0, 80)}" isn't a branch name the cloud lane accepts.` };
158
+ }
159
+ return checkoutMutex.run(cloudCheckoutPath(repo), async () => {
160
+ try {
161
+ return await prepare(repo, branch, deps);
162
+ }
163
+ catch {
164
+ return { ok: false, failure: 'checkout-failed', message: `Couldn't prepare a checkout of ${repo} at ${branch} for the cloud launch.` };
165
+ }
166
+ });
167
+ }
168
+ //# sourceMappingURL=checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../../src/core/cloud/checkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { ApiModule } from '../verse/api-modules.js';
2
+ import { type NeedsYouItem } from '../verse/workbench-types.js';
3
+ import { type CloudBudgetUpdate, type CloudLaunchRequest, type CloudTaskV1 } from './types.js';
4
+ /** Same shape the service validates (spec C1); checked here too so bad input is a 400, not a failed task. */
5
+ export declare const CLOUD_REPO_PATTERN: RegExp;
6
+ export declare class CloudInputError extends Error {
7
+ }
8
+ export declare function isValidCloudRepo(value: unknown): value is string;
9
+ export declare function isValidBranchName(value: unknown): value is string;
10
+ /** Strict parse of a launch body; throws CloudInputError with a plain sentence. `origin` defaults to operator. */
11
+ export declare function parseCloudLaunchBody(body: Record<string, unknown>): CloudLaunchRequest;
12
+ /**
13
+ * Strict parse of a budget update: types and signs only. Clamping to sane
14
+ * maxima is the store's job (updateCloudBudget), so the two never disagree
15
+ * about what "sane" means.
16
+ */
17
+ export declare function parseCloudBudgetBody(body: Record<string, unknown>): CloudBudgetUpdate;
18
+ export declare function parseCloudImproveBody(body: Record<string, unknown>): {
19
+ count: number;
20
+ };
21
+ export declare const CLOUD_DISMISS_REASON = "Dismissed in Verse.";
22
+ export type CloudDismissResult = {
23
+ ok: true;
24
+ task: CloudTaskV1;
25
+ } | {
26
+ ok: false;
27
+ status: 404 | 409;
28
+ error: string;
29
+ };
30
+ /**
31
+ * Mark a task `closed` with "Dismissed in Verse." — idempotent for a task
32
+ * already closed. Refused for a MERGED task (closing it would rewrite what
33
+ * happened) and while a launch is still in flight (the service would then
34
+ * overwrite the dismissal with `running`).
35
+ */
36
+ export declare function dismissCloudTask(id: string, now?: Date): CloudDismissResult;
37
+ /** Failed launches stay in Needs-you this long (spec C2). */
38
+ export declare const CLOUD_FAILED_WINDOW_MS: number;
39
+ /**
40
+ * PURE: the Needs-you items for `tasks` at `now`.
41
+ *
42
+ * WHY THESE SOURCES AND KINDS: the Needs-you contract (workbench-types.ts
43
+ * §2) has a closed set of sources and kinds, and the web drawer and the
44
+ * desktop shell switch on both exhaustively, so a new one is not additive.
45
+ * A cloud PR is exactly an `owner-lane-pr` — a PR that is never merged
46
+ * automatically and waits for Mason — filed under `fleet`, the source the
47
+ * drawer already reads for that kind. A failed launch is a failed piece of
48
+ * work the operator started (often from a chat's "Run in cloud"), so it is a
49
+ * `chats` / `chat-failed` item with no session to open.
50
+ */
51
+ export declare function cloudNeedsYouItems(tasks: readonly CloudTaskV1[], now: Date): NeedsYouItem[];
52
+ /**
53
+ * Needs-you producer (activity-api.ts calls it on every poll). Returns the
54
+ * cached items in O(1) and, when the cache is stale, rebuilds it on a later
55
+ * tick — the task store is file I/O and never runs on the poll's stack. The
56
+ * first call answers [] (cloud items are additive to sources that vouch for
57
+ * themselves) and has the real answer ready for the next poll.
58
+ */
59
+ export declare function needsYouItems(): NeedsYouItem[];
60
+ /** Test seam: replace the task reader (null restores) and drop the cache. */
61
+ export declare function setCloudNeedsYouReaderForTest(read: (() => readonly CloudTaskV1[]) | null): void;
62
+ export declare function refreshCloudTasksGuarded(): Promise<{
63
+ checked: number;
64
+ updated: number;
65
+ }>;
66
+ export declare const CLOUD_REFRESH_EVERY_MS: number;
67
+ export declare const CLOUD_IMPROVE_EVERY_MS: number;
68
+ export declare const CLOUD_IMPROVE_FIRST_DELAY_MS: number;
69
+ /** Why this process must not run the scheduler; null when it may. */
70
+ export declare function cloudSchedulerRefusal(env?: NodeJS.ProcessEnv): string | null;
71
+ export interface CloudSchedulerDeps {
72
+ refresh?: () => Promise<unknown>;
73
+ improve?: () => Promise<unknown>;
74
+ log?: (message: string) => void;
75
+ }
76
+ /**
77
+ * Start the process-wide scheduler once (idempotent, never throws). True when
78
+ * it runs. Jobs are guarded against overlapping runs — a tick that finds its
79
+ * previous run still going is skipped, not queued — and a failure is logged
80
+ * once per DISTINCT error, then stays quiet until it changes or clears.
81
+ */
82
+ export declare function startCloudScheduler(env?: NodeJS.ProcessEnv, deps?: CloudSchedulerDeps): boolean;
83
+ /** Stop the scheduler (tests, shutdown). Safe to call when it never started. */
84
+ export declare function stopCloudScheduler(): void;
85
+ export declare function cloudSchedulerRunning(): boolean;
86
+ export declare const handleCloudApi: ApiModule;