@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
@@ -0,0 +1,518 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderStageAuthorityWorkspaceFiles = renderStageAuthorityWorkspaceFiles;
4
+ function renderStageAuthorityWorkspaceFiles(options) {
5
+ return {
6
+ 'docs/stage-deployment-authority.md': `# Stage deployment authority
7
+
8
+ Each active stage uses one stable deployment role and one runtime permission
9
+ boundary. The authority is independent of framework package candidates and is
10
+ updated only when the reviewed service-family contract changes.
11
+
12
+ A fresh fully-isolated workspace may bind development and staging before its
13
+ production account exists. Leave an unavailable account explicitly null; do
14
+ not invent an ID or reuse another stage's account. The selected lower stage
15
+ must have its exact account, and every configured account must be distinct.
16
+ Production operations still require the complete three-account topology and
17
+ all existing production controls. This does not relax the complete tuple
18
+ evidence required when migrating ownership of an existing workspace.
19
+
20
+ Render a stage's CloudFormation template from the committed repository policy:
21
+
22
+ \`\`\`sh
23
+ pnpm nx run <workspace>:stage-authority-render -- \\
24
+ --stage=development \\
25
+ --aws-principal-arn=<temporary-credential-source-role>
26
+ \`\`\`
27
+
28
+ Locally admitted stages require at least one reviewed
29
+ \`--aws-principal-arn\`. Stages that require only protected GitHub deployment
30
+ require one exact \`--github-repository\` environment trust and reject local AWS
31
+ principals. Production-isolated staging requires both the local principal and
32
+ the protected GitHub environment trust: local staging remains supported, while
33
+ the protected \`develop\` deployment produces the receipt consumed by production
34
+ promotion. The \`starter\` profile may add that exact GitHub trust to either of
35
+ its locally admitted stages because its GitHub paved road is optional. Fully
36
+ isolated development rejects GitHub trust.
37
+
38
+ GitHub trust is scoped to the repository's exact stage environment and always
39
+ uses GitHub's immutable owner/repository-ID OIDC subject customization. Every
40
+ \`--github-repository\` must be accompanied by both
41
+ \`--github-owner-id=<numeric-id>\` and
42
+ \`--github-repository-id=<numeric-id>\`; a partial or name-only subject is
43
+ rejected. Obtain the canonical slug and IDs from the GitHub bootstrap report,
44
+ but do not enable immutable subjects yet for an existing repository. First apply the rendered
45
+ \`ownership-template.json\` as the owner-claim stack named in
46
+ \`ownership-manifest.json\`. CloudFormation creates the retained
47
+ \`/ebk/<stage>/workspace-owner\` record atomically. Then apply
48
+ \`template.json\` as the authority stack shown in \`manifest.json\`; its
49
+ CloudFormation Rule reads the exact owner before any IAM change. A second
50
+ workspace therefore cannot address the same account, Region, and stage tuple,
51
+ while a clone retaining the committed deployment ID reuses both stacks.
52
+ Read back and simulate the effective immutable-subject trust, then apply the
53
+ GitHub bootstrap change that configures the repository's default immutable OIDC
54
+ subject. This AWS-trust-first order prevents an existing protected deployment
55
+ from being stranded between the subject-format and trust-policy changes.
56
+ Existing deployed workspaces must first commit the explicit migration evidence
57
+ described in \`docs/workspace-deployment-ownership.md\`; never claim an existing
58
+ tuple by editing policy directly. Read back the deployed template and policies
59
+ and compare their canonical digests before any application mutation. Simulate
60
+ representative permitted lifecycle calls and denied account, trust,
61
+ boundary-removal, cross-stage, cross-account, and cross-Region calls against
62
+ the effective assumed role.
63
+
64
+ The deployment role is a temporary infrastructure administrator, not a runtime
65
+ workload identity. It therefore receives stable service-family authority for
66
+ the generated architecture instead of a candidate-specific provider-call
67
+ inventory. Sensitive seams remain independently bounded: IAM roles must use the
68
+ generated stage path and permission boundary, \`iam:PassRole\` is limited to
69
+ those roles, Lambda resource-policy mutation follows the generated integration
70
+ and Function URL contracts, later trust-policy mutation is denied, and
71
+ unreviewed direct resource-policy APIs are denied.
72
+ The \`/ebk/<stage>/workloads/\` IAM path is an EBK-owned reserved namespace for
73
+ roles created from reviewed generated infrastructure. External or manually
74
+ managed roles must never be created there, and the deployer's bounded
75
+ \`iam:PassRole\` access to that path is not adopter extension authority.
76
+ Supported generated S3,
77
+ Lambda, SNS, and SQS policy surfaces remain resource-contained. The generated
78
+ edge WAF log group is ARN-contained. CloudWatch Logs exposes
79
+ \`PutResourcePolicy\` only at account scope, with no resource or action-specific
80
+ condition keys, so its reviewed generated payload cannot be inspected by IAM;
81
+ the exact edge Region and reviewed generated source are the honest controls.
82
+ The separate, normally empty Router smoke-access IP set uses the existing
83
+ Pulumi AWS provider's Cloud Control resource lifecycle. Cloud Control
84
+ create/update/delete require \`Resource: "*"\` and offer no resource-type
85
+ condition key. Those orchestration actions and required reads are restricted
86
+ to the edge Region; the service uses the caller's temporary session, with no
87
+ service-role override. Underlying WAF calls still require the stage deployer's
88
+ resource authority and remain subject to its explicit guardrails. Baseline WAF
89
+ IP-set identities are preserved and smoke never edits their addresses.
90
+ When the committed application Region is also the edge Region, ordinary log
91
+ lifecycle mutations are admitted only for the generated stage application and
92
+ API execution-log namespaces; unrelated and other-stage log groups remain
93
+ denied.
94
+ IAM identity
95
+ policies cannot inspect the initial \`AssumeRolePolicyDocument\` supplied to
96
+ \`CreateRole\`. For that create-time field, reviewed generated infrastructure
97
+ source is the control: the temporary deployment principal is trusted to execute
98
+ that source, while later trust-policy mutation remains denied. EBK does not
99
+ claim a postdeployment trust attestor. Runtime roles are created by SST/Pulumi
100
+ in the application stack and must carry the generated stage permission
101
+ boundary.
102
+
103
+ The policy generator is checked against a compact, versioned extract of AWS's
104
+ official Service Authorization Reference v1.4. Every wildcard-admitted service
105
+ family is covered. Every permission-management action that the role can admit
106
+ is either explicitly denied or an exact reviewed lifecycle seam: bounded
107
+ workload-role IAM operations, AWS-resource KMS grants, generated Lambda
108
+ integration permissions, stage SNS/SQS attributes, and stage/SST S3 bucket
109
+ policy, public-access-block, and ownership controls, plus the generated edge
110
+ WAF log-delivery resource policy described above. Actions the role does not
111
+ admit remain implicitly denied.
112
+ Unsupported replication, alternate RDS topology/integration, export, account
113
+ control, arbitrary user/data-plane, and exfiltration operations remain denied.
114
+
115
+ Governed nonproduction Slice removal configures the provider to delete the
116
+ versioned confidential-export bucket, removes its deterministic alias, and may
117
+ schedule only a KMS key carrying both the exact stage and
118
+ \`standard-data-export\` management tags. Production export buckets, aliases,
119
+ and keys remain retained and are explicitly denied deletion. Long generated
120
+ bucket names are truncated and hash-suffixed while preserving the
121
+ \`-data-export\` suffix so that protection remains narrowly scoped.
122
+
123
+ The role may inspect secret metadata. SST 4.17.1's generated Foundation Aurora
124
+ credential is the one value exception: the temporary deployer may put and read
125
+ that exact stage/account/Region-bound secret version so the pinned provider can
126
+ create and reconcile it. The reserved name must also carry the exact
127
+ \`ebk:stage\` tag. \`GetSecretValue\` and \`PutSecretValue\` remain denied for
128
+ operator-secret and all other Slice containers.
129
+ Generated source creates Slice containers inside the deterministic
130
+ \`ebk/<stage>/*\` namespace. The temporary deployer's \`UpdateSecret\` authority
131
+ is denied outside that namespace and the exact generated Foundation
132
+ provider-secret identity. Imported, externally owned or shared, unmanaged,
133
+ other-stage, cross-account, and cross-Region containers remain outside this
134
+ update authority. The namespace is reserved for EBK-owned, stage-exclusive
135
+ containers, including explicitly approved cross-Slice use; imported or
136
+ externally owned containers must use a name outside it. The namespace contract
137
+ covers generated database, machine-client, generated-value, and EBK-owned
138
+ operator containers without adding a new IAM exception for every provider
139
+ resource type. It does not admit
140
+ \`GetSecretValue\` or \`PutSecretValue\` for Slice containers. Because
141
+ \`CreateSecret\` and \`UpdateSecret\` can optionally carry a value, IAM cannot
142
+ distinguish a metadata-only call; reviewed generated source, temporary
143
+ credentials, the stage namespace, and CloudTrail are the honest controls for
144
+ those provider APIs.
145
+ SSM value reads are limited to the stage's Foundation configuration, SST 4.17.1
146
+ bootstrap record, stage-qualified SST passphrases, SST's VPC private-key
147
+ reference, and the exact retained workspace-owner record. The deployment role
148
+ can read but cannot change or delete that owner. Foundation removal enumerates Product Slice registration names and
149
+ metadata without reading their values. Recursive and historical SSM value reads
150
+ are denied. These controls,
151
+ the exact trust, temporary credentials, requested Region, known account/stage
152
+ tags, production-name protections, and explicit protection-removal denies are
153
+ the stable guardrails around the broader infrastructure service families. In
154
+ commercial AWS, CloudFront, CloudFront-scope WAF, and edge ACM mutations use
155
+ the us-east-1 control plane while application resources remain bound to the
156
+ committed deployment Region. This prerelease does not claim Router edge support in
157
+ noncommercial partitions: CloudFront is unavailable inside GovCloud, and the
158
+ China-partition CloudFront/WAF/edge-ACM control plane is not yet proven.
159
+
160
+ When multiple stages share one AWS account, their application resources,
161
+ runtime roles, data, and discovery remain separately named and tagged, but the
162
+ native SST deployment role is account-scoped enough to reconcile SST's shared
163
+ bootstrap state and assets. Tag and name denies are defense in depth, not a hard
164
+ IAM boundary between same-account deployment roles. Choose
165
+ \`production-isolated\` when production requires an AWS-enforced deployment
166
+ blast-radius boundary from development and staging.
167
+
168
+ Native SST 4.17.1 development uses a shared untagged AppSync Events API named
169
+ \`sst\` and its \`sst\` namespace in the development account/Region. Development
170
+ authority admits native discovery/creation; the runtime boundary admits only
171
+ connect/publish/subscribe. No API-key, GraphQL, update or deletion authority is
172
+ added. IAM cannot isolate task channel subpaths within this namespace: this is
173
+ a shared developer control plane, not an application event bus or a boundary
174
+ between mutually hostile tasks. Application data/events remain task-scoped.
175
+ Task cleanup never deletes this shared transport. Protected-stage authority is
176
+ unchanged; an incomplete or malformed native API requires investigation.
177
+
178
+ Native Next.js development also assumes SST's generated web dev-server runtime
179
+ role. Development authority admits only the \`sst-dev\` session in the committed
180
+ Region, for roles in the reserved development workload path carrying both the
181
+ generated \`ebk:dev-runtime=web\` purpose and a development or task-stage tag.
182
+ Purpose does not depend on SST's potentially truncated physical names. Other role paths/accounts and
183
+ protected-stage assumptions remain denied. Runtime roles still cannot assume
184
+ other roles, and their mandatory boundary and task data restrictions remain.
185
+ The owned web launcher requires SST's temporary runtime session and strips
186
+ inherited deployment profile selectors before starting Next. If that handoff
187
+ fails, reconcile this generated authority and inspect \`ebk dev logs <slice>\`,
188
+ then retry \`ebk dev restart <slice>\`. Do not grant the infrastructure deployer
189
+ direct application data access or modify generated runtime trust as a workaround.
190
+ `,
191
+ 'docs/workspace-deployment-ownership.md': `# Workspace deployment ownership
192
+
193
+ Every generated workspace commits one stable, random \`workspaceDeploymentId\`
194
+ and \`workspaceDeploymentProvenance: { kind: "fresh", schemaVersion: 1 }\`.
195
+ That identity belongs to the workspace, not to a checkout: clones with the same
196
+ committed policy are the same deployment owner.
197
+
198
+ Before authority or SST lifecycle work, each active account/Region/canonical
199
+ stage tuple must contain exactly one retained String parameter at
200
+ \`/ebk/<stage>/workspace-owner\`. The value binds the tuple to the generated
201
+ deployment ID; the current workspace name remains diagnostic metadata and may
202
+ be renamed without transferring authority. The ownership claim is deliberately
203
+ exclusive and retained. Two workspaces do not cohabit one tuple, and removing
204
+ an application stack does not release the claim.
205
+
206
+ Render stage authority with \`pnpm nx run ${options.name}:stage-authority-render --
207
+ --stage=<stage> ...\`. Apply the emitted \`ownership-template.json\` as the exact
208
+ claim stack in \`ownership-manifest.json\` before applying the authority template.
209
+ CloudFormation's fixed-name SSM create is the atomic claim. The authority
210
+ template accepts only that exact parameter path and fails its Rule before any
211
+ IAM change unless its value is the exact committed owner. The deployment role
212
+ may read the owner but is explicitly denied every owner mutation.
213
+
214
+ For a read-only report, run
215
+ \`node tools/stage-authority-render.mjs --stage=<stage> --ownership-doctor=true
216
+ --profile=<temporary-profile>\`. It reports \`owned\`, \`unclaimed\`, or \`conflict\`;
217
+ a conflict identifies the committed owner without changing AWS.
218
+
219
+ ## Existing prerelease deployments
220
+
221
+ An existing policy without the required deployment identity provenance is fail
222
+ closed. Inventory
223
+ each configured tuple read-only and commit bounded evidence under
224
+ \`docs/adoption/\`. The evidence must bind the exact prior policy SHA-256,
225
+ workspace name, proposed \`ebkws-<32 lowercase hex>\` ID, and every configured
226
+ tuple. The ID, exact Region, and every active-stage account must be committed in
227
+ the same migration change; an empty interim topology cannot reserve future
228
+ coordinates. Each tuple declares \`empty\` with no resource digests or
229
+ \`existing-workspace\` with sorted SHA-256 digests of its bounded resource
230
+ identity evidence. Then run the repository-policy generator with both
231
+ \`--workspaceDeploymentId\` and
232
+ \`--workspaceDeploymentMigrationEvidence\`. Report-only mode shows the exact
233
+ result with \`workspaceDeploymentProvenance.kind: "migrated"\`; \`--apply\`
234
+ commits it. Every later policy read revalidates the retained evidence bytes,
235
+ workspace identity, the syntactically valid diagnostic name recorded at migration,
236
+ and exact active stage/account/Region tuple set. The current package name may be
237
+ renamed without renewing ownership evidence because authority is bound to the
238
+ immutable deployment ID rather than that diagnostic label.
239
+ A profile, account, or Region change for a migrated workspace requires a new
240
+ versioned evidence path whose previous-policy digest binds the current policy;
241
+ unrelated policy changes retain the existing binding.
242
+
243
+ This migration is an explicit ownership assertion, not automatic discovery.
244
+ Never use it to adopt a tuple whose resources belong to another workspace. An
245
+ occupied but unclaimed tuple requires reviewed evidence that the existing
246
+ resources belong to this workspace. There is no implicit compatibility claim,
247
+ ownership transfer, or force-adoption path.
248
+ `,
249
+ 'tools/stage-authority-render.mjs': `import {
250
+ assertBoundStageAuthorityTemplateFitsBodyLimit,
251
+ canonicalStageAuthorityTemplate,
252
+ createStageAuthorityPlan,
253
+ } from '@empire-builder-kit/nx/aws-authority';
254
+ import {
255
+ configuredDeploymentAccountForStage,
256
+ configuredDeploymentRegion,
257
+ isActiveDeploymentStage,
258
+ readRepositoryOperatingPolicy,
259
+ requiresGithubDeployment,
260
+ } from '@empire-builder-kit/nx/repository-policy';
261
+ import {
262
+ bindStageAuthorityTemplateToWorkspaceOwner,
263
+ canonicalWorkspaceStageOwner,
264
+ createWorkspaceStageOwnershipClaimPlan,
265
+ inspectWorkspaceStageOwnership,
266
+ } from '@empire-builder-kit/nx/workspace-deployment';
267
+ import { createHash } from 'node:crypto';
268
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
269
+ import { join } from 'node:path';
270
+
271
+ const values = new Map();
272
+ const principals = [];
273
+ for (const argument of process.argv.slice(2)) {
274
+ const index = argument.indexOf('=');
275
+ if (!argument.startsWith('--') || index <= 2) {
276
+ throw new Error('Stage authority arguments must use --name=value.');
277
+ }
278
+ const name = argument.slice(2, index);
279
+ const value = argument.slice(index + 1);
280
+ if (!value) throw new Error('Stage authority arguments cannot be empty.');
281
+ if (name === 'aws-principal-arn') principals.push(value);
282
+ else if (values.has(name)) throw new Error('Duplicate stage authority argument: ' + name);
283
+ else values.set(name, value);
284
+ }
285
+ const stage = values.get('stage');
286
+ if (!['development', 'staging', 'production'].includes(stage)) {
287
+ throw new Error('--stage must be development, staging, or production.');
288
+ }
289
+ const policy = readRepositoryOperatingPolicy(process.cwd());
290
+ const rootPackage = JSON.parse(readFileSync('package.json', 'utf8'));
291
+ const workspaceName = rootPackage?.name;
292
+ if (
293
+ typeof workspaceName !== 'string' ||
294
+ workspaceName.length > 214 ||
295
+ !/^(?:@[a-z0-9][a-z0-9._~-]*\\/)?[a-z0-9][a-z0-9._~-]*$/.test(workspaceName)
296
+ ) {
297
+ throw new Error('Workspace ownership requires the current generated root package name.');
298
+ }
299
+ if (policy.deploymentProfile !== '${options.deploymentProfile}') {
300
+ throw new Error('Generated and committed deployment profiles differ.');
301
+ }
302
+ if (policy.workspaceDeploymentId !== '${options.workspaceDeploymentId}') {
303
+ throw new Error('Generated and committed workspace deployment identities differ.');
304
+ }
305
+ if (!isActiveDeploymentStage(policy.deploymentProfile, stage)) {
306
+ throw new Error('Requested stage is inactive for the committed deployment profile.');
307
+ }
308
+ const accountId = configuredDeploymentAccountForStage(
309
+ policy.deploymentProfile,
310
+ policy.deploymentAccounts,
311
+ stage,
312
+ );
313
+ const region = configuredDeploymentRegion(policy.deploymentRegion);
314
+ if (/^(?:us-iso-|us-isob-|eu-isoe-|us-isof-)/.test(region)) {
315
+ throw new Error(
316
+ 'The committed Region belongs to an unsupported AWS partition. Generated authority supports aws, aws-cn, and aws-us-gov only.',
317
+ );
318
+ }
319
+ const partition = region.startsWith('cn-')
320
+ ? 'aws-cn'
321
+ : region.startsWith('us-gov-')
322
+ ? 'aws-us-gov'
323
+ : 'aws';
324
+ const ownershipTarget = {
325
+ accountId,
326
+ region,
327
+ stage,
328
+ workspaceDeploymentId: policy.workspaceDeploymentId,
329
+ workspaceName,
330
+ };
331
+ const ownershipDoctor = values.get('ownership-doctor');
332
+ if (ownershipDoctor !== undefined && ownershipDoctor !== 'true') {
333
+ throw new Error('--ownership-doctor must be exactly true when supplied.');
334
+ }
335
+ if (ownershipDoctor === 'true') {
336
+ if (principals.length > 0 || values.has('github-repository')) {
337
+ throw new Error('Workspace ownership doctor does not accept authority trust inputs.');
338
+ }
339
+ const profile = values.get('profile');
340
+ const [{ GetCallerIdentityCommand, STSClient }, { fromIni }] = await Promise.all([
341
+ import('@aws-sdk/client-sts'),
342
+ import('@aws-sdk/credential-providers'),
343
+ ]);
344
+ const credentials = profile ? fromIni({ profile }) : undefined;
345
+ const identity = await new STSClient({
346
+ ...(credentials ? { credentials } : {}),
347
+ region,
348
+ }).send(new GetCallerIdentityCommand({}));
349
+ if (identity.Account !== accountId) {
350
+ throw new Error('Workspace ownership doctor caller differs from the committed stage account.');
351
+ }
352
+ const inspection = await inspectWorkspaceStageOwnership(
353
+ ownershipTarget,
354
+ profile ? { profile } : {},
355
+ );
356
+ process.stdout.write(JSON.stringify({
357
+ accountId,
358
+ expectedOwner: inspection.expectedOwner,
359
+ kind: 'ebk-workspace-stage-owner-doctor',
360
+ parameterArn: inspection.parameterArn,
361
+ region,
362
+ ...(inspection.status === 'owned'
363
+ ? { owner: inspection.expectedOwner }
364
+ : inspection.status === 'conflict' && inspection.actualOwner
365
+ ? { owner: inspection.actualOwner }
366
+ : {}),
367
+ ...(inspection.status === 'conflict' ? { reason: inspection.reason } : {}),
368
+ schemaVersion: 1,
369
+ stage,
370
+ status: inspection.status,
371
+ }, null, 2) + '\\n');
372
+ if (inspection.status !== 'owned') process.exitCode = 1;
373
+ } else {
374
+ const repository = values.get('github-repository');
375
+ if (repository && !/^[A-Za-z0-9_.-]+[/][A-Za-z0-9_.-]+$/.test(repository)) {
376
+ throw new Error('--github-repository must be one exact owner/repository slug.');
377
+ }
378
+ const githubOwnerId = values.get('github-owner-id');
379
+ const githubRepositoryId = values.get('github-repository-id');
380
+ const githubId = /^[1-9][0-9]{0,19}$/;
381
+ if (repository && (!githubOwnerId || !githubRepositoryId)) {
382
+ throw new Error(
383
+ '--github-repository requires both --github-owner-id and --github-repository-id.',
384
+ );
385
+ }
386
+ if ((githubOwnerId || githubRepositoryId) && !repository) {
387
+ throw new Error('Immutable GitHub IDs require --github-repository.');
388
+ }
389
+ if (
390
+ (githubOwnerId && !githubId.test(githubOwnerId)) ||
391
+ (githubRepositoryId && !githubId.test(githubRepositoryId))
392
+ ) {
393
+ throw new Error('Immutable GitHub owner and repository IDs must be positive bounded integers.');
394
+ }
395
+ const githubOnly = requiresGithubDeployment(policy.deploymentProfile, stage);
396
+ const productionIsolatedStaging =
397
+ policy.deploymentProfile === 'production-isolated' && stage === 'staging';
398
+ const localRequired = !githubOnly;
399
+ const githubRequired = githubOnly || productionIsolatedStaging;
400
+ const githubAllowed = githubRequired || policy.deploymentProfile === 'starter';
401
+ if (localRequired && principals.length === 0) {
402
+ throw new Error(
403
+ 'Locally admitted stages require at least one reviewed --aws-principal-arn.',
404
+ );
405
+ }
406
+ if (!localRequired && principals.length > 0) {
407
+ throw new Error(
408
+ 'Protected GitHub deployment stages reject local --aws-principal-arn trust.',
409
+ );
410
+ }
411
+ if (githubRequired && !repository) {
412
+ throw new Error(
413
+ 'This stage requires protected GitHub deployment and one exact --github-repository trust.',
414
+ );
415
+ }
416
+ if (repository && !githubAllowed) {
417
+ throw new Error(
418
+ 'This locally admitted isolated-profile stage does not permit GitHub trust.',
419
+ );
420
+ }
421
+ const [githubOwner, githubRepository] = repository?.split('/') ?? [];
422
+ const githubSubject = repository
423
+ ? 'repo:' +
424
+ githubOwner + '@' + githubOwnerId + '/' + githubRepository + '@' + githubRepositoryId +
425
+ ':environment:' + stage
426
+ : undefined;
427
+ const plan = createStageAuthorityPlan({
428
+ accountId,
429
+ awsPrincipalArns: principals,
430
+ ...(repository
431
+ ? {
432
+ github: {
433
+ oidcProviderArn:
434
+ 'arn:' + partition + ':iam::' + accountId + ':oidc-provider/token.actions.githubusercontent.com',
435
+ subject: githubSubject,
436
+ },
437
+ }
438
+ : {}),
439
+ region,
440
+ partition,
441
+ stage,
442
+ });
443
+ const ownership = createWorkspaceStageOwnershipClaimPlan(ownershipTarget);
444
+ const authorityTemplate = bindStageAuthorityTemplateToWorkspaceOwner(
445
+ plan.template,
446
+ ownershipTarget,
447
+ );
448
+ assertBoundStageAuthorityTemplateFitsBodyLimit(authorityTemplate);
449
+ const template = canonicalStageAuthorityTemplate(authorityTemplate);
450
+ const directory = join('.ebk', 'authority', stage);
451
+ mkdirSync(directory, { mode: 0o700, recursive: true });
452
+ const templatePath = join(directory, 'template.json');
453
+ const manifestPath = join(directory, 'manifest.json');
454
+ const ownershipTemplate = canonicalStageAuthorityTemplate(ownership.template);
455
+ const ownershipTemplatePath = join(directory, 'ownership-template.json');
456
+ const ownershipManifestPath = join(directory, 'ownership-manifest.json');
457
+ writeFileSync(templatePath, template, { encoding: 'utf8', mode: 0o600 });
458
+ writeFileSync(ownershipTemplatePath, ownershipTemplate, {
459
+ encoding: 'utf8',
460
+ mode: 0o600,
461
+ });
462
+ const ownershipTemplateSha256 = createHash('sha256')
463
+ .update(ownershipTemplate)
464
+ .digest('hex');
465
+ const ownershipManifest = {
466
+ accountId,
467
+ digest: ownershipTemplateSha256,
468
+ kind: 'ebk-workspace-stage-owner-claim',
469
+ parameterArn: ownership.parameterArn,
470
+ parameterName: ownership.parameterName,
471
+ region,
472
+ schemaVersion: 1,
473
+ stackName: ownership.stackName,
474
+ stage,
475
+ templateSha256: ownershipTemplateSha256,
476
+ workspaceDeploymentId: policy.workspaceDeploymentId,
477
+ workspaceName,
478
+ };
479
+ writeFileSync(
480
+ ownershipManifestPath,
481
+ JSON.stringify(ownershipManifest, null, 2) + '\\n',
482
+ { encoding: 'utf8', mode: 0o600 },
483
+ );
484
+ const templateSha256 = createHash('sha256').update(template).digest('hex');
485
+ const manifest = {
486
+ accountId,
487
+ deploymentRoleArn: plan.identity.deploymentRoleArn,
488
+ digest: templateSha256,
489
+ kind: 'ebk-stage-authority-render',
490
+ limitations: plan.limitations,
491
+ profile: policy.deploymentProfile,
492
+ region,
493
+ schemaVersion: 1,
494
+ stackName: plan.identity.stackName,
495
+ stage,
496
+ templateSha256,
497
+ workspaceDeploymentId: policy.workspaceDeploymentId,
498
+ workspaceName,
499
+ workspaceOwner: canonicalWorkspaceStageOwner(ownershipTarget),
500
+ workspaceOwnerClaimStackName: ownership.stackName,
501
+ workspaceOwnerManifestPath: ownershipManifestPath,
502
+ };
503
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + '\\n', {
504
+ encoding: 'utf8',
505
+ mode: 0o600,
506
+ });
507
+ process.stdout.write(JSON.stringify({
508
+ manifestPath,
509
+ ...manifest,
510
+ ownershipManifestPath,
511
+ ownershipTemplatePath,
512
+ templatePath,
513
+ }) + '\\n');
514
+ }
515
+ `,
516
+ };
517
+ }
518
+ //# sourceMappingURL=workspace-files-stage-authority.js.map
@@ -0,0 +1,55 @@
1
+ import type { DeploymentProfile } from '../../repository-policy/index.js';
2
+ export declare const THIN_DEPLOY_WORKFLOW_PATH: ".github/workflows/deploy.yml";
3
+ export interface ThinDeployActionPins {
4
+ cache: string;
5
+ checkout: string;
6
+ configureAwsCredentials: string;
7
+ downloadArtifact: string;
8
+ pnpmSetup: string;
9
+ setupNode: string;
10
+ uploadArtifact: string;
11
+ }
12
+ export interface ThinDeployToolVersions {
13
+ node: string;
14
+ sst: string;
15
+ }
16
+ export interface ThinDeployWorkflowOptions {
17
+ actionPins: ThinDeployActionPins;
18
+ /** trunk (starter only): main pushes call the deploy workflow for production. */
19
+ deliveryLane?: 'protected-pair' | 'trunk';
20
+ deploymentProfile: DeploymentProfile;
21
+ name: string;
22
+ /**
23
+ * trunk-promotion (isolated profiles only): a successful staging lifecycle on
24
+ * develop promotes and deploys production in the same run, then records the
25
+ * deployed commit on main; promotion-pr and environment-reviewer keep the
26
+ * develop-to-main promotion pull request.
27
+ */
28
+ productionApprovalMode?: ThinDeployProductionApprovalMode;
29
+ toolVersions: ThinDeployToolVersions;
30
+ }
31
+ export type ThinDeployProductionApprovalMode = 'promotion-pr' | 'environment-reviewer' | 'trunk-promotion';
32
+ /** The production environment secret that lets record-main fast-forward main. */
33
+ export declare const EBK_RECORD_MAIN_TOKEN_SECRET: "EBK_RECORD_MAIN_TOKEN";
34
+ export interface ThinDeployWorkflowFilePlan {
35
+ files: Readonly<Record<typeof THIN_DEPLOY_WORKFLOW_PATH, string>>;
36
+ managedPaths: readonly [typeof THIN_DEPLOY_WORKFLOW_PATH];
37
+ }
38
+ export declare function renderThinDeployVerifyCaller(profile: DeploymentProfile, deliveryLane?: 'protected-pair' | 'trunk', productionApprovalMode?: ThinDeployProductionApprovalMode): string;
39
+ /** @internal Run exactly this generated script in the protected-runner fixture. */
40
+ export declare function protectedBrowserInstallScript(): string;
41
+ /** @internal Exported for executable source-contract tests. */
42
+ export declare function exactStageDeployerGuardScript(operation: string, accountVariable: string): string;
43
+ /** @internal Shared verbatim by every generated protected workflow. */
44
+ export declare function canonicalStageAuthorityDerivationScript(): string;
45
+ /** @internal Exported for executable source-contract tests. */
46
+ export declare function exactStagingPromotionPullGuardScript(): string;
47
+ /** @internal Shared verbatim with the generated workflow and executable tests. */
48
+ export declare function stagingPromotionReceiptValidationScript(): string;
49
+ /** @internal Shared verbatim with the generated workflow and executable tests. */
50
+ export declare function restoredCandidateValidationScript(): string;
51
+ /** @internal Shared verbatim with the generated workflow and executable tests. */
52
+ export declare function stagingPromotionSealScript(): string;
53
+ /** @internal Shared verbatim with the generated workflow and executable tests. */
54
+ export declare function postdeploySupplyChainBindingScript(): string;
55
+ export declare function renderThinDeployWorkflowFilePlan(options: ThinDeployWorkflowOptions): ThinDeployWorkflowFilePlan;