@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
@@ -118,7 +118,8 @@ function createSecretWorkloadAccessPlan(input) {
118
118
  for (const binding of activeBindings) {
119
119
  const declaration = declarations.get(binding.logicalName);
120
120
  const reference = references.get(binding.logicalName);
121
- if (declaration?.source !== 'operator' ||
121
+ if ((declaration?.source !== 'operator' &&
122
+ declaration?.source !== 'generated') ||
122
123
  reference?.logicalName !== declaration.logicalName) {
123
124
  throw new SecretWorkloadAccessError('secret-workload-reference-invalid');
124
125
  }
@@ -151,9 +152,16 @@ function personalSecretNamesForWorkload(input) {
151
152
  .filter(({ workload }) => workload === input.workload)
152
153
  .flatMap(({ logicalName }) => {
153
154
  const declaration = declarations.get(logicalName);
154
- if (!declaration || declaration.source !== 'operator') {
155
+ if (!declaration ||
156
+ (declaration.source !== 'operator' &&
157
+ declaration.source !== 'generated')) {
155
158
  throw new SecretWorkloadAccessError('secret-workload-reference-invalid');
156
159
  }
160
+ // Generated values exist only in canonical deployed stages. They are
161
+ // valid workload bindings, but never become personal `sst.Secret`
162
+ // resources during the dirty-tree development loop.
163
+ if (declaration.source === 'generated')
164
+ return [];
157
165
  return declaration.requiredStages.includes(input.stage)
158
166
  ? [logicalName]
159
167
  : [];
@@ -0,0 +1,6 @@
1
+ /** Exact default declaration emitted by the pinned Next 16.3 toolchain. */
2
+ export declare function generatedNextEnvironmentSource(dev?: boolean): string;
3
+ export declare function isExactGeneratedNextEnvironmentSourceBytes(bytes: Buffer): boolean;
4
+ export declare function isExactGeneratedRootSstEnvironmentSourceBytes(bytes: Buffer): boolean;
5
+ export declare function isExactGeneratedRootSstPythonSourceBytes(bytes: Buffer): boolean;
6
+ export declare function exactGeneratedNestedSstEnvironmentSourceBytes(nestedPath: string, rootSourcePath: string): readonly Buffer[];
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatedNextEnvironmentSource = generatedNextEnvironmentSource;
4
+ exports.isExactGeneratedNextEnvironmentSourceBytes = isExactGeneratedNextEnvironmentSourceBytes;
5
+ exports.isExactGeneratedRootSstEnvironmentSourceBytes = isExactGeneratedRootSstEnvironmentSourceBytes;
6
+ exports.isExactGeneratedRootSstPythonSourceBytes = isExactGeneratedRootSstPythonSourceBytes;
7
+ exports.exactGeneratedNestedSstEnvironmentSourceBytes = exactGeneratedNestedSstEnvironmentSourceBytes;
8
+ const node_path_1 = require("node:path");
9
+ /** Exact default declaration emitted by the pinned Next 16.3 toolchain. */
10
+ function generatedNextEnvironmentSource(dev = false) {
11
+ const directory = dev ? '.next/dev' : '.next';
12
+ return `/// <reference types="next" />
13
+ /// <reference types="next/image-types/global" />
14
+ import "./${directory}/types/routes.d.ts";
15
+ import "./${directory}/types/root-params.d.ts";
16
+
17
+ // NOTE: This file should not be edited
18
+ // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
19
+ `;
20
+ }
21
+ function isExactGeneratedNextEnvironmentSourceBytes(bytes) {
22
+ return [false, true].some((dev) => [
23
+ generatedNextEnvironmentSource(dev),
24
+ generatedNextEnvironmentSource(dev).split('\n').join('\r\n'),
25
+ ].some((source) => bytes.equals(Buffer.from(source))));
26
+ }
27
+ const GENERATED_HEADER = [
28
+ '/* This file is auto-generated by SST. Do not edit. */',
29
+ '/* tslint:disable */',
30
+ '/* eslint-disable */',
31
+ '/* deno-fmt-ignore-file */',
32
+ '/* biome-ignore-all lint: auto-generated */',
33
+ '',
34
+ ];
35
+ function exactJsonString(value) {
36
+ try {
37
+ const parsed = JSON.parse(value);
38
+ return typeof parsed === 'string' && JSON.stringify(parsed) === value;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ function exactGeneratedResourceMembers(lines) {
45
+ let depth = 0;
46
+ for (const line of lines) {
47
+ const indentation = line.match(/^ */u)?.[0].length ?? 0;
48
+ if (line.trim() === '}') {
49
+ if (depth === 0 || indentation !== 4 + (depth - 1) * 2)
50
+ return false;
51
+ depth -= 1;
52
+ continue;
53
+ }
54
+ if (indentation !== 4 + depth * 2)
55
+ return false;
56
+ const property = line
57
+ .slice(indentation)
58
+ .match(/^("(?:[^"\\]|\\.)*"): (.+)$/u);
59
+ if (!property ||
60
+ !property[1] ||
61
+ !property[2] ||
62
+ !exactJsonString(property[1])) {
63
+ return false;
64
+ }
65
+ if (property[2] === '{') {
66
+ depth += 1;
67
+ continue;
68
+ }
69
+ // SST emits JSON property names followed by TypeScript type expressions.
70
+ // Keep the accepted alphabet deliberately type-only: executable statement
71
+ // delimiters, comments, assignments, templates, and braces are excluded.
72
+ if (!/^[A-Za-z0-9_.$@/:"'<>()[\]|&?, -]+$/u.test(property[2])) {
73
+ return false;
74
+ }
75
+ }
76
+ return depth === 0;
77
+ }
78
+ function isExactGeneratedRootSstEnvironmentSourceBytes(bytes) {
79
+ const source = bytes.toString('utf8');
80
+ if (!Buffer.from(source, 'utf8').equals(bytes))
81
+ return false;
82
+ const normalized = source.split('\r\n').join('\n');
83
+ if (normalized.includes('\r'))
84
+ return false;
85
+ const lines = normalized.endsWith('\n')
86
+ ? normalized.slice(0, -1).split('\n')
87
+ : normalized.split('\n');
88
+ const prefix = [
89
+ ...GENERATED_HEADER,
90
+ 'declare module "sst" {',
91
+ ' export interface Resource {',
92
+ ];
93
+ const suffix = [' }', '}', '', 'import "sst"', 'export {}'];
94
+ if (lines.length < prefix.length + suffix.length ||
95
+ prefix.some((line, index) => lines[index] !== line) ||
96
+ suffix.some((line, index) => lines[lines.length - suffix.length + index] !== line)) {
97
+ return false;
98
+ }
99
+ return exactGeneratedResourceMembers(lines.slice(prefix.length, lines.length - suffix.length));
100
+ }
101
+ function exactGeneratedPythonType(value) {
102
+ if (!/^[A-Za-z0-9_,.[\]| ]+$/u.test(value))
103
+ return false;
104
+ const identifiers = value.match(/[A-Za-z_][A-Za-z0-9_]*/gu) ?? [];
105
+ if (identifiers.some((identifier) => ![
106
+ 'Any',
107
+ 'None',
108
+ 'bool',
109
+ 'dict',
110
+ 'float',
111
+ 'int',
112
+ 'list',
113
+ 'set',
114
+ 'str',
115
+ 'tuple',
116
+ ].includes(identifier))) {
117
+ return false;
118
+ }
119
+ let depth = 0;
120
+ for (const character of value) {
121
+ if (character === '[')
122
+ depth += 1;
123
+ if (character === ']')
124
+ depth -= 1;
125
+ if (depth < 0)
126
+ return false;
127
+ }
128
+ return depth === 0;
129
+ }
130
+ function isExactGeneratedRootSstPythonSourceBytes(bytes) {
131
+ const source = bytes.toString('utf8');
132
+ if (!Buffer.from(source, 'utf8').equals(bytes))
133
+ return false;
134
+ const normalized = source.split('\r\n').join('\n');
135
+ if (normalized.includes('\r'))
136
+ return false;
137
+ const lines = normalized.endsWith('\n')
138
+ ? normalized.slice(0, -1).split('\n')
139
+ : normalized.split('\n');
140
+ if (lines.at(-1) === '')
141
+ lines.pop();
142
+ if (lines.at(-1) === '')
143
+ return false;
144
+ const prefix = [
145
+ '# Automatically generated by SST',
146
+ '# pylint: disable=all',
147
+ '# ruff: noqa',
148
+ 'from typing import Any',
149
+ '',
150
+ 'class Resource:',
151
+ ];
152
+ if (lines.length <= prefix.length ||
153
+ prefix.some((line, index) => lines[index] !== line)) {
154
+ return false;
155
+ }
156
+ let observedClass = false;
157
+ let observedMember = false;
158
+ for (const line of lines.slice(prefix.length)) {
159
+ const classDeclaration = line.match(/^ {4}class ([A-Za-z_][A-Za-z0-9_]*):$/u);
160
+ if (classDeclaration) {
161
+ if (observedClass && !observedMember)
162
+ return false;
163
+ observedClass = true;
164
+ observedMember = false;
165
+ continue;
166
+ }
167
+ const member = line.match(/^ {8}([A-Za-z_][A-Za-z0-9_]*): (.+)$/u);
168
+ if (!observedClass ||
169
+ !member?.[2] ||
170
+ !exactGeneratedPythonType(member[2])) {
171
+ return false;
172
+ }
173
+ observedMember = true;
174
+ }
175
+ return observedClass && observedMember;
176
+ }
177
+ function exactGeneratedNestedSstEnvironmentSourceBytes(nestedPath, rootSourcePath) {
178
+ const reference = (0, node_path_1.relative)((0, node_path_1.dirname)(nestedPath), rootSourcePath)
179
+ .split('\\')
180
+ .join('/');
181
+ if (!reference.startsWith('../') || reference.endsWith('/'))
182
+ return [];
183
+ const lines = [
184
+ ...GENERATED_HEADER,
185
+ `/// <reference path="${reference}" />`,
186
+ '',
187
+ 'import "sst"',
188
+ 'export {}',
189
+ ];
190
+ const lf = lines.join('\n');
191
+ const crlf = lines.join('\r\n');
192
+ return [
193
+ Buffer.from(lf, 'utf8'),
194
+ Buffer.from(`${lf}\n`, 'utf8'),
195
+ Buffer.from(crlf, 'utf8'),
196
+ Buffer.from(`${crlf}\r\n`, 'utf8'),
197
+ ];
198
+ }
199
+ //# sourceMappingURL=sst-environment-source-format.js.map
@@ -9,22 +9,71 @@ exports.ACTION_PIN_INVENTORY_SCHEMA_VERSION = 1;
9
9
  const GITHUB_ACTION_SHA = /^[a-f0-9]{40}$/;
10
10
  const ACTION_REFERENCE = /^(?<action>[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_./-]+)?)@(?<sha>[a-f0-9]{40})$/;
11
11
  const CONTAINER_REFERENCE = /^(?:docker:\/\/)?(?<image>[a-z0-9][a-z0-9._/-]*):(?<tag>[A-Za-z0-9._-]+)@sha256:(?<sha>[a-f0-9]{64})$/;
12
- function findUses(value, uses) {
12
+ const LOCAL_REUSABLE_WORKFLOW = /^\.\/\.github\/workflows\/[A-Za-z0-9_.-]+\.yml$/;
13
+ const WORKFLOW_DOCUMENT = /^\.github\/workflows\/[A-Za-z0-9_.-]+\.ya?ml$/;
14
+ function findUses(value, uses, location = []) {
13
15
  if (Array.isArray(value)) {
14
- value.forEach((entry) => findUses(entry, uses));
16
+ value.forEach((entry, index) => findUses(entry, uses, [...location, index]));
15
17
  return;
16
18
  }
17
19
  if (!value || typeof value !== 'object')
18
20
  return;
19
21
  for (const [key, child] of Object.entries(value)) {
20
22
  if (key === 'uses' && typeof child === 'string') {
21
- uses.push(child);
23
+ uses.push({ location: [...location, key], reference: child });
22
24
  }
23
25
  else {
24
- findUses(child, uses);
26
+ findUses(child, uses, [...location, key]);
25
27
  }
26
28
  }
27
29
  }
30
+ function isJobLevelWorkflowUse(location) {
31
+ return (location.length === 3 &&
32
+ location[0] === 'jobs' &&
33
+ typeof location[1] === 'string' &&
34
+ location[2] === 'uses');
35
+ }
36
+ function declaresWorkflowCall(document) {
37
+ if (!document || typeof document !== 'object' || Array.isArray(document)) {
38
+ return false;
39
+ }
40
+ const trigger = document['on'];
41
+ if (trigger === 'workflow_call')
42
+ return true;
43
+ if (Array.isArray(trigger))
44
+ return trigger.includes('workflow_call');
45
+ return (trigger !== null &&
46
+ typeof trigger === 'object' &&
47
+ !Array.isArray(trigger) &&
48
+ Object.prototype.hasOwnProperty.call(trigger, 'workflow_call'));
49
+ }
50
+ function verifyLocalReusableWorkflow(use, files, callerPath) {
51
+ const { location, reference } = use;
52
+ if (reference.includes('${{')) {
53
+ throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} is a dynamic executable input`);
54
+ }
55
+ if (!WORKFLOW_DOCUMENT.test(callerPath) || !isJobLevelWorkflowUse(location)) {
56
+ throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} is a repository-local action; only static job-level reusable workflows are admitted`);
57
+ }
58
+ if (!LOCAL_REUSABLE_WORKFLOW.test(reference)) {
59
+ throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} must be an exact ./.github/workflows/*.yml reusable-workflow path without traversal`);
60
+ }
61
+ const targetPath = reference.slice(2);
62
+ const targetSource = files[targetPath];
63
+ if (targetSource === undefined) {
64
+ throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} does not resolve to a repository workflow`);
65
+ }
66
+ let targetDocument;
67
+ try {
68
+ targetDocument = (0, yaml_1.parse)(targetSource);
69
+ }
70
+ catch (error) {
71
+ throw new errors_js_1.SupplyChainError('supply-chain-input-invalid', targetPath, `cannot parse reusable workflow: ${error instanceof Error ? error.message : String(error)}`);
72
+ }
73
+ if (!declaresWorkflowCall(targetDocument)) {
74
+ throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', callerPath, `${reference} does not declare workflow_call`);
75
+ }
76
+ }
28
77
  function workflowContainerReferences(document, path) {
29
78
  if (!document || typeof document !== 'object' || Array.isArray(document)) {
30
79
  return [];
@@ -133,11 +182,16 @@ function verifyActionPinInventory(files, inventory, scope) {
133
182
  findUses(document, uses);
134
183
  const executableReferences = [
135
184
  ...uses,
136
- ...workflowContainerReferences(document, path),
185
+ ...workflowContainerReferences(document, path).map((reference) => ({
186
+ location: ['jobs', 'container'],
187
+ reference,
188
+ })),
137
189
  ];
138
- for (const reference of executableReferences) {
190
+ for (const use of executableReferences) {
191
+ const { reference } = use;
139
192
  if (reference.startsWith('./')) {
140
- throw new errors_js_1.SupplyChainError('supply-chain-action-unpinned', path, `${reference} is a repository-local action, which the v1 exact pin inventory does not admit`);
193
+ verifyLocalReusableWorkflow(use, files, path);
194
+ continue;
141
195
  }
142
196
  const container = CONTAINER_REFERENCE.exec(reference);
143
197
  if (reference.startsWith('docker://') || container) {
@@ -369,6 +369,24 @@ function historyStates(context, history, policyPath, snapshotPath) {
369
369
  }
370
370
  return states;
371
371
  }
372
+ function optionalBlueprintTrustAuthorityBaseline(context, tip, policyPath = exports.BLUEPRINT_TRUST_POLICY_PATH, snapshotPath = exports.BLUEPRINT_TRUST_SNAPSHOT_PATH) {
373
+ const stateCommits = commits(context, [tip, '--', policyPath, snapshotPath]);
374
+ if (stateCommits.length === 0 &&
375
+ stateAtCommit(context, tip, policyPath, snapshotPath) === undefined) {
376
+ return undefined;
377
+ }
378
+ if (stateCommits.at(-1) !== tip)
379
+ stateCommits.push(tip);
380
+ const states = historyStates(context, stateCommits, policyPath, snapshotPath);
381
+ return states[0]?.commit;
382
+ }
383
+ function blueprintTrustAuthorityBaseline(context, tip, policyPath = exports.BLUEPRINT_TRUST_POLICY_PATH, snapshotPath = exports.BLUEPRINT_TRUST_SNAPSHOT_PATH) {
384
+ const baseline = optionalBlueprintTrustAuthorityBaseline(context, tip, policyPath, snapshotPath);
385
+ if (!baseline) {
386
+ throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'cannot establish the first protected Blueprint trust authority commit');
387
+ }
388
+ return baseline;
389
+ }
372
390
  function blueprintIdentity(value, path) {
373
391
  if (!(0, validation_js_1.isRecord)(value) ||
374
392
  !(0, validation_js_1.isRecord)(value.blueprint) ||
@@ -519,7 +537,11 @@ function changedOwnershipAtCommit(context, commit) {
519
537
  if (paths.length > MAX_OWNERSHIP_RECORDS) {
520
538
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, `changes more than ${MAX_OWNERSHIP_RECORDS} Slice ownership records`);
521
539
  }
522
- return changedOwnershipValuesAtCommit(context, commit, paths).flatMap(({ path, value }) => historicalOwnershipRecord(commit, path, value));
540
+ const parent = git(context, ['rev-parse', '--verify', `${commit}^1^{commit}`], { allowFailure: true });
541
+ if (!parent || !FULL_GIT_OBJECT_ID.test(parent)) {
542
+ throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, 'cannot resolve the exact first parent of an ownership change after the trust authority floor');
543
+ }
544
+ return [parent, commit].flatMap((revision) => changedOwnershipValuesAtCommit(context, revision, paths).flatMap(({ path, value }) => historicalOwnershipRecord(revision, path, value)));
523
545
  }
524
546
  function protectedWorkspaceHasExternalBlueprintOwnership(input) {
525
547
  if (!FULL_GIT_OBJECT_ID.test(input.commit)) {
@@ -605,20 +627,31 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
605
627
  const tips = [
606
628
  ...new Set(before.filter((commit) => commit !== undefined)),
607
629
  ];
630
+ const baselines = new Set();
608
631
  const history = new Set();
632
+ const inspectedCommits = new Set();
609
633
  for (const tip of tips) {
634
+ const baseline = shallowBefore === 'false'
635
+ ? optionalBlueprintTrustAuthorityBaseline(context, tip)
636
+ : undefined;
637
+ if (baseline) {
638
+ baselines.add(baseline);
639
+ inspectedCommits.add(baseline);
640
+ }
610
641
  const tipHistory = commits(context, [
611
642
  `--max-count=${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS + 1}`,
612
- tip,
643
+ baseline ? `${baseline}..${tip}` : tip,
613
644
  '--',
614
645
  OWNERSHIP_PATHSPEC,
615
646
  ]);
616
- if (tipHistory.length > MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
647
+ if (tipHistory.length + (baseline ? 1 : 0) >
648
+ MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
617
649
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS} changing commits`);
618
650
  }
619
651
  for (const commit of tipHistory) {
620
652
  history.add(commit);
621
- if (history.size > MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
653
+ inspectedCommits.add(commit);
654
+ if (inspectedCommits.size > MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS) {
622
655
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_COMMITS} distinct changing commits`);
623
656
  }
624
657
  }
@@ -627,8 +660,7 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
627
660
  const externalSliceRoots = new Set();
628
661
  let externalRecordFound = false;
629
662
  let historicalRecordCount = 0;
630
- for (const commit of history) {
631
- const inventory = changedOwnershipAtCommit(context, commit);
663
+ const inspectInventory = (inventory) => {
632
664
  historicalRecordCount += inventory.length;
633
665
  if (historicalRecordCount > MAX_PREGRAPH_OWNERSHIP_HISTORY_RECORDS) {
634
666
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', 'blueprintOwnership.history', `protected ownership history exceeds ${MAX_PREGRAPH_OWNERSHIP_HISTORY_RECORDS} aggregate Slice records`);
@@ -643,6 +675,14 @@ function inspectProtectedWorkspaceExternalBlueprintHistory(input) {
643
675
  }
644
676
  externalSliceRoots.add(`packages/${record.slice}`);
645
677
  }
678
+ };
679
+ for (const baseline of baselines) {
680
+ inspectInventory(ownershipInventoryAtCommit(context, baseline));
681
+ }
682
+ for (const commit of history) {
683
+ if (baselines.has(commit))
684
+ continue;
685
+ inspectInventory(changedOwnershipAtCommit(context, commit));
646
686
  }
647
687
  const after = resolveCommits();
648
688
  const shallowAfter = git(context, ['rev-parse', '--is-shallow-repository']);
@@ -698,13 +738,11 @@ function changedOwnershipPaths(context, parent, commit) {
698
738
  }
699
739
  return paths;
700
740
  }
701
- function historicalOwnershipAudit(context, builtInName, tip) {
702
- const roots = commits(context, ['--max-parents=0', tip]);
703
- if (roots.length !== 1) {
704
- throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'must have one exact first-parent repository root');
741
+ function historicalOwnershipAudit(context, builtInName, tip, baseline) {
742
+ if (!commits(context, [tip]).includes(baseline)) {
743
+ throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${tip}:ownership`, 'Blueprint trust authority baseline must remain on the exact first-parent lineage');
705
744
  }
706
- const rootCommit = roots[0];
707
- const root = ownershipInventoryAtCommit(context, rootCommit);
745
+ const root = ownershipInventoryAtCommit(context, baseline);
708
746
  const external = new Map();
709
747
  const rememberExternal = (record) => {
710
748
  if (record.name !== builtInName) {
@@ -712,9 +750,11 @@ function historicalOwnershipAudit(context, builtInName, tip) {
712
750
  }
713
751
  };
714
752
  root.forEach(rememberExternal);
715
- for (const commit of commits(context, [tip, '--', OWNERSHIP_PATHSPEC])) {
716
- if (commit === rootCommit)
717
- continue;
753
+ for (const commit of commits(context, [
754
+ `${baseline}..${tip}`,
755
+ '--',
756
+ OWNERSHIP_PATHSPEC,
757
+ ])) {
718
758
  const parent = git(context, ['rev-parse', '--verify', `${commit}^1^{commit}`], { allowFailure: true });
719
759
  if (!parent || !FULL_GIT_OBJECT_ID.test(parent)) {
720
760
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${commit}:ownership`, 'cannot resolve the exact first parent of an ownership change');
@@ -764,7 +804,7 @@ function assertNoPathIndependentRelabel(builtInName, current, before, after) {
764
804
  return;
765
805
  throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${current.path}#blueprint`, `cannot establish built-in provenance while historical external Blueprint ${relatedExternal.name}@${relatedExternal.version} ownership at ${relatedExternal.path} was removed, moved, or reused`);
766
806
  }
767
- function builtInProvenance(context, input, headCommit, protectedCommit) {
807
+ function builtInProvenance(context, input, headCommit, headBaseline, protectedCommit, protectedBaseline) {
768
808
  const provenance = [];
769
809
  const currentOwnership = currentOwnershipInventory(input);
770
810
  const builtInOwnership = currentOwnership.filter(({ name }) => name === input.builtIn.name);
@@ -772,19 +812,25 @@ function builtInProvenance(context, input, headCommit, protectedCommit) {
772
812
  return provenance;
773
813
  const protectedOwnership = ownershipInventoryAtCommit(context, protectedCommit);
774
814
  const headOwnership = ownershipInventoryAtCommit(context, headCommit);
775
- const protectedAudit = historicalOwnershipAudit(context, input.builtIn.name, protectedCommit);
815
+ const protectedAudit = historicalOwnershipAudit(context, input.builtIn.name, protectedCommit, protectedBaseline);
776
816
  const audits = headCommit === protectedCommit
777
817
  ? [protectedAudit]
778
818
  : [
779
819
  protectedAudit,
780
- historicalOwnershipAudit(context, input.builtIn.name, headCommit),
820
+ historicalOwnershipAudit(context, input.builtIn.name, headCommit, headBaseline),
781
821
  ];
782
822
  for (const currentRecord of builtInOwnership) {
783
823
  const current = currentRecord;
784
824
  const path = current.path;
785
825
  const pathCommits = new Set([
786
- ...commits(context, [headCommit, '--', path]),
787
- ...commits(context, [protectedCommit, '--', path]),
826
+ headBaseline,
827
+ ...commits(context, [`${headBaseline}..${headCommit}`, '--', path]),
828
+ protectedBaseline,
829
+ ...commits(context, [
830
+ `${protectedBaseline}..${protectedCommit}`,
831
+ '--',
832
+ path,
833
+ ]),
788
834
  ]);
789
835
  for (const commit of pathCommits) {
790
836
  const historical = readJsonBlob(context, commit, path);
@@ -852,6 +898,17 @@ function repositoryRootCommit(context, tip) {
852
898
  }
853
899
  function assertCreateOnlyReceiptRetention(context, receiptCommit, executionCommit, paths) {
854
900
  const parents = commitParents(context, receiptCommit);
901
+ // Generated repository governance retains proposals through merge commits.
902
+ // Admit that exact shape, not arbitrary ancestry or an updated execution base.
903
+ const proposal = parents.length === 2 ? parents[1] : undefined;
904
+ const proposalParents = proposal ? commitParents(context, proposal) : [];
905
+ const exactRetentionShape = parents[0] === executionCommit &&
906
+ (parents.length === 1 ||
907
+ (proposal !== undefined &&
908
+ proposalParents.length === 1 &&
909
+ proposalParents[0] === executionCommit &&
910
+ treeObjectId(context, receiptCommit) ===
911
+ treeObjectId(context, proposal)));
855
912
  const changedPaths = (git(context, [
856
913
  'diff-tree',
857
914
  '-r',
@@ -867,15 +924,14 @@ function assertCreateOnlyReceiptRetention(context, receiptCommit, executionCommi
867
924
  .map((changedPath) => safeTrackedRepositoryPath(changedPath, 'git.blueprintVerificationReceiptRetention.changedPath'))
868
925
  .sort();
869
926
  const retainedPaths = [...paths].sort();
870
- if (parents.length !== 1 ||
871
- parents[0] !== executionCommit ||
927
+ if (!exactRetentionShape ||
872
928
  retainedPaths.length === 0 ||
873
929
  retainedPaths.length !== changedPaths.length ||
874
930
  retainedPaths.some((path, index) => path !== changedPaths[index]) ||
875
931
  retainedPaths.some((path) => !VERIFICATION_RECEIPT_PATH.test(path) ||
876
932
  blobObjectId(context, executionCommit, path) !== undefined ||
877
933
  blobObjectId(context, receiptCommit, path) === undefined)) {
878
- throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${receiptCommit}:${VERIFICATION_RECEIPT_DIRECTORY}`, 'protected Blueprint verification receipt retention must be one literal one-parent, receipt-only, create-only commit whose parent is the exact execution commit shared by the complete final set, whose parent tree lacks every retained receipt path in that set, and whose changed paths equal that set');
934
+ throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${receiptCommit}:${VERIFICATION_RECEIPT_DIRECTORY}`, 'protected Blueprint verification receipt retention must be one receipt-only, create-only commit whose first parent is the exact execution commit shared by the complete final set; a two-parent PR merge must retain the exact tree of a one-parent proposal directly on that same execution commit. The execution tree must lack every retained receipt path and the changed paths must equal the complete set');
879
935
  }
880
936
  }
881
937
  function latestReceiptSetCommit(context, tip, paths, label) {
@@ -1084,6 +1140,10 @@ function inspectBlueprintTrustGitAuthority(input) {
1084
1140
  }
1085
1141
  const protectedStates = historyStates(context, protectedCommits, policyPath, snapshotPath);
1086
1142
  const protectedHistory = (0, blueprint_trust_js_1.validateBlueprintTrustHistory)(protectedStates);
1143
+ const protectedBaseline = protectedStates[0]?.commit;
1144
+ if (!protectedBaseline) {
1145
+ throw new errors_js_1.SupplyChainError('supply-chain-blueprint-untrusted', `${authorityCommit}:ownership`, 'cannot establish the first protected Blueprint trust authority commit');
1146
+ }
1087
1147
  const authorization = (0, blueprint_trust_js_1.createBlueprintTrustState)(protectedStates.at(-1));
1088
1148
  const mergeBase = git(context, ['merge-base', authorityCommit, headCommit]);
1089
1149
  if (!mergeBase || !FULL_GIT_OBJECT_ID.test(mergeBase)) {
@@ -1102,6 +1162,7 @@ function inspectBlueprintTrustGitAuthority(input) {
1102
1162
  candidateCommits.push(headCommit);
1103
1163
  const candidateStates = historyStates(context, candidateCommits, policyPath, snapshotPath);
1104
1164
  const candidateHistory = (0, blueprint_trust_js_1.validateBlueprintTrustHistory)(candidateStates);
1165
+ const headBaseline = blueprintTrustAuthorityBaseline(context, headCommit, policyPath, snapshotPath);
1105
1166
  const head = (0, blueprint_trust_js_1.createBlueprintTrustState)(candidateStates.at(-1));
1106
1167
  if ((0, blueprint_trust_js_1.blueprintTrustStateDigest)(authorization) !== (0, blueprint_trust_js_1.blueprintTrustStateDigest)(head)) {
1107
1168
  (0, blueprint_trust_js_1.planBlueprintTrustStateTransition)(authorization, head);
@@ -1112,7 +1173,7 @@ function inspectBlueprintTrustGitAuthority(input) {
1112
1173
  : (0, blueprint_trust_js_1.planBlueprintTrustStateTransition)(head, current).receipt;
1113
1174
  return {
1114
1175
  authorization,
1115
- builtInProvenance: builtInProvenance(context, input, headCommit, authorityCommit),
1176
+ builtInProvenance: builtInProvenance(context, input, headCommit, headBaseline, authorityCommit, protectedBaseline),
1116
1177
  candidateHistory,
1117
1178
  headCommit,
1118
1179
  protectedCommit: authorityCommit,
@@ -212,6 +212,38 @@ function readExternalNxConfiguration(path, label) {
212
212
  * project identity into Foundation or another Product Slice.
213
213
  */
214
214
  function assertExternalBlueprintNxProjectConfinement(input) {
215
+ assertExternalBlueprintNxProjectConfinementInternal(input, false);
216
+ }
217
+ function workspaceCacheIsIgnored(workspaceRoot) {
218
+ const ignorePath = (0, node_path_1.join)(workspaceRoot, '.gitignore');
219
+ if (!(0, node_fs_1.existsSync)(ignorePath))
220
+ return false;
221
+ const lines = readExternalNxConfiguration(ignorePath, 'Developer-Agent workspace ignore authority').split(/\r?\n/gu);
222
+ let cacheRule = -1;
223
+ for (const [index, line] of lines.entries()) {
224
+ if ([
225
+ '.ebk',
226
+ '.ebk/',
227
+ '.ebk/cache',
228
+ '.ebk/cache/',
229
+ '/.ebk',
230
+ '/.ebk/',
231
+ '/.ebk/cache',
232
+ '/.ebk/cache/',
233
+ ].includes(line)) {
234
+ cacheRule = index;
235
+ }
236
+ }
237
+ return (cacheRule >= 0 &&
238
+ lines.slice(cacheRule + 1).every((line) => {
239
+ if (!line.startsWith('!'))
240
+ return true;
241
+ const pattern = line.slice(1);
242
+ return !(/^\/?\.ebk(?:$|\/|[*?[])/u.test(pattern) ||
243
+ /^\*\*\/\.ebk(?:$|\/|[*?[])/u.test(pattern));
244
+ }));
245
+ }
246
+ function assertExternalBlueprintNxProjectConfinementInternal(input, ignoreWorkspaceCache) {
215
247
  const workspaceRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(input.workspaceRoot));
216
248
  const packagesRoot = (0, node_path_1.join)(workspaceRoot, 'packages');
217
249
  const roots = new Set();
@@ -290,8 +322,28 @@ function assertExternalBlueprintNxProjectConfinement(input) {
290
322
  continue;
291
323
  }
292
324
  const candidate = (0, node_path_1.join)(directory, entry.name);
325
+ if (ignoreWorkspaceCache &&
326
+ root === '.' &&
327
+ relativePath === '.ebk/cache') {
328
+ if (!entry.isDirectory() || (0, node_fs_1.realpathSync)(candidate) !== candidate) {
329
+ throw new Error('Developer-Agent Nx configuration requires one canonical workspace cache directory.');
330
+ }
331
+ continue;
332
+ }
293
333
  if (entry.isSymbolicLink()) {
294
- throw new Error(`External Blueprint Nx configuration refuses symbolic-link authority at ${root}/${relativePath}.`);
334
+ let targetIsDirectory = true;
335
+ try {
336
+ targetIsDirectory = (0, node_fs_1.statSync)(candidate).isDirectory();
337
+ }
338
+ catch {
339
+ throw new Error(`External Blueprint Nx configuration refuses unresolved symbolic-link authority at ${root}/${relativePath}.`);
340
+ }
341
+ const normalizedName = entry.name.normalize('NFC').toLowerCase();
342
+ if (targetIsDirectory ||
343
+ ['package.json', 'project.json'].includes(normalizedName)) {
344
+ throw new Error(`External Blueprint Nx configuration refuses symbolic-link authority at ${root}/${relativePath}.`);
345
+ }
346
+ continue;
295
347
  }
296
348
  if (entry.isDirectory()) {
297
349
  if ((0, node_fs_1.realpathSync)(candidate) !== candidate) {
@@ -342,12 +394,12 @@ function assertExternalBlueprintNxProjectConfinement(input) {
342
394
  */
343
395
  function assertDeveloperAgentNxProjectConfinement(workspaceRoot) {
344
396
  const canonicalRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(workspaceRoot));
345
- assertExternalBlueprintNxProjectConfinement({
397
+ assertExternalBlueprintNxProjectConfinementInternal({
346
398
  externalRoots: [],
347
399
  includeWorkspaceRoot: true,
348
400
  packageNxPathMatchers: workspacePackageMatchers(canonicalRoot),
349
401
  workspaceRoot: canonicalRoot,
350
- });
402
+ }, workspaceCacheIsIgnored(canonicalRoot));
351
403
  }
352
404
  function forbiddenConfigurationName(name) {
353
405
  const normalized = name.toLowerCase();
@@ -0,0 +1,2 @@
1
+ /** Exact internal enforcement seam for portable mutation tests. */
2
+ export declare function assertBuildOutputDirectoryInventoryBound(visitedDirectories: number, pointer: string): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertBuildOutputDirectoryInventoryBound = assertBuildOutputDirectoryInventoryBound;
4
+ const errors_js_1 = require("./errors.js");
5
+ const MAX_DIRECTORIES = 4_096;
6
+ /** Exact internal enforcement seam for portable mutation tests. */
7
+ function assertBuildOutputDirectoryInventoryBound(visitedDirectories, pointer) {
8
+ if (visitedDirectories > MAX_DIRECTORIES) {
9
+ throw new errors_js_1.SupplyChainError('supply-chain-sbom-omission', pointer, 'exceeds the bounded build-output directory inventory');
10
+ }
11
+ }
12
+ //# sourceMappingURL=build-output-bounds.js.map