@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,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateLocalBrowserTarget = validateLocalBrowserTarget;
4
+ exports.resolveLocalBrowserTarget = resolveLocalBrowserTarget;
5
+ exports.localBrowserLaunchArguments = localBrowserLaunchArguments;
6
+ exports.localBrowserRequestAllowed = localBrowserRequestAllowed;
7
+ exports.validateLocalBrowserReport = validateLocalBrowserReport;
8
+ exports.runLocalBrowserVerification = runLocalBrowserVerification;
9
+ exports.localBrowserFailureGuidance = localBrowserFailureGuidance;
10
+ const node_crypto_1 = require("node:crypto");
11
+ const node_child_process_1 = require("node:child_process");
12
+ const node_fs_1 = require("node:fs");
13
+ const node_module_1 = require("node:module");
14
+ const node_path_1 = require("node:path");
15
+ const errors_js_1 = require("./errors.js");
16
+ const fleet_client_js_1 = require("./fleet-client.js");
17
+ const fleet_lock_js_1 = require("./fleet-lock.js");
18
+ const fleet_state_js_1 = require("./fleet-state.js");
19
+ const identity_js_1 = require("./identity.js");
20
+ const nx_workspace_js_1 = require("./nx-workspace.js");
21
+ const process_identity_js_1 = require("./process-identity.js");
22
+ const runtime_paths_js_1 = require("./runtime-paths.js");
23
+ const task_identity_js_1 = require("./task-identity.js");
24
+ const tls_js_1 = require("./tls.js");
25
+ function refuse(message) {
26
+ throw new errors_js_1.LocalDevContractError('invalid-state', `Local browser verification: ${message}`);
27
+ }
28
+ /** Validate authenticated IPC state against independently resolved worktree coordinates. */
29
+ function validateLocalBrowserTarget(input) {
30
+ const state = (0, fleet_state_js_1.validateFleetStateRecord)(input.state);
31
+ if (state.fleetId !== input.fleetId ||
32
+ state.workspaceRealpath !== input.workspaceRealpath ||
33
+ state.resolvedStage !== input.stage ||
34
+ !/^personal-[a-f0-9]{24}$/.test(input.stage) ||
35
+ state.identitySource !== 'worktree-task' ||
36
+ state.sessionGeneration !== input.sessionGeneration) {
37
+ return refuse('authenticated fleet does not match the current task, checkout, or session.');
38
+ }
39
+ const slice = state.slices.find((entry) => entry.name === input.slice);
40
+ if (!slice?.selected || slice.routeState !== 'ready')
41
+ return refuse(`Slice ${input.slice} must be selected and ready.`);
42
+ const origin = new URL(state.origin);
43
+ if (origin.protocol !== 'https:' ||
44
+ origin.origin !== state.origin ||
45
+ origin.username ||
46
+ origin.password ||
47
+ !origin.hostname.startsWith(`${input.fleetId}.`))
48
+ return refuse('fleet origin must be its exact credential-free task HTTPS origin.');
49
+ const suffix = (0, identity_js_1.normalizeFleetHostSuffix)(origin.hostname.slice(input.fleetId.length + 1));
50
+ if ((0, identity_js_1.createFleetHostname)(input.fleetId, suffix) !== origin.hostname)
51
+ return refuse('origin hostname differs from the task.');
52
+ for (const path of [input.routePrefix, input.healthPath]) {
53
+ const target = new URL(path, origin);
54
+ if (!path.startsWith('/') ||
55
+ target.origin !== origin.origin ||
56
+ target.pathname !== path ||
57
+ target.search ||
58
+ target.hash)
59
+ return refuse('adapter browser paths must be normalized same-origin paths.');
60
+ }
61
+ const certificate = new node_crypto_1.X509Certificate(input.certificatePem);
62
+ const now = input.now ?? Date.now();
63
+ if (!certificate.checkHost(origin.hostname) ||
64
+ now < Date.parse(certificate.validFrom) ||
65
+ now >= Date.parse(certificate.validTo))
66
+ return refuse('private fleet certificate does not cover the current origin and time.');
67
+ return {
68
+ fleetId: input.fleetId,
69
+ origin: origin.origin,
70
+ routePrefix: input.routePrefix,
71
+ healthPath: input.healthPath,
72
+ sessionGeneration: state.sessionGeneration,
73
+ slice: input.slice,
74
+ stage: input.stage,
75
+ spkiSha256: (0, node_crypto_1.createHash)('sha256')
76
+ .update(certificate.publicKey.export({ type: 'spki', format: 'der' }))
77
+ .digest('base64'),
78
+ };
79
+ }
80
+ async function resolveLocalBrowserTarget(input) {
81
+ const workspaceRealpath = (0, node_fs_1.realpathSync)(input.workspaceRoot);
82
+ const task = (0, task_identity_js_1.resolveTaskIdentity)(workspaceRealpath);
83
+ const stage = (0, task_identity_js_1.taskStage)(task.taskId);
84
+ const plan = await (0, nx_workspace_js_1.loadWorkspaceFleetPlan)();
85
+ const workspaceNames = Object.entries(plan.projects)
86
+ .filter(([, project]) => project.tags?.includes('scope:workspace'))
87
+ .map(([name]) => name);
88
+ if (workspaceNames.length !== 1)
89
+ return refuse('exactly one workspace project is required.');
90
+ const adapter = plan.adapters.get(input.slice);
91
+ if (!adapter)
92
+ return refuse(`Slice ${input.slice} has no valid local-dev adapter.`);
93
+ const fleetId = (0, identity_js_1.createFleetId)({
94
+ checkoutPath: workspaceRealpath,
95
+ stage,
96
+ workspaceName: workspaceNames[0],
97
+ });
98
+ const appData = (0, tls_js_1.defaultLocalDevAppData)();
99
+ const paths = (0, runtime_paths_js_1.fleetRuntimePaths)(fleetId, appData);
100
+ const lock = (0, fleet_lock_js_1.inspectFleetLock)(paths.lock);
101
+ if (!lock ||
102
+ lock.fleetId !== fleetId ||
103
+ (0, process_identity_js_1.probeProcessIdentity)(lock.owner) !== 'matching')
104
+ return refuse('an active, ownership-proved fleet is required. Run ebk dev up first.');
105
+ const state = await new fleet_client_js_1.FleetClient(paths).status();
106
+ if (JSON.stringify(state.supervisor) !== JSON.stringify(lock.owner))
107
+ return refuse('authenticated supervisor differs from its private process lease.');
108
+ return validateLocalBrowserTarget({
109
+ certificatePem: (0, node_fs_1.readFileSync)((0, tls_js_1.localTlsPaths)(appData).leafCertificate, 'utf8'),
110
+ fleetId,
111
+ healthPath: adapter.healthPath,
112
+ routePrefix: adapter.routePrefix,
113
+ sessionGeneration: lock.sessionGeneration,
114
+ slice: input.slice,
115
+ stage,
116
+ state,
117
+ workspaceRealpath,
118
+ });
119
+ }
120
+ /** Trust only the private leaf key in this disposable Chromium process, never the host. */
121
+ function localBrowserLaunchArguments(target) {
122
+ const origin = new URL(target.origin);
123
+ if (origin.protocol !== 'https:' ||
124
+ origin.origin !== target.origin ||
125
+ !origin.hostname.startsWith(`${target.fleetId}.`) ||
126
+ !/^[A-Za-z0-9+/]{43}=$/.test(target.spkiSha256))
127
+ return refuse('invalid browser launch coordinates.');
128
+ return [
129
+ `--ignore-certificate-errors-spki-list=${target.spkiSha256}`,
130
+ `--host-resolver-rules=MAP ${origin.hostname} 127.0.0.1`,
131
+ '--no-proxy-server',
132
+ ];
133
+ }
134
+ function localBrowserRequestAllowed(origin, requested, websocket = false) {
135
+ try {
136
+ const url = new URL(requested);
137
+ if (websocket) {
138
+ if (url.protocol !== 'wss:')
139
+ return false;
140
+ url.protocol = 'https:';
141
+ }
142
+ return (url.protocol === 'https:' &&
143
+ !url.username &&
144
+ !url.password &&
145
+ url.origin === origin);
146
+ }
147
+ catch {
148
+ return false;
149
+ }
150
+ }
151
+ function validateLocalBrowserReport(value) {
152
+ const report = value;
153
+ if (!report ||
154
+ typeof report !== 'object' ||
155
+ !Array.isArray(report.suites) ||
156
+ !Array.isArray(report.errors) ||
157
+ report.errors.length !== 0 ||
158
+ !report.stats ||
159
+ report.stats.unexpected !== 0 ||
160
+ report.stats.skipped !== 0 ||
161
+ report.stats.flaky !== 0)
162
+ return refuse('browser report must have no failures, errors, skips, or retries.');
163
+ let passed = 0;
164
+ const visit = (suites, depth) => {
165
+ if (depth > 16)
166
+ return refuse('browser report nesting exceeds its bound.');
167
+ for (const raw of suites) {
168
+ const suite = raw;
169
+ if (!suite ||
170
+ !Array.isArray(suite.specs) ||
171
+ (suite.suites !== undefined && !Array.isArray(suite.suites)))
172
+ return refuse('browser report suite is malformed.');
173
+ for (const spec of suite.specs) {
174
+ if (!Array.isArray(spec.tests) || spec.tests.length === 0)
175
+ return refuse('browser report spec has no executed test.');
176
+ for (const test of spec.tests) {
177
+ if (test.expectedStatus !== 'passed' ||
178
+ test.results?.length !== 1 ||
179
+ test.results[0].status !== 'passed' ||
180
+ test.results[0].retry !== 0 ||
181
+ ++passed > 512)
182
+ return refuse('browser report contains an expected failure, nonpassing result, retry, or excess test.');
183
+ }
184
+ }
185
+ visit(suite.suites ?? [], depth + 1);
186
+ }
187
+ };
188
+ visit(report.suites, 0);
189
+ if (passed < 2 || passed !== report.stats.expected)
190
+ return refuse('browser report must account for at least two passing checks.');
191
+ return passed;
192
+ }
193
+ async function runLocalBrowserVerification(input) {
194
+ const target = await resolveLocalBrowserTarget(input);
195
+ const workspaceRoot = (0, node_fs_1.realpathSync)(input.workspaceRoot);
196
+ const plan = await (0, nx_workspace_js_1.loadWorkspaceFleetPlan)();
197
+ const projectRoot = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(workspaceRoot, plan.projects[input.slice].root));
198
+ const within = (0, node_path_1.relative)(workspaceRoot, projectRoot);
199
+ if (!within || within.startsWith('..') || within.includes(':'))
200
+ return refuse('Slice root must be inside the current workspace.');
201
+ const require = (0, node_module_1.createRequire)((0, node_path_1.join)(projectRoot, 'package.json'));
202
+ const manifest = require.resolve('@playwright/test/package.json');
203
+ const packageDirectory = (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(manifest, '..'));
204
+ const cli = (0, node_fs_1.realpathSync)((0, node_path_1.join)(packageDirectory, 'cli.js'));
205
+ if ((0, node_path_1.relative)(packageDirectory, cli).startsWith('..'))
206
+ return refuse('Playwright CLI escapes its installed package.');
207
+ const environment = Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.startsWith('EBK_SMOKE_') &&
208
+ ![
209
+ 'NODE_OPTIONS',
210
+ 'NODE_PATH',
211
+ 'NODE_TLS_REJECT_UNAUTHORIZED',
212
+ 'NODE_EXTRA_CA_CERTS',
213
+ 'PW_TEST_CONNECT_WS_ENDPOINT',
214
+ 'PW_TEST_REUSE_CONTEXT',
215
+ ].includes(key)));
216
+ let report;
217
+ let status = 'failed';
218
+ try {
219
+ const stdout = (0, node_child_process_1.execFileSync)(process.execPath, [cli, 'test', '--config=playwright.local.config.ts', '--reporter=json'], {
220
+ cwd: projectRoot,
221
+ env: environment,
222
+ encoding: 'utf8',
223
+ maxBuffer: 2 * 1024 * 1024,
224
+ timeout: 120_000,
225
+ windowsHide: true,
226
+ stdio: ['ignore', 'pipe', 'pipe'],
227
+ });
228
+ report = JSON.parse(stdout);
229
+ validateLocalBrowserReport(report);
230
+ status = 'passed';
231
+ }
232
+ catch (error) {
233
+ return refuse(localBrowserFailureGuidance(error));
234
+ }
235
+ finally {
236
+ const evidence = (0, node_path_1.join)(projectRoot, '.ebk/evidence');
237
+ (0, node_fs_1.mkdirSync)(evidence, { recursive: true });
238
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(evidence, 'local-browser.json'), JSON.stringify({
239
+ schemaVersion: 1,
240
+ proofLayer: 'local-browser',
241
+ browser: 'chromium',
242
+ origin: target.origin,
243
+ stage: target.stage,
244
+ slice: target.slice,
245
+ sessionGeneration: target.sessionGeneration,
246
+ status,
247
+ passedTests: status === 'passed' ? report?.stats?.expected : 0,
248
+ }) + '\n', { mode: 0o600 });
249
+ }
250
+ }
251
+ /** @internal Only classify a known prerequisite; never echo test output or local paths. */
252
+ function localBrowserFailureGuidance(error) {
253
+ const stdout = error !== null && typeof error === 'object' && 'stdout' in error
254
+ ? error.stdout
255
+ : undefined;
256
+ const text = typeof stdout === 'string'
257
+ ? stdout
258
+ : Buffer.isBuffer(stdout)
259
+ ? stdout.toString('utf8')
260
+ : '';
261
+ let missingBrowser = false;
262
+ if (Buffer.byteLength(text) <= 2 * 1024 * 1024) {
263
+ try {
264
+ JSON.parse(text, (key, value) => {
265
+ if (key === 'message' &&
266
+ typeof value === 'string' &&
267
+ value.startsWith("browserType.launch: Executable doesn't exist at "))
268
+ missingBrowser = true;
269
+ return value;
270
+ });
271
+ }
272
+ catch {
273
+ missingBrowser = false;
274
+ }
275
+ }
276
+ if (missingBrowser) {
277
+ return 'the pinned Chromium browser is missing. From the Slice project directory, run pnpm exec playwright install chromium, then rerun its verify-local-browser target. No browser download or host-trust change was performed by this check.';
278
+ }
279
+ return 'local Chromium checks failed. Inspect .ebk/evidence/local-browser-artifacts in the Slice project directory, then rerun its verify-local-browser target. No deployed smoke or host-trust action was attempted.';
280
+ }
281
+ //# sourceMappingURL=browser-verification.js.map
@@ -1,5 +1,7 @@
1
1
  export declare const LOCAL_DEV_ADAPTER_VERSION: 1;
2
2
  export declare const LOCAL_DEV_ADAPTER_VERSION_V2: 2;
3
+ export declare const LOCAL_DEV_ADAPTER_VERSION_V3: 3;
4
+ export declare const MAX_LOCAL_DEV_DEPENDENCY_SLICES: 64;
3
5
  export declare const GATEWAY_PROTOCOL_VERSION: 1;
4
6
  export declare const SESSION_MANIFEST_VERSION: 1;
5
7
  export type LocalDatabaseMode = 'deployed' | 'local' | 'none';
@@ -25,7 +27,11 @@ export interface WebLocalDevAdapterV2 extends Omit<WebLocalDevAdapterV1, 'adapte
25
27
  adapterVersion: typeof LOCAL_DEV_ADAPTER_VERSION_V2;
26
28
  lifecycle?: LocalDevLifecycleV2;
27
29
  }
28
- export type LocalDevAdapter = WebLocalDevAdapterV1 | WebLocalDevAdapterV2;
30
+ export interface WebLocalDevAdapterV3 extends Omit<WebLocalDevAdapterV2, 'adapterVersion'> {
31
+ adapterVersion: typeof LOCAL_DEV_ADAPTER_VERSION_V3;
32
+ dependencySlices: string[];
33
+ }
34
+ export type LocalDevAdapter = WebLocalDevAdapterV1 | WebLocalDevAdapterV2 | WebLocalDevAdapterV3;
29
35
  export interface FleetRoute {
30
36
  adapter?: LocalDevAdapter;
31
37
  name: string;
@@ -34,6 +40,9 @@ export interface FleetRoute {
34
40
  upstream?: URL;
35
41
  }
36
42
  export declare function validateLocalDevAdapter(value: unknown): LocalDevAdapter;
43
+ /** Resolve metadata, not Nx build dependencies or caller-supplied ordering. */
44
+ export declare function resolveFleetSliceDependencies(adapters: ReadonlyMap<string, LocalDevAdapter>, roots: readonly string[]): string[];
45
+ export declare function resolveFleetSliceOperation(adapters: ReadonlyMap<string, LocalDevAdapter>, command: 'up' | 'restart' | 'down', roots: readonly string[], selected: readonly string[]): string[];
37
46
  export declare function validateFleetAdapters(entries: readonly {
38
47
  adapter: unknown;
39
48
  name: string;
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SESSION_MANIFEST_VERSION = exports.GATEWAY_PROTOCOL_VERSION = exports.LOCAL_DEV_ADAPTER_VERSION_V2 = exports.LOCAL_DEV_ADAPTER_VERSION = void 0;
3
+ exports.SESSION_MANIFEST_VERSION = exports.GATEWAY_PROTOCOL_VERSION = exports.MAX_LOCAL_DEV_DEPENDENCY_SLICES = exports.LOCAL_DEV_ADAPTER_VERSION_V3 = exports.LOCAL_DEV_ADAPTER_VERSION_V2 = exports.LOCAL_DEV_ADAPTER_VERSION = void 0;
4
4
  exports.validateLocalDevAdapter = validateLocalDevAdapter;
5
+ exports.resolveFleetSliceDependencies = resolveFleetSliceDependencies;
6
+ exports.resolveFleetSliceOperation = resolveFleetSliceOperation;
5
7
  exports.validateFleetAdapters = validateFleetAdapters;
8
+ const errors_js_1 = require("./errors.js");
6
9
  exports.LOCAL_DEV_ADAPTER_VERSION = 1;
7
10
  exports.LOCAL_DEV_ADAPTER_VERSION_V2 = 2;
11
+ exports.LOCAL_DEV_ADAPTER_VERSION_V3 = 3;
12
+ exports.MAX_LOCAL_DEV_DEPENDENCY_SLICES = 64;
8
13
  exports.GATEWAY_PROTOCOL_VERSION = 1;
9
14
  exports.SESSION_MANIFEST_VERSION = 1;
10
15
  const namePattern = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
@@ -44,6 +49,7 @@ function validateLocalDevAdapter(value) {
44
49
  'adapterVersion',
45
50
  'auth',
46
51
  'databaseMode',
52
+ 'dependencySlices',
47
53
  'healthPath',
48
54
  'kind',
49
55
  'lifecycle',
@@ -57,8 +63,25 @@ function validateLocalDevAdapter(value) {
57
63
  throw new Error(`Local-dev adapter has unknown member ${unknown[0]}.`);
58
64
  }
59
65
  if (candidate.adapterVersion !== exports.LOCAL_DEV_ADAPTER_VERSION &&
60
- candidate.adapterVersion !== exports.LOCAL_DEV_ADAPTER_VERSION_V2) {
61
- throw new Error(`Local-dev adapter version must be ${exports.LOCAL_DEV_ADAPTER_VERSION} or ${exports.LOCAL_DEV_ADAPTER_VERSION_V2}.`);
66
+ candidate.adapterVersion !== exports.LOCAL_DEV_ADAPTER_VERSION_V2 &&
67
+ candidate.adapterVersion !== exports.LOCAL_DEV_ADAPTER_VERSION_V3) {
68
+ throw new Error('Local-dev adapter version must be 1, 2, or 3.');
69
+ }
70
+ let dependencySlices = [];
71
+ if (candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION_V3) {
72
+ if (!Array.isArray(candidate.dependencySlices) ||
73
+ candidate.dependencySlices.length > exports.MAX_LOCAL_DEV_DEPENDENCY_SLICES ||
74
+ candidate.dependencySlices.some((name) => typeof name !== 'string' ||
75
+ name.length > 63 ||
76
+ !namePattern.test(name)) ||
77
+ new Set(candidate.dependencySlices).size !==
78
+ candidate.dependencySlices.length) {
79
+ throw new Error('Local-dev adapter v3 dependencySlices must contain at most 64 unique DNS-safe Slice names.');
80
+ }
81
+ dependencySlices = [...candidate.dependencySlices].sort();
82
+ }
83
+ else if (candidate.dependencySlices !== undefined) {
84
+ throw new Error('Local-dev dependencySlices requires adapter v3.');
62
85
  }
63
86
  if (candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION &&
64
87
  candidate.lifecycle !== undefined) {
@@ -103,7 +126,8 @@ function validateLocalDevAdapter(value) {
103
126
  throw new Error('Local-dev adapter routePrefix must identify a slice path.');
104
127
  }
105
128
  let lifecycle;
106
- if (candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION_V2) {
129
+ if (candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION_V2 ||
130
+ candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION_V3) {
107
131
  if (candidate.lifecycle !== undefined) {
108
132
  if (!candidate.lifecycle ||
109
133
  typeof candidate.lifecycle !== 'object' ||
@@ -131,10 +155,12 @@ function validateLocalDevAdapter(value) {
131
155
  };
132
156
  }
133
157
  if (candidate.databaseMode === 'local' && !lifecycle) {
134
- throw new Error('Local-dev adapter v2 with databaseMode local requires lifecycle cleanup.');
158
+ throw new Error('Local-dev adapter v2/v3 with databaseMode local requires lifecycle cleanup.');
135
159
  }
136
- if (candidate.databaseMode !== 'local' && lifecycle) {
137
- throw new Error('Local-dev adapter lifecycle cleanup is supported only for local database resources.');
160
+ if (lifecycle &&
161
+ candidate.databaseMode !== 'local' &&
162
+ !(candidate.adapterVersion === 3 && candidate.databaseMode === 'none')) {
163
+ throw new Error('Local-dev adapter lifecycle cleanup requires local database resources or v3 task-owned resources without a local database.');
138
164
  }
139
165
  }
140
166
  const common = {
@@ -152,17 +178,92 @@ function validateLocalDevAdapter(value) {
152
178
  adapterVersion: exports.LOCAL_DEV_ADAPTER_VERSION,
153
179
  ...common,
154
180
  }
155
- : {
156
- adapterVersion: exports.LOCAL_DEV_ADAPTER_VERSION_V2,
157
- ...(lifecycle ? { lifecycle } : {}),
158
- ...common,
159
- };
181
+ : candidate.adapterVersion === exports.LOCAL_DEV_ADAPTER_VERSION_V2
182
+ ? {
183
+ adapterVersion: exports.LOCAL_DEV_ADAPTER_VERSION_V2,
184
+ ...(lifecycle ? { lifecycle } : {}),
185
+ ...common,
186
+ }
187
+ : {
188
+ adapterVersion: exports.LOCAL_DEV_ADAPTER_VERSION_V3,
189
+ dependencySlices,
190
+ ...(lifecycle ? { lifecycle } : {}),
191
+ ...common,
192
+ };
193
+ }
194
+ /** Resolve metadata, not Nx build dependencies or caller-supplied ordering. */
195
+ function resolveFleetSliceDependencies(adapters, roots) {
196
+ const ordered = [];
197
+ const visited = new Set();
198
+ const active = new Set();
199
+ const visit = (name, owner = name) => {
200
+ if (active.has(name)) {
201
+ throw new errors_js_1.LocalDevContractError('invalid-adapter', `Product Slice ${owner} has a dependency cycle through ${name}.`);
202
+ }
203
+ if (visited.has(name))
204
+ return;
205
+ if (visited.size + active.size >= exports.MAX_LOCAL_DEV_DEPENDENCY_SLICES) {
206
+ throw new errors_js_1.LocalDevContractError('invalid-adapter', `Product Slice ${owner} exceeds the 64-Slice dependency closure limit.`);
207
+ }
208
+ const raw = adapters.get(name);
209
+ if (!raw) {
210
+ throw new errors_js_1.LocalDevContractError('invalid-adapter', `Product Slice ${owner} requires ${name}, which has no valid local-dev adapter.`);
211
+ }
212
+ let adapter;
213
+ try {
214
+ adapter = validateLocalDevAdapter(raw);
215
+ }
216
+ catch (error) {
217
+ throw new errors_js_1.LocalDevContractError('invalid-adapter', `Product Slice ${name} has invalid local-dev metadata: ${error instanceof Error ? error.message : String(error)}`);
218
+ }
219
+ active.add(name);
220
+ for (const dependency of adapter.adapterVersion === 3
221
+ ? adapter.dependencySlices
222
+ : []) {
223
+ if (dependency === name) {
224
+ throw new errors_js_1.LocalDevContractError('invalid-adapter', `Product Slice ${name} must not depend on itself.`);
225
+ }
226
+ visit(dependency, name);
227
+ }
228
+ active.delete(name);
229
+ visited.add(name);
230
+ ordered.push(name);
231
+ };
232
+ for (const name of [...roots].sort())
233
+ visit(name);
234
+ return ordered;
235
+ }
236
+ function resolveFleetSliceOperation(adapters, command, roots, selected) {
237
+ if (roots.length === 0 || new Set(roots).size !== roots.length) {
238
+ throw new errors_js_1.LocalDevContractError('invalid-input', `Fleet ${command} requires unique non-empty Slice names.`);
239
+ }
240
+ const closure = resolveFleetSliceDependencies(adapters, roots);
241
+ if (command === 'up')
242
+ return closure;
243
+ const requested = new Set(roots);
244
+ if (command === 'down') {
245
+ for (const dependent of selected) {
246
+ if (requested.has(dependent))
247
+ continue;
248
+ const removed = resolveFleetSliceDependencies(adapters, [dependent]).find((name) => requested.has(name));
249
+ if (removed) {
250
+ throw new errors_js_1.LocalDevContractError('invalid-input', `Cannot remove dependency ${removed} while Product Slice ${dependent} remains selected.`);
251
+ }
252
+ }
253
+ return closure.filter((name) => requested.has(name)).reverse();
254
+ }
255
+ for (const name of closure) {
256
+ if (!selected.includes(name)) {
257
+ throw new errors_js_1.LocalDevContractError('not-running', `Product Slice ${name} is not selected; start the dependency closure before restart.`);
258
+ }
259
+ }
260
+ return closure.filter((name) => requested.has(name));
160
261
  }
161
262
  function validateFleetAdapters(entries) {
162
263
  const adapters = new Map();
163
264
  const prefixes = new Map();
164
265
  for (const { adapter: raw, name } of entries) {
165
- if (!namePattern.test(name)) {
266
+ if (name.length > 63 || !namePattern.test(name)) {
166
267
  throw new Error(`Product Slice name ${name} is not DNS-safe.`);
167
268
  }
168
269
  const adapter = validateLocalDevAdapter(raw);
@@ -11,10 +11,26 @@ function foregroundWait(launch, command, signal, idempotencyKey, reportCleanupFa
11
11
  return undefined;
12
12
  const stop = async () => {
13
13
  try {
14
- const down = await launch.client.submit('down', { all: true, slices: [] }, idempotencyKey());
15
- await launch.client.waitForOperation(down.operationId, {
16
- timeoutMs: command.timeoutMs ?? 120_000,
17
- });
14
+ let down;
15
+ try {
16
+ down = await launch.client.submit('down', { all: true, slices: [] }, idempotencyKey());
17
+ }
18
+ catch (error) {
19
+ // A failed up can leave a live foreground supervisor with no Slices.
20
+ // Its authenticated shutdown still independently refuses active owners.
21
+ if (!(error instanceof errors_js_1.LocalDevContractError) ||
22
+ error.classification !== 'not-running') {
23
+ throw error;
24
+ }
25
+ }
26
+ if (down) {
27
+ const operation = await launch.client.waitForOperation(down.operationId, {
28
+ timeoutMs: command.timeoutMs ?? 120_000,
29
+ });
30
+ if (operation.state !== 'succeeded') {
31
+ throw new errors_js_1.LocalDevContractError(operation.failureClassification ?? 'operation-conflict', 'Foreground Fleet down did not complete successfully; ownership was retained.');
32
+ }
33
+ }
18
34
  await launch.client.shutdown(idempotencyKey());
19
35
  }
20
36
  catch (error) {
@@ -22,7 +38,10 @@ function foregroundWait(launch, command, signal, idempotencyKey, reportCleanupFa
22
38
  }
23
39
  };
24
40
  const onAbort = () => void stop();
25
- signal.addEventListener('abort', onAbort, { once: true });
41
+ if (signal.aborted)
42
+ onAbort();
43
+ else
44
+ signal.addEventListener('abort', onAbort, { once: true });
26
45
  return launch.runtime.supervisor.waitUntilStopped().finally(() => {
27
46
  signal.removeEventListener('abort', onAbort);
28
47
  });
@@ -0,0 +1,14 @@
1
+ export declare const DOCKER_CREDENTIAL_PROBE_TIMEOUT_MS = 5000;
2
+ /** Check helper liveness through the optional metadata-only list operation. Never
3
+ * request a password, retain helper output, or modify Docker configuration. */
4
+ export declare function inspectDockerCredentialHelpers(options?: {
5
+ configDirectory?: string;
6
+ /** Docker registry keys for the images being used, not every host login. */
7
+ registries?: readonly string[];
8
+ probe?: (executable: string) => Promise<void>;
9
+ }): Promise<{
10
+ status: 'ready' | 'unavailable';
11
+ evidence: string;
12
+ remediation?: string;
13
+ }>;
14
+ export declare function probeDockerCredentialHelper(executable: string): Promise<void>;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DOCKER_CREDENTIAL_PROBE_TIMEOUT_MS = void 0;
4
+ exports.inspectDockerCredentialHelpers = inspectDockerCredentialHelpers;
5
+ exports.probeDockerCredentialHelper = probeDockerCredentialHelper;
6
+ const node_child_process_1 = require("node:child_process");
7
+ const node_fs_1 = require("node:fs");
8
+ const node_os_1 = require("node:os");
9
+ const node_path_1 = require("node:path");
10
+ exports.DOCKER_CREDENTIAL_PROBE_TIMEOUT_MS = 5_000;
11
+ const remediation = 'If a required image pull fails, repair or unlock its selected Docker credential helper, then run ebk dev doctor --refresh. The optional list probe is advisory; do not delete host credentials, remove helpers, or prune shared builders.';
12
+ /** Check helper liveness through the optional metadata-only list operation. Never
13
+ * request a password, retain helper output, or modify Docker configuration. */
14
+ async function inspectDockerCredentialHelpers(options = {}) {
15
+ try {
16
+ const directory = options.configDirectory ??
17
+ process.env.DOCKER_CONFIG ??
18
+ (0, node_path_1.join)((0, node_os_1.homedir)(), '.docker');
19
+ if (!(0, node_path_1.isAbsolute)(directory))
20
+ throw new Error('invalid configuration');
21
+ let file;
22
+ try {
23
+ file = (0, node_fs_1.openSync)((0, node_path_1.join)(directory, 'config.json'), 'r');
24
+ }
25
+ catch (error) {
26
+ if (error.code === 'ENOENT')
27
+ return {
28
+ status: 'ready',
29
+ evidence: 'No explicit Docker credential helper is configured.',
30
+ };
31
+ throw error;
32
+ }
33
+ let config;
34
+ try {
35
+ const stat = (0, node_fs_1.fstatSync)(file);
36
+ if (!stat.isFile() || stat.size > 64 * 1024)
37
+ throw new Error('invalid configuration');
38
+ config = JSON.parse((0, node_fs_1.readFileSync)(file, 'utf8'));
39
+ }
40
+ finally {
41
+ (0, node_fs_1.closeSync)(file);
42
+ }
43
+ if (!config || typeof config !== 'object' || Array.isArray(config))
44
+ throw new Error('invalid configuration');
45
+ let registryHelpers = {};
46
+ if (config.credHelpers !== undefined) {
47
+ if (!config.credHelpers ||
48
+ typeof config.credHelpers !== 'object' ||
49
+ Array.isArray(config.credHelpers))
50
+ throw new Error('invalid configuration');
51
+ registryHelpers = config.credHelpers;
52
+ }
53
+ // Fleet dependency images currently use Docker Hub. Exact registry helpers
54
+ // override the global store, as Docker does; unrelated logins are untouched.
55
+ const helpers = (options.registries ?? ['https://index.docker.io/v1/'])
56
+ .map((registry) => registryHelpers[registry] ?? config.credsStore)
57
+ .filter((helper) => helper !== undefined && helper !== '');
58
+ const unique = [...new Set(helpers)];
59
+ if (unique.length > 16 ||
60
+ unique.some((helper) => typeof helper !== 'string' ||
61
+ !/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/.test(helper)))
62
+ throw new Error('invalid configuration');
63
+ const probe = options.probe ?? probeDockerCredentialHelper;
64
+ await Promise.all(unique.map((helper) => probe(`docker-credential-${helper}`)));
65
+ return {
66
+ status: 'ready',
67
+ evidence: `${unique.length} selected Docker credential helper(s) responded to the optional list probe; output discarded. Image authentication is checked by Docker when pulling.`,
68
+ };
69
+ }
70
+ catch {
71
+ return {
72
+ status: 'unavailable',
73
+ evidence: 'Docker credential configuration or optional list liveness is unverified. This does not prove required image pulls will fail.',
74
+ remediation,
75
+ };
76
+ }
77
+ }
78
+ function probeDockerCredentialHelper(executable) {
79
+ return new Promise((resolve, reject) => {
80
+ // list returns registry/username metadata, not passwords. Even that metadata
81
+ // is discarded. Never serialize execFile's error (it carries stdout/stderr).
82
+ const child = (0, node_child_process_1.execFile)(executable, ['list'], {
83
+ timeout: exports.DOCKER_CREDENTIAL_PROBE_TIMEOUT_MS,
84
+ killSignal: 'SIGKILL',
85
+ maxBuffer: 64 * 1024,
86
+ windowsHide: true,
87
+ shell: false,
88
+ }, (error) => error
89
+ ? reject(new Error('Docker credential helper unavailable.'))
90
+ : resolve());
91
+ child.stdin?.end();
92
+ });
93
+ }
94
+ //# sourceMappingURL=docker-credential-health.js.map
@@ -1,3 +1,4 @@
1
+ import { type FoundationPreflightReport } from '../foundation/preflight.js';
1
2
  import type { LocalDevAdapter } from './contracts.js';
2
3
  import { type DevelopmentEnvironmentAssessment, type EnvironmentCheckResult } from './environment-state.js';
3
4
  import { LocalDevContractError } from './errors.js';
@@ -61,6 +62,10 @@ export declare const ENVIRONMENT_INSPECTOR_CHECKS: readonly [{
61
62
  readonly capabilities: readonly ["containers"];
62
63
  readonly id: "docker-compose-v2";
63
64
  readonly volatile: true;
65
+ }, {
66
+ readonly capabilities: readonly ["containers"];
67
+ readonly id: "docker-credential-helpers";
68
+ readonly volatile: true;
64
69
  }, {
65
70
  readonly capabilities: readonly ["aws-foundation"];
66
71
  readonly id: "aws-sdk-credentials";
@@ -122,5 +127,7 @@ export declare class EnvironmentDeficientError extends LocalDevContractError {
122
127
  }
123
128
  export declare function evaluateEnvironmentExecutableVersion(detectedVersion: string, minimumVersion: string, remediation: string): EnvironmentProbeObservation;
124
129
  export declare function evaluateDevelopmentFoundationAccount(accountId: string, eventBusArn: string): EnvironmentProbeObservation;
130
+ export declare function evaluateDevelopmentFoundationReport(report: FoundationPreflightReport, accountId: string, context: LocalDevContext): EnvironmentProbeObservation;
131
+ export declare function resolveCurrentAwsAccountId(context: LocalDevContext, abortSignal: AbortSignal): Promise<string>;
125
132
  export declare function inspectDevelopmentEnvironment(input: InspectEnvironmentInput, dependencies?: EnvironmentInspectorDependencies): Promise<DevelopmentEnvironmentAssessment>;
126
133
  export declare function assertEnvironmentReady(assessment: DevelopmentEnvironmentAssessment): void;