@intentius/chant 0.13.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/dist/audit/catalog.d.ts +45 -5
  2. package/dist/audit/catalog.d.ts.map +1 -1
  3. package/dist/audit/proof.d.ts +3 -0
  4. package/dist/audit/proof.d.ts.map +1 -1
  5. package/dist/audit/report-model.d.ts +4 -1
  6. package/dist/audit/report-model.d.ts.map +1 -1
  7. package/dist/audit/report.d.ts +3 -0
  8. package/dist/audit/report.d.ts.map +1 -1
  9. package/dist/audit/rules-doc.d.ts +8 -2
  10. package/dist/audit/rules-doc.d.ts.map +1 -1
  11. package/dist/cli/commands/audit.d.ts.map +1 -1
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/lexicon-rolling-upgrade.d.ts +37 -0
  14. package/dist/cli/commands/lexicon-rolling-upgrade.d.ts.map +1 -0
  15. package/dist/cli/commands/lexicon-surface-diff.d.ts +48 -0
  16. package/dist/cli/commands/lexicon-surface-diff.d.ts.map +1 -0
  17. package/dist/cli/commands/lint.d.ts.map +1 -1
  18. package/dist/cli/commands/pinned-upgrade.d.ts +41 -0
  19. package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -0
  20. package/dist/cli/handlers/build.d.ts.map +1 -1
  21. package/dist/cli/handlers/components.d.ts +39 -0
  22. package/dist/cli/handlers/components.d.ts.map +1 -0
  23. package/dist/cli/handlers/dev.d.ts +3 -0
  24. package/dist/cli/handlers/dev.d.ts.map +1 -1
  25. package/dist/cli/handlers/graph.d.ts +4 -2
  26. package/dist/cli/handlers/graph.d.ts.map +1 -1
  27. package/dist/cli/handlers/misc.d.ts.map +1 -1
  28. package/dist/cli/handlers/run.d.ts +49 -0
  29. package/dist/cli/handlers/run.d.ts.map +1 -1
  30. package/dist/cli/main.d.ts.map +1 -1
  31. package/dist/cli/registry.d.ts +35 -0
  32. package/dist/cli/registry.d.ts.map +1 -1
  33. package/dist/codegen/fetch.d.ts +22 -0
  34. package/dist/codegen/fetch.d.ts.map +1 -1
  35. package/dist/codegen/lexicon-regen.d.ts +110 -0
  36. package/dist/codegen/lexicon-regen.d.ts.map +1 -0
  37. package/dist/codegen/pinned-upgrade.d.ts +153 -0
  38. package/dist/codegen/pinned-upgrade.d.ts.map +1 -0
  39. package/dist/codegen/rolling-upgrade.d.ts +138 -0
  40. package/dist/codegen/rolling-upgrade.d.ts.map +1 -0
  41. package/dist/codegen/surface-snapshot.d.ts +173 -0
  42. package/dist/codegen/surface-snapshot.d.ts.map +1 -0
  43. package/dist/codegen/version-bump.d.ts +21 -0
  44. package/dist/codegen/version-bump.d.ts.map +1 -0
  45. package/dist/components/auto-release.d.ts +93 -0
  46. package/dist/components/auto-release.d.ts.map +1 -0
  47. package/dist/components/builders.d.ts +37 -0
  48. package/dist/components/builders.d.ts.map +1 -0
  49. package/dist/components/capability-plugin-loader.d.ts +111 -0
  50. package/dist/components/capability-plugin-loader.d.ts.map +1 -0
  51. package/dist/components/capability-plugin-schema.d.ts +24 -0
  52. package/dist/components/capability-plugin-schema.d.ts.map +1 -0
  53. package/dist/components/capability-plugin.d.ts +85 -0
  54. package/dist/components/capability-plugin.d.ts.map +1 -0
  55. package/dist/components/capability.d.ts +89 -0
  56. package/dist/components/capability.d.ts.map +1 -0
  57. package/dist/components/cli-support.d.ts +204 -0
  58. package/dist/components/cli-support.d.ts.map +1 -0
  59. package/dist/components/component.d.ts +179 -0
  60. package/dist/components/component.d.ts.map +1 -0
  61. package/dist/components/config-defaults.d.ts +41 -0
  62. package/dist/components/config-defaults.d.ts.map +1 -0
  63. package/dist/components/discover.d.ts +60 -0
  64. package/dist/components/discover.d.ts.map +1 -0
  65. package/dist/components/driver-output.d.ts +20 -0
  66. package/dist/components/driver-output.d.ts.map +1 -0
  67. package/dist/components/driver.d.ts +209 -0
  68. package/dist/components/driver.d.ts.map +1 -0
  69. package/dist/components/index.d.ts +22 -0
  70. package/dist/components/index.d.ts.map +1 -0
  71. package/dist/components/manifest-persistence.d.ts +79 -0
  72. package/dist/components/manifest-persistence.d.ts.map +1 -0
  73. package/dist/components/pilots/alb-ecs.pilot.d.ts +27 -0
  74. package/dist/components/pilots/alb-ecs.pilot.d.ts.map +1 -0
  75. package/dist/components/pilots/dynamodb.pilot.d.ts +22 -0
  76. package/dist/components/pilots/dynamodb.pilot.d.ts.map +1 -0
  77. package/dist/components/pilots/jar-emr.pilot.d.ts +37 -0
  78. package/dist/components/pilots/jar-emr.pilot.d.ts.map +1 -0
  79. package/dist/components/pilots/lambda.pilot.d.ts +35 -0
  80. package/dist/components/pilots/lambda.pilot.d.ts.map +1 -0
  81. package/dist/components/pilots/neo4j-fanout.pilot.d.ts +17 -0
  82. package/dist/components/pilots/neo4j-fanout.pilot.d.ts.map +1 -0
  83. package/dist/components/pilots/project.d.ts +13 -0
  84. package/dist/components/pilots/project.d.ts.map +1 -0
  85. package/dist/components/presets/ecs-fargate.d.ts +59 -0
  86. package/dist/components/presets/ecs-fargate.d.ts.map +1 -0
  87. package/dist/components/presets/index.d.ts +29 -0
  88. package/dist/components/presets/index.d.ts.map +1 -0
  89. package/dist/components/presets/lambda.d.ts +35 -0
  90. package/dist/components/presets/lambda.d.ts.map +1 -0
  91. package/dist/components/presets/single-host-compose.d.ts +43 -0
  92. package/dist/components/presets/single-host-compose.d.ts.map +1 -0
  93. package/dist/components/registry.d.ts +29 -0
  94. package/dist/components/registry.d.ts.map +1 -0
  95. package/dist/components/starter-plugin.d.ts +51 -0
  96. package/dist/components/starter-plugin.d.ts.map +1 -0
  97. package/dist/components/temporal-codegen-loader.d.ts +27 -0
  98. package/dist/components/temporal-codegen-loader.d.ts.map +1 -0
  99. package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts +35 -0
  100. package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts.map +1 -0
  101. package/dist/components/verbs/__tests__/mock-process-runner.d.ts +45 -0
  102. package/dist/components/verbs/__tests__/mock-process-runner.d.ts.map +1 -0
  103. package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts +33 -0
  104. package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts.map +1 -0
  105. package/dist/components/verbs/bom-writer.d.ts +155 -0
  106. package/dist/components/verbs/bom-writer.d.ts.map +1 -0
  107. package/dist/components/verbs/build-archive.d.ts +205 -0
  108. package/dist/components/verbs/build-archive.d.ts.map +1 -0
  109. package/dist/components/verbs/build.d.ts +150 -0
  110. package/dist/components/verbs/build.d.ts.map +1 -0
  111. package/dist/components/verbs/cloud-executor.d.ts +88 -0
  112. package/dist/components/verbs/cloud-executor.d.ts.map +1 -0
  113. package/dist/components/verbs/component-bom.d.ts +103 -0
  114. package/dist/components/verbs/component-bom.d.ts.map +1 -0
  115. package/dist/components/verbs/index.d.ts +49 -0
  116. package/dist/components/verbs/index.d.ts.map +1 -0
  117. package/dist/components/verbs/license-policy.d.ts +56 -0
  118. package/dist/components/verbs/license-policy.d.ts.map +1 -0
  119. package/dist/components/verbs/lockfile-sbom-generator.d.ts +81 -0
  120. package/dist/components/verbs/lockfile-sbom-generator.d.ts.map +1 -0
  121. package/dist/components/verbs/process-runner.d.ts +64 -0
  122. package/dist/components/verbs/process-runner.d.ts.map +1 -0
  123. package/dist/components/verbs/reproducibility.d.ts +80 -0
  124. package/dist/components/verbs/reproducibility.d.ts.map +1 -0
  125. package/dist/components/verbs/sbom-generator.d.ts +157 -0
  126. package/dist/components/verbs/sbom-generator.d.ts.map +1 -0
  127. package/dist/components/verbs/sbom.d.ts +79 -0
  128. package/dist/components/verbs/sbom.d.ts.map +1 -0
  129. package/dist/components/verbs/shell.d.ts +35 -0
  130. package/dist/components/verbs/shell.d.ts.map +1 -0
  131. package/dist/components/verbs/sign.d.ts +222 -0
  132. package/dist/components/verbs/sign.d.ts.map +1 -0
  133. package/dist/components/verbs/stub.d.ts +18 -0
  134. package/dist/components/verbs/stub.d.ts.map +1 -0
  135. package/dist/components/verbs/tool-sbom-generator.d.ts +51 -0
  136. package/dist/components/verbs/tool-sbom-generator.d.ts.map +1 -0
  137. package/dist/components/verbs/verify.d.ts +106 -0
  138. package/dist/components/verbs/verify.d.ts.map +1 -0
  139. package/dist/components/verbs/vex.d.ts +65 -0
  140. package/dist/components/verbs/vex.d.ts.map +1 -0
  141. package/dist/components/verbs/vuln-gate.d.ts +91 -0
  142. package/dist/components/verbs/vuln-gate.d.ts.map +1 -0
  143. package/dist/components/verbs/vuln-scan.d.ts +116 -0
  144. package/dist/components/verbs/vuln-scan.d.ts.map +1 -0
  145. package/dist/components/verbs/wait-verify.d.ts +85 -0
  146. package/dist/components/verbs/wait-verify.d.ts.map +1 -0
  147. package/dist/config.d.ts +205 -0
  148. package/dist/config.d.ts.map +1 -1
  149. package/dist/index.d.ts +4 -0
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/lexicon.d.ts +78 -0
  152. package/dist/lexicon.d.ts.map +1 -1
  153. package/dist/lifecycle/build-ledger-store.d.ts +121 -0
  154. package/dist/lifecycle/build-ledger-store.d.ts.map +1 -0
  155. package/dist/lifecycle/build-ledger.d.ts +225 -0
  156. package/dist/lifecycle/build-ledger.d.ts.map +1 -0
  157. package/dist/lifecycle/git.d.ts +84 -0
  158. package/dist/lifecycle/git.d.ts.map +1 -1
  159. package/dist/lifecycle/index.d.ts +5 -0
  160. package/dist/lifecycle/index.d.ts.map +1 -1
  161. package/dist/lifecycle/oras-referrer-lookup.d.ts +41 -0
  162. package/dist/lifecycle/oras-referrer-lookup.d.ts.map +1 -0
  163. package/dist/lifecycle/release-ledger.d.ts +122 -0
  164. package/dist/lifecycle/release-ledger.d.ts.map +1 -0
  165. package/dist/lifecycle/status.d.ts +150 -0
  166. package/dist/lifecycle/status.d.ts.map +1 -0
  167. package/dist/lint/component-checks.d.ts +95 -0
  168. package/dist/lint/component-checks.d.ts.map +1 -0
  169. package/dist/lint/engine.d.ts +23 -0
  170. package/dist/lint/engine.d.ts.map +1 -1
  171. package/dist/lint/presets/strict.json +8 -1
  172. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts +4 -0
  173. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts.map +1 -0
  174. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts +4 -0
  175. package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts.map +1 -0
  176. package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts +4 -0
  177. package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts.map +1 -0
  178. package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts +4 -0
  179. package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts.map +1 -0
  180. package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts +4 -0
  181. package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts.map +1 -0
  182. package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts +10 -0
  183. package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts.map +1 -0
  184. package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts +3 -0
  185. package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts.map +1 -0
  186. package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts +4 -0
  187. package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts.map +1 -0
  188. package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts +4 -0
  189. package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts.map +1 -0
  190. package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts +4 -0
  191. package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts.map +1 -0
  192. package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts +4 -0
  193. package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts.map +1 -0
  194. package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts +4 -0
  195. package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts.map +1 -0
  196. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +4 -0
  197. package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -0
  198. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +4 -0
  199. package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -0
  200. package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts +4 -0
  201. package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts.map +1 -0
  202. package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts +4 -0
  203. package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts.map +1 -0
  204. package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts +4 -0
  205. package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts.map +1 -0
  206. package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts +4 -0
  207. package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts.map +1 -0
  208. package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts +4 -0
  209. package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts.map +1 -0
  210. package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts +4 -0
  211. package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts.map +1 -0
  212. package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts +3 -0
  213. package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts.map +1 -0
  214. package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts +4 -0
  215. package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts.map +1 -0
  216. package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts +20 -0
  217. package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts.map +1 -0
  218. package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts +28 -0
  219. package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts.map +1 -0
  220. package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts +39 -0
  221. package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts.map +1 -0
  222. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +37 -0
  223. package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +1 -0
  224. package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts +43 -0
  225. package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts.map +1 -0
  226. package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts +22 -0
  227. package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts.map +1 -0
  228. package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts +33 -0
  229. package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts.map +1 -0
  230. package/dist/lint/rules/comp/index.d.ts +18 -0
  231. package/dist/lint/rules/comp/index.d.ts.map +1 -0
  232. package/dist/lint/rules/comp/support.d.ts +71 -0
  233. package/dist/lint/rules/comp/support.d.ts.map +1 -0
  234. package/dist/lsp/lexicon-providers.d.ts.map +1 -1
  235. package/dist/op/activity-registry.d.ts +11 -6
  236. package/dist/op/activity-registry.d.ts.map +1 -1
  237. package/dist/op/activity-runtime.d.ts +24 -0
  238. package/dist/op/activity-runtime.d.ts.map +1 -0
  239. package/dist/op/builders.d.ts +56 -0
  240. package/dist/op/builders.d.ts.map +1 -1
  241. package/dist/op/index.d.ts +2 -1
  242. package/dist/op/index.d.ts.map +1 -1
  243. package/dist/ownership.d.ts +20 -14
  244. package/dist/ownership.d.ts.map +1 -1
  245. package/package.json +14 -1
  246. package/src/audit/catalog.test.ts +74 -22
  247. package/src/audit/catalog.ts +74 -471
  248. package/src/audit/proof.ts +4 -2
  249. package/src/audit/report-html.test.ts +14 -7
  250. package/src/audit/report-model.ts +20 -9
  251. package/src/audit/report.test.ts +36 -13
  252. package/src/audit/report.ts +2 -0
  253. package/src/audit/rules-doc.test.ts +8 -6
  254. package/src/audit/rules-doc.ts +13 -5
  255. package/src/cli/commands/audit.ts +23 -18
  256. package/src/cli/commands/component-lint.test.ts +158 -0
  257. package/src/cli/commands/doctor.test.ts +116 -2
  258. package/src/cli/commands/doctor.ts +46 -0
  259. package/src/cli/commands/lexicon-rolling-upgrade.ts +198 -0
  260. package/src/cli/commands/lexicon-surface-diff.test.ts +104 -0
  261. package/src/cli/commands/lexicon-surface-diff.ts +185 -0
  262. package/src/cli/commands/lint.ts +142 -1
  263. package/src/cli/commands/pinned-upgrade.ts +204 -0
  264. package/src/cli/handlers/build.ts +58 -1
  265. package/src/cli/handlers/components.test.ts +504 -0
  266. package/src/cli/handlers/components.ts +404 -0
  267. package/src/cli/handlers/dev.ts +60 -1
  268. package/src/cli/handlers/graph.ts +47 -2
  269. package/src/cli/handlers/misc.ts +45 -1
  270. package/src/cli/handlers/run.test.ts +967 -3
  271. package/src/cli/handlers/run.ts +618 -11
  272. package/src/cli/main.test.ts +66 -0
  273. package/src/cli/main.ts +105 -2
  274. package/src/cli/registry.ts +35 -0
  275. package/src/codegen/fetch.test.ts +84 -3
  276. package/src/codegen/fetch.ts +76 -2
  277. package/src/codegen/lexicon-regen.test.ts +298 -0
  278. package/src/codegen/lexicon-regen.ts +545 -0
  279. package/src/codegen/pinned-upgrade.test.ts +399 -0
  280. package/src/codegen/pinned-upgrade.ts +423 -0
  281. package/src/codegen/rolling-upgrade.test.ts +333 -0
  282. package/src/codegen/rolling-upgrade.ts +320 -0
  283. package/src/codegen/surface-snapshot.test.ts +461 -0
  284. package/src/codegen/surface-snapshot.ts +546 -0
  285. package/src/codegen/version-bump.test.ts +47 -0
  286. package/src/codegen/version-bump.ts +39 -0
  287. package/src/components/README.md +130 -0
  288. package/src/components/SPRAWL-VALIDATION.md +181 -0
  289. package/src/components/__fixtures__/alb-ecs-service.json +51 -0
  290. package/src/components/__fixtures__/dynamodb-infra.json +32 -0
  291. package/src/components/__fixtures__/emr-job-consumer.json +26 -0
  292. package/src/components/__fixtures__/jar-lib-producer.json +16 -0
  293. package/src/components/__fixtures__/lambda-image-processor.json +28 -0
  294. package/src/components/__fixtures__/neo4j-fanout.json +34 -0
  295. package/src/components/__fixtures__/single-host-compose.json +29 -0
  296. package/src/components/auto-release.test.ts +217 -0
  297. package/src/components/auto-release.ts +216 -0
  298. package/src/components/builders.test.ts +45 -0
  299. package/src/components/builders.ts +71 -0
  300. package/src/components/capability-plugin-loader.ts +218 -0
  301. package/src/components/capability-plugin-schema.ts +56 -0
  302. package/src/components/capability-plugin.test.ts +235 -0
  303. package/src/components/capability-plugin.ts +108 -0
  304. package/src/components/capability.ts +117 -0
  305. package/src/components/cli-support.test.ts +579 -0
  306. package/src/components/cli-support.ts +481 -0
  307. package/src/components/component-schema.test.ts +265 -0
  308. package/src/components/component.schema.json +235 -0
  309. package/src/components/component.test.ts +251 -0
  310. package/src/components/component.ts +255 -0
  311. package/src/components/config-defaults.test.ts +263 -0
  312. package/src/components/config-defaults.ts +145 -0
  313. package/src/components/discover.test.ts +352 -0
  314. package/src/components/discover.ts +167 -0
  315. package/src/components/driver-output.ts +71 -0
  316. package/src/components/driver.test.ts +638 -0
  317. package/src/components/driver.ts +690 -0
  318. package/src/components/index.ts +113 -0
  319. package/src/components/manifest-persistence.test.ts +152 -0
  320. package/src/components/manifest-persistence.ts +164 -0
  321. package/src/components/pilots/README.md +33 -0
  322. package/src/components/pilots/alb-ecs.pilot.ts +63 -0
  323. package/src/components/pilots/dynamodb.pilot.ts +59 -0
  324. package/src/components/pilots/jar-emr.pilot.ts +69 -0
  325. package/src/components/pilots/lambda.pilot.ts +55 -0
  326. package/src/components/pilots/neo4j-fanout.pilot.ts +92 -0
  327. package/src/components/pilots/pilots-lint-clean.test.ts +78 -0
  328. package/src/components/pilots/pilots.test.ts +126 -0
  329. package/src/components/pilots/project.ts +13 -0
  330. package/src/components/presets/comp007-reduction.test.ts +122 -0
  331. package/src/components/presets/ecs-fargate.test.ts +84 -0
  332. package/src/components/presets/ecs-fargate.ts +103 -0
  333. package/src/components/presets/index.ts +32 -0
  334. package/src/components/presets/lambda.test.ts +35 -0
  335. package/src/components/presets/lambda.ts +53 -0
  336. package/src/components/presets/single-host-compose.test.ts +65 -0
  337. package/src/components/presets/single-host-compose.ts +64 -0
  338. package/src/components/registry.test.ts +112 -0
  339. package/src/components/registry.ts +37 -0
  340. package/src/components/starter-plugin.ts +105 -0
  341. package/src/components/temporal-codegen-loader.ts +41 -0
  342. package/src/components/verbs/__fixtures__/package-lock.json +45 -0
  343. package/src/components/verbs/__fixtures__/pom.xml +37 -0
  344. package/src/components/verbs/__fixtures__/schemas/cyclonedx-1.5.schema.json +3800 -0
  345. package/src/components/verbs/__fixtures__/schemas/cyclonedx-spdx-license.schema.json +621 -0
  346. package/src/components/verbs/__fixtures__/schemas/jsf-0.82.schema.json +240 -0
  347. package/src/components/verbs/__fixtures__/schemas/spdx-2.3.schema.json +740 -0
  348. package/src/components/verbs/__tests__/mock-cloud-executor.ts +102 -0
  349. package/src/components/verbs/__tests__/mock-process-runner.ts +79 -0
  350. package/src/components/verbs/__tests__/mock-sbom-generator.ts +85 -0
  351. package/src/components/verbs/bom-writer.test.ts +331 -0
  352. package/src/components/verbs/bom-writer.ts +386 -0
  353. package/src/components/verbs/build-archive.test.ts +251 -0
  354. package/src/components/verbs/build-archive.ts +296 -0
  355. package/src/components/verbs/build.test.ts +222 -0
  356. package/src/components/verbs/build.ts +252 -0
  357. package/src/components/verbs/cloud-executor.ts +181 -0
  358. package/src/components/verbs/component-bom.test.ts +219 -0
  359. package/src/components/verbs/component-bom.ts +189 -0
  360. package/src/components/verbs/index.ts +49 -0
  361. package/src/components/verbs/license-policy.ts +115 -0
  362. package/src/components/verbs/lockfile-sbom-generator.test.ts +195 -0
  363. package/src/components/verbs/lockfile-sbom-generator.ts +236 -0
  364. package/src/components/verbs/process-runner.test.ts +79 -0
  365. package/src/components/verbs/process-runner.ts +113 -0
  366. package/src/components/verbs/reproducibility.test.ts +24 -0
  367. package/src/components/verbs/reproducibility.ts +100 -0
  368. package/src/components/verbs/sbom-generator.test.ts +96 -0
  369. package/src/components/verbs/sbom-generator.ts +209 -0
  370. package/src/components/verbs/sbom.test.ts +184 -0
  371. package/src/components/verbs/sbom.ts +152 -0
  372. package/src/components/verbs/shell.test.ts +36 -0
  373. package/src/components/verbs/shell.ts +51 -0
  374. package/src/components/verbs/sign.test.ts +210 -0
  375. package/src/components/verbs/sign.ts +350 -0
  376. package/src/components/verbs/stub.ts +34 -0
  377. package/src/components/verbs/tool-sbom-generator.test.ts +194 -0
  378. package/src/components/verbs/tool-sbom-generator.ts +192 -0
  379. package/src/components/verbs/verify.test.ts +159 -0
  380. package/src/components/verbs/verify.ts +179 -0
  381. package/src/components/verbs/vex.ts +182 -0
  382. package/src/components/verbs/vuln-gate.test.ts +201 -0
  383. package/src/components/verbs/vuln-gate.ts +170 -0
  384. package/src/components/verbs/vuln-scan.test.ts +145 -0
  385. package/src/components/verbs/vuln-scan.ts +266 -0
  386. package/src/components/verbs/wait-verify.test.ts +111 -0
  387. package/src/components/verbs/wait-verify.ts +171 -0
  388. package/src/config.test.ts +74 -1
  389. package/src/config.ts +219 -0
  390. package/src/index.ts +32 -0
  391. package/src/lexicon.ts +88 -0
  392. package/src/lifecycle/build-ledger-store.test.ts +217 -0
  393. package/src/lifecycle/build-ledger-store.ts +165 -0
  394. package/src/lifecycle/build-ledger.test.ts +349 -0
  395. package/src/lifecycle/build-ledger.ts +305 -0
  396. package/src/lifecycle/git.test.ts +118 -0
  397. package/src/lifecycle/git.ts +149 -14
  398. package/src/lifecycle/index.ts +5 -0
  399. package/src/lifecycle/oras-referrer-lookup.test.ts +116 -0
  400. package/src/lifecycle/oras-referrer-lookup.ts +110 -0
  401. package/src/lifecycle/release-ledger.test.ts +209 -0
  402. package/src/lifecycle/release-ledger.ts +185 -0
  403. package/src/lifecycle/status.test.ts +330 -0
  404. package/src/lifecycle/status.ts +278 -0
  405. package/src/lint/component-checks.ts +148 -0
  406. package/src/lint/config.test.ts +21 -0
  407. package/src/lint/engine.ts +11 -2
  408. package/src/lint/presets/relaxed.json +8 -1
  409. package/src/lint/presets/strict.json +8 -1
  410. package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts +9 -0
  411. package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts +9 -0
  412. package/src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts +11 -0
  413. package/src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts +13 -0
  414. package/src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts +11 -0
  415. package/src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts +27 -0
  416. package/src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts +10 -0
  417. package/src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts +23 -0
  418. package/src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts +10 -0
  419. package/src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts +19 -0
  420. package/src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts +10 -0
  421. package/src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts +20 -0
  422. package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +23 -0
  423. package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +10 -0
  424. package/src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts +14 -0
  425. package/src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts +18 -0
  426. package/src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts +10 -0
  427. package/src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts +14 -0
  428. package/src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts +13 -0
  429. package/src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts +13 -0
  430. package/src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts +12 -0
  431. package/src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts +18 -0
  432. package/src/lint/rules/comp/comp.test.ts +378 -0
  433. package/src/lint/rules/comp/comp001-publishes-never-applies.ts +78 -0
  434. package/src/lint/rules/comp/comp002-dangling-wiring-ref.ts +94 -0
  435. package/src/lint/rules/comp/comp003-mutating-no-rollback.ts +115 -0
  436. package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +66 -0
  437. package/src/lint/rules/comp/comp005-capability-kind-is-noun.ts +113 -0
  438. package/src/lint/rules/comp/comp006-shell-needs-reason.ts +55 -0
  439. package/src/lint/rules/comp/comp007-composition-sprawl.ts +71 -0
  440. package/src/lint/rules/comp/index.ts +37 -0
  441. package/src/lint/rules/comp/support.ts +173 -0
  442. package/src/lsp/lexicon-providers.test.ts +55 -0
  443. package/src/lsp/lexicon-providers.ts +13 -3
  444. package/src/op/activity-registry.test.ts +38 -0
  445. package/src/op/activity-registry.ts +31 -12
  446. package/src/op/activity-runtime.ts +73 -0
  447. package/src/op/builders.ts +92 -0
  448. package/src/op/index.ts +3 -1
  449. package/src/ownership.test.ts +24 -26
  450. package/src/ownership.ts +26 -38
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Thin interpret driver — Phase 1 (#556), saga rollback hardened in Phase 4
3
+ * (#565, epic #551).
4
+ *
5
+ * One generic orchestrator that runs an arbitrary set of components on the
6
+ * local in-process executor: it orders components by `dependsOn` (reusing the
7
+ * same Kahn-layering approach `computeStackGraph` uses for `chant graph
8
+ * --stacks`, see ../build.ts), then for each component in order runs its
9
+ * `deploy` composition by dispatching every step to the `CapabilityRegistry`
10
+ * by `kind`. It resolves the three wiring reference forms from
11
+ * component.schema.json (`@Phase.field` prior-step references,
12
+ * `@<component>.publish.<field>` cross-component artifact references, and
13
+ * passes through `$env.*`/`stackOutput` values as opaque env config), runs
14
+ * `parallel` phases concurrently, rejects a `gate` locally (matching
15
+ * ../op/local-executor.ts's `LocalGateUnsupportedError`), and on terminal
16
+ * failure unwinds every executed step in reverse via that step's capability
17
+ * `rollback`, then runs `onFailure` phases in reverse order (best-effort),
18
+ * mirroring the Op local executor's saga semantics.
19
+ *
20
+ * A step whose capability declares no `rollback` is never silently passed
21
+ * over during unwind: it gets a `"rollback-opted-out"` record (see
22
+ * `rollbackExecuted`), carrying the step's `noRollback` reason when the
23
+ * composition declared one. This mirrors, at run time, the opt-out the
24
+ * COMP003 lint rule (../lint/rules/comp/comp003-mutating-no-rollback.ts)
25
+ * already requires at author time — the driver reports the same fact the
26
+ * lint rule already made a component author state.
27
+ *
28
+ * This unwind runs entirely in-process: if the process crashes mid-rollback
29
+ * on the local executor, nothing resumes it — there is no persisted run state
30
+ * to resume from. That is the documented Temporal boundary (see
31
+ * docs/components/orchestration.mdx#rollback-comes-free and
32
+ * docs/guide/local-vs-temporal.mdx): the *mechanism* (reverse-order unwind
33
+ * calling each capability's `rollback`) is capability-agnostic and works
34
+ * identically on both executors, but *durable resume of a rollback already in
35
+ * progress* is Temporal-only, the same boundary that already applies to
36
+ * forward `onFailure` compensation on an Op.
37
+ *
38
+ * Contains zero per-component logic: nothing in this module branches on a
39
+ * component or capability `kind`/name. All behavior is either generic
40
+ * (ordering, phase/step dispatch, wiring resolution) or delegated to the
41
+ * `CapabilityRegistry` the caller supplies.
42
+ */
43
+ import type { CapabilityRegistry, DeployContext } from "./capability.js";
44
+ /** A wiring reference or literal value, as it appears in a step's fields (schema `WiringValue`). */
45
+ export type WiringValue = string | {
46
+ stackOutput: {
47
+ stack: string;
48
+ name: string;
49
+ };
50
+ } | Record<string, unknown>;
51
+ /** A single capability invocation — the leaf unit of a composition (schema `Step`). */
52
+ export interface DriverStep {
53
+ kind: string;
54
+ [param: string]: unknown;
55
+ }
56
+ /** A gate step — pauses for an external signal; unsupported on the local executor (schema `Gate`). */
57
+ export interface DriverGate {
58
+ kind: "gate";
59
+ signalName: string;
60
+ timeout?: string;
61
+ description?: string;
62
+ }
63
+ /** One named phase of a deploy composition (schema `Phase`). A step may itself be a nested `Phase` (fan-out). */
64
+ export interface DriverPhase {
65
+ phase: string;
66
+ steps: Array<DriverStep | DriverGate | DriverPhase>;
67
+ parallel?: boolean;
68
+ onFailure?: DriverPhase[];
69
+ }
70
+ /** The subset of the Component contract the driver needs to run a deploy (schema-shaped; see component.schema.json). */
71
+ export interface DriverComponent {
72
+ name: string;
73
+ dependsOn?: string[];
74
+ deploy: DriverPhase[];
75
+ /** Component-level saga compensation, run in reverse order on terminal failure (schema `rollback`). */
76
+ rollback?: DriverPhase[];
77
+ }
78
+ /** Thrown when a component's composition contains a `gate` — gates need a durable runtime, matching chant's Op local executor. */
79
+ export declare class DriverGateUnsupportedError extends Error {
80
+ readonly component: string;
81
+ readonly signalName: string;
82
+ constructor(component: string, signalName: string);
83
+ }
84
+ /** Thrown when a dependency cycle is found among `dependsOn` edges. */
85
+ export declare class DependencyCycleError extends Error {
86
+ readonly cycle: string[];
87
+ constructor(cycle: string[]);
88
+ }
89
+ /** Thrown when a component's `dependsOn` names a component not present in the run set. */
90
+ export declare class UnknownDependencyError extends Error {
91
+ readonly component: string;
92
+ readonly dependency: string;
93
+ constructor(component: string, dependency: string);
94
+ }
95
+ /** Thrown on terminal run failure; carries the partial run result for rendering/inspection. */
96
+ export declare class DriverRunFailure extends Error {
97
+ readonly result: DriverRunResult;
98
+ constructor(result: DriverRunResult);
99
+ }
100
+ export interface DriverStepRecord {
101
+ component: string;
102
+ phase: string;
103
+ kind: string;
104
+ status: "ok" | "fail" | "skipped" | "rolled-back" | "rollback-opted-out";
105
+ durationMs: number;
106
+ output?: unknown;
107
+ error?: string;
108
+ }
109
+ export interface DriverComponentResult {
110
+ component: string;
111
+ ok: boolean;
112
+ records: DriverStepRecord[];
113
+ }
114
+ export interface DriverRunResult {
115
+ /** Component order actually attempted, in run order. */
116
+ order: string[];
117
+ /** Parallel-safe waves the order was derived from (see resolveComponentGraph). */
118
+ waves: string[][];
119
+ results: DriverComponentResult[];
120
+ ok: boolean;
121
+ /** Name of the component that terminated the run, if any. */
122
+ failedComponent?: string;
123
+ /**
124
+ * The accumulated cross-component/cross-stack outputs after the run — each
125
+ * component's `publish` output and, for an applied stack, its `cfn-deploy`
126
+ * outputs, keyed by component name. Seeded from `options.componentOutputs`
127
+ * and grown as components complete. The CLI's `--dump-outputs` serializes
128
+ * this so a later, separate run (a downstream CI job) can `--seed-outputs`
129
+ * it and resolve `stackOutput()`/`@<name>.publish.*` references to a
130
+ * component that ran in an earlier job.
131
+ */
132
+ componentOutputs: Record<string, Record<string, unknown>>;
133
+ }
134
+ export interface ComponentGraph {
135
+ /** Flat topological order — every dependency before its dependents. */
136
+ order: string[];
137
+ /** Waves: components in the same wave share no dependency and may run concurrently. */
138
+ waves: string[][];
139
+ }
140
+ /**
141
+ * Resolve run order and parallel-safe waves from each component's `dependsOn`.
142
+ * Reuses the generic `topoSort` (../codegen/topo-sort.ts) for the flat order,
143
+ * and the same Kahn-layering approach `computeStackGraph` uses for `chant
144
+ * graph --stacks` (../build.ts) to additionally group independent components
145
+ * into waves. This is a plain string-graph algorithm — no lexicon/AttrRef
146
+ * machinery — since a component's `dependsOn` is already a flat name list.
147
+ */
148
+ export declare function resolveComponentGraph(components: DriverComponent[]): ComponentGraph;
149
+ /**
150
+ * Resolve one wiring value against already-produced outputs. Three reference
151
+ * forms, all resolved here rather than by any component-specific code:
152
+ * - `@Phase.field` — a prior step's output within the same component, keyed
153
+ * by phase name (`phaseOutputs`).
154
+ * - `@<component>.publish.uri|digest|key` — another component's published
155
+ * artifact output (`componentOutputs`), per composition-and-wiring.mdx.
156
+ * - `{ stackOutput: { stack, name } }` — a cross-stack output; Phase 1 has no
157
+ * cross-stack apply-order integration (out of scope per #556), so this
158
+ * resolves via the same `componentOutputs` map keyed by `stack`/`name`,
159
+ * letting tests and callers seed cross-stack values the same way as
160
+ * artifact outputs. `$env.*` and plain literals pass through unchanged —
161
+ * env resolution is the caller's `DeployContext.vars`, not the driver's.
162
+ */
163
+ export declare function resolveWiring(value: WiringValue, phaseOutputs: Record<string, Record<string, unknown>>, componentOutputs: Record<string, Record<string, unknown>>): unknown;
164
+ /**
165
+ * Deep-walk an object, resolving every string/stackOutput wiring value found.
166
+ * Arrays and nested objects are walked too.
167
+ *
168
+ * Exported (not just used internally) so the durable Temporal path
169
+ * (`@intentius/chant-lexicon-temporal`'s component workflow codegen, see
170
+ * epic #551 #589) can resolve a step's wiring the same way inside a Temporal
171
+ * *activity* — the workflow itself only accumulates `phaseOutputs`/
172
+ * `componentOutputs` and passes them through; resolution logic stays in one
173
+ * place so local and durable execution can never silently diverge.
174
+ */
175
+ export declare function resolveStepInput(input: Record<string, unknown>, phaseOutputs: Record<string, Record<string, unknown>>, componentOutputs: Record<string, Record<string, unknown>>): Record<string, unknown>;
176
+ /**
177
+ * Run one component's `deploy` composition. On terminal failure: unwind every
178
+ * executed step in reverse via its capability's `rollback` (saga
179
+ * compensation), then run the component's declared `rollback` phases in
180
+ * reverse order (best-effort), matching ../op/local-executor.ts's `onFailure`
181
+ * handling. Cross-component artifact outputs this component published (if
182
+ * any) are recorded into `componentOutputs` under its own name so downstream
183
+ * components can reference `@<name>.publish.*`.
184
+ */
185
+ export declare function runComponentDeploy(component: DriverComponent, ctx: DeployContext, registry: CapabilityRegistry, componentOutputs: Record<string, Record<string, unknown>>): Promise<DriverComponentResult>;
186
+ export interface InterpretRunOptions {
187
+ /** Target environment name, threaded into every capability's `DeployContext`. */
188
+ env: string;
189
+ /** Environment config resolved ahead of the run (registry URLs, cluster names, ...) — passed through as `DeployContext.vars`. */
190
+ vars?: Record<string, unknown>;
191
+ /** Pre-seeded cross-component/cross-stack outputs (e.g. from a prior run, or a caller resolving `stackOutput` externally). Merged with outputs this run produces. */
192
+ componentOutputs?: Record<string, Record<string, unknown>>;
193
+ }
194
+ /**
195
+ * Run a set of components to completion on the local in-process executor:
196
+ * resolve dependency order and parallel-safe waves from `dependsOn`, then run
197
+ * each wave's components (independent components within a wave run
198
+ * concurrently; components across waves run in wave order), dispatching
199
+ * every step to `registry` by `kind`. Stops the whole run at the first failed
200
+ * component (after that component's own saga rollback completes), returning
201
+ * a result with `ok: false`; throws `DriverRunFailure` carrying that result
202
+ * so callers can choose to inspect or propagate it.
203
+ *
204
+ * Zero per-component logic: this function and everything it calls dispatches
205
+ * purely on the generic `Component`/`Phase`/`Step` shapes and the registry —
206
+ * no branch anywhere names a specific component or capability.
207
+ */
208
+ export declare function runInterpretDriver(components: DriverComponent[], registry: CapabilityRegistry, options: InterpretRunOptions): Promise<DriverRunResult>;
209
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/components/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Component-native release orchestration — capability contract, starter verb
3
+ * set, and the thin interpret driver (epic #551, #554/#556). The pilot AWS
4
+ * leaves have real implementations over an injectable `CloudExecutor` (#557);
5
+ * every other verb remains a typed stub. See https://intentius.io/chant/components/orchestration/
6
+ */
7
+ export { type Archetype, type Wiring, type StackOutputReference, type BuildSpec, type Step, type Gate, type Phase, type Component, phase, gate, stackOutput, inferArchetype, projectToJson, isComponent, } from "./component.js";
8
+ export { type DiscoveredComponent, type ComponentDiscoveryResult, discoverComponents, } from "./discover.js";
9
+ export { type ListedComponent, type ListComponentsResult, type DescribedComponent, type DescribeComponentResult, type ComponentGraphResult, type GenerateLexicon, type GenerateComponentsResult, type RunComponentsOptions, type RunComponentsResult, type ResolvedComponentTargets, listComponents, describeComponent, computeComponentGraph, generateComponentsPipeline, runComponents, findComponentGate, resolveComponentTargets, } from "./cli-support.js";
10
+ export { renderDriverHuman, renderDriverJson } from "./driver-output.js";
11
+ export { type Capability, type CapabilityInput, type CapabilityOutput, type DeployContext, CapabilityRegistry, CapabilityNotImplementedError, } from "./capability.js";
12
+ export { createCapabilityRegistry, STARTER_VERB_FAMILIES } from "./registry.js";
13
+ export { type CapabilityPlugin, type CapabilityManifest, isCapabilityPlugin, } from "./capability-plugin.js";
14
+ export { CapabilityManifestSchema, type CapabilityManifestParsed, validateCapabilityManifest, } from "./capability-plugin-schema.js";
15
+ export { loadCapabilityPlugin, loadCapabilityPlugins, registerCapabilityPlugins, buildCapabilityRegistry, type BuildCapabilityRegistryOptions, MalformedCapabilityPluginError, DuplicateCapabilityKindError, } from "./capability-plugin-loader.js";
16
+ export { starterCapabilityPlugin } from "./starter-plugin.js";
17
+ export * from "./verbs/index.js";
18
+ export * from "./builders.js";
19
+ export { type DriverStep, type DriverGate, type DriverPhase, type DriverComponent, type DriverStepRecord, type DriverComponentResult, type DriverRunResult, type ComponentGraph, type InterpretRunOptions, type WiringValue, resolveComponentGraph, resolveWiring, resolveStepInput, runComponentDeploy, runInterpretDriver, DriverGateUnsupportedError, DependencyCycleError, UnknownDependencyError, DriverRunFailure, } from "./driver.js";
20
+ export { EcsFargateComponent, type EcsFargateComponentConfig, LambdaComponent, type LambdaComponentConfig, SingleHostComposeComponent, type SingleHostComposeComponentConfig, } from "./presets/index.js";
21
+ export { type ComponentTemporalCodegen, type ComponentTemporalCodegenOptions, loadComponentTemporalCodegen, } from "./temporal-codegen-loader.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,EACL,IAAI,EACJ,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,yBAAyB,EAC9B,eAAe,EACf,KAAK,qBAAqB,EAC1B,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { BuildArchiveManifest } from "./verbs/build-archive.js";
2
+ import type { DriverStepRecord } from "./driver.js";
3
+ /**
4
+ * Find the most fully-accumulated `BuildArchiveManifest` a component run
5
+ * produced, by scanning its step records for the last manifest-bearing
6
+ * output — mirroring `extractRunDigest`'s "last wins" convention, which is
7
+ * also the correct one here: every build-family capability's `manifest`
8
+ * input/output accumulates onto whatever manifest came before it in the same
9
+ * phase (see ../components/verbs/build.ts's `DockerBuildInput.manifest`
10
+ * doc), so the *last* manifest-bearing step output in run order is always
11
+ * the fullest one — a template + SBOM + config-BOM composition's final step
12
+ * carries every earlier entry too, not just its own.
13
+ */
14
+ export declare function extractRunManifest(records: DriverStepRecord[]): BuildArchiveManifest | undefined;
15
+ /**
16
+ * Same manifest extraction as `extractRunManifest`, but over a component
17
+ * Temporal workflow's returned `phaseOutputs` (`{ [phase]: output }`) —
18
+ * mirroring ./auto-release.ts's `extractRunDigestFromPhaseOutputs`, the
19
+ * `--temporal` CLI path's counterpart, since that path never sees individual
20
+ * step records either.
21
+ */
22
+ export declare function extractRunManifestFromPhaseOutputs(phaseOutputs: Record<string, Record<string, unknown>> | undefined): BuildArchiveManifest | undefined;
23
+ /** Explicit reasons `maybePersistBuildManifest` declined to write — never a thrown error, mirroring ./auto-release.ts's `AutoReleaseSkipReason`. */
24
+ export type ManifestPersistSkipReason = "opted-out" | "run-not-successful" | "no-manifest";
25
+ export type ManifestPersistResult = {
26
+ persisted: true;
27
+ commit: string;
28
+ manifestDigest: string;
29
+ } | {
30
+ persisted: false;
31
+ reason: ManifestPersistSkipReason;
32
+ } | {
33
+ persisted: false;
34
+ reason: "error";
35
+ error: string;
36
+ };
37
+ /** Input describing one component's completed run — the manifest-persistence counterpart of ./auto-release.ts's `AutoReleaseRunInfo`. */
38
+ export interface ManifestPersistRunInfo {
39
+ /** Whether the run reported overall success. A caller must not call this for a non-terminal/in-progress run — mirrors `AutoReleaseRunInfo.success`. */
40
+ success: boolean;
41
+ /** The component's step records (local executor), used to locate the accumulated manifest via `extractRunManifest`. Mutually exclusive with `manifest`. */
42
+ records?: DriverStepRecord[];
43
+ /** A manifest already resolved by the caller (e.g. a future durable/Temporal path that has its own phaseOutputs-shaped extraction). Takes precedence over `records` when both are given. */
44
+ manifest?: BuildArchiveManifest;
45
+ }
46
+ /** Opt-out knobs for manifest persistence, mirroring ./auto-release.ts's `AutoReleaseOptions`. */
47
+ export interface ManifestPersistOptions {
48
+ /** `--no-release-record` / `chant.config.ts`'s `release.autoRecord: false` also gates manifest persistence — both are "durably record this successful deploy" side effects with the same opt-out story, so one flag/config knob controls both rather than introducing a second, easy-to-forget switch. Default: persistence is ON. */
49
+ disabled?: boolean;
50
+ /** Working directory for the git plumbing calls (tests). */
51
+ cwd?: string;
52
+ }
53
+ /**
54
+ * After a successful `chant run --components <name> --env <env>` (local
55
+ * executor), persist the run's accumulated `BuildArchiveManifest` (if any)
56
+ * to the durable build-manifest store (../lifecycle/build-ledger-store.ts)
57
+ * and push it — or explain, without throwing, why it didn't. Never called
58
+ * for a failed run, matching `maybeRecordAutoRelease`'s contract exactly.
59
+ *
60
+ * Skips (returns `{ persisted: false, reason }`, never throws):
61
+ * - `options.disabled` — the opt-out flag/config was set.
62
+ * - `run.success` false — defensive; callers should not reach here on
63
+ * failure. A dry-run/failed deploy persists nothing, by construction —
64
+ * this is also what makes a dry run safe: `chant run --components` never
65
+ * calls this function at all unless the run actually completed.
66
+ * - no manifest found in the run's records — a component with no
67
+ * build-family step (an infra-only/apply-only component, or a
68
+ * build-less `Publish`-only producer that reused a prior archive) has
69
+ * nothing to persist. This is the expected common case for most deploys,
70
+ * not an error.
71
+ *
72
+ * Write/push failures (any error `persistBuildManifest`/`pushLifecycle`
73
+ * throw) are reported as `{ persisted: false, reason: "error", error }`
74
+ * rather than propagated — same "never turn a successful deploy into a
75
+ * failing CLI invocation" contract `maybeRecordAutoRelease` already
76
+ * establishes for release records.
77
+ */
78
+ export declare function maybePersistBuildManifest(run: ManifestPersistRunInfo, options?: ManifestPersistOptions): Promise<ManifestPersistResult>;
79
+ //# sourceMappingURL=manifest-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-persistence.d.ts","sourceRoot":"","sources":["../../src/components/manifest-persistence.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAajD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAShG;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAChE,oBAAoB,GAAG,SAAS,CAQlC;AAED,oJAAoJ;AACpJ,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE3F,MAAM,MAAM,qBAAqB,GAC7B;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,GACvD;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,yIAAyI;AACzI,MAAM,WAAW,sBAAsB;IACrC,uJAAuJ;IACvJ,OAAO,EAAE,OAAO,CAAC;IACjB,2JAA2J;IAC3J,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,4LAA4L;IAC5L,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,kGAAkG;AAClG,MAAM,WAAW,sBAAsB;IACrC,sUAAsU;IACtU,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,sBAAsB,EAC3B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAoBhC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Pilot: ALB/ECS target (#555, epic #551).
3
+ *
4
+ * Exercises the build + cross-stack + auto-rollback axes: `docker-build` →
5
+ * `publish-image` (promote by digest, deploy-time) → `cfn-deploy` (importing
6
+ * the shared ALB's listener/cluster/subnets as cross-stack outputs, resolved
7
+ * by `chant graph --stacks` rather than a `describe-stacks | jq` pipeline
8
+ * step — see composition-and-wiring.mdx#cross-stack-outputs) →
9
+ * `ecs-update-service` → `wait-steady-state` + `health-gate`.
10
+ *
11
+ * This is the direct component-native replacement for the hand-rolled GitLab
12
+ * pipeline in `examples/gitlab-aws-alb-api/src/pipeline.ts`: the
13
+ * `describe-stacks`/`jq` glue in that pipeline's `deployService` job is
14
+ * exactly the cross-stack `stackOutput()` wiring below, and its
15
+ * `docker build`/`docker push` steps are the `docker-build` + `publish-image`
16
+ * capabilities. `service` archetype: build → publish → apply → verify, the
17
+ * fullest of the three archetypes.
18
+ *
19
+ * The JSON projection of this pilot is authoritative at
20
+ * ../__fixtures__/alb-ecs-service.json (already schema-validated by
21
+ * component-schema.test.ts) — this module is the real typed `Component`
22
+ * authoring form (#560, ../component.ts) that composes to that same
23
+ * document; see ./pilots.test.ts, which asserts the two never diverge.
24
+ */
25
+ import type { Component } from "../component.js";
26
+ export declare const searchService: Component;
27
+ //# sourceMappingURL=alb-ecs.pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alb-ecs.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/alb-ecs.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,eAAO,MAAM,aAAa,EAAE,SA2B3B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Pilot: DynamoDB table (#555, epic #551).
3
+ *
4
+ * Exercises the sticky-apply axis: `cfn-deploy` carries declarative safety
5
+ * options — `onReplace: "block"` refuses a changeset that would replace the
6
+ * table (losing data) rather than update it in place, and `stageGsi: true`
7
+ * stages a GSI change (add → backfill → remove) instead of an in-place
8
+ * replace. That stickiness lives inside the `cfn-deploy` capability, exposed
9
+ * as options, not scripted per component — see
10
+ * capabilities.mdx#stickiness-lives-in-the-capability. `infra` archetype: no
11
+ * build, apply → verify only. Verify fans out in parallel: the stack wait and
12
+ * a GSI backfill migration have no ordering dependency on each other.
13
+ *
14
+ * The JSON projection of this pilot is authoritative at
15
+ * ../__fixtures__/dynamodb-infra.json (already schema-validated by
16
+ * component-schema.test.ts) — this module is the real typed `Component`
17
+ * authoring form (#560, ../component.ts) that composes to that same
18
+ * document; see ./pilots.test.ts, which asserts the two never diverge.
19
+ */
20
+ import type { Component } from "../component.js";
21
+ export declare const ordersTable: Component;
22
+ //# sourceMappingURL=dynamodb.pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/dynamodb.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY9C,eAAO,MAAM,WAAW,EAAE,SA0BzB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Pilot pair: JAR producer -> EMR consumer, cross-component artifact outputs
3
+ * (#561, epic #551).
4
+ *
5
+ * This is the epic's worked example for cross-component wiring (#551
6
+ * §"Cross-component outputs", docs/components/composition-and-wiring.mdx
7
+ * §"Cross-component outputs"): a **producer-library** component
8
+ * (`jar-lib`) that only builds and publishes an artifact — no apply, no
9
+ * service — paired with an **infra** consumer (`emr-job`) that submits an
10
+ * EMR job run against the producer's published S3 URI.
11
+ *
12
+ * The wiring itself needs no new machinery: `dependsOn: ["jar-lib"]` orders
13
+ * the producer first (`resolveComponentGraph`, ../driver.ts), and
14
+ * `"@jar-lib.publish.uri"` is the same `@<component>.publish.uri|digest|key`
15
+ * reference form `resolveWiring` (../driver.ts) already resolves generically
16
+ * from `componentOutputs`, which `runComponentDeploy` already populates from
17
+ * any step whose output carries `uri`/`digest`/`key` (`findPublishOutput`) —
18
+ * both landed with #556/#560 and are exercised by ../driver.test.ts's
19
+ * "wires a cross-component artifact reference" case. What #561 actually adds
20
+ * is: this pair authored as real typed `Component`s (rather than only the
21
+ * hand-written JSON fixtures), and a real `emr-start-job-run`/`wait-job`
22
+ * capability implementation (../verbs/job-submission.ts,
23
+ * ../verbs/wait-verify.ts) so the pair runs to completion against a mocked
24
+ * `CloudExecutor` instead of throwing `CapabilityNotImplementedError`.
25
+ *
26
+ * The JSON projections of these two components are authoritative at
27
+ * ../__fixtures__/jar-lib-producer.json and
28
+ * ../__fixtures__/emr-job-consumer.json (pre-existing, from #560) — this
29
+ * module is the real typed `Component` authoring form that composes to those
30
+ * same documents; see ./pilots.test.ts, which asserts the two never diverge.
31
+ */
32
+ import type { Component } from "../component.js";
33
+ /** Producer: a JAR built from a Maven project, published to S3. Publish-only deploy — no apply phase at all, the defining shape of the `producer-library` archetype. */
34
+ export declare const jarLib: Component;
35
+ /** Consumer: an EMR job run reading the producer's published JAR by S3 URI. `dependsOn: ["jar-lib"]` orders the producer first; the graph resolves the reference into the Submit step. */
36
+ export declare const emrJob: Component;
37
+ //# sourceMappingURL=jar-emr.pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jar-emr.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/jar-emr.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,wKAAwK;AACxK,eAAO,MAAM,MAAM,EAAE,SAUpB,CAAC;AAEF,0LAA0L;AAC1L,eAAO,MAAM,MAAM,EAAE,SAmBpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pilot: image-processor Lambda (#558, epic #551).
3
+ *
4
+ * The fourth, deliberately different component #558 asks for, added to prove
5
+ * the sprawl metric holds beyond the original three pilots (#555): a
6
+ * container-image AWS Lambda function. `service` archetype, same as ALB/ECS,
7
+ * but a genuinely different shape on two axes at once:
8
+ *
9
+ * - **apply target**: no CloudFormation stack at all — `lambda-deploy`
10
+ * updates a function's code directly (`UpdateFunctionCode` +
11
+ * `PublishVersion` + `UpdateAlias`), never a `cfn-deploy` changeset. Every
12
+ * prior pilot's apply step was `cfn-deploy`; this is the first pilot whose
13
+ * Apply phase contains none.
14
+ * - **verify shape**: a single `wait-for-stack`-free health check
15
+ * (`health-gate` against the function's alias URL) rather than an ECS
16
+ * steady-state poll or a Neo4j quorum probe.
17
+ *
18
+ * Reuses `docker-build` + `publish-image` unchanged from the ALB/ECS pilot's
19
+ * axis (build + promote-by-digest is identical for a container-image Lambda:
20
+ * https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) — the
21
+ * `imageRef`/`codeRef` wiring (`@Publish.digest` / `@Publish.uri`) is the same
22
+ * `@Phase.field` prior-step reference form every pilot already uses. The only
23
+ * capability this component needed that didn't already exist is `lambda-deploy`
24
+ * (../verbs/apply.ts) — one new capability, exactly the sprawl metric's bound
25
+ * for "genuinely novel"; see ../SPRAWL-VALIDATION.md for the full accounting.
26
+ *
27
+ * The JSON projection of this pilot is authoritative at
28
+ * ../__fixtures__/lambda-image-processor.json — this module is the real
29
+ * typed `Component` authoring form (#560, ../component.ts) that composes to
30
+ * that same document; see ./pilots.test.ts, which asserts the two never
31
+ * diverge.
32
+ */
33
+ import type { Component } from "../component.js";
34
+ export declare const imageProcessor: Component;
35
+ //# sourceMappingURL=lambda.pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/lambda.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,eAAO,MAAM,cAAc,EAAE,SAkB5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Pilot: Neo4j per-instance fan-out cluster (#555, epic #551).
3
+ *
4
+ * Exercises the fan-out axis: one component composing N per-instance
5
+ * mini-compositions (`cfn-deploy` + `code-deploy` + a health wait), seeded
6
+ * first, then rolled through the remaining instances one at a time behind a
7
+ * `wait-cluster-healthy` gate. See composition-and-wiring.mdx#fan-out-is-composition-not-orchestrator-knowledge.
8
+ *
9
+ * The JSON projection of this pilot is authoritative at
10
+ * ../__fixtures__/neo4j-fanout.json (already schema-validated by
11
+ * component-schema.test.ts) — this module is the real typed `Component`
12
+ * authoring form (#560, ../component.ts) that composes to that same
13
+ * document; see ./pilots.test.ts, which asserts the two never diverge.
14
+ */
15
+ import type { Component } from "../component.js";
16
+ export declare const neo4jCluster: Component;
17
+ //# sourceMappingURL=neo4j-fanout.pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4j-fanout.pilot.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/neo4j-fanout.pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,cAAc,CAAC;AAkErD,eAAO,MAAM,YAAY,EAAE,SAU1B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Re-exports the real `projectToJson` (#560, ../component.ts) under the
3
+ * pilots' original import path. Prior to #560, this module held its own
4
+ * "intentionally dumb" projection over the stopgap `authoring-shape.ts`
5
+ * (#555); now that the real typed `Component` authoring form exists, its
6
+ * `projectToJson` (which also fills in `archetype` via `inferArchetype` when
7
+ * a pilot doesn't set one explicitly) is the single implementation. Kept as a
8
+ * re-export, rather than inlining `../component`'s import into every pilot
9
+ * test, so `./pilots.test.ts`/`./pilots-e2e.test.ts`/`../driver.test.ts`
10
+ * don't need their import paths touched by this migration.
11
+ */
12
+ export { projectToJson } from "../component.js";
13
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/components/pilots/project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Preset: `EcsFargateComponent` (#566, epic #551 §"6. Presets (Level 2 reuse)").
3
+ *
4
+ * The named-composition builder for the ALB/ECS shape
5
+ * (`../pilots/alb-ecs.pilot.ts`): `docker-build` -> `publish-image` ->
6
+ * `cfn-deploy` (importing a shared ALB's cross-stack outputs) ->
7
+ * `ecs-update-service` -> `wait-steady-state` + `health-gate`, with the same
8
+ * component-declared `rollback-previous` compensation phase the pilot uses
9
+ * (no native rollback for an already-running service swap — see
10
+ * ../pilots/alb-ecs.pilot.ts's docstring).
11
+ *
12
+ * This is Level 2 reuse over Level 1 raw capabilities: a component that looks
13
+ * like this composes `EcsFargateComponent({ ... })` directly; the odd case
14
+ * that needs something extra starts from the same shape and drops to raw
15
+ * `phase()`/capability `Step`s where it is special (see
16
+ * docs/components/capabilities.mdx#presets--reuse-without-a-closed-set) —
17
+ * `./ecs-fargate.test.ts` demonstrates exactly that by re-deriving
18
+ * `alb-ecs.pilot.ts`'s `searchService` component from this preset and
19
+ * asserting the two project to the identical JSON contract.
20
+ */
21
+ import type { Component, Wiring } from "../component.js";
22
+ export interface EcsFargateComponentConfig {
23
+ /** Component/service name (kebab-case) — becomes both the component's `name` and the ECS service name unless `service` overrides it. */
24
+ name: string;
25
+ /** ECS service name. Default: `name`. */
26
+ service?: string;
27
+ /** Docker build context. Default: ".". */
28
+ context?: string;
29
+ /** Path to the built CloudFormation template inside the archive. Default: `archive:<name>.template.json`. */
30
+ template?: string;
31
+ /** Health check path for the post-deploy `health-gate`. */
32
+ healthPath: string;
33
+ /** Other components that must complete first, beyond the shared-ALB stack (if any). */
34
+ dependsOn?: string[];
35
+ /**
36
+ * Shared ALB stack this service imports `ListenerArn`/`ClusterArn`/`Subnets`
37
+ * from, via cross-stack `stackOutput()` wiring — the same axis
38
+ * `alb-ecs.pilot.ts` exercises. Omit for a service with its own
39
+ * self-contained stack (no shared-ALB import; `cfn-deploy` receives no
40
+ * `inputs`).
41
+ */
42
+ sharedAlbStack?: string;
43
+ /** Additional/override CloudFormation template inputs, merged with (and taking precedence over) the shared-ALB outputs. */
44
+ extraInputs?: Record<string, Wiring>;
45
+ /** ECS cluster reference passed to `ecs-update-service`. Default: `"$env.cluster"`. */
46
+ cluster?: Wiring;
47
+ /** Destination registry `publish-image` promotes to. Default: `"$env.registry"`. */
48
+ registry?: Wiring;
49
+ }
50
+ /**
51
+ * Expand an ECS/Fargate service behind an ALB to its standard
52
+ * Publish/Apply/Verify composition — the 80% shape `alb-ecs.pilot.ts` is the
53
+ * hand-composed reference for. Returns a full `Component`; a caller that
54
+ * needs one extra step (an additional Apply capability, a different Verify
55
+ * shape) spreads the result and edits `deploy`/`rollback` directly — the
56
+ * preset is a starting composition, not a closed strategy object.
57
+ */
58
+ export declare function EcsFargateComponent(config: EcsFargateComponentConfig): Component;
59
+ //# sourceMappingURL=ecs-fargate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecs-fargate.d.ts","sourceRoot":"","sources":["../../../src/components/presets/ecs-fargate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,WAAW,yBAAyB;IACxC,wIAAwI;IACxI,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2HAA2H;IAC3H,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAyChF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Preset library (#566, epic #551 §"6. Presets (Level 2 reuse)") — named
3
+ * composition builders for the common component shapes. Each preset expands
4
+ * to a full, valid `Component` (../component.ts): the same typed authoring
5
+ * form and JSON contract every hand-composed component projects to, so a
6
+ * preset-based component and a hand-composed one are indistinguishable to
7
+ * `projectToJson`, schema validation, lint, and the driver.
8
+ *
9
+ * This is Level 2 reuse over Level 1 raw capabilities
10
+ * (docs/components/capabilities.mdx#presets--reuse-without-a-closed-set): a
11
+ * component that matches one of these shapes calls the preset directly; the
12
+ * odd one that needs something extra spreads the returned `Component` and
13
+ * edits `deploy`/`rollback` where it is special. Presets remove composition
14
+ * copy-paste (the COMP007 lint hint) without creating a closed strategy set —
15
+ * see ./ecs-fargate.test.ts, ./lambda.test.ts, and
16
+ * ./single-host-compose.test.ts, each of which re-derives an existing
17
+ * hand-composed pilot/fixture from its preset and asserts the two project to
18
+ * the identical JSON contract.
19
+ *
20
+ * Deliberately not exhaustive: three presets covering the three archetypes'
21
+ * most common shapes (a load-balanced container service, a container-image
22
+ * Lambda function, and a registry-less single-host compose deploy), per
23
+ * #566's explicit scope ("start with the common shapes; an exhaustive
24
+ * catalog is out of scope").
25
+ */
26
+ export { EcsFargateComponent, type EcsFargateComponentConfig } from "./ecs-fargate.js";
27
+ export { LambdaComponent, type LambdaComponentConfig } from "./lambda.js";
28
+ export { SingleHostComposeComponent, type SingleHostComposeComponentConfig, } from "./single-host-compose.js";
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/presets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EACL,0BAA0B,EAC1B,KAAK,gCAAgC,GACtC,MAAM,uBAAuB,CAAC"}