@treeseed/sdk 0.11.0 → 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 (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 +627 -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 +63 -0
  180. package/dist/platform/desired-state.js +1021 -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,166 @@
1
+ import { hasTreeseedSceneErrors, sceneErrorDiagnostic } from "./diagnostics.js";
2
+ import { loadTreeseedSceneDocument } from "./loader.js";
3
+ import { planTreeseedSceneArtifactPaths } from "./phase0.js";
4
+ import { treeseedSceneDiagramPluginId, validateTreeseedSceneDiagrams } from "./diagram-validation.js";
5
+ import {
6
+ listBuiltInTreeseedSceneActions,
7
+ listBuiltInTreeseedSceneAssertions,
8
+ listBuiltInTreeseedSceneRenderers,
9
+ resolveTreeseedScenePlugins
10
+ } from "./registry.js";
11
+ import { parseTreeseedSceneManifest, sceneActionKind, sceneExpectationKinds } from "./schema.js";
12
+ import {
13
+ TREESEED_SCENE_ENVIRONMENTS
14
+ } from "./types.js";
15
+ function splitDiagnostics(diagnostics, severity) {
16
+ return diagnostics.filter((diagnostic) => diagnostic.severity === severity);
17
+ }
18
+ function resolveEnvironment(value, fallback) {
19
+ return value ?? fallback;
20
+ }
21
+ function chapterForStep(stepId, chapters) {
22
+ let current = null;
23
+ for (const chapter of chapters) {
24
+ if (chapter.startsAt === stepId) current = chapter.id;
25
+ }
26
+ return current;
27
+ }
28
+ function rendererIds(scene) {
29
+ return [
30
+ ...scene.render.remotion ? ["remotion"] : [],
31
+ ...scene.overlays.map((overlay) => overlay.renderer),
32
+ ...scene.diagrams.map((diagram) => diagram.renderer)
33
+ ].filter(Boolean);
34
+ }
35
+ function trainingOutputIds(scene) {
36
+ if (!scene.training.enabled) return [];
37
+ return [
38
+ ...scene.training.captions.enabled ? ["captions"] : [],
39
+ ...scene.training.transcript.enabled ? ["transcript"] : [],
40
+ ...scene.training.narration.enabled ? ["narration"] : [],
41
+ ...scene.training.glossary.enabled ? ["glossary"] : [],
42
+ ...scene.training.chapterClips.enabled ? ["chapter-clips"] : []
43
+ ];
44
+ }
45
+ function enabledPluginIds(input) {
46
+ return [.../* @__PURE__ */ new Set([
47
+ ...input.actionIds.map((id) => input.registry.actionPlugins.get(id)).filter((id) => Boolean(id)),
48
+ ...input.assertionIds.map((id) => input.registry.assertionPlugins.get(id)).filter((id) => Boolean(id)),
49
+ ...input.rendererIds.map((id) => input.registry.rendererPlugins.get(id)).filter((id) => Boolean(id)),
50
+ ...(input.diagramIds ?? []).map((id) => treeseedSceneDiagramPluginId({ component: id, registry: input.registry })).filter((id) => Boolean(id)),
51
+ ...(input.trainingOutputIds ?? []).length > 0 ? ["treeseed.scene.training.deterministic"] : []
52
+ ])].sort();
53
+ }
54
+ function validateTreeseedScene(input) {
55
+ const loaded = loadTreeseedSceneDocument(input.projectRoot, input.scene);
56
+ const diagnostics = [...loaded.diagnostics];
57
+ const scene = diagnostics.length > 0 ? null : parseTreeseedSceneManifest(loaded.value, diagnostics);
58
+ return {
59
+ ok: scene !== null && !hasTreeseedSceneErrors(diagnostics),
60
+ scenePath: loaded.path,
61
+ scene: scene && !hasTreeseedSceneErrors(diagnostics) ? scene : null,
62
+ diagnostics
63
+ };
64
+ }
65
+ function planTreeseedScene(input) {
66
+ const validation = validateTreeseedScene(input);
67
+ const pluginResolution = resolveTreeseedScenePlugins();
68
+ const diagnostics = [...validation.diagnostics];
69
+ const scene = validation.scene;
70
+ const diagramDiagnostics = scene ? validateTreeseedSceneDiagrams({ scene, registry: pluginResolution.registry }) : [];
71
+ if (input.environment && !TREESEED_SCENE_ENVIRONMENTS.includes(input.environment)) {
72
+ diagnostics.push(sceneErrorDiagnostic("scene.invalid_environment", `Unknown environment: ${input.environment}.`, "environment"));
73
+ }
74
+ const environment = resolveEnvironment(input.environment, scene?.target.environment ?? "local");
75
+ const combinedDiagnostics = [...diagnostics, ...diagramDiagnostics, ...pluginResolution.diagnostics];
76
+ const blockers = splitDiagnostics(combinedDiagnostics, "error");
77
+ const warnings = splitDiagnostics(combinedDiagnostics, "warning");
78
+ if (!scene || blockers.length > 0) {
79
+ const allActionIds = listBuiltInTreeseedSceneActions().map((action) => action.id);
80
+ const allAssertionIds = listBuiltInTreeseedSceneAssertions().map((assertion) => assertion.id);
81
+ const allRendererIds = listBuiltInTreeseedSceneRenderers().map((renderer) => renderer.id);
82
+ return {
83
+ ok: false,
84
+ phase: 1,
85
+ scenePath: validation.scenePath,
86
+ sceneId: scene?.id ?? null,
87
+ title: scene?.title ?? null,
88
+ environment,
89
+ baseUrl: scene?.target.baseUrl ?? "auto",
90
+ browser: scene?.target.browser ?? null,
91
+ viewport: scene?.target.viewport ?? null,
92
+ workflowSteps: [],
93
+ enabledActions: allActionIds,
94
+ enabledAssertions: allAssertionIds,
95
+ enabledRenderers: allRendererIds,
96
+ enabledDiagrams: scene?.diagrams.map((diagram) => diagram.component).sort() ?? [],
97
+ enabledDiagramPlugins: scene ? [...new Set(scene.diagrams.map((diagram) => treeseedSceneDiagramPluginId({ component: diagram.component, registry: pluginResolution.registry })).filter((id) => Boolean(id)))].sort() : [],
98
+ enabledTrainingOutputs: scene ? trainingOutputIds(scene) : [],
99
+ enabledNarrationPlugins: scene?.training.enabled && scene.training.narration.enabled ? ["treeseed.scene.training.deterministic"] : [],
100
+ enabledDeviceProfiles: scene?.devices.profiles.map((profile) => profile.id).sort() ?? [],
101
+ enabledPlugins: enabledPluginIds({ actionIds: allActionIds, assertionIds: allAssertionIds, rendererIds: allRendererIds, diagramIds: scene?.diagrams.map((diagram) => diagram.component) ?? [], trainingOutputIds: scene ? trainingOutputIds(scene) : [], registry: pluginResolution.registry }),
102
+ plugins: pluginResolution.summaries,
103
+ pluginDiagnostics: pluginResolution.diagnostics,
104
+ artifactPaths: null,
105
+ diagnostics: combinedDiagnostics,
106
+ warnings,
107
+ blockers,
108
+ estimatedDurationSeconds: null
109
+ };
110
+ }
111
+ let currentChapter = null;
112
+ const workflowSteps = scene.workflow.map((step) => {
113
+ currentChapter = chapterForStep(step.id, scene.chapters) ?? currentChapter;
114
+ return {
115
+ id: step.id,
116
+ title: step.title,
117
+ actionKind: sceneActionKind(step.action),
118
+ assertionKinds: sceneExpectationKinds(step.expect),
119
+ chapterId: currentChapter,
120
+ demoOnly: step.demoOnly === true
121
+ };
122
+ });
123
+ const actionIds = [...new Set(workflowSteps.map((step) => step.actionKind))];
124
+ const assertionIds = [...new Set(workflowSteps.flatMap((step) => step.assertionKinds))];
125
+ const activeRendererIds = [...new Set(rendererIds(scene))];
126
+ const diagramIds = [...new Set(scene.diagrams.map((diagram) => diagram.component))].sort();
127
+ const diagramPluginIds = [...new Set(diagramIds.map((id) => treeseedSceneDiagramPluginId({ component: id, registry: pluginResolution.registry })).filter((id) => Boolean(id)))].sort();
128
+ const trainingOutputs = trainingOutputIds(scene);
129
+ return {
130
+ ok: true,
131
+ phase: 1,
132
+ scenePath: validation.scenePath,
133
+ sceneId: scene.id,
134
+ title: scene.title,
135
+ environment,
136
+ baseUrl: scene.target.baseUrl,
137
+ browser: scene.target.browser,
138
+ viewport: scene.target.viewport,
139
+ workflowSteps,
140
+ enabledActions: actionIds,
141
+ enabledAssertions: assertionIds,
142
+ enabledRenderers: activeRendererIds,
143
+ enabledDiagrams: diagramIds,
144
+ enabledDiagramPlugins: diagramPluginIds,
145
+ enabledTrainingOutputs: trainingOutputs,
146
+ enabledNarrationPlugins: scene.training.enabled && scene.training.narration.enabled ? ["treeseed.scene.training.deterministic"] : [],
147
+ enabledDeviceProfiles: scene.devices.profiles.map((profile) => profile.id).sort(),
148
+ enabledPlugins: enabledPluginIds({ actionIds, assertionIds, rendererIds: activeRendererIds, diagramIds, trainingOutputIds: trainingOutputs, registry: pluginResolution.registry }),
149
+ plugins: pluginResolution.summaries,
150
+ pluginDiagnostics: pluginResolution.diagnostics,
151
+ artifactPaths: planTreeseedSceneArtifactPaths({
152
+ workspaceRoot: input.projectRoot,
153
+ sceneId: scene.id,
154
+ runId: input.runId,
155
+ timestamp: input.timestamp
156
+ }),
157
+ diagnostics: combinedDiagnostics,
158
+ warnings,
159
+ blockers,
160
+ estimatedDurationSeconds: null
161
+ };
162
+ }
163
+ export {
164
+ planTreeseedScene,
165
+ validateTreeseedScene
166
+ };
@@ -0,0 +1,2 @@
1
+ import type { TreeseedSceneBrowserAdapter } from './types.js';
2
+ export declare function createPlaywrightTreeseedSceneBrowserAdapter(): TreeseedSceneBrowserAdapter;
@@ -0,0 +1,63 @@
1
+ function normalizePlaywrightError(error) {
2
+ const message = error instanceof Error ? error.message : String(error ?? "Unknown Playwright error.");
3
+ const missingBrowser = /Executable doesn't exist|browserType\.launch|playwright install/iu.test(message);
4
+ const tagged = new Error(message);
5
+ tagged.treeseedSceneCode = missingBrowser ? "scene.playwright_browser_missing" : "scene.playwright_unavailable";
6
+ return tagged;
7
+ }
8
+ function createPlaywrightTreeseedSceneBrowserAdapter() {
9
+ return {
10
+ async launch(input) {
11
+ let playwright;
12
+ try {
13
+ playwright = await import("playwright");
14
+ } catch (error) {
15
+ throw normalizePlaywrightError(error);
16
+ }
17
+ const browserType = playwright[input.browser];
18
+ if (!browserType) {
19
+ throw new Error(`Unsupported Playwright browser: ${input.browser}`);
20
+ }
21
+ try {
22
+ const browser = await browserType.launch();
23
+ const context = await browser.newContext({
24
+ viewport: input.viewport,
25
+ screen: input.viewport,
26
+ deviceScaleFactor: input.deviceScaleFactor ?? 1,
27
+ isMobile: input.isMobile ?? false,
28
+ hasTouch: input.hasTouch ?? false,
29
+ ...input.userAgent ? { userAgent: input.userAgent } : {},
30
+ ...input.recordVideoDir ? { recordVideo: { dir: input.recordVideoDir, size: input.videoSize ?? input.viewport } } : {}
31
+ });
32
+ const page = await context.newPage();
33
+ const video = page.video?.() ?? null;
34
+ return {
35
+ page,
36
+ async startTracing() {
37
+ await context.tracing.start({ screenshots: true, snapshots: true, sources: true });
38
+ },
39
+ async stopTracing(tracePath) {
40
+ await context.tracing.stop({ path: tracePath });
41
+ },
42
+ async videoPaths() {
43
+ if (!video) return [];
44
+ try {
45
+ return [await video.path()];
46
+ } catch {
47
+ return [];
48
+ }
49
+ },
50
+ async close() {
51
+ await context.close().catch(() => void 0);
52
+ await browser.close().catch(() => void 0);
53
+ }
54
+ };
55
+ } catch (error) {
56
+ throw normalizePlaywrightError(error);
57
+ }
58
+ }
59
+ };
60
+ }
61
+ export {
62
+ createPlaywrightTreeseedSceneBrowserAdapter
63
+ };
@@ -0,0 +1,5 @@
1
+ import type { TreeseedScenePlugin, TreeseedScenePluginRegistry, TreeseedScenePluginResolution, TreeseedScenePluginSummary, TreeseedSceneRuntimePluginContext, TreeseedSceneRuntimePluginContextInput } from './types.js';
2
+ export declare function createTreeseedScenePluginRegistry(plugins: TreeseedScenePlugin[]): TreeseedScenePluginRegistry;
3
+ export declare function summarizeTreeseedScenePlugins(plugins: TreeseedScenePlugin[]): TreeseedScenePluginSummary[];
4
+ export declare function createTreeseedSceneRuntimePluginContext(input: TreeseedSceneRuntimePluginContextInput): TreeseedSceneRuntimePluginContext;
5
+ export declare function pluginResolutionFromRegistry(registry: TreeseedScenePluginRegistry): TreeseedScenePluginResolution;
@@ -0,0 +1,115 @@
1
+ import { sceneErrorDiagnostic } from "./diagnostics.js";
2
+ import { resolveTreeseedSceneLocator } from "./selectors.js";
3
+ function categories(plugin) {
4
+ const values = [];
5
+ if (plugin.actions && Object.keys(plugin.actions).length > 0) values.push("action");
6
+ if (plugin.assertions && Object.keys(plugin.assertions).length > 0) values.push("assertion");
7
+ if (plugin.environment) values.push("environment");
8
+ if (plugin.captures && Object.keys(plugin.captures).length > 0) values.push("capture");
9
+ if (plugin.artifacts && Object.keys(plugin.artifacts).length > 0) values.push("artifact");
10
+ if (plugin.renderers && Object.keys(plugin.renderers).length > 0) values.push("renderer");
11
+ if (plugin.diagrams && Object.keys(plugin.diagrams).length > 0) values.push("diagram");
12
+ if (plugin.narration && Object.keys(plugin.narration).length > 0) values.push("narration");
13
+ return values;
14
+ }
15
+ function summary(plugin) {
16
+ return {
17
+ id: plugin.id,
18
+ version: plugin.version,
19
+ status: plugin.status,
20
+ categories: categories(plugin),
21
+ phase: plugin.phase,
22
+ summary: plugin.summary
23
+ };
24
+ }
25
+ function addEntries(input) {
26
+ for (const [id, entry] of Object.entries(input.entries ?? {})) {
27
+ if (input.map.has(id)) {
28
+ input.diagnostics.push(sceneErrorDiagnostic("scene.plugin_duplicate", `Duplicate ${input.category} plugin entry: ${id}.`, `plugins.${input.plugin.id}.${input.category}.${id}`));
29
+ continue;
30
+ }
31
+ input.map.set(id, entry);
32
+ input.ownerMap.set(id, input.plugin.id);
33
+ }
34
+ }
35
+ function createTreeseedScenePluginRegistry(plugins) {
36
+ const registry = {
37
+ plugins: [...plugins],
38
+ actions: /* @__PURE__ */ new Map(),
39
+ actionPlugins: /* @__PURE__ */ new Map(),
40
+ assertions: /* @__PURE__ */ new Map(),
41
+ assertionPlugins: /* @__PURE__ */ new Map(),
42
+ environmentProviders: [],
43
+ captures: /* @__PURE__ */ new Map(),
44
+ capturePlugins: /* @__PURE__ */ new Map(),
45
+ artifacts: /* @__PURE__ */ new Map(),
46
+ artifactPlugins: /* @__PURE__ */ new Map(),
47
+ renderers: /* @__PURE__ */ new Map(),
48
+ rendererPlugins: /* @__PURE__ */ new Map(),
49
+ diagrams: /* @__PURE__ */ new Map(),
50
+ diagramPlugins: /* @__PURE__ */ new Map(),
51
+ narration: /* @__PURE__ */ new Map(),
52
+ narrationPlugins: /* @__PURE__ */ new Map(),
53
+ diagnostics: []
54
+ };
55
+ const pluginIds = /* @__PURE__ */ new Set();
56
+ for (const plugin of registry.plugins) {
57
+ if (!plugin.id || !plugin.version || !plugin.summary) {
58
+ registry.diagnostics.push(sceneErrorDiagnostic("scene.plugin_invalid", "Plugin id, version, and summary are required.", `plugins.${plugin.id || "(unknown)"}`));
59
+ continue;
60
+ }
61
+ if (pluginIds.has(plugin.id)) {
62
+ registry.diagnostics.push(sceneErrorDiagnostic("scene.plugin_duplicate", `Duplicate plugin id: ${plugin.id}.`, `plugins.${plugin.id}`));
63
+ continue;
64
+ }
65
+ pluginIds.add(plugin.id);
66
+ if (plugin.environment) registry.environmentProviders.push(plugin.environment);
67
+ addEntries({ plugin, category: "action", entries: plugin.actions, map: registry.actions, ownerMap: registry.actionPlugins, diagnostics: registry.diagnostics });
68
+ addEntries({ plugin, category: "assertion", entries: plugin.assertions, map: registry.assertions, ownerMap: registry.assertionPlugins, diagnostics: registry.diagnostics });
69
+ addEntries({ plugin, category: "capture", entries: plugin.captures, map: registry.captures, ownerMap: registry.capturePlugins, diagnostics: registry.diagnostics });
70
+ addEntries({ plugin, category: "artifact", entries: plugin.artifacts, map: registry.artifacts, ownerMap: registry.artifactPlugins, diagnostics: registry.diagnostics });
71
+ addEntries({ plugin, category: "renderer", entries: plugin.renderers, map: registry.renderers, ownerMap: registry.rendererPlugins, diagnostics: registry.diagnostics });
72
+ addEntries({ plugin, category: "diagram", entries: plugin.diagrams, map: registry.diagrams, ownerMap: registry.diagramPlugins, diagnostics: registry.diagnostics });
73
+ addEntries({ plugin, category: "narration", entries: plugin.narration, map: registry.narration, ownerMap: registry.narrationPlugins, diagnostics: registry.diagnostics });
74
+ }
75
+ const diagramComponents = /* @__PURE__ */ new Map();
76
+ for (const [providerId, provider] of registry.diagrams.entries()) {
77
+ for (const component of Object.keys(provider.diagrams ?? {})) {
78
+ const owner = diagramComponents.get(component);
79
+ if (owner) {
80
+ registry.diagnostics.push(sceneErrorDiagnostic("scene.plugin_duplicate", `Duplicate diagram component id: ${component}.`, `plugins.${registry.diagramPlugins.get(providerId) ?? providerId}.diagram.${providerId}.${component}`));
81
+ continue;
82
+ }
83
+ diagramComponents.set(component, providerId);
84
+ }
85
+ }
86
+ return registry;
87
+ }
88
+ function summarizeTreeseedScenePlugins(plugins) {
89
+ return plugins.map(summary).sort((a, b) => a.id.localeCompare(b.id));
90
+ }
91
+ function createTreeseedSceneRuntimePluginContext(input) {
92
+ return {
93
+ ...input,
94
+ resolveSelector(selector) {
95
+ return resolveTreeseedSceneLocator(input.session.page, selector);
96
+ },
97
+ resolveUrl(value) {
98
+ return new URL(value, input.baseUrl.endsWith("/") ? input.baseUrl : `${input.baseUrl}/`).toString();
99
+ }
100
+ };
101
+ }
102
+ function pluginResolutionFromRegistry(registry) {
103
+ return {
104
+ ok: !registry.diagnostics.some((entry) => entry.severity === "error"),
105
+ registry,
106
+ diagnostics: registry.diagnostics,
107
+ summaries: summarizeTreeseedScenePlugins(registry.plugins)
108
+ };
109
+ }
110
+ export {
111
+ createTreeseedScenePluginRegistry,
112
+ createTreeseedSceneRuntimePluginContext,
113
+ pluginResolutionFromRegistry,
114
+ summarizeTreeseedScenePlugins
115
+ };
@@ -0,0 +1,17 @@
1
+ import type { TreeseedSceneProgressEvent, TreeseedSceneProgressEventType } from './types.js';
2
+ export declare function createTreeseedSceneProgress(input: {
3
+ sceneId: string | null;
4
+ runId: string | null;
5
+ startedAtMs: number;
6
+ progressPath?: string | null;
7
+ onProgress?: (event: TreeseedSceneProgressEvent) => void;
8
+ now?: () => Date;
9
+ }): {
10
+ push(type: TreeseedSceneProgressEventType, data?: Record<string, unknown>, options?: {
11
+ chapterId?: string | null;
12
+ segmentId?: string | null;
13
+ stepId?: string | null;
14
+ checkpointId?: string | null;
15
+ status?: string;
16
+ }): TreeseedSceneProgressEvent;
17
+ };
@@ -0,0 +1,24 @@
1
+ import { appendTreeseedSceneJsonl } from "./artifacts.js";
2
+ function createTreeseedSceneProgress(input) {
3
+ const now = input.now ?? (() => /* @__PURE__ */ new Date());
4
+ return {
5
+ push(type, data = {}, options = {}) {
6
+ const timestamp = now();
7
+ const event = {
8
+ type,
9
+ sceneId: input.sceneId,
10
+ runId: input.runId,
11
+ timestamp: timestamp.toISOString(),
12
+ offsetMs: Math.max(0, timestamp.getTime() - input.startedAtMs),
13
+ data,
14
+ ...options
15
+ };
16
+ if (input.progressPath) appendTreeseedSceneJsonl(input.progressPath, event);
17
+ input.onProgress?.(event);
18
+ return event;
19
+ }
20
+ };
21
+ }
22
+ export {
23
+ createTreeseedSceneProgress
24
+ };
@@ -0,0 +1,12 @@
1
+ import type { TreeseedSceneExternalPublishTarget, TreeseedScenePublishedArtifact, TreeseedScenePublishDestination } from './types.js';
2
+ export declare const DEFAULT_TREESEED_SCENE_PUBLICATION_TARGETS: TreeseedSceneExternalPublishTarget[];
3
+ export declare const TREESEED_SCENE_EXTERNAL_PUBLICATION_TARGETS: TreeseedSceneExternalPublishTarget[];
4
+ export declare function isTreeseedSceneExternalPublishTarget(value: unknown): value is TreeseedSceneExternalPublishTarget;
5
+ export declare function createTreeseedScenePublishDestinations(input: {
6
+ runRoot: string;
7
+ targets: TreeseedSceneExternalPublishTarget[];
8
+ }): TreeseedScenePublishDestination[];
9
+ export declare function destinationIdsForTreeseedScenePublishedArtifact(input: {
10
+ artifact: TreeseedScenePublishedArtifact;
11
+ targets: TreeseedSceneExternalPublishTarget[];
12
+ }): string[];
@@ -0,0 +1,99 @@
1
+ import { join } from "node:path";
2
+ const DEFAULT_TREESEED_SCENE_PUBLICATION_TARGETS = [
3
+ "docs",
4
+ "training",
5
+ "release-evidence"
6
+ ];
7
+ const TREESEED_SCENE_EXTERNAL_PUBLICATION_TARGETS = [
8
+ "docs",
9
+ "training",
10
+ "release-evidence",
11
+ "artifact-store"
12
+ ];
13
+ function isTreeseedSceneExternalPublishTarget(value) {
14
+ return typeof value === "string" && TREESEED_SCENE_EXTERNAL_PUBLICATION_TARGETS.includes(value);
15
+ }
16
+ function createTreeseedScenePublishDestinations(input) {
17
+ return input.targets.map((target) => {
18
+ const relativePath = join("publish-plan", "export", target);
19
+ const title = target === "docs" ? "Documentation evidence publication" : target === "training" ? "Training artifact publication" : target === "release-evidence" ? "Release evidence publication" : "Remote artifact-store publication plan";
20
+ const provider = target === "artifact-store" ? "artifact-store" : "local";
21
+ return {
22
+ id: target,
23
+ target,
24
+ title,
25
+ root: join(input.runRoot, relativePath),
26
+ relativePath,
27
+ plannedUrl: null,
28
+ reconciliationResource: {
29
+ type: "scene-evidence-publication",
30
+ provider,
31
+ environment: target === "release-evidence" ? "release" : null,
32
+ desiredState: {
33
+ target,
34
+ sourceRunRoot: input.runRoot,
35
+ exportRoot: join(input.runRoot, relativePath),
36
+ phase: 11,
37
+ mode: "plan-only"
38
+ }
39
+ }
40
+ };
41
+ });
42
+ }
43
+ function publishedPath(artifact) {
44
+ return artifact.publishedPath ?? artifact.sourcePath;
45
+ }
46
+ function isTrainingMarkdown(relativePath) {
47
+ return /(^|[/\\])training[/\\](transcript\.md|glossary\.md|chapter-clips\.json)$/u.test(relativePath);
48
+ }
49
+ function isTrainingOutput(relativePath) {
50
+ return /(^|[/\\])training[/\\]/u.test(relativePath);
51
+ }
52
+ function isRenderReport(relativePath) {
53
+ return /(^|[/\\])render[/\\][^/\\]+[/\\]report\.json$/u.test(relativePath);
54
+ }
55
+ function destinationIdsForTreeseedScenePublishedArtifact(input) {
56
+ const artifact = input.artifact;
57
+ if (artifact.decision !== "include") return [];
58
+ const path = artifact.relativePath;
59
+ const destinations = [];
60
+ if (input.targets.includes("docs")) {
61
+ if (artifact.kind === "markdown-report" || artifact.kind === "render-report" || isTrainingMarkdown(path) || isRenderReport(path)) {
62
+ destinations.push("docs");
63
+ }
64
+ }
65
+ if (input.targets.includes("training")) {
66
+ if (artifact.kind === "training-output" || isTrainingOutput(path) || artifact.kind === "render-report") {
67
+ destinations.push("training");
68
+ }
69
+ }
70
+ if (input.targets.includes("release-evidence")) {
71
+ if ([
72
+ "run-report",
73
+ "markdown-report",
74
+ "timeline",
75
+ "setup",
76
+ "progress",
77
+ "segment",
78
+ "checkpoint",
79
+ "render-report",
80
+ "training-output",
81
+ "screenshot"
82
+ ].includes(artifact.kind)) {
83
+ destinations.push("release-evidence");
84
+ }
85
+ }
86
+ if (input.targets.includes("artifact-store")) {
87
+ if (publishedPath(artifact) && artifact.kind !== "render-video" && artifact.kind !== "log-summary") {
88
+ destinations.push("artifact-store");
89
+ }
90
+ }
91
+ return destinations;
92
+ }
93
+ export {
94
+ DEFAULT_TREESEED_SCENE_PUBLICATION_TARGETS,
95
+ TREESEED_SCENE_EXTERNAL_PUBLICATION_TARGETS,
96
+ createTreeseedScenePublishDestinations,
97
+ destinationIdsForTreeseedScenePublishedArtifact,
98
+ isTreeseedSceneExternalPublishTarget
99
+ };
@@ -0,0 +1,10 @@
1
+ import type { TreeseedSceneDiagnostic, TreeseedScenePublishPlanManifest, TreeseedScenePublishPlanPaths } from './types.js';
2
+ export declare function formatTreeseedScenePublishPlanMarkdownReport(manifest: TreeseedScenePublishPlanManifest): string;
3
+ export declare function writeTreeseedScenePublishPlanReport(input: {
4
+ manifest: TreeseedScenePublishPlanManifest;
5
+ paths: TreeseedScenePublishPlanPaths;
6
+ }): void;
7
+ export declare function appendTreeseedScenePublishPlanPaths(input: {
8
+ runPath: string;
9
+ paths: TreeseedScenePublishPlanPaths;
10
+ }): TreeseedSceneDiagnostic[];
@@ -0,0 +1,70 @@
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 formatTreeseedScenePublishPlanMarkdownReport(manifest) {
14
+ const lines = [
15
+ `# Treeseed Scene Publish Plan: ${manifest.sceneId ?? "(unknown scene)"}`,
16
+ "",
17
+ `Scene: ${manifest.sceneId ?? "(unknown)"}`,
18
+ `Source run: ${manifest.sourceRunId ?? "(unknown)"}`,
19
+ `Workflow: ${manifest.workflowStatus}`,
20
+ `Mode: ${manifest.mode}`,
21
+ `Targets: ${manifest.targets.join(", ") || "(none)"}`,
22
+ `Destinations: ${manifest.destinations.length}`,
23
+ `Artifacts: ${manifest.artifacts.length}`,
24
+ "",
25
+ "## Destinations",
26
+ "",
27
+ "| Target | Root | Provider | Action |",
28
+ "| --- | --- | --- | --- |",
29
+ ...manifest.destinations.length > 0 ? manifest.destinations.map((destination) => `| ${destination.target} | ${destination.relativePath} | ${destination.reconciliationResource.provider} | plan-only |`) : ["| (none) | (none) | (none) | (none) |"],
30
+ "",
31
+ "## Artifacts",
32
+ "",
33
+ "| Kind | Source | Destinations | Decision | SHA-256 |",
34
+ "| --- | --- | --- | --- | --- |",
35
+ ...manifest.artifacts.length > 0 ? manifest.artifacts.map((artifact) => `| ${artifact.kind} | ${artifact.relativePath} | ${artifact.destinationIds.join(", ") || "(none)"} | ${artifact.redactionDecision} | ${artifact.sha256 ?? "(none)"} |`) : ["| (none) | (none) | (none) | (none) | (none) |"],
36
+ "",
37
+ "## Reconciliation Intents",
38
+ "",
39
+ "| Target | Action | Reason |",
40
+ "| --- | --- | --- |",
41
+ ...manifest.reconciliationIntents.length > 0 ? manifest.reconciliationIntents.map((intent) => `| ${intent.target} | ${intent.action} | ${intent.reason} |`) : ["| (none) | (none) | (none) |"],
42
+ ""
43
+ ];
44
+ return lines.join("\n");
45
+ }
46
+ function writeTreeseedScenePublishPlanReport(input) {
47
+ writeJson(input.paths.manifestPath, input.manifest);
48
+ writeText(input.paths.reportPath, formatTreeseedScenePublishPlanMarkdownReport(input.manifest));
49
+ }
50
+ function appendTreeseedScenePublishPlanPaths(input) {
51
+ try {
52
+ if ((statSync(input.runPath).mode & 146) === 0) {
53
+ throw new Error("run.json is not writable.");
54
+ }
55
+ const run = JSON.parse(readFileSync(input.runPath, "utf8"));
56
+ writeJson(input.runPath, {
57
+ ...run,
58
+ publishPlanPaths: input.paths,
59
+ logs: run.logs ? { ...run.logs, publishPlan: input.paths.publishPlanRoot } : run.logs
60
+ });
61
+ return [];
62
+ } catch (error) {
63
+ return [sceneWarningDiagnostic("scene.publish_plan_run_update_failed", `Publish plan artifacts were written but run.json could not be updated. ${error instanceof Error ? error.message : String(error ?? "")}`.trim(), "run.json")];
64
+ }
65
+ }
66
+ export {
67
+ appendTreeseedScenePublishPlanPaths,
68
+ formatTreeseedScenePublishPlanMarkdownReport,
69
+ writeTreeseedScenePublishPlanReport
70
+ };
@@ -0,0 +1,15 @@
1
+ import type { TreeseedSceneExternalPublishTarget, TreeseedScenePublishManifest, TreeseedScenePublishPlanManifest, TreeseedScenePublishPlanMode, TreeseedScenePublishPlanOptions, TreeseedScenePublishPlanPaths, TreeseedScenePublishPlanReport } from './types.js';
2
+ export declare function buildTreeseedScenePublishPlanManifest(input: {
3
+ publish: TreeseedScenePublishManifest;
4
+ publishManifestPath: string;
5
+ runRoot: string;
6
+ targets: TreeseedSceneExternalPublishTarget[];
7
+ mode: TreeseedScenePublishPlanMode;
8
+ timestamp?: string;
9
+ }): TreeseedScenePublishPlanManifest;
10
+ export declare function writeTreeseedScenePublishPlan(input: {
11
+ runRoot: string;
12
+ manifest: TreeseedScenePublishPlanManifest;
13
+ }): TreeseedScenePublishPlanPaths;
14
+ export declare function planTreeseedScenePublication(input: TreeseedScenePublishPlanOptions): Promise<TreeseedScenePublishPlanReport>;
15
+ export declare function exportTreeseedScenePublication(input: Omit<TreeseedScenePublishPlanOptions, 'mode'>): Promise<TreeseedScenePublishPlanReport>;