@empire-builder-kit/nx 1.0.0-rc.37 → 1.0.0-rc.39

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 (637) hide show
  1. package/README.md +18 -0
  2. package/executors.json +5 -0
  3. package/generators.json +10 -0
  4. package/package.json +20 -3
  5. package/src/aws-authority/index.d.ts +1 -0
  6. package/src/aws-authority/index.js +1 -0
  7. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  8. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  9. package/src/aws-authority/stage-authority.d.ts +11 -3
  10. package/src/aws-authority/stage-authority.js +615 -29
  11. package/src/blueprints/external-sandbox.js +21 -9
  12. package/src/blueprints/manifest.d.ts +1 -1
  13. package/src/blueprints/resolver.js +28 -15
  14. package/src/cli/bootstrap.d.ts +1 -1
  15. package/src/cli/deploy-runtime.d.ts +6 -0
  16. package/src/cli/deploy-runtime.js +58 -0
  17. package/src/cli/dev-command.d.ts +16 -4
  18. package/src/cli/dev-command.js +63 -0
  19. package/src/cli/main.d.ts +7 -1
  20. package/src/cli/main.js +128 -20
  21. package/src/cli/output.d.ts +1 -1
  22. package/src/developer-agent/context.js +41 -9
  23. package/src/developer-agent/generator-planning.js +16 -2
  24. package/src/developer-agent/git-inspection.d.ts +6 -2
  25. package/src/developer-agent/git-inspection.js +78 -6
  26. package/src/developer-agent/model.d.ts +4 -2
  27. package/src/developer-agent/operation-registry.d.ts +5 -0
  28. package/src/developer-agent/operation-registry.js +179 -23
  29. package/src/developer-agent/preview-changes.d.ts +2 -0
  30. package/src/developer-agent/preview-changes.js +14 -2
  31. package/src/developer-agent/preview-source.js +3 -0
  32. package/src/developer-agent/validation.js +20 -8
  33. package/src/developer-agent/workspace-inspection.js +37 -3
  34. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  35. package/src/executors/deployment-plan/deployment-plan.js +51 -4
  36. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  37. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  38. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  39. package/src/executors/dev-task-cleanup/schema.json +9 -0
  40. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  41. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  42. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  43. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  44. package/src/executors/fleet/fleet.js +1 -1
  45. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +28 -1
  46. package/src/executors/local-deploy/local-deploy.d.ts +8 -1
  47. package/src/executors/local-deploy/local-deploy.js +97 -24
  48. package/src/executors/local-deploy/schema.json +8 -0
  49. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
  50. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
  51. package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
  52. package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
  53. package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
  54. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
  55. package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
  56. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  57. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  58. package/src/foundation/capability-plan.d.ts +43 -0
  59. package/src/foundation/capability-plan.js +168 -0
  60. package/src/foundation/discovery.d.ts +14 -11
  61. package/src/foundation/discovery.js +32 -6
  62. package/src/foundation/index.d.ts +1 -0
  63. package/src/foundation/index.js +1 -0
  64. package/src/foundation/local-database-contract.d.ts +20 -0
  65. package/src/foundation/local-database-contract.js +262 -13
  66. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  67. package/src/foundation/local-private-smoke-access.js +197 -0
  68. package/src/foundation/preflight.js +37 -18
  69. package/src/foundation/private-smoke-access.js +10 -2
  70. package/src/foundation/private-smoke-admission.d.ts +3 -1
  71. package/src/foundation/private-smoke-admission.js +29 -8
  72. package/src/foundation/private-smoke-control-plane.js +17 -6
  73. package/src/foundation/provision-database-bindings.d.ts +5 -0
  74. package/src/foundation/provision-database-bindings.js +41 -8
  75. package/src/foundation/provision-logical-database.js +13 -8
  76. package/src/foundation/requirements.d.ts +3 -3
  77. package/src/foundation/requirements.js +24 -12
  78. package/src/foundation/router-waf.d.ts +1 -0
  79. package/src/foundation/router-waf.js +14 -1
  80. package/src/generators/blueprint/blueprint.d.ts +5 -0
  81. package/src/generators/blueprint/blueprint.js +102 -0
  82. package/src/generators/blueprint/files.d.ts +6 -0
  83. package/src/generators/blueprint/files.js +217 -0
  84. package/src/generators/blueprint/schema.d.ts +4 -0
  85. package/src/generators/blueprint/schema.json +18 -0
  86. package/src/generators/formatting.js +24 -1
  87. package/src/generators/logging-registry.d.ts +2 -0
  88. package/src/generators/logging-registry.js +22 -0
  89. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  90. package/src/generators/preset/workspace-files-adopter-skills.js +301 -0
  91. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  92. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  93. package/src/generators/preset/workspace-files-developer-agent.js +40 -13
  94. package/src/generators/preset/workspace-files-performance-load.js +8 -0
  95. package/src/generators/preset/workspace-files-stage-authority.js +40 -1
  96. package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
  97. package/src/generators/preset/workspace-files-thin-docs.js +64 -18
  98. package/src/generators/preset/workspace-files.d.ts +4 -0
  99. package/src/generators/preset/workspace-files.js +159 -91
  100. package/src/generators/repository-policy/repository-policy.js +37 -0
  101. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  102. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  103. package/src/generators/slice/built-in-plan-api-files.js +47 -389
  104. package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
  105. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  106. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -2
  107. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  108. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  109. package/src/generators/slice/built-in-plan-background-work-files.d.ts +1 -1
  110. package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
  111. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  112. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  113. package/src/generators/slice/built-in-plan-data-files.js +61 -1164
  114. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  115. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +18 -2
  116. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
  117. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
  118. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  119. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
  120. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  121. package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
  122. package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
  123. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  124. package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
  125. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  126. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  127. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  128. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  129. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  130. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  131. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  132. package/src/generators/slice/built-in-plan-key-value-delivery.js +120 -0
  133. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  134. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  135. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  136. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  137. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  138. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  139. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  140. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  141. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  142. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  143. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  144. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  145. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  146. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  147. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  148. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  149. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  150. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  151. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  152. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  153. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  154. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  155. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  156. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  157. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  158. package/src/generators/slice/built-in-plan-metadata-files.js +140 -28
  159. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
  160. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
  161. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  162. package/src/generators/slice/built-in-plan-operations-files.js +89 -50
  163. package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
  164. package/src/generators/slice/built-in-plan-project-files.js +116 -67
  165. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  166. package/src/generators/slice/built-in-plan-release-files.js +64 -15
  167. package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
  168. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  169. package/src/generators/slice/built-in-plan-shared.js +41 -19
  170. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  171. package/src/generators/slice/built-in-plan-sql-events.js +257 -0
  172. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  173. package/src/generators/slice/built-in-plan-testing-files.js +184 -132
  174. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  175. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  176. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +1 -1
  177. package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
  178. package/src/generators/slice/built-in-plan-verification-files.js +70 -0
  179. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  180. package/src/generators/slice/built-in-plan-web-files.js +206 -14
  181. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  182. package/src/generators/slice/built-in-plan-workload-role-files.js +113 -274
  183. package/src/generators/slice/built-in-plan.d.ts +9 -1
  184. package/src/generators/slice/built-in-plan.js +49 -21
  185. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  186. package/src/generators/slice/data-policy-review-seed.js +22 -0
  187. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  188. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  189. package/src/generators/slice/local-source-identity.d.ts +2 -0
  190. package/src/generators/slice/local-source-identity.js +31 -0
  191. package/src/generators/slice/persistence-contract.d.ts +14 -0
  192. package/src/generators/slice/persistence-contract.js +32 -0
  193. package/src/generators/slice/slice.js +29 -24
  194. package/src/generators/sql/schema.d.ts +7 -0
  195. package/src/generators/sql/schema.json +38 -0
  196. package/src/generators/sql/sql.d.ts +6 -0
  197. package/src/generators/sql/sql.js +53 -0
  198. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  199. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  200. package/src/generators/upgrade/upgrade.d.ts +2 -0
  201. package/src/generators/upgrade/upgrade.js +136 -9
  202. package/src/generators/workload/workload.js +51 -2
  203. package/src/local-dev/browser-verification.d.ts +37 -0
  204. package/src/local-dev/browser-verification.js +281 -0
  205. package/src/local-dev/contracts.d.ts +10 -1
  206. package/src/local-dev/contracts.js +114 -13
  207. package/src/local-dev/dev-command-core.js +24 -5
  208. package/src/local-dev/docker-credential-health.d.ts +14 -0
  209. package/src/local-dev/docker-credential-health.js +94 -0
  210. package/src/local-dev/environment-inspector.d.ts +7 -0
  211. package/src/local-dev/environment-inspector.js +42 -15
  212. package/src/local-dev/environment-state.js +2 -2
  213. package/src/local-dev/errors.d.ts +1 -1
  214. package/src/local-dev/errors.js +2 -0
  215. package/src/local-dev/fleet-client.js +2 -2
  216. package/src/local-dev/fleet-configuration.js +57 -25
  217. package/src/local-dev/fleet-inventory.js +46 -18
  218. package/src/local-dev/fleet-ipc.d.ts +7 -0
  219. package/src/local-dev/fleet-ipc.js +14 -2
  220. package/src/local-dev/fleet-launcher.d.ts +6 -0
  221. package/src/local-dev/fleet-launcher.js +14 -2
  222. package/src/local-dev/fleet-logs.js +50 -22
  223. package/src/local-dev/fleet-process.d.ts +20 -1
  224. package/src/local-dev/fleet-process.js +197 -41
  225. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  226. package/src/local-dev/fleet-runner-evidence.js +56 -0
  227. package/src/local-dev/fleet-runtime.js +268 -229
  228. package/src/local-dev/fleet-session.d.ts +2 -0
  229. package/src/local-dev/fleet-session.js +28 -11
  230. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  231. package/src/local-dev/fleet-state.d.ts +5 -2
  232. package/src/local-dev/fleet-state.js +25 -4
  233. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  234. package/src/local-dev/fleet-supervisor.js +66 -11
  235. package/src/local-dev/fleet-web-start.d.ts +12 -0
  236. package/src/local-dev/fleet-web-start.js +48 -0
  237. package/src/local-dev/identity.js +3 -14
  238. package/src/local-dev/index.d.ts +1 -0
  239. package/src/local-dev/index.js +1 -0
  240. package/src/local-dev/native-completion.d.ts +9 -0
  241. package/src/local-dev/native-completion.js +130 -0
  242. package/src/local-dev/nx-workspace.d.ts +4 -2
  243. package/src/local-dev/nx-workspace.js +11 -6
  244. package/src/local-dev/personal-stage.d.ts +4 -5
  245. package/src/local-dev/personal-stage.js +6 -54
  246. package/src/local-dev/port-claims.d.ts +13 -0
  247. package/src/local-dev/port-claims.js +46 -0
  248. package/src/local-dev/ports.d.ts +14 -2
  249. package/src/local-dev/ports.js +78 -3
  250. package/src/local-dev/private-state.d.ts +6 -0
  251. package/src/local-dev/private-state.js +126 -34
  252. package/src/local-dev/process-group.d.ts +4 -0
  253. package/src/local-dev/process-group.js +29 -0
  254. package/src/local-dev/process-identity.d.ts +8 -0
  255. package/src/local-dev/process-identity.js +31 -1
  256. package/src/local-dev/proxy.js +11 -12
  257. package/src/local-dev/runtime-paths.js +1 -1
  258. package/src/local-dev/slice-claim.js +1 -1
  259. package/src/local-dev/slice-runner.d.ts +15 -6
  260. package/src/local-dev/slice-runner.js +189 -54
  261. package/src/local-dev/task-attachment.d.ts +17 -0
  262. package/src/local-dev/task-attachment.js +73 -0
  263. package/src/local-dev/task-authority.d.ts +10 -0
  264. package/src/local-dev/task-authority.js +27 -0
  265. package/src/local-dev/task-identity.d.ts +33 -0
  266. package/src/local-dev/task-identity.js +418 -0
  267. package/src/local-dev/task-native-writer.d.ts +18 -0
  268. package/src/local-dev/task-native-writer.js +329 -0
  269. package/src/local-dev/tls.js +3 -1
  270. package/src/local-dev/web-launch.d.ts +9 -0
  271. package/src/local-dev/web-launch.js +130 -0
  272. package/src/ownership/composition.d.ts +2 -1
  273. package/src/ownership/composition.js +1 -0
  274. package/src/performance/scenario.d.ts +22 -0
  275. package/src/performance/scenario.js +100 -92
  276. package/src/repository-policy/deployment-plan.d.ts +2 -2
  277. package/src/repository-policy/deployment-plan.js +2 -1
  278. package/src/repository-policy/policy.js +38 -3
  279. package/src/schemas/blueprint-v1.json +5 -4
  280. package/src/schemas/foundation-requirement-v1.json +5 -4
  281. package/src/schemas/testing-evidence-result-v1.json +1 -1
  282. package/src/secrets/operator.d.ts +3 -1
  283. package/src/secrets/operator.js +22 -3
  284. package/src/sst-environment-source-format.d.ts +3 -0
  285. package/src/sst-environment-source-format.js +20 -0
  286. package/src/supply-chain/blueprint-trust-git.js +13 -3
  287. package/src/supply-chain/build-output.js +15 -0
  288. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  289. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  290. package/src/testing-evidence/fixture-scope.js +4 -2
  291. package/src/testing-evidence/result.d.ts +2 -1
  292. package/src/testing-evidence/result.js +18 -4
  293. package/src/workload-roles/standard-slice.js +2 -3
  294. package/src/api-contract/baseline-update.js.map +0 -1
  295. package/src/api-contract/compatibility.js.map +0 -1
  296. package/src/api-contract/contract-graph.js.map +0 -1
  297. package/src/api-contract/evidence.js.map +0 -1
  298. package/src/api-contract/index.js.map +0 -1
  299. package/src/api-contract/model.fixtures.d.ts +0 -2
  300. package/src/api-contract/model.fixtures.js +0 -81
  301. package/src/api-contract/model.fixtures.js.map +0 -1
  302. package/src/api-contract/model.js.map +0 -1
  303. package/src/api-contract/rollout.js.map +0 -1
  304. package/src/authorization/compatibility.js.map +0 -1
  305. package/src/authorization/index.js.map +0 -1
  306. package/src/aws/child-environment.js.map +0 -1
  307. package/src/aws/identity.js.map +0 -1
  308. package/src/aws-authority/index.js.map +0 -1
  309. package/src/aws-authority/stage-authority.js.map +0 -1
  310. package/src/blueprints/execution.js.map +0 -1
  311. package/src/blueprints/external-sandbox.js.map +0 -1
  312. package/src/blueprints/index.js.map +0 -1
  313. package/src/blueprints/inputs.js.map +0 -1
  314. package/src/blueprints/manifest.js.map +0 -1
  315. package/src/blueprints/resolver.js.map +0 -1
  316. package/src/blueprints/transitions.js.map +0 -1
  317. package/src/cli/agent-command.js.map +0 -1
  318. package/src/cli/agent-runtime.js.map +0 -1
  319. package/src/cli/blueprint-authority.js.map +0 -1
  320. package/src/cli/blueprint-command.js.map +0 -1
  321. package/src/cli/bootstrap.js.map +0 -1
  322. package/src/cli/dev-command.js.map +0 -1
  323. package/src/cli/main.js.map +0 -1
  324. package/src/cli/output.js.map +0 -1
  325. package/src/cli/personal-secret-runtime.js.map +0 -1
  326. package/src/cli/secret-terminal.js.map +0 -1
  327. package/src/container-images.js.map +0 -1
  328. package/src/data-lifecycle/index.js.map +0 -1
  329. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  330. package/src/data-lifecycle/model.fixtures.js +0 -244
  331. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  332. package/src/data-lifecycle/model.js.map +0 -1
  333. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  334. package/src/data-lifecycle/validation.js.map +0 -1
  335. package/src/database-retirement/contract.js.map +0 -1
  336. package/src/database-retirement/index.js.map +0 -1
  337. package/src/deterministic-order.js.map +0 -1
  338. package/src/developer-agent/context.js.map +0 -1
  339. package/src/developer-agent/generator-planning.js.map +0 -1
  340. package/src/developer-agent/generator-preview.js.map +0 -1
  341. package/src/developer-agent/git-inspection.js.map +0 -1
  342. package/src/developer-agent/handoff.js.map +0 -1
  343. package/src/developer-agent/index.js.map +0 -1
  344. package/src/developer-agent/model.js.map +0 -1
  345. package/src/developer-agent/operation-registry.js.map +0 -1
  346. package/src/developer-agent/ordering.js.map +0 -1
  347. package/src/developer-agent/planning.js.map +0 -1
  348. package/src/developer-agent/preview-changes.js.map +0 -1
  349. package/src/developer-agent/preview-source.js.map +0 -1
  350. package/src/developer-agent/validation.js.map +0 -1
  351. package/src/developer-agent/workspace-inspection.js.map +0 -1
  352. package/src/developer-agent/workspace-path.js.map +0 -1
  353. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  354. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  355. package/src/executors/deploy/deploy.js.map +0 -1
  356. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  357. package/src/executors/dev/dev.js.map +0 -1
  358. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  359. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  360. package/src/executors/developer-context/developer-context.js.map +0 -1
  361. package/src/executors/fleet/fleet.js.map +0 -1
  362. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  363. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  364. package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +0 -1
  365. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  366. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  367. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  368. package/src/executors/local-deploy/federated-credential-transport.js.map +0 -1
  369. package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
  370. package/src/executors/local-deploy/local-approval.js.map +0 -1
  371. package/src/executors/local-deploy/local-deploy.js.map +0 -1
  372. package/src/executors/refresh/refresh.js.map +0 -1
  373. package/src/executors/remove/remove.js.map +0 -1
  374. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
  375. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  376. package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
  377. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  378. package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
  379. package/src/executors/sst-lifecycle/governed-native-operation.js.map +0 -1
  380. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  381. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  382. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  383. package/src/executors/sst-lifecycle/sst-environment-source.js.map +0 -1
  384. package/src/executors/unlock/unlock.js.map +0 -1
  385. package/src/executors/work-markers/work-markers.js.map +0 -1
  386. package/src/foundation/discovery.js.map +0 -1
  387. package/src/foundation/index.js.map +0 -1
  388. package/src/foundation/local-database-contract.js.map +0 -1
  389. package/src/foundation/logging-preflight.js.map +0 -1
  390. package/src/foundation/logging.js.map +0 -1
  391. package/src/foundation/partial-state.js.map +0 -1
  392. package/src/foundation/preflight.js.map +0 -1
  393. package/src/foundation/private-smoke-access.js.map +0 -1
  394. package/src/foundation/private-smoke-admission.js.map +0 -1
  395. package/src/foundation/private-smoke-control-plane.js.map +0 -1
  396. package/src/foundation/provision-database-bindings.js.map +0 -1
  397. package/src/foundation/provision-logical-database.js.map +0 -1
  398. package/src/foundation/requirements.js.map +0 -1
  399. package/src/foundation/router-origin-proof.js.map +0 -1
  400. package/src/foundation/router-waf-rate-rehearsal.js.map +0 -1
  401. package/src/foundation/router-waf.js.map +0 -1
  402. package/src/foundation/stages.js.map +0 -1
  403. package/src/frontend-security/index.js.map +0 -1
  404. package/src/frontend-security/security-headers.js.map +0 -1
  405. package/src/generators/feature-registry.js.map +0 -1
  406. package/src/generators/formatting.js.map +0 -1
  407. package/src/generators/function/function.js.map +0 -1
  408. package/src/generators/job/job.js.map +0 -1
  409. package/src/generators/logging-registry.js.map +0 -1
  410. package/src/generators/post-generation-install.js.map +0 -1
  411. package/src/generators/preset/dependency-overrides.js.map +0 -1
  412. package/src/generators/preset/generator.js.map +0 -1
  413. package/src/generators/preset/tool-versions.js.map +0 -1
  414. package/src/generators/preset/workspace-files-ci-acceptance.js.map +0 -1
  415. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  416. package/src/generators/preset/workspace-files-ecr-inspector.js.map +0 -1
  417. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  418. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  419. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  420. package/src/generators/preset/workspace-files-stage-authority.js.map +0 -1
  421. package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
  422. package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
  423. package/src/generators/preset/workspace-files-thin-release.js.map +0 -1
  424. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  425. package/src/generators/preset/workspace-files.js.map +0 -1
  426. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  427. package/src/generators/repository-policy/tree-policy.js.map +0 -1
  428. package/src/generators/service/service.js.map +0 -1
  429. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  430. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  431. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  432. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  433. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  434. package/src/generators/slice/built-in-plan-background-work-files.js.map +0 -1
  435. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  436. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  437. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  438. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  439. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  440. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  441. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  442. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  443. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  444. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  445. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  446. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  447. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  448. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  449. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  450. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +0 -1
  451. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  452. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  453. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  454. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  455. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  456. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  457. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  458. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  459. package/src/generators/slice/built-in-plan-thin-release-files.js.map +0 -1
  460. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  461. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  462. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  463. package/src/generators/slice/built-in-plan.js.map +0 -1
  464. package/src/generators/slice/slice.js.map +0 -1
  465. package/src/generators/upgrade/upgrade.js.map +0 -1
  466. package/src/generators/workload/frozen-container.js.map +0 -1
  467. package/src/generators/workload/performance-registration.js.map +0 -1
  468. package/src/generators/workload/reliability-registration.js.map +0 -1
  469. package/src/generators/workload/service-performance-files.js.map +0 -1
  470. package/src/generators/workload/workload.js.map +0 -1
  471. package/src/git-policy/action-pins.js.map +0 -1
  472. package/src/git-policy/github-bootstrap.js.map +0 -1
  473. package/src/git-policy/index.js.map +0 -1
  474. package/src/git-policy/routing.js.map +0 -1
  475. package/src/index.js.map +0 -1
  476. package/src/infrastructure-change/convergence.js.map +0 -1
  477. package/src/infrastructure-change/drift.js.map +0 -1
  478. package/src/infrastructure-change/index.js.map +0 -1
  479. package/src/infrastructure-change/local-capability.js.map +0 -1
  480. package/src/infrastructure-change/model.js.map +0 -1
  481. package/src/infrastructure-change/normalize.js.map +0 -1
  482. package/src/infrastructure-change/plan.js.map +0 -1
  483. package/src/infrastructure-change/risk.js.map +0 -1
  484. package/src/infrastructure-change/summary.js.map +0 -1
  485. package/src/local-dev/context-discovery.js.map +0 -1
  486. package/src/local-dev/contract-validation.js.map +0 -1
  487. package/src/local-dev/contracts.js.map +0 -1
  488. package/src/local-dev/control-contract.js.map +0 -1
  489. package/src/local-dev/dev-command-core.js.map +0 -1
  490. package/src/local-dev/effects.js.map +0 -1
  491. package/src/local-dev/environment-inspector.js.map +0 -1
  492. package/src/local-dev/environment-state.js.map +0 -1
  493. package/src/local-dev/errors.js.map +0 -1
  494. package/src/local-dev/fleet-client.js.map +0 -1
  495. package/src/local-dev/fleet-configuration.js.map +0 -1
  496. package/src/local-dev/fleet-inventory.js.map +0 -1
  497. package/src/local-dev/fleet-ipc.js.map +0 -1
  498. package/src/local-dev/fleet-launcher.js.map +0 -1
  499. package/src/local-dev/fleet-lock.js.map +0 -1
  500. package/src/local-dev/fleet-logs.js.map +0 -1
  501. package/src/local-dev/fleet-process.js.map +0 -1
  502. package/src/local-dev/fleet-runtime.js.map +0 -1
  503. package/src/local-dev/fleet-session.js.map +0 -1
  504. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  505. package/src/local-dev/fleet-startup.js.map +0 -1
  506. package/src/local-dev/fleet-state.js.map +0 -1
  507. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  508. package/src/local-dev/fleet-supervisor.js.map +0 -1
  509. package/src/local-dev/gateway-daemon.js.map +0 -1
  510. package/src/local-dev/gateway.js.map +0 -1
  511. package/src/local-dev/identity.js.map +0 -1
  512. package/src/local-dev/index.js.map +0 -1
  513. package/src/local-dev/local-context.js.map +0 -1
  514. package/src/local-dev/nx-workspace.js.map +0 -1
  515. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  516. package/src/local-dev/personal-stage.js.map +0 -1
  517. package/src/local-dev/portless.js.map +0 -1
  518. package/src/local-dev/ports.js.map +0 -1
  519. package/src/local-dev/private-state.js.map +0 -1
  520. package/src/local-dev/process-identity.js.map +0 -1
  521. package/src/local-dev/proxy.js.map +0 -1
  522. package/src/local-dev/runtime-paths.js.map +0 -1
  523. package/src/local-dev/secret-slice-claim.js.map +0 -1
  524. package/src/local-dev/slice-claim.js.map +0 -1
  525. package/src/local-dev/slice-runner.js.map +0 -1
  526. package/src/local-dev/tls.js.map +0 -1
  527. package/src/ownership/composition.js.map +0 -1
  528. package/src/ownership/foundation-record.js.map +0 -1
  529. package/src/ownership/hash.js.map +0 -1
  530. package/src/ownership/index.js.map +0 -1
  531. package/src/ownership/json-ownership.js.map +0 -1
  532. package/src/ownership/record.js.map +0 -1
  533. package/src/ownership/workspace-record.js.map +0 -1
  534. package/src/performance/cost-collection.js.map +0 -1
  535. package/src/performance/cost-controls.js.map +0 -1
  536. package/src/performance/evidence.js.map +0 -1
  537. package/src/performance/index.js.map +0 -1
  538. package/src/performance/load-safety.js.map +0 -1
  539. package/src/performance/model.js.map +0 -1
  540. package/src/performance/pr-artifact-budget.js.map +0 -1
  541. package/src/performance/runner.js.map +0 -1
  542. package/src/performance/scenario-endpoint.js.map +0 -1
  543. package/src/performance/scenario.js.map +0 -1
  544. package/src/performance/test-fixtures.d.ts +0 -7
  545. package/src/performance/test-fixtures.js +0 -167
  546. package/src/performance/test-fixtures.js.map +0 -1
  547. package/src/performance/unit-cost.js.map +0 -1
  548. package/src/release/index.js.map +0 -1
  549. package/src/release/lifecycle.js.map +0 -1
  550. package/src/release/manifest.js.map +0 -1
  551. package/src/release/rollout.js.map +0 -1
  552. package/src/release/source-authority.js.map +0 -1
  553. package/src/repository-policy/aurora-preflight.js.map +0 -1
  554. package/src/repository-policy/capacity-migration.js.map +0 -1
  555. package/src/repository-policy/deployment-plan.js.map +0 -1
  556. package/src/repository-policy/foundation-profile.js.map +0 -1
  557. package/src/repository-policy/index.js.map +0 -1
  558. package/src/repository-policy/policy.js.map +0 -1
  559. package/src/secrets/adapters.js.map +0 -1
  560. package/src/secrets/aws-control-plane.js.map +0 -1
  561. package/src/secrets/declaration-verification.js.map +0 -1
  562. package/src/secrets/generated-aws-control-plane.js.map +0 -1
  563. package/src/secrets/guardrails.js.map +0 -1
  564. package/src/secrets/index.js.map +0 -1
  565. package/src/secrets/metadata.js.map +0 -1
  566. package/src/secrets/model.js.map +0 -1
  567. package/src/secrets/operator.js.map +0 -1
  568. package/src/secrets/permissions.js.map +0 -1
  569. package/src/secrets/personal-command.js.map +0 -1
  570. package/src/secrets/personal-ledger.js.map +0 -1
  571. package/src/secrets/registry.js.map +0 -1
  572. package/src/secrets/verification.js.map +0 -1
  573. package/src/secrets/workload-access.js.map +0 -1
  574. package/src/sst-environment-source-format.js.map +0 -1
  575. package/src/supply-chain/action-pins.js.map +0 -1
  576. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  577. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  578. package/src/supply-chain/blueprint-trust.js.map +0 -1
  579. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  580. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  581. package/src/supply-chain/build-output-bounds.js.map +0 -1
  582. package/src/supply-chain/build-output.js.map +0 -1
  583. package/src/supply-chain/common.js.map +0 -1
  584. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  585. package/src/supply-chain/container-release.js.map +0 -1
  586. package/src/supply-chain/ecr-applicability.js.map +0 -1
  587. package/src/supply-chain/ecr-scanning.js.map +0 -1
  588. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  589. package/src/supply-chain/errors.js.map +0 -1
  590. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  591. package/src/supply-chain/generated-command.js.map +0 -1
  592. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  593. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  594. package/src/supply-chain/generated-files.js.map +0 -1
  595. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  596. package/src/supply-chain/index.js.map +0 -1
  597. package/src/supply-chain/inventory.js.map +0 -1
  598. package/src/supply-chain/license-expression.js.map +0 -1
  599. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  600. package/src/supply-chain/policy.js.map +0 -1
  601. package/src/supply-chain/publication.js.map +0 -1
  602. package/src/supply-chain/sbom.js.map +0 -1
  603. package/src/supply-chain/scanner.js.map +0 -1
  604. package/src/supply-chain/vendored-source.js.map +0 -1
  605. package/src/testing-evidence/fixture-scope.js.map +0 -1
  606. package/src/testing-evidence/index.js.map +0 -1
  607. package/src/testing-evidence/quarantine.js.map +0 -1
  608. package/src/testing-evidence/result.js.map +0 -1
  609. package/src/testing-evidence/runner-adapter.js.map +0 -1
  610. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  611. package/src/validation.js.map +0 -1
  612. package/src/work-markers/index.js.map +0 -1
  613. package/src/work-markers/work-markers.js.map +0 -1
  614. package/src/workload-roles/account-baseline.js.map +0 -1
  615. package/src/workload-roles/authority.js.map +0 -1
  616. package/src/workload-roles/aws-adapter.js.map +0 -1
  617. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  618. package/src/workload-roles/aws-s3-state.js.map +0 -1
  619. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  620. package/src/workload-roles/boundary.js.map +0 -1
  621. package/src/workload-roles/convergence.js.map +0 -1
  622. package/src/workload-roles/effective-policy.js.map +0 -1
  623. package/src/workload-roles/handler.js.map +0 -1
  624. package/src/workload-roles/history.js.map +0 -1
  625. package/src/workload-roles/index.js.map +0 -1
  626. package/src/workload-roles/injection.js.map +0 -1
  627. package/src/workload-roles/manifest.js.map +0 -1
  628. package/src/workload-roles/provisioner.js.map +0 -1
  629. package/src/workload-roles/registration.js.map +0 -1
  630. package/src/workload-roles/stage-boundary.js.map +0 -1
  631. package/src/workload-roles/standard-slice.js.map +0 -1
  632. package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
  633. package/src/workspace-deployment/identity.js.map +0 -1
  634. package/src/workspace-deployment/index.js.map +0 -1
  635. package/src/workspace-deployment/migration-evidence.js.map +0 -1
  636. package/src/workspace-deployment/migration.js.map +0 -1
  637. package/src/workspace-deployment/ownership.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "EmpireBuilderKitSql",
4
+ "title": "Add a relational requirement to an existing Standard Slice",
5
+ "description": "Report or apply an additive Foundation/Slice SQL declaration while preserving existing data stores and managed ownership. No AWS calls.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "pattern": "^[a-z][a-z0-9-]{0,62}$",
12
+ "$default": { "$source": "argv", "index": 0 },
13
+ "description": "Existing Standard Product Slice."
14
+ },
15
+ "reason": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "maxLength": 512,
19
+ "description": "Concrete relational requirement, such as integrity constraints or reporting joins. Stored in the existing Blueprint inputs.sql declaration."
20
+ },
21
+ "apply": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Apply the paired managed Foundation/Slice source upgrade; otherwise only report it. No AWS operation is performed."
25
+ },
26
+ "skipFormat": {
27
+ "type": "boolean",
28
+ "default": false,
29
+ "description": "Leave source formatting to a subsequent explicit check."
30
+ },
31
+ "skipInstall": {
32
+ "type": "boolean",
33
+ "default": false,
34
+ "description": "Do not run the dependency-install callback after applying source changes."
35
+ }
36
+ },
37
+ "required": ["name", "reason"]
38
+ }
@@ -0,0 +1,6 @@
1
+ import { type GeneratorCallback, type Tree } from '@nx/devkit';
2
+ import { type UpgradeGeneratorLogger } from '../upgrade/upgrade.js';
3
+ import type { SqlGeneratorSchema } from './schema.js';
4
+ /** One additive entry point; the existing upgrader owns validation and all writes. */
5
+ export declare function sqlGenerator(tree: Tree, options: SqlGeneratorSchema, output?: UpgradeGeneratorLogger): Promise<void | GeneratorCallback>;
6
+ export default sqlGenerator;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sqlGenerator = sqlGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const index_js_1 = require("../../blueprints/index.js");
6
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
7
+ const index_js_2 = require("../../ownership/index.js");
8
+ const upgrade_js_1 = require("../upgrade/upgrade.js");
9
+ /** One additive entry point; the existing upgrader owns validation and all writes. */
10
+ async function sqlGenerator(tree, options, output = devkit_1.logger) {
11
+ if (typeof options.name !== 'string' ||
12
+ !/^[a-z][a-z0-9-]{0,62}$/.test(options.name) ||
13
+ ['foundation', 'workspace'].includes(options.name))
14
+ throw new Error('SQL requires one existing Standard Product Slice name.');
15
+ const declaration = (0, capability_plan_js_1.readStandardSqlDeclaration)({
16
+ sql: { reason: options.reason },
17
+ });
18
+ if (!declaration)
19
+ throw new Error('A concrete relational reason is required.');
20
+ const ownershipPath = `packages/${options.name}/.ebk/ownership.json`;
21
+ const source = tree.read(ownershipPath, 'utf8');
22
+ if (!source)
23
+ throw new Error(`Standard Slice ownership is missing at ${ownershipPath}. Generate the Slice first.`);
24
+ let parsed;
25
+ try {
26
+ parsed = JSON.parse(source);
27
+ }
28
+ catch {
29
+ throw new Error(`Standard Slice ownership is invalid at ${ownershipPath}.`);
30
+ }
31
+ const ownership = (0, index_js_2.validateGeneratedOwnershipRecord)(parsed);
32
+ if (!ownership.valid || ownership.value.slice !== options.name)
33
+ throw new Error(`Standard Slice ownership is invalid at ${ownershipPath}.`);
34
+ if (ownership.value.blueprint.name !== index_js_1.BUILTIN_BLUEPRINT_NAME)
35
+ throw new Error('The sql generator only supports the Standard Blueprint. Declare relational capabilities through the external Blueprint owner.');
36
+ const existing = (0, capability_plan_js_1.readStandardSqlDeclaration)(ownership.value.inputs);
37
+ if (existing && existing.reason !== declaration.reason)
38
+ throw new Error('SQL is already declared with a different reason. Keep the recorded reason, or use the managed upgrade inputs surface for an intentional declaration change.');
39
+ output.info(`[ebk-sql] ${options.name}: ${existing ? 'retain' : 'add'} the relational declaration. ` +
40
+ 'The paired upgrade reports Foundation Aurora, private networking/container compute and Slice Drizzle/migration sources. ' +
41
+ 'Existing default-store records, resource identities, capacity, protections and seeded features are preserved. ' +
42
+ 'Aurora/network/container resources can add recurring cost; inspect the generated plan and committed capacity policy before deployment. ' +
43
+ 'This command does not deploy, copy data or retire SQL.');
44
+ return (0, upgrade_js_1.upgradeGenerator)(tree, {
45
+ name: options.name,
46
+ inputs: { ...ownership.value.inputs, sql: declaration },
47
+ apply: options.apply === true,
48
+ skipFormat: options.skipFormat,
49
+ skipInstall: options.skipInstall,
50
+ }, output);
51
+ }
52
+ exports.default = sqlGenerator;
53
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1,2 @@
1
+ /** Only append required SQL members; never replace an adopter's seeded decisions. */
2
+ export declare function planSqlSeededReconciliation(current: ReadonlyMap<string, string | null>, target: Readonly<Record<string, string>>): Map<string, string>;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.planSqlSeededReconciliation = planSqlSeededReconciliation;
4
+ const node_util_1 = require("node:util");
5
+ const ts = require("typescript");
6
+ /** Only append required SQL members; never replace an adopter's seeded decisions. */
7
+ function planSqlSeededReconciliation(current, target) {
8
+ const updates = new Map();
9
+ const read = (path, contents) => {
10
+ const value = JSON.parse(contents);
11
+ if (!value || typeof value !== 'object' || Array.isArray(value))
12
+ throw new Error(`SQL reconciliation requires an object at ${path}.`);
13
+ return value;
14
+ };
15
+ const append = (path, property, key, select, preserveExisting = false, equivalent = node_util_1.isDeepStrictEqual) => {
16
+ const contents = current.get(path);
17
+ if (contents == null)
18
+ return;
19
+ const existing = read(path, contents), desired = read(path, target[path]);
20
+ if (!Array.isArray(existing[property]) || !Array.isArray(desired[property]))
21
+ throw new Error(`SQL reconciliation requires ${path}#/${property}.`);
22
+ let changed = false;
23
+ for (const addition of desired[property].filter(select)) {
24
+ const matches = existing[property].filter((entry) => entry?.[key] === addition[key]);
25
+ if (matches.length > 1 ||
26
+ (matches.length === 1 &&
27
+ !preserveExisting &&
28
+ !equivalent(matches[0], addition)))
29
+ throw new Error(`SQL reconciliation conflict at ${path}: ${addition[key]}. Preserve the customization and reconcile this required declaration explicitly; no files changed.`);
30
+ if (matches.length === 0) {
31
+ existing[property].push(addition);
32
+ changed = true;
33
+ }
34
+ }
35
+ if (changed)
36
+ updates.set(path, JSON.stringify(existing, null, 2) + '\n');
37
+ };
38
+ append('operations/features.json', 'features', 'id', (entry) => entry.id === 'database-lifecycle', true);
39
+ append('secrets/metadata.json', 'declarations', 'logicalName', (entry) => entry.source === 'database-bootstrap', false, (existing, desired) => {
40
+ // Rotation is an adopter decision. Required identity, stage and source
41
+ // bindings still have to agree; never silently overwrite either kind.
42
+ const existingBinding = { ...existing }, desiredBinding = { ...desired };
43
+ delete existingBinding.rotation;
44
+ delete desiredBinding.rotation;
45
+ return (0, node_util_1.isDeepStrictEqual)(existingBinding, desiredBinding);
46
+ });
47
+ append('operations/release.json', 'artifactInventory', 'id', (entry) => typeof entry.id === 'string' &&
48
+ /\.job\.database-(migration|retirement)$/.test(entry.id), true);
49
+ const backgroundPath = 'operations/background-work.json';
50
+ const background = current.get(backgroundPath);
51
+ if (background != null) {
52
+ const existing = read(backgroundPath, background), desired = read(backgroundPath, target[backgroundPath]);
53
+ if (!existing.stages ||
54
+ typeof existing.stages !== 'object' ||
55
+ Array.isArray(existing.stages))
56
+ throw new Error('SQL reconciliation requires declared background-work stages.');
57
+ let changed = false;
58
+ for (const [stage, defaults] of Object.entries(desired.stages)) {
59
+ const settings = existing.stages[stage];
60
+ if (!settings ||
61
+ typeof settings !== 'object' ||
62
+ Array.isArray(settings) ||
63
+ typeof settings.outbox?.enabled !== 'boolean')
64
+ throw new Error(`SQL reconciliation requires the existing ${stage} outbox pause decision.`);
65
+ if (!Object.prototype.hasOwnProperty.call(settings, 'sqlOutboxRecovery')) {
66
+ settings.sqlOutboxRecovery = {
67
+ ...defaults.sqlOutboxRecovery,
68
+ enabled: settings.outbox.enabled,
69
+ };
70
+ changed = true;
71
+ }
72
+ }
73
+ if (changed)
74
+ updates.set(backgroundPath, JSON.stringify(existing, null, 2) + '\n');
75
+ }
76
+ const path = 'secrets/declarations.ts', contents = current.get(path);
77
+ if (contents == null)
78
+ return updates;
79
+ const parse = (source) => {
80
+ const file = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);
81
+ const declarations = file.statements
82
+ .flatMap((statement) => ts.isVariableStatement(statement)
83
+ ? [...statement.declarationList.declarations]
84
+ : [])
85
+ .filter((declaration) => ts.isIdentifier(declaration.name) &&
86
+ declaration.name.text === 'SecretDefinitions');
87
+ let expression = declarations.length === 1 ? declarations[0].initializer : undefined;
88
+ while (expression &&
89
+ (ts.isAsExpression(expression) ||
90
+ ts.isSatisfiesExpression(expression) ||
91
+ ts.isParenthesizedExpression(expression)))
92
+ expression = expression.expression;
93
+ if (!expression ||
94
+ !ts.isObjectLiteralExpression(expression) ||
95
+ expression.properties.some((property) => !ts.isPropertyAssignment(property)))
96
+ throw new Error('SQL reconciliation requires a literal SecretDefinitions object without spreads. Preserve custom declarations and add the generated database credential explicitly; no files changed.');
97
+ return {
98
+ file,
99
+ object: expression,
100
+ properties: expression.properties.filter(ts.isPropertyAssignment),
101
+ };
102
+ };
103
+ const existing = parse(contents), desired = parse(target[path]);
104
+ const name = (property) => ts.isIdentifier(property.name) || ts.isStringLiteral(property.name)
105
+ ? property.name.text
106
+ : undefined;
107
+ // Compare syntax, not the printer's retained quote style or trailing commas.
108
+ // Formatting a seeded declaration must not turn an unchanged binding into a
109
+ // conflict. Preserve every expression/operator and literal value in the shape.
110
+ const shape = (node) => {
111
+ if (ts.isStringLiteral(node) ||
112
+ ts.isNumericLiteral(node) ||
113
+ ts.isIdentifier(node))
114
+ return [node.kind, node.text];
115
+ const children = [];
116
+ ts.forEachChild(node, (child) => {
117
+ children.push(shape(child));
118
+ });
119
+ return [node.kind, children.length ? children : node.getText()];
120
+ };
121
+ const additions = [];
122
+ const bindingShape = (property) => {
123
+ const value = property.initializer;
124
+ if (!ts.isObjectLiteralExpression(value))
125
+ return shape(property);
126
+ return value.properties
127
+ .filter((entry) => !ts.isPropertyAssignment(entry) || name(entry) !== 'rotation')
128
+ .map(shape);
129
+ };
130
+ for (const property of desired.properties.filter((entry) => name(entry)?.endsWith('PrimaryDatabaseCredential'))) {
131
+ const matches = existing.properties.filter((entry) => name(entry) === name(property));
132
+ if (matches.length > 1 ||
133
+ (matches.length === 1 &&
134
+ !(0, node_util_1.isDeepStrictEqual)(bindingShape(matches[0]), bindingShape(property))))
135
+ throw new Error(`SQL reconciliation conflict at ${path}: ${name(property)}. No files changed.`);
136
+ if (!matches.length)
137
+ additions.push(property.getText(desired.file));
138
+ }
139
+ if (additions.length) {
140
+ // Use AST offsets so unrelated declarations, comments and feature code remain byte-for-byte intact.
141
+ const end = existing.object.end - 1;
142
+ const comma = existing.properties.length && !existing.object.properties.hasTrailingComma
143
+ ? ','
144
+ : '';
145
+ let result = contents.slice(0, end) +
146
+ comma +
147
+ '\n' +
148
+ additions.join(',\n') +
149
+ ',\n' +
150
+ contents.slice(end);
151
+ const imports = existing.file.statements.filter(ts.isImportDeclaration);
152
+ const schemaImport = imports.some((entry) => ts.isStringLiteral(entry.moduleSpecifier) &&
153
+ entry.moduleSpecifier.text === '@empire-builder-kit/runtime/database' &&
154
+ entry.importClause?.namedBindings &&
155
+ ts.isNamedImports(entry.importClause.namedBindings) &&
156
+ entry.importClause.namedBindings.elements.some((binding) => binding.name.text === 'databaseCredentialSecretSchema' &&
157
+ (!binding.propertyName ||
158
+ binding.propertyName.text === 'databaseCredentialSecretSchema')));
159
+ if (!schemaImport) {
160
+ if (/\bdatabaseCredentialSecretSchema\b/.test(contents))
161
+ throw new Error(`SQL reconciliation conflict at ${path}: databaseCredentialSecretSchema is already bound. No files changed.`);
162
+ result =
163
+ "import { databaseCredentialSecretSchema } from '@empire-builder-kit/runtime/database';\n" +
164
+ result;
165
+ }
166
+ updates.set(path, result);
167
+ }
168
+ return updates;
169
+ }
170
+ //# sourceMappingURL=sql-seeded-reconciliation.js.map
@@ -85,5 +85,7 @@ export declare function preserveCompositionRegions(current: string, target: stri
85
85
  export declare function reemitRecordedNativeRuntimeCompositions(files: Readonly<Record<string, string>>, ownership: Pick<GeneratedOwnershipRecord, 'compositions'>): Readonly<Record<string, string>>;
86
86
  export declare function inspectWorkspaceSstVersion(tree: Tree, packageJson: WorkspacePackageJson): WorkspaceSstVersionState;
87
87
  export declare function createUpgradeReport(currentFiles: ReadonlyMap<string, string | null>, currentOwnership: OwnershipPaths, targetFiles: ReadonlyMap<string, string>, targetOwnership: OwnershipPaths, jsonOwnershipChanges?: JsonOwnershipChanges): UpgradeReport;
88
+ /** Internal paired-generation path: the ordinary ownership-preserving upgrader owns Foundation writes. */
89
+ export declare function upgradeFoundationForRequirements(tree: Tree, requirements: readonly unknown[], apply: boolean, output?: UpgradeGeneratorLogger): Promise<void>;
88
90
  export declare function upgradeGenerator(tree: Tree, options: UpgradeGeneratorSchema, output?: UpgradeGeneratorLogger, executionOptions?: UpgradeGeneratorExecutionOptions): Promise<GeneratorCallback | void>;
89
91
  export default upgradeGenerator;
@@ -6,10 +6,13 @@ exports.preserveCompositionRegions = preserveCompositionRegions;
6
6
  exports.reemitRecordedNativeRuntimeCompositions = reemitRecordedNativeRuntimeCompositions;
7
7
  exports.inspectWorkspaceSstVersion = inspectWorkspaceSstVersion;
8
8
  exports.createUpgradeReport = createUpgradeReport;
9
+ exports.upgradeFoundationForRequirements = upgradeFoundationForRequirements;
9
10
  exports.upgradeGenerator = upgradeGenerator;
10
11
  const deterministic_order_js_1 = require("../../deterministic-order.js");
11
12
  const capacity_migration_js_1 = require("../../repository-policy/capacity-migration.js");
12
13
  const dependency_overrides_js_1 = require("../preset/dependency-overrides.js");
14
+ const workspace_files_adopter_skills_js_1 = require("../preset/workspace-files-adopter-skills.js");
15
+ const sql_seeded_reconciliation_js_1 = require("./sql-seeded-reconciliation.js");
13
16
  const devkit_1 = require("@nx/devkit");
14
17
  const node_buffer_1 = require("node:buffer");
15
18
  const node_crypto_1 = require("node:crypto");
@@ -20,13 +23,17 @@ const yaml_1 = require("yaml");
20
23
  const index_js_1 = require("../../blueprints/index.js");
21
24
  const index_js_2 = require("../../api-contract/index.js");
22
25
  const index_js_3 = require("../../foundation/index.js");
26
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
27
+ const persistence_contract_js_1 = require("../slice/persistence-contract.js");
23
28
  const index_js_4 = require("../../ownership/index.js");
24
29
  const function_js_1 = require("../function/function.js");
30
+ const logging_registry_js_1 = require("../logging-registry.js");
25
31
  const feature_registry_js_1 = require("../feature-registry.js");
26
32
  const generator_js_1 = require("../preset/generator.js");
27
33
  const tool_versions_js_1 = require("../preset/tool-versions.js");
28
34
  const workspace_files_js_1 = require("../preset/workspace-files.js");
29
35
  const built_in_plan_js_1 = require("../slice/built-in-plan.js");
36
+ const data_policy_review_seed_js_1 = require("../slice/data-policy-review-seed.js");
30
37
  const workload_js_1 = require("../workload/workload.js");
31
38
  const formatting_js_1 = require("../formatting.js");
32
39
  const git_inspection_js_1 = require("../../developer-agent/git-inspection.js");
@@ -342,6 +349,7 @@ const SEEDED_RECONCILIATION = {
342
349
  category: 'reliability-operations',
343
350
  implications: [
344
351
  'alarm-registration',
352
+ 'database-capacity-dynamodb-table-and-pending-events-throttle-metrics',
345
353
  'diagnostic-authority',
346
354
  'incident-remediation',
347
355
  ],
@@ -407,11 +415,18 @@ function developerAgentAgentsAppendix(renderedAgents) {
407
415
  return renderedAgents.slice(start + 1);
408
416
  }
409
417
  function planDeveloperAgentInstructionAppend(currentAgents, targetAgents) {
410
- if (currentAgents === null ||
411
- new RegExp(`(?:^|\\r?\\n)${DEVELOPER_AGENT_AGENTS_HEADING}(?:\\r?\\n|$)`).test(currentAgents)) {
418
+ if (currentAgents === null)
412
419
  return null;
420
+ const additions = [];
421
+ if (!/(?:^|\r?\n)## Bundled adopter skills(?:\r?\n|$)/u.test(currentAgents)) {
422
+ additions.push((0, workspace_files_adopter_skills_js_1.renderAdopterSkillIndex)());
413
423
  }
414
- const appendix = developerAgentAgentsAppendix(targetAgents);
424
+ if (!new RegExp(`(?:^|\\r?\\n)${DEVELOPER_AGENT_AGENTS_HEADING}(?:\\r?\\n|$)`).test(currentAgents)) {
425
+ additions.push(developerAgentAgentsAppendix(targetAgents));
426
+ }
427
+ if (additions.length === 0)
428
+ return null;
429
+ const appendix = additions.join('\n');
415
430
  const separator = currentAgents.length === 0
416
431
  ? ''
417
432
  : currentAgents.endsWith('\n\n')
@@ -1229,7 +1244,7 @@ function carryRetainedServiceAdapterAuthority(targetFiles, owner) {
1229
1244
  'managed-generated-service-runtime-endpoint';
1230
1245
  return { ...targetFiles, [path]: json(target) };
1231
1246
  }
1232
- async function upgradeFoundation(tree, options, packageJson, output) {
1247
+ async function upgradeFoundation(tree, options, packageJson, output, foundationRequirements = []) {
1233
1248
  if (options.blueprint !== undefined || options.inputs !== undefined) {
1234
1249
  throw new Error('Standard Foundation upgrades do not accept Blueprint or input options.');
1235
1250
  }
@@ -1245,6 +1260,8 @@ async function upgradeFoundation(tree, options, packageJson, output) {
1245
1260
  const deployment = readRepositoryDeploymentRenderingOptions(tree);
1246
1261
  const renderedTarget = (0, workspace_files_js_1.renderFoundationFilePlan)({
1247
1262
  ...deployment,
1263
+ foundationRequirements,
1264
+ foundationDescriptor: readJson(tree, node_path_1.posix.join(root, 'contracts/foundation.json'), 'Existing Foundation resource declaration'),
1248
1265
  frameworkVersion: (0, generator_js_1.frameworkPackageVersion)(),
1249
1266
  name: packageJson.name,
1250
1267
  });
@@ -1298,6 +1315,24 @@ async function upgradeFoundation(tree, options, packageJson, output) {
1298
1315
  // that skip workspace formatting. Canonicalize before binding those bytes.
1299
1316
  await formatOwnershipRecord(tree, node_path_1.posix.join(root, '.ebk/ownership.json'), 'Standard Foundation');
1300
1317
  }
1318
+ /** Internal paired-generation path: the ordinary ownership-preserving upgrader owns Foundation writes. */
1319
+ async function upgradeFoundationForRequirements(tree, requirements, apply, output = devkit_1.logger) {
1320
+ requireUpgradePrerequisites(tree, 'product-slice');
1321
+ const capabilityPlan = (0, capability_plan_js_1.planFoundationCapabilities)({
1322
+ current: readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor'),
1323
+ requirements,
1324
+ });
1325
+ if (capabilityPlan.migratedFromContract !== null)
1326
+ throw new Error('Paired generation cannot migrate a prerelease Foundation contract. Report and apply the explicit Foundation upgrade first; no files changed.');
1327
+ // A Slice generator is not an implicit Foundation version/formatting upgrade.
1328
+ if (capabilityPlan.added.length === 0)
1329
+ return;
1330
+ const policy = (0, tree_policy_js_1.readRepositoryOperatingPolicyFromTree)(tree);
1331
+ if (tree.exists('packages/foundation/contracts/costs.json'))
1332
+ (0, capacity_migration_js_1.assertCapacityMigrationChoice)(policy.productionFoundation.profile, readJson(tree, 'packages/foundation/contracts/costs.json', 'Foundation cost contract'));
1333
+ const packageJson = readJson(tree, 'package.json', 'Workspace package.json');
1334
+ await upgradeFoundation(tree, { name: 'foundation', apply, skipFormat: true, skipInstall: true }, packageJson, output, requirements);
1335
+ }
1301
1336
  async function upgradeWorkspace(tree, options, packageJson, output) {
1302
1337
  if (options.blueprint !== undefined || options.inputs !== undefined) {
1303
1338
  throw new Error('Workspace upgrades do not accept Blueprint or input options.');
@@ -1397,6 +1432,30 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
1397
1432
  }
1398
1433
  if (name === 'foundation') {
1399
1434
  requireUpgradePrerequisites(tree, 'foundation');
1435
+ // Refuse an unsupported core transition before changing shared contracts.
1436
+ // This is a preflight, not a prerelease migration or compatibility layer.
1437
+ for (const slice of tree.children('packages')) {
1438
+ const root = node_path_1.posix.join('packages', slice);
1439
+ const path = node_path_1.posix.join(root, '.ebk/ownership.json');
1440
+ if (slice === 'foundation' || !tree.exists(path))
1441
+ continue;
1442
+ const recorded = readJson(tree, path, 'Product Slice ownership metadata');
1443
+ if (recorded?.blueprint
1444
+ ?.name !== index_js_1.BUILTIN_BLUEPRINT_NAME)
1445
+ continue;
1446
+ const parsed = (0, index_js_4.validateGeneratedOwnershipRecord)(recorded);
1447
+ if (!parsed.valid)
1448
+ throw new Error(ownershipValidationMessage('Product Slice ownership metadata', parsed.issues));
1449
+ (0, persistence_contract_js_1.standardPersistenceContract)({
1450
+ inputs: parsed.value.inputs,
1451
+ existingStandardRequirement: parsed.value.foundation,
1452
+ ...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
1453
+ ? {
1454
+ current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
1455
+ }
1456
+ : {}),
1457
+ });
1458
+ }
1400
1459
  return upgradeFoundation(tree, options, packageJson, output);
1401
1460
  }
1402
1461
  requireUpgradePrerequisites(tree, 'product-slice');
@@ -1425,13 +1484,39 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
1425
1484
  if (serviceAdapterOwner !== null && blueprint.source !== 'built-in') {
1426
1485
  throw new Error('External Blueprint upgrades cannot retain the managed generated Service adapter authority; remove or explicitly migrate the elected adapter before changing Blueprint authority.');
1427
1486
  }
1428
- const inputResult = (0, index_js_1.validateBlueprintInputs)(blueprint.inputSchema, parseInputs(options.inputs, currentOwnership.inputs));
1487
+ const requestedInputs = parseInputs(options.inputs, currentOwnership.inputs);
1488
+ if (blueprint.source === 'built-in') {
1489
+ // Refuse old framework cores before any paired Foundation/Slice changes.
1490
+ // Keeping the old database safe does not imply supporting its old runtime.
1491
+ (0, persistence_contract_js_1.standardPersistenceContract)({
1492
+ inputs: requestedInputs,
1493
+ existingStandardRequirement: currentOwnership.foundation,
1494
+ ...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
1495
+ ? {
1496
+ current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
1497
+ }
1498
+ : {}),
1499
+ });
1500
+ if (currentOwnership.foundation.capabilities.includes('postgres') &&
1501
+ !(0, capability_plan_js_1.readStandardSqlDeclaration)(requestedInputs))
1502
+ throw new Error('SQL cannot be retired through an upgrade. Keep the explicit inputs.sql declaration; database retirement requires a separate reviewed operation.');
1503
+ }
1504
+ const inputResult = (0, index_js_1.validateBlueprintInputs)(blueprint.inputSchema, requestedInputs);
1429
1505
  if (!inputResult.valid) {
1430
1506
  throw new Error(`Blueprint inputs are invalid:\n${inputResult.issues
1431
1507
  .map((issue) => `- ${issue.path}: ${issue.message}`)
1432
1508
  .join('\n')}`);
1433
1509
  }
1434
- const compatibility = (0, index_js_3.validateFoundationCompatibility)(blueprint.manifest.foundation, readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor'));
1510
+ const requiredFoundation = blueprint.source === 'built-in'
1511
+ ? (0, capability_plan_js_1.standardPersistenceRequirement)(inputResult.value, currentOwnership.compositions)
1512
+ : blueprint.manifest.foundation;
1513
+ const existingFoundation = readJson(tree, 'packages/foundation/contracts/foundation.json', 'Standard Foundation descriptor');
1514
+ const compatibility = (0, index_js_3.validateFoundationCompatibility)(requiredFoundation, blueprint.source === 'built-in'
1515
+ ? (0, capability_plan_js_1.planFoundationCapabilities)({
1516
+ current: existingFoundation,
1517
+ requirements: [requiredFoundation],
1518
+ }).descriptor
1519
+ : existingFoundation);
1435
1520
  if (!compatibility.valid) {
1436
1521
  throw new Error(`Standard Foundation is incompatible with the target Blueprint:\n${compatibility.issues
1437
1522
  .map((issue) => `- ${issue.path}: ${issue.message}`)
@@ -1449,7 +1534,15 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
1449
1534
  const runtimeVersion = packageJson.dependencies?.['@empire-builder-kit/runtime'];
1450
1535
  if (!runtimeVersion)
1451
1536
  throw new Error('Workspace must depend on @empire-builder-kit/runtime.');
1452
- const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, undefined, deployment.deploymentProfile);
1537
+ const plan = (0, built_in_plan_js_1.createBuiltInSlicePlan)(name, scope, runtimeVersion, blueprint.manifest, inputResult.value, (0, data_policy_review_seed_js_1.dataPolicyReviewSeed)(tree, root), deployment.deploymentProfile, {
1538
+ existingStandardRequirement: currentOwnership.foundation,
1539
+ compositions: currentOwnership.compositions,
1540
+ ...(tree.exists(node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH))
1541
+ ? {
1542
+ current: readJson(tree, node_path_1.posix.join(root, persistence_contract_js_1.STANDARD_PERSISTENCE_PATH), 'Standard persistence declaration'),
1543
+ }
1544
+ : {}),
1545
+ });
1453
1546
  targetFiles = Object.fromEntries(Object.entries(plan.files).map(([path, contents]) => {
1454
1547
  const current = tree.read(node_path_1.posix.join(root, path), 'utf8');
1455
1548
  return [
@@ -1608,23 +1701,54 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
1608
1701
  ]));
1609
1702
  let mergedTarget = mergeStructuredTargetFiles(currentFiles, currentOwnership, new Map(Object.entries(targetFiles)), targetOwnership);
1610
1703
  mergedTarget = await formatMergedManagedJsonFiles(tree, root, mergedTarget, targetOwnership);
1704
+ const sqlAppends = blueprint.source === 'built-in' &&
1705
+ (0, capability_plan_js_1.readStandardSqlDeclaration)(inputResult.value)
1706
+ ? (0, sql_seeded_reconciliation_js_1.planSqlSeededReconciliation)(currentFiles, targetFiles)
1707
+ : new Map();
1708
+ for (const [path, contents] of sqlAppends) {
1709
+ const workspacePath = node_path_1.posix.join(root, path);
1710
+ mergedTarget.files.set(path, await (0, formatting_js_1.formatTreeContentsToFixedPoint)(contents, await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, (0, formatting_js_1.changedTreePrettierOptions)(tree)), workspacePath));
1711
+ }
1611
1712
  requireTargetCompositionFeatures(mergedTarget.files, targetOwnership);
1713
+ const loggingAppend = blueprint.source === 'built-in'
1714
+ ? (0, logging_registry_js_1.planRequiredSliceLoggingComponents)(currentFiles.get(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH) ?? null, targetFiles[logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH])
1715
+ : null;
1716
+ if (loggingAppend !== null) {
1717
+ const workspacePath = node_path_1.posix.join(root, logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
1718
+ const formatting = await (0, formatting_js_1.effectiveTreePrettierOptions)(tree, workspacePath, (0, formatting_js_1.changedTreePrettierOptions)(tree));
1719
+ mergedTarget.files.set(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH, await (0, formatting_js_1.formatTreeContentsToFixedPoint)(loggingAppend, formatting, workspacePath));
1720
+ }
1612
1721
  const report = createUpgradeReport(currentFiles, currentOwnership, mergedTarget.files, targetOwnership, mergedTarget);
1722
+ if (loggingAppend !== null) {
1723
+ report.preservedSeeded = report.preservedSeeded.filter((path) => path !== logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
1724
+ report.appendedSeeded.push(logging_registry_js_1.SLICE_LOGGING_REGISTRY_PATH);
1725
+ }
1726
+ for (const path of sqlAppends.keys()) {
1727
+ report.preservedSeeded = report.preservedSeeded.filter((entry) => entry !== path);
1728
+ report.appendedSeeded.push(path);
1729
+ }
1730
+ report.appendedSeeded.sort(deterministic_order_js_1.compareUtf16);
1613
1731
  output.info(`[ebk-upgrade] ${name} ${currentOwnership.blueprint.name}@${currentOwnership.blueprint.version} -> ${blueprint.manifest.name}@${blueprint.manifest.version}\n${JSON.stringify(report, null, 2)}`);
1614
- if (!options.apply)
1732
+ if (!options.apply) {
1733
+ if (blueprint.source === 'built-in')
1734
+ await upgradeFoundationForRequirements(tree, [requiredFoundation], false, output);
1615
1735
  return;
1736
+ }
1616
1737
  if (report.incompatibleSeededMigrations.length > 0) {
1617
1738
  throw new Error(seededMigrationUpgradeMessage('Product Slice', report));
1618
1739
  }
1619
1740
  if (report.conflicting.length > 0) {
1620
1741
  throw new Error(upgradeConflictMessage('Product Slice', report));
1621
1742
  }
1743
+ if (blueprint.source === 'built-in')
1744
+ await upgradeFoundationForRequirements(tree, [requiredFoundation], true, output);
1622
1745
  for (const path of report.obsolete)
1623
1746
  tree.delete(node_path_1.posix.join(root, path));
1624
1747
  const writePaths = new Set([
1625
1748
  ...report.changed,
1626
1749
  ...report.missing,
1627
1750
  ...report.addedSeeded,
1751
+ ...report.appendedSeeded,
1628
1752
  '.ebk/ownership.json',
1629
1753
  ]);
1630
1754
  for (const path of writePaths) {
@@ -1657,7 +1781,10 @@ async function executeUpgradeGenerator(tree, options, output = devkit_1.logger,
1657
1781
  async function upgradeGenerator(tree, options, output = devkit_1.logger, executionOptions = {}) {
1658
1782
  const previewFile = await requireDeveloperAgentPreviewBinding(tree, options, executionOptions);
1659
1783
  if (!previewFile) {
1660
- return executeUpgradeGenerator(tree, options, output, executionOptions);
1784
+ const deferred = new preview_changes_js_1.DeferredDeveloperAgentTree(tree);
1785
+ const install = await executeUpgradeGenerator(deferred, options, output, executionOptions);
1786
+ deferred.apply();
1787
+ return install;
1661
1788
  }
1662
1789
  const upgradeOptions = { ...options };
1663
1790
  delete upgradeOptions.developerAgentPreview;
@@ -6,6 +6,10 @@ exports.workloadGenerator = workloadGenerator;
6
6
  const deterministic_order_js_1 = require("../../deterministic-order.js");
7
7
  const node_path_1 = require("node:path");
8
8
  const index_js_1 = require("../../ownership/index.js");
9
+ const capability_plan_js_1 = require("../../foundation/capability-plan.js");
10
+ const preview_changes_js_1 = require("../../developer-agent/preview-changes.js");
11
+ const upgrade_js_1 = require("../upgrade/upgrade.js");
12
+ const built_in_plan_foundation_files_js_1 = require("../slice/built-in-plan-foundation-files.js");
9
13
  const feature_registry_js_1 = require("../feature-registry.js");
10
14
  const formatting_js_1 = require("../formatting.js");
11
15
  const logging_registry_js_1 = require("../logging-registry.js");
@@ -1030,7 +1034,7 @@ describe('${workload} ${kind} outage behavior', () => {
1030
1034
  project: `@${slice}/${kind}-${workload}`,
1031
1035
  };
1032
1036
  }
1033
- async function workloadGenerator(tree, options, kind) {
1037
+ async function executeWorkloadGenerator(tree, options, kind) {
1034
1038
  const slice = name(options.slice, 'Product Slice name');
1035
1039
  const workload = name(options.name, kind === 'service' ? 'Service name' : 'Job name');
1036
1040
  const requestedFeature = name(options.feature, 'Feature');
@@ -1091,6 +1095,26 @@ async function workloadGenerator(tree, options, kind) {
1091
1095
  if (!tree.exists(productPath)) {
1092
1096
  throw new Error(`${slice} is not an EBK v1 Product Slice.`);
1093
1097
  }
1098
+ const ownership = (0, index_js_1.validateGeneratedOwnershipRecord)(JSON.parse(tree.read(node_path_1.posix.join(sliceRoot, '.ebk/ownership.json'), 'utf8') ?? 'null'));
1099
+ if (!ownership.valid)
1100
+ throw new Error('Product Slice ownership is invalid before workload composition.');
1101
+ const foundationPath = node_path_1.posix.join(sliceRoot, 'infra/foundation.ts');
1102
+ const foundationSource = tree.read(foundationPath, 'utf8');
1103
+ const foundationOwner = ownership.value.paths.find(({ path }) => path === 'infra/foundation.ts');
1104
+ if (foundationSource === null ||
1105
+ foundationOwner?.mode !== 'managed' ||
1106
+ (0, index_js_1.hashOwnedContent)(foundationSource, foundationOwner) !==
1107
+ foundationOwner.sha256)
1108
+ throw new Error('Product Slice Foundation bindings have managed drift; reconcile ownership before workload generation.');
1109
+ const foundationRequirement = {
1110
+ contract: ownership.value.foundation.contract,
1111
+ capabilities: (0, capability_plan_js_1.planFoundationCapabilities)({
1112
+ requirements: [
1113
+ ownership.value.foundation,
1114
+ { contract: '^2.0.0', capabilities: ['network', 'container-compute'] },
1115
+ ],
1116
+ }).descriptor.capabilities,
1117
+ };
1094
1118
  requireCompositionMarker(tree, topologyPath, '// <ebk:native-runtime-extensions:end>');
1095
1119
  requireCompositionMarker(tree, intentPath, '// <ebk:native-runtime-intent-contributions:end>');
1096
1120
  for (const marker of [
@@ -1124,6 +1148,7 @@ async function workloadGenerator(tree, options, kind) {
1124
1148
  const additionalPerformancePaths = performanceRegistration.additionalFiles.map(({ path }) => path);
1125
1149
  const installScope = {
1126
1150
  exactPaths: [
1151
+ foundationPath,
1127
1152
  productPath,
1128
1153
  topologyPath,
1129
1154
  intentPath,
@@ -1146,12 +1171,28 @@ async function workloadGenerator(tree, options, kind) {
1146
1171
  node_path_1.posix.join(sliceRoot, RELEASE_REGISTRY_PATH),
1147
1172
  node_path_1.posix.join(sliceRoot, '.ebk/ownership.json'),
1148
1173
  ],
1149
- roots: [root],
1174
+ roots: [root, 'packages/foundation'],
1150
1175
  };
1151
1176
  const installState = options.skipInstall
1152
1177
  ? undefined
1153
1178
  : (0, post_generation_install_js_1.capturePostGenerationInstallState)(tree, installScope, installOperation);
1154
1179
  const { factoryName } = plan;
1180
+ // Capability growth and its consuming bindings are a single deferred source
1181
+ // operation. A container needs network/compute, never an implicit database.
1182
+ await (0, upgrade_js_1.upgradeFoundationForRequirements)(tree, [foundationRequirement], true);
1183
+ if (!ownership.value.foundation.capabilities.includes('network')) {
1184
+ // Capability growth must update the API's consuming network binding in
1185
+ // this same generation, before a Service registers private ingress.
1186
+ const source = tree.read(productPath, 'utf8');
1187
+ if (source === null)
1188
+ throw new Error('Product Slice API source is missing; no workload files changed.');
1189
+ const anchor = ` const api = new sst.aws.ApiGatewayV2('${pascal(slice)}Api', {`;
1190
+ if (source.split(anchor).length !== 2)
1191
+ throw new Error('Product Slice API composition is not recognized; no workload files changed.');
1192
+ tree.write(productPath, source.replace(anchor, anchor +
1193
+ '\n ...(performanceDeploymentAuthority ? { vpc: foundation.vpc } : {}),'));
1194
+ }
1195
+ tree.write(foundationPath, (0, built_in_plan_foundation_files_js_1.renderSliceFoundationFiles)(slice, pascal(slice), foundationRequirement.capabilities)['infra/foundation.ts']);
1155
1196
  const infraRelative = `../${plural}/${workload}/infra.js`;
1156
1197
  for (const [path, contents] of Object.entries(plan.files)) {
1157
1198
  tree.write(node_path_1.posix.join(sliceRoot, path), contents);
@@ -1219,8 +1260,10 @@ ${kind === 'service' && performanceRegistration.ownsProtectedLoadAdapter
1219
1260
  }
1220
1261
  (0, index_js_1.recordCompositionOwnership)(tree, {
1221
1262
  compositions: [{ feature, kind, name: workload }],
1263
+ foundation: foundationRequirement,
1222
1264
  paths: [
1223
1265
  ...plan.paths,
1266
+ { path: 'infra/foundation.ts' },
1224
1267
  { path: 'infra/product.ts' },
1225
1268
  { path: 'infra/native-runtime-authority/topology.ts' },
1226
1269
  { path: 'infra/native-runtime-authority/effective-intent.ts' },
@@ -1246,4 +1289,10 @@ ${kind === 'service' && performanceRegistration.ownsProtectedLoadAdapter
1246
1289
  }
1247
1290
  return (0, post_generation_install_js_1.createPostGenerationInstallCallback)(tree, installState, installScope, installOperation);
1248
1291
  }
1292
+ async function workloadGenerator(tree, options, kind) {
1293
+ const deferred = new preview_changes_js_1.DeferredDeveloperAgentTree(tree);
1294
+ const install = await executeWorkloadGenerator(deferred, options, kind);
1295
+ deferred.apply();
1296
+ return install;
1297
+ }
1249
1298
  //# sourceMappingURL=workload.js.map