@empire-builder-kit/nx 1.0.0-rc.4 → 1.0.0-rc.41

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 (805) hide show
  1. package/README.md +44 -10
  2. package/executors.json +21 -1
  3. package/generators.json +10 -0
  4. package/package.json +31 -7
  5. package/src/aws/child-environment.d.ts +10 -0
  6. package/src/aws/child-environment.js +77 -0
  7. package/src/aws/identity.d.ts +13 -0
  8. package/src/aws/identity.js +41 -0
  9. package/src/aws-authority/index.d.ts +2 -0
  10. package/src/aws-authority/index.js +6 -0
  11. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  12. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  13. package/src/aws-authority/stage-authority.d.ts +248 -0
  14. package/src/aws-authority/stage-authority.js +3558 -0
  15. package/src/blueprints/external-sandbox.d.ts +1 -1
  16. package/src/blueprints/external-sandbox.js +21 -9
  17. package/src/blueprints/manifest.d.ts +1 -1
  18. package/src/blueprints/resolver.js +28 -15
  19. package/src/cli/bootstrap.d.ts +1 -1
  20. package/src/cli/deploy-runtime.d.ts +30 -0
  21. package/src/cli/deploy-runtime.js +174 -0
  22. package/src/cli/dev-command.d.ts +18 -4
  23. package/src/cli/dev-command.js +71 -0
  24. package/src/cli/main.d.ts +9 -1
  25. package/src/cli/main.js +157 -24
  26. package/src/cli/output.d.ts +1 -1
  27. package/src/cli/output.js +1 -1
  28. package/src/cli/personal-secret-runtime.d.ts +12 -0
  29. package/src/cli/personal-secret-runtime.js +18 -3
  30. package/src/cli/secret-terminal.js +1 -1
  31. package/src/container-images.d.ts +1 -1
  32. package/src/container-images.js +1 -1
  33. package/src/developer-agent/context.js +41 -9
  34. package/src/developer-agent/generator-planning.js +20 -6
  35. package/src/developer-agent/git-inspection.d.ts +6 -2
  36. package/src/developer-agent/git-inspection.js +78 -6
  37. package/src/developer-agent/model.d.ts +5 -3
  38. package/src/developer-agent/model.js +4 -4
  39. package/src/developer-agent/operation-registry.d.ts +15 -0
  40. package/src/developer-agent/operation-registry.js +342 -49
  41. package/src/developer-agent/planning.d.ts +8 -1
  42. package/src/developer-agent/planning.js +39 -16
  43. package/src/developer-agent/preview-changes.d.ts +2 -0
  44. package/src/developer-agent/preview-changes.js +14 -2
  45. package/src/developer-agent/preview-source.js +3 -0
  46. package/src/developer-agent/validation.js +25 -9
  47. package/src/developer-agent/workspace-inspection.js +60 -5
  48. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  49. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  50. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  51. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  52. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  53. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  54. package/src/executors/dev-task-cleanup/schema.json +9 -0
  55. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  56. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  57. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  58. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  59. package/src/executors/fleet/fleet.js +1 -1
  60. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  61. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  62. package/src/executors/foundation-preflight/schema.json +5 -0
  63. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  64. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  65. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  66. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  67. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  68. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  69. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  70. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  71. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  72. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  73. package/src/executors/github-bootstrap/schema.json +7 -1
  74. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  75. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  76. package/src/executors/infrastructure-plan/schema.json +12 -52
  77. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  78. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  79. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  80. package/src/executors/local-deploy/local-approval.js +39 -0
  81. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  82. package/src/executors/local-deploy/local-deploy.js +1404 -0
  83. package/src/executors/local-deploy/schema.json +70 -0
  84. package/src/executors/refresh/refresh.js +2 -2
  85. package/src/executors/remove/remove.js +2 -2
  86. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  87. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  88. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  89. package/src/executors/secret-initialize/schema.json +42 -0
  90. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  91. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  92. package/src/executors/secret-metadata/schema.json +5 -0
  93. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  94. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  95. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  96. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  97. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  98. package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
  99. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  100. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  101. package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
  102. package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
  103. package/src/executors/sst-lifecycle/schema.json +8 -1
  104. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  105. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  106. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  107. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  108. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  109. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  110. package/src/executors/unlock/unlock.js +2 -2
  111. package/src/foundation/capability-plan.d.ts +43 -0
  112. package/src/foundation/capability-plan.js +168 -0
  113. package/src/foundation/cost-estimate.d.ts +170 -0
  114. package/src/foundation/cost-estimate.js +683 -0
  115. package/src/foundation/discovery.d.ts +14 -11
  116. package/src/foundation/discovery.js +32 -6
  117. package/src/foundation/index.d.ts +4 -0
  118. package/src/foundation/index.js +11 -0
  119. package/src/foundation/local-database-contract.d.ts +20 -0
  120. package/src/foundation/local-database-contract.js +262 -13
  121. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  122. package/src/foundation/local-private-smoke-access.js +197 -0
  123. package/src/foundation/logging-preflight.js +1 -1
  124. package/src/foundation/logging.d.ts +3 -1
  125. package/src/foundation/logging.js +1 -1
  126. package/src/foundation/partial-state.d.ts +10 -0
  127. package/src/foundation/partial-state.js +21 -0
  128. package/src/foundation/preflight.js +37 -18
  129. package/src/foundation/private-smoke-access.d.ts +25 -0
  130. package/src/foundation/private-smoke-access.js +135 -0
  131. package/src/foundation/private-smoke-admission.d.ts +45 -0
  132. package/src/foundation/private-smoke-admission.js +180 -0
  133. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  134. package/src/foundation/private-smoke-control-plane.js +184 -0
  135. package/src/foundation/provision-database-bindings.d.ts +5 -0
  136. package/src/foundation/provision-database-bindings.js +41 -8
  137. package/src/foundation/provision-logical-database.js +15 -8
  138. package/src/foundation/requirements.d.ts +3 -3
  139. package/src/foundation/requirements.js +24 -12
  140. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  141. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  142. package/src/foundation/router-waf.d.ts +149 -0
  143. package/src/foundation/router-waf.js +809 -0
  144. package/src/foundation/stages.d.ts +1 -0
  145. package/src/foundation/stages.js +11 -0
  146. package/src/generators/blueprint/blueprint.d.ts +5 -0
  147. package/src/generators/blueprint/blueprint.js +102 -0
  148. package/src/generators/blueprint/files.d.ts +6 -0
  149. package/src/generators/blueprint/files.js +217 -0
  150. package/src/generators/blueprint/schema.d.ts +4 -0
  151. package/src/generators/blueprint/schema.json +18 -0
  152. package/src/generators/formatting.d.ts +8 -0
  153. package/src/generators/formatting.js +141 -0
  154. package/src/generators/function/function.js +38 -17
  155. package/src/generators/logging-registry.d.ts +2 -0
  156. package/src/generators/logging-registry.js +22 -0
  157. package/src/generators/post-generation-install.js +2 -2
  158. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  159. package/src/generators/preset/dependency-overrides.js +55 -0
  160. package/src/generators/preset/generator.js +43 -3
  161. package/src/generators/preset/schema.d.ts +10 -0
  162. package/src/generators/preset/schema.json +47 -0
  163. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  164. package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
  165. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  166. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  167. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  168. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  169. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  170. package/src/generators/preset/workspace-files-developer-agent.js +162 -44
  171. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  172. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  173. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  174. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  175. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  176. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  177. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  178. package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
  179. package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
  180. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  181. package/src/generators/preset/workspace-files-stage-authority.js +529 -0
  182. package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
  183. package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
  184. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  185. package/src/generators/preset/workspace-files-thin-docs.js +370 -0
  186. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  187. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  188. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  189. package/src/generators/preset/workspace-files.d.ts +18 -2
  190. package/src/generators/preset/workspace-files.js +1525 -609
  191. package/src/generators/repository-policy/repository-policy.js +235 -5
  192. package/src/generators/repository-policy/schema.d.ts +10 -0
  193. package/src/generators/repository-policy/schema.json +80 -4
  194. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  195. package/src/generators/repository-policy/tree-policy.js +25 -0
  196. package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
  197. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  198. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  199. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  200. package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
  201. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
  202. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  203. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  204. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  205. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  206. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  207. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  208. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  209. package/src/generators/slice/built-in-plan-data-files.js +176 -1200
  210. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  211. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  212. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  213. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  214. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  215. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  216. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
  217. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  218. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  219. package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
  220. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  221. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
  222. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
  223. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  224. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  225. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  226. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  227. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  228. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  229. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  230. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  231. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  232. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  233. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  234. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  235. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  236. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  237. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  238. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  239. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  240. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  241. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  242. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  243. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  244. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  246. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  247. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  248. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  249. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  250. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  251. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  252. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  253. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  254. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  255. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
  257. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  258. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  259. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  261. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  262. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  263. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  264. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  265. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  266. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  267. package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
  268. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  269. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  270. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  271. package/src/generators/slice/built-in-plan-shared.js +41 -19
  272. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  273. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  274. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  276. package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
  277. package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
  278. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  279. package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
  280. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  281. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  282. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  283. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  284. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  285. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  286. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  287. package/src/generators/slice/built-in-plan.d.ts +11 -1
  288. package/src/generators/slice/built-in-plan.js +83 -30
  289. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  290. package/src/generators/slice/data-policy-review-seed.js +22 -0
  291. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  292. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  293. package/src/generators/slice/local-source-identity.d.ts +2 -0
  294. package/src/generators/slice/local-source-identity.js +31 -0
  295. package/src/generators/slice/persistence-contract.d.ts +14 -0
  296. package/src/generators/slice/persistence-contract.js +32 -0
  297. package/src/generators/slice/slice.js +61 -50
  298. package/src/generators/sql/schema.d.ts +7 -0
  299. package/src/generators/sql/schema.json +38 -0
  300. package/src/generators/sql/sql.d.ts +6 -0
  301. package/src/generators/sql/sql.js +53 -0
  302. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  303. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  304. package/src/generators/upgrade/upgrade.d.ts +15 -1
  305. package/src/generators/upgrade/upgrade.js +435 -44
  306. package/src/generators/workload/frozen-container.d.ts +1 -1
  307. package/src/generators/workload/performance-registration.d.ts +1 -0
  308. package/src/generators/workload/performance-registration.js +9 -11
  309. package/src/generators/workload/service-performance-files.d.ts +1 -0
  310. package/src/generators/workload/service-performance-files.js +27 -7
  311. package/src/generators/workload/workload.d.ts +1 -1
  312. package/src/generators/workload/workload.js +105 -29
  313. package/src/git-policy/action-pins.d.ts +5 -0
  314. package/src/git-policy/action-pins.js +5 -0
  315. package/src/git-policy/github-bootstrap.d.ts +48 -8
  316. package/src/git-policy/github-bootstrap.js +344 -176
  317. package/src/git-policy/routing.d.ts +7 -1
  318. package/src/git-policy/routing.js +62 -1
  319. package/src/index.d.ts +1 -0
  320. package/src/index.js +1 -0
  321. package/src/infrastructure-change/local-capability.d.ts +73 -0
  322. package/src/infrastructure-change/local-capability.js +114 -0
  323. package/src/infrastructure-change/model.d.ts +25 -4
  324. package/src/infrastructure-change/model.js +1 -0
  325. package/src/infrastructure-change/normalize.d.ts +4 -0
  326. package/src/infrastructure-change/normalize.js +47 -7
  327. package/src/infrastructure-change/plan.d.ts +30 -3
  328. package/src/infrastructure-change/plan.js +323 -13
  329. package/src/infrastructure-change/risk.d.ts +3 -1
  330. package/src/infrastructure-change/risk.js +96 -16
  331. package/src/local-dev/browser-verification.d.ts +37 -0
  332. package/src/local-dev/browser-verification.js +281 -0
  333. package/src/local-dev/contracts.d.ts +10 -1
  334. package/src/local-dev/contracts.js +114 -13
  335. package/src/local-dev/dev-command-core.js +24 -5
  336. package/src/local-dev/docker-credential-health.d.ts +14 -0
  337. package/src/local-dev/docker-credential-health.js +94 -0
  338. package/src/local-dev/environment-inspector.d.ts +7 -0
  339. package/src/local-dev/environment-inspector.js +42 -15
  340. package/src/local-dev/environment-state.js +2 -2
  341. package/src/local-dev/errors.d.ts +1 -1
  342. package/src/local-dev/errors.js +2 -0
  343. package/src/local-dev/fleet-client.js +2 -2
  344. package/src/local-dev/fleet-configuration.js +57 -25
  345. package/src/local-dev/fleet-inventory.js +58 -22
  346. package/src/local-dev/fleet-ipc.d.ts +7 -0
  347. package/src/local-dev/fleet-ipc.js +14 -2
  348. package/src/local-dev/fleet-launcher.d.ts +6 -0
  349. package/src/local-dev/fleet-launcher.js +16 -4
  350. package/src/local-dev/fleet-logs.js +50 -22
  351. package/src/local-dev/fleet-process.d.ts +20 -1
  352. package/src/local-dev/fleet-process.js +197 -41
  353. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  354. package/src/local-dev/fleet-runner-evidence.js +56 -0
  355. package/src/local-dev/fleet-runtime.js +268 -229
  356. package/src/local-dev/fleet-session.d.ts +2 -0
  357. package/src/local-dev/fleet-session.js +28 -11
  358. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  359. package/src/local-dev/fleet-state.d.ts +5 -2
  360. package/src/local-dev/fleet-state.js +25 -4
  361. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  362. package/src/local-dev/fleet-supervisor.js +66 -11
  363. package/src/local-dev/fleet-web-start.d.ts +12 -0
  364. package/src/local-dev/fleet-web-start.js +48 -0
  365. package/src/local-dev/identity.js +3 -14
  366. package/src/local-dev/index.d.ts +1 -0
  367. package/src/local-dev/index.js +1 -0
  368. package/src/local-dev/native-completion.d.ts +9 -0
  369. package/src/local-dev/native-completion.js +130 -0
  370. package/src/local-dev/nx-workspace.d.ts +4 -2
  371. package/src/local-dev/nx-workspace.js +11 -6
  372. package/src/local-dev/personal-stage.d.ts +4 -5
  373. package/src/local-dev/personal-stage.js +6 -54
  374. package/src/local-dev/port-claims.d.ts +13 -0
  375. package/src/local-dev/port-claims.js +46 -0
  376. package/src/local-dev/ports.d.ts +14 -2
  377. package/src/local-dev/ports.js +78 -3
  378. package/src/local-dev/private-state.d.ts +11 -0
  379. package/src/local-dev/private-state.js +146 -40
  380. package/src/local-dev/process-group.d.ts +4 -0
  381. package/src/local-dev/process-group.js +29 -0
  382. package/src/local-dev/process-identity.d.ts +8 -0
  383. package/src/local-dev/process-identity.js +31 -1
  384. package/src/local-dev/proxy.js +11 -12
  385. package/src/local-dev/runtime-paths.js +1 -1
  386. package/src/local-dev/slice-claim.js +1 -1
  387. package/src/local-dev/slice-runner.d.ts +15 -6
  388. package/src/local-dev/slice-runner.js +189 -54
  389. package/src/local-dev/task-attachment.d.ts +17 -0
  390. package/src/local-dev/task-attachment.js +73 -0
  391. package/src/local-dev/task-authority.d.ts +10 -0
  392. package/src/local-dev/task-authority.js +27 -0
  393. package/src/local-dev/task-identity.d.ts +33 -0
  394. package/src/local-dev/task-identity.js +418 -0
  395. package/src/local-dev/task-native-writer.d.ts +18 -0
  396. package/src/local-dev/task-native-writer.js +329 -0
  397. package/src/local-dev/tls.js +8 -2
  398. package/src/local-dev/web-launch.d.ts +9 -0
  399. package/src/local-dev/web-launch.js +130 -0
  400. package/src/ownership/composition.d.ts +2 -1
  401. package/src/ownership/composition.js +1 -0
  402. package/src/performance/cost-collection.d.ts +1 -1
  403. package/src/performance/cost-collection.js +4 -2
  404. package/src/performance/cost-controls.d.ts +8 -4
  405. package/src/performance/cost-controls.js +39 -28
  406. package/src/performance/evidence.d.ts +1 -1
  407. package/src/performance/evidence.js +5 -3
  408. package/src/performance/load-safety.js +5 -3
  409. package/src/performance/model.d.ts +4 -4
  410. package/src/performance/model.js +4 -5
  411. package/src/performance/scenario.d.ts +22 -0
  412. package/src/performance/scenario.js +100 -92
  413. package/src/release/index.d.ts +0 -2
  414. package/src/release/index.js +0 -2
  415. package/src/release/source-authority.d.ts +5 -5
  416. package/src/release/source-authority.js +141 -124
  417. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  418. package/src/repository-policy/aurora-preflight.js +4 -1
  419. package/src/repository-policy/capacity-migration.d.ts +3 -0
  420. package/src/repository-policy/capacity-migration.js +21 -0
  421. package/src/repository-policy/deployment-plan.d.ts +4 -1
  422. package/src/repository-policy/deployment-plan.js +9 -0
  423. package/src/repository-policy/foundation-profile.js +10 -1
  424. package/src/repository-policy/policy.d.ts +57 -3
  425. package/src/repository-policy/policy.js +497 -11
  426. package/src/schemas/blueprint-v1.json +5 -4
  427. package/src/schemas/foundation-requirement-v1.json +5 -4
  428. package/src/schemas/performance-policy-v1.json +3 -3
  429. package/src/schemas/repository-policy-v1.json +130 -6
  430. package/src/schemas/testing-evidence-result-v1.json +1 -1
  431. package/src/secrets/adapters.d.ts +7 -2
  432. package/src/secrets/adapters.js +34 -3
  433. package/src/secrets/aws-control-plane.d.ts +10 -1
  434. package/src/secrets/aws-control-plane.js +67 -0
  435. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  436. package/src/secrets/generated-aws-control-plane.js +259 -0
  437. package/src/secrets/metadata.js +38 -10
  438. package/src/secrets/model.d.ts +8 -1
  439. package/src/secrets/model.js +24 -3
  440. package/src/secrets/operator.d.ts +91 -3
  441. package/src/secrets/operator.js +463 -13
  442. package/src/secrets/personal-command.d.ts +18 -2
  443. package/src/secrets/personal-command.js +66 -12
  444. package/src/secrets/registry.d.ts +2 -1
  445. package/src/secrets/registry.js +18 -1
  446. package/src/secrets/verification.js +15 -2
  447. package/src/secrets/workload-access.js +10 -2
  448. package/src/sst-environment-source-format.d.ts +6 -0
  449. package/src/sst-environment-source-format.js +199 -0
  450. package/src/supply-chain/action-pins.js +61 -7
  451. package/src/supply-chain/blueprint-trust-git.js +85 -24
  452. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  453. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  454. package/src/supply-chain/build-output-bounds.js +12 -0
  455. package/src/supply-chain/build-output.d.ts +7 -1
  456. package/src/supply-chain/build-output.js +177 -24
  457. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  458. package/src/supply-chain/ecr-scanning.js +11 -7
  459. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  460. package/src/supply-chain/ecs-deployed-image.js +6 -4
  461. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  462. package/src/supply-chain/generated-command.js +1 -0
  463. package/src/supply-chain/generated-container-release-command.js +1285 -124
  464. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  465. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  466. package/src/supply-chain/generated-files.js +25 -14
  467. package/src/supply-chain/generated-scanner-command.js +2 -1
  468. package/src/supply-chain/index.d.ts +1 -1
  469. package/src/supply-chain/index.js +2 -1
  470. package/src/supply-chain/sbom.d.ts +1 -1
  471. package/src/supply-chain/sbom.js +30 -5
  472. package/src/supply-chain/scanner.js +3 -0
  473. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  474. package/src/testing-evidence/fixture-scope.js +4 -2
  475. package/src/testing-evidence/result.d.ts +2 -1
  476. package/src/testing-evidence/result.js +18 -4
  477. package/src/workload-roles/account-baseline.d.ts +11 -0
  478. package/src/workload-roles/account-baseline.js +253 -16
  479. package/src/workload-roles/authority.d.ts +3 -1
  480. package/src/workload-roles/authority.js +48 -2
  481. package/src/workload-roles/aws-s3-state.js +27 -0
  482. package/src/workload-roles/boundary.d.ts +2 -1
  483. package/src/workload-roles/boundary.js +9 -2
  484. package/src/workload-roles/handler.js +52 -24
  485. package/src/workload-roles/index.d.ts +10 -17
  486. package/src/workload-roles/index.js +5 -18
  487. package/src/workload-roles/injection.js +1 -1
  488. package/src/workload-roles/provisioner.js +12 -4
  489. package/src/workload-roles/registration.d.ts +1 -0
  490. package/src/workload-roles/registration.js +5 -0
  491. package/src/workload-roles/stage-boundary.js +1 -1
  492. package/src/workload-roles/standard-slice.js +3 -3
  493. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  494. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  495. package/src/workspace-deployment/identity.d.ts +3 -0
  496. package/src/workspace-deployment/identity.js +22 -0
  497. package/src/workspace-deployment/index.d.ts +4 -0
  498. package/src/workspace-deployment/index.js +8 -0
  499. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  500. package/src/workspace-deployment/migration-evidence.js +83 -0
  501. package/src/workspace-deployment/migration.d.ts +27 -0
  502. package/src/workspace-deployment/migration.js +109 -0
  503. package/src/workspace-deployment/ownership.d.ts +81 -0
  504. package/src/workspace-deployment/ownership.js +381 -0
  505. package/src/api-contract/baseline-update.js.map +0 -1
  506. package/src/api-contract/compatibility.js.map +0 -1
  507. package/src/api-contract/contract-graph.js.map +0 -1
  508. package/src/api-contract/evidence.js.map +0 -1
  509. package/src/api-contract/index.js.map +0 -1
  510. package/src/api-contract/model.fixtures.d.ts +0 -2
  511. package/src/api-contract/model.fixtures.js +0 -81
  512. package/src/api-contract/model.fixtures.js.map +0 -1
  513. package/src/api-contract/model.js.map +0 -1
  514. package/src/api-contract/rollout.js.map +0 -1
  515. package/src/authorization/compatibility.js.map +0 -1
  516. package/src/authorization/index.js.map +0 -1
  517. package/src/blueprints/execution.js.map +0 -1
  518. package/src/blueprints/external-sandbox.js.map +0 -1
  519. package/src/blueprints/index.js.map +0 -1
  520. package/src/blueprints/inputs.js.map +0 -1
  521. package/src/blueprints/manifest.js.map +0 -1
  522. package/src/blueprints/resolver.js.map +0 -1
  523. package/src/blueprints/transitions.js.map +0 -1
  524. package/src/cli/agent-command.js.map +0 -1
  525. package/src/cli/agent-runtime.js.map +0 -1
  526. package/src/cli/blueprint-authority.js.map +0 -1
  527. package/src/cli/blueprint-command.js.map +0 -1
  528. package/src/cli/bootstrap.js.map +0 -1
  529. package/src/cli/dev-command.js.map +0 -1
  530. package/src/cli/main.js.map +0 -1
  531. package/src/cli/output.js.map +0 -1
  532. package/src/cli/personal-secret-runtime.js.map +0 -1
  533. package/src/cli/secret-terminal.js.map +0 -1
  534. package/src/container-images.js.map +0 -1
  535. package/src/data-lifecycle/index.js.map +0 -1
  536. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  537. package/src/data-lifecycle/model.fixtures.js +0 -244
  538. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  539. package/src/data-lifecycle/model.js.map +0 -1
  540. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  541. package/src/data-lifecycle/validation.js.map +0 -1
  542. package/src/database-retirement/contract.js.map +0 -1
  543. package/src/database-retirement/index.js.map +0 -1
  544. package/src/deterministic-order.js.map +0 -1
  545. package/src/developer-agent/context.js.map +0 -1
  546. package/src/developer-agent/generator-planning.js.map +0 -1
  547. package/src/developer-agent/generator-preview.js.map +0 -1
  548. package/src/developer-agent/git-inspection.js.map +0 -1
  549. package/src/developer-agent/handoff.js.map +0 -1
  550. package/src/developer-agent/index.js.map +0 -1
  551. package/src/developer-agent/model.js.map +0 -1
  552. package/src/developer-agent/operation-registry.js.map +0 -1
  553. package/src/developer-agent/ordering.js.map +0 -1
  554. package/src/developer-agent/planning.js.map +0 -1
  555. package/src/developer-agent/preview-changes.js.map +0 -1
  556. package/src/developer-agent/preview-source.js.map +0 -1
  557. package/src/developer-agent/validation.js.map +0 -1
  558. package/src/developer-agent/workspace-inspection.js.map +0 -1
  559. package/src/developer-agent/workspace-path.js.map +0 -1
  560. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  561. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  562. package/src/executors/deploy/deploy.js.map +0 -1
  563. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  564. package/src/executors/dev/dev.js.map +0 -1
  565. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  566. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  567. package/src/executors/developer-context/developer-context.js.map +0 -1
  568. package/src/executors/fleet/fleet.js.map +0 -1
  569. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  570. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  571. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  572. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  573. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  574. package/src/executors/refresh/refresh.js.map +0 -1
  575. package/src/executors/remove/remove.js.map +0 -1
  576. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  577. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  578. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  579. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  580. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  581. package/src/executors/unlock/unlock.js.map +0 -1
  582. package/src/executors/work-markers/work-markers.js.map +0 -1
  583. package/src/foundation/discovery.js.map +0 -1
  584. package/src/foundation/index.js.map +0 -1
  585. package/src/foundation/local-database-contract.js.map +0 -1
  586. package/src/foundation/logging-preflight.js.map +0 -1
  587. package/src/foundation/logging.js.map +0 -1
  588. package/src/foundation/preflight.js.map +0 -1
  589. package/src/foundation/provision-database-bindings.js.map +0 -1
  590. package/src/foundation/provision-logical-database.js.map +0 -1
  591. package/src/foundation/requirements.js.map +0 -1
  592. package/src/foundation/router-origin-proof.js.map +0 -1
  593. package/src/foundation/stages.js.map +0 -1
  594. package/src/frontend-security/index.js.map +0 -1
  595. package/src/frontend-security/security-headers.js.map +0 -1
  596. package/src/generators/feature-registry.js.map +0 -1
  597. package/src/generators/function/function.js.map +0 -1
  598. package/src/generators/job/job.js.map +0 -1
  599. package/src/generators/logging-registry.js.map +0 -1
  600. package/src/generators/post-generation-install.js.map +0 -1
  601. package/src/generators/preset/generator.js.map +0 -1
  602. package/src/generators/preset/tool-versions.js.map +0 -1
  603. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  604. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  605. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  606. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  607. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  608. package/src/generators/preset/workspace-files.js.map +0 -1
  609. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  610. package/src/generators/service/service.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  629. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  630. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  631. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  632. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  633. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  634. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  635. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  636. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  637. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  638. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  639. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  640. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  641. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  642. package/src/generators/slice/built-in-plan.js.map +0 -1
  643. package/src/generators/slice/slice.js.map +0 -1
  644. package/src/generators/upgrade/upgrade.js.map +0 -1
  645. package/src/generators/workload/frozen-container.js.map +0 -1
  646. package/src/generators/workload/performance-registration.js.map +0 -1
  647. package/src/generators/workload/reliability-registration.js.map +0 -1
  648. package/src/generators/workload/service-performance-files.js.map +0 -1
  649. package/src/generators/workload/workload.js.map +0 -1
  650. package/src/git-policy/action-pins.js.map +0 -1
  651. package/src/git-policy/github-bootstrap.js.map +0 -1
  652. package/src/git-policy/index.js.map +0 -1
  653. package/src/git-policy/routing.js.map +0 -1
  654. package/src/index.js.map +0 -1
  655. package/src/infrastructure-change/convergence.js.map +0 -1
  656. package/src/infrastructure-change/drift.js.map +0 -1
  657. package/src/infrastructure-change/index.js.map +0 -1
  658. package/src/infrastructure-change/model.js.map +0 -1
  659. package/src/infrastructure-change/normalize.js.map +0 -1
  660. package/src/infrastructure-change/plan.js.map +0 -1
  661. package/src/infrastructure-change/risk.js.map +0 -1
  662. package/src/infrastructure-change/summary.js.map +0 -1
  663. package/src/local-dev/context-discovery.js.map +0 -1
  664. package/src/local-dev/contract-validation.js.map +0 -1
  665. package/src/local-dev/contracts.js.map +0 -1
  666. package/src/local-dev/control-contract.js.map +0 -1
  667. package/src/local-dev/dev-command-core.js.map +0 -1
  668. package/src/local-dev/effects.js.map +0 -1
  669. package/src/local-dev/environment-inspector.js.map +0 -1
  670. package/src/local-dev/environment-state.js.map +0 -1
  671. package/src/local-dev/errors.js.map +0 -1
  672. package/src/local-dev/fleet-client.js.map +0 -1
  673. package/src/local-dev/fleet-configuration.js.map +0 -1
  674. package/src/local-dev/fleet-inventory.js.map +0 -1
  675. package/src/local-dev/fleet-ipc.js.map +0 -1
  676. package/src/local-dev/fleet-launcher.js.map +0 -1
  677. package/src/local-dev/fleet-lock.js.map +0 -1
  678. package/src/local-dev/fleet-logs.js.map +0 -1
  679. package/src/local-dev/fleet-process.js.map +0 -1
  680. package/src/local-dev/fleet-runtime.js.map +0 -1
  681. package/src/local-dev/fleet-session.js.map +0 -1
  682. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  683. package/src/local-dev/fleet-startup.js.map +0 -1
  684. package/src/local-dev/fleet-state.js.map +0 -1
  685. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  686. package/src/local-dev/fleet-supervisor.js.map +0 -1
  687. package/src/local-dev/gateway-daemon.js.map +0 -1
  688. package/src/local-dev/gateway.js.map +0 -1
  689. package/src/local-dev/identity.js.map +0 -1
  690. package/src/local-dev/index.js.map +0 -1
  691. package/src/local-dev/local-context.js.map +0 -1
  692. package/src/local-dev/nx-workspace.js.map +0 -1
  693. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  694. package/src/local-dev/personal-stage.js.map +0 -1
  695. package/src/local-dev/portless.js.map +0 -1
  696. package/src/local-dev/ports.js.map +0 -1
  697. package/src/local-dev/private-state.js.map +0 -1
  698. package/src/local-dev/process-identity.js.map +0 -1
  699. package/src/local-dev/proxy.js.map +0 -1
  700. package/src/local-dev/runtime-paths.js.map +0 -1
  701. package/src/local-dev/secret-slice-claim.js.map +0 -1
  702. package/src/local-dev/slice-claim.js.map +0 -1
  703. package/src/local-dev/slice-runner.js.map +0 -1
  704. package/src/local-dev/tls.js.map +0 -1
  705. package/src/ownership/composition.js.map +0 -1
  706. package/src/ownership/foundation-record.js.map +0 -1
  707. package/src/ownership/hash.js.map +0 -1
  708. package/src/ownership/index.js.map +0 -1
  709. package/src/ownership/json-ownership.js.map +0 -1
  710. package/src/ownership/record.js.map +0 -1
  711. package/src/ownership/workspace-record.js.map +0 -1
  712. package/src/performance/cost-collection.js.map +0 -1
  713. package/src/performance/cost-controls.js.map +0 -1
  714. package/src/performance/evidence.js.map +0 -1
  715. package/src/performance/index.js.map +0 -1
  716. package/src/performance/load-safety.js.map +0 -1
  717. package/src/performance/model.js.map +0 -1
  718. package/src/performance/pr-artifact-budget.js.map +0 -1
  719. package/src/performance/runner.js.map +0 -1
  720. package/src/performance/scenario-endpoint.js.map +0 -1
  721. package/src/performance/scenario.js.map +0 -1
  722. package/src/performance/test-fixtures.d.ts +0 -7
  723. package/src/performance/test-fixtures.js +0 -169
  724. package/src/performance/test-fixtures.js.map +0 -1
  725. package/src/performance/unit-cost.js.map +0 -1
  726. package/src/release/index.js.map +0 -1
  727. package/src/release/lifecycle.js.map +0 -1
  728. package/src/release/manifest.js.map +0 -1
  729. package/src/release/rollout.js.map +0 -1
  730. package/src/release/source-authority.js.map +0 -1
  731. package/src/repository-policy/aurora-preflight.js.map +0 -1
  732. package/src/repository-policy/deployment-plan.js.map +0 -1
  733. package/src/repository-policy/foundation-profile.js.map +0 -1
  734. package/src/repository-policy/index.js.map +0 -1
  735. package/src/repository-policy/policy.js.map +0 -1
  736. package/src/secrets/adapters.js.map +0 -1
  737. package/src/secrets/aws-control-plane.js.map +0 -1
  738. package/src/secrets/declaration-verification.js.map +0 -1
  739. package/src/secrets/guardrails.js.map +0 -1
  740. package/src/secrets/index.js.map +0 -1
  741. package/src/secrets/metadata.js.map +0 -1
  742. package/src/secrets/model.js.map +0 -1
  743. package/src/secrets/operator.js.map +0 -1
  744. package/src/secrets/permissions.js.map +0 -1
  745. package/src/secrets/personal-command.js.map +0 -1
  746. package/src/secrets/personal-ledger.js.map +0 -1
  747. package/src/secrets/registry.js.map +0 -1
  748. package/src/secrets/verification.js.map +0 -1
  749. package/src/secrets/workload-access.js.map +0 -1
  750. package/src/supply-chain/action-pins.js.map +0 -1
  751. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  752. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  753. package/src/supply-chain/blueprint-trust.js.map +0 -1
  754. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  755. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  756. package/src/supply-chain/build-output.js.map +0 -1
  757. package/src/supply-chain/common.js.map +0 -1
  758. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  759. package/src/supply-chain/container-release.js.map +0 -1
  760. package/src/supply-chain/ecr-applicability.js.map +0 -1
  761. package/src/supply-chain/ecr-scanning.js.map +0 -1
  762. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  763. package/src/supply-chain/errors.js.map +0 -1
  764. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  765. package/src/supply-chain/generated-command.js.map +0 -1
  766. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  767. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  768. package/src/supply-chain/generated-files.js.map +0 -1
  769. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  770. package/src/supply-chain/index.js.map +0 -1
  771. package/src/supply-chain/inventory.js.map +0 -1
  772. package/src/supply-chain/license-expression.js.map +0 -1
  773. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  774. package/src/supply-chain/policy.js.map +0 -1
  775. package/src/supply-chain/publication.js.map +0 -1
  776. package/src/supply-chain/sbom.js.map +0 -1
  777. package/src/supply-chain/scanner.js.map +0 -1
  778. package/src/supply-chain/vendored-source.js.map +0 -1
  779. package/src/testing-evidence/fixture-scope.js.map +0 -1
  780. package/src/testing-evidence/index.js.map +0 -1
  781. package/src/testing-evidence/quarantine.js.map +0 -1
  782. package/src/testing-evidence/result.js.map +0 -1
  783. package/src/testing-evidence/runner-adapter.js.map +0 -1
  784. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  785. package/src/validation.js.map +0 -1
  786. package/src/work-markers/index.js.map +0 -1
  787. package/src/work-markers/work-markers.js.map +0 -1
  788. package/src/workload-roles/account-baseline.js.map +0 -1
  789. package/src/workload-roles/authority.js.map +0 -1
  790. package/src/workload-roles/aws-adapter.js.map +0 -1
  791. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  792. package/src/workload-roles/aws-s3-state.js.map +0 -1
  793. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  794. package/src/workload-roles/boundary.js.map +0 -1
  795. package/src/workload-roles/convergence.js.map +0 -1
  796. package/src/workload-roles/effective-policy.js.map +0 -1
  797. package/src/workload-roles/handler.js.map +0 -1
  798. package/src/workload-roles/history.js.map +0 -1
  799. package/src/workload-roles/index.js.map +0 -1
  800. package/src/workload-roles/injection.js.map +0 -1
  801. package/src/workload-roles/manifest.js.map +0 -1
  802. package/src/workload-roles/provisioner.js.map +0 -1
  803. package/src/workload-roles/registration.js.map +0 -1
  804. package/src/workload-roles/stage-boundary.js.map +0 -1
  805. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -47,11 +47,11 @@ function renderProductInfrastructureSafetyFiles(name) {
47
47
  authoritativeRefreshForbiddenForDetection: true,
48
48
  previewEnvironment: {
49
49
  PULUMI_OPTION_REFRESH: 'true',
50
- PULUMI_OPTION_RUN_PROGRAM: 'true',
50
+ PULUMI_OPTION_RUN_PROGRAM: 'false',
51
51
  },
52
52
  },
53
53
  planner: {
54
- command: 'sst diff --json plus same-command read-only refresh preview',
54
+ command: 'sst diff --json plus same-command separated refresh preview',
55
55
  executor: '@empire-builder-kit/nx:infrastructure-plan',
56
56
  scope: 'product-slice',
57
57
  sourceBoundary: 'desired-source-versus-recorded-sst-state',
@@ -60,16 +60,62 @@ function renderProductInfrastructureSafetyFiles(name) {
60
60
  version: '4.17.1',
61
61
  },
62
62
  policy: {
63
+ adoptedImports: [],
63
64
  additiveLowRiskTypes: [
64
65
  'aws:cloudwatch/dashboard:Dashboard',
66
+ 'aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy',
65
67
  'aws:cloudwatch/logGroup:LogGroup',
66
68
  'aws:cloudwatch/metricAlarm:MetricAlarm',
67
69
  'random:index/randomPassword:RandomPassword',
68
70
  ],
71
+ additiveReviewedTypes: [
72
+ 'aws:appconfig/application:Application',
73
+ 'aws:appconfig/configurationProfile:ConfigurationProfile',
74
+ 'aws:appconfig/deploymentStrategy:DeploymentStrategy',
75
+ 'aws:appconfig/environment:Environment',
76
+ 'aws:cloudwatch/eventRule:EventRule',
77
+ 'aws:cloudwatch/eventTarget:EventTarget',
78
+ 'aws:ecs/taskDefinition:TaskDefinition',
79
+ 'aws:lambda/functionEventInvokeConfig:FunctionEventInvokeConfig',
80
+ 'aws:lambda/permission:Permission',
81
+ 'aws:s3/bucketCorsConfiguration:BucketCorsConfiguration',
82
+ 'aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2',
83
+ 'aws:s3/bucketOwnershipControls:BucketOwnershipControls',
84
+ 'aws:s3/bucketObjectv2:BucketObjectv2',
85
+ 'aws:s3/bucketPolicy:BucketPolicy',
86
+ 'aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock',
87
+ 'aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2',
88
+ 'aws:s3/bucketVersioningV2:BucketVersioningV2',
89
+ 'aws:sqs/queuePolicy:QueuePolicy',
90
+ 'pulumi-nodejs:dynamic:Resource',
91
+ 'pulumi:providers:aws',
92
+ 'pulumi:providers:pulumi-nodejs',
93
+ 'pulumi:providers:random',
94
+ 'pulumi:pulumi:Stack',
95
+ 'sst:aws:ApiGatewayV2',
96
+ 'sst:aws:ApiGatewayV2LambdaRoute',
97
+ 'sst:aws:Bucket',
98
+ 'sst:aws:Bus',
99
+ 'sst:aws:BusQueueSubscriber',
100
+ 'sst:aws:CDN',
101
+ 'sst:aws:Cluster',
102
+ 'sst:aws:CognitoUserPool',
103
+ 'sst:aws:CognitoUserPoolClient',
104
+ 'sst:aws:Function',
105
+ 'sst:aws:Nextjs',
106
+ 'sst:aws:Queue',
107
+ 'sst:aws:Router',
108
+ 'sst:aws:Task',
109
+ 'sst:aws:Vpc',
110
+ 'sst:sst:LinkRef',
111
+ 'sst:sst:Linkable',
112
+ 'sst:sst:Version',
113
+ ],
69
114
  costOrQuotaTypes: [
70
115
  'aws:apigatewayv2/api:Api',
71
116
  'aws:apigatewayv2/integration:Integration',
72
117
  'aws:apigatewayv2/route:Route',
118
+ 'aws:apigatewayv2/stage:Stage',
73
119
  'aws:apigatewayv2/vpcLink:VpcLink',
74
120
  'aws:appconfig/deployment:Deployment',
75
121
  'aws:budgets/budget:Budget',
@@ -77,12 +123,11 @@ function renderProductInfrastructureSafetyFiles(name) {
77
123
  'aws:cloudfront/distribution:Distribution',
78
124
  'aws:cloudfront/function:Function',
79
125
  'aws:cloudfront/keyValueStore:KeyValueStore',
80
- 'aws:costexplorer/anomalyMonitor:AnomalyMonitor',
81
- 'aws:costexplorer/anomalySubscription:AnomalySubscription',
82
126
  'aws:dynamodb/table:Table',
83
127
  'aws:ecs/service:Service',
84
128
  'aws:lambda/function:Function',
85
129
  'aws:rds/cluster:Cluster',
130
+ 'aws:sfn/stateMachine:StateMachine',
86
131
  ],
87
132
  failClosedOnUnknown: true,
88
133
  iamAccessAnalyzer: 'in-process-validate-policy-for-proposed-policy-documents',
@@ -93,12 +138,18 @@ function renderProductInfrastructureSafetyFiles(name) {
93
138
  redactBeforeReview: true,
94
139
  standingPolicyRiskClasses: ['no-change', 'additive-low-risk'],
95
140
  statefulTypes: [
141
+ 'aws:appconfig/hostedConfigurationVersion:HostedConfigurationVersion',
142
+ 'aws:cloudformation/stack:Stack',
143
+ 'aws:cognito/userPoolClient:UserPoolClient',
96
144
  'aws:dynamodb/table:Table',
145
+ 'aws:kms/alias:Alias',
97
146
  'aws:kms/key:Key',
98
147
  'aws:rds/cluster:Cluster',
99
148
  'aws:s3/bucket:Bucket',
149
+ 'aws:secretsmanager/secret:Secret',
100
150
  'aws:sqs/queue:Queue',
101
151
  'aws:ssm/parameter:Parameter',
152
+ 'random:index/randomBytes:RandomBytes',
102
153
  'random:index/randomPassword:RandomPassword',
103
154
  ],
104
155
  },
@@ -246,9 +297,11 @@ if (
246
297
  \`pnpm nx run <slice>:infrastructure-plan --stage=<protected-stage>\` runs the
247
298
  workspace-pinned SST 4.17.1 \`sst diff --json\` contract through the framework
248
299
  executor. It first compares desired source with SST's recorded engine state,
249
- then repeats the same preview with the pinned Pulumi read-only refresh and
250
- run-program options. Refresh-phase events are separated from desired operations
251
- in memory. Raw state, policy documents, provider values, and secret-adjacent
300
+ then repeats that non-writing diff with Pulumi's refresh option. The executor
301
+ separates provider refresh records from the subsequent desired-preview records,
302
+ validates both partitions, and uses only the refresh partition as drift
303
+ authority. The first ordinary preview remains the sole desired-update
304
+ authority. Raw state, policy documents, provider values, and secret-adjacent
252
305
  material are never written to review evidence.
253
306
 
254
307
  Unknown, destructive, stateful, security-expanding, protection-reducing, and
@@ -259,10 +312,13 @@ still independently revalidated before apply.
259
312
 
260
313
  Use only the bounded read-only preview for drift. Never invoke authoritative
261
314
  \`sst refresh\`, write state, unlock state, or mutate cloud resources to detect
262
- drift. A refresh preview is complete only when its desired phase materially
263
- equals the ordinary diff, its exact existing-resource inventory matches the
264
- full canonical state export, and all material properties have supported
265
- coverage. Generated non-secret String SSM parameter values are compared only in
315
+ drift. A refresh preview is complete only when desired-program execution
316
+ is disabled during the provider refresh subphase, refresh and desired events
317
+ remain structurally separable, its exact existing-resource inventory matches
318
+ the full canonical state export, and all material properties have supported
319
+ coverage. The preceding ordinary diff is the sole desired-update authority;
320
+ any ordinary preview failure or malformed post-refresh desired event fails
321
+ closed. Generated non-secret String SSM parameter values are compared only in
266
322
  memory; secret payloads remain unsupported and block.
267
323
 
268
324
  The generated contract is Slice-scoped and protected planning runs under the
@@ -276,7 +332,9 @@ apply; it is never promoted to \`no-drift\`. The exact SST/provider call
276
332
  inventory still requires protected CloudTrail calibration evidence.
277
333
 
278
334
  When a plan requires human review, commit
279
- the workspace-level \`operations/infrastructure-approval.json\` batch. It binds
335
+ the workspace-level \`operations/infrastructure-approval.json\` batch. An agent
336
+ may draft that batch from the sanitized plan; a CODEOWNER other than its author
337
+ reviews and approves it before it is committed. It binds
280
338
  the exact ordered project set, action, stage, and one sanitized planned
281
339
  plan/digest-bound decision per project. The resume run permits only that one
282
340
  aggregate file to differ from the planned source commit and recomputes every
@@ -287,8 +345,11 @@ import, and cutover/data/collision/rollback/recovery proof for every
287
345
  replacement. Their canonical digests are retained in both authorization and
288
346
  the immediate pre-mutation binding; changing one after review fails closed.
289
347
 
290
- State edit, import operations inside a deploy preview, remove, repair, and
291
- authoritative refresh are governed recovery operations. Retain a state backup,
348
+ In staging and production, state edit, import operations inside a deploy
349
+ preview, remove, repair, and authoritative refresh are governed recovery
350
+ operations. In the development stage, refresh, unlock, and remove run locally
351
+ through their explicit Nx targets without non-author approval. For the
352
+ protected stages, retain a state backup,
292
353
  exact physical target inventory, non-author approval, command/result evidence,
293
354
  and a finalized post-repair convergence record. Remove additionally requires
294
355
  the complete deletion inventory, drained dependents, retained Foundation,
@@ -0,0 +1,4 @@
1
+ /** Native expiry housekeeping; cadence and pause remain owned by background policy. */
2
+ export declare function renderKeyValueCleanupFiles(name: string): Readonly<Record<string, string>>;
3
+ /** Lightweight adopter orchestration tests; real-child repository proof is separate. */
4
+ export declare function renderKeyValueCleanupTests(): string;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderKeyValueCleanupFiles = renderKeyValueCleanupFiles;
4
+ exports.renderKeyValueCleanupTests = renderKeyValueCleanupTests;
5
+ /** Native expiry housekeeping; cadence and pause remain owned by background policy. */
6
+ function renderKeyValueCleanupFiles(name) {
7
+ return {
8
+ 'async/inbox-cleanup.ts': `import { randomUUID } from 'node:crypto';
9
+ import { createLogger, type Logger } from '@empire-builder-kit/runtime/logging';
10
+ import { createMetricEmitter, type MetricEmitter } from '@empire-builder-kit/runtime/observability';
11
+ import { dataStore } from '../data/key-value.js';
12
+ import { cleanupProviderInbox } from './provider-inbox.js';
13
+ import { createPerformancePersistence } from '../performance/persistence.js';
14
+
15
+ interface Dependencies {
16
+ logger: Logger; metrics: MetricEmitter; now(): number;
17
+ store: typeof dataStore;
18
+ }
19
+ export function createInboxCleanupHandler(dependencies: Dependencies) {
20
+ return async (event: { id?: string } = {}) => {
21
+ const correlationId = event.id ?? randomUUID();
22
+ const deadline = dependencies.now() + 4 * 60_000;
23
+ const store = dependencies.store();
24
+ const performance = createPerformancePersistence(store, dependencies.now);
25
+ let reported = 0, pendingReports = false;
26
+ let reportFailure: unknown;
27
+ const emit = (metricName: string, namespace: string, value: number) => {
28
+ if (dependencies.metrics.emit({ namespace, metricName, unit: 'Count', value,
29
+ dimensions: { component: namespace === 'EBK/Performance' ? 'performance-load-cleanup' : 'inbox-cleanup',
30
+ feature: namespace === 'EBK/Performance' ? 'performance' : 'async-work',
31
+ operation: namespace === 'EBK/Performance' ? 'expiry-cleanup' : 'inbox-cleanup',
32
+ slice: '${name}', stage: process.env.EBK_STAGE ?? 'local' } }) === undefined)
33
+ throw new Error('cleanup-metric-delivery-failed');
34
+ };
35
+ const report = async () => {
36
+ try {
37
+ const result = await performance.reportDeadlines(count => emit(
38
+ 'PerformanceLoadCleanupDeadlineBreaches', 'EBK/Performance', count));
39
+ reported += result.reported; pendingReports ||= result.continuationRequired;
40
+ } catch (error) { reportFailure ??= error; }
41
+ };
42
+ try {
43
+ // Telemetry failure retains reports but does not prevent physical expiry.
44
+ await report();
45
+ const inbox = await cleanupProviderInbox(store, new Date(dependencies.now()).toISOString(), dependencies.now, deadline);
46
+ const expired = await performance.expire({ deadline });
47
+ await report();
48
+ emit('InboxCleanupContinuationRequired', 'EBK/Async', inbox.continuationRequired ? 1 : 0);
49
+ emit('PerformanceLoadCleanupContinuationRequired', 'EBK/Performance', expired.continuationRequired ? 1 : 0);
50
+ // A page is not a global count. Emit zero only after a complete inventory;
51
+ // otherwise retain explicit continuation and inspected-page evidence.
52
+ if (inbox.completeScan) emit('InboxCleanupBacklog', 'EBK/Async', 0);
53
+ if (expired.completeScan) emit('PerformanceLoadCleanupBacklog', 'EBK/Performance', 0);
54
+ if (reportFailure !== undefined) throw reportFailure;
55
+ if (reported > 0 || pendingReports) throw new Error('performance-load-cleanup-deadline-breached');
56
+ const result = { inbox, performance: expired, reportedPerformanceDeadlineBreaches: reported,
57
+ outcome: inbox.completeScan && expired.completeScan ? 'converged' : 'continuation-required' };
58
+ dependencies.logger.info('Native inbox cleanup completed', { context: { correlationId },
59
+ attributes: result, outcome: result.outcome === 'converged' ? 'success' : 'unknown' });
60
+ return result;
61
+ } catch (error) {
62
+ dependencies.logger.error('Native inbox cleanup failed', { context: { correlationId }, error, outcome: 'failure' });
63
+ throw error;
64
+ }
65
+ };
66
+ }
67
+ export const handler = createInboxCleanupHandler({ store: dataStore, now: Date.now,
68
+ metrics: createMetricEmitter({}),
69
+ logger: createLogger({ component: 'inbox-cleanup', feature: 'async-work', operation: 'inbox-cleanup',
70
+ slice: '${name}', stage: process.env.EBK_STAGE ?? 'local', workspace: process.env.EBK_WORKSPACE ?? '${name}' }),
71
+ });
72
+ `,
73
+ };
74
+ }
75
+ /** Lightweight adopter orchestration tests; real-child repository proof is separate. */
76
+ function renderKeyValueCleanupTests() {
77
+ return ` it('cleans an empty native inbox without SQL and preserves deadline telemetry', async () => {
78
+ const store = {
79
+ get: vi.fn().mockResolvedValue(null),
80
+ list: vi.fn().mockResolvedValue({ records: [] }),
81
+ commit: vi.fn().mockResolvedValue(undefined),
82
+ };
83
+ const metrics = { emit: vi.fn(() => ({})) };
84
+ const handler = createInboxCleanupHandler({ logger: logger as never, metrics: metrics as never,
85
+ now: () => Date.parse('2026-01-01T00:00:00.000Z'), store: (() => store) as never });
86
+ await expect(handler()).resolves.toMatchObject({ outcome: 'converged', reportedPerformanceDeadlineBreaches: 0 });
87
+ expect(store.commit).toHaveBeenCalledTimes(2);
88
+ expect(metrics.emit).toHaveBeenCalledWith(expect.objectContaining({ metricName: 'PerformanceLoadCleanupBacklog', value: 0 }));
89
+ });
90
+ it('never accepts cleanup after native transport or metric failure', async () => {
91
+ const store = { get: vi.fn().mockRejectedValue(new Error('native unavailable')),
92
+ list: vi.fn().mockResolvedValue({ records: [] }), commit: vi.fn() };
93
+ const handler = createInboxCleanupHandler({ logger: logger as never, metrics: { emit: vi.fn() } as never,
94
+ now: () => Date.parse('2026-01-01T00:00:00.000Z'), store: (() => store) as never });
95
+ await expect(handler()).rejects.toThrow('native unavailable');
96
+ expect(store.commit).not.toHaveBeenCalled();
97
+ });
98
+ `;
99
+ }
100
+ //# sourceMappingURL=built-in-plan-key-value-cleanup.js.map
@@ -0,0 +1,4 @@
1
+ /** Default event consumption uses native transactional inboxes, never SQL or TTL timing as authority. */
2
+ export declare function renderKeyValueEventConsumer(name: string, pascalName: string, workspace: string): string;
3
+ /** The public example publisher uses the same durable intents as domain writes. */
4
+ export declare function renderKeyValueCreatedPublisher(pascalName: string, workspace: string): string;
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderKeyValueEventConsumer = renderKeyValueEventConsumer;
4
+ exports.renderKeyValueCreatedPublisher = renderKeyValueCreatedPublisher;
5
+ const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
6
+ /** Default event consumption uses native transactional inboxes, never SQL or TTL timing as authority. */
7
+ function renderKeyValueEventConsumer(name, pascalName, workspace) {
8
+ const prefix = (0, built_in_plan_shared_js_1.lowerCamelIdentifier)(pascalName);
9
+ return `import { lifecycleIdempotencyKey, parseDataLifecycleChangeEvent } from '@empire-builder-kit/runtime/data-lifecycle';
10
+ import { parseSqsEventBridgeRecords, toEventLogContext } from '@empire-builder-kit/runtime/events';
11
+ import type { KeyValueChange } from '@empire-builder-kit/runtime/key-value';
12
+ import { createLogger } from '@empire-builder-kit/runtime/logging';
13
+ import { ${prefix}AuthorizationActions } from '../authorization/policy.js';
14
+ import { authorize${pascalName}InternalOperation } from '../authorization/runtime.js';
15
+ import lifecycleConsumers from '../data/lifecycle-consumers.json' with { type: 'json' };
16
+ import workContract from '../async/work-contract.json' with { type: 'json' };
17
+ import { dataStore } from '../data/key-value.js';
18
+
19
+ interface QueueRecord { body: string; messageId: string }
20
+ interface QueueEvent { Records: QueueRecord[] }
21
+ interface DownstreamCopy {
22
+ sourceSlice: string; pseudonymousKey: string; copyId: string; recipient: string;
23
+ purpose: 'lifecycle-reconciliation'; expiresAt: string; action: 'correction' | 'deletion';
24
+ holdRefs: string[]; status: 'reconciled' | 'deleted'; updatedAt: string;
25
+ }
26
+ const sources = lifecycleConsumers.acceptedSources;
27
+ if (lifecycleConsumers.schemaVersion !== 1 || !Array.isArray(sources) || !sources.length || sources.length > 32 ||
28
+ new Set(sources).size !== sources.length || sources.some(source => !/^[a-z][a-z0-9-]{0,62}$/.test(source)))
29
+ throw new Error('Lifecycle consumer configuration must contain unique bounded Slice sources.');
30
+ const lifecycleSources = new Set(sources);
31
+ const replaySeconds = workContract.queue.idempotencyWindowSeconds;
32
+ if (replaySeconds !== 2_592_000 || workContract.queue.conflictPolicy !== 'same-id-different-payload-fails')
33
+ throw new Error('Event consumer requires the declared Standard 30-day replay and conflict policy.');
34
+ const plusSeconds = (value: string, seconds: number) => new Date(Date.parse(value) + seconds * 1_000).toISOString();
35
+
36
+ function validDownstream(value: unknown, sourceSlice: string, pseudonymousKey: string): DownstreamCopy {
37
+ const copy = value as DownstreamCopy;
38
+ if (!copy || copy.sourceSlice !== sourceSlice || copy.pseudonymousKey !== pseudonymousKey ||
39
+ copy.copyId !== '${name}-lifecycle-consumer' || copy.recipient !== '${name}' ||
40
+ copy.purpose !== 'lifecycle-reconciliation' || !Number.isFinite(Date.parse(copy.updatedAt)) ||
41
+ new Date(copy.updatedAt).toISOString() !== copy.updatedAt ||
42
+ !['correction', 'deletion'].includes(copy.action) ||
43
+ copy.status !== (copy.action === 'deletion' ? 'deleted' : 'reconciled') ||
44
+ !Array.isArray(copy.holdRefs) || copy.holdRefs.length !== 0)
45
+ throw new Error('Stored lifecycle copy is malformed or has a different scope.');
46
+ return copy;
47
+ }
48
+
49
+ export async function handler(event: QueueEvent) {
50
+ const workloadIdentity = process.env.EBK_WORKLOAD_IDENTITY;
51
+ if (workloadIdentity !== '${name}:event-consumer') throw new Error('Event consumer workload identity is invalid.');
52
+ const stage = process.env.EBK_STAGE;
53
+ if (!stage || !/^[a-z][a-z0-9-]{0,62}$/.test(stage))
54
+ throw new Error('Event consumer stage is required and must be exact.');
55
+ // A malformed envelope without a real SQS identity cannot be partially acknowledged.
56
+ if (!Array.isArray(event?.Records) || event.Records.length > 100 ||
57
+ new Set(event.Records.map(record => record.messageId)).size !== event.Records.length || event.Records.some(record =>
58
+ typeof record.messageId !== 'string' || !/^[A-Za-z0-9_-]{1,128}$/.test(record.messageId) ||
59
+ typeof record.body !== 'string' || Buffer.byteLength(record.body) > 256 * 1024))
60
+ throw new Error('Event consumer requires a bounded batch with exact SQS message identities.');
61
+ const logger = createLogger({ component: 'event-consumer', feature: 'events', operation: 'consume-created',
62
+ slice: '${name}', stage, workspace: '${workspace}' });
63
+ const batch = parseSqsEventBridgeRecords(event.Records);
64
+ const failures = batch.failures.map(({ messageId }) => ({ itemIdentifier: messageId as string }));
65
+ for (const { detailType, envelope, messageId, source } of batch.events) {
66
+ try {
67
+ // Unspecified tenant metadata is the existing Standard application scope,
68
+ // not permission to select a different tenant. Multi-tenant features own
69
+ // their explicit consumer/persistence binding.
70
+ if (envelope.meta.stage !== stage || (envelope.meta.tenantId !== undefined && envelope.meta.tenantId !== 'application') ||
71
+ envelope.meta.schemaVersion !== 1 || Date.parse(envelope.meta.occurredAt) > Date.now() + 5 * 60 * 1_000)
72
+ throw new Error('Event scope, schema or time does not match the consumer.');
73
+ const changes: KeyValueChange[] = [];
74
+ const eventId = lifecycleIdempotencyKey('event-consumer', [source, envelope.meta.eventId]);
75
+ const replayWindowEndsAt = plusSeconds(envelope.meta.occurredAt, replaySeconds);
76
+ if (Date.parse(replayWindowEndsAt) < Date.now()) throw new Error('Event replay window has closed.');
77
+ const store = dataStore();
78
+ if (detailType === 'DataLifecycleChanged') {
79
+ const lifecycle = parseDataLifecycleChangeEvent(envelope.data);
80
+ if (lifecycle.sourceSlice !== source || !lifecycleSources.has(source) ||
81
+ lifecycle.categoryId !== 'product-record' || lifecycle.occurredAt !== envelope.meta.occurredAt)
82
+ throw new Error('Lifecycle event source, category or time is not declared by this consumer.');
83
+ await authorize${pascalName}InternalOperation({ action: ${prefix}AuthorizationActions.lifecycleConsume,
84
+ correlationId: envelope.meta.correlationId, operationId: messageId as string, workloadIdentity });
85
+ const copyId = lifecycleIdempotencyKey('lifecycle-copy', [source, lifecycle.pseudonymousKey, '${name}-lifecycle-consumer']);
86
+ const retained = await store.get('application', 'data-lifecycle-downstream-copies', copyId);
87
+ const previous = retained ? validDownstream(retained.value, source, lifecycle.pseudonymousKey) : null;
88
+ const expiresAt = plusSeconds(lifecycle.occurredAt, 400 * 24 * 60 * 60);
89
+ const newer = !previous || Date.parse(previous.updatedAt) < Date.parse(lifecycle.occurredAt) ||
90
+ (previous.updatedAt === lifecycle.occurredAt && previous.action !== 'deletion');
91
+ if (newer) changes.push({ action: 'put', collection: 'data-lifecycle-downstream-copies', id: copyId,
92
+ expectedVersion: retained?.version ?? 0, value: {
93
+ sourceSlice: source, pseudonymousKey: lifecycle.pseudonymousKey, copyId: '${name}-lifecycle-consumer',
94
+ recipient: '${name}', purpose: 'lifecycle-reconciliation', expiresAt,
95
+ action: lifecycle.action, holdRefs: [], status: lifecycle.action === 'deletion' ? 'deleted' : 'reconciled',
96
+ updatedAt: lifecycle.occurredAt,
97
+ } satisfies DownstreamCopy });
98
+ changes.push({ action: 'put', collection: 'data-lifecycle-receipts', id: eventId, expectedVersion: 0,
99
+ value: { ...lifecycle, expiresAt } });
100
+ } else {
101
+ const data = envelope.data as { id?: unknown; occurredBy?: unknown };
102
+ if (source !== '${name}' || detailType !== '${pascalName}Created' || !data || typeof data !== 'object' ||
103
+ Object.keys(data).sort().join(',') !== 'id,occurredBy' || typeof data.id !== 'string' ||
104
+ !/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(data.id) ||
105
+ typeof data.occurredBy !== 'string' || !data.occurredBy || data.occurredBy.length > 128)
106
+ throw new Error('Event type, source or payload is not declared by this consumer.');
107
+ }
108
+ const result = await store.consume({ tenantId: 'application', consumer: 'event-consumer-v1', eventId,
109
+ payload: { source, detailType, envelope }, replayWindowEndsAt,
110
+ // Retain beyond the whole replay window; DynamoDB TTL is only physical cleanup.
111
+ expiresAt: plusSeconds(replayWindowEndsAt, 24 * 60 * 60), changes });
112
+ logger.info('${name} event consumed', { context: toEventLogContext(envelope.meta, detailType),
113
+ attributes: { result }, outcome: 'success' });
114
+ } catch {
115
+ failures.push({ itemIdentifier: messageId as string });
116
+ }
117
+ }
118
+ logger.info('${name} event batch completed', { attributes: { eventCount: batch.events.length, failureCount: failures.length },
119
+ outcome: failures.length ? 'failure' : 'success' });
120
+ return { batchItemFailures: failures };
121
+ }
122
+ `;
123
+ }
124
+ /** The public example publisher uses the same durable intents as domain writes. */
125
+ function renderKeyValueCreatedPublisher(pascalName, workspace) {
126
+ const prefix = (0, built_in_plan_shared_js_1.lowerCamelIdentifier)(pascalName);
127
+ return `import { randomUUID } from 'node:crypto';
128
+ import type { RuntimeHttpEvent } from '@empire-builder-kit/runtime';
129
+ import type { Principal } from '@empire-builder-kit/runtime/auth';
130
+ import { createContractHttpJsonHandler } from '@empire-builder-kit/runtime/api-server';
131
+ import { buildEventEntry } from '@empire-builder-kit/runtime/events';
132
+ import { authorize${pascalName}Operation } from '../authorization/runtime.js';
133
+ import { ${prefix}PublishCreated } from './contracts/protected.js';
134
+ import { ${pascalName}Created } from '../contracts/events.js';
135
+ import { dataStore } from '../data/key-value.js';
136
+
137
+ export const handler = createContractHttpJsonHandler<typeof ${prefix}PublishCreated, RuntimeHttpEvent, Principal>({
138
+ component: 'event-publisher', operation: ${prefix}PublishCreated, workspace: '${workspace}',
139
+ authorize: authorize${pascalName}Operation,
140
+ async handle({ context, principal }) {
141
+ const built = buildEventEntry(${pascalName}Created, { id: randomUUID(), occurredBy: principal.id }, {
142
+ busName: process.env.EVENT_BUS_NAME ?? '', stage: process.env.EBK_STAGE ?? '',
143
+ context: { ...context, tenantId: 'application' },
144
+ });
145
+ await dataStore().commit({ tenantId: 'application', changes: [], events: [built.entry] });
146
+ return { eventId: built.envelope.meta.eventId };
147
+ },
148
+ });
149
+ `;
150
+ }
151
+ //# sourceMappingURL=built-in-plan-key-value-consumer.js.map
@@ -0,0 +1,2 @@
1
+ /** Same public deletion journey, backed by native item transactions and durable intents. */
2
+ export declare function renderKeyValueDeletionFiles(name: string, pascalName: string, workspace: string): Readonly<Record<string, string>>;