@treeseed/sdk 0.11.0 → 0.12.5

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 (473) hide show
  1. package/README.md +9 -4
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +117 -60
  27. package/dist/capacity-provider.js +215 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +2 -2
  36. package/dist/copilot.d.ts +3 -0
  37. package/dist/copilot.js +16 -1
  38. package/dist/d1-http.d.ts +1 -1
  39. package/dist/d1-store.d.ts +32 -57
  40. package/dist/d1-store.js +115 -318
  41. package/dist/db/d1.d.ts +1 -232
  42. package/dist/db/index.d.ts +3 -3
  43. package/dist/db/market-schema.d.ts +49037 -11843
  44. package/dist/db/market-schema.js +1788 -50
  45. package/dist/db/node-sqlite.d.ts +1 -232
  46. package/dist/db/schema.d.ts +0 -462
  47. package/dist/db/schema.js +2 -22
  48. package/dist/dispatch.d.ts +1 -1
  49. package/dist/dispatch.js +0 -11
  50. package/dist/fixture-support.js +52 -4
  51. package/dist/governance.d.ts +133 -0
  52. package/dist/governance.js +285 -0
  53. package/dist/graph/build.d.ts +2 -2
  54. package/dist/graph/context-query-contracts.d.ts +1 -1
  55. package/dist/graph/dsl.d.ts +1 -1
  56. package/dist/graph/query.d.ts +4 -4
  57. package/dist/graph/ranking.d.ts +1 -1
  58. package/dist/graph/schema.d.ts +1 -1
  59. package/dist/graph.d.ts +11 -11
  60. package/dist/guarantees/index.d.ts +425 -0
  61. package/dist/guarantees/index.js +1146 -0
  62. package/dist/hosting/apps.d.ts +1 -1
  63. package/dist/hosting/builtins.d.ts +1 -1
  64. package/dist/hosting/builtins.js +9 -198
  65. package/dist/hosting/contracts.d.ts +3 -2
  66. package/dist/hosting/graph.d.ts +24 -21
  67. package/dist/hosting/graph.js +280 -294
  68. package/dist/hosting/index.d.ts +4 -4
  69. package/dist/index.d.ts +88 -74
  70. package/dist/index.js +81 -10
  71. package/dist/local-dev/managed-dev.d.ts +85 -0
  72. package/dist/local-dev/managed-dev.js +368 -0
  73. package/dist/managed-dependencies.d.ts +9 -0
  74. package/dist/managed-dependencies.js +10 -8
  75. package/dist/market-client.d.ts +265 -7
  76. package/dist/market-client.js +381 -9
  77. package/dist/model-registry.d.ts +1 -1
  78. package/dist/model-registry.js +19 -19
  79. package/dist/operations/agent-tools.d.ts +2 -11
  80. package/dist/operations/agent-tools.js +2 -14
  81. package/dist/operations/providers/default.d.ts +1 -1
  82. package/dist/operations/providers/default.js +20 -37
  83. package/dist/operations/repository-operations.d.ts +26 -2
  84. package/dist/operations/repository-operations.js +159 -1
  85. package/dist/operations/runtime.d.ts +3 -3
  86. package/dist/operations/services/bootstrap-runner.d.ts +1 -1
  87. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  88. package/dist/operations/services/build-warning-policy.js +81 -82
  89. package/dist/operations/services/commit-message-provider.js +4 -4
  90. package/dist/operations/services/config-runtime.d.ts +73 -19
  91. package/dist/operations/services/config-runtime.js +276 -100
  92. package/dist/operations/services/deploy.d.ts +41 -622
  93. package/dist/operations/services/deploy.js +181 -213
  94. package/dist/operations/services/deployment-readiness.d.ts +1 -1
  95. package/dist/operations/services/deployment-readiness.js +38 -7
  96. package/dist/operations/services/git-remote-policy.js +12 -4
  97. package/dist/operations/services/git-runner.d.ts +66 -0
  98. package/dist/operations/services/git-runner.js +479 -0
  99. package/dist/operations/services/git-workflow.d.ts +43 -5
  100. package/dist/operations/services/git-workflow.js +242 -20
  101. package/dist/operations/services/github-actions-verification.d.ts +3 -1
  102. package/dist/operations/services/github-actions-verification.js +11 -3
  103. package/dist/operations/services/github-api.js +21 -5
  104. package/dist/operations/services/github-automation.d.ts +3 -3
  105. package/dist/operations/services/github-automation.js +15 -18
  106. package/dist/operations/services/github-credentials.js +2 -1
  107. package/dist/operations/services/hosted-service-checks.d.ts +19 -1
  108. package/dist/operations/services/hosted-service-checks.js +162 -11
  109. package/dist/operations/services/hosting-audit.d.ts +2 -2
  110. package/dist/operations/services/hosting-audit.js +7 -7
  111. package/dist/operations/services/hub-launch.d.ts +1 -1
  112. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  113. package/dist/operations/services/hub-provider-launch.js +19 -14
  114. package/dist/operations/services/live-hosted-service-checks.d.ts +2 -1
  115. package/dist/operations/services/live-hosted-service-checks.js +193 -80
  116. package/dist/operations/services/local-dev.js +0 -1
  117. package/dist/operations/services/managed-host-security.d.ts +1 -1
  118. package/dist/operations/services/managed-repositories.d.ts +37 -0
  119. package/dist/operations/services/managed-repositories.js +177 -0
  120. package/dist/operations/services/operations-runner-smoke.d.ts +3 -2
  121. package/dist/operations/services/operations-runner-smoke.js +22 -4
  122. package/dist/operations/services/package-adapters.d.ts +77 -2
  123. package/dist/operations/services/package-adapters.js +629 -56
  124. package/dist/operations/services/package-reference-policy.d.ts +12 -88
  125. package/dist/operations/services/package-reference-policy.js +81 -213
  126. package/dist/operations/services/project-host-operations.d.ts +4 -4
  127. package/dist/operations/services/project-platform.d.ts +19 -193
  128. package/dist/operations/services/project-platform.js +31 -103
  129. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  130. package/dist/operations/services/project-web-monitor.js +97 -2
  131. package/dist/operations/services/railway-api.d.ts +36 -7
  132. package/dist/operations/services/railway-api.js +331 -100
  133. package/dist/operations/services/railway-deploy.d.ts +7 -95
  134. package/dist/operations/services/railway-deploy.js +334 -742
  135. package/dist/operations/services/release-history.js +3 -4
  136. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  137. package/dist/operations/services/release-proof-ledger.js +81 -0
  138. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  139. package/dist/operations/services/release-proof-planner.js +195 -0
  140. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  141. package/dist/operations/services/release-proof-runner.js +169 -0
  142. package/dist/operations/services/release-proof.d.ts +81 -0
  143. package/dist/operations/services/release-proof.js +79 -0
  144. package/dist/operations/services/repository-save-orchestrator.d.ts +6 -7
  145. package/dist/operations/services/repository-save-orchestrator.js +353 -174
  146. package/dist/operations/services/runtime-paths.d.ts +1 -3
  147. package/dist/operations/services/runtime-paths.js +0 -4
  148. package/dist/operations/services/runtime-tools.d.ts +1 -192
  149. package/dist/operations/services/runtime-tools.js +4 -444
  150. package/dist/operations/services/save-deploy-preflight.js +9 -1
  151. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  152. package/dist/operations/services/template-host-bindings.js +3 -2
  153. package/dist/operations/services/template-registry.d.ts +6 -6
  154. package/dist/operations/services/template-registry.js +33 -14
  155. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  156. package/dist/operations/services/workflow-timing.d.ts +25 -0
  157. package/dist/operations/services/workflow-timing.js +79 -0
  158. package/dist/operations/services/workspace-dependency-mode.js +41 -4
  159. package/dist/operations/services/workspace-preflight.js +8 -8
  160. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  161. package/dist/operations/services/workspace-save.d.ts +1 -0
  162. package/dist/operations/services/workspace-save.js +41 -18
  163. package/dist/operations/services/workspace-tools.js +40 -6
  164. package/dist/operations-registry.d.ts +1 -1
  165. package/dist/operations-registry.js +5 -6
  166. package/dist/operations-types.d.ts +1 -1
  167. package/dist/operations.d.ts +17 -11
  168. package/dist/operations.js +57 -3
  169. package/dist/platform/book-export.js +2 -0
  170. package/dist/platform/books-data.d.ts +1 -1
  171. package/dist/platform/config.d.ts +27 -0
  172. package/dist/platform/config.js +100 -0
  173. package/dist/platform/content-runtime-source.d.ts +54 -0
  174. package/dist/platform/content-runtime-source.js +169 -0
  175. package/dist/platform/contracts.d.ts +6 -1
  176. package/dist/platform/deploy-config.d.ts +1 -1
  177. package/dist/platform/deploy-config.js +7 -1
  178. package/dist/platform/deploy-runtime.d.ts +1 -1
  179. package/dist/platform/desired-state.d.ts +66 -0
  180. package/dist/platform/desired-state.js +1052 -0
  181. package/dist/platform/env.yaml +414 -19
  182. package/dist/platform/environment.d.ts +2 -2
  183. package/dist/platform/environment.js +54 -22
  184. package/dist/platform/local-content-materialization.d.ts +9 -0
  185. package/dist/platform/local-content-materialization.js +212 -0
  186. package/dist/platform/plugin.d.ts +5 -5
  187. package/dist/platform/plugins/runtime.d.ts +3 -3
  188. package/dist/platform/plugins/runtime.js +62 -1
  189. package/dist/platform/plugins.d.ts +6 -6
  190. package/dist/platform/published-content-pipeline.d.ts +3 -3
  191. package/dist/platform/published-content-pipeline.js +5 -1
  192. package/dist/platform/published-content.d.ts +4 -3
  193. package/dist/platform/site-config-schema.d.ts +1 -0
  194. package/dist/platform/site-config-schema.js +4 -1
  195. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  196. package/dist/platform/tenant-config.d.ts +1 -1
  197. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  198. package/dist/platform/utils/site-config-schema.js +400 -461
  199. package/dist/platform-operation-store.d.ts +1 -1
  200. package/dist/plugin-default.d.ts +1 -1
  201. package/dist/plugin-default.js +27 -12
  202. package/dist/project-import.d.ts +91 -0
  203. package/dist/project-import.js +257 -0
  204. package/dist/project-workflow.d.ts +1 -1
  205. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  206. package/dist/reconcile/bootstrap-systems.js +3 -3
  207. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  208. package/dist/reconcile/builtin-adapters.js +2924 -346
  209. package/dist/reconcile/contracts.d.ts +15 -2
  210. package/dist/reconcile/desired-state.d.ts +2 -193
  211. package/dist/reconcile/desired-state.js +24 -33
  212. package/dist/reconcile/engine.d.ts +60 -397
  213. package/dist/reconcile/engine.js +182 -18
  214. package/dist/reconcile/index.d.ts +10 -10
  215. package/dist/reconcile/live-acceptance.d.ts +22 -1
  216. package/dist/reconcile/live-acceptance.js +456 -44
  217. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  218. package/dist/reconcile/providers/docker-private.js +101 -0
  219. package/dist/reconcile/providers/github-private.d.ts +65 -0
  220. package/dist/reconcile/providers/github-private.js +119 -0
  221. package/dist/reconcile/providers/local-private.d.ts +28 -0
  222. package/dist/reconcile/providers/local-private.js +75 -0
  223. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  224. package/dist/reconcile/providers/railway-iac.js +275 -0
  225. package/dist/reconcile/providers/release-private.d.ts +92 -0
  226. package/dist/reconcile/providers/release-private.js +152 -0
  227. package/dist/reconcile/registry.d.ts +2 -2
  228. package/dist/reconcile/registry.js +16 -1
  229. package/dist/reconcile/state.d.ts +1 -1
  230. package/dist/reconcile/state.js +3 -40
  231. package/dist/reconcile/units.d.ts +1 -1
  232. package/dist/reconcile/units.js +7 -1
  233. package/dist/remote.d.ts +6 -6
  234. package/dist/scenes/artifacts.d.ts +16 -0
  235. package/dist/scenes/artifacts.js +61 -0
  236. package/dist/scenes/auth.d.ts +2 -0
  237. package/dist/scenes/auth.js +28 -0
  238. package/dist/scenes/base-url.d.ts +12 -0
  239. package/dist/scenes/base-url.js +123 -0
  240. package/dist/scenes/builtin-plugins.d.ts +2 -0
  241. package/dist/scenes/builtin-plugins.js +447 -0
  242. package/dist/scenes/checkpoints.d.ts +14 -0
  243. package/dist/scenes/checkpoints.js +33 -0
  244. package/dist/scenes/device-matrix.d.ts +2 -0
  245. package/dist/scenes/device-matrix.js +97 -0
  246. package/dist/scenes/devices.d.ts +11 -0
  247. package/dist/scenes/devices.js +22 -0
  248. package/dist/scenes/diagnostics.d.ts +5 -0
  249. package/dist/scenes/diagnostics.js +22 -0
  250. package/dist/scenes/diagram-providers.d.ts +2 -0
  251. package/dist/scenes/diagram-providers.js +181 -0
  252. package/dist/scenes/diagram-validation.d.ts +22 -0
  253. package/dist/scenes/diagram-validation.js +74 -0
  254. package/dist/scenes/environment.d.ts +2 -0
  255. package/dist/scenes/environment.js +65 -0
  256. package/dist/scenes/evidence-bundle.d.ts +5 -0
  257. package/dist/scenes/evidence-bundle.js +42 -0
  258. package/dist/scenes/evidence-report.d.ts +10 -0
  259. package/dist/scenes/evidence-report.js +73 -0
  260. package/dist/scenes/evidence.d.ts +16 -0
  261. package/dist/scenes/evidence.js +277 -0
  262. package/dist/scenes/index.d.ts +48 -0
  263. package/dist/scenes/index.js +312 -0
  264. package/dist/scenes/inspect.d.ts +9 -0
  265. package/dist/scenes/inspect.js +64 -0
  266. package/dist/scenes/loader.d.ts +3 -0
  267. package/dist/scenes/loader.js +38 -0
  268. package/dist/scenes/logs.d.ts +2 -0
  269. package/dist/scenes/logs.js +47 -0
  270. package/dist/scenes/operations.d.ts +3 -0
  271. package/dist/scenes/operations.js +128 -0
  272. package/dist/scenes/phase0.d.ts +9 -0
  273. package/dist/scenes/phase0.js +637 -0
  274. package/dist/scenes/planner.d.ts +12 -0
  275. package/dist/scenes/planner.js +166 -0
  276. package/dist/scenes/playwright-adapter.d.ts +2 -0
  277. package/dist/scenes/playwright-adapter.js +63 -0
  278. package/dist/scenes/plugins.d.ts +5 -0
  279. package/dist/scenes/plugins.js +115 -0
  280. package/dist/scenes/progress.d.ts +17 -0
  281. package/dist/scenes/progress.js +24 -0
  282. package/dist/scenes/publish-destinations.d.ts +12 -0
  283. package/dist/scenes/publish-destinations.js +99 -0
  284. package/dist/scenes/publish-plan-report.d.ts +10 -0
  285. package/dist/scenes/publish-plan-report.js +70 -0
  286. package/dist/scenes/publish-plan.d.ts +15 -0
  287. package/dist/scenes/publish-plan.js +248 -0
  288. package/dist/scenes/publish-redaction.d.ts +16 -0
  289. package/dist/scenes/publish-redaction.js +148 -0
  290. package/dist/scenes/publish-release-record.d.ts +13 -0
  291. package/dist/scenes/publish-release-record.js +34 -0
  292. package/dist/scenes/publish-report.d.ts +10 -0
  293. package/dist/scenes/publish-report.js +67 -0
  294. package/dist/scenes/publish.d.ts +16 -0
  295. package/dist/scenes/publish.js +298 -0
  296. package/dist/scenes/registry.d.ts +12 -0
  297. package/dist/scenes/registry.js +65 -0
  298. package/dist/scenes/remotion-adapter.d.ts +3 -0
  299. package/dist/scenes/remotion-adapter.js +94 -0
  300. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  301. package/dist/scenes/remotion-composition-registry.js +12 -0
  302. package/dist/scenes/remotion-compositions.d.ts +15 -0
  303. package/dist/scenes/remotion-compositions.js +464 -0
  304. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  305. package/dist/scenes/remotion-diagrams.js +188 -0
  306. package/dist/scenes/remotion-input.d.ts +13 -0
  307. package/dist/scenes/remotion-input.js +291 -0
  308. package/dist/scenes/remotion-visuals.d.ts +29 -0
  309. package/dist/scenes/remotion-visuals.js +198 -0
  310. package/dist/scenes/render-media-assets.d.ts +9 -0
  311. package/dist/scenes/render-media-assets.js +117 -0
  312. package/dist/scenes/render-report.d.ts +10 -0
  313. package/dist/scenes/render-report.js +27 -0
  314. package/dist/scenes/render.d.ts +2 -0
  315. package/dist/scenes/render.js +218 -0
  316. package/dist/scenes/reporter.d.ts +3 -0
  317. package/dist/scenes/reporter.js +101 -0
  318. package/dist/scenes/resume.d.ts +2 -0
  319. package/dist/scenes/resume.js +79 -0
  320. package/dist/scenes/runner.d.ts +2 -0
  321. package/dist/scenes/runner.js +674 -0
  322. package/dist/scenes/schema.d.ts +6 -0
  323. package/dist/scenes/schema.js +994 -0
  324. package/dist/scenes/seed.d.ts +2 -0
  325. package/dist/scenes/seed.js +83 -0
  326. package/dist/scenes/segments.d.ts +15 -0
  327. package/dist/scenes/segments.js +79 -0
  328. package/dist/scenes/selectors.d.ts +3 -0
  329. package/dist/scenes/selectors.js +21 -0
  330. package/dist/scenes/timeline.d.ts +11 -0
  331. package/dist/scenes/timeline.js +26 -0
  332. package/dist/scenes/timeouts.d.ts +6 -0
  333. package/dist/scenes/timeouts.js +17 -0
  334. package/dist/scenes/training-captions.d.ts +14 -0
  335. package/dist/scenes/training-captions.js +98 -0
  336. package/dist/scenes/training-report.d.ts +10 -0
  337. package/dist/scenes/training-report.js +78 -0
  338. package/dist/scenes/training-transcript.d.ts +24 -0
  339. package/dist/scenes/training-transcript.js +204 -0
  340. package/dist/scenes/training.d.ts +10 -0
  341. package/dist/scenes/training.js +134 -0
  342. package/dist/scenes/types.d.ts +1872 -0
  343. package/dist/scenes/types.js +8 -0
  344. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  345. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  346. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  347. package/dist/scenes/visual-audit-fixtures.js +210 -0
  348. package/dist/scenes/visual-audit-report.d.ts +11 -0
  349. package/dist/scenes/visual-audit-report.js +85 -0
  350. package/dist/scenes/visual-audit-review.d.ts +23 -0
  351. package/dist/scenes/visual-audit-review.js +829 -0
  352. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  353. package/dist/scenes/visual-audit-routes.js +308 -0
  354. package/dist/scenes/visual-audit.d.ts +3 -0
  355. package/dist/scenes/visual-audit.js +596 -0
  356. package/dist/scripts/build-dist.js +154 -40
  357. package/dist/scripts/check-build-warnings.js +42 -53
  358. package/dist/scripts/cleanup-markdown.js +1 -1
  359. package/dist/scripts/cli-test-fixtures.js +24 -28
  360. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  361. package/dist/scripts/package-tools.js +12 -1
  362. package/dist/scripts/prepare.js +3 -7
  363. package/dist/scripts/release-verify.js +2 -5
  364. package/dist/scripts/run-fixture-astro-command.js +1 -1
  365. package/dist/scripts/template-catalog.test.js +68 -82
  366. package/dist/scripts/tenant-dev.js +0 -10
  367. package/dist/scripts/test-cloudflare-local.js +1 -1
  368. package/dist/scripts/test-scaffold.js +0 -1
  369. package/dist/scripts/test-smoke.js +3 -3
  370. package/dist/scripts/treeseed-build-dist.js +4 -7
  371. package/dist/scripts/treeseed-release-verify.js +1 -1
  372. package/dist/scripts/verify-driver.js +30 -21
  373. package/dist/scripts/workflow-commands.test.js +18 -27
  374. package/dist/scripts/workspace-command-e2e.js +1 -1
  375. package/dist/scripts/workspace-lint.js +6 -0
  376. package/dist/scripts/workspace-release-test.js +90 -1
  377. package/dist/scripts/workspace-test.js +6 -0
  378. package/dist/sdk-dispatch.d.ts +1 -1
  379. package/dist/sdk-dispatch.js +0 -16
  380. package/dist/sdk-fields.d.ts +1 -1
  381. package/dist/sdk-filters.d.ts +1 -1
  382. package/dist/sdk-types.d.ts +1184 -113
  383. package/dist/sdk-types.js +393 -0
  384. package/dist/sdk.d.ts +74 -79
  385. package/dist/sdk.js +27 -36
  386. package/dist/secrets-capability.d.ts +421 -0
  387. package/dist/secrets-capability.js +530 -0
  388. package/dist/seeds/normalize.js +1 -0
  389. package/dist/seeds/planner.js +38 -0
  390. package/dist/seeds/schema.js +293 -4
  391. package/dist/seeds/types.d.ts +60 -0
  392. package/dist/seeds/types.js +9 -1
  393. package/dist/service-credentials.d.ts +54 -0
  394. package/dist/service-credentials.js +112 -0
  395. package/dist/stores/cursor-store.d.ts +2 -2
  396. package/dist/stores/envelopes.d.ts +1 -1
  397. package/dist/stores/helpers.d.ts +1 -1
  398. package/dist/stores/lease-store.d.ts +2 -2
  399. package/dist/stores/message-store.d.ts +2 -2
  400. package/dist/stores/operational-store.d.ts +3 -26
  401. package/dist/stores/operational-store.js +0 -225
  402. package/dist/stores/project-workflow-store.d.ts +2 -2
  403. package/dist/stores/run-store.d.ts +2 -3
  404. package/dist/stores/run-store.js +0 -98
  405. package/dist/stores/subscription-store.d.ts +2 -3
  406. package/dist/stores/subscription-store.js +0 -100
  407. package/dist/template-catalog.d.ts +1 -1
  408. package/dist/template-launch-requirements.d.ts +2 -2
  409. package/dist/template-launch-ui.d.ts +2 -2
  410. package/dist/treedx/adapters.d.ts +6 -6
  411. package/dist/treedx/client.d.ts +1 -1
  412. package/dist/treedx/errors.d.ts +1 -1
  413. package/dist/treedx/federated-client.d.ts +3 -3
  414. package/dist/treedx/graph-adapter.d.ts +2 -2
  415. package/dist/treedx/index.d.ts +14 -14
  416. package/dist/treedx/market-integration.d.ts +1 -1
  417. package/dist/treedx/ports.d.ts +30 -30
  418. package/dist/treedx/query-adapter.d.ts +3 -3
  419. package/dist/treedx/registry-client.d.ts +2 -2
  420. package/dist/treedx/repository-adapter.d.ts +4 -4
  421. package/dist/treedx/repository-adapter.js +14 -3
  422. package/dist/treedx/sdk-integration.d.ts +3 -3
  423. package/dist/treedx/types.d.ts +2 -2
  424. package/dist/treedx/workspace-adapter.d.ts +2 -2
  425. package/dist/treedx-backends.d.ts +13 -11
  426. package/dist/treedx-backends.js +52 -50
  427. package/dist/treedx-client.d.ts +3 -0
  428. package/dist/treedx-client.js +10 -1
  429. package/dist/treeseed/services/compose.yml +2 -3
  430. package/dist/treeseed/template-catalog/catalog.fixture.json +4 -4
  431. package/dist/types/agents.d.ts +256 -0
  432. package/dist/types/agents.js +42 -1
  433. package/dist/verification.d.ts +1 -0
  434. package/dist/verification.js +143 -14
  435. package/dist/workflow/operations.d.ts +510 -559
  436. package/dist/workflow/operations.js +1891 -1342
  437. package/dist/workflow/policy.js +19 -7
  438. package/dist/workflow/runs.d.ts +9 -3
  439. package/dist/workflow/runs.js +66 -26
  440. package/dist/workflow/session.d.ts +4 -1
  441. package/dist/workflow/session.js +50 -10
  442. package/dist/workflow/worktrees.d.ts +6 -2
  443. package/dist/workflow/worktrees.js +98 -15
  444. package/dist/workflow-state.d.ts +5 -5
  445. package/dist/workflow-state.js +27 -17
  446. package/dist/workflow-support.d.ts +26 -25
  447. package/dist/workflow-support.js +27 -31
  448. package/dist/workflow.d.ts +46 -16
  449. package/dist/workflow.js +19 -7
  450. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  451. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  452. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  453. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  454. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  455. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  456. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  457. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  458. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  459. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  460. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  461. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  462. package/package.json +75 -18
  463. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  464. package/templates/github/deploy-web.workflow.yml +12 -8
  465. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  466. package/dist/operations/services/mailpit-runtime.js +0 -67
  467. package/dist/operations/services/release-candidate.d.ts +0 -60
  468. package/dist/operations/services/release-candidate.js +0 -953
  469. package/dist/scripts/ensure-mailpit.js +0 -48
  470. package/dist/scripts/logs-mailpit.js +0 -2
  471. package/dist/scripts/run-ts.js +0 -45
  472. package/dist/scripts/stop-mailpit.js +0 -5
  473. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -0,0 +1,181 @@
1
+ import { sceneErrorDiagnostic, sceneWarningDiagnostic } from "./diagnostics.js";
2
+ const SAFE_ID = /^[a-z0-9][a-z0-9._-]*$/u;
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ function stringArray(value) {
7
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string" && entry.trim().length > 0) ? value.map((entry) => entry.trim()) : null;
8
+ }
9
+ function warnUnknownProps(props, allowed, path) {
10
+ const allowedSet = new Set(allowed);
11
+ return Object.keys(props).filter((key) => !allowedSet.has(key)).map((key) => sceneWarningDiagnostic("scene.diagram_unknown_prop", `Unknown diagram prop: ${key}.`, `${path}.props.${key}`));
12
+ }
13
+ function propsFor(diagram) {
14
+ return isRecord(diagram.props) ? diagram.props : {};
15
+ }
16
+ function titleProp(props, fallback) {
17
+ return typeof props.title === "string" && props.title.trim() ? props.title.trim() : fallback;
18
+ }
19
+ function operationLifecycle() {
20
+ return {
21
+ id: "OperationLifecycleDiagram",
22
+ phase: 7,
23
+ status: "available",
24
+ summary: "Animate Treeseed platform operation status progression.",
25
+ component: "OperationLifecycleDiagram",
26
+ kind: "operation-lifecycle",
27
+ defaultDurationSeconds: 12,
28
+ validateProps({ diagram, path }) {
29
+ const props = propsFor(diagram);
30
+ const diagnostics = warnUnknownProps(props, ["states", "activeState", "title"], path);
31
+ const states = stringArray(props.states);
32
+ if (!states || states.length === 0) diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "OperationLifecycleDiagram requires a non-empty string array prop: states.", `${path}.props.states`));
33
+ if (props.activeState !== void 0 && typeof props.activeState !== "string") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "OperationLifecycleDiagram activeState must be a string.", `${path}.props.activeState`));
34
+ if (props.title !== void 0 && typeof props.title !== "string") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "OperationLifecycleDiagram title must be a string.", `${path}.props.title`));
35
+ if (states && typeof props.activeState === "string" && !states.includes(props.activeState)) diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", `OperationLifecycleDiagram activeState must be one of: ${states.join(", ")}.`, `${path}.props.activeState`));
36
+ return diagnostics;
37
+ },
38
+ normalizeProps({ diagram }) {
39
+ const props = propsFor(diagram);
40
+ return {
41
+ title: titleProp(props, "Operation lifecycle"),
42
+ states: stringArray(props.states) ?? ["queued", "claimed", "running", "verified", "completed"],
43
+ ...typeof props.activeState === "string" ? { activeState: props.activeState } : {}
44
+ };
45
+ }
46
+ };
47
+ }
48
+ function reconciliationLifecycle() {
49
+ return {
50
+ id: "ReconciliationLifecycleDiagram",
51
+ phase: 7,
52
+ status: "available",
53
+ summary: "Animate exact-state reconciliation from refresh through persist.",
54
+ component: "ReconciliationLifecycleDiagram",
55
+ kind: "reconciliation-lifecycle",
56
+ defaultDurationSeconds: 14,
57
+ validateProps({ diagram, path }) {
58
+ const props = propsFor(diagram);
59
+ const diagnostics = warnUnknownProps(props, ["stages", "title"], path);
60
+ if (props.stages !== void 0 && !stringArray(props.stages)) diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "ReconciliationLifecycleDiagram stages must be a non-empty string array.", `${path}.props.stages`));
61
+ if (props.title !== void 0 && typeof props.title !== "string") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "ReconciliationLifecycleDiagram title must be a string.", `${path}.props.title`));
62
+ return diagnostics;
63
+ },
64
+ normalizeProps({ diagram }) {
65
+ const props = propsFor(diagram);
66
+ return {
67
+ title: titleProp(props, "Reconciliation lifecycle"),
68
+ stages: stringArray(props.stages) ?? ["refresh", "diff", "plan", "validate", "apply", "refresh", "verify", "persist"]
69
+ };
70
+ }
71
+ };
72
+ }
73
+ function devRuntimeTopology() {
74
+ return {
75
+ id: "DevRuntimeTopologyDiagram",
76
+ phase: 7,
77
+ status: "available",
78
+ summary: "Animate managed local dev web, API, and operations-runner topology.",
79
+ component: "DevRuntimeTopologyDiagram",
80
+ kind: "dev-runtime-topology",
81
+ defaultDurationSeconds: 12,
82
+ validateProps({ diagram, path }) {
83
+ const props = propsFor(diagram);
84
+ const diagnostics = warnUnknownProps(props, ["surfaces", "links", "title"], path);
85
+ const surfaceIds = /* @__PURE__ */ new Set(["web", "api", "operations-runner"]);
86
+ if (props.surfaces !== void 0) {
87
+ if (!Array.isArray(props.surfaces)) {
88
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "DevRuntimeTopologyDiagram surfaces must be an array.", `${path}.props.surfaces`));
89
+ } else {
90
+ surfaceIds.clear();
91
+ props.surfaces.forEach((surface, index) => {
92
+ if (!isRecord(surface) || typeof surface.id !== "string" || !SAFE_ID.test(surface.id)) {
93
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "DevRuntimeTopologyDiagram surface ids must be filesystem-safe strings.", `${path}.props.surfaces[${index}].id`));
94
+ return;
95
+ }
96
+ surfaceIds.add(surface.id);
97
+ });
98
+ }
99
+ }
100
+ if (props.links !== void 0) {
101
+ if (!Array.isArray(props.links)) {
102
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "DevRuntimeTopologyDiagram links must be an array.", `${path}.props.links`));
103
+ } else {
104
+ props.links.forEach((link, index) => {
105
+ if (!isRecord(link) || typeof link.from !== "string" || typeof link.to !== "string" || !surfaceIds.has(link.from) || !surfaceIds.has(link.to)) {
106
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "DevRuntimeTopologyDiagram links must reference known surface ids.", `${path}.props.links[${index}]`));
107
+ }
108
+ });
109
+ }
110
+ }
111
+ if (props.title !== void 0 && typeof props.title !== "string") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "DevRuntimeTopologyDiagram title must be a string.", `${path}.props.title`));
112
+ return diagnostics;
113
+ },
114
+ normalizeProps({ diagram }) {
115
+ const props = propsFor(diagram);
116
+ return {
117
+ title: titleProp(props, "Managed dev topology"),
118
+ surfaces: Array.isArray(props.surfaces) ? props.surfaces : [
119
+ { id: "web", label: "Web", kind: "Astro" },
120
+ { id: "api", label: "API", kind: "Node" },
121
+ { id: "operations-runner", label: "Operations Runner", kind: "worker" }
122
+ ],
123
+ links: Array.isArray(props.links) ? props.links : [
124
+ { from: "web", to: "api", label: "HTTP" },
125
+ { from: "api", to: "operations-runner", label: "operations" }
126
+ ]
127
+ };
128
+ }
129
+ };
130
+ }
131
+ function sceneExecutionTimeline() {
132
+ return {
133
+ id: "SceneExecutionTimelineDiagram",
134
+ phase: 7,
135
+ status: "available",
136
+ summary: "Animate scene chapters, segments, steps, and checkpoints.",
137
+ component: "SceneExecutionTimelineDiagram",
138
+ kind: "scene-execution-timeline",
139
+ defaultDurationSeconds: 10,
140
+ validateProps({ diagram, path }) {
141
+ const props = propsFor(diagram);
142
+ const diagnostics = warnUnknownProps(props, ["title", "showCheckpoints", "showSegments"], path);
143
+ if (props.title !== void 0 && typeof props.title !== "string") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "SceneExecutionTimelineDiagram title must be a string.", `${path}.props.title`));
144
+ if (props.showCheckpoints !== void 0 && typeof props.showCheckpoints !== "boolean") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "SceneExecutionTimelineDiagram showCheckpoints must be a boolean.", `${path}.props.showCheckpoints`));
145
+ if (props.showSegments !== void 0 && typeof props.showSegments !== "boolean") diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "SceneExecutionTimelineDiagram showSegments must be a boolean.", `${path}.props.showSegments`));
146
+ return diagnostics;
147
+ },
148
+ normalizeProps({ diagram, run }) {
149
+ const props = propsFor(diagram);
150
+ const report = run;
151
+ return {
152
+ title: titleProp(props, "Scene execution timeline"),
153
+ showCheckpoints: typeof props.showCheckpoints === "boolean" ? props.showCheckpoints : true,
154
+ showSegments: typeof props.showSegments === "boolean" ? props.showSegments : true,
155
+ chapters: report?.chapters ?? [],
156
+ segments: report?.segments ?? [],
157
+ steps: report?.steps ?? [],
158
+ checkpoints: report?.checkpoints ?? [],
159
+ failedStep: report?.failedStep ?? null
160
+ };
161
+ }
162
+ };
163
+ }
164
+ function createBuiltInTreeseedSceneDiagramProvider() {
165
+ const diagrams = [
166
+ operationLifecycle(),
167
+ reconciliationLifecycle(),
168
+ devRuntimeTopology(),
169
+ sceneExecutionTimeline()
170
+ ];
171
+ return {
172
+ id: "treeseed-remotion-diagrams",
173
+ phase: 7,
174
+ status: "available",
175
+ summary: "Operation, reconciliation, dev topology, and scene execution timeline diagrams.",
176
+ diagrams: Object.fromEntries(diagrams.map((definition) => [definition.component, definition]))
177
+ };
178
+ }
179
+ export {
180
+ createBuiltInTreeseedSceneDiagramProvider
181
+ };
@@ -0,0 +1,22 @@
1
+ import type { TreeseedSceneDiagnostic, TreeseedSceneDiagramDefinition, TreeseedSceneManifest, TreeseedScenePluginRegistry, TreeseedSceneRenderDiagram, TreeseedSceneRunReport, TreeseedSceneTimelineEvent } from './types.js';
2
+ export declare function resolveTreeseedSceneDiagramDefinition(input: {
3
+ component: string;
4
+ registry: TreeseedScenePluginRegistry;
5
+ }): TreeseedSceneDiagramDefinition | null;
6
+ export declare function treeseedSceneDiagramPluginId(input: {
7
+ component: string;
8
+ registry: TreeseedScenePluginRegistry;
9
+ }): string | null;
10
+ export declare function validateTreeseedSceneDiagrams(input: {
11
+ scene: TreeseedSceneManifest;
12
+ registry?: TreeseedScenePluginRegistry;
13
+ }): TreeseedSceneDiagnostic[];
14
+ export declare function buildTreeseedSceneRenderDiagrams(input: {
15
+ scene: TreeseedSceneManifest;
16
+ run: TreeseedSceneRunReport;
17
+ timeline: TreeseedSceneTimelineEvent[];
18
+ registry: TreeseedScenePluginRegistry;
19
+ }): {
20
+ diagrams: TreeseedSceneRenderDiagram[];
21
+ diagnostics: TreeseedSceneDiagnostic[];
22
+ };
@@ -0,0 +1,74 @@
1
+ import { sceneErrorDiagnostic } from "./diagnostics.js";
2
+ import { createBuiltInTreeseedScenePluginRegistry } from "./registry.js";
3
+ const PLACEMENTS = /* @__PURE__ */ new Set(["overlay", "interstitial", "standalone"]);
4
+ function resolveTreeseedSceneDiagramDefinition(input) {
5
+ for (const provider of input.registry.diagrams.values()) {
6
+ const definition = provider.diagrams[input.component];
7
+ if (definition) return definition;
8
+ }
9
+ return null;
10
+ }
11
+ function treeseedSceneDiagramPluginId(input) {
12
+ for (const [providerId, provider] of input.registry.diagrams.entries()) {
13
+ if (provider.diagrams[input.component]) return input.registry.diagramPlugins.get(providerId) ?? null;
14
+ }
15
+ return null;
16
+ }
17
+ function validateTreeseedSceneDiagrams(input) {
18
+ const registry = input.registry ?? createBuiltInTreeseedScenePluginRegistry();
19
+ const diagnostics = [];
20
+ input.scene.diagrams.forEach((diagram, index) => {
21
+ const path = `diagrams[${index}]`;
22
+ const definition = resolveTreeseedSceneDiagramDefinition({ component: diagram.component, registry });
23
+ if (!definition) {
24
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_unknown_component", `Unknown scene diagram component: ${diagram.component}.`, `${path}.component`));
25
+ return;
26
+ }
27
+ if (diagram.renderer !== "remotion") {
28
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_renderer_mismatch", `Diagram component ${diagram.component} requires renderer "remotion".`, `${path}.renderer`));
29
+ }
30
+ if (!PLACEMENTS.has(diagram.placement)) {
31
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_placement", `Unknown diagram placement: ${diagram.placement}.`, `${path}.placement`));
32
+ }
33
+ if (diagram.durationSeconds !== void 0 && (!Number.isFinite(diagram.durationSeconds) || diagram.durationSeconds <= 0)) {
34
+ diagnostics.push(sceneErrorDiagnostic("scene.diagram_invalid_props", "Diagram durationSeconds must be a positive finite number.", `${path}.durationSeconds`));
35
+ }
36
+ diagnostics.push(...definition.validateProps({ diagram, path }));
37
+ });
38
+ return diagnostics;
39
+ }
40
+ function stepOffset(stepId, timeline) {
41
+ const exact = timeline.find((event) => event.stepId === stepId && (event.type === "step.start" || event.type === "step.started"));
42
+ if (exact) return exact.offsetMs;
43
+ return timeline.find((event) => event.stepId === stepId)?.offsetMs ?? null;
44
+ }
45
+ function buildTreeseedSceneRenderDiagrams(input) {
46
+ const diagnostics = validateTreeseedSceneDiagrams({ scene: input.scene, registry: input.registry });
47
+ const renderDiagrams = [];
48
+ if (diagnostics.some((diagnostic) => diagnostic.severity === "error")) return { diagrams: renderDiagrams, diagnostics };
49
+ input.scene.diagrams.forEach((diagram) => {
50
+ const definition = resolveTreeseedSceneDiagramDefinition({ component: diagram.component, registry: input.registry });
51
+ if (!definition) return;
52
+ renderDiagrams.push({
53
+ id: diagram.id,
54
+ renderer: diagram.renderer,
55
+ component: diagram.component,
56
+ kind: definition.kind,
57
+ placement: diagram.placement,
58
+ at: diagram.at,
59
+ startOffsetMs: stepOffset(diagram.at, input.timeline),
60
+ durationSeconds: diagram.durationSeconds ?? definition.defaultDurationSeconds,
61
+ props: definition.normalizeProps({ diagram, scene: input.scene, run: input.run }),
62
+ objects: diagram.objects ?? [],
63
+ ...diagram.motion ? { motion: diagram.motion } : {},
64
+ ...diagram.style ? { style: diagram.style } : {}
65
+ });
66
+ });
67
+ return { diagrams: renderDiagrams, diagnostics };
68
+ }
69
+ export {
70
+ buildTreeseedSceneRenderDiagrams,
71
+ resolveTreeseedSceneDiagramDefinition,
72
+ treeseedSceneDiagramPluginId,
73
+ validateTreeseedSceneDiagrams
74
+ };
@@ -0,0 +1,2 @@
1
+ import type { TreeseedSceneEnvironmentPrepareOptions, TreeseedSceneEnvironmentPrepareReport } from './types.js';
2
+ export declare function prepareTreeseedSceneEnvironment(input: TreeseedSceneEnvironmentPrepareOptions): Promise<TreeseedSceneEnvironmentPrepareReport>;
@@ -0,0 +1,65 @@
1
+ import { readTreeseedDevInstance, startTreeseedManagedDev } from "../local-dev/managed-dev.js";
2
+ import { collectTreeseedDeploymentReadiness } from "../workflow-support.js";
3
+ import { sceneErrorDiagnostic, sceneWarningDiagnostic } from "./diagnostics.js";
4
+ function healthUrl(instance) {
5
+ const candidate = instance;
6
+ return candidate?.health?.find((entry) => entry.kind === "http" && typeof entry.url === "string")?.url ?? null;
7
+ }
8
+ function running(instance) {
9
+ return Boolean(instance?.running);
10
+ }
11
+ async function prepareTreeseedSceneEnvironment(input) {
12
+ const diagnostics = [];
13
+ let readiness = null;
14
+ try {
15
+ readiness = collectTreeseedDeploymentReadiness({ tenantRoot: input.projectRoot, environment: input.environment });
16
+ if (input.environment !== "local" && readiness?.ok === false) {
17
+ diagnostics.push(sceneErrorDiagnostic("scene.readiness_failed", `Treeseed ${input.environment} readiness failed. Run trsd ready ${input.environment} --json for details.`, "setup.readiness"));
18
+ }
19
+ } catch (error) {
20
+ const diagnostic = sceneWarningDiagnostic("scene.readiness_unavailable", error instanceof Error ? error.message : String(error ?? "Readiness could not be collected."), "setup.readiness");
21
+ if (input.environment === "local") diagnostics.push(diagnostic);
22
+ else diagnostics.push({ ...diagnostic, severity: "error", code: "scene.readiness_failed" });
23
+ }
24
+ const requested = input.environment === "local" && input.scene.setup.dev?.required === true;
25
+ const command = input.scene.setup.dev?.command;
26
+ if (command) {
27
+ diagnostics.push(sceneWarningDiagnostic("scene.setup_command_not_executed", `Scene setup command is informational in Phase 3 and was not executed: ${command}`, "setup.dev.command"));
28
+ }
29
+ let reused = false;
30
+ let started = false;
31
+ let instances = [];
32
+ let baseUrl = null;
33
+ if (requested) {
34
+ const existing = readTreeseedDevInstance({ cwd: input.projectRoot, surface: "web" });
35
+ const existingApi = readTreeseedDevInstance({ cwd: input.projectRoot, surface: "api" });
36
+ if (running(existing) && healthUrl(existing) && running(existingApi) && healthUrl(existingApi)) {
37
+ reused = true;
38
+ instances = [existing, existingApi];
39
+ baseUrl = healthUrl(existing);
40
+ } else {
41
+ try {
42
+ const result = await startTreeseedManagedDev({ cwd: input.projectRoot, surfaces: "web,api,operations-runner", webRuntime: "local", env: input.env });
43
+ instances = result.instances;
44
+ const web = result.instances.find((entry) => entry.surface === "web" || entry.id === "web");
45
+ started = Boolean(web && running(web));
46
+ baseUrl = web ? healthUrl(web) : null;
47
+ if (!started || !baseUrl) {
48
+ diagnostics.push(sceneErrorDiagnostic("scene.local_dev_start_failed", "Local dev was requested but the managed web surface did not start.", "setup.dev"));
49
+ }
50
+ } catch (error) {
51
+ diagnostics.push(sceneErrorDiagnostic("scene.local_dev_start_failed", error instanceof Error ? error.message : String(error ?? "Local dev start failed."), "setup.dev"));
52
+ }
53
+ }
54
+ }
55
+ return {
56
+ ok: !diagnostics.some((entry) => entry.severity === "error"),
57
+ environment: input.environment,
58
+ readiness,
59
+ dev: { requested, reused, started, instances, baseUrl },
60
+ diagnostics
61
+ };
62
+ }
63
+ export {
64
+ prepareTreeseedSceneEnvironment
65
+ };
@@ -0,0 +1,5 @@
1
+ import type { TreeseedSceneEvidenceArtifact, TreeseedSceneEvidenceManifest, TreeseedSceneEvidencePaths } from './types.js';
2
+ export declare function writeTreeseedSceneEvidenceBundle(input: {
3
+ manifest: TreeseedSceneEvidenceManifest;
4
+ paths: TreeseedSceneEvidencePaths;
5
+ }): TreeseedSceneEvidenceArtifact[];
@@ -0,0 +1,42 @@
1
+ import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ function writeJson(path, value) {
4
+ mkdirSync(dirname(path), { recursive: true });
5
+ writeFileSync(path, `${JSON.stringify(value, null, 2)}
6
+ `, "utf8");
7
+ }
8
+ function safeBundlePath(bundleRoot, relativePath) {
9
+ return join(bundleRoot, relativePath.replace(/^(\.\.[/\\])+/u, "").replace(/^[/\\]+/u, ""));
10
+ }
11
+ function writeTreeseedSceneEvidenceBundle(input) {
12
+ if (!input.paths.bundleRoot || !input.paths.bundleManifestPath) return input.manifest.artifacts;
13
+ const copied = [];
14
+ for (const artifact of input.manifest.artifacts) {
15
+ if (!artifact.includedInBundle || !existsSync(artifact.path)) {
16
+ copied.push(artifact);
17
+ continue;
18
+ }
19
+ const targetPath = safeBundlePath(input.paths.bundleRoot, artifact.relativePath);
20
+ mkdirSync(dirname(targetPath), { recursive: true });
21
+ copyFileSync(artifact.path, targetPath);
22
+ copied.push({
23
+ ...artifact,
24
+ path: targetPath,
25
+ relativePath: artifact.relativePath
26
+ });
27
+ }
28
+ const bundleManifest = {
29
+ schemaVersion: "treeseed.scene.evidence-bundle/v1",
30
+ generatedAt: input.manifest.generatedAt,
31
+ sceneId: input.manifest.summary.sceneId,
32
+ sourceRunId: input.manifest.summary.runId,
33
+ target: input.manifest.target,
34
+ bundlePolicy: input.manifest.bundlePolicy,
35
+ artifacts: copied
36
+ };
37
+ writeJson(input.paths.bundleManifestPath, bundleManifest);
38
+ return copied;
39
+ }
40
+ export {
41
+ writeTreeseedSceneEvidenceBundle
42
+ };
@@ -0,0 +1,10 @@
1
+ import type { TreeseedSceneDiagnostic, TreeseedSceneEvidenceManifest, TreeseedSceneEvidencePaths } from './types.js';
2
+ export declare function formatTreeseedSceneEvidenceMarkdownReport(manifest: TreeseedSceneEvidenceManifest): string;
3
+ export declare function writeTreeseedSceneEvidenceReport(input: {
4
+ manifest: TreeseedSceneEvidenceManifest;
5
+ paths: TreeseedSceneEvidencePaths;
6
+ }): void;
7
+ export declare function appendTreeseedSceneEvidencePaths(input: {
8
+ runPath: string;
9
+ paths: TreeseedSceneEvidencePaths;
10
+ }): TreeseedSceneDiagnostic[];
@@ -0,0 +1,73 @@
1
+ import { mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { sceneWarningDiagnostic } from "./diagnostics.js";
4
+ function writeJson(path, value) {
5
+ mkdirSync(dirname(path), { recursive: true });
6
+ writeFileSync(path, `${JSON.stringify(value, null, 2)}
7
+ `, "utf8");
8
+ }
9
+ function writeText(path, value) {
10
+ mkdirSync(dirname(path), { recursive: true });
11
+ writeFileSync(path, value, "utf8");
12
+ }
13
+ function formatTreeseedSceneEvidenceMarkdownReport(manifest) {
14
+ const lines = [
15
+ `# Treeseed Scene Evidence: ${manifest.summary.sceneId ?? "(unknown scene)"}`,
16
+ "",
17
+ `Scene: ${manifest.summary.sceneId ?? "(unknown)"}`,
18
+ `Source run: ${manifest.summary.runId ?? "(unknown)"}`,
19
+ `Target: ${manifest.target}`,
20
+ `Bundle: ${manifest.bundlePolicy}`,
21
+ `Workflow: ${manifest.summary.workflowStatus}`,
22
+ `Failed step: ${manifest.summary.failedStep ?? "(none)"}`,
23
+ `Steps: ${manifest.summary.stepCounts.passed} passed, ${manifest.summary.stepCounts.failed} failed, ${manifest.summary.stepCounts.skipped} skipped`,
24
+ `Chapters: ${manifest.summary.chapters}`,
25
+ `Segments: ${manifest.summary.segments}`,
26
+ `Checkpoints: ${manifest.summary.checkpoints}`,
27
+ `Rendered videos: ${manifest.summary.renderedVideos}`,
28
+ `Training outputs: ${manifest.summary.trainingOutputs ? "yes" : "no"}`,
29
+ "",
30
+ "## Artifacts",
31
+ "",
32
+ "| Kind | Path | Bundle | SHA-256 |",
33
+ "| --- | --- | --- | --- |",
34
+ ...manifest.artifacts.map((artifact) => [
35
+ `| ${artifact.kind}`,
36
+ artifact.relativePath,
37
+ artifact.includedInBundle ? "included" : artifact.redactionStatus,
38
+ artifact.sha256 ?? "(none)",
39
+ "|"
40
+ ].join(" | ")),
41
+ "",
42
+ "## Recommendations",
43
+ "",
44
+ ...manifest.recommendations.length > 0 ? manifest.recommendations.map((recommendation) => `- ${recommendation.severity.toUpperCase()} ${recommendation.reason}: \`${recommendation.command}\``) : ["- No follow-up recommendations."],
45
+ ""
46
+ ];
47
+ return lines.join("\n");
48
+ }
49
+ function writeTreeseedSceneEvidenceReport(input) {
50
+ writeJson(input.paths.manifestPath, input.manifest);
51
+ writeText(input.paths.reportPath, formatTreeseedSceneEvidenceMarkdownReport(input.manifest));
52
+ }
53
+ function appendTreeseedSceneEvidencePaths(input) {
54
+ try {
55
+ if ((statSync(input.runPath).mode & 146) === 0) {
56
+ throw new Error("run.json is not writable.");
57
+ }
58
+ const run = JSON.parse(readFileSync(input.runPath, "utf8"));
59
+ writeJson(input.runPath, {
60
+ ...run,
61
+ evidencePaths: input.paths,
62
+ logs: run.logs ? { ...run.logs, evidence: input.paths.evidenceRoot } : run.logs
63
+ });
64
+ return [];
65
+ } catch (error) {
66
+ return [sceneWarningDiagnostic("scene.evidence_run_update_failed", `Evidence artifacts were written but run.json could not be updated. ${error instanceof Error ? error.message : String(error ?? "")}`.trim(), "run.json")];
67
+ }
68
+ }
69
+ export {
70
+ appendTreeseedSceneEvidencePaths,
71
+ formatTreeseedSceneEvidenceMarkdownReport,
72
+ writeTreeseedSceneEvidenceReport
73
+ };
@@ -0,0 +1,16 @@
1
+ import type { TreeseedSceneEvidenceBundlePolicy, TreeseedSceneEvidenceManifest, TreeseedSceneEvidenceOptions, TreeseedSceneEvidencePaths, TreeseedSceneEvidenceReport, TreeseedSceneEvidenceTarget, TreeseedSceneManifest, TreeseedSceneRunReport, TreeseedSceneTimelineEvent } from './types.js';
2
+ export declare function buildTreeseedSceneEvidenceManifest(input: {
3
+ scene: TreeseedSceneManifest;
4
+ run: TreeseedSceneRunReport;
5
+ timeline: TreeseedSceneTimelineEvent[];
6
+ runRoot: string;
7
+ target?: TreeseedSceneEvidenceTarget;
8
+ bundlePolicy?: TreeseedSceneEvidenceBundlePolicy;
9
+ bundle?: TreeseedSceneEvidenceBundlePolicy;
10
+ timestamp?: string;
11
+ }): TreeseedSceneEvidenceManifest;
12
+ export declare function writeTreeseedSceneEvidence(input: {
13
+ runRoot: string;
14
+ manifest: TreeseedSceneEvidenceManifest;
15
+ }): TreeseedSceneEvidencePaths;
16
+ export declare function generateTreeseedSceneEvidence(input: TreeseedSceneEvidenceOptions): TreeseedSceneEvidenceReport;