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

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