@ashlr/hub 3.12.0 → 3.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +29 -16
  3. package/dist/authority-surface.json +274 -148
  4. package/dist/build-identity.json +2 -2
  5. package/dist/cli/authority.d.ts +145 -33
  6. package/dist/cli/authority.js +1292 -315
  7. package/dist/cli/authority.js.map +1 -1
  8. package/dist/cli/cloud.js +12 -3
  9. package/dist/cli/cloud.js.map +1 -1
  10. package/dist/cli/comms.d.ts +33 -19
  11. package/dist/cli/comms.js +128 -151
  12. package/dist/cli/comms.js.map +1 -1
  13. package/dist/cli/completions.js +1 -1
  14. package/dist/cli/completions.js.map +1 -1
  15. package/dist/cli/daemon.js +29 -0
  16. package/dist/cli/daemon.js.map +1 -1
  17. package/dist/cli/director.d.ts +8 -12
  18. package/dist/cli/director.js +17 -52
  19. package/dist/cli/director.js.map +1 -1
  20. package/dist/cli/fleet.js +4 -1
  21. package/dist/cli/fleet.js.map +1 -1
  22. package/dist/cli/help.js +1 -0
  23. package/dist/cli/help.js.map +1 -1
  24. package/dist/cli/leader.d.ts +27 -3
  25. package/dist/cli/leader.js +253 -4
  26. package/dist/cli/leader.js.map +1 -1
  27. package/dist/core/authority/protected-paths.js +11 -0
  28. package/dist/core/authority/protected-paths.js.map +1 -1
  29. package/dist/core/authority/resident.d.ts +101 -0
  30. package/dist/core/authority/resident.js +246 -0
  31. package/dist/core/authority/resident.js.map +1 -0
  32. package/dist/core/authority/server-enforcement.d.ts +110 -0
  33. package/dist/core/authority/server-enforcement.js +260 -0
  34. package/dist/core/authority/server-enforcement.js.map +1 -0
  35. package/dist/core/authority/standing-grant.d.ts +24 -4
  36. package/dist/core/authority/standing-grant.js +19 -3
  37. package/dist/core/authority/standing-grant.js.map +1 -1
  38. package/dist/core/authority/types.d.ts +43 -0
  39. package/dist/core/authority/types.js +6 -0
  40. package/dist/core/authority/types.js.map +1 -1
  41. package/dist/core/cloud/budget.js +11 -1
  42. package/dist/core/cloud/budget.js.map +1 -1
  43. package/dist/core/cloud/cloud-api.d.ts +25 -2
  44. package/dist/core/cloud/cloud-api.js +139 -5
  45. package/dist/core/cloud/cloud-api.js.map +1 -1
  46. package/dist/core/cloud/pr-actions.d.ts +93 -0
  47. package/dist/core/cloud/pr-actions.js +436 -0
  48. package/dist/core/cloud/pr-actions.js.map +1 -0
  49. package/dist/core/cloud/pr-preview.d.ts +128 -0
  50. package/dist/core/cloud/pr-preview.js +228 -0
  51. package/dist/core/cloud/pr-preview.js.map +1 -0
  52. package/dist/core/cloud/store.d.ts +2 -0
  53. package/dist/core/cloud/store.js +28 -0
  54. package/dist/core/cloud/store.js.map +1 -1
  55. package/dist/core/cloud/timeline-api.d.ts +24 -0
  56. package/dist/core/cloud/timeline-api.js +46 -0
  57. package/dist/core/cloud/timeline-api.js.map +1 -0
  58. package/dist/core/cloud/timeline-types.d.ts +62 -0
  59. package/dist/core/cloud/timeline-types.js +36 -0
  60. package/dist/core/cloud/timeline-types.js.map +1 -0
  61. package/dist/core/cloud/timeline.d.ts +102 -0
  62. package/dist/core/cloud/timeline.js +925 -0
  63. package/dist/core/cloud/timeline.js.map +1 -0
  64. package/dist/core/cloud/tracker.js +67 -0
  65. package/dist/core/cloud/tracker.js.map +1 -1
  66. package/dist/core/cloud/types.d.ts +38 -0
  67. package/dist/core/cloud/types.js +1 -1
  68. package/dist/core/cloud/types.js.map +1 -1
  69. package/dist/core/comms/change-digest.d.ts +130 -0
  70. package/dist/core/comms/change-digest.js +451 -0
  71. package/dist/core/comms/change-digest.js.map +1 -0
  72. package/dist/core/comms/director-prompt.d.ts +4 -5
  73. package/dist/core/comms/director-prompt.js +4 -71
  74. package/dist/core/comms/director-prompt.js.map +1 -1
  75. package/dist/core/comms/director.d.ts +24 -61
  76. package/dist/core/comms/director.js +29 -382
  77. package/dist/core/comms/director.js.map +1 -1
  78. package/dist/core/comms/dispatch.d.ts +37 -12
  79. package/dist/core/comms/dispatch.js +244 -177
  80. package/dist/core/comms/dispatch.js.map +1 -1
  81. package/dist/core/comms/elon-dialogue.d.ts +23 -15
  82. package/dist/core/comms/elon-dialogue.js +36 -307
  83. package/dist/core/comms/elon-dialogue.js.map +1 -1
  84. package/dist/core/comms/fleet-pulse.js +4 -7
  85. package/dist/core/comms/fleet-pulse.js.map +1 -1
  86. package/dist/core/comms/handlers.d.ts +10 -6
  87. package/dist/core/comms/handlers.js +14 -48
  88. package/dist/core/comms/handlers.js.map +1 -1
  89. package/dist/core/comms/migrations.d.ts +47 -0
  90. package/dist/core/comms/migrations.js +125 -0
  91. package/dist/core/comms/migrations.js.map +1 -0
  92. package/dist/core/comms/requests.d.ts +32 -5
  93. package/dist/core/comms/requests.js +101 -5
  94. package/dist/core/comms/requests.js.map +1 -1
  95. package/dist/core/comms/telegram-channel.d.ts +104 -0
  96. package/dist/core/comms/telegram-channel.js +622 -0
  97. package/dist/core/comms/telegram-channel.js.map +1 -0
  98. package/dist/core/comms/telegram-thread-map.d.ts +56 -0
  99. package/dist/core/comms/telegram-thread-map.js +144 -0
  100. package/dist/core/comms/telegram-thread-map.js.map +1 -0
  101. package/dist/core/daemon/capacity-publisher.d.ts +8 -1
  102. package/dist/core/daemon/capacity-publisher.js +40 -2
  103. package/dist/core/daemon/capacity-publisher.js.map +1 -1
  104. package/dist/core/daemon/loop.js +18 -4
  105. package/dist/core/daemon/loop.js.map +1 -1
  106. package/dist/core/daemon/service-install-authority.d.ts +10 -2
  107. package/dist/core/daemon/service-install-authority.js +14 -5
  108. package/dist/core/daemon/service-install-authority.js.map +1 -1
  109. package/dist/core/daemon/service.d.ts +15 -0
  110. package/dist/core/daemon/service.js +26 -0
  111. package/dist/core/daemon/service.js.map +1 -1
  112. package/dist/core/daemon/tick-deadline.d.ts +44 -0
  113. package/dist/core/daemon/tick-deadline.js +83 -0
  114. package/dist/core/daemon/tick-deadline.js.map +1 -0
  115. package/dist/core/daemon/tick-hooks.d.ts +7 -0
  116. package/dist/core/daemon/tick-hooks.js.map +1 -1
  117. package/dist/core/daemon/tick-progress.d.ts +39 -0
  118. package/dist/core/daemon/tick-progress.js +194 -0
  119. package/dist/core/daemon/tick-progress.js.map +1 -0
  120. package/dist/core/dashboard.js +3 -1
  121. package/dist/core/dashboard.js.map +1 -1
  122. package/dist/core/fleet/cloud-intake.d.ts +95 -0
  123. package/dist/core/fleet/cloud-intake.js +557 -0
  124. package/dist/core/fleet/cloud-intake.js.map +1 -0
  125. package/dist/core/fleet/dispatch-router.d.ts +13 -0
  126. package/dist/core/fleet/dispatch-router.js +32 -8
  127. package/dist/core/fleet/dispatch-router.js.map +1 -1
  128. package/dist/core/fleet/fleet-merge-state.d.ts +16 -0
  129. package/dist/core/fleet/fleet-merge-state.js.map +1 -1
  130. package/dist/core/fleet/host-merge.d.ts +14 -0
  131. package/dist/core/fleet/host-merge.js +24 -2
  132. package/dist/core/fleet/host-merge.js.map +1 -1
  133. package/dist/core/fleet/merge-gates.d.ts +21 -0
  134. package/dist/core/fleet/merge-gates.js +39 -5
  135. package/dist/core/fleet/merge-gates.js.map +1 -1
  136. package/dist/core/fleet/mirrors.d.ts +162 -6
  137. package/dist/core/fleet/mirrors.js +1051 -49
  138. package/dist/core/fleet/mirrors.js.map +1 -1
  139. package/dist/core/fleet/standing-merge-pass.d.ts +8 -0
  140. package/dist/core/fleet/standing-merge-pass.js +102 -1
  141. package/dist/core/fleet/standing-merge-pass.js.map +1 -1
  142. package/dist/core/fleet/status.d.ts +17 -0
  143. package/dist/core/fleet/status.js +22 -0
  144. package/dist/core/fleet/status.js.map +1 -1
  145. package/dist/core/fleet/tick-hooks-live.d.ts +10 -1
  146. package/dist/core/fleet/tick-hooks-live.js +57 -8
  147. package/dist/core/fleet/tick-hooks-live.js.map +1 -1
  148. package/dist/core/fleet/verify-check-run.d.ts +90 -0
  149. package/dist/core/fleet/verify-check-run.js +274 -0
  150. package/dist/core/fleet/verify-check-run.js.map +1 -0
  151. package/dist/core/git.d.ts +17 -0
  152. package/dist/core/git.js +124 -25
  153. package/dist/core/git.js.map +1 -1
  154. package/dist/core/goals/open-goals.d.ts +47 -0
  155. package/dist/core/goals/open-goals.js +33 -0
  156. package/dist/core/goals/open-goals.js.map +1 -0
  157. package/dist/core/inbox/merge.d.ts +5 -0
  158. package/dist/core/inbox/merge.js +58 -2
  159. package/dist/core/inbox/merge.js.map +1 -1
  160. package/dist/core/integrations/locus.d.ts +28 -0
  161. package/dist/core/integrations/locus.js +155 -30
  162. package/dist/core/integrations/locus.js.map +1 -1
  163. package/dist/core/integrations/telegram-format.d.ts +40 -0
  164. package/dist/core/integrations/telegram-format.js +123 -0
  165. package/dist/core/integrations/telegram-format.js.map +1 -0
  166. package/dist/core/integrations/telegram.d.ts +60 -4
  167. package/dist/core/integrations/telegram.js +161 -28
  168. package/dist/core/integrations/telegram.js.map +1 -1
  169. package/dist/core/mcp-registry.d.ts +12 -0
  170. package/dist/core/mcp-registry.js +70 -0
  171. package/dist/core/mcp-registry.js.map +1 -1
  172. package/dist/core/observability/rollup.d.ts +12 -10
  173. package/dist/core/observability/rollup.js +44 -17
  174. package/dist/core/observability/rollup.js.map +1 -1
  175. package/dist/core/resources/connection-monitor.d.ts +9 -0
  176. package/dist/core/resources/connection-monitor.js +19 -9
  177. package/dist/core/resources/connection-monitor.js.map +1 -1
  178. package/dist/core/resources/quota-refresh-lease.d.ts +17 -0
  179. package/dist/core/resources/quota-refresh-lease.js +34 -1
  180. package/dist/core/resources/quota-refresh-lease.js.map +1 -1
  181. package/dist/core/routing/budget-api.d.ts +18 -1
  182. package/dist/core/routing/budget-api.js +120 -10
  183. package/dist/core/routing/budget-api.js.map +1 -1
  184. package/dist/core/routing/budget-store.d.ts +22 -1
  185. package/dist/core/routing/budget-store.js +22 -8
  186. package/dist/core/routing/budget-store.js.map +1 -1
  187. package/dist/core/routing/readiness-types.d.ts +82 -0
  188. package/dist/core/routing/readiness-types.js +23 -0
  189. package/dist/core/routing/readiness-types.js.map +1 -0
  190. package/dist/core/routing/readiness.d.ts +103 -0
  191. package/dist/core/routing/readiness.js +480 -0
  192. package/dist/core/routing/readiness.js.map +1 -0
  193. package/dist/core/sandbox/confine.js +22 -1
  194. package/dist/core/sandbox/confine.js.map +1 -1
  195. package/dist/core/sandbox/policy.d.ts +23 -0
  196. package/dist/core/sandbox/policy.js +100 -0
  197. package/dist/core/sandbox/policy.js.map +1 -1
  198. package/dist/core/types.d.ts +13 -0
  199. package/dist/core/types.js.map +1 -1
  200. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  201. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +1204 -939
  202. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +1319 -1054
  203. package/dist/core/usage/frontier-usage.d.ts +20 -2
  204. package/dist/core/usage/frontier-usage.js +75 -17
  205. package/dist/core/usage/frontier-usage.js.map +1 -1
  206. package/dist/core/verse/account-health.js +9 -3
  207. package/dist/core/verse/account-health.js.map +1 -1
  208. package/dist/core/verse/accounts.d.ts +45 -0
  209. package/dist/core/verse/accounts.js +246 -17
  210. package/dist/core/verse/accounts.js.map +1 -1
  211. package/dist/core/verse/activity-api.d.ts +5 -1
  212. package/dist/core/verse/activity-api.js +62 -14
  213. package/dist/core/verse/activity-api.js.map +1 -1
  214. package/dist/core/verse/apps-api.js +23 -11
  215. package/dist/core/verse/apps-api.js.map +1 -1
  216. package/dist/core/verse/apps.d.ts +11 -9
  217. package/dist/core/verse/apps.js +2 -2
  218. package/dist/core/verse/apps.js.map +1 -1
  219. package/dist/core/verse/authority-api.d.ts +17 -3
  220. package/dist/core/verse/authority-api.js +122 -7
  221. package/dist/core/verse/authority-api.js.map +1 -1
  222. package/dist/core/verse/autonomy-ladder.d.ts +172 -0
  223. package/dist/core/verse/autonomy-ladder.js +251 -0
  224. package/dist/core/verse/autonomy-ladder.js.map +1 -0
  225. package/dist/core/verse/context-fit.js +7 -5
  226. package/dist/core/verse/context-fit.js.map +1 -1
  227. package/dist/core/verse/control-api.d.ts +23 -1
  228. package/dist/core/verse/control-api.js +117 -10
  229. package/dist/core/verse/control-api.js.map +1 -1
  230. package/dist/core/verse/fleet-live-api.js +13 -5
  231. package/dist/core/verse/fleet-live-api.js.map +1 -1
  232. package/dist/core/verse/folder-io.d.ts +50 -0
  233. package/dist/core/verse/folder-io.js +142 -0
  234. package/dist/core/verse/folder-io.js.map +1 -0
  235. package/dist/core/verse/git-api.js +5 -4
  236. package/dist/core/verse/git-api.js.map +1 -1
  237. package/dist/core/verse/git-ops.d.ts +10 -1
  238. package/dist/core/verse/git-ops.js +18 -2
  239. package/dist/core/verse/git-ops.js.map +1 -1
  240. package/dist/core/verse/github-api.d.ts +1 -1
  241. package/dist/core/verse/github-api.js +5 -4
  242. package/dist/core/verse/github-api.js.map +1 -1
  243. package/dist/core/verse/github-repo.js +118 -14
  244. package/dist/core/verse/github-repo.js.map +1 -1
  245. package/dist/core/verse/leader-api.d.ts +5 -4
  246. package/dist/core/verse/leader-api.js +237 -10
  247. package/dist/core/verse/leader-api.js.map +1 -1
  248. package/dist/core/verse/local-models.d.ts +10 -0
  249. package/dist/core/verse/local-models.js +10 -1
  250. package/dist/core/verse/local-models.js.map +1 -1
  251. package/dist/core/verse/login-path.d.ts +73 -0
  252. package/dist/core/verse/login-path.js +123 -14
  253. package/dist/core/verse/login-path.js.map +1 -1
  254. package/dist/core/verse/mcp-control-api.js +4 -4
  255. package/dist/core/verse/mcp-control-api.js.map +1 -1
  256. package/dist/core/verse/mcp-scope.d.ts +22 -0
  257. package/dist/core/verse/mcp-scope.js +41 -1
  258. package/dist/core/verse/mcp-scope.js.map +1 -1
  259. package/dist/core/verse/mcp-seat-view.d.ts +10 -0
  260. package/dist/core/verse/mcp-seat-view.js +30 -4
  261. package/dist/core/verse/mcp-seat-view.js.map +1 -1
  262. package/dist/core/verse/overnight-api.js +20 -2
  263. package/dist/core/verse/overnight-api.js.map +1 -1
  264. package/dist/core/verse/path-guard.d.ts +24 -0
  265. package/dist/core/verse/path-guard.js +91 -22
  266. package/dist/core/verse/path-guard.js.map +1 -1
  267. package/dist/core/verse/preview-api.js +22 -0
  268. package/dist/core/verse/preview-api.js.map +1 -1
  269. package/dist/core/verse/projects.d.ts +21 -0
  270. package/dist/core/verse/projects.js +82 -0
  271. package/dist/core/verse/projects.js.map +1 -1
  272. package/dist/core/verse/seat-readiness.d.ts +25 -0
  273. package/dist/core/verse/seat-readiness.js +43 -6
  274. package/dist/core/verse/seat-readiness.js.map +1 -1
  275. package/dist/core/verse/session-controls-api.js +5 -3
  276. package/dist/core/verse/session-controls-api.js.map +1 -1
  277. package/dist/core/verse/session-handoff.d.ts +26 -0
  278. package/dist/core/verse/session-handoff.js +90 -12
  279. package/dist/core/verse/session-handoff.js.map +1 -1
  280. package/dist/core/verse/terminal-api.js +7 -4
  281. package/dist/core/verse/terminal-api.js.map +1 -1
  282. package/dist/core/verse/terminal.js +9 -5
  283. package/dist/core/verse/terminal.js.map +1 -1
  284. package/dist/core/verse/verse-api.d.ts +3 -1
  285. package/dist/core/verse/verse-api.js +87 -27
  286. package/dist/core/verse/verse-api.js.map +1 -1
  287. package/dist/core/verse/workspaces.d.ts +51 -0
  288. package/dist/core/verse/workspaces.js +177 -47
  289. package/dist/core/verse/workspaces.js.map +1 -1
  290. package/dist/core/vision/leader-apply.d.ts +40 -0
  291. package/dist/core/vision/leader-apply.js +101 -30
  292. package/dist/core/vision/leader-apply.js.map +1 -1
  293. package/dist/core/vision/leader-cadence.d.ts +114 -0
  294. package/dist/core/vision/leader-cadence.js +127 -0
  295. package/dist/core/vision/leader-cadence.js.map +1 -0
  296. package/dist/core/vision/leader-goal-evidence.d.ts +25 -0
  297. package/dist/core/vision/leader-goal-evidence.js +36 -0
  298. package/dist/core/vision/leader-goal-evidence.js.map +1 -0
  299. package/dist/core/vision/leader-health.d.ts +53 -0
  300. package/dist/core/vision/leader-health.js +92 -0
  301. package/dist/core/vision/leader-health.js.map +1 -0
  302. package/dist/core/vision/leader-operator.d.ts +176 -0
  303. package/dist/core/vision/leader-operator.js +355 -0
  304. package/dist/core/vision/leader-operator.js.map +1 -0
  305. package/dist/core/vision/leader-run-chain.d.ts +41 -0
  306. package/dist/core/vision/leader-run-chain.js +54 -0
  307. package/dist/core/vision/leader-run-chain.js.map +1 -0
  308. package/dist/core/vision/leader-seat-plan.d.ts +68 -0
  309. package/dist/core/vision/leader-seat-plan.js +93 -0
  310. package/dist/core/vision/leader-seat-plan.js.map +1 -0
  311. package/dist/core/vision/leader-seat.d.ts +71 -5
  312. package/dist/core/vision/leader-seat.js +235 -33
  313. package/dist/core/vision/leader-seat.js.map +1 -1
  314. package/dist/core/vision/leader-thread-types.d.ts +104 -0
  315. package/dist/core/vision/leader-thread-types.js +9 -0
  316. package/dist/core/vision/leader-thread-types.js.map +1 -0
  317. package/dist/core/vision/leader-thread.d.ts +138 -0
  318. package/dist/core/vision/leader-thread.js +926 -0
  319. package/dist/core/vision/leader-thread.js.map +1 -0
  320. package/dist/core/vision/leader-types.d.ts +75 -1
  321. package/dist/core/vision/leader.d.ts +88 -18
  322. package/dist/core/vision/leader.js +269 -69
  323. package/dist/core/vision/leader.js.map +1 -1
  324. package/dist/core/web/public/next/assets/{ActionMenu-B4-39f2S.js → ActionMenu-CIiX2X8w.js} +2 -2
  325. package/dist/core/web/public/next/assets/{ActionMenu-B4-39f2S.js.map → ActionMenu-CIiX2X8w.js.map} +1 -1
  326. package/dist/core/web/public/next/assets/Advanced-DHsysoIL.js +2 -0
  327. package/dist/core/web/public/next/assets/{Advanced-B-LqYXvd.js.map → Advanced-DHsysoIL.js.map} +1 -1
  328. package/dist/core/web/public/next/assets/App-CMeAocmW.js +7 -0
  329. package/dist/core/web/public/next/assets/{App-E2zCDRxm.js.map → App-CMeAocmW.js.map} +1 -1
  330. package/dist/core/web/public/next/assets/AppsSection-DISYnMnc.js +2 -0
  331. package/dist/core/web/public/next/assets/{AppsSection-8wXPPhZb.js.map → AppsSection-DISYnMnc.js.map} +1 -1
  332. package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js +2 -0
  333. package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js.map +1 -0
  334. package/dist/core/web/public/next/assets/AutonomyOffState-CEPSZToP.js +3 -0
  335. package/dist/core/web/public/next/assets/AutonomyOffState-CEPSZToP.js.map +1 -0
  336. package/dist/core/web/public/next/assets/AutonomyOffState-CmSSTHVe.css +1 -0
  337. package/dist/core/web/public/next/assets/AutonomySection-DWc3ciAD.js +2 -0
  338. package/dist/core/web/public/next/assets/{AutonomySection-B46igJKR.js.map → AutonomySection-DWc3ciAD.js.map} +1 -1
  339. package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js +2 -0
  340. package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js.map +1 -0
  341. package/dist/core/web/public/next/assets/{BranchBar-BRkrEQGs.js → BranchBar-BxhdiIpx.js} +2 -2
  342. package/dist/core/web/public/next/assets/{BranchBar-BRkrEQGs.js.map → BranchBar-BxhdiIpx.js.map} +1 -1
  343. package/dist/core/web/public/next/assets/BudgetControl-C-0KhjRS.js +2 -0
  344. package/dist/core/web/public/next/assets/BudgetControl-C-0KhjRS.js.map +1 -0
  345. package/dist/core/web/public/next/assets/{Button-BhO-WKPp.js → Button-D90dzI_o.js} +2 -2
  346. package/dist/core/web/public/next/assets/{Button-BhO-WKPp.js.map → Button-D90dzI_o.js.map} +1 -1
  347. package/dist/core/web/public/next/assets/{CapacityStrip-CkFz5vq2.js → CapacityStrip-qKDBC65C.js} +2 -2
  348. package/dist/core/web/public/next/assets/{CapacityStrip-CkFz5vq2.js.map → CapacityStrip-qKDBC65C.js.map} +1 -1
  349. package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js +2 -0
  350. package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js.map +1 -0
  351. package/dist/core/web/public/next/assets/ChartFrame-DyjmyV8N.css +1 -0
  352. package/dist/core/web/public/next/assets/ChatSection-DlT4QU6a.js +3 -0
  353. package/dist/core/web/public/next/assets/ChatSection-DlT4QU6a.js.map +1 -0
  354. package/dist/core/web/public/next/assets/{CloudBudgetForm-Bd91iStN.js → CloudBudgetForm-BrNun_Yu.js} +2 -2
  355. package/dist/core/web/public/next/assets/{CloudBudgetForm-Bd91iStN.js.map → CloudBudgetForm-BrNun_Yu.js.map} +1 -1
  356. package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js +2 -0
  357. package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js.map +1 -0
  358. package/dist/core/web/public/next/assets/CommandSection-B0xuU-yZ.css +1 -0
  359. package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js +3 -0
  360. package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js.map +1 -0
  361. package/dist/core/web/public/next/assets/{ConfirmDialog-Bv4hdK2T.js → ConfirmDialog-BR4nZQ2D.js} +2 -2
  362. package/dist/core/web/public/next/assets/{ConfirmDialog-Bv4hdK2T.js.map → ConfirmDialog-BR4nZQ2D.js.map} +1 -1
  363. package/dist/core/web/public/next/assets/{DeleteChatDialog-CH1Ix8Eh.js → DeleteChatDialog-BCfP12GH.js} +2 -2
  364. package/dist/core/web/public/next/assets/{DeleteChatDialog-CH1Ix8Eh.js.map → DeleteChatDialog-BCfP12GH.js.map} +1 -1
  365. package/dist/core/web/public/next/assets/{Dialog-BSsIFNqD.js → Dialog-D3msQlCj.js} +2 -2
  366. package/dist/core/web/public/next/assets/{Dialog-BSsIFNqD.js.map → Dialog-D3msQlCj.js.map} +1 -1
  367. package/dist/core/web/public/next/assets/{DiffPane-BpNuJmth.js → DiffPane-Ix6hvXlY.js} +2 -2
  368. package/dist/core/web/public/next/assets/{DiffPane-BpNuJmth.js.map → DiffPane-Ix6hvXlY.js.map} +1 -1
  369. package/dist/core/web/public/next/assets/{DiffViewer-CJarUvs0.js → DiffViewer-C4WKsCIe.js} +2 -2
  370. package/dist/core/web/public/next/assets/{DiffViewer-CJarUvs0.js.map → DiffViewer-C4WKsCIe.js.map} +1 -1
  371. package/dist/core/web/public/next/assets/DockHost-aWP7liri.js +2 -0
  372. package/dist/core/web/public/next/assets/{DockHost-DW9q0NdR.js.map → DockHost-aWP7liri.js.map} +1 -1
  373. package/dist/core/web/public/next/assets/{EmptyState-DPrd2aak.js → EmptyState-D2IRy3Cg.js} +2 -2
  374. package/dist/core/web/public/next/assets/{EmptyState-DPrd2aak.js.map → EmptyState-D2IRy3Cg.js.map} +1 -1
  375. package/dist/core/web/public/next/assets/{Epistemic-D7MxSmED.js → Epistemic-DMr18muX.js} +2 -2
  376. package/dist/core/web/public/next/assets/{Epistemic-D7MxSmED.js.map → Epistemic-DMr18muX.js.map} +1 -1
  377. package/dist/core/web/public/next/assets/EvidenceTimeline-DXmmz6Fi.js +2 -0
  378. package/dist/core/web/public/next/assets/EvidenceTimeline-DXmmz6Fi.js.map +1 -0
  379. package/dist/core/web/public/next/assets/EvidenceTimeline-PBDAiSuG.css +1 -0
  380. package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js +3 -0
  381. package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js.map +1 -0
  382. package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js +2 -0
  383. package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js.map +1 -0
  384. package/dist/core/web/public/next/assets/{GearTray-CIPtzeIx.js → GearTray-Dt-ee32-.js} +2 -2
  385. package/dist/core/web/public/next/assets/{GearTray-CIPtzeIx.js.map → GearTray-Dt-ee32-.js.map} +1 -1
  386. package/dist/core/web/public/next/assets/GrowthSection-P9EUfGeA.js +2 -0
  387. package/dist/core/web/public/next/assets/{GrowthSection-iiQg6wvK.js.map → GrowthSection-P9EUfGeA.js.map} +1 -1
  388. package/dist/core/web/public/next/assets/{HandoffDialog-DrQ6ofuy.js → HandoffDialog-CLJQLe7M.js} +2 -2
  389. package/dist/core/web/public/next/assets/{HandoffDialog-DrQ6ofuy.js.map → HandoffDialog-CLJQLe7M.js.map} +1 -1
  390. package/dist/core/web/public/next/assets/{Input-C0MQxEM6.js → Input-D_KRJA9V.js} +2 -2
  391. package/dist/core/web/public/next/assets/{Input-C0MQxEM6.js.map → Input-D_KRJA9V.js.map} +1 -1
  392. package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js +2 -0
  393. package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js.map +1 -0
  394. package/dist/core/web/public/next/assets/LeaderCard-DNsbLwY3.css +1 -0
  395. package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js +2 -0
  396. package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js.map +1 -0
  397. package/dist/core/web/public/next/assets/LeaderConversation-DPHUTq6W.css +1 -0
  398. package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js +2 -0
  399. package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js.map +1 -0
  400. package/dist/core/web/public/next/assets/McpSection-DGbRcyv8.js +2 -0
  401. package/dist/core/web/public/next/assets/{McpSection-BRuCcTjT.js.map → McpSection-DGbRcyv8.js.map} +1 -1
  402. package/dist/core/web/public/next/assets/{MessageMarkdown-bRvD5nSc.js → MessageMarkdown-DFvk06qG.js} +3 -3
  403. package/dist/core/web/public/next/assets/{MessageMarkdown-bRvD5nSc.js.map → MessageMarkdown-DFvk06qG.js.map} +1 -1
  404. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-FjjkPKA2.js → MessageMarkdownRenderer-BAv4oEUf.js} +2 -2
  405. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-FjjkPKA2.js.map → MessageMarkdownRenderer-BAv4oEUf.js.map} +1 -1
  406. package/dist/core/web/public/next/assets/{Meter-CFNLpwA-.js → Meter-CMj-VafN.js} +2 -2
  407. package/dist/core/web/public/next/assets/{Meter-CFNLpwA-.js.map → Meter-CMj-VafN.js.map} +1 -1
  408. package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js +3 -0
  409. package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js.map +1 -0
  410. package/dist/core/web/public/next/assets/{MutationTokenDialog-T7gv3a9r.js → MutationTokenDialog-DbnO8aYi.js} +2 -2
  411. package/dist/core/web/public/next/assets/{MutationTokenDialog-T7gv3a9r.js.map → MutationTokenDialog-DbnO8aYi.js.map} +1 -1
  412. package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js +3 -0
  413. package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js.map +1 -0
  414. package/dist/core/web/public/next/assets/NeedsYouList-CCsijdWt.js +2 -0
  415. package/dist/core/web/public/next/assets/{NeedsYouList-BgH8ezqf.js.map → NeedsYouList-CCsijdWt.js.map} +1 -1
  416. package/dist/core/web/public/next/assets/NeedsYouList-CH6Mq-E_.css +1 -0
  417. package/dist/core/web/public/next/assets/NewChatDialog-BlCHtOIr.js +3 -0
  418. package/dist/core/web/public/next/assets/{NewChatDialog-Db5Xjrk8.js.map → NewChatDialog-BlCHtOIr.js.map} +1 -1
  419. package/dist/core/web/public/next/assets/OnboardingFlow-Cy9BA9eR.js +3 -0
  420. package/dist/core/web/public/next/assets/OnboardingFlow-Cy9BA9eR.js.map +1 -0
  421. package/dist/core/web/public/next/assets/OnboardingGate-BXpNFoLt.js +3 -0
  422. package/dist/core/web/public/next/assets/{OnboardingGate-C4VXn7BJ.js.map → OnboardingGate-BXpNFoLt.js.map} +1 -1
  423. package/dist/core/web/public/next/assets/PreviewPane-COid5A0f.js +2 -0
  424. package/dist/core/web/public/next/assets/{PreviewPane-BPBbcROb.js.map → PreviewPane-COid5A0f.js.map} +1 -1
  425. package/dist/core/web/public/next/assets/{ProviderLogo-CT2cSfkg.js → ProviderLogo-Cq-CYIwT.js} +2 -2
  426. package/dist/core/web/public/next/assets/{ProviderLogo-CT2cSfkg.js.map → ProviderLogo-Cq-CYIwT.js.map} +1 -1
  427. package/dist/core/web/public/next/assets/{RailStatus-Vgl0GYtd.js → RailStatus-Co5UB6We.js} +2 -2
  428. package/dist/core/web/public/next/assets/{RailStatus-Vgl0GYtd.js.map → RailStatus-Co5UB6We.js.map} +1 -1
  429. package/dist/core/web/public/next/assets/{RefreshIndicator-CSyqpY_q.js → RefreshIndicator-DO9ibnSq.js} +2 -2
  430. package/dist/core/web/public/next/assets/{RefreshIndicator-CSyqpY_q.js.map → RefreshIndicator-DO9ibnSq.js.map} +1 -1
  431. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-Dr2WRgkq.js +7 -0
  432. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BX2nkdmZ.js.map → ResourcePoolConsoleApp-Dr2WRgkq.js.map} +1 -1
  433. package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js +3 -0
  434. package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js.map +1 -0
  435. package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js +2 -0
  436. package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js.map +1 -0
  437. package/dist/core/web/public/next/assets/ResourcesDrawer-DrGoO8KG.css +1 -0
  438. package/dist/core/web/public/next/assets/{RouteErrorBoundary-BaC7YVzR.js → RouteErrorBoundary-SkNhhUbt.js} +2 -2
  439. package/dist/core/web/public/next/assets/{RouteErrorBoundary-BaC7YVzR.js.map → RouteErrorBoundary-SkNhhUbt.js.map} +1 -1
  440. package/dist/core/web/public/next/assets/{RunInCloudAction-D5PDHJPE.js → RunInCloudAction-BXPlZwJQ.js} +2 -2
  441. package/dist/core/web/public/next/assets/{RunInCloudAction-D5PDHJPE.js.map → RunInCloudAction-BXPlZwJQ.js.map} +1 -1
  442. package/dist/core/web/public/next/assets/{SeatSelector-Cg75LInq.js → SeatSelector-J5R3zDkB.js} +3 -3
  443. package/dist/core/web/public/next/assets/{SeatSelector-Cg75LInq.js.map → SeatSelector-J5R3zDkB.js.map} +1 -1
  444. package/dist/core/web/public/next/assets/{Segmented-CametjLt.js → Segmented-CGh_-tBb.js} +2 -2
  445. package/dist/core/web/public/next/assets/{Segmented-CametjLt.js.map → Segmented-CGh_-tBb.js.map} +1 -1
  446. package/dist/core/web/public/next/assets/{Select-De52fghU.js → Select-CWnmUzs3.js} +2 -2
  447. package/dist/core/web/public/next/assets/{Select-De52fghU.js.map → Select-CWnmUzs3.js.map} +1 -1
  448. package/dist/core/web/public/next/assets/{SessionGate-CzlcNq3O.js → SessionGate-sp4KsnUo.js} +2 -2
  449. package/dist/core/web/public/next/assets/{SessionGate-CzlcNq3O.js.map → SessionGate-sp4KsnUo.js.map} +1 -1
  450. package/dist/core/web/public/next/assets/{SessionInsightChip-Bk_Owa7u.js → SessionInsightChip-DLFAzdbi.js} +2 -2
  451. package/dist/core/web/public/next/assets/{SessionInsightChip-Bk_Owa7u.js.map → SessionInsightChip-DLFAzdbi.js.map} +1 -1
  452. package/dist/core/web/public/next/assets/{SessionSearch-C6C8DHN8.js → SessionSearch-DbFjwR1h.js} +2 -2
  453. package/dist/core/web/public/next/assets/{SessionSearch-C6C8DHN8.js.map → SessionSearch-DbFjwR1h.js.map} +1 -1
  454. package/dist/core/web/public/next/assets/{SettingsSection-mI9wQYZg.js → SettingsSection-Ch23msJ5.js} +2 -2
  455. package/dist/core/web/public/next/assets/SettingsSection-Ch23msJ5.js.map +1 -0
  456. package/dist/core/web/public/next/assets/SetupChecklist-Bd76MBAR.js +2 -0
  457. package/dist/core/web/public/next/assets/SetupChecklist-Bd76MBAR.js.map +1 -0
  458. package/dist/core/web/public/next/assets/SetupChecklist-BhZpFLsj.css +1 -0
  459. package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js +3 -0
  460. package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js.map +1 -0
  461. package/dist/core/web/public/next/assets/{Sheet-CJhK9Dqv.js → Sheet-BZ2AG4Eo.js} +2 -2
  462. package/dist/core/web/public/next/assets/{Sheet-CJhK9Dqv.js.map → Sheet-BZ2AG4Eo.js.map} +1 -1
  463. package/dist/core/web/public/next/assets/{ShortcutsOverlay-DDW-i9Fc.js → ShortcutsOverlay-C8n8y3zf.js} +2 -2
  464. package/dist/core/web/public/next/assets/{ShortcutsOverlay-DDW-i9Fc.js.map → ShortcutsOverlay-C8n8y3zf.js.map} +1 -1
  465. package/dist/core/web/public/next/assets/Sidebar-DN--cPYN.js +3 -0
  466. package/dist/core/web/public/next/assets/Sidebar-DN--cPYN.js.map +1 -0
  467. package/dist/core/web/public/next/assets/{Slider-Bwd9HfXl.js → Slider-KVoJLDD6.js} +2 -2
  468. package/dist/core/web/public/next/assets/{Slider-Bwd9HfXl.js.map → Slider-KVoJLDD6.js.map} +1 -1
  469. package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js +2 -0
  470. package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js.map +1 -0
  471. package/dist/core/web/public/next/assets/StatTile-CNCqDoPO.css +1 -0
  472. package/dist/core/web/public/next/assets/{StatusBadge-DHKRtttH.js → StatusBadge-CXsYqmdU.js} +2 -2
  473. package/dist/core/web/public/next/assets/{StatusBadge-DHKRtttH.js.map → StatusBadge-CXsYqmdU.js.map} +1 -1
  474. package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js +2 -0
  475. package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js.map +1 -0
  476. package/dist/core/web/public/next/assets/{Surface-D--LXgQm.js → Surface-BfDmQcKe.js} +2 -2
  477. package/dist/core/web/public/next/assets/{Surface-D--LXgQm.js.map → Surface-BfDmQcKe.js.map} +1 -1
  478. package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js +2 -0
  479. package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js.map +1 -0
  480. package/dist/core/web/public/next/assets/Swimlane-Bf4Rjoy9.css +1 -0
  481. package/dist/core/web/public/next/assets/{Switch-PMixU6b0.js → Switch-9NtO_6Lj.js} +2 -2
  482. package/dist/core/web/public/next/assets/{Switch-PMixU6b0.js.map → Switch-9NtO_6Lj.js.map} +1 -1
  483. package/dist/core/web/public/next/assets/{Tag-fordBsrJ.js → Tag-DscCRFcN.js} +2 -2
  484. package/dist/core/web/public/next/assets/{Tag-fordBsrJ.js.map → Tag-DscCRFcN.js.map} +1 -1
  485. package/dist/core/web/public/next/assets/{TerminalPane-BSnGdUuF.js → TerminalPane-B668-DJW.js} +5 -5
  486. package/dist/core/web/public/next/assets/{TerminalPane-BSnGdUuF.js.map → TerminalPane-B668-DJW.js.map} +1 -1
  487. package/dist/core/web/public/next/assets/UniverseConsoleApp-BUV_brY7.js +2 -0
  488. package/dist/core/web/public/next/assets/{UniverseConsoleApp-DtXFhAhw.js.map → UniverseConsoleApp-BUV_brY7.js.map} +1 -1
  489. package/dist/core/web/public/next/assets/{UniverseView-sWm3pnTW.js → UniverseView-DG70zH0W.js} +4 -4
  490. package/dist/core/web/public/next/assets/{UniverseView-sWm3pnTW.js.map → UniverseView-DG70zH0W.js.map} +1 -1
  491. package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js +3 -0
  492. package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js.map +1 -0
  493. package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js +3 -0
  494. package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js.map +1 -0
  495. package/dist/core/web/public/next/assets/Workspace-D1nP9BhD.js +10 -0
  496. package/dist/core/web/public/next/assets/{Workspace-BQSZFSeO.js.map → Workspace-D1nP9BhD.js.map} +1 -1
  497. package/dist/core/web/public/next/assets/actions-CY-PjpGc.js +2 -0
  498. package/dist/core/web/public/next/assets/{actions-Ci6I4C0l.js.map → actions-CY-PjpGc.js.map} +1 -1
  499. package/dist/core/web/public/next/assets/actions-DkWhhWIg.css +1 -0
  500. package/dist/core/web/public/next/assets/{apps-model-DlwnfqwJ.js → apps-model-Du02KhAf.js} +2 -2
  501. package/dist/core/web/public/next/assets/{apps-model-DlwnfqwJ.js.map → apps-model-Du02KhAf.js.map} +1 -1
  502. package/dist/core/web/public/next/assets/{authority-model-BFuPezSo.js → authority-model-79SeuKlJ.js} +2 -2
  503. package/dist/core/web/public/next/assets/{authority-model-BFuPezSo.js.map → authority-model-79SeuKlJ.js.map} +1 -1
  504. package/dist/core/web/public/next/assets/autonomy-ladder-BGWmZzP7.css +1 -0
  505. package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js +2 -0
  506. package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js.map +1 -0
  507. package/dist/core/web/public/next/assets/budget-queries-D8QV5XtH.js +2 -0
  508. package/dist/core/web/public/next/assets/{budget-queries-DsAjH8ac.js.map → budget-queries-D8QV5XtH.js.map} +1 -1
  509. package/dist/core/web/public/next/assets/{capacity-strip-model-Dn1cNOhz.js → capacity-strip-model-BwZ1ZbkU.js} +2 -2
  510. package/dist/core/web/public/next/assets/{capacity-strip-model-Dn1cNOhz.js.map → capacity-strip-model-BwZ1ZbkU.js.map} +1 -1
  511. package/dist/core/web/public/next/assets/charts-BZ50mZD_.js +2 -0
  512. package/dist/core/web/public/next/assets/charts-BZ50mZD_.js.map +1 -0
  513. package/dist/core/web/public/next/assets/charts-ClCB18la.css +1 -0
  514. package/dist/core/web/public/next/assets/cloud-model-BDivRMqv.js +2 -0
  515. package/dist/core/web/public/next/assets/{cloud-model-CX407gPY.js.map → cloud-model-BDivRMqv.js.map} +1 -1
  516. package/dist/core/web/public/next/assets/{cloud-queries-QAhpExlz.js → cloud-queries-BPQQ5_pJ.js} +2 -2
  517. package/dist/core/web/public/next/assets/{cloud-queries-QAhpExlz.js.map → cloud-queries-BPQQ5_pJ.js.map} +1 -1
  518. package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js → colors-DvK0wMHH.js} +2 -2
  519. package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js.map → colors-DvK0wMHH.js.map} +1 -1
  520. package/dist/core/web/public/next/assets/{command-catalog-CF0cQQac.js → command-catalog-BIntSa9l.js} +2 -2
  521. package/dist/core/web/public/next/assets/command-catalog-BIntSa9l.js.map +1 -0
  522. package/dist/core/web/public/next/assets/{context-model-Co4wh3SM.js → context-model-Br8t9jgG.js} +2 -2
  523. package/dist/core/web/public/next/assets/{context-model-Co4wh3SM.js.map → context-model-Br8t9jgG.js.map} +1 -1
  524. package/dist/core/web/public/next/assets/{context-model-DV1zCfAm.js → context-model-CokrgEUq.js} +3 -3
  525. package/dist/core/web/public/next/assets/{context-model-DV1zCfAm.js.map → context-model-CokrgEUq.js.map} +1 -1
  526. package/dist/core/web/public/next/assets/context-queries-eL3caKVG.js +2 -0
  527. package/dist/core/web/public/next/assets/{context-queries-CktFQqSS.js.map → context-queries-eL3caKVG.js.map} +1 -1
  528. package/dist/core/web/public/next/assets/{control-queries-DAvlh_YM.js → control-queries-B9K-wmcB.js} +2 -2
  529. package/dist/core/web/public/next/assets/{control-queries-DAvlh_YM.js.map → control-queries-B9K-wmcB.js.map} +1 -1
  530. package/dist/core/web/public/next/assets/copy-setup-XMgCC5f8.js +2 -0
  531. package/dist/core/web/public/next/assets/copy-setup-XMgCC5f8.js.map +1 -0
  532. package/dist/core/web/public/next/assets/{dock-icons-BFuBbqJl.js → dock-icons-BJ6ZqB2t.js} +2 -2
  533. package/dist/core/web/public/next/assets/{dock-icons-BFuBbqJl.js.map → dock-icons-BJ6ZqB2t.js.map} +1 -1
  534. package/dist/core/web/public/next/assets/{fleet-model-Dfd5JyLR.js → fleet-model-BvDR3gjp.js} +2 -2
  535. package/dist/core/web/public/next/assets/{fleet-model-Dfd5JyLR.js.map → fleet-model-BvDR3gjp.js.map} +1 -1
  536. package/dist/core/web/public/next/assets/{fleet-queries-RtMTd5rR.js → fleet-queries-W2UFVMZJ.js} +2 -2
  537. package/dist/core/web/public/next/assets/{fleet-queries-RtMTd5rR.js.map → fleet-queries-W2UFVMZJ.js.map} +1 -1
  538. package/dist/core/web/public/next/assets/{focus-trap-BdrbWfC4.js → focus-trap-CtI1SlMX.js} +2 -2
  539. package/dist/core/web/public/next/assets/{focus-trap-BdrbWfC4.js.map → focus-trap-CtI1SlMX.js.map} +1 -1
  540. package/dist/core/web/public/next/assets/format-CH4g_sl1.js +2 -0
  541. package/dist/core/web/public/next/assets/format-CH4g_sl1.js.map +1 -0
  542. package/dist/core/web/public/next/assets/{format-DKrNjdwD.js → format-D7nBg2bn.js} +2 -2
  543. package/dist/core/web/public/next/assets/{format-DKrNjdwD.js.map → format-D7nBg2bn.js.map} +1 -1
  544. package/dist/core/web/public/next/assets/{git-model-_BnI_Ogh.js → git-model-Dnkd1TnK.js} +2 -2
  545. package/dist/core/web/public/next/assets/{git-model-_BnI_Ogh.js.map → git-model-Dnkd1TnK.js.map} +1 -1
  546. package/dist/core/web/public/next/assets/global-CMNW_dqn.js +2 -0
  547. package/dist/core/web/public/next/assets/{global-CNNGMril.js.map → global-CMNW_dqn.js.map} +1 -1
  548. package/dist/core/web/public/next/assets/guarded-runners-YeAc9wLQ.js +2 -0
  549. package/dist/core/web/public/next/assets/{guarded-runners-DPh2d32e.js.map → guarded-runners-YeAc9wLQ.js.map} +1 -1
  550. package/dist/core/web/public/next/assets/{icons-0haWy6nh.js → icons-D1sYbCTQ.js} +2 -2
  551. package/dist/core/web/public/next/assets/{icons-0haWy6nh.js.map → icons-D1sYbCTQ.js.map} +1 -1
  552. package/dist/core/web/public/next/assets/{index-QesfXBsb.js → index-DZ-UQ7v8.js} +3 -3
  553. package/dist/core/web/public/next/assets/{index-QesfXBsb.js.map → index-DZ-UQ7v8.js.map} +1 -1
  554. package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js +2 -0
  555. package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js.map +1 -0
  556. package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js +2 -0
  557. package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js.map +1 -0
  558. package/dist/core/web/public/next/assets/{live-model-De-q0ZFK.js → live-model-D_32RAOR.js} +2 -2
  559. package/dist/core/web/public/next/assets/live-model-D_32RAOR.js.map +1 -0
  560. package/dist/core/web/public/next/assets/{mind.module-BrK2nFOL.js → mind.module-7hA92hRg.js} +2 -2
  561. package/dist/core/web/public/next/assets/{mind.module-BrK2nFOL.js.map → mind.module-7hA92hRg.js.map} +1 -1
  562. package/dist/core/web/public/next/assets/mutations-DQPbFdRJ.js +2 -0
  563. package/dist/core/web/public/next/assets/{mutations-DTCtKCn_.js.map → mutations-DQPbFdRJ.js.map} +1 -1
  564. package/dist/core/web/public/next/assets/{nav-KmGX0CVz.js → nav-0dOYe2rJ.js} +2 -2
  565. package/dist/core/web/public/next/assets/{nav-KmGX0CVz.js.map → nav-0dOYe2rJ.js.map} +1 -1
  566. package/dist/core/web/public/next/assets/{overnight-queries-mlO0xzsr.js → overnight-queries-C4wOnFtE.js} +2 -2
  567. package/dist/core/web/public/next/assets/{overnight-queries-mlO0xzsr.js.map → overnight-queries-C4wOnFtE.js.map} +1 -1
  568. package/dist/core/web/public/next/assets/primitives-2A5Eq8FQ.js +1 -0
  569. package/dist/core/web/public/next/assets/{queries-CyBE8nsW.js → queries-BTXWdZzU.js} +2 -2
  570. package/dist/core/web/public/next/assets/{queries-CyBE8nsW.js.map → queries-BTXWdZzU.js.map} +1 -1
  571. package/dist/core/web/public/next/assets/{reasoning-pref-CaoA4_Vl.js → reasoning-pref-Ca6lN6x_.js} +2 -2
  572. package/dist/core/web/public/next/assets/{reasoning-pref-CaoA4_Vl.js.map → reasoning-pref-Ca6lN6x_.js.map} +1 -1
  573. package/dist/core/web/public/next/assets/{reveal-anchor-BP1VqnPU.js → reveal-anchor-DfNLgK_I.js} +2 -2
  574. package/dist/core/web/public/next/assets/{reveal-anchor-BP1VqnPU.js.map → reveal-anchor-DfNLgK_I.js.map} +1 -1
  575. package/dist/core/web/public/next/assets/seat-subscription-C5uPHBsN.js +2 -0
  576. package/dist/core/web/public/next/assets/{seat-subscription-C5Tvr0WQ.js.map → seat-subscription-C5uPHBsN.js.map} +1 -1
  577. package/dist/core/web/public/next/assets/{sidebar-model-B5Qk95k_.js → sidebar-model-CLCdqwkR.js} +2 -2
  578. package/dist/core/web/public/next/assets/{sidebar-model-B5Qk95k_.js.map → sidebar-model-CLCdqwkR.js.map} +1 -1
  579. package/dist/core/web/public/next/assets/{slots-DHKQDoE6.js → slots-C-qBeu-8.js} +3 -3
  580. package/dist/core/web/public/next/assets/{slots-DHKQDoE6.js.map → slots-C-qBeu-8.js.map} +1 -1
  581. package/dist/core/web/public/next/assets/{surface-data-CchClvHo.js → surface-data-Dj71tdD-.js} +2 -2
  582. package/dist/core/web/public/next/assets/{surface-data-CchClvHo.js.map → surface-data-Dj71tdD-.js.map} +1 -1
  583. package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js +2 -0
  584. package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js.map +1 -0
  585. package/dist/core/web/public/next/assets/{tasks-model-D6WFVULI.js → tasks-model-O8yR5YXp.js} +2 -2
  586. package/dist/core/web/public/next/assets/{tasks-model-D6WFVULI.js.map → tasks-model-O8yR5YXp.js.map} +1 -1
  587. package/dist/core/web/public/next/assets/{terminal-icons-BvCvuXk2.js → terminal-icons-CoRZq9iO.js} +2 -2
  588. package/dist/core/web/public/next/assets/{terminal-icons-BvCvuXk2.js.map → terminal-icons-CoRZq9iO.js.map} +1 -1
  589. package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js +2 -0
  590. package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js.map +1 -0
  591. package/dist/core/web/public/next/assets/types-IYKrYLku.js +2 -0
  592. package/dist/core/web/public/next/assets/types-IYKrYLku.js.map +1 -0
  593. package/dist/core/web/public/next/assets/{usage-queries-D1SU1t7r.js → usage-queries-AdjEyEtn.js} +2 -2
  594. package/dist/core/web/public/next/assets/{usage-queries-D1SU1t7r.js.map → usage-queries-AdjEyEtn.js.map} +1 -1
  595. package/dist/core/web/public/next/assets/{use-guarded-action-BZmBv7CJ.js → use-guarded-action-CuuMHeDX.js} +2 -2
  596. package/dist/core/web/public/next/assets/{use-guarded-action-BZmBv7CJ.js.map → use-guarded-action-CuuMHeDX.js.map} +1 -1
  597. package/dist/core/web/public/next/assets/{use-ticker-CkJ4-0wU.js → use-ticker-BBcp02SZ.js} +2 -2
  598. package/dist/core/web/public/next/assets/{use-ticker-CkJ4-0wU.js.map → use-ticker-BBcp02SZ.js.map} +1 -1
  599. package/dist/core/web/public/next/assets/{use-token-gate-CYcfk_GS.js → use-token-gate-CbXVYQYI.js} +2 -2
  600. package/dist/core/web/public/next/assets/{use-token-gate-CYcfk_GS.js.map → use-token-gate-CbXVYQYI.js.map} +1 -1
  601. package/dist/core/web/public/next/assets/{useOnboarding-CujRS6PK.js → useOnboarding-C_Fpe_sH.js} +2 -2
  602. package/dist/core/web/public/next/assets/{useOnboarding-CujRS6PK.js.map → useOnboarding-C_Fpe_sH.js.map} +1 -1
  603. package/dist/core/web/public/next/assets/{useSeatsRefresh-BEaQdkZs.js → useSeatsRefresh-Co1CnxLc.js} +2 -2
  604. package/dist/core/web/public/next/assets/{useSeatsRefresh-BEaQdkZs.js.map → useSeatsRefresh-Co1CnxLc.js.map} +1 -1
  605. package/dist/core/web/public/next/assets/{useVerseTranscript-BQ0J6Xhx.js → useVerseTranscript-DgbigUlV.js} +2 -2
  606. package/dist/core/web/public/next/assets/{useVerseTranscript-BQ0J6Xhx.js.map → useVerseTranscript-DgbigUlV.js.map} +1 -1
  607. package/dist/core/web/public/next/assets/{verse-icons-DndgEgKS.js → verse-icons-S56hIiXS.js} +2 -2
  608. package/dist/core/web/public/next/assets/{verse-icons-DndgEgKS.js.map → verse-icons-S56hIiXS.js.map} +1 -1
  609. package/dist/core/web/public/next/assets/verse-model-DAVevkNe.js +2 -0
  610. package/dist/core/web/public/next/assets/{verse-model-MMySehjj.js.map → verse-model-DAVevkNe.js.map} +1 -1
  611. package/dist/core/web/public/next/assets/{warmup-CNEH_-be.js → warmup-B_RAtNZ_.js} +3 -3
  612. package/dist/core/web/public/next/assets/{warmup-CNEH_-be.js.map → warmup-B_RAtNZ_.js.map} +1 -1
  613. package/dist/core/web/public/next/assets/why-seat-model-M_r0wX3b.js +2 -0
  614. package/dist/core/web/public/next/assets/why-seat-model-M_r0wX3b.js.map +1 -0
  615. package/dist/core/web/public/next/assets/{workspace-model-Dukb2wwv.js → workspace-model-dji5-Al3.js} +2 -2
  616. package/dist/core/web/public/next/assets/{workspace-model-Dukb2wwv.js.map → workspace-model-dji5-Al3.js.map} +1 -1
  617. package/dist/core/web/public/next/index.html +1 -1
  618. package/dist/core/web/read-projection-worker.js +2 -1
  619. package/dist/core/web/read-projection-worker.js.map +1 -1
  620. package/dist/core/web/read-projections.d.ts +3 -0
  621. package/dist/core/web/read-projections.js +2 -2
  622. package/dist/core/web/read-projections.js.map +1 -1
  623. package/dist/core/web/visibility.js +3 -4
  624. package/dist/core/web/visibility.js.map +1 -1
  625. package/dist/release-dependency-inventory.json +1 -1
  626. package/docs/AUTONOMY-GAP.md +1 -1
  627. package/package.json +3 -2
  628. package/dist/core/web/public/next/assets/Advanced-B-LqYXvd.js +0 -2
  629. package/dist/core/web/public/next/assets/App-E2zCDRxm.js +0 -7
  630. package/dist/core/web/public/next/assets/AppsSection-8wXPPhZb.js +0 -2
  631. package/dist/core/web/public/next/assets/AreaTrend-BFimExYn.js +0 -2
  632. package/dist/core/web/public/next/assets/AreaTrend-BFimExYn.js.map +0 -1
  633. package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js +0 -2
  634. package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js.map +0 -1
  635. package/dist/core/web/public/next/assets/AutonomyOffState-DmbE71vI.css +0 -1
  636. package/dist/core/web/public/next/assets/AutonomySection-B46igJKR.js +0 -2
  637. package/dist/core/web/public/next/assets/BudgetControl-T_RjPrw9.js +0 -2
  638. package/dist/core/web/public/next/assets/BudgetControl-T_RjPrw9.js.map +0 -1
  639. package/dist/core/web/public/next/assets/ChartFrame-BVuBe6RP.css +0 -1
  640. package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js +0 -2
  641. package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js.map +0 -1
  642. package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js +0 -3
  643. package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js.map +0 -1
  644. package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js +0 -2
  645. package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js.map +0 -1
  646. package/dist/core/web/public/next/assets/CommandSection-CvAVd1w4.css +0 -1
  647. package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js +0 -2
  648. package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js.map +0 -1
  649. package/dist/core/web/public/next/assets/DockHost-DW9q0NdR.js +0 -2
  650. package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js +0 -3
  651. package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js.map +0 -1
  652. package/dist/core/web/public/next/assets/Funnel-BeNQZWv2.js +0 -2
  653. package/dist/core/web/public/next/assets/Funnel-BeNQZWv2.js.map +0 -1
  654. package/dist/core/web/public/next/assets/GrowthSection-iiQg6wvK.js +0 -2
  655. package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js +0 -2
  656. package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js.map +0 -1
  657. package/dist/core/web/public/next/assets/MatrixHeatmap-DZvZeWXL.js +0 -2
  658. package/dist/core/web/public/next/assets/MatrixHeatmap-DZvZeWXL.js.map +0 -1
  659. package/dist/core/web/public/next/assets/McpSection-BRuCcTjT.js +0 -2
  660. package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js +0 -2
  661. package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js.map +0 -1
  662. package/dist/core/web/public/next/assets/NeedsYouDrawer-lYN4G_aM.js +0 -2
  663. package/dist/core/web/public/next/assets/NeedsYouDrawer-lYN4G_aM.js.map +0 -1
  664. package/dist/core/web/public/next/assets/NeedsYouList-BgH8ezqf.js +0 -2
  665. package/dist/core/web/public/next/assets/NeedsYouList-CruOt4JT.css +0 -1
  666. package/dist/core/web/public/next/assets/NewChatDialog-Db5Xjrk8.js +0 -3
  667. package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js +0 -2
  668. package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js.map +0 -1
  669. package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js +0 -3
  670. package/dist/core/web/public/next/assets/PreviewPane-BPBbcROb.js +0 -2
  671. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-BX2nkdmZ.js +0 -7
  672. package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js +0 -3
  673. package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js.map +0 -1
  674. package/dist/core/web/public/next/assets/ResourcesDrawer-BCFJ2Uq8.css +0 -1
  675. package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js +0 -2
  676. package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js.map +0 -1
  677. package/dist/core/web/public/next/assets/SettingsSection-mI9wQYZg.js.map +0 -1
  678. package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js +0 -3
  679. package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js.map +0 -1
  680. package/dist/core/web/public/next/assets/StatTile-BuLMsJMx.css +0 -1
  681. package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js +0 -2
  682. package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js.map +0 -1
  683. package/dist/core/web/public/next/assets/StepBand-DQykLkk_.js +0 -2
  684. package/dist/core/web/public/next/assets/StepBand-DQykLkk_.js.map +0 -1
  685. package/dist/core/web/public/next/assets/Swimlane-BzH6OCee.js +0 -2
  686. package/dist/core/web/public/next/assets/Swimlane-BzH6OCee.js.map +0 -1
  687. package/dist/core/web/public/next/assets/Swimlane-o6_Zsrnr.css +0 -1
  688. package/dist/core/web/public/next/assets/UniverseConsoleApp-DtXFhAhw.js +0 -2
  689. package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js +0 -3
  690. package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js.map +0 -1
  691. package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js +0 -3
  692. package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js.map +0 -1
  693. package/dist/core/web/public/next/assets/Workspace-BQSZFSeO.js +0 -10
  694. package/dist/core/web/public/next/assets/actions-BmIf9avl.css +0 -1
  695. package/dist/core/web/public/next/assets/actions-Ci6I4C0l.js +0 -2
  696. package/dist/core/web/public/next/assets/budget-queries-DsAjH8ac.js +0 -2
  697. package/dist/core/web/public/next/assets/charts-C_xJbJiw.js +0 -2
  698. package/dist/core/web/public/next/assets/charts-C_xJbJiw.js.map +0 -1
  699. package/dist/core/web/public/next/assets/charts-DhKTrQLw.css +0 -1
  700. package/dist/core/web/public/next/assets/cloud-model-CX407gPY.js +0 -2
  701. package/dist/core/web/public/next/assets/command-catalog-CF0cQQac.js.map +0 -1
  702. package/dist/core/web/public/next/assets/context-queries-CktFQqSS.js +0 -2
  703. package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js +0 -2
  704. package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js.map +0 -1
  705. package/dist/core/web/public/next/assets/format-Dk4Fmxax.js +0 -2
  706. package/dist/core/web/public/next/assets/format-Dk4Fmxax.js.map +0 -1
  707. package/dist/core/web/public/next/assets/global-CNNGMril.js +0 -2
  708. package/dist/core/web/public/next/assets/guarded-runners-DPh2d32e.js +0 -2
  709. package/dist/core/web/public/next/assets/live-model-De-q0ZFK.js.map +0 -1
  710. package/dist/core/web/public/next/assets/mutations-DTCtKCn_.js +0 -2
  711. package/dist/core/web/public/next/assets/primitives-D0Fb3TtS.js +0 -1
  712. package/dist/core/web/public/next/assets/seat-subscription-C5Tvr0WQ.js +0 -2
  713. package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js +0 -2
  714. package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js.map +0 -1
  715. package/dist/core/web/public/next/assets/types-D5XOdyw8.js +0 -2
  716. package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +0 -1
  717. package/dist/core/web/public/next/assets/verse-model-MMySehjj.js +0 -2
  718. package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js +0 -2
  719. package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js.map +0 -1
@@ -0,0 +1,557 @@
1
+ /**
2
+ * Cloud-PR intake (3.13) — cloud and self-improvement PRs land through the
3
+ * standing gates.
4
+ *
5
+ * Verse's cloud lane (and its self-improvement lane) delivers work as DRAFT
6
+ * PRs on `ashlr-cloud/<taskId>` (cloud/types.ts). The standing merge pass
7
+ * (standing-merge-pass.ts) only evaluates proposals built in a fleet MIRROR,
8
+ * so without this module a cloud PR could only be landed by Mason by hand.
9
+ * Once per standing tick, `ingestCloudPrs` turns each eligible cloud PR into
10
+ * an ordinary pending proposal in the repo's fleet mirror; from there the
11
+ * EXISTING pass does everything — G0–G6, the verified-tree App PR, G7
12
+ * (`ashlr/verify` + required checks), the SHA-pinned merge, the post-merge
13
+ * watch and auto-revert, KILL. Nothing here merges, and no gate is changed.
14
+ *
15
+ * Selection (all must hold, else the task is left alone for Mason's Needs-you
16
+ * triage, with the reason reported):
17
+ * - task `pr-open`, its PR verified by the tracker, a `deliveryPin` recorded,
18
+ * not already superseded;
19
+ * - the repo is in the live standing grant and has a CURRENT fleet mirror
20
+ * whose default branch is the task's base branch (the fleet only ever
21
+ * lands on the mirror's base);
22
+ * - identity, re-read from GitHub this tick: the pinned PR number and URL,
23
+ * head ref exactly `ashlr-cloud/<taskId>` in the same repository, base ref
24
+ * still the task's base (a retargeted PR is refused), head SHA read, the
25
+ * diff read PINNED to `<merge-base>...<headSha>`, and the head re-read
26
+ * after the download (a push mid-read means "next tick", never a mix);
27
+ * - the diff is non-empty, within the absolute grant ceilings
28
+ * (STANDING_GRANT_CEILINGS) and byte cap, and unchanged by the proposal
29
+ * store's canonicalisation (secret-like content would otherwise be
30
+ * rewritten, and the proposal would no longer be the head's diff).
31
+ *
32
+ * The proposal: origin 'agent', kind 'pr', repo = the mirror path, the head's
33
+ * diff, engineModel `claude:cloud` (family claude), workItemId = the backlog
34
+ * item, runId = the task id. Its summary carries the session's own report,
35
+ * marked UNVERIFIED — G4 checks that claim against the diff.
36
+ *
37
+ * WHY THE HOST MAY SIGN PROVENANCE FOR A DIFF IT DID NOT PRODUCE. G2 refuses
38
+ * a proposal whose provenance HMAC does not verify, and until now only
39
+ * producers the host ran itself signed (sandboxed-engine, regression
40
+ * sentinel). Here the host signs `claude:cloud|frontier|<diffHash>` for a diff
41
+ * a cloud session wrote. The signature vouches for IDENTITY only: "this host
42
+ * read exactly this diff (hash) from the pinned head of the task's pinned PR,
43
+ * which a Claude cloud session produced". It says nothing about correctness,
44
+ * and nothing downstream treats it as if it did:
45
+ * - G3 verifies the exact diff in the mirror (tests on the exact tree);
46
+ * - G4 checks the session's claims against the diff;
47
+ * - G6 needs an independent judge — `claude:cloud` is family `claude`
48
+ * (reviewer-independence.ts), so only a codex / grok judge qualifies;
49
+ * - G7 needs the fleet App's own green `ashlr/verify` plus required checks.
50
+ * The family it asserts (claude) is the one that makes G6 STRICTER, and the
51
+ * tier ('frontier') is what a Claude cloud session is. G1 (protected paths →
52
+ * owner lane) and G1b (tamper) run unchanged on the diff.
53
+ *
54
+ * Dedupe: one proposal per (task, head SHA), remembered in the task's
55
+ * `intake` memo. A new head supersedes the old PENDING proposal (rejected with
56
+ * a reason) before the new one is filed; a proposal the pass is already
57
+ * carrying in an App PR is never touched.
58
+ *
59
+ * Cloud side: once the standing pass has opened the App PR for the ingested
60
+ * proposal (its fleet merge state names a PR whose diff hash is the one we
61
+ * filed), the next intake comments "Superseded by #N" on the cloud PR, closes
62
+ * it and records `supersededBy` on the task; the tracker then follows the App
63
+ * PR, so the task ends `merged` (never `closed`) when the fleet lands it.
64
+ *
65
+ * Shadow mode needs nothing here: when the rollout stage does not allow
66
+ * merging, the pass's would-merge record for the App PR is the dry run.
67
+ *
68
+ * Bounded and never fatal: at most CLOUD_INTAKE_MAX_TASKS_PER_TICK tasks per
69
+ * call (a cursor rotates through the rest), a wall-clock budget, KILL checked
70
+ * before every task and before any write; every failure is a reported
71
+ * outcome. All I/O is injectable (CloudIntakeDeps) for tests.
72
+ */
73
+ import { existsSync } from 'node:fs';
74
+ import { STANDING_GRANT_CEILINGS } from '../authority/types.js';
75
+ import { parseCloudReport } from '../cloud/delivery-contract.js';
76
+ import { HEAD_SHA_PATTERN, readPinnedDiff } from '../cloud/pr-actions.js';
77
+ import { listCloudTasks, readCloudTask, writeCloudTask } from '../cloud/store.js';
78
+ import { defaultCloudGh } from '../cloud/tracker.js';
79
+ import { CLOUD_BRANCH_PREFIX } from '../cloud/types.js';
80
+ import { measureAutoMergeDiffScope } from '../foundry/automerge-diff-scope.js';
81
+ import { hashDiff, signProvenance, verifyProvenance } from '../foundry/provenance.js';
82
+ import { createProposal, isDiffDedupResult, loadProposal, setStatus } from '../inbox/store.js';
83
+ import { killSwitchOn } from '../sandbox/policy.js';
84
+ import { canonicalizeProposalDiff, scrubSecrets } from '../util/scrub.js';
85
+ import { lockFleetMergeState, proposalStateKey, readFleetMergeState, unlockFleetMergeState } from './fleet-merge-state.js';
86
+ import { repoPolicyFor } from './merge-gates.js';
87
+ import { mirrorNameForPath, mirrorPathFor, readMirrorState } from './mirrors.js';
88
+ /** Producer identity the host vouches for (family `claude` — G6 then needs a codex / grok judge). */
89
+ export const CLOUD_INTAKE_ENGINE_MODEL = 'claude:cloud';
90
+ export const CLOUD_INTAKE_ENGINE_TIER = 'frontier';
91
+ /** Tasks examined per call (each costs up to four `gh` calls). */
92
+ export const CLOUD_INTAKE_MAX_TASKS_PER_TICK = 6;
93
+ /** Wall-clock budget per call; the tick hook also bounds the whole call. */
94
+ export const CLOUD_INTAKE_BUDGET_MS = 60_000;
95
+ /** A cloud diff larger than this is never ingested (the mirror's G3 would not see the same bytes GitHub truncates). */
96
+ export const CLOUD_INTAKE_MAX_DIFF_BYTES = 256 * 1024;
97
+ const PR_VIEW_FIELDS = 'number,url,state,isDraft,headRefOid,headRefName,baseRefName,isCrossRepository,body';
98
+ const SAFE_REF_RE = /^[A-Za-z0-9._/-]{1,200}$/;
99
+ const SUMMARY_TEXT_MAX = 1_500;
100
+ function defaultMirrorFor(nameWithOwner) {
101
+ try {
102
+ const state = readMirrorState(nameWithOwner);
103
+ if (!state || state.lastSyncOk !== true || !state.base)
104
+ return null;
105
+ const path = mirrorPathFor(nameWithOwner);
106
+ return existsSync(path) ? { nameWithOwner: state.nameWithOwner, path, base: state.base } : null;
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }
112
+ export function defaultCloudIntakeDeps() {
113
+ return {
114
+ gh: defaultCloudGh,
115
+ listTasks: () => listCloudTasks(Number.MAX_SAFE_INTEGER),
116
+ readTask: (id) => readCloudTask(id),
117
+ writeTask: (task) => writeCloudTask(task),
118
+ mirrorFor: defaultMirrorFor,
119
+ createProposal: (p, cfg) => createProposal(p, cfg),
120
+ loadProposal: (id) => loadProposal(id),
121
+ rejectPending: (id, reason) => setStatus(id, 'rejected', reason, reason, undefined, {}, 'pending'),
122
+ readFleetMergeState: (key) => readFleetMergeState(key),
123
+ lockFleetState: (key) => {
124
+ const lock = lockFleetMergeState(key, 0);
125
+ return lock ? () => unlockFleetMergeState(lock) : null;
126
+ },
127
+ killActive: () => killSwitchOn(),
128
+ nowMs: () => Date.now(),
129
+ };
130
+ }
131
+ // ---------------------------------------------------------------------------
132
+ // Helpers
133
+ // ---------------------------------------------------------------------------
134
+ const isRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
135
+ function parseJson(text) {
136
+ try {
137
+ return JSON.parse(text);
138
+ }
139
+ catch {
140
+ return undefined;
141
+ }
142
+ }
143
+ async function runGh(gh, args) {
144
+ try {
145
+ const result = await gh(args);
146
+ return { ok: result.ok, stdout: result.stdout };
147
+ }
148
+ catch {
149
+ return { ok: false, stdout: '' };
150
+ }
151
+ }
152
+ const short = (sha) => sha.slice(0, 12);
153
+ /**
154
+ * The task's pinned PR as GitHub describes it now — the same identity rules
155
+ * as the tracker and the Needs-you actions (pr-actions.ts), with a precise
156
+ * refusal code for each mismatch.
157
+ */
158
+ async function readPinnedPr(task, gh) {
159
+ const pin = task.deliveryPin;
160
+ const view = await runGh(gh, ['pr', 'view', String(pin.number), '--repo', task.repo, '--json', PR_VIEW_FIELDS]);
161
+ const raw = view.ok ? parseJson(view.stdout) : undefined;
162
+ if (!isRecord(raw))
163
+ return { ok: false, transient: true, code: 'github-unreadable', reason: 'GitHub did not describe the pull request' };
164
+ if (raw['number'] !== pin.number || typeof raw['url'] !== 'string' || raw['url'].toLowerCase() !== pin.url.toLowerCase()) {
165
+ return { ok: false, transient: false, code: 'pr-identity-changed', reason: `GitHub's PR is no longer the pinned #${pin.number}` };
166
+ }
167
+ if (raw['isCrossRepository'] !== false) {
168
+ return { ok: false, transient: false, code: 'cross-repository', reason: 'the head lives in another repository' };
169
+ }
170
+ if (raw['headRefName'] !== task.branch || task.branch !== `${CLOUD_BRANCH_PREFIX}${task.id}`) {
171
+ return {
172
+ ok: false,
173
+ transient: false,
174
+ code: 'head-ref-mismatch',
175
+ reason: `the head ref is ${typeof raw['headRefName'] === 'string' ? `"${raw['headRefName'].slice(0, 120)}"` : 'unreadable'}, not ${CLOUD_BRANCH_PREFIX}${task.id}`,
176
+ };
177
+ }
178
+ if (raw['baseRefName'] !== task.baseBranch) {
179
+ return {
180
+ ok: false,
181
+ transient: false,
182
+ code: 'base-moved',
183
+ reason: `the PR now targets ${typeof raw['baseRefName'] === 'string' ? `"${raw['baseRefName'].slice(0, 120)}"` : 'an unreadable base'}, not the task's ${task.baseBranch}`,
184
+ };
185
+ }
186
+ const state = raw['state'];
187
+ const headSha = raw['headRefOid'];
188
+ if ((state !== 'OPEN' && state !== 'CLOSED' && state !== 'MERGED') || typeof headSha !== 'string' || !HEAD_SHA_PATTERN.test(headSha)) {
189
+ return { ok: false, transient: true, code: 'github-unreadable', reason: 'GitHub did not describe the pull request' };
190
+ }
191
+ return { ok: true, pr: { state, headSha, body: typeof raw['body'] === 'string' ? raw['body'] : null } };
192
+ }
193
+ /** The merge base of the task's base branch and `headSha` (the diff is pinned to it). */
194
+ async function readMergeBase(task, headSha, gh) {
195
+ if (!SAFE_REF_RE.test(task.baseBranch) || task.baseBranch.includes('..'))
196
+ return null;
197
+ const cmp = await runGh(gh, ['api', `repos/${task.repo}/compare/${task.baseBranch}...${headSha}`, '--jq', '{merge_base: .merge_base_commit.sha}']);
198
+ const parsed = cmp.ok ? parseJson(cmp.stdout) : undefined;
199
+ const mergeBase = isRecord(parsed) ? parsed['merge_base'] : undefined;
200
+ return typeof mergeBase === 'string' && HEAD_SHA_PATTERN.test(mergeBase) ? mergeBase : null;
201
+ }
202
+ /**
203
+ * The proposal summary. The session's report is a CLAIM: it is marked
204
+ * UNVERIFIED and shaped so G4's claim-vs-diff check reads the report's own
205
+ * status — `done` / `partial` claim a change; `blocked` / `no-change` claim
206
+ * none, so their free text (which could contain change verbs) is withheld and
207
+ * a diff under them is the "silent change" G4 refuses. No report claims
208
+ * nothing (G4: not evidence either way — the same reading as the Needs-you
209
+ * preview's claimOfReport).
210
+ */
211
+ export function cloudIntakeSummary(task, report, pr) {
212
+ const source = `Source: cloud task ${task.id} (${task.origin}), ${pr.url} at head ${short(pr.headSha)}. ` +
213
+ 'Produced by a Claude cloud session; the host vouches only for this identity. Tests, claims, an independent judge and ashlr/verify decide the rest.';
214
+ const header = 'Cloud session report (UNVERIFIED: the producing session\'s own claim, checked against the diff by gate G4, never trusted as evidence).';
215
+ if (!report) {
216
+ return [header, 'No ashlr-cloud-report block was found in the pull request, so the session claims nothing.', '', source].join('\n');
217
+ }
218
+ if (report.status === 'blocked' || report.status === 'no-change') {
219
+ return [
220
+ header,
221
+ `Report status: ${report.status}. The session reports it was blocked and did not make the change (its free text is withheld so this status is what G4 checks).`,
222
+ '',
223
+ source,
224
+ ].join('\n');
225
+ }
226
+ const clip = (text, max) => (text.length > max ? `${text.slice(0, max - 1)}…` : text);
227
+ const lines = [
228
+ header,
229
+ `Report status: ${report.status}. The session reports it made the change.`,
230
+ clip(report.summary.trim(), SUMMARY_TEXT_MAX),
231
+ ];
232
+ if (report.testsRun.length > 0)
233
+ lines.push(`Tests the session says it ran: ${clip(report.testsRun.slice(0, 10).join('; '), 400)}`);
234
+ if (report.risks.length > 0)
235
+ lines.push(`Risks it names: ${clip(report.risks.slice(0, 10).join('; '), 400)}`);
236
+ lines.push('', source);
237
+ return lines.join('\n');
238
+ }
239
+ // ---------------------------------------------------------------------------
240
+ // The call
241
+ // ---------------------------------------------------------------------------
242
+ /** Rotates through eligible tasks when more than the per-tick bound are waiting. */
243
+ let lastIntakeTaskId = null;
244
+ /** Test seam. */
245
+ export function resetCloudIntakeCursorForTest() {
246
+ lastIntakeTaskId = null;
247
+ }
248
+ function candidates(tasks) {
249
+ const eligible = tasks
250
+ .filter((task) => task.state === 'pr-open' && task.pr !== null && task.pr.state === 'open' && task.deliveryPin !== undefined && task.supersededBy === undefined)
251
+ // Oldest first: the work that has waited longest is looked at first.
252
+ .sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt) || a.id.localeCompare(b.id));
253
+ if (eligible.length <= CLOUD_INTAKE_MAX_TASKS_PER_TICK) {
254
+ lastIntakeTaskId = null;
255
+ return eligible;
256
+ }
257
+ const prior = eligible.findIndex((task) => task.id === lastIntakeTaskId);
258
+ const start = prior >= 0 ? (prior + 1) % eligible.length : 0;
259
+ const selected = Array.from({ length: CLOUD_INTAKE_MAX_TASKS_PER_TICK }, (_, i) => eligible[(start + i) % eligible.length]);
260
+ lastIntakeTaskId = selected.at(-1).id;
261
+ return selected;
262
+ }
263
+ /**
264
+ * Turn eligible cloud PRs into pending fleet proposals, and close cloud PRs
265
+ * the standing pass has superseded. Never throws; see the module header.
266
+ */
267
+ export async function ingestCloudPrs(cfg, policy, options = {}) {
268
+ const deps = { ...defaultCloudIntakeDeps(), ...options.deps };
269
+ const result = { checked: 0, ingested: 0, superseded: 0, refused: 0, deferred: 0, killed: false, outcomes: [] };
270
+ const record = (outcome) => {
271
+ const reason = scrubSecrets(outcome.reason).slice(0, 400);
272
+ result.outcomes.push({ ...outcome, reason });
273
+ if (outcome.action === 'ingested')
274
+ result.ingested++;
275
+ else if (outcome.action === 'superseded')
276
+ result.superseded++;
277
+ else if (outcome.action === 'refused')
278
+ result.refused++;
279
+ else if (outcome.action === 'deferred')
280
+ result.deferred++;
281
+ };
282
+ const killed = () => {
283
+ let on = true;
284
+ try {
285
+ on = deps.killActive();
286
+ }
287
+ catch {
288
+ on = true; // unreadable KILL state fails closed
289
+ }
290
+ if (on)
291
+ result.killed = true;
292
+ return on;
293
+ };
294
+ if (killed())
295
+ return result;
296
+ let tasks;
297
+ try {
298
+ tasks = candidates(deps.listTasks());
299
+ }
300
+ catch {
301
+ return result;
302
+ }
303
+ const started = deps.nowMs();
304
+ const tickMirrors = options.mirrors
305
+ ? new Map(options.mirrors.map((m) => [m.nameWithOwner.toLowerCase(), m]))
306
+ : null;
307
+ for (const task of tasks) {
308
+ if (killed())
309
+ break;
310
+ if (deps.nowMs() - started > CLOUD_INTAKE_BUDGET_MS)
311
+ break;
312
+ result.checked++;
313
+ try {
314
+ await intakeOne(task, cfg, policy, deps, tickMirrors, record, killed);
315
+ }
316
+ catch (error) {
317
+ record({ taskId: task.id, repo: task.repo, action: 'deferred', code: 'error', reason: error instanceof Error ? error.message : String(error) });
318
+ }
319
+ }
320
+ return result;
321
+ }
322
+ async function intakeOne(task, cfg, policy, deps, tickMirrors, record, killed) {
323
+ const base = { taskId: task.id, repo: task.repo };
324
+ const refuse = (code, reason, extra = {}) => record({ ...base, action: 'refused', code, reason, ...extra });
325
+ const defer = (code, reason, extra = {}) => record({ ...base, action: 'deferred', code, reason, ...extra });
326
+ // ── Grant and mirror (no GitHub call) ────────────────────────────────────
327
+ const repoPolicy = repoPolicyFor(policy, task.repo);
328
+ if (!repoPolicy)
329
+ return refuse('repo-not-in-grant', `${task.repo} is not in the standing grant`);
330
+ const mirror = tickMirrors ? tickMirrors.get(task.repo.toLowerCase()) ?? null : deps.mirrorFor(task.repo);
331
+ if (!mirror || mirrorNameForPath(mirror.path)?.toLowerCase() !== task.repo.toLowerCase()) {
332
+ return refuse('no-mirror', `${task.repo} has no current fleet mirror`);
333
+ }
334
+ if (mirror.base !== task.baseBranch) {
335
+ return refuse('base-not-mirror-default', `the task targets ${task.baseBranch}, but the fleet lands only on ${mirror.base}`);
336
+ }
337
+ // ── Identity, read from GitHub now ───────────────────────────────────────
338
+ const read = await readPinnedPr(task, deps.gh);
339
+ const memo = task.intake ?? null;
340
+ // A PR the standing pass already opened for our proposal supersedes the cloud PR.
341
+ if (memo?.proposalId) {
342
+ const carried = appPrCarrying(memo, deps);
343
+ if (carried) {
344
+ if (!read.ok)
345
+ return defer(read.transient ? read.code : `supersede-${read.code}`, `cannot close the cloud PR in favour of #${carried}: ${read.reason}`);
346
+ if (read.pr.state !== 'OPEN') {
347
+ return refuse('cloud-pr-not-open', `the cloud PR is ${read.pr.state.toLowerCase()}; fleet PR #${carried} is left to the tracker`, { appPr: carried });
348
+ }
349
+ if (killed())
350
+ return;
351
+ const moved = read.pr.headSha !== memo.headSha
352
+ ? ` Commits pushed after ${short(memo.headSha)} are not part of #${carried}.`
353
+ : '';
354
+ const comment = `Superseded by #${carried}: the ashlr fleet rebuilt this change (head ${short(memo.headSha)}) ` +
355
+ `and it lands through the standing merge gates there, pinned to the verified tree. This draft is closed so there is one PR per change.${moved}`;
356
+ const closed = await runGh(deps.gh, ['pr', 'close', String(task.deliveryPin.number), '--repo', task.repo, '--comment', comment]);
357
+ if (!closed.ok)
358
+ return defer('close-failed', `GitHub would not close the cloud PR in favour of #${carried}`, { appPr: carried });
359
+ const written = patchTask(task, deps, (current) => ({
360
+ ...current,
361
+ supersededBy: { repo: current.repo, number: carried },
362
+ pr: current.pr ? { ...current.pr, state: 'closed' } : current.pr,
363
+ stateReason: `Superseded by fleet PR #${carried}; it lands through the standing gates.`,
364
+ }));
365
+ record({
366
+ ...base,
367
+ action: 'superseded',
368
+ code: written ? 'superseded' : 'superseded-unrecorded',
369
+ reason: written ? `closed in favour of #${carried}` : `closed in favour of #${carried}, but the task could not be updated`,
370
+ appPr: carried,
371
+ proposalId: memo.proposalId,
372
+ });
373
+ return;
374
+ }
375
+ }
376
+ if (!read.ok) {
377
+ if (read.transient)
378
+ return defer(read.code, read.reason);
379
+ return refuse(read.code, read.reason);
380
+ }
381
+ const headSha = read.pr.headSha;
382
+ if (read.pr.state !== 'OPEN')
383
+ return defer('cloud-pr-not-open', `the cloud PR is ${read.pr.state.toLowerCase()}`, { headSha });
384
+ if (memo && memo.headSha === headSha) {
385
+ return record({
386
+ ...base,
387
+ action: 'unchanged',
388
+ code: memo.proposalId ? 'already-ingested' : `already-refused:${memo.refused ?? 'unknown'}`,
389
+ reason: memo.proposalId ? `head ${short(headSha)} is already proposal ${memo.proposalId}` : `head ${short(headSha)} was already refused (${memo.refused})`,
390
+ headSha,
391
+ ...(memo.proposalId ? { proposalId: memo.proposalId } : {}),
392
+ });
393
+ }
394
+ // ── A new head: the old pending proposal is superseded first ─────────────
395
+ if (memo?.proposalId) {
396
+ const superseded = supersedeOldProposal(memo.proposalId, task, headSha, deps);
397
+ if (superseded !== 'ok')
398
+ return defer('old-proposal-busy', superseded, { headSha, proposalId: memo.proposalId });
399
+ }
400
+ // A refusal for THIS head is remembered, so it is not re-downloaded every tick.
401
+ const refuseHead = (code, reason) => {
402
+ patchTask(task, deps, (current) => ({ ...current, intake: { headSha, proposalId: null, diffHash: null, refused: code, at: new Date(deps.nowMs()).toISOString() } }));
403
+ refuse(code, reason, { headSha });
404
+ };
405
+ // ── The diff, pinned to (merge base, head) ───────────────────────────────
406
+ const mergeBase = await readMergeBase(task, headSha, deps.gh);
407
+ if (!mergeBase)
408
+ return defer('compare-unreadable', 'GitHub did not compare the head with its base', { headSha });
409
+ const rawDiff = await readPinnedDiff(task, mergeBase, headSha, deps.gh);
410
+ if (rawDiff === null)
411
+ return defer('diff-unreadable', 'the pinned diff could not be read in full', { headSha });
412
+ const reread = await readPinnedPr(task, deps.gh);
413
+ if (!reread.ok || reread.pr.headSha !== headSha || reread.pr.state !== 'OPEN') {
414
+ return defer('head-moved', 'the head moved (or became unreadable) while its diff was read; next tick', { headSha });
415
+ }
416
+ if (!rawDiff.trim())
417
+ return refuseHead('empty-diff', 'the head changes nothing');
418
+ if (Buffer.byteLength(rawDiff, 'utf8') > CLOUD_INTAKE_MAX_DIFF_BYTES) {
419
+ return refuseHead('diff-over-caps', `the diff is larger than ${CLOUD_INTAKE_MAX_DIFF_BYTES} bytes`);
420
+ }
421
+ const scope = measureAutoMergeDiffScope(rawDiff);
422
+ if (!scope.ok)
423
+ return refuseHead('diff-unmeasurable', `the diff could not be measured (${scope.reason})`);
424
+ if (scope.files > STANDING_GRANT_CEILINGS.maxFiles || scope.changedLines > STANDING_GRANT_CEILINGS.maxLines) {
425
+ return refuseHead('diff-over-caps', `the diff touches ${scope.files} file(s) / ${scope.changedLines} line(s); no grant lands more than ${STANDING_GRANT_CEILINGS.maxFiles} / ${STANDING_GRANT_CEILINGS.maxLines}`);
426
+ }
427
+ let diff;
428
+ try {
429
+ diff = canonicalizeProposalDiff(rawDiff);
430
+ }
431
+ catch {
432
+ return refuseHead('diff-not-canonical', 'the diff could not be canonicalised');
433
+ }
434
+ if (diff !== rawDiff) {
435
+ return refuseHead('diff-not-canonical', 'the diff carries secret-like or long-hex content the proposal store would rewrite; review it on GitHub');
436
+ }
437
+ // ── The proposal ─────────────────────────────────────────────────────────
438
+ if (killed())
439
+ return;
440
+ const diffHash = hashDiff(diff);
441
+ const report = parseCloudReport(read.pr.body);
442
+ const created = deps.createProposal({
443
+ repo: mirror.path,
444
+ origin: 'agent',
445
+ kind: 'pr',
446
+ title: `[cloud] ${task.title}`.slice(0, 120),
447
+ summary: cloudIntakeSummary(task, report, { url: task.deliveryPin.url, headSha }),
448
+ diff,
449
+ diffHash,
450
+ // Identity only — see the module header for why the host may sign this.
451
+ provenanceSig: signProvenance(CLOUD_INTAKE_ENGINE_MODEL, CLOUD_INTAKE_ENGINE_TIER, diffHash),
452
+ engineModel: CLOUD_INTAKE_ENGINE_MODEL,
453
+ engineTier: CLOUD_INTAKE_ENGINE_TIER,
454
+ runId: task.id,
455
+ ...(task.backlogItemId ? { workItemId: task.backlogItemId } : {}),
456
+ }, cfg);
457
+ let proposalId;
458
+ if (created.status === 'pending') {
459
+ proposalId = created.id;
460
+ }
461
+ else if (isDiffDedupResult(created)) {
462
+ // An identical pending diff already exists. Adopt it only if it is this
463
+ // task's (a crash between filing and recording the memo), never another's.
464
+ const existing = deps.loadProposal(created.id);
465
+ if (!existing || existing.runId !== task.id || existing.engineModel !== CLOUD_INTAKE_ENGINE_MODEL) {
466
+ return refuseHead('duplicate-of-other-proposal', `an identical pending diff already exists as ${created.id}`);
467
+ }
468
+ proposalId = existing.id;
469
+ }
470
+ else {
471
+ return refuseHead('proposal-refused', `the inbox refused the proposal: ${created.decisionReason ?? 'unknown reason'}`);
472
+ }
473
+ // Belt and braces: the stored proposal must carry exactly the signed diff.
474
+ const stored = deps.loadProposal(proposalId);
475
+ if (!stored || stored.status !== 'pending' || stored.diffHash !== diffHash || !verifyProvenance(stored).ok) {
476
+ deps.rejectPending(proposalId, 'cloud intake: the stored proposal does not verify against the diff it signed');
477
+ return refuseHead('provenance-mismatch', 'the stored proposal did not verify against the signed diff');
478
+ }
479
+ const memoNext = { headSha, proposalId, diffHash, refused: null, at: new Date(deps.nowMs()).toISOString() };
480
+ const written = patchTask(task, deps, (current) => ({ ...current, intake: memoNext }));
481
+ record({
482
+ ...base,
483
+ action: 'ingested',
484
+ code: written ? 'ingested' : 'ingested-unrecorded',
485
+ reason: `head ${short(headSha)} filed as ${proposalId} in ${mirror.nameWithOwner}'s mirror (${scope.files} file(s), ${scope.changedLines} line(s))`,
486
+ proposalId,
487
+ headSha,
488
+ });
489
+ }
490
+ /**
491
+ * The fleet App PR number carrying the memo's proposal, when the standing pass
492
+ * has opened one for exactly the diff we filed (and it is not closed); else null.
493
+ */
494
+ function appPrCarrying(memo, deps) {
495
+ const key = memo.proposalId ? proposalStateKey(memo.proposalId) : null;
496
+ if (!key)
497
+ return null;
498
+ let read;
499
+ try {
500
+ read = deps.readFleetMergeState(key);
501
+ }
502
+ catch {
503
+ return null;
504
+ }
505
+ if (read.state !== 'ok')
506
+ return null;
507
+ const state = read.record;
508
+ if (state.kind !== 'change' || state.proposalId !== memo.proposalId || !state.pr || state.pr.state === 'closed')
509
+ return null;
510
+ if (!memo.diffHash || state.diffHash !== memo.diffHash)
511
+ return null;
512
+ return state.pr.number;
513
+ }
514
+ /** Reject the old pending proposal for a superseded head. 'ok', or why it cannot be done now. */
515
+ function supersedeOldProposal(proposalId, task, headSha, deps) {
516
+ const key = proposalStateKey(proposalId);
517
+ if (!key)
518
+ return 'ok';
519
+ const unlock = deps.lockFleetState(key);
520
+ if (!unlock)
521
+ return `proposal ${proposalId} is being evaluated; next tick`;
522
+ try {
523
+ const state = deps.readFleetMergeState(key);
524
+ if (state.state === 'corrupt')
525
+ return `proposal ${proposalId}'s fleet state is unreadable`;
526
+ if (state.state === 'ok' && state.record.pr !== null)
527
+ return `proposal ${proposalId} already has fleet PR #${state.record.pr.number}`;
528
+ const existing = deps.loadProposal(proposalId);
529
+ if (!existing || existing.status !== 'pending')
530
+ return 'ok';
531
+ if (existing.runId !== task.id)
532
+ return 'ok'; // not ours: never touched
533
+ deps.rejectPending(proposalId, `cloud intake: superseded by newer head ${short(headSha)} of ${task.id}`);
534
+ return 'ok';
535
+ }
536
+ finally {
537
+ unlock();
538
+ }
539
+ }
540
+ /**
541
+ * Apply `patch` to the task as it is on disk NOW, only while it is still the
542
+ * same open delivery (a tracker refresh or a Verse action in between wins).
543
+ */
544
+ function patchTask(task, deps, patch) {
545
+ try {
546
+ const current = deps.readTask(task.id);
547
+ if (!current || current.state !== 'pr-open' || current.supersededBy !== undefined
548
+ || !current.deliveryPin || current.deliveryPin.number !== task.deliveryPin?.number)
549
+ return false;
550
+ deps.writeTask(patch(current));
551
+ return true;
552
+ }
553
+ catch {
554
+ return false;
555
+ }
556
+ }
557
+ //# sourceMappingURL=cloud-intake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-intake.js","sourceRoot":"","sources":["../../../src/core/fleet/cloud-intake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAwB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAgE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAA4B,MAAM,wBAAwB,CAAC;AACrJ,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEjF,qGAAqG;AACrG,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAuB,CAAC;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAmB,CAAC;AAC5D,kEAAkE;AAClE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACjD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,uHAAuH;AACvH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,GAAG,IAAI,CAAC;AAEtD,MAAM,cAAc,GAAG,oFAAoF,CAAC;AAC5G,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAwE/B,SAAS,gBAAgB,CAAC,aAAqB;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACpE,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,EAAE,cAAc;QAClB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACxD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;QACzC,SAAS,EAAE,gBAAgB;QAC3B,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;QAClD,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC;QAClG,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC;QACtD,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;QAChC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,EAAW,EAAE,IAAc;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAUxD;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,IAAiB,EAAE,EAAW;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAY,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAChH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;IACzI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACzH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,wCAAwC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;IACpI,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,CAAC,KAAK,KAAK,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IACnH,CAAC;IACD,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAC7F,OAAO;YACL,EAAE,EAAE,KAAK;YACT,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,mBAAmB,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,SAAS,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE;SACnK,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,sBAAsB,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,oBAAoB,IAAI,CAAC,UAAU,EAAE;SAC3K,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAC;IACvH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1G,CAAC;AAED,yFAAyF;AACzF,KAAK,UAAU,aAAa,CAAC,IAAiB,EAAE,OAAe,EAAE,EAAW;IAC1E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,EAAE,MAAM,EAAE,sCAAsC,CAAC,CAAC,CAAC;IACnJ,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB,EAAE,MAA8B,EAAE,EAAoC;IACxH,MAAM,MAAM,GAAG,sBAAsB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;QACvG,oJAAoJ,CAAC;IACvJ,MAAM,MAAM,GAAG,wIAAwI,CAAC;IACxJ,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,EAAE,2FAA2F,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtI,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACjE,OAAO;YACL,MAAM;YACN,kBAAkB,MAAM,CAAC,MAAM,gIAAgI;YAC/J,EAAE;YACF,MAAM;SACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9G,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,kBAAkB,MAAM,CAAC,MAAM,2CAA2C;QAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC;KAC9C,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9G,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,oFAAoF;AACpF,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C,iBAAiB;AACjB,MAAM,UAAU,6BAA6B;IAC3C,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,KAA6B;IAC/C,MAAM,QAAQ,GAAG,KAAK;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC;QAChK,qEAAqE;SACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,IAAI,QAAQ,CAAC,MAAM,IAAI,+BAA+B,EAAE,CAAC;QACvD,gBAAgB,GAAG,IAAI,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,+BAA+B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;IAC7H,gBAAgB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAgB,EAChB,MAAuB,EACvB,UAAiC,EAAE;IAEnC,MAAM,IAAI,GAAoB,EAAE,GAAG,sBAAsB,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAM,MAAM,GAAsB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnI,MAAM,MAAM,GAAG,CAAC,OAA2B,EAAQ,EAAE;QACnD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;aAChD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;YAAE,MAAM,CAAC,UAAU,EAAE,CAAC;aACzD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACnD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAY,EAAE;QAC3B,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,EAAE,GAAG,IAAI,CAAC,CAAC,qCAAqC;QAClD,CAAC;QACD,IAAI,EAAE;YAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,IAAI,MAAM,EAAE;QAAE,OAAO,MAAM,CAAC;IAE5B,IAAI,KAAoB,CAAC;IACzB,IAAI,CAAC;QACH,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;QACjC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC;QAClF,CAAC,CAAC,IAAI,CAAC;IAET,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,EAAE;YAAE,MAAM;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,sBAAsB;YAAE,MAAM;QAC3D,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClJ,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,IAAiB,EACjB,GAAgB,EAChB,MAAuB,EACvB,IAAqB,EACrB,WAAkD,EAClD,MAA6C,EAC7C,MAAqB;IAErB,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,QAAqC,EAAE,EAAQ,EAAE,CAC7F,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,QAAqC,EAAE,EAAQ,EAAE,CAC5F,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAElE,4EAA4E;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,+BAA+B,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1G,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACzF,OAAO,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,8BAA8B,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,IAAI,CAAC,UAAU,iCAAiC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9H,CAAC;IAED,4EAA4E;IAC5E,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAEjC,kFAAkF;IAClF,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE,EAAE,2CAA2C,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACxJ,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,OAAO,yBAAyB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACxJ,CAAC;YACD,IAAI,MAAM,EAAE;gBAAE,OAAO;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;gBAC5C,CAAC,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,OAAO,GAAG;gBAC7E,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,OAAO,GAAG,kBAAkB,OAAO,+CAA+C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC7G,wIAAwI,KAAK,EAAE,CAAC;YAClJ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,WAAY,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAClI,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC,cAAc,EAAE,qDAAqD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACjI,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClD,GAAG,OAAO;gBACV,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;gBACrD,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;gBAChE,WAAW,EAAE,2BAA2B,OAAO,wCAAwC;aACxF,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB;gBACtD,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC,wBAAwB,OAAO,qCAAqC;gBAC1H,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IAChC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/H,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC;YACZ,GAAG,IAAI;YACP,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;YAC3F,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,yBAAyB,IAAI,CAAC,OAAO,GAAG;YAC1J,OAAO;YACP,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC,mBAAmB,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,gFAAgF;IAChF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAQ,EAAE;QACxD,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,4EAA4E;IAC5E,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,oBAAoB,EAAE,+CAA+C,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,iBAAiB,EAAE,2CAA2C,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC,YAAY,EAAE,0EAA0E,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAC;QACrE,OAAO,UAAU,CAAC,gBAAgB,EAAE,2BAA2B,2BAA2B,QAAQ,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,KAAK,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC,mBAAmB,EAAE,mCAAmC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1G,IAAI,KAAK,CAAC,KAAK,GAAG,uBAAuB,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC;QAC5G,OAAO,UAAU,CACf,gBAAgB,EAChB,oBAAoB,KAAK,CAAC,KAAK,cAAc,KAAK,CAAC,YAAY,sCAAsC,uBAAuB,CAAC,QAAQ,MAAM,uBAAuB,CAAC,QAAQ,EAAE,CAC9K,CAAC;IACJ,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC,oBAAoB,EAAE,wGAAwG,CAAC,CAAC;IACpJ,CAAC;IAED,4EAA4E;IAC5E,IAAI,MAAM,EAAE;QAAE,OAAO;IACrB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5C,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAClF,IAAI;QACJ,QAAQ;QACR,wEAAwE;QACxE,aAAa,EAAE,cAAc,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,QAAQ,CAAC;QAC5F,WAAW,EAAE,yBAAyB;QACtC,UAAU,EAAE,wBAAwB;QACpC,KAAK,EAAE,IAAI,CAAC,EAAE;QACd,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,EAAE,GAAG,CAAC,CAAC;IAER,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC;IAC1B,CAAC;SAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,wEAAwE;QACxE,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,WAAW,KAAK,yBAAyB,EAAE,CAAC;YAClG,OAAO,UAAU,CAAC,6BAA6B,EAAE,+CAA+C,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,OAAO,UAAU,CAAC,kBAAkB,EAAE,mCAAmC,OAAO,CAAC,cAAc,IAAI,gBAAgB,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3G,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,8EAA8E,CAAC,CAAC;QAC/G,OAAO,UAAU,CAAC,qBAAqB,EAAE,4DAA4D,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,QAAQ,GAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC7H,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC;QACL,GAAG,IAAI;QACP,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB;QAClD,MAAM,EAAE,QAAQ,KAAK,CAAC,OAAO,CAAC,aAAa,UAAU,OAAO,MAAM,CAAC,aAAa,cAAc,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,YAAY,WAAW;QACnJ,UAAU;QACV,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAqB,EAAE,IAAqB;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,IAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7H,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AACzB,CAAC;AAED,iGAAiG;AACjG,SAAS,oBAAoB,CAAC,UAAkB,EAAE,IAAiB,EAAE,OAAe,EAAE,IAAqB;IACzG,MAAM,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,UAAU,gCAAgC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,YAAY,UAAU,8BAA8B,CAAC;QAC3F,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO,YAAY,UAAU,0BAA0B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACtI,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5D,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,CAAC,0BAA0B;QACvE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,0CAA0C,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC;IACX,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAiB,EAAE,IAAqB,EAAE,KAA4C;IACvG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;eAC5E,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QACnG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -115,6 +115,19 @@ export interface LanePlan {
115
115
  export declare function grantSeatFor<T>(spend: {
116
116
  seats: Readonly<Record<string, T>>;
117
117
  }, seatId: string): T | null;
118
+ /**
119
+ * Lane names as the operator reads them — the same words the Verse lane chips
120
+ * use. The machine-readable `lane` field keeps the ids (`grok-cli`); only the
121
+ * sentences a person reads (`capReason`, held-back seat reasons) use these, so
122
+ * the web UI and logs can print them as they are instead of re-translating.
123
+ */
124
+ export declare const FLEET_LANE_LABEL: Readonly<Record<FleetEngine, string>>;
125
+ /**
126
+ * "1 slot", "2 slots", "1 local slot" — a count with its noun pluralised by
127
+ * the count, so reasons never read "2 slot(s)". `noun` is the singular and may
128
+ * carry leading words ("local slot"); only its last word gets the "s".
129
+ */
130
+ export declare function countOf(n: number, noun: string): string;
118
131
  /**
119
132
  * The slots each lane may use THIS tick. Only ever narrows the defaults,
120
133
  * except where a class-B Leader action (grok 3–4 lanes, Codex on) has already