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

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 (791) hide show
  1. package/README.md +18 -0
  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.js +21 -9
  16. package/src/blueprints/manifest.d.ts +1 -1
  17. package/src/blueprints/resolver.js +28 -15
  18. package/src/cli/bootstrap.d.ts +1 -1
  19. package/src/cli/deploy-runtime.d.ts +6 -0
  20. package/src/cli/deploy-runtime.js +58 -0
  21. package/src/cli/dev-command.d.ts +16 -4
  22. package/src/cli/dev-command.js +63 -0
  23. package/src/cli/main.d.ts +9 -1
  24. package/src/cli/main.js +139 -20
  25. package/src/cli/output.d.ts +1 -1
  26. package/src/cli/output.js +1 -1
  27. package/src/developer-agent/context.js +41 -9
  28. package/src/developer-agent/generator-planning.js +20 -6
  29. package/src/developer-agent/git-inspection.d.ts +6 -2
  30. package/src/developer-agent/git-inspection.js +78 -6
  31. package/src/developer-agent/model.d.ts +5 -3
  32. package/src/developer-agent/model.js +4 -4
  33. package/src/developer-agent/operation-registry.d.ts +5 -0
  34. package/src/developer-agent/operation-registry.js +286 -40
  35. package/src/developer-agent/planning.js +16 -13
  36. package/src/developer-agent/preview-changes.d.ts +2 -0
  37. package/src/developer-agent/preview-changes.js +14 -2
  38. package/src/developer-agent/preview-source.js +3 -0
  39. package/src/developer-agent/validation.js +25 -9
  40. package/src/developer-agent/workspace-inspection.js +60 -5
  41. package/src/executors/blueprint-trust/blueprint-trust.js +6 -0
  42. package/src/executors/deployment-plan/deployment-plan.d.ts +2 -0
  43. package/src/executors/deployment-plan/deployment-plan.js +57 -2
  44. package/src/executors/dev-doctor/dev-doctor.js +13 -6
  45. package/src/executors/dev-task-cleanup/dev-task-cleanup.d.ts +23 -0
  46. package/src/executors/dev-task-cleanup/dev-task-cleanup.js +145 -0
  47. package/src/executors/dev-task-cleanup/schema.json +9 -0
  48. package/src/executors/dev-task-cleanup/task-stack-absence.d.ts +27 -0
  49. package/src/executors/dev-task-cleanup/task-stack-absence.js +281 -0
  50. package/src/executors/dev-task-cleanup/task-stack-checkpoint.d.ts +12 -0
  51. package/src/executors/dev-task-cleanup/task-stack-checkpoint.js +92 -0
  52. package/src/executors/fleet/fleet.js +1 -1
  53. package/src/executors/foundation-preflight/foundation-preflight.d.ts +1 -0
  54. package/src/executors/foundation-preflight/foundation-preflight.js +6 -2
  55. package/src/executors/foundation-preflight/schema.json +5 -0
  56. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +13 -2
  57. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +95 -31
  58. package/src/executors/foundation-profile-preflight/production-database-safeguard.d.ts +65 -0
  59. package/src/executors/foundation-profile-preflight/production-database-safeguard.js +223 -0
  60. package/src/executors/foundation-profile-preflight/schema.json +15 -4
  61. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.d.ts +11 -1
  62. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js +70 -20
  63. package/src/executors/foundation-remove-preflight/schema.json +6 -1
  64. package/src/executors/github-bootstrap/github-bootstrap.d.ts +1 -0
  65. package/src/executors/github-bootstrap/github-bootstrap.js +3 -0
  66. package/src/executors/github-bootstrap/schema.json +7 -1
  67. package/src/executors/infrastructure-plan/infrastructure-plan.d.ts +29 -136
  68. package/src/executors/infrastructure-plan/infrastructure-plan.js +230 -3282
  69. package/src/executors/infrastructure-plan/schema.json +12 -52
  70. package/src/executors/local-deploy/federated-credential-transport.d.ts +48 -0
  71. package/src/executors/local-deploy/federated-credential-transport.js +252 -0
  72. package/src/executors/local-deploy/local-approval.d.ts +18 -0
  73. package/src/executors/local-deploy/local-approval.js +39 -0
  74. package/src/executors/local-deploy/local-deploy.d.ts +112 -0
  75. package/src/executors/local-deploy/local-deploy.js +1404 -0
  76. package/src/executors/local-deploy/schema.json +70 -0
  77. package/src/executors/refresh/refresh.js +2 -2
  78. package/src/executors/remove/remove.js +2 -2
  79. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.d.ts +42 -0
  80. package/src/executors/router-waf-rehearsal/router-waf-rehearsal.js +1229 -0
  81. package/src/executors/router-waf-rehearsal/schema.json +29 -0
  82. package/src/executors/secret-initialize/schema.json +42 -0
  83. package/src/executors/secret-initialize/secret-initialize.d.ts +34 -0
  84. package/src/executors/secret-initialize/secret-initialize.js +297 -0
  85. package/src/executors/secret-metadata/schema.json +5 -0
  86. package/src/executors/secret-metadata/secret-metadata.d.ts +16 -2
  87. package/src/executors/secret-metadata/secret-metadata.js +129 -30
  88. package/src/executors/sst-lifecycle/generated-secret-retirement.d.ts +53 -0
  89. package/src/executors/sst-lifecycle/generated-secret-retirement.js +192 -0
  90. package/src/executors/sst-lifecycle/governed-native-operation.d.ts +48 -0
  91. package/src/executors/sst-lifecycle/governed-native-operation.js +162 -0
  92. package/src/executors/sst-lifecycle/logging-preflight.d.ts +5 -0
  93. package/src/executors/sst-lifecycle/logging-preflight.js +23 -13
  94. package/src/executors/sst-lifecycle/run-sst-command.d.ts +40 -6
  95. package/src/executors/sst-lifecycle/run-sst-command.js +779 -70
  96. package/src/executors/sst-lifecycle/schema.json +8 -1
  97. package/src/executors/sst-lifecycle/secret-preflight.d.ts +2 -0
  98. package/src/executors/sst-lifecycle/secret-preflight.js +13 -7
  99. package/src/executors/sst-lifecycle/sst-environment-source.d.ts +33 -0
  100. package/src/executors/sst-lifecycle/sst-environment-source.js +267 -0
  101. package/src/executors/sst-lifecycle/task-unlock.d.ts +15 -0
  102. package/src/executors/sst-lifecycle/task-unlock.js +126 -0
  103. package/src/executors/unlock/unlock.js +2 -2
  104. package/src/foundation/capability-plan.d.ts +43 -0
  105. package/src/foundation/capability-plan.js +168 -0
  106. package/src/foundation/discovery.d.ts +14 -11
  107. package/src/foundation/discovery.js +32 -6
  108. package/src/foundation/index.d.ts +4 -0
  109. package/src/foundation/index.js +11 -0
  110. package/src/foundation/local-database-contract.d.ts +20 -0
  111. package/src/foundation/local-database-contract.js +262 -13
  112. package/src/foundation/local-private-smoke-access.d.ts +20 -0
  113. package/src/foundation/local-private-smoke-access.js +197 -0
  114. package/src/foundation/logging-preflight.js +1 -1
  115. package/src/foundation/logging.d.ts +3 -1
  116. package/src/foundation/logging.js +1 -1
  117. package/src/foundation/partial-state.d.ts +10 -0
  118. package/src/foundation/partial-state.js +21 -0
  119. package/src/foundation/preflight.js +37 -18
  120. package/src/foundation/private-smoke-access.d.ts +25 -0
  121. package/src/foundation/private-smoke-access.js +135 -0
  122. package/src/foundation/private-smoke-admission.d.ts +45 -0
  123. package/src/foundation/private-smoke-admission.js +180 -0
  124. package/src/foundation/private-smoke-control-plane.d.ts +18 -0
  125. package/src/foundation/private-smoke-control-plane.js +184 -0
  126. package/src/foundation/provision-database-bindings.d.ts +5 -0
  127. package/src/foundation/provision-database-bindings.js +41 -8
  128. package/src/foundation/provision-logical-database.js +15 -8
  129. package/src/foundation/requirements.d.ts +3 -3
  130. package/src/foundation/requirements.js +24 -12
  131. package/src/foundation/router-waf-rate-rehearsal.d.ts +97 -0
  132. package/src/foundation/router-waf-rate-rehearsal.js +210 -0
  133. package/src/foundation/router-waf.d.ts +149 -0
  134. package/src/foundation/router-waf.js +809 -0
  135. package/src/foundation/stages.d.ts +1 -0
  136. package/src/foundation/stages.js +11 -0
  137. package/src/generators/blueprint/blueprint.d.ts +5 -0
  138. package/src/generators/blueprint/blueprint.js +102 -0
  139. package/src/generators/blueprint/files.d.ts +6 -0
  140. package/src/generators/blueprint/files.js +217 -0
  141. package/src/generators/blueprint/schema.d.ts +4 -0
  142. package/src/generators/blueprint/schema.json +18 -0
  143. package/src/generators/formatting.d.ts +8 -0
  144. package/src/generators/formatting.js +141 -0
  145. package/src/generators/function/function.js +38 -17
  146. package/src/generators/logging-registry.d.ts +2 -0
  147. package/src/generators/logging-registry.js +22 -0
  148. package/src/generators/post-generation-install.js +2 -2
  149. package/src/generators/preset/dependency-overrides.d.ts +8 -0
  150. package/src/generators/preset/dependency-overrides.js +55 -0
  151. package/src/generators/preset/generator.js +43 -3
  152. package/src/generators/preset/schema.d.ts +10 -0
  153. package/src/generators/preset/schema.json +47 -0
  154. package/src/generators/preset/tool-versions.d.ts +2 -0
  155. package/src/generators/preset/tool-versions.js +3 -1
  156. package/src/generators/preset/workspace-files-adopter-skills.d.ts +7 -0
  157. package/src/generators/preset/workspace-files-adopter-skills.js +303 -0
  158. package/src/generators/preset/workspace-files-ci-acceptance.d.ts +1 -0
  159. package/src/generators/preset/workspace-files-ci-acceptance.js +791 -0
  160. package/src/generators/preset/workspace-files-ci-install.d.ts +2 -0
  161. package/src/generators/preset/workspace-files-ci-install.js +196 -0
  162. package/src/generators/preset/workspace-files-developer-agent.d.ts +2 -0
  163. package/src/generators/preset/workspace-files-developer-agent.js +90 -28
  164. package/src/generators/preset/workspace-files-ecr-inspector.d.ts +18 -0
  165. package/src/generators/preset/workspace-files-ecr-inspector.js +298 -0
  166. package/src/generators/preset/workspace-files-foundation-workload-roles.js +5 -2
  167. package/src/generators/preset/workspace-files-performance-cost.d.ts +2 -2
  168. package/src/generators/preset/workspace-files-performance-cost.js +8 -8
  169. package/src/generators/preset/workspace-files-performance-load.d.ts +1 -1
  170. package/src/generators/preset/workspace-files-performance-load.js +39 -25
  171. package/src/generators/preset/workspace-files-stage-authority.d.ts +6 -0
  172. package/src/generators/preset/workspace-files-stage-authority.js +518 -0
  173. package/src/generators/preset/workspace-files-thin-deploy.d.ts +55 -0
  174. package/src/generators/preset/workspace-files-thin-deploy.js +2473 -0
  175. package/src/generators/preset/workspace-files-thin-docs.d.ts +7 -0
  176. package/src/generators/preset/workspace-files-thin-docs.js +352 -0
  177. package/src/generators/preset/workspace-files-thin-release.d.ts +14 -0
  178. package/src/generators/preset/workspace-files-thin-release.js +26 -0
  179. package/src/generators/preset/workspace-files-workload-role-baseline.js +254 -42
  180. package/src/generators/preset/workspace-files.d.ts +18 -2
  181. package/src/generators/preset/workspace-files.js +1504 -608
  182. package/src/generators/repository-policy/repository-policy.js +235 -5
  183. package/src/generators/repository-policy/schema.d.ts +10 -0
  184. package/src/generators/repository-policy/schema.json +80 -4
  185. package/src/generators/repository-policy/tree-policy.d.ts +3 -0
  186. package/src/generators/repository-policy/tree-policy.js +25 -0
  187. package/src/generators/slice/built-in-plan-api-contract-files.js +42 -7
  188. package/src/generators/slice/built-in-plan-api-files.d.ts +1 -1
  189. package/src/generators/slice/built-in-plan-api-files.js +130 -414
  190. package/src/generators/slice/built-in-plan-async-work-files.js +166 -1969
  191. package/src/generators/slice/built-in-plan-authorization-files.js +92 -329
  192. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +60 -2
  193. package/src/generators/slice/built-in-plan-authorization-storage.d.ts +3 -0
  194. package/src/generators/slice/built-in-plan-authorization-storage.js +119 -0
  195. package/src/generators/slice/built-in-plan-background-work-files.d.ts +2 -0
  196. package/src/generators/slice/built-in-plan-background-work-files.js +99 -0
  197. package/src/generators/slice/built-in-plan-data-deletion-files.js +2 -830
  198. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js +5 -31
  199. package/src/generators/slice/built-in-plan-data-files.d.ts +1 -1
  200. package/src/generators/slice/built-in-plan-data-files.js +163 -1196
  201. package/src/generators/slice/built-in-plan-data-lifecycle-files.js +53 -28
  202. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js +37 -2
  203. package/src/generators/slice/built-in-plan-data-retention-job-files.js +7 -2443
  204. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js +50 -8
  205. package/src/generators/slice/built-in-plan-data-rights-files.js +6 -4482
  206. package/src/generators/slice/built-in-plan-database-lifecycle-files.js +44 -25
  207. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +20 -1
  208. package/src/generators/slice/built-in-plan-foundation-files.d.ts +2 -1
  209. package/src/generators/slice/built-in-plan-foundation-files.js +39 -18
  210. package/src/generators/slice/built-in-plan-frontend-files.js +7 -3
  211. package/src/generators/slice/built-in-plan-infrastructure-files.d.ts +1 -1
  212. package/src/generators/slice/built-in-plan-infrastructure-files.js +933 -729
  213. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +67 -11
  214. package/src/generators/slice/built-in-plan-key-value-cleanup.d.ts +4 -0
  215. package/src/generators/slice/built-in-plan-key-value-cleanup.js +100 -0
  216. package/src/generators/slice/built-in-plan-key-value-consumer.d.ts +4 -0
  217. package/src/generators/slice/built-in-plan-key-value-consumer.js +151 -0
  218. package/src/generators/slice/built-in-plan-key-value-deletion.d.ts +2 -0
  219. package/src/generators/slice/built-in-plan-key-value-deletion.js +377 -0
  220. package/src/generators/slice/built-in-plan-key-value-delivery.d.ts +2 -0
  221. package/src/generators/slice/built-in-plan-key-value-delivery.js +137 -0
  222. package/src/generators/slice/built-in-plan-key-value-export.d.ts +2 -0
  223. package/src/generators/slice/built-in-plan-key-value-export.js +595 -0
  224. package/src/generators/slice/built-in-plan-key-value-files.d.ts +2 -0
  225. package/src/generators/slice/built-in-plan-key-value-files.js +31 -0
  226. package/src/generators/slice/built-in-plan-key-value-holds.d.ts +2 -0
  227. package/src/generators/slice/built-in-plan-key-value-holds.js +189 -0
  228. package/src/generators/slice/built-in-plan-key-value-infrastructure.d.ts +2 -0
  229. package/src/generators/slice/built-in-plan-key-value-infrastructure.js +102 -0
  230. package/src/generators/slice/built-in-plan-key-value-performance.d.ts +5 -0
  231. package/src/generators/slice/built-in-plan-key-value-performance.js +530 -0
  232. package/src/generators/slice/built-in-plan-key-value-provider.d.ts +4 -0
  233. package/src/generators/slice/built-in-plan-key-value-provider.js +366 -0
  234. package/src/generators/slice/built-in-plan-key-value-records.d.ts +3 -0
  235. package/src/generators/slice/built-in-plan-key-value-records.js +232 -0
  236. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.d.ts +2 -0
  237. package/src/generators/slice/built-in-plan-key-value-retention-infrastructure.js +103 -0
  238. package/src/generators/slice/built-in-plan-key-value-retention-job-files.d.ts +2 -0
  239. package/src/generators/slice/built-in-plan-key-value-retention-job-files.js +160 -0
  240. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.d.ts +2 -0
  241. package/src/generators/slice/built-in-plan-key-value-retention-maintenance.js +329 -0
  242. package/src/generators/slice/built-in-plan-key-value-retention-worker.d.ts +2 -0
  243. package/src/generators/slice/built-in-plan-key-value-retention-worker.js +477 -0
  244. package/src/generators/slice/built-in-plan-key-value-retention.d.ts +2 -0
  245. package/src/generators/slice/built-in-plan-key-value-retention.js +184 -0
  246. package/src/generators/slice/built-in-plan-metadata-files.d.ts +1 -1
  247. package/src/generators/slice/built-in-plan-metadata-files.js +157 -28
  248. package/src/generators/slice/built-in-plan-native-runtime-authority-files.d.ts +2 -0
  249. package/src/generators/slice/built-in-plan-native-runtime-authority-files.js +324 -0
  250. package/src/generators/slice/built-in-plan-operations-files.d.ts +1 -1
  251. package/src/generators/slice/built-in-plan-operations-files.js +585 -97
  252. package/src/generators/slice/built-in-plan-performance-files.d.ts +2 -1
  253. package/src/generators/slice/built-in-plan-performance-files.js +220 -1074
  254. package/src/generators/slice/built-in-plan-project-files.js +141 -135
  255. package/src/generators/slice/built-in-plan-release-files.d.ts +1 -1
  256. package/src/generators/slice/built-in-plan-release-files.js +310 -70
  257. package/src/generators/slice/built-in-plan-reliability-files.d.ts +1 -1
  258. package/src/generators/slice/built-in-plan-reliability-files.js +279 -43
  259. package/src/generators/slice/built-in-plan-secret-runtime-files.d.ts +1 -1
  260. package/src/generators/slice/built-in-plan-secret-runtime-files.js +87 -76
  261. package/src/generators/slice/built-in-plan-shared.d.ts +4 -2
  262. package/src/generators/slice/built-in-plan-shared.js +41 -19
  263. package/src/generators/slice/built-in-plan-sql-events.d.ts +2 -0
  264. package/src/generators/slice/built-in-plan-sql-events.js +276 -0
  265. package/src/generators/slice/built-in-plan-testing-files.d.ts +1 -1
  266. package/src/generators/slice/built-in-plan-testing-files.js +304 -172
  267. package/src/generators/slice/built-in-plan-testing-persistence-files.d.ts +2 -0
  268. package/src/generators/slice/built-in-plan-testing-persistence-files.js +178 -0
  269. package/src/generators/slice/built-in-plan-thin-release-files.d.ts +11 -0
  270. package/src/generators/slice/built-in-plan-thin-release-files.js +162 -0
  271. package/src/generators/slice/built-in-plan-verification-files.js +76 -2
  272. package/src/generators/slice/built-in-plan-web-files.d.ts +1 -1
  273. package/src/generators/slice/built-in-plan-web-files.js +223 -16
  274. package/src/generators/slice/built-in-plan-workload-role-files.d.ts +1 -1
  275. package/src/generators/slice/built-in-plan-workload-role-files.js +143 -279
  276. package/src/generators/slice/built-in-plan.d.ts +11 -1
  277. package/src/generators/slice/built-in-plan.js +80 -29
  278. package/src/generators/slice/data-policy-review-seed.d.ts +2 -0
  279. package/src/generators/slice/data-policy-review-seed.js +22 -0
  280. package/src/generators/slice/deployed-smoke-readiness.d.ts +2 -0
  281. package/src/generators/slice/deployed-smoke-readiness.js +214 -0
  282. package/src/generators/slice/local-source-identity.d.ts +2 -0
  283. package/src/generators/slice/local-source-identity.js +31 -0
  284. package/src/generators/slice/persistence-contract.d.ts +14 -0
  285. package/src/generators/slice/persistence-contract.js +32 -0
  286. package/src/generators/slice/slice.js +61 -50
  287. package/src/generators/sql/schema.d.ts +7 -0
  288. package/src/generators/sql/schema.json +38 -0
  289. package/src/generators/sql/sql.d.ts +6 -0
  290. package/src/generators/sql/sql.js +53 -0
  291. package/src/generators/upgrade/sql-seeded-reconciliation.d.ts +2 -0
  292. package/src/generators/upgrade/sql-seeded-reconciliation.js +170 -0
  293. package/src/generators/upgrade/upgrade.d.ts +15 -1
  294. package/src/generators/upgrade/upgrade.js +435 -44
  295. package/src/generators/workload/performance-registration.d.ts +1 -0
  296. package/src/generators/workload/performance-registration.js +9 -11
  297. package/src/generators/workload/service-performance-files.d.ts +1 -0
  298. package/src/generators/workload/service-performance-files.js +27 -7
  299. package/src/generators/workload/workload.d.ts +1 -1
  300. package/src/generators/workload/workload.js +105 -29
  301. package/src/git-policy/action-pins.d.ts +5 -0
  302. package/src/git-policy/action-pins.js +5 -0
  303. package/src/git-policy/github-bootstrap.d.ts +39 -8
  304. package/src/git-policy/github-bootstrap.js +329 -175
  305. package/src/git-policy/routing.d.ts +7 -1
  306. package/src/git-policy/routing.js +62 -1
  307. package/src/index.d.ts +1 -0
  308. package/src/index.js +1 -0
  309. package/src/infrastructure-change/local-capability.d.ts +73 -0
  310. package/src/infrastructure-change/local-capability.js +114 -0
  311. package/src/infrastructure-change/model.d.ts +25 -4
  312. package/src/infrastructure-change/model.js +1 -0
  313. package/src/infrastructure-change/normalize.d.ts +4 -0
  314. package/src/infrastructure-change/normalize.js +47 -7
  315. package/src/infrastructure-change/plan.d.ts +30 -3
  316. package/src/infrastructure-change/plan.js +323 -13
  317. package/src/infrastructure-change/risk.d.ts +3 -1
  318. package/src/infrastructure-change/risk.js +96 -16
  319. package/src/local-dev/browser-verification.d.ts +37 -0
  320. package/src/local-dev/browser-verification.js +281 -0
  321. package/src/local-dev/contracts.d.ts +10 -1
  322. package/src/local-dev/contracts.js +114 -13
  323. package/src/local-dev/dev-command-core.js +24 -5
  324. package/src/local-dev/docker-credential-health.d.ts +14 -0
  325. package/src/local-dev/docker-credential-health.js +94 -0
  326. package/src/local-dev/environment-inspector.d.ts +7 -0
  327. package/src/local-dev/environment-inspector.js +42 -15
  328. package/src/local-dev/environment-state.js +2 -2
  329. package/src/local-dev/errors.d.ts +1 -1
  330. package/src/local-dev/errors.js +2 -0
  331. package/src/local-dev/fleet-client.js +2 -2
  332. package/src/local-dev/fleet-configuration.js +57 -25
  333. package/src/local-dev/fleet-inventory.js +46 -18
  334. package/src/local-dev/fleet-ipc.d.ts +7 -0
  335. package/src/local-dev/fleet-ipc.js +14 -2
  336. package/src/local-dev/fleet-launcher.d.ts +6 -0
  337. package/src/local-dev/fleet-launcher.js +14 -2
  338. package/src/local-dev/fleet-logs.js +50 -22
  339. package/src/local-dev/fleet-process.d.ts +20 -1
  340. package/src/local-dev/fleet-process.js +197 -41
  341. package/src/local-dev/fleet-runner-evidence.d.ts +5 -0
  342. package/src/local-dev/fleet-runner-evidence.js +56 -0
  343. package/src/local-dev/fleet-runtime.js +268 -229
  344. package/src/local-dev/fleet-session.d.ts +2 -0
  345. package/src/local-dev/fleet-session.js +28 -11
  346. package/src/local-dev/fleet-slice-runner-daemon.js +4 -0
  347. package/src/local-dev/fleet-state.d.ts +5 -2
  348. package/src/local-dev/fleet-state.js +25 -4
  349. package/src/local-dev/fleet-supervisor.d.ts +3 -0
  350. package/src/local-dev/fleet-supervisor.js +66 -11
  351. package/src/local-dev/fleet-web-start.d.ts +12 -0
  352. package/src/local-dev/fleet-web-start.js +48 -0
  353. package/src/local-dev/identity.js +3 -14
  354. package/src/local-dev/index.d.ts +1 -0
  355. package/src/local-dev/index.js +1 -0
  356. package/src/local-dev/native-completion.d.ts +9 -0
  357. package/src/local-dev/native-completion.js +130 -0
  358. package/src/local-dev/nx-workspace.d.ts +4 -2
  359. package/src/local-dev/nx-workspace.js +11 -6
  360. package/src/local-dev/personal-stage.d.ts +4 -5
  361. package/src/local-dev/personal-stage.js +6 -54
  362. package/src/local-dev/port-claims.d.ts +13 -0
  363. package/src/local-dev/port-claims.js +46 -0
  364. package/src/local-dev/ports.d.ts +14 -2
  365. package/src/local-dev/ports.js +78 -3
  366. package/src/local-dev/private-state.d.ts +11 -0
  367. package/src/local-dev/private-state.js +146 -40
  368. package/src/local-dev/process-group.d.ts +4 -0
  369. package/src/local-dev/process-group.js +29 -0
  370. package/src/local-dev/process-identity.d.ts +8 -0
  371. package/src/local-dev/process-identity.js +31 -1
  372. package/src/local-dev/proxy.js +11 -12
  373. package/src/local-dev/runtime-paths.js +1 -1
  374. package/src/local-dev/slice-claim.js +1 -1
  375. package/src/local-dev/slice-runner.d.ts +15 -6
  376. package/src/local-dev/slice-runner.js +189 -54
  377. package/src/local-dev/task-attachment.d.ts +17 -0
  378. package/src/local-dev/task-attachment.js +73 -0
  379. package/src/local-dev/task-authority.d.ts +10 -0
  380. package/src/local-dev/task-authority.js +27 -0
  381. package/src/local-dev/task-identity.d.ts +33 -0
  382. package/src/local-dev/task-identity.js +418 -0
  383. package/src/local-dev/task-native-writer.d.ts +18 -0
  384. package/src/local-dev/task-native-writer.js +329 -0
  385. package/src/local-dev/tls.js +8 -2
  386. package/src/local-dev/web-launch.d.ts +9 -0
  387. package/src/local-dev/web-launch.js +130 -0
  388. package/src/ownership/composition.d.ts +2 -1
  389. package/src/ownership/composition.js +1 -0
  390. package/src/performance/cost-collection.d.ts +1 -1
  391. package/src/performance/cost-collection.js +4 -2
  392. package/src/performance/cost-controls.d.ts +8 -4
  393. package/src/performance/cost-controls.js +39 -28
  394. package/src/performance/evidence.d.ts +1 -1
  395. package/src/performance/evidence.js +5 -3
  396. package/src/performance/load-safety.js +5 -3
  397. package/src/performance/model.d.ts +4 -4
  398. package/src/performance/model.js +4 -5
  399. package/src/performance/scenario.d.ts +22 -0
  400. package/src/performance/scenario.js +100 -92
  401. package/src/release/index.d.ts +0 -2
  402. package/src/release/index.js +0 -2
  403. package/src/release/source-authority.d.ts +5 -5
  404. package/src/release/source-authority.js +141 -124
  405. package/src/repository-policy/aurora-preflight.d.ts +1 -1
  406. package/src/repository-policy/aurora-preflight.js +4 -1
  407. package/src/repository-policy/capacity-migration.d.ts +3 -0
  408. package/src/repository-policy/capacity-migration.js +21 -0
  409. package/src/repository-policy/deployment-plan.d.ts +4 -1
  410. package/src/repository-policy/deployment-plan.js +9 -0
  411. package/src/repository-policy/foundation-profile.js +10 -1
  412. package/src/repository-policy/policy.d.ts +57 -3
  413. package/src/repository-policy/policy.js +497 -11
  414. package/src/schemas/blueprint-v1.json +5 -4
  415. package/src/schemas/foundation-requirement-v1.json +5 -4
  416. package/src/schemas/performance-policy-v1.json +3 -3
  417. package/src/schemas/repository-policy-v1.json +130 -6
  418. package/src/schemas/testing-evidence-result-v1.json +1 -1
  419. package/src/secrets/adapters.d.ts +7 -2
  420. package/src/secrets/adapters.js +34 -3
  421. package/src/secrets/aws-control-plane.d.ts +10 -1
  422. package/src/secrets/aws-control-plane.js +67 -0
  423. package/src/secrets/generated-aws-control-plane.d.ts +23 -0
  424. package/src/secrets/generated-aws-control-plane.js +259 -0
  425. package/src/secrets/metadata.js +38 -10
  426. package/src/secrets/model.d.ts +8 -1
  427. package/src/secrets/model.js +24 -3
  428. package/src/secrets/operator.d.ts +91 -3
  429. package/src/secrets/operator.js +463 -13
  430. package/src/secrets/registry.d.ts +2 -1
  431. package/src/secrets/registry.js +18 -1
  432. package/src/secrets/verification.js +9 -1
  433. package/src/secrets/workload-access.js +10 -2
  434. package/src/sst-environment-source-format.d.ts +6 -0
  435. package/src/sst-environment-source-format.js +199 -0
  436. package/src/supply-chain/action-pins.js +61 -7
  437. package/src/supply-chain/blueprint-trust-git.js +85 -24
  438. package/src/supply-chain/blueprint-verification-authority.js +55 -3
  439. package/src/supply-chain/build-output-bounds.d.ts +2 -0
  440. package/src/supply-chain/build-output-bounds.js +12 -0
  441. package/src/supply-chain/build-output.d.ts +7 -1
  442. package/src/supply-chain/build-output.js +177 -24
  443. package/src/supply-chain/ecr-scanning.d.ts +5 -3
  444. package/src/supply-chain/ecr-scanning.js +11 -7
  445. package/src/supply-chain/ecs-deployed-image.d.ts +5 -3
  446. package/src/supply-chain/ecs-deployed-image.js +6 -4
  447. package/src/supply-chain/generated-blueprint-trust-command.js +18 -1
  448. package/src/supply-chain/generated-command.js +1 -0
  449. package/src/supply-chain/generated-container-release-command.js +1285 -124
  450. package/src/supply-chain/generated-ecr-collector-command.d.ts +0 -1
  451. package/src/supply-chain/generated-ecr-collector-command.js +200 -93
  452. package/src/supply-chain/generated-files.js +25 -14
  453. package/src/supply-chain/generated-scanner-command.js +2 -1
  454. package/src/supply-chain/index.d.ts +1 -1
  455. package/src/supply-chain/index.js +2 -1
  456. package/src/supply-chain/sbom.d.ts +1 -1
  457. package/src/supply-chain/sbom.js +30 -5
  458. package/src/supply-chain/scanner.js +3 -0
  459. package/src/testing-evidence/fixture-scope.d.ts +2 -1
  460. package/src/testing-evidence/fixture-scope.js +4 -2
  461. package/src/testing-evidence/result.d.ts +2 -1
  462. package/src/testing-evidence/result.js +18 -4
  463. package/src/workload-roles/account-baseline.d.ts +11 -0
  464. package/src/workload-roles/account-baseline.js +253 -16
  465. package/src/workload-roles/authority.d.ts +3 -1
  466. package/src/workload-roles/authority.js +48 -2
  467. package/src/workload-roles/aws-s3-state.js +27 -0
  468. package/src/workload-roles/boundary.d.ts +2 -1
  469. package/src/workload-roles/boundary.js +9 -2
  470. package/src/workload-roles/handler.js +52 -24
  471. package/src/workload-roles/index.d.ts +10 -17
  472. package/src/workload-roles/index.js +5 -18
  473. package/src/workload-roles/injection.js +1 -1
  474. package/src/workload-roles/provisioner.js +12 -4
  475. package/src/workload-roles/registration.d.ts +1 -0
  476. package/src/workload-roles/registration.js +5 -0
  477. package/src/workload-roles/stage-boundary.js +1 -1
  478. package/src/workload-roles/standard-slice.js +3 -3
  479. package/src/workspace-deployment/affected-lifecycle.d.ts +53 -0
  480. package/src/workspace-deployment/affected-lifecycle.js +84 -0
  481. package/src/workspace-deployment/identity.d.ts +3 -0
  482. package/src/workspace-deployment/identity.js +22 -0
  483. package/src/workspace-deployment/index.d.ts +4 -0
  484. package/src/workspace-deployment/index.js +8 -0
  485. package/src/workspace-deployment/migration-evidence.d.ts +29 -0
  486. package/src/workspace-deployment/migration-evidence.js +83 -0
  487. package/src/workspace-deployment/migration.d.ts +27 -0
  488. package/src/workspace-deployment/migration.js +109 -0
  489. package/src/workspace-deployment/ownership.d.ts +81 -0
  490. package/src/workspace-deployment/ownership.js +381 -0
  491. package/src/api-contract/baseline-update.js.map +0 -1
  492. package/src/api-contract/compatibility.js.map +0 -1
  493. package/src/api-contract/contract-graph.js.map +0 -1
  494. package/src/api-contract/evidence.js.map +0 -1
  495. package/src/api-contract/index.js.map +0 -1
  496. package/src/api-contract/model.fixtures.d.ts +0 -2
  497. package/src/api-contract/model.fixtures.js +0 -81
  498. package/src/api-contract/model.fixtures.js.map +0 -1
  499. package/src/api-contract/model.js.map +0 -1
  500. package/src/api-contract/rollout.js.map +0 -1
  501. package/src/authorization/compatibility.js.map +0 -1
  502. package/src/authorization/index.js.map +0 -1
  503. package/src/blueprints/execution.js.map +0 -1
  504. package/src/blueprints/external-sandbox.js.map +0 -1
  505. package/src/blueprints/index.js.map +0 -1
  506. package/src/blueprints/inputs.js.map +0 -1
  507. package/src/blueprints/manifest.js.map +0 -1
  508. package/src/blueprints/resolver.js.map +0 -1
  509. package/src/blueprints/transitions.js.map +0 -1
  510. package/src/cli/agent-command.js.map +0 -1
  511. package/src/cli/agent-runtime.js.map +0 -1
  512. package/src/cli/blueprint-authority.js.map +0 -1
  513. package/src/cli/blueprint-command.js.map +0 -1
  514. package/src/cli/bootstrap.js.map +0 -1
  515. package/src/cli/dev-command.js.map +0 -1
  516. package/src/cli/main.js.map +0 -1
  517. package/src/cli/output.js.map +0 -1
  518. package/src/cli/personal-secret-runtime.js.map +0 -1
  519. package/src/cli/secret-terminal.js.map +0 -1
  520. package/src/container-images.js.map +0 -1
  521. package/src/data-lifecycle/index.js.map +0 -1
  522. package/src/data-lifecycle/model.fixtures.d.ts +0 -2
  523. package/src/data-lifecycle/model.fixtures.js +0 -244
  524. package/src/data-lifecycle/model.fixtures.js.map +0 -1
  525. package/src/data-lifecycle/model.js.map +0 -1
  526. package/src/data-lifecycle/sensitive-artifacts.js.map +0 -1
  527. package/src/data-lifecycle/validation.js.map +0 -1
  528. package/src/database-retirement/contract.js.map +0 -1
  529. package/src/database-retirement/index.js.map +0 -1
  530. package/src/deterministic-order.js.map +0 -1
  531. package/src/developer-agent/context.js.map +0 -1
  532. package/src/developer-agent/generator-planning.js.map +0 -1
  533. package/src/developer-agent/generator-preview.js.map +0 -1
  534. package/src/developer-agent/git-inspection.js.map +0 -1
  535. package/src/developer-agent/handoff.js.map +0 -1
  536. package/src/developer-agent/index.js.map +0 -1
  537. package/src/developer-agent/model.js.map +0 -1
  538. package/src/developer-agent/operation-registry.js.map +0 -1
  539. package/src/developer-agent/ordering.js.map +0 -1
  540. package/src/developer-agent/planning.js.map +0 -1
  541. package/src/developer-agent/preview-changes.js.map +0 -1
  542. package/src/developer-agent/preview-source.js.map +0 -1
  543. package/src/developer-agent/validation.js.map +0 -1
  544. package/src/developer-agent/workspace-inspection.js.map +0 -1
  545. package/src/developer-agent/workspace-path.js.map +0 -1
  546. package/src/executors/blueprint-trust/blueprint-trust.js.map +0 -1
  547. package/src/executors/blueprint-verification/blueprint-verification.js.map +0 -1
  548. package/src/executors/deploy/deploy.js.map +0 -1
  549. package/src/executors/deployment-plan/deployment-plan.js.map +0 -1
  550. package/src/executors/dev/dev.js.map +0 -1
  551. package/src/executors/dev-doctor/dev-doctor.js.map +0 -1
  552. package/src/executors/dev-setup/dev-setup.js.map +0 -1
  553. package/src/executors/developer-context/developer-context.js.map +0 -1
  554. package/src/executors/fleet/fleet.js.map +0 -1
  555. package/src/executors/foundation-preflight/foundation-preflight.js.map +0 -1
  556. package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +0 -1
  557. package/src/executors/foundation-remove-preflight/foundation-remove-preflight.js.map +0 -1
  558. package/src/executors/github-bootstrap/github-bootstrap.js.map +0 -1
  559. package/src/executors/infrastructure-plan/infrastructure-plan.js.map +0 -1
  560. package/src/executors/refresh/refresh.js.map +0 -1
  561. package/src/executors/remove/remove.js.map +0 -1
  562. package/src/executors/secret-guardrails/secret-guardrails.js.map +0 -1
  563. package/src/executors/secret-metadata/secret-metadata.js.map +0 -1
  564. package/src/executors/sst-lifecycle/logging-preflight.js.map +0 -1
  565. package/src/executors/sst-lifecycle/run-sst-command.js.map +0 -1
  566. package/src/executors/sst-lifecycle/secret-preflight.js.map +0 -1
  567. package/src/executors/unlock/unlock.js.map +0 -1
  568. package/src/executors/work-markers/work-markers.js.map +0 -1
  569. package/src/foundation/discovery.js.map +0 -1
  570. package/src/foundation/index.js.map +0 -1
  571. package/src/foundation/local-database-contract.js.map +0 -1
  572. package/src/foundation/logging-preflight.js.map +0 -1
  573. package/src/foundation/logging.js.map +0 -1
  574. package/src/foundation/preflight.js.map +0 -1
  575. package/src/foundation/provision-database-bindings.js.map +0 -1
  576. package/src/foundation/provision-logical-database.js.map +0 -1
  577. package/src/foundation/requirements.js.map +0 -1
  578. package/src/foundation/router-origin-proof.js.map +0 -1
  579. package/src/foundation/stages.js.map +0 -1
  580. package/src/frontend-security/index.js.map +0 -1
  581. package/src/frontend-security/security-headers.js.map +0 -1
  582. package/src/generators/feature-registry.js.map +0 -1
  583. package/src/generators/function/function.js.map +0 -1
  584. package/src/generators/job/job.js.map +0 -1
  585. package/src/generators/logging-registry.js.map +0 -1
  586. package/src/generators/post-generation-install.js.map +0 -1
  587. package/src/generators/preset/generator.js.map +0 -1
  588. package/src/generators/preset/tool-versions.js.map +0 -1
  589. package/src/generators/preset/workspace-files-developer-agent.js.map +0 -1
  590. package/src/generators/preset/workspace-files-foundation-workload-roles.js.map +0 -1
  591. package/src/generators/preset/workspace-files-performance-cost.js.map +0 -1
  592. package/src/generators/preset/workspace-files-performance-load.js.map +0 -1
  593. package/src/generators/preset/workspace-files-workload-role-baseline.js.map +0 -1
  594. package/src/generators/preset/workspace-files.js.map +0 -1
  595. package/src/generators/repository-policy/repository-policy.js.map +0 -1
  596. package/src/generators/service/service.js.map +0 -1
  597. package/src/generators/slice/built-in-plan-api-contract-files.js.map +0 -1
  598. package/src/generators/slice/built-in-plan-api-files.js.map +0 -1
  599. package/src/generators/slice/built-in-plan-async-work-files.js.map +0 -1
  600. package/src/generators/slice/built-in-plan-authorization-files.js.map +0 -1
  601. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js.map +0 -1
  602. package/src/generators/slice/built-in-plan-data-deletion-files.js.map +0 -1
  603. package/src/generators/slice/built-in-plan-data-export-infrastructure-files.js.map +0 -1
  604. package/src/generators/slice/built-in-plan-data-files.js.map +0 -1
  605. package/src/generators/slice/built-in-plan-data-lifecycle-files.js.map +0 -1
  606. package/src/generators/slice/built-in-plan-data-lifecycle-runtime-files.js.map +0 -1
  607. package/src/generators/slice/built-in-plan-data-retention-job-files.js.map +0 -1
  608. package/src/generators/slice/built-in-plan-data-retention-launcher-files.js.map +0 -1
  609. package/src/generators/slice/built-in-plan-data-rights-files.js.map +0 -1
  610. package/src/generators/slice/built-in-plan-database-lifecycle-files.js.map +0 -1
  611. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js.map +0 -1
  612. package/src/generators/slice/built-in-plan-foundation-files.js.map +0 -1
  613. package/src/generators/slice/built-in-plan-frontend-files.js.map +0 -1
  614. package/src/generators/slice/built-in-plan-infrastructure-files.js.map +0 -1
  615. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js.map +0 -1
  616. package/src/generators/slice/built-in-plan-metadata-files.js.map +0 -1
  617. package/src/generators/slice/built-in-plan-operations-files.js.map +0 -1
  618. package/src/generators/slice/built-in-plan-performance-files.js.map +0 -1
  619. package/src/generators/slice/built-in-plan-project-files.js.map +0 -1
  620. package/src/generators/slice/built-in-plan-release-files.js.map +0 -1
  621. package/src/generators/slice/built-in-plan-reliability-files.js.map +0 -1
  622. package/src/generators/slice/built-in-plan-secret-runtime-files.js.map +0 -1
  623. package/src/generators/slice/built-in-plan-shared.js.map +0 -1
  624. package/src/generators/slice/built-in-plan-testing-files.js.map +0 -1
  625. package/src/generators/slice/built-in-plan-verification-files.js.map +0 -1
  626. package/src/generators/slice/built-in-plan-web-files.js.map +0 -1
  627. package/src/generators/slice/built-in-plan-workload-role-files.js.map +0 -1
  628. package/src/generators/slice/built-in-plan.js.map +0 -1
  629. package/src/generators/slice/slice.js.map +0 -1
  630. package/src/generators/upgrade/upgrade.js.map +0 -1
  631. package/src/generators/workload/frozen-container.js.map +0 -1
  632. package/src/generators/workload/performance-registration.js.map +0 -1
  633. package/src/generators/workload/reliability-registration.js.map +0 -1
  634. package/src/generators/workload/service-performance-files.js.map +0 -1
  635. package/src/generators/workload/workload.js.map +0 -1
  636. package/src/git-policy/action-pins.js.map +0 -1
  637. package/src/git-policy/github-bootstrap.js.map +0 -1
  638. package/src/git-policy/index.js.map +0 -1
  639. package/src/git-policy/routing.js.map +0 -1
  640. package/src/index.js.map +0 -1
  641. package/src/infrastructure-change/convergence.js.map +0 -1
  642. package/src/infrastructure-change/drift.js.map +0 -1
  643. package/src/infrastructure-change/index.js.map +0 -1
  644. package/src/infrastructure-change/model.js.map +0 -1
  645. package/src/infrastructure-change/normalize.js.map +0 -1
  646. package/src/infrastructure-change/plan.js.map +0 -1
  647. package/src/infrastructure-change/risk.js.map +0 -1
  648. package/src/infrastructure-change/summary.js.map +0 -1
  649. package/src/local-dev/context-discovery.js.map +0 -1
  650. package/src/local-dev/contract-validation.js.map +0 -1
  651. package/src/local-dev/contracts.js.map +0 -1
  652. package/src/local-dev/control-contract.js.map +0 -1
  653. package/src/local-dev/dev-command-core.js.map +0 -1
  654. package/src/local-dev/effects.js.map +0 -1
  655. package/src/local-dev/environment-inspector.js.map +0 -1
  656. package/src/local-dev/environment-state.js.map +0 -1
  657. package/src/local-dev/errors.js.map +0 -1
  658. package/src/local-dev/fleet-client.js.map +0 -1
  659. package/src/local-dev/fleet-configuration.js.map +0 -1
  660. package/src/local-dev/fleet-inventory.js.map +0 -1
  661. package/src/local-dev/fleet-ipc.js.map +0 -1
  662. package/src/local-dev/fleet-launcher.js.map +0 -1
  663. package/src/local-dev/fleet-lock.js.map +0 -1
  664. package/src/local-dev/fleet-logs.js.map +0 -1
  665. package/src/local-dev/fleet-process.js.map +0 -1
  666. package/src/local-dev/fleet-runtime.js.map +0 -1
  667. package/src/local-dev/fleet-session.js.map +0 -1
  668. package/src/local-dev/fleet-slice-runner-daemon.js.map +0 -1
  669. package/src/local-dev/fleet-startup.js.map +0 -1
  670. package/src/local-dev/fleet-state.js.map +0 -1
  671. package/src/local-dev/fleet-supervisor-daemon.js.map +0 -1
  672. package/src/local-dev/fleet-supervisor.js.map +0 -1
  673. package/src/local-dev/gateway-daemon.js.map +0 -1
  674. package/src/local-dev/gateway.js.map +0 -1
  675. package/src/local-dev/identity.js.map +0 -1
  676. package/src/local-dev/index.js.map +0 -1
  677. package/src/local-dev/local-context.js.map +0 -1
  678. package/src/local-dev/nx-workspace.js.map +0 -1
  679. package/src/local-dev/personal-secret-ledger.js.map +0 -1
  680. package/src/local-dev/personal-stage.js.map +0 -1
  681. package/src/local-dev/portless.js.map +0 -1
  682. package/src/local-dev/ports.js.map +0 -1
  683. package/src/local-dev/private-state.js.map +0 -1
  684. package/src/local-dev/process-identity.js.map +0 -1
  685. package/src/local-dev/proxy.js.map +0 -1
  686. package/src/local-dev/runtime-paths.js.map +0 -1
  687. package/src/local-dev/secret-slice-claim.js.map +0 -1
  688. package/src/local-dev/slice-claim.js.map +0 -1
  689. package/src/local-dev/slice-runner.js.map +0 -1
  690. package/src/local-dev/tls.js.map +0 -1
  691. package/src/ownership/composition.js.map +0 -1
  692. package/src/ownership/foundation-record.js.map +0 -1
  693. package/src/ownership/hash.js.map +0 -1
  694. package/src/ownership/index.js.map +0 -1
  695. package/src/ownership/json-ownership.js.map +0 -1
  696. package/src/ownership/record.js.map +0 -1
  697. package/src/ownership/workspace-record.js.map +0 -1
  698. package/src/performance/cost-collection.js.map +0 -1
  699. package/src/performance/cost-controls.js.map +0 -1
  700. package/src/performance/evidence.js.map +0 -1
  701. package/src/performance/index.js.map +0 -1
  702. package/src/performance/load-safety.js.map +0 -1
  703. package/src/performance/model.js.map +0 -1
  704. package/src/performance/pr-artifact-budget.js.map +0 -1
  705. package/src/performance/runner.js.map +0 -1
  706. package/src/performance/scenario-endpoint.js.map +0 -1
  707. package/src/performance/scenario.js.map +0 -1
  708. package/src/performance/test-fixtures.d.ts +0 -7
  709. package/src/performance/test-fixtures.js +0 -169
  710. package/src/performance/test-fixtures.js.map +0 -1
  711. package/src/performance/unit-cost.js.map +0 -1
  712. package/src/release/index.js.map +0 -1
  713. package/src/release/lifecycle.js.map +0 -1
  714. package/src/release/manifest.js.map +0 -1
  715. package/src/release/rollout.js.map +0 -1
  716. package/src/release/source-authority.js.map +0 -1
  717. package/src/repository-policy/aurora-preflight.js.map +0 -1
  718. package/src/repository-policy/deployment-plan.js.map +0 -1
  719. package/src/repository-policy/foundation-profile.js.map +0 -1
  720. package/src/repository-policy/index.js.map +0 -1
  721. package/src/repository-policy/policy.js.map +0 -1
  722. package/src/secrets/adapters.js.map +0 -1
  723. package/src/secrets/aws-control-plane.js.map +0 -1
  724. package/src/secrets/declaration-verification.js.map +0 -1
  725. package/src/secrets/guardrails.js.map +0 -1
  726. package/src/secrets/index.js.map +0 -1
  727. package/src/secrets/metadata.js.map +0 -1
  728. package/src/secrets/model.js.map +0 -1
  729. package/src/secrets/operator.js.map +0 -1
  730. package/src/secrets/permissions.js.map +0 -1
  731. package/src/secrets/personal-command.js.map +0 -1
  732. package/src/secrets/personal-ledger.js.map +0 -1
  733. package/src/secrets/registry.js.map +0 -1
  734. package/src/secrets/verification.js.map +0 -1
  735. package/src/secrets/workload-access.js.map +0 -1
  736. package/src/supply-chain/action-pins.js.map +0 -1
  737. package/src/supply-chain/blueprint-trust-git.js.map +0 -1
  738. package/src/supply-chain/blueprint-trust-process.js.map +0 -1
  739. package/src/supply-chain/blueprint-trust.js.map +0 -1
  740. package/src/supply-chain/blueprint-verification-authority.js.map +0 -1
  741. package/src/supply-chain/blueprint-verification-execution.js.map +0 -1
  742. package/src/supply-chain/build-output.js.map +0 -1
  743. package/src/supply-chain/common.js.map +0 -1
  744. package/src/supply-chain/container-artifact-contract.js.map +0 -1
  745. package/src/supply-chain/container-release.js.map +0 -1
  746. package/src/supply-chain/ecr-applicability.js.map +0 -1
  747. package/src/supply-chain/ecr-scanning.js.map +0 -1
  748. package/src/supply-chain/ecs-deployed-image.js.map +0 -1
  749. package/src/supply-chain/errors.js.map +0 -1
  750. package/src/supply-chain/generated-blueprint-trust-command.js.map +0 -1
  751. package/src/supply-chain/generated-command.js.map +0 -1
  752. package/src/supply-chain/generated-container-release-command.js.map +0 -1
  753. package/src/supply-chain/generated-ecr-collector-command.js.map +0 -1
  754. package/src/supply-chain/generated-files.js.map +0 -1
  755. package/src/supply-chain/generated-scanner-command.js.map +0 -1
  756. package/src/supply-chain/index.js.map +0 -1
  757. package/src/supply-chain/inventory.js.map +0 -1
  758. package/src/supply-chain/license-expression.js.map +0 -1
  759. package/src/supply-chain/pnpm-toolchain-authority.js.map +0 -1
  760. package/src/supply-chain/policy.js.map +0 -1
  761. package/src/supply-chain/publication.js.map +0 -1
  762. package/src/supply-chain/sbom.js.map +0 -1
  763. package/src/supply-chain/scanner.js.map +0 -1
  764. package/src/supply-chain/vendored-source.js.map +0 -1
  765. package/src/testing-evidence/fixture-scope.js.map +0 -1
  766. package/src/testing-evidence/index.js.map +0 -1
  767. package/src/testing-evidence/quarantine.js.map +0 -1
  768. package/src/testing-evidence/result.js.map +0 -1
  769. package/src/testing-evidence/runner-adapter.js.map +0 -1
  770. package/src/testing-evidence/sensitive-artifacts.js.map +0 -1
  771. package/src/validation.js.map +0 -1
  772. package/src/work-markers/index.js.map +0 -1
  773. package/src/work-markers/work-markers.js.map +0 -1
  774. package/src/workload-roles/account-baseline.js.map +0 -1
  775. package/src/workload-roles/authority.js.map +0 -1
  776. package/src/workload-roles/aws-adapter.js.map +0 -1
  777. package/src/workload-roles/aws-internal-handler.js.map +0 -1
  778. package/src/workload-roles/aws-s3-state.js.map +0 -1
  779. package/src/workload-roles/aws-sdk-control-plane.js.map +0 -1
  780. package/src/workload-roles/boundary.js.map +0 -1
  781. package/src/workload-roles/convergence.js.map +0 -1
  782. package/src/workload-roles/effective-policy.js.map +0 -1
  783. package/src/workload-roles/handler.js.map +0 -1
  784. package/src/workload-roles/history.js.map +0 -1
  785. package/src/workload-roles/index.js.map +0 -1
  786. package/src/workload-roles/injection.js.map +0 -1
  787. package/src/workload-roles/manifest.js.map +0 -1
  788. package/src/workload-roles/provisioner.js.map +0 -1
  789. package/src/workload-roles/registration.js.map +0 -1
  790. package/src/workload-roles/stage-boundary.js.map +0 -1
  791. package/src/workload-roles/standard-slice.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FleetSession = void 0;
4
+ const contracts_js_1 = require("./contracts.js");
4
5
  const deterministic_order_js_1 = require("../deterministic-order.js");
5
6
  const errors_js_1 = require("./errors.js");
6
7
  const slice_claim_js_1 = require("./slice-claim.js");
@@ -10,6 +11,7 @@ function sessionError(classification, message) {
10
11
  class FleetSession {
11
12
  routes;
12
13
  #allocatePort;
14
+ #adapters;
13
15
  #claimOwner;
14
16
  #cleanupStates = new Map();
15
17
  #fleetId;
@@ -23,6 +25,7 @@ class FleetSession {
23
25
  #sliceClaimsDirectory;
24
26
  #started = false;
25
27
  constructor(options) {
28
+ this.#adapters = options.adapters;
26
29
  this.#allocatePort = options.allocatePort;
27
30
  this.#fleetId = options.fleetId;
28
31
  this.#processFactory = options.processFactory;
@@ -47,7 +50,7 @@ class FleetSession {
47
50
  state: 'remote',
48
51
  }));
49
52
  for (const route of this.routes) {
50
- this.#cleanupStates.set(route.name, route.adapter.adapterVersion === 2 && route.adapter.lifecycle
53
+ this.#cleanupStates.set(route.name, route.adapter.adapterVersion !== 1 && route.adapter.lifecycle
51
54
  ? 'pending'
52
55
  : 'not-declared');
53
56
  }
@@ -78,10 +81,7 @@ class FleetSession {
78
81
  }
79
82
  up(names) {
80
83
  return this.#serialized(async () => {
81
- const requested = [...new Set(names)].sort();
82
- if (requested.length !== names.length || requested.length === 0) {
83
- return sessionError('invalid-input', 'Fleet up requires unique non-empty Slice names.');
84
- }
84
+ const requested = (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'up', names, this.selectedSlices());
85
85
  const changed = requested.filter((name) => !this.#route(name).selected);
86
86
  if (changed.length === 0) {
87
87
  return requested.map((name) => {
@@ -102,7 +102,7 @@ class FleetSession {
102
102
  route.upstream = new URL(`http://127.0.0.1:${port}`);
103
103
  route.selected = true;
104
104
  route.state = 'starting';
105
- this.#cleanupStates.set(name, route.adapter.adapterVersion === 2 && route.adapter.lifecycle
105
+ this.#cleanupStates.set(name, route.adapter.adapterVersion !== 1 && route.adapter.lifecycle
106
106
  ? 'pending'
107
107
  : 'not-declared');
108
108
  const process = this.#processFactory({
@@ -125,6 +125,7 @@ class FleetSession {
125
125
  const process = this.#processes.get(name);
126
126
  if (process) {
127
127
  try {
128
+ (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'down', [name], this.selectedSlices());
128
129
  await process.stop({ cleanup: true });
129
130
  this.#processes.delete(name);
130
131
  }
@@ -142,7 +143,7 @@ class FleetSession {
142
143
  const route = this.#route(name);
143
144
  route.selected = false;
144
145
  route.state = 'remote';
145
- this.#cleanupStates.set(name, route.adapter.adapterVersion === 2 && route.adapter.lifecycle
146
+ this.#cleanupStates.set(name, route.adapter.adapterVersion !== 1 && route.adapter.lifecycle
146
147
  ? 'succeeded'
147
148
  : 'not-declared');
148
149
  delete route.upstream;
@@ -181,7 +182,12 @@ class FleetSession {
181
182
  return sessionError('invalid-input', 'Fleet restart requires unique selected Slice names.');
182
183
  }
183
184
  const results = [];
184
- for (const name of [...names].sort()) {
185
+ const ordered = (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'restart', names, this.selectedSlices());
186
+ for (const name of ordered) {
187
+ if (!this.#processes.has(name))
188
+ return sessionError('not-running', `Product Slice ${name} has no owned process.`);
189
+ }
190
+ for (const name of ordered) {
185
191
  const route = this.#route(name);
186
192
  const process = this.#processes.get(name);
187
193
  if (!route.selected || !process) {
@@ -199,14 +205,16 @@ class FleetSession {
199
205
  return results;
200
206
  });
201
207
  }
202
- down(names) {
208
+ async down(names) {
209
+ this.interruptStartup(names);
203
210
  return this.#serialized(async () => {
204
211
  if (names.length === 0 || new Set(names).size !== names.length) {
205
212
  return sessionError('invalid-input', 'Fleet down requires unique selected Slice names.');
206
213
  }
207
214
  const results = [];
208
215
  const cleanupFailures = [];
209
- for (const name of [...names].sort().reverse()) {
216
+ const ordered = (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'down', names, this.selectedSlices());
217
+ for (const name of ordered) {
210
218
  const route = this.#route(name);
211
219
  const process = this.#processes.get(name);
212
220
  const previousState = route.state;
@@ -220,12 +228,13 @@ class FleetSession {
220
228
  continue;
221
229
  }
222
230
  try {
231
+ (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'down', [name], this.selectedSlices());
223
232
  await process.stop({ cleanup: true });
224
233
  (0, slice_claim_js_1.releaseSliceClaims)(this.#sliceClaimsDirectory, [name], this.#claimOwner, this.#security);
225
234
  this.#processes.delete(name);
226
235
  route.selected = false;
227
236
  route.state = 'remote';
228
- this.#cleanupStates.set(name, route.adapter.adapterVersion === 2 && route.adapter.lifecycle
237
+ this.#cleanupStates.set(name, route.adapter.adapterVersion !== 1 && route.adapter.lifecycle
229
238
  ? 'succeeded'
230
239
  : 'not-declared');
231
240
  delete route.upstream;
@@ -261,6 +270,14 @@ class FleetSession {
261
270
  .map(({ name }) => name)
262
271
  .sort();
263
272
  }
273
+ interruptStartup(names) {
274
+ // Validate dependency/selection authority before cancelling any wait. The
275
+ // running up operation owns rollback; down waits for that rollback rather
276
+ // than racing a second native cleanup against a live writer.
277
+ const ordered = (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, 'down', names, this.selectedSlices());
278
+ for (const name of ordered)
279
+ this.#processes.get(name)?.interruptStartup?.();
280
+ }
264
281
  allSlices() {
265
282
  return this.routes.map(({ name }) => name).sort();
266
283
  }
@@ -16,6 +16,10 @@ if (require.main === module) {
16
16
  .catch((error) => {
17
17
  process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
18
18
  process.exitCode = 1;
19
+ })
20
+ .finally(() => {
21
+ if (process.connected)
22
+ process.disconnect();
19
23
  });
20
24
  }
21
25
  //# sourceMappingURL=fleet-slice-runner-daemon.js.map
@@ -12,7 +12,7 @@ export type FleetRouteState = (typeof FLEET_ROUTE_STATES)[number];
12
12
  export type FleetCleanupState = (typeof FLEET_CLEANUP_STATES)[number];
13
13
  export type FleetOperationState = (typeof FLEET_OPERATION_STATES)[number];
14
14
  export interface FleetSliceState {
15
- adapterVersion: 1 | 2;
15
+ adapterVersion: 1 | 2 | 3;
16
16
  cleanup: FleetCleanupState;
17
17
  lastTransitionAt: string;
18
18
  logSequence: number;
@@ -42,7 +42,7 @@ export interface FleetStateRecord {
42
42
  frameworkVersion: string;
43
43
  gitCommonDirectory: string;
44
44
  heartbeatAt: string;
45
- identitySource: 'os-account';
45
+ identitySource: 'worktree-task';
46
46
  nxVersion: string;
47
47
  operations: FleetOperationStateRecord[];
48
48
  origin: string;
@@ -55,6 +55,9 @@ export interface FleetStateRecord {
55
55
  supervisor: FleetProcessIdentity;
56
56
  workspaceRealpath: string;
57
57
  }
58
+ /** An up operation persists its resolved closure before acquiring any claims. */
59
+ export declare function fleetOwnedSliceNames(state: FleetStateRecord): string[];
60
+ export declare function fleetOwnsStartingSlice(state: FleetStateRecord, slice: string, acquiredAt: string): boolean;
58
61
  export declare function validateFleetStateRecord(value: unknown): FleetStateRecord;
59
62
  export declare function transitionFleetSliceState(value: FleetSliceState, next: FleetRouteState, transitionedAt?: string): FleetSliceState;
60
63
  export declare function fleetStatePath(sessionDirectory: string): string;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FLEET_OPERATION_STATES = exports.FLEET_CLEANUP_STATES = exports.FLEET_ROUTE_STATES = exports.FLEET_STATE_FILE = exports.FLEET_STATE_SCHEMA_VERSION = void 0;
4
+ exports.fleetOwnedSliceNames = fleetOwnedSliceNames;
5
+ exports.fleetOwnsStartingSlice = fleetOwnsStartingSlice;
4
6
  exports.validateFleetStateRecord = validateFleetStateRecord;
5
7
  exports.transitionFleetSliceState = transitionFleetSliceState;
6
8
  exports.fleetStatePath = fleetStatePath;
@@ -34,6 +36,23 @@ exports.FLEET_OPERATION_STATES = [
34
36
  'succeeded',
35
37
  'failed',
36
38
  ];
39
+ /** An up operation persists its resolved closure before acquiring any claims. */
40
+ function fleetOwnedSliceNames(state) {
41
+ return state.slices
42
+ .filter((slice) => slice.selected ||
43
+ state.operations.some((operation) => operation.command === 'up' &&
44
+ operation.state === 'running' &&
45
+ operation.slices.includes(slice.name)))
46
+ .map(({ name }) => name)
47
+ .sort();
48
+ }
49
+ function fleetOwnsStartingSlice(state, slice, acquiredAt) {
50
+ return (state.slices.some((entry) => entry.name === slice) &&
51
+ state.operations.some((operation) => operation.command === 'up' &&
52
+ operation.state === 'running' &&
53
+ operation.slices.includes(slice) &&
54
+ operation.acceptedAt <= acquiredAt));
55
+ }
37
56
  const ALLOWED_ROUTE_TRANSITIONS = {
38
57
  ready: ['unavailable'],
39
58
  remote: ['starting'],
@@ -65,8 +84,10 @@ function validateSliceState(value) {
65
84
  'routeState',
66
85
  'selected',
67
86
  ], ['runnerGeneration'], 'Fleet Slice state');
68
- if (value.adapterVersion !== 1 && value.adapterVersion !== 2) {
69
- return stateError('Fleet Slice adapterVersion must be 1 or 2.');
87
+ if (value.adapterVersion !== 1 &&
88
+ value.adapterVersion !== 2 &&
89
+ value.adapterVersion !== 3) {
90
+ return stateError('Fleet Slice adapterVersion must be 1, 2, or 3.');
70
91
  }
71
92
  if (!exports.FLEET_CLEANUP_STATES.includes(value.cleanup)) {
72
93
  return stateError('Fleet Slice cleanup state is invalid.');
@@ -199,7 +220,7 @@ function validateFleetStateRecord(value) {
199
220
  ], [], 'Fleet state');
200
221
  if (value.schemaVersion !== exports.FLEET_STATE_SCHEMA_VERSION ||
201
222
  value.controlProtocolVersion !== control_contract_js_1.FLEET_CONTROL_PROTOCOL_VERSION ||
202
- value.identitySource !== 'os-account') {
223
+ value.identitySource !== 'worktree-task') {
203
224
  return stateError('Fleet state schema, control protocol, or identity source is unsupported.');
204
225
  }
205
226
  if (!Array.isArray(value.slices) || value.slices.length > 128) {
@@ -237,7 +258,7 @@ function validateFleetStateRecord(value) {
237
258
  frameworkVersion: (0, contract_validation_js_1.requireBoundedString)(value.frameworkVersion, 'Fleet frameworkVersion', { maximumLength: 128 }),
238
259
  gitCommonDirectory: requireAbsolutePath(value.gitCommonDirectory, 'Fleet gitCommonDirectory'),
239
260
  heartbeatAt,
240
- identitySource: 'os-account',
261
+ identitySource: 'worktree-task',
241
262
  nxVersion: (0, contract_validation_js_1.requireBoundedString)(value.nxVersion, 'Fleet nxVersion', {
242
263
  maximumLength: 128,
243
264
  pattern: /^[0-9A-Za-z][0-9A-Za-z.+-]{0,127}$/,
@@ -1,3 +1,4 @@
1
+ import { type LocalDevAdapter } from './contracts.js';
1
2
  import { type FleetControlRequest } from './control-contract.js';
2
3
  import { type FleetControlHandler } from './fleet-ipc.js';
3
4
  import { type FleetProcessIdentity } from './fleet-lock.js';
@@ -14,6 +15,7 @@ export interface FleetSupervisorMutationHost {
14
15
  allSlices(): readonly string[];
15
16
  closeProxyWhenEmpty(): Promise<boolean>;
16
17
  down(slices: readonly string[]): Promise<FleetSupervisorTargetResult[]>;
18
+ interruptStartup?(slices: readonly string[]): void;
17
19
  restart(slices: readonly string[]): Promise<FleetSupervisorTargetResult[]>;
18
20
  selectedSlices(): readonly string[];
19
21
  sliceStates(): ReadonlyArray<Pick<FleetSliceState, 'cleanup' | 'name' | 'restartAttempts' | 'routeState' | 'runnerGeneration' | 'selected'>>;
@@ -32,6 +34,7 @@ export interface FleetSupervisorEffects {
32
34
  processIdentity?: () => FleetProcessIdentity;
33
35
  }
34
36
  export interface FleetSupervisorOptions {
37
+ adapters: ReadonlyMap<string, LocalDevAdapter>;
35
38
  heartbeatIntervalMs?: number;
36
39
  host: FleetSupervisorMutationHost;
37
40
  initialState: FleetStateRecord;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FleetSupervisor = void 0;
4
4
  const node_crypto_1 = require("node:crypto");
5
+ const contracts_js_1 = require("./contracts.js");
5
6
  const node_fs_1 = require("node:fs");
6
7
  const control_contract_js_1 = require("./control-contract.js");
7
8
  const errors_js_1 = require("./errors.js");
@@ -11,6 +12,7 @@ const fleet_state_js_1 = require("./fleet-state.js");
11
12
  const private_state_js_1 = require("./private-state.js");
12
13
  const process_identity_js_1 = require("./process-identity.js");
13
14
  const slice_claim_js_1 = require("./slice-claim.js");
15
+ const fleet_runner_evidence_js_1 = require("./fleet-runner-evidence.js");
14
16
  function supervisorError(classification, message) {
15
17
  throw new errors_js_1.LocalDevContractError(classification, message);
16
18
  }
@@ -33,6 +35,7 @@ function failureClassification(error) {
33
35
  }
34
36
  class FleetSupervisor {
35
37
  #closed = false;
38
+ #adapters;
36
39
  #closedWaiters = [];
37
40
  #controlServer;
38
41
  #effects;
@@ -49,6 +52,7 @@ class FleetSupervisor {
49
52
  #state;
50
53
  #stopping = false;
51
54
  constructor(options, effects = {}) {
55
+ this.#adapters = options.adapters;
52
56
  this.#host = options.host;
53
57
  this.#paths = options.paths;
54
58
  this.#security = options.security ?? {};
@@ -167,7 +171,13 @@ class FleetSupervisor {
167
171
  ? [...this.#host.allSlices()]
168
172
  : [...this.#host.selectedSlices()]
169
173
  : [...request.payload.selector.slices];
170
- return [...selected].sort();
174
+ // An empty all-down selector is an idle Fleet, not malformed caller input.
175
+ // Keep explicit empty/duplicate roots rejected by the dependency resolver.
176
+ if (request.payload.command === 'down' &&
177
+ request.payload.selector.all &&
178
+ selected.length === 0)
179
+ return [];
180
+ return (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, request.payload.command, selected, this.#host.selectedSlices());
171
181
  }
172
182
  #syncSliceStates(results) {
173
183
  const byName = new Map(results.map((result) => [result.name, result]));
@@ -252,6 +262,8 @@ class FleetSupervisor {
252
262
  this.#shutdownAfterOperations.add(operation.id);
253
263
  }
254
264
  this.#persistState();
265
+ if (request.payload.command === 'down')
266
+ this.#host.interruptStartup?.(slices);
255
267
  this.#operationQueue = this.#operationQueue
256
268
  .then(() => this.#runOperation(operation.id))
257
269
  .finally(() => {
@@ -272,11 +284,13 @@ class FleetSupervisor {
272
284
  this.#state.operations[index] = { ...operation, state: 'running' };
273
285
  this.#persistState();
274
286
  try {
287
+ // Recheck at execution: queued operations may have changed dependency ownership.
288
+ const slices = (0, contracts_js_1.resolveFleetSliceOperation)(this.#adapters, operation.command, operation.slices, this.#host.selectedSlices());
275
289
  const results = operation.command === 'up'
276
- ? await this.#host.up(operation.slices)
290
+ ? await this.#host.up(slices)
277
291
  : operation.command === 'restart'
278
- ? await this.#host.restart(operation.slices)
279
- : await this.#host.down(operation.slices);
292
+ ? await this.#host.restart(slices)
293
+ : await this.#host.down(slices);
280
294
  this.#syncSliceStates(results);
281
295
  this.#syncLiveSliceStates();
282
296
  this.#state.operations[index] = {
@@ -290,7 +304,11 @@ class FleetSupervisor {
290
304
  const timer = setTimeout(() => {
291
305
  if (!this.#closed && !this.#stopping) {
292
306
  this.#stopping = true;
293
- void this.stopGracefully();
307
+ void this.stopGracefully().catch(() => {
308
+ // Keep authenticated control available when terminal evidence
309
+ // cannot be retired. Never turn an archival failure into exit.
310
+ this.#stopping = false;
311
+ });
294
312
  }
295
313
  }, this.#shutdownGraceMs);
296
314
  timer.unref();
@@ -332,11 +350,16 @@ class FleetSupervisor {
332
350
  case 'submit':
333
351
  return this.#queueOperation(request);
334
352
  case 'shutdown':
335
- if (this.#host.selectedSlices().length > 0) {
336
- return supervisorError('operation-conflict', 'Fleet shutdown requires all selected Slices down first.');
353
+ if (this.#state.operations.some(({ state }) => state === 'accepted' || state === 'running')) {
354
+ return supervisorError('operation-conflict', 'Fleet shutdown requires all accepted operations to finish first.');
337
355
  }
356
+ this.#assertShutdownOwnership();
338
357
  this.#stopping = true;
339
- setImmediate(() => void this.stopGracefully());
358
+ setImmediate(() => {
359
+ void this.stopGracefully().catch(() => {
360
+ this.#stopping = false;
361
+ });
362
+ });
340
363
  return { accepted: true };
341
364
  }
342
365
  }
@@ -356,10 +379,17 @@ class FleetSupervisor {
356
379
  return;
357
380
  this.#stopping = true;
358
381
  await this.waitForIdle();
359
- if (this.#host.selectedSlices().length > 0) {
360
- return supervisorError('operation-conflict', 'Graceful supervisor shutdown requires every Slice down.');
382
+ try {
383
+ this.#assertShutdownOwnership();
384
+ await this.#host.closeProxyWhenEmpty();
385
+ (0, fleet_runner_evidence_js_1.retireFleetRunnerEvidence)(this.#state, this.#paths, {
386
+ security: this.#security,
387
+ });
388
+ }
389
+ catch (error) {
390
+ this.#stopping = false;
391
+ throw error;
361
392
  }
362
- await this.#host.closeProxyWhenEmpty();
363
393
  if (this.#heartbeat)
364
394
  clearInterval(this.#heartbeat);
365
395
  this.#heartbeat = undefined;
@@ -374,11 +404,36 @@ class FleetSupervisor {
374
404
  removeExactPrivateFile(this.#paths.startup);
375
405
  removeExactPrivateFile(this.#paths.supervisorPid);
376
406
  removeExactPrivateFile(this.#paths.state);
407
+ // Retire only this empty session, never unknown files or a new owner.
408
+ // Leaving an empty directory makes inventory report a missing-authority
409
+ // session even though governed shutdown completed successfully.
410
+ try {
411
+ (0, node_fs_1.rmdirSync)(this.#paths.sessionDirectory);
412
+ }
413
+ catch (error) {
414
+ if (!['ENOENT', 'ENOTEMPTY', 'EEXIST'].includes(error.code ?? '')) {
415
+ throw error;
416
+ }
417
+ }
377
418
  this.#closed = true;
378
419
  for (const resolvePromise of this.#closedWaiters.splice(0)) {
379
420
  resolvePromise();
380
421
  }
381
422
  }
423
+ #assertShutdownOwnership() {
424
+ this.#syncLiveSliceStates();
425
+ if (this.#host.selectedSlices().length > 0) {
426
+ return supervisorError('operation-conflict', 'Graceful supervisor shutdown requires every Slice down.');
427
+ }
428
+ if (this.#host
429
+ .sliceStates()
430
+ .some(({ cleanup, runnerGeneration }) => cleanup === 'failed' || (cleanup === 'pending' && runnerGeneration))) {
431
+ return supervisorError('operation-conflict', 'Fleet shutdown requires all owned runner cleanup to succeed first.');
432
+ }
433
+ (0, fleet_runner_evidence_js_1.retireFleetRunnerEvidence)(this.#state, this.#paths, {
434
+ security: this.#security,
435
+ });
436
+ }
382
437
  }
383
438
  exports.FleetSupervisor = FleetSupervisor;
384
439
  //# sourceMappingURL=fleet-supervisor.js.map
@@ -0,0 +1,12 @@
1
+ import type { FleetSliceRunnerRequest } from './slice-runner.js';
2
+ import { type PrivateStateSecurity } from './private-state.js';
3
+ type WebStartOwner = Pick<FleetSliceRunnerRequest, 'fleetId' | 'runnerGeneration' | 'sessionGeneration' | 'slice' | 'port' | 'workspaceRealpath'>;
4
+ export declare function fleetWebStartPath(requestPath: string): string;
5
+ /** A private, generation-bound notification, never deployment authority or
6
+ * proof of application health. Only the native web-command wrapper publishes it.
7
+ * A duplicate for this generation is idempotent and cannot reset a health clock. */
8
+ export declare function hasFleetWebStarted(requestPath: string, owner: WebStartOwner, security?: PrivateStateSecurity): boolean;
9
+ export declare function publishFleetWebStarted(requestPath: string, owner: WebStartOwner, security?: PrivateStateSecurity): void;
10
+ /** Called only after the native child group and declared cleanup have settled. */
11
+ export declare function retireFleetWebStarted(requestPath: string, owner: WebStartOwner, security?: PrivateStateSecurity): void;
12
+ export {};
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fleetWebStartPath = fleetWebStartPath;
4
+ exports.hasFleetWebStarted = hasFleetWebStarted;
5
+ exports.publishFleetWebStarted = publishFleetWebStarted;
6
+ exports.retireFleetWebStarted = retireFleetWebStarted;
7
+ const node_fs_1 = require("node:fs");
8
+ const contract_validation_js_1 = require("./contract-validation.js");
9
+ const errors_js_1 = require("./errors.js");
10
+ const private_state_js_1 = require("./private-state.js");
11
+ function fleetWebStartPath(requestPath) {
12
+ if (!requestPath.endsWith('.request.json'))
13
+ throw new errors_js_1.LocalDevContractError('invalid-state', 'Invalid web-start owner path.');
14
+ return requestPath.replace(/\.request\.json$/, '.web-start.json');
15
+ }
16
+ function record(owner) {
17
+ return {
18
+ fleetId: owner.fleetId,
19
+ port: owner.port,
20
+ runnerGeneration: owner.runnerGeneration,
21
+ schemaVersion: 1,
22
+ sessionGeneration: owner.sessionGeneration,
23
+ slice: owner.slice,
24
+ workspaceRealpath: owner.workspaceRealpath,
25
+ };
26
+ }
27
+ /** A private, generation-bound notification, never deployment authority or
28
+ * proof of application health. Only the native web-command wrapper publishes it.
29
+ * A duplicate for this generation is idempotent and cannot reset a health clock. */
30
+ function hasFleetWebStarted(requestPath, owner, security = {}) {
31
+ const path = fleetWebStartPath(requestPath);
32
+ if (!(0, node_fs_1.existsSync)(path))
33
+ return false;
34
+ const value = JSON.parse((0, private_state_js_1.readPrivateFile)(path, security).toString('utf8'));
35
+ if ((0, contract_validation_js_1.canonicalJson)(value) !== (0, contract_validation_js_1.canonicalJson)(record(owner)))
36
+ throw new errors_js_1.LocalDevContractError('invalid-state', 'Web-start notification does not match the exact Fleet runner generation.');
37
+ return true;
38
+ }
39
+ function publishFleetWebStarted(requestPath, owner, security = {}) {
40
+ (0, private_state_js_1.publishPrivateFileExclusive)(fleetWebStartPath(requestPath), `${(0, contract_validation_js_1.canonicalJson)(record(owner))}\n`, security);
41
+ hasFleetWebStarted(requestPath, owner, security);
42
+ }
43
+ /** Called only after the native child group and declared cleanup have settled. */
44
+ function retireFleetWebStarted(requestPath, owner, security = {}) {
45
+ if (hasFleetWebStarted(requestPath, owner, security))
46
+ (0, node_fs_1.unlinkSync)(fleetWebStartPath(requestPath));
47
+ }
48
+ //# sourceMappingURL=fleet-web-start.js.map
@@ -6,9 +6,7 @@ exports.normalizeFleetHostSuffix = normalizeFleetHostSuffix;
6
6
  exports.createFleetHostname = createFleetHostname;
7
7
  exports.isLoopbackAddress = isLoopbackAddress;
8
8
  exports.resolveFleetHostname = resolveFleetHostname;
9
- const node_crypto_1 = require("node:crypto");
10
9
  const node_dns_1 = require("node:dns");
11
- const node_fs_1 = require("node:fs");
12
10
  const personal_stage_js_1 = require("./personal-stage.js");
13
11
  const dnsLabelPattern = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
14
12
  function label(value) {
@@ -30,18 +28,9 @@ function createFleetId(options) {
30
28
  const workspace = label(options.workspaceName);
31
29
  if (!workspace)
32
30
  throw new Error('Workspace name cannot form a DNS label.');
33
- let checkout;
34
- try {
35
- checkout = (0, node_fs_1.realpathSync)(options.checkoutPath);
36
- }
37
- catch {
38
- checkout = options.checkoutPath;
39
- }
40
- const digest = (0, node_crypto_1.createHash)('sha256')
41
- .update(`${checkout}\0${workspace}\0${stage}`)
42
- .digest('hex')
43
- .slice(0, 10);
44
- const suffix = `-${stage}-${digest}`;
31
+ // The random task stage owns identity; checkout paths are ownership bindings,
32
+ // not identity entropy. Explicit reattachment must preserve the origin.
33
+ const suffix = `-${stage}`;
45
34
  const available = 63 - suffix.length;
46
35
  const prefix = workspace.slice(0, Math.max(1, available)).replace(/-+$/g, '');
47
36
  const result = `${prefix}${suffix}`;
@@ -1,4 +1,5 @@
1
1
  export * from './contracts.js';
2
+ export * from './browser-verification.js';
2
3
  export * from './gateway.js';
3
4
  export * from './identity.js';
4
5
  export * from './personal-secret-ledger.js';
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./contracts.js"), exports);
5
+ tslib_1.__exportStar(require("./browser-verification.js"), exports);
5
6
  tslib_1.__exportStar(require("./gateway.js"), exports);
6
7
  tslib_1.__exportStar(require("./identity.js"), exports);
7
8
  tslib_1.__exportStar(require("./personal-secret-ledger.js"), exports);
@@ -0,0 +1,9 @@
1
+ export type NativeDevelopmentCompletion = 'pending' | 'succeeded' | 'failed';
2
+ /** Read only SST 4.17.1's current native completion. Never retain its body:
3
+ * links, outputs and resources can contain private application material.
4
+ * This observes deployment, not preview/state authority or application health. */
5
+ export declare function readNativeDevelopmentCompletion(input: {
6
+ projectRoot: string;
7
+ stage: string;
8
+ startedAt: string;
9
+ }, signal: AbortSignal): Promise<NativeDevelopmentCompletion>;