@intentius/chant 0.124.31 → 0.124.33

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 (509) hide show
  1. package/bin/chant +7 -2
  2. package/dist/ci-jobs.d.ts +4 -0
  3. package/dist/ci-jobs.d.ts.map +1 -1
  4. package/dist/ci-jobs.js +9 -2
  5. package/dist/cli/commands/check-lexicon-plugin.d.ts +7 -4
  6. package/dist/cli/commands/check-lexicon-plugin.d.ts.map +1 -1
  7. package/dist/cli/commands/check-lexicon-plugin.js +10 -7
  8. package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
  9. package/dist/cli/commands/check-lexicon.js +18 -12
  10. package/dist/cli/commands/import.d.ts +10 -0
  11. package/dist/cli/commands/import.d.ts.map +1 -1
  12. package/dist/cli/commands/import.js +37 -0
  13. package/dist/cli/commands/init-lexicon/templates/project.d.ts.map +1 -1
  14. package/dist/cli/commands/init-lexicon/templates/project.js +4 -3
  15. package/dist/cli/commands/onboard.d.ts.map +1 -1
  16. package/dist/cli/commands/onboard.js +8 -4
  17. package/dist/cli/commands/update.d.ts.map +1 -1
  18. package/dist/cli/commands/update.js +2 -1
  19. package/dist/cli/dependencies.d.ts +18 -0
  20. package/dist/cli/dependencies.d.ts.map +1 -0
  21. package/dist/cli/dependencies.js +120 -0
  22. package/dist/cli/handlers/build.d.ts.map +1 -1
  23. package/dist/cli/handlers/build.js +38 -4
  24. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  25. package/dist/cli/handlers/fan-out.js +12 -4
  26. package/dist/cli/handlers/graph.d.ts.map +1 -1
  27. package/dist/cli/handlers/graph.js +16 -6
  28. package/dist/cli/handlers/lifecycle-health.d.ts +16 -0
  29. package/dist/cli/handlers/lifecycle-health.d.ts.map +1 -0
  30. package/dist/cli/handlers/lifecycle-health.js +150 -0
  31. package/dist/cli/handlers/lifecycle.d.ts +26 -0
  32. package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
  33. package/dist/cli/handlers/lifecycle.js +1 -1
  34. package/dist/cli/handlers/lint.d.ts.map +1 -1
  35. package/dist/cli/handlers/lint.js +6 -0
  36. package/dist/cli/handlers/operator.d.ts +2 -2
  37. package/dist/cli/handlers/operator.js +3 -3
  38. package/dist/cli/handlers/pr.d.ts +16 -0
  39. package/dist/cli/handlers/pr.d.ts.map +1 -1
  40. package/dist/cli/handlers/pr.js +610 -32
  41. package/dist/cli/handlers/promote.d.ts.map +1 -1
  42. package/dist/cli/handlers/promote.js +19 -2
  43. package/dist/cli/handlers/release.d.ts +16 -1
  44. package/dist/cli/handlers/release.d.ts.map +1 -1
  45. package/dist/cli/handlers/release.js +83 -11
  46. package/dist/cli/handlers/run.d.ts +13 -1
  47. package/dist/cli/handlers/run.d.ts.map +1 -1
  48. package/dist/cli/handlers/run.js +38 -15
  49. package/dist/cli/main.d.ts.map +1 -1
  50. package/dist/cli/main.js +121 -33
  51. package/dist/cli/parse-args.d.ts.map +1 -1
  52. package/dist/cli/parse-args.js +37 -0
  53. package/dist/cli/registry.d.ts +29 -6
  54. package/dist/cli/registry.d.ts.map +1 -1
  55. package/dist/cli/registry.js +6 -2
  56. package/dist/codegen/generate-post-synth-barrel.js +2 -2
  57. package/dist/codegen/lexicon-regen.d.ts +4 -0
  58. package/dist/codegen/lexicon-regen.d.ts.map +1 -1
  59. package/dist/codegen/lexicon-regen.js +1 -1
  60. package/dist/codegen/pinned-upgrade.js +2 -2
  61. package/dist/components/capability.d.ts +44 -3
  62. package/dist/components/capability.d.ts.map +1 -1
  63. package/dist/components/capability.js +21 -0
  64. package/dist/components/changed-files.d.ts +7 -1
  65. package/dist/components/changed-files.d.ts.map +1 -1
  66. package/dist/components/changed-files.js +9 -1
  67. package/dist/components/deploy-inputs.d.ts +91 -0
  68. package/dist/components/deploy-inputs.d.ts.map +1 -0
  69. package/dist/components/deploy-inputs.js +184 -0
  70. package/dist/components/driver.d.ts +38 -0
  71. package/dist/components/driver.d.ts.map +1 -1
  72. package/dist/components/driver.js +56 -6
  73. package/dist/components/fan-out-record.d.ts +6 -1
  74. package/dist/components/fan-out-record.d.ts.map +1 -1
  75. package/dist/components/fan-out-record.js +24 -0
  76. package/dist/components/fan-out-run.d.ts +20 -0
  77. package/dist/components/fan-out-run.d.ts.map +1 -1
  78. package/dist/components/fan-out-run.js +21 -1
  79. package/dist/components/gate-plan.d.ts +8 -0
  80. package/dist/components/gate-plan.d.ts.map +1 -1
  81. package/dist/components/gate-plan.js +6 -0
  82. package/dist/components/pr-pipeline.d.ts +98 -12
  83. package/dist/components/pr-pipeline.d.ts.map +1 -1
  84. package/dist/components/pr-pipeline.js +146 -23
  85. package/dist/components/pr-run.d.ts +128 -30
  86. package/dist/components/pr-run.d.ts.map +1 -1
  87. package/dist/components/pr-run.js +290 -70
  88. package/dist/components/release-compile.d.ts +37 -2
  89. package/dist/components/release-compile.d.ts.map +1 -1
  90. package/dist/components/release-compile.js +64 -8
  91. package/dist/components/release-promote.d.ts +17 -3
  92. package/dist/components/release-promote.d.ts.map +1 -1
  93. package/dist/components/release-promote.js +79 -18
  94. package/dist/components/verbs/bom-writer.d.ts +1 -1
  95. package/dist/components/verbs/bom-writer.d.ts.map +1 -1
  96. package/dist/components/verbs/lockfile-sbom-generator.d.ts +20 -0
  97. package/dist/components/verbs/lockfile-sbom-generator.d.ts.map +1 -1
  98. package/dist/components/verbs/lockfile-sbom-generator.js +41 -4
  99. package/dist/components/wave-plan.d.ts +15 -2
  100. package/dist/components/wave-plan.d.ts.map +1 -1
  101. package/dist/components/wave-plan.js +44 -5
  102. package/dist/discovery/fold-import.d.ts.map +1 -1
  103. package/dist/discovery/fold-import.js +16 -6
  104. package/dist/discovery/sandbox/bundle.d.ts.map +1 -1
  105. package/dist/discovery/sandbox/bundle.js +6 -0
  106. package/dist/discovery/specifier-resolve.d.ts.map +1 -1
  107. package/dist/discovery/specifier-resolve.js +8 -2
  108. package/dist/fold/fold.d.ts.map +1 -1
  109. package/dist/fold/fold.js +68 -1
  110. package/dist/fold/subset.d.ts +37 -0
  111. package/dist/fold/subset.d.ts.map +1 -1
  112. package/dist/fold/subset.js +88 -0
  113. package/dist/graph-detail.d.ts.map +1 -1
  114. package/dist/graph-detail.js +32 -7
  115. package/dist/health.d.ts +110 -0
  116. package/dist/health.d.ts.map +1 -0
  117. package/dist/health.js +105 -0
  118. package/dist/health.schema.json +191 -0
  119. package/dist/lexicon-module.d.ts +10 -0
  120. package/dist/lexicon-module.d.ts.map +1 -1
  121. package/dist/lexicon-module.js +53 -8
  122. package/dist/lexicon-plugin-helpers.d.ts.map +1 -1
  123. package/dist/lexicon-plugin-helpers.js +6 -4
  124. package/dist/lexicon.d.ts +29 -0
  125. package/dist/lexicon.d.ts.map +1 -1
  126. package/dist/lifecycle/affected.d.ts.map +1 -1
  127. package/dist/lifecycle/affected.js +7 -1
  128. package/dist/lifecycle/merge-record.d.ts +104 -0
  129. package/dist/lifecycle/merge-record.d.ts.map +1 -0
  130. package/dist/lifecycle/merge-record.js +102 -0
  131. package/dist/lifecycle/publish-attachments.d.ts +8 -5
  132. package/dist/lifecycle/publish-attachments.d.ts.map +1 -1
  133. package/dist/lifecycle/publish-attachments.js +27 -13
  134. package/dist/lifecycle/publish-npm.d.ts +3 -2
  135. package/dist/lifecycle/publish-npm.d.ts.map +1 -1
  136. package/dist/lifecycle/publish-npm.js +4 -3
  137. package/dist/lifecycle/release-at.d.ts +40 -0
  138. package/dist/lifecycle/release-at.d.ts.map +1 -0
  139. package/dist/lifecycle/release-at.js +83 -0
  140. package/dist/lifecycle/release-cut.d.ts.map +1 -1
  141. package/dist/lifecycle/release-cut.js +23 -12
  142. package/dist/lifecycle/release-ledger.d.ts +21 -0
  143. package/dist/lifecycle/release-ledger.d.ts.map +1 -1
  144. package/dist/lifecycle/release-ledger.js +24 -0
  145. package/dist/lifecycle/release-publish.d.ts +28 -12
  146. package/dist/lifecycle/release-publish.d.ts.map +1 -1
  147. package/dist/lifecycle/release-publish.js +29 -17
  148. package/dist/lifecycle/release-store.d.ts +25 -2
  149. package/dist/lifecycle/release-store.d.ts.map +1 -1
  150. package/dist/lifecycle/release-store.js +40 -13
  151. package/dist/lifecycle/run-ledger.d.ts.map +1 -1
  152. package/dist/lifecycle/run-ledger.js +1 -0
  153. package/dist/lifecycle/work-dir.d.ts +45 -0
  154. package/dist/lifecycle/work-dir.d.ts.map +1 -0
  155. package/dist/lifecycle/work-dir.js +78 -0
  156. package/dist/lint/discover.d.ts +17 -9
  157. package/dist/lint/discover.d.ts.map +1 -1
  158. package/dist/lint/discover.js +62 -54
  159. package/dist/lint/rules/op/index.d.ts +2 -1
  160. package/dist/lint/rules/op/index.d.ts.map +1 -1
  161. package/dist/lint/rules/op/index.js +4 -2
  162. package/dist/lint/rules/op/ops018-shell-image-digest.d.ts +10 -0
  163. package/dist/lint/rules/op/ops018-shell-image-digest.d.ts.map +1 -0
  164. package/dist/lint/rules/op/ops018-shell-image-digest.js +38 -0
  165. package/dist/module-source.d.ts +57 -0
  166. package/dist/module-source.d.ts.map +1 -0
  167. package/dist/module-source.js +104 -0
  168. package/dist/op/activities/activity-contracts.d.ts +5 -0
  169. package/dist/op/activities/activity-contracts.d.ts.map +1 -1
  170. package/dist/op/activities/activity-contracts.js +3 -0
  171. package/dist/op/activities/factory.js +1 -1
  172. package/dist/op/activities/shell.d.ts +38 -0
  173. package/dist/op/activities/shell.d.ts.map +1 -1
  174. package/dist/op/activities/shell.js +89 -3
  175. package/dist/op/builders.d.ts +7 -0
  176. package/dist/op/builders.d.ts.map +1 -1
  177. package/dist/op/builders.js +7 -0
  178. package/dist/op/discover.d.ts.map +1 -1
  179. package/dist/op/discover.js +13 -3
  180. package/dist/op/gate.d.ts.map +1 -1
  181. package/dist/op/gate.js +3 -0
  182. package/dist/op/op-waves-run.d.ts.map +1 -1
  183. package/dist/op/op-waves-run.js +20 -5
  184. package/dist/op/operator.d.ts +2 -2
  185. package/dist/op/operator.js +2 -2
  186. package/dist/op/runtime.d.ts +2 -0
  187. package/dist/op/runtime.d.ts.map +1 -1
  188. package/dist/op/steward.d.ts +6 -4
  189. package/dist/op/steward.d.ts.map +1 -1
  190. package/dist/op/steward.js +5 -3
  191. package/dist/op/work-lease-run.d.ts +20 -7
  192. package/dist/op/work-lease-run.d.ts.map +1 -1
  193. package/dist/op/work-lease-run.js +56 -12
  194. package/dist/pr-forge.d.ts +10 -0
  195. package/dist/pr-forge.d.ts.map +1 -1
  196. package/dist/pr-forge.js +39 -0
  197. package/dist/pr-loop.d.ts +155 -7
  198. package/dist/pr-loop.d.ts.map +1 -1
  199. package/dist/pr-loop.js +137 -11
  200. package/dist/pr-report-url.d.ts +4 -4
  201. package/dist/pr-report-url.d.ts.map +1 -1
  202. package/dist/pr-report-url.js +5 -5
  203. package/dist/runner-start.d.ts +179 -0
  204. package/dist/runner-start.d.ts.map +1 -0
  205. package/dist/runner-start.js +277 -0
  206. package/dist/ts-loader.d.ts +38 -4
  207. package/dist/ts-loader.d.ts.map +1 -1
  208. package/dist/ts-loader.js +190 -16
  209. package/dist/wave-runtime.mjs +238 -231
  210. package/dist/workspace/chant-migrations/fountain-retired-kinds.d.ts +34 -0
  211. package/dist/workspace/chant-migrations/fountain-retired-kinds.d.ts.map +1 -0
  212. package/dist/workspace/chant-migrations/fountain-retired-kinds.js +176 -0
  213. package/dist/workspace/chant-migrations.d.ts.map +1 -1
  214. package/dist/workspace/chant-migrations.js +2 -0
  215. package/dist/workspace/check.schema.json +70 -2
  216. package/dist/workspace/checks/boxes.d.ts +6 -6
  217. package/dist/workspace/checks/boxes.js +9 -9
  218. package/dist/workspace/checks/security.d.ts +35 -0
  219. package/dist/workspace/checks/security.d.ts.map +1 -0
  220. package/dist/workspace/checks/security.js +305 -0
  221. package/dist/workspace/checks.d.ts +2 -0
  222. package/dist/workspace/checks.d.ts.map +1 -1
  223. package/dist/workspace/checks.js +5 -0
  224. package/dist/workspace/ci-builds.d.ts +163 -0
  225. package/dist/workspace/ci-builds.d.ts.map +1 -0
  226. package/dist/workspace/ci-builds.js +315 -0
  227. package/dist/workspace/ci-green-cli.d.ts +2 -1
  228. package/dist/workspace/ci-green-cli.d.ts.map +1 -1
  229. package/dist/workspace/ci-green-cli.js +25 -5
  230. package/dist/workspace/ci-green-forge.d.ts +18 -4
  231. package/dist/workspace/ci-green-forge.d.ts.map +1 -1
  232. package/dist/workspace/ci-green-forge.js +12 -0
  233. package/dist/workspace/ci-green-workflow.d.ts +55 -1
  234. package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
  235. package/dist/workspace/ci-green-workflow.js +128 -1
  236. package/dist/workspace/ci-green.d.ts +117 -16
  237. package/dist/workspace/ci-green.d.ts.map +1 -1
  238. package/dist/workspace/ci-green.js +358 -43
  239. package/dist/workspace/ci-last-green.schema.json +49 -0
  240. package/dist/workspace/ci-list.schema.json +47 -7
  241. package/dist/workspace/ci-report-url.d.ts +18 -0
  242. package/dist/workspace/ci-report-url.d.ts.map +1 -0
  243. package/dist/workspace/ci-report-url.js +33 -0
  244. package/dist/workspace/ci-run-index.d.ts +13 -1
  245. package/dist/workspace/ci-run-index.d.ts.map +1 -1
  246. package/dist/workspace/ci-run-index.js +6 -4
  247. package/dist/workspace/ci-run-index.schema.json +6 -4
  248. package/dist/workspace/ci-run.d.ts +85 -6
  249. package/dist/workspace/ci-run.d.ts.map +1 -1
  250. package/dist/workspace/ci-run.js +262 -64
  251. package/dist/workspace/ci-runner-key.d.ts +16 -3
  252. package/dist/workspace/ci-runner-key.d.ts.map +1 -1
  253. package/dist/workspace/ci-runner-key.js +30 -10
  254. package/dist/workspace/ci-runner-start.d.ts +77 -0
  255. package/dist/workspace/ci-runner-start.d.ts.map +1 -0
  256. package/dist/workspace/ci-runner-start.js +185 -0
  257. package/dist/workspace/ci-serve.d.ts +130 -11
  258. package/dist/workspace/ci-serve.d.ts.map +1 -1
  259. package/dist/workspace/ci-serve.js +323 -40
  260. package/dist/workspace/declaration.d.ts +25 -0
  261. package/dist/workspace/declaration.d.ts.map +1 -1
  262. package/dist/workspace/declaration.js +14 -2
  263. package/dist/workspace/declaration.schema.json +30 -2
  264. package/dist/workspace/export.d.ts +1 -1
  265. package/dist/workspace/export.d.ts.map +1 -1
  266. package/dist/workspace/export.js +7 -3
  267. package/dist/workspace/ls.d.ts +8 -1
  268. package/dist/workspace/ls.d.ts.map +1 -1
  269. package/dist/workspace/ls.js +2 -1
  270. package/dist/workspace/ls.schema.json +9 -2
  271. package/dist/workspace/member-pipeline.d.ts +1 -0
  272. package/dist/workspace/member-pipeline.d.ts.map +1 -1
  273. package/dist/workspace/member-pipeline.js +2 -0
  274. package/dist/workspace/merge-record.schema.json +49 -0
  275. package/dist/workspace/pin-integrity.d.ts.map +1 -1
  276. package/dist/workspace/pin-integrity.js +3 -2
  277. package/dist/workspace/pr-report.schema.json +75 -8
  278. package/dist/workspace/reason-codes.d.ts +18 -1
  279. package/dist/workspace/reason-codes.d.ts.map +1 -1
  280. package/dist/workspace/reason-codes.js +20 -2
  281. package/dist/workspace/release-candidates.d.ts +129 -0
  282. package/dist/workspace/release-candidates.d.ts.map +1 -0
  283. package/dist/workspace/release-candidates.js +233 -0
  284. package/dist/workspace/release-candidates.schema.json +353 -0
  285. package/dist/workspace/run-event.schema.json +3 -1
  286. package/dist/workspace/security.d.ts +40 -0
  287. package/dist/workspace/security.d.ts.map +1 -0
  288. package/dist/workspace/security.js +99 -0
  289. package/dist/workspace/status.schema.json +3 -1
  290. package/dist/workspace/write-scope.d.ts +9 -0
  291. package/dist/workspace/write-scope.d.ts.map +1 -1
  292. package/dist/workspace/write-scope.js +11 -1
  293. package/package.json +8 -1
  294. package/src/__fixtures__/pr-loop/pr-apply-wave-waiting.note.golden.md +48 -0
  295. package/src/__fixtures__/pr-loop/pr-plan.note.golden.md +1 -1
  296. package/src/ci-jobs.ts +11 -2
  297. package/src/cli/commands/__fixtures__/init-lexicon-output/package.json +3 -3
  298. package/src/cli/commands/audit.test.ts +2 -2
  299. package/src/cli/commands/check-lexicon-plugin.test.ts +9 -0
  300. package/src/cli/commands/check-lexicon-plugin.ts +11 -8
  301. package/src/cli/commands/check-lexicon.test.ts +1 -1
  302. package/src/cli/commands/check-lexicon.ts +16 -11
  303. package/src/cli/commands/import.ts +40 -0
  304. package/src/cli/commands/init-lexicon/templates/project.ts +4 -3
  305. package/src/cli/commands/init-lexicon.test.ts +8 -5
  306. package/src/cli/commands/onboard.test.ts +45 -0
  307. package/src/cli/commands/onboard.ts +8 -4
  308. package/src/cli/commands/update.test.ts +6 -0
  309. package/src/cli/commands/update.ts +4 -1
  310. package/src/cli/compiled-cli.e2e.test.ts +76 -11
  311. package/src/cli/dependencies.e2e.test.ts +101 -0
  312. package/src/cli/dependencies.test.ts +93 -0
  313. package/src/cli/dependencies.ts +122 -0
  314. package/src/cli/handlers/build.test.ts +105 -0
  315. package/src/cli/handlers/build.ts +35 -4
  316. package/src/cli/handlers/fan-out.test.ts +73 -0
  317. package/src/cli/handlers/fan-out.ts +11 -4
  318. package/src/cli/handlers/graph.test.ts +76 -0
  319. package/src/cli/handlers/graph.ts +19 -12
  320. package/src/cli/handlers/lifecycle-health.test.ts +123 -0
  321. package/src/cli/handlers/lifecycle-health.ts +157 -0
  322. package/src/cli/handlers/lifecycle.ts +1 -1
  323. package/src/cli/handlers/lint.test.ts +42 -0
  324. package/src/cli/handlers/lint.ts +6 -0
  325. package/src/cli/handlers/operator.ts +3 -3
  326. package/src/cli/handlers/pr-deploy-inputs.test.ts +209 -0
  327. package/src/cli/handlers/pr-record.test.ts +201 -0
  328. package/src/cli/handlers/pr-waves.test.ts +449 -0
  329. package/src/cli/handlers/pr.test.ts +156 -0
  330. package/src/cli/handlers/pr.ts +648 -33
  331. package/src/cli/handlers/promote.test.ts +43 -1
  332. package/src/cli/handlers/promote.ts +19 -3
  333. package/src/cli/handlers/release-cut-at.e2e.test.ts +115 -0
  334. package/src/cli/handlers/release-publish-targets.e2e.test.ts +2 -2
  335. package/src/cli/handlers/release-verify.e2e.test.ts +12 -10
  336. package/src/cli/handlers/release.e2e.test.ts +19 -28
  337. package/src/cli/handlers/release.ts +81 -11
  338. package/src/cli/handlers/run-components-exit.test.ts +99 -0
  339. package/src/cli/handlers/run-signer.test.ts +79 -0
  340. package/src/cli/handlers/run.ts +34 -16
  341. package/src/cli/main.test.ts +18 -0
  342. package/src/cli/main.ts +120 -33
  343. package/src/cli/parse-args.ts +28 -0
  344. package/src/cli/registry.ts +35 -8
  345. package/src/codegen/generate-post-synth-barrel.ts +2 -2
  346. package/src/codegen/lexicon-regen.ts +1 -1
  347. package/src/codegen/pinned-upgrade.ts +2 -2
  348. package/src/codegen/post-synth-barrel-guards.test.ts +6 -11
  349. package/src/components/capability.ts +51 -3
  350. package/src/components/changed-files.test.ts +16 -1
  351. package/src/components/changed-files.ts +9 -1
  352. package/src/components/deploy-inputs.test.ts +108 -0
  353. package/src/components/deploy-inputs.ts +225 -0
  354. package/src/components/driver.test.ts +36 -1
  355. package/src/components/driver.ts +87 -4
  356. package/src/components/fan-out-record.ts +29 -1
  357. package/src/components/fan-out-run.test.ts +35 -0
  358. package/src/components/fan-out-run.ts +40 -1
  359. package/src/components/gate-plan.ts +9 -0
  360. package/src/components/pr-pipeline.test.ts +100 -0
  361. package/src/components/pr-pipeline.ts +184 -28
  362. package/src/components/pr-run.test.ts +323 -18
  363. package/src/components/pr-run.ts +355 -76
  364. package/src/components/release-compile.test.ts +34 -0
  365. package/src/components/release-compile.ts +89 -8
  366. package/src/components/release-promote.test.ts +55 -2
  367. package/src/components/release-promote.ts +93 -23
  368. package/src/components/verbs/bom-writer.ts +1 -1
  369. package/src/components/verbs/lockfile-sbom-generator.test.ts +36 -0
  370. package/src/components/verbs/lockfile-sbom-generator.ts +43 -5
  371. package/src/components/wave-plan.ts +48 -8
  372. package/src/discovery/fold-host-method.test.ts +87 -0
  373. package/src/discovery/fold-import.ts +15 -5
  374. package/src/discovery/fold-package-composite.test.ts +27 -0
  375. package/src/discovery/fold-specifiers.test.ts +8 -0
  376. package/src/discovery/sandbox/bundle.ts +6 -0
  377. package/src/discovery/specifier-resolve.ts +8 -2
  378. package/src/fold/fold.test.ts +72 -0
  379. package/src/fold/fold.ts +71 -0
  380. package/src/fold/subset.test.ts +31 -0
  381. package/src/fold/subset.ts +99 -0
  382. package/src/graph-detail.test.ts +57 -0
  383. package/src/graph-detail.ts +33 -7
  384. package/src/health.schema.json +191 -0
  385. package/src/health.test.ts +62 -0
  386. package/src/health.ts +178 -0
  387. package/src/lexicon-dist.e2e.test.ts +254 -0
  388. package/src/lexicon-module.test.ts +47 -0
  389. package/src/lexicon-module.ts +49 -7
  390. package/src/lexicon-plugin-helpers.ts +6 -4
  391. package/src/lexicon.ts +43 -1
  392. package/src/lifecycle/affected.test.ts +7 -0
  393. package/src/lifecycle/affected.ts +6 -1
  394. package/src/lifecycle/merge-record.test.ts +111 -0
  395. package/src/lifecycle/merge-record.ts +154 -0
  396. package/src/lifecycle/publish-attachments.ts +25 -13
  397. package/src/lifecycle/publish-npm.ts +4 -3
  398. package/src/lifecycle/publish-targets.test.ts +34 -4
  399. package/src/lifecycle/release-at.test.ts +48 -0
  400. package/src/lifecycle/release-at.ts +100 -0
  401. package/src/lifecycle/release-cut.test.ts +41 -0
  402. package/src/lifecycle/release-cut.ts +22 -11
  403. package/src/lifecycle/release-ledger.ts +34 -0
  404. package/src/lifecycle/release-publish.test.ts +43 -13
  405. package/src/lifecycle/release-publish.ts +38 -18
  406. package/src/lifecycle/release-store.ts +57 -13
  407. package/src/lifecycle/run-ledger.test.ts +13 -0
  408. package/src/lifecycle/run-ledger.ts +1 -0
  409. package/src/lifecycle/work-dir.test.ts +77 -0
  410. package/src/lifecycle/work-dir.ts +82 -0
  411. package/src/lint/discover.test.ts +46 -2
  412. package/src/lint/discover.ts +55 -49
  413. package/src/lint/rules/op/index.ts +4 -2
  414. package/src/lint/rules/op/ops018-shell-image-digest.test.ts +60 -0
  415. package/src/lint/rules/op/ops018-shell-image-digest.ts +48 -0
  416. package/src/module-source.test.ts +85 -0
  417. package/src/module-source.ts +112 -0
  418. package/src/op/activities/activity-contracts.ts +3 -0
  419. package/src/op/activities/factory.ts +1 -1
  420. package/src/op/activities/shell-container.e2e.test.ts +67 -0
  421. package/src/op/activities/shell.test.ts +44 -1
  422. package/src/op/activities/shell.ts +110 -3
  423. package/src/op/builders.ts +7 -0
  424. package/src/op/discover-root.test.ts +31 -2
  425. package/src/op/discover.ts +14 -4
  426. package/src/op/gate.test.ts +30 -0
  427. package/src/op/gate.ts +3 -0
  428. package/src/op/op-waves-run.ts +20 -5
  429. package/src/op/op-waves.test.ts +49 -0
  430. package/src/op/operator.ts +2 -2
  431. package/src/op/runtime.ts +2 -0
  432. package/src/op/step-console.test.ts +4 -2
  433. package/src/op/steward.ts +6 -4
  434. package/src/op/work-lease-run.test.ts +88 -2
  435. package/src/op/work-lease-run.ts +52 -12
  436. package/src/pr-forge-bundle.test.ts +2 -2
  437. package/src/pr-forge.test.ts +42 -0
  438. package/src/pr-forge.ts +40 -0
  439. package/src/pr-loop-bundle.test.ts +2 -1
  440. package/src/pr-loop.test.ts +146 -1
  441. package/src/pr-loop.ts +278 -17
  442. package/src/pr-report-url.ts +7 -7
  443. package/src/runner-start-bundle.test.ts +29 -0
  444. package/src/runner-start.test.ts +179 -0
  445. package/src/runner-start.ts +329 -0
  446. package/src/terraform/__fixtures__/advise.test.ts +21 -2
  447. package/src/ts-loader.test.ts +89 -1
  448. package/src/ts-loader.ts +180 -13
  449. package/src/workspace/changes.test.ts +1 -1
  450. package/src/workspace/chant-migrations/fountain-retired-kinds.test.ts +33 -0
  451. package/src/workspace/chant-migrations/fountain-retired-kinds.ts +190 -0
  452. package/src/workspace/chant-migrations.e2e.test.ts +5 -0
  453. package/src/workspace/chant-migrations.ts +2 -0
  454. package/src/workspace/check-contract.test.ts +3 -2
  455. package/src/workspace/check.schema.json +70 -2
  456. package/src/workspace/checks/boxes.ts +9 -9
  457. package/src/workspace/checks/security.test.ts +138 -0
  458. package/src/workspace/checks/security.ts +305 -0
  459. package/src/workspace/checks.ts +5 -0
  460. package/src/workspace/ci-builds.e2e.test.ts +208 -0
  461. package/src/workspace/ci-builds.test.ts +174 -0
  462. package/src/workspace/ci-builds.ts +385 -0
  463. package/src/workspace/ci-green-builds.test.ts +180 -0
  464. package/src/workspace/ci-green-cli.test.ts +54 -0
  465. package/src/workspace/ci-green-cli.ts +26 -5
  466. package/src/workspace/ci-green-forge.ts +30 -4
  467. package/src/workspace/ci-green-runs.test.ts +53 -11
  468. package/src/workspace/ci-green-workflow.test.ts +84 -1
  469. package/src/workspace/ci-green-workflow.ts +139 -2
  470. package/src/workspace/ci-green.test.ts +6 -3
  471. package/src/workspace/ci-green.ts +408 -48
  472. package/src/workspace/ci-last-green.schema.json +49 -0
  473. package/src/workspace/ci-list.schema.json +47 -7
  474. package/src/workspace/ci-report-url.test.ts +220 -0
  475. package/src/workspace/ci-report-url.ts +33 -0
  476. package/src/workspace/ci-run-index.schema.json +6 -4
  477. package/src/workspace/ci-run-index.test.ts +42 -3
  478. package/src/workspace/ci-run-index.ts +19 -5
  479. package/src/workspace/ci-run.test.ts +203 -8
  480. package/src/workspace/ci-run.ts +295 -63
  481. package/src/workspace/ci-runner-key.test.ts +55 -17
  482. package/src/workspace/ci-runner-key.ts +36 -11
  483. package/src/workspace/ci-runner-start.test.ts +151 -0
  484. package/src/workspace/ci-runner-start.ts +193 -0
  485. package/src/workspace/ci-serve-builds.test.ts +86 -0
  486. package/src/workspace/ci-serve.test.ts +209 -6
  487. package/src/workspace/ci-serve.ts +341 -42
  488. package/src/workspace/declaration.schema.json +30 -2
  489. package/src/workspace/declaration.test.ts +40 -0
  490. package/src/workspace/declaration.ts +40 -3
  491. package/src/workspace/export.ts +6 -3
  492. package/src/workspace/ls.schema.json +9 -2
  493. package/src/workspace/ls.ts +10 -4
  494. package/src/workspace/member-pipeline.ts +2 -1
  495. package/src/workspace/merge-record.schema.json +49 -0
  496. package/src/workspace/pin-integrity.test.ts +5 -0
  497. package/src/workspace/pin-integrity.ts +3 -2
  498. package/src/workspace/pr-report.schema.json +75 -8
  499. package/src/workspace/reason-codes.test.ts +2 -0
  500. package/src/workspace/reason-codes.ts +20 -2
  501. package/src/workspace/release-candidates.schema.json +353 -0
  502. package/src/workspace/release-candidates.test.ts +106 -0
  503. package/src/workspace/release-candidates.ts +315 -0
  504. package/src/workspace/run-event.schema.json +3 -1
  505. package/src/workspace/security.test.ts +70 -0
  506. package/src/workspace/security.ts +118 -0
  507. package/src/workspace/status.schema.json +3 -1
  508. package/src/workspace/write-scope.test.ts +29 -1
  509. package/src/workspace/write-scope.ts +12 -1
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `fountain-retired-kinds` (#3987, managoat/managoat#2793): take a project's
3
+ * fountain declarations off the kinds Managoat v0.29.0 removed.
4
+ *
5
+ * Managoat dropped the team, its schedules, webhooks and persistent
6
+ * sandboxes. Since #3987 the fountain lexicon keeps `Teammate`, `Schedule`
7
+ * and `Webhook` only as stubs, and FTN025 fails a build that declares one, or
8
+ * an Agent with `sandbox_mode: "persistent"`. chud's template (and the studio
9
+ * kit's copy of it) declares a Teammate and a Schedule for its night shift
10
+ * and its factory, and gives the dispatcher a persistent sandbox, so a repo
11
+ * migrated off chud stopped building with chant 0.124.32.
12
+ *
13
+ * In each `chant` member, every `.ts` file that imports the fountain lexicon
14
+ * loses its `new Teammate(...)`, `new Schedule(...)` and `new Webhook(...)`
15
+ * declarations, those names from the import, any one-line constant only they
16
+ * used, and `sandbox_mode: "persistent"`. Each removed Schedule is listed as
17
+ * not moved: its clock now lives outside Managoat. A removed declaration whose
18
+ * name the file still uses elsewhere is a conflict, as is a file that still
19
+ * names a retired kind after the edits.
20
+ *
21
+ * The plan is empty once no fountain file declares a retired kind.
22
+ */
23
+ import type { ChantMigration, NotMoved } from "../chant-migrations.js";
24
+ export declare const FOUNTAIN_RETIRED_KINDS = "fountain-retired-kinds";
25
+ interface Rewrite {
26
+ text: string;
27
+ notMoved: NotMoved[];
28
+ conflict?: string;
29
+ }
30
+ /** The file without its retired declarations, or null when it has none. */
31
+ export declare function rewriteFountainFile(path: string, original: string): Rewrite | null;
32
+ export declare const fountainRetiredKinds: ChantMigration;
33
+ export {};
34
+ //# sourceMappingURL=fountain-retired-kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fountain-retired-kinds.d.ts","sourceRoot":"","sources":["../../../src/workspace/chant-migrations/fountain-retired-kinds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAA6C,QAAQ,EAA+B,MAAM,qBAAqB,CAAC;AAG5I,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AA2D/D,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA8ClF;AA6CD,eAAO,MAAM,oBAAoB,EAAE,cAIlC,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * `fountain-retired-kinds` (#3987, managoat/managoat#2793): take a project's
3
+ * fountain declarations off the kinds Managoat v0.29.0 removed.
4
+ *
5
+ * Managoat dropped the team, its schedules, webhooks and persistent
6
+ * sandboxes. Since #3987 the fountain lexicon keeps `Teammate`, `Schedule`
7
+ * and `Webhook` only as stubs, and FTN025 fails a build that declares one, or
8
+ * an Agent with `sandbox_mode: "persistent"`. chud's template (and the studio
9
+ * kit's copy of it) declares a Teammate and a Schedule for its night shift
10
+ * and its factory, and gives the dispatcher a persistent sandbox, so a repo
11
+ * migrated off chud stopped building with chant 0.124.32.
12
+ *
13
+ * In each `chant` member, every `.ts` file that imports the fountain lexicon
14
+ * loses its `new Teammate(...)`, `new Schedule(...)` and `new Webhook(...)`
15
+ * declarations, those names from the import, any one-line constant only they
16
+ * used, and `sandbox_mode: "persistent"`. Each removed Schedule is listed as
17
+ * not moved: its clock now lives outside Managoat. A removed declaration whose
18
+ * name the file still uses elsewhere is a conflict, as is a file that still
19
+ * names a retired kind after the edits.
20
+ *
21
+ * The plan is empty once no fountain file declares a retired kind.
22
+ */
23
+ import { existsSync, readdirSync } from "node:fs";
24
+ import { join, posix } from "node:path";
25
+ import { applyEdits, readText } from "./chud-lexicon-exit.js";
26
+ export const FOUNTAIN_RETIRED_KINDS = "fountain-retired-kinds";
27
+ const DESCRIPTION = "drop the fountain kinds Managoat removed: Teammate, Schedule, Webhook and persistent sandboxes (#3987)";
28
+ const FOUNTAIN = "@intentius/chant-lexicon-fountain";
29
+ const RETIRED = ["Teammate", "Schedule", "Webhook"];
30
+ const IMPORT = /import\s*\{([^}]*)\}\s*from\s*"@intentius\/chant-lexicon-fountain";/;
31
+ /** A top-level declaration of a retired kind, with the doc comment just above it. */
32
+ const DECLARATION = /(?:\/\*\*(?:(?!\*\/)[\s\S])*\*\/\n)?export const (\w+) = new (Teammate|Schedule|Webhook)\(\{\n[\s\S]*?\n\}\);\n(?:\n)?/g;
33
+ const PERSISTENT = /^[ \t]*sandbox_mode:\s*"persistent",?[ \t]*\n/gm;
34
+ /** The template's prose about what the edits remove. */
35
+ const TEMPLATE_PROSE = [
36
+ {
37
+ find: " * build by this name (CHUD_FOUNTAIN_VAULT overrides it), and the two\n * Teammates below run with it.\n",
38
+ replace: " * build by this name (CHUD_FOUNTAIN_VAULT overrides it).\n",
39
+ },
40
+ {
41
+ find: " * Steward does: a persistent sandbox (its checkout survives a turn) and no\n" +
42
+ " * permission prompts (nobody is at the keyboard; chant's own gates still need\n" +
43
+ " * a person). Its Teammate gives it one thread, so two schedule fires never\n" +
44
+ " * run two dispatchers on one checkout, and the Schedule is what triggers it.\n",
45
+ replace: " * Steward does, with no permission prompts (nobody is at the keyboard;\n" +
46
+ " * chant's own gates still need a person). Managoat has no team or scheduler\n" +
47
+ " * any more: a clock outside it runs `chant run dispatch --on fountain`.\n",
48
+ },
49
+ ];
50
+ /** The README row `chud-lexicon-exit` wrote, which names the factory's Schedule. */
51
+ const README_EDITS = [
52
+ { find: " (the agents that build the app, as fountain specs; its factory Schedule still calls the kit's dispatch Op)", replace: " (the agents that build the app, as fountain specs)" },
53
+ ];
54
+ function tsFiles(dir, rel = "", out = []) {
55
+ let entries;
56
+ try {
57
+ entries = readdirSync(join(dir, rel), { withFileTypes: true });
58
+ }
59
+ catch {
60
+ return out;
61
+ }
62
+ for (const e of entries) {
63
+ const path = rel ? posix.join(rel, e.name) : e.name;
64
+ if (e.isDirectory()) {
65
+ if (e.name === "node_modules" || e.name === "dist" || e.name.startsWith("."))
66
+ continue;
67
+ tsFiles(dir, path, out);
68
+ }
69
+ else if (e.name.endsWith(".ts") && !e.name.endsWith(".d.ts")) {
70
+ out.push(path);
71
+ }
72
+ }
73
+ return out;
74
+ }
75
+ /** The text with its comments and string contents blanked, so prose naming a kind is not a use of it. */
76
+ const code = (text) => text.replace(/\/\*[\s\S]*?\*\/|\/\/[^\n]*|"(?:\\.|[^"\\\n])*"|'(?:\\.|[^'\\\n])*'|`(?:\\.|[^`\\])*`/g, '""');
77
+ const uses = (text, name) => new RegExp(`(?<![\\w$.])${name}(?![\\w$])`).test(code(text));
78
+ /** The file without its retired declarations, or null when it has none. */
79
+ export function rewriteFountainFile(path, original) {
80
+ const imported = original.match(IMPORT);
81
+ if (!imported)
82
+ return null;
83
+ const declared = [...original.matchAll(DECLARATION)];
84
+ const persistent = PERSISTENT.test(original);
85
+ PERSISTENT.lastIndex = 0;
86
+ if (declared.length === 0 && !persistent)
87
+ return null;
88
+ const notMoved = [];
89
+ let text = original;
90
+ const removed = [];
91
+ const referenced = new Set();
92
+ for (const [block, name, kind] of declared) {
93
+ text = text.replace(block, "");
94
+ removed.push(name);
95
+ const body = block.slice(block.indexOf("new "));
96
+ for (const id of body.match(/\b[a-zA-Z_$][\w$]*\b/g) ?? [])
97
+ referenced.add(id);
98
+ if (kind === "Schedule") {
99
+ const cron = body.match(/cron:\s*"([^"]+)"/)?.[1];
100
+ notMoved.push({
101
+ what: `the Schedule ${name}${cron ? ` (cron "${cron}")` : ""} in ${path}`,
102
+ where: "a clock outside Managoat, which has no scheduler: a CI schedule or a CronJob running `chant run <op> --on fountain`, or `chant operator --steward`",
103
+ });
104
+ }
105
+ else if (kind === "Webhook") {
106
+ notMoved.push({ what: `the Webhook ${name} in ${path}`, where: "nothing: read a run's outcome from `chant run status` or `log`, or the conversation's event stream" });
107
+ }
108
+ }
109
+ text = text.replace(PERSISTENT, "");
110
+ // A one-line constant only the removed declarations used (the template's `nightlyMeta`).
111
+ for (const id of referenced) {
112
+ const line = new RegExp(`^export const ${id} = [^\\n]*;\\n\\n?`, "m");
113
+ const hit = text.match(line);
114
+ if (hit && !uses(text.replace(hit[0], ""), id))
115
+ text = text.replace(hit[0], "");
116
+ }
117
+ const names = imported[1].split(",").map((n) => n.trim()).filter(Boolean);
118
+ const kept = names.filter((n) => !RETIRED.includes(n) || uses(text.replace(IMPORT, ""), n));
119
+ if (kept.length !== names.length)
120
+ text = text.replace(IMPORT, `import { ${kept.join(", ")} } from "${FOUNTAIN}";`);
121
+ text = applyEdits(text, TEMPLATE_PROSE).text.replace(/\n{3,}/g, "\n\n").replace(/\n+$/, "\n");
122
+ const dangling = removed.filter((n) => uses(text, n));
123
+ if (dangling.length > 0)
124
+ return { text, notMoved, conflict: `${dangling.join(", ")} ${dangling.length === 1 ? "is" : "are"} still used after the retired declarations go. Remove ${dangling.length === 1 ? "that use" : "those uses"} by hand, then run the upgrade again` };
125
+ const still = RETIRED.filter((k) => new RegExp(`\\bnew ${k}\\(`).test(text));
126
+ if (still.length > 0)
127
+ return { text, notMoved, conflict: `a ${still.join(", ")} declaration this migration cannot read. Remove it by hand, then run the upgrade again` };
128
+ return { text, notMoved };
129
+ }
130
+ function planRetiredKinds(ctx) {
131
+ const { dir } = ctx;
132
+ let decl = null;
133
+ try {
134
+ decl = JSON.parse(readText(dir, "chant.workspace.json") ?? "null");
135
+ }
136
+ catch {
137
+ decl = null;
138
+ }
139
+ const members = (decl?.members ?? []).filter((m) => m.kind === "chant" && m.dir).map((m) => posix.normalize(m.dir));
140
+ if (members.length === 0 && existsSync(join(dir, "chant.config.ts")))
141
+ members.push(".");
142
+ const changes = [];
143
+ const notMoved = [];
144
+ const conflicts = [];
145
+ for (const member of members) {
146
+ for (const rel of tsFiles(join(dir, member))) {
147
+ const path = posix.join(member, rel);
148
+ const text = readText(dir, path);
149
+ if (text === undefined || !text.includes(FOUNTAIN))
150
+ continue;
151
+ const rewrite = rewriteFountainFile(path, text);
152
+ if (!rewrite)
153
+ continue;
154
+ if (rewrite.conflict) {
155
+ conflicts.push({ path, reason: rewrite.conflict });
156
+ continue;
157
+ }
158
+ changes.push({ path, action: "write", why: "no Teammate, Schedule, Webhook or persistent sandbox, which Managoat removed and FTN025 fails", data: Buffer.from(rewrite.text) });
159
+ notMoved.push(...rewrite.notMoved);
160
+ }
161
+ }
162
+ if (changes.length === 0 && conflicts.length === 0)
163
+ return null;
164
+ const readme = readText(dir, "README.md");
165
+ if (readme !== undefined && conflicts.length === 0) {
166
+ const edited = applyEdits(readme, README_EDITS).text;
167
+ if (edited !== readme)
168
+ changes.push({ path: "README.md", action: "write", why: "the agents no longer declare a factory Schedule", data: Buffer.from(edited) });
169
+ }
170
+ return { id: FOUNTAIN_RETIRED_KINDS, description: DESCRIPTION, changes, notMoved, conflicts };
171
+ }
172
+ export const fountainRetiredKinds = {
173
+ id: FOUNTAIN_RETIRED_KINDS,
174
+ description: DESCRIPTION,
175
+ plan: planRetiredKinds,
176
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"chant-migrations.d.ts","sourceRoot":"","sources":["../../src/workspace/chant-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,kBAAkB,GAAG,IAAI,CAAC;CAC7D;AAED,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAOrD,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,EAAE,UAAU,GAAE,SAAS,cAAc,EAAqB,GAAG,kBAAkB,EAAE,CAS9I;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,EAAE,UAAU,GAAE,SAAS,cAAc,EAAqB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW9K;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAYjG;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAS3F"}
1
+ {"version":3,"file":"chant-migrations.d.ts","sourceRoot":"","sources":["../../src/workspace/chant-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAS9C,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qEAAqE;AACrE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,kBAAkB,GAAG,IAAI,CAAC;CAC7D;AAED,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAQrD,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,EAAE,UAAU,GAAE,SAAS,cAAc,EAAqB,GAAG,kBAAkB,EAAE,CAS9I;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,EAAE,UAAU,GAAE,SAAS,cAAc,EAAqB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW9K;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAYjG;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAS3F"}
@@ -40,6 +40,7 @@ import { chudLexiconExitShipInputs } from "./chant-migrations/chud-lexicon-exit-
40
40
  import { chudLexiconExitShipPolicy } from "./chant-migrations/chud-lexicon-exit-ship-policy.js";
41
41
  import { chudLexiconExitFlySite } from "./chant-migrations/chud-lexicon-exit-fly-site.js";
42
42
  import { chudLexiconExitLiveNames } from "./chant-migrations/chud-lexicon-exit-live-names.js";
43
+ import { fountainRetiredKinds } from "./chant-migrations/fountain-retired-kinds.js";
43
44
  /** Every migration chant ships, in the order they are planned. */
44
45
  export const CHANT_MIGRATIONS = [
45
46
  chudLexiconExit,
@@ -48,6 +49,7 @@ export const CHANT_MIGRATIONS = [
48
49
  chudLexiconExitShipPolicy,
49
50
  chudLexiconExitFlySite,
50
51
  chudLexiconExitLiveNames,
52
+ fountainRetiredKinds,
51
53
  ];
52
54
  /** The plans for a scope: each migration not yet in the lineage that finds something to move. */
53
55
  export function planChantMigrations(ctx, migrations = CHANT_MIGRATIONS) {
@@ -298,7 +298,41 @@
298
298
  "flag-stale",
299
299
  "diagram-source-missing",
300
300
  "diagram-render-missing",
301
- "diagram-render-drift"
301
+ "diagram-render-drift",
302
+
303
+ "security-signers-missing",
304
+
305
+ "security-release-gate-missing",
306
+
307
+ "security-publish-allows-unsigned",
308
+
309
+ "security-sbom-disabled",
310
+
311
+ "security-sbom-unsourced",
312
+
313
+ "security-publish-no-provenance",
314
+
315
+ "security-component-no-sbom",
316
+
317
+ "security-component-no-verify",
318
+
319
+ "security-signed-since-unset",
320
+
321
+ "security-runner-untrusted",
322
+
323
+ "security-tick-no-key",
324
+
325
+ "security-review-not-required",
326
+
327
+ "security-attribution-any",
328
+
329
+ "security-gate-unsigned",
330
+
331
+ "security-runner-start-no-key",
332
+
333
+ "security-runner-start-no-role",
334
+
335
+ "security-trust-unreadable"
302
336
  ],
303
337
  "description": "For WSP001: why the declaration can't be read. For WSP121 to WSP127, the box finding (#2726, #2727, #2780, #2850). For WSP117, work-acceptance-unmet (#2772). For WSP118, flag-stale (#4024). For WSP131 to WSP133, the diagram finding (#2764)."
304
338
  }
@@ -377,7 +411,41 @@
377
411
  "flag-stale",
378
412
  "diagram-source-missing",
379
413
  "diagram-render-missing",
380
- "diagram-render-drift"
414
+ "diagram-render-drift",
415
+
416
+ "security-signers-missing",
417
+
418
+ "security-release-gate-missing",
419
+
420
+ "security-publish-allows-unsigned",
421
+
422
+ "security-sbom-disabled",
423
+
424
+ "security-sbom-unsourced",
425
+
426
+ "security-publish-no-provenance",
427
+
428
+ "security-component-no-sbom",
429
+
430
+ "security-component-no-verify",
431
+
432
+ "security-signed-since-unset",
433
+
434
+ "security-runner-untrusted",
435
+
436
+ "security-tick-no-key",
437
+
438
+ "security-review-not-required",
439
+
440
+ "security-attribution-any",
441
+
442
+ "security-gate-unsigned",
443
+
444
+ "security-runner-start-no-key",
445
+
446
+ "security-runner-start-no-role",
447
+
448
+ "security-trust-unreadable"
381
449
  ],
382
450
  "description": "For WSP001: why the declaration can't be read. For WSP121 to WSP127, the box finding (#2726, #2727, #2780, #2850). For WSP117, work-acceptance-unmet (#2772). For WSP118, flag-stale (#4024). For WSP131 to WSP133, the diagram finding (#2764)."
383
451
  },
@@ -28,15 +28,15 @@
28
28
  * listed here after these two.
29
29
  *
30
30
  * WSP125 (`box-fountain-callback-undeclared`, #2780) is the one credential a
31
- * box gets without asking. fountain v0.21.0 gives every persistent sandbox a
32
- * callback token scoped to its owner (`FOUNTAIN_TOKEN`, `sandbox_api_access:
33
- * owner`), and a fountain `Box` is always persistent, so its member's block
34
- * has to say so: the capability `fountain-callback`, brokered by `fountain`,
31
+ * box gets without asking. fountain gives every sandbox a callback token
32
+ * scoped to its owner (`FOUNTAIN_TOKEN`, `sandbox_api_access: owner`) unless
33
+ * its conversation asks for none, and a fountain `Box` runs with it, so its
34
+ * member's block has to say so: the capability `fountain-callback`, brokered by `fountain`,
35
35
  * with scope `owner`. It is named apart from `fountain`, the API access a
36
36
  * lobby may broker for the same box. A member builds a Box when one of its TypeScript or JavaScript files
37
37
  * imports `Box` from `@intentius/chant-lexicon-fountain` and calls it, read as
38
- * syntax and never run. Upstream, managoat/fountain#2497 asks for a way to run
39
- * a persistent agent with no callback token.
38
+ * syntax and never run. Upstream, managoat/fountain#2497 asked for a way to run
39
+ * a box's agent with no callback token.
40
40
  *
41
41
  * WSP126 (`box-intent-unknown`) and WSP127 (`box-intent-unconstrained`), #2850,
42
42
  * read the decision record a box block names as its intent (`box-intent.ts`).
@@ -28,15 +28,15 @@
28
28
  * listed here after these two.
29
29
  *
30
30
  * WSP125 (`box-fountain-callback-undeclared`, #2780) is the one credential a
31
- * box gets without asking. fountain v0.21.0 gives every persistent sandbox a
32
- * callback token scoped to its owner (`FOUNTAIN_TOKEN`, `sandbox_api_access:
33
- * owner`), and a fountain `Box` is always persistent, so its member's block
34
- * has to say so: the capability `fountain-callback`, brokered by `fountain`,
31
+ * box gets without asking. fountain gives every sandbox a callback token
32
+ * scoped to its owner (`FOUNTAIN_TOKEN`, `sandbox_api_access: owner`) unless
33
+ * its conversation asks for none, and a fountain `Box` runs with it, so its
34
+ * member's block has to say so: the capability `fountain-callback`, brokered by `fountain`,
35
35
  * with scope `owner`. It is named apart from `fountain`, the API access a
36
36
  * lobby may broker for the same box. A member builds a Box when one of its TypeScript or JavaScript files
37
37
  * imports `Box` from `@intentius/chant-lexicon-fountain` and calls it, read as
38
- * syntax and never run. Upstream, managoat/fountain#2497 asks for a way to run
39
- * a persistent agent with no callback token.
38
+ * syntax and never run. Upstream, managoat/fountain#2497 asked for a way to run
39
+ * a box's agent with no callback token.
40
40
  *
41
41
  * WSP126 (`box-intent-unknown`) and WSP127 (`box-intent-unconstrained`), #2850,
42
42
  * read the decision record a box block names as its intent (`box-intent.ts`).
@@ -68,7 +68,7 @@ export const WSP_BOX_UNBROKERED = "WSP122";
68
68
  export const WSP_BOX_FOUNTAIN_CALLBACK = "WSP125";
69
69
  export const WSP_BOX_INTENT_UNKNOWN = "WSP126";
70
70
  export const WSP_BOX_INTENT_UNCONSTRAINED = "WSP127";
71
- /** The fountain lexicon's package, whose `Box` composite runs a persistent sandbox. */
71
+ /** The fountain lexicon's package, whose `Box` composite declares a box's agent. */
72
72
  const FOUNTAIN_LEXICON = "@intentius/chant-lexicon-fountain";
73
73
  /**
74
74
  * The capability a box block declares for fountain's callback token (#2780).
@@ -379,7 +379,7 @@ export const BOX_CHECKS = [
379
379
  {
380
380
  id: WSP_BOX_FOUNTAIN_CALLBACK,
381
381
  name: "box-fountain-callback-undeclared",
382
- description: "A box member that builds a fountain Box declares the callback token fountain gives its persistent sandbox: the fountain-callback capability, brokered by fountain, with scope owner.",
382
+ description: "A box member that builds a fountain Box declares the callback token fountain gives its sandbox: the fountain-callback capability, brokered by fountain, with scope owner.",
383
383
  severity: "error",
384
384
  configurable: true,
385
385
  check(ctx) {
@@ -424,7 +424,7 @@ export const BOX_CHECKS = [
424
424
  checkId: this.id,
425
425
  severity: this.severity,
426
426
  code: "box-fountain-callback-undeclared",
427
- message: `box-fountain-callback-undeclared: member ${m.name} builds a fountain Box (${at.path}), and fountain v0.21.0 gives a persistent box's sandbox ` +
427
+ message: `box-fountain-callback-undeclared: member ${m.name} builds a fountain Box (${at.path}), and fountain gives a box's sandbox ` +
428
428
  `a callback token scoped to its owner (FOUNTAIN_TOKEN); ${why}. Declare ${expected} in the box block ` +
429
429
  `(managoat/fountain#2497 tracks running without it)`,
430
430
  entity: m.name,
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The security group checklists, WSP161 to WSP165 (#4168 step 7).
3
+ *
4
+ * A workspace opts into a security group with `security` in the
5
+ * declaration, at the top level or on a member (../security.ts). Each group
6
+ * has one check here, which reports what the group still lacks in the tree
7
+ * read. A group the declaration does not name is never checked, so a
8
+ * workspace that opts into nothing gets no finding from this file (#4168:
9
+ * security features are opt-in).
10
+ *
11
+ * | Id | Group | Codes |
12
+ * |---|---|---|
13
+ * | WSP161 | `verified-releases` | `security-signers-missing`, `security-release-gate-missing`, `security-publish-allows-unsigned` |
14
+ * | WSP162 | `supply-chain` | `security-sbom-disabled`, `security-sbom-unsourced`, `security-publish-no-provenance`, `security-component-no-sbom`, `security-component-no-verify` |
15
+ * | WSP163 | `who-ran-it` | `security-signed-since-unset`, `security-runner-untrusted`, `security-tick-no-key` |
16
+ * | WSP164 | `review-rules` | `security-review-not-required`, `security-attribution-any`, `security-gate-unsigned` |
17
+ * | WSP165 | `isolated-runners` | `security-runner-start-no-key`, `security-runner-start-no-role`, `security-trust-unreadable` |
18
+ *
19
+ * The checks read files, never run them: a member's `chant.config.ts` and
20
+ * `*.component.ts` are scanned as text, and the pipeline files are the
21
+ * forge files at the workspace root and in each member (`.github/workflows`,
22
+ * `.forgejo/workflows`, `.gitlab-ci.yml`). A command line is one line of a
23
+ * pipeline file that runs `chant release publish`, `chant ci tick` or
24
+ * `chant components pr-apply`.
25
+ */
26
+ import type { WorkspaceCheck } from "../checks.js";
27
+ /** The read contract's codes for the security findings, carried as `code` on each. */
28
+ export declare const SECURITY_FINDING_CODES: readonly ["security-signers-missing", "security-release-gate-missing", "security-publish-allows-unsigned", "security-sbom-disabled", "security-sbom-unsourced", "security-publish-no-provenance", "security-component-no-sbom", "security-component-no-verify", "security-signed-since-unset", "security-runner-untrusted", "security-tick-no-key", "security-review-not-required", "security-attribution-any", "security-gate-unsigned", "security-runner-start-no-key", "security-runner-start-no-role", "security-trust-unreadable"];
29
+ export declare const WSP_SECURITY_VERIFIED_RELEASES = "WSP161";
30
+ export declare const WSP_SECURITY_SUPPLY_CHAIN = "WSP162";
31
+ export declare const WSP_SECURITY_WHO_RAN_IT = "WSP163";
32
+ export declare const WSP_SECURITY_REVIEW_RULES = "WSP164";
33
+ export declare const WSP_SECURITY_ISOLATED_RUNNERS = "WSP165";
34
+ export declare const SECURITY_CHECKS: readonly WorkspaceCheck[];
35
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/workspace/checks/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA8C,MAAM,WAAW,CAAC;AAU5F,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,ygBAkBO,CAAC;AAI3C,eAAO,MAAM,8BAA8B,WAAW,CAAC;AACvD,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAClD,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAClD,eAAO,MAAM,6BAA6B,WAAW,CAAC;AA0GtD,eAAO,MAAM,eAAe,EAAE,SAAS,cAAc,EAuIpD,CAAC"}