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

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 (791) hide show
  1. package/README.md +18 -0
  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.js +21 -9
  16. package/src/blueprints/manifest.d.ts +1 -1
  17. package/src/blueprints/resolver.js +28 -15
  18. package/src/cli/bootstrap.d.ts +1 -1
  19. package/src/cli/deploy-runtime.d.ts +6 -0
  20. package/src/cli/deploy-runtime.js +58 -0
  21. package/src/cli/dev-command.d.ts +16 -4
  22. package/src/cli/dev-command.js +63 -0
  23. package/src/cli/main.d.ts +9 -1
  24. package/src/cli/main.js +139 -20
  25. package/src/cli/output.d.ts +1 -1
  26. package/src/cli/output.js +1 -1
  27. package/src/developer-agent/context.js +41 -9
  28. package/src/developer-agent/generator-planning.js +20 -6
  29. package/src/developer-agent/git-inspection.d.ts +6 -2
  30. package/src/developer-agent/git-inspection.js +78 -6
  31. package/src/developer-agent/model.d.ts +5 -3
  32. package/src/developer-agent/model.js +4 -4
  33. package/src/developer-agent/operation-registry.d.ts +5 -0
  34. package/src/developer-agent/operation-registry.js +286 -40
  35. package/src/developer-agent/planning.js +16 -13
  36. package/src/developer-agent/preview-changes.d.ts +2 -0
  37. package/src/developer-agent/preview-changes.js +14 -2
  38. package/src/developer-agent/preview-source.js +3 -0
  39. package/src/developer-agent/validation.js +25 -9
  40. package/src/developer-agent/workspace-inspection.js +60 -5
  41. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  42. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  43. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  44. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  45. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  46. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  47. package/src/executors/dev-task-cleanup/schema.json +9 -0
  48. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  49. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  50. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  51. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  52. package/src/executors/fleet/fleet.js +1 -1
  53. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  54. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  55. package/src/executors/foundation-preflight/schema.json +5 -0
  56. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  57. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  58. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  59. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  60. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  61. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  62. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  63. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  64. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  65. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  66. package/src/executors/github-bootstrap/schema.json +7 -1
  67. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  68. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  69. package/src/executors/infrastructure-plan/schema.json +12 -52
  70. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  71. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  72. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  73. package/src/executors/local-deploy/local-approval.js +39 -0
  74. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  75. package/src/executors/local-deploy/local-deploy.js +1404 -0
  76. package/src/executors/local-deploy/schema.json +70 -0
  77. package/src/executors/refresh/refresh.js +2 -2
  78. package/src/executors/remove/remove.js +2 -2
  79. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  80. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  81. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  82. package/src/executors/secret-initialize/schema.json +42 -0
  83. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  84. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  85. package/src/executors/secret-metadata/schema.json +5 -0
  86. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  87. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  88. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  89. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  90. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  91. package/src/executors/sst-lifecycle/governed-native-operation.js +162 -0
  92. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  93. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  94. package/src/executors/sst-lifecycle/run-sst-command.d.ts +40 -6
  95. package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
  96. package/src/executors/sst-lifecycle/schema.json +8 -1
  97. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  98. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  99. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  100. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  101. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  102. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  103. package/src/executors/unlock/unlock.js +2 -2
  104. package/src/foundation/capability-plan.d.ts +43 -0
  105. package/src/foundation/capability-plan.js +168 -0
  106. package/src/foundation/discovery.d.ts +14 -11
  107. package/src/foundation/discovery.js +32 -6
  108. package/src/foundation/index.d.ts +4 -0
  109. package/src/foundation/index.js +11 -0
  110. package/src/foundation/local-database-contract.d.ts +20 -0
  111. package/src/foundation/local-database-contract.js +262 -13
  112. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  113. package/src/foundation/local-private-smoke-access.js +197 -0
  114. package/src/foundation/logging-preflight.js +1 -1
  115. package/src/foundation/logging.d.ts +3 -1
  116. package/src/foundation/logging.js +1 -1
  117. package/src/foundation/partial-state.d.ts +10 -0
  118. package/src/foundation/partial-state.js +21 -0
  119. package/src/foundation/preflight.js +37 -18
  120. package/src/foundation/private-smoke-access.d.ts +25 -0
  121. package/src/foundation/private-smoke-access.js +135 -0
  122. package/src/foundation/private-smoke-admission.d.ts +45 -0
  123. package/src/foundation/private-smoke-admission.js +180 -0
  124. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  125. package/src/foundation/private-smoke-control-plane.js +184 -0
  126. package/src/foundation/provision-database-bindings.d.ts +5 -0
  127. package/src/foundation/provision-database-bindings.js +41 -8
  128. package/src/foundation/provision-logical-database.js +15 -8
  129. package/src/foundation/requirements.d.ts +3 -3
  130. package/src/foundation/requirements.js +24 -12
  131. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  132. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  133. package/src/foundation/router-waf.d.ts +149 -0
  134. package/src/foundation/router-waf.js +809 -0
  135. package/src/foundation/stages.d.ts +1 -0
  136. package/src/foundation/stages.js +11 -0
  137. package/src/generators/blueprint/blueprint.d.ts +5 -0
  138. package/src/generators/blueprint/blueprint.js +102 -0
  139. package/src/generators/blueprint/files.d.ts +6 -0
  140. package/src/generators/blueprint/files.js +217 -0
  141. package/src/generators/blueprint/schema.d.ts +4 -0
  142. package/src/generators/blueprint/schema.json +18 -0
  143. package/src/generators/formatting.d.ts +8 -0
  144. package/src/generators/formatting.js +141 -0
  145. package/src/generators/function/function.js +38 -17
  146. package/src/generators/logging-registry.d.ts +2 -0
  147. package/src/generators/logging-registry.js +22 -0
  148. package/src/generators/post-generation-install.js +2 -2
  149. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  150. package/src/generators/preset/dependency-overrides.js +55 -0
  151. package/src/generators/preset/generator.js +43 -3
  152. package/src/generators/preset/schema.d.ts +10 -0
  153. package/src/generators/preset/schema.json +47 -0
  154. package/src/generators/preset/tool-versions.d.ts +2 -0
  155. package/src/generators/preset/tool-versions.js +3 -1
  156. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  157. package/src/generators/preset/workspace-files-adopter-skills.js +303 -0
  158. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  159. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  160. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  161. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  162. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  163. package/src/generators/preset/workspace-files-developer-agent.js +90 -28
  164. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  165. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  166. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  167. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  168. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  169. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  170. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  171. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  172. package/src/generators/preset/workspace-files-stage-authority.js +518 -0
  173. package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
  174. package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
  175. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  176. package/src/generators/preset/workspace-files-thin-docs.js +352 -0
  177. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  178. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  179. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  180. package/src/generators/preset/workspace-files.d.ts +18 -2
  181. package/src/generators/preset/workspace-files.js +1504 -608
  182. package/src/generators/repository-policy/repository-policy.js +235 -5
  183. package/src/generators/repository-policy/schema.d.ts +10 -0
  184. package/src/generators/repository-policy/schema.json +80 -4
  185. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  186. package/src/generators/repository-policy/tree-policy.js +25 -0
  187. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  188. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  189. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  190. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  191. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  192. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
  193. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  194. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  195. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  196. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  197. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  198. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  199. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  200. package/src/generators/slice/built-in-plan-data-files.js +163 -1196
  201. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  202. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  203. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  204. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  205. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  206. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  207. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
  208. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  209. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  210. package/src/generators/slice/built-in-plan-frontend-files.js +7 -3
  211. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  212. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -729
  213. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
  214. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  215. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  216. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  217. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  218. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  219. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  220. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  221. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  222. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  223. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  224. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  225. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  226. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  227. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  228. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  229. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  230. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  231. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  232. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  233. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  234. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  235. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  236. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  237. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  238. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  239. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  240. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  241. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  242. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  243. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  244. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  246. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  247. package/src/generators/slice/built-in-plan-metadata-files.js +157 -28
  248. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  249. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  250. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  251. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  252. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  253. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  254. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  255. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  257. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  258. package/src/generators/slice/built-in-plan-reliability-files.js +279 -43
  259. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  261. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  262. package/src/generators/slice/built-in-plan-shared.js +41 -19
  263. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  264. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  265. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  266. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  267. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  268. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  269. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  270. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  271. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  272. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  273. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  274. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  276. package/src/generators/slice/built-in-plan.d.ts +11 -1
  277. package/src/generators/slice/built-in-plan.js +80 -29
  278. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  279. package/src/generators/slice/data-policy-review-seed.js +22 -0
  280. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  281. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  282. package/src/generators/slice/local-source-identity.d.ts +2 -0
  283. package/src/generators/slice/local-source-identity.js +31 -0
  284. package/src/generators/slice/persistence-contract.d.ts +14 -0
  285. package/src/generators/slice/persistence-contract.js +32 -0
  286. package/src/generators/slice/slice.js +61 -50
  287. package/src/generators/sql/schema.d.ts +7 -0
  288. package/src/generators/sql/schema.json +38 -0
  289. package/src/generators/sql/sql.d.ts +6 -0
  290. package/src/generators/sql/sql.js +53 -0
  291. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  292. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  293. package/src/generators/upgrade/upgrade.d.ts +15 -1
  294. package/src/generators/upgrade/upgrade.js +435 -44
  295. package/src/generators/workload/performance-registration.d.ts +1 -0
  296. package/src/generators/workload/performance-registration.js +9 -11
  297. package/src/generators/workload/service-performance-files.d.ts +1 -0
  298. package/src/generators/workload/service-performance-files.js +27 -7
  299. package/src/generators/workload/workload.d.ts +1 -1
  300. package/src/generators/workload/workload.js +105 -29
  301. package/src/git-policy/action-pins.d.ts +5 -0
  302. package/src/git-policy/action-pins.js +5 -0
  303. package/src/git-policy/github-bootstrap.d.ts +39 -8
  304. package/src/git-policy/github-bootstrap.js +329 -175
  305. package/src/git-policy/routing.d.ts +7 -1
  306. package/src/git-policy/routing.js +62 -1
  307. package/src/index.d.ts +1 -0
  308. package/src/index.js +1 -0
  309. package/src/infrastructure-change/local-capability.d.ts +73 -0
  310. package/src/infrastructure-change/local-capability.js +114 -0
  311. package/src/infrastructure-change/model.d.ts +25 -4
  312. package/src/infrastructure-change/model.js +1 -0
  313. package/src/infrastructure-change/normalize.d.ts +4 -0
  314. package/src/infrastructure-change/normalize.js +47 -7
  315. package/src/infrastructure-change/plan.d.ts +30 -3
  316. package/src/infrastructure-change/plan.js +323 -13
  317. package/src/infrastructure-change/risk.d.ts +3 -1
  318. package/src/infrastructure-change/risk.js +96 -16
  319. package/src/local-dev/browser-verification.d.ts +37 -0
  320. package/src/local-dev/browser-verification.js +281 -0
  321. package/src/local-dev/contracts.d.ts +10 -1
  322. package/src/local-dev/contracts.js +114 -13
  323. package/src/local-dev/dev-command-core.js +24 -5
  324. package/src/local-dev/docker-credential-health.d.ts +14 -0
  325. package/src/local-dev/docker-credential-health.js +94 -0
  326. package/src/local-dev/environment-inspector.d.ts +7 -0
  327. package/src/local-dev/environment-inspector.js +42 -15
  328. package/src/local-dev/environment-state.js +2 -2
  329. package/src/local-dev/errors.d.ts +1 -1
  330. package/src/local-dev/errors.js +2 -0
  331. package/src/local-dev/fleet-client.js +2 -2
  332. package/src/local-dev/fleet-configuration.js +57 -25
  333. package/src/local-dev/fleet-inventory.js +46 -18
  334. package/src/local-dev/fleet-ipc.d.ts +7 -0
  335. package/src/local-dev/fleet-ipc.js +14 -2
  336. package/src/local-dev/fleet-launcher.d.ts +6 -0
  337. package/src/local-dev/fleet-launcher.js +14 -2
  338. package/src/local-dev/fleet-logs.js +50 -22
  339. package/src/local-dev/fleet-process.d.ts +20 -1
  340. package/src/local-dev/fleet-process.js +197 -41
  341. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  342. package/src/local-dev/fleet-runner-evidence.js +56 -0
  343. package/src/local-dev/fleet-runtime.js +268 -229
  344. package/src/local-dev/fleet-session.d.ts +2 -0
  345. package/src/local-dev/fleet-session.js +28 -11
  346. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  347. package/src/local-dev/fleet-state.d.ts +5 -2
  348. package/src/local-dev/fleet-state.js +25 -4
  349. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  350. package/src/local-dev/fleet-supervisor.js +66 -11
  351. package/src/local-dev/fleet-web-start.d.ts +12 -0
  352. package/src/local-dev/fleet-web-start.js +48 -0
  353. package/src/local-dev/identity.js +3 -14
  354. package/src/local-dev/index.d.ts +1 -0
  355. package/src/local-dev/index.js +1 -0
  356. package/src/local-dev/native-completion.d.ts +9 -0
  357. package/src/local-dev/native-completion.js +130 -0
  358. package/src/local-dev/nx-workspace.d.ts +4 -2
  359. package/src/local-dev/nx-workspace.js +11 -6
  360. package/src/local-dev/personal-stage.d.ts +4 -5
  361. package/src/local-dev/personal-stage.js +6 -54
  362. package/src/local-dev/port-claims.d.ts +13 -0
  363. package/src/local-dev/port-claims.js +46 -0
  364. package/src/local-dev/ports.d.ts +14 -2
  365. package/src/local-dev/ports.js +78 -3
  366. package/src/local-dev/private-state.d.ts +11 -0
  367. package/src/local-dev/private-state.js +146 -40
  368. package/src/local-dev/process-group.d.ts +4 -0
  369. package/src/local-dev/process-group.js +29 -0
  370. package/src/local-dev/process-identity.d.ts +8 -0
  371. package/src/local-dev/process-identity.js +31 -1
  372. package/src/local-dev/proxy.js +11 -12
  373. package/src/local-dev/runtime-paths.js +1 -1
  374. package/src/local-dev/slice-claim.js +1 -1
  375. package/src/local-dev/slice-runner.d.ts +15 -6
  376. package/src/local-dev/slice-runner.js +189 -54
  377. package/src/local-dev/task-attachment.d.ts +17 -0
  378. package/src/local-dev/task-attachment.js +73 -0
  379. package/src/local-dev/task-authority.d.ts +10 -0
  380. package/src/local-dev/task-authority.js +27 -0
  381. package/src/local-dev/task-identity.d.ts +33 -0
  382. package/src/local-dev/task-identity.js +418 -0
  383. package/src/local-dev/task-native-writer.d.ts +18 -0
  384. package/src/local-dev/task-native-writer.js +329 -0
  385. package/src/local-dev/tls.js +8 -2
  386. package/src/local-dev/web-launch.d.ts +9 -0
  387. package/src/local-dev/web-launch.js +130 -0
  388. package/src/ownership/composition.d.ts +2 -1
  389. package/src/ownership/composition.js +1 -0
  390. package/src/performance/cost-collection.d.ts +1 -1
  391. package/src/performance/cost-collection.js +4 -2
  392. package/src/performance/cost-controls.d.ts +8 -4
  393. package/src/performance/cost-controls.js +39 -28
  394. package/src/performance/evidence.d.ts +1 -1
  395. package/src/performance/evidence.js +5 -3
  396. package/src/performance/load-safety.js +5 -3
  397. package/src/performance/model.d.ts +4 -4
  398. package/src/performance/model.js +4 -5
  399. package/src/performance/scenario.d.ts +22 -0
  400. package/src/performance/scenario.js +100 -92
  401. package/src/release/index.d.ts +0 -2
  402. package/src/release/index.js +0 -2
  403. package/src/release/source-authority.d.ts +5 -5
  404. package/src/release/source-authority.js +141 -124
  405. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  406. package/src/repository-policy/aurora-preflight.js +4 -1
  407. package/src/repository-policy/capacity-migration.d.ts +3 -0
  408. package/src/repository-policy/capacity-migration.js +21 -0
  409. package/src/repository-policy/deployment-plan.d.ts +4 -1
  410. package/src/repository-policy/deployment-plan.js +9 -0
  411. package/src/repository-policy/foundation-profile.js +10 -1
  412. package/src/repository-policy/policy.d.ts +57 -3
  413. package/src/repository-policy/policy.js +497 -11
  414. package/src/schemas/blueprint-v1.json +5 -4
  415. package/src/schemas/foundation-requirement-v1.json +5 -4
  416. package/src/schemas/performance-policy-v1.json +3 -3
  417. package/src/schemas/repository-policy-v1.json +130 -6
  418. package/src/schemas/testing-evidence-result-v1.json +1 -1
  419. package/src/secrets/adapters.d.ts +7 -2
  420. package/src/secrets/adapters.js +34 -3
  421. package/src/secrets/aws-control-plane.d.ts +10 -1
  422. package/src/secrets/aws-control-plane.js +67 -0
  423. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  424. package/src/secrets/generated-aws-control-plane.js +259 -0
  425. package/src/secrets/metadata.js +38 -10
  426. package/src/secrets/model.d.ts +8 -1
  427. package/src/secrets/model.js +24 -3
  428. package/src/secrets/operator.d.ts +91 -3
  429. package/src/secrets/operator.js +463 -13
  430. package/src/secrets/registry.d.ts +2 -1
  431. package/src/secrets/registry.js +18 -1
  432. package/src/secrets/verification.js +9 -1
  433. package/src/secrets/workload-access.js +10 -2
  434. package/src/sst-environment-source-format.d.ts +6 -0
  435. package/src/sst-environment-source-format.js +199 -0
  436. package/src/supply-chain/action-pins.js +61 -7
  437. package/src/supply-chain/blueprint-trust-git.js +85 -24
  438. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  439. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  440. package/src/supply-chain/build-output-bounds.js +12 -0
  441. package/src/supply-chain/build-output.d.ts +7 -1
  442. package/src/supply-chain/build-output.js +177 -24
  443. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  444. package/src/supply-chain/ecr-scanning.js +11 -7
  445. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  446. package/src/supply-chain/ecs-deployed-image.js +6 -4
  447. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  448. package/src/supply-chain/generated-command.js +1 -0
  449. package/src/supply-chain/generated-container-release-command.js +1285 -124
  450. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  451. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  452. package/src/supply-chain/generated-files.js +25 -14
  453. package/src/supply-chain/generated-scanner-command.js +2 -1
  454. package/src/supply-chain/index.d.ts +1 -1
  455. package/src/supply-chain/index.js +2 -1
  456. package/src/supply-chain/sbom.d.ts +1 -1
  457. package/src/supply-chain/sbom.js +30 -5
  458. package/src/supply-chain/scanner.js +3 -0
  459. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  460. package/src/testing-evidence/fixture-scope.js +4 -2
  461. package/src/testing-evidence/result.d.ts +2 -1
  462. package/src/testing-evidence/result.js +18 -4
  463. package/src/workload-roles/account-baseline.d.ts +11 -0
  464. package/src/workload-roles/account-baseline.js +253 -16
  465. package/src/workload-roles/authority.d.ts +3 -1
  466. package/src/workload-roles/authority.js +48 -2
  467. package/src/workload-roles/aws-s3-state.js +27 -0
  468. package/src/workload-roles/boundary.d.ts +2 -1
  469. package/src/workload-roles/boundary.js +9 -2
  470. package/src/workload-roles/handler.js +52 -24
  471. package/src/workload-roles/index.d.ts +10 -17
  472. package/src/workload-roles/index.js +5 -18
  473. package/src/workload-roles/injection.js +1 -1
  474. package/src/workload-roles/provisioner.js +12 -4
  475. package/src/workload-roles/registration.d.ts +1 -0
  476. package/src/workload-roles/registration.js +5 -0
  477. package/src/workload-roles/stage-boundary.js +1 -1
  478. package/src/workload-roles/standard-slice.js +3 -3
  479. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  480. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  481. package/src/workspace-deployment/identity.d.ts +3 -0
  482. package/src/workspace-deployment/identity.js +22 -0
  483. package/src/workspace-deployment/index.d.ts +4 -0
  484. package/src/workspace-deployment/index.js +8 -0
  485. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  486. package/src/workspace-deployment/migration-evidence.js +83 -0
  487. package/src/workspace-deployment/migration.d.ts +27 -0
  488. package/src/workspace-deployment/migration.js +109 -0
  489. package/src/workspace-deployment/ownership.d.ts +81 -0
  490. package/src/workspace-deployment/ownership.js +381 -0
  491. package/src/api-contract/baseline-update.js.map +0 -1
  492. package/src/api-contract/compatibility.js.map +0 -1
  493. package/src/api-contract/contract-graph.js.map +0 -1
  494. package/src/api-contract/evidence.js.map +0 -1
  495. package/src/api-contract/index.js.map +0 -1
  496. package/src/api-contract/model.fixtures.d.ts +0 -2
  497. package/src/api-contract/model.fixtures.js +0 -81
  498. package/src/api-contract/model.fixtures.js.map +0 -1
  499. package/src/api-contract/model.js.map +0 -1
  500. package/src/api-contract/rollout.js.map +0 -1
  501. package/src/authorization/compatibility.js.map +0 -1
  502. package/src/authorization/index.js.map +0 -1
  503. package/src/blueprints/execution.js.map +0 -1
  504. package/src/blueprints/external-sandbox.js.map +0 -1
  505. package/src/blueprints/index.js.map +0 -1
  506. package/src/blueprints/inputs.js.map +0 -1
  507. package/src/blueprints/manifest.js.map +0 -1
  508. package/src/blueprints/resolver.js.map +0 -1
  509. package/src/blueprints/transitions.js.map +0 -1
  510. package/src/cli/agent-command.js.map +0 -1
  511. package/src/cli/agent-runtime.js.map +0 -1
  512. package/src/cli/blueprint-authority.js.map +0 -1
  513. package/src/cli/blueprint-command.js.map +0 -1
  514. package/src/cli/bootstrap.js.map +0 -1
  515. package/src/cli/dev-command.js.map +0 -1
  516. package/src/cli/main.js.map +0 -1
  517. package/src/cli/output.js.map +0 -1
  518. package/src/cli/personal-secret-runtime.js.map +0 -1
  519. package/src/cli/secret-terminal.js.map +0 -1
  520. package/src/container-images.js.map +0 -1
  521. package/src/data-lifecycle/index.js.map +0 -1
  522. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  523. package/src/data-lifecycle/model.fixtures.js +0 -244
  524. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  525. package/src/data-lifecycle/model.js.map +0 -1
  526. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  527. package/src/data-lifecycle/validation.js.map +0 -1
  528. package/src/database-retirement/contract.js.map +0 -1
  529. package/src/database-retirement/index.js.map +0 -1
  530. package/src/deterministic-order.js.map +0 -1
  531. package/src/developer-agent/context.js.map +0 -1
  532. package/src/developer-agent/generator-planning.js.map +0 -1
  533. package/src/developer-agent/generator-preview.js.map +0 -1
  534. package/src/developer-agent/git-inspection.js.map +0 -1
  535. package/src/developer-agent/handoff.js.map +0 -1
  536. package/src/developer-agent/index.js.map +0 -1
  537. package/src/developer-agent/model.js.map +0 -1
  538. package/src/developer-agent/operation-registry.js.map +0 -1
  539. package/src/developer-agent/ordering.js.map +0 -1
  540. package/src/developer-agent/planning.js.map +0 -1
  541. package/src/developer-agent/preview-changes.js.map +0 -1
  542. package/src/developer-agent/preview-source.js.map +0 -1
  543. package/src/developer-agent/validation.js.map +0 -1
  544. package/src/developer-agent/workspace-inspection.js.map +0 -1
  545. package/src/developer-agent/workspace-path.js.map +0 -1
  546. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  547. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  548. package/src/executors/deploy/deploy.js.map +0 -1
  549. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  550. package/src/executors/dev/dev.js.map +0 -1
  551. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  552. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  553. package/src/executors/developer-context/developer-context.js.map +0 -1
  554. package/src/executors/fleet/fleet.js.map +0 -1
  555. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  556. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  557. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  558. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  559. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  560. package/src/executors/refresh/refresh.js.map +0 -1
  561. package/src/executors/remove/remove.js.map +0 -1
  562. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  563. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  564. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  565. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  566. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  567. package/src/executors/unlock/unlock.js.map +0 -1
  568. package/src/executors/work-markers/work-markers.js.map +0 -1
  569. package/src/foundation/discovery.js.map +0 -1
  570. package/src/foundation/index.js.map +0 -1
  571. package/src/foundation/local-database-contract.js.map +0 -1
  572. package/src/foundation/logging-preflight.js.map +0 -1
  573. package/src/foundation/logging.js.map +0 -1
  574. package/src/foundation/preflight.js.map +0 -1
  575. package/src/foundation/provision-database-bindings.js.map +0 -1
  576. package/src/foundation/provision-logical-database.js.map +0 -1
  577. package/src/foundation/requirements.js.map +0 -1
  578. package/src/foundation/router-origin-proof.js.map +0 -1
  579. package/src/foundation/stages.js.map +0 -1
  580. package/src/frontend-security/index.js.map +0 -1
  581. package/src/frontend-security/security-headers.js.map +0 -1
  582. package/src/generators/feature-registry.js.map +0 -1
  583. package/src/generators/function/function.js.map +0 -1
  584. package/src/generators/job/job.js.map +0 -1
  585. package/src/generators/logging-registry.js.map +0 -1
  586. package/src/generators/post-generation-install.js.map +0 -1
  587. package/src/generators/preset/generator.js.map +0 -1
  588. package/src/generators/preset/tool-versions.js.map +0 -1
  589. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  590. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  591. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  592. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  593. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  594. package/src/generators/preset/workspace-files.js.map +0 -1
  595. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  596. package/src/generators/service/service.js.map +0 -1
  597. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  598. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  599. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  600. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  601. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  602. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  603. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  604. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  605. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  606. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  607. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  608. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  609. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  610. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan.js.map +0 -1
  629. package/src/generators/slice/slice.js.map +0 -1
  630. package/src/generators/upgrade/upgrade.js.map +0 -1
  631. package/src/generators/workload/frozen-container.js.map +0 -1
  632. package/src/generators/workload/performance-registration.js.map +0 -1
  633. package/src/generators/workload/reliability-registration.js.map +0 -1
  634. package/src/generators/workload/service-performance-files.js.map +0 -1
  635. package/src/generators/workload/workload.js.map +0 -1
  636. package/src/git-policy/action-pins.js.map +0 -1
  637. package/src/git-policy/github-bootstrap.js.map +0 -1
  638. package/src/git-policy/index.js.map +0 -1
  639. package/src/git-policy/routing.js.map +0 -1
  640. package/src/index.js.map +0 -1
  641. package/src/infrastructure-change/convergence.js.map +0 -1
  642. package/src/infrastructure-change/drift.js.map +0 -1
  643. package/src/infrastructure-change/index.js.map +0 -1
  644. package/src/infrastructure-change/model.js.map +0 -1
  645. package/src/infrastructure-change/normalize.js.map +0 -1
  646. package/src/infrastructure-change/plan.js.map +0 -1
  647. package/src/infrastructure-change/risk.js.map +0 -1
  648. package/src/infrastructure-change/summary.js.map +0 -1
  649. package/src/local-dev/context-discovery.js.map +0 -1
  650. package/src/local-dev/contract-validation.js.map +0 -1
  651. package/src/local-dev/contracts.js.map +0 -1
  652. package/src/local-dev/control-contract.js.map +0 -1
  653. package/src/local-dev/dev-command-core.js.map +0 -1
  654. package/src/local-dev/effects.js.map +0 -1
  655. package/src/local-dev/environment-inspector.js.map +0 -1
  656. package/src/local-dev/environment-state.js.map +0 -1
  657. package/src/local-dev/errors.js.map +0 -1
  658. package/src/local-dev/fleet-client.js.map +0 -1
  659. package/src/local-dev/fleet-configuration.js.map +0 -1
  660. package/src/local-dev/fleet-inventory.js.map +0 -1
  661. package/src/local-dev/fleet-ipc.js.map +0 -1
  662. package/src/local-dev/fleet-launcher.js.map +0 -1
  663. package/src/local-dev/fleet-lock.js.map +0 -1
  664. package/src/local-dev/fleet-logs.js.map +0 -1
  665. package/src/local-dev/fleet-process.js.map +0 -1
  666. package/src/local-dev/fleet-runtime.js.map +0 -1
  667. package/src/local-dev/fleet-session.js.map +0 -1
  668. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  669. package/src/local-dev/fleet-startup.js.map +0 -1
  670. package/src/local-dev/fleet-state.js.map +0 -1
  671. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  672. package/src/local-dev/fleet-supervisor.js.map +0 -1
  673. package/src/local-dev/gateway-daemon.js.map +0 -1
  674. package/src/local-dev/gateway.js.map +0 -1
  675. package/src/local-dev/identity.js.map +0 -1
  676. package/src/local-dev/index.js.map +0 -1
  677. package/src/local-dev/local-context.js.map +0 -1
  678. package/src/local-dev/nx-workspace.js.map +0 -1
  679. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  680. package/src/local-dev/personal-stage.js.map +0 -1
  681. package/src/local-dev/portless.js.map +0 -1
  682. package/src/local-dev/ports.js.map +0 -1
  683. package/src/local-dev/private-state.js.map +0 -1
  684. package/src/local-dev/process-identity.js.map +0 -1
  685. package/src/local-dev/proxy.js.map +0 -1
  686. package/src/local-dev/runtime-paths.js.map +0 -1
  687. package/src/local-dev/secret-slice-claim.js.map +0 -1
  688. package/src/local-dev/slice-claim.js.map +0 -1
  689. package/src/local-dev/slice-runner.js.map +0 -1
  690. package/src/local-dev/tls.js.map +0 -1
  691. package/src/ownership/composition.js.map +0 -1
  692. package/src/ownership/foundation-record.js.map +0 -1
  693. package/src/ownership/hash.js.map +0 -1
  694. package/src/ownership/index.js.map +0 -1
  695. package/src/ownership/json-ownership.js.map +0 -1
  696. package/src/ownership/record.js.map +0 -1
  697. package/src/ownership/workspace-record.js.map +0 -1
  698. package/src/performance/cost-collection.js.map +0 -1
  699. package/src/performance/cost-controls.js.map +0 -1
  700. package/src/performance/evidence.js.map +0 -1
  701. package/src/performance/index.js.map +0 -1
  702. package/src/performance/load-safety.js.map +0 -1
  703. package/src/performance/model.js.map +0 -1
  704. package/src/performance/pr-artifact-budget.js.map +0 -1
  705. package/src/performance/runner.js.map +0 -1
  706. package/src/performance/scenario-endpoint.js.map +0 -1
  707. package/src/performance/scenario.js.map +0 -1
  708. package/src/performance/test-fixtures.d.ts +0 -7
  709. package/src/performance/test-fixtures.js +0 -169
  710. package/src/performance/test-fixtures.js.map +0 -1
  711. package/src/performance/unit-cost.js.map +0 -1
  712. package/src/release/index.js.map +0 -1
  713. package/src/release/lifecycle.js.map +0 -1
  714. package/src/release/manifest.js.map +0 -1
  715. package/src/release/rollout.js.map +0 -1
  716. package/src/release/source-authority.js.map +0 -1
  717. package/src/repository-policy/aurora-preflight.js.map +0 -1
  718. package/src/repository-policy/deployment-plan.js.map +0 -1
  719. package/src/repository-policy/foundation-profile.js.map +0 -1
  720. package/src/repository-policy/index.js.map +0 -1
  721. package/src/repository-policy/policy.js.map +0 -1
  722. package/src/secrets/adapters.js.map +0 -1
  723. package/src/secrets/aws-control-plane.js.map +0 -1
  724. package/src/secrets/declaration-verification.js.map +0 -1
  725. package/src/secrets/guardrails.js.map +0 -1
  726. package/src/secrets/index.js.map +0 -1
  727. package/src/secrets/metadata.js.map +0 -1
  728. package/src/secrets/model.js.map +0 -1
  729. package/src/secrets/operator.js.map +0 -1
  730. package/src/secrets/permissions.js.map +0 -1
  731. package/src/secrets/personal-command.js.map +0 -1
  732. package/src/secrets/personal-ledger.js.map +0 -1
  733. package/src/secrets/registry.js.map +0 -1
  734. package/src/secrets/verification.js.map +0 -1
  735. package/src/secrets/workload-access.js.map +0 -1
  736. package/src/supply-chain/action-pins.js.map +0 -1
  737. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  738. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  739. package/src/supply-chain/blueprint-trust.js.map +0 -1
  740. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  741. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  742. package/src/supply-chain/build-output.js.map +0 -1
  743. package/src/supply-chain/common.js.map +0 -1
  744. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  745. package/src/supply-chain/container-release.js.map +0 -1
  746. package/src/supply-chain/ecr-applicability.js.map +0 -1
  747. package/src/supply-chain/ecr-scanning.js.map +0 -1
  748. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  749. package/src/supply-chain/errors.js.map +0 -1
  750. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  751. package/src/supply-chain/generated-command.js.map +0 -1
  752. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  753. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  754. package/src/supply-chain/generated-files.js.map +0 -1
  755. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  756. package/src/supply-chain/index.js.map +0 -1
  757. package/src/supply-chain/inventory.js.map +0 -1
  758. package/src/supply-chain/license-expression.js.map +0 -1
  759. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  760. package/src/supply-chain/policy.js.map +0 -1
  761. package/src/supply-chain/publication.js.map +0 -1
  762. package/src/supply-chain/sbom.js.map +0 -1
  763. package/src/supply-chain/scanner.js.map +0 -1
  764. package/src/supply-chain/vendored-source.js.map +0 -1
  765. package/src/testing-evidence/fixture-scope.js.map +0 -1
  766. package/src/testing-evidence/index.js.map +0 -1
  767. package/src/testing-evidence/quarantine.js.map +0 -1
  768. package/src/testing-evidence/result.js.map +0 -1
  769. package/src/testing-evidence/runner-adapter.js.map +0 -1
  770. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  771. package/src/validation.js.map +0 -1
  772. package/src/work-markers/index.js.map +0 -1
  773. package/src/work-markers/work-markers.js.map +0 -1
  774. package/src/workload-roles/account-baseline.js.map +0 -1
  775. package/src/workload-roles/authority.js.map +0 -1
  776. package/src/workload-roles/aws-adapter.js.map +0 -1
  777. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  778. package/src/workload-roles/aws-s3-state.js.map +0 -1
  779. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  780. package/src/workload-roles/boundary.js.map +0 -1
  781. package/src/workload-roles/convergence.js.map +0 -1
  782. package/src/workload-roles/effective-policy.js.map +0 -1
  783. package/src/workload-roles/handler.js.map +0 -1
  784. package/src/workload-roles/history.js.map +0 -1
  785. package/src/workload-roles/index.js.map +0 -1
  786. package/src/workload-roles/injection.js.map +0 -1
  787. package/src/workload-roles/manifest.js.map +0 -1
  788. package/src/workload-roles/provisioner.js.map +0 -1
  789. package/src/workload-roles/registration.js.map +0 -1
  790. package/src/workload-roles/stage-boundary.js.map +0 -1
  791. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderProductAuthorizationFiles = renderProductAuthorizationFiles;
4
4
  const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
5
+ const built_in_plan_authorization_storage_js_1 = require("./built-in-plan-authorization-storage.js");
5
6
  /** @internal */
6
7
  function renderProductAuthorizationFiles(name, pascalName) {
7
8
  const identifierPrefix = (0, built_in_plan_shared_js_1.lowerCamelIdentifier)(pascalName);
8
9
  return {
10
+ 'authorization/record-store.ts': (0, built_in_plan_authorization_storage_js_1.renderAuthorizationRecordStore)(),
9
11
  'authorization/policy.ts': `import {
10
12
  defineAuthorizationPolicy,
11
13
  defineCoarseAdmission,
@@ -267,14 +269,18 @@ export const ${identifierPrefix}AuthorizationPolicy =
267
269
  });
268
270
  `,
269
271
  'authorization/runtime.ts': `import { createHash } from 'node:crypto';
272
+ import { sliceAuthorizationGroupNames, sliceAuthorizationRoles } from './groups.mjs';
270
273
  import type { RuntimeHttpEvent } from '@empire-builder-kit/runtime';
271
274
  import {
272
275
  createBetterAuthConfig,
276
+ AuthError,
277
+ authErrorCodes,
273
278
  type Principal,
274
279
  } from '@empire-builder-kit/runtime/auth';
275
280
  import { createAuthGuard } from '@empire-builder-kit/runtime/auth-backend';
276
281
  import type { ApiAuthorizationInput } from '@empire-builder-kit/runtime/api-server';
277
282
  import type { ApiOperationDefinition } from '@empire-builder-kit/runtime/api-contract';
283
+ import { ${identifierPrefix}GetRecord, ${identifierPrefix}PutRecord } from '../api/contracts/protected.js';
278
284
  import {
279
285
  createAuthorizationEvaluator,
280
286
  composeAuthorizationPrincipal,
@@ -288,7 +294,8 @@ import {
288
294
  type AuthorizationPrincipal,
289
295
  } from '@empire-builder-kit/runtime/authorization';
290
296
  import { isBoundedSafeReference } from '@empire-builder-kit/runtime/safe-reference';
291
- import { withPrimaryDatabase } from '../database/runtime-client.js';
297
+ import { readAuthorizationRecord, writeAuthorizationAudit${', readRecordDeletionApproval'} } from './record-store.js';
298
+ import { ${''}create${pascalName}DelegationStore } from './store.js';
292
299
  import {
293
300
  ${identifierPrefix}AuthorizationActions,
294
301
  ${identifierPrefix}MachineScopes,
@@ -345,7 +352,7 @@ function getGuard() {
345
352
  acceptedClientIds: [webClientId, ...machineClientIds],
346
353
  },
347
354
  policy: {
348
- admin: { groups: ['${name}-admin'] },
355
+ admin: { groups: [sliceAuthorizationGroupNames(stage).admin] },
349
356
  agent: {
350
357
  scopes: Object.values(${identifierPrefix}MachineScopes(stage)),
351
358
  },
@@ -392,40 +399,16 @@ async function operationResource(
392
399
  'A record authorization action requires its validated record path.',
393
400
  );
394
401
  }
395
- const existing = await withPrimaryDatabase(
396
- { correlationId },
397
- 'api-database-records',
398
- async (client) => {
399
- const record = await client.query<{ ownerId: string }>(
400
- \`SELECT owner_id AS "ownerId"
401
- FROM records
402
- WHERE id = $1::uuid\`,
403
- [recordId],
404
- );
405
- if (record.rows[0]) return record.rows[0];
406
-
402
+ const existing = await (async () => {
403
+ const record = await readAuthorizationRecord(correlationId, recordId);
404
+ if (record) return record;
407
405
  const delegationId = candidate.path?.delegationId;
408
406
  if (
409
407
  operation.authorizationActions[0] ===
410
408
  ${identifierPrefix}AuthorizationActions.recordDelegationRevoke &&
411
409
  typeof delegationId === 'string'
412
410
  ) {
413
- const delegation = await client.query<{
414
- grantJson: {
415
- delegator?: { id?: unknown };
416
- resourceBoundary?: {
417
- kind?: unknown;
418
- resourceIds?: unknown;
419
- resourceType?: unknown;
420
- };
421
- };
422
- }>(
423
- \`SELECT grant_json AS "grantJson"
424
- FROM delegation_grants
425
- WHERE id = $1::uuid\`,
426
- [delegationId],
427
- );
428
- const grant = delegation.rows[0]?.grantJson;
411
+ const grant = await create${pascalName}DelegationStore(correlationId).read(delegationId);
429
412
  if (
430
413
  grant?.resourceBoundary?.kind === 'exact' &&
431
414
  grant.resourceBoundary.resourceType === 'record' &&
@@ -448,21 +431,11 @@ async function operationResource(
448
431
  ) {
449
432
  return undefined;
450
433
  }
451
- const approval = await client.query<{ ownerId: string }>(
452
- \`SELECT author_reference AS "ownerId"
453
- FROM approval_requests
454
- WHERE id = $1::uuid
455
- AND request_json->'resource'->>'id' = $2
456
- AND request_json->>'action' = $3\`,
457
- [
458
- approvalRequestId,
459
- recordId,
460
- ${identifierPrefix}AuthorizationActions.recordDelete,
461
- ],
462
- );
463
- return approval.rows[0];
464
- },
465
- );
434
+ const approval = await ${`readRecordDeletionApproval(approvalRequestId, recordId, ${identifierPrefix}AuthorizationActions.recordDelete)`};
435
+ return approval?.resource.id === recordId && approval.action === ${identifierPrefix}AuthorizationActions.recordDelete
436
+ ? { ownerId: approval.author.effectiveHumanId ?? approval.author.actorId }
437
+ : undefined;
438
+ })();
466
439
  const missingOwnerId =
467
440
  operation.authorizationActions[0] ===
468
441
  ${identifierPrefix}AuthorizationActions.recordWrite
@@ -526,39 +499,12 @@ async function persistAuthorizationDecision<
526
499
  stage: decisionInput.context.stage,
527
500
  timestamp: decisionInput.context.now,
528
501
  });
529
- await withPrimaryDatabase(
530
- { correlationId },
531
- workload,
532
- (client) =>
533
- client.query(
534
- \`INSERT INTO authorization_audit
535
- (action, approval_reference, authority_mode, correlation_id,
536
- decision, delegation_reference, policy_version,
537
- principal_kind, pseudonymous_subject_id, reason_category,
538
- resource_reference, resource_type, slice, stage, subject_type)
539
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,
540
- $13, $14, $15)\`,
541
- [
542
- audit.action,
543
- null,
544
- audit.authorityMode,
545
- audit.correlationId,
546
- audit.decision,
547
- decisionInput.principal.authority.mode === 'delegated'
548
- ? decisionInput.principal.authority.delegationId
549
- : null,
550
- audit.policyVersion,
551
- decisionInput.principal.kind,
552
- audit.pseudonymousSubjectId,
553
- audit.reasonCategory,
554
- audit.resourceReference ?? null,
555
- audit.resourceType,
556
- audit.slice,
557
- audit.stage,
558
- decisionInput.principal.actor.type,
559
- ],
560
- ),
561
- );
502
+ await writeAuthorizationAudit({
503
+ ...audit,
504
+ ...(decisionInput.principal.authority.mode === 'delegated'
505
+ ? { delegationReference: decisionInput.principal.authority.delegationId }
506
+ : {}),
507
+ }, workload);
562
508
  return audit;
563
509
  }
564
510
 
@@ -618,17 +564,24 @@ export async function authorize${pascalName}InternalOperation(input: {
618
564
  await evaluator.authorize(authorizationInput);
619
565
  }
620
566
 
621
- async function evaluate${pascalName}Operation<
567
+ type ${pascalName}AuthorizedOperationInput<Operation extends ApiOperationDefinition> = Pick<
568
+ ApiAuthorizationInput<Operation, RuntimeHttpEvent>,
569
+ 'context' | 'logger' | 'operation' | 'request'
570
+ >;
571
+
572
+ async function evaluate${pascalName}AuthenticatedOperation<
622
573
  Operation extends ApiOperationDefinition,
623
574
  >(
624
- input: ApiAuthorizationInput<Operation, RuntimeHttpEvent>,
575
+ input: ${pascalName}AuthorizedOperationInput<Operation>,
576
+ verified: Principal,
625
577
  ): Promise<{
626
578
  authenticated: Principal;
627
579
  principal: AuthorizationPrincipal;
628
580
  }> {
629
- const authenticated = await getGuard().authorize(input.event, {
630
- logger: input.logger,
631
- });
581
+ const authenticated = {
582
+ ...verified,
583
+ roles: sliceAuthorizationRoles(process.env.EBK_STAGE ?? '', verified.roles),
584
+ };
632
585
  const action = operationAction(input.operation);
633
586
  const recognizedMachineScopes = Object.values(
634
587
  ${identifierPrefix}MachineScopes(process.env.EBK_STAGE ?? ''),
@@ -696,6 +649,34 @@ async function evaluate${pascalName}Operation<
696
649
  return { authenticated, principal };
697
650
  }
698
651
 
652
+ async function evaluate${pascalName}Operation<
653
+ Operation extends ApiOperationDefinition,
654
+ >(input: ApiAuthorizationInput<Operation, RuntimeHttpEvent>): Promise<{
655
+ authenticated: Principal;
656
+ principal: AuthorizationPrincipal;
657
+ }> {
658
+ const verified = await getGuard().authorize(input.event, {
659
+ logger: input.logger,
660
+ });
661
+ return evaluate${pascalName}AuthenticatedOperation(input, verified);
662
+ }
663
+
664
+ /** Fleet-only native Next transport; Lambda continues using the same evaluator. */
665
+ export async function authorize${pascalName}FleetRecordOperation<
666
+ Operation extends ApiOperationDefinition,
667
+ >(input: ${pascalName}AuthorizedOperationInput<Operation> & { accessToken: string | null }): Promise<AuthorizationPrincipal> {
668
+ if (!Object.is(input.operation, ${identifierPrefix}GetRecord) &&
669
+ !Object.is(input.operation, ${identifierPrefix}PutRecord))
670
+ throw new Error('Fleet record authorization requires the exact generated record operation.');
671
+ const verified = await getGuard().authorizeToken(input.accessToken, { logger: input.logger });
672
+ const webClientId = process.env.AUTH_CLIENT_ID;
673
+ if (!webClientId || verified.audience !== webClientId ||
674
+ verified.session.subject.type !== 'user' || verified.kind !== 'customer')
675
+ throw new AuthError({ code: authErrorCodes.invalidToken,
676
+ message: 'The access token is not a task web-client human token.', status: 401 });
677
+ return (await evaluate${pascalName}AuthenticatedOperation(input, verified)).principal;
678
+ }
679
+
699
680
  export async function authorize${pascalName}Operation<
700
681
  Operation extends ApiOperationDefinition,
701
682
  >(
@@ -716,184 +697,7 @@ export async function authorize${pascalName}DataRightsOperation<
716
697
  return (await evaluate${pascalName}Operation(input)).principal;
717
698
  }
718
699
  `,
719
- 'authorization/store.ts': `import type {
720
- ApprovalRequest,
721
- DelegationGrant,
722
- DelegationStore,
723
- } from '@empire-builder-kit/runtime/authorization';
724
- import { withPrimaryDatabase } from '../database/runtime-client.js';
725
- import type { ${pascalName}AuthorizationAction } from './policy.js';
726
-
727
- /**
728
- * Slice-owned online delegation state. The opaque capability is never stored;
729
- * grantJson contains only the runtime's digest-bearing safe grant record.
730
- */
731
- export function create${pascalName}DelegationStore(
732
- correlationId: string,
733
- ): DelegationStore<${pascalName}AuthorizationAction> {
734
- return {
735
- async create(grant) {
736
- const result = await withPrimaryDatabase(
737
- { correlationId },
738
- 'api-database-records',
739
- (client) =>
740
- client.query(
741
- \`INSERT INTO delegation_grants
742
- (id, capability_digest, expires_at, grant_json, issued_at,
743
- policy_version, revision, status)
744
- VALUES ($1::uuid, $2, $3, $4::jsonb, $5, $6, $7, $8)
745
- ON CONFLICT (id) DO NOTHING\`,
746
- [
747
- grant.id,
748
- grant.capabilityDigest,
749
- grant.expiresAt,
750
- JSON.stringify(grant),
751
- grant.issuedAt,
752
- grant.issuedUnderPolicyVersion,
753
- grant.revision,
754
- grant.status,
755
- ],
756
- ),
757
- );
758
- return result.rowCount === 1;
759
- },
760
- async read(delegationId) {
761
- const result = await withPrimaryDatabase(
762
- { correlationId },
763
- 'api-database-records',
764
- (client) =>
765
- client.query<{ grantJson: DelegationGrant<${pascalName}AuthorizationAction> }>(
766
- \`SELECT grant_json AS "grantJson"
767
- FROM delegation_grants
768
- WHERE id = $1::uuid\`,
769
- [delegationId],
770
- ),
771
- );
772
- return result.rows[0]?.grantJson;
773
- },
774
- async write(delegationId, expectedRevision, grant) {
775
- const result = await withPrimaryDatabase(
776
- { correlationId },
777
- 'api-database-records',
778
- (client) =>
779
- client.query(
780
- \`UPDATE delegation_grants
781
- SET capability_digest = $3,
782
- expires_at = $4,
783
- grant_json = $5::jsonb,
784
- policy_version = $6,
785
- revision = $7,
786
- status = $8
787
- WHERE id = $1::uuid AND revision = $2\`,
788
- [
789
- delegationId,
790
- expectedRevision,
791
- grant.capabilityDigest,
792
- grant.expiresAt,
793
- JSON.stringify(grant),
794
- grant.issuedUnderPolicyVersion,
795
- grant.revision,
796
- grant.status,
797
- ],
798
- ),
799
- );
800
- return result.rowCount === 1;
801
- },
802
- };
803
- }
804
-
805
- export interface ${pascalName}ApprovalStore {
806
- create(
807
- request: ApprovalRequest<${pascalName}AuthorizationAction>,
808
- ): Promise<boolean>;
809
- read(
810
- requestId: string,
811
- ): Promise<ApprovalRequest<${pascalName}AuthorizationAction> | undefined>;
812
- write(
813
- requestId: string,
814
- expectedRevision: number,
815
- request: ApprovalRequest<${pascalName}AuthorizationAction>,
816
- ): Promise<boolean>;
817
- }
818
-
819
- /**
820
- * Approval transitions are persisted with the same compare-and-set boundary
821
- * used by delegation, so two reviewers or executors cannot claim one request.
822
- */
823
- export function create${pascalName}ApprovalStore(
824
- correlationId: string,
825
- ): ${pascalName}ApprovalStore {
826
- return {
827
- async create(request) {
828
- const result = await withPrimaryDatabase(
829
- { correlationId },
830
- 'api-database-records',
831
- (client) =>
832
- client.query(
833
- \`INSERT INTO approval_requests
834
- (id, author_reference, expires_at, policy_version,
835
- request_digest, request_json, revision, status)
836
- VALUES ($1::uuid, $2, $3, $4, $5, $6::jsonb, $7, $8)
837
- ON CONFLICT (id) DO NOTHING\`,
838
- [
839
- request.id,
840
- request.author.effectiveHumanId ?? request.author.actorId,
841
- request.expiresAt,
842
- request.policyVersion,
843
- request.requestDigest,
844
- JSON.stringify(request),
845
- request.revision,
846
- request.status,
847
- ],
848
- ),
849
- );
850
- return result.rowCount === 1;
851
- },
852
- async read(requestId) {
853
- const result = await withPrimaryDatabase(
854
- { correlationId },
855
- 'api-database-records',
856
- (client) =>
857
- client.query<{ requestJson: ApprovalRequest<${pascalName}AuthorizationAction> }>(
858
- \`SELECT request_json AS "requestJson"
859
- FROM approval_requests
860
- WHERE id = $1::uuid\`,
861
- [requestId],
862
- ),
863
- );
864
- return result.rows[0]?.requestJson;
865
- },
866
- async write(requestId, expectedRevision, request) {
867
- const result = await withPrimaryDatabase(
868
- { correlationId },
869
- 'api-database-records',
870
- (client) =>
871
- client.query(
872
- \`UPDATE approval_requests
873
- SET expires_at = $3,
874
- policy_version = $4,
875
- request_digest = $5,
876
- request_json = $6::jsonb,
877
- revision = $7,
878
- status = $8
879
- WHERE id = $1::uuid AND revision = $2\`,
880
- [
881
- requestId,
882
- expectedRevision,
883
- request.expiresAt,
884
- request.policyVersion,
885
- request.requestDigest,
886
- JSON.stringify(request),
887
- request.revision,
888
- request.status,
889
- ],
890
- ),
891
- );
892
- return result.rowCount === 1;
893
- },
894
- };
895
- }
896
- `,
700
+ 'authorization/store.ts': (0, built_in_plan_authorization_storage_js_1.renderDynamoAuthorizationStore)(pascalName),
897
701
  'authorization/workflows.ts': `import { createHash } from 'node:crypto';
898
702
  import type { Principal } from '@empire-builder-kit/runtime/auth';
899
703
  import {
@@ -911,7 +715,7 @@ import {
911
715
  } from '@empire-builder-kit/runtime/authorization';
912
716
  import { RuntimeError } from '@empire-builder-kit/runtime/response';
913
717
  import { isBoundedSafeReference } from '@empire-builder-kit/runtime/safe-reference';
914
- import { withPrimaryDatabase } from '../database/runtime-client.js';
718
+ import { readAuthorizationRecord, writeAuthorizationAudit } from './record-store.js';
915
719
  import {
916
720
  ${identifierPrefix}AuthorizationActions,
917
721
  ${identifierPrefix}AuthorizationPolicy,
@@ -1052,35 +856,23 @@ async function writeDelegationAudit(input: {
1052
856
  recordId: string;
1053
857
  reasonCategory: string;
1054
858
  }): Promise<void> {
1055
- await withPrimaryDatabase(
1056
- { correlationId: input.correlationId },
1057
- 'api-database-records',
1058
- (client) =>
1059
- client.query(
1060
- \`INSERT INTO authorization_audit
1061
- (action, approval_reference, authority_mode, correlation_id,
1062
- decision, delegation_reference, policy_version, principal_kind,
1063
- pseudonymous_subject_id, reason_category, resource_reference,
1064
- resource_type, slice, stage, subject_type)
1065
- VALUES ($1, NULL, $2, $3, $4, $5, $6, $7, $8, $9, $10,
1066
- 'record', $11, $12, $13)\`,
1067
- [
1068
- input.action,
1069
- input.principal.authority.mode,
1070
- input.correlationId,
1071
- input.decision.decision,
1072
- pseudonymousReference('delegation', input.delegationId),
1073
- input.decision.policyVersion,
1074
- input.principal.kind,
1075
- pseudonymousReference('subject', input.principal.actor.id),
1076
- input.reasonCategory,
1077
- pseudonymousReference('record', input.recordId),
1078
- '${name}',
1079
- stage(),
1080
- input.principal.actor.type,
1081
- ],
1082
- ),
1083
- );
859
+ await writeAuthorizationAudit({
860
+ action: input.action,
861
+ authorityMode: input.principal.authority.mode,
862
+ correlationId: input.correlationId,
863
+ decision: input.decision.decision,
864
+ delegationReference: pseudonymousReference('delegation', input.delegationId),
865
+ policyVersion: input.decision.policyVersion,
866
+ principalKind: input.principal.kind,
867
+ pseudonymousSubjectId: pseudonymousReference('subject', input.principal.actor.id),
868
+ reasonCategory: input.reasonCategory,
869
+ resourceReference: pseudonymousReference('record', input.recordId),
870
+ resourceType: 'record',
871
+ slice: '${name}',
872
+ stage: stage(),
873
+ subjectType: input.principal.actor.type,
874
+ timestamp: new Date().toISOString(),
875
+ }, 'api-database-records');
1084
876
  }
1085
877
 
1086
878
  export async function issue${pascalName}RecordDelegation(input: {
@@ -1100,18 +892,8 @@ export async function issue${pascalName}RecordDelegation(input: {
1100
892
  ) {
1101
893
  invalidInput();
1102
894
  }
1103
- const ownership = await withPrimaryDatabase(
1104
- { correlationId: input.correlationId },
1105
- 'api-database-records',
1106
- (client) =>
1107
- client.query<{ ownerId: string }>(
1108
- \`SELECT owner_id AS "ownerId"
1109
- FROM records
1110
- WHERE id = $1::uuid\`,
1111
- [input.recordId],
1112
- ),
1113
- );
1114
- if (ownership.rows[0]?.ownerId !== input.principal.id) denied();
895
+ const ownership = await readAuthorizationRecord(input.correlationId, input.recordId);
896
+ if (ownership?.ownerId !== input.principal.id) denied();
1115
897
  const delegator = createDirectAuthorizationPrincipal(input.principal);
1116
898
  let issued: IssuedDelegation<${pascalName}AuthorizationAction>;
1117
899
  try {
@@ -1183,20 +965,10 @@ export async function use${pascalName}RecordDelegation(input: {
1183
965
  } catch {
1184
966
  denied();
1185
967
  }
1186
- const owner = await withPrimaryDatabase(
1187
- { correlationId: input.correlationId },
1188
- 'api-database-records',
1189
- (client) =>
1190
- client.query<{ ownerId: string }>(
1191
- \`SELECT owner_id AS "ownerId"
1192
- FROM records
1193
- WHERE id = $1::uuid\`,
1194
- [input.recordId],
1195
- ),
1196
- );
968
+ const owner = await readAuthorizationRecord(input.correlationId, input.recordId);
1197
969
  const resource = {
1198
970
  attributes: {
1199
- ownerId: owner.rows[0]?.ownerId ?? 'missing-resource-owner',
971
+ ownerId: owner?.ownerId ?? 'missing-resource-owner',
1200
972
  },
1201
973
  id: input.recordId,
1202
974
  type: 'record' as const,
@@ -1246,20 +1018,11 @@ export async function use${pascalName}RecordDelegation(input: {
1246
1018
  : result.decision.category,
1247
1019
  });
1248
1020
  assertAuthorizationAllowed(result.decision);
1249
- if (!result.grant || !owner.rows[0]) notFound();
1250
-
1251
- const record = await withPrimaryDatabase(
1252
- { correlationId: input.correlationId },
1253
- 'api-database-records',
1254
- (client) =>
1255
- client.query<RecordResult>(
1256
- \`SELECT id::text, name, run_scope AS "runScope"
1257
- FROM records
1258
- WHERE id = $1::uuid AND owner_id = $2\`,
1259
- [input.recordId, result.grant?.delegator.id],
1260
- ),
1261
- );
1262
- return record.rows[0] ?? notFound();
1021
+ if (!result.grant || !owner) notFound();
1022
+
1023
+ const record = await readAuthorizationRecord(input.correlationId, input.recordId, result.grant.delegator.id);
1024
+ if (!record) notFound();
1025
+ return { id: record.id, name: record.name, runScope: record.runScope };
1263
1026
  }
1264
1027
 
1265
1028
  function grantMatchesRecord(
@@ -229,7 +229,58 @@ def handler(event,context):
229
229
  function renderStandardSliceAuthorizationInfrastructureFiles(name, pascalName) {
230
230
  return {
231
231
  'authorization/machine-client-provisioner.py': MACHINE_CLIENT_PROVISIONER_SOURCE,
232
+ 'pyproject.toml': `[project]
233
+ name = "ebk-${name}-python-runtime"
234
+ version = "0.0.0"
235
+ requires-python = ">=3.12"
236
+ dependencies = []
237
+
238
+ [tool.uv]
239
+ package = false
240
+ `,
241
+ 'uv.lock': `version = 1
242
+ revision = 3
243
+ requires-python = ">=3.12"
244
+
245
+ [[package]]
246
+ name = "ebk-${name}-python-runtime"
247
+ version = "0.0.0"
248
+ source = { virtual = "." }
249
+ `,
250
+ 'authorization/groups.mjs': `/** Exact physical Cognito identities; product policy keeps its logical roles. */
251
+ export function sliceAuthorizationGroupNames(stage) {
252
+ if (['development', 'staging', 'production'].includes(stage)) {
253
+ return { admin: '${name}-admin', testWriter: '${name}-test-writer' };
254
+ }
255
+ if (!/^personal-[a-f0-9]{24}$/.test(stage)) {
256
+ throw new Error('Slice authorization requires a canonical or exact task stage.');
257
+ }
258
+ return {
259
+ admin: '${name}-' + stage + '-admin',
260
+ testWriter: '${name}-' + stage + '-test-writer',
261
+ };
262
+ }
263
+
264
+ export function sliceAuthorizationRoles(stage, roles) {
265
+ const groups = sliceAuthorizationGroupNames(stage);
266
+ if (groups.admin === '${name}-admin') return [...roles];
267
+ // Canonical claims must not grant task authority. Never strip a foreign
268
+ // task suffix: only this task's exact physical names become logical roles.
269
+ return roles
270
+ .filter((role) => role !== '${name}-admin' && role !== '${name}-test-writer')
271
+ .map((role) => role === groups.admin
272
+ ? '${name}-admin'
273
+ : role === groups.testWriter ? '${name}-test-writer' : role);
274
+ }
275
+ `,
276
+ 'authorization/groups.d.mts': `export function sliceAuthorizationGroupNames(stage: string): {
277
+ admin: string;
278
+ testWriter: string;
279
+ };
280
+ export function sliceAuthorizationRoles(stage: string, roles: readonly string[]): string[];
281
+ `,
232
282
  'infra/authorization.ts': `import { createHash } from 'node:crypto';
283
+ import { sliceAuthorizationGroupNames } from '../authorization/groups.mjs';
233
284
 
234
285
  const MACHINE_AUTHORIZATION_SCOPE_NAMES = [
235
286
  'delegation-use',
@@ -326,6 +377,7 @@ export function createStandardSliceMachineAuthorization(
326
377
  options.credentialGeneration,
327
378
  );
328
379
  const resourceServerIdentifier = '${name}-' + $app.stage;
380
+ const groups = sliceAuthorizationGroupNames($app.stage);
329
381
  const template = {
330
382
  AWSTemplateFormatVersion: '2010-09-09',
331
383
  Description:
@@ -351,7 +403,7 @@ export function createStandardSliceMachineAuthorization(
351
403
  Properties: {
352
404
  Description:
353
405
  'Direct human recovery and non-author review authority for ${name}.',
354
- GroupName: '${name}-admin',
406
+ GroupName: groups.admin,
355
407
  Precedence: 10,
356
408
  UserPoolId: { Ref: 'UserPoolId' },
357
409
  },
@@ -361,7 +413,7 @@ export function createStandardSliceMachineAuthorization(
361
413
  Properties: {
362
414
  Description:
363
415
  'Run-scoped synthetic-write authority for ${name} deployed proof.',
364
- GroupName: '${name}-test-writer',
416
+ GroupName: groups.testWriter,
365
417
  Precedence: 20,
366
418
  UserPoolId: { Ref: 'UserPoolId' },
367
419
  },
@@ -373,8 +425,10 @@ export function createStandardSliceMachineAuthorization(
373
425
  'EBK generated ${name} confidential machine-client credential.',
374
426
  Name: { Ref: 'SecretName' },
375
427
  Tags: [
428
+ { Key: 'ebk:managed-by', Value: 'empire-builder-kit' },
376
429
  { Key: 'ebk:management', Value: 'generated-machine-credential' },
377
430
  { Key: 'ebk:slice', Value: '${name}' },
431
+ { Key: 'ebk:stage', Value: $app.stage },
378
432
  { Key: 'sst:stage', Value: $app.stage },
379
433
  ],
380
434
  },
@@ -459,6 +513,10 @@ export function createStandardSliceMachineAuthorization(
459
513
  '/${name}/authorization/machine-client',
460
514
  UserPoolId: options.userPoolId,
461
515
  },
516
+ tags: {
517
+ 'ebk:managed-by': 'empire-builder-kit',
518
+ 'ebk:stage': $app.stage,
519
+ },
462
520
  templateBody: JSON.stringify(template),
463
521
  },
464
522
  );
@@ -0,0 +1,3 @@
1
+ /** Storage mechanics stay generated; policy, features and delegation decisions stay seeded. */
2
+ export declare function renderAuthorizationRecordStore(): string;
3
+ export declare function renderDynamoAuthorizationStore(pascalName: string): string;