@empire-builder-kit/nx 1.0.0-rc.30 → 1.0.0-rc.32

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 (310) hide show
  1. package/executors.json +8 -3
  2. package/package.json +14 -7
  3. package/src/aws/child-environment.d.ts +10 -0
  4. package/src/aws/child-environment.js +77 -0
  5. package/src/aws/child-environment.js.map +1 -0
  6. package/src/aws/identity.d.ts +13 -0
  7. package/src/aws/identity.js +41 -0
  8. package/src/aws/identity.js.map +1 -0
  9. package/src/aws-authority/index.d.ts +1 -0
  10. package/src/aws-authority/index.js +5 -0
  11. package/src/aws-authority/index.js.map +1 -0
  12. package/src/aws-authority/stage-authority.d.ts +240 -0
  13. package/src/aws-authority/stage-authority.js +2968 -0
  14. package/src/aws-authority/stage-authority.js.map +1 -0
  15. package/src/cli/main.d.ts +2 -0
  16. package/src/cli/main.js +11 -0
  17. package/src/cli/main.js.map +1 -1
  18. package/src/developer-agent/generator-planning.js +4 -4
  19. package/src/developer-agent/generator-planning.js.map +1 -1
  20. package/src/developer-agent/operation-registry.js +14 -6
  21. package/src/developer-agent/operation-registry.js.map +1 -1
  22. package/src/developer-agent/workspace-inspection.js +11 -2
  23. package/src/developer-agent/workspace-inspection.js.map +1 -1
  24. package/src/executors/deployment-plan/deployment-plan.js +1 -1
  25. package/src/executors/deployment-plan/deployment-plan.js.map +1 -1
  26. package/src/executors/foundation-preflight/foundation-preflight.d.ts +0 -1
  27. package/src/executors/foundation-preflight/foundation-preflight.js.map +1 -1
  28. package/src/executors/foundation-preflight/schema.json +0 -5
  29. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +12 -3
  30. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -32
  31. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +1 -1
  32. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +64 -0
  33. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +221 -0
  34. package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +1 -0
  35. package/src/executors/foundation-profile-preflight/schema.json +1 -6
  36. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  37. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +44 -21
  38. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +1 -1
  39. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  40. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  41. package/src/executors/github-bootstrap/github-bootstrap.js +1 -0
  42. package/src/executors/github-bootstrap/github-bootstrap.js.map +1 -1
  43. package/src/executors/github-bootstrap/schema.json +7 -1
  44. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +27 -369
  45. package/src/executors/infrastructure-plan/infrastructure-plan.js +237 -5470
  46. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +1 -1
  47. package/src/executors/infrastructure-plan/schema.json +8 -64
  48. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  49. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  50. package/src/executors/local-deploy/federated-credential-transport.js.map +1 -0
  51. package/src/executors/local-deploy/local-approval.d.ts +4 -9
  52. package/src/executors/local-deploy/local-approval.js +3 -7
  53. package/src/executors/local-deploy/local-approval.js.map +1 -1
  54. package/src/executors/local-deploy/local-deploy.d.ts +60 -43
  55. package/src/executors/local-deploy/local-deploy.js +955 -804
  56. package/src/executors/local-deploy/local-deploy.js.map +1 -1
  57. package/src/executors/local-deploy/schema.json +3 -20
  58. package/src/executors/refresh/refresh.js +2 -2
  59. package/src/executors/refresh/refresh.js.map +1 -1
  60. package/src/executors/remove/remove.js +2 -2
  61. package/src/executors/remove/remove.js.map +1 -1
  62. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +27 -1
  63. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +907 -22
  64. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +1 -1
  65. package/src/executors/router-waf-rehearsal/schema.json +17 -2
  66. package/src/executors/secret-initialize/schema.json +42 -0
  67. package/src/executors/secret-initialize/secret-initialize.d.ts +32 -0
  68. package/src/executors/secret-initialize/secret-initialize.js +243 -0
  69. package/src/executors/secret-initialize/secret-initialize.js.map +1 -0
  70. package/src/executors/secret-metadata/secret-metadata.d.ts +4 -1
  71. package/src/executors/secret-metadata/secret-metadata.js +76 -29
  72. package/src/executors/secret-metadata/secret-metadata.js.map +1 -1
  73. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  74. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  75. package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +1 -0
  76. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +46 -0
  77. package/src/executors/sst-lifecycle/governed-native-operation.js +153 -0
  78. package/src/executors/sst-lifecycle/governed-native-operation.js.map +1 -0
  79. package/src/executors/sst-lifecycle/run-sst-command.d.ts +27 -7
  80. package/src/executors/sst-lifecycle/run-sst-command.js +474 -89
  81. package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
  82. package/src/executors/sst-lifecycle/schema.json +0 -5
  83. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  84. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  85. package/src/executors/sst-lifecycle/secret-preflight.js.map +1 -1
  86. package/src/executors/unlock/unlock.js +2 -2
  87. package/src/executors/unlock/unlock.js.map +1 -1
  88. package/src/foundation/provision-logical-database.js +2 -0
  89. package/src/foundation/provision-logical-database.js.map +1 -1
  90. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  91. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  92. package/src/foundation/router-waf-rate-rehearsal.js.map +1 -0
  93. package/src/foundation/router-waf.d.ts +59 -9
  94. package/src/foundation/router-waf.js +427 -32
  95. package/src/foundation/router-waf.js.map +1 -1
  96. package/src/foundation/stages.d.ts +1 -0
  97. package/src/foundation/stages.js +11 -0
  98. package/src/foundation/stages.js.map +1 -1
  99. package/src/generators/formatting.d.ts +8 -0
  100. package/src/generators/formatting.js +118 -0
  101. package/src/generators/formatting.js.map +1 -0
  102. package/src/generators/function/function.js +37 -17
  103. package/src/generators/function/function.js.map +1 -1
  104. package/src/generators/post-generation-install.js +2 -2
  105. package/src/generators/post-generation-install.js.map +1 -1
  106. package/src/generators/preset/generator.js +28 -8
  107. package/src/generators/preset/generator.js.map +1 -1
  108. package/src/generators/preset/schema.d.ts +3 -0
  109. package/src/generators/preset/schema.json +5 -5
  110. package/src/generators/preset/workspace-files-developer-agent.js +15 -7
  111. package/src/generators/preset/workspace-files-developer-agent.js.map +1 -1
  112. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  113. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  114. package/src/generators/preset/workspace-files-ecr-inspector.js.map +1 -0
  115. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  116. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  117. package/src/generators/preset/workspace-files-performance-cost.js.map +1 -1
  118. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  119. package/src/generators/preset/workspace-files-performance-load.js +29 -24
  120. package/src/generators/preset/workspace-files-performance-load.js.map +1 -1
  121. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  122. package/src/generators/preset/workspace-files-stage-authority.js +479 -0
  123. package/src/generators/preset/workspace-files-stage-authority.js.map +1 -0
  124. package/src/generators/preset/workspace-files-thin-deploy.d.ts +40 -0
  125. package/src/generators/preset/workspace-files-thin-deploy.js +1500 -0
  126. package/src/generators/preset/workspace-files-thin-deploy.js.map +1 -0
  127. package/src/generators/preset/workspace-files-thin-docs.d.ts +5 -0
  128. package/src/generators/preset/workspace-files-thin-docs.js +240 -0
  129. package/src/generators/preset/workspace-files-thin-docs.js.map +1 -0
  130. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  131. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  132. package/src/generators/preset/workspace-files-thin-release.js.map +1 -0
  133. package/src/generators/preset/workspace-files.d.ts +2 -1
  134. package/src/generators/preset/workspace-files.js +448 -680
  135. package/src/generators/preset/workspace-files.js.map +1 -1
  136. package/src/generators/repository-policy/repository-policy.js +149 -19
  137. package/src/generators/repository-policy/repository-policy.js.map +1 -1
  138. package/src/generators/repository-policy/schema.d.ts +2 -0
  139. package/src/generators/repository-policy/schema.json +11 -1
  140. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  141. package/src/generators/repository-policy/tree-policy.js +25 -0
  142. package/src/generators/repository-policy/tree-policy.js.map +1 -0
  143. package/src/generators/slice/built-in-plan-api-files.js +1 -0
  144. package/src/generators/slice/built-in-plan-api-files.js.map +1 -1
  145. package/src/generators/slice/built-in-plan-async-work-files.js +41 -0
  146. package/src/generators/slice/built-in-plan-async-work-files.js.map +1 -1
  147. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +6 -0
  148. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +1 -1
  149. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  150. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +1 -1
  151. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  152. package/src/generators/slice/built-in-plan-data-files.js +89 -30
  153. package/src/generators/slice/built-in-plan-data-files.js.map +1 -1
  154. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +19 -0
  155. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +1 -1
  156. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +21 -3
  157. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +1 -1
  158. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
  159. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +1 -1
  160. package/src/generators/slice/built-in-plan-foundation-files.js +3 -5
  161. package/src/generators/slice/built-in-plan-foundation-files.js.map +1 -1
  162. package/src/generators/slice/built-in-plan-frontend-files.js +5 -1
  163. package/src/generators/slice/built-in-plan-frontend-files.js.map +1 -1
  164. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  165. package/src/generators/slice/built-in-plan-infrastructure-files.js +199 -188
  166. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +1 -1
  167. package/src/generators/slice/built-in-plan-metadata-files.js +13 -0
  168. package/src/generators/slice/built-in-plan-metadata-files.js.map +1 -1
  169. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  170. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +307 -0
  171. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +1 -0
  172. package/src/generators/slice/built-in-plan-operations-files.js +65 -51
  173. package/src/generators/slice/built-in-plan-operations-files.js.map +1 -1
  174. package/src/generators/slice/built-in-plan-performance-files.js +97 -19
  175. package/src/generators/slice/built-in-plan-performance-files.js.map +1 -1
  176. package/src/generators/slice/built-in-plan-project-files.js +9 -68
  177. package/src/generators/slice/built-in-plan-project-files.js.map +1 -1
  178. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  179. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  180. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +1 -1
  181. package/src/generators/slice/built-in-plan-testing-files.js +94 -47
  182. package/src/generators/slice/built-in-plan-testing-files.js.map +1 -1
  183. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  184. package/src/generators/slice/built-in-plan-thin-release-files.js +129 -0
  185. package/src/generators/slice/built-in-plan-thin-release-files.js.map +1 -0
  186. package/src/generators/slice/built-in-plan-verification-files.js +6 -2
  187. package/src/generators/slice/built-in-plan-verification-files.js.map +1 -1
  188. package/src/generators/slice/built-in-plan-web-files.js +4 -2
  189. package/src/generators/slice/built-in-plan-web-files.js.map +1 -1
  190. package/src/generators/slice/built-in-plan-workload-role-files.js +26 -4
  191. package/src/generators/slice/built-in-plan-workload-role-files.js.map +1 -1
  192. package/src/generators/slice/built-in-plan.d.ts +1 -0
  193. package/src/generators/slice/built-in-plan.js +28 -11
  194. package/src/generators/slice/built-in-plan.js.map +1 -1
  195. package/src/generators/slice/slice.js +30 -32
  196. package/src/generators/slice/slice.js.map +1 -1
  197. package/src/generators/upgrade/upgrade.d.ts +1 -1
  198. package/src/generators/upgrade/upgrade.js +200 -48
  199. package/src/generators/upgrade/upgrade.js.map +1 -1
  200. package/src/generators/workload/performance-registration.d.ts +1 -0
  201. package/src/generators/workload/performance-registration.js +9 -11
  202. package/src/generators/workload/performance-registration.js.map +1 -1
  203. package/src/generators/workload/service-performance-files.d.ts +1 -0
  204. package/src/generators/workload/service-performance-files.js +27 -7
  205. package/src/generators/workload/service-performance-files.js.map +1 -1
  206. package/src/generators/workload/workload.d.ts +1 -1
  207. package/src/generators/workload/workload.js +55 -28
  208. package/src/generators/workload/workload.js.map +1 -1
  209. package/src/git-policy/github-bootstrap.d.ts +28 -7
  210. package/src/git-policy/github-bootstrap.js +205 -163
  211. package/src/git-policy/github-bootstrap.js.map +1 -1
  212. package/src/index.d.ts +1 -0
  213. package/src/index.js +1 -0
  214. package/src/index.js.map +1 -1
  215. package/src/local-dev/private-state.d.ts +3 -0
  216. package/src/local-dev/private-state.js +17 -5
  217. package/src/local-dev/private-state.js.map +1 -1
  218. package/src/local-dev/tls.js +5 -1
  219. package/src/local-dev/tls.js.map +1 -1
  220. package/src/performance/cost-collection.d.ts +1 -1
  221. package/src/performance/cost-collection.js +4 -2
  222. package/src/performance/cost-collection.js.map +1 -1
  223. package/src/performance/cost-controls.d.ts +3 -1
  224. package/src/performance/cost-controls.js +9 -4
  225. package/src/performance/cost-controls.js.map +1 -1
  226. package/src/performance/evidence.d.ts +1 -1
  227. package/src/performance/evidence.js +5 -3
  228. package/src/performance/evidence.js.map +1 -1
  229. package/src/performance/load-safety.js +5 -3
  230. package/src/performance/load-safety.js.map +1 -1
  231. package/src/performance/model.d.ts +2 -2
  232. package/src/performance/model.js +4 -3
  233. package/src/performance/model.js.map +1 -1
  234. package/src/release/index.d.ts +0 -2
  235. package/src/release/index.js +0 -2
  236. package/src/release/index.js.map +1 -1
  237. package/src/release/source-authority.d.ts +4 -5
  238. package/src/release/source-authority.js +13 -123
  239. package/src/release/source-authority.js.map +1 -1
  240. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  241. package/src/repository-policy/aurora-preflight.js +4 -1
  242. package/src/repository-policy/aurora-preflight.js.map +1 -1
  243. package/src/repository-policy/policy.d.ts +21 -2
  244. package/src/repository-policy/policy.js +290 -25
  245. package/src/repository-policy/policy.js.map +1 -1
  246. package/src/schemas/performance-policy-v1.json +3 -1
  247. package/src/schemas/repository-policy-v1.json +46 -2
  248. package/src/secrets/adapters.d.ts +7 -2
  249. package/src/secrets/adapters.js +34 -3
  250. package/src/secrets/adapters.js.map +1 -1
  251. package/src/secrets/aws-control-plane.d.ts +10 -1
  252. package/src/secrets/aws-control-plane.js +67 -0
  253. package/src/secrets/aws-control-plane.js.map +1 -1
  254. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  255. package/src/secrets/generated-aws-control-plane.js +259 -0
  256. package/src/secrets/generated-aws-control-plane.js.map +1 -0
  257. package/src/secrets/metadata.js +38 -10
  258. package/src/secrets/metadata.js.map +1 -1
  259. package/src/secrets/model.d.ts +8 -1
  260. package/src/secrets/model.js +24 -3
  261. package/src/secrets/model.js.map +1 -1
  262. package/src/secrets/operator.d.ts +89 -3
  263. package/src/secrets/operator.js +422 -9
  264. package/src/secrets/operator.js.map +1 -1
  265. package/src/secrets/registry.d.ts +2 -1
  266. package/src/secrets/registry.js +18 -1
  267. package/src/secrets/registry.js.map +1 -1
  268. package/src/secrets/workload-access.js +10 -2
  269. package/src/secrets/workload-access.js.map +1 -1
  270. package/src/supply-chain/action-pins.js +61 -7
  271. package/src/supply-chain/action-pins.js.map +1 -1
  272. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  273. package/src/supply-chain/build-output-bounds.js +12 -0
  274. package/src/supply-chain/build-output-bounds.js.map +1 -0
  275. package/src/supply-chain/build-output.js +2 -4
  276. package/src/supply-chain/build-output.js.map +1 -1
  277. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  278. package/src/supply-chain/ecr-scanning.js +11 -7
  279. package/src/supply-chain/ecr-scanning.js.map +1 -1
  280. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  281. package/src/supply-chain/ecs-deployed-image.js +6 -4
  282. package/src/supply-chain/ecs-deployed-image.js.map +1 -1
  283. package/src/supply-chain/generated-container-release-command.js +849 -44
  284. package/src/supply-chain/generated-container-release-command.js.map +1 -1
  285. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  286. package/src/supply-chain/generated-ecr-collector-command.js +188 -91
  287. package/src/supply-chain/generated-ecr-collector-command.js.map +1 -1
  288. package/src/supply-chain/generated-files.js +4 -3
  289. package/src/supply-chain/generated-files.js.map +1 -1
  290. package/src/supply-chain/index.d.ts +1 -1
  291. package/src/supply-chain/index.js +2 -1
  292. package/src/supply-chain/index.js.map +1 -1
  293. package/src/workload-roles/index.d.ts +10 -17
  294. package/src/workload-roles/index.js +5 -18
  295. package/src/workload-roles/index.js.map +1 -1
  296. package/src/workspace-deployment/identity.d.ts +3 -0
  297. package/src/workspace-deployment/identity.js +22 -0
  298. package/src/workspace-deployment/identity.js.map +1 -0
  299. package/src/workspace-deployment/index.d.ts +3 -0
  300. package/src/workspace-deployment/index.js +7 -0
  301. package/src/workspace-deployment/index.js.map +1 -0
  302. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  303. package/src/workspace-deployment/migration-evidence.js +83 -0
  304. package/src/workspace-deployment/migration-evidence.js.map +1 -0
  305. package/src/workspace-deployment/migration.d.ts +27 -0
  306. package/src/workspace-deployment/migration.js +109 -0
  307. package/src/workspace-deployment/migration.js.map +1 -0
  308. package/src/workspace-deployment/ownership.d.ts +81 -0
  309. package/src/workspace-deployment/ownership.js +381 -0
  310. package/src/workspace-deployment/ownership.js.map +1 -0
@@ -9,16 +9,17 @@ const client_sts_1 = require("@aws-sdk/client-sts");
9
9
  const credential_providers_1 = require("@aws-sdk/credential-providers");
10
10
  const node_path_1 = require("node:path");
11
11
  const index_js_1 = require("../../secrets/index.js");
12
+ const index_js_2 = require("../../aws-authority/index.js");
12
13
  const secret_preflight_js_1 = require("../sst-lifecycle/secret-preflight.js");
13
- const index_js_2 = require("../../repository-policy/index.js");
14
- const infrastructure_plan_js_1 = require("../infrastructure-plan/infrastructure-plan.js");
15
- const protectedStages = new Set(['staging', 'production']);
14
+ const index_js_3 = require("../../repository-policy/index.js");
15
+ const identity_js_1 = require("../../aws/identity.js");
16
+ const index_js_4 = require("../../workspace-deployment/index.js");
16
17
  const ROLE = /^arn:(aws|aws-us-gov|aws-cn):iam::\d{12}:role\/[A-Za-z0-9+=,.@_/-]{1,512}$/;
17
18
  function assertSecretMetadataApplyAuthority(stage, apply, environment = process.env, deploymentProfile = 'fully-isolated') {
18
- if (!apply || !protectedStages.has(stage))
19
+ if (!apply)
19
20
  return 'none';
20
21
  const repository = environment.GITHUB_REPOSITORY;
21
- const branch = stage === 'staging' ? 'develop' : 'main';
22
+ const branch = stage === 'production' ? 'main' : 'develop';
22
23
  const ref = `refs/heads/${branch}`;
23
24
  const expectedWorkflow = repository
24
25
  ? `${repository}/.github/workflows/secret-metadata.yml@${ref}`
@@ -30,12 +31,19 @@ function assertSecretMetadataApplyAuthority(stage, apply, environment = process.
30
31
  environment.GITHUB_WORKFLOW_REF === expectedWorkflow;
31
32
  if (exactWorkflow)
32
33
  return 'workflow';
33
- if ((0, index_js_2.requiresGithubDeployment)(deploymentProfile, stage) ||
34
+ if ((0, index_js_3.requiresGithubDeployment)(deploymentProfile, stage) ||
34
35
  environment.GITHUB_ACTIONS === 'true') {
35
36
  throw new Error(`Protected ${stage} secret metadata apply must run from the ${branch}-branch Secret metadata workflow.`);
36
37
  }
37
38
  return 'local';
38
39
  }
40
+ function partitionForRegion(region) {
41
+ if (region.startsWith('cn-'))
42
+ return 'aws-cn';
43
+ if (region.startsWith('us-gov-'))
44
+ return 'aws-us-gov';
45
+ return 'aws';
46
+ }
39
47
  async function readCurrentPrincipal(input) {
40
48
  const client = new client_sts_1.STSClient({
41
49
  ...(input.profile
@@ -43,6 +51,7 @@ async function readCurrentPrincipal(input) {
43
51
  credentials: (0, credential_providers_1.fromIni)({ profile: input.profile }),
44
52
  }
45
53
  : {}),
54
+ endpoint: (0, identity_js_1.canonicalStsEndpoint)(input.region),
46
55
  region: input.region,
47
56
  });
48
57
  const identity = await client.send(new client_sts_1.GetCallerIdentityCommand({}));
@@ -52,33 +61,32 @@ async function readCurrentPrincipal(input) {
52
61
  return { accountId: identity.Account, arn: identity.Arn };
53
62
  }
54
63
  async function assertProtectedSecretMetadataPrincipal(input) {
55
- if (!input.apply || !protectedStages.has(input.stage))
64
+ if (!input.apply)
56
65
  return;
57
66
  const expectedAccount = input.environment.AWS_EXPECTED_ACCOUNT_ID;
58
- const expectedRoleArn = input.environment.AWS_DEPLOY_ROLE_ARN;
67
+ const configuredRoleArn = input.environment.AWS_DEPLOY_ROLE_ARN;
59
68
  const runId = input.environment.GITHUB_RUN_ID;
60
69
  const runAttempt = input.environment.GITHUB_RUN_ATTEMPT;
61
- const role = /^(arn:(aws|aws-us-gov|aws-cn):iam::(\d{12}):role\/([A-Za-z0-9+=,.@_-]{1,64}))$/.exec(expectedRoleArn ?? '');
62
- if (!role ||
63
- role[1] !== expectedRoleArn ||
64
- role[3] !== expectedAccount ||
70
+ if (!ROLE.test(input.expectedRoleArn) ||
71
+ expectedAccount !== input.accountId ||
72
+ configuredRoleArn !== input.expectedRoleArn ||
65
73
  !/^\d+$/.test(runId ?? '') ||
66
74
  !/^\d+$/.test(runAttempt ?? '')) {
67
- throw new Error('Protected secret metadata apply requires one exact pathless deployment role and workflow run identity.');
75
+ throw new Error('Protected secret metadata apply requires the exact committed stage deployment role and workflow run identity.');
68
76
  }
69
77
  let principal;
70
78
  try {
71
79
  principal = await (input.readPrincipal ?? readCurrentPrincipal)({
72
- ...(input.profile ? { profile: input.profile } : {}),
73
80
  region: input.region,
74
81
  });
75
82
  }
76
83
  catch {
77
84
  throw new Error('Protected secret metadata apply could not authenticate its AWS principal.');
78
85
  }
79
- const expectedPrincipalArn = `arn:${role[2]}:sts::${expectedAccount}:assumed-role/${role[4]}/ebk-secret-metadata-${runId}-${runAttempt}`;
80
- if (principal.accountId !== expectedAccount ||
81
- principal.arn !== expectedPrincipalArn) {
86
+ const expectedSession = `ebk-secret-metadata-${runId}-${runAttempt}`;
87
+ if (principal.accountId !== input.accountId ||
88
+ !(0, identity_js_1.matchesExpectedAssumedRoleArn)(input.accountId, principal.arn, input.expectedRoleArn) ||
89
+ !principal.arn.endsWith(`/${expectedSession}`)) {
82
90
  throw new Error('Protected secret metadata apply is not running as the exact reviewed deployment-role session.');
83
91
  }
84
92
  }
@@ -99,7 +107,7 @@ async function assertLocalSecretMetadataPrincipal(input) {
99
107
  throw new Error('Local protected secret metadata apply could not authenticate its AWS principal.');
100
108
  }
101
109
  if (principal.accountId !== input.accountId ||
102
- !(0, infrastructure_plan_js_1.matchesExpectedAssumedRoleArn)(input.accountId, principal.arn, expectedRoleArn)) {
110
+ !(0, identity_js_1.matchesExpectedAssumedRoleArn)(input.accountId, principal.arn, expectedRoleArn)) {
103
111
  throw new Error('Local protected secret metadata apply is not running in the committed account as the exact temporary assumed role.');
104
112
  }
105
113
  }
@@ -118,36 +126,75 @@ function resolveSliceRoot(context) {
118
126
  async function executeSecretMetadata(options, context, dependencies = {}) {
119
127
  const environment = dependencies.environment ?? process.env;
120
128
  const apply = options.apply === true;
121
- const operatingPolicy = apply && protectedStages.has(options.stage)
122
- ? (dependencies.readOperatingPolicy ?? index_js_2.readRepositoryOperatingPolicy)(context.root)
129
+ const operatingPolicy = apply
130
+ ? (dependencies.readOperatingPolicy ?? index_js_3.readRepositoryOperatingPolicy)(context.root)
123
131
  : undefined;
124
132
  const authority = assertSecretMetadataApplyAuthority(options.stage, apply, environment, operatingPolicy?.deploymentProfile);
125
133
  const aws = (0, secret_preflight_js_1.resolveSecretAwsContext)(options, environment);
134
+ let accountId;
135
+ let expectedRoleArn;
136
+ if (apply) {
137
+ if (!operatingPolicy) {
138
+ throw new Error('Secret metadata operating policy is unavailable.');
139
+ }
140
+ if (!(0, index_js_3.isActiveDeploymentStage)(operatingPolicy.deploymentProfile, options.stage)) {
141
+ throw new Error(`Secret metadata stage ${options.stage} is inactive for the ${operatingPolicy.deploymentProfile} deployment profile.`);
142
+ }
143
+ const region = (0, index_js_3.configuredDeploymentRegion)(operatingPolicy.deploymentRegion);
144
+ if (aws.region !== region) {
145
+ throw new Error(`Secret metadata apply requires committed deployment Region ${region}.`);
146
+ }
147
+ accountId = (0, index_js_3.configuredDeploymentAccountForStage)(operatingPolicy.deploymentProfile, operatingPolicy.deploymentAccounts, options.stage);
148
+ expectedRoleArn = (0, index_js_2.createStageAuthorityIdentity)({
149
+ accountId,
150
+ partition: partitionForRegion(region),
151
+ region,
152
+ stage: options.stage,
153
+ }).deploymentRoleArn;
154
+ }
126
155
  if (authority === 'workflow') {
156
+ if (accountId === undefined ||
157
+ expectedRoleArn === undefined ||
158
+ options.profile !== undefined ||
159
+ options.expectedRoleArn !== undefined) {
160
+ throw new Error('Protected secret metadata apply uses only its exact OIDC workflow authority.');
161
+ }
127
162
  await assertProtectedSecretMetadataPrincipal({
163
+ accountId,
128
164
  apply,
129
165
  environment,
130
- ...(aws.profile ? { profile: aws.profile } : {}),
166
+ expectedRoleArn,
131
167
  readPrincipal: dependencies.readPrincipal,
132
168
  region: aws.region,
133
169
  stage: options.stage,
134
170
  });
135
171
  }
136
172
  else if (authority === 'local') {
137
- if (!operatingPolicy) {
173
+ if (accountId === undefined || expectedRoleArn === undefined) {
138
174
  throw new Error('Local secret metadata operating policy is unavailable.');
139
175
  }
140
- const accounts = (0, index_js_2.configuredDeploymentAccountTopology)(operatingPolicy.deploymentProfile, operatingPolicy.deploymentAccounts);
141
- const region = (0, index_js_2.configuredDeploymentRegion)(operatingPolicy.deploymentRegion);
142
- if (aws.region !== region) {
143
- throw new Error(`Local protected secret metadata apply requires committed deployment Region ${region}.`);
176
+ if (options.expectedRoleArn !== expectedRoleArn) {
177
+ throw new Error(`Local secret metadata apply requires the exact committed ${options.stage} stage authority role ${expectedRoleArn}.`);
144
178
  }
145
179
  await assertLocalSecretMetadataPrincipal({
146
- accountId: accounts[options.stage],
147
- expectedRoleArn: options.expectedRoleArn,
180
+ accountId,
181
+ expectedRoleArn,
148
182
  ...(aws.profile ? { profile: aws.profile } : {}),
149
183
  readPrincipal: dependencies.readPrincipal,
150
- region,
184
+ region: aws.region,
185
+ });
186
+ }
187
+ if (apply) {
188
+ await (dependencies.ownership ?? index_js_4.assertWorkspaceStageOwnershipForWorkspace)(context.root, options.stage, {
189
+ ...(environment.AWS_CONFIG_FILE
190
+ ? { configFilepath: environment.AWS_CONFIG_FILE }
191
+ : {}),
192
+ ...(environment.AWS_SHARED_CREDENTIALS_FILE
193
+ ? {
194
+ credentialsFilepath: environment.AWS_SHARED_CREDENTIALS_FILE,
195
+ }
196
+ : {}),
197
+ ...(aws.profile ? { profile: aws.profile } : {}),
151
198
  });
152
199
  }
153
200
  const loaded = await (0, secret_preflight_js_1.loadSliceSecretMetadata)({
@@ -1 +1 @@
1
- {"version":3,"file":"secret-metadata.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/secret-metadata/secret-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secret-metadata.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/secret-metadata/secret-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { ExecutorContext } from '@nx/devkit';
2
+ import { type RepositoryOperatingPolicy } from '../../repository-policy/index.js';
3
+ import { type GeneratedSecretRetirementControlPlane, type GeneratedSecretRetirementResult } from '../../secrets/index.js';
4
+ import { type LoadedSliceSecretMetadata } from './secret-preflight.js';
5
+ import type { SstCommandInvocation, SstLifecycleOptions } from './run-sst-command.js';
6
+ export declare const GENERATED_SECRET_RETIREMENT_EVIDENCE_DIRECTORY: string;
7
+ interface AwsPrincipal {
8
+ accountId: string;
9
+ arn: string;
10
+ }
11
+ export interface GeneratedSecretRetirementEvidence {
12
+ accountId: string;
13
+ actorArn: string;
14
+ completedAt: string;
15
+ deletionMode: GeneratedSecretRetirementResult['deletionMode'];
16
+ kind: 'ebk-generated-secret-retirement';
17
+ project: string;
18
+ recoveryWindowDays?: 7;
19
+ region: string;
20
+ result: 'succeeded';
21
+ schemaVersion: 1;
22
+ secrets: GeneratedSecretRetirementResult['secrets'];
23
+ sourceCommit: string;
24
+ stage: string;
25
+ startedAt: string;
26
+ workspace: string;
27
+ }
28
+ export interface GeneratedSecretRetirementDependencies {
29
+ controlPlane?: GeneratedSecretRetirementControlPlane;
30
+ environment?: NodeJS.ProcessEnv;
31
+ loadMetadata?: (input: {
32
+ context: ExecutorContext;
33
+ cwd: string;
34
+ stage: string;
35
+ }) => Promise<LoadedSliceSecretMetadata>;
36
+ now?: () => Date;
37
+ readOperatingPolicy?: (workspaceRoot: string) => RepositoryOperatingPolicy;
38
+ readPrincipal?: (input: {
39
+ environment: NodeJS.ProcessEnv;
40
+ profile?: string;
41
+ region: string;
42
+ }) => Promise<AwsPrincipal>;
43
+ writeEvidence?: (path: string, evidence: GeneratedSecretRetirementEvidence) => void;
44
+ waitBeforeRetry?: (delayMs: number) => Promise<void>;
45
+ }
46
+ /**
47
+ * Complete the generated-secret portion of one successful native Slice remove.
48
+ * The invocation has already passed the normal stage/removal authorization;
49
+ * this function independently reattests its exact AWS identity and secret
50
+ * ownership before applying the stage-specific deletion policy.
51
+ */
52
+ export declare function retireGeneratedSecretsAfterSliceRemove(options: SstLifecycleOptions, context: ExecutorContext, invocation: SstCommandInvocation, dependencies?: GeneratedSecretRetirementDependencies): Promise<GeneratedSecretRetirementEvidence>;
53
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GENERATED_SECRET_RETIREMENT_EVIDENCE_DIRECTORY = void 0;
4
+ exports.retireGeneratedSecretsAfterSliceRemove = retireGeneratedSecretsAfterSliceRemove;
5
+ const client_sts_1 = require("@aws-sdk/client-sts");
6
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ const index_js_1 = require("../../aws-authority/index.js");
10
+ const identity_js_1 = require("../../aws/identity.js");
11
+ const index_js_2 = require("../../repository-policy/index.js");
12
+ const index_js_3 = require("../../secrets/index.js");
13
+ const secret_preflight_js_1 = require("./secret-preflight.js");
14
+ const private_state_js_1 = require("../../local-dev/private-state.js");
15
+ const GENERATED_SECRET_RETIREMENT_EVIDENCE_SEGMENTS = [
16
+ '.ebk',
17
+ 'evidence',
18
+ 'generated-secret-retirement',
19
+ ];
20
+ exports.GENERATED_SECRET_RETIREMENT_EVIDENCE_DIRECTORY = (0, node_path_1.join)(...GENERATED_SECRET_RETIREMENT_EVIDENCE_SEGMENTS);
21
+ const SHA = /^[a-f0-9]{40,64}$/u;
22
+ const MAXIMUM_EVIDENCE_BYTES = 32 * 1024;
23
+ function partitionForRegion(region) {
24
+ if (region.startsWith('cn-'))
25
+ return 'aws-cn';
26
+ if (region.startsWith('us-gov-'))
27
+ return 'aws-us-gov';
28
+ return 'aws';
29
+ }
30
+ function profileCredentials(profile, environment) {
31
+ return (0, credential_providers_1.fromIni)({
32
+ ...(environment.AWS_CONFIG_FILE
33
+ ? { configFilepath: environment.AWS_CONFIG_FILE }
34
+ : {}),
35
+ ...(environment.AWS_SHARED_CREDENTIALS_FILE
36
+ ? { filepath: environment.AWS_SHARED_CREDENTIALS_FILE }
37
+ : {}),
38
+ profile,
39
+ });
40
+ }
41
+ async function readCurrentPrincipal(input) {
42
+ const client = new client_sts_1.STSClient({
43
+ ...(input.profile
44
+ ? { credentials: profileCredentials(input.profile, input.environment) }
45
+ : {}),
46
+ endpoint: (0, identity_js_1.canonicalStsEndpoint)(input.region),
47
+ region: input.region,
48
+ });
49
+ try {
50
+ const identity = await client.send(new client_sts_1.GetCallerIdentityCommand({}));
51
+ if (!identity.Account || !identity.Arn) {
52
+ throw new Error('identity unavailable');
53
+ }
54
+ return { accountId: identity.Account, arn: identity.Arn };
55
+ }
56
+ finally {
57
+ client.destroy();
58
+ }
59
+ }
60
+ function writeBoundedEvidence(path, evidence) {
61
+ const serialized = `${JSON.stringify(evidence, null, 2)}\n`;
62
+ (0, private_state_js_1.atomicWritePrivateFileWithMaximumBytes)(path, serialized, MAXIMUM_EVIDENCE_BYTES);
63
+ }
64
+ function prepareEvidenceDestination(cwd, path) {
65
+ const projectRoot = (0, node_path_1.resolve)(cwd);
66
+ const expectedPath = (0, node_path_1.join)(projectRoot, ...GENERATED_SECRET_RETIREMENT_EVIDENCE_SEGMENTS, (0, node_path_1.basename)(path));
67
+ if ((0, node_path_1.resolve)(path) !== expectedPath) {
68
+ throw new Error('Generated secret retirement evidence must remain inside the exact project evidence directory.');
69
+ }
70
+ const projectIdentity = (0, node_fs_1.lstatSync)(projectRoot);
71
+ if (projectIdentity.isSymbolicLink() || !projectIdentity.isDirectory()) {
72
+ throw new Error('Generated secret retirement requires one real project directory.');
73
+ }
74
+ let current = projectRoot;
75
+ for (const segment of GENERATED_SECRET_RETIREMENT_EVIDENCE_SEGMENTS) {
76
+ current = (0, node_path_1.join)(current, segment);
77
+ (0, private_state_js_1.ensurePrivateDirectory)(current);
78
+ }
79
+ if ((0, node_fs_1.existsSync)(path)) {
80
+ (0, private_state_js_1.assertPrivatePath)(path, 'file');
81
+ }
82
+ }
83
+ function sourceCommit(environment) {
84
+ const commit = (environment.EBK_SOURCE_COMMIT ??
85
+ environment.GITHUB_SHA ??
86
+ '').trim();
87
+ if (!SHA.test(commit)) {
88
+ throw new Error('Generated secret retirement requires one exact lifecycle source commit.');
89
+ }
90
+ return commit;
91
+ }
92
+ /**
93
+ * Complete the generated-secret portion of one successful native Slice remove.
94
+ * The invocation has already passed the normal stage/removal authorization;
95
+ * this function independently reattests its exact AWS identity and secret
96
+ * ownership before applying the stage-specific deletion policy.
97
+ */
98
+ async function retireGeneratedSecretsAfterSliceRemove(options, context, invocation, dependencies = {}) {
99
+ const environment = dependencies.environment ?? process.env;
100
+ const exactSourceCommit = sourceCommit(environment);
101
+ const startedAt = (dependencies.now ?? (() => new Date()))().toISOString();
102
+ const policy = (dependencies.readOperatingPolicy ?? index_js_2.readRepositoryOperatingPolicy)(context.root);
103
+ const stage = invocation.environment.EBK_CONSUMER_STAGE;
104
+ if (!(0, index_js_2.isActiveDeploymentStage)(policy.deploymentProfile, stage)) {
105
+ throw new Error(`Generated secret retirement stage ${stage} is inactive for the ${policy.deploymentProfile} deployment profile.`);
106
+ }
107
+ const region = (0, index_js_2.configuredDeploymentRegion)(policy.deploymentRegion);
108
+ const accountId = (0, index_js_2.configuredDeploymentAccountForStage)(policy.deploymentProfile, policy.deploymentAccounts, stage);
109
+ const expectedRoleArn = (0, index_js_1.createStageAuthorityIdentity)({
110
+ accountId,
111
+ partition: partitionForRegion(region),
112
+ region,
113
+ stage,
114
+ }).deploymentRoleArn;
115
+ if (invocation.environment.AWS_EXPECTED_ACCOUNT_ID !== accountId ||
116
+ invocation.environment.AWS_REGION !== region ||
117
+ invocation.environment.EBK_EXPECTED_DEPLOYMENT_ROLE_ARN !==
118
+ expectedRoleArn ||
119
+ (options.expectedRoleArn !== undefined &&
120
+ options.expectedRoleArn !== expectedRoleArn)) {
121
+ throw new Error('Generated secret retirement requires the exact committed account, Region, stage, and deployment role.');
122
+ }
123
+ const profile = invocation.environment.AWS_PROFILE;
124
+ if (profile !== undefined && options.profile !== profile) {
125
+ throw new Error('Generated secret retirement requires the exact invocation-private AWS profile.');
126
+ }
127
+ let principal;
128
+ try {
129
+ principal = await (dependencies.readPrincipal ?? readCurrentPrincipal)({
130
+ environment,
131
+ ...(profile ? { profile } : {}),
132
+ region,
133
+ });
134
+ }
135
+ catch {
136
+ throw new Error('Generated secret retirement could not authenticate its AWS principal.');
137
+ }
138
+ if (principal.accountId !== accountId ||
139
+ !(0, identity_js_1.matchesExpectedAssumedRoleArn)(accountId, principal.arn, expectedRoleArn)) {
140
+ throw new Error('Generated secret retirement is not running in the committed account as the exact temporary stage deployment role.');
141
+ }
142
+ const loaded = await (dependencies.loadMetadata ?? secret_preflight_js_1.loadSliceSecretMetadata)({
143
+ context,
144
+ cwd: invocation.cwd,
145
+ stage,
146
+ });
147
+ const evidencePath = (0, node_path_1.join)(invocation.cwd, exports.GENERATED_SECRET_RETIREMENT_EVIDENCE_DIRECTORY, `${stage}.json`);
148
+ prepareEvidenceDestination(invocation.cwd, evidencePath);
149
+ const controlPlane = dependencies.controlPlane ??
150
+ (0, index_js_3.createAwsGeneratedSecretRetirementControlPlane)({
151
+ clientConfiguration: {
152
+ ...(profile
153
+ ? { credentials: profileCredentials(profile, environment) }
154
+ : {}),
155
+ endpoint: (0, identity_js_1.canonicalAwsRegionalEndpoint)('secretsmanager', region),
156
+ region,
157
+ },
158
+ });
159
+ const result = await (0, index_js_3.runGeneratedSecretRetirement)({
160
+ accountId,
161
+ controlPlane,
162
+ declarations: loaded.declarations,
163
+ partition: partitionForRegion(region),
164
+ region,
165
+ scope: loaded.scope,
166
+ ...(dependencies.waitBeforeRetry === undefined
167
+ ? {}
168
+ : { waitBeforeRetry: dependencies.waitBeforeRetry }),
169
+ });
170
+ const evidence = Object.freeze({
171
+ accountId,
172
+ actorArn: principal.arn,
173
+ completedAt: (dependencies.now ?? (() => new Date()))().toISOString(),
174
+ deletionMode: result.deletionMode,
175
+ kind: 'ebk-generated-secret-retirement',
176
+ project: loaded.scope.slice,
177
+ ...(result.recoveryWindowDays === undefined
178
+ ? {}
179
+ : { recoveryWindowDays: result.recoveryWindowDays }),
180
+ region,
181
+ result: 'succeeded',
182
+ schemaVersion: 1,
183
+ secrets: result.secrets,
184
+ sourceCommit: exactSourceCommit,
185
+ stage,
186
+ startedAt,
187
+ workspace: loaded.scope.workspace,
188
+ });
189
+ (dependencies.writeEvidence ?? writeBoundedEvidence)(evidencePath, evidence);
190
+ return evidence;
191
+ }
192
+ //# sourceMappingURL=generated-secret-retirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-secret-retirement.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/sst-lifecycle/generated-secret-retirement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { ReadStream, WriteStream } from 'node:tty';
2
+ import { type ExecutorContext } from '@nx/devkit';
3
+ import { createLocalFederatedCredentialTransport } from '../local-deploy/federated-credential-transport.js';
4
+ import { type SstLifecycleCommand, type SstLifecycleOptions } from './run-sst-command.js';
5
+ export type GovernedNativeOperation = 'refresh' | 'remove' | 'unlock';
6
+ export interface GovernedNativeOperationApprovalRequest {
7
+ action: GovernedNativeOperation;
8
+ challenge: string;
9
+ sourceCommit: string;
10
+ stage: 'production' | 'staging';
11
+ }
12
+ export type GovernedNativeOperationApprover = (request: GovernedNativeOperationApprovalRequest) => Promise<boolean>;
13
+ interface ApprovalTerminal {
14
+ input: ReadStream;
15
+ output: WriteStream;
16
+ }
17
+ interface SourceIdentity {
18
+ clean: boolean;
19
+ commit: string;
20
+ workingTreeDigest: string;
21
+ }
22
+ type NativeRunner = (command: SstLifecycleCommand, options: SstLifecycleOptions, context: ExecutorContext, dependencies?: {
23
+ environment?: NodeJS.ProcessEnv;
24
+ }) => Promise<{
25
+ success: boolean;
26
+ }>;
27
+ export interface GovernedNativeOperationDependencies {
28
+ approve?: GovernedNativeOperationApprover;
29
+ createTransport?: typeof createLocalFederatedCredentialTransport;
30
+ environment?: NodeJS.ProcessEnv;
31
+ platform?: NodeJS.Platform;
32
+ readSource?: (root: string) => SourceIdentity;
33
+ run?: NativeRunner;
34
+ }
35
+ /** Active operator acknowledgement, not an independent-review claim. */
36
+ export declare function createTtyGovernedNativeOperationApprover(terminal?: ApprovalTerminal): GovernedNativeOperationApprover;
37
+ /**
38
+ * Govern refresh, remove, and unlock without replacing SST's native lifecycle.
39
+ * Local execution flattens the operator's federated profile into one private,
40
+ * invocation-scoped profile; protected stages additionally require a TTY
41
+ * acknowledgement. GitHub OIDC proceeds through the existing native path.
42
+ */
43
+ export declare function runGovernedNativeOperation(command: GovernedNativeOperation, options: SstLifecycleOptions, context: ExecutorContext, dependencies?: GovernedNativeOperationDependencies): Promise<{
44
+ success: boolean;
45
+ }>;
46
+ export {};