@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
@@ -1,6 +1,6 @@
1
1
  import type { CycloneDxComponentInput } from './sbom.js';
2
2
  export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_KIND: "ebk-nextjs-build-output-inventory";
3
- export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION: 1;
3
+ export declare const NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION: 2;
4
4
  export interface NextJsBuildOutputInventory {
5
5
  artifactFamily: 'nextjs-build-output';
6
6
  artifactId: string;
@@ -13,6 +13,12 @@ export interface NextJsBuildOutputInventory {
13
13
  size: number;
14
14
  }[];
15
15
  kind: typeof NEXTJS_BUILD_OUTPUT_INVENTORY_KIND;
16
+ links: readonly {
17
+ path: string;
18
+ target: string;
19
+ targetKind: 'directory' | 'file';
20
+ targetTextSha256: string;
21
+ }[];
16
22
  materialDigest: string;
17
23
  schemaVersion: typeof NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION;
18
24
  sourceCommit: string;
@@ -11,17 +11,37 @@ const validation_js_1 = require("../validation.js");
11
11
  const common_js_1 = require("./common.js");
12
12
  const errors_js_1 = require("./errors.js");
13
13
  const license_expression_js_1 = require("./license-expression.js");
14
+ const build_output_bounds_js_1 = require("./build-output-bounds.js");
14
15
  exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND = 'ebk-nextjs-build-output-inventory';
15
- exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION = 1;
16
+ exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION = 2;
16
17
  const MAX_FILES = 50_000;
17
- const MAX_DIRECTORIES = 4_096;
18
18
  const MAX_FILE_BYTES = 100 * 1024 * 1024;
19
19
  const MAX_TOTAL_BYTES = 2 * 1024 * 1024 * 1024;
20
20
  const MAX_MATERIAL_PATHS = 64;
21
21
  const MAX_TRACE_REFERENCES = MAX_FILES;
22
+ const MAX_LINKS = 4_096;
23
+ const MAX_LINK_TARGET_BYTES = 4_096;
22
24
  function npmPurl(name, version) {
23
25
  return `pkg:npm/${encodeURIComponent(name)}@${version}`;
24
26
  }
27
+ function sameFilesystemIdentity(left, right) {
28
+ return left.dev === right.dev && left.ino === right.ino;
29
+ }
30
+ function filesystemIdentity(path, pointer) {
31
+ try {
32
+ const metadata = (0, node_fs_1.lstatSync)(path, { bigint: true });
33
+ if (metadata.ino === 0n)
34
+ throw new Error();
35
+ return { dev: metadata.dev, ino: metadata.ino };
36
+ }
37
+ catch {
38
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify one stable build-output filesystem object');
39
+ }
40
+ }
41
+ function filesystemIdentityKey(path, pointer) {
42
+ const identity = filesystemIdentity(path, pointer);
43
+ return `${identity.dev}:${identity.ino}`;
44
+ }
25
45
  function normalizedChild(root, path, pointer) {
26
46
  const child = (0, node_path_1.relative)(root, path);
27
47
  if (child === '' ||
@@ -32,6 +52,34 @@ function normalizedChild(root, path, pointer) {
32
52
  }
33
53
  return child.split(node_path_1.sep).join('/');
34
54
  }
55
+ function normalizedRealChild(rootIdentity, path, pointer) {
56
+ const segments = [];
57
+ let current = path;
58
+ for (let depth = 0; depth <= 1024; depth += 1) {
59
+ let identity;
60
+ try {
61
+ identity = (0, node_fs_1.lstatSync)(current, { bigint: true });
62
+ }
63
+ catch {
64
+ break;
65
+ }
66
+ if (identity.dev === rootIdentity.dev &&
67
+ identity.ino === rootIdentity.ino) {
68
+ if (segments.length === 0)
69
+ break;
70
+ return segments.reverse().join('/');
71
+ }
72
+ const parent = (0, node_path_1.dirname)(current);
73
+ if (parent === current)
74
+ break;
75
+ const segment = (0, node_path_1.basename)(current);
76
+ if (!segment || segment === '.' || segment === '..')
77
+ break;
78
+ segments.push(segment);
79
+ current = parent;
80
+ }
81
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'resolves outside the build-output repository boundary');
82
+ }
35
83
  function repositoryRelativePath(repositoryRoot, value, pointer) {
36
84
  if (typeof value !== 'string' ||
37
85
  value === '' ||
@@ -66,7 +114,7 @@ function repositoryRelativePath(repositoryRoot, value, pointer) {
66
114
  }
67
115
  return { absolute, path };
68
116
  }
69
- function readJsonEvidence(repositoryRoot, absoluteInput, pointer) {
117
+ function readJsonEvidence(repositoryRootIdentity, absoluteInput, pointer) {
70
118
  let absolute;
71
119
  try {
72
120
  absolute = (0, node_fs_1.realpathSync)(absoluteInput);
@@ -74,7 +122,7 @@ function readJsonEvidence(repositoryRoot, absoluteInput, pointer) {
74
122
  catch {
75
123
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify readable build-output evidence');
76
124
  }
77
- const path = normalizedChild(repositoryRoot, absolute, pointer);
125
+ const path = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
78
126
  let metadata;
79
127
  try {
80
128
  metadata = (0, node_fs_1.lstatSync)(absolute);
@@ -171,17 +219,91 @@ function createNextJsBuildOutputInventory(input) {
171
219
  throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'buildOutput', 'must identify one exact release candidate and nonempty material boundary');
172
220
  }
173
221
  let repositoryRoot;
222
+ let repositoryRootIdentity;
174
223
  try {
175
224
  repositoryRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(input.repositoryRoot));
225
+ const identity = (0, node_fs_1.lstatSync)(repositoryRoot, { bigint: true });
226
+ if (!identity.isDirectory() || identity.ino === 0n)
227
+ throw new Error();
228
+ repositoryRootIdentity = { dev: identity.dev, ino: identity.ino };
176
229
  }
177
230
  catch {
178
231
  throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'repositoryRoot', 'must identify one existing repository root');
179
232
  }
180
233
  const files = new Map();
234
+ const links = new Map();
181
235
  const materialFiles = new Map();
236
+ const compilerCacheDirectories = new Set();
182
237
  let visitedDirectories = 0;
183
238
  let discoveredBytes = 0;
239
+ const addLink = (absoluteInput, pointer) => {
240
+ let metadata;
241
+ let targetText;
242
+ let absolute;
243
+ try {
244
+ metadata = (0, node_fs_1.lstatSync)(absoluteInput);
245
+ targetText = (0, node_fs_1.readlinkSync)(absoluteInput, 'utf8');
246
+ absolute = (0, node_fs_1.realpathSync)(absoluteInput);
247
+ }
248
+ catch {
249
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify one readable build-output symbolic link');
250
+ }
251
+ if (!metadata.isSymbolicLink() ||
252
+ Buffer.byteLength(targetText, 'utf8') > MAX_LINK_TARGET_BYTES) {
253
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must identify one bounded build-output symbolic link');
254
+ }
255
+ const path = normalizedChild(repositoryRoot, absoluteInput, pointer);
256
+ const target = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
257
+ const targetMetadata = (0, node_fs_1.lstatSync)(absolute);
258
+ const targetKind = targetMetadata.isDirectory()
259
+ ? 'directory'
260
+ : targetMetadata.isFile()
261
+ ? 'file'
262
+ : undefined;
263
+ if (!targetKind) {
264
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must resolve to one regular file or directory in the repository');
265
+ }
266
+ const record = {
267
+ path,
268
+ target,
269
+ targetKind,
270
+ targetTextSha256: (0, node_crypto_1.createHash)('sha256')
271
+ .update(targetText, 'utf8')
272
+ .digest('hex'),
273
+ };
274
+ const existing = links.get(path);
275
+ if (existing && (0, common_js_1.supplyChainDigest)(existing) !== (0, common_js_1.supplyChainDigest)(record)) {
276
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'aliases one build-output link to multiple targets');
277
+ }
278
+ if (!existing && links.size >= MAX_LINKS) {
279
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output link inventory');
280
+ }
281
+ links.set(path, record);
282
+ return { absolute, targetKind };
283
+ };
284
+ const capturePathLinks = (absoluteInput, pointer) => {
285
+ const path = normalizedChild(repositoryRoot, absoluteInput, pointer);
286
+ let current = repositoryRoot;
287
+ let finalIsSymbolicLink = false;
288
+ const segments = path.split('/');
289
+ for (const [index, segment] of segments.entries()) {
290
+ current = (0, node_path_1.join)(current, segment);
291
+ let metadata;
292
+ try {
293
+ metadata = (0, node_fs_1.lstatSync)(current);
294
+ }
295
+ catch {
296
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output path');
297
+ }
298
+ if (metadata.isSymbolicLink()) {
299
+ addLink(current, pointer);
300
+ finalIsSymbolicLink = index === segments.length - 1;
301
+ }
302
+ }
303
+ return finalIsSymbolicLink;
304
+ };
184
305
  const addFile = (absoluteInput, pointer) => {
306
+ const finalIsSymbolicLink = capturePathLinks(absoluteInput, pointer);
185
307
  let absolute;
186
308
  try {
187
309
  absolute = (0, node_fs_1.realpathSync)(absoluteInput);
@@ -189,7 +311,7 @@ function createNextJsBuildOutputInventory(input) {
189
311
  catch {
190
312
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output file');
191
313
  }
192
- const path = normalizedChild(repositoryRoot, absolute, pointer);
314
+ const path = normalizedRealChild(repositoryRootIdentity, absolute, pointer);
193
315
  let metadata;
194
316
  try {
195
317
  metadata = (0, node_fs_1.lstatSync)(absolute);
@@ -197,7 +319,10 @@ function createNextJsBuildOutputInventory(input) {
197
319
  catch {
198
320
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify a readable build-output file');
199
321
  }
322
+ const identity = filesystemIdentity(absolute, pointer);
200
323
  const existing = files.get(path);
324
+ if (metadata.isDirectory() && finalIsSymbolicLink)
325
+ return undefined;
201
326
  if (!metadata.isFile() || metadata.size > MAX_FILE_BYTES) {
202
327
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must be a bounded regular build-output file');
203
328
  }
@@ -208,11 +333,12 @@ function createNextJsBuildOutputInventory(input) {
208
333
  }
209
334
  discoveredBytes += metadata.size;
210
335
  }
211
- else if (existing !== absolute) {
336
+ else if (!sameFilesystemIdentity(existing.identity, identity)) {
212
337
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'aliases one build-output path to multiple files');
213
338
  }
214
- files.set(path, absolute);
215
- return { absolute, path };
339
+ const record = existing ?? { absolute, identity };
340
+ files.set(path, record);
341
+ return { absolute: record.absolute, path };
216
342
  };
217
343
  const visitMaterial = (absolute, pointer) => {
218
344
  let metadata;
@@ -222,20 +348,31 @@ function createNextJsBuildOutputInventory(input) {
222
348
  catch {
223
349
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'does not identify an existing build-output material path');
224
350
  }
351
+ // Only Next's direct compiler cache is outside emitted build material.
352
+ // Traces are still resolved through addFile, so a runtime reference into
353
+ // this directory cannot escape the normal bounds or content inventory.
354
+ if (compilerCacheDirectories.has(absolute)) {
355
+ if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
356
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'Next.js compiler cache must be a real directory');
357
+ }
358
+ return;
359
+ }
225
360
  if (metadata.isSymbolicLink()) {
226
- throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'material paths may not traverse symbolic links');
361
+ addLink(absolute, pointer);
362
+ return;
227
363
  }
228
364
  if (metadata.isDirectory()) {
229
365
  visitedDirectories += 1;
230
- if (visitedDirectories > MAX_DIRECTORIES) {
231
- throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output directory inventory');
232
- }
366
+ (0, build_output_bounds_js_1.assertBuildOutputDirectoryInventoryBound)(visitedDirectories, pointer);
233
367
  for (const child of (0, node_fs_1.readdirSync)(absolute).sort()) {
234
368
  visitMaterial((0, node_path_1.join)(absolute, child), pointer);
235
369
  }
236
370
  return;
237
371
  }
238
372
  const file = addFile(absolute, pointer);
373
+ if (!file) {
374
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'must identify a regular build-output file');
375
+ }
239
376
  materialFiles.set(file.path, file);
240
377
  };
241
378
  const materialPaths = input.materialPaths.map((path, index) => repositoryRelativePath(repositoryRoot, path, `materialPaths[${index}]`));
@@ -245,6 +382,11 @@ function createNextJsBuildOutputInventory(input) {
245
382
  if (materialPaths.some(({ path }, index) => materialPaths.some(({ path: other }, otherIndex) => index !== otherIndex && other.startsWith(`${path}/`)))) {
246
383
  throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', 'materialPaths', 'must contain disjoint non-overlapping build-output boundaries');
247
384
  }
385
+ for (const { absolute } of materialPaths) {
386
+ if ((0, node_path_1.basename)(absolute) === '.next') {
387
+ compilerCacheDirectories.add((0, node_path_1.join)(absolute, 'cache'));
388
+ }
389
+ }
248
390
  materialPaths.forEach(({ absolute }, index) => visitMaterial(absolute, `materialPaths[${index}]`));
249
391
  const traces = [...materialFiles.values()].filter(({ path }) => path.endsWith('.nft.json'));
250
392
  if (traces.length === 0) {
@@ -252,7 +394,7 @@ function createNextJsBuildOutputInventory(input) {
252
394
  }
253
395
  const packages = new Map();
254
396
  for (const trace of traces) {
255
- const document = readJsonEvidence(repositoryRoot, trace.absolute, trace.path).value;
397
+ const document = readJsonEvidence(repositoryRootIdentity, trace.absolute, trace.path).value;
256
398
  if (!(0, validation_js_1.isRecord)(document) ||
257
399
  document.version !== 1 ||
258
400
  !Array.isArray(document.files) ||
@@ -268,11 +410,13 @@ function createNextJsBuildOutputInventory(input) {
268
410
  }
269
411
  for (const [index, reference] of document.files.entries()) {
270
412
  const traced = addFile((0, node_path_1.resolve)((0, node_path_1.dirname)(trace.absolute), reference), `${trace.path}#files[${index}]`);
413
+ if (!traced)
414
+ continue;
271
415
  const packageRoot = packageRootForFile(traced.absolute);
272
416
  if (!packageRoot)
273
417
  continue;
274
418
  const manifestPath = (0, node_path_1.join)(packageRoot, 'package.json');
275
- const manifestFile = readJsonEvidence(repositoryRoot, manifestPath, `${trace.path}#files[${index}].package`);
419
+ const manifestFile = readJsonEvidence(repositoryRootIdentity, manifestPath, `${trace.path}#files[${index}].package`);
276
420
  const manifest = manifestFile.value;
277
421
  if (!(0, validation_js_1.isRecord)(manifest) ||
278
422
  typeof manifest.name !== 'string' ||
@@ -282,20 +426,24 @@ function createNextJsBuildOutputInventory(input) {
282
426
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', manifestFile.path, 'must identify one exact traced npm package');
283
427
  }
284
428
  const identity = `${manifest.name}@${manifest.version}`;
429
+ const rootIdentity = filesystemIdentity(packageRoot, manifestFile.path);
285
430
  const previous = packages.get(identity);
286
- if (previous && previous.root !== packageRoot) {
431
+ if (previous &&
432
+ !sameFilesystemIdentity(previous.rootIdentity, rootIdentity)) {
287
433
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', manifestFile.path, `contains ambiguous package bytes for ${identity}`);
288
434
  }
289
- packages.set(identity, { manifest, root: packageRoot });
435
+ if (!previous) {
436
+ packages.set(identity, { manifest, root: packageRoot, rootIdentity });
437
+ }
290
438
  }
291
439
  }
292
440
  if (packages.size === 0) {
293
441
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput.components', 'the final bundle trace contains no attributable npm package bytes');
294
442
  }
295
443
  const importerPath = repositoryRelativePath(repositoryRoot, input.importerManifestPath, 'importerManifestPath');
296
- const importerManifest = readJsonEvidence(repositoryRoot, importerPath.absolute, 'importerManifestPath').value;
444
+ const importerManifest = readJsonEvidence(repositoryRootIdentity, importerPath.absolute, 'importerManifestPath').value;
297
445
  const includedByManifest = new Map([...packages].map(([identity, record]) => [
298
- (0, node_fs_1.realpathSync)((0, node_path_1.join)(record.root, 'package.json')),
446
+ filesystemIdentityKey((0, node_fs_1.realpathSync)((0, node_path_1.join)(record.root, 'package.json')), 'buildOutput.components'),
299
447
  identity,
300
448
  ]));
301
449
  const directIdentity = new Map();
@@ -310,7 +458,7 @@ function createNextJsBuildOutputInventory(input) {
310
458
  const manifestPath = dependencyManifest((0, node_path_1.dirname)(importerPath.absolute), name);
311
459
  const identity = manifestPath === undefined
312
460
  ? undefined
313
- : includedByManifest.get(manifestPath);
461
+ : includedByManifest.get(filesystemIdentityKey(manifestPath, 'importerManifestPath'));
314
462
  if (identity)
315
463
  directIdentity.set(identity, scope);
316
464
  }
@@ -328,7 +476,7 @@ function createNextJsBuildOutputInventory(input) {
328
476
  const manifestPath = dependencyManifest(record.root, name);
329
477
  const dependencyIdentity = manifestPath === undefined
330
478
  ? undefined
331
- : includedByManifest.get(manifestPath);
479
+ : includedByManifest.get(filesystemIdentityKey(manifestPath, `buildOutput.components.${identity}`));
332
480
  if (dependencyIdentity) {
333
481
  const dependency = packages.get(dependencyIdentity);
334
482
  if (!dependency)
@@ -353,8 +501,8 @@ function createNextJsBuildOutputInventory(input) {
353
501
  let totalBytes = 0;
354
502
  const fileInventory = [...files.entries()]
355
503
  .sort(([left], [right]) => (0, deterministic_order_js_1.compareUtf16)(left, right))
356
- .map(([path, absolute]) => {
357
- const content = (0, node_fs_1.readFileSync)(absolute);
504
+ .map(([path, record]) => {
505
+ const content = (0, node_fs_1.readFileSync)(record.absolute);
358
506
  totalBytes += content.byteLength;
359
507
  if (totalBytes > MAX_TOTAL_BYTES) {
360
508
  throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput.files', 'exceeds the bounded build-output byte inventory');
@@ -365,14 +513,19 @@ function createNextJsBuildOutputInventory(input) {
365
513
  size: content.byteLength,
366
514
  };
367
515
  });
516
+ const linkInventory = [...links.values()].sort(({ path: left }, { path: right }) => (0, deterministic_order_js_1.compareUtf16)(left, right));
368
517
  const normalized = {
369
518
  artifactFamily: 'nextjs-build-output',
370
519
  artifactId: input.artifactId,
371
520
  candidateDigest: input.candidateDigest,
372
521
  components,
373
- contentDigest: (0, common_js_1.supplyChainDigest)(fileInventory),
522
+ contentDigest: (0, common_js_1.supplyChainDigest)({
523
+ files: fileInventory,
524
+ links: linkInventory,
525
+ }),
374
526
  files: fileInventory,
375
527
  kind: exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND,
528
+ links: linkInventory,
376
529
  schemaVersion: exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION,
377
530
  sourceCommit: input.sourceCommit,
378
531
  };
@@ -386,7 +539,7 @@ function validateNextJsBuildOutputInventory(value, input) {
386
539
  value.kind !== exports.NEXTJS_BUILD_OUTPUT_INVENTORY_KIND ||
387
540
  value.schemaVersion !== exports.NEXTJS_BUILD_OUTPUT_INVENTORY_SCHEMA_VERSION ||
388
541
  typeof value.materialDigest !== 'string') {
389
- throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput', 'must be an EBK Next.js build-output inventory v1');
542
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', 'buildOutput', 'must be an EBK Next.js build-output inventory v2');
390
543
  }
391
544
  const current = createNextJsBuildOutputInventory(input);
392
545
  if ((0, common_js_1.supplyChainDigest)(value) !== (0, common_js_1.supplyChainDigest)(current) ||
@@ -6,9 +6,11 @@ export interface EcrInspectorScanTargetV1 {
6
6
  deploymentBindingDigest: string;
7
7
  imageDigest: string;
8
8
  region: string;
9
- releaseId: string;
10
- releaseManifestDigest: string;
11
- releaseManifestMaterialDigest: string;
9
+ releaseCandidateArtifactDigest: string;
10
+ releaseCandidateArtifactId: string;
11
+ releaseCandidateDigest: string;
12
+ releaseCandidateProducerRunAttempt: string;
13
+ releaseCandidateProducerRunId: string;
12
14
  repositoryName: string;
13
15
  sbomDigest: string;
14
16
  sbomInventoryScope: 'final-oci-contents';
@@ -46,9 +46,11 @@ function validateTarget(value) {
46
46
  'deploymentBindingDigest',
47
47
  'imageDigest',
48
48
  'region',
49
- 'releaseId',
50
- 'releaseManifestDigest',
51
- 'releaseManifestMaterialDigest',
49
+ 'releaseCandidateArtifactDigest',
50
+ 'releaseCandidateArtifactId',
51
+ 'releaseCandidateDigest',
52
+ 'releaseCandidateProducerRunAttempt',
53
+ 'releaseCandidateProducerRunId',
52
54
  'repositoryName',
53
55
  'sbomDigest',
54
56
  'sbomInventoryScope',
@@ -64,9 +66,11 @@ function validateTarget(value) {
64
66
  deploymentBindingDigest: reference(value.deploymentBindingDigest, 'target.deploymentBindingDigest', common_js_1.SUPPLY_CHAIN_SHA256),
65
67
  imageDigest: reference(value.imageDigest, 'target.imageDigest', IMAGE_DIGEST),
66
68
  region: reference(value.region, 'target.region', REGION),
67
- releaseId: reference(value.releaseId, 'target.releaseId'),
68
- releaseManifestDigest: reference(value.releaseManifestDigest, 'target.releaseManifestDigest', common_js_1.SUPPLY_CHAIN_SHA256),
69
- releaseManifestMaterialDigest: reference(value.releaseManifestMaterialDigest, 'target.releaseManifestMaterialDigest', common_js_1.SUPPLY_CHAIN_SHA256),
69
+ releaseCandidateArtifactDigest: reference(value.releaseCandidateArtifactDigest, 'target.releaseCandidateArtifactDigest', /^sha256:[a-f0-9]{64}$/),
70
+ releaseCandidateArtifactId: reference(value.releaseCandidateArtifactId, 'target.releaseCandidateArtifactId', /^[1-9]\d*$/),
71
+ releaseCandidateDigest: reference(value.releaseCandidateDigest, 'target.releaseCandidateDigest', common_js_1.SUPPLY_CHAIN_SHA256),
72
+ releaseCandidateProducerRunAttempt: reference(value.releaseCandidateProducerRunAttempt, 'target.releaseCandidateProducerRunAttempt', /^[1-9]\d*$/),
73
+ releaseCandidateProducerRunId: reference(value.releaseCandidateProducerRunId, 'target.releaseCandidateProducerRunId', /^[1-9]\d*$/),
70
74
  repositoryName: reference(value.repositoryName, 'target.repositoryName', REPOSITORY),
71
75
  sbomDigest: reference(value.sbomDigest, 'target.sbomDigest', common_js_1.SUPPLY_CHAIN_SHA256),
72
76
  sbomInventoryScope: value.sbomInventoryScope === 'final-oci-contents'
@@ -309,7 +313,7 @@ function verifyEcrInspectorScanEvidence(value, expected) {
309
313
  value.kind !== 'ebk-ecr-inspector-scan-evidence' ||
310
314
  value.schemaVersion !== 1 ||
311
315
  value.status !== 'complete') {
312
- fail('ecrScanEvidence', 'does not bind the exact expected release image and SBOM', 'supply-chain-artifact-mismatch');
316
+ fail('ecrScanEvidence', 'does not bind the exact expected release candidate, image, and SBOM', 'supply-chain-artifact-mismatch');
313
317
  }
314
318
  const { materialDigest, ...unsigned } = value;
315
319
  if (!common_js_1.SUPPLY_CHAIN_SHA256.test(materialDigest) ||
@@ -10,9 +10,11 @@ export interface EcsDeployedImageExpectedV1 {
10
10
  deployment: EcsDeploymentSelectorV1;
11
11
  imageReference: string;
12
12
  region: string;
13
- releaseId: string;
14
- releaseManifestDigest: string;
15
- releaseManifestMaterialDigest: string;
13
+ releaseCandidateArtifactDigest: string;
14
+ releaseCandidateArtifactId: string;
15
+ releaseCandidateDigest: string;
16
+ releaseCandidateProducerRunAttempt: string;
17
+ releaseCandidateProducerRunId: string;
16
18
  repositoryName: string;
17
19
  sourceCommit: string;
18
20
  stage: 'production' | 'staging';
@@ -43,9 +43,11 @@ function validateExpected(value) {
43
43
  deployment: validateDeploymentSelector(value.deployment, accountId, region),
44
44
  imageReference: expectedImageReference,
45
45
  region,
46
- releaseId: exactReference(value.releaseId, 'expected.releaseId'),
47
- releaseManifestDigest: exactReference(value.releaseManifestDigest, 'expected.releaseManifestDigest', common_js_1.SUPPLY_CHAIN_SHA256),
48
- releaseManifestMaterialDigest: exactReference(value.releaseManifestMaterialDigest, 'expected.releaseManifestMaterialDigest', common_js_1.SUPPLY_CHAIN_SHA256),
46
+ releaseCandidateArtifactDigest: exactReference(value.releaseCandidateArtifactDigest, 'expected.releaseCandidateArtifactDigest', /^sha256:[a-f0-9]{64}$/),
47
+ releaseCandidateArtifactId: exactReference(value.releaseCandidateArtifactId, 'expected.releaseCandidateArtifactId', /^[1-9]\d*$/),
48
+ releaseCandidateDigest: exactReference(value.releaseCandidateDigest, 'expected.releaseCandidateDigest', common_js_1.SUPPLY_CHAIN_SHA256),
49
+ releaseCandidateProducerRunAttempt: exactReference(value.releaseCandidateProducerRunAttempt, 'expected.releaseCandidateProducerRunAttempt', /^[1-9]\d*$/),
50
+ releaseCandidateProducerRunId: exactReference(value.releaseCandidateProducerRunId, 'expected.releaseCandidateProducerRunId', /^[1-9]\d*$/),
49
51
  repositoryName,
50
52
  sourceCommit: exactReference(value.sourceCommit, 'expected.sourceCommit', COMMIT),
51
53
  stage: value.stage === 'production' || value.stage === 'staging'
@@ -187,7 +189,7 @@ function repositoryFromImage(image, expected) {
187
189
  }
188
190
  function environmentMap(value) {
189
191
  if (!Array.isArray(value)) {
190
- return fail('taskDefinition.containerDefinitions[0].environment', 'must retain exact release identity environment values', 'supply-chain-artifact-mismatch');
192
+ return fail('taskDefinition.containerDefinitions[0].environment', 'must retain exact release-candidate identity environment values', 'supply-chain-artifact-mismatch');
191
193
  }
192
194
  const result = new Map();
193
195
  for (const [index, entry] of value.entries()) {
@@ -774,9 +774,26 @@ function preflightRetainedReceiptPaths(paths) {
774
774
  }
775
775
  }
776
776
 
777
+ function serializeRetainedReceipt(receipt) {
778
+ let output = JSON.stringify(receipt, null, 2);
779
+ // These are the receipt schema's only primitive-array fields. Match the
780
+ // generated JSON format without loading mutable workspace formatter code or
781
+ // configuration in this protected execution child. Object arrays stay multiline.
782
+ for (const field of ['containerRegistries', 'verificationRoots']) {
783
+ const values = receipt[field];
784
+ const compact = ' ' + JSON.stringify(field) + ': [' +
785
+ values.map((value) => JSON.stringify(value)).join(', ') + ']';
786
+ if (compact.length + 1 <= 80) {
787
+ const expanded = JSON.stringify({ [field]: values }, null, 2).slice(2, -2);
788
+ output = output.replace(expanded, compact);
789
+ }
790
+ }
791
+ return output + '\n';
792
+ }
793
+
777
794
  function writeRetainedReceipts(receipts) {
778
795
  const prepared = receipts.map(({ reference, receipt }) => {
779
- const output = JSON.stringify(receipt, null, 2) + '\n';
796
+ const output = serializeRetainedReceipt(receipt);
780
797
  if (Buffer.byteLength(output, 'utf8') > MAX_OUTPUT_BYTES) {
781
798
  throw receiptRetentionError(
782
799
  'Blueprint verification receipt exceeds 256 KiB.',
@@ -260,6 +260,7 @@ const ignoredDirectories = new Set([
260
260
  '.nx',
261
261
  '.open-next',
262
262
  '.sst',
263
+ '.venv',
263
264
  'coverage',
264
265
  'dist',
265
266
  'node_modules',