@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
@@ -36,6 +36,13 @@ exports.DIRECT_WORKLOAD_ROLE_IAM_MUTATION_ACTIONS = [
36
36
  'iam:UpdateRole',
37
37
  'iam:UpdateRoleDescription',
38
38
  ];
39
+ const EXACT_WORKLOAD_ROLE_OBSERVATION_ACTIONS = [
40
+ 'iam:GetInstanceProfile',
41
+ 'iam:GetRole',
42
+ 'iam:GetRolePolicy',
43
+ 'iam:ListAttachedRolePolicies',
44
+ 'iam:ListRolePolicies',
45
+ ];
39
46
  function compareStrings(left, right) {
40
47
  return left < right ? -1 : left > right ? 1 : 0;
41
48
  }
@@ -63,11 +70,48 @@ function createPassRoleStatements(registry) {
63
70
  sid: `PassRegisteredWorkloadRoles${index + 1}`,
64
71
  }));
65
72
  }
73
+ function createRoleObservationStatements(registry) {
74
+ const roles = registry.manifest.roles.map((declaration) => registry.resolve(declaration.id));
75
+ const statements = [
76
+ {
77
+ actions: [
78
+ 'iam:GetRole',
79
+ 'iam:GetRolePolicy',
80
+ 'iam:ListAttachedRolePolicies',
81
+ 'iam:ListRolePolicies',
82
+ ],
83
+ effect: 'Allow',
84
+ resources: roles.map(({ roleArn }) => roleArn).sort(compareStrings),
85
+ sid: 'ObserveRegisteredWorkloadRoles',
86
+ },
87
+ ];
88
+ const instanceProfileArns = roles
89
+ .filter(({ surface }) => surface === 'foundation-nat-instance')
90
+ .map(({ roleArn, roleName }) => {
91
+ const suffix = `:role/${roleName}`;
92
+ if (!roleArn.endsWith(suffix)) {
93
+ throw new Error(`Registered NAT role ${roleName} has an invalid exact role ARN.`);
94
+ }
95
+ return `${roleArn.slice(0, -suffix.length)}:instance-profile/${roleName}-profile`;
96
+ })
97
+ .sort(compareStrings);
98
+ if (instanceProfileArns.length > 0) {
99
+ statements.push({
100
+ actions: ['iam:GetInstanceProfile'],
101
+ effect: 'Allow',
102
+ resources: instanceProfileArns,
103
+ sid: 'ObserveRegisteredNatInstanceProfiles',
104
+ });
105
+ }
106
+ return statements;
107
+ }
66
108
  /**
67
109
  * Stable ordinary deployment-role authority. It can read exact protected
68
110
  * registration objects, invoke and observe only the fixed qualified
69
111
  * provisioner, and pass exact registered roles to their declared AWS services.
70
- * It deliberately exposes no direct IAM role inspection or mutation surface.
112
+ * It exposes only exact read authority needed by Pulumi to import the already
113
+ * provisioned roles and NAT instance profiles. It exposes no direct IAM
114
+ * mutation surface.
71
115
  */
72
116
  function createDeploymentRoleAuthorityPlan(registry, registrationReadScope) {
73
117
  return {
@@ -78,6 +122,7 @@ function createDeploymentRoleAuthorityPlan(registry, registrationReadScope) {
78
122
  resources: ['*'],
79
123
  sid: 'DenyDirectWorkloadIamMutation',
80
124
  },
125
+ ...createRoleObservationStatements(registry),
81
126
  {
82
127
  actions: ['lambda:InvokeFunction'],
83
128
  effect: 'Allow',
@@ -141,6 +186,7 @@ function validateDeploymentRoleAuthorityPlan(registry, value, registrationReadSc
141
186
  if (typeof action !== 'string' ||
142
187
  (action.startsWith('iam:') &&
143
188
  action !== 'iam:PassRole' &&
189
+ !EXACT_WORKLOAD_ROLE_OBSERVATION_ACTIONS.includes(action) &&
144
190
  (!('effect' in statement) || statement.effect !== 'Deny'))) {
145
191
  issues.push(`ordinary deployment authority contains forbidden IAM action ${String(action)}`);
146
192
  }
@@ -149,7 +195,7 @@ function validateDeploymentRoleAuthorityPlan(registry, value, registrationReadSc
149
195
  const expected = createDeploymentRoleAuthorityPlan(registry, registrationReadScope);
150
196
  if (canonicalPlan(value) !==
151
197
  canonicalPlan(expected)) {
152
- issues.push('authority plan does not exactly match the fixed provisioner and registered PassRole plan');
198
+ issues.push('authority plan does not exactly match fixed provisioner, exact observation, and registered PassRole authority');
153
199
  }
154
200
  return { issues, valid: issues.length === 0 };
155
201
  }
@@ -28,6 +28,7 @@ function requireS3Sdk(value) {
28
28
  return {
29
29
  DeleteObjectCommand: requireConstructor(value.DeleteObjectCommand, 'DeleteObjectCommand'),
30
30
  GetObjectCommand: requireConstructor(value.GetObjectCommand, 'GetObjectCommand'),
31
+ ListObjectsV2Command: requireConstructor(value.ListObjectsV2Command, 'ListObjectsV2Command'),
31
32
  PutObjectCommand: requireConstructor(value.PutObjectCommand, 'PutObjectCommand'),
32
33
  S3Client: requireConstructor(value.S3Client, 'S3Client'),
33
34
  };
@@ -61,6 +62,32 @@ async function createAwsSdkV3S3JsonControlPlane(options = {}) {
61
62
  }));
62
63
  },
63
64
  async getJson(input) {
65
+ const listed = await client.send(new sdk.ListObjectsV2Command({
66
+ Bucket: input.bucketName,
67
+ MaxKeys: 1,
68
+ Prefix: input.key,
69
+ }));
70
+ if (!isRecord(listed)) {
71
+ throw new Error('AWS S3 exact-key listing response is malformed.');
72
+ }
73
+ if (listed.Contents === undefined) {
74
+ if (listed.KeyCount === 0 && listed.IsTruncated === false) {
75
+ return undefined;
76
+ }
77
+ throw new Error('AWS S3 exact-key listing response is malformed.');
78
+ }
79
+ if (!Array.isArray(listed.Contents) ||
80
+ listed.Contents.length !== 1 ||
81
+ listed.KeyCount !== 1 ||
82
+ listed.IsTruncated !== false) {
83
+ throw new Error('AWS S3 exact-key listing response is malformed.');
84
+ }
85
+ const first = listed.Contents[0];
86
+ if (!isRecord(first) || typeof first.Key !== 'string') {
87
+ throw new Error('AWS S3 exact-key listing entry is malformed.');
88
+ }
89
+ if (first.Key !== input.key)
90
+ return undefined;
64
91
  let response;
65
92
  try {
66
93
  response = await client.send(new sdk.GetObjectCommand({
@@ -10,7 +10,7 @@ export interface WorkloadRoleBoundaryContract {
10
10
  partition: 'aws' | 'aws-cn' | 'aws-us-gov';
11
11
  path: string;
12
12
  policy: CanonicalIamPolicyDocument;
13
- policyName: typeof WORKLOAD_ROLE_BOUNDARY_POLICY_NAME;
13
+ policyName: string;
14
14
  stage: string;
15
15
  }
16
16
  export type WorkloadRoleBoundaryFailureClassification = 'boundary-identity-invalid' | 'boundary-policy-incomplete' | 'boundary-substitution';
@@ -19,6 +19,7 @@ export declare class WorkloadRoleBoundaryContractError extends Error {
19
19
  constructor(classification: WorkloadRoleBoundaryFailureClassification, message: string);
20
20
  }
21
21
  export declare function workloadRoleBoundaryPath(stage: string): string;
22
+ export declare function workloadRoleBoundaryPolicyName(stage: string): string;
22
23
  export declare function workloadRoleBoundaryArn(options: {
23
24
  accountId: string;
24
25
  partition: string;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkloadRoleBoundaryContractError = exports.WORKLOAD_ROLE_BOUNDARY_DENIED_ACTIONS = exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME = exports.WORKLOAD_ROLE_BOUNDARY_POLICY_PATH = void 0;
4
4
  exports.workloadRoleBoundaryPath = workloadRoleBoundaryPath;
5
+ exports.workloadRoleBoundaryPolicyName = workloadRoleBoundaryPolicyName;
5
6
  exports.workloadRoleBoundaryArn = workloadRoleBoundaryArn;
6
7
  exports.createWorkloadRoleBoundaryContract = createWorkloadRoleBoundaryContract;
7
8
  const node_crypto_1 = require("node:crypto");
@@ -61,9 +62,15 @@ function workloadRoleBoundaryPath(stage) {
61
62
  }
62
63
  return `${exports.WORKLOAD_ROLE_BOUNDARY_POLICY_PATH}/${stage}/`;
63
64
  }
65
+ function workloadRoleBoundaryPolicyName(stage) {
66
+ if (!stagePattern.test(stage)) {
67
+ throw new WorkloadRoleBoundaryContractError('boundary-identity-invalid', `Workload-role boundary stage ${stage} is not normalized.`);
68
+ }
69
+ return `${exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME}-${stage}`;
70
+ }
64
71
  function workloadRoleBoundaryArn(options) {
65
72
  const identity = requireIdentity(options);
66
- return `arn:${identity.partition}:iam::${identity.accountId}:policy${workloadRoleBoundaryPath(identity.stage)}${exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME}`;
73
+ return `arn:${identity.partition}:iam::${identity.accountId}:policy${workloadRoleBoundaryPath(identity.stage)}${workloadRoleBoundaryPolicyName(identity.stage)}`;
67
74
  }
68
75
  function boundaryAllowStatements(manifest, bundle) {
69
76
  const statements = [];
@@ -123,7 +130,7 @@ function createWorkloadRoleBoundaryContract(options) {
123
130
  partition: identity.partition,
124
131
  path: workloadRoleBoundaryPath(identity.stage),
125
132
  policy,
126
- policyName: exports.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME,
133
+ policyName: workloadRoleBoundaryPolicyName(identity.stage),
127
134
  stage: identity.stage,
128
135
  };
129
136
  }
@@ -66,7 +66,7 @@ function operationCounts(operationKinds) {
66
66
  update: operationKinds.filter((kind) => kind === 'update').length,
67
67
  };
68
68
  }
69
- function failureClassification(error) {
69
+ function failureClassification(error, internalClassification) {
70
70
  if (typeof error === 'object' &&
71
71
  error !== null &&
72
72
  'classification' in error &&
@@ -74,7 +74,15 @@ function failureClassification(error) {
74
74
  failureClassifications.has(error.classification)) {
75
75
  return error.classification;
76
76
  }
77
- return 'fixed-provisioner-internal-error';
77
+ return internalClassification;
78
+ }
79
+ function failureResult(error, internalClassification) {
80
+ return {
81
+ classification: failureClassification(error, internalClassification),
82
+ ok: false,
83
+ protocolVersion: provisioner_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_PROTOCOL_VERSION,
84
+ resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
85
+ };
78
86
  }
79
87
  /**
80
88
  * Creates the fixed Lambda handler. Its registered-manifest source and IAM
@@ -84,47 +92,67 @@ function failureClassification(error) {
84
92
  */
85
93
  function createFixedWorkloadRoleProvisionerHandler(options) {
86
94
  return async (request) => {
95
+ let loaded;
87
96
  try {
88
- const loaded = await (0, registration_js_1.loadFixedWorkloadRoleProvisionerRequest)({
97
+ loaded = await (0, registration_js_1.loadFixedWorkloadRoleProvisionerRequest)({
89
98
  request,
90
99
  source: options.source,
91
100
  });
92
- const result = await (0, provisioner_js_1.executeFixedWorkloadRoleProvisioner)({
101
+ }
102
+ catch (error) {
103
+ return failureResult(error, 'fixed-provisioner-source-load-error');
104
+ }
105
+ let history;
106
+ try {
107
+ history = await options.state.loadHistory();
108
+ }
109
+ catch (error) {
110
+ return failureResult(error, 'fixed-provisioner-history-load-error');
111
+ }
112
+ let result;
113
+ let provisionedRegistration;
114
+ try {
115
+ result = await (0, provisioner_js_1.executeFixedWorkloadRoleProvisioner)({
93
116
  adapter: options.adapter,
94
117
  boundary: loaded.boundary,
95
- history: await options.state.loadHistory(),
118
+ history,
96
119
  intentsByRole: loaded.document.intentsByRole,
97
120
  manifest: loaded.document.manifest,
98
121
  provisionerFunctionArn: loaded.document.provisionerFunctionArn,
99
122
  registration: loaded.registration,
100
123
  request: loaded.request,
101
124
  });
102
- const provisionedRegistration = result.registration
125
+ provisionedRegistration = result.registration
103
126
  ? sanitizedRegistration(result.registration)
104
127
  : undefined;
128
+ }
129
+ catch (error) {
130
+ return failureResult(error, 'fixed-provisioner-convergence-error');
131
+ }
132
+ try {
105
133
  await options.state.saveHistory(result.history);
134
+ }
135
+ catch (error) {
136
+ return failureResult(error, 'fixed-provisioner-history-save-error');
137
+ }
138
+ try {
106
139
  await options.state.saveProvisionedRegistration(provisionedRegistration);
107
- return {
108
- candidateIdentity: loaded.document.manifest.candidate.identity,
109
- historyDigest: result.historyDigest,
110
- manifestDigest: result.manifestDigest,
111
- ok: true,
112
- operation: loaded.request.operation,
113
- operationCounts: operationCounts(result.operationKinds),
114
- protocolVersion: result.protocolVersion,
115
- ...(provisionedRegistration ? { provisionedRegistration } : {}),
116
- resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
117
- stage: loaded.document.manifest.candidate.stage,
118
- };
119
140
  }
120
141
  catch (error) {
121
- return {
122
- classification: failureClassification(error),
123
- ok: false,
124
- protocolVersion: provisioner_js_1.FIXED_WORKLOAD_ROLE_PROVISIONER_PROTOCOL_VERSION,
125
- resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
126
- };
142
+ return failureResult(error, 'fixed-provisioner-registration-save-error');
127
143
  }
144
+ return {
145
+ candidateIdentity: loaded.document.manifest.candidate.identity,
146
+ historyDigest: result.historyDigest,
147
+ manifestDigest: result.manifestDigest,
148
+ ok: true,
149
+ operation: loaded.request.operation,
150
+ operationCounts: operationCounts(result.operationKinds),
151
+ protocolVersion: result.protocolVersion,
152
+ ...(provisionedRegistration ? { provisionedRegistration } : {}),
153
+ resultSchemaVersion: exports.FIXED_WORKLOAD_ROLE_PROVISIONER_RESULT_SCHEMA_VERSION,
154
+ stage: loaded.document.manifest.candidate.stage,
155
+ };
128
156
  };
129
157
  }
130
158
  //# sourceMappingURL=handler.js.map
@@ -1,17 +1,10 @@
1
- export * from './aws-adapter.js';
2
- export * from './aws-internal-handler.js';
3
- export * from './aws-s3-state.js';
4
- export * from './aws-sdk-control-plane.js';
5
- export * from './account-baseline.js';
6
- export * from './authority.js';
7
- export * from './boundary.js';
8
- export * from './convergence.js';
9
- export * from './effective-policy.js';
10
- export * from './handler.js';
11
- export * from './history.js';
12
- export * from './injection.js';
13
- export * from './manifest.js';
14
- export * from './provisioner.js';
15
- export * from './registration.js';
16
- export * from './standard-slice.js';
17
- export * from './stage-boundary.js';
1
+ /**
2
+ * Runtime-intent helpers used by SST-owned workload role creation.
3
+ *
4
+ * Candidate-bound manifests, provisioners, registrations, convergence, and
5
+ * AWS control-plane adapters are intentionally not public in the thin
6
+ * lifecycle. Native SST creates the roles; generated infrastructure consumes
7
+ * only this topology and permission-intent surface.
8
+ */
9
+ export type { WorkloadRolePermissionIntent } from './effective-policy.js';
10
+ export { STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS, StandardSliceWorkloadRoleError, createStandardSliceWorkloadRoleTopology, type StandardSliceServiceAdapterMetadata, type StandardSliceWorkloadExtension, type StandardSliceWorkloadExtensionKind, type StandardSliceWorkloadRoleFailureClassification, type StandardSliceWorkloadRoleTopology, type StandardSliceWorkloadRoleTopologyEntry, } from './standard-slice.js';
@@ -1,21 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./aws-adapter.js"), exports);
5
- tslib_1.__exportStar(require("./aws-internal-handler.js"), exports);
6
- tslib_1.__exportStar(require("./aws-s3-state.js"), exports);
7
- tslib_1.__exportStar(require("./aws-sdk-control-plane.js"), exports);
8
- tslib_1.__exportStar(require("./account-baseline.js"), exports);
9
- tslib_1.__exportStar(require("./authority.js"), exports);
10
- tslib_1.__exportStar(require("./boundary.js"), exports);
11
- tslib_1.__exportStar(require("./convergence.js"), exports);
12
- tslib_1.__exportStar(require("./effective-policy.js"), exports);
13
- tslib_1.__exportStar(require("./handler.js"), exports);
14
- tslib_1.__exportStar(require("./history.js"), exports);
15
- tslib_1.__exportStar(require("./injection.js"), exports);
16
- tslib_1.__exportStar(require("./manifest.js"), exports);
17
- tslib_1.__exportStar(require("./provisioner.js"), exports);
18
- tslib_1.__exportStar(require("./registration.js"), exports);
19
- tslib_1.__exportStar(require("./standard-slice.js"), exports);
20
- tslib_1.__exportStar(require("./stage-boundary.js"), exports);
3
+ exports.createStandardSliceWorkloadRoleTopology = exports.StandardSliceWorkloadRoleError = exports.STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS = void 0;
4
+ var standard_slice_js_1 = require("./standard-slice.js");
5
+ Object.defineProperty(exports, "STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS", { enumerable: true, get: function () { return standard_slice_js_1.STANDARD_SLICE_WORKLOAD_EXTENSION_KINDS; } });
6
+ Object.defineProperty(exports, "StandardSliceWorkloadRoleError", { enumerable: true, get: function () { return standard_slice_js_1.StandardSliceWorkloadRoleError; } });
7
+ Object.defineProperty(exports, "createStandardSliceWorkloadRoleTopology", { enumerable: true, get: function () { return standard_slice_js_1.createStandardSliceWorkloadRoleTopology; } });
21
8
  //# sourceMappingURL=index.js.map
@@ -325,7 +325,7 @@ const ECS_CONTAINER_NAME_PATTERN = /^[A-Za-z0-9_-]{1,255}$/;
325
325
  const JSONATA_DELIMITER_PATTERN = /{%|%}/;
326
326
  const ECS_RUN_TASK_SYNC_RESOURCE = 'arn:aws:states:::ecs:runTask.sync';
327
327
  const ECS_RUN_TASK_CALLBACK_RESOURCE = 'arn:aws:states:::ecs:runTask.waitForTaskToken';
328
- const DATABASE_LIFECYCLE_CORRELATION_EXPRESSION = '{% $states.input.databaseLifecycleCorrelationId %}';
328
+ const DATABASE_LIFECYCLE_CORRELATION_EXPRESSION = '{% $states.context.Execution.Input.databaseLifecycleCorrelationId %}';
329
329
  const TASK_TOKEN_EXPRESSION = '{% $states.context.Task.Token %}';
330
330
  /**
331
331
  * Validates only the two bounded raw graphs emitted by the v1 generator. This is
@@ -98,16 +98,12 @@ async function applyOperation(adapter, operation, mutation) {
98
98
  if (!mutation) {
99
99
  throw new FixedWorkloadRoleProvisionerError('provisioner-result-substitution', 'A create or update operation is missing its fixed registered mutation.');
100
100
  }
101
- const profile = natProfile(declaration);
102
101
  if (operation.kind === 'create') {
103
102
  await adapter.create(mutation);
104
103
  }
105
104
  else {
106
105
  await adapter.update(mutation, operation.before);
107
106
  }
108
- if (profile) {
109
- await adapter.ensureNatInstanceProfile(profile);
110
- }
111
107
  }
112
108
  async function executeFixedWorkloadRoleProvisioner(options) {
113
109
  const manifest = (0, manifest_js_1.canonicalizeWorkloadRoleManifest)(options.manifest);
@@ -180,6 +176,18 @@ async function executeFixedWorkloadRoleProvisioner(options) {
180
176
  for (const operation of retirementPlan?.operations ?? []) {
181
177
  await applyOperation(options.adapter, operation);
182
178
  }
179
+ if (options.request.operation === 'converge') {
180
+ // The role convergence plan can be empty on a retry after a prior attempt
181
+ // created the role but failed while attaching its NAT instance profile.
182
+ // Reconcile every derived profile independently of role mutations so a
183
+ // successful no-op retry cannot publish an incomplete runtime identity.
184
+ for (const declaration of manifest.roles) {
185
+ const profile = natProfile(declaration);
186
+ if (profile) {
187
+ await options.adapter.ensureNatInstanceProfile(profile);
188
+ }
189
+ }
190
+ }
183
191
  const operationKinds = [
184
192
  ...plan.operations,
185
193
  ...(retirementPlan?.operations ?? []),
@@ -35,6 +35,7 @@ export interface WorkloadRoleStorageRegistration {
35
35
  schemaVersion: typeof WORKLOAD_ROLE_STORAGE_REGISTRATION_SCHEMA_VERSION;
36
36
  stage: string;
37
37
  }
38
+ export declare function areWorkloadRoleIntentsEquivalent(left: Readonly<Record<string, readonly WorkloadRolePermissionIntent[]>>, right: Readonly<Record<string, readonly WorkloadRolePermissionIntent[]>>): boolean;
38
39
  export interface FixedRegisteredManifestSource {
39
40
  /**
40
41
  * Loads one baseline-selected value. The invocation request cannot supply a
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WorkloadRoleRegistrationError = exports.WORKLOAD_ROLE_STORAGE_REGISTRATION_SCHEMA_VERSION = exports.PROVISIONED_WORKLOAD_ROLE_REGISTRATION_SCHEMA_VERSION = exports.REGISTERED_WORKLOAD_ROLE_MANIFEST_SCHEMA_VERSION = void 0;
4
+ exports.areWorkloadRoleIntentsEquivalent = areWorkloadRoleIntentsEquivalent;
4
5
  exports.requireRegisteredWorkloadRoleManifestDocument = requireRegisteredWorkloadRoleManifestDocument;
5
6
  exports.createRegisteredWorkloadRoleManifestDocument = createRegisteredWorkloadRoleManifestDocument;
6
7
  exports.requireProvisionedWorkloadRoleRegistrationDocument = requireProvisionedWorkloadRoleRegistrationDocument;
@@ -13,6 +14,7 @@ exports.createWorkloadRoleStorageRegistration = createWorkloadRoleStorageRegistr
13
14
  exports.loadFixedWorkloadRoleProvisionerRequest = loadFixedWorkloadRoleProvisionerRequest;
14
15
  exports.validateWorkloadRolePreflight = validateWorkloadRolePreflight;
15
16
  const node_crypto_1 = require("node:crypto");
17
+ const canonical_json_1 = require("@empire-builder-kit/runtime/canonical-json");
16
18
  const authority_js_1 = require("./authority.js");
17
19
  const boundary_js_1 = require("./boundary.js");
18
20
  const convergence_js_1 = require("./convergence.js");
@@ -31,6 +33,9 @@ class WorkloadRoleRegistrationError extends Error {
31
33
  }
32
34
  }
33
35
  exports.WorkloadRoleRegistrationError = WorkloadRoleRegistrationError;
36
+ function areWorkloadRoleIntentsEquivalent(left, right) {
37
+ return (0, canonical_json_1.canonicalJson)(left) === (0, canonical_json_1.canonicalJson)(right);
38
+ }
34
39
  const accountPattern = /^\d{12}$/;
35
40
  const digestPattern = /^[a-f0-9]{64}$/;
36
41
  const identifierPattern = /^(?:[a-z0-9][a-z0-9._-]{0,127}|@[a-z0-9][a-z0-9._-]{0,62}\/[a-z0-9][a-z0-9._-]{0,63})$/;
@@ -200,7 +200,7 @@ function createStageWorkloadRoleBoundaryContract(options) {
200
200
  path: (0, boundary_js_1.workloadRoleBoundaryPath)(options.expectedStage),
201
201
  policy,
202
202
  policyCharacters: serializedPolicy.length,
203
- policyName: boundary_js_1.WORKLOAD_ROLE_BOUNDARY_POLICY_NAME,
203
+ policyName: (0, boundary_js_1.workloadRoleBoundaryPolicyName)(options.expectedStage),
204
204
  projects: expectedProjects,
205
205
  stage: options.expectedStage,
206
206
  };
@@ -55,6 +55,7 @@ function baseTopology(slice, databaseIdentifiers) {
55
55
  role('api-database-health', 'api-route'),
56
56
  role('api-database-records', 'api-route'),
57
57
  role('api-publish-created', 'api-route'),
58
+ role('async-inbox-cleanup', 'lambda-function'),
58
59
  role('async-outbox-relay', 'lambda-function'),
59
60
  role('async-provider-worker', 'queue-consumer'),
60
61
  role('async-schedule-target', 'lambda-function'),
@@ -120,9 +121,8 @@ function extensionTopology(slice, extension, ownsProtectedLoadAdapter) {
120
121
  function createStandardSliceWorkloadRoleTopology(options) {
121
122
  const slice = requireIdentifier(options.slice, 'Slice');
122
123
  const databaseIdentifiers = options.databaseIdentifiers ?? ['primary'];
123
- if (databaseIdentifiers.length === 0) {
124
- throw new StandardSliceWorkloadRoleError('standard-role-input-invalid', 'A Standard Slice must declare at least one database identifier.');
125
- }
124
+ // An explicit empty declaration is the SQL-free Standard topology. Omitting
125
+ // this field retains the existing relational caller contract.
126
126
  for (const identifier of databaseIdentifiers) {
127
127
  requireDatabaseIdentifier(identifier);
128
128
  }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Affected-only native lifecycle selection.
3
+ *
4
+ * A protected deployment may skip Product Slices whose inputs have not changed
5
+ * since the newest successful deployment receipt on the same branch. Declining
6
+ * is always safe: every rule below that cannot prove a project unchanged
7
+ * deploys it, and any governing change (policy, Nx configuration, Foundation
8
+ * contract, framework version) deploys everything.
9
+ */
10
+ export type LifecycleMode = 'affected' | 'full';
11
+ export type LifecycleProjectDecision = 'deploy' | 'skip-unchanged';
12
+ export interface LifecycleBaseline {
13
+ readonly commit: string;
14
+ readonly runAttempt: string;
15
+ readonly runId: string;
16
+ }
17
+ export interface LifecycleBaselineReceipt {
18
+ readonly children: readonly {
19
+ readonly outcome: string;
20
+ readonly project: string;
21
+ readonly target: string;
22
+ }[];
23
+ readonly frameworkVersion: string;
24
+ readonly outcome: string;
25
+ readonly source: {
26
+ readonly commit: string;
27
+ };
28
+ readonly stage: string;
29
+ }
30
+ export interface LifecycleScope {
31
+ readonly baseline: LifecycleBaseline | null;
32
+ readonly mode: LifecycleMode;
33
+ readonly projects: Readonly<Record<string, LifecycleProjectDecision>>;
34
+ readonly reason: string;
35
+ }
36
+ export interface SelectLifecycleScopeInput {
37
+ /** Projects affected between the baseline commit and the source commit, or
38
+ * null when the affected set could not be computed. */
39
+ readonly affectedProjects: readonly string[] | null;
40
+ readonly baseline: (LifecycleBaseline & {
41
+ readonly receipt: LifecycleBaselineReceipt;
42
+ }) | null;
43
+ /** Governing files changed since the baseline (policy, Nx configuration,
44
+ * Foundation contract). Any entry forces the full lifecycle. */
45
+ readonly changedGoverningFiles: readonly string[];
46
+ readonly frameworkVersion: string;
47
+ readonly orderedProjects: readonly string[];
48
+ readonly requestedMode: LifecycleMode;
49
+ readonly stage: string;
50
+ }
51
+ /** Repository-relative files whose change always forces the full lifecycle. */
52
+ export declare const LIFECYCLE_GOVERNING_FILES: readonly string[];
53
+ export declare function selectLifecycleScope(input: SelectLifecycleScopeInput): LifecycleScope;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIFECYCLE_GOVERNING_FILES = void 0;
4
+ exports.selectLifecycleScope = selectLifecycleScope;
5
+ /** Repository-relative files whose change always forces the full lifecycle. */
6
+ exports.LIFECYCLE_GOVERNING_FILES = Object.freeze([
7
+ '.ebk/ownership.json',
8
+ 'ebk.repository-policy.json',
9
+ 'nx.json',
10
+ 'packages/foundation/sst.config.ts',
11
+ 'pnpm-lock.yaml',
12
+ 'pnpm-workspace.yaml',
13
+ ]);
14
+ const PROJECT = /^[a-z0-9][a-z0-9-]{0,62}$/u;
15
+ function full(input, reason) {
16
+ return {
17
+ baseline: input.baseline
18
+ ? {
19
+ commit: input.baseline.commit,
20
+ runAttempt: input.baseline.runAttempt,
21
+ runId: input.baseline.runId,
22
+ }
23
+ : null,
24
+ mode: 'full',
25
+ projects: Object.fromEntries(input.orderedProjects.map((project) => [project, 'deploy'])),
26
+ reason,
27
+ };
28
+ }
29
+ function selectLifecycleScope(input) {
30
+ for (const project of input.orderedProjects) {
31
+ if (!PROJECT.test(project)) {
32
+ throw new Error(`Lifecycle project ${project} is not a normalized name.`);
33
+ }
34
+ }
35
+ if (input.requestedMode === 'full')
36
+ return full(input, 'requested-full');
37
+ const baseline = input.baseline;
38
+ if (!baseline)
39
+ return full(input, 'no-baseline');
40
+ if (baseline.receipt.outcome !== 'succeeded') {
41
+ return full(input, 'baseline-not-succeeded');
42
+ }
43
+ if (baseline.receipt.stage !== input.stage) {
44
+ return full(input, 'baseline-stage-differs');
45
+ }
46
+ if (baseline.receipt.source.commit !== baseline.commit) {
47
+ return full(input, 'baseline-commit-differs');
48
+ }
49
+ if (baseline.receipt.frameworkVersion !== input.frameworkVersion) {
50
+ return full(input, 'framework-version-changed');
51
+ }
52
+ if (input.changedGoverningFiles.length > 0) {
53
+ return full(input, 'governing-files-changed:' +
54
+ [...input.changedGoverningFiles].sort().join(','));
55
+ }
56
+ if (input.affectedProjects === null)
57
+ return full(input, 'affected-unavailable');
58
+ const affected = new Set(input.affectedProjects);
59
+ const succeeded = new Set(baseline.receipt.children
60
+ .filter(({ outcome, target }) => target === 'deploy' && outcome === 'succeeded')
61
+ .map(({ project }) => project));
62
+ const projects = Object.fromEntries(input.orderedProjects.map((project) => [
63
+ project,
64
+ affected.has(project) || !succeeded.has(project)
65
+ ? 'deploy'
66
+ : 'skip-unchanged',
67
+ ]));
68
+ const deployed = Object.values(projects).filter((decision) => decision === 'deploy').length;
69
+ return {
70
+ baseline: {
71
+ commit: baseline.commit,
72
+ runAttempt: baseline.runAttempt,
73
+ runId: baseline.runId,
74
+ },
75
+ mode: 'affected',
76
+ projects,
77
+ reason: deployed === input.orderedProjects.length
78
+ ? 'affected:all'
79
+ : deployed === 0
80
+ ? 'affected:none'
81
+ : 'affected',
82
+ };
83
+ }
84
+ //# sourceMappingURL=affected-lifecycle.js.map
@@ -0,0 +1,3 @@
1
+ export declare const WORKSPACE_DEPLOYMENT_ID_PATTERN: RegExp;
2
+ export declare function createWorkspaceDeploymentId(createUuid?: () => string): string;
3
+ export declare function normalizeWorkspaceDeploymentId(value: unknown): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WORKSPACE_DEPLOYMENT_ID_PATTERN = void 0;
4
+ exports.createWorkspaceDeploymentId = createWorkspaceDeploymentId;
5
+ exports.normalizeWorkspaceDeploymentId = normalizeWorkspaceDeploymentId;
6
+ const node_crypto_1 = require("node:crypto");
7
+ exports.WORKSPACE_DEPLOYMENT_ID_PATTERN = /^ebkws-[a-f0-9]{32}$/u;
8
+ function createWorkspaceDeploymentId(createUuid = node_crypto_1.randomUUID) {
9
+ const uuid = createUuid();
10
+ if (!/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u.test(uuid)) {
11
+ throw new Error('Workspace deployment identity generation requires one lowercase UUIDv4.');
12
+ }
13
+ return `ebkws-${uuid.replace(/-/g, '')}`;
14
+ }
15
+ function normalizeWorkspaceDeploymentId(value) {
16
+ if (typeof value !== 'string' ||
17
+ !exports.WORKSPACE_DEPLOYMENT_ID_PATTERN.test(value)) {
18
+ throw new Error('Workspace deployment ID must be ebkws- followed by exactly 128 bits of lowercase hexadecimal identity.');
19
+ }
20
+ return value;
21
+ }
22
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1,4 @@
1
+ export * from './affected-lifecycle.js';
2
+ export * from './identity.js';
3
+ export * from './migration.js';
4
+ export * from './ownership.js';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./affected-lifecycle.js"), exports);
5
+ tslib_1.__exportStar(require("./identity.js"), exports);
6
+ tslib_1.__exportStar(require("./migration.js"), exports);
7
+ tslib_1.__exportStar(require("./ownership.js"), exports);
8
+ //# sourceMappingURL=index.js.map