@empire-builder-kit/nx 1.0.0-rc.37 → 1.0.0-rc.39

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 (637) hide show
  1. package/README.md +18 -0
  2. package/executors.json +5 -0
  3. package/generators.json +10 -0
  4. package/package.json +20 -3
  5. package/src/aws-authority/index.d.ts +1 -0
  6. package/src/aws-authority/index.js +1 -0
  7. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  8. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  9. package/src/aws-authority/stage-authority.d.ts +11 -3
  10. package/src/aws-authority/stage-authority.js +615 -29
  11. package/src/blueprints/external-sandbox.js +21 -9
  12. package/src/blueprints/manifest.d.ts +1 -1
  13. package/src/blueprints/resolver.js +28 -15
  14. package/src/cli/bootstrap.d.ts +1 -1
  15. package/src/cli/deploy-runtime.d.ts +6 -0
  16. package/src/cli/deploy-runtime.js +58 -0
  17. package/src/cli/dev-command.d.ts +16 -4
  18. package/src/cli/dev-command.js +63 -0
  19. package/src/cli/main.d.ts +7 -1
  20. package/src/cli/main.js +128 -20
  21. package/src/cli/output.d.ts +1 -1
  22. package/src/developer-agent/context.js +41 -9
  23. package/src/developer-agent/generator-planning.js +16 -2
  24. package/src/developer-agent/git-inspection.d.ts +6 -2
  25. package/src/developer-agent/git-inspection.js +78 -6
  26. package/src/developer-agent/model.d.ts +4 -2
  27. package/src/developer-agent/operation-registry.d.ts +5 -0
  28. package/src/developer-agent/operation-registry.js +179 -23
  29. package/src/developer-agent/preview-changes.d.ts +2 -0
  30. package/src/developer-agent/preview-changes.js +14 -2
  31. package/src/developer-agent/preview-source.js +3 -0
  32. package/src/developer-agent/validation.js +20 -8
  33. package/src/developer-agent/workspace-inspection.js +37 -3
  34. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  35. package/src/executors/deployment-plan/deployment-plan.js +51 -4
  36. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  37. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  38. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  39. package/src/executors/dev-task-cleanup/schema.json +9 -0
  40. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  41. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  42. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  43. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  44. package/src/executors/fleet/fleet.js +1 -1
  45. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +28 -1
  46. package/src/executors/local-deploy/local-deploy.d.ts +8 -1
  47. package/src/executors/local-deploy/local-deploy.js +97 -24
  48. package/src/executors/local-deploy/schema.json +8 -0
  49. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +30 -18
  50. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +2 -0
  51. package/src/executors/sst-lifecycle/governed-native-operation.js +9 -0
  52. package/src/executors/sst-lifecycle/run-sst-command.d.ts +5 -0
  53. package/src/executors/sst-lifecycle/run-sst-command.js +220 -32
  54. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +8 -0
  55. package/src/executors/sst-lifecycle/sst-environment-source.js +54 -0
  56. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  57. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  58. package/src/foundation/capability-plan.d.ts +43 -0
  59. package/src/foundation/capability-plan.js +168 -0
  60. package/src/foundation/discovery.d.ts +14 -11
  61. package/src/foundation/discovery.js +32 -6
  62. package/src/foundation/index.d.ts +1 -0
  63. package/src/foundation/index.js +1 -0
  64. package/src/foundation/local-database-contract.d.ts +20 -0
  65. package/src/foundation/local-database-contract.js +262 -13
  66. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  67. package/src/foundation/local-private-smoke-access.js +197 -0
  68. package/src/foundation/preflight.js +37 -18
  69. package/src/foundation/private-smoke-access.js +10 -2
  70. package/src/foundation/private-smoke-admission.d.ts +3 -1
  71. package/src/foundation/private-smoke-admission.js +29 -8
  72. package/src/foundation/private-smoke-control-plane.js +17 -6
  73. package/src/foundation/provision-database-bindings.d.ts +5 -0
  74. package/src/foundation/provision-database-bindings.js +41 -8
  75. package/src/foundation/provision-logical-database.js +13 -8
  76. package/src/foundation/requirements.d.ts +3 -3
  77. package/src/foundation/requirements.js +24 -12
  78. package/src/foundation/router-waf.d.ts +1 -0
  79. package/src/foundation/router-waf.js +14 -1
  80. package/src/generators/blueprint/blueprint.d.ts +5 -0
  81. package/src/generators/blueprint/blueprint.js +102 -0
  82. package/src/generators/blueprint/files.d.ts +6 -0
  83. package/src/generators/blueprint/files.js +217 -0
  84. package/src/generators/blueprint/schema.d.ts +4 -0
  85. package/src/generators/blueprint/schema.json +18 -0
  86. package/src/generators/formatting.js +24 -1
  87. package/src/generators/logging-registry.d.ts +2 -0
  88. package/src/generators/logging-registry.js +22 -0
  89. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  90. package/src/generators/preset/workspace-files-adopter-skills.js +301 -0
  91. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  92. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  93. package/src/generators/preset/workspace-files-developer-agent.js +40 -13
  94. package/src/generators/preset/workspace-files-performance-load.js +8 -0
  95. package/src/generators/preset/workspace-files-stage-authority.js +40 -1
  96. package/src/generators/preset/workspace-files-thin-deploy.js +66 -34
  97. package/src/generators/preset/workspace-files-thin-docs.js +64 -18
  98. package/src/generators/preset/workspace-files.d.ts +4 -0
  99. package/src/generators/preset/workspace-files.js +159 -91
  100. package/src/generators/repository-policy/repository-policy.js +37 -0
  101. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  102. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  103. package/src/generators/slice/built-in-plan-api-files.js +47 -389
  104. package/src/generators/slice/built-in-plan-async-work-files.js +19 -1912
  105. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  106. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +36 -2
  107. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  108. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  109. package/src/generators/slice/built-in-plan-background-work-files.d.ts +1 -1
  110. package/src/generators/slice/built-in-plan-background-work-files.js +15 -5
  111. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  112. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  113. package/src/generators/slice/built-in-plan-data-files.js +61 -1164
  114. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  115. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +18 -2
  116. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2446
  117. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +30 -6
  118. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  119. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +4 -15
  120. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  121. package/src/generators/slice/built-in-plan-foundation-files.js +34 -10
  122. package/src/generators/slice/built-in-plan-frontend-files.js +2 -2
  123. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  124. package/src/generators/slice/built-in-plan-infrastructure-files.js +180 -522
  125. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  126. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  127. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  128. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  129. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  130. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  131. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  132. package/src/generators/slice/built-in-plan-key-value-delivery.js +120 -0
  133. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  134. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  135. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  136. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  137. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  138. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  139. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  140. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  141. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  142. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  143. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  144. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  145. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  146. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  147. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  148. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  149. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  150. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  151. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  152. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  153. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  154. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  155. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  156. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  157. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  158. package/src/generators/slice/built-in-plan-metadata-files.js +140 -28
  159. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +1 -1
  160. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +36 -19
  161. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  162. package/src/generators/slice/built-in-plan-operations-files.js +89 -50
  163. package/src/generators/slice/built-in-plan-performance-files.js +84 -1010
  164. package/src/generators/slice/built-in-plan-project-files.js +116 -67
  165. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  166. package/src/generators/slice/built-in-plan-release-files.js +64 -15
  167. package/src/generators/slice/built-in-plan-reliability-files.js +54 -28
  168. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  169. package/src/generators/slice/built-in-plan-shared.js +41 -19
  170. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  171. package/src/generators/slice/built-in-plan-sql-events.js +257 -0
  172. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  173. package/src/generators/slice/built-in-plan-testing-files.js +184 -132
  174. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  175. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  176. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +1 -1
  177. package/src/generators/slice/built-in-plan-thin-release-files.js +35 -2
  178. package/src/generators/slice/built-in-plan-verification-files.js +70 -0
  179. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  180. package/src/generators/slice/built-in-plan-web-files.js +206 -14
  181. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  182. package/src/generators/slice/built-in-plan-workload-role-files.js +113 -274
  183. package/src/generators/slice/built-in-plan.d.ts +9 -1
  184. package/src/generators/slice/built-in-plan.js +49 -21
  185. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  186. package/src/generators/slice/data-policy-review-seed.js +22 -0
  187. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  188. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  189. package/src/generators/slice/local-source-identity.d.ts +2 -0
  190. package/src/generators/slice/local-source-identity.js +31 -0
  191. package/src/generators/slice/persistence-contract.d.ts +14 -0
  192. package/src/generators/slice/persistence-contract.js +32 -0
  193. package/src/generators/slice/slice.js +29 -24
  194. package/src/generators/sql/schema.d.ts +7 -0
  195. package/src/generators/sql/schema.json +38 -0
  196. package/src/generators/sql/sql.d.ts +6 -0
  197. package/src/generators/sql/sql.js +53 -0
  198. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  199. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  200. package/src/generators/upgrade/upgrade.d.ts +2 -0
  201. package/src/generators/upgrade/upgrade.js +136 -9
  202. package/src/generators/workload/workload.js +51 -2
  203. package/src/local-dev/browser-verification.d.ts +37 -0
  204. package/src/local-dev/browser-verification.js +281 -0
  205. package/src/local-dev/contracts.d.ts +10 -1
  206. package/src/local-dev/contracts.js +114 -13
  207. package/src/local-dev/dev-command-core.js +24 -5
  208. package/src/local-dev/docker-credential-health.d.ts +14 -0
  209. package/src/local-dev/docker-credential-health.js +94 -0
  210. package/src/local-dev/environment-inspector.d.ts +7 -0
  211. package/src/local-dev/environment-inspector.js +42 -15
  212. package/src/local-dev/environment-state.js +2 -2
  213. package/src/local-dev/errors.d.ts +1 -1
  214. package/src/local-dev/errors.js +2 -0
  215. package/src/local-dev/fleet-client.js +2 -2
  216. package/src/local-dev/fleet-configuration.js +57 -25
  217. package/src/local-dev/fleet-inventory.js +46 -18
  218. package/src/local-dev/fleet-ipc.d.ts +7 -0
  219. package/src/local-dev/fleet-ipc.js +14 -2
  220. package/src/local-dev/fleet-launcher.d.ts +6 -0
  221. package/src/local-dev/fleet-launcher.js +14 -2
  222. package/src/local-dev/fleet-logs.js +50 -22
  223. package/src/local-dev/fleet-process.d.ts +20 -1
  224. package/src/local-dev/fleet-process.js +197 -41
  225. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  226. package/src/local-dev/fleet-runner-evidence.js +56 -0
  227. package/src/local-dev/fleet-runtime.js +268 -229
  228. package/src/local-dev/fleet-session.d.ts +2 -0
  229. package/src/local-dev/fleet-session.js +28 -11
  230. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  231. package/src/local-dev/fleet-state.d.ts +5 -2
  232. package/src/local-dev/fleet-state.js +25 -4
  233. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  234. package/src/local-dev/fleet-supervisor.js +66 -11
  235. package/src/local-dev/fleet-web-start.d.ts +12 -0
  236. package/src/local-dev/fleet-web-start.js +48 -0
  237. package/src/local-dev/identity.js +3 -14
  238. package/src/local-dev/index.d.ts +1 -0
  239. package/src/local-dev/index.js +1 -0
  240. package/src/local-dev/native-completion.d.ts +9 -0
  241. package/src/local-dev/native-completion.js +130 -0
  242. package/src/local-dev/nx-workspace.d.ts +4 -2
  243. package/src/local-dev/nx-workspace.js +11 -6
  244. package/src/local-dev/personal-stage.d.ts +4 -5
  245. package/src/local-dev/personal-stage.js +6 -54
  246. package/src/local-dev/port-claims.d.ts +13 -0
  247. package/src/local-dev/port-claims.js +46 -0
  248. package/src/local-dev/ports.d.ts +14 -2
  249. package/src/local-dev/ports.js +78 -3
  250. package/src/local-dev/private-state.d.ts +6 -0
  251. package/src/local-dev/private-state.js +126 -34
  252. package/src/local-dev/process-group.d.ts +4 -0
  253. package/src/local-dev/process-group.js +29 -0
  254. package/src/local-dev/process-identity.d.ts +8 -0
  255. package/src/local-dev/process-identity.js +31 -1
  256. package/src/local-dev/proxy.js +11 -12
  257. package/src/local-dev/runtime-paths.js +1 -1
  258. package/src/local-dev/slice-claim.js +1 -1
  259. package/src/local-dev/slice-runner.d.ts +15 -6
  260. package/src/local-dev/slice-runner.js +189 -54
  261. package/src/local-dev/task-attachment.d.ts +17 -0
  262. package/src/local-dev/task-attachment.js +73 -0
  263. package/src/local-dev/task-authority.d.ts +10 -0
  264. package/src/local-dev/task-authority.js +27 -0
  265. package/src/local-dev/task-identity.d.ts +33 -0
  266. package/src/local-dev/task-identity.js +418 -0
  267. package/src/local-dev/task-native-writer.d.ts +18 -0
  268. package/src/local-dev/task-native-writer.js +329 -0
  269. package/src/local-dev/tls.js +3 -1
  270. package/src/local-dev/web-launch.d.ts +9 -0
  271. package/src/local-dev/web-launch.js +130 -0
  272. package/src/ownership/composition.d.ts +2 -1
  273. package/src/ownership/composition.js +1 -0
  274. package/src/performance/scenario.d.ts +22 -0
  275. package/src/performance/scenario.js +100 -92
  276. package/src/repository-policy/deployment-plan.d.ts +2 -2
  277. package/src/repository-policy/deployment-plan.js +2 -1
  278. package/src/repository-policy/policy.js +38 -3
  279. package/src/schemas/blueprint-v1.json +5 -4
  280. package/src/schemas/foundation-requirement-v1.json +5 -4
  281. package/src/schemas/testing-evidence-result-v1.json +1 -1
  282. package/src/secrets/operator.d.ts +3 -1
  283. package/src/secrets/operator.js +22 -3
  284. package/src/sst-environment-source-format.d.ts +3 -0
  285. package/src/sst-environment-source-format.js +20 -0
  286. package/src/supply-chain/blueprint-trust-git.js +13 -3
  287. package/src/supply-chain/build-output.js +15 -0
  288. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  289. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  290. package/src/testing-evidence/fixture-scope.js +4 -2
  291. package/src/testing-evidence/result.d.ts +2 -1
  292. package/src/testing-evidence/result.js +18 -4
  293. package/src/workload-roles/standard-slice.js +2 -3
  294. package/src/api-contract/baseline-update.js.map +0 -1
  295. package/src/api-contract/compatibility.js.map +0 -1
  296. package/src/api-contract/contract-graph.js.map +0 -1
  297. package/src/api-contract/evidence.js.map +0 -1
  298. package/src/api-contract/index.js.map +0 -1
  299. package/src/api-contract/model.fixtures.d.ts +0 -2
  300. package/src/api-contract/model.fixtures.js +0 -81
  301. package/src/api-contract/model.fixtures.js.map +0 -1
  302. package/src/api-contract/model.js.map +0 -1
  303. package/src/api-contract/rollout.js.map +0 -1
  304. package/src/authorization/compatibility.js.map +0 -1
  305. package/src/authorization/index.js.map +0 -1
  306. package/src/aws/child-environment.js.map +0 -1
  307. package/src/aws/identity.js.map +0 -1
  308. package/src/aws-authority/index.js.map +0 -1
  309. package/src/aws-authority/stage-authority.js.map +0 -1
  310. package/src/blueprints/execution.js.map +0 -1
  311. package/src/blueprints/external-sandbox.js.map +0 -1
  312. package/src/blueprints/index.js.map +0 -1
  313. package/src/blueprints/inputs.js.map +0 -1
  314. package/src/blueprints/manifest.js.map +0 -1
  315. package/src/blueprints/resolver.js.map +0 -1
  316. package/src/blueprints/transitions.js.map +0 -1
  317. package/src/cli/agent-command.js.map +0 -1
  318. package/src/cli/agent-runtime.js.map +0 -1
  319. package/src/cli/blueprint-authority.js.map +0 -1
  320. package/src/cli/blueprint-command.js.map +0 -1
  321. package/src/cli/bootstrap.js.map +0 -1
  322. package/src/cli/dev-command.js.map +0 -1
  323. package/src/cli/main.js.map +0 -1
  324. package/src/cli/output.js.map +0 -1
  325. package/src/cli/personal-secret-runtime.js.map +0 -1
  326. package/src/cli/secret-terminal.js.map +0 -1
  327. package/src/container-images.js.map +0 -1
  328. package/src/data-lifecycle/index.js.map +0 -1
  329. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  330. package/src/data-lifecycle/model.fixtures.js +0 -244
  331. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  332. package/src/data-lifecycle/model.js.map +0 -1
  333. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  334. package/src/data-lifecycle/validation.js.map +0 -1
  335. package/src/database-retirement/contract.js.map +0 -1
  336. package/src/database-retirement/index.js.map +0 -1
  337. package/src/deterministic-order.js.map +0 -1
  338. package/src/developer-agent/context.js.map +0 -1
  339. package/src/developer-agent/generator-planning.js.map +0 -1
  340. package/src/developer-agent/generator-preview.js.map +0 -1
  341. package/src/developer-agent/git-inspection.js.map +0 -1
  342. package/src/developer-agent/handoff.js.map +0 -1
  343. package/src/developer-agent/index.js.map +0 -1
  344. package/src/developer-agent/model.js.map +0 -1
  345. package/src/developer-agent/operation-registry.js.map +0 -1
  346. package/src/developer-agent/ordering.js.map +0 -1
  347. package/src/developer-agent/planning.js.map +0 -1
  348. package/src/developer-agent/preview-changes.js.map +0 -1
  349. package/src/developer-agent/preview-source.js.map +0 -1
  350. package/src/developer-agent/validation.js.map +0 -1
  351. package/src/developer-agent/workspace-inspection.js.map +0 -1
  352. package/src/developer-agent/workspace-path.js.map +0 -1
  353. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  354. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  355. package/src/executors/deploy/deploy.js.map +0 -1
  356. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  357. package/src/executors/dev/dev.js.map +0 -1
  358. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  359. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  360. package/src/executors/developer-context/developer-context.js.map +0 -1
  361. package/src/executors/fleet/fleet.js.map +0 -1
  362. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  363. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  364. package/src/executors/foundation-profile-preflight/production-database-safeguard.js.map +0 -1
  365. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  366. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  367. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  368. package/src/executors/local-deploy/federated-credential-transport.js.map +0 -1
  369. package/src/executors/local-deploy/fixtures/local-deploy-state-machine.mjs +0 -53
  370. package/src/executors/local-deploy/local-approval.js.map +0 -1
  371. package/src/executors/local-deploy/local-deploy.js.map +0 -1
  372. package/src/executors/refresh/refresh.js.map +0 -1
  373. package/src/executors/remove/remove.js.map +0 -1
  374. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js.map +0 -1
  375. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  376. package/src/executors/secret-initialize/secret-initialize.js.map +0 -1
  377. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  378. package/src/executors/sst-lifecycle/generated-secret-retirement.js.map +0 -1
  379. package/src/executors/sst-lifecycle/governed-native-operation.js.map +0 -1
  380. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  381. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  382. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  383. package/src/executors/sst-lifecycle/sst-environment-source.js.map +0 -1
  384. package/src/executors/unlock/unlock.js.map +0 -1
  385. package/src/executors/work-markers/work-markers.js.map +0 -1
  386. package/src/foundation/discovery.js.map +0 -1
  387. package/src/foundation/index.js.map +0 -1
  388. package/src/foundation/local-database-contract.js.map +0 -1
  389. package/src/foundation/logging-preflight.js.map +0 -1
  390. package/src/foundation/logging.js.map +0 -1
  391. package/src/foundation/partial-state.js.map +0 -1
  392. package/src/foundation/preflight.js.map +0 -1
  393. package/src/foundation/private-smoke-access.js.map +0 -1
  394. package/src/foundation/private-smoke-admission.js.map +0 -1
  395. package/src/foundation/private-smoke-control-plane.js.map +0 -1
  396. package/src/foundation/provision-database-bindings.js.map +0 -1
  397. package/src/foundation/provision-logical-database.js.map +0 -1
  398. package/src/foundation/requirements.js.map +0 -1
  399. package/src/foundation/router-origin-proof.js.map +0 -1
  400. package/src/foundation/router-waf-rate-rehearsal.js.map +0 -1
  401. package/src/foundation/router-waf.js.map +0 -1
  402. package/src/foundation/stages.js.map +0 -1
  403. package/src/frontend-security/index.js.map +0 -1
  404. package/src/frontend-security/security-headers.js.map +0 -1
  405. package/src/generators/feature-registry.js.map +0 -1
  406. package/src/generators/formatting.js.map +0 -1
  407. package/src/generators/function/function.js.map +0 -1
  408. package/src/generators/job/job.js.map +0 -1
  409. package/src/generators/logging-registry.js.map +0 -1
  410. package/src/generators/post-generation-install.js.map +0 -1
  411. package/src/generators/preset/dependency-overrides.js.map +0 -1
  412. package/src/generators/preset/generator.js.map +0 -1
  413. package/src/generators/preset/tool-versions.js.map +0 -1
  414. package/src/generators/preset/workspace-files-ci-acceptance.js.map +0 -1
  415. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  416. package/src/generators/preset/workspace-files-ecr-inspector.js.map +0 -1
  417. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  418. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  419. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  420. package/src/generators/preset/workspace-files-stage-authority.js.map +0 -1
  421. package/src/generators/preset/workspace-files-thin-deploy.js.map +0 -1
  422. package/src/generators/preset/workspace-files-thin-docs.js.map +0 -1
  423. package/src/generators/preset/workspace-files-thin-release.js.map +0 -1
  424. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  425. package/src/generators/preset/workspace-files.js.map +0 -1
  426. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  427. package/src/generators/repository-policy/tree-policy.js.map +0 -1
  428. package/src/generators/service/service.js.map +0 -1
  429. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  430. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  431. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  432. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  433. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  434. package/src/generators/slice/built-in-plan-background-work-files.js.map +0 -1
  435. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  436. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  437. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  438. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  439. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  440. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  441. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  442. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  443. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  444. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  445. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  446. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  447. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  448. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  449. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  450. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js.map +0 -1
  451. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  452. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  453. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  454. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  455. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  456. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  457. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  458. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  459. package/src/generators/slice/built-in-plan-thin-release-files.js.map +0 -1
  460. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  461. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  462. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  463. package/src/generators/slice/built-in-plan.js.map +0 -1
  464. package/src/generators/slice/slice.js.map +0 -1
  465. package/src/generators/upgrade/upgrade.js.map +0 -1
  466. package/src/generators/workload/frozen-container.js.map +0 -1
  467. package/src/generators/workload/performance-registration.js.map +0 -1
  468. package/src/generators/workload/reliability-registration.js.map +0 -1
  469. package/src/generators/workload/service-performance-files.js.map +0 -1
  470. package/src/generators/workload/workload.js.map +0 -1
  471. package/src/git-policy/action-pins.js.map +0 -1
  472. package/src/git-policy/github-bootstrap.js.map +0 -1
  473. package/src/git-policy/index.js.map +0 -1
  474. package/src/git-policy/routing.js.map +0 -1
  475. package/src/index.js.map +0 -1
  476. package/src/infrastructure-change/convergence.js.map +0 -1
  477. package/src/infrastructure-change/drift.js.map +0 -1
  478. package/src/infrastructure-change/index.js.map +0 -1
  479. package/src/infrastructure-change/local-capability.js.map +0 -1
  480. package/src/infrastructure-change/model.js.map +0 -1
  481. package/src/infrastructure-change/normalize.js.map +0 -1
  482. package/src/infrastructure-change/plan.js.map +0 -1
  483. package/src/infrastructure-change/risk.js.map +0 -1
  484. package/src/infrastructure-change/summary.js.map +0 -1
  485. package/src/local-dev/context-discovery.js.map +0 -1
  486. package/src/local-dev/contract-validation.js.map +0 -1
  487. package/src/local-dev/contracts.js.map +0 -1
  488. package/src/local-dev/control-contract.js.map +0 -1
  489. package/src/local-dev/dev-command-core.js.map +0 -1
  490. package/src/local-dev/effects.js.map +0 -1
  491. package/src/local-dev/environment-inspector.js.map +0 -1
  492. package/src/local-dev/environment-state.js.map +0 -1
  493. package/src/local-dev/errors.js.map +0 -1
  494. package/src/local-dev/fleet-client.js.map +0 -1
  495. package/src/local-dev/fleet-configuration.js.map +0 -1
  496. package/src/local-dev/fleet-inventory.js.map +0 -1
  497. package/src/local-dev/fleet-ipc.js.map +0 -1
  498. package/src/local-dev/fleet-launcher.js.map +0 -1
  499. package/src/local-dev/fleet-lock.js.map +0 -1
  500. package/src/local-dev/fleet-logs.js.map +0 -1
  501. package/src/local-dev/fleet-process.js.map +0 -1
  502. package/src/local-dev/fleet-runtime.js.map +0 -1
  503. package/src/local-dev/fleet-session.js.map +0 -1
  504. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  505. package/src/local-dev/fleet-startup.js.map +0 -1
  506. package/src/local-dev/fleet-state.js.map +0 -1
  507. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  508. package/src/local-dev/fleet-supervisor.js.map +0 -1
  509. package/src/local-dev/gateway-daemon.js.map +0 -1
  510. package/src/local-dev/gateway.js.map +0 -1
  511. package/src/local-dev/identity.js.map +0 -1
  512. package/src/local-dev/index.js.map +0 -1
  513. package/src/local-dev/local-context.js.map +0 -1
  514. package/src/local-dev/nx-workspace.js.map +0 -1
  515. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  516. package/src/local-dev/personal-stage.js.map +0 -1
  517. package/src/local-dev/portless.js.map +0 -1
  518. package/src/local-dev/ports.js.map +0 -1
  519. package/src/local-dev/private-state.js.map +0 -1
  520. package/src/local-dev/process-identity.js.map +0 -1
  521. package/src/local-dev/proxy.js.map +0 -1
  522. package/src/local-dev/runtime-paths.js.map +0 -1
  523. package/src/local-dev/secret-slice-claim.js.map +0 -1
  524. package/src/local-dev/slice-claim.js.map +0 -1
  525. package/src/local-dev/slice-runner.js.map +0 -1
  526. package/src/local-dev/tls.js.map +0 -1
  527. package/src/ownership/composition.js.map +0 -1
  528. package/src/ownership/foundation-record.js.map +0 -1
  529. package/src/ownership/hash.js.map +0 -1
  530. package/src/ownership/index.js.map +0 -1
  531. package/src/ownership/json-ownership.js.map +0 -1
  532. package/src/ownership/record.js.map +0 -1
  533. package/src/ownership/workspace-record.js.map +0 -1
  534. package/src/performance/cost-collection.js.map +0 -1
  535. package/src/performance/cost-controls.js.map +0 -1
  536. package/src/performance/evidence.js.map +0 -1
  537. package/src/performance/index.js.map +0 -1
  538. package/src/performance/load-safety.js.map +0 -1
  539. package/src/performance/model.js.map +0 -1
  540. package/src/performance/pr-artifact-budget.js.map +0 -1
  541. package/src/performance/runner.js.map +0 -1
  542. package/src/performance/scenario-endpoint.js.map +0 -1
  543. package/src/performance/scenario.js.map +0 -1
  544. package/src/performance/test-fixtures.d.ts +0 -7
  545. package/src/performance/test-fixtures.js +0 -167
  546. package/src/performance/test-fixtures.js.map +0 -1
  547. package/src/performance/unit-cost.js.map +0 -1
  548. package/src/release/index.js.map +0 -1
  549. package/src/release/lifecycle.js.map +0 -1
  550. package/src/release/manifest.js.map +0 -1
  551. package/src/release/rollout.js.map +0 -1
  552. package/src/release/source-authority.js.map +0 -1
  553. package/src/repository-policy/aurora-preflight.js.map +0 -1
  554. package/src/repository-policy/capacity-migration.js.map +0 -1
  555. package/src/repository-policy/deployment-plan.js.map +0 -1
  556. package/src/repository-policy/foundation-profile.js.map +0 -1
  557. package/src/repository-policy/index.js.map +0 -1
  558. package/src/repository-policy/policy.js.map +0 -1
  559. package/src/secrets/adapters.js.map +0 -1
  560. package/src/secrets/aws-control-plane.js.map +0 -1
  561. package/src/secrets/declaration-verification.js.map +0 -1
  562. package/src/secrets/generated-aws-control-plane.js.map +0 -1
  563. package/src/secrets/guardrails.js.map +0 -1
  564. package/src/secrets/index.js.map +0 -1
  565. package/src/secrets/metadata.js.map +0 -1
  566. package/src/secrets/model.js.map +0 -1
  567. package/src/secrets/operator.js.map +0 -1
  568. package/src/secrets/permissions.js.map +0 -1
  569. package/src/secrets/personal-command.js.map +0 -1
  570. package/src/secrets/personal-ledger.js.map +0 -1
  571. package/src/secrets/registry.js.map +0 -1
  572. package/src/secrets/verification.js.map +0 -1
  573. package/src/secrets/workload-access.js.map +0 -1
  574. package/src/sst-environment-source-format.js.map +0 -1
  575. package/src/supply-chain/action-pins.js.map +0 -1
  576. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  577. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  578. package/src/supply-chain/blueprint-trust.js.map +0 -1
  579. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  580. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  581. package/src/supply-chain/build-output-bounds.js.map +0 -1
  582. package/src/supply-chain/build-output.js.map +0 -1
  583. package/src/supply-chain/common.js.map +0 -1
  584. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  585. package/src/supply-chain/container-release.js.map +0 -1
  586. package/src/supply-chain/ecr-applicability.js.map +0 -1
  587. package/src/supply-chain/ecr-scanning.js.map +0 -1
  588. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  589. package/src/supply-chain/errors.js.map +0 -1
  590. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  591. package/src/supply-chain/generated-command.js.map +0 -1
  592. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  593. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  594. package/src/supply-chain/generated-files.js.map +0 -1
  595. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  596. package/src/supply-chain/index.js.map +0 -1
  597. package/src/supply-chain/inventory.js.map +0 -1
  598. package/src/supply-chain/license-expression.js.map +0 -1
  599. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  600. package/src/supply-chain/policy.js.map +0 -1
  601. package/src/supply-chain/publication.js.map +0 -1
  602. package/src/supply-chain/sbom.js.map +0 -1
  603. package/src/supply-chain/scanner.js.map +0 -1
  604. package/src/supply-chain/vendored-source.js.map +0 -1
  605. package/src/testing-evidence/fixture-scope.js.map +0 -1
  606. package/src/testing-evidence/index.js.map +0 -1
  607. package/src/testing-evidence/quarantine.js.map +0 -1
  608. package/src/testing-evidence/result.js.map +0 -1
  609. package/src/testing-evidence/runner-adapter.js.map +0 -1
  610. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  611. package/src/validation.js.map +0 -1
  612. package/src/work-markers/index.js.map +0 -1
  613. package/src/work-markers/work-markers.js.map +0 -1
  614. package/src/workload-roles/account-baseline.js.map +0 -1
  615. package/src/workload-roles/authority.js.map +0 -1
  616. package/src/workload-roles/aws-adapter.js.map +0 -1
  617. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  618. package/src/workload-roles/aws-s3-state.js.map +0 -1
  619. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  620. package/src/workload-roles/boundary.js.map +0 -1
  621. package/src/workload-roles/convergence.js.map +0 -1
  622. package/src/workload-roles/effective-policy.js.map +0 -1
  623. package/src/workload-roles/handler.js.map +0 -1
  624. package/src/workload-roles/history.js.map +0 -1
  625. package/src/workload-roles/index.js.map +0 -1
  626. package/src/workload-roles/injection.js.map +0 -1
  627. package/src/workload-roles/manifest.js.map +0 -1
  628. package/src/workload-roles/provisioner.js.map +0 -1
  629. package/src/workload-roles/registration.js.map +0 -1
  630. package/src/workload-roles/stage-boundary.js.map +0 -1
  631. package/src/workload-roles/standard-slice.js.map +0 -1
  632. package/src/workspace-deployment/affected-lifecycle.js.map +0 -1
  633. package/src/workspace-deployment/identity.js.map +0 -1
  634. package/src/workspace-deployment/index.js.map +0 -1
  635. package/src/workspace-deployment/migration-evidence.js.map +0 -1
  636. package/src/workspace-deployment/migration.js.map +0 -1
  637. package/src/workspace-deployment/ownership.js.map +0 -1
@@ -19,11 +19,16 @@ const child_environment_js_1 = require("../../aws/child-environment.js");
19
19
  const identity_js_1 = require("../../aws/identity.js");
20
20
  const stages_js_1 = require("../../foundation/stages.js");
21
21
  const personal_stage_js_1 = require("../../local-dev/personal-stage.js");
22
+ const task_identity_js_1 = require("../../local-dev/task-identity.js");
22
23
  const federated_credential_transport_js_1 = require("../local-deploy/federated-credential-transport.js");
23
24
  const index_js_2 = require("../../repository-policy/index.js");
24
25
  const index_js_3 = require("../../workspace-deployment/index.js");
25
26
  const index_js_4 = require("../../work-markers/index.js");
26
27
  const secret_preflight_js_1 = require("./secret-preflight.js");
28
+ const task_native_writer_js_1 = require("../../local-dev/task-native-writer.js");
29
+ const local_deploy_js_1 = require("../local-deploy/local-deploy.js");
30
+ const task_stack_absence_js_1 = require("../dev-task-cleanup/task-stack-absence.js");
31
+ const process_group_js_1 = require("../../local-dev/process-group.js");
27
32
  const secret_initialize_js_1 = require("../secret-initialize/secret-initialize.js");
28
33
  const generated_secret_retirement_js_1 = require("./generated-secret-retirement.js");
29
34
  const sst_environment_source_js_1 = require("./sst-environment-source.js");
@@ -40,8 +45,8 @@ const SST_DEV_MODES = new Set(['basic', 'mono']);
40
45
  const AWS_REGION_PATTERN = /^[a-z]{2}(?:-gov)?-[a-z]+-\d$/;
41
46
  const AWS_ROLE_ARN_PATTERN = /^arn:(aws|aws-us-gov|aws-cn):iam::\d{12}:role\/[A-Za-z0-9+=,.@_/-]{1,512}$/;
42
47
  const MAX_CALLER_IDENTITY_BYTES = 1024 * 1024;
43
- const SST_SIGNAL_GRACE_PERIOD_MS = 10_000;
44
- const SST_SIGNAL_KILL_WAIT_MS = 5_000;
48
+ const SST_SIGNAL_GRACE_PERIOD_MS = process_group_js_1.OWNED_PROCESS_SIGNAL_GRACE_MS;
49
+ const SST_SIGNAL_KILL_WAIT_MS = process_group_js_1.OWNED_PROCESS_KILL_WAIT_MS;
45
50
  const SST_PROCESS_GROUP_POLL_MS = 25;
46
51
  const GOVERNED_PROCESS_GROUP_ENV = 'EBK_GOVERNED_PROCESS_GROUP';
47
52
  function assertGovernedAwsLifecyclePlatform(platform = process.platform) {
@@ -119,15 +124,7 @@ function signalExactGovernedProcessTree(child, signal) {
119
124
  function exactGovernedProcessTreeExists(pid) {
120
125
  if (process.platform === 'win32')
121
126
  return false;
122
- try {
123
- process.kill(-pid, 0);
124
- return true;
125
- }
126
- catch (error) {
127
- if (isMissingProcessError(error))
128
- return false;
129
- throw error;
130
- }
127
+ return (0, process_group_js_1.exactOwnedProcessGroupExists)(pid);
131
128
  }
132
129
  async function waitForExactGovernedProcessTreeExit(pid, deadline = Date.now() + SST_SIGNAL_GRACE_PERIOD_MS + SST_SIGNAL_KILL_WAIT_MS) {
133
130
  while (exactGovernedProcessTreeExists(pid)) {
@@ -248,6 +245,7 @@ function runGovernedChildProcess(input) {
248
245
  });
249
246
  let finishing = false;
250
247
  let settled = false;
248
+ let cancellationSignal;
251
249
  let spawnError;
252
250
  let unregisterSignalCleanup = () => undefined;
253
251
  let resolveChildSettled = () => undefined;
@@ -277,6 +275,9 @@ function runGovernedChildProcess(input) {
277
275
  }
278
276
  }
279
277
  try {
278
+ // A child may acknowledge cancellation with exit zero. Preserve the
279
+ // observed parent signal before callers reconcile a successful close.
280
+ result.signal ??= cancellationSignal ?? null;
280
281
  await input.afterClose?.(result);
281
282
  }
282
283
  catch (error) {
@@ -285,12 +286,18 @@ function runGovernedChildProcess(input) {
285
286
  ? error
286
287
  : new Error('Governed child close reconciliation failed.');
287
288
  }
289
+ result.signal ??= cancellationSignal ?? null;
288
290
  settled = true;
289
291
  unregisterSignalCleanup();
290
292
  resolveChildSettled();
291
293
  resolveChildRun(result);
292
294
  };
293
- unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) => stopExactGovernedProcessTree(child, signal, childSettled, () => settled), 100);
295
+ unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) => {
296
+ if (settled)
297
+ return;
298
+ cancellationSignal ??= signal;
299
+ return stopExactGovernedProcessTree(child, signal, childSettled, () => settled);
300
+ }, 100);
294
301
  child.once('error', (error) => {
295
302
  spawnError = error;
296
303
  void finish(null, null);
@@ -323,7 +330,8 @@ function captureSstEnvironmentSource(context) {
323
330
  });
324
331
  }
325
332
  function requiresSourceReconciliation(command, stage) {
326
- return (GOVERNED_STAGES.has(stage) &&
333
+ return ((GOVERNED_STAGES.has(stage) ||
334
+ (command === 'remove' && /^personal-[a-f0-9]{24}$/.test(stage))) &&
327
335
  (command === 'deploy' || command === 'refresh' || command === 'remove'));
328
336
  }
329
337
  function isGovernedLocalCommand(command) {
@@ -403,6 +411,8 @@ function createSstChildEnvironment(ambient, invocation) {
403
411
  delete sanitized.EBK_LOCAL_MUTATION_CAPABILITY_PATH;
404
412
  delete sanitized.EBK_GITHUB_JOB_WORKFLOW_REF;
405
413
  delete sanitized.EBK_NX_STAGE_LIFECYCLE;
414
+ delete sanitized.EBK_NX_TASK_CLEANUP;
415
+ delete sanitized.EBK_NX_TASK_UNLOCK;
406
416
  // Nx injects task identity, target, hash, terminal, cache, and invocation
407
417
  // metadata into every executor process. Those values describe orchestration,
408
418
  // not desired infrastructure. Never let them reach SST, where build tools
@@ -412,7 +422,9 @@ function createSstChildEnvironment(ambient, invocation) {
412
422
  delete sanitized[name];
413
423
  }
414
424
  }
415
- return { ...sanitized, ...invocation };
425
+ const childEnvironment = { ...sanitized, ...invocation };
426
+ delete childEnvironment.EBK_NX_TASK_UNLOCK;
427
+ return childEnvironment;
416
428
  }
417
429
  function assertSafeSstForwardedArguments(args) {
418
430
  const reserved = args.find((argument) => {
@@ -535,7 +547,7 @@ function buildSstCommandInvocation(command, options, context, environment = proc
535
547
  }
536
548
  return {
537
549
  consumerStage: (dependencies.personalStageResolver ??
538
- (0, personal_stage_js_1.createPersonalStageResolver)()).resolve().stage,
550
+ (0, personal_stage_js_1.createPersonalStageResolver)()).resolve(context.root).stage,
539
551
  foundationStage: 'development',
540
552
  mapped: true,
541
553
  };
@@ -550,7 +562,61 @@ function buildSstCommandInvocation(command, options, context, environment = proc
550
562
  stages.mapped) {
551
563
  throw new Error(`Full deploy is not permitted for mapped personal stage ${stages.consumerStage}. Use ebk dev against the ${stages.foundationStage} Foundation.`);
552
564
  }
565
+ const taskCleanup = environment.EBK_NX_TASK_CLEANUP !== undefined;
566
+ const taskUnlock = environment.EBK_NX_TASK_UNLOCK !== undefined;
567
+ if (taskUnlock) {
568
+ if (taskCleanup ||
569
+ command !== 'unlock' ||
570
+ kind !== 'slice' ||
571
+ environment.GITHUB_ACTIONS === 'true' ||
572
+ options.args !== undefined ||
573
+ options.cwd !== undefined ||
574
+ options.target !== undefined ||
575
+ !stages.mapped ||
576
+ stages.foundationStage !== 'development') {
577
+ throw new Error('Task unlock is restricted to the current local Slice task.');
578
+ }
579
+ const task = (0, task_identity_js_1.resolveTaskIdentity)(context.root);
580
+ if (environment.EBK_NX_TASK_UNLOCK !== task.taskId ||
581
+ stages.consumerStage !== `personal-${task.taskId}`) {
582
+ throw new Error('Task unlock cannot select another task or stage.');
583
+ }
584
+ const source = (0, local_deploy_js_1.localWorkingTreeDigest)(context.root);
585
+ if (source.commit !== environment.EBK_SOURCE_COMMIT ||
586
+ source.digest !== environment.EBK_LOCAL_SOURCE_TREE) {
587
+ throw new Error('Task unlock requires the exact authorized source tree.');
588
+ }
589
+ (0, task_stack_absence_js_1.resolveStaticTaskApp)({
590
+ workspaceRoot: context.root,
591
+ projectRoot: cwd,
592
+ projectName: context.projectName ?? '',
593
+ });
594
+ }
595
+ else if (command === 'unlock' && stages.mapped) {
596
+ throw new Error('Personal task unlock requires the current-task governed adapter.');
597
+ }
598
+ if (taskCleanup) {
599
+ if (command !== 'remove' ||
600
+ kind !== 'slice' ||
601
+ environment.GITHUB_ACTIONS === 'true' ||
602
+ options.args !== undefined ||
603
+ options.cwd !== undefined ||
604
+ options.target !== undefined ||
605
+ !stages.mapped ||
606
+ stages.foundationStage !== 'development')
607
+ throw new Error('Task cleanup is restricted to the current local Slice task and native removal.');
608
+ const task = (0, task_identity_js_1.resolveTaskIdentity)(context.root);
609
+ if (environment.EBK_NX_TASK_CLEANUP !== task.taskId ||
610
+ stages.consumerStage !== `personal-${task.taskId}`) {
611
+ throw new Error('Task cleanup cannot select another task or stage.');
612
+ }
613
+ }
614
+ else if (command === 'remove' && stages.mapped) {
615
+ throw new Error('Personal task removal is owned by ebk dev down; canonical remove cannot select a task.');
616
+ }
553
617
  const operatingPolicy = command === 'dev' ||
618
+ taskCleanup ||
619
+ taskUnlock ||
554
620
  (DEPLOYMENT_STAGES.has(stages.consumerStage) &&
555
621
  (command === 'deploy' ||
556
622
  command === 'refresh' ||
@@ -559,7 +625,7 @@ function buildSstCommandInvocation(command, options, context, environment = proc
559
625
  ? (0, index_js_2.readRepositoryOperatingPolicy)(context.root)
560
626
  : undefined;
561
627
  assertSstLifecyclePolicy(command, stages.consumerStage, environment, operatingPolicy?.deploymentProfile);
562
- const authorityStage = command === 'dev'
628
+ const authorityStage = command === 'dev' || taskCleanup || taskUnlock
563
629
  ? 'development'
564
630
  : stages.consumerStage;
565
631
  const deploymentAccount = operatingPolicy
@@ -568,6 +634,16 @@ function buildSstCommandInvocation(command, options, context, environment = proc
568
634
  const deploymentRegion = operatingPolicy
569
635
  ? (0, index_js_2.configuredDeploymentRegion)(operatingPolicy.deploymentRegion)
570
636
  : undefined;
637
+ if ((taskCleanup || taskUnlock) && deploymentAccount && deploymentRegion) {
638
+ // This read cannot create or reassign the binding. The executor separately
639
+ // verifies the current caller and Foundation owner before constructing SST.
640
+ const owner = (0, index_js_2.readRepositoryOperatingPolicy)(context.root);
641
+ (0, task_identity_js_1.assertCurrentTaskEnvironment)(context.root, {
642
+ accountId: deploymentAccount,
643
+ region: deploymentRegion,
644
+ workspaceDeploymentId: owner.workspaceDeploymentId,
645
+ });
646
+ }
571
647
  if (deploymentRegion &&
572
648
  options.region?.trim() &&
573
649
  options.region.trim() !== deploymentRegion) {
@@ -662,6 +738,12 @@ function buildSstCommandInvocation(command, options, context, environment = proc
662
738
  ? { AWS_REGION: options.region.trim() }
663
739
  : {}),
664
740
  EBK_CONSUMER_STAGE: stages.consumerStage,
741
+ ...(taskCleanup
742
+ ? { EBK_NX_TASK_CLEANUP: environment.EBK_NX_TASK_CLEANUP }
743
+ : {}),
744
+ ...(taskUnlock
745
+ ? { EBK_NX_TASK_UNLOCK: environment.EBK_NX_TASK_UNLOCK }
746
+ : {}),
665
747
  ...((committedRoleArn ?? options.expectedRoleArn?.trim())
666
748
  ? {
667
749
  EBK_EXPECTED_DEPLOYMENT_ROLE_ARN: committedRoleArn ?? options.expectedRoleArn?.trim(),
@@ -678,7 +760,41 @@ function buildSstCommandInvocation(command, options, context, environment = proc
678
760
  };
679
761
  }
680
762
  async function runSstLifecyclePreflights(command, options, context, invocation, dependencies = {}, environment = process.env) {
681
- const stage = command === 'dev'
763
+ // Standard Slices contain a Python infrastructure provisioner even when
764
+ // their application handlers are TypeScript. Fail before SST can partially
765
+ // create resources; recovery operations must remain available without build
766
+ // tooling. This is a local prerequisite, not a provider-plan gate.
767
+ if ((command === 'dev' || command === 'deploy') &&
768
+ (0, node_fs_1.existsSync)((0, node_path_1.join)(invocation.cwd, 'pyproject.toml'))) {
769
+ const manifest = (0, node_fs_1.lstatSync)((0, node_path_1.join)(invocation.cwd, 'pyproject.toml'));
770
+ if (!manifest.isFile() || manifest.isSymbolicLink()) {
771
+ throw new Error('Python tooling manifest must be a regular project file.');
772
+ }
773
+ const childEnvironment = {};
774
+ for (const key of ['PATH', 'Path', 'PATHEXT', 'SystemRoot', 'SYSTEMROOT']) {
775
+ if (environment[key] !== undefined)
776
+ childEnvironment[key] = environment[key];
777
+ }
778
+ const result = (0, node_child_process_1.spawnSync)('uv', ['--version'], {
779
+ cwd: invocation.cwd,
780
+ env: childEnvironment,
781
+ encoding: 'utf8',
782
+ timeout: 5_000,
783
+ maxBuffer: 4_096,
784
+ windowsHide: true,
785
+ shell: false,
786
+ stdio: ['ignore', 'pipe', 'pipe'],
787
+ });
788
+ if (result.error ||
789
+ result.status !== 0 ||
790
+ !/^uv \d+\.\d+\.\d+\b/.test(result.stdout ?? '')) {
791
+ // Do not surface arbitrary tool stderr or inherited credential material.
792
+ throw new Error(`Python tooling for ${context.projectName ?? 'the selected project'} requires uv on PATH. Install the workspace-documented uv version and retry the same EBK command. No SST child started.`);
793
+ }
794
+ }
795
+ const stage = command === 'dev' ||
796
+ (command === 'remove' && invocation.environment.EBK_NX_TASK_CLEANUP) ||
797
+ (command === 'unlock' && invocation.environment.EBK_NX_TASK_UNLOCK)
682
798
  ? 'development'
683
799
  : invocation.environment.EBK_CONSUMER_STAGE;
684
800
  await (dependencies.ownership ?? index_js_3.assertWorkspaceStageOwnershipForWorkspace)(context.root, stage, {
@@ -704,14 +820,17 @@ async function runSstLifecyclePreflights(command, options, context, invocation,
704
820
  }
705
821
  }
706
822
  async function runSstCommand(command, options, context, dependencies = {}) {
707
- if (command !== 'dev') {
823
+ const environment = dependencies.environment ?? process.env;
824
+ if (command !== 'dev' &&
825
+ !(command === 'remove' && environment.EBK_NX_TASK_CLEANUP !== undefined) &&
826
+ !(command === 'unlock' && environment.EBK_NX_TASK_UNLOCK !== undefined)) {
708
827
  assertGovernedAwsLifecyclePlatform(dependencies.platform);
709
828
  }
710
- const environment = dependencies.environment ?? process.env;
711
829
  const joinsGovernedProcessGroup = process.platform !== 'win32' &&
712
830
  environment[GOVERNED_PROCESS_GROUP_ENV] === '1';
713
831
  let invocation;
714
832
  let environmentSource;
833
+ let taskWriter;
715
834
  try {
716
835
  invocation = buildSstCommandInvocation(command, options, context, environment);
717
836
  if (requiresSourceReconciliation(command, invocation.environment.EBK_CONSUMER_STAGE)) {
@@ -723,9 +842,27 @@ async function runSstCommand(command, options, context, dependencies = {}) {
723
842
  await runSstLifecyclePreflights(command, options, context, invocation, dependencies, environment);
724
843
  if (environmentSource)
725
844
  (0, sst_environment_source_js_1.reconcileSstEnvironmentSourceTree)(environmentSource);
845
+ if (command === 'dev' ||
846
+ invocation.environment.EBK_NX_TASK_CLEANUP ||
847
+ invocation.environment.EBK_NX_TASK_UNLOCK) {
848
+ // Rebuild after asynchronous authorization: source, task owner, and
849
+ // committed account/Region must still agree immediately before spawn.
850
+ const current = buildSstCommandInvocation(command, options, context, environment);
851
+ if (JSON.stringify(current) !== JSON.stringify(invocation))
852
+ throw new Error('Task native invocation changed during preflight.');
853
+ taskWriter = (dependencies.acquireTaskWriter ?? task_native_writer_js_1.acquireTaskNativeWriterLease)(context, invocation.environment.EBK_CONSUMER_STAGE.slice('personal-'.length), command === 'unlock', dependencies.taskNativeWriterEffects);
854
+ taskWriter.assertCurrent();
855
+ }
726
856
  }
727
857
  catch (error) {
728
858
  let restorationError;
859
+ try {
860
+ // No native child has been spawned during this preflight phase.
861
+ taskWriter?.release();
862
+ }
863
+ catch (releaseError) {
864
+ devkit_1.logger.error(`Task native writer preflight evidence retained: ${releaseError instanceof Error ? releaseError.message : String(releaseError)}`);
865
+ }
729
866
  if (environmentSource) {
730
867
  try {
731
868
  (0, sst_environment_source_js_1.reconcileSstEnvironmentSourceTree)(environmentSource);
@@ -744,14 +881,31 @@ async function runSstCommand(command, options, context, dependencies = {}) {
744
881
  }
745
882
  devkit_1.logger.info(`Running workspace SST: ${command} --stage ${invocation.environment.EBK_CONSUMER_STAGE} foundationStage=${invocation.environment.EBK_FOUNDATION_STAGE} (${invocation.cwd})`);
746
883
  return new Promise((resolve) => {
747
- const child = (dependencies.spawnChild ?? node_child_process_1.spawn)(invocation.executable, invocation.args, {
748
- cwd: invocation.cwd,
749
- detached: process.platform !== 'win32' && !joinsGovernedProcessGroup,
750
- env: createSstChildEnvironment(environment, invocation.environment),
751
- shell: false,
752
- stdio: 'inherit',
753
- });
884
+ let child;
885
+ try {
886
+ taskWriter?.assertCurrent();
887
+ child = (dependencies.spawnChild ?? node_child_process_1.spawn)(invocation.executable, invocation.args, {
888
+ cwd: invocation.cwd,
889
+ detached: process.platform !== 'win32' && !joinsGovernedProcessGroup,
890
+ env: createSstChildEnvironment(environment, invocation.environment),
891
+ shell: false,
892
+ stdio: 'inherit',
893
+ });
894
+ }
895
+ catch (error) {
896
+ try {
897
+ taskWriter?.release();
898
+ }
899
+ catch {
900
+ /* Keep ambiguous lease evidence. */
901
+ }
902
+ devkit_1.logger.error(error instanceof Error ? error.message : String(error));
903
+ resolve({ success: false });
904
+ return;
905
+ }
754
906
  let settled = false;
907
+ let cancellationSignal;
908
+ let writerRegistrationFailed = false;
755
909
  let unregisterSignalCleanup = () => undefined;
756
910
  let resolveChildSettled = () => undefined;
757
911
  const childSettled = new Promise((resolveChild) => {
@@ -763,11 +917,21 @@ async function runSstCommand(command, options, context, dependencies = {}) {
763
917
  settled = true;
764
918
  unregisterSignalCleanup();
765
919
  resolveChildSettled();
766
- resolve({ success });
920
+ try {
921
+ if (writerRegistrationFailed)
922
+ throw new Error('Native child registration failed.');
923
+ taskWriter?.release();
924
+ }
925
+ catch (error) {
926
+ success = false;
927
+ devkit_1.logger.error(`Task native writer evidence retained: ${error instanceof Error ? error.message : String(error)}`);
928
+ }
929
+ resolve({ success: success && !cancellationSignal });
767
930
  };
768
931
  unregisterSignalCleanup = (0, federated_credential_transport_js_1.registerGovernedSignalCleanup)((signal) => {
769
932
  if (settled)
770
933
  return;
934
+ cancellationSignal ??= signal;
771
935
  return stopExactGovernedProcessTree(child, signal, childSettled, () => settled, !joinsGovernedProcessGroup);
772
936
  }, 100);
773
937
  child.on('error', (error) => {
@@ -789,13 +953,19 @@ async function runSstCommand(command, options, context, dependencies = {}) {
789
953
  devkit_1.logger.error(`Failed to stop retained SST descendant process tree: ${error instanceof Error ? error.message : String(error)}`);
790
954
  }
791
955
  if (retainedProcessTree) {
956
+ // The leader's exit is not evidence that its native writers ended.
957
+ // Keep task lease receipts for explicit, owner-proven recovery.
958
+ if (taskWriter)
959
+ writerRegistrationFailed = true;
792
960
  devkit_1.logger.error('SST exited before its exact descendant process tree stopped.');
793
961
  }
794
962
  }
795
- if (code !== 0) {
796
- devkit_1.logger.error(signal
797
- ? `SST ${command} terminated with signal ${signal}.`
798
- : `SST ${command} exited with status ${code ?? 'unknown'}.`);
963
+ if (code !== 0 || cancellationSignal) {
964
+ devkit_1.logger.error(cancellationSignal
965
+ ? `SST ${command} cancelled by ${cancellationSignal}.`
966
+ : signal
967
+ ? `SST ${command} terminated with signal ${signal}.`
968
+ : `SST ${command} exited with status ${code ?? 'unknown'}.`);
799
969
  if (command === 'deploy' || command === 'remove') {
800
970
  devkit_1.logger.error(`If the stack is locked, run pnpm nx run ${context.projectName ?? '<project>'}:unlock --stage=${options.stage}.`);
801
971
  }
@@ -810,10 +980,14 @@ async function runSstCommand(command, options, context, dependencies = {}) {
810
980
  devkit_1.logger.error(`Failed to restore SST tool-owned source: ${error instanceof Error ? error.message : String(error)}`);
811
981
  }
812
982
  }
813
- const applySucceeded = code === 0 && sourceRestored && !retainedProcessTree;
983
+ const applySucceeded = code === 0 &&
984
+ !cancellationSignal &&
985
+ sourceRestored &&
986
+ !retainedProcessTree;
814
987
  let generatedSecretRetirementSucceeded = true;
815
988
  if (applySucceeded &&
816
989
  command === 'remove' &&
990
+ !invocation.environment.EBK_NX_TASK_CLEANUP &&
817
991
  projectKind(context) === 'slice') {
818
992
  try {
819
993
  await (dependencies.generatedSecretRetirement ??
@@ -826,6 +1000,20 @@ async function runSstCommand(command, options, context, dependencies = {}) {
826
1000
  }
827
1001
  settle(applySucceeded && generatedSecretRetirementSucceeded);
828
1002
  });
1003
+ if (taskWriter && child.pid) {
1004
+ try {
1005
+ taskWriter.recordChild(child.pid, !joinsGovernedProcessGroup);
1006
+ }
1007
+ catch (error) {
1008
+ writerRegistrationFailed = true;
1009
+ devkit_1.logger.error(`Task native child identity was not retained: ${error instanceof Error ? error.message : String(error)}`);
1010
+ // Never leave an unrecorded writer running after a failed registration.
1011
+ void stopExactGovernedProcessTree(child, 'SIGTERM', childSettled, () => settled, !joinsGovernedProcessGroup).catch((stopError) => {
1012
+ writerRegistrationFailed = true;
1013
+ devkit_1.logger.error(`Unregistered native child termination failed; writer evidence retained: ${stopError instanceof Error ? stopError.message : String(stopError)}`);
1014
+ });
1015
+ }
1016
+ }
829
1017
  });
830
1018
  }
831
1019
  //# sourceMappingURL=run-sst-command.js.map
@@ -11,6 +11,7 @@ interface SstEnvironmentSourceSnapshot {
11
11
  relativePath: string;
12
12
  }
13
13
  export interface SstEnvironmentSourceTreeSnapshot {
14
+ nextSource?: SstEnvironmentSourceSnapshot;
14
15
  projectRoot: string;
15
16
  rootPythonSourcePath: string;
16
17
  rootSourcePath: string;
@@ -21,5 +22,12 @@ export declare function captureSstEnvironmentSourceTree(input: {
21
22
  projectRoot: string;
22
23
  workspaceRoot: string;
23
24
  }): SstEnvironmentSourceTreeSnapshot;
25
+ /** Capture outside the complete Nx child, including its Next build dependencies.
26
+ * The inner SST boundary alone starts after those dependencies have run. */
27
+ export declare function captureNextEnvironmentSource(input: {
28
+ projectRoot: string;
29
+ workspaceRoot: string;
30
+ }): SstEnvironmentSourceSnapshot | undefined;
31
+ export declare function reconcileNextEnvironmentSource(retained: SstEnvironmentSourceSnapshot | undefined, workspaceRoot: string): void;
24
32
  export declare function reconcileSstEnvironmentSourceTree(retained: SstEnvironmentSourceTreeSnapshot): void;
25
33
  export {};
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.captureSstEnvironmentSourceTree = captureSstEnvironmentSourceTree;
4
+ exports.captureNextEnvironmentSource = captureNextEnvironmentSource;
5
+ exports.reconcileNextEnvironmentSource = reconcileNextEnvironmentSource;
4
6
  exports.reconcileSstEnvironmentSourceTree = reconcileSstEnvironmentSourceTree;
5
7
  const node_fs_1 = require("node:fs");
6
8
  const node_path_1 = require("node:path");
@@ -180,7 +182,12 @@ function captureSstEnvironmentSourceTree(input) {
180
182
  if (!snapshots.some(({ absolutePath }) => absolutePath === rootSourcePath)) {
181
183
  throw new Error('SST lifecycle project lacks its exact root environment source.');
182
184
  }
185
+ const nextSource = captureNextEnvironmentSource({
186
+ projectRoot,
187
+ workspaceRoot,
188
+ });
183
189
  return {
190
+ ...(nextSource ? { nextSource } : {}),
184
191
  projectRoot,
185
192
  rootPythonSourcePath,
186
193
  rootSourcePath,
@@ -188,7 +195,54 @@ function captureSstEnvironmentSourceTree(input) {
188
195
  workspaceRoot,
189
196
  };
190
197
  }
198
+ /** Capture outside the complete Nx child, including its Next build dependencies.
199
+ * The inner SST boundary alone starts after those dependencies have run. */
200
+ function captureNextEnvironmentSource(input) {
201
+ const nextPath = (0, node_path_1.join)(input.projectRoot, 'web', 'next-env.d.ts');
202
+ // existsSync follows links and would treat a dangling alias as absence.
203
+ // Inspect the directory entry so aliases are refused before the child writes.
204
+ if (!(0, node_fs_1.lstatSync)(nextPath, { throwIfNoEntry: false }))
205
+ return undefined;
206
+ const workspaceRoot = (0, node_fs_1.realpathSync)(input.workspaceRoot);
207
+ const projectRoot = (0, node_fs_1.realpathSync)(input.projectRoot);
208
+ normalizedRelativePath(workspaceRoot, projectRoot);
209
+ const nextSource = stableSstEnvironmentSource((0, node_path_1.join)(projectRoot, 'web', 'next-env.d.ts'), workspaceRoot);
210
+ // Arbitrary declarations remain ordinary source; never normalize or ignore them.
211
+ return (0, sst_environment_source_format_js_1.isExactGeneratedNextEnvironmentSourceBytes)(nextSource.bytes)
212
+ ? nextSource
213
+ : undefined;
214
+ }
215
+ function reconcileNextEnvironmentSource(retained, workspaceRoot) {
216
+ if (retained) {
217
+ workspaceRoot = (0, node_fs_1.realpathSync)(workspaceRoot);
218
+ const current = stableSstEnvironmentSource(retained.absolutePath, workspaceRoot);
219
+ if (!(0, sst_environment_source_format_js_1.isExactGeneratedNextEnvironmentSourceBytes)(current.bytes))
220
+ throw new Error('Next lifecycle declaration changed beyond exact generated dev/build output.');
221
+ restoreExistingSstEnvironmentSource(retained, current, workspaceRoot);
222
+ }
223
+ }
191
224
  function reconcileSstEnvironmentSourceTree(retained) {
225
+ const failures = [];
226
+ try {
227
+ reconcileNextEnvironmentSource(retained.nextSource, retained.workspaceRoot);
228
+ }
229
+ catch (error) {
230
+ failures.push(error);
231
+ }
232
+ try {
233
+ reconcileNativeSstEnvironmentSources(retained);
234
+ }
235
+ catch (error) {
236
+ failures.push(error);
237
+ }
238
+ if (failures.length === 1)
239
+ throw failures[0];
240
+ if (failures.length > 1)
241
+ throw new Error(failures
242
+ .map((error) => error instanceof Error ? error.message : String(error))
243
+ .join('; '));
244
+ }
245
+ function reconcileNativeSstEnvironmentSources(retained) {
192
246
  const retainedByPath = new Map(retained.snapshots.map((snapshot) => [snapshot.absolutePath, snapshot]));
193
247
  const observed = discoverSstEnvironmentSources(retained);
194
248
  const observedByPath = new Map(observed.map((snapshot) => [snapshot.absolutePath, snapshot]));
@@ -0,0 +1,15 @@
1
+ import { type ExecutorContext } from '@nx/devkit';
2
+ import { type TaskAuthorityEffects } from '../../local-dev/task-authority.js';
3
+ import { type TaskNativeWriterEffects } from '../../local-dev/task-native-writer.js';
4
+ import { createLocalFederatedCredentialTransport } from '../local-deploy/federated-credential-transport.js';
5
+ import { runSstCommand, type SstLifecycleOptions } from './run-sst-command.js';
6
+ export interface TaskUnlockDependencies {
7
+ authority?: TaskAuthorityEffects;
8
+ createTransport?: typeof createLocalFederatedCredentialTransport;
9
+ environment?: NodeJS.ProcessEnv;
10
+ run?: typeof runSstCommand;
11
+ writers?: TaskNativeWriterEffects;
12
+ }
13
+ export declare function runCurrentTaskUnlock(options: SstLifecycleOptions, context: ExecutorContext, dependencies?: TaskUnlockDependencies): Promise<{
14
+ success: boolean;
15
+ }>;