@empire-builder-kit/nx 1.0.0-beta.9 → 1.0.0-rc.2

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 (824) hide show
  1. package/NOTICE +6 -0
  2. package/README.md +113 -3
  3. package/executors.json +30 -0
  4. package/package.json +84 -6
  5. package/src/api-contract/baseline-update.d.ts +82 -0
  6. package/src/api-contract/baseline-update.js +225 -0
  7. package/src/api-contract/baseline-update.js.map +1 -0
  8. package/src/api-contract/compatibility.d.ts +30 -0
  9. package/src/api-contract/compatibility.js +643 -0
  10. package/src/api-contract/compatibility.js.map +1 -0
  11. package/src/api-contract/contract-graph.d.ts +35 -0
  12. package/src/api-contract/contract-graph.js +141 -0
  13. package/src/api-contract/contract-graph.js.map +1 -0
  14. package/src/api-contract/evidence.d.ts +23 -0
  15. package/src/api-contract/evidence.js +87 -0
  16. package/src/api-contract/evidence.js.map +1 -0
  17. package/src/api-contract/index.d.ts +6 -0
  18. package/src/api-contract/index.js +10 -0
  19. package/src/api-contract/index.js.map +1 -0
  20. package/src/api-contract/model.d.ts +144 -0
  21. package/src/api-contract/model.fixtures.d.ts +2 -0
  22. package/src/api-contract/model.fixtures.js +81 -0
  23. package/src/api-contract/model.fixtures.js.map +1 -0
  24. package/src/api-contract/model.js +993 -0
  25. package/src/api-contract/model.js.map +1 -0
  26. package/src/api-contract/rollout.d.ts +32 -0
  27. package/src/api-contract/rollout.js +88 -0
  28. package/src/api-contract/rollout.js.map +1 -0
  29. package/src/authorization/compatibility.d.ts +62 -0
  30. package/src/authorization/compatibility.js +175 -0
  31. package/src/authorization/compatibility.js.map +1 -0
  32. package/src/authorization/index.d.ts +1 -0
  33. package/src/authorization/index.js +5 -0
  34. package/src/authorization/index.js.map +1 -0
  35. package/src/blueprints/execution.d.ts +25 -1
  36. package/src/blueprints/execution.js +246 -83
  37. package/src/blueprints/execution.js.map +1 -1
  38. package/src/blueprints/external-sandbox.d.ts +53 -0
  39. package/src/blueprints/external-sandbox.js +1182 -0
  40. package/src/blueprints/external-sandbox.js.map +1 -0
  41. package/src/blueprints/manifest.d.ts +42 -2
  42. package/src/blueprints/manifest.js +82 -27
  43. package/src/blueprints/manifest.js.map +1 -1
  44. package/src/blueprints/resolver.d.ts +14 -5
  45. package/src/blueprints/resolver.js +228 -68
  46. package/src/blueprints/resolver.js.map +1 -1
  47. package/src/cli/agent-command.d.ts +30 -0
  48. package/src/cli/agent-command.js +204 -0
  49. package/src/cli/agent-command.js.map +1 -0
  50. package/src/cli/agent-runtime.d.ts +25 -0
  51. package/src/cli/agent-runtime.js +488 -0
  52. package/src/cli/agent-runtime.js.map +1 -0
  53. package/src/cli/blueprint-authority.d.ts +9 -0
  54. package/src/cli/blueprint-authority.js +43 -0
  55. package/src/cli/blueprint-authority.js.map +1 -0
  56. package/src/cli/blueprint-command.d.ts +24 -0
  57. package/src/cli/blueprint-command.js +63 -0
  58. package/src/cli/blueprint-command.js.map +1 -0
  59. package/src/cli/bootstrap.d.ts +31 -0
  60. package/src/cli/bootstrap.js +165 -0
  61. package/src/cli/bootstrap.js.map +1 -0
  62. package/src/cli/dev-command.d.ts +92 -0
  63. package/src/cli/dev-command.js +561 -0
  64. package/src/cli/dev-command.js.map +1 -0
  65. package/src/cli/main.d.ts +131 -0
  66. package/src/cli/main.js +1199 -0
  67. package/src/cli/main.js.map +1 -0
  68. package/src/cli/output.d.ts +19 -0
  69. package/src/cli/output.js +51 -0
  70. package/src/cli/output.js.map +1 -0
  71. package/src/cli/personal-secret-runtime.d.ts +81 -0
  72. package/src/cli/personal-secret-runtime.js +567 -0
  73. package/src/cli/personal-secret-runtime.js.map +1 -0
  74. package/src/cli/secret-terminal.d.ts +12 -0
  75. package/src/cli/secret-terminal.js +128 -0
  76. package/src/cli/secret-terminal.js.map +1 -0
  77. package/src/container-images.d.ts +1 -0
  78. package/src/container-images.js +5 -0
  79. package/src/container-images.js.map +1 -0
  80. package/src/data-lifecycle/index.d.ts +3 -0
  81. package/src/data-lifecycle/index.js +7 -0
  82. package/src/data-lifecycle/index.js.map +1 -0
  83. package/src/data-lifecycle/model.d.ts +172 -0
  84. package/src/data-lifecycle/model.fixtures.d.ts +2 -0
  85. package/src/data-lifecycle/model.fixtures.js +244 -0
  86. package/src/data-lifecycle/model.fixtures.js.map +1 -0
  87. package/src/data-lifecycle/model.js +95 -0
  88. package/src/data-lifecycle/model.js.map +1 -0
  89. package/src/data-lifecycle/sensitive-artifacts.d.ts +28 -0
  90. package/src/data-lifecycle/sensitive-artifacts.js +146 -0
  91. package/src/data-lifecycle/sensitive-artifacts.js.map +1 -0
  92. package/src/data-lifecycle/validation.d.ts +32 -0
  93. package/src/data-lifecycle/validation.js +837 -0
  94. package/src/data-lifecycle/validation.js.map +1 -0
  95. package/src/database-retirement/contract.d.ts +68 -0
  96. package/src/database-retirement/contract.js +166 -0
  97. package/src/database-retirement/contract.js.map +1 -0
  98. package/src/database-retirement/index.d.ts +1 -0
  99. package/src/database-retirement/index.js +5 -0
  100. package/src/database-retirement/index.js.map +1 -0
  101. package/src/deterministic-order.d.ts +2 -0
  102. package/src/deterministic-order.js +7 -0
  103. package/src/deterministic-order.js.map +1 -0
  104. package/src/developer-agent/context.d.ts +27 -0
  105. package/src/developer-agent/context.js +497 -0
  106. package/src/developer-agent/context.js.map +1 -0
  107. package/src/developer-agent/generator-planning.d.ts +34 -0
  108. package/src/developer-agent/generator-planning.js +645 -0
  109. package/src/developer-agent/generator-planning.js.map +1 -0
  110. package/src/developer-agent/generator-preview.d.ts +8 -0
  111. package/src/developer-agent/generator-preview.js +650 -0
  112. package/src/developer-agent/generator-preview.js.map +1 -0
  113. package/src/developer-agent/git-inspection.d.ts +108 -0
  114. package/src/developer-agent/git-inspection.js +815 -0
  115. package/src/developer-agent/git-inspection.js.map +1 -0
  116. package/src/developer-agent/handoff.d.ts +43 -0
  117. package/src/developer-agent/handoff.js +698 -0
  118. package/src/developer-agent/handoff.js.map +1 -0
  119. package/src/developer-agent/index.d.ts +10 -0
  120. package/src/developer-agent/index.js +14 -0
  121. package/src/developer-agent/index.js.map +1 -0
  122. package/src/developer-agent/model.d.ts +481 -0
  123. package/src/developer-agent/model.js +143 -0
  124. package/src/developer-agent/model.js.map +1 -0
  125. package/src/developer-agent/operation-registry.d.ts +45 -0
  126. package/src/developer-agent/operation-registry.js +1255 -0
  127. package/src/developer-agent/operation-registry.js.map +1 -0
  128. package/src/developer-agent/ordering.d.ts +9 -0
  129. package/src/developer-agent/ordering.js +15 -0
  130. package/src/developer-agent/ordering.js.map +1 -0
  131. package/src/developer-agent/planning.d.ts +18 -0
  132. package/src/developer-agent/planning.js +447 -0
  133. package/src/developer-agent/planning.js.map +1 -0
  134. package/src/developer-agent/preview-changes.d.ts +26 -0
  135. package/src/developer-agent/preview-changes.js +203 -0
  136. package/src/developer-agent/preview-changes.js.map +1 -0
  137. package/src/developer-agent/preview-source.d.ts +2 -0
  138. package/src/developer-agent/preview-source.js +16 -0
  139. package/src/developer-agent/preview-source.js.map +1 -0
  140. package/src/developer-agent/validation.d.ts +18 -0
  141. package/src/developer-agent/validation.js +2617 -0
  142. package/src/developer-agent/validation.js.map +1 -0
  143. package/src/developer-agent/workspace-inspection.d.ts +20 -0
  144. package/src/developer-agent/workspace-inspection.js +1134 -0
  145. package/src/developer-agent/workspace-inspection.js.map +1 -0
  146. package/src/developer-agent/workspace-path.d.ts +6 -0
  147. package/src/developer-agent/workspace-path.js +22 -0
  148. package/src/developer-agent/workspace-path.js.map +1 -0
  149. package/src/executors/blueprint-trust/blueprint-trust.d.ts +29 -0
  150. package/src/executors/blueprint-trust/blueprint-trust.js +115 -0
  151. package/src/executors/blueprint-trust/blueprint-trust.js.map +1 -0
  152. package/src/executors/blueprint-trust/schema.json +27 -0
  153. package/src/executors/blueprint-verification/blueprint-verification.d.ts +13 -0
  154. package/src/executors/blueprint-verification/blueprint-verification.js +110 -0
  155. package/src/executors/blueprint-verification/blueprint-verification.js.map +1 -0
  156. package/src/executors/blueprint-verification/schema.json +44 -0
  157. package/src/executors/deployment-plan/deployment-plan.js +1 -0
  158. package/src/executors/deployment-plan/deployment-plan.js.map +1 -1
  159. package/src/executors/dev-doctor/dev-doctor.d.ts +19 -5
  160. package/src/executors/dev-doctor/dev-doctor.js +186 -32
  161. package/src/executors/dev-doctor/dev-doctor.js.map +1 -1
  162. package/src/executors/dev-doctor/schema.json +1 -6
  163. package/src/executors/dev-setup/dev-setup.d.ts +7 -1
  164. package/src/executors/dev-setup/dev-setup.js +14 -3
  165. package/src/executors/dev-setup/dev-setup.js.map +1 -1
  166. package/src/executors/developer-context/developer-context.d.ts +38 -0
  167. package/src/executors/developer-context/developer-context.js +78 -0
  168. package/src/executors/developer-context/developer-context.js.map +1 -0
  169. package/src/executors/developer-context/schema.json +87 -0
  170. package/src/executors/fleet/fleet.d.ts +12 -43
  171. package/src/executors/fleet/fleet.js +120 -500
  172. package/src/executors/fleet/fleet.js.map +1 -1
  173. package/src/executors/fleet/schema.json +64 -14
  174. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  175. package/src/executors/github-bootstrap/github-bootstrap.js +1 -0
  176. package/src/executors/github-bootstrap/github-bootstrap.js.map +1 -1
  177. package/src/executors/github-bootstrap/schema.json +5 -0
  178. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +144 -0
  179. package/src/executors/infrastructure-plan/infrastructure-plan.js +3320 -0
  180. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +1 -0
  181. package/src/executors/infrastructure-plan/schema.json +78 -0
  182. package/src/executors/secret-guardrails/schema.json +6 -0
  183. package/src/executors/secret-guardrails/secret-guardrails.d.ts +3 -0
  184. package/src/executors/secret-guardrails/secret-guardrails.js +44 -0
  185. package/src/executors/secret-guardrails/secret-guardrails.js.map +1 -0
  186. package/src/executors/secret-metadata/schema.json +31 -0
  187. package/src/executors/secret-metadata/secret-metadata.d.ts +32 -0
  188. package/src/executors/secret-metadata/secret-metadata.js +131 -0
  189. package/src/executors/secret-metadata/secret-metadata.js.map +1 -0
  190. package/src/executors/sst-lifecycle/logging-preflight.d.ts +17 -0
  191. package/src/executors/sst-lifecycle/logging-preflight.js +196 -0
  192. package/src/executors/sst-lifecycle/logging-preflight.js.map +1 -0
  193. package/src/executors/sst-lifecycle/run-sst-command.d.ts +23 -3
  194. package/src/executors/sst-lifecycle/run-sst-command.js +113 -10
  195. package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
  196. package/src/executors/sst-lifecycle/schema.json +9 -5
  197. package/src/executors/sst-lifecycle/secret-preflight.d.ts +25 -0
  198. package/src/executors/sst-lifecycle/secret-preflight.js +119 -0
  199. package/src/executors/sst-lifecycle/secret-preflight.js.map +1 -0
  200. package/src/foundation/discovery.d.ts +17 -1
  201. package/src/foundation/discovery.js +16 -1
  202. package/src/foundation/discovery.js.map +1 -1
  203. package/src/foundation/index.d.ts +3 -0
  204. package/src/foundation/index.js +3 -0
  205. package/src/foundation/index.js.map +1 -1
  206. package/src/foundation/local-database-contract.d.ts +1 -0
  207. package/src/foundation/local-database-contract.js +3 -0
  208. package/src/foundation/local-database-contract.js.map +1 -1
  209. package/src/foundation/logging-preflight.d.ts +30 -0
  210. package/src/foundation/logging-preflight.js +138 -0
  211. package/src/foundation/logging-preflight.js.map +1 -0
  212. package/src/foundation/logging.d.ts +70 -0
  213. package/src/foundation/logging.js +133 -0
  214. package/src/foundation/logging.js.map +1 -0
  215. package/src/foundation/preflight.d.ts +9 -0
  216. package/src/foundation/preflight.js +58 -2
  217. package/src/foundation/preflight.js.map +1 -1
  218. package/src/foundation/provision-database-bindings.d.ts +9 -1
  219. package/src/foundation/provision-database-bindings.js +25 -5
  220. package/src/foundation/provision-database-bindings.js.map +1 -1
  221. package/src/foundation/provision-logical-database.d.ts +10 -2
  222. package/src/foundation/provision-logical-database.js +68 -113
  223. package/src/foundation/provision-logical-database.js.map +1 -1
  224. package/src/foundation/router-origin-proof.d.ts +2 -0
  225. package/src/foundation/router-origin-proof.js +25 -0
  226. package/src/foundation/router-origin-proof.js.map +1 -0
  227. package/src/foundation/stages.d.ts +1 -0
  228. package/src/foundation/stages.js +9 -1
  229. package/src/foundation/stages.js.map +1 -1
  230. package/src/frontend-security/index.d.ts +1 -0
  231. package/src/frontend-security/index.js +5 -0
  232. package/src/frontend-security/index.js.map +1 -0
  233. package/src/frontend-security/security-headers.d.ts +50 -0
  234. package/src/frontend-security/security-headers.js +418 -0
  235. package/src/frontend-security/security-headers.js.map +1 -0
  236. package/src/generators/feature-registry.d.ts +13 -0
  237. package/src/generators/feature-registry.js +73 -0
  238. package/src/generators/feature-registry.js.map +1 -0
  239. package/src/generators/function/function.d.ts +1 -1
  240. package/src/generators/function/function.js +51 -6
  241. package/src/generators/function/function.js.map +1 -1
  242. package/src/generators/function/schema.d.ts +1 -0
  243. package/src/generators/function/schema.json +6 -1
  244. package/src/generators/logging-registry.d.ts +13 -0
  245. package/src/generators/logging-registry.js +62 -0
  246. package/src/generators/logging-registry.js.map +1 -0
  247. package/src/generators/post-generation-install.d.ts +67 -0
  248. package/src/generators/post-generation-install.js +3308 -0
  249. package/src/generators/post-generation-install.js.map +1 -0
  250. package/src/generators/preset/generator.js +3 -0
  251. package/src/generators/preset/generator.js.map +1 -1
  252. package/src/generators/preset/tool-versions.d.ts +18 -0
  253. package/src/generators/preset/tool-versions.js +22 -0
  254. package/src/generators/preset/tool-versions.js.map +1 -0
  255. package/src/generators/preset/workspace-files-developer-agent.d.ts +14 -0
  256. package/src/generators/preset/workspace-files-developer-agent.js +511 -0
  257. package/src/generators/preset/workspace-files-developer-agent.js.map +1 -0
  258. package/src/generators/preset/workspace-files-foundation-workload-roles.d.ts +6 -0
  259. package/src/generators/preset/workspace-files-foundation-workload-roles.js +406 -0
  260. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +1 -0
  261. package/src/generators/preset/workspace-files-performance-cost.d.ts +66 -0
  262. package/src/generators/preset/workspace-files-performance-cost.js +866 -0
  263. package/src/generators/preset/workspace-files-performance-cost.js.map +1 -0
  264. package/src/generators/preset/workspace-files-performance-load.d.ts +73 -0
  265. package/src/generators/preset/workspace-files-performance-load.js +801 -0
  266. package/src/generators/preset/workspace-files-performance-load.js.map +1 -0
  267. package/src/generators/preset/workspace-files-workload-role-baseline.d.ts +9 -0
  268. package/src/generators/preset/workspace-files-workload-role-baseline.js +1102 -0
  269. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +1 -0
  270. package/src/generators/preset/workspace-files.d.ts +14 -1
  271. package/src/generators/preset/workspace-files.js +8189 -245
  272. package/src/generators/preset/workspace-files.js.map +1 -1
  273. package/src/generators/repository-policy/repository-policy.js +3 -47
  274. package/src/generators/repository-policy/repository-policy.js.map +1 -1
  275. package/src/generators/slice/built-in-plan-api-contract-files.d.ts +2 -0
  276. package/src/generators/slice/built-in-plan-api-contract-files.js +2656 -0
  277. package/src/generators/slice/built-in-plan-api-contract-files.js.map +1 -0
  278. package/src/generators/slice/built-in-plan-api-files.d.ts +2 -0
  279. package/src/generators/slice/built-in-plan-api-files.js +1186 -0
  280. package/src/generators/slice/built-in-plan-api-files.js.map +1 -0
  281. package/src/generators/slice/built-in-plan-async-work-files.d.ts +2 -0
  282. package/src/generators/slice/built-in-plan-async-work-files.js +7903 -0
  283. package/src/generators/slice/built-in-plan-async-work-files.js.map +1 -0
  284. package/src/generators/slice/built-in-plan-authorization-files.d.ts +2 -0
  285. package/src/generators/slice/built-in-plan-authorization-files.js +2314 -0
  286. package/src/generators/slice/built-in-plan-authorization-files.js.map +1 -0
  287. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.d.ts +2 -0
  288. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +559 -0
  289. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +1 -0
  290. package/src/generators/slice/built-in-plan-data-deletion-files.d.ts +2 -0
  291. package/src/generators/slice/built-in-plan-data-deletion-files.js +1101 -0
  292. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +1 -0
  293. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.d.ts +2 -0
  294. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +249 -0
  295. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +1 -0
  296. package/src/generators/slice/built-in-plan-data-files.d.ts +2 -0
  297. package/src/generators/slice/built-in-plan-data-files.js +1530 -0
  298. package/src/generators/slice/built-in-plan-data-files.js.map +1 -0
  299. package/src/generators/slice/built-in-plan-data-lifecycle-files.d.ts +2 -0
  300. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +750 -0
  301. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +1 -0
  302. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.d.ts +2 -0
  303. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +828 -0
  304. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +1 -0
  305. package/src/generators/slice/built-in-plan-data-retention-job-files.d.ts +2 -0
  306. package/src/generators/slice/built-in-plan-data-retention-job-files.js +2604 -0
  307. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +1 -0
  308. package/src/generators/slice/built-in-plan-data-retention-launcher-files.d.ts +2 -0
  309. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +144 -0
  310. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +1 -0
  311. package/src/generators/slice/built-in-plan-data-rights-files.d.ts +2 -0
  312. package/src/generators/slice/built-in-plan-data-rights-files.js +4628 -0
  313. package/src/generators/slice/built-in-plan-data-rights-files.js.map +1 -0
  314. package/src/generators/slice/built-in-plan-database-lifecycle-files.d.ts +2 -0
  315. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +1901 -0
  316. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +1 -0
  317. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.d.ts +2 -0
  318. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +485 -0
  319. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +1 -0
  320. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -0
  321. package/src/generators/slice/built-in-plan-foundation-files.js +184 -0
  322. package/src/generators/slice/built-in-plan-foundation-files.js.map +1 -0
  323. package/src/generators/slice/built-in-plan-frontend-files.d.ts +2 -0
  324. package/src/generators/slice/built-in-plan-frontend-files.js +2233 -0
  325. package/src/generators/slice/built-in-plan-frontend-files.js.map +1 -0
  326. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +2 -0
  327. package/src/generators/slice/built-in-plan-infrastructure-files.js +3038 -0
  328. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +1 -0
  329. package/src/generators/slice/built-in-plan-infrastructure-safety-files.d.ts +2 -0
  330. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +312 -0
  331. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +1 -0
  332. package/src/generators/slice/built-in-plan-metadata-files.d.ts +3 -0
  333. package/src/generators/slice/built-in-plan-metadata-files.js +219 -0
  334. package/src/generators/slice/built-in-plan-metadata-files.js.map +1 -0
  335. package/src/generators/slice/built-in-plan-operations-files.d.ts +2 -0
  336. package/src/generators/slice/built-in-plan-operations-files.js +630 -0
  337. package/src/generators/slice/built-in-plan-operations-files.js.map +1 -0
  338. package/src/generators/slice/built-in-plan-performance-files.d.ts +3 -0
  339. package/src/generators/slice/built-in-plan-performance-files.js +3293 -0
  340. package/src/generators/slice/built-in-plan-performance-files.js.map +1 -0
  341. package/src/generators/slice/built-in-plan-project-files.d.ts +3 -0
  342. package/src/generators/slice/built-in-plan-project-files.js +979 -0
  343. package/src/generators/slice/built-in-plan-project-files.js.map +1 -0
  344. package/src/generators/slice/built-in-plan-release-files.d.ts +2 -0
  345. package/src/generators/slice/built-in-plan-release-files.js +6387 -0
  346. package/src/generators/slice/built-in-plan-release-files.js.map +1 -0
  347. package/src/generators/slice/built-in-plan-reliability-files.d.ts +2 -0
  348. package/src/generators/slice/built-in-plan-reliability-files.js +4499 -0
  349. package/src/generators/slice/built-in-plan-reliability-files.js.map +1 -0
  350. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +2 -0
  351. package/src/generators/slice/built-in-plan-secret-runtime-files.js +1004 -0
  352. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +1 -0
  353. package/src/generators/slice/built-in-plan-shared.d.ts +53 -0
  354. package/src/generators/slice/built-in-plan-shared.js +113 -0
  355. package/src/generators/slice/built-in-plan-shared.js.map +1 -0
  356. package/src/generators/slice/built-in-plan-testing-files.d.ts +2 -0
  357. package/src/generators/slice/built-in-plan-testing-files.js +2356 -0
  358. package/src/generators/slice/built-in-plan-testing-files.js.map +1 -0
  359. package/src/generators/slice/built-in-plan-verification-files.d.ts +2 -0
  360. package/src/generators/slice/built-in-plan-verification-files.js +358 -0
  361. package/src/generators/slice/built-in-plan-verification-files.js.map +1 -0
  362. package/src/generators/slice/built-in-plan-web-files.d.ts +2 -0
  363. package/src/generators/slice/built-in-plan-web-files.js +430 -0
  364. package/src/generators/slice/built-in-plan-web-files.js.map +1 -0
  365. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +2 -0
  366. package/src/generators/slice/built-in-plan-workload-role-files.js +2356 -0
  367. package/src/generators/slice/built-in-plan-workload-role-files.js.map +1 -0
  368. package/src/generators/slice/built-in-plan.d.ts +8 -0
  369. package/src/generators/slice/built-in-plan.js +264 -0
  370. package/src/generators/slice/built-in-plan.js.map +1 -0
  371. package/src/generators/slice/schema.json +1 -1
  372. package/src/generators/slice/slice.d.ts +1 -22
  373. package/src/generators/slice/slice.js +185 -1510
  374. package/src/generators/slice/slice.js.map +1 -1
  375. package/src/generators/upgrade/schema.d.ts +2 -0
  376. package/src/generators/upgrade/schema.json +11 -1
  377. package/src/generators/upgrade/upgrade.d.ts +51 -1
  378. package/src/generators/upgrade/upgrade.js +820 -82
  379. package/src/generators/upgrade/upgrade.js.map +1 -1
  380. package/src/generators/workload/frozen-container.d.ts +8 -0
  381. package/src/generators/workload/frozen-container.js +36 -0
  382. package/src/generators/workload/frozen-container.js.map +1 -0
  383. package/src/generators/workload/performance-registration.d.ts +32 -0
  384. package/src/generators/workload/performance-registration.js +226 -0
  385. package/src/generators/workload/performance-registration.js.map +1 -0
  386. package/src/generators/workload/reliability-registration.d.ts +16 -0
  387. package/src/generators/workload/reliability-registration.js +150 -0
  388. package/src/generators/workload/reliability-registration.js.map +1 -0
  389. package/src/generators/workload/schema.d.ts +1 -0
  390. package/src/generators/workload/schema.json +6 -1
  391. package/src/generators/workload/service-performance-files.d.ts +4 -0
  392. package/src/generators/workload/service-performance-files.js +1846 -0
  393. package/src/generators/workload/service-performance-files.js.map +1 -0
  394. package/src/generators/workload/workload.d.ts +3 -2
  395. package/src/generators/workload/workload.js +1083 -18
  396. package/src/generators/workload/workload.js.map +1 -1
  397. package/src/git-policy/action-pins.d.ts +10 -0
  398. package/src/git-policy/action-pins.js +10 -0
  399. package/src/git-policy/action-pins.js.map +1 -1
  400. package/src/git-policy/github-bootstrap.d.ts +14 -1
  401. package/src/git-policy/github-bootstrap.js +274 -46
  402. package/src/git-policy/github-bootstrap.js.map +1 -1
  403. package/src/index.d.ts +2 -0
  404. package/src/index.js +2 -0
  405. package/src/index.js.map +1 -1
  406. package/src/infrastructure-change/convergence.d.ts +13 -0
  407. package/src/infrastructure-change/convergence.js +85 -0
  408. package/src/infrastructure-change/convergence.js.map +1 -0
  409. package/src/infrastructure-change/drift.d.ts +13 -0
  410. package/src/infrastructure-change/drift.js +112 -0
  411. package/src/infrastructure-change/drift.js.map +1 -0
  412. package/src/infrastructure-change/index.d.ts +7 -0
  413. package/src/infrastructure-change/index.js +11 -0
  414. package/src/infrastructure-change/index.js.map +1 -0
  415. package/src/infrastructure-change/model.d.ts +253 -0
  416. package/src/infrastructure-change/model.js +28 -0
  417. package/src/infrastructure-change/model.js.map +1 -0
  418. package/src/infrastructure-change/normalize.d.ts +12 -0
  419. package/src/infrastructure-change/normalize.js +245 -0
  420. package/src/infrastructure-change/normalize.js.map +1 -0
  421. package/src/infrastructure-change/plan.d.ts +40 -0
  422. package/src/infrastructure-change/plan.js +361 -0
  423. package/src/infrastructure-change/plan.js.map +1 -0
  424. package/src/infrastructure-change/risk.d.ts +7 -0
  425. package/src/infrastructure-change/risk.js +269 -0
  426. package/src/infrastructure-change/risk.js.map +1 -0
  427. package/src/infrastructure-change/summary.d.ts +20 -0
  428. package/src/infrastructure-change/summary.js +130 -0
  429. package/src/infrastructure-change/summary.js.map +1 -0
  430. package/src/local-dev/context-discovery.d.ts +2 -0
  431. package/src/local-dev/context-discovery.js +59 -0
  432. package/src/local-dev/context-discovery.js.map +1 -0
  433. package/src/local-dev/contract-validation.d.ts +15 -0
  434. package/src/local-dev/contract-validation.js +84 -0
  435. package/src/local-dev/contract-validation.js.map +1 -0
  436. package/src/local-dev/contracts.d.ts +10 -1
  437. package/src/local-dev/contracts.js +57 -5
  438. package/src/local-dev/contracts.js.map +1 -1
  439. package/src/local-dev/control-contract.d.ts +67 -0
  440. package/src/local-dev/control-contract.js +180 -0
  441. package/src/local-dev/control-contract.js.map +1 -0
  442. package/src/local-dev/dev-command-core.d.ts +60 -0
  443. package/src/local-dev/dev-command-core.js +89 -0
  444. package/src/local-dev/dev-command-core.js.map +1 -0
  445. package/src/local-dev/effects.d.ts +16 -0
  446. package/src/local-dev/effects.js +63 -0
  447. package/src/local-dev/effects.js.map +1 -0
  448. package/src/local-dev/environment-inspector.d.ts +125 -0
  449. package/src/local-dev/environment-inspector.js +687 -0
  450. package/src/local-dev/environment-inspector.js.map +1 -0
  451. package/src/local-dev/environment-state.d.ts +113 -0
  452. package/src/local-dev/environment-state.js +463 -0
  453. package/src/local-dev/environment-state.js.map +1 -0
  454. package/src/local-dev/errors.d.ts +6 -0
  455. package/src/local-dev/errors.js +41 -0
  456. package/src/local-dev/errors.js.map +1 -0
  457. package/src/local-dev/fleet-client.d.ts +33 -0
  458. package/src/local-dev/fleet-client.js +156 -0
  459. package/src/local-dev/fleet-client.js.map +1 -0
  460. package/src/local-dev/fleet-configuration.d.ts +13 -0
  461. package/src/local-dev/fleet-configuration.js +71 -0
  462. package/src/local-dev/fleet-configuration.js.map +1 -0
  463. package/src/local-dev/fleet-inventory.d.ts +56 -0
  464. package/src/local-dev/fleet-inventory.js +469 -0
  465. package/src/local-dev/fleet-inventory.js.map +1 -0
  466. package/src/local-dev/fleet-ipc.d.ts +28 -0
  467. package/src/local-dev/fleet-ipc.js +267 -0
  468. package/src/local-dev/fleet-ipc.js.map +1 -0
  469. package/src/local-dev/fleet-launcher.d.ts +53 -0
  470. package/src/local-dev/fleet-launcher.js +379 -0
  471. package/src/local-dev/fleet-launcher.js.map +1 -0
  472. package/src/local-dev/fleet-lock.d.ts +41 -0
  473. package/src/local-dev/fleet-lock.js +135 -0
  474. package/src/local-dev/fleet-lock.js.map +1 -0
  475. package/src/local-dev/fleet-logs.d.ts +66 -0
  476. package/src/local-dev/fleet-logs.js +542 -0
  477. package/src/local-dev/fleet-logs.js.map +1 -0
  478. package/src/local-dev/fleet-process.d.ts +50 -0
  479. package/src/local-dev/fleet-process.js +289 -0
  480. package/src/local-dev/fleet-process.js.map +1 -0
  481. package/src/local-dev/fleet-runtime.d.ts +22 -0
  482. package/src/local-dev/fleet-runtime.js +368 -0
  483. package/src/local-dev/fleet-runtime.js.map +1 -0
  484. package/src/local-dev/fleet-session.d.ts +70 -0
  485. package/src/local-dev/fleet-session.js +301 -0
  486. package/src/local-dev/fleet-session.js.map +1 -0
  487. package/src/local-dev/fleet-slice-runner-daemon.d.ts +1 -0
  488. package/src/local-dev/fleet-slice-runner-daemon.js +21 -0
  489. package/src/local-dev/fleet-slice-runner-daemon.js.map +1 -0
  490. package/src/local-dev/fleet-startup.d.ts +22 -0
  491. package/src/local-dev/fleet-startup.js +114 -0
  492. package/src/local-dev/fleet-startup.js.map +1 -0
  493. package/src/local-dev/fleet-state.d.ts +62 -0
  494. package/src/local-dev/fleet-state.js +297 -0
  495. package/src/local-dev/fleet-state.js.map +1 -0
  496. package/src/local-dev/fleet-supervisor-daemon.d.ts +1 -0
  497. package/src/local-dev/fleet-supervisor-daemon.js +41 -0
  498. package/src/local-dev/fleet-supervisor-daemon.js.map +1 -0
  499. package/src/local-dev/fleet-supervisor.d.ts +52 -0
  500. package/src/local-dev/fleet-supervisor.js +384 -0
  501. package/src/local-dev/fleet-supervisor.js.map +1 -0
  502. package/src/local-dev/gateway.js +1 -1
  503. package/src/local-dev/gateway.js.map +1 -1
  504. package/src/local-dev/identity.js +4 -6
  505. package/src/local-dev/identity.js.map +1 -1
  506. package/src/local-dev/index.d.ts +1 -0
  507. package/src/local-dev/index.js +1 -0
  508. package/src/local-dev/index.js.map +1 -1
  509. package/src/local-dev/local-context.d.ts +62 -0
  510. package/src/local-dev/local-context.js +299 -0
  511. package/src/local-dev/local-context.js.map +1 -0
  512. package/src/local-dev/nx-workspace.d.ts +45 -0
  513. package/src/local-dev/nx-workspace.js +228 -0
  514. package/src/local-dev/nx-workspace.js.map +1 -0
  515. package/src/local-dev/personal-secret-ledger.d.ts +75 -0
  516. package/src/local-dev/personal-secret-ledger.js +391 -0
  517. package/src/local-dev/personal-secret-ledger.js.map +1 -0
  518. package/src/local-dev/personal-stage.d.ts +18 -0
  519. package/src/local-dev/personal-stage.js +129 -0
  520. package/src/local-dev/personal-stage.js.map +1 -0
  521. package/src/local-dev/private-state.d.ts +17 -0
  522. package/src/local-dev/private-state.js +254 -0
  523. package/src/local-dev/private-state.js.map +1 -0
  524. package/src/local-dev/process-identity.d.ts +9 -0
  525. package/src/local-dev/process-identity.js +79 -0
  526. package/src/local-dev/process-identity.js.map +1 -0
  527. package/src/local-dev/runtime-paths.d.ts +17 -0
  528. package/src/local-dev/runtime-paths.js +33 -0
  529. package/src/local-dev/runtime-paths.js.map +1 -0
  530. package/src/local-dev/secret-slice-claim.d.ts +17 -0
  531. package/src/local-dev/secret-slice-claim.js +75 -0
  532. package/src/local-dev/secret-slice-claim.js.map +1 -0
  533. package/src/local-dev/slice-claim.d.ts +36 -0
  534. package/src/local-dev/slice-claim.js +199 -0
  535. package/src/local-dev/slice-claim.js.map +1 -0
  536. package/src/local-dev/slice-runner.d.ts +121 -0
  537. package/src/local-dev/slice-runner.js +715 -0
  538. package/src/local-dev/slice-runner.js.map +1 -0
  539. package/src/local-dev/tls.js +51 -17
  540. package/src/local-dev/tls.js.map +1 -1
  541. package/src/ownership/composition.d.ts +5 -2
  542. package/src/ownership/composition.js +26 -3
  543. package/src/ownership/composition.js.map +1 -1
  544. package/src/ownership/hash.d.ts +1 -1
  545. package/src/ownership/hash.js +3 -1
  546. package/src/ownership/hash.js.map +1 -1
  547. package/src/ownership/record.d.ts +32 -1
  548. package/src/ownership/record.js +139 -2
  549. package/src/ownership/record.js.map +1 -1
  550. package/src/performance/cost-collection.d.ts +225 -0
  551. package/src/performance/cost-collection.js +825 -0
  552. package/src/performance/cost-collection.js.map +1 -0
  553. package/src/performance/cost-controls.d.ts +131 -0
  554. package/src/performance/cost-controls.js +336 -0
  555. package/src/performance/cost-controls.js.map +1 -0
  556. package/src/performance/evidence.d.ts +140 -0
  557. package/src/performance/evidence.js +599 -0
  558. package/src/performance/evidence.js.map +1 -0
  559. package/src/performance/index.d.ts +10 -0
  560. package/src/performance/index.js +14 -0
  561. package/src/performance/index.js.map +1 -0
  562. package/src/performance/load-safety.d.ts +84 -0
  563. package/src/performance/load-safety.js +346 -0
  564. package/src/performance/load-safety.js.map +1 -0
  565. package/src/performance/model.d.ts +129 -0
  566. package/src/performance/model.js +452 -0
  567. package/src/performance/model.js.map +1 -0
  568. package/src/performance/pr-artifact-budget.d.ts +42 -0
  569. package/src/performance/pr-artifact-budget.js +151 -0
  570. package/src/performance/pr-artifact-budget.js.map +1 -0
  571. package/src/performance/runner.d.ts +75 -0
  572. package/src/performance/runner.js +227 -0
  573. package/src/performance/runner.js.map +1 -0
  574. package/src/performance/scenario-endpoint.d.ts +1 -0
  575. package/src/performance/scenario-endpoint.js +5 -0
  576. package/src/performance/scenario-endpoint.js.map +1 -0
  577. package/src/performance/scenario.d.ts +193 -0
  578. package/src/performance/scenario.js +736 -0
  579. package/src/performance/scenario.js.map +1 -0
  580. package/src/performance/test-fixtures.d.ts +7 -0
  581. package/src/performance/test-fixtures.js +169 -0
  582. package/src/performance/test-fixtures.js.map +1 -0
  583. package/src/performance/unit-cost.d.ts +105 -0
  584. package/src/performance/unit-cost.js +364 -0
  585. package/src/performance/unit-cost.js.map +1 -0
  586. package/src/release/index.d.ts +4 -0
  587. package/src/release/index.js +8 -0
  588. package/src/release/index.js.map +1 -0
  589. package/src/release/lifecycle.d.ts +132 -0
  590. package/src/release/lifecycle.js +411 -0
  591. package/src/release/lifecycle.js.map +1 -0
  592. package/src/release/manifest.d.ts +148 -0
  593. package/src/release/manifest.js +503 -0
  594. package/src/release/manifest.js.map +1 -0
  595. package/src/release/rollout.d.ts +170 -0
  596. package/src/release/rollout.js +578 -0
  597. package/src/release/rollout.js.map +1 -0
  598. package/src/release/source-authority.d.ts +19 -0
  599. package/src/release/source-authority.js +195 -0
  600. package/src/release/source-authority.js.map +1 -0
  601. package/src/repository-policy/deployment-plan.d.ts +2 -1
  602. package/src/repository-policy/deployment-plan.js +2 -0
  603. package/src/repository-policy/deployment-plan.js.map +1 -1
  604. package/src/repository-policy/policy.d.ts +1 -1
  605. package/src/repository-policy/policy.js +29 -25
  606. package/src/repository-policy/policy.js.map +1 -1
  607. package/src/schemas/aggregate-count-evidence-v1.json +135 -0
  608. package/src/schemas/api-contract-baseline-v1.json +674 -0
  609. package/src/schemas/api-contract-compatibility-report-v1.json +126 -0
  610. package/src/schemas/aws-billing-actual-evidence-v1.json +407 -0
  611. package/src/schemas/blueprint-v1.json +18 -1
  612. package/src/schemas/data-lifecycle-policy-v1.json +517 -0
  613. package/src/schemas/generated-ownership-v2.json +22 -0
  614. package/src/schemas/performance-policy-v1.json +335 -0
  615. package/src/schemas/repository-policy-v1.json +1 -0
  616. package/src/schemas/testing-evidence-quarantine-v1.json +168 -0
  617. package/src/schemas/testing-evidence-result-v1.json +319 -0
  618. package/src/secrets/adapters.d.ts +49 -0
  619. package/src/secrets/adapters.js +184 -0
  620. package/src/secrets/adapters.js.map +1 -0
  621. package/src/secrets/aws-control-plane.d.ts +20 -0
  622. package/src/secrets/aws-control-plane.js +255 -0
  623. package/src/secrets/aws-control-plane.js.map +1 -0
  624. package/src/secrets/declaration-verification.d.ts +11 -0
  625. package/src/secrets/declaration-verification.js +68 -0
  626. package/src/secrets/declaration-verification.js.map +1 -0
  627. package/src/secrets/guardrails.d.ts +26 -0
  628. package/src/secrets/guardrails.js +328 -0
  629. package/src/secrets/guardrails.js.map +1 -0
  630. package/src/secrets/index.d.ts +12 -0
  631. package/src/secrets/index.js +16 -0
  632. package/src/secrets/index.js.map +1 -0
  633. package/src/secrets/metadata.d.ts +48 -0
  634. package/src/secrets/metadata.js +171 -0
  635. package/src/secrets/metadata.js.map +1 -0
  636. package/src/secrets/model.d.ts +49 -0
  637. package/src/secrets/model.js +125 -0
  638. package/src/secrets/model.js.map +1 -0
  639. package/src/secrets/operator.d.ts +101 -0
  640. package/src/secrets/operator.js +229 -0
  641. package/src/secrets/operator.js.map +1 -0
  642. package/src/secrets/permissions.d.ts +34 -0
  643. package/src/secrets/permissions.js +86 -0
  644. package/src/secrets/permissions.js.map +1 -0
  645. package/src/secrets/personal-command.d.ts +83 -0
  646. package/src/secrets/personal-command.js +197 -0
  647. package/src/secrets/personal-command.js.map +1 -0
  648. package/src/secrets/personal-ledger.d.ts +21 -0
  649. package/src/secrets/personal-ledger.js +135 -0
  650. package/src/secrets/personal-ledger.js.map +1 -0
  651. package/src/secrets/registry.d.ts +9 -0
  652. package/src/secrets/registry.js +86 -0
  653. package/src/secrets/registry.js.map +1 -0
  654. package/src/secrets/verification.d.ts +18 -0
  655. package/src/secrets/verification.js +139 -0
  656. package/src/secrets/verification.js.map +1 -0
  657. package/src/secrets/workload-access.d.ts +46 -0
  658. package/src/secrets/workload-access.js +163 -0
  659. package/src/secrets/workload-access.js.map +1 -0
  660. package/src/supply-chain/action-pins.d.ts +26 -0
  661. package/src/supply-chain/action-pins.js +208 -0
  662. package/src/supply-chain/action-pins.js.map +1 -0
  663. package/src/supply-chain/blueprint-trust-git.d.ts +130 -0
  664. package/src/supply-chain/blueprint-trust-git.js +1581 -0
  665. package/src/supply-chain/blueprint-trust-git.js.map +1 -0
  666. package/src/supply-chain/blueprint-trust-process.d.ts +4 -0
  667. package/src/supply-chain/blueprint-trust-process.js +88 -0
  668. package/src/supply-chain/blueprint-trust-process.js.map +1 -0
  669. package/src/supply-chain/blueprint-trust.d.ts +354 -0
  670. package/src/supply-chain/blueprint-trust.js +1558 -0
  671. package/src/supply-chain/blueprint-trust.js.map +1 -0
  672. package/src/supply-chain/blueprint-verification-authority.d.ts +62 -0
  673. package/src/supply-chain/blueprint-verification-authority.js +588 -0
  674. package/src/supply-chain/blueprint-verification-authority.js.map +1 -0
  675. package/src/supply-chain/blueprint-verification-execution.d.ts +68 -0
  676. package/src/supply-chain/blueprint-verification-execution.js +624 -0
  677. package/src/supply-chain/blueprint-verification-execution.js.map +1 -0
  678. package/src/supply-chain/build-output.d.ts +35 -0
  679. package/src/supply-chain/build-output.js +398 -0
  680. package/src/supply-chain/build-output.js.map +1 -0
  681. package/src/supply-chain/common.d.ts +21 -0
  682. package/src/supply-chain/common.js +107 -0
  683. package/src/supply-chain/common.js.map +1 -0
  684. package/src/supply-chain/container-artifact-contract.d.ts +23 -0
  685. package/src/supply-chain/container-artifact-contract.js +208 -0
  686. package/src/supply-chain/container-artifact-contract.js.map +1 -0
  687. package/src/supply-chain/container-release.d.ts +119 -0
  688. package/src/supply-chain/container-release.js +496 -0
  689. package/src/supply-chain/container-release.js.map +1 -0
  690. package/src/supply-chain/ecr-applicability.d.ts +19 -0
  691. package/src/supply-chain/ecr-applicability.js +103 -0
  692. package/src/supply-chain/ecr-applicability.js.map +1 -0
  693. package/src/supply-chain/ecr-scanning.d.ts +83 -0
  694. package/src/supply-chain/ecr-scanning.js +321 -0
  695. package/src/supply-chain/ecr-scanning.js.map +1 -0
  696. package/src/supply-chain/ecs-deployed-image.d.ts +85 -0
  697. package/src/supply-chain/ecs-deployed-image.js +300 -0
  698. package/src/supply-chain/ecs-deployed-image.js.map +1 -0
  699. package/src/supply-chain/errors.d.ts +6 -0
  700. package/src/supply-chain/errors.js +15 -0
  701. package/src/supply-chain/errors.js.map +1 -0
  702. package/src/supply-chain/generated-blueprint-trust-command.d.ts +4 -0
  703. package/src/supply-chain/generated-blueprint-trust-command.js +1362 -0
  704. package/src/supply-chain/generated-blueprint-trust-command.js.map +1 -0
  705. package/src/supply-chain/generated-command.d.ts +1 -0
  706. package/src/supply-chain/generated-command.js +687 -0
  707. package/src/supply-chain/generated-command.js.map +1 -0
  708. package/src/supply-chain/generated-container-release-command.d.ts +16 -0
  709. package/src/supply-chain/generated-container-release-command.js +2087 -0
  710. package/src/supply-chain/generated-container-release-command.js.map +1 -0
  711. package/src/supply-chain/generated-ecr-collector-command.d.ts +21 -0
  712. package/src/supply-chain/generated-ecr-collector-command.js +1338 -0
  713. package/src/supply-chain/generated-ecr-collector-command.js.map +1 -0
  714. package/src/supply-chain/generated-files.d.ts +13 -0
  715. package/src/supply-chain/generated-files.js +401 -0
  716. package/src/supply-chain/generated-files.js.map +1 -0
  717. package/src/supply-chain/generated-scanner-command.d.ts +1 -0
  718. package/src/supply-chain/generated-scanner-command.js +718 -0
  719. package/src/supply-chain/generated-scanner-command.js.map +1 -0
  720. package/src/supply-chain/index.d.ts +28 -0
  721. package/src/supply-chain/index.js +35 -0
  722. package/src/supply-chain/index.js.map +1 -0
  723. package/src/supply-chain/inventory.d.ts +79 -0
  724. package/src/supply-chain/inventory.js +717 -0
  725. package/src/supply-chain/inventory.js.map +1 -0
  726. package/src/supply-chain/license-expression.d.ts +7 -0
  727. package/src/supply-chain/license-expression.js +128 -0
  728. package/src/supply-chain/license-expression.js.map +1 -0
  729. package/src/supply-chain/pnpm-toolchain-authority.d.ts +31 -0
  730. package/src/supply-chain/pnpm-toolchain-authority.js +316 -0
  731. package/src/supply-chain/pnpm-toolchain-authority.js.map +1 -0
  732. package/src/supply-chain/policy.d.ts +105 -0
  733. package/src/supply-chain/policy.js +301 -0
  734. package/src/supply-chain/policy.js.map +1 -0
  735. package/src/supply-chain/publication.d.ts +48 -0
  736. package/src/supply-chain/publication.js +85 -0
  737. package/src/supply-chain/publication.js.map +1 -0
  738. package/src/supply-chain/sbom.d.ts +228 -0
  739. package/src/supply-chain/sbom.js +826 -0
  740. package/src/supply-chain/sbom.js.map +1 -0
  741. package/src/supply-chain/scanner.d.ts +77 -0
  742. package/src/supply-chain/scanner.js +502 -0
  743. package/src/supply-chain/scanner.js.map +1 -0
  744. package/src/supply-chain/vendored-source.d.ts +95 -0
  745. package/src/supply-chain/vendored-source.js +315 -0
  746. package/src/supply-chain/vendored-source.js.map +1 -0
  747. package/src/testing-evidence/fixture-scope.d.ts +52 -0
  748. package/src/testing-evidence/fixture-scope.js +140 -0
  749. package/src/testing-evidence/fixture-scope.js.map +1 -0
  750. package/src/testing-evidence/index.d.ts +5 -0
  751. package/src/testing-evidence/index.js +9 -0
  752. package/src/testing-evidence/index.js.map +1 -0
  753. package/src/testing-evidence/quarantine.d.ts +48 -0
  754. package/src/testing-evidence/quarantine.js +253 -0
  755. package/src/testing-evidence/quarantine.js.map +1 -0
  756. package/src/testing-evidence/result.d.ts +108 -0
  757. package/src/testing-evidence/result.js +571 -0
  758. package/src/testing-evidence/result.js.map +1 -0
  759. package/src/testing-evidence/runner-adapter.d.ts +51 -0
  760. package/src/testing-evidence/runner-adapter.js +288 -0
  761. package/src/testing-evidence/runner-adapter.js.map +1 -0
  762. package/src/testing-evidence/sensitive-artifacts.d.ts +13 -0
  763. package/src/testing-evidence/sensitive-artifacts.js +93 -0
  764. package/src/testing-evidence/sensitive-artifacts.js.map +1 -0
  765. package/src/work-markers/work-markers.js +4 -3
  766. package/src/work-markers/work-markers.js.map +1 -1
  767. package/src/workload-roles/account-baseline.d.ts +132 -0
  768. package/src/workload-roles/account-baseline.js +743 -0
  769. package/src/workload-roles/account-baseline.js.map +1 -0
  770. package/src/workload-roles/authority.d.ts +38 -0
  771. package/src/workload-roles/authority.js +156 -0
  772. package/src/workload-roles/authority.js.map +1 -0
  773. package/src/workload-roles/aws-adapter.d.ts +99 -0
  774. package/src/workload-roles/aws-adapter.js +416 -0
  775. package/src/workload-roles/aws-adapter.js.map +1 -0
  776. package/src/workload-roles/aws-internal-handler.d.ts +27 -0
  777. package/src/workload-roles/aws-internal-handler.js +58 -0
  778. package/src/workload-roles/aws-internal-handler.js.map +1 -0
  779. package/src/workload-roles/aws-s3-state.d.ts +52 -0
  780. package/src/workload-roles/aws-s3-state.js +164 -0
  781. package/src/workload-roles/aws-s3-state.js.map +1 -0
  782. package/src/workload-roles/aws-sdk-control-plane.d.ts +12 -0
  783. package/src/workload-roles/aws-sdk-control-plane.js +291 -0
  784. package/src/workload-roles/aws-sdk-control-plane.js.map +1 -0
  785. package/src/workload-roles/boundary.d.ts +33 -0
  786. package/src/workload-roles/boundary.js +130 -0
  787. package/src/workload-roles/boundary.js.map +1 -0
  788. package/src/workload-roles/convergence.d.ts +66 -0
  789. package/src/workload-roles/convergence.js +186 -0
  790. package/src/workload-roles/convergence.js.map +1 -0
  791. package/src/workload-roles/effective-policy.d.ts +51 -0
  792. package/src/workload-roles/effective-policy.js +183 -0
  793. package/src/workload-roles/effective-policy.js.map +1 -0
  794. package/src/workload-roles/handler.d.ts +43 -0
  795. package/src/workload-roles/handler.js +130 -0
  796. package/src/workload-roles/handler.js.map +1 -0
  797. package/src/workload-roles/history.d.ts +47 -0
  798. package/src/workload-roles/history.js +324 -0
  799. package/src/workload-roles/history.js.map +1 -0
  800. package/src/workload-roles/index.d.ts +17 -0
  801. package/src/workload-roles/index.js +21 -0
  802. package/src/workload-roles/index.js.map +1 -0
  803. package/src/workload-roles/injection.d.ts +119 -0
  804. package/src/workload-roles/injection.js +495 -0
  805. package/src/workload-roles/injection.js.map +1 -0
  806. package/src/workload-roles/manifest.d.ts +54 -0
  807. package/src/workload-roles/manifest.js +343 -0
  808. package/src/workload-roles/manifest.js.map +1 -0
  809. package/src/workload-roles/provisioner.d.ts +70 -0
  810. package/src/workload-roles/provisioner.js +231 -0
  811. package/src/workload-roles/provisioner.js.map +1 -0
  812. package/src/workload-roles/registration.d.ts +101 -0
  813. package/src/workload-roles/registration.js +457 -0
  814. package/src/workload-roles/registration.js.map +1 -0
  815. package/src/workload-roles/stage-boundary.d.ts +31 -0
  816. package/src/workload-roles/stage-boundary.js +208 -0
  817. package/src/workload-roles/stage-boundary.js.map +1 -0
  818. package/src/workload-roles/standard-slice.d.ts +54 -0
  819. package/src/workload-roles/standard-slice.js +252 -0
  820. package/src/workload-roles/standard-slice.js.map +1 -0
  821. package/migrations/standard-pre-v1-to-v1.md +0 -11
  822. package/src/foundation/aurora-logical-database.d.ts +0 -76
  823. package/src/foundation/aurora-logical-database.js +0 -419
  824. package/src/foundation/aurora-logical-database.js.map +0 -1
@@ -0,0 +1,1004 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderStandardSliceSecretRuntimeFiles = renderStandardSliceSecretRuntimeFiles;
4
+ const discovery_js_1 = require("../../foundation/discovery.js");
5
+ const tool_versions_js_1 = require("../preset/tool-versions.js");
6
+ const built_in_plan_shared_js_1 = require("./built-in-plan-shared.js");
7
+ const personalStagePattern = '^personal-[a-z0-9](?:[a-z0-9-]{0,25}[a-z0-9])?$';
8
+ /** @internal */
9
+ function renderStandardSliceSecretRuntimeFiles(name) {
10
+ const pascalName = name
11
+ .split('-')
12
+ .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)
13
+ .join('');
14
+ return {
15
+ 'secrets/workload-access.json': (0, built_in_plan_shared_js_1.json)({
16
+ bindings: [
17
+ {
18
+ logicalName: `${pascalName}PerformanceLoadHmacKeys`,
19
+ workload: `${name}.web-server`,
20
+ },
21
+ ],
22
+ schemaVersion: 1,
23
+ }),
24
+ 'scripts/validate-personal-secret.mjs': `import { readFile } from 'node:fs/promises';
25
+ import { Secrets } from '../secrets/declarations.ts';
26
+
27
+ const MAXIMUM_VALUE_BYTES = 64 * 1024;
28
+ const metadataUrl = new URL('../secrets/metadata.json', import.meta.url);
29
+
30
+ function isRecord(value) {
31
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
32
+ }
33
+
34
+ function hasOnlyProperties(value, allowed) {
35
+ return Object.keys(value).every((key) => allowed.includes(key));
36
+ }
37
+
38
+ function declarationProjection(declaration) {
39
+ if (
40
+ !isRecord(declaration) ||
41
+ !hasOnlyProperties(declaration, [
42
+ 'cache',
43
+ 'contractVersion',
44
+ 'logicalName',
45
+ 'owner',
46
+ 'requiredStages',
47
+ 'retention',
48
+ 'rotation',
49
+ 'source',
50
+ 'value',
51
+ ]) ||
52
+ declaration.contractVersion !== 1 ||
53
+ typeof declaration.logicalName !== 'string' ||
54
+ typeof declaration.owner !== 'string' ||
55
+ !Array.isArray(declaration.requiredStages) ||
56
+ declaration.requiredStages.some((stage) => typeof stage !== 'string') ||
57
+ !isRecord(declaration.rotation) ||
58
+ !['manual', 'provider-managed'].includes(declaration.rotation.mode) ||
59
+ !['aws-managed', 'database-bootstrap', 'operator'].includes(
60
+ declaration.source,
61
+ ) ||
62
+ !isRecord(declaration.value) ||
63
+ !hasOnlyProperties(declaration.value, ['kind', 'validate']) ||
64
+ !['binary', 'json', 'string'].includes(declaration.value.kind) ||
65
+ typeof declaration.value.validate !== 'function'
66
+ ) {
67
+ throw new Error('invalid');
68
+ }
69
+ return {
70
+ logicalName: declaration.logicalName,
71
+ owner: declaration.owner,
72
+ requiredStages: [...declaration.requiredStages],
73
+ rotation: { mode: declaration.rotation.mode },
74
+ source: declaration.source,
75
+ valueKind: declaration.value.kind,
76
+ };
77
+ }
78
+
79
+ function parseMetadata(value) {
80
+ if (
81
+ !isRecord(value) ||
82
+ !hasOnlyProperties(value, ['declarations', 'schemaVersion']) ||
83
+ value.schemaVersion !== 1 ||
84
+ !Array.isArray(value.declarations)
85
+ ) {
86
+ throw new Error('invalid');
87
+ }
88
+ const logicalNames = new Set();
89
+ const declarations = value.declarations.map((declaration) => {
90
+ if (
91
+ !isRecord(declaration) ||
92
+ !hasOnlyProperties(declaration, [
93
+ 'logicalName',
94
+ 'owner',
95
+ 'requiredStages',
96
+ 'rotation',
97
+ 'source',
98
+ 'valueKind',
99
+ ]) ||
100
+ typeof declaration.logicalName !== 'string' ||
101
+ typeof declaration.owner !== 'string' ||
102
+ !Array.isArray(declaration.requiredStages) ||
103
+ declaration.requiredStages.some(
104
+ (stage) => typeof stage !== 'string',
105
+ ) ||
106
+ !isRecord(declaration.rotation) ||
107
+ !hasOnlyProperties(declaration.rotation, ['mode']) ||
108
+ !['manual', 'provider-managed'].includes(declaration.rotation.mode) ||
109
+ !['aws-managed', 'database-bootstrap', 'operator'].includes(
110
+ declaration.source,
111
+ ) ||
112
+ !['binary', 'json', 'string'].includes(declaration.valueKind) ||
113
+ logicalNames.has(declaration.logicalName)
114
+ ) {
115
+ throw new Error('invalid');
116
+ }
117
+ logicalNames.add(declaration.logicalName);
118
+ return {
119
+ logicalName: declaration.logicalName,
120
+ owner: declaration.owner,
121
+ requiredStages: [...declaration.requiredStages],
122
+ rotation: { mode: declaration.rotation.mode },
123
+ source: declaration.source,
124
+ valueKind: declaration.valueKind,
125
+ };
126
+ });
127
+ return declarations.sort((left, right) =>
128
+ left.logicalName < right.logicalName
129
+ ? -1
130
+ : left.logicalName > right.logicalName
131
+ ? 1
132
+ : 0,
133
+ );
134
+ }
135
+
136
+ async function verifiedDeclarations() {
137
+ if (!isRecord(Secrets)) throw new Error('invalid');
138
+ const declarations = Object.entries(Secrets)
139
+ .map(([exportedName, declaration]) => {
140
+ const projection = declarationProjection(declaration);
141
+ if (exportedName !== projection.logicalName) throw new Error('invalid');
142
+ return projection;
143
+ })
144
+ .sort((left, right) =>
145
+ left.logicalName < right.logicalName
146
+ ? -1
147
+ : left.logicalName > right.logicalName
148
+ ? 1
149
+ : 0,
150
+ );
151
+ const metadata = parseMetadata(
152
+ JSON.parse(await readFile(metadataUrl, 'utf8')),
153
+ );
154
+ if (JSON.stringify(declarations) !== JSON.stringify(metadata)) {
155
+ throw new Error('invalid');
156
+ }
157
+ return new Map(
158
+ Object.values(Secrets).map((declaration) => [
159
+ declaration.logicalName,
160
+ declaration,
161
+ ]),
162
+ );
163
+ }
164
+
165
+ async function readHiddenInput() {
166
+ const chunks = [];
167
+ let size = 0;
168
+ try {
169
+ for await (const chunk of process.stdin) {
170
+ const bytes = Buffer.from(chunk);
171
+ size += bytes.byteLength;
172
+ if (size > MAXIMUM_VALUE_BYTES) {
173
+ bytes.fill(0);
174
+ throw new Error('invalid');
175
+ }
176
+ chunks.push(bytes);
177
+ }
178
+ return Buffer.concat(chunks, size);
179
+ } finally {
180
+ for (const chunk of chunks) chunk.fill(0);
181
+ }
182
+ }
183
+
184
+ async function validateHiddenValue(declarations, logicalName, valueKind) {
185
+ const declaration = declarations.get(logicalName);
186
+ if (
187
+ !declaration ||
188
+ declaration.source !== 'operator' ||
189
+ !declaration.requiredStages.includes('development') ||
190
+ declaration.value.kind !== valueKind
191
+ ) {
192
+ return false;
193
+ }
194
+ const bytes = await readHiddenInput();
195
+ try {
196
+ const payload =
197
+ valueKind === 'binary'
198
+ ? { secretBinary: Uint8Array.from(bytes) }
199
+ : {
200
+ secretString: new TextDecoder('utf-8', { fatal: true }).decode(
201
+ bytes,
202
+ ),
203
+ };
204
+ try {
205
+ return declaration.value.validate(payload).valid === true;
206
+ } catch {
207
+ return false;
208
+ } finally {
209
+ payload.secretBinary?.fill(0);
210
+ }
211
+ } finally {
212
+ bytes.fill(0);
213
+ }
214
+ }
215
+
216
+ async function main() {
217
+ const declarations = await verifiedDeclarations();
218
+ if (process.argv.length === 3 && process.argv[2] === '--verify') {
219
+ return true;
220
+ }
221
+ if (
222
+ process.argv.length !== 4 ||
223
+ !['binary', 'json', 'string'].includes(process.argv[3])
224
+ ) {
225
+ return false;
226
+ }
227
+ return validateHiddenValue(declarations, process.argv[2], process.argv[3]);
228
+ }
229
+
230
+ try {
231
+ process.stdout.write((await main()) ? 'valid\\n' : 'invalid\\n');
232
+ } catch {
233
+ process.stdout.write('invalid\\n');
234
+ }
235
+ `,
236
+ 'scripts/remove-personal-secrets.mjs': `import {
237
+ acquirePersonalSecretLedgerLock,
238
+ assertPersonalSecretLedgerLocation,
239
+ readPersonalSecretLedger,
240
+ releasePersonalSecretLedgerLock,
241
+ writePersonalSecretLedger,
242
+ } from '@empire-builder-kit/nx/local-dev';
243
+ import {
244
+ createPersonalSecretLedgerRecord,
245
+ isExactSstSecretAlreadyAbsent,
246
+ } from '@empire-builder-kit/nx/secrets';
247
+ import { execFile } from 'node:child_process';
248
+ import { readFile, realpath } from 'node:fs/promises';
249
+ import { dirname, isAbsolute, relative, resolve } from 'node:path';
250
+ import { fileURLToPath } from 'node:url';
251
+ import { promisify } from 'node:util';
252
+ import { Secrets } from '../secrets/declarations.ts';
253
+
254
+ const execFileAsync = promisify(execFile);
255
+ const EXPECTED_SST_VERSION = '${tool_versions_js_1.WORKSPACE_SST_VERSION}';
256
+ const FOUNDATION_EVENT_BUS_PARAMETER = '${(0, discovery_js_1.foundationSsmPath)('development', 'eventBusArn')}';
257
+ const personalStagePattern = /${personalStagePattern}/;
258
+ const profilePattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
259
+ const regionPattern = /^[a-z]{2}(?:-gov)?-[a-z]+-\\d$/;
260
+
261
+ function containedPath(root, candidate) {
262
+ const path = relative(root, candidate);
263
+ return path === '' || (!path.startsWith('..') && !isAbsolute(path));
264
+ }
265
+
266
+ function childEnvironment(profile, region) {
267
+ const environment = {};
268
+ for (const name of [
269
+ 'APPDATA',
270
+ 'AWS_CA_BUNDLE',
271
+ 'AWS_CONFIG_FILE',
272
+ 'AWS_SHARED_CREDENTIALS_FILE',
273
+ 'HOME',
274
+ 'LOCALAPPDATA',
275
+ 'PATH',
276
+ 'PATHEXT',
277
+ 'SystemRoot',
278
+ 'TEMP',
279
+ 'TMP',
280
+ 'TMPDIR',
281
+ 'USERPROFILE',
282
+ 'XDG_CONFIG_HOME',
283
+ ]) {
284
+ if (process.env[name]) environment[name] = process.env[name];
285
+ }
286
+ return {
287
+ ...environment,
288
+ AWS_DEFAULT_REGION: region,
289
+ AWS_EC2_METADATA_DISABLED: 'true',
290
+ AWS_PROFILE: profile,
291
+ AWS_REGION: region,
292
+ AWS_SDK_LOAD_CONFIG: '1',
293
+ EBK_CONSUMER_STAGE: process.env.EBK_STAGE,
294
+ EBK_FOUNDATION_STAGE: 'development',
295
+ EBK_STAGE: process.env.EBK_STAGE,
296
+ SST_TELEMETRY_DISABLED: '1',
297
+ };
298
+ }
299
+
300
+ async function requiredAwsContext(environment, profile, region) {
301
+ const common = [
302
+ '--profile',
303
+ profile,
304
+ '--region',
305
+ region,
306
+ '--output',
307
+ 'text',
308
+ '--no-cli-pager',
309
+ ];
310
+ const runAws = (arguments_) => {
311
+ const executable =
312
+ process.platform === 'win32'
313
+ ? process.env.ComSpec ?? 'cmd.exe'
314
+ : 'aws';
315
+ const childArguments =
316
+ process.platform === 'win32'
317
+ ? ['/d', '/s', '/c', ['aws', ...arguments_].join(' ')]
318
+ : arguments_;
319
+ return execFileAsync(executable, childArguments, {
320
+ encoding: 'utf8',
321
+ env: environment,
322
+ maxBuffer: 4096,
323
+ timeout: 15_000,
324
+ windowsHide: true,
325
+ });
326
+ };
327
+ const [identity, eventBus] = await Promise.all([
328
+ runAws(['sts', 'get-caller-identity', '--query', 'Account', ...common]),
329
+ runAws(
330
+ [
331
+ 'ssm',
332
+ 'get-parameter',
333
+ '--name',
334
+ FOUNDATION_EVENT_BUS_PARAMETER,
335
+ '--query',
336
+ 'Parameter.Value',
337
+ ...common,
338
+ ],
339
+ ),
340
+ ]);
341
+ const accountId = identity.stdout.trim();
342
+ const eventBusArn = eventBus.stdout.trim();
343
+ const match =
344
+ /^arn:(?:aws|aws-us-gov|aws-cn):events:([a-z0-9-]+):(\\d{12}):event-bus\\/[A-Za-z0-9._/-]+$/.exec(
345
+ eventBusArn,
346
+ );
347
+ if (
348
+ !/^\\d{12}$/.test(accountId) ||
349
+ !match ||
350
+ match[1] !== region ||
351
+ match[2] !== accountId
352
+ ) {
353
+ throw new Error(
354
+ 'Personal secret cleanup could not prove the development Foundation account.',
355
+ );
356
+ }
357
+ return accountId;
358
+ }
359
+
360
+ async function workspaceSstRuntime(workspaceRoot) {
361
+ const workspaceManifest = JSON.parse(
362
+ await readFile(resolve(workspaceRoot, 'package.json'), 'utf8'),
363
+ );
364
+ const declared =
365
+ workspaceManifest.devDependencies?.sst ??
366
+ workspaceManifest.dependencies?.sst;
367
+ if (declared !== EXPECTED_SST_VERSION) {
368
+ throw new Error('The workspace SST runtime is not exact-pinned.');
369
+ }
370
+ const packageManifestPath = await realpath(
371
+ resolve(workspaceRoot, 'node_modules/sst/package.json'),
372
+ );
373
+ const packageRoot = await realpath(dirname(packageManifestPath));
374
+ const packageManifest = JSON.parse(
375
+ await readFile(packageManifestPath, 'utf8'),
376
+ );
377
+ const binary = await realpath(resolve(packageRoot, 'bin/sst.mjs'));
378
+ if (
379
+ packageManifest.version !== EXPECTED_SST_VERSION ||
380
+ !containedPath(packageRoot, binary)
381
+ ) {
382
+ throw new Error('The installed SST runtime differs from the workspace pin.');
383
+ }
384
+ return binary;
385
+ }
386
+
387
+ async function verifyDeclarations(projectRoot, environment) {
388
+ const validator = await realpath(
389
+ resolve(projectRoot, 'scripts/validate-personal-secret.mjs'),
390
+ );
391
+ if (!containedPath(projectRoot, validator)) {
392
+ throw new Error('Personal secret validator escaped its Product Slice.');
393
+ }
394
+ const result = await execFileAsync(
395
+ process.execPath,
396
+ [
397
+ '--no-warnings',
398
+ '--experimental-strip-types',
399
+ validator,
400
+ '--verify',
401
+ ],
402
+ {
403
+ cwd: projectRoot,
404
+ encoding: 'utf8',
405
+ env: environment,
406
+ maxBuffer: 32,
407
+ timeout: 10_000,
408
+ windowsHide: true,
409
+ },
410
+ );
411
+ if (result.stdout !== 'valid\\n' || result.stderr !== '') {
412
+ throw new Error('Personal secret declarations are not verified.');
413
+ }
414
+ }
415
+
416
+ async function removeSecret(binary, projectRoot, environment, profile, stage, logicalName) {
417
+ try {
418
+ await execFileAsync(
419
+ process.execPath,
420
+ [
421
+ binary,
422
+ 'secret',
423
+ 'remove',
424
+ logicalName,
425
+ '--stage',
426
+ stage,
427
+ '--profile',
428
+ profile,
429
+ ],
430
+ {
431
+ cwd: projectRoot,
432
+ encoding: 'utf8',
433
+ env: environment,
434
+ maxBuffer: 4096,
435
+ timeout: 60_000,
436
+ windowsHide: true,
437
+ },
438
+ );
439
+ } catch (error) {
440
+ const output =
441
+ error &&
442
+ typeof error === 'object' &&
443
+ 'stdout' in error &&
444
+ 'stderr' in error &&
445
+ typeof error.stdout === 'string' &&
446
+ typeof error.stderr === 'string'
447
+ ? error.stdout + '\\n' + error.stderr
448
+ : '';
449
+ if (isExactSstSecretAlreadyAbsent(output, logicalName)) return;
450
+ throw new Error('Personal SST secret removal failed.');
451
+ }
452
+ }
453
+
454
+ async function main() {
455
+ if (process.argv.length !== 2) {
456
+ throw new Error('Personal secret cleanup accepts no arguments.');
457
+ }
458
+ const stage = process.env.EBK_STAGE ?? '';
459
+ const profile = process.env.AWS_PROFILE ?? '';
460
+ const region = process.env.AWS_REGION ?? '';
461
+ const appData = process.env.EBK_LOCAL_DEV_APP_DATA ?? '';
462
+ const ledgerPath =
463
+ process.env.EBK_PERSONAL_SECRET_LEDGER_PATH ?? '';
464
+ if (
465
+ !personalStagePattern.test(stage) ||
466
+ !profilePattern.test(profile) ||
467
+ !regionPattern.test(region) ||
468
+ process.env.EBK_CONSUMER_STAGE !== stage ||
469
+ process.env.EBK_FOUNDATION_STAGE !== 'development'
470
+ ) {
471
+ throw new Error(
472
+ 'Personal secret cleanup requires the Fleet-derived stage, profile, and Region.',
473
+ );
474
+ }
475
+ const projectRoot = await realpath(
476
+ resolve(dirname(fileURLToPath(import.meta.url)), '..'),
477
+ );
478
+ const workspaceRoot = await realpath(resolve(projectRoot, '../..'));
479
+ if (!containedPath(workspaceRoot, projectRoot)) {
480
+ throw new Error('Product Slice escaped its workspace.');
481
+ }
482
+ assertPersonalSecretLedgerLocation({
483
+ appData,
484
+ path: ledgerPath,
485
+ slice: '${name}',
486
+ stage,
487
+ });
488
+ const environment = childEnvironment(profile, region);
489
+ await verifyDeclarations(projectRoot, environment);
490
+ const binary = await workspaceSstRuntime(workspaceRoot);
491
+ const accountId = await requiredAwsContext(environment, profile, region);
492
+ const identity = {
493
+ accountId,
494
+ region,
495
+ slice: '${name}',
496
+ sstApp: '${name}',
497
+ stage,
498
+ };
499
+ const ledgerLock = acquirePersonalSecretLedgerLock({
500
+ appData,
501
+ slice: '${name}',
502
+ stage,
503
+ });
504
+ try {
505
+ const ledger = readPersonalSecretLedger({
506
+ appData,
507
+ expectedIdentity: identity,
508
+ slice: '${name}',
509
+ stage,
510
+ });
511
+ const declaredLogicalNames = Object.values(Secrets)
512
+ .filter(
513
+ (declaration) =>
514
+ declaration.source === 'operator' &&
515
+ declaration.requiredStages.includes('development'),
516
+ )
517
+ .map((declaration) => declaration.logicalName)
518
+ .sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
519
+ const logicalNames = [
520
+ ...new Set([
521
+ ...declaredLogicalNames,
522
+ ...(ledger?.logicalNames ?? []),
523
+ ]),
524
+ ].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
525
+ createPersonalSecretLedgerRecord(identity, logicalNames);
526
+ const failures = [];
527
+ for (const logicalName of logicalNames) {
528
+ try {
529
+ await removeSecret(
530
+ binary,
531
+ projectRoot,
532
+ environment,
533
+ profile,
534
+ stage,
535
+ logicalName,
536
+ );
537
+ } catch {
538
+ failures.push(logicalName);
539
+ }
540
+ }
541
+ try {
542
+ writePersonalSecretLedger({
543
+ appData,
544
+ lock: ledgerLock,
545
+ record: createPersonalSecretLedgerRecord(identity, failures),
546
+ });
547
+ } catch {
548
+ throw new Error(
549
+ 'Personal secret cleanup could not reconcile its machine-private ledger. Retain the Slice claim and retry ebk dev down.',
550
+ );
551
+ }
552
+ if (failures.length > 0) {
553
+ throw new Error(
554
+ 'Personal secret cleanup retained failed logical name(s): ' +
555
+ failures.join(', ') +
556
+ '. Retry ebk dev down with the recorded account and Region.',
557
+ );
558
+ }
559
+ } finally {
560
+ releasePersonalSecretLedgerLock(ledgerLock);
561
+ }
562
+ }
563
+
564
+ await main();
565
+ `,
566
+ 'secrets/runtime.ts': `import {
567
+ bindServerSecretRuntime,
568
+ createAwsSecretsManagerSource,
569
+ createLinkedPersonalSstSecretSource,
570
+ createPersonalSstSecretResolver,
571
+ createServerSecretResolver,
572
+ personalSstSecretReference,
573
+ type DefinedSecret,
574
+ type SecretReference,
575
+ type SecretResolutionContext,
576
+ type SecretResolverHooks,
577
+ type SecretValueOf,
578
+ type SecretValueSchema,
579
+ } from '@empire-builder-kit/runtime/secrets';
580
+ import { Resource } from 'sst/resource';
581
+
582
+ const personalStagePattern = /${personalStagePattern}/;
583
+ const resources = Resource as unknown as Readonly<Record<string, unknown>>;
584
+
585
+ export interface StandardSliceSecretRuntimeOptions {
586
+ accountId?: string;
587
+ developmentAccountId?: string;
588
+ hooks?: SecretResolverHooks;
589
+ stage: string;
590
+ workload: string;
591
+ }
592
+
593
+ export interface StandardSliceSecretRuntime {
594
+ get<
595
+ Declaration extends DefinedSecret<
596
+ string,
597
+ SecretValueSchema<unknown>
598
+ >,
599
+ >(
600
+ declaration: Declaration,
601
+ context?: SecretResolutionContext,
602
+ ): Promise<SecretValueOf<Declaration>>;
603
+ runWithSecret<
604
+ Declaration extends DefinedSecret<
605
+ string,
606
+ SecretValueSchema<unknown>
607
+ >,
608
+ Result,
609
+ >(options: {
610
+ context?: SecretResolutionContext;
611
+ declaration: Declaration;
612
+ isAuthenticationFailure(error: unknown): boolean;
613
+ operation(value: SecretValueOf<Declaration>): Promise<Result>;
614
+ }): Promise<Result>;
615
+ }
616
+
617
+ function isRecord(value: unknown): value is Record<string, unknown> {
618
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
619
+ }
620
+
621
+ export function protectedReference(
622
+ declaration: DefinedSecret,
623
+ ): SecretReference {
624
+ const resource = resources[declaration.logicalName];
625
+ if (
626
+ !isRecord(resource) ||
627
+ Object.keys(resource).some(
628
+ (key) =>
629
+ key !== 'logicalName' &&
630
+ key !== 'provider' &&
631
+ key !== 'secretArn' &&
632
+ key !== 'type',
633
+ ) ||
634
+ resource.type !== 'sst.sst.Linkable' ||
635
+ resource.logicalName !== declaration.logicalName ||
636
+ resource.provider !== 'aws-secrets-manager' ||
637
+ typeof resource.secretArn !== 'string'
638
+ ) {
639
+ throw new Error(
640
+ 'The protected secret reference is absent or malformed.',
641
+ );
642
+ }
643
+ return Object.freeze({
644
+ logicalName: resource.logicalName,
645
+ provider: resource.provider,
646
+ secretArn: resource.secretArn,
647
+ });
648
+ }
649
+
650
+ export function createStandardSliceSecretRuntime(
651
+ options: StandardSliceSecretRuntimeOptions,
652
+ ): StandardSliceSecretRuntime {
653
+ const binding = bindServerSecretRuntime({
654
+ stage: options.stage,
655
+ workload: options.workload,
656
+ });
657
+ if (personalStagePattern.test(options.stage)) {
658
+ const resolver = createPersonalSstSecretResolver({
659
+ accountId: options.accountId ?? '',
660
+ binding,
661
+ developmentAccountId: options.developmentAccountId ?? '',
662
+ ...(options.hooks ? { hooks: options.hooks } : {}),
663
+ mode: 'sst-dev',
664
+ source: createLinkedPersonalSstSecretSource(resources),
665
+ stage: options.stage,
666
+ });
667
+ const runtime: StandardSliceSecretRuntime = {
668
+ get(declaration, context) {
669
+ return resolver.get(
670
+ declaration,
671
+ personalSstSecretReference(
672
+ declaration.logicalName,
673
+ options.stage,
674
+ ),
675
+ context,
676
+ );
677
+ },
678
+ runWithSecret(runtimeOptions) {
679
+ return resolver.runWithSecret({
680
+ ...runtimeOptions,
681
+ reference: personalSstSecretReference(
682
+ runtimeOptions.declaration.logicalName,
683
+ options.stage,
684
+ ),
685
+ });
686
+ },
687
+ };
688
+ return Object.freeze(runtime);
689
+ }
690
+
691
+ if (!['development', 'staging', 'production'].includes(options.stage)) {
692
+ throw new Error(
693
+ 'Secret runtime stage must be canonical or framework-personal.',
694
+ );
695
+ }
696
+ const resolver = createServerSecretResolver({
697
+ binding,
698
+ ...(options.hooks ? { hooks: options.hooks } : {}),
699
+ source: createAwsSecretsManagerSource(),
700
+ });
701
+ const runtime: StandardSliceSecretRuntime = {
702
+ get(declaration, context) {
703
+ return resolver.get(
704
+ declaration,
705
+ protectedReference(declaration),
706
+ context,
707
+ );
708
+ },
709
+ runWithSecret(runtimeOptions) {
710
+ return resolver.runWithSecret({
711
+ ...runtimeOptions,
712
+ reference: protectedReference(runtimeOptions.declaration),
713
+ });
714
+ },
715
+ };
716
+ return Object.freeze(runtime);
717
+ }
718
+ `,
719
+ 'infra/personal-secrets.ts': `import {
720
+ parseSecretMetadataRegistry,
721
+ parseSecretWorkloadAccessRegistry,
722
+ personalSecretNamesForWorkload,
723
+ type SecretWorkloadAccessPlanEntry,
724
+ } from '@empire-builder-kit/nx/secrets';
725
+ import secretMetadataDocument from '../secrets/metadata.json';
726
+ import secretWorkloadAccessDocument from '../secrets/workload-access.json';
727
+ import { createStandardSliceWorkloadRoleTopology } from './workload-roles/candidate.js';
728
+ import { standardSliceBoundOperatorSecretDeclarations } from './workload-roles/effective-intent.js';
729
+
730
+ const metadata = parseSecretMetadataRegistry(secretMetadataDocument);
731
+ const access = parseSecretWorkloadAccessRegistry(
732
+ secretWorkloadAccessDocument,
733
+ );
734
+ const personalStagePattern = /${personalStagePattern}/;
735
+ const workloadPrefix = '${name}.';
736
+
737
+ export interface StandardSliceSecretLinks {
738
+ linksForWorkload(
739
+ workload: string,
740
+ selection?: {
741
+ excludeLogicalNames?: readonly string[];
742
+ },
743
+ ): any[];
744
+ }
745
+
746
+ function excludedLogicalNames(
747
+ selection: {
748
+ excludeLogicalNames?: readonly string[];
749
+ } | undefined,
750
+ ): ReadonlySet<string> {
751
+ if (
752
+ selection !== undefined &&
753
+ (
754
+ !selection ||
755
+ typeof selection !== 'object' ||
756
+ Array.isArray(selection) ||
757
+ Object.keys(selection).some((key) => key !== 'excludeLogicalNames') ||
758
+ !Array.isArray(selection.excludeLogicalNames)
759
+ )
760
+ ) {
761
+ throw new Error('Secret link selection is invalid.');
762
+ }
763
+ const values = selection?.excludeLogicalNames ?? [];
764
+ if (
765
+ values.some(
766
+ (value) =>
767
+ typeof value !== 'string' ||
768
+ !/^[A-Za-z][A-Za-z0-9]{0,63}$/.test(value),
769
+ ) ||
770
+ new Set(values).size !== values.length
771
+ ) {
772
+ throw new Error('Secret link selection is invalid.');
773
+ }
774
+ return new Set(values);
775
+ }
776
+
777
+ function registeredLogicalNamesForWorkload(workload: string): ReadonlySet<string> {
778
+ return new Set(
779
+ access.bindings
780
+ .filter((binding) => binding.workload === workload)
781
+ .map(({ logicalName }) => logicalName),
782
+ );
783
+ }
784
+
785
+ function expectedBindingKeys(stage: string) {
786
+ if (
787
+ access.bindings.some(
788
+ ({ workload }) => !workload.startsWith(workloadPrefix),
789
+ )
790
+ ) {
791
+ throw new Error(
792
+ 'Secret access must target an exact workload in this Product Slice.',
793
+ );
794
+ }
795
+ const activeLogicalNames = new Set(
796
+ metadata.declarations
797
+ .filter((declaration) => declaration.requiredStages.includes(stage))
798
+ .map(({ logicalName }) => logicalName),
799
+ );
800
+ return new Set(
801
+ access.bindings
802
+ .filter(({ logicalName }) => activeLogicalNames.has(logicalName))
803
+ .map(
804
+ ({ logicalName, workload }) => workload + '\\0' + logicalName,
805
+ ),
806
+ );
807
+ }
808
+
809
+ function createProtectedLinks(
810
+ protectedAccess: readonly SecretWorkloadAccessPlanEntry[],
811
+ stage: string,
812
+ ) {
813
+ const expected = expectedBindingKeys(stage);
814
+ const observed = new Set<string>();
815
+ const linksByName = new Map<
816
+ string,
817
+ { arn: string; resource: any }
818
+ >();
819
+ const linksByWorkload = new Map<
820
+ string,
821
+ Array<{ logicalName: string; resource: any }>
822
+ >();
823
+
824
+ for (const entry of protectedAccess) {
825
+ if (
826
+ entry.workload !== entry.intent.workload ||
827
+ linksByWorkload.has(entry.workload) ||
828
+ entry.references.length !== entry.intent.links.length
829
+ ) {
830
+ throw new Error(
831
+ 'Protected secret access differs from the declared workload registry.',
832
+ );
833
+ }
834
+ const resources: Array<{ logicalName: string; resource: any }> = [];
835
+ for (const reference of entry.references) {
836
+ const bindingKey = entry.workload + '\\0' + reference.logicalName;
837
+ const link = entry.intent.links.find(
838
+ (candidate) =>
839
+ candidate.link.properties.logicalName === reference.logicalName,
840
+ );
841
+ if (
842
+ !expected.has(bindingKey) ||
843
+ observed.has(bindingKey) ||
844
+ reference.provider !== 'aws-secrets-manager' ||
845
+ !link ||
846
+ link.link.resourceName !== reference.logicalName ||
847
+ link.link.properties.provider !== 'aws-secrets-manager' ||
848
+ link.link.properties.secretArn !== reference.secretArn ||
849
+ link.permission.Effect !== 'Allow' ||
850
+ link.permission.Action.length !== 1 ||
851
+ link.permission.Action[0] !== 'secretsmanager:GetSecretValue' ||
852
+ link.permission.Resource.length !== 1 ||
853
+ link.permission.Resource[0] !== reference.secretArn
854
+ ) {
855
+ throw new Error(
856
+ 'Protected secret access differs from the declared workload registry.',
857
+ );
858
+ }
859
+ observed.add(bindingKey);
860
+ const existing = linksByName.get(reference.logicalName);
861
+ if (existing && existing.arn !== reference.secretArn) {
862
+ throw new Error(
863
+ 'A declared secret resolved to conflicting protected references.',
864
+ );
865
+ }
866
+ const resource =
867
+ existing?.resource ??
868
+ new sst.Linkable(reference.logicalName, {
869
+ properties: {
870
+ logicalName: reference.logicalName,
871
+ provider: 'aws-secrets-manager',
872
+ secretArn: reference.secretArn,
873
+ },
874
+ include: [
875
+ sst.aws.permission({
876
+ actions: ['secretsmanager:GetSecretValue'],
877
+ resources: [reference.secretArn],
878
+ }),
879
+ ],
880
+ });
881
+ linksByName.set(reference.logicalName, {
882
+ arn: reference.secretArn,
883
+ resource,
884
+ });
885
+ resources.push({ logicalName: reference.logicalName, resource });
886
+ }
887
+ linksByWorkload.set(entry.workload, resources);
888
+ }
889
+ if (
890
+ observed.size !== expected.size ||
891
+ [...expected].some((binding) => !observed.has(binding))
892
+ ) {
893
+ throw new Error(
894
+ 'Protected secret access differs from the declared workload registry.',
895
+ );
896
+ }
897
+ return linksByWorkload;
898
+ }
899
+
900
+ export function createStandardSliceSecretLinks(
901
+ input: {
902
+ protectedAccess?: readonly SecretWorkloadAccessPlanEntry[];
903
+ } = {},
904
+ ): StandardSliceSecretLinks {
905
+ if ($dev) {
906
+ if (
907
+ input.protectedAccess !== undefined ||
908
+ !personalStagePattern.test($app.stage)
909
+ ) {
910
+ throw new Error(
911
+ 'Personal SST secrets require the framework-derived personal stage.',
912
+ );
913
+ }
914
+ standardSliceBoundOperatorSecretDeclarations(
915
+ 'development',
916
+ createStandardSliceWorkloadRoleTopology('development'),
917
+ );
918
+ const resources = new Map(
919
+ metadata.declarations
920
+ .filter(
921
+ (declaration) =>
922
+ declaration.source === 'operator' &&
923
+ declaration.requiredStages.includes('development'),
924
+ )
925
+ .map(
926
+ ({ logicalName }) =>
927
+ [logicalName, new sst.Secret(logicalName)] as const,
928
+ ),
929
+ );
930
+ return {
931
+ linksForWorkload(
932
+ workload: string,
933
+ selection?: { excludeLogicalNames?: readonly string[] },
934
+ ) {
935
+ if (!workload.startsWith(workloadPrefix)) {
936
+ throw new Error(
937
+ 'Secret access must target an exact workload in this Product Slice.',
938
+ );
939
+ }
940
+ const logicalNames = personalSecretNamesForWorkload({
941
+ access,
942
+ declarations: metadata.declarations,
943
+ stage: 'development',
944
+ workload,
945
+ });
946
+ const excluded = excludedLogicalNames(selection);
947
+ const registered = registeredLogicalNamesForWorkload(workload);
948
+ if ([...excluded].some((logicalName) => !registered.has(logicalName))) {
949
+ throw new Error('Secret link selection is outside the workload registry.');
950
+ }
951
+ return logicalNames
952
+ .filter((logicalName) => !excluded.has(logicalName))
953
+ .map((logicalName) => {
954
+ const resource = resources.get(logicalName);
955
+ if (!resource) {
956
+ throw new Error(
957
+ 'Personal secret access differs from the declared workload registry.',
958
+ );
959
+ }
960
+ return resource;
961
+ });
962
+ },
963
+ };
964
+ }
965
+
966
+ if (personalStagePattern.test($app.stage)) {
967
+ throw new Error(
968
+ 'A personal stage may run only under the SST development adapter.',
969
+ );
970
+ }
971
+ const linksByWorkload = createProtectedLinks(
972
+ input.protectedAccess ?? [],
973
+ $app.stage,
974
+ );
975
+ return {
976
+ linksForWorkload(
977
+ workload: string,
978
+ selection?: { excludeLogicalNames?: readonly string[] },
979
+ ) {
980
+ if (!workload.startsWith(workloadPrefix)) {
981
+ throw new Error(
982
+ 'Secret access must target an exact workload in this Product Slice.',
983
+ );
984
+ }
985
+ const assigned = linksByWorkload.get(workload) ?? [];
986
+ const excluded = excludedLogicalNames(selection);
987
+ const registered = registeredLogicalNamesForWorkload(workload);
988
+ if (
989
+ [...excluded].some(
990
+ (logicalName) => !registered.has(logicalName),
991
+ )
992
+ ) {
993
+ throw new Error('Secret link selection is outside the workload registry.');
994
+ }
995
+ return assigned
996
+ .filter(({ logicalName }) => !excluded.has(logicalName))
997
+ .map(({ resource }) => resource);
998
+ },
999
+ };
1000
+ }
1001
+ `,
1002
+ };
1003
+ }
1004
+ //# sourceMappingURL=built-in-plan-secret-runtime-files.js.map