@intentius/chant 0.124.28 → 0.124.30

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 (449) hide show
  1. package/dist/build-params.d.ts +34 -1
  2. package/dist/build-params.d.ts.map +1 -1
  3. package/dist/build-params.js +31 -1
  4. package/dist/change-set-graph.d.ts +8 -1
  5. package/dist/change-set-graph.d.ts.map +1 -1
  6. package/dist/change-set-graph.js +4 -2
  7. package/dist/change-set.d.ts +10 -0
  8. package/dist/change-set.d.ts.map +1 -1
  9. package/dist/change-set.js +4 -3
  10. package/dist/cli/build-params-cli.d.ts +7 -1
  11. package/dist/cli/build-params-cli.d.ts.map +1 -1
  12. package/dist/cli/build-params-cli.js +17 -8
  13. package/dist/cli/commands/build.d.ts.map +1 -1
  14. package/dist/cli/commands/build.js +6 -3
  15. package/dist/cli/handlers/approve.d.ts.map +1 -1
  16. package/dist/cli/handlers/approve.js +45 -0
  17. package/dist/cli/handlers/build.d.ts.map +1 -1
  18. package/dist/cli/handlers/build.js +18 -4
  19. package/dist/cli/handlers/fan-out.d.ts +9 -0
  20. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  21. package/dist/cli/handlers/fan-out.js +67 -8
  22. package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
  23. package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
  24. package/dist/cli/handlers/lifecycle-gc.js +143 -0
  25. package/dist/cli/handlers/pr.d.ts +11 -3
  26. package/dist/cli/handlers/pr.d.ts.map +1 -1
  27. package/dist/cli/handlers/pr.js +134 -26
  28. package/dist/cli/handlers/promote.d.ts +7 -0
  29. package/dist/cli/handlers/promote.d.ts.map +1 -1
  30. package/dist/cli/handlers/promote.js +210 -33
  31. package/dist/cli/handlers/release.d.ts +62 -5
  32. package/dist/cli/handlers/release.d.ts.map +1 -1
  33. package/dist/cli/handlers/release.js +414 -28
  34. package/dist/cli/handlers/run.d.ts +11 -1
  35. package/dist/cli/handlers/run.d.ts.map +1 -1
  36. package/dist/cli/handlers/run.js +67 -6
  37. package/dist/cli/main.d.ts.map +1 -1
  38. package/dist/cli/main.js +91 -10
  39. package/dist/cli/parse-args.d.ts.map +1 -1
  40. package/dist/cli/parse-args.js +73 -2
  41. package/dist/cli/registry.d.ts +32 -4
  42. package/dist/cli/registry.d.ts.map +1 -1
  43. package/dist/cli/run-events.d.ts +3 -2
  44. package/dist/cli/run-events.d.ts.map +1 -1
  45. package/dist/cli/run-events.js +5 -3
  46. package/dist/components/auto-release.d.ts +2 -0
  47. package/dist/components/auto-release.d.ts.map +1 -1
  48. package/dist/components/auto-release.js +1 -0
  49. package/dist/components/capability.d.ts +9 -0
  50. package/dist/components/capability.d.ts.map +1 -1
  51. package/dist/components/driver.d.ts +8 -0
  52. package/dist/components/driver.d.ts.map +1 -1
  53. package/dist/components/driver.js +35 -0
  54. package/dist/components/fan-out-inputs.d.ts +69 -0
  55. package/dist/components/fan-out-inputs.d.ts.map +1 -0
  56. package/dist/components/fan-out-inputs.js +169 -0
  57. package/dist/components/fan-out-record.d.ts +13 -0
  58. package/dist/components/fan-out-record.d.ts.map +1 -1
  59. package/dist/components/fan-out-record.js +16 -0
  60. package/dist/components/fan-out-run.d.ts.map +1 -1
  61. package/dist/components/fan-out-run.js +50 -0
  62. package/dist/components/fan-out.d.ts +4 -0
  63. package/dist/components/fan-out.d.ts.map +1 -1
  64. package/dist/components/pr-pipeline.d.ts +49 -0
  65. package/dist/components/pr-pipeline.d.ts.map +1 -1
  66. package/dist/components/pr-pipeline.js +38 -4
  67. package/dist/components/pr-run.d.ts +20 -2
  68. package/dist/components/pr-run.d.ts.map +1 -1
  69. package/dist/components/pr-run.js +26 -13
  70. package/dist/components/promote.d.ts +23 -0
  71. package/dist/components/promote.d.ts.map +1 -1
  72. package/dist/components/promote.js +60 -2
  73. package/dist/components/release-compile.d.ts +9 -0
  74. package/dist/components/release-compile.d.ts.map +1 -1
  75. package/dist/components/release-compile.js +9 -3
  76. package/dist/components/release-gate.d.ts +11 -1
  77. package/dist/components/release-gate.d.ts.map +1 -1
  78. package/dist/components/release-gate.js +10 -4
  79. package/dist/components/wave-plan.d.ts +16 -0
  80. package/dist/components/wave-plan.d.ts.map +1 -1
  81. package/dist/components/wave-plan.js +36 -2
  82. package/dist/config.d.ts +38 -0
  83. package/dist/config.d.ts.map +1 -1
  84. package/dist/config.js +2 -0
  85. package/dist/flag-params.d.ts +54 -0
  86. package/dist/flag-params.d.ts.map +1 -0
  87. package/dist/flag-params.js +130 -0
  88. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
  89. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
  90. package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
  91. package/dist/lifecycle/change-set-store.d.ts +2 -1
  92. package/dist/lifecycle/change-set-store.d.ts.map +1 -1
  93. package/dist/lifecycle/change-set-store.js +2 -1
  94. package/dist/lifecycle/delivery-metrics.d.ts +139 -0
  95. package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
  96. package/dist/lifecycle/delivery-metrics.js +145 -0
  97. package/dist/lifecycle/deploy-outcome.d.ts +81 -0
  98. package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
  99. package/dist/lifecycle/deploy-outcome.js +101 -0
  100. package/dist/lifecycle/gate-change-set.d.ts +10 -1
  101. package/dist/lifecycle/gate-change-set.d.ts.map +1 -1
  102. package/dist/lifecycle/gate-change-set.js +35 -3
  103. package/dist/lifecycle/gate-ledger.d.ts +2 -3
  104. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  105. package/dist/lifecycle/git.d.ts +30 -1
  106. package/dist/lifecycle/git.d.ts.map +1 -1
  107. package/dist/lifecycle/git.js +31 -5
  108. package/dist/lifecycle/index.d.ts +4 -0
  109. package/dist/lifecycle/index.d.ts.map +1 -1
  110. package/dist/lifecycle/index.js +4 -0
  111. package/dist/lifecycle/mixed-environment.d.ts +95 -0
  112. package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
  113. package/dist/lifecycle/mixed-environment.js +154 -0
  114. package/dist/lifecycle/publish-attachments.d.ts +79 -0
  115. package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
  116. package/dist/lifecycle/publish-attachments.js +179 -0
  117. package/dist/lifecycle/publish-credentials.d.ts +37 -0
  118. package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
  119. package/dist/lifecycle/publish-credentials.js +69 -0
  120. package/dist/lifecycle/publish-declaration.d.ts +97 -0
  121. package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
  122. package/dist/lifecycle/publish-declaration.js +83 -0
  123. package/dist/lifecycle/publish-forge.d.ts +53 -0
  124. package/dist/lifecycle/publish-forge.d.ts.map +1 -0
  125. package/dist/lifecycle/publish-forge.js +298 -0
  126. package/dist/lifecycle/publish-npm.d.ts +61 -0
  127. package/dist/lifecycle/publish-npm.d.ts.map +1 -0
  128. package/dist/lifecycle/publish-npm.js +242 -0
  129. package/dist/lifecycle/publish-oci.d.ts +64 -0
  130. package/dist/lifecycle/publish-oci.d.ts.map +1 -0
  131. package/dist/lifecycle/publish-oci.js +383 -0
  132. package/dist/lifecycle/publish-record.d.ts +66 -0
  133. package/dist/lifecycle/publish-record.d.ts.map +1 -0
  134. package/dist/lifecycle/publish-record.js +84 -0
  135. package/dist/lifecycle/publish-targets.d.ts +45 -0
  136. package/dist/lifecycle/publish-targets.d.ts.map +1 -0
  137. package/dist/lifecycle/publish-targets.js +85 -0
  138. package/dist/lifecycle/release-cut.d.ts +48 -1
  139. package/dist/lifecycle/release-cut.d.ts.map +1 -1
  140. package/dist/lifecycle/release-cut.js +116 -23
  141. package/dist/lifecycle/release-join.d.ts +95 -0
  142. package/dist/lifecycle/release-join.d.ts.map +1 -0
  143. package/dist/lifecycle/release-join.js +139 -0
  144. package/dist/lifecycle/release-ledger.d.ts +8 -3
  145. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  146. package/dist/lifecycle/release-ledger.js +2 -0
  147. package/dist/lifecycle/release-publish.d.ts +312 -0
  148. package/dist/lifecycle/release-publish.d.ts.map +1 -0
  149. package/dist/lifecycle/release-publish.js +335 -0
  150. package/dist/lifecycle/release-revocation.d.ts +80 -0
  151. package/dist/lifecycle/release-revocation.d.ts.map +1 -0
  152. package/dist/lifecycle/release-revocation.js +123 -0
  153. package/dist/lifecycle/release-store.d.ts +12 -2
  154. package/dist/lifecycle/release-store.d.ts.map +1 -1
  155. package/dist/lifecycle/release-store.js +4 -2
  156. package/dist/lifecycle/release-verify.d.ts +61 -0
  157. package/dist/lifecycle/release-verify.d.ts.map +1 -0
  158. package/dist/lifecycle/release-verify.js +92 -0
  159. package/dist/lifecycle/release-workstation.d.ts +91 -0
  160. package/dist/lifecycle/release-workstation.d.ts.map +1 -0
  161. package/dist/lifecycle/release-workstation.js +180 -0
  162. package/dist/lifecycle/retention-policy.d.ts +45 -0
  163. package/dist/lifecycle/retention-policy.d.ts.map +1 -0
  164. package/dist/lifecycle/retention-policy.js +43 -0
  165. package/dist/lifecycle/retention.d.ts +185 -0
  166. package/dist/lifecycle/retention.d.ts.map +1 -0
  167. package/dist/lifecycle/retention.js +400 -0
  168. package/dist/lifecycle/run-ledger.d.ts +1 -1
  169. package/dist/lifecycle/run-ledger.d.ts.map +1 -1
  170. package/dist/lifecycle/run-ledger.js +9 -0
  171. package/dist/op/activities/activity-contracts.d.ts +1 -0
  172. package/dist/op/activities/activity-contracts.d.ts.map +1 -1
  173. package/dist/op/activities/activity-contracts.js +1 -0
  174. package/dist/op/activities/shell.d.ts +6 -0
  175. package/dist/op/activities/shell.d.ts.map +1 -1
  176. package/dist/op/activities/shell.js +1 -1
  177. package/dist/op/local-executor.d.ts +23 -1
  178. package/dist/op/local-executor.d.ts.map +1 -1
  179. package/dist/op/local-executor.js +9 -3
  180. package/dist/op/runtime.d.ts +27 -0
  181. package/dist/op/runtime.d.ts.map +1 -1
  182. package/dist/op/runtime.js +20 -0
  183. package/dist/plan-summary.d.ts.map +1 -1
  184. package/dist/plan-summary.js +8 -2
  185. package/dist/pr-forge.d.ts +23 -0
  186. package/dist/pr-forge.d.ts.map +1 -1
  187. package/dist/pr-forge.js +44 -0
  188. package/dist/pr-loop.d.ts +17 -0
  189. package/dist/pr-loop.d.ts.map +1 -1
  190. package/dist/pr-loop.js +30 -4
  191. package/dist/pr-report-url.d.ts +82 -0
  192. package/dist/pr-report-url.d.ts.map +1 -0
  193. package/dist/pr-report-url.js +174 -0
  194. package/dist/provenance.d.ts +2 -2
  195. package/dist/provenance.d.ts.map +1 -1
  196. package/dist/run-event-store.d.ts +29 -2
  197. package/dist/run-event-store.d.ts.map +1 -1
  198. package/dist/run-event-store.js +50 -3
  199. package/dist/run-event-stream.d.ts +4 -3
  200. package/dist/run-event-stream.d.ts.map +1 -1
  201. package/dist/run-event-stream.js +7 -3
  202. package/dist/run-event.d.ts +34 -1
  203. package/dist/run-event.d.ts.map +1 -1
  204. package/dist/run-event.js +4 -0
  205. package/dist/wave-runtime.mjs +260 -229
  206. package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
  207. package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
  208. package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
  209. package/dist/workspace/change-set.schema.json +5 -1
  210. package/dist/workspace/check.schema.json +4 -2
  211. package/dist/workspace/checks/records.d.ts +9 -1
  212. package/dist/workspace/checks/records.d.ts.map +1 -1
  213. package/dist/workspace/checks/records.js +35 -1
  214. package/dist/workspace/checks.d.ts +1 -0
  215. package/dist/workspace/checks.d.ts.map +1 -1
  216. package/dist/workspace/checks.js +2 -1
  217. package/dist/workspace/ci-green-forge.d.ts +2 -0
  218. package/dist/workspace/ci-green-forge.d.ts.map +1 -1
  219. package/dist/workspace/ci-green.d.ts +10 -0
  220. package/dist/workspace/ci-green.d.ts.map +1 -1
  221. package/dist/workspace/ci-green.js +14 -5
  222. package/dist/workspace/ci-run.d.ts +222 -0
  223. package/dist/workspace/ci-run.d.ts.map +1 -0
  224. package/dist/workspace/ci-run.js +464 -0
  225. package/dist/workspace/ci-serve.d.ts +214 -0
  226. package/dist/workspace/ci-serve.d.ts.map +1 -0
  227. package/dist/workspace/ci-serve.js +412 -0
  228. package/dist/workspace/declaration.d.ts +16 -0
  229. package/dist/workspace/declaration.d.ts.map +1 -1
  230. package/dist/workspace/declaration.js +26 -0
  231. package/dist/workspace/declaration.schema.json +64 -0
  232. package/dist/workspace/declared-kinds.d.ts +16 -0
  233. package/dist/workspace/declared-kinds.d.ts.map +1 -1
  234. package/dist/workspace/declared-kinds.js +25 -0
  235. package/dist/workspace/delivery-metrics.d.ts +91 -0
  236. package/dist/workspace/delivery-metrics.d.ts.map +1 -0
  237. package/dist/workspace/delivery-metrics.js +217 -0
  238. package/dist/workspace/delivery-metrics.schema.json +519 -0
  239. package/dist/workspace/flags-read.d.ts +37 -0
  240. package/dist/workspace/flags-read.d.ts.map +1 -0
  241. package/dist/workspace/flags-read.js +103 -0
  242. package/dist/workspace/flags.d.ts +100 -0
  243. package/dist/workspace/flags.d.ts.map +1 -0
  244. package/dist/workspace/flags.js +98 -0
  245. package/dist/workspace/graph-cli.js +1 -1
  246. package/dist/workspace/intent-cli.d.ts +11 -2
  247. package/dist/workspace/intent-cli.d.ts.map +1 -1
  248. package/dist/workspace/intent-cli.js +54 -5
  249. package/dist/workspace/intent-trace.d.ts +219 -0
  250. package/dist/workspace/intent-trace.d.ts.map +1 -0
  251. package/dist/workspace/intent-trace.js +314 -0
  252. package/dist/workspace/intent.d.ts +30 -6
  253. package/dist/workspace/intent.d.ts.map +1 -1
  254. package/dist/workspace/intent.js +141 -21
  255. package/dist/workspace/intent.schema.json +702 -6
  256. package/dist/workspace/overlap.d.ts +146 -0
  257. package/dist/workspace/overlap.d.ts.map +1 -0
  258. package/dist/workspace/overlap.js +276 -0
  259. package/dist/workspace/pr-report.schema.json +5 -0
  260. package/dist/workspace/reason-codes.d.ts +2 -0
  261. package/dist/workspace/reason-codes.d.ts.map +1 -1
  262. package/dist/workspace/reason-codes.js +3 -0
  263. package/dist/workspace/records.d.ts +15 -2
  264. package/dist/workspace/records.d.ts.map +1 -1
  265. package/dist/workspace/records.js +32 -0
  266. package/dist/workspace/records.schema.json +21 -2
  267. package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  268. package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
  269. package/dist/workspace/releases.d.ts +9 -0
  270. package/dist/workspace/releases.d.ts.map +1 -1
  271. package/dist/workspace/releases.js +9 -0
  272. package/dist/workspace/releases.schema.json +123 -1
  273. package/dist/workspace/run-event.schema.json +24 -6
  274. package/dist/workspace/status-gates.d.ts +8 -0
  275. package/dist/workspace/status-gates.d.ts.map +1 -1
  276. package/dist/workspace/status-stewards.d.ts +2 -0
  277. package/dist/workspace/status-stewards.d.ts.map +1 -1
  278. package/dist/workspace/status-stewards.js +1 -0
  279. package/dist/workspace/status.d.ts +78 -0
  280. package/dist/workspace/status.d.ts.map +1 -1
  281. package/dist/workspace/status.js +170 -3
  282. package/dist/workspace/status.schema.json +210 -2
  283. package/dist/workspace/wip.d.ts.map +1 -1
  284. package/dist/workspace/wip.js +11 -3
  285. package/package.json +1 -1
  286. package/src/build-params.test.ts +46 -0
  287. package/src/build-params.ts +55 -1
  288. package/src/change-set-graph.ts +10 -2
  289. package/src/change-set.ts +14 -3
  290. package/src/cli/build-params-cli.ts +22 -9
  291. package/src/cli/commands/build.ts +6 -3
  292. package/src/cli/handlers/approve-release.test.ts +5 -1
  293. package/src/cli/handlers/approve-revoked.test.ts +155 -0
  294. package/src/cli/handlers/approve.ts +47 -0
  295. package/src/cli/handlers/build.test.ts +30 -0
  296. package/src/cli/handlers/build.ts +20 -4
  297. package/src/cli/handlers/fan-out.test.ts +262 -1
  298. package/src/cli/handlers/fan-out.ts +72 -8
  299. package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
  300. package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
  301. package/src/cli/handlers/lifecycle-gc.ts +146 -0
  302. package/src/cli/handlers/pr.test.ts +148 -1
  303. package/src/cli/handlers/pr.ts +144 -28
  304. package/src/cli/handlers/promote.test.ts +280 -2
  305. package/src/cli/handlers/promote.ts +210 -34
  306. package/src/cli/handlers/release-implicit.e2e.test.ts +12 -4
  307. package/src/cli/handlers/release-join.e2e.test.ts +185 -0
  308. package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
  309. package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
  310. package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
  311. package/src/cli/handlers/release.e2e.test.ts +146 -32
  312. package/src/cli/handlers/release.ts +415 -28
  313. package/src/cli/handlers/run-auto-release.test.ts +9 -0
  314. package/src/cli/handlers/run-release.test.ts +55 -0
  315. package/src/cli/handlers/run.ts +69 -5
  316. package/src/cli/main.test.ts +1 -0
  317. package/src/cli/main.ts +91 -10
  318. package/src/cli/parse-args.ts +54 -2
  319. package/src/cli/registry.ts +32 -4
  320. package/src/cli/run-events.ts +5 -2
  321. package/src/components/auto-release.test.ts +9 -0
  322. package/src/components/auto-release.ts +3 -0
  323. package/src/components/capability.ts +9 -0
  324. package/src/components/driver.test.ts +24 -0
  325. package/src/components/driver.ts +36 -0
  326. package/src/components/fan-out-inputs.test.ts +85 -0
  327. package/src/components/fan-out-inputs.ts +192 -0
  328. package/src/components/fan-out-record.test.ts +10 -0
  329. package/src/components/fan-out-record.ts +19 -0
  330. package/src/components/fan-out-run.ts +48 -0
  331. package/src/components/fan-out.ts +4 -0
  332. package/src/components/pr-pipeline.ts +67 -4
  333. package/src/components/pr-run.test.ts +127 -0
  334. package/src/components/pr-run.ts +32 -12
  335. package/src/components/promote.ts +68 -2
  336. package/src/components/release-compile.ts +17 -3
  337. package/src/components/release-gate.ts +18 -4
  338. package/src/components/wave-plan.ts +45 -2
  339. package/src/config.ts +8 -0
  340. package/src/flag-params.test.ts +144 -0
  341. package/src/flag-params.ts +134 -0
  342. package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
  343. package/src/lifecycle/change-set-store.ts +2 -1
  344. package/src/lifecycle/delivery-metrics.ts +263 -0
  345. package/src/lifecycle/deploy-outcome.ts +147 -0
  346. package/src/lifecycle/gate-change-set.ts +37 -6
  347. package/src/lifecycle/gate-ledger.ts +2 -2
  348. package/src/lifecycle/git.ts +61 -8
  349. package/src/lifecycle/index.ts +4 -0
  350. package/src/lifecycle/mixed-environment.test.ts +97 -0
  351. package/src/lifecycle/mixed-environment.ts +204 -0
  352. package/src/lifecycle/publish-attachments.ts +196 -0
  353. package/src/lifecycle/publish-credentials.ts +84 -0
  354. package/src/lifecycle/publish-declaration.ts +95 -0
  355. package/src/lifecycle/publish-forge.ts +325 -0
  356. package/src/lifecycle/publish-npm.ts +259 -0
  357. package/src/lifecycle/publish-oci.ts +396 -0
  358. package/src/lifecycle/publish-record.ts +113 -0
  359. package/src/lifecycle/publish-resume.test.ts +168 -0
  360. package/src/lifecycle/publish-targets.test.ts +494 -0
  361. package/src/lifecycle/publish-targets.ts +100 -0
  362. package/src/lifecycle/release-cut.test.ts +74 -2
  363. package/src/lifecycle/release-cut.ts +158 -22
  364. package/src/lifecycle/release-flag.test.ts +112 -0
  365. package/src/lifecycle/release-join.test.ts +68 -0
  366. package/src/lifecycle/release-join.ts +182 -0
  367. package/src/lifecycle/release-ledger.ts +9 -3
  368. package/src/lifecycle/release-publish.test.ts +225 -0
  369. package/src/lifecycle/release-publish.ts +568 -0
  370. package/src/lifecycle/release-revocation.ts +147 -0
  371. package/src/lifecycle/release-store.ts +15 -4
  372. package/src/lifecycle/release-verify.test.ts +110 -0
  373. package/src/lifecycle/release-verify.ts +120 -0
  374. package/src/lifecycle/release-workstation.test.ts +204 -0
  375. package/src/lifecycle/release-workstation.ts +216 -0
  376. package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
  377. package/src/lifecycle/retention-policy.ts +63 -0
  378. package/src/lifecycle/retention.test.ts +363 -0
  379. package/src/lifecycle/retention.ts +508 -0
  380. package/src/lifecycle/run-ledger.ts +7 -1
  381. package/src/op/activities/activity-contracts.ts +1 -0
  382. package/src/op/activities/shell.ts +7 -1
  383. package/src/op/local-executor.ts +27 -4
  384. package/src/op/runtime.ts +42 -0
  385. package/src/plan-summary.test.ts +20 -0
  386. package/src/plan-summary.ts +8 -1
  387. package/src/pr-forge.test.ts +25 -0
  388. package/src/pr-forge.ts +62 -0
  389. package/src/pr-loop.test.ts +13 -1
  390. package/src/pr-loop.ts +41 -4
  391. package/src/pr-report-url.test.ts +131 -0
  392. package/src/pr-report-url.ts +209 -0
  393. package/src/provenance.ts +2 -2
  394. package/src/run-event-store.ts +63 -3
  395. package/src/run-event-stream.ts +8 -4
  396. package/src/run-event.ts +38 -1
  397. package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
  398. package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
  399. package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
  400. package/src/workspace/change-set.schema.json +5 -1
  401. package/src/workspace/check.schema.json +4 -2
  402. package/src/workspace/checks/records.ts +35 -1
  403. package/src/workspace/checks.ts +2 -1
  404. package/src/workspace/ci-green-forge.ts +2 -0
  405. package/src/workspace/ci-green.ts +20 -5
  406. package/src/workspace/ci-run.test.ts +416 -0
  407. package/src/workspace/ci-run.ts +571 -0
  408. package/src/workspace/ci-serve.test.ts +268 -0
  409. package/src/workspace/ci-serve.ts +521 -0
  410. package/src/workspace/declaration.schema.json +64 -0
  411. package/src/workspace/declaration.test.ts +28 -0
  412. package/src/workspace/declaration.ts +38 -0
  413. package/src/workspace/declared-kinds.ts +40 -1
  414. package/src/workspace/delivery-metrics.schema.json +519 -0
  415. package/src/workspace/delivery-metrics.test.ts +236 -0
  416. package/src/workspace/delivery-metrics.ts +286 -0
  417. package/src/workspace/flags-read.ts +121 -0
  418. package/src/workspace/flags.test.ts +141 -0
  419. package/src/workspace/flags.ts +157 -0
  420. package/src/workspace/graph-cli.ts +1 -1
  421. package/src/workspace/intent-cli.ts +46 -5
  422. package/src/workspace/intent-trace.test.ts +173 -0
  423. package/src/workspace/intent-trace.ts +484 -0
  424. package/src/workspace/intent.schema.json +702 -6
  425. package/src/workspace/intent.ts +148 -25
  426. package/src/workspace/older-records.test.ts +412 -0
  427. package/src/workspace/overlap.test.ts +165 -0
  428. package/src/workspace/overlap.ts +340 -0
  429. package/src/workspace/pr-report.schema.json +5 -0
  430. package/src/workspace/read-contract.e2e.test.ts +2 -1
  431. package/src/workspace/reason-codes.test.ts +5 -0
  432. package/src/workspace/reason-codes.ts +3 -0
  433. package/src/workspace/record-assets.test.ts +2 -1
  434. package/src/workspace/records-contract.e2e.test.ts +2 -1
  435. package/src/workspace/records.schema.json +21 -2
  436. package/src/workspace/records.ts +36 -2
  437. package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  438. package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
  439. package/src/workspace/releases.schema.json +123 -1
  440. package/src/workspace/releases.ts +11 -0
  441. package/src/workspace/run-event.schema.json +24 -6
  442. package/src/workspace/status-contract.test.ts +29 -0
  443. package/src/workspace/status-gates.ts +8 -0
  444. package/src/workspace/status-mixed.test.ts +152 -0
  445. package/src/workspace/status-revoked.test.ts +153 -0
  446. package/src/workspace/status-stewards.ts +3 -0
  447. package/src/workspace/status.schema.json +210 -2
  448. package/src/workspace/status.ts +254 -3
  449. package/src/workspace/wip.ts +11 -2
@@ -33,7 +33,15 @@
33
33
  * one `run-event.schema.json` line each: the planning as a `plan` phase with
34
34
  * a step per component, the gate's decision as a `gate` phase, and on
35
35
  * pr-apply the apply's waves and components as `chant run --components`
36
- * streams them.
36
+ * streams them. A component the apply does not start settles too, `blocked`
37
+ * behind a failed dependency or `already-applied` on a resumed apply.
38
+ * With or without it, pr-apply prints a line on stderr as each wave starts
39
+ * and as each component settles, so a job log shows the waves in order.
40
+ *
41
+ * `--report-url <s3 or file URL>` (#4007) copies `pr-<stage>.json`,
42
+ * `change-set.json` and, with `--events-json`, the events to
43
+ * `<url>/<pr>/<commit>/`, the events again as each wave and component
44
+ * settles (`../../pr-report-url.ts`).
37
45
  *
38
46
  * `--member <name>` (#3465) runs a workspace member's loop: the member's
39
47
  * generated pipeline passes it from the member's directory. The gate is
@@ -48,10 +56,12 @@ import { resolveCommit, resolveMergeBase } from "../../components/changed-files.
48
56
  import { deriveFanOut, fanOutRegistry } from "../../components/fan-out-support.js";
49
57
  import { applyPrSet, approvalOf, approversWithoutReview, decidePrGate, planPrSet, prReport, readOnlyLedger, resumePrSet, } from "../../components/pr-run.js";
50
58
  import { readFanOutAttempt, writeFanOutAttempt } from "../../components/fan-out-record.js";
59
+ import { componentInputDigests, progressThatCarries } from "../../components/fan-out-inputs.js";
51
60
  import { samePlanDigest } from "../../lifecycle/plan-digest.js";
52
61
  import { gitGateLedgerPort } from "../../op/gate.js";
53
62
  import { emitGateStep, gateEventsOf, GATE_PHASE } from "../../run-event-stream.js";
54
63
  import { openCliRunEvents, refusesEventsWithJson } from "../run-events.js";
64
+ import { openPrReportUpload, parseReportUrl, reportKey } from "../../pr-report-url.js";
55
65
  import { describePlanChanged, PR_APPLY_GATE, prApproveCommand, prNoteMarker, prOp, prStatusDescription, prStatusContext, prStatusState, renderPrNote, } from "../../pr-loop.js";
56
66
  import { FORGE_KINDS, forgeFromEnv, forgePrincipalOf } from "../../pr-forge.js";
57
67
  import { GITHUB_COMMENT_LIMIT, GITLAB_NOTE_LIMIT } from "../../plan-summary.js";
@@ -213,12 +223,18 @@ function settleOf(status) {
213
223
  return "failed";
214
224
  }
215
225
  }
216
- /** Write the report, the change set and the note; print the note's path. */
217
- function writeOutputs(ctx, report, note) {
226
+ /** Write the report, the change set and the note, and hand the first two to `--report-url`'s upload. */
227
+ function writeOutputs(ctx, report, note, upload) {
218
228
  const dir = resolve(ctx.args.output ?? PR_REPORT_DIR);
219
229
  mkdirSync(dir, { recursive: true });
220
- writeFileSync(join(dir, `pr-${report.stage}.json`), JSON.stringify(report, null, 2) + "\n");
221
- writeFileSync(join(dir, "change-set.json"), JSON.stringify(report.changeSet, null, 2) + "\n");
230
+ const files = [
231
+ [`pr-${report.stage}.json`, JSON.stringify(report, null, 2) + "\n"],
232
+ ["change-set.json", JSON.stringify(report.changeSet, null, 2) + "\n"],
233
+ ];
234
+ for (const [name, body] of files) {
235
+ writeFileSync(join(dir, name), body);
236
+ upload?.file(name, body);
237
+ }
222
238
  writeFileSync(join(dir, "pr-note.md"), note);
223
239
  }
224
240
  /** Post the note and the stage's status. A forge that refuses is a warning: the stage's outcome stands. */
@@ -262,16 +278,22 @@ function printMembers(report) {
262
278
  console.error(` ${m.member.padEnd(20)} ${m.status.padEnd(12)} create ${c.create} update ${c.update} replace ${c.replace} delete ${c.delete}${m.error ? ` ${m.error}` : ""}`);
263
279
  }
264
280
  }
265
- async function finish(ctx, p, report) {
281
+ async function finish(ctx, p, report, upload) {
266
282
  const note = noteFor(report, p.forge);
267
- writeOutputs(ctx, report, note);
283
+ writeOutputs(ctx, report, note, upload);
268
284
  await publish(p.forge, report, note);
269
285
  if (ctx.args.json)
270
286
  console.log(JSON.stringify(report, null, 2));
271
287
  }
272
- /** Run a stage, and end its stream as `failed` when the stage did not settle it. */
273
- async function withStageEvents(stage, run) {
288
+ /** Run a stage, end its stream as `failed` when the stage did not settle it, and finish its upload. */
289
+ async function withStageEvents(stage, ctx, run) {
274
290
  const events = {};
291
+ if (ctx.args.reportUrl !== undefined) {
292
+ const target = parseReportUrl(ctx.args.reportUrl);
293
+ if ("error" in target)
294
+ return fail(target.error);
295
+ events.target = target;
296
+ }
275
297
  try {
276
298
  return await run(events);
277
299
  }
@@ -281,13 +303,32 @@ async function withStageEvents(stage, run) {
281
303
  }
282
304
  finally {
283
305
  events.stream?.settle("failed", `${stage} stopped before it finished`);
306
+ if (events.upload) {
307
+ await events.upload.close();
308
+ console.error(formatInfo(`report : ${events.upload.where}/`));
309
+ }
284
310
  }
285
311
  }
286
- /** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] */
312
+ /**
313
+ * Open the stage's `--report-url` upload under its pull request and commit,
314
+ * when the flag was given. Its events are the lines `openCliRunEvents` writes.
315
+ */
316
+ function openUpload(events, stage, pr, p) {
317
+ if (!events.target)
318
+ return undefined;
319
+ events.upload = openPrReportUpload({
320
+ target: events.target,
321
+ key: reportKey(pr, p.head, p.member),
322
+ stage,
323
+ warn: (message) => console.error(formatWarning({ message })),
324
+ });
325
+ return events.upload;
326
+ }
327
+ /** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
287
328
  export function runComponentsPrPlan(ctx) {
288
329
  if (refusesEventsWithJson(ctx.args, "the stage's report"))
289
330
  return Promise.resolve(1);
290
- return withStageEvents("pr-plan", (events) => prPlan(ctx, events));
331
+ return withStageEvents("pr-plan", ctx, (events) => prPlan(ctx, events));
291
332
  }
292
333
  async function prPlan(ctx, stage) {
293
334
  if (ctx.args.pr === undefined) {
@@ -297,8 +338,9 @@ async function prPlan(ctx, stage) {
297
338
  if (typeof p === "number")
298
339
  return p;
299
340
  const op = prOp(ctx.args.pr, p.member);
341
+ const upload = openUpload(stage, "plan", ctx.args.pr, p);
300
342
  // `--events-json` (#4041): planning, then where the approval stands.
301
- const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") });
343
+ const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") }, upload?.line);
302
344
  stage.stream = events;
303
345
  events?.emit({ type: "run-start", waves: p.plan.waves });
304
346
  const set = await planAll(p, events?.emit);
@@ -328,7 +370,7 @@ async function prPlan(ctx, stage) {
328
370
  approval,
329
371
  status,
330
372
  });
331
- await finish(ctx, p, report);
373
+ await finish(ctx, p, report, upload);
332
374
  // The plan stage settles on its planning: an approval still to come is what it reports, not a stop.
333
375
  events?.settle(settleOf(status), status === "plan-failed" ? "a member failed to plan" : undefined);
334
376
  console.error(formatInfo(`pr-plan: ${report.members.length} member(s), ${status}`));
@@ -339,11 +381,11 @@ async function prPlan(ctx, stage) {
339
381
  }
340
382
  return status === "plan-failed" ? 1 : 0;
341
383
  }
342
- /** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] */
384
+ /** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
343
385
  export function runComponentsPrApply(ctx) {
344
386
  if (refusesEventsWithJson(ctx.args, "the stage's report"))
345
387
  return Promise.resolve(1);
346
- return withStageEvents("pr-apply", (events) => prApply(ctx, events));
388
+ return withStageEvents("pr-apply", ctx, (events) => prApply(ctx, events));
347
389
  }
348
390
  async function prApply(ctx, stage) {
349
391
  const { args } = ctx;
@@ -365,7 +407,8 @@ async function prApply(ctx, stage) {
365
407
  // The run id the release records carry, chosen before the run so that
366
408
  // `--events-json` (#4041, #4007) names the run by it too.
367
409
  const release = autoReleaseRun(`${op}-${Date.now()}`);
368
- const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") });
410
+ const upload = openUpload(stage, "apply", pr, p);
411
+ const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") }, upload?.line);
369
412
  stage.stream = events;
370
413
  events?.emit({ type: "run-start", waves: p.plan.waves });
371
414
  // `--resume` (#3464): an earlier attempt at this change on this commit
@@ -381,14 +424,26 @@ async function prApply(ctx, stage) {
381
424
  return fail(`--resume: could not read "${args.resume}": ${err instanceof Error ? err.message : String(err)}`);
382
425
  }
383
426
  }
384
- const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume, op) : undefined;
385
- if (resumed)
427
+ // What each component would apply now (#4081): progress carries only where it is unchanged.
428
+ const inputsNow = resumePath ? componentInputDigests(p.components, { projectRoot: resolve("."), env: p.env }) : {};
429
+ const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume, op, inputsNow) : undefined;
430
+ // The components an earlier attempt applied settle first (#4007), each in
431
+ // the wave the derivation gave it, which is the run-start's.
432
+ const log = applyLog();
433
+ if (resumed) {
434
+ const waveOf = new Map(p.plan.waves.flatMap((wave, i) => wave.map((name) => [name, i + 1])));
435
+ for (const component of p.plan.order.filter((name) => resumed.completed.includes(name))) {
436
+ const body = { type: "component-settle", wave: waveOf.get(component), component, status: "already-applied" };
437
+ events?.emit(body);
438
+ log(body);
439
+ }
386
440
  emitResumedGate(events, op, p.gate, resumed.check);
441
+ }
387
442
  const set = resumed?.set ?? (await planAll(p, events?.emit));
388
443
  const base = { stage: "apply", pr, env: p.env, ...(p.member ? { member: p.member } : {}), base: p.base, head: p.head, op, gate: p.gate, plan: p.plan, signal: p.signal, set };
389
444
  const stop = async (report, code, settle) => {
390
445
  events?.settle(settle ?? settleOf(report.status), report.status === "plan-failed" || report.status === "failed" ? report.message ?? `pr-apply ${report.status}` : undefined);
391
- await finish(ctx, p, report);
446
+ await finish(ctx, p, report, upload);
392
447
  console.error((code === 0 ? formatInfo : (m) => formatWarning({ message: m }))(`pr-apply: ${report.status}${report.refusal ? ` (${report.refusal})` : ""}`));
393
448
  if (report.message)
394
449
  console.error(report.message);
@@ -469,6 +524,7 @@ async function prApply(ctx, stage) {
469
524
  // one settles, so a run killed partway still knows what applied.
470
525
  const prior = resumed ? { completed: resumed.completed, outputs: resumed.outputs } : { completed: [], outputs: {} };
471
526
  const completedSoFar = new Set(prior.completed);
527
+ const inputsSoFar = Object.fromEntries(prior.completed.filter((name) => inputsNow[name] !== undefined).map((name) => [name, inputsNow[name]]));
472
528
  const failedSoFar = [];
473
529
  const outputsSoFar = { ...prior.outputs };
474
530
  const record = {
@@ -489,6 +545,7 @@ async function prApply(ctx, stage) {
489
545
  completed: [...completedSoFar].sort(),
490
546
  failed: [...failedSoFar].sort(),
491
547
  outputs: outputsSoFar,
548
+ inputs: Object.fromEntries(Object.entries(inputsSoFar).sort(([a], [b]) => a.localeCompare(b))),
492
549
  prApply: record,
493
550
  });
494
551
  };
@@ -500,13 +557,19 @@ async function prApply(ctx, stage) {
500
557
  env: p.env,
501
558
  set,
502
559
  ...(resumed ? { resumed: prior } : {}),
503
- // The apply is this run's waves, so the fan-out's own run framing is dropped.
504
- ...(events ? { onRunEvent: events.nested } : {}),
560
+ // The apply is this run's waves, so the fan-out's own run framing is
561
+ // dropped. The log's lines go to stderr with or without --events-json.
562
+ onRunEvent: (body) => {
563
+ events?.nested(body);
564
+ log(body);
565
+ },
505
566
  ...(resumePath
506
567
  ? {
507
568
  onComponentSettled: (settled, outputs) => {
508
569
  if (settled.status === "ok") {
509
570
  completedSoFar.add(settled.component);
571
+ if (inputsNow[settled.component] !== undefined)
572
+ inputsSoFar[settled.component] = inputsNow[settled.component];
510
573
  if (outputs)
511
574
  outputsSoFar[settled.component] = outputs;
512
575
  }
@@ -533,6 +596,38 @@ async function prApply(ctx, stage) {
533
596
  console.error(formatSuccess(`applied the plan ${report.digest} approved by ${(approval.approvedBy ?? []).join(", ")}`));
534
597
  return code;
535
598
  }
599
+ /** What a component's settle says in the job log. */
600
+ function settleWords(body) {
601
+ switch (body.status) {
602
+ case "ok":
603
+ return "applied";
604
+ case "failed":
605
+ return "failed";
606
+ case "gated":
607
+ return "stopped at its own gate";
608
+ case "waiting":
609
+ return "waiting on a decision";
610
+ case "blocked":
611
+ return `blocked by ${body.blockedBy ?? "a dependency"}, not run`;
612
+ case "already-applied":
613
+ return "already applied in an earlier attempt";
614
+ }
615
+ }
616
+ /**
617
+ * pr-apply's job log (#4007): a line on stderr as each wave starts and as
618
+ * each component settles, so the log shows the waves in order while they run.
619
+ */
620
+ function applyLog() {
621
+ let waves = 0;
622
+ return (body) => {
623
+ if (body.type === "run-start")
624
+ waves = body.waves?.length ?? 0;
625
+ else if (body.type === "wave-start")
626
+ console.error(formatInfo(`wave ${body.wave}${waves ? `/${waves}` : ""}: ${body.components.join(", ")}`));
627
+ else if (body.type === "component-settle")
628
+ console.error(formatInfo(` ${body.component}: ${settleWords(body)}`));
629
+ };
630
+ }
536
631
  /** A resumed apply's gate (#3464), decided against the approved digest, as the run's `gate` phase. */
537
632
  function emitResumedGate(events, op, gate, check) {
538
633
  if (!events)
@@ -584,8 +679,13 @@ async function storeChangeSetForGate(ctx, p, doc) {
584
679
  * derivation; when its approval still stands; and when every member left is
585
680
  * covered by the approved set. Otherwise it says why on stderr and the apply
586
681
  * runs as it would with no record.
682
+ *
683
+ * Of the components it applied, only those whose input digest is the same
684
+ * now carry (#4081), as in `components fan-out --resume`. One that changed
685
+ * runs again, under the same approval when the approved set covers its new
686
+ * plan. A record without input digests carries nothing.
587
687
  */
588
- async function tryResume(p, attempt, file, op) {
688
+ async function tryResume(p, attempt, file, op, inputsNow) {
589
689
  const skip = (why) => {
590
690
  console.error(formatWarning({ message: `--resume: "${file}" does not carry: ${why}`, hint: "Every member is planned again, and the plan needs an approval of its own." }));
591
691
  return undefined;
@@ -601,6 +701,14 @@ async function tryResume(p, attempt, file, op) {
601
701
  return skip("the change selects other components than it did");
602
702
  if (attempt.completed.length === 0)
603
703
  return undefined;
704
+ const split = progressThatCarries(attempt, inputsNow);
705
+ if (split.unrecorded)
706
+ return skip("it does not record what each component applied, since it was written before chant recorded component inputs");
707
+ for (const name of split.changed)
708
+ console.error(formatInfo(`${name}: changed since the earlier attempt, so it runs again`));
709
+ if (split.carried.length === 0)
710
+ return undefined;
711
+ const completed = split.carried;
604
712
  let check;
605
713
  try {
606
714
  check = await decidePrGate(readOnlyLedger(gitGateLedgerPort()), { op, gate: p.gate, digest: record.digest });
@@ -610,7 +718,7 @@ async function tryResume(p, attempt, file, op) {
610
718
  }
611
719
  if (!check.satisfied)
612
720
  return skip(`no approval stands for the plan it applied (${record.digest}) any more`);
613
- const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => attempt.completed.includes(name)));
721
+ const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => completed.includes(name)));
614
722
  const resumed = await resumePrSet({
615
723
  components: p.components,
616
724
  plan: p.plan,
@@ -618,10 +726,10 @@ async function tryResume(p, attempt, file, op) {
618
726
  env: p.env,
619
727
  seededOutputs: p.seededOutputs,
620
728
  record,
621
- completed: attempt.completed,
729
+ completed,
622
730
  });
623
731
  if (!resumed.ok)
624
732
  return skip(`what is left is not what was approved. ${resumed.reasons.join("; ")}`);
625
- console.error(formatInfo(`resume : ${attempt.completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
626
- return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed: attempt.completed, outputs };
733
+ console.error(formatInfo(`resume : ${completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
734
+ return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed, outputs };
627
735
  }
@@ -12,6 +12,13 @@
12
12
  * failed or stopped at a gate, so the ledger never misses a deploy that
13
13
  * happened. Unlike an auto-recorded release, the record is what these
14
14
  * commands are for, so a failed write is an error rather than a warning.
15
+ * A run that applied partly, or failed, also appends a deploy outcome
16
+ * (#4035, ../../lifecycle/deploy-outcome.ts) naming what it did to each
17
+ * component, so `workspace status` reads the environment as mixed.
18
+ *
19
+ * `rollback --release` (#4035) is a promote of an earlier release into the
20
+ * environment: every component of the release at the digest the environment
21
+ * ran from it, through the release gate `promote --release` binds (#4045).
15
22
  */
16
23
  import type { CommandContext } from "../registry.js";
17
24
  export declare function runComponentsPromote(ctx: CommandContext): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8CH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgclD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6F/E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BhF;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BhF"}
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+CH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAukBlD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E/E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChF;AAsCD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BhF"}