@treeseed/sdk 0.10.28 → 0.12.4

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 (509) hide show
  1. package/README.md +213 -7
  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 +118 -59
  27. package/dist/capacity-provider.js +235 -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 +3 -2
  36. package/dist/control-plane.js +38 -13
  37. package/dist/copilot.d.ts +3 -0
  38. package/dist/copilot.js +16 -1
  39. package/dist/d1-http.d.ts +1 -1
  40. package/dist/d1-store.d.ts +32 -57
  41. package/dist/d1-store.js +115 -318
  42. package/dist/db/d1.d.ts +1 -232
  43. package/dist/db/index.d.ts +3 -3
  44. package/dist/db/market-schema.d.ts +50900 -11018
  45. package/dist/db/market-schema.js +2313 -467
  46. package/dist/db/node-sqlite.d.ts +1 -232
  47. package/dist/db/node-sqlite.js +7 -2
  48. package/dist/db/schema.d.ts +0 -462
  49. package/dist/db/schema.js +2 -22
  50. package/dist/dispatch.d.ts +1 -1
  51. package/dist/dispatch.js +0 -11
  52. package/dist/fixture-support.js +52 -4
  53. package/dist/governance.d.ts +133 -0
  54. package/dist/governance.js +285 -0
  55. package/dist/graph/build.d.ts +2 -2
  56. package/dist/graph/context-query-contracts.d.ts +1 -1
  57. package/dist/graph/dsl.d.ts +1 -1
  58. package/dist/graph/query.d.ts +4 -4
  59. package/dist/graph/ranking.d.ts +1 -1
  60. package/dist/graph/schema.d.ts +1 -1
  61. package/dist/graph.d.ts +11 -11
  62. package/dist/guarantees/index.d.ts +425 -0
  63. package/dist/guarantees/index.js +1146 -0
  64. package/dist/hosting/apps.d.ts +12 -0
  65. package/dist/hosting/apps.js +107 -0
  66. package/dist/hosting/builtins.d.ts +25 -0
  67. package/dist/hosting/builtins.js +602 -0
  68. package/dist/hosting/contracts.d.ts +208 -0
  69. package/dist/hosting/contracts.js +0 -0
  70. package/dist/hosting/graph.d.ts +195 -0
  71. package/dist/hosting/graph.js +1092 -0
  72. package/dist/hosting/index.d.ts +4 -0
  73. package/dist/hosting/index.js +4 -0
  74. package/dist/index.d.ts +88 -67
  75. package/dist/index.js +142 -14
  76. package/dist/local-dev/managed-dev.d.ts +85 -0
  77. package/dist/local-dev/managed-dev.js +368 -0
  78. package/dist/managed-dependencies.d.ts +9 -0
  79. package/dist/managed-dependencies.js +10 -9
  80. package/dist/market-client.d.ts +327 -9
  81. package/dist/market-client.js +464 -20
  82. package/dist/model-registry.d.ts +1 -1
  83. package/dist/model-registry.js +19 -19
  84. package/dist/operations/agent-tools.d.ts +2 -11
  85. package/dist/operations/agent-tools.js +2 -14
  86. package/dist/operations/providers/default.d.ts +1 -1
  87. package/dist/operations/providers/default.js +20 -37
  88. package/dist/operations/repository-operations.d.ts +26 -2
  89. package/dist/operations/repository-operations.js +159 -1
  90. package/dist/operations/runtime.d.ts +3 -3
  91. package/dist/operations/services/bootstrap-runner.d.ts +4 -2
  92. package/dist/operations/services/bootstrap-runner.js +22 -2
  93. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  94. package/dist/operations/services/build-warning-policy.js +81 -82
  95. package/dist/operations/services/commit-message-provider.js +4 -4
  96. package/dist/operations/services/config-runtime.d.ts +83 -24
  97. package/dist/operations/services/config-runtime.js +449 -130
  98. package/dist/operations/services/deploy.d.ts +106 -624
  99. package/dist/operations/services/deploy.js +746 -263
  100. package/dist/operations/services/deployment-readiness.d.ts +30 -0
  101. package/dist/operations/services/deployment-readiness.js +206 -0
  102. package/dist/operations/services/git-remote-policy.js +12 -4
  103. package/dist/operations/services/git-runner.d.ts +66 -0
  104. package/dist/operations/services/git-runner.js +479 -0
  105. package/dist/operations/services/git-workflow.d.ts +45 -6
  106. package/dist/operations/services/git-workflow.js +251 -23
  107. package/dist/operations/services/github-actions-verification.d.ts +4 -1
  108. package/dist/operations/services/github-actions-verification.js +12 -3
  109. package/dist/operations/services/github-api.js +22 -6
  110. package/dist/operations/services/github-automation.d.ts +4 -4
  111. package/dist/operations/services/github-automation.js +19 -21
  112. package/dist/operations/services/github-credentials.d.ts +13 -0
  113. package/dist/operations/services/github-credentials.js +59 -0
  114. package/dist/operations/services/hosted-service-checks.d.ts +81 -0
  115. package/dist/operations/services/hosted-service-checks.js +478 -0
  116. package/dist/operations/services/hosting-audit.d.ts +2 -2
  117. package/dist/operations/services/hosting-audit.js +7 -7
  118. package/dist/operations/services/hub-launch.d.ts +1 -1
  119. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  120. package/dist/operations/services/hub-provider-launch.js +22 -17
  121. package/dist/operations/services/live-hosted-service-checks.d.ts +26 -0
  122. package/dist/operations/services/live-hosted-service-checks.js +463 -0
  123. package/dist/operations/services/local-dev.js +0 -1
  124. package/dist/operations/services/managed-host-security.d.ts +1 -1
  125. package/dist/operations/services/managed-host-security.js +1 -1
  126. package/dist/operations/services/managed-repositories.d.ts +37 -0
  127. package/dist/operations/services/managed-repositories.js +177 -0
  128. package/dist/operations/services/operations-runner-smoke.d.ts +31 -0
  129. package/dist/operations/services/operations-runner-smoke.js +198 -0
  130. package/dist/operations/services/package-adapters.d.ts +170 -0
  131. package/dist/operations/services/package-adapters.js +859 -0
  132. package/dist/operations/services/package-reference-policy.d.ts +13 -88
  133. package/dist/operations/services/package-reference-policy.js +96 -215
  134. package/dist/operations/services/project-host-operations.d.ts +4 -4
  135. package/dist/operations/services/project-platform.d.ts +57 -173
  136. package/dist/operations/services/project-platform.js +80 -111
  137. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  138. package/dist/operations/services/project-web-monitor.js +122 -5
  139. package/dist/operations/services/railway-api.d.ts +117 -5
  140. package/dist/operations/services/railway-api.js +915 -93
  141. package/dist/operations/services/railway-deploy.d.ts +30 -112
  142. package/dist/operations/services/railway-deploy.js +521 -961
  143. package/dist/operations/services/release-history.js +3 -4
  144. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  145. package/dist/operations/services/release-proof-ledger.js +81 -0
  146. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  147. package/dist/operations/services/release-proof-planner.js +195 -0
  148. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  149. package/dist/operations/services/release-proof-runner.js +169 -0
  150. package/dist/operations/services/release-proof.d.ts +81 -0
  151. package/dist/operations/services/release-proof.js +79 -0
  152. package/dist/operations/services/repository-save-orchestrator.d.ts +8 -7
  153. package/dist/operations/services/repository-save-orchestrator.js +604 -212
  154. package/dist/operations/services/runtime-paths.d.ts +1 -3
  155. package/dist/operations/services/runtime-paths.js +0 -4
  156. package/dist/operations/services/runtime-tools.d.ts +1 -191
  157. package/dist/operations/services/runtime-tools.js +4 -443
  158. package/dist/operations/services/save-deploy-preflight.js +9 -1
  159. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  160. package/dist/operations/services/template-host-bindings.js +3 -2
  161. package/dist/operations/services/template-registry.d.ts +6 -6
  162. package/dist/operations/services/template-registry.js +33 -14
  163. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  164. package/dist/operations/services/verification-cache.d.ts +25 -0
  165. package/dist/operations/services/verification-cache.js +71 -0
  166. package/dist/operations/services/workflow-timing.d.ts +25 -0
  167. package/dist/operations/services/workflow-timing.js +79 -0
  168. package/dist/operations/services/workspace-dependency-mode.js +50 -5
  169. package/dist/operations/services/workspace-preflight.js +8 -8
  170. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  171. package/dist/operations/services/workspace-save.d.ts +1 -0
  172. package/dist/operations/services/workspace-save.js +42 -19
  173. package/dist/operations/services/workspace-tools.js +42 -7
  174. package/dist/operations-registry.d.ts +1 -1
  175. package/dist/operations-registry.js +5 -6
  176. package/dist/operations-types.d.ts +1 -1
  177. package/dist/operations.d.ts +17 -11
  178. package/dist/operations.js +57 -3
  179. package/dist/platform/book-export.js +2 -0
  180. package/dist/platform/books-data.d.ts +1 -1
  181. package/dist/platform/config.d.ts +27 -0
  182. package/dist/platform/config.js +100 -0
  183. package/dist/platform/content-runtime-source.d.ts +54 -0
  184. package/dist/platform/content-runtime-source.js +169 -0
  185. package/dist/platform/contracts.d.ts +38 -2
  186. package/dist/platform/deploy-config.d.ts +1 -1
  187. package/dist/platform/deploy-config.js +80 -9
  188. package/dist/platform/deploy-runtime.d.ts +1 -1
  189. package/dist/platform/desired-state.d.ts +63 -0
  190. package/dist/platform/desired-state.js +1021 -0
  191. package/dist/platform/env.yaml +568 -45
  192. package/dist/platform/environment.d.ts +3 -2
  193. package/dist/platform/environment.js +122 -21
  194. package/dist/platform/local-content-materialization.d.ts +9 -0
  195. package/dist/platform/local-content-materialization.js +212 -0
  196. package/dist/platform/plugin.d.ts +13 -4
  197. package/dist/platform/plugins/runtime.d.ts +3 -3
  198. package/dist/platform/plugins/runtime.js +62 -1
  199. package/dist/platform/plugins.d.ts +6 -6
  200. package/dist/platform/published-content-pipeline.d.ts +3 -3
  201. package/dist/platform/published-content-pipeline.js +5 -1
  202. package/dist/platform/published-content.d.ts +4 -3
  203. package/dist/platform/site-config-schema.d.ts +1 -0
  204. package/dist/platform/site-config-schema.js +4 -1
  205. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  206. package/dist/platform/tenant-config.d.ts +1 -1
  207. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  208. package/dist/platform/utils/site-config-schema.js +400 -461
  209. package/dist/platform-operation-store.d.ts +1 -1
  210. package/dist/platform-operation-store.js +2 -2
  211. package/dist/platform-operations.js +1 -1
  212. package/dist/plugin-default.d.ts +1 -1
  213. package/dist/plugin-default.js +27 -12
  214. package/dist/project-import.d.ts +91 -0
  215. package/dist/project-import.js +257 -0
  216. package/dist/project-workflow.d.ts +1 -1
  217. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  218. package/dist/reconcile/bootstrap-systems.js +5 -5
  219. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  220. package/dist/reconcile/builtin-adapters.js +3190 -429
  221. package/dist/reconcile/contracts.d.ts +23 -6
  222. package/dist/reconcile/desired-state.d.ts +2 -192
  223. package/dist/reconcile/desired-state.js +29 -38
  224. package/dist/reconcile/engine.d.ts +61 -395
  225. package/dist/reconcile/engine.js +229 -44
  226. package/dist/reconcile/index.d.ts +10 -8
  227. package/dist/reconcile/index.js +2 -0
  228. package/dist/reconcile/live-acceptance.d.ts +100 -0
  229. package/dist/reconcile/live-acceptance.js +2027 -0
  230. package/dist/reconcile/platform.d.ts +104 -0
  231. package/dist/reconcile/platform.js +100 -0
  232. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  233. package/dist/reconcile/providers/docker-private.js +101 -0
  234. package/dist/reconcile/providers/github-private.d.ts +65 -0
  235. package/dist/reconcile/providers/github-private.js +119 -0
  236. package/dist/reconcile/providers/local-private.d.ts +28 -0
  237. package/dist/reconcile/providers/local-private.js +75 -0
  238. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  239. package/dist/reconcile/providers/railway-iac.js +275 -0
  240. package/dist/reconcile/providers/release-private.d.ts +92 -0
  241. package/dist/reconcile/providers/release-private.js +152 -0
  242. package/dist/reconcile/registry.d.ts +2 -2
  243. package/dist/reconcile/registry.js +16 -1
  244. package/dist/reconcile/state.d.ts +1 -1
  245. package/dist/reconcile/state.js +7 -44
  246. package/dist/reconcile/units.d.ts +1 -1
  247. package/dist/reconcile/units.js +9 -3
  248. package/dist/remote.d.ts +6 -6
  249. package/dist/scenes/artifacts.d.ts +16 -0
  250. package/dist/scenes/artifacts.js +61 -0
  251. package/dist/scenes/auth.d.ts +2 -0
  252. package/dist/scenes/auth.js +28 -0
  253. package/dist/scenes/base-url.d.ts +12 -0
  254. package/dist/scenes/base-url.js +123 -0
  255. package/dist/scenes/builtin-plugins.d.ts +2 -0
  256. package/dist/scenes/builtin-plugins.js +447 -0
  257. package/dist/scenes/checkpoints.d.ts +14 -0
  258. package/dist/scenes/checkpoints.js +33 -0
  259. package/dist/scenes/device-matrix.d.ts +2 -0
  260. package/dist/scenes/device-matrix.js +97 -0
  261. package/dist/scenes/devices.d.ts +11 -0
  262. package/dist/scenes/devices.js +22 -0
  263. package/dist/scenes/diagnostics.d.ts +5 -0
  264. package/dist/scenes/diagnostics.js +22 -0
  265. package/dist/scenes/diagram-providers.d.ts +2 -0
  266. package/dist/scenes/diagram-providers.js +181 -0
  267. package/dist/scenes/diagram-validation.d.ts +22 -0
  268. package/dist/scenes/diagram-validation.js +74 -0
  269. package/dist/scenes/environment.d.ts +2 -0
  270. package/dist/scenes/environment.js +65 -0
  271. package/dist/scenes/evidence-bundle.d.ts +5 -0
  272. package/dist/scenes/evidence-bundle.js +42 -0
  273. package/dist/scenes/evidence-report.d.ts +10 -0
  274. package/dist/scenes/evidence-report.js +73 -0
  275. package/dist/scenes/evidence.d.ts +16 -0
  276. package/dist/scenes/evidence.js +277 -0
  277. package/dist/scenes/index.d.ts +48 -0
  278. package/dist/scenes/index.js +312 -0
  279. package/dist/scenes/inspect.d.ts +9 -0
  280. package/dist/scenes/inspect.js +64 -0
  281. package/dist/scenes/loader.d.ts +3 -0
  282. package/dist/scenes/loader.js +38 -0
  283. package/dist/scenes/logs.d.ts +2 -0
  284. package/dist/scenes/logs.js +47 -0
  285. package/dist/scenes/operations.d.ts +3 -0
  286. package/dist/scenes/operations.js +128 -0
  287. package/dist/scenes/phase0.d.ts +9 -0
  288. package/dist/scenes/phase0.js +637 -0
  289. package/dist/scenes/planner.d.ts +12 -0
  290. package/dist/scenes/planner.js +166 -0
  291. package/dist/scenes/playwright-adapter.d.ts +2 -0
  292. package/dist/scenes/playwright-adapter.js +63 -0
  293. package/dist/scenes/plugins.d.ts +5 -0
  294. package/dist/scenes/plugins.js +115 -0
  295. package/dist/scenes/progress.d.ts +17 -0
  296. package/dist/scenes/progress.js +24 -0
  297. package/dist/scenes/publish-destinations.d.ts +12 -0
  298. package/dist/scenes/publish-destinations.js +99 -0
  299. package/dist/scenes/publish-plan-report.d.ts +10 -0
  300. package/dist/scenes/publish-plan-report.js +70 -0
  301. package/dist/scenes/publish-plan.d.ts +15 -0
  302. package/dist/scenes/publish-plan.js +248 -0
  303. package/dist/scenes/publish-redaction.d.ts +16 -0
  304. package/dist/scenes/publish-redaction.js +148 -0
  305. package/dist/scenes/publish-release-record.d.ts +13 -0
  306. package/dist/scenes/publish-release-record.js +34 -0
  307. package/dist/scenes/publish-report.d.ts +10 -0
  308. package/dist/scenes/publish-report.js +67 -0
  309. package/dist/scenes/publish.d.ts +16 -0
  310. package/dist/scenes/publish.js +298 -0
  311. package/dist/scenes/registry.d.ts +12 -0
  312. package/dist/scenes/registry.js +65 -0
  313. package/dist/scenes/remotion-adapter.d.ts +3 -0
  314. package/dist/scenes/remotion-adapter.js +94 -0
  315. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  316. package/dist/scenes/remotion-composition-registry.js +12 -0
  317. package/dist/scenes/remotion-compositions.d.ts +15 -0
  318. package/dist/scenes/remotion-compositions.js +464 -0
  319. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  320. package/dist/scenes/remotion-diagrams.js +188 -0
  321. package/dist/scenes/remotion-input.d.ts +13 -0
  322. package/dist/scenes/remotion-input.js +291 -0
  323. package/dist/scenes/remotion-visuals.d.ts +29 -0
  324. package/dist/scenes/remotion-visuals.js +198 -0
  325. package/dist/scenes/render-media-assets.d.ts +9 -0
  326. package/dist/scenes/render-media-assets.js +117 -0
  327. package/dist/scenes/render-report.d.ts +10 -0
  328. package/dist/scenes/render-report.js +27 -0
  329. package/dist/scenes/render.d.ts +2 -0
  330. package/dist/scenes/render.js +218 -0
  331. package/dist/scenes/reporter.d.ts +3 -0
  332. package/dist/scenes/reporter.js +101 -0
  333. package/dist/scenes/resume.d.ts +2 -0
  334. package/dist/scenes/resume.js +79 -0
  335. package/dist/scenes/runner.d.ts +2 -0
  336. package/dist/scenes/runner.js +674 -0
  337. package/dist/scenes/schema.d.ts +6 -0
  338. package/dist/scenes/schema.js +994 -0
  339. package/dist/scenes/seed.d.ts +2 -0
  340. package/dist/scenes/seed.js +83 -0
  341. package/dist/scenes/segments.d.ts +15 -0
  342. package/dist/scenes/segments.js +79 -0
  343. package/dist/scenes/selectors.d.ts +3 -0
  344. package/dist/scenes/selectors.js +21 -0
  345. package/dist/scenes/timeline.d.ts +11 -0
  346. package/dist/scenes/timeline.js +26 -0
  347. package/dist/scenes/timeouts.d.ts +6 -0
  348. package/dist/scenes/timeouts.js +17 -0
  349. package/dist/scenes/training-captions.d.ts +14 -0
  350. package/dist/scenes/training-captions.js +98 -0
  351. package/dist/scenes/training-report.d.ts +10 -0
  352. package/dist/scenes/training-report.js +78 -0
  353. package/dist/scenes/training-transcript.d.ts +24 -0
  354. package/dist/scenes/training-transcript.js +204 -0
  355. package/dist/scenes/training.d.ts +10 -0
  356. package/dist/scenes/training.js +134 -0
  357. package/dist/scenes/types.d.ts +1872 -0
  358. package/dist/scenes/types.js +8 -0
  359. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  360. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  361. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  362. package/dist/scenes/visual-audit-fixtures.js +210 -0
  363. package/dist/scenes/visual-audit-report.d.ts +11 -0
  364. package/dist/scenes/visual-audit-report.js +85 -0
  365. package/dist/scenes/visual-audit-review.d.ts +23 -0
  366. package/dist/scenes/visual-audit-review.js +829 -0
  367. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  368. package/dist/scenes/visual-audit-routes.js +308 -0
  369. package/dist/scenes/visual-audit.d.ts +3 -0
  370. package/dist/scenes/visual-audit.js +596 -0
  371. package/dist/scripts/build-dist.js +154 -40
  372. package/dist/scripts/check-build-warnings.js +42 -53
  373. package/dist/scripts/cleanup-markdown.js +1 -1
  374. package/dist/scripts/cli-test-fixtures.js +24 -28
  375. package/dist/scripts/deployment-readiness.js +20 -0
  376. package/dist/scripts/generate-treedx-openapi-types.js +186 -0
  377. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  378. package/dist/scripts/operations-runner-smoke.js +16 -0
  379. package/dist/scripts/package-tools.js +12 -1
  380. package/dist/scripts/prepare.js +3 -7
  381. package/dist/scripts/release-verify.js +6 -6
  382. package/dist/scripts/run-fixture-astro-command.js +1 -1
  383. package/dist/scripts/template-catalog.test.js +68 -82
  384. package/dist/scripts/tenant-dev.js +0 -10
  385. package/dist/scripts/tenant-workflow-action.js +10 -1
  386. package/dist/scripts/test-cloudflare-local.js +1 -1
  387. package/dist/scripts/test-scaffold.js +0 -1
  388. package/dist/scripts/test-smoke.js +3 -3
  389. package/dist/scripts/treeseed-build-dist.js +4 -7
  390. package/dist/scripts/treeseed-release-verify.js +1 -1
  391. package/dist/scripts/verify-driver.js +30 -21
  392. package/dist/scripts/workflow-commands.test.js +18 -27
  393. package/dist/scripts/workspace-command-e2e.js +1 -1
  394. package/dist/scripts/workspace-lint.js +6 -0
  395. package/dist/scripts/workspace-release-test.js +90 -1
  396. package/dist/scripts/workspace-test.js +6 -0
  397. package/dist/sdk-dispatch.d.ts +1 -1
  398. package/dist/sdk-dispatch.js +0 -16
  399. package/dist/sdk-fields.d.ts +1 -1
  400. package/dist/sdk-filters.d.ts +1 -1
  401. package/dist/sdk-types.d.ts +1352 -116
  402. package/dist/sdk-types.js +413 -2
  403. package/dist/sdk.d.ts +106 -100
  404. package/dist/sdk.js +211 -51
  405. package/dist/secrets-capability.d.ts +421 -0
  406. package/dist/secrets-capability.js +530 -0
  407. package/dist/seeds/normalize.js +1 -0
  408. package/dist/seeds/planner.js +38 -0
  409. package/dist/seeds/schema.js +293 -4
  410. package/dist/seeds/types.d.ts +60 -0
  411. package/dist/seeds/types.js +9 -1
  412. package/dist/service-credentials.d.ts +54 -0
  413. package/dist/service-credentials.js +112 -0
  414. package/dist/stores/cursor-store.d.ts +2 -2
  415. package/dist/stores/envelopes.d.ts +1 -1
  416. package/dist/stores/helpers.d.ts +1 -1
  417. package/dist/stores/lease-store.d.ts +2 -2
  418. package/dist/stores/message-store.d.ts +2 -2
  419. package/dist/stores/operational-store.d.ts +3 -26
  420. package/dist/stores/operational-store.js +0 -225
  421. package/dist/stores/project-workflow-store.d.ts +2 -2
  422. package/dist/stores/run-store.d.ts +2 -3
  423. package/dist/stores/run-store.js +0 -98
  424. package/dist/stores/subscription-store.d.ts +2 -3
  425. package/dist/stores/subscription-store.js +0 -100
  426. package/dist/template-catalog.d.ts +1 -1
  427. package/dist/template-launch-requirements.d.ts +2 -2
  428. package/dist/template-launch-requirements.js +9 -0
  429. package/dist/template-launch-ui.d.ts +2 -2
  430. package/dist/treedx/adapters.d.ts +6 -0
  431. package/dist/treedx/adapters.js +36 -0
  432. package/dist/treedx/client.d.ts +222 -0
  433. package/dist/treedx/client.js +871 -0
  434. package/dist/treedx/errors.d.ts +13 -0
  435. package/dist/treedx/errors.js +17 -0
  436. package/dist/treedx/federated-client.d.ts +27 -0
  437. package/dist/treedx/federated-client.js +158 -0
  438. package/dist/treedx/generated/openapi-types.d.ts +3558 -0
  439. package/dist/treedx/generated/openapi-types.js +0 -0
  440. package/dist/treedx/graph-adapter.d.ts +33 -0
  441. package/dist/treedx/graph-adapter.js +156 -0
  442. package/dist/treedx/index.d.ts +14 -0
  443. package/dist/treedx/index.js +48 -0
  444. package/dist/treedx/market-integration.d.ts +27 -0
  445. package/dist/treedx/market-integration.js +131 -0
  446. package/dist/treedx/ports.d.ts +166 -0
  447. package/dist/treedx/ports.js +231 -0
  448. package/dist/treedx/query-adapter.d.ts +19 -0
  449. package/dist/treedx/query-adapter.js +62 -0
  450. package/dist/treedx/registry-client.d.ts +11 -0
  451. package/dist/treedx/registry-client.js +19 -0
  452. package/dist/treedx/repository-adapter.d.ts +45 -0
  453. package/dist/treedx/repository-adapter.js +319 -0
  454. package/dist/treedx/sdk-integration.d.ts +27 -0
  455. package/dist/treedx/sdk-integration.js +63 -0
  456. package/dist/treedx/types.d.ts +1084 -0
  457. package/dist/treedx/types.js +8 -0
  458. package/dist/treedx/workspace-adapter.d.ts +27 -0
  459. package/dist/treedx/workspace-adapter.js +65 -0
  460. package/dist/treedx-backends.d.ts +220 -0
  461. package/dist/treedx-backends.js +634 -0
  462. package/dist/treedx-client.d.ts +89 -0
  463. package/dist/treedx-client.js +184 -0
  464. package/dist/treeseed/services/compose.yml +2 -3
  465. package/dist/treeseed/template-catalog/catalog.fixture.json +27 -27
  466. package/dist/types/agents.d.ts +256 -0
  467. package/dist/types/agents.js +42 -1
  468. package/dist/verification.d.ts +1 -0
  469. package/dist/verification.js +143 -14
  470. package/dist/workflow/operations.d.ts +580 -523
  471. package/dist/workflow/operations.js +2084 -1279
  472. package/dist/workflow/policy.js +19 -7
  473. package/dist/workflow/runs.d.ts +9 -3
  474. package/dist/workflow/runs.js +66 -26
  475. package/dist/workflow/session.d.ts +4 -1
  476. package/dist/workflow/session.js +50 -10
  477. package/dist/workflow/worktrees.d.ts +6 -2
  478. package/dist/workflow/worktrees.js +98 -15
  479. package/dist/workflow-state.d.ts +17 -4
  480. package/dist/workflow-state.js +68 -41
  481. package/dist/workflow-support.d.ts +26 -17
  482. package/dist/workflow-support.js +84 -24
  483. package/dist/workflow.d.ts +51 -16
  484. package/dist/workflow.js +19 -7
  485. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  486. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  487. package/drizzle/market/0004_treedx_market_integration.sql +99 -0
  488. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  489. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  490. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  491. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  492. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  493. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  494. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  495. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  496. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  497. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  498. package/package.json +106 -18
  499. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  500. package/templates/github/deploy-web.workflow.yml +49 -12
  501. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  502. package/dist/operations/services/mailpit-runtime.js +0 -67
  503. package/dist/operations/services/release-candidate.d.ts +0 -41
  504. package/dist/operations/services/release-candidate.js +0 -616
  505. package/dist/scripts/ensure-mailpit.js +0 -48
  506. package/dist/scripts/logs-mailpit.js +0 -2
  507. package/dist/scripts/run-ts.js +0 -45
  508. package/dist/scripts/stop-mailpit.js +0 -5
  509. 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;