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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (805) hide show
  1. package/README.md +44 -10
  2. package/executors.json +21 -1
  3. package/generators.json +10 -0
  4. package/package.json +31 -7
  5. package/src/aws/child-environment.d.ts +10 -0
  6. package/src/aws/child-environment.js +77 -0
  7. package/src/aws/identity.d.ts +13 -0
  8. package/src/aws/identity.js +41 -0
  9. package/src/aws-authority/index.d.ts +2 -0
  10. package/src/aws-authority/index.js +6 -0
  11. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  12. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  13. package/src/aws-authority/stage-authority.d.ts +248 -0
  14. package/src/aws-authority/stage-authority.js +3558 -0
  15. package/src/blueprints/external-sandbox.d.ts +1 -1
  16. package/src/blueprints/external-sandbox.js +21 -9
  17. package/src/blueprints/manifest.d.ts +1 -1
  18. package/src/blueprints/resolver.js +28 -15
  19. package/src/cli/bootstrap.d.ts +1 -1
  20. package/src/cli/deploy-runtime.d.ts +30 -0
  21. package/src/cli/deploy-runtime.js +174 -0
  22. package/src/cli/dev-command.d.ts +18 -4
  23. package/src/cli/dev-command.js +71 -0
  24. package/src/cli/main.d.ts +9 -1
  25. package/src/cli/main.js +157 -24
  26. package/src/cli/output.d.ts +1 -1
  27. package/src/cli/output.js +1 -1
  28. package/src/cli/personal-secret-runtime.d.ts +12 -0
  29. package/src/cli/personal-secret-runtime.js +18 -3
  30. package/src/cli/secret-terminal.js +1 -1
  31. package/src/container-images.d.ts +1 -1
  32. package/src/container-images.js +1 -1
  33. package/src/developer-agent/context.js +41 -9
  34. package/src/developer-agent/generator-planning.js +20 -6
  35. package/src/developer-agent/git-inspection.d.ts +6 -2
  36. package/src/developer-agent/git-inspection.js +78 -6
  37. package/src/developer-agent/model.d.ts +5 -3
  38. package/src/developer-agent/model.js +4 -4
  39. package/src/developer-agent/operation-registry.d.ts +15 -0
  40. package/src/developer-agent/operation-registry.js +342 -49
  41. package/src/developer-agent/planning.d.ts +8 -1
  42. package/src/developer-agent/planning.js +39 -16
  43. package/src/developer-agent/preview-changes.d.ts +2 -0
  44. package/src/developer-agent/preview-changes.js +14 -2
  45. package/src/developer-agent/preview-source.js +3 -0
  46. package/src/developer-agent/validation.js +25 -9
  47. package/src/developer-agent/workspace-inspection.js +60 -5
  48. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  49. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  50. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  51. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  52. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  53. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  54. package/src/executors/dev-task-cleanup/schema.json +9 -0
  55. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  56. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  57. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  58. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  59. package/src/executors/fleet/fleet.js +1 -1
  60. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  61. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  62. package/src/executors/foundation-preflight/schema.json +5 -0
  63. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  64. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  65. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  66. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  67. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  68. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  69. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  70. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  71. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  72. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  73. package/src/executors/github-bootstrap/schema.json +7 -1
  74. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  75. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  76. package/src/executors/infrastructure-plan/schema.json +12 -52
  77. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  78. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  79. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  80. package/src/executors/local-deploy/local-approval.js +39 -0
  81. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  82. package/src/executors/local-deploy/local-deploy.js +1404 -0
  83. package/src/executors/local-deploy/schema.json +70 -0
  84. package/src/executors/refresh/refresh.js +2 -2
  85. package/src/executors/remove/remove.js +2 -2
  86. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  87. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  88. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  89. package/src/executors/secret-initialize/schema.json +42 -0
  90. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  91. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  92. package/src/executors/secret-metadata/schema.json +5 -0
  93. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  94. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  95. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  96. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  97. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  98. package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
  99. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  100. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  101. package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
  102. package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
  103. package/src/executors/sst-lifecycle/schema.json +8 -1
  104. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  105. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  106. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  107. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  108. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  109. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  110. package/src/executors/unlock/unlock.js +2 -2
  111. package/src/foundation/capability-plan.d.ts +43 -0
  112. package/src/foundation/capability-plan.js +168 -0
  113. package/src/foundation/cost-estimate.d.ts +170 -0
  114. package/src/foundation/cost-estimate.js +683 -0
  115. package/src/foundation/discovery.d.ts +14 -11
  116. package/src/foundation/discovery.js +32 -6
  117. package/src/foundation/index.d.ts +4 -0
  118. package/src/foundation/index.js +11 -0
  119. package/src/foundation/local-database-contract.d.ts +20 -0
  120. package/src/foundation/local-database-contract.js +262 -13
  121. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  122. package/src/foundation/local-private-smoke-access.js +197 -0
  123. package/src/foundation/logging-preflight.js +1 -1
  124. package/src/foundation/logging.d.ts +3 -1
  125. package/src/foundation/logging.js +1 -1
  126. package/src/foundation/partial-state.d.ts +10 -0
  127. package/src/foundation/partial-state.js +21 -0
  128. package/src/foundation/preflight.js +37 -18
  129. package/src/foundation/private-smoke-access.d.ts +25 -0
  130. package/src/foundation/private-smoke-access.js +135 -0
  131. package/src/foundation/private-smoke-admission.d.ts +45 -0
  132. package/src/foundation/private-smoke-admission.js +180 -0
  133. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  134. package/src/foundation/private-smoke-control-plane.js +184 -0
  135. package/src/foundation/provision-database-bindings.d.ts +5 -0
  136. package/src/foundation/provision-database-bindings.js +41 -8
  137. package/src/foundation/provision-logical-database.js +15 -8
  138. package/src/foundation/requirements.d.ts +3 -3
  139. package/src/foundation/requirements.js +24 -12
  140. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  141. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  142. package/src/foundation/router-waf.d.ts +149 -0
  143. package/src/foundation/router-waf.js +809 -0
  144. package/src/foundation/stages.d.ts +1 -0
  145. package/src/foundation/stages.js +11 -0
  146. package/src/generators/blueprint/blueprint.d.ts +5 -0
  147. package/src/generators/blueprint/blueprint.js +102 -0
  148. package/src/generators/blueprint/files.d.ts +6 -0
  149. package/src/generators/blueprint/files.js +217 -0
  150. package/src/generators/blueprint/schema.d.ts +4 -0
  151. package/src/generators/blueprint/schema.json +18 -0
  152. package/src/generators/formatting.d.ts +8 -0
  153. package/src/generators/formatting.js +141 -0
  154. package/src/generators/function/function.js +38 -17
  155. package/src/generators/logging-registry.d.ts +2 -0
  156. package/src/generators/logging-registry.js +22 -0
  157. package/src/generators/post-generation-install.js +2 -2
  158. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  159. package/src/generators/preset/dependency-overrides.js +55 -0
  160. package/src/generators/preset/generator.js +43 -3
  161. package/src/generators/preset/schema.d.ts +10 -0
  162. package/src/generators/preset/schema.json +47 -0
  163. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  164. package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
  165. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  166. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  167. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  168. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  169. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  170. package/src/generators/preset/workspace-files-developer-agent.js +162 -44
  171. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  172. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  173. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  174. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  175. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  176. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  177. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  178. package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
  179. package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
  180. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  181. package/src/generators/preset/workspace-files-stage-authority.js +529 -0
  182. package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
  183. package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
  184. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  185. package/src/generators/preset/workspace-files-thin-docs.js +370 -0
  186. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  187. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  188. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  189. package/src/generators/preset/workspace-files.d.ts +18 -2
  190. package/src/generators/preset/workspace-files.js +1525 -609
  191. package/src/generators/repository-policy/repository-policy.js +235 -5
  192. package/src/generators/repository-policy/schema.d.ts +10 -0
  193. package/src/generators/repository-policy/schema.json +80 -4
  194. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  195. package/src/generators/repository-policy/tree-policy.js +25 -0
  196. package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
  197. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  198. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  199. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  200. package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
  201. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
  202. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  203. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  204. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  205. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  206. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  207. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  208. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  209. package/src/generators/slice/built-in-plan-data-files.js +176 -1200
  210. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  211. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  212. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  213. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  214. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  215. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  216. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
  217. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  218. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  219. package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
  220. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  221. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
  222. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
  223. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  224. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  225. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  226. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  227. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  228. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  229. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  230. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  231. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  232. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  233. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  234. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  235. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  236. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  237. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  238. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  239. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  240. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  241. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  242. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  243. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  244. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  246. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  247. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  248. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  249. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  250. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  251. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  252. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  253. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  254. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  255. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
  257. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  258. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  259. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  261. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  262. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  263. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  264. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  265. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  266. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  267. package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
  268. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  269. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  270. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  271. package/src/generators/slice/built-in-plan-shared.js +41 -19
  272. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  273. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  274. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  276. package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
  277. package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
  278. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  279. package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
  280. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  281. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  282. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  283. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  284. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  285. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  286. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  287. package/src/generators/slice/built-in-plan.d.ts +11 -1
  288. package/src/generators/slice/built-in-plan.js +83 -30
  289. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  290. package/src/generators/slice/data-policy-review-seed.js +22 -0
  291. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  292. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  293. package/src/generators/slice/local-source-identity.d.ts +2 -0
  294. package/src/generators/slice/local-source-identity.js +31 -0
  295. package/src/generators/slice/persistence-contract.d.ts +14 -0
  296. package/src/generators/slice/persistence-contract.js +32 -0
  297. package/src/generators/slice/slice.js +61 -50
  298. package/src/generators/sql/schema.d.ts +7 -0
  299. package/src/generators/sql/schema.json +38 -0
  300. package/src/generators/sql/sql.d.ts +6 -0
  301. package/src/generators/sql/sql.js +53 -0
  302. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  303. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  304. package/src/generators/upgrade/upgrade.d.ts +15 -1
  305. package/src/generators/upgrade/upgrade.js +435 -44
  306. package/src/generators/workload/frozen-container.d.ts +1 -1
  307. package/src/generators/workload/performance-registration.d.ts +1 -0
  308. package/src/generators/workload/performance-registration.js +9 -11
  309. package/src/generators/workload/service-performance-files.d.ts +1 -0
  310. package/src/generators/workload/service-performance-files.js +27 -7
  311. package/src/generators/workload/workload.d.ts +1 -1
  312. package/src/generators/workload/workload.js +105 -29
  313. package/src/git-policy/action-pins.d.ts +5 -0
  314. package/src/git-policy/action-pins.js +5 -0
  315. package/src/git-policy/github-bootstrap.d.ts +48 -8
  316. package/src/git-policy/github-bootstrap.js +344 -176
  317. package/src/git-policy/routing.d.ts +7 -1
  318. package/src/git-policy/routing.js +62 -1
  319. package/src/index.d.ts +1 -0
  320. package/src/index.js +1 -0
  321. package/src/infrastructure-change/local-capability.d.ts +73 -0
  322. package/src/infrastructure-change/local-capability.js +114 -0
  323. package/src/infrastructure-change/model.d.ts +25 -4
  324. package/src/infrastructure-change/model.js +1 -0
  325. package/src/infrastructure-change/normalize.d.ts +4 -0
  326. package/src/infrastructure-change/normalize.js +47 -7
  327. package/src/infrastructure-change/plan.d.ts +30 -3
  328. package/src/infrastructure-change/plan.js +323 -13
  329. package/src/infrastructure-change/risk.d.ts +3 -1
  330. package/src/infrastructure-change/risk.js +96 -16
  331. package/src/local-dev/browser-verification.d.ts +37 -0
  332. package/src/local-dev/browser-verification.js +281 -0
  333. package/src/local-dev/contracts.d.ts +10 -1
  334. package/src/local-dev/contracts.js +114 -13
  335. package/src/local-dev/dev-command-core.js +24 -5
  336. package/src/local-dev/docker-credential-health.d.ts +14 -0
  337. package/src/local-dev/docker-credential-health.js +94 -0
  338. package/src/local-dev/environment-inspector.d.ts +7 -0
  339. package/src/local-dev/environment-inspector.js +42 -15
  340. package/src/local-dev/environment-state.js +2 -2
  341. package/src/local-dev/errors.d.ts +1 -1
  342. package/src/local-dev/errors.js +2 -0
  343. package/src/local-dev/fleet-client.js +2 -2
  344. package/src/local-dev/fleet-configuration.js +57 -25
  345. package/src/local-dev/fleet-inventory.js +58 -22
  346. package/src/local-dev/fleet-ipc.d.ts +7 -0
  347. package/src/local-dev/fleet-ipc.js +14 -2
  348. package/src/local-dev/fleet-launcher.d.ts +6 -0
  349. package/src/local-dev/fleet-launcher.js +16 -4
  350. package/src/local-dev/fleet-logs.js +50 -22
  351. package/src/local-dev/fleet-process.d.ts +20 -1
  352. package/src/local-dev/fleet-process.js +197 -41
  353. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  354. package/src/local-dev/fleet-runner-evidence.js +56 -0
  355. package/src/local-dev/fleet-runtime.js +268 -229
  356. package/src/local-dev/fleet-session.d.ts +2 -0
  357. package/src/local-dev/fleet-session.js +28 -11
  358. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  359. package/src/local-dev/fleet-state.d.ts +5 -2
  360. package/src/local-dev/fleet-state.js +25 -4
  361. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  362. package/src/local-dev/fleet-supervisor.js +66 -11
  363. package/src/local-dev/fleet-web-start.d.ts +12 -0
  364. package/src/local-dev/fleet-web-start.js +48 -0
  365. package/src/local-dev/identity.js +3 -14
  366. package/src/local-dev/index.d.ts +1 -0
  367. package/src/local-dev/index.js +1 -0
  368. package/src/local-dev/native-completion.d.ts +9 -0
  369. package/src/local-dev/native-completion.js +130 -0
  370. package/src/local-dev/nx-workspace.d.ts +4 -2
  371. package/src/local-dev/nx-workspace.js +11 -6
  372. package/src/local-dev/personal-stage.d.ts +4 -5
  373. package/src/local-dev/personal-stage.js +6 -54
  374. package/src/local-dev/port-claims.d.ts +13 -0
  375. package/src/local-dev/port-claims.js +46 -0
  376. package/src/local-dev/ports.d.ts +14 -2
  377. package/src/local-dev/ports.js +78 -3
  378. package/src/local-dev/private-state.d.ts +11 -0
  379. package/src/local-dev/private-state.js +146 -40
  380. package/src/local-dev/process-group.d.ts +4 -0
  381. package/src/local-dev/process-group.js +29 -0
  382. package/src/local-dev/process-identity.d.ts +8 -0
  383. package/src/local-dev/process-identity.js +31 -1
  384. package/src/local-dev/proxy.js +11 -12
  385. package/src/local-dev/runtime-paths.js +1 -1
  386. package/src/local-dev/slice-claim.js +1 -1
  387. package/src/local-dev/slice-runner.d.ts +15 -6
  388. package/src/local-dev/slice-runner.js +189 -54
  389. package/src/local-dev/task-attachment.d.ts +17 -0
  390. package/src/local-dev/task-attachment.js +73 -0
  391. package/src/local-dev/task-authority.d.ts +10 -0
  392. package/src/local-dev/task-authority.js +27 -0
  393. package/src/local-dev/task-identity.d.ts +33 -0
  394. package/src/local-dev/task-identity.js +418 -0
  395. package/src/local-dev/task-native-writer.d.ts +18 -0
  396. package/src/local-dev/task-native-writer.js +329 -0
  397. package/src/local-dev/tls.js +8 -2
  398. package/src/local-dev/web-launch.d.ts +9 -0
  399. package/src/local-dev/web-launch.js +130 -0
  400. package/src/ownership/composition.d.ts +2 -1
  401. package/src/ownership/composition.js +1 -0
  402. package/src/performance/cost-collection.d.ts +1 -1
  403. package/src/performance/cost-collection.js +4 -2
  404. package/src/performance/cost-controls.d.ts +8 -4
  405. package/src/performance/cost-controls.js +39 -28
  406. package/src/performance/evidence.d.ts +1 -1
  407. package/src/performance/evidence.js +5 -3
  408. package/src/performance/load-safety.js +5 -3
  409. package/src/performance/model.d.ts +4 -4
  410. package/src/performance/model.js +4 -5
  411. package/src/performance/scenario.d.ts +22 -0
  412. package/src/performance/scenario.js +100 -92
  413. package/src/release/index.d.ts +0 -2
  414. package/src/release/index.js +0 -2
  415. package/src/release/source-authority.d.ts +5 -5
  416. package/src/release/source-authority.js +141 -124
  417. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  418. package/src/repository-policy/aurora-preflight.js +4 -1
  419. package/src/repository-policy/capacity-migration.d.ts +3 -0
  420. package/src/repository-policy/capacity-migration.js +21 -0
  421. package/src/repository-policy/deployment-plan.d.ts +4 -1
  422. package/src/repository-policy/deployment-plan.js +9 -0
  423. package/src/repository-policy/foundation-profile.js +10 -1
  424. package/src/repository-policy/policy.d.ts +57 -3
  425. package/src/repository-policy/policy.js +497 -11
  426. package/src/schemas/blueprint-v1.json +5 -4
  427. package/src/schemas/foundation-requirement-v1.json +5 -4
  428. package/src/schemas/performance-policy-v1.json +3 -3
  429. package/src/schemas/repository-policy-v1.json +130 -6
  430. package/src/schemas/testing-evidence-result-v1.json +1 -1
  431. package/src/secrets/adapters.d.ts +7 -2
  432. package/src/secrets/adapters.js +34 -3
  433. package/src/secrets/aws-control-plane.d.ts +10 -1
  434. package/src/secrets/aws-control-plane.js +67 -0
  435. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  436. package/src/secrets/generated-aws-control-plane.js +259 -0
  437. package/src/secrets/metadata.js +38 -10
  438. package/src/secrets/model.d.ts +8 -1
  439. package/src/secrets/model.js +24 -3
  440. package/src/secrets/operator.d.ts +91 -3
  441. package/src/secrets/operator.js +463 -13
  442. package/src/secrets/personal-command.d.ts +18 -2
  443. package/src/secrets/personal-command.js +66 -12
  444. package/src/secrets/registry.d.ts +2 -1
  445. package/src/secrets/registry.js +18 -1
  446. package/src/secrets/verification.js +15 -2
  447. package/src/secrets/workload-access.js +10 -2
  448. package/src/sst-environment-source-format.d.ts +6 -0
  449. package/src/sst-environment-source-format.js +199 -0
  450. package/src/supply-chain/action-pins.js +61 -7
  451. package/src/supply-chain/blueprint-trust-git.js +85 -24
  452. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  453. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  454. package/src/supply-chain/build-output-bounds.js +12 -0
  455. package/src/supply-chain/build-output.d.ts +7 -1
  456. package/src/supply-chain/build-output.js +177 -24
  457. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  458. package/src/supply-chain/ecr-scanning.js +11 -7
  459. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  460. package/src/supply-chain/ecs-deployed-image.js +6 -4
  461. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  462. package/src/supply-chain/generated-command.js +1 -0
  463. package/src/supply-chain/generated-container-release-command.js +1285 -124
  464. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  465. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  466. package/src/supply-chain/generated-files.js +25 -14
  467. package/src/supply-chain/generated-scanner-command.js +2 -1
  468. package/src/supply-chain/index.d.ts +1 -1
  469. package/src/supply-chain/index.js +2 -1
  470. package/src/supply-chain/sbom.d.ts +1 -1
  471. package/src/supply-chain/sbom.js +30 -5
  472. package/src/supply-chain/scanner.js +3 -0
  473. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  474. package/src/testing-evidence/fixture-scope.js +4 -2
  475. package/src/testing-evidence/result.d.ts +2 -1
  476. package/src/testing-evidence/result.js +18 -4
  477. package/src/workload-roles/account-baseline.d.ts +11 -0
  478. package/src/workload-roles/account-baseline.js +253 -16
  479. package/src/workload-roles/authority.d.ts +3 -1
  480. package/src/workload-roles/authority.js +48 -2
  481. package/src/workload-roles/aws-s3-state.js +27 -0
  482. package/src/workload-roles/boundary.d.ts +2 -1
  483. package/src/workload-roles/boundary.js +9 -2
  484. package/src/workload-roles/handler.js +52 -24
  485. package/src/workload-roles/index.d.ts +10 -17
  486. package/src/workload-roles/index.js +5 -18
  487. package/src/workload-roles/injection.js +1 -1
  488. package/src/workload-roles/provisioner.js +12 -4
  489. package/src/workload-roles/registration.d.ts +1 -0
  490. package/src/workload-roles/registration.js +5 -0
  491. package/src/workload-roles/stage-boundary.js +1 -1
  492. package/src/workload-roles/standard-slice.js +3 -3
  493. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  494. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  495. package/src/workspace-deployment/identity.d.ts +3 -0
  496. package/src/workspace-deployment/identity.js +22 -0
  497. package/src/workspace-deployment/index.d.ts +4 -0
  498. package/src/workspace-deployment/index.js +8 -0
  499. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  500. package/src/workspace-deployment/migration-evidence.js +83 -0
  501. package/src/workspace-deployment/migration.d.ts +27 -0
  502. package/src/workspace-deployment/migration.js +109 -0
  503. package/src/workspace-deployment/ownership.d.ts +81 -0
  504. package/src/workspace-deployment/ownership.js +381 -0
  505. package/src/api-contract/baseline-update.js.map +0 -1
  506. package/src/api-contract/compatibility.js.map +0 -1
  507. package/src/api-contract/contract-graph.js.map +0 -1
  508. package/src/api-contract/evidence.js.map +0 -1
  509. package/src/api-contract/index.js.map +0 -1
  510. package/src/api-contract/model.fixtures.d.ts +0 -2
  511. package/src/api-contract/model.fixtures.js +0 -81
  512. package/src/api-contract/model.fixtures.js.map +0 -1
  513. package/src/api-contract/model.js.map +0 -1
  514. package/src/api-contract/rollout.js.map +0 -1
  515. package/src/authorization/compatibility.js.map +0 -1
  516. package/src/authorization/index.js.map +0 -1
  517. package/src/blueprints/execution.js.map +0 -1
  518. package/src/blueprints/external-sandbox.js.map +0 -1
  519. package/src/blueprints/index.js.map +0 -1
  520. package/src/blueprints/inputs.js.map +0 -1
  521. package/src/blueprints/manifest.js.map +0 -1
  522. package/src/blueprints/resolver.js.map +0 -1
  523. package/src/blueprints/transitions.js.map +0 -1
  524. package/src/cli/agent-command.js.map +0 -1
  525. package/src/cli/agent-runtime.js.map +0 -1
  526. package/src/cli/blueprint-authority.js.map +0 -1
  527. package/src/cli/blueprint-command.js.map +0 -1
  528. package/src/cli/bootstrap.js.map +0 -1
  529. package/src/cli/dev-command.js.map +0 -1
  530. package/src/cli/main.js.map +0 -1
  531. package/src/cli/output.js.map +0 -1
  532. package/src/cli/personal-secret-runtime.js.map +0 -1
  533. package/src/cli/secret-terminal.js.map +0 -1
  534. package/src/container-images.js.map +0 -1
  535. package/src/data-lifecycle/index.js.map +0 -1
  536. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  537. package/src/data-lifecycle/model.fixtures.js +0 -244
  538. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  539. package/src/data-lifecycle/model.js.map +0 -1
  540. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  541. package/src/data-lifecycle/validation.js.map +0 -1
  542. package/src/database-retirement/contract.js.map +0 -1
  543. package/src/database-retirement/index.js.map +0 -1
  544. package/src/deterministic-order.js.map +0 -1
  545. package/src/developer-agent/context.js.map +0 -1
  546. package/src/developer-agent/generator-planning.js.map +0 -1
  547. package/src/developer-agent/generator-preview.js.map +0 -1
  548. package/src/developer-agent/git-inspection.js.map +0 -1
  549. package/src/developer-agent/handoff.js.map +0 -1
  550. package/src/developer-agent/index.js.map +0 -1
  551. package/src/developer-agent/model.js.map +0 -1
  552. package/src/developer-agent/operation-registry.js.map +0 -1
  553. package/src/developer-agent/ordering.js.map +0 -1
  554. package/src/developer-agent/planning.js.map +0 -1
  555. package/src/developer-agent/preview-changes.js.map +0 -1
  556. package/src/developer-agent/preview-source.js.map +0 -1
  557. package/src/developer-agent/validation.js.map +0 -1
  558. package/src/developer-agent/workspace-inspection.js.map +0 -1
  559. package/src/developer-agent/workspace-path.js.map +0 -1
  560. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  561. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  562. package/src/executors/deploy/deploy.js.map +0 -1
  563. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  564. package/src/executors/dev/dev.js.map +0 -1
  565. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  566. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  567. package/src/executors/developer-context/developer-context.js.map +0 -1
  568. package/src/executors/fleet/fleet.js.map +0 -1
  569. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  570. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  571. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  572. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  573. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  574. package/src/executors/refresh/refresh.js.map +0 -1
  575. package/src/executors/remove/remove.js.map +0 -1
  576. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  577. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  578. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  579. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  580. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  581. package/src/executors/unlock/unlock.js.map +0 -1
  582. package/src/executors/work-markers/work-markers.js.map +0 -1
  583. package/src/foundation/discovery.js.map +0 -1
  584. package/src/foundation/index.js.map +0 -1
  585. package/src/foundation/local-database-contract.js.map +0 -1
  586. package/src/foundation/logging-preflight.js.map +0 -1
  587. package/src/foundation/logging.js.map +0 -1
  588. package/src/foundation/preflight.js.map +0 -1
  589. package/src/foundation/provision-database-bindings.js.map +0 -1
  590. package/src/foundation/provision-logical-database.js.map +0 -1
  591. package/src/foundation/requirements.js.map +0 -1
  592. package/src/foundation/router-origin-proof.js.map +0 -1
  593. package/src/foundation/stages.js.map +0 -1
  594. package/src/frontend-security/index.js.map +0 -1
  595. package/src/frontend-security/security-headers.js.map +0 -1
  596. package/src/generators/feature-registry.js.map +0 -1
  597. package/src/generators/function/function.js.map +0 -1
  598. package/src/generators/job/job.js.map +0 -1
  599. package/src/generators/logging-registry.js.map +0 -1
  600. package/src/generators/post-generation-install.js.map +0 -1
  601. package/src/generators/preset/generator.js.map +0 -1
  602. package/src/generators/preset/tool-versions.js.map +0 -1
  603. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  604. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  605. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  606. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  607. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  608. package/src/generators/preset/workspace-files.js.map +0 -1
  609. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  610. package/src/generators/service/service.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  629. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  630. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  631. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  632. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  633. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  634. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  635. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  636. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  637. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  638. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  639. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  640. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  641. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  642. package/src/generators/slice/built-in-plan.js.map +0 -1
  643. package/src/generators/slice/slice.js.map +0 -1
  644. package/src/generators/upgrade/upgrade.js.map +0 -1
  645. package/src/generators/workload/frozen-container.js.map +0 -1
  646. package/src/generators/workload/performance-registration.js.map +0 -1
  647. package/src/generators/workload/reliability-registration.js.map +0 -1
  648. package/src/generators/workload/service-performance-files.js.map +0 -1
  649. package/src/generators/workload/workload.js.map +0 -1
  650. package/src/git-policy/action-pins.js.map +0 -1
  651. package/src/git-policy/github-bootstrap.js.map +0 -1
  652. package/src/git-policy/index.js.map +0 -1
  653. package/src/git-policy/routing.js.map +0 -1
  654. package/src/index.js.map +0 -1
  655. package/src/infrastructure-change/convergence.js.map +0 -1
  656. package/src/infrastructure-change/drift.js.map +0 -1
  657. package/src/infrastructure-change/index.js.map +0 -1
  658. package/src/infrastructure-change/model.js.map +0 -1
  659. package/src/infrastructure-change/normalize.js.map +0 -1
  660. package/src/infrastructure-change/plan.js.map +0 -1
  661. package/src/infrastructure-change/risk.js.map +0 -1
  662. package/src/infrastructure-change/summary.js.map +0 -1
  663. package/src/local-dev/context-discovery.js.map +0 -1
  664. package/src/local-dev/contract-validation.js.map +0 -1
  665. package/src/local-dev/contracts.js.map +0 -1
  666. package/src/local-dev/control-contract.js.map +0 -1
  667. package/src/local-dev/dev-command-core.js.map +0 -1
  668. package/src/local-dev/effects.js.map +0 -1
  669. package/src/local-dev/environment-inspector.js.map +0 -1
  670. package/src/local-dev/environment-state.js.map +0 -1
  671. package/src/local-dev/errors.js.map +0 -1
  672. package/src/local-dev/fleet-client.js.map +0 -1
  673. package/src/local-dev/fleet-configuration.js.map +0 -1
  674. package/src/local-dev/fleet-inventory.js.map +0 -1
  675. package/src/local-dev/fleet-ipc.js.map +0 -1
  676. package/src/local-dev/fleet-launcher.js.map +0 -1
  677. package/src/local-dev/fleet-lock.js.map +0 -1
  678. package/src/local-dev/fleet-logs.js.map +0 -1
  679. package/src/local-dev/fleet-process.js.map +0 -1
  680. package/src/local-dev/fleet-runtime.js.map +0 -1
  681. package/src/local-dev/fleet-session.js.map +0 -1
  682. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  683. package/src/local-dev/fleet-startup.js.map +0 -1
  684. package/src/local-dev/fleet-state.js.map +0 -1
  685. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  686. package/src/local-dev/fleet-supervisor.js.map +0 -1
  687. package/src/local-dev/gateway-daemon.js.map +0 -1
  688. package/src/local-dev/gateway.js.map +0 -1
  689. package/src/local-dev/identity.js.map +0 -1
  690. package/src/local-dev/index.js.map +0 -1
  691. package/src/local-dev/local-context.js.map +0 -1
  692. package/src/local-dev/nx-workspace.js.map +0 -1
  693. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  694. package/src/local-dev/personal-stage.js.map +0 -1
  695. package/src/local-dev/portless.js.map +0 -1
  696. package/src/local-dev/ports.js.map +0 -1
  697. package/src/local-dev/private-state.js.map +0 -1
  698. package/src/local-dev/process-identity.js.map +0 -1
  699. package/src/local-dev/proxy.js.map +0 -1
  700. package/src/local-dev/runtime-paths.js.map +0 -1
  701. package/src/local-dev/secret-slice-claim.js.map +0 -1
  702. package/src/local-dev/slice-claim.js.map +0 -1
  703. package/src/local-dev/slice-runner.js.map +0 -1
  704. package/src/local-dev/tls.js.map +0 -1
  705. package/src/ownership/composition.js.map +0 -1
  706. package/src/ownership/foundation-record.js.map +0 -1
  707. package/src/ownership/hash.js.map +0 -1
  708. package/src/ownership/index.js.map +0 -1
  709. package/src/ownership/json-ownership.js.map +0 -1
  710. package/src/ownership/record.js.map +0 -1
  711. package/src/ownership/workspace-record.js.map +0 -1
  712. package/src/performance/cost-collection.js.map +0 -1
  713. package/src/performance/cost-controls.js.map +0 -1
  714. package/src/performance/evidence.js.map +0 -1
  715. package/src/performance/index.js.map +0 -1
  716. package/src/performance/load-safety.js.map +0 -1
  717. package/src/performance/model.js.map +0 -1
  718. package/src/performance/pr-artifact-budget.js.map +0 -1
  719. package/src/performance/runner.js.map +0 -1
  720. package/src/performance/scenario-endpoint.js.map +0 -1
  721. package/src/performance/scenario.js.map +0 -1
  722. package/src/performance/test-fixtures.d.ts +0 -7
  723. package/src/performance/test-fixtures.js +0 -169
  724. package/src/performance/test-fixtures.js.map +0 -1
  725. package/src/performance/unit-cost.js.map +0 -1
  726. package/src/release/index.js.map +0 -1
  727. package/src/release/lifecycle.js.map +0 -1
  728. package/src/release/manifest.js.map +0 -1
  729. package/src/release/rollout.js.map +0 -1
  730. package/src/release/source-authority.js.map +0 -1
  731. package/src/repository-policy/aurora-preflight.js.map +0 -1
  732. package/src/repository-policy/deployment-plan.js.map +0 -1
  733. package/src/repository-policy/foundation-profile.js.map +0 -1
  734. package/src/repository-policy/index.js.map +0 -1
  735. package/src/repository-policy/policy.js.map +0 -1
  736. package/src/secrets/adapters.js.map +0 -1
  737. package/src/secrets/aws-control-plane.js.map +0 -1
  738. package/src/secrets/declaration-verification.js.map +0 -1
  739. package/src/secrets/guardrails.js.map +0 -1
  740. package/src/secrets/index.js.map +0 -1
  741. package/src/secrets/metadata.js.map +0 -1
  742. package/src/secrets/model.js.map +0 -1
  743. package/src/secrets/operator.js.map +0 -1
  744. package/src/secrets/permissions.js.map +0 -1
  745. package/src/secrets/personal-command.js.map +0 -1
  746. package/src/secrets/personal-ledger.js.map +0 -1
  747. package/src/secrets/registry.js.map +0 -1
  748. package/src/secrets/verification.js.map +0 -1
  749. package/src/secrets/workload-access.js.map +0 -1
  750. package/src/supply-chain/action-pins.js.map +0 -1
  751. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  752. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  753. package/src/supply-chain/blueprint-trust.js.map +0 -1
  754. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  755. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  756. package/src/supply-chain/build-output.js.map +0 -1
  757. package/src/supply-chain/common.js.map +0 -1
  758. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  759. package/src/supply-chain/container-release.js.map +0 -1
  760. package/src/supply-chain/ecr-applicability.js.map +0 -1
  761. package/src/supply-chain/ecr-scanning.js.map +0 -1
  762. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  763. package/src/supply-chain/errors.js.map +0 -1
  764. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  765. package/src/supply-chain/generated-command.js.map +0 -1
  766. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  767. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  768. package/src/supply-chain/generated-files.js.map +0 -1
  769. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  770. package/src/supply-chain/index.js.map +0 -1
  771. package/src/supply-chain/inventory.js.map +0 -1
  772. package/src/supply-chain/license-expression.js.map +0 -1
  773. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  774. package/src/supply-chain/policy.js.map +0 -1
  775. package/src/supply-chain/publication.js.map +0 -1
  776. package/src/supply-chain/sbom.js.map +0 -1
  777. package/src/supply-chain/scanner.js.map +0 -1
  778. package/src/supply-chain/vendored-source.js.map +0 -1
  779. package/src/testing-evidence/fixture-scope.js.map +0 -1
  780. package/src/testing-evidence/index.js.map +0 -1
  781. package/src/testing-evidence/quarantine.js.map +0 -1
  782. package/src/testing-evidence/result.js.map +0 -1
  783. package/src/testing-evidence/runner-adapter.js.map +0 -1
  784. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  785. package/src/validation.js.map +0 -1
  786. package/src/work-markers/index.js.map +0 -1
  787. package/src/work-markers/work-markers.js.map +0 -1
  788. package/src/workload-roles/account-baseline.js.map +0 -1
  789. package/src/workload-roles/authority.js.map +0 -1
  790. package/src/workload-roles/aws-adapter.js.map +0 -1
  791. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  792. package/src/workload-roles/aws-s3-state.js.map +0 -1
  793. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  794. package/src/workload-roles/boundary.js.map +0 -1
  795. package/src/workload-roles/convergence.js.map +0 -1
  796. package/src/workload-roles/effective-policy.js.map +0 -1
  797. package/src/workload-roles/handler.js.map +0 -1
  798. package/src/workload-roles/history.js.map +0 -1
  799. package/src/workload-roles/index.js.map +0 -1
  800. package/src/workload-roles/injection.js.map +0 -1
  801. package/src/workload-roles/manifest.js.map +0 -1
  802. package/src/workload-roles/provisioner.js.map +0 -1
  803. package/src/workload-roles/registration.js.map +0 -1
  804. package/src/workload-roles/stage-boundary.js.map +0 -1
  805. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runLocalPrivateSmoke = runLocalPrivateSmoke;
4
+ const client_cloudfront_1 = require("@aws-sdk/client-cloudfront");
5
+ const client_wafv2_1 = require("@aws-sdk/client-wafv2");
6
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
7
+ const node_crypto_1 = require("node:crypto");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const process_identity_js_1 = require("../local-dev/process-identity.js");
11
+ const fleet_lock_js_1 = require("../local-dev/fleet-lock.js");
12
+ const private_state_js_1 = require("../local-dev/private-state.js");
13
+ const index_js_1 = require("../repository-policy/index.js");
14
+ const federated_credential_transport_js_1 = require("../executors/local-deploy/federated-credential-transport.js");
15
+ const router_waf_js_1 = require("./router-waf.js");
16
+ const private_smoke_control_plane_js_1 = require("./private-smoke-control-plane.js");
17
+ const private_smoke_admission_js_1 = require("./private-smoke-admission.js");
18
+ function check(value, message) {
19
+ if (!value)
20
+ throw new Error(`Local private smoke: ${message}`);
21
+ }
22
+ /** Used after the local lifecycle verifies source, policy and federated role.
23
+ * A private process receipt proves recovery ownership, not deployment authority. */
24
+ async function runLocalPrivateSmoke(input, dependencies = {}) {
25
+ check(!(0, index_js_1.requiresGithubDeployment)(input.deploymentProfile, input.stage), 'stage requires protected GitHub authority');
26
+ const policy = (0, router_waf_js_1.normalizeRouterWafPolicy)(JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(input.root, 'packages/foundation/security/router-waf.json'), 'utf8')));
27
+ check(policy.deploymentProfile === input.deploymentProfile, 'deployment profile differs');
28
+ const stagePolicy = policy.stages[input.stage];
29
+ check(stagePolicy, 'stage is inactive');
30
+ if (stagePolicy.access === 'public' || stagePolicy.mode === 'count') {
31
+ await input.run();
32
+ return;
33
+ }
34
+ const allowedCidrs = stagePolicy.allowedCidrs.filter((cidr) => !cidr.includes(':'));
35
+ // Temporary admission has its own empty set; never update the baseline.
36
+ const baseline = [];
37
+ check(/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(input.source), 'source identity is invalid');
38
+ const policyDigest = (0, router_waf_js_1.routerWafPolicyDigest)(policy);
39
+ const identity = {
40
+ account: input.account,
41
+ stage: input.stage,
42
+ workspace: input.workspace,
43
+ policyDigest,
44
+ };
45
+ const open = dependencies.open ??
46
+ (async (resourceIdentity, url) => {
47
+ const environment = input.credentialEnvironment;
48
+ check(environment.AWS_PROFILE &&
49
+ environment.AWS_CONFIG_FILE &&
50
+ environment.AWS_SHARED_CREDENTIALS_FILE, 'verified private credential transport is missing');
51
+ const credentials = (0, credential_providers_1.fromIni)({
52
+ profile: environment.AWS_PROFILE,
53
+ configFilepath: environment.AWS_CONFIG_FILE,
54
+ filepath: environment.AWS_SHARED_CREDENTIALS_FILE,
55
+ // The invocation refreshes this same file before smoke. Ownership
56
+ // checks may already have populated Smithy's shared ini-file cache.
57
+ ignoreCache: true,
58
+ });
59
+ const options = {
60
+ credentials,
61
+ region: 'us-east-1',
62
+ maxAttempts: 3,
63
+ requestHandler: { connectionTimeout: 10_000, requestTimeout: 30_000 },
64
+ };
65
+ return (0, private_smoke_control_plane_js_1.openPrivateSmokeControlPlane)(resourceIdentity, url, {
66
+ waf: new client_wafv2_1.WAFV2Client({
67
+ ...options,
68
+ endpoint: 'https://wafv2.us-east-1.amazonaws.com',
69
+ }),
70
+ cloudfront: new client_cloudfront_1.CloudFrontClient({
71
+ ...options,
72
+ endpoint: 'https://cloudfront.amazonaws.com',
73
+ }),
74
+ });
75
+ });
76
+ const store = await open(identity, input.url);
77
+ const request = dependencies.fetch ?? fetch;
78
+ const wait = dependencies.wait ??
79
+ ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
80
+ const path = (0, node_path_1.join)((0, node_fs_1.realpathSync)(input.root), '.ebk/evidence/local-smoke', `${input.stage}.json`);
81
+ const security = dependencies.security;
82
+ const readOwner = () => {
83
+ const value = JSON.parse((0, private_state_js_1.readPrivateFile)(path, security).toString('utf8'));
84
+ check(value?.kind === 'ebk-local-smoke-owner' &&
85
+ value.schemaVersion === 1 &&
86
+ value.account === input.account &&
87
+ value.stage === input.stage &&
88
+ value.workspace === input.workspace &&
89
+ value.policyDigest === policyDigest, 'retained owner or policy differs; preserve recovery evidence');
90
+ (0, fleet_lock_js_1.validateFleetProcessIdentity)(value.owner);
91
+ check(value.context?.authority === 'local' &&
92
+ /^[a-f0-9]{32}$/.test(value.context.run) &&
93
+ /^[1-9]\d*$/.test(value.context.attempt) &&
94
+ /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(value.context.source) &&
95
+ JSON.stringify(value.context.baseline) === JSON.stringify(baseline), 'retained admission context is invalid');
96
+ return value;
97
+ };
98
+ const releaseOwner = (expected) => {
99
+ check(JSON.stringify(readOwner()) === JSON.stringify(expected), 'private owner changed; cleanup not accepted');
100
+ const retired = `${path}.${expected.context.run}.completed`;
101
+ check(!(0, node_fs_1.existsSync)(retired), 'prior recovery completion is unresolved');
102
+ (0, node_fs_1.renameSync)(path, retired);
103
+ if ((0, private_state_js_1.readPrivateFile)(retired, security).toString('utf8') !==
104
+ JSON.stringify(expected)) {
105
+ if (!(0, node_fs_1.existsSync)(path))
106
+ (0, node_fs_1.renameSync)(retired, path);
107
+ throw new Error('Local private smoke: owner changed during retirement');
108
+ }
109
+ (0, node_fs_1.unlinkSync)(retired);
110
+ };
111
+ if ((0, node_fs_1.existsSync)(path)) {
112
+ (0, private_state_js_1.assertPrivatePath)((0, node_path_1.join)(input.root, '.ebk/evidence/local-smoke'), 'directory', security);
113
+ const previous = readOwner();
114
+ check((dependencies.probe ?? process_identity_js_1.probeProcessIdentity)(previous.owner) === 'absent', 'prior smoke process is active or ambiguous');
115
+ await (0, private_smoke_admission_js_1.recoverSmokeAdmission)(store, baseline, async (lease) => lease.authority === 'local' &&
116
+ lease.run === previous.context.run &&
117
+ lease.attempt === previous.context.attempt &&
118
+ lease.source === previous.context.source);
119
+ releaseOwner(previous);
120
+ }
121
+ else {
122
+ // Foreign/local-without-receipt and hosted leases must not be claimed.
123
+ await (0, private_smoke_admission_js_1.recoverSmokeAdmission)(store, baseline, async () => false);
124
+ }
125
+ const ipResponse = await request('https://checkip.amazonaws.com', {
126
+ redirect: 'error',
127
+ signal: AbortSignal.timeout(15_000),
128
+ });
129
+ check(ipResponse.ok, 'operator IPv4 lookup failed');
130
+ const address = await ipResponse.text();
131
+ check(address.length <= 64, 'operator IPv4 response exceeds bound');
132
+ const cidr = (0, private_smoke_admission_js_1.publicRunnerIpv4)(address.trim());
133
+ if ((0, private_smoke_admission_js_1.runnerAlreadyAllowed)(cidr, allowedCidrs)) {
134
+ await input.run();
135
+ return;
136
+ }
137
+ const owner = (dependencies.capture ?? process_identity_js_1.captureProcessIdentity)();
138
+ const context = {
139
+ authority: 'local',
140
+ run: (0, node_crypto_1.randomBytes)(16).toString('hex'),
141
+ attempt: String(owner.pid),
142
+ source: input.source,
143
+ baseline,
144
+ };
145
+ const record = {
146
+ kind: 'ebk-local-smoke-owner',
147
+ schemaVersion: 1,
148
+ ...identity,
149
+ owner,
150
+ context,
151
+ };
152
+ check((0, private_state_js_1.createPrivateFileExclusive)(path, JSON.stringify(record), security), 'another invocation owns local smoke');
153
+ async function observe(allowed, signal) {
154
+ for (let i = 0; i < 24; i++) {
155
+ signal?.throwIfAborted();
156
+ const response = await request(input.url, {
157
+ redirect: 'manual',
158
+ signal: signal
159
+ ? AbortSignal.any([signal, AbortSignal.timeout(15_000)])
160
+ : AbortSignal.timeout(15_000),
161
+ });
162
+ await response.body?.cancel();
163
+ if (allowed
164
+ ? response.status >= 200 && response.status < 400
165
+ : response.status === 403)
166
+ return;
167
+ if (i < 23)
168
+ await wait(5_000);
169
+ }
170
+ throw new Error(`Local private smoke: ${allowed ? 'admission' : 'revocation'} not observed; deployment acceptance prohibited`);
171
+ }
172
+ const unregister = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)(async () => {
173
+ await (0, private_smoke_admission_js_1.cleanupSmokeAdmission)(store, context);
174
+ }, 90);
175
+ try {
176
+ await (0, private_smoke_admission_js_1.withPrivateSmokeAdmission)({
177
+ store,
178
+ context,
179
+ cidr,
180
+ run: input.run,
181
+ awaitAdmission: (signal) => observe(true, signal),
182
+ awaitRevocation: () => observe(false),
183
+ });
184
+ }
185
+ finally {
186
+ try {
187
+ // A failed smoke may still have cleaned up correctly. Retain this receipt
188
+ // only when remote cleanup is unproved, for exact next-run recovery.
189
+ await (0, private_smoke_admission_js_1.cleanupSmokeAdmission)(store, context);
190
+ releaseOwner(record);
191
+ }
192
+ finally {
193
+ unregister();
194
+ }
195
+ }
196
+ }
197
+ //# sourceMappingURL=local-private-smoke-access.js.map
@@ -13,7 +13,7 @@ function record(value) {
13
13
  }
14
14
  function stateResources(value) {
15
15
  const root = record(value);
16
- const deployment = record(root?.deployment);
16
+ const deployment = record(root?.deployment) ?? record(root?.latest) ?? root;
17
17
  const resources = deployment?.resources ?? root?.resources;
18
18
  if (!Array.isArray(resources)) {
19
19
  throw new Error('SST state export does not contain a Pulumi deployment resource list.');
@@ -24,7 +24,9 @@ export interface ManagedLogGroupContract {
24
24
  {
25
25
  DataIdentifier: string[];
26
26
  Operation: {
27
- Audit: Record<string, never>;
27
+ Audit: {
28
+ FindingsDestination: Record<string, never>;
29
+ };
28
30
  };
29
31
  Sid: 'AuditSensitiveData';
30
32
  },
@@ -66,7 +66,7 @@ function createManagedLogGroupContract(input) {
66
66
  Statement: [
67
67
  {
68
68
  DataIdentifier: identifiers,
69
- Operation: { Audit: {} },
69
+ Operation: { Audit: { FindingsDestination: {} } },
70
70
  Sid: 'AuditSensitiveData',
71
71
  },
72
72
  {
@@ -0,0 +1,10 @@
1
+ export declare const FOUNDATION_PENDING_DATABASE_ENDPOINT: "pending.invalid";
2
+ /**
3
+ * Pulumi can evaluate a refresh program against an interrupted first deploy
4
+ * before the Aurora cluster has ever existed. SST currently resolves that
5
+ * absent endpoint as `undefined` and its Aurora link implementation calls
6
+ * `.split()` unconditionally. Keep the refresh program total without
7
+ * publishing a routable cross-stage value. A subsequent deploy receives the
8
+ * real provider output and replaces this sentinel before creating discovery.
9
+ */
10
+ export declare function foundationDatabaseEndpointHost(endpoint: unknown): string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FOUNDATION_PENDING_DATABASE_ENDPOINT = void 0;
4
+ exports.foundationDatabaseEndpointHost = foundationDatabaseEndpointHost;
5
+ exports.FOUNDATION_PENDING_DATABASE_ENDPOINT = 'pending.invalid';
6
+ /**
7
+ * Pulumi can evaluate a refresh program against an interrupted first deploy
8
+ * before the Aurora cluster has ever existed. SST currently resolves that
9
+ * absent endpoint as `undefined` and its Aurora link implementation calls
10
+ * `.split()` unconditionally. Keep the refresh program total without
11
+ * publishing a routable cross-stage value. A subsequent deploy receives the
12
+ * real provider output and replaces this sentinel before creating discovery.
13
+ */
14
+ function foundationDatabaseEndpointHost(endpoint) {
15
+ if (typeof endpoint !== 'string') {
16
+ return exports.FOUNDATION_PENDING_DATABASE_ENDPOINT;
17
+ }
18
+ const host = endpoint.trim().split(':', 1)[0]?.trim() ?? '';
19
+ return host.length > 0 ? host : exports.FOUNDATION_PENDING_DATABASE_ENDPOINT;
20
+ }
21
+ //# sourceMappingURL=partial-state.js.map
@@ -73,19 +73,34 @@ async function evaluateFoundationPreflight(options) {
73
73
  result.invalidNames.forEach((name) => invalidNames.add(name));
74
74
  result.values.forEach((value, name) => values.set(name, value));
75
75
  }
76
+ const value = (key) => values.get((0, discovery_js_1.foundationSsmPath)(foundationStage, key)) ?? '';
77
+ const capabilities = value('capabilities')
78
+ .split(',')
79
+ .map((capability) => capability.trim())
80
+ .filter(Boolean);
81
+ const hasPostgres = capabilities.includes('postgres');
82
+ const resourceNames = (0, discovery_js_1.foundationSsmKeysForCapabilities)(capabilities.filter(requirements_js_1.isStandardFoundationCapability))
83
+ .map((key) => (0, discovery_js_1.foundationSsmPath)(foundationStage, key))
84
+ .filter((name) => !names.includes(name));
85
+ for (const batch of chunks(resourceNames, 10)) {
86
+ const result = await options.readParameters(batch);
87
+ result.invalidNames.forEach((name) => invalidNames.add(name));
88
+ result.values.forEach((value, name) => values.set(name, value));
89
+ }
90
+ names.push(...resourceNames);
76
91
  const issues = names
77
92
  .filter((name) => invalidNames.has(name) || !values.get(name))
78
93
  .map((name) => `missing required parameter ${name}`);
79
94
  const allRequiredParametersMissing = names.every((name) => invalidNames.has(name) || !values.has(name));
80
- const value = (key) => values.get((0, discovery_js_1.foundationSsmPath)(foundationStage, key)) ?? '';
81
95
  const schemaVersion = Number(value('schemaVersion'));
82
96
  if (schemaVersion !== discovery_js_1.FOUNDATION_SSM_SCHEMA_VERSION) {
83
97
  issues.push(`Foundation discovery schema ${value('schemaVersion') || 'missing'} does not match ${discovery_js_1.FOUNDATION_SSM_SCHEMA_VERSION}`);
84
98
  }
85
99
  const databasePort = Number(value('databasePort'));
86
- if (!Number.isSafeInteger(databasePort) ||
87
- databasePort < 1 ||
88
- databasePort > 65535) {
100
+ if (hasPostgres &&
101
+ (!Number.isSafeInteger(databasePort) ||
102
+ databasePort < 1 ||
103
+ databasePort > 65535)) {
89
104
  issues.push('Foundation discovery databasePort must be from 1 through 65535');
90
105
  }
91
106
  const accountMonthlyMaximumUsd = Number(value('accountMonthlyMaximumUsd'));
@@ -103,10 +118,6 @@ async function evaluateFoundationPreflight(options) {
103
118
  if (!isExactCognitoTokenEndpoint(value('identityTokenEndpoint'), options.region)) {
104
119
  issues.push('Foundation discovery identityTokenEndpoint must be the exact Cognito HTTPS token endpoint for the selected AWS Region');
105
120
  }
106
- const capabilities = value('capabilities')
107
- .split(',')
108
- .map((capability) => capability.trim())
109
- .filter(Boolean);
110
121
  const compatibility = (0, requirements_js_1.validateFoundationCompatibility)(options.requirement, {
111
122
  capabilities,
112
123
  contractVersion: value('contractVersion'),
@@ -128,15 +139,21 @@ async function evaluateFoundationPreflight(options) {
128
139
  accountMonthlyMaximumUsd,
129
140
  alertTopicArn: value('alertTopicArn'),
130
141
  capabilities: compatibility.value.capabilities,
131
- clusterId: value('clusterId'),
142
+ ...(capabilities.includes('container-compute')
143
+ ? { clusterId: value('clusterId') }
144
+ : {}),
132
145
  contractVersion: compatibility.value.contractVersion,
133
- databaseClusterArn: value('databaseClusterArn'),
134
- databaseClusterEndpoint: value('databaseClusterEndpoint'),
135
- databaseClusterId: value('databaseClusterId'),
136
- databaseClusterResourceId: value('databaseClusterResourceId'),
137
- databaseHost: value('databaseHost'),
138
- databaseMasterSecretArn: value('databaseMasterSecretArn'),
139
- databasePort,
146
+ ...(hasPostgres
147
+ ? {
148
+ databaseClusterArn: value('databaseClusterArn'),
149
+ databaseClusterEndpoint: value('databaseClusterEndpoint'),
150
+ databaseClusterId: value('databaseClusterId'),
151
+ databaseClusterResourceId: value('databaseClusterResourceId'),
152
+ databaseHost: value('databaseHost'),
153
+ databaseMasterSecretArn: value('databaseMasterSecretArn'),
154
+ databasePort,
155
+ }
156
+ : {}),
140
157
  eventBusArn: value('eventBusArn'),
141
158
  eventBusName: value('eventBusName'),
142
159
  hasPublicDomain: value('hasPublicDomain') === 'true',
@@ -147,7 +164,7 @@ async function evaluateFoundationPreflight(options) {
147
164
  routerDistributionId: value('routerDistributionId'),
148
165
  routerUrl: value('routerUrl'),
149
166
  schemaVersion: discovery_js_1.FOUNDATION_SSM_SCHEMA_VERSION,
150
- vpcId: value('vpcId'),
167
+ ...(capabilities.includes('network') ? { vpcId: value('vpcId') } : {}),
151
168
  },
152
169
  consumerStage,
153
170
  foundationStage,
@@ -163,7 +180,9 @@ function formatFoundationPreflightReport(report) {
163
180
  ];
164
181
  report.issues.forEach((issue) => lines.push(` - ${issue}`));
165
182
  if (!report.ok) {
166
- lines.push(` Deploy the Foundation first: pnpm nx run foundation:deploy --stage=${report.foundationStage}`);
183
+ lines.push(report.foundationStage === 'development'
184
+ ? ' Establish Foundation through ebk deploy development --profile=<approved-profile> --expectedRoleArn=<approved-development-role>; the governed stage lifecycle deploys Foundation before eligible Slices.'
185
+ : ` Establish Foundation through the governed ${report.foundationStage} stage lifecycle under the repository deployment profile; follow its protected deployment runbook.`);
167
186
  }
168
187
  return lines.join('\n');
169
188
  }
@@ -0,0 +1,25 @@
1
+ import { openPrivateSmokeControlPlane } from './private-smoke-control-plane.js';
2
+ import { type SmokeAdmissionLease } from './private-smoke-admission.js';
3
+ import type { CanonicalDeploymentStage, DeploymentProfile } from '../repository-policy/index.js';
4
+ export interface GithubPrivateSmokeInput {
5
+ account: string;
6
+ deploymentProfile: DeploymentProfile;
7
+ root: string;
8
+ source: string;
9
+ stage: CanonicalDeploymentStage;
10
+ url: string;
11
+ workspace: string;
12
+ /** Receives the admission lease when the runner was admitted; undefined when no admission was needed. */
13
+ run: (lease?: SmokeAdmissionLease) => Promise<void>;
14
+ }
15
+ interface PrivateSmokeDependencies {
16
+ environment?: NodeJS.ProcessEnv;
17
+ fetch?: typeof fetch;
18
+ open?: typeof openPrivateSmokeControlPlane;
19
+ wait?: (milliseconds: number) => Promise<void>;
20
+ }
21
+ /** Called only inside the source/role-verified protected stage lifecycle. */
22
+ export declare function runGithubPrivateSmoke(input: GithubPrivateSmokeInput, dependencies?: PrivateSmokeDependencies): Promise<void>;
23
+ /** Generated protected workflow finalizer. It can only remove an exact admission. */
24
+ export declare function cleanupGithubPrivateSmoke(input: Omit<GithubPrivateSmokeInput, 'url' | 'run'>, dependencies?: PrivateSmokeDependencies): Promise<void>;
25
+ export {};
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runGithubPrivateSmoke = runGithubPrivateSmoke;
4
+ exports.cleanupGithubPrivateSmoke = cleanupGithubPrivateSmoke;
5
+ const node_fs_1 = require("node:fs");
6
+ const node_path_1 = require("node:path");
7
+ const router_waf_js_1 = require("./router-waf.js");
8
+ const private_smoke_control_plane_js_1 = require("./private-smoke-control-plane.js");
9
+ const private_smoke_admission_js_1 = require("./private-smoke-admission.js");
10
+ function check(condition, message) {
11
+ if (!condition)
12
+ throw new Error(`Private smoke access: ${message}`);
13
+ }
14
+ /** Called only inside the source/role-verified protected stage lifecycle. */
15
+ async function runGithubPrivateSmoke(input, dependencies = {}) {
16
+ return privateSmokeOperation(input, dependencies, false);
17
+ }
18
+ /** Generated protected workflow finalizer. It can only remove an exact admission. */
19
+ async function cleanupGithubPrivateSmoke(input, dependencies = {}) {
20
+ return privateSmokeOperation({ ...input, url: '', run: async () => undefined }, dependencies, true);
21
+ }
22
+ async function privateSmokeOperation(input, dependencies, cleanupOnly) {
23
+ const environment = dependencies.environment ?? process.env;
24
+ const request = dependencies.fetch ?? fetch;
25
+ const policy = (0, router_waf_js_1.normalizeRouterWafPolicy)(JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(input.root, 'packages/foundation/security/router-waf.json'), 'utf8')));
26
+ check(policy.deploymentProfile === input.deploymentProfile, 'WAF deployment profile differs from repository policy');
27
+ const stagePolicy = policy.stages[input.stage];
28
+ check(stagePolicy, 'inactive WAF stage');
29
+ if (stagePolicy.access === 'public' || stagePolicy.mode === 'count') {
30
+ await input.run();
31
+ return;
32
+ }
33
+ const allowedCidrs = stagePolicy.allowedCidrs.filter((cidr) => !cidr.includes(':'));
34
+ // Temporary admission has its own empty set; never update the baseline.
35
+ const baseline = [];
36
+ const repository = environment.GITHUB_REPOSITORY ?? '';
37
+ const ref = `refs/heads/${input.stage === 'production' ? 'main' : 'develop'}`;
38
+ const workflow = `${repository}/.github/workflows/deploy.yml@${ref}`;
39
+ check(environment.GITHUB_ACTIONS === 'true' &&
40
+ /^[\w.-]+\/[\w.-]+$/.test(repository) &&
41
+ environment.GITHUB_REF === ref &&
42
+ environment.GITHUB_SHA === input.source &&
43
+ environment.EBK_GITHUB_JOB_WORKFLOW_REF === workflow &&
44
+ ((environment.GITHUB_EVENT_NAME === 'workflow_dispatch' &&
45
+ environment.GITHUB_WORKFLOW_REF === workflow) ||
46
+ (environment.GITHUB_EVENT_NAME === 'push' &&
47
+ input.deploymentProfile !== 'starter' &&
48
+ environment.GITHUB_WORKFLOW_REF ===
49
+ `${repository}/.github/workflows/ci.yml@${ref}`)), 'exact protected deployment workflow/source required');
50
+ const run = environment.GITHUB_RUN_ID ?? '';
51
+ const attempt = environment.GITHUB_RUN_ATTEMPT ?? '';
52
+ check(/^[1-9]\d*$/.test(run) &&
53
+ /^[1-9]\d*$/.test(attempt) &&
54
+ /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(input.source), 'invalid protected invocation identity');
55
+ const store = await (dependencies.open ?? private_smoke_control_plane_js_1.openPrivateSmokeControlPlane)({
56
+ account: input.account,
57
+ stage: input.stage,
58
+ workspace: input.workspace,
59
+ policyDigest: (0, router_waf_js_1.routerWafPolicyDigest)(policy),
60
+ }, cleanupOnly ? undefined : input.url);
61
+ await (0, private_smoke_admission_js_1.recoverSmokeAdmission)(store, baseline, async (lease) => {
62
+ // A local process lease has no GitHub run authority; never infer one.
63
+ if (lease.authority === 'local')
64
+ return false;
65
+ // An old attempt of this run can be recovered only after GitHub confirms it ended.
66
+ if (lease.run === run && lease.attempt === attempt)
67
+ return cleanupOnly && lease.source === input.source;
68
+ const token = environment.GITHUB_TOKEN;
69
+ check(token, 'stale admission requires actions:read to confirm the exact prior run completed');
70
+ const response = await request(`https://api.github.com/repos/${repository}/actions/runs/${lease.run}/attempts/${lease.attempt}`, {
71
+ headers: {
72
+ Authorization: `Bearer ${token}`,
73
+ Accept: 'application/vnd.github+json',
74
+ },
75
+ redirect: 'error',
76
+ signal: AbortSignal.timeout(15_000),
77
+ });
78
+ check(response.ok, 'prior workflow status unavailable; admission retained for protected recovery');
79
+ const prior = (await response.json());
80
+ const headRepository = prior.head_repository;
81
+ return (String(prior.id) === lease.run &&
82
+ String(prior.run_attempt) === lease.attempt &&
83
+ prior.status === 'completed' &&
84
+ prior.head_sha === lease.source &&
85
+ prior.head_branch === ref.slice('refs/heads/'.length) &&
86
+ headRepository?.full_name === repository &&
87
+ ((prior.path === '.github/workflows/deploy.yml' &&
88
+ prior.event === 'workflow_dispatch') ||
89
+ (input.deploymentProfile !== 'starter' &&
90
+ prior.path === '.github/workflows/ci.yml' &&
91
+ prior.event === 'push')));
92
+ });
93
+ if (cleanupOnly)
94
+ return;
95
+ const ipResponse = await request('https://checkip.amazonaws.com', {
96
+ redirect: 'error',
97
+ signal: AbortSignal.timeout(15_000),
98
+ });
99
+ check(ipResponse.ok, 'runner IPv4 lookup failed');
100
+ const address = await ipResponse.text();
101
+ check(address.length <= 64, 'runner IPv4 response exceeds bound');
102
+ const cidr = (0, private_smoke_admission_js_1.publicRunnerIpv4)(address.trim());
103
+ if ((0, private_smoke_admission_js_1.runnerAlreadyAllowed)(cidr, allowedCidrs)) {
104
+ await input.run();
105
+ return;
106
+ }
107
+ const wait = dependencies.wait ??
108
+ ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
109
+ async function observe(allowed) {
110
+ for (let poll = 0; poll < 24; poll += 1) {
111
+ const response = await request(input.url, {
112
+ redirect: 'manual',
113
+ signal: AbortSignal.timeout(15_000),
114
+ });
115
+ // Do not consume or retain an application response body.
116
+ await response.body?.cancel();
117
+ if (allowed
118
+ ? response.status >= 200 && response.status < 400
119
+ : response.status === 403)
120
+ return;
121
+ if (poll < 23)
122
+ await wait(5_000);
123
+ }
124
+ throw new Error(`Private smoke access: ${allowed ? 'admission' : 'revocation'} was not observed; deployment acceptance prohibited`);
125
+ }
126
+ await (0, private_smoke_admission_js_1.withPrivateSmokeAdmission)({
127
+ store,
128
+ context: { run, attempt, source: input.source, baseline },
129
+ cidr,
130
+ run: input.run,
131
+ awaitAdmission: () => observe(true),
132
+ awaitRevocation: () => observe(false),
133
+ });
134
+ }
135
+ //# sourceMappingURL=private-smoke-access.js.map
@@ -0,0 +1,45 @@
1
+ export interface SmokeAdmissionContext {
2
+ authority?: 'local';
3
+ run: string;
4
+ attempt: string;
5
+ source: string;
6
+ baseline: readonly string[];
7
+ }
8
+ export interface SmokeIpSet {
9
+ addresses: readonly string[];
10
+ description: string;
11
+ lockToken: string;
12
+ }
13
+ export interface SmokeIpSetStore {
14
+ read(): Promise<SmokeIpSet>;
15
+ update(previous: SmokeIpSet, next: Pick<SmokeIpSet, 'addresses' | 'description'>): Promise<void>;
16
+ }
17
+ export interface SmokeAdmissionLease {
18
+ authority?: 'local';
19
+ run: string;
20
+ attempt: string;
21
+ source: string;
22
+ cidr: string;
23
+ baseline: string;
24
+ expiresAt: number;
25
+ }
26
+ export declare function runnerAlreadyAllowed(cidr: string, baseline: readonly string[]): boolean;
27
+ export declare function publicRunnerIpv4(value: string): string;
28
+ export declare function parseSmokeAdmissionLease(description: string): SmokeAdmissionLease | undefined;
29
+ /** Remove only this lease's address. Never replace unrelated addresses with a baseline. */
30
+ export declare function cleanupSmokeAdmission(store: SmokeIpSetStore, context: SmokeAdmissionContext): Promise<void>;
31
+ /** A retained lease alone, or its expiry, is not proof that a different run ended. */
32
+ export declare function recoverSmokeAdmission(store: SmokeIpSetStore, baseline: readonly string[], completedRun: (lease: SmokeAdmissionLease) => Promise<boolean>): Promise<void>;
33
+ export declare function withPrivateSmokeAdmission<T>(input: {
34
+ store: SmokeIpSetStore;
35
+ context: SmokeAdmissionContext;
36
+ cidr: string;
37
+ run: (lease: SmokeAdmissionLease) => Promise<T>;
38
+ awaitAdmission: (signal: AbortSignal) => Promise<void>;
39
+ awaitRevocation: () => Promise<void>;
40
+ now?: () => number;
41
+ signals?: {
42
+ on(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
43
+ removeListener(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
44
+ };
45
+ }): Promise<T>;