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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (805) hide show
  1. package/README.md +44 -10
  2. package/executors.json +21 -1
  3. package/generators.json +10 -0
  4. package/package.json +31 -7
  5. package/src/aws/child-environment.d.ts +10 -0
  6. package/src/aws/child-environment.js +77 -0
  7. package/src/aws/identity.d.ts +13 -0
  8. package/src/aws/identity.js +41 -0
  9. package/src/aws-authority/index.d.ts +2 -0
  10. package/src/aws-authority/index.js +6 -0
  11. package/src/aws-authority/lambda-policy-ordering.d.ts +38 -0
  12. package/src/aws-authority/lambda-policy-ordering.js +56 -0
  13. package/src/aws-authority/stage-authority.d.ts +248 -0
  14. package/src/aws-authority/stage-authority.js +3558 -0
  15. package/src/blueprints/external-sandbox.d.ts +1 -1
  16. package/src/blueprints/external-sandbox.js +21 -9
  17. package/src/blueprints/manifest.d.ts +1 -1
  18. package/src/blueprints/resolver.js +28 -15
  19. package/src/cli/bootstrap.d.ts +1 -1
  20. package/src/cli/deploy-runtime.d.ts +30 -0
  21. package/src/cli/deploy-runtime.js +174 -0
  22. package/src/cli/dev-command.d.ts +18 -4
  23. package/src/cli/dev-command.js +71 -0
  24. package/src/cli/main.d.ts +9 -1
  25. package/src/cli/main.js +157 -24
  26. package/src/cli/output.d.ts +1 -1
  27. package/src/cli/output.js +1 -1
  28. package/src/cli/personal-secret-runtime.d.ts +12 -0
  29. package/src/cli/personal-secret-runtime.js +18 -3
  30. package/src/cli/secret-terminal.js +1 -1
  31. package/src/container-images.d.ts +1 -1
  32. package/src/container-images.js +1 -1
  33. package/src/developer-agent/context.js +41 -9
  34. package/src/developer-agent/generator-planning.js +20 -6
  35. package/src/developer-agent/git-inspection.d.ts +6 -2
  36. package/src/developer-agent/git-inspection.js +78 -6
  37. package/src/developer-agent/model.d.ts +5 -3
  38. package/src/developer-agent/model.js +4 -4
  39. package/src/developer-agent/operation-registry.d.ts +15 -0
  40. package/src/developer-agent/operation-registry.js +342 -49
  41. package/src/developer-agent/planning.d.ts +8 -1
  42. package/src/developer-agent/planning.js +39 -16
  43. package/src/developer-agent/preview-changes.d.ts +2 -0
  44. package/src/developer-agent/preview-changes.js +14 -2
  45. package/src/developer-agent/preview-source.js +3 -0
  46. package/src/developer-agent/validation.js +25 -9
  47. package/src/developer-agent/workspace-inspection.js +60 -5
  48. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  49. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  50. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  51. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  52. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  53. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  54. package/src/executors/dev-task-cleanup/schema.json +9 -0
  55. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  56. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  57. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  58. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  59. package/src/executors/fleet/fleet.js +1 -1
  60. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  61. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  62. package/src/executors/foundation-preflight/schema.json +5 -0
  63. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  64. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  65. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  66. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  67. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  68. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  69. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  70. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  71. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  72. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  73. package/src/executors/github-bootstrap/schema.json +7 -1
  74. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  75. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  76. package/src/executors/infrastructure-plan/schema.json +12 -52
  77. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  78. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  79. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  80. package/src/executors/local-deploy/local-approval.js +39 -0
  81. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  82. package/src/executors/local-deploy/local-deploy.js +1404 -0
  83. package/src/executors/local-deploy/schema.json +70 -0
  84. package/src/executors/refresh/refresh.js +2 -2
  85. package/src/executors/remove/remove.js +2 -2
  86. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  87. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  88. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  89. package/src/executors/secret-initialize/schema.json +42 -0
  90. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  91. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  92. package/src/executors/secret-metadata/schema.json +5 -0
  93. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  94. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  95. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  96. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  97. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  98. package/src/executors/sst-lifecycle/governed-native-operation.js +163 -0
  99. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  100. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  101. package/src/executors/sst-lifecycle/run-sst-command.d.ts +46 -6
  102. package/src/executors/sst-lifecycle/run-sst-command.js +750 -71
  103. package/src/executors/sst-lifecycle/schema.json +8 -1
  104. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  105. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  106. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  107. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  108. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  109. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  110. package/src/executors/unlock/unlock.js +2 -2
  111. package/src/foundation/capability-plan.d.ts +43 -0
  112. package/src/foundation/capability-plan.js +168 -0
  113. package/src/foundation/cost-estimate.d.ts +170 -0
  114. package/src/foundation/cost-estimate.js +683 -0
  115. package/src/foundation/discovery.d.ts +14 -11
  116. package/src/foundation/discovery.js +32 -6
  117. package/src/foundation/index.d.ts +4 -0
  118. package/src/foundation/index.js +11 -0
  119. package/src/foundation/local-database-contract.d.ts +20 -0
  120. package/src/foundation/local-database-contract.js +262 -13
  121. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  122. package/src/foundation/local-private-smoke-access.js +197 -0
  123. package/src/foundation/logging-preflight.js +1 -1
  124. package/src/foundation/logging.d.ts +3 -1
  125. package/src/foundation/logging.js +1 -1
  126. package/src/foundation/partial-state.d.ts +10 -0
  127. package/src/foundation/partial-state.js +21 -0
  128. package/src/foundation/preflight.js +37 -18
  129. package/src/foundation/private-smoke-access.d.ts +25 -0
  130. package/src/foundation/private-smoke-access.js +135 -0
  131. package/src/foundation/private-smoke-admission.d.ts +45 -0
  132. package/src/foundation/private-smoke-admission.js +180 -0
  133. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  134. package/src/foundation/private-smoke-control-plane.js +184 -0
  135. package/src/foundation/provision-database-bindings.d.ts +5 -0
  136. package/src/foundation/provision-database-bindings.js +41 -8
  137. package/src/foundation/provision-logical-database.js +15 -8
  138. package/src/foundation/requirements.d.ts +3 -3
  139. package/src/foundation/requirements.js +24 -12
  140. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  141. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  142. package/src/foundation/router-waf.d.ts +149 -0
  143. package/src/foundation/router-waf.js +809 -0
  144. package/src/foundation/stages.d.ts +1 -0
  145. package/src/foundation/stages.js +11 -0
  146. package/src/generators/blueprint/blueprint.d.ts +5 -0
  147. package/src/generators/blueprint/blueprint.js +102 -0
  148. package/src/generators/blueprint/files.d.ts +6 -0
  149. package/src/generators/blueprint/files.js +217 -0
  150. package/src/generators/blueprint/schema.d.ts +4 -0
  151. package/src/generators/blueprint/schema.json +18 -0
  152. package/src/generators/formatting.d.ts +8 -0
  153. package/src/generators/formatting.js +141 -0
  154. package/src/generators/function/function.js +38 -17
  155. package/src/generators/logging-registry.d.ts +2 -0
  156. package/src/generators/logging-registry.js +22 -0
  157. package/src/generators/post-generation-install.js +2 -2
  158. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  159. package/src/generators/preset/dependency-overrides.js +55 -0
  160. package/src/generators/preset/generator.js +43 -3
  161. package/src/generators/preset/schema.d.ts +10 -0
  162. package/src/generators/preset/schema.json +47 -0
  163. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  164. package/src/generators/preset/workspace-files-adopter-skills.js +324 -0
  165. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  166. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  167. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  168. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  169. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  170. package/src/generators/preset/workspace-files-developer-agent.js +162 -44
  171. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  172. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  173. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  174. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  175. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  176. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  177. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  178. package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
  179. package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
  180. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  181. package/src/generators/preset/workspace-files-stage-authority.js +529 -0
  182. package/src/generators/preset/workspace-files-thin-deploy.d.ts +65 -0
  183. package/src/generators/preset/workspace-files-thin-deploy.js +2507 -0
  184. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  185. package/src/generators/preset/workspace-files-thin-docs.js +370 -0
  186. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  187. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  188. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  189. package/src/generators/preset/workspace-files.d.ts +18 -2
  190. package/src/generators/preset/workspace-files.js +1525 -609
  191. package/src/generators/repository-policy/repository-policy.js +235 -5
  192. package/src/generators/repository-policy/schema.d.ts +10 -0
  193. package/src/generators/repository-policy/schema.json +80 -4
  194. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  195. package/src/generators/repository-policy/tree-policy.js +25 -0
  196. package/src/generators/slice/built-in-plan-api-contract-files.js +49 -11
  197. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  198. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  199. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  200. package/src/generators/slice/built-in-plan-authorization-files.js +102 -334
  201. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +975 -233
  202. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  203. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  204. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  205. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  206. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  207. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  208. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  209. package/src/generators/slice/built-in-plan-data-files.js +176 -1200
  210. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  211. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  212. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  213. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  214. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  215. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  216. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +25 -2
  217. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  218. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  219. package/src/generators/slice/built-in-plan-frontend-files.js +14 -3
  220. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  221. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -730
  222. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +75 -14
  223. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  224. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  225. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  226. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  227. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  228. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  229. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  230. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  231. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  232. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  233. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  234. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  235. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  236. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  237. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  238. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  239. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  240. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  241. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  242. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  243. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  244. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  246. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  247. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  248. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  249. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  250. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  251. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  252. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  253. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  254. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  255. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-metadata-files.js +159 -29
  257. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  258. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  259. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  261. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  262. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  263. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  264. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  265. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  266. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  267. package/src/generators/slice/built-in-plan-reliability-files.js +283 -44
  268. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  269. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  270. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  271. package/src/generators/slice/built-in-plan-shared.js +41 -19
  272. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  273. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  274. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  276. package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
  277. package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
  278. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  279. package/src/generators/slice/built-in-plan-testing-persistence-files.js +180 -0
  280. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  281. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  282. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  283. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  284. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  285. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  286. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  287. package/src/generators/slice/built-in-plan.d.ts +11 -1
  288. package/src/generators/slice/built-in-plan.js +83 -30
  289. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  290. package/src/generators/slice/data-policy-review-seed.js +22 -0
  291. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  292. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  293. package/src/generators/slice/local-source-identity.d.ts +2 -0
  294. package/src/generators/slice/local-source-identity.js +31 -0
  295. package/src/generators/slice/persistence-contract.d.ts +14 -0
  296. package/src/generators/slice/persistence-contract.js +32 -0
  297. package/src/generators/slice/slice.js +61 -50
  298. package/src/generators/sql/schema.d.ts +7 -0
  299. package/src/generators/sql/schema.json +38 -0
  300. package/src/generators/sql/sql.d.ts +6 -0
  301. package/src/generators/sql/sql.js +53 -0
  302. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  303. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  304. package/src/generators/upgrade/upgrade.d.ts +15 -1
  305. package/src/generators/upgrade/upgrade.js +435 -44
  306. package/src/generators/workload/frozen-container.d.ts +1 -1
  307. package/src/generators/workload/performance-registration.d.ts +1 -0
  308. package/src/generators/workload/performance-registration.js +9 -11
  309. package/src/generators/workload/service-performance-files.d.ts +1 -0
  310. package/src/generators/workload/service-performance-files.js +27 -7
  311. package/src/generators/workload/workload.d.ts +1 -1
  312. package/src/generators/workload/workload.js +105 -29
  313. package/src/git-policy/action-pins.d.ts +5 -0
  314. package/src/git-policy/action-pins.js +5 -0
  315. package/src/git-policy/github-bootstrap.d.ts +48 -8
  316. package/src/git-policy/github-bootstrap.js +344 -176
  317. package/src/git-policy/routing.d.ts +7 -1
  318. package/src/git-policy/routing.js +62 -1
  319. package/src/index.d.ts +1 -0
  320. package/src/index.js +1 -0
  321. package/src/infrastructure-change/local-capability.d.ts +73 -0
  322. package/src/infrastructure-change/local-capability.js +114 -0
  323. package/src/infrastructure-change/model.d.ts +25 -4
  324. package/src/infrastructure-change/model.js +1 -0
  325. package/src/infrastructure-change/normalize.d.ts +4 -0
  326. package/src/infrastructure-change/normalize.js +47 -7
  327. package/src/infrastructure-change/plan.d.ts +30 -3
  328. package/src/infrastructure-change/plan.js +323 -13
  329. package/src/infrastructure-change/risk.d.ts +3 -1
  330. package/src/infrastructure-change/risk.js +96 -16
  331. package/src/local-dev/browser-verification.d.ts +37 -0
  332. package/src/local-dev/browser-verification.js +281 -0
  333. package/src/local-dev/contracts.d.ts +10 -1
  334. package/src/local-dev/contracts.js +114 -13
  335. package/src/local-dev/dev-command-core.js +24 -5
  336. package/src/local-dev/docker-credential-health.d.ts +14 -0
  337. package/src/local-dev/docker-credential-health.js +94 -0
  338. package/src/local-dev/environment-inspector.d.ts +7 -0
  339. package/src/local-dev/environment-inspector.js +42 -15
  340. package/src/local-dev/environment-state.js +2 -2
  341. package/src/local-dev/errors.d.ts +1 -1
  342. package/src/local-dev/errors.js +2 -0
  343. package/src/local-dev/fleet-client.js +2 -2
  344. package/src/local-dev/fleet-configuration.js +57 -25
  345. package/src/local-dev/fleet-inventory.js +58 -22
  346. package/src/local-dev/fleet-ipc.d.ts +7 -0
  347. package/src/local-dev/fleet-ipc.js +14 -2
  348. package/src/local-dev/fleet-launcher.d.ts +6 -0
  349. package/src/local-dev/fleet-launcher.js +16 -4
  350. package/src/local-dev/fleet-logs.js +50 -22
  351. package/src/local-dev/fleet-process.d.ts +20 -1
  352. package/src/local-dev/fleet-process.js +197 -41
  353. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  354. package/src/local-dev/fleet-runner-evidence.js +56 -0
  355. package/src/local-dev/fleet-runtime.js +268 -229
  356. package/src/local-dev/fleet-session.d.ts +2 -0
  357. package/src/local-dev/fleet-session.js +28 -11
  358. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  359. package/src/local-dev/fleet-state.d.ts +5 -2
  360. package/src/local-dev/fleet-state.js +25 -4
  361. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  362. package/src/local-dev/fleet-supervisor.js +66 -11
  363. package/src/local-dev/fleet-web-start.d.ts +12 -0
  364. package/src/local-dev/fleet-web-start.js +48 -0
  365. package/src/local-dev/identity.js +3 -14
  366. package/src/local-dev/index.d.ts +1 -0
  367. package/src/local-dev/index.js +1 -0
  368. package/src/local-dev/native-completion.d.ts +9 -0
  369. package/src/local-dev/native-completion.js +130 -0
  370. package/src/local-dev/nx-workspace.d.ts +4 -2
  371. package/src/local-dev/nx-workspace.js +11 -6
  372. package/src/local-dev/personal-stage.d.ts +4 -5
  373. package/src/local-dev/personal-stage.js +6 -54
  374. package/src/local-dev/port-claims.d.ts +13 -0
  375. package/src/local-dev/port-claims.js +46 -0
  376. package/src/local-dev/ports.d.ts +14 -2
  377. package/src/local-dev/ports.js +78 -3
  378. package/src/local-dev/private-state.d.ts +11 -0
  379. package/src/local-dev/private-state.js +146 -40
  380. package/src/local-dev/process-group.d.ts +4 -0
  381. package/src/local-dev/process-group.js +29 -0
  382. package/src/local-dev/process-identity.d.ts +8 -0
  383. package/src/local-dev/process-identity.js +31 -1
  384. package/src/local-dev/proxy.js +11 -12
  385. package/src/local-dev/runtime-paths.js +1 -1
  386. package/src/local-dev/slice-claim.js +1 -1
  387. package/src/local-dev/slice-runner.d.ts +15 -6
  388. package/src/local-dev/slice-runner.js +189 -54
  389. package/src/local-dev/task-attachment.d.ts +17 -0
  390. package/src/local-dev/task-attachment.js +73 -0
  391. package/src/local-dev/task-authority.d.ts +10 -0
  392. package/src/local-dev/task-authority.js +27 -0
  393. package/src/local-dev/task-identity.d.ts +33 -0
  394. package/src/local-dev/task-identity.js +418 -0
  395. package/src/local-dev/task-native-writer.d.ts +18 -0
  396. package/src/local-dev/task-native-writer.js +329 -0
  397. package/src/local-dev/tls.js +8 -2
  398. package/src/local-dev/web-launch.d.ts +9 -0
  399. package/src/local-dev/web-launch.js +130 -0
  400. package/src/ownership/composition.d.ts +2 -1
  401. package/src/ownership/composition.js +1 -0
  402. package/src/performance/cost-collection.d.ts +1 -1
  403. package/src/performance/cost-collection.js +4 -2
  404. package/src/performance/cost-controls.d.ts +8 -4
  405. package/src/performance/cost-controls.js +39 -28
  406. package/src/performance/evidence.d.ts +1 -1
  407. package/src/performance/evidence.js +5 -3
  408. package/src/performance/load-safety.js +5 -3
  409. package/src/performance/model.d.ts +4 -4
  410. package/src/performance/model.js +4 -5
  411. package/src/performance/scenario.d.ts +22 -0
  412. package/src/performance/scenario.js +100 -92
  413. package/src/release/index.d.ts +0 -2
  414. package/src/release/index.js +0 -2
  415. package/src/release/source-authority.d.ts +5 -5
  416. package/src/release/source-authority.js +141 -124
  417. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  418. package/src/repository-policy/aurora-preflight.js +4 -1
  419. package/src/repository-policy/capacity-migration.d.ts +3 -0
  420. package/src/repository-policy/capacity-migration.js +21 -0
  421. package/src/repository-policy/deployment-plan.d.ts +4 -1
  422. package/src/repository-policy/deployment-plan.js +9 -0
  423. package/src/repository-policy/foundation-profile.js +10 -1
  424. package/src/repository-policy/policy.d.ts +57 -3
  425. package/src/repository-policy/policy.js +497 -11
  426. package/src/schemas/blueprint-v1.json +5 -4
  427. package/src/schemas/foundation-requirement-v1.json +5 -4
  428. package/src/schemas/performance-policy-v1.json +3 -3
  429. package/src/schemas/repository-policy-v1.json +130 -6
  430. package/src/schemas/testing-evidence-result-v1.json +1 -1
  431. package/src/secrets/adapters.d.ts +7 -2
  432. package/src/secrets/adapters.js +34 -3
  433. package/src/secrets/aws-control-plane.d.ts +10 -1
  434. package/src/secrets/aws-control-plane.js +67 -0
  435. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  436. package/src/secrets/generated-aws-control-plane.js +259 -0
  437. package/src/secrets/metadata.js +38 -10
  438. package/src/secrets/model.d.ts +8 -1
  439. package/src/secrets/model.js +24 -3
  440. package/src/secrets/operator.d.ts +91 -3
  441. package/src/secrets/operator.js +463 -13
  442. package/src/secrets/personal-command.d.ts +18 -2
  443. package/src/secrets/personal-command.js +66 -12
  444. package/src/secrets/registry.d.ts +2 -1
  445. package/src/secrets/registry.js +18 -1
  446. package/src/secrets/verification.js +15 -2
  447. package/src/secrets/workload-access.js +10 -2
  448. package/src/sst-environment-source-format.d.ts +6 -0
  449. package/src/sst-environment-source-format.js +199 -0
  450. package/src/supply-chain/action-pins.js +61 -7
  451. package/src/supply-chain/blueprint-trust-git.js +85 -24
  452. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  453. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  454. package/src/supply-chain/build-output-bounds.js +12 -0
  455. package/src/supply-chain/build-output.d.ts +7 -1
  456. package/src/supply-chain/build-output.js +177 -24
  457. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  458. package/src/supply-chain/ecr-scanning.js +11 -7
  459. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  460. package/src/supply-chain/ecs-deployed-image.js +6 -4
  461. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  462. package/src/supply-chain/generated-command.js +1 -0
  463. package/src/supply-chain/generated-container-release-command.js +1285 -124
  464. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  465. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  466. package/src/supply-chain/generated-files.js +25 -14
  467. package/src/supply-chain/generated-scanner-command.js +2 -1
  468. package/src/supply-chain/index.d.ts +1 -1
  469. package/src/supply-chain/index.js +2 -1
  470. package/src/supply-chain/sbom.d.ts +1 -1
  471. package/src/supply-chain/sbom.js +30 -5
  472. package/src/supply-chain/scanner.js +3 -0
  473. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  474. package/src/testing-evidence/fixture-scope.js +4 -2
  475. package/src/testing-evidence/result.d.ts +2 -1
  476. package/src/testing-evidence/result.js +18 -4
  477. package/src/workload-roles/account-baseline.d.ts +11 -0
  478. package/src/workload-roles/account-baseline.js +253 -16
  479. package/src/workload-roles/authority.d.ts +3 -1
  480. package/src/workload-roles/authority.js +48 -2
  481. package/src/workload-roles/aws-s3-state.js +27 -0
  482. package/src/workload-roles/boundary.d.ts +2 -1
  483. package/src/workload-roles/boundary.js +9 -2
  484. package/src/workload-roles/handler.js +52 -24
  485. package/src/workload-roles/index.d.ts +10 -17
  486. package/src/workload-roles/index.js +5 -18
  487. package/src/workload-roles/injection.js +1 -1
  488. package/src/workload-roles/provisioner.js +12 -4
  489. package/src/workload-roles/registration.d.ts +1 -0
  490. package/src/workload-roles/registration.js +5 -0
  491. package/src/workload-roles/stage-boundary.js +1 -1
  492. package/src/workload-roles/standard-slice.js +3 -3
  493. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  494. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  495. package/src/workspace-deployment/identity.d.ts +3 -0
  496. package/src/workspace-deployment/identity.js +22 -0
  497. package/src/workspace-deployment/index.d.ts +4 -0
  498. package/src/workspace-deployment/index.js +8 -0
  499. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  500. package/src/workspace-deployment/migration-evidence.js +83 -0
  501. package/src/workspace-deployment/migration.d.ts +27 -0
  502. package/src/workspace-deployment/migration.js +109 -0
  503. package/src/workspace-deployment/ownership.d.ts +81 -0
  504. package/src/workspace-deployment/ownership.js +381 -0
  505. package/src/api-contract/baseline-update.js.map +0 -1
  506. package/src/api-contract/compatibility.js.map +0 -1
  507. package/src/api-contract/contract-graph.js.map +0 -1
  508. package/src/api-contract/evidence.js.map +0 -1
  509. package/src/api-contract/index.js.map +0 -1
  510. package/src/api-contract/model.fixtures.d.ts +0 -2
  511. package/src/api-contract/model.fixtures.js +0 -81
  512. package/src/api-contract/model.fixtures.js.map +0 -1
  513. package/src/api-contract/model.js.map +0 -1
  514. package/src/api-contract/rollout.js.map +0 -1
  515. package/src/authorization/compatibility.js.map +0 -1
  516. package/src/authorization/index.js.map +0 -1
  517. package/src/blueprints/execution.js.map +0 -1
  518. package/src/blueprints/external-sandbox.js.map +0 -1
  519. package/src/blueprints/index.js.map +0 -1
  520. package/src/blueprints/inputs.js.map +0 -1
  521. package/src/blueprints/manifest.js.map +0 -1
  522. package/src/blueprints/resolver.js.map +0 -1
  523. package/src/blueprints/transitions.js.map +0 -1
  524. package/src/cli/agent-command.js.map +0 -1
  525. package/src/cli/agent-runtime.js.map +0 -1
  526. package/src/cli/blueprint-authority.js.map +0 -1
  527. package/src/cli/blueprint-command.js.map +0 -1
  528. package/src/cli/bootstrap.js.map +0 -1
  529. package/src/cli/dev-command.js.map +0 -1
  530. package/src/cli/main.js.map +0 -1
  531. package/src/cli/output.js.map +0 -1
  532. package/src/cli/personal-secret-runtime.js.map +0 -1
  533. package/src/cli/secret-terminal.js.map +0 -1
  534. package/src/container-images.js.map +0 -1
  535. package/src/data-lifecycle/index.js.map +0 -1
  536. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  537. package/src/data-lifecycle/model.fixtures.js +0 -244
  538. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  539. package/src/data-lifecycle/model.js.map +0 -1
  540. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  541. package/src/data-lifecycle/validation.js.map +0 -1
  542. package/src/database-retirement/contract.js.map +0 -1
  543. package/src/database-retirement/index.js.map +0 -1
  544. package/src/deterministic-order.js.map +0 -1
  545. package/src/developer-agent/context.js.map +0 -1
  546. package/src/developer-agent/generator-planning.js.map +0 -1
  547. package/src/developer-agent/generator-preview.js.map +0 -1
  548. package/src/developer-agent/git-inspection.js.map +0 -1
  549. package/src/developer-agent/handoff.js.map +0 -1
  550. package/src/developer-agent/index.js.map +0 -1
  551. package/src/developer-agent/model.js.map +0 -1
  552. package/src/developer-agent/operation-registry.js.map +0 -1
  553. package/src/developer-agent/ordering.js.map +0 -1
  554. package/src/developer-agent/planning.js.map +0 -1
  555. package/src/developer-agent/preview-changes.js.map +0 -1
  556. package/src/developer-agent/preview-source.js.map +0 -1
  557. package/src/developer-agent/validation.js.map +0 -1
  558. package/src/developer-agent/workspace-inspection.js.map +0 -1
  559. package/src/developer-agent/workspace-path.js.map +0 -1
  560. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  561. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  562. package/src/executors/deploy/deploy.js.map +0 -1
  563. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  564. package/src/executors/dev/dev.js.map +0 -1
  565. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  566. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  567. package/src/executors/developer-context/developer-context.js.map +0 -1
  568. package/src/executors/fleet/fleet.js.map +0 -1
  569. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  570. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  571. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  572. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  573. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  574. package/src/executors/refresh/refresh.js.map +0 -1
  575. package/src/executors/remove/remove.js.map +0 -1
  576. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  577. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  578. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  579. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  580. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  581. package/src/executors/unlock/unlock.js.map +0 -1
  582. package/src/executors/work-markers/work-markers.js.map +0 -1
  583. package/src/foundation/discovery.js.map +0 -1
  584. package/src/foundation/index.js.map +0 -1
  585. package/src/foundation/local-database-contract.js.map +0 -1
  586. package/src/foundation/logging-preflight.js.map +0 -1
  587. package/src/foundation/logging.js.map +0 -1
  588. package/src/foundation/preflight.js.map +0 -1
  589. package/src/foundation/provision-database-bindings.js.map +0 -1
  590. package/src/foundation/provision-logical-database.js.map +0 -1
  591. package/src/foundation/requirements.js.map +0 -1
  592. package/src/foundation/router-origin-proof.js.map +0 -1
  593. package/src/foundation/stages.js.map +0 -1
  594. package/src/frontend-security/index.js.map +0 -1
  595. package/src/frontend-security/security-headers.js.map +0 -1
  596. package/src/generators/feature-registry.js.map +0 -1
  597. package/src/generators/function/function.js.map +0 -1
  598. package/src/generators/job/job.js.map +0 -1
  599. package/src/generators/logging-registry.js.map +0 -1
  600. package/src/generators/post-generation-install.js.map +0 -1
  601. package/src/generators/preset/generator.js.map +0 -1
  602. package/src/generators/preset/tool-versions.js.map +0 -1
  603. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  604. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  605. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  606. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  607. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  608. package/src/generators/preset/workspace-files.js.map +0 -1
  609. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  610. package/src/generators/service/service.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  629. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  630. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  631. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  632. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  633. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  634. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  635. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  636. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  637. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  638. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  639. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  640. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  641. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  642. package/src/generators/slice/built-in-plan.js.map +0 -1
  643. package/src/generators/slice/slice.js.map +0 -1
  644. package/src/generators/upgrade/upgrade.js.map +0 -1
  645. package/src/generators/workload/frozen-container.js.map +0 -1
  646. package/src/generators/workload/performance-registration.js.map +0 -1
  647. package/src/generators/workload/reliability-registration.js.map +0 -1
  648. package/src/generators/workload/service-performance-files.js.map +0 -1
  649. package/src/generators/workload/workload.js.map +0 -1
  650. package/src/git-policy/action-pins.js.map +0 -1
  651. package/src/git-policy/github-bootstrap.js.map +0 -1
  652. package/src/git-policy/index.js.map +0 -1
  653. package/src/git-policy/routing.js.map +0 -1
  654. package/src/index.js.map +0 -1
  655. package/src/infrastructure-change/convergence.js.map +0 -1
  656. package/src/infrastructure-change/drift.js.map +0 -1
  657. package/src/infrastructure-change/index.js.map +0 -1
  658. package/src/infrastructure-change/model.js.map +0 -1
  659. package/src/infrastructure-change/normalize.js.map +0 -1
  660. package/src/infrastructure-change/plan.js.map +0 -1
  661. package/src/infrastructure-change/risk.js.map +0 -1
  662. package/src/infrastructure-change/summary.js.map +0 -1
  663. package/src/local-dev/context-discovery.js.map +0 -1
  664. package/src/local-dev/contract-validation.js.map +0 -1
  665. package/src/local-dev/contracts.js.map +0 -1
  666. package/src/local-dev/control-contract.js.map +0 -1
  667. package/src/local-dev/dev-command-core.js.map +0 -1
  668. package/src/local-dev/effects.js.map +0 -1
  669. package/src/local-dev/environment-inspector.js.map +0 -1
  670. package/src/local-dev/environment-state.js.map +0 -1
  671. package/src/local-dev/errors.js.map +0 -1
  672. package/src/local-dev/fleet-client.js.map +0 -1
  673. package/src/local-dev/fleet-configuration.js.map +0 -1
  674. package/src/local-dev/fleet-inventory.js.map +0 -1
  675. package/src/local-dev/fleet-ipc.js.map +0 -1
  676. package/src/local-dev/fleet-launcher.js.map +0 -1
  677. package/src/local-dev/fleet-lock.js.map +0 -1
  678. package/src/local-dev/fleet-logs.js.map +0 -1
  679. package/src/local-dev/fleet-process.js.map +0 -1
  680. package/src/local-dev/fleet-runtime.js.map +0 -1
  681. package/src/local-dev/fleet-session.js.map +0 -1
  682. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  683. package/src/local-dev/fleet-startup.js.map +0 -1
  684. package/src/local-dev/fleet-state.js.map +0 -1
  685. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  686. package/src/local-dev/fleet-supervisor.js.map +0 -1
  687. package/src/local-dev/gateway-daemon.js.map +0 -1
  688. package/src/local-dev/gateway.js.map +0 -1
  689. package/src/local-dev/identity.js.map +0 -1
  690. package/src/local-dev/index.js.map +0 -1
  691. package/src/local-dev/local-context.js.map +0 -1
  692. package/src/local-dev/nx-workspace.js.map +0 -1
  693. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  694. package/src/local-dev/personal-stage.js.map +0 -1
  695. package/src/local-dev/portless.js.map +0 -1
  696. package/src/local-dev/ports.js.map +0 -1
  697. package/src/local-dev/private-state.js.map +0 -1
  698. package/src/local-dev/process-identity.js.map +0 -1
  699. package/src/local-dev/proxy.js.map +0 -1
  700. package/src/local-dev/runtime-paths.js.map +0 -1
  701. package/src/local-dev/secret-slice-claim.js.map +0 -1
  702. package/src/local-dev/slice-claim.js.map +0 -1
  703. package/src/local-dev/slice-runner.js.map +0 -1
  704. package/src/local-dev/tls.js.map +0 -1
  705. package/src/ownership/composition.js.map +0 -1
  706. package/src/ownership/foundation-record.js.map +0 -1
  707. package/src/ownership/hash.js.map +0 -1
  708. package/src/ownership/index.js.map +0 -1
  709. package/src/ownership/json-ownership.js.map +0 -1
  710. package/src/ownership/record.js.map +0 -1
  711. package/src/ownership/workspace-record.js.map +0 -1
  712. package/src/performance/cost-collection.js.map +0 -1
  713. package/src/performance/cost-controls.js.map +0 -1
  714. package/src/performance/evidence.js.map +0 -1
  715. package/src/performance/index.js.map +0 -1
  716. package/src/performance/load-safety.js.map +0 -1
  717. package/src/performance/model.js.map +0 -1
  718. package/src/performance/pr-artifact-budget.js.map +0 -1
  719. package/src/performance/runner.js.map +0 -1
  720. package/src/performance/scenario-endpoint.js.map +0 -1
  721. package/src/performance/scenario.js.map +0 -1
  722. package/src/performance/test-fixtures.d.ts +0 -7
  723. package/src/performance/test-fixtures.js +0 -169
  724. package/src/performance/test-fixtures.js.map +0 -1
  725. package/src/performance/unit-cost.js.map +0 -1
  726. package/src/release/index.js.map +0 -1
  727. package/src/release/lifecycle.js.map +0 -1
  728. package/src/release/manifest.js.map +0 -1
  729. package/src/release/rollout.js.map +0 -1
  730. package/src/release/source-authority.js.map +0 -1
  731. package/src/repository-policy/aurora-preflight.js.map +0 -1
  732. package/src/repository-policy/deployment-plan.js.map +0 -1
  733. package/src/repository-policy/foundation-profile.js.map +0 -1
  734. package/src/repository-policy/index.js.map +0 -1
  735. package/src/repository-policy/policy.js.map +0 -1
  736. package/src/secrets/adapters.js.map +0 -1
  737. package/src/secrets/aws-control-plane.js.map +0 -1
  738. package/src/secrets/declaration-verification.js.map +0 -1
  739. package/src/secrets/guardrails.js.map +0 -1
  740. package/src/secrets/index.js.map +0 -1
  741. package/src/secrets/metadata.js.map +0 -1
  742. package/src/secrets/model.js.map +0 -1
  743. package/src/secrets/operator.js.map +0 -1
  744. package/src/secrets/permissions.js.map +0 -1
  745. package/src/secrets/personal-command.js.map +0 -1
  746. package/src/secrets/personal-ledger.js.map +0 -1
  747. package/src/secrets/registry.js.map +0 -1
  748. package/src/secrets/verification.js.map +0 -1
  749. package/src/secrets/workload-access.js.map +0 -1
  750. package/src/supply-chain/action-pins.js.map +0 -1
  751. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  752. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  753. package/src/supply-chain/blueprint-trust.js.map +0 -1
  754. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  755. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  756. package/src/supply-chain/build-output.js.map +0 -1
  757. package/src/supply-chain/common.js.map +0 -1
  758. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  759. package/src/supply-chain/container-release.js.map +0 -1
  760. package/src/supply-chain/ecr-applicability.js.map +0 -1
  761. package/src/supply-chain/ecr-scanning.js.map +0 -1
  762. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  763. package/src/supply-chain/errors.js.map +0 -1
  764. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  765. package/src/supply-chain/generated-command.js.map +0 -1
  766. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  767. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  768. package/src/supply-chain/generated-files.js.map +0 -1
  769. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  770. package/src/supply-chain/index.js.map +0 -1
  771. package/src/supply-chain/inventory.js.map +0 -1
  772. package/src/supply-chain/license-expression.js.map +0 -1
  773. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  774. package/src/supply-chain/policy.js.map +0 -1
  775. package/src/supply-chain/publication.js.map +0 -1
  776. package/src/supply-chain/sbom.js.map +0 -1
  777. package/src/supply-chain/scanner.js.map +0 -1
  778. package/src/supply-chain/vendored-source.js.map +0 -1
  779. package/src/testing-evidence/fixture-scope.js.map +0 -1
  780. package/src/testing-evidence/index.js.map +0 -1
  781. package/src/testing-evidence/quarantine.js.map +0 -1
  782. package/src/testing-evidence/result.js.map +0 -1
  783. package/src/testing-evidence/runner-adapter.js.map +0 -1
  784. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  785. package/src/validation.js.map +0 -1
  786. package/src/work-markers/index.js.map +0 -1
  787. package/src/work-markers/work-markers.js.map +0 -1
  788. package/src/workload-roles/account-baseline.js.map +0 -1
  789. package/src/workload-roles/authority.js.map +0 -1
  790. package/src/workload-roles/aws-adapter.js.map +0 -1
  791. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  792. package/src/workload-roles/aws-s3-state.js.map +0 -1
  793. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  794. package/src/workload-roles/boundary.js.map +0 -1
  795. package/src/workload-roles/convergence.js.map +0 -1
  796. package/src/workload-roles/effective-policy.js.map +0 -1
  797. package/src/workload-roles/handler.js.map +0 -1
  798. package/src/workload-roles/history.js.map +0 -1
  799. package/src/workload-roles/index.js.map +0 -1
  800. package/src/workload-roles/injection.js.map +0 -1
  801. package/src/workload-roles/manifest.js.map +0 -1
  802. package/src/workload-roles/provisioner.js.map +0 -1
  803. package/src/workload-roles/registration.js.map +0 -1
  804. package/src/workload-roles/stage-boundary.js.map +0 -1
  805. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readNativeDevelopmentCompletion = readNativeDevelopmentCompletion;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const errors_js_1 = require("./errors.js");
7
+ /** Read only SST 4.17.1's current native completion. Never retain its body:
8
+ * links, outputs and resources can contain private application material.
9
+ * This observes deployment, not preview/state authority or application health. */
10
+ async function readNativeDevelopmentCompletion(input, signal) {
11
+ const startedAt = Date.parse(input.startedAt);
12
+ if (!/^[a-z0-9][a-z0-9-]{0,62}$/.test(input.stage) ||
13
+ !Number.isFinite(startedAt))
14
+ throw new errors_js_1.LocalDevContractError('invalid-state', 'Native completion owner is invalid.');
15
+ const root = (0, node_fs_1.realpathSync)(input.projectRoot);
16
+ const directory = (0, node_path_1.join)(root, '.sst');
17
+ const path = (0, node_path_1.join)(directory, `${input.stage}.server`);
18
+ let fd;
19
+ let origin;
20
+ try {
21
+ if ((0, node_fs_1.lstatSync)(directory).isSymbolicLink() ||
22
+ (0, node_fs_1.realpathSync)(directory) !== directory)
23
+ throw new Error('Invalid native server directory.');
24
+ if ((0, node_fs_1.lstatSync)(path).isSymbolicLink())
25
+ throw new Error('Invalid native server file.');
26
+ fd = (0, node_fs_1.openSync)(path, node_fs_1.constants.O_RDONLY | (node_fs_1.constants.O_NOFOLLOW ?? 0));
27
+ const stat = (0, node_fs_1.fstatSync)(fd);
28
+ if (!stat.isFile() ||
29
+ stat.size > 512 ||
30
+ stat.nlink !== 1 ||
31
+ (process.platform !== 'win32' &&
32
+ ((stat.mode & 0o022) !== 0 || stat.uid !== process.getuid?.())))
33
+ throw new Error('Invalid native server file.');
34
+ // Native os.WriteFile is not an atomic rename. Its short empty-file
35
+ // creation/truncation window is not a failed deployment or ready state.
36
+ if (stat.size === 0)
37
+ return 'pending';
38
+ // The exact runner launch must have created this server record. A previous
39
+ // watcher (even one with a successful completion) cannot satisfy readiness.
40
+ if (stat.mtimeMs < startedAt)
41
+ return 'pending';
42
+ origin = new URL((0, node_fs_1.readFileSync)(fd, 'utf8'));
43
+ if (origin.protocol !== 'http:' ||
44
+ !['0.0.0.0', '127.0.0.1', 'localhost', '[::1]'].includes(origin.hostname) ||
45
+ !origin.port ||
46
+ origin.username ||
47
+ origin.password ||
48
+ origin.pathname !== '/' ||
49
+ origin.search ||
50
+ origin.hash)
51
+ throw new Error('Invalid native server origin.');
52
+ // Native SST records its wildcard listener address. Connect only to the
53
+ // loopback interface; never send an HTTP request to a wildcard address.
54
+ if (origin.hostname === '0.0.0.0')
55
+ origin.hostname = '127.0.0.1';
56
+ }
57
+ catch (error) {
58
+ if (typeof error === 'object' &&
59
+ error !== null &&
60
+ 'code' in error &&
61
+ error.code === 'ENOENT')
62
+ return 'pending';
63
+ throw new errors_js_1.LocalDevContractError('invalid-state', 'The task native SST server record is invalid. Inspect ebk dev logs before retrying.');
64
+ }
65
+ finally {
66
+ if (fd !== undefined)
67
+ (0, node_fs_1.closeSync)(fd);
68
+ }
69
+ let response;
70
+ try {
71
+ response = await fetch(new URL('/api/completed', origin), {
72
+ method: 'GET',
73
+ redirect: 'error',
74
+ signal: AbortSignal.any([signal, AbortSignal.timeout(2_000)]),
75
+ });
76
+ }
77
+ catch {
78
+ return 'pending';
79
+ }
80
+ if (!response.ok || !response.body) {
81
+ await response.body?.cancel();
82
+ return 'pending';
83
+ }
84
+ const reader = response.body.getReader();
85
+ const chunks = [];
86
+ let bytes = 0;
87
+ try {
88
+ for (;;) {
89
+ const { done, value } = await reader.read();
90
+ if (done)
91
+ break;
92
+ bytes += value.length;
93
+ if (bytes > 8 * 1024 * 1024)
94
+ return 'failed';
95
+ chunks.push(value);
96
+ }
97
+ const value = JSON.parse(Buffer.concat(chunks).toString('utf8'));
98
+ if (value === null)
99
+ return 'pending';
100
+ if (typeof value !== 'object' || Array.isArray(value))
101
+ return 'failed';
102
+ const event = value;
103
+ if (typeof event['Old'] !== 'boolean' ||
104
+ typeof event['Finished'] !== 'boolean' ||
105
+ !(event['Errors'] === null || Array.isArray(event['Errors'])) ||
106
+ !(event['ImportDiffs'] === null ||
107
+ (typeof event['ImportDiffs'] === 'object' &&
108
+ !Array.isArray(event['ImportDiffs']))))
109
+ return 'failed';
110
+ if (event['Old'])
111
+ return 'pending';
112
+ if (event['Errors']?.length ||
113
+ Object.keys(event['ImportDiffs'] ?? {}).length)
114
+ return 'failed';
115
+ if (!event['Finished'])
116
+ return 'pending';
117
+ if (typeof event['UpdateID'] !== 'string' ||
118
+ !/^[a-zA-Z0-9-]{1,128}$/.test(event['UpdateID']))
119
+ return 'failed';
120
+ return 'succeeded';
121
+ }
122
+ catch {
123
+ return signal.aborted ? 'pending' : 'failed';
124
+ }
125
+ finally {
126
+ await reader.cancel().catch(() => undefined);
127
+ reader.releaseLock();
128
+ }
129
+ }
130
+ //# sourceMappingURL=native-completion.js.map
@@ -1,10 +1,12 @@
1
- import { type ProjectConfiguration } from '@nx/devkit';
1
+ import { type ProjectConfiguration, type ProjectGraph } from '@nx/devkit';
2
2
  import { type ChildProcess } from 'node:child_process';
3
3
  import { type LocalDevAdapter } from './contracts.js';
4
4
  export declare const SUPPORTED_WORKSPACE_NX_RANGE: ">=23.1.0 <24";
5
5
  export type WorkspaceProjectConfiguration = Pick<ProjectConfiguration, 'metadata' | 'root' | 'tags' | 'targets'>;
6
6
  export interface WorkspaceFleetPlan {
7
7
  adapters: ReadonlyMap<string, LocalDevAdapter>;
8
+ /** The authoritative Nx graph, including inferred cross-project edges. */
9
+ projectGraph?: ProjectGraph;
8
10
  projects: Readonly<Record<string, WorkspaceProjectConfiguration>>;
9
11
  }
10
12
  export interface WorkspaceNxRuntime {
@@ -32,7 +34,7 @@ export interface DeclaredNxTargetInvocation {
32
34
  cwd: string;
33
35
  env: NodeJS.ProcessEnv;
34
36
  }
35
- export declare function discoverWorkspaceFleetPlan(projects: Readonly<Record<string, WorkspaceProjectConfiguration>>): WorkspaceFleetPlan;
37
+ export declare function discoverWorkspaceFleetPlan(projects: Readonly<Record<string, WorkspaceProjectConfiguration>>, projectGraph?: ProjectGraph): WorkspaceFleetPlan;
36
38
  export declare function selectWorkspaceSlices(plan: WorkspaceFleetPlan, selector: {
37
39
  all: boolean;
38
40
  slices: readonly string[];
@@ -86,7 +86,7 @@ function assertSafeCleanupClosure(projectName, cleanupTarget, projects) {
86
86
  }
87
87
  }
88
88
  }
89
- function discoverWorkspaceFleetPlan(projects) {
89
+ function discoverWorkspaceFleetPlan(projects, projectGraph) {
90
90
  const entries = Object.entries(projects)
91
91
  .filter(([, project]) => projectIsSlice(project))
92
92
  .filter(([, project]) => adapterValue(project) !== undefined)
@@ -100,11 +100,11 @@ function discoverWorkspaceFleetPlan(projects) {
100
100
  if (!project?.targets?.[adapter.target]) {
101
101
  return workspaceError('invalid-adapter', `Local-dev target ${name}:${adapter.target} is not declared.`);
102
102
  }
103
- if (adapter.adapterVersion === 2 && adapter.lifecycle) {
103
+ if (adapter.adapterVersion !== 1 && adapter.lifecycle) {
104
104
  assertSafeCleanupClosure(name, adapter.lifecycle.cleanupTarget, projects);
105
105
  }
106
106
  }
107
- return { adapters, projects };
107
+ return { adapters, ...(projectGraph ? { projectGraph } : {}), projects };
108
108
  }
109
109
  function selectWorkspaceSlices(plan, selector) {
110
110
  const selected = selector.all
@@ -124,12 +124,12 @@ function selectWorkspaceSlices(plan, selector) {
124
124
  return workspaceError('invalid-adapter', `Selected Product Slice ${name} has no valid local-dev adapter.`);
125
125
  }
126
126
  }
127
- return selected;
127
+ return (0, contracts_js_1.resolveFleetSliceDependencies)(plan.adapters, selected);
128
128
  }
129
129
  async function loadWorkspaceFleetPlan() {
130
130
  const graph = await (0, devkit_1.createProjectGraphAsync)();
131
131
  const configuration = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(graph);
132
- return discoverWorkspaceFleetPlan(configuration.projects);
132
+ return discoverWorkspaceFleetPlan(configuration.projects, graph);
133
133
  }
134
134
  function resolveWorkspaceNxRuntime(workspaceRoot, compatibilityRange = exports.SUPPORTED_WORKSPACE_NX_RANGE) {
135
135
  if (!(0, node_path_1.isAbsolute)(workspaceRoot)) {
@@ -180,7 +180,7 @@ function declaredCleanupTarget(plan, project) {
180
180
  if (!adapter) {
181
181
  return workspaceError('invalid-adapter', `Product Slice ${project} has no local-dev adapter.`);
182
182
  }
183
- if (adapter.adapterVersion !== 2 || !adapter.lifecycle)
183
+ if (adapter.adapterVersion === 1 || !adapter.lifecycle)
184
184
  return undefined;
185
185
  assertSafeCleanupClosure(project, adapter.lifecycle.cleanupTarget, plan.projects);
186
186
  return {
@@ -197,6 +197,11 @@ function buildDeclaredNxTargetInvocation(runtime, declared, options) {
197
197
  const environment = {
198
198
  ...(0, personal_stage_js_1.createPersonalDevelopmentEnvironment)(options.stage, options.additionalEnvironment),
199
199
  EBK_FOUNDATION_STAGE: options.foundationStage ?? 'development',
200
+ // spawnDeclaredNxTarget owns the POSIX group. Native descendants must join
201
+ // it so shutdown proves the entire writer group absent, not just Nx.
202
+ ...(process.platform !== 'win32'
203
+ ? { EBK_GOVERNED_PROCESS_GROUP: '1' }
204
+ : {}),
200
205
  };
201
206
  if (options.port !== undefined) {
202
207
  if (!Number.isInteger(options.port) ||
@@ -1,17 +1,16 @@
1
- export declare const PERSONAL_STAGE_RESOLVER_VERSION: 1;
1
+ export declare const PERSONAL_STAGE_RESOLVER_VERSION: 2;
2
2
  export declare const PERSONAL_STAGE_MAX_LENGTH: 36;
3
- export declare const PERSONAL_STAGE_IDENTITY_SOURCE: "os-account";
3
+ export declare const PERSONAL_STAGE_IDENTITY_SOURCE: "worktree-task";
4
4
  export interface PersonalStageResolution {
5
5
  identitySource: typeof PERSONAL_STAGE_IDENTITY_SOURCE;
6
6
  resolverVersion: typeof PERSONAL_STAGE_RESOLVER_VERSION;
7
7
  stage: string;
8
8
  }
9
9
  export interface PersonalStageResolver {
10
- resolve(): PersonalStageResolution;
10
+ resolve(workspaceRoot?: string): PersonalStageResolution;
11
11
  }
12
12
  export declare function isFrameworkPersonalStage(stage: string): boolean;
13
- export declare function derivePersonalStage(accountName: string): string;
14
- export declare function createPersonalStageResolver(readAccountName?: () => string): PersonalStageResolver;
13
+ export declare function createPersonalStageResolver(readTaskId?: (workspaceRoot: string) => string): PersonalStageResolver;
15
14
  export declare function rejectExplicitStageArguments(arguments_: readonly string[]): void;
16
15
  export declare function createPersonalStageEnvironment(stage: string, ambient?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
17
16
  export declare function stripAmbientStageAuthority(ambient: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
@@ -2,21 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PERSONAL_STAGE_IDENTITY_SOURCE = exports.PERSONAL_STAGE_MAX_LENGTH = exports.PERSONAL_STAGE_RESOLVER_VERSION = void 0;
4
4
  exports.isFrameworkPersonalStage = isFrameworkPersonalStage;
5
- exports.derivePersonalStage = derivePersonalStage;
6
5
  exports.createPersonalStageResolver = createPersonalStageResolver;
7
6
  exports.rejectExplicitStageArguments = rejectExplicitStageArguments;
8
7
  exports.createPersonalStageEnvironment = createPersonalStageEnvironment;
9
8
  exports.stripAmbientStageAuthority = stripAmbientStageAuthority;
10
9
  exports.createPersonalDevelopmentEnvironment = createPersonalDevelopmentEnvironment;
11
- const node_crypto_1 = require("node:crypto");
12
- const node_os_1 = require("node:os");
13
10
  const stages_js_1 = require("../foundation/stages.js");
14
11
  const errors_js_1 = require("./errors.js");
15
- exports.PERSONAL_STAGE_RESOLVER_VERSION = 1;
12
+ const task_identity_js_1 = require("./task-identity.js");
13
+ exports.PERSONAL_STAGE_RESOLVER_VERSION = 2;
16
14
  exports.PERSONAL_STAGE_MAX_LENGTH = 36;
17
- exports.PERSONAL_STAGE_IDENTITY_SOURCE = 'os-account';
18
- const PREFIX = 'personal-';
19
- const LOSSY_DIGEST_LENGTH = 8;
15
+ exports.PERSONAL_STAGE_IDENTITY_SOURCE = 'worktree-task';
20
16
  const COMPETING_STAGE_VARIABLES = [
21
17
  'EBK_STAGE',
22
18
  'EBK_CONSUMER_STAGE',
@@ -40,57 +36,13 @@ const AMBIENT_AWS_AUTHORITY_VARIABLES = [
40
36
  function isFrameworkPersonalStage(stage) {
41
37
  return (0, stages_js_1.isPersonalStage)(stage);
42
38
  }
43
- function normalizeAccountName(value) {
44
- return value
45
- .normalize('NFKD')
46
- .toLowerCase()
47
- .replace(/[^a-z0-9]+/g, '-')
48
- .replace(/^-+|-+$/g, '')
49
- .replace(/-+/g, '-');
50
- }
51
- function shortIdentityDigest(value) {
52
- return (0, node_crypto_1.createHash)('sha256')
53
- .update(value, 'utf8')
54
- .digest('hex')
55
- .slice(0, LOSSY_DIGEST_LENGTH);
56
- }
57
- function derivePersonalStage(accountName) {
58
- if (typeof accountName !== 'string' ||
59
- accountName.length === 0 ||
60
- accountName !== accountName.trim()) {
61
- throw new errors_js_1.LocalDevContractError('personal-identity-unavailable', 'The operating-system account name is unavailable or unsafe.');
62
- }
63
- const normalized = normalizeAccountName(accountName);
64
- if (!normalized) {
65
- throw new errors_js_1.LocalDevContractError('personal-identity-unavailable', 'The operating-system account name cannot form a personal stage.');
66
- }
67
- const maximumBodyLength = exports.PERSONAL_STAGE_MAX_LENGTH - PREFIX.length;
68
- const lossless = normalized === accountName && normalized.length <= maximumBodyLength;
69
- const body = lossless
70
- ? normalized
71
- : `${normalized
72
- .slice(0, maximumBodyLength - LOSSY_DIGEST_LENGTH - 1)
73
- .replace(/-+$/g, '')}-${shortIdentityDigest(accountName)}`;
74
- const stage = `${PREFIX}${body}`;
75
- if (!isFrameworkPersonalStage(stage)) {
76
- throw new errors_js_1.LocalDevContractError('personal-identity-unavailable', 'The operating-system account name cannot form a bounded personal stage.');
77
- }
78
- return stage;
79
- }
80
- function createPersonalStageResolver(readAccountName = () => (0, node_os_1.userInfo)().username) {
39
+ function createPersonalStageResolver(readTaskId = (workspaceRoot) => (0, task_identity_js_1.resolveTaskIdentity)(workspaceRoot).taskId) {
81
40
  return {
82
- resolve() {
83
- let accountName;
84
- try {
85
- accountName = readAccountName();
86
- }
87
- catch {
88
- throw new errors_js_1.LocalDevContractError('personal-identity-unavailable', 'The operating-system account identity could not be read.');
89
- }
41
+ resolve(workspaceRoot = process.cwd()) {
90
42
  return {
91
43
  identitySource: exports.PERSONAL_STAGE_IDENTITY_SOURCE,
92
44
  resolverVersion: exports.PERSONAL_STAGE_RESOLVER_VERSION,
93
- stage: derivePersonalStage(accountName),
45
+ stage: (0, task_identity_js_1.taskStage)(readTaskId(workspaceRoot)),
94
46
  };
95
47
  },
96
48
  };
@@ -0,0 +1,13 @@
1
+ import { type PrivateStateSecurity } from './private-state.js';
2
+ import { type FleetProcessIdentity } from './fleet-lock.js';
3
+ /** Process-lifetime exclusion between local Fleet supervisors. A claim does
4
+ * not attest HTTP health and is not permission to terminate any other process.
5
+ * Unknown or hard-kill remnants stay reserved, never reclaimed speculatively. */
6
+ export declare function createFleetPortClaims(directory: string, owner: {
7
+ fleetId: string;
8
+ sessionGeneration: string;
9
+ process: FleetProcessIdentity;
10
+ }, security?: PrivateStateSecurity): {
11
+ claim(port: number): boolean;
12
+ release(): void;
13
+ };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFleetPortClaims = createFleetPortClaims;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const errors_js_1 = require("./errors.js");
7
+ const private_state_js_1 = require("./private-state.js");
8
+ const fleet_lock_js_1 = require("./fleet-lock.js");
9
+ /** Process-lifetime exclusion between local Fleet supervisors. A claim does
10
+ * not attest HTTP health and is not permission to terminate any other process.
11
+ * Unknown or hard-kill remnants stay reserved, never reclaimed speculatively. */
12
+ function createFleetPortClaims(directory, owner, security = {}) {
13
+ (0, fleet_lock_js_1.validateFleetProcessIdentity)(owner.process);
14
+ const claimed = new Map();
15
+ return {
16
+ claim(port) {
17
+ if (!Number.isInteger(port) || port < 1 || port > 65_535)
18
+ throw new errors_js_1.LocalDevContractError('invalid-input', 'Invalid Fleet port claim.');
19
+ if (claimed.has(port))
20
+ return false;
21
+ const contents = `${JSON.stringify({ schemaVersion: 1, ...owner, port })}\n`;
22
+ if (!(0, private_state_js_1.publishPrivateFileExclusive)((0, node_path_1.join)(directory, `${port}.json`), contents, security))
23
+ return false;
24
+ claimed.set(port, contents);
25
+ return true;
26
+ },
27
+ release() {
28
+ const failed = [];
29
+ for (const [port, expected] of [...claimed].reverse()) {
30
+ try {
31
+ const path = (0, node_path_1.join)(directory, `${port}.json`);
32
+ if ((0, private_state_js_1.readPrivateFile)(path, security).toString('utf8') !== expected)
33
+ throw new Error('Port claim changed');
34
+ (0, node_fs_1.unlinkSync)(path);
35
+ claimed.delete(port);
36
+ }
37
+ catch {
38
+ failed.push(port);
39
+ }
40
+ }
41
+ if (failed.length)
42
+ throw new errors_js_1.LocalDevContractError('cleanup-incomplete', `Fleet port ownership changed or could not be released for ${failed.join(', ')}. Retained claims require inspection; no foreign claim was removed.`);
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=port-claims.js.map
@@ -1,10 +1,22 @@
1
1
  export declare const FLEET_PORT_RANGE: {
2
- readonly first: 41000;
3
- readonly last: 51999;
2
+ readonly first: 16000;
3
+ readonly last: 29999;
4
4
  };
5
+ export interface TcpPortRange {
6
+ first: number;
7
+ last: number;
8
+ }
9
+ /** Read only. Never change sysctl/netsh or assume a custom range is default. */
10
+ export declare function readAutomaticTcpPortRange(effects?: {
11
+ platform?: NodeJS.Platform;
12
+ read?: (path: string) => string;
13
+ execute?: (command: string, args: string[]) => string;
14
+ }): TcpPortRange;
5
15
  export declare function preferredFleetPort(key: string): number;
6
16
  export declare function canBindLoopbackPort(port: number): Promise<boolean>;
7
17
  export declare function allocateFleetPort(key: string, options?: {
18
+ ephemeralRange?: TcpPortRange;
8
19
  isAvailable?: (port: number) => Promise<boolean>;
20
+ claim?: (port: number) => boolean;
9
21
  reserved?: ReadonlySet<number>;
10
22
  }): Promise<number>;
@@ -1,12 +1,80 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FLEET_PORT_RANGE = void 0;
4
+ exports.readAutomaticTcpPortRange = readAutomaticTcpPortRange;
4
5
  exports.preferredFleetPort = preferredFleetPort;
5
6
  exports.canBindLoopbackPort = canBindLoopbackPort;
6
7
  exports.allocateFleetPort = allocateFleetPort;
7
8
  const node_crypto_1 = require("node:crypto");
9
+ const node_child_process_1 = require("node:child_process");
10
+ const node_fs_1 = require("node:fs");
8
11
  const node_net_1 = require("node:net");
9
- exports.FLEET_PORT_RANGE = { first: 41000, last: 51999 };
12
+ const errors_js_1 = require("./errors.js");
13
+ // Leave the usual automatic TCP client ranges to the OS. Still inspect the
14
+ // actual host range: probing alone cannot protect a delayed native web bind
15
+ // from an outbound connection opened during SST provisioning.
16
+ exports.FLEET_PORT_RANGE = { first: 16000, last: 29999 };
17
+ function validRange(range) {
18
+ return (Number.isInteger(range.first) &&
19
+ Number.isInteger(range.last) &&
20
+ range.first > 0 &&
21
+ range.first <= range.last &&
22
+ range.last <= 65_535);
23
+ }
24
+ /** Read only. Never change sysctl/netsh or assume a custom range is default. */
25
+ function readAutomaticTcpPortRange(effects = {}) {
26
+ const platform = effects.platform ?? process.platform;
27
+ const execute = effects.execute ??
28
+ ((command, args) => (0, node_child_process_1.execFileSync)(command, args, {
29
+ encoding: 'utf8',
30
+ timeout: 5_000,
31
+ maxBuffer: 8_192,
32
+ windowsHide: true,
33
+ stdio: ['ignore', 'pipe', 'pipe'],
34
+ }));
35
+ try {
36
+ let values;
37
+ if (platform === 'linux') {
38
+ const text = (effects.read ?? ((path) => (0, node_fs_1.readFileSync)(path, 'utf8')))('/proc/sys/net/ipv4/ip_local_port_range');
39
+ if (!/^\s*\d+\s+\d+\s*$/.test(text))
40
+ throw new Error('Invalid range');
41
+ values = text.trim().split(/\s+/).map(Number);
42
+ }
43
+ else if (platform === 'darwin') {
44
+ const text = execute('/usr/sbin/sysctl', [
45
+ '-n',
46
+ 'net.inet.ip.portrange.first',
47
+ 'net.inet.ip.portrange.last',
48
+ ]);
49
+ if (!/^\s*\d+\s+\d+\s*$/.test(text))
50
+ throw new Error('Invalid range');
51
+ values = text.trim().split(/\s+/).map(Number);
52
+ }
53
+ else if (platform === 'win32') {
54
+ const text = execute('netsh.exe', [
55
+ 'int',
56
+ 'ipv4',
57
+ 'show',
58
+ 'dynamicport',
59
+ 'tcp',
60
+ ]);
61
+ // Labels are localized; the two numeric colon-delimited values are not.
62
+ values = [...text.matchAll(/:\s*(\d+)\s*$/gm)].map((match) => Number(match[1]));
63
+ if (values.length !== 2 || values[1] < 1)
64
+ throw new Error('Invalid range');
65
+ values[1] = values[0] + values[1] - 1;
66
+ }
67
+ else
68
+ throw new Error('Unsupported platform');
69
+ const range = { first: values[0], last: values[1] };
70
+ if (!validRange(range))
71
+ throw new Error('Invalid range');
72
+ return range;
73
+ }
74
+ catch {
75
+ throw new errors_js_1.LocalDevContractError('prerequisite-unavailable', 'Cannot read the host automatic TCP client-port range. Verify the native network configuration is readable before retrying ebk dev up; no network setting was changed.');
76
+ }
77
+ }
10
78
  function preferredFleetPort(key) {
11
79
  const digest = (0, node_crypto_1.createHash)('sha256').update(key).digest();
12
80
  const size = exports.FLEET_PORT_RANGE.last - exports.FLEET_PORT_RANGE.first + 1;
@@ -26,14 +94,21 @@ async function canBindLoopbackPort(port) {
26
94
  }
27
95
  async function allocateFleetPort(key, options = {}) {
28
96
  const isAvailable = options.isAvailable ?? canBindLoopbackPort;
97
+ const ephemeral = options.ephemeralRange ?? readAutomaticTcpPortRange();
98
+ if (!validRange(ephemeral))
99
+ throw new errors_js_1.LocalDevContractError('invalid-input', 'Invalid automatic TCP port range.');
29
100
  const first = preferredFleetPort(key);
30
101
  const size = exports.FLEET_PORT_RANGE.last - exports.FLEET_PORT_RANGE.first + 1;
31
102
  for (let offset = 0; offset < size; offset += 1) {
32
103
  const port = exports.FLEET_PORT_RANGE.first +
33
104
  ((first - exports.FLEET_PORT_RANGE.first + offset) % size);
34
- if (!options.reserved?.has(port) && (await isAvailable(port)))
105
+ if (port >= ephemeral.first && port <= ephemeral.last)
106
+ continue;
107
+ if (!options.reserved?.has(port) &&
108
+ (await isAvailable(port)) &&
109
+ (!options.claim || options.claim(port)))
35
110
  return port;
36
111
  }
37
- throw new Error(`No loopback port is available in ${exports.FLEET_PORT_RANGE.first}-${exports.FLEET_PORT_RANGE.last}.`);
112
+ throw new Error(`No unclaimed loopback port outside the automatic TCP client range is available in ${exports.FLEET_PORT_RANGE.first}-${exports.FLEET_PORT_RANGE.last}. Inspect owned Fleet sessions before retrying; no foreign listener or claim was removed.`);
38
113
  }
39
114
  //# sourceMappingURL=ports.js.map
@@ -5,13 +5,24 @@ export type PrivatePathKind = 'directory' | 'file';
5
5
  export interface WindowsPrivateAcl {
6
6
  assert(path: string, kind: PrivatePathKind): void;
7
7
  harden(path: string, kind: PrivatePathKind): void;
8
+ /** Harden several paths in one platform invocation; falls back to
9
+ * `harden` per path when absent. */
10
+ hardenAll?(paths: readonly string[], kind: PrivatePathKind): void;
8
11
  }
9
12
  export interface PrivateStateSecurity {
10
13
  platform?: NodeJS.Platform;
11
14
  windowsAcl?: WindowsPrivateAcl;
12
15
  }
16
+ /** @internal */
17
+ export declare function hardenPrivatePath(path: string, kind: PrivatePathKind, security?: PrivateStateSecurity): void;
13
18
  export declare function assertPrivatePath(path: string, kind: PrivatePathKind, security?: PrivateStateSecurity): void;
14
19
  export declare function ensurePrivateDirectory(path: string, security?: PrivateStateSecurity): void;
15
20
  export declare function createPrivateFileExclusive(path: string, contents: string | Buffer, security?: PrivateStateSecurity): boolean;
21
+ /** Publish complete private bytes without replacing a concurrent winner.
22
+ * Unlike a lock file, a persistent data record must never be readable empty. */
23
+ export declare function publishPrivateFileExclusive(path: string, contents: string | Buffer, security?: PrivateStateSecurity): boolean;
16
24
  export declare function atomicWritePrivateFile(path: string, contents: string | Buffer, security?: PrivateStateSecurity): void;
25
+ /** Write a caller-bounded private artifact without relaxing the default
26
+ * private-state limit for any existing authority or control file. */
27
+ export declare function atomicWritePrivateFileWithMaximumBytes(path: string, contents: string | Buffer, maximumBytes: number, security?: PrivateStateSecurity): void;
17
28
  export declare function readPrivateFile(path: string, security?: PrivateStateSecurity): Buffer;