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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (791) hide show
  1. package/README.md +18 -0
  2. package/executors.json +21 -1
  3. package/generators.json +10 -0
  4. package/package.json +31 -7
  5. package/src/aws/child-environment.d.ts +10 -0
  6. package/src/aws/child-environment.js +77 -0
  7. package/src/aws/identity.d.ts +13 -0
  8. package/src/aws/identity.js +41 -0
  9. package/src/aws-authority/index.d.ts +2 -0
  10. package/src/aws-authority/index.js +6 -0
  11. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  12. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  13. package/src/aws-authority/stage-authority.d.ts +248 -0
  14. package/src/aws-authority/stage-authority.js +3558 -0
  15. package/src/blueprints/external-sandbox.js +21 -9
  16. package/src/blueprints/manifest.d.ts +1 -1
  17. package/src/blueprints/resolver.js +28 -15
  18. package/src/cli/bootstrap.d.ts +1 -1
  19. package/src/cli/deploy-runtime.d.ts +6 -0
  20. package/src/cli/deploy-runtime.js +58 -0
  21. package/src/cli/dev-command.d.ts +16 -4
  22. package/src/cli/dev-command.js +63 -0
  23. package/src/cli/main.d.ts +9 -1
  24. package/src/cli/main.js +139 -20
  25. package/src/cli/output.d.ts +1 -1
  26. package/src/cli/output.js +1 -1
  27. package/src/developer-agent/context.js +41 -9
  28. package/src/developer-agent/generator-planning.js +20 -6
  29. package/src/developer-agent/git-inspection.d.ts +6 -2
  30. package/src/developer-agent/git-inspection.js +78 -6
  31. package/src/developer-agent/model.d.ts +5 -3
  32. package/src/developer-agent/model.js +4 -4
  33. package/src/developer-agent/operation-registry.d.ts +5 -0
  34. package/src/developer-agent/operation-registry.js +286 -40
  35. package/src/developer-agent/planning.js +16 -13
  36. package/src/developer-agent/preview-changes.d.ts +2 -0
  37. package/src/developer-agent/preview-changes.js +14 -2
  38. package/src/developer-agent/preview-source.js +3 -0
  39. package/src/developer-agent/validation.js +25 -9
  40. package/src/developer-agent/workspace-inspection.js +60 -5
  41. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  42. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  43. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  44. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  45. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  46. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  47. package/src/executors/dev-task-cleanup/schema.json +9 -0
  48. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  49. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  50. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  51. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  52. package/src/executors/fleet/fleet.js +1 -1
  53. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  54. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  55. package/src/executors/foundation-preflight/schema.json +5 -0
  56. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  57. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  58. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  59. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  60. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  61. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  62. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  63. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  64. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  65. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  66. package/src/executors/github-bootstrap/schema.json +7 -1
  67. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  68. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  69. package/src/executors/infrastructure-plan/schema.json +12 -52
  70. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  71. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  72. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  73. package/src/executors/local-deploy/local-approval.js +39 -0
  74. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  75. package/src/executors/local-deploy/local-deploy.js +1404 -0
  76. package/src/executors/local-deploy/schema.json +70 -0
  77. package/src/executors/refresh/refresh.js +2 -2
  78. package/src/executors/remove/remove.js +2 -2
  79. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  80. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  81. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  82. package/src/executors/secret-initialize/schema.json +42 -0
  83. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  84. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  85. package/src/executors/secret-metadata/schema.json +5 -0
  86. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  87. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  88. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  89. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  90. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  91. package/src/executors/sst-lifecycle/governed-native-operation.js +162 -0
  92. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  93. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  94. package/src/executors/sst-lifecycle/run-sst-command.d.ts +40 -6
  95. package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
  96. package/src/executors/sst-lifecycle/schema.json +8 -1
  97. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  98. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  99. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  100. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  101. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  102. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  103. package/src/executors/unlock/unlock.js +2 -2
  104. package/src/foundation/capability-plan.d.ts +43 -0
  105. package/src/foundation/capability-plan.js +168 -0
  106. package/src/foundation/discovery.d.ts +14 -11
  107. package/src/foundation/discovery.js +32 -6
  108. package/src/foundation/index.d.ts +4 -0
  109. package/src/foundation/index.js +11 -0
  110. package/src/foundation/local-database-contract.d.ts +20 -0
  111. package/src/foundation/local-database-contract.js +262 -13
  112. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  113. package/src/foundation/local-private-smoke-access.js +197 -0
  114. package/src/foundation/logging-preflight.js +1 -1
  115. package/src/foundation/logging.d.ts +3 -1
  116. package/src/foundation/logging.js +1 -1
  117. package/src/foundation/partial-state.d.ts +10 -0
  118. package/src/foundation/partial-state.js +21 -0
  119. package/src/foundation/preflight.js +37 -18
  120. package/src/foundation/private-smoke-access.d.ts +25 -0
  121. package/src/foundation/private-smoke-access.js +135 -0
  122. package/src/foundation/private-smoke-admission.d.ts +45 -0
  123. package/src/foundation/private-smoke-admission.js +180 -0
  124. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  125. package/src/foundation/private-smoke-control-plane.js +184 -0
  126. package/src/foundation/provision-database-bindings.d.ts +5 -0
  127. package/src/foundation/provision-database-bindings.js +41 -8
  128. package/src/foundation/provision-logical-database.js +15 -8
  129. package/src/foundation/requirements.d.ts +3 -3
  130. package/src/foundation/requirements.js +24 -12
  131. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  132. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  133. package/src/foundation/router-waf.d.ts +149 -0
  134. package/src/foundation/router-waf.js +809 -0
  135. package/src/foundation/stages.d.ts +1 -0
  136. package/src/foundation/stages.js +11 -0
  137. package/src/generators/blueprint/blueprint.d.ts +5 -0
  138. package/src/generators/blueprint/blueprint.js +102 -0
  139. package/src/generators/blueprint/files.d.ts +6 -0
  140. package/src/generators/blueprint/files.js +217 -0
  141. package/src/generators/blueprint/schema.d.ts +4 -0
  142. package/src/generators/blueprint/schema.json +18 -0
  143. package/src/generators/formatting.d.ts +8 -0
  144. package/src/generators/formatting.js +141 -0
  145. package/src/generators/function/function.js +38 -17
  146. package/src/generators/logging-registry.d.ts +2 -0
  147. package/src/generators/logging-registry.js +22 -0
  148. package/src/generators/post-generation-install.js +2 -2
  149. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  150. package/src/generators/preset/dependency-overrides.js +55 -0
  151. package/src/generators/preset/generator.js +43 -3
  152. package/src/generators/preset/schema.d.ts +10 -0
  153. package/src/generators/preset/schema.json +47 -0
  154. package/src/generators/preset/tool-versions.d.ts +2 -0
  155. package/src/generators/preset/tool-versions.js +3 -1
  156. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  157. package/src/generators/preset/workspace-files-adopter-skills.js +303 -0
  158. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  159. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  160. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  161. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  162. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  163. package/src/generators/preset/workspace-files-developer-agent.js +90 -28
  164. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  165. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  166. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  167. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  168. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  169. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  170. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  171. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  172. package/src/generators/preset/workspace-files-stage-authority.js +518 -0
  173. package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
  174. package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
  175. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  176. package/src/generators/preset/workspace-files-thin-docs.js +352 -0
  177. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  178. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  179. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  180. package/src/generators/preset/workspace-files.d.ts +18 -2
  181. package/src/generators/preset/workspace-files.js +1504 -608
  182. package/src/generators/repository-policy/repository-policy.js +235 -5
  183. package/src/generators/repository-policy/schema.d.ts +10 -0
  184. package/src/generators/repository-policy/schema.json +80 -4
  185. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  186. package/src/generators/repository-policy/tree-policy.js +25 -0
  187. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  188. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  189. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  190. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  191. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  192. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
  193. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  194. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  195. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  196. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  197. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  198. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  199. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  200. package/src/generators/slice/built-in-plan-data-files.js +163 -1196
  201. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  202. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  203. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  204. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  205. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  206. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  207. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
  208. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  209. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  210. package/src/generators/slice/built-in-plan-frontend-files.js +7 -3
  211. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  212. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -729
  213. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
  214. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  215. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  216. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  217. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  218. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  219. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  220. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  221. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  222. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  223. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  224. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  225. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  226. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  227. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  228. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  229. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  230. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  231. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  232. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  233. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  234. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  235. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  236. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  237. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  238. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  239. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  240. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  241. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  242. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  243. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  244. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  246. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  247. package/src/generators/slice/built-in-plan-metadata-files.js +157 -28
  248. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  249. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  250. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  251. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  252. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  253. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  254. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  255. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  257. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  258. package/src/generators/slice/built-in-plan-reliability-files.js +279 -43
  259. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  261. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  262. package/src/generators/slice/built-in-plan-shared.js +41 -19
  263. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  264. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  265. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  266. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  267. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  268. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  269. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  270. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  271. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  272. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  273. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  274. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  276. package/src/generators/slice/built-in-plan.d.ts +11 -1
  277. package/src/generators/slice/built-in-plan.js +80 -29
  278. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  279. package/src/generators/slice/data-policy-review-seed.js +22 -0
  280. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  281. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  282. package/src/generators/slice/local-source-identity.d.ts +2 -0
  283. package/src/generators/slice/local-source-identity.js +31 -0
  284. package/src/generators/slice/persistence-contract.d.ts +14 -0
  285. package/src/generators/slice/persistence-contract.js +32 -0
  286. package/src/generators/slice/slice.js +61 -50
  287. package/src/generators/sql/schema.d.ts +7 -0
  288. package/src/generators/sql/schema.json +38 -0
  289. package/src/generators/sql/sql.d.ts +6 -0
  290. package/src/generators/sql/sql.js +53 -0
  291. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  292. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  293. package/src/generators/upgrade/upgrade.d.ts +15 -1
  294. package/src/generators/upgrade/upgrade.js +435 -44
  295. package/src/generators/workload/performance-registration.d.ts +1 -0
  296. package/src/generators/workload/performance-registration.js +9 -11
  297. package/src/generators/workload/service-performance-files.d.ts +1 -0
  298. package/src/generators/workload/service-performance-files.js +27 -7
  299. package/src/generators/workload/workload.d.ts +1 -1
  300. package/src/generators/workload/workload.js +105 -29
  301. package/src/git-policy/action-pins.d.ts +5 -0
  302. package/src/git-policy/action-pins.js +5 -0
  303. package/src/git-policy/github-bootstrap.d.ts +39 -8
  304. package/src/git-policy/github-bootstrap.js +329 -175
  305. package/src/git-policy/routing.d.ts +7 -1
  306. package/src/git-policy/routing.js +62 -1
  307. package/src/index.d.ts +1 -0
  308. package/src/index.js +1 -0
  309. package/src/infrastructure-change/local-capability.d.ts +73 -0
  310. package/src/infrastructure-change/local-capability.js +114 -0
  311. package/src/infrastructure-change/model.d.ts +25 -4
  312. package/src/infrastructure-change/model.js +1 -0
  313. package/src/infrastructure-change/normalize.d.ts +4 -0
  314. package/src/infrastructure-change/normalize.js +47 -7
  315. package/src/infrastructure-change/plan.d.ts +30 -3
  316. package/src/infrastructure-change/plan.js +323 -13
  317. package/src/infrastructure-change/risk.d.ts +3 -1
  318. package/src/infrastructure-change/risk.js +96 -16
  319. package/src/local-dev/browser-verification.d.ts +37 -0
  320. package/src/local-dev/browser-verification.js +281 -0
  321. package/src/local-dev/contracts.d.ts +10 -1
  322. package/src/local-dev/contracts.js +114 -13
  323. package/src/local-dev/dev-command-core.js +24 -5
  324. package/src/local-dev/docker-credential-health.d.ts +14 -0
  325. package/src/local-dev/docker-credential-health.js +94 -0
  326. package/src/local-dev/environment-inspector.d.ts +7 -0
  327. package/src/local-dev/environment-inspector.js +42 -15
  328. package/src/local-dev/environment-state.js +2 -2
  329. package/src/local-dev/errors.d.ts +1 -1
  330. package/src/local-dev/errors.js +2 -0
  331. package/src/local-dev/fleet-client.js +2 -2
  332. package/src/local-dev/fleet-configuration.js +57 -25
  333. package/src/local-dev/fleet-inventory.js +46 -18
  334. package/src/local-dev/fleet-ipc.d.ts +7 -0
  335. package/src/local-dev/fleet-ipc.js +14 -2
  336. package/src/local-dev/fleet-launcher.d.ts +6 -0
  337. package/src/local-dev/fleet-launcher.js +14 -2
  338. package/src/local-dev/fleet-logs.js +50 -22
  339. package/src/local-dev/fleet-process.d.ts +20 -1
  340. package/src/local-dev/fleet-process.js +197 -41
  341. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  342. package/src/local-dev/fleet-runner-evidence.js +56 -0
  343. package/src/local-dev/fleet-runtime.js +268 -229
  344. package/src/local-dev/fleet-session.d.ts +2 -0
  345. package/src/local-dev/fleet-session.js +28 -11
  346. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  347. package/src/local-dev/fleet-state.d.ts +5 -2
  348. package/src/local-dev/fleet-state.js +25 -4
  349. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  350. package/src/local-dev/fleet-supervisor.js +66 -11
  351. package/src/local-dev/fleet-web-start.d.ts +12 -0
  352. package/src/local-dev/fleet-web-start.js +48 -0
  353. package/src/local-dev/identity.js +3 -14
  354. package/src/local-dev/index.d.ts +1 -0
  355. package/src/local-dev/index.js +1 -0
  356. package/src/local-dev/native-completion.d.ts +9 -0
  357. package/src/local-dev/native-completion.js +130 -0
  358. package/src/local-dev/nx-workspace.d.ts +4 -2
  359. package/src/local-dev/nx-workspace.js +11 -6
  360. package/src/local-dev/personal-stage.d.ts +4 -5
  361. package/src/local-dev/personal-stage.js +6 -54
  362. package/src/local-dev/port-claims.d.ts +13 -0
  363. package/src/local-dev/port-claims.js +46 -0
  364. package/src/local-dev/ports.d.ts +14 -2
  365. package/src/local-dev/ports.js +78 -3
  366. package/src/local-dev/private-state.d.ts +11 -0
  367. package/src/local-dev/private-state.js +146 -40
  368. package/src/local-dev/process-group.d.ts +4 -0
  369. package/src/local-dev/process-group.js +29 -0
  370. package/src/local-dev/process-identity.d.ts +8 -0
  371. package/src/local-dev/process-identity.js +31 -1
  372. package/src/local-dev/proxy.js +11 -12
  373. package/src/local-dev/runtime-paths.js +1 -1
  374. package/src/local-dev/slice-claim.js +1 -1
  375. package/src/local-dev/slice-runner.d.ts +15 -6
  376. package/src/local-dev/slice-runner.js +189 -54
  377. package/src/local-dev/task-attachment.d.ts +17 -0
  378. package/src/local-dev/task-attachment.js +73 -0
  379. package/src/local-dev/task-authority.d.ts +10 -0
  380. package/src/local-dev/task-authority.js +27 -0
  381. package/src/local-dev/task-identity.d.ts +33 -0
  382. package/src/local-dev/task-identity.js +418 -0
  383. package/src/local-dev/task-native-writer.d.ts +18 -0
  384. package/src/local-dev/task-native-writer.js +329 -0
  385. package/src/local-dev/tls.js +8 -2
  386. package/src/local-dev/web-launch.d.ts +9 -0
  387. package/src/local-dev/web-launch.js +130 -0
  388. package/src/ownership/composition.d.ts +2 -1
  389. package/src/ownership/composition.js +1 -0
  390. package/src/performance/cost-collection.d.ts +1 -1
  391. package/src/performance/cost-collection.js +4 -2
  392. package/src/performance/cost-controls.d.ts +8 -4
  393. package/src/performance/cost-controls.js +39 -28
  394. package/src/performance/evidence.d.ts +1 -1
  395. package/src/performance/evidence.js +5 -3
  396. package/src/performance/load-safety.js +5 -3
  397. package/src/performance/model.d.ts +4 -4
  398. package/src/performance/model.js +4 -5
  399. package/src/performance/scenario.d.ts +22 -0
  400. package/src/performance/scenario.js +100 -92
  401. package/src/release/index.d.ts +0 -2
  402. package/src/release/index.js +0 -2
  403. package/src/release/source-authority.d.ts +5 -5
  404. package/src/release/source-authority.js +141 -124
  405. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  406. package/src/repository-policy/aurora-preflight.js +4 -1
  407. package/src/repository-policy/capacity-migration.d.ts +3 -0
  408. package/src/repository-policy/capacity-migration.js +21 -0
  409. package/src/repository-policy/deployment-plan.d.ts +4 -1
  410. package/src/repository-policy/deployment-plan.js +9 -0
  411. package/src/repository-policy/foundation-profile.js +10 -1
  412. package/src/repository-policy/policy.d.ts +57 -3
  413. package/src/repository-policy/policy.js +497 -11
  414. package/src/schemas/blueprint-v1.json +5 -4
  415. package/src/schemas/foundation-requirement-v1.json +5 -4
  416. package/src/schemas/performance-policy-v1.json +3 -3
  417. package/src/schemas/repository-policy-v1.json +130 -6
  418. package/src/schemas/testing-evidence-result-v1.json +1 -1
  419. package/src/secrets/adapters.d.ts +7 -2
  420. package/src/secrets/adapters.js +34 -3
  421. package/src/secrets/aws-control-plane.d.ts +10 -1
  422. package/src/secrets/aws-control-plane.js +67 -0
  423. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  424. package/src/secrets/generated-aws-control-plane.js +259 -0
  425. package/src/secrets/metadata.js +38 -10
  426. package/src/secrets/model.d.ts +8 -1
  427. package/src/secrets/model.js +24 -3
  428. package/src/secrets/operator.d.ts +91 -3
  429. package/src/secrets/operator.js +463 -13
  430. package/src/secrets/registry.d.ts +2 -1
  431. package/src/secrets/registry.js +18 -1
  432. package/src/secrets/verification.js +9 -1
  433. package/src/secrets/workload-access.js +10 -2
  434. package/src/sst-environment-source-format.d.ts +6 -0
  435. package/src/sst-environment-source-format.js +199 -0
  436. package/src/supply-chain/action-pins.js +61 -7
  437. package/src/supply-chain/blueprint-trust-git.js +85 -24
  438. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  439. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  440. package/src/supply-chain/build-output-bounds.js +12 -0
  441. package/src/supply-chain/build-output.d.ts +7 -1
  442. package/src/supply-chain/build-output.js +177 -24
  443. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  444. package/src/supply-chain/ecr-scanning.js +11 -7
  445. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  446. package/src/supply-chain/ecs-deployed-image.js +6 -4
  447. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  448. package/src/supply-chain/generated-command.js +1 -0
  449. package/src/supply-chain/generated-container-release-command.js +1285 -124
  450. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  451. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  452. package/src/supply-chain/generated-files.js +25 -14
  453. package/src/supply-chain/generated-scanner-command.js +2 -1
  454. package/src/supply-chain/index.d.ts +1 -1
  455. package/src/supply-chain/index.js +2 -1
  456. package/src/supply-chain/sbom.d.ts +1 -1
  457. package/src/supply-chain/sbom.js +30 -5
  458. package/src/supply-chain/scanner.js +3 -0
  459. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  460. package/src/testing-evidence/fixture-scope.js +4 -2
  461. package/src/testing-evidence/result.d.ts +2 -1
  462. package/src/testing-evidence/result.js +18 -4
  463. package/src/workload-roles/account-baseline.d.ts +11 -0
  464. package/src/workload-roles/account-baseline.js +253 -16
  465. package/src/workload-roles/authority.d.ts +3 -1
  466. package/src/workload-roles/authority.js +48 -2
  467. package/src/workload-roles/aws-s3-state.js +27 -0
  468. package/src/workload-roles/boundary.d.ts +2 -1
  469. package/src/workload-roles/boundary.js +9 -2
  470. package/src/workload-roles/handler.js +52 -24
  471. package/src/workload-roles/index.d.ts +10 -17
  472. package/src/workload-roles/index.js +5 -18
  473. package/src/workload-roles/injection.js +1 -1
  474. package/src/workload-roles/provisioner.js +12 -4
  475. package/src/workload-roles/registration.d.ts +1 -0
  476. package/src/workload-roles/registration.js +5 -0
  477. package/src/workload-roles/stage-boundary.js +1 -1
  478. package/src/workload-roles/standard-slice.js +3 -3
  479. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  480. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  481. package/src/workspace-deployment/identity.d.ts +3 -0
  482. package/src/workspace-deployment/identity.js +22 -0
  483. package/src/workspace-deployment/index.d.ts +4 -0
  484. package/src/workspace-deployment/index.js +8 -0
  485. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  486. package/src/workspace-deployment/migration-evidence.js +83 -0
  487. package/src/workspace-deployment/migration.d.ts +27 -0
  488. package/src/workspace-deployment/migration.js +109 -0
  489. package/src/workspace-deployment/ownership.d.ts +81 -0
  490. package/src/workspace-deployment/ownership.js +381 -0
  491. package/src/api-contract/baseline-update.js.map +0 -1
  492. package/src/api-contract/compatibility.js.map +0 -1
  493. package/src/api-contract/contract-graph.js.map +0 -1
  494. package/src/api-contract/evidence.js.map +0 -1
  495. package/src/api-contract/index.js.map +0 -1
  496. package/src/api-contract/model.fixtures.d.ts +0 -2
  497. package/src/api-contract/model.fixtures.js +0 -81
  498. package/src/api-contract/model.fixtures.js.map +0 -1
  499. package/src/api-contract/model.js.map +0 -1
  500. package/src/api-contract/rollout.js.map +0 -1
  501. package/src/authorization/compatibility.js.map +0 -1
  502. package/src/authorization/index.js.map +0 -1
  503. package/src/blueprints/execution.js.map +0 -1
  504. package/src/blueprints/external-sandbox.js.map +0 -1
  505. package/src/blueprints/index.js.map +0 -1
  506. package/src/blueprints/inputs.js.map +0 -1
  507. package/src/blueprints/manifest.js.map +0 -1
  508. package/src/blueprints/resolver.js.map +0 -1
  509. package/src/blueprints/transitions.js.map +0 -1
  510. package/src/cli/agent-command.js.map +0 -1
  511. package/src/cli/agent-runtime.js.map +0 -1
  512. package/src/cli/blueprint-authority.js.map +0 -1
  513. package/src/cli/blueprint-command.js.map +0 -1
  514. package/src/cli/bootstrap.js.map +0 -1
  515. package/src/cli/dev-command.js.map +0 -1
  516. package/src/cli/main.js.map +0 -1
  517. package/src/cli/output.js.map +0 -1
  518. package/src/cli/personal-secret-runtime.js.map +0 -1
  519. package/src/cli/secret-terminal.js.map +0 -1
  520. package/src/container-images.js.map +0 -1
  521. package/src/data-lifecycle/index.js.map +0 -1
  522. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  523. package/src/data-lifecycle/model.fixtures.js +0 -244
  524. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  525. package/src/data-lifecycle/model.js.map +0 -1
  526. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  527. package/src/data-lifecycle/validation.js.map +0 -1
  528. package/src/database-retirement/contract.js.map +0 -1
  529. package/src/database-retirement/index.js.map +0 -1
  530. package/src/deterministic-order.js.map +0 -1
  531. package/src/developer-agent/context.js.map +0 -1
  532. package/src/developer-agent/generator-planning.js.map +0 -1
  533. package/src/developer-agent/generator-preview.js.map +0 -1
  534. package/src/developer-agent/git-inspection.js.map +0 -1
  535. package/src/developer-agent/handoff.js.map +0 -1
  536. package/src/developer-agent/index.js.map +0 -1
  537. package/src/developer-agent/model.js.map +0 -1
  538. package/src/developer-agent/operation-registry.js.map +0 -1
  539. package/src/developer-agent/ordering.js.map +0 -1
  540. package/src/developer-agent/planning.js.map +0 -1
  541. package/src/developer-agent/preview-changes.js.map +0 -1
  542. package/src/developer-agent/preview-source.js.map +0 -1
  543. package/src/developer-agent/validation.js.map +0 -1
  544. package/src/developer-agent/workspace-inspection.js.map +0 -1
  545. package/src/developer-agent/workspace-path.js.map +0 -1
  546. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  547. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  548. package/src/executors/deploy/deploy.js.map +0 -1
  549. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  550. package/src/executors/dev/dev.js.map +0 -1
  551. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  552. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  553. package/src/executors/developer-context/developer-context.js.map +0 -1
  554. package/src/executors/fleet/fleet.js.map +0 -1
  555. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  556. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  557. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  558. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  559. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  560. package/src/executors/refresh/refresh.js.map +0 -1
  561. package/src/executors/remove/remove.js.map +0 -1
  562. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  563. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  564. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  565. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  566. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  567. package/src/executors/unlock/unlock.js.map +0 -1
  568. package/src/executors/work-markers/work-markers.js.map +0 -1
  569. package/src/foundation/discovery.js.map +0 -1
  570. package/src/foundation/index.js.map +0 -1
  571. package/src/foundation/local-database-contract.js.map +0 -1
  572. package/src/foundation/logging-preflight.js.map +0 -1
  573. package/src/foundation/logging.js.map +0 -1
  574. package/src/foundation/preflight.js.map +0 -1
  575. package/src/foundation/provision-database-bindings.js.map +0 -1
  576. package/src/foundation/provision-logical-database.js.map +0 -1
  577. package/src/foundation/requirements.js.map +0 -1
  578. package/src/foundation/router-origin-proof.js.map +0 -1
  579. package/src/foundation/stages.js.map +0 -1
  580. package/src/frontend-security/index.js.map +0 -1
  581. package/src/frontend-security/security-headers.js.map +0 -1
  582. package/src/generators/feature-registry.js.map +0 -1
  583. package/src/generators/function/function.js.map +0 -1
  584. package/src/generators/job/job.js.map +0 -1
  585. package/src/generators/logging-registry.js.map +0 -1
  586. package/src/generators/post-generation-install.js.map +0 -1
  587. package/src/generators/preset/generator.js.map +0 -1
  588. package/src/generators/preset/tool-versions.js.map +0 -1
  589. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  590. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  591. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  592. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  593. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  594. package/src/generators/preset/workspace-files.js.map +0 -1
  595. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  596. package/src/generators/service/service.js.map +0 -1
  597. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  598. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  599. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  600. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  601. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  602. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  603. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  604. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  605. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  606. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  607. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  608. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  609. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  610. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan.js.map +0 -1
  629. package/src/generators/slice/slice.js.map +0 -1
  630. package/src/generators/upgrade/upgrade.js.map +0 -1
  631. package/src/generators/workload/frozen-container.js.map +0 -1
  632. package/src/generators/workload/performance-registration.js.map +0 -1
  633. package/src/generators/workload/reliability-registration.js.map +0 -1
  634. package/src/generators/workload/service-performance-files.js.map +0 -1
  635. package/src/generators/workload/workload.js.map +0 -1
  636. package/src/git-policy/action-pins.js.map +0 -1
  637. package/src/git-policy/github-bootstrap.js.map +0 -1
  638. package/src/git-policy/index.js.map +0 -1
  639. package/src/git-policy/routing.js.map +0 -1
  640. package/src/index.js.map +0 -1
  641. package/src/infrastructure-change/convergence.js.map +0 -1
  642. package/src/infrastructure-change/drift.js.map +0 -1
  643. package/src/infrastructure-change/index.js.map +0 -1
  644. package/src/infrastructure-change/model.js.map +0 -1
  645. package/src/infrastructure-change/normalize.js.map +0 -1
  646. package/src/infrastructure-change/plan.js.map +0 -1
  647. package/src/infrastructure-change/risk.js.map +0 -1
  648. package/src/infrastructure-change/summary.js.map +0 -1
  649. package/src/local-dev/context-discovery.js.map +0 -1
  650. package/src/local-dev/contract-validation.js.map +0 -1
  651. package/src/local-dev/contracts.js.map +0 -1
  652. package/src/local-dev/control-contract.js.map +0 -1
  653. package/src/local-dev/dev-command-core.js.map +0 -1
  654. package/src/local-dev/effects.js.map +0 -1
  655. package/src/local-dev/environment-inspector.js.map +0 -1
  656. package/src/local-dev/environment-state.js.map +0 -1
  657. package/src/local-dev/errors.js.map +0 -1
  658. package/src/local-dev/fleet-client.js.map +0 -1
  659. package/src/local-dev/fleet-configuration.js.map +0 -1
  660. package/src/local-dev/fleet-inventory.js.map +0 -1
  661. package/src/local-dev/fleet-ipc.js.map +0 -1
  662. package/src/local-dev/fleet-launcher.js.map +0 -1
  663. package/src/local-dev/fleet-lock.js.map +0 -1
  664. package/src/local-dev/fleet-logs.js.map +0 -1
  665. package/src/local-dev/fleet-process.js.map +0 -1
  666. package/src/local-dev/fleet-runtime.js.map +0 -1
  667. package/src/local-dev/fleet-session.js.map +0 -1
  668. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  669. package/src/local-dev/fleet-startup.js.map +0 -1
  670. package/src/local-dev/fleet-state.js.map +0 -1
  671. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  672. package/src/local-dev/fleet-supervisor.js.map +0 -1
  673. package/src/local-dev/gateway-daemon.js.map +0 -1
  674. package/src/local-dev/gateway.js.map +0 -1
  675. package/src/local-dev/identity.js.map +0 -1
  676. package/src/local-dev/index.js.map +0 -1
  677. package/src/local-dev/local-context.js.map +0 -1
  678. package/src/local-dev/nx-workspace.js.map +0 -1
  679. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  680. package/src/local-dev/personal-stage.js.map +0 -1
  681. package/src/local-dev/portless.js.map +0 -1
  682. package/src/local-dev/ports.js.map +0 -1
  683. package/src/local-dev/private-state.js.map +0 -1
  684. package/src/local-dev/process-identity.js.map +0 -1
  685. package/src/local-dev/proxy.js.map +0 -1
  686. package/src/local-dev/runtime-paths.js.map +0 -1
  687. package/src/local-dev/secret-slice-claim.js.map +0 -1
  688. package/src/local-dev/slice-claim.js.map +0 -1
  689. package/src/local-dev/slice-runner.js.map +0 -1
  690. package/src/local-dev/tls.js.map +0 -1
  691. package/src/ownership/composition.js.map +0 -1
  692. package/src/ownership/foundation-record.js.map +0 -1
  693. package/src/ownership/hash.js.map +0 -1
  694. package/src/ownership/index.js.map +0 -1
  695. package/src/ownership/json-ownership.js.map +0 -1
  696. package/src/ownership/record.js.map +0 -1
  697. package/src/ownership/workspace-record.js.map +0 -1
  698. package/src/performance/cost-collection.js.map +0 -1
  699. package/src/performance/cost-controls.js.map +0 -1
  700. package/src/performance/evidence.js.map +0 -1
  701. package/src/performance/index.js.map +0 -1
  702. package/src/performance/load-safety.js.map +0 -1
  703. package/src/performance/model.js.map +0 -1
  704. package/src/performance/pr-artifact-budget.js.map +0 -1
  705. package/src/performance/runner.js.map +0 -1
  706. package/src/performance/scenario-endpoint.js.map +0 -1
  707. package/src/performance/scenario.js.map +0 -1
  708. package/src/performance/test-fixtures.d.ts +0 -7
  709. package/src/performance/test-fixtures.js +0 -169
  710. package/src/performance/test-fixtures.js.map +0 -1
  711. package/src/performance/unit-cost.js.map +0 -1
  712. package/src/release/index.js.map +0 -1
  713. package/src/release/lifecycle.js.map +0 -1
  714. package/src/release/manifest.js.map +0 -1
  715. package/src/release/rollout.js.map +0 -1
  716. package/src/release/source-authority.js.map +0 -1
  717. package/src/repository-policy/aurora-preflight.js.map +0 -1
  718. package/src/repository-policy/deployment-plan.js.map +0 -1
  719. package/src/repository-policy/foundation-profile.js.map +0 -1
  720. package/src/repository-policy/index.js.map +0 -1
  721. package/src/repository-policy/policy.js.map +0 -1
  722. package/src/secrets/adapters.js.map +0 -1
  723. package/src/secrets/aws-control-plane.js.map +0 -1
  724. package/src/secrets/declaration-verification.js.map +0 -1
  725. package/src/secrets/guardrails.js.map +0 -1
  726. package/src/secrets/index.js.map +0 -1
  727. package/src/secrets/metadata.js.map +0 -1
  728. package/src/secrets/model.js.map +0 -1
  729. package/src/secrets/operator.js.map +0 -1
  730. package/src/secrets/permissions.js.map +0 -1
  731. package/src/secrets/personal-command.js.map +0 -1
  732. package/src/secrets/personal-ledger.js.map +0 -1
  733. package/src/secrets/registry.js.map +0 -1
  734. package/src/secrets/verification.js.map +0 -1
  735. package/src/secrets/workload-access.js.map +0 -1
  736. package/src/supply-chain/action-pins.js.map +0 -1
  737. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  738. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  739. package/src/supply-chain/blueprint-trust.js.map +0 -1
  740. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  741. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  742. package/src/supply-chain/build-output.js.map +0 -1
  743. package/src/supply-chain/common.js.map +0 -1
  744. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  745. package/src/supply-chain/container-release.js.map +0 -1
  746. package/src/supply-chain/ecr-applicability.js.map +0 -1
  747. package/src/supply-chain/ecr-scanning.js.map +0 -1
  748. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  749. package/src/supply-chain/errors.js.map +0 -1
  750. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  751. package/src/supply-chain/generated-command.js.map +0 -1
  752. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  753. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  754. package/src/supply-chain/generated-files.js.map +0 -1
  755. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  756. package/src/supply-chain/index.js.map +0 -1
  757. package/src/supply-chain/inventory.js.map +0 -1
  758. package/src/supply-chain/license-expression.js.map +0 -1
  759. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  760. package/src/supply-chain/policy.js.map +0 -1
  761. package/src/supply-chain/publication.js.map +0 -1
  762. package/src/supply-chain/sbom.js.map +0 -1
  763. package/src/supply-chain/scanner.js.map +0 -1
  764. package/src/supply-chain/vendored-source.js.map +0 -1
  765. package/src/testing-evidence/fixture-scope.js.map +0 -1
  766. package/src/testing-evidence/index.js.map +0 -1
  767. package/src/testing-evidence/quarantine.js.map +0 -1
  768. package/src/testing-evidence/result.js.map +0 -1
  769. package/src/testing-evidence/runner-adapter.js.map +0 -1
  770. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  771. package/src/validation.js.map +0 -1
  772. package/src/work-markers/index.js.map +0 -1
  773. package/src/work-markers/work-markers.js.map +0 -1
  774. package/src/workload-roles/account-baseline.js.map +0 -1
  775. package/src/workload-roles/authority.js.map +0 -1
  776. package/src/workload-roles/aws-adapter.js.map +0 -1
  777. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  778. package/src/workload-roles/aws-s3-state.js.map +0 -1
  779. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  780. package/src/workload-roles/boundary.js.map +0 -1
  781. package/src/workload-roles/convergence.js.map +0 -1
  782. package/src/workload-roles/effective-policy.js.map +0 -1
  783. package/src/workload-roles/handler.js.map +0 -1
  784. package/src/workload-roles/history.js.map +0 -1
  785. package/src/workload-roles/index.js.map +0 -1
  786. package/src/workload-roles/injection.js.map +0 -1
  787. package/src/workload-roles/manifest.js.map +0 -1
  788. package/src/workload-roles/provisioner.js.map +0 -1
  789. package/src/workload-roles/registration.js.map +0 -1
  790. package/src/workload-roles/stage-boundary.js.map +0 -1
  791. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -2,17 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SecretOperatorControlPlaneError = void 0;
4
4
  exports.runSecretMetadataOperator = runSecretMetadataOperator;
5
+ exports.runGeneratedSecretInitializer = runGeneratedSecretInitializer;
5
6
  exports.runSecretDeployPreflight = runSecretDeployPreflight;
7
+ exports.runGeneratedSecretRetirement = runGeneratedSecretRetirement;
6
8
  exports.runProtectedSecretLifecycle = runProtectedSecretLifecycle;
7
9
  const deterministic_order_js_1 = require("../deterministic-order.js");
10
+ const generated_aws_control_plane_js_1 = require("./generated-aws-control-plane.js");
8
11
  const metadata_js_1 = require("./metadata.js");
9
12
  const model_js_1 = require("./model.js");
10
13
  class SecretOperatorControlPlaneError extends Error {
11
14
  operation;
15
+ diagnosticCode;
12
16
  code;
13
- constructor(code, operation) {
14
- super(`Secret metadata ${operation} failed (${code}).`);
17
+ constructor(code, operation, diagnosticCode) {
18
+ super(`Secret metadata ${operation} failed (${code}).` +
19
+ (diagnosticCode ? ` Reason: ${diagnosticCode}.` : ''));
15
20
  this.operation = operation;
21
+ this.diagnosticCode = diagnosticCode;
16
22
  this.name = 'SecretOperatorControlPlaneError';
17
23
  this.code = code;
18
24
  }
@@ -26,10 +32,28 @@ function safeControlPlaneError(error, code, operation) {
26
32
  if (error instanceof SecretOperatorControlPlaneError) {
27
33
  return error;
28
34
  }
35
+ // Preserve only our finite, value-blind diagnostic vocabulary. Never attach
36
+ // the raw SDK error, message, stack, request or cause: they may hold values.
37
+ if (error instanceof generated_aws_control_plane_js_1.AwsGeneratedSecretInitializationError) {
38
+ const diagnosticCode = Object.getOwnPropertyDescriptor(error, 'code')?.value;
39
+ switch (diagnosticCode) {
40
+ case 'generated-secret-input-invalid':
41
+ case 'generated-secret-observation-invalid':
42
+ case 'generated-secret-read-failed':
43
+ case 'generated-secret-state-conflicting':
44
+ case 'generated-secret-write-failed':
45
+ return new SecretOperatorControlPlaneError(code, operation, diagnosticCode);
46
+ }
47
+ }
29
48
  return new SecretOperatorControlPlaneError(code, operation);
30
49
  }
31
50
  async function collectSecretMetadata(controlPlane, scope, options = {}) {
32
51
  const namePrefix = canonicalPrefix(scope);
52
+ const exactNames = [...new Set(options.exactNames ?? [])].sort(deterministic_order_js_1.compareUtf16);
53
+ if (exactNames.length !== (options.exactNames ?? []).length ||
54
+ exactNames.some((name) => !name.startsWith(namePrefix))) {
55
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
56
+ }
33
57
  let listed;
34
58
  try {
35
59
  listed = await controlPlane.list({
@@ -50,8 +74,21 @@ async function collectSecretMetadata(controlPlane, scope, options = {}) {
50
74
  !item.name.startsWith(namePrefix))) {
51
75
  throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
52
76
  }
77
+ const inventory = [...listed];
78
+ for (const created of options.newlyCreated ?? []) {
79
+ if (typeof created !== 'object' ||
80
+ created === null ||
81
+ typeof created.arn !== 'string' ||
82
+ typeof created.name !== 'string' ||
83
+ !created.name.startsWith(namePrefix)) {
84
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
85
+ }
86
+ if (!inventory.some(({ arn, name }) => arn === created.arn && name === created.name)) {
87
+ inventory.push(created);
88
+ }
89
+ }
53
90
  try {
54
- return await Promise.all([...listed]
91
+ const described = await Promise.all(inventory
55
92
  .sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.name, right.name))
56
93
  .map(async (item) => {
57
94
  const description = await controlPlane.describe({ arn: item.arn });
@@ -61,6 +98,24 @@ async function collectSecretMetadata(controlPlane, scope, options = {}) {
61
98
  }
62
99
  return description;
63
100
  }));
101
+ for (const name of exactNames) {
102
+ if (described.some((secret) => secret.name === name))
103
+ continue;
104
+ const exact = await controlPlane.describeExact({
105
+ ...(options.includePlannedDeletion === undefined
106
+ ? {}
107
+ : { includePlannedDeletion: options.includePlannedDeletion }),
108
+ name,
109
+ });
110
+ if (exact === undefined)
111
+ continue;
112
+ (0, model_js_1.validateObservedSecretMetadata)(exact);
113
+ if (exact.name !== name || !exact.arn.includes(`:secret:${name}-`)) {
114
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'describe');
115
+ }
116
+ described.push(exact);
117
+ }
118
+ return described.sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.name, right.name));
64
119
  }
65
120
  catch (error) {
66
121
  throw safeControlPlaneError(error, 'secret-control-plane-inventory-failed', 'describe');
@@ -72,17 +127,19 @@ function hasAmbiguousOwnership(findings) {
72
127
  async function applyMutation(controlPlane, mutation) {
73
128
  try {
74
129
  if (mutation.kind === 'create-empty-container') {
75
- await controlPlane.createEmpty({
130
+ const created = await controlPlane.createEmpty({
76
131
  description: mutation.description,
77
132
  name: mutation.name,
78
133
  tags: mutation.tags,
79
134
  });
135
+ return Object.freeze({ arn: created.arn, name: mutation.name });
80
136
  }
81
137
  else {
82
138
  await controlPlane.tag({
83
139
  arn: mutation.arn,
84
140
  tags: mutation.tags,
85
141
  });
142
+ return undefined;
86
143
  }
87
144
  }
88
145
  catch (error) {
@@ -91,11 +148,34 @@ async function applyMutation(controlPlane, mutation) {
91
148
  }
92
149
  async function runSecretMetadataOperator(input) {
93
150
  const mode = input.mode ?? 'report';
94
- const observed = await collectSecretMetadata(input.controlPlane, input.scope);
151
+ (0, model_js_1.validateSecretManagementScope)(input.scope);
152
+ const logicalNames = new Set();
153
+ for (const declaration of input.declarations) {
154
+ (0, model_js_1.validateSecretMetadataDeclaration)(declaration);
155
+ if (logicalNames.has(declaration.logicalName)) {
156
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
157
+ }
158
+ logicalNames.add(declaration.logicalName);
159
+ }
160
+ // A generated secret's container and first value are one CreateSecret
161
+ // transaction. Keep it entirely out of the value-free metadata operator so
162
+ // this path cannot pre-create or retag the generated container.
163
+ const generatedNames = new Set(input.declarations
164
+ .filter((declaration) => declaration.source === 'generated' &&
165
+ declaration.requiredStages.includes(input.scope.stage))
166
+ .map((declaration) => (0, model_js_1.canonicalOperatorSecretName)(input.scope, declaration.logicalName)));
167
+ const declarations = input.declarations.filter((declaration) => declaration.source !== 'generated');
168
+ const exactNames = declarations
169
+ .filter((declaration) => declaration.requiredStages.includes(input.scope.stage))
170
+ .map((declaration) => (0, model_js_1.canonicalOperatorSecretName)(input.scope, declaration.logicalName));
171
+ const observed = await collectSecretMetadata(input.controlPlane, input.scope, {
172
+ exactNames,
173
+ });
174
+ const operatorObserved = observed.filter((secret) => !generatedNames.has(secret.name));
95
175
  const before = (0, metadata_js_1.reconcileSecretMetadata)({
96
- declarations: input.declarations,
176
+ declarations,
97
177
  mode,
98
- observed,
178
+ observed: operatorObserved,
99
179
  scope: input.scope,
100
180
  });
101
181
  if (mode === 'report') {
@@ -115,15 +195,18 @@ async function runSecretMetadataOperator(input) {
115
195
  });
116
196
  }
117
197
  const applied = [];
198
+ const newlyCreated = [];
118
199
  for (const mutation of before.authorizedMutations) {
119
- await applyMutation(input.controlPlane, mutation);
200
+ const created = await applyMutation(input.controlPlane, mutation);
201
+ if (created)
202
+ newlyCreated.push(created);
120
203
  applied.push(mutation);
121
204
  }
122
- const afterObserved = await collectSecretMetadata(input.controlPlane, input.scope);
205
+ const afterObserved = await collectSecretMetadata(input.controlPlane, input.scope, { exactNames, newlyCreated });
123
206
  const after = (0, metadata_js_1.reconcileSecretMetadata)({
124
- declarations: input.declarations,
207
+ declarations,
125
208
  mode: 'report',
126
- observed: afterObserved,
209
+ observed: afterObserved.filter((secret) => !generatedNames.has(secret.name)),
127
210
  scope: input.scope,
128
211
  });
129
212
  return Object.freeze({
@@ -134,6 +217,139 @@ async function runSecretMetadataOperator(input) {
134
217
  outcome: after.status === 'clean' ? 'applied' : 'applied-with-findings',
135
218
  });
136
219
  }
220
+ async function runGeneratedSecretInitializer(input) {
221
+ const mode = input.mode ?? 'report';
222
+ if (mode !== 'apply' && mode !== 'report') {
223
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'initialize-generated');
224
+ }
225
+ (0, model_js_1.validateSecretManagementScope)(input.scope);
226
+ const names = new Set();
227
+ for (const declaration of input.declarations) {
228
+ (0, model_js_1.validateSecretMetadataDeclaration)(declaration);
229
+ if (names.has(declaration.logicalName)) {
230
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'initialize-generated');
231
+ }
232
+ names.add(declaration.logicalName);
233
+ }
234
+ const declaration = input.declarations.find(({ logicalName }) => logicalName === input.logicalName);
235
+ if (declaration?.source !== 'generated' ||
236
+ declaration.generation === undefined ||
237
+ !declaration.requiredStages.includes(input.scope.stage)) {
238
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'initialize-generated');
239
+ }
240
+ const name = (0, model_js_1.canonicalOperatorSecretName)(input.scope, declaration.logicalName);
241
+ const description = `EBK ${declaration.source} secret ${declaration.logicalName}`;
242
+ const expectedTags = (0, model_js_1.canonicalOperatorSecretTags)(input.scope, declaration);
243
+ const observed = await collectSecretMetadata(input.metadataControlPlane, input.scope, { exactNames: [name] });
244
+ // This operation owns exactly one generated declaration. Other operator or
245
+ // generated containers in the same Slice are outside its reconciliation
246
+ // scope and must not be misclassified as orphans.
247
+ const targetObserved = observed.filter((item) => item.name === name);
248
+ const findings = (0, metadata_js_1.preflightSecretMetadata)({
249
+ declarations: [declaration],
250
+ observed: targetObserved,
251
+ scope: input.scope,
252
+ }).findings;
253
+ const actual = targetObserved[0];
254
+ const missingContainer = actual === undefined &&
255
+ findings.length === 1 &&
256
+ findings[0]?.code === 'missing-container';
257
+ const blocking = !missingContainer &&
258
+ (actual === undefined ||
259
+ findings.some(({ code }) => code !== 'missing-current-version') ||
260
+ Object.entries(expectedTags).some(([key, value]) => actual?.tags[key] !== value));
261
+ let inspection = missingContainer
262
+ ? 'missing'
263
+ : 'conflicting';
264
+ if (!blocking && !missingContainer) {
265
+ try {
266
+ inspection = await input.initializationControlPlane.inspect({
267
+ description,
268
+ generation: declaration.generation.kind,
269
+ name,
270
+ tags: expectedTags,
271
+ });
272
+ }
273
+ catch (error) {
274
+ throw safeControlPlaneError(error, 'secret-control-plane-inventory-failed', 'initialize-generated');
275
+ }
276
+ }
277
+ const metadataCurrent = findings.length === 0;
278
+ const stateConsistent = missingContainer || (metadataCurrent && inspection === 'current');
279
+ const proposed = stateConsistent && inspection === 'missing'
280
+ ? [{ logicalName: declaration.logicalName, name }]
281
+ : [];
282
+ const effectiveBlocking = blocking || !stateConsistent;
283
+ if (mode === 'report') {
284
+ return Object.freeze({
285
+ findings: Object.freeze(findings),
286
+ initialized: Object.freeze([]),
287
+ mode,
288
+ outcome: effectiveBlocking ? 'blocked' : 'reported',
289
+ proposed: Object.freeze(proposed),
290
+ });
291
+ }
292
+ if (effectiveBlocking) {
293
+ return Object.freeze({
294
+ findings: Object.freeze(findings),
295
+ initialized: Object.freeze([]),
296
+ mode,
297
+ outcome: 'blocked',
298
+ proposed: Object.freeze([]),
299
+ });
300
+ }
301
+ if (inspection === 'current') {
302
+ return Object.freeze({
303
+ findings: Object.freeze([]),
304
+ initialized: Object.freeze([]),
305
+ mode,
306
+ outcome: 'unchanged',
307
+ proposed: Object.freeze([]),
308
+ });
309
+ }
310
+ let initializationOutcome;
311
+ try {
312
+ initializationOutcome =
313
+ await input.initializationControlPlane.initializeGenerated({
314
+ description,
315
+ generation: declaration.generation.kind,
316
+ name,
317
+ tags: expectedTags,
318
+ });
319
+ }
320
+ catch (error) {
321
+ throw safeControlPlaneError(error, 'secret-control-plane-apply-failed', 'initialize-generated');
322
+ }
323
+ let finalInspection;
324
+ try {
325
+ finalInspection = await input.initializationControlPlane.inspect({
326
+ description,
327
+ generation: declaration.generation.kind,
328
+ name,
329
+ tags: expectedTags,
330
+ });
331
+ }
332
+ catch (error) {
333
+ throw safeControlPlaneError(error, 'secret-control-plane-inventory-failed', 'initialize-generated');
334
+ }
335
+ if (finalInspection !== 'current') {
336
+ throw new SecretOperatorControlPlaneError('secret-control-plane-apply-failed', 'initialize-generated', finalInspection === 'conflicting'
337
+ ? 'generated-secret-state-conflicting'
338
+ : 'generated-secret-observation-invalid');
339
+ }
340
+ // The exact-name control-plane inspection above is the postcondition.
341
+ // ListSecrets is eventually consistent and can omit a newly created secret
342
+ // for minutes, so it is not safe evidence for this just-completed mutation.
343
+ return Object.freeze({
344
+ findings: Object.freeze([]),
345
+ initialized: Object.freeze(initializationOutcome === 'applied'
346
+ ? [{ logicalName: declaration.logicalName, name }]
347
+ : []),
348
+ mode,
349
+ outcome: initializationOutcome,
350
+ proposed: Object.freeze(proposed),
351
+ });
352
+ }
137
353
  async function runSecretDeployPreflight(input) {
138
354
  if (input.action !== 'deploy') {
139
355
  return Object.freeze({
@@ -143,7 +359,12 @@ async function runSecretDeployPreflight(input) {
143
359
  ready: true,
144
360
  });
145
361
  }
146
- const observed = await collectSecretMetadata(input.controlPlane, input.scope);
362
+ const exactNames = input.declarations
363
+ .filter((declaration) => declaration.requiredStages.includes(input.scope.stage))
364
+ .map((declaration) => (0, model_js_1.canonicalOperatorSecretName)(input.scope, declaration.logicalName));
365
+ const observed = await collectSecretMetadata(input.controlPlane, input.scope, {
366
+ exactNames,
367
+ });
147
368
  const result = (0, metadata_js_1.preflightSecretMetadata)({
148
369
  declarations: input.declarations,
149
370
  observed,
@@ -155,6 +376,232 @@ async function runSecretDeployPreflight(input) {
155
376
  bypassed: false,
156
377
  });
157
378
  }
379
+ function hasExactTags(actual, expected) {
380
+ const actualKeys = Object.keys(actual).sort(deterministic_order_js_1.compareUtf16);
381
+ const expectedKeys = Object.keys(expected).sort(deterministic_order_js_1.compareUtf16);
382
+ return (actualKeys.length === expectedKeys.length &&
383
+ actualKeys.every((key, index) => key === expectedKeys[index] && actual[key] === expected[key]));
384
+ }
385
+ function isExactGeneratedSecret(observed, declaration, scope, authority) {
386
+ const name = (0, model_js_1.canonicalOperatorSecretName)(scope, declaration.logicalName);
387
+ const arnPrefix = `arn:${authority.partition}:secretsmanager:${authority.region}:${authority.accountId}:secret:${name}-`;
388
+ const tags = (0, model_js_1.canonicalOperatorSecretTags)(scope, declaration);
389
+ return (declaration.source === 'generated' &&
390
+ declaration.generation?.kind === 'hmac-key-ring-v1' &&
391
+ tags[model_js_1.SECRET_METADATA_TAG_KEYS.management] ===
392
+ model_js_1.GENERATED_SECRET_MANAGEMENT_CLASS &&
393
+ observed.name === name &&
394
+ observed.arn.startsWith(arnPrefix) &&
395
+ /^[A-Za-z0-9]{6}$/.test(observed.arn.slice(arnPrefix.length)) &&
396
+ hasExactTags(observed.tags, tags));
397
+ }
398
+ const GENERATED_SECRET_ABSENCE_POLL_INTERVAL_MS = 2_000;
399
+ const GENERATED_SECRET_ABSENCE_TIMEOUT_MS = 10 * 60 * 1_000;
400
+ const GENERATED_SECRET_FORCE_DELETE_CLOCK_SKEW_MS = 5 * 60 * 1_000;
401
+ const GENERATED_SECRET_RECOVERY_WINDOW_MS = 7 * 24 * 60 * 60 * 1_000;
402
+ function isWithinGeneratedSecretRecoveryWindow(recoveryUntil, observedAt) {
403
+ if (typeof recoveryUntil !== 'string')
404
+ return false;
405
+ const recoveryUntilTimestamp = Date.parse(recoveryUntil);
406
+ return (!Number.isNaN(recoveryUntilTimestamp) &&
407
+ recoveryUntilTimestamp <=
408
+ observedAt +
409
+ GENERATED_SECRET_RECOVERY_WINDOW_MS +
410
+ GENERATED_SECRET_FORCE_DELETE_CLOCK_SKEW_MS);
411
+ }
412
+ /**
413
+ * Retires only exact framework-generated stage secrets after a
414
+ * successful native Slice removal. This path never reads a secret value,
415
+ * inventories a prefix, or operates on operator/database-bootstrap secrets.
416
+ */
417
+ async function runGeneratedSecretRetirement(input) {
418
+ (0, model_js_1.validateSecretManagementScope)(input.scope);
419
+ if (!/^\d{12}$/.test(input.accountId) ||
420
+ !/^[a-z]{2}(?:-gov)?-[a-z]+-\d$/.test(input.region)) {
421
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'retire');
422
+ }
423
+ const logicalNames = new Set();
424
+ for (const declaration of input.declarations) {
425
+ (0, model_js_1.validateSecretMetadataDeclaration)(declaration);
426
+ if (logicalNames.has(declaration.logicalName)) {
427
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
428
+ }
429
+ logicalNames.add(declaration.logicalName);
430
+ }
431
+ const declarations = input.declarations
432
+ .filter((declaration) => declaration.source === 'generated' &&
433
+ declaration.generation?.kind === 'hmac-key-ring-v1' &&
434
+ declaration.logicalName === model_js_1.GENERATED_HMAC_SECRET_LOGICAL_NAME &&
435
+ declaration.requiredStages.includes(input.scope.stage))
436
+ .sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.logicalName, right.logicalName));
437
+ const deletionMode = input.scope.stage === 'production' ? 'recovery-window' : 'immediate';
438
+ const secrets = [];
439
+ for (const declaration of declarations) {
440
+ const name = (0, model_js_1.canonicalOperatorSecretName)(input.scope, declaration.logicalName);
441
+ let observed;
442
+ try {
443
+ observed = await input.controlPlane.describeExact({
444
+ includePlannedDeletion: true,
445
+ name,
446
+ });
447
+ }
448
+ catch (error) {
449
+ throw safeControlPlaneError(error, 'secret-control-plane-inventory-failed', 'describe');
450
+ }
451
+ if (observed === undefined) {
452
+ secrets.push(Object.freeze({
453
+ generation: 'hmac-key-ring-v1',
454
+ logicalName: declaration.logicalName,
455
+ name,
456
+ outcome: 'not-found',
457
+ source: 'generated',
458
+ }));
459
+ continue;
460
+ }
461
+ try {
462
+ (0, model_js_1.validateObservedSecretMetadata)(observed);
463
+ }
464
+ catch {
465
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
466
+ }
467
+ if (!isExactGeneratedSecret(observed, declaration, input.scope, {
468
+ accountId: input.accountId,
469
+ partition: input.partition,
470
+ region: input.region,
471
+ })) {
472
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
473
+ }
474
+ const now = input.now ?? Date.now;
475
+ if (observed.deletionPendingUntil !== undefined &&
476
+ deletionMode === 'recovery-window') {
477
+ const observedAt = now();
478
+ if (!isWithinGeneratedSecretRecoveryWindow(observed.deletionPendingUntil, observedAt)) {
479
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
480
+ }
481
+ secrets.push(Object.freeze({
482
+ generation: 'hmac-key-ring-v1',
483
+ logicalName: declaration.logicalName,
484
+ name,
485
+ outcome: 'already-scheduled',
486
+ recoveryUntil: observed.deletionPendingUntil,
487
+ source: 'generated',
488
+ }));
489
+ continue;
490
+ }
491
+ if (deletionMode === 'immediate') {
492
+ const waitBeforeRetry = input.waitBeforeRetry ??
493
+ ((delayMs) => new Promise((resolve) => setTimeout(resolve, delayMs)));
494
+ const waitForState = async (expected) => {
495
+ const deadline = now() + GENERATED_SECRET_ABSENCE_TIMEOUT_MS;
496
+ while (true) {
497
+ let remaining;
498
+ try {
499
+ remaining = await input.controlPlane.describeExact({
500
+ includePlannedDeletion: true,
501
+ name,
502
+ });
503
+ }
504
+ catch (error) {
505
+ throw safeControlPlaneError(error, 'secret-control-plane-inventory-failed', 'describe');
506
+ }
507
+ if (remaining === undefined) {
508
+ if (expected === 'absent')
509
+ return;
510
+ }
511
+ else {
512
+ try {
513
+ (0, model_js_1.validateObservedSecretMetadata)(remaining);
514
+ }
515
+ catch {
516
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
517
+ }
518
+ if (!isExactGeneratedSecret(remaining, declaration, input.scope, {
519
+ accountId: input.accountId,
520
+ partition: input.partition,
521
+ region: input.region,
522
+ })) {
523
+ throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
524
+ }
525
+ if (expected === 'active' &&
526
+ remaining.deletionPendingUntil === undefined) {
527
+ return;
528
+ }
529
+ }
530
+ if (now() >= deadline) {
531
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'retire');
532
+ }
533
+ await waitBeforeRetry(GENERATED_SECRET_ABSENCE_POLL_INTERVAL_MS);
534
+ }
535
+ };
536
+ if (observed.deletionPendingUntil !== undefined) {
537
+ if (Date.parse(observed.deletionPendingUntil) <=
538
+ now() + GENERATED_SECRET_FORCE_DELETE_CLOCK_SKEW_MS) {
539
+ await waitForState('absent');
540
+ secrets.push(Object.freeze({
541
+ generation: 'hmac-key-ring-v1',
542
+ logicalName: declaration.logicalName,
543
+ name,
544
+ outcome: 'deleted',
545
+ source: 'generated',
546
+ }));
547
+ continue;
548
+ }
549
+ try {
550
+ await input.controlPlane.restore({ arn: observed.arn });
551
+ }
552
+ catch (error) {
553
+ throw safeControlPlaneError(error, 'secret-control-plane-protected-action-failed', 'recover');
554
+ }
555
+ await waitForState('active');
556
+ }
557
+ try {
558
+ await input.controlPlane.deleteImmediately({ arn: observed.arn });
559
+ }
560
+ catch (error) {
561
+ throw safeControlPlaneError(error, 'secret-control-plane-protected-action-failed', 'retire');
562
+ }
563
+ await waitForState('absent');
564
+ secrets.push(Object.freeze({
565
+ generation: 'hmac-key-ring-v1',
566
+ logicalName: declaration.logicalName,
567
+ name,
568
+ outcome: 'deleted',
569
+ source: 'generated',
570
+ }));
571
+ continue;
572
+ }
573
+ let scheduled;
574
+ try {
575
+ scheduled = await input.controlPlane.scheduleRetirement({
576
+ arn: observed.arn,
577
+ recoveryWindowDays: 7,
578
+ });
579
+ }
580
+ catch (error) {
581
+ throw safeControlPlaneError(error, 'secret-control-plane-protected-action-failed', 'retire');
582
+ }
583
+ if (!isWithinGeneratedSecretRecoveryWindow(scheduled.recoveryUntil, now())) {
584
+ throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'retire');
585
+ }
586
+ secrets.push(Object.freeze({
587
+ generation: 'hmac-key-ring-v1',
588
+ logicalName: declaration.logicalName,
589
+ name,
590
+ outcome: 'scheduled',
591
+ recoveryUntil: scheduled.recoveryUntil,
592
+ source: 'generated',
593
+ }));
594
+ }
595
+ return Object.freeze({
596
+ deletionMode,
597
+ outcome: declarations.length === 0 ? 'not-applicable' : 'retired',
598
+ ...(deletionMode === 'recovery-window'
599
+ ? { recoveryWindowDays: 7 }
600
+ : {}),
601
+ secrets: Object.freeze(secrets),
602
+ stage: input.scope.stage,
603
+ });
604
+ }
158
605
  const canonicalStages = new Set(['development', 'staging', 'production']);
159
606
  const logicalNamePattern = /^[A-Za-z][A-Za-z0-9]{0,63}$/;
160
607
  function validateProtectedAuthorization(authorization, logicalName, scope) {
@@ -186,7 +633,10 @@ async function runProtectedSecretLifecycle(input) {
186
633
  input.recoveryWindowDays > 30)) {
187
634
  throw new SecretOperatorControlPlaneError('secret-control-plane-protected-action-failed', 'retire');
188
635
  }
189
- const observed = await collectSecretMetadata(input.controlPlane, input.scope, { includePlannedDeletion: true });
636
+ const observed = await collectSecretMetadata(input.controlPlane, input.scope, {
637
+ exactNames: [(0, model_js_1.canonicalOperatorSecretName)(input.scope, input.logicalName)],
638
+ includePlannedDeletion: true,
639
+ });
190
640
  const matches = observed.filter((secret) => isOwnedOperatorSecret(secret, input.logicalName, input.scope));
191
641
  if (matches.length !== 1) {
192
642
  throw new SecretOperatorControlPlaneError('secret-control-plane-inventory-invalid', 'inventory');
@@ -1,9 +1,10 @@
1
1
  import { type SecretMetadataDeclaration } from './model.js';
2
2
  export declare const SECRET_METADATA_REGISTRY_PATH: "secrets/metadata.json";
3
- export declare const SECRET_METADATA_REGISTRY_SCHEMA_VERSION: 1;
3
+ export declare const SECRET_METADATA_REGISTRY_SCHEMA_VERSION: 2;
4
4
  export interface SecretMetadataRegistry {
5
5
  declarations: readonly SecretMetadataDeclaration[];
6
6
  schemaVersion: typeof SECRET_METADATA_REGISTRY_SCHEMA_VERSION;
7
7
  }
8
8
  export declare function parseSecretMetadataRegistry(value: unknown): SecretMetadataRegistry;
9
9
  export declare function operatorSecretMetadataDeclarations(registry: SecretMetadataRegistry): readonly SecretMetadataDeclaration[];
10
+ export declare function deployedSecretMetadataDeclarations(registry: SecretMetadataRegistry): readonly SecretMetadataDeclaration[];
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SECRET_METADATA_REGISTRY_SCHEMA_VERSION = exports.SECRET_METADATA_REGISTRY_PATH = void 0;
4
4
  exports.parseSecretMetadataRegistry = parseSecretMetadataRegistry;
5
5
  exports.operatorSecretMetadataDeclarations = operatorSecretMetadataDeclarations;
6
+ exports.deployedSecretMetadataDeclarations = deployedSecretMetadataDeclarations;
6
7
  const deterministic_order_js_1 = require("../deterministic-order.js");
7
8
  const model_js_1 = require("./model.js");
8
9
  exports.SECRET_METADATA_REGISTRY_PATH = 'secrets/metadata.json';
9
- exports.SECRET_METADATA_REGISTRY_SCHEMA_VERSION = 1;
10
+ exports.SECRET_METADATA_REGISTRY_SCHEMA_VERSION = 2;
10
11
  function isRecord(value) {
11
12
  return typeof value === 'object' && value !== null && !Array.isArray(value);
12
13
  }
@@ -19,6 +20,7 @@ function invalidRegistry(path, reason) {
19
20
  function parseDeclaration(value, index) {
20
21
  if (!isRecord(value) ||
21
22
  !hasOnlyProperties(value, [
23
+ 'generation',
22
24
  'logicalName',
23
25
  'owner',
24
26
  'requiredStages',
@@ -36,6 +38,7 @@ function parseDeclaration(value, index) {
36
38
  value['rotation']['mode'] !== 'provider-managed') ||
37
39
  (value['source'] !== 'aws-managed' &&
38
40
  value['source'] !== 'database-bootstrap' &&
41
+ value['source'] !== 'generated' &&
39
42
  value['source'] !== 'operator') ||
40
43
  (value['valueKind'] !== 'binary' &&
41
44
  value['valueKind'] !== 'json' &&
@@ -43,6 +46,17 @@ function parseDeclaration(value, index) {
43
46
  invalidRegistry(`declarations.${index}`, 'must contain only the supported value-free declaration metadata');
44
47
  }
45
48
  const declaration = Object.freeze({
49
+ ...(value['generation'] === undefined
50
+ ? {}
51
+ : isRecord(value['generation']) &&
52
+ hasOnlyProperties(value['generation'], ['kind']) &&
53
+ value['generation']['kind'] === 'hmac-key-ring-v1'
54
+ ? {
55
+ generation: Object.freeze({
56
+ kind: value['generation']['kind'],
57
+ }),
58
+ }
59
+ : invalidRegistry(`declarations.${index}.generation`, 'must select one supported value-blind generator')),
46
60
  logicalName: value['logicalName'],
47
61
  owner: value['owner'],
48
62
  requiredStages: Object.freeze([...value['requiredStages']]),
@@ -83,4 +97,7 @@ function parseSecretMetadataRegistry(value) {
83
97
  function operatorSecretMetadataDeclarations(registry) {
84
98
  return Object.freeze(registry.declarations.filter(({ source }) => source === 'operator'));
85
99
  }
100
+ function deployedSecretMetadataDeclarations(registry) {
101
+ return Object.freeze(registry.declarations.filter(({ source }) => source === 'operator' || source === 'generated'));
102
+ }
86
103
  //# sourceMappingURL=registry.js.map
@@ -12,13 +12,18 @@ const supportedSourceExtension = /(?:\.(?:[cm]?[jt]sx?|bash|env(?:\.[^/]+)?|json
12
12
  const ignoredDirectoryNames = new Set([
13
13
  '.git',
14
14
  '.next',
15
+ '.open-next',
15
16
  '.sst',
17
+ '.venv',
16
18
  'build',
17
19
  'coverage',
18
20
  'dist',
19
21
  'node_modules',
20
22
  ]);
21
23
  const maximumSourceBytes = 2 * 1024 * 1024;
24
+ function isGeneratedEvidenceDirectory(projectRoot, directory, entryName) {
25
+ return directory === (0, node_path_1.resolve)(projectRoot, '.ebk') && entryName === 'evidence';
26
+ }
22
27
  class SecretStaticVerificationError extends Error {
23
28
  code;
24
29
  constructor(code) {
@@ -52,8 +57,11 @@ async function collectSourceFiles(projectRoot, directory, declaredSecretNames) {
52
57
  const result = [];
53
58
  const entries = await (0, promises_1.readdir)(directory, { withFileTypes: true });
54
59
  for (const entry of entries.sort((left, right) => (0, deterministic_order_js_1.compareUtf16)(left.name, right.name))) {
55
- if (entry.isDirectory() && ignoredDirectoryNames.has(entry.name))
60
+ if (entry.isDirectory() &&
61
+ (ignoredDirectoryNames.has(entry.name) ||
62
+ isGeneratedEvidenceDirectory(projectRoot, directory, entry.name))) {
56
63
  continue;
64
+ }
57
65
  const unresolved = (0, node_path_1.resolve)(directory, entry.name);
58
66
  const metadata = await (0, promises_1.lstat)(unresolved);
59
67
  if (metadata.isSymbolicLink()) {