@treeseed/sdk 0.11.0 → 0.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +9 -4
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +117 -60
  27. package/dist/capacity-provider.js +215 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +2 -2
  36. package/dist/copilot.d.ts +3 -0
  37. package/dist/copilot.js +16 -1
  38. package/dist/d1-http.d.ts +1 -1
  39. package/dist/d1-store.d.ts +32 -57
  40. package/dist/d1-store.js +115 -318
  41. package/dist/db/d1.d.ts +1 -232
  42. package/dist/db/index.d.ts +3 -3
  43. package/dist/db/market-schema.d.ts +49037 -11843
  44. package/dist/db/market-schema.js +1788 -50
  45. package/dist/db/node-sqlite.d.ts +1 -232
  46. package/dist/db/schema.d.ts +0 -462
  47. package/dist/db/schema.js +2 -22
  48. package/dist/dispatch.d.ts +1 -1
  49. package/dist/dispatch.js +0 -11
  50. package/dist/fixture-support.js +52 -4
  51. package/dist/governance.d.ts +133 -0
  52. package/dist/governance.js +285 -0
  53. package/dist/graph/build.d.ts +2 -2
  54. package/dist/graph/context-query-contracts.d.ts +1 -1
  55. package/dist/graph/dsl.d.ts +1 -1
  56. package/dist/graph/query.d.ts +4 -4
  57. package/dist/graph/ranking.d.ts +1 -1
  58. package/dist/graph/schema.d.ts +1 -1
  59. package/dist/graph.d.ts +11 -11
  60. package/dist/guarantees/index.d.ts +425 -0
  61. package/dist/guarantees/index.js +1146 -0
  62. package/dist/hosting/apps.d.ts +1 -1
  63. package/dist/hosting/builtins.d.ts +1 -1
  64. package/dist/hosting/builtins.js +9 -198
  65. package/dist/hosting/contracts.d.ts +3 -2
  66. package/dist/hosting/graph.d.ts +24 -21
  67. package/dist/hosting/graph.js +280 -294
  68. package/dist/hosting/index.d.ts +4 -4
  69. package/dist/index.d.ts +88 -74
  70. package/dist/index.js +81 -10
  71. package/dist/local-dev/managed-dev.d.ts +85 -0
  72. package/dist/local-dev/managed-dev.js +368 -0
  73. package/dist/managed-dependencies.d.ts +9 -0
  74. package/dist/managed-dependencies.js +10 -8
  75. package/dist/market-client.d.ts +265 -7
  76. package/dist/market-client.js +381 -9
  77. package/dist/model-registry.d.ts +1 -1
  78. package/dist/model-registry.js +19 -19
  79. package/dist/operations/agent-tools.d.ts +2 -11
  80. package/dist/operations/agent-tools.js +2 -14
  81. package/dist/operations/providers/default.d.ts +1 -1
  82. package/dist/operations/providers/default.js +20 -37
  83. package/dist/operations/repository-operations.d.ts +26 -2
  84. package/dist/operations/repository-operations.js +159 -1
  85. package/dist/operations/runtime.d.ts +3 -3
  86. package/dist/operations/services/bootstrap-runner.d.ts +1 -1
  87. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  88. package/dist/operations/services/build-warning-policy.js +81 -82
  89. package/dist/operations/services/commit-message-provider.js +4 -4
  90. package/dist/operations/services/config-runtime.d.ts +73 -19
  91. package/dist/operations/services/config-runtime.js +276 -100
  92. package/dist/operations/services/deploy.d.ts +41 -622
  93. package/dist/operations/services/deploy.js +181 -213
  94. package/dist/operations/services/deployment-readiness.d.ts +1 -1
  95. package/dist/operations/services/deployment-readiness.js +38 -7
  96. package/dist/operations/services/git-remote-policy.js +12 -4
  97. package/dist/operations/services/git-runner.d.ts +66 -0
  98. package/dist/operations/services/git-runner.js +479 -0
  99. package/dist/operations/services/git-workflow.d.ts +43 -5
  100. package/dist/operations/services/git-workflow.js +242 -20
  101. package/dist/operations/services/github-actions-verification.d.ts +3 -1
  102. package/dist/operations/services/github-actions-verification.js +11 -3
  103. package/dist/operations/services/github-api.js +21 -5
  104. package/dist/operations/services/github-automation.d.ts +3 -3
  105. package/dist/operations/services/github-automation.js +15 -18
  106. package/dist/operations/services/github-credentials.js +2 -1
  107. package/dist/operations/services/hosted-service-checks.d.ts +19 -1
  108. package/dist/operations/services/hosted-service-checks.js +162 -11
  109. package/dist/operations/services/hosting-audit.d.ts +2 -2
  110. package/dist/operations/services/hosting-audit.js +7 -7
  111. package/dist/operations/services/hub-launch.d.ts +1 -1
  112. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  113. package/dist/operations/services/hub-provider-launch.js +19 -14
  114. package/dist/operations/services/live-hosted-service-checks.d.ts +2 -1
  115. package/dist/operations/services/live-hosted-service-checks.js +193 -80
  116. package/dist/operations/services/local-dev.js +0 -1
  117. package/dist/operations/services/managed-host-security.d.ts +1 -1
  118. package/dist/operations/services/managed-repositories.d.ts +37 -0
  119. package/dist/operations/services/managed-repositories.js +177 -0
  120. package/dist/operations/services/operations-runner-smoke.d.ts +3 -2
  121. package/dist/operations/services/operations-runner-smoke.js +22 -4
  122. package/dist/operations/services/package-adapters.d.ts +77 -2
  123. package/dist/operations/services/package-adapters.js +629 -56
  124. package/dist/operations/services/package-reference-policy.d.ts +12 -88
  125. package/dist/operations/services/package-reference-policy.js +81 -213
  126. package/dist/operations/services/project-host-operations.d.ts +4 -4
  127. package/dist/operations/services/project-platform.d.ts +19 -193
  128. package/dist/operations/services/project-platform.js +31 -103
  129. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  130. package/dist/operations/services/project-web-monitor.js +97 -2
  131. package/dist/operations/services/railway-api.d.ts +36 -7
  132. package/dist/operations/services/railway-api.js +331 -100
  133. package/dist/operations/services/railway-deploy.d.ts +7 -95
  134. package/dist/operations/services/railway-deploy.js +334 -742
  135. package/dist/operations/services/release-history.js +3 -4
  136. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  137. package/dist/operations/services/release-proof-ledger.js +81 -0
  138. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  139. package/dist/operations/services/release-proof-planner.js +195 -0
  140. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  141. package/dist/operations/services/release-proof-runner.js +169 -0
  142. package/dist/operations/services/release-proof.d.ts +81 -0
  143. package/dist/operations/services/release-proof.js +79 -0
  144. package/dist/operations/services/repository-save-orchestrator.d.ts +6 -7
  145. package/dist/operations/services/repository-save-orchestrator.js +353 -174
  146. package/dist/operations/services/runtime-paths.d.ts +1 -3
  147. package/dist/operations/services/runtime-paths.js +0 -4
  148. package/dist/operations/services/runtime-tools.d.ts +1 -192
  149. package/dist/operations/services/runtime-tools.js +4 -444
  150. package/dist/operations/services/save-deploy-preflight.js +9 -1
  151. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  152. package/dist/operations/services/template-host-bindings.js +3 -2
  153. package/dist/operations/services/template-registry.d.ts +6 -6
  154. package/dist/operations/services/template-registry.js +33 -14
  155. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  156. package/dist/operations/services/workflow-timing.d.ts +25 -0
  157. package/dist/operations/services/workflow-timing.js +79 -0
  158. package/dist/operations/services/workspace-dependency-mode.js +41 -4
  159. package/dist/operations/services/workspace-preflight.js +8 -8
  160. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  161. package/dist/operations/services/workspace-save.d.ts +1 -0
  162. package/dist/operations/services/workspace-save.js +41 -18
  163. package/dist/operations/services/workspace-tools.js +40 -6
  164. package/dist/operations-registry.d.ts +1 -1
  165. package/dist/operations-registry.js +5 -6
  166. package/dist/operations-types.d.ts +1 -1
  167. package/dist/operations.d.ts +17 -11
  168. package/dist/operations.js +57 -3
  169. package/dist/platform/book-export.js +2 -0
  170. package/dist/platform/books-data.d.ts +1 -1
  171. package/dist/platform/config.d.ts +27 -0
  172. package/dist/platform/config.js +100 -0
  173. package/dist/platform/content-runtime-source.d.ts +54 -0
  174. package/dist/platform/content-runtime-source.js +169 -0
  175. package/dist/platform/contracts.d.ts +6 -1
  176. package/dist/platform/deploy-config.d.ts +1 -1
  177. package/dist/platform/deploy-config.js +7 -1
  178. package/dist/platform/deploy-runtime.d.ts +1 -1
  179. package/dist/platform/desired-state.d.ts +66 -0
  180. package/dist/platform/desired-state.js +1052 -0
  181. package/dist/platform/env.yaml +414 -19
  182. package/dist/platform/environment.d.ts +2 -2
  183. package/dist/platform/environment.js +54 -22
  184. package/dist/platform/local-content-materialization.d.ts +9 -0
  185. package/dist/platform/local-content-materialization.js +212 -0
  186. package/dist/platform/plugin.d.ts +5 -5
  187. package/dist/platform/plugins/runtime.d.ts +3 -3
  188. package/dist/platform/plugins/runtime.js +62 -1
  189. package/dist/platform/plugins.d.ts +6 -6
  190. package/dist/platform/published-content-pipeline.d.ts +3 -3
  191. package/dist/platform/published-content-pipeline.js +5 -1
  192. package/dist/platform/published-content.d.ts +4 -3
  193. package/dist/platform/site-config-schema.d.ts +1 -0
  194. package/dist/platform/site-config-schema.js +4 -1
  195. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  196. package/dist/platform/tenant-config.d.ts +1 -1
  197. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  198. package/dist/platform/utils/site-config-schema.js +400 -461
  199. package/dist/platform-operation-store.d.ts +1 -1
  200. package/dist/plugin-default.d.ts +1 -1
  201. package/dist/plugin-default.js +27 -12
  202. package/dist/project-import.d.ts +91 -0
  203. package/dist/project-import.js +257 -0
  204. package/dist/project-workflow.d.ts +1 -1
  205. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  206. package/dist/reconcile/bootstrap-systems.js +3 -3
  207. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  208. package/dist/reconcile/builtin-adapters.js +2924 -346
  209. package/dist/reconcile/contracts.d.ts +15 -2
  210. package/dist/reconcile/desired-state.d.ts +2 -193
  211. package/dist/reconcile/desired-state.js +24 -33
  212. package/dist/reconcile/engine.d.ts +60 -397
  213. package/dist/reconcile/engine.js +182 -18
  214. package/dist/reconcile/index.d.ts +10 -10
  215. package/dist/reconcile/live-acceptance.d.ts +22 -1
  216. package/dist/reconcile/live-acceptance.js +456 -44
  217. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  218. package/dist/reconcile/providers/docker-private.js +101 -0
  219. package/dist/reconcile/providers/github-private.d.ts +65 -0
  220. package/dist/reconcile/providers/github-private.js +119 -0
  221. package/dist/reconcile/providers/local-private.d.ts +28 -0
  222. package/dist/reconcile/providers/local-private.js +75 -0
  223. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  224. package/dist/reconcile/providers/railway-iac.js +275 -0
  225. package/dist/reconcile/providers/release-private.d.ts +92 -0
  226. package/dist/reconcile/providers/release-private.js +152 -0
  227. package/dist/reconcile/registry.d.ts +2 -2
  228. package/dist/reconcile/registry.js +16 -1
  229. package/dist/reconcile/state.d.ts +1 -1
  230. package/dist/reconcile/state.js +3 -40
  231. package/dist/reconcile/units.d.ts +1 -1
  232. package/dist/reconcile/units.js +7 -1
  233. package/dist/remote.d.ts +6 -6
  234. package/dist/scenes/artifacts.d.ts +16 -0
  235. package/dist/scenes/artifacts.js +61 -0
  236. package/dist/scenes/auth.d.ts +2 -0
  237. package/dist/scenes/auth.js +28 -0
  238. package/dist/scenes/base-url.d.ts +12 -0
  239. package/dist/scenes/base-url.js +123 -0
  240. package/dist/scenes/builtin-plugins.d.ts +2 -0
  241. package/dist/scenes/builtin-plugins.js +447 -0
  242. package/dist/scenes/checkpoints.d.ts +14 -0
  243. package/dist/scenes/checkpoints.js +33 -0
  244. package/dist/scenes/device-matrix.d.ts +2 -0
  245. package/dist/scenes/device-matrix.js +97 -0
  246. package/dist/scenes/devices.d.ts +11 -0
  247. package/dist/scenes/devices.js +22 -0
  248. package/dist/scenes/diagnostics.d.ts +5 -0
  249. package/dist/scenes/diagnostics.js +22 -0
  250. package/dist/scenes/diagram-providers.d.ts +2 -0
  251. package/dist/scenes/diagram-providers.js +181 -0
  252. package/dist/scenes/diagram-validation.d.ts +22 -0
  253. package/dist/scenes/diagram-validation.js +74 -0
  254. package/dist/scenes/environment.d.ts +2 -0
  255. package/dist/scenes/environment.js +65 -0
  256. package/dist/scenes/evidence-bundle.d.ts +5 -0
  257. package/dist/scenes/evidence-bundle.js +42 -0
  258. package/dist/scenes/evidence-report.d.ts +10 -0
  259. package/dist/scenes/evidence-report.js +73 -0
  260. package/dist/scenes/evidence.d.ts +16 -0
  261. package/dist/scenes/evidence.js +277 -0
  262. package/dist/scenes/index.d.ts +48 -0
  263. package/dist/scenes/index.js +312 -0
  264. package/dist/scenes/inspect.d.ts +9 -0
  265. package/dist/scenes/inspect.js +64 -0
  266. package/dist/scenes/loader.d.ts +3 -0
  267. package/dist/scenes/loader.js +38 -0
  268. package/dist/scenes/logs.d.ts +2 -0
  269. package/dist/scenes/logs.js +47 -0
  270. package/dist/scenes/operations.d.ts +3 -0
  271. package/dist/scenes/operations.js +128 -0
  272. package/dist/scenes/phase0.d.ts +9 -0
  273. package/dist/scenes/phase0.js +637 -0
  274. package/dist/scenes/planner.d.ts +12 -0
  275. package/dist/scenes/planner.js +166 -0
  276. package/dist/scenes/playwright-adapter.d.ts +2 -0
  277. package/dist/scenes/playwright-adapter.js +63 -0
  278. package/dist/scenes/plugins.d.ts +5 -0
  279. package/dist/scenes/plugins.js +115 -0
  280. package/dist/scenes/progress.d.ts +17 -0
  281. package/dist/scenes/progress.js +24 -0
  282. package/dist/scenes/publish-destinations.d.ts +12 -0
  283. package/dist/scenes/publish-destinations.js +99 -0
  284. package/dist/scenes/publish-plan-report.d.ts +10 -0
  285. package/dist/scenes/publish-plan-report.js +70 -0
  286. package/dist/scenes/publish-plan.d.ts +15 -0
  287. package/dist/scenes/publish-plan.js +248 -0
  288. package/dist/scenes/publish-redaction.d.ts +16 -0
  289. package/dist/scenes/publish-redaction.js +148 -0
  290. package/dist/scenes/publish-release-record.d.ts +13 -0
  291. package/dist/scenes/publish-release-record.js +34 -0
  292. package/dist/scenes/publish-report.d.ts +10 -0
  293. package/dist/scenes/publish-report.js +67 -0
  294. package/dist/scenes/publish.d.ts +16 -0
  295. package/dist/scenes/publish.js +298 -0
  296. package/dist/scenes/registry.d.ts +12 -0
  297. package/dist/scenes/registry.js +65 -0
  298. package/dist/scenes/remotion-adapter.d.ts +3 -0
  299. package/dist/scenes/remotion-adapter.js +94 -0
  300. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  301. package/dist/scenes/remotion-composition-registry.js +12 -0
  302. package/dist/scenes/remotion-compositions.d.ts +15 -0
  303. package/dist/scenes/remotion-compositions.js +464 -0
  304. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  305. package/dist/scenes/remotion-diagrams.js +188 -0
  306. package/dist/scenes/remotion-input.d.ts +13 -0
  307. package/dist/scenes/remotion-input.js +291 -0
  308. package/dist/scenes/remotion-visuals.d.ts +29 -0
  309. package/dist/scenes/remotion-visuals.js +198 -0
  310. package/dist/scenes/render-media-assets.d.ts +9 -0
  311. package/dist/scenes/render-media-assets.js +117 -0
  312. package/dist/scenes/render-report.d.ts +10 -0
  313. package/dist/scenes/render-report.js +27 -0
  314. package/dist/scenes/render.d.ts +2 -0
  315. package/dist/scenes/render.js +218 -0
  316. package/dist/scenes/reporter.d.ts +3 -0
  317. package/dist/scenes/reporter.js +101 -0
  318. package/dist/scenes/resume.d.ts +2 -0
  319. package/dist/scenes/resume.js +79 -0
  320. package/dist/scenes/runner.d.ts +2 -0
  321. package/dist/scenes/runner.js +674 -0
  322. package/dist/scenes/schema.d.ts +6 -0
  323. package/dist/scenes/schema.js +994 -0
  324. package/dist/scenes/seed.d.ts +2 -0
  325. package/dist/scenes/seed.js +83 -0
  326. package/dist/scenes/segments.d.ts +15 -0
  327. package/dist/scenes/segments.js +79 -0
  328. package/dist/scenes/selectors.d.ts +3 -0
  329. package/dist/scenes/selectors.js +21 -0
  330. package/dist/scenes/timeline.d.ts +11 -0
  331. package/dist/scenes/timeline.js +26 -0
  332. package/dist/scenes/timeouts.d.ts +6 -0
  333. package/dist/scenes/timeouts.js +17 -0
  334. package/dist/scenes/training-captions.d.ts +14 -0
  335. package/dist/scenes/training-captions.js +98 -0
  336. package/dist/scenes/training-report.d.ts +10 -0
  337. package/dist/scenes/training-report.js +78 -0
  338. package/dist/scenes/training-transcript.d.ts +24 -0
  339. package/dist/scenes/training-transcript.js +204 -0
  340. package/dist/scenes/training.d.ts +10 -0
  341. package/dist/scenes/training.js +134 -0
  342. package/dist/scenes/types.d.ts +1872 -0
  343. package/dist/scenes/types.js +8 -0
  344. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  345. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  346. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  347. package/dist/scenes/visual-audit-fixtures.js +210 -0
  348. package/dist/scenes/visual-audit-report.d.ts +11 -0
  349. package/dist/scenes/visual-audit-report.js +85 -0
  350. package/dist/scenes/visual-audit-review.d.ts +23 -0
  351. package/dist/scenes/visual-audit-review.js +829 -0
  352. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  353. package/dist/scenes/visual-audit-routes.js +308 -0
  354. package/dist/scenes/visual-audit.d.ts +3 -0
  355. package/dist/scenes/visual-audit.js +596 -0
  356. package/dist/scripts/build-dist.js +154 -40
  357. package/dist/scripts/check-build-warnings.js +42 -53
  358. package/dist/scripts/cleanup-markdown.js +1 -1
  359. package/dist/scripts/cli-test-fixtures.js +24 -28
  360. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  361. package/dist/scripts/package-tools.js +12 -1
  362. package/dist/scripts/prepare.js +3 -7
  363. package/dist/scripts/release-verify.js +2 -5
  364. package/dist/scripts/run-fixture-astro-command.js +1 -1
  365. package/dist/scripts/template-catalog.test.js +68 -82
  366. package/dist/scripts/tenant-dev.js +0 -10
  367. package/dist/scripts/test-cloudflare-local.js +1 -1
  368. package/dist/scripts/test-scaffold.js +0 -1
  369. package/dist/scripts/test-smoke.js +3 -3
  370. package/dist/scripts/treeseed-build-dist.js +4 -7
  371. package/dist/scripts/treeseed-release-verify.js +1 -1
  372. package/dist/scripts/verify-driver.js +30 -21
  373. package/dist/scripts/workflow-commands.test.js +18 -27
  374. package/dist/scripts/workspace-command-e2e.js +1 -1
  375. package/dist/scripts/workspace-lint.js +6 -0
  376. package/dist/scripts/workspace-release-test.js +90 -1
  377. package/dist/scripts/workspace-test.js +6 -0
  378. package/dist/sdk-dispatch.d.ts +1 -1
  379. package/dist/sdk-dispatch.js +0 -16
  380. package/dist/sdk-fields.d.ts +1 -1
  381. package/dist/sdk-filters.d.ts +1 -1
  382. package/dist/sdk-types.d.ts +1184 -113
  383. package/dist/sdk-types.js +393 -0
  384. package/dist/sdk.d.ts +74 -79
  385. package/dist/sdk.js +27 -36
  386. package/dist/secrets-capability.d.ts +421 -0
  387. package/dist/secrets-capability.js +530 -0
  388. package/dist/seeds/normalize.js +1 -0
  389. package/dist/seeds/planner.js +38 -0
  390. package/dist/seeds/schema.js +293 -4
  391. package/dist/seeds/types.d.ts +60 -0
  392. package/dist/seeds/types.js +9 -1
  393. package/dist/service-credentials.d.ts +54 -0
  394. package/dist/service-credentials.js +112 -0
  395. package/dist/stores/cursor-store.d.ts +2 -2
  396. package/dist/stores/envelopes.d.ts +1 -1
  397. package/dist/stores/helpers.d.ts +1 -1
  398. package/dist/stores/lease-store.d.ts +2 -2
  399. package/dist/stores/message-store.d.ts +2 -2
  400. package/dist/stores/operational-store.d.ts +3 -26
  401. package/dist/stores/operational-store.js +0 -225
  402. package/dist/stores/project-workflow-store.d.ts +2 -2
  403. package/dist/stores/run-store.d.ts +2 -3
  404. package/dist/stores/run-store.js +0 -98
  405. package/dist/stores/subscription-store.d.ts +2 -3
  406. package/dist/stores/subscription-store.js +0 -100
  407. package/dist/template-catalog.d.ts +1 -1
  408. package/dist/template-launch-requirements.d.ts +2 -2
  409. package/dist/template-launch-ui.d.ts +2 -2
  410. package/dist/treedx/adapters.d.ts +6 -6
  411. package/dist/treedx/client.d.ts +1 -1
  412. package/dist/treedx/errors.d.ts +1 -1
  413. package/dist/treedx/federated-client.d.ts +3 -3
  414. package/dist/treedx/graph-adapter.d.ts +2 -2
  415. package/dist/treedx/index.d.ts +14 -14
  416. package/dist/treedx/market-integration.d.ts +1 -1
  417. package/dist/treedx/ports.d.ts +30 -30
  418. package/dist/treedx/query-adapter.d.ts +3 -3
  419. package/dist/treedx/registry-client.d.ts +2 -2
  420. package/dist/treedx/repository-adapter.d.ts +4 -4
  421. package/dist/treedx/repository-adapter.js +14 -3
  422. package/dist/treedx/sdk-integration.d.ts +3 -3
  423. package/dist/treedx/types.d.ts +2 -2
  424. package/dist/treedx/workspace-adapter.d.ts +2 -2
  425. package/dist/treedx-backends.d.ts +13 -11
  426. package/dist/treedx-backends.js +52 -50
  427. package/dist/treedx-client.d.ts +3 -0
  428. package/dist/treedx-client.js +10 -1
  429. package/dist/treeseed/services/compose.yml +2 -3
  430. package/dist/treeseed/template-catalog/catalog.fixture.json +4 -4
  431. package/dist/types/agents.d.ts +256 -0
  432. package/dist/types/agents.js +42 -1
  433. package/dist/verification.d.ts +1 -0
  434. package/dist/verification.js +143 -14
  435. package/dist/workflow/operations.d.ts +510 -559
  436. package/dist/workflow/operations.js +1891 -1342
  437. package/dist/workflow/policy.js +19 -7
  438. package/dist/workflow/runs.d.ts +9 -3
  439. package/dist/workflow/runs.js +66 -26
  440. package/dist/workflow/session.d.ts +4 -1
  441. package/dist/workflow/session.js +50 -10
  442. package/dist/workflow/worktrees.d.ts +6 -2
  443. package/dist/workflow/worktrees.js +98 -15
  444. package/dist/workflow-state.d.ts +5 -5
  445. package/dist/workflow-state.js +27 -17
  446. package/dist/workflow-support.d.ts +26 -25
  447. package/dist/workflow-support.js +27 -31
  448. package/dist/workflow.d.ts +46 -16
  449. package/dist/workflow.js +19 -7
  450. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  451. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  452. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  453. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  454. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  455. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  456. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  457. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  458. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  459. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  460. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  461. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  462. package/package.json +75 -18
  463. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  464. package/templates/github/deploy-web.workflow.yml +12 -8
  465. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  466. package/dist/operations/services/mailpit-runtime.js +0 -67
  467. package/dist/operations/services/release-candidate.d.ts +0 -60
  468. package/dist/operations/services/release-candidate.js +0 -953
  469. package/dist/scripts/ensure-mailpit.js +0 -48
  470. package/dist/scripts/logs-mailpit.js +0 -2
  471. package/dist/scripts/run-ts.js +0 -45
  472. package/dist/scripts/stop-mailpit.js +0 -5
  473. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -16,10 +16,43 @@ import {
16
16
  import { TreeseedOperationsSdk } from "./operations/runtime.js";
17
17
  import {
18
18
  cancelGitHubWorkflowRun,
19
- dispatchGitHubWorkflowRun,
20
19
  formatGitHubWorkflowFailure,
21
20
  waitForGitHubWorkflowRunCompletion
22
21
  } from "./operations/services/github-api.js";
22
+ import {
23
+ computeProofInputHash,
24
+ createProofRecord,
25
+ proofIdFor
26
+ } from "./operations/services/release-proof.js";
27
+ import {
28
+ cleanProofLedger,
29
+ findReusableProof,
30
+ invalidateProofs,
31
+ readProofLedger,
32
+ writeProofRecord
33
+ } from "./operations/services/release-proof-ledger.js";
34
+ import {
35
+ buildTreeseedProofPlan,
36
+ summarizeTreeseedProofLedger
37
+ } from "./operations/services/release-proof-planner.js";
38
+ import {
39
+ runTreeseedProof
40
+ } from "./operations/services/release-proof-runner.js";
41
+ import {
42
+ createTreeseedWorkflowTimer,
43
+ formatTreeseedDuration,
44
+ slowestTreeseedWorkflowPhases
45
+ } from "./operations/services/workflow-timing.js";
46
+ import {
47
+ classifyTreeseedGitMode,
48
+ inspectTreeseedGitLocks,
49
+ inspectTreeseedWorkspaceGitLocks,
50
+ recoverTreeseedGitLocks,
51
+ runTreeseedGit,
52
+ runTreeseedGitBatch,
53
+ runTreeseedGitOk,
54
+ runTreeseedGitText
55
+ } from "./operations/services/git-runner.js";
23
56
  import { TreeseedOperationError } from "./operations-types.js";
24
57
  import {
25
58
  AGENT_OPERATION_MODES,
@@ -38,23 +71,44 @@ export {
38
71
  TreeseedOperationError,
39
72
  TreeseedOperationsSdk,
40
73
  TreeseedWorkflowSdk,
74
+ buildTreeseedProofPlan,
41
75
  cancelGitHubWorkflowRun,
76
+ classifyTreeseedGitMode,
77
+ cleanProofLedger,
42
78
  collectTreeseedConfigSeedValues,
79
+ computeProofInputHash,
43
80
  createAgentOperationEvent,
44
81
  createKnowledgeHubRepositories,
82
+ createProofRecord,
83
+ createTreeseedWorkflowTimer,
45
84
  decideAgentOperationPermission,
46
85
  defaultHubContentResolutionPolicy,
47
86
  deniedAgentOperationResult,
48
- dispatchGitHubWorkflowRun,
49
87
  executeKnowledgeHubLaunch,
88
+ findReusableProof,
50
89
  findTreeseedOperation,
51
90
  formatGitHubWorkflowFailure,
91
+ formatTreeseedDuration,
92
+ inspectTreeseedGitLocks,
93
+ inspectTreeseedWorkspaceGitLocks,
94
+ invalidateProofs,
52
95
  isAgentOperationName,
53
96
  listTreeseedOperationNames,
54
97
  normalizeKnowledgeHubLaunchIntent,
55
98
  planKnowledgeHubLaunch,
56
99
  planKnowledgeHubRepositories,
100
+ proofIdFor,
101
+ readProofLedger,
102
+ recoverTreeseedGitLocks,
57
103
  resolveAgentOperationGrant,
104
+ runTreeseedGit,
105
+ runTreeseedGitBatch,
106
+ runTreeseedGitOk,
107
+ runTreeseedGitText,
108
+ runTreeseedProof,
109
+ slowestTreeseedWorkflowPhases,
110
+ summarizeTreeseedProofLedger,
58
111
  validateRepositoryHost,
59
- waitForGitHubWorkflowRunCompletion
112
+ waitForGitHubWorkflowRunCompletion,
113
+ writeProofRecord
60
114
  };
@@ -217,6 +217,8 @@ async function renderRepomixMarkdown(stageRoot, outputPath) {
217
217
  output: outputPath,
218
218
  style: "markdown",
219
219
  ignore: "",
220
+ gitignore: false,
221
+ dotIgnore: false,
220
222
  quiet: true,
221
223
  skipLocalConfig: true,
222
224
  copy: false,
@@ -1,4 +1,4 @@
1
- import type { TreeseedBookDefinition, TreeseedTenantConfig } from './contracts.ts';
1
+ import type { TreeseedBookDefinition, TreeseedTenantConfig } from './contracts.js';
2
2
  export interface DocsLibraryDownload {
3
3
  downloadFileName: string;
4
4
  downloadHref: string;
@@ -0,0 +1,27 @@
1
+ import { discoverTreeseedApplications } from '../hosting/apps.js';
2
+ import { discoverTreeseedPackageAdapters } from '../operations/services/package-adapters.js';
3
+ import { collectTreeseedEnvironmentContext } from '../operations/services/config-runtime.js';
4
+ import type { TreeseedDeployConfig } from './contracts.js';
5
+ export type TreeseedPlatformConfigInput = {
6
+ tenantRoot: string;
7
+ environment: 'local' | 'staging' | 'prod';
8
+ env?: Record<string, string | undefined>;
9
+ capacityConfigPath?: string | null;
10
+ };
11
+ declare function loadCapacityLaunchFromPackageManifest(tenantRoot: string): {
12
+ path: string;
13
+ manifest: import("../capacity-provider.js").CapacityProviderLaunchManifest;
14
+ plan: import("../capacity-provider.js").CapacityProviderLaunchPlan;
15
+ } | null;
16
+ declare function loadTreeseedDevManifest(tenantRoot: string): Record<string, unknown>;
17
+ export declare function loadTreeseedPlatformConfig(input: TreeseedPlatformConfigInput): {
18
+ tenantRoot: string;
19
+ environment: 'local' | 'staging' | 'prod';
20
+ deployConfig: TreeseedDeployConfig;
21
+ packages: ReturnType<typeof discoverTreeseedPackageAdapters>;
22
+ applications: ReturnType<typeof discoverTreeseedApplications>;
23
+ capacityLaunch: ReturnType<typeof loadCapacityLaunchFromPackageManifest>;
24
+ dev: ReturnType<typeof loadTreeseedDevManifest>;
25
+ envRegistry: ReturnType<typeof collectTreeseedEnvironmentContext> | null;
26
+ };
27
+ export {};
@@ -0,0 +1,100 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ import { parseCapacityProviderLaunchManifest, resolveCapacityProviderLaunchPlan } from "../capacity-provider.js";
5
+ import { discoverTreeseedApplications } from "../hosting/apps.js";
6
+ import { discoverTreeseedPackageAdapters } from "../operations/services/package-adapters.js";
7
+ import { collectTreeseedEnvironmentContext } from "../operations/services/config-runtime.js";
8
+ import { loadTreeseedDeployConfigFromPath, resolveTreeseedDeployConfigPathFromRoot } from "./deploy-config.js";
9
+ function loadOptionalYaml(filePath) {
10
+ if (!existsSync(filePath)) return null;
11
+ return parseYaml(readFileSync(filePath, "utf8"));
12
+ }
13
+ function loadCapacityLaunchFromPackageManifest(tenantRoot) {
14
+ const agentManifestPath = resolve(tenantRoot, "packages", "agent", "treeseed.package.yaml");
15
+ const manifest = loadOptionalYaml(agentManifestPath);
16
+ const capacityProvider = manifest?.capacityProvider;
17
+ if (!capacityProvider || typeof capacityProvider !== "object" || Array.isArray(capacityProvider)) return null;
18
+ const local = capacityProvider.local ?? {};
19
+ const roles = capacityProvider.roles ?? {};
20
+ const launchManifest = {
21
+ schemaVersion: 1,
22
+ provider: {
23
+ dataDir: local.dataDir ?? ".treeseed/local-capacity-provider/data",
24
+ environment: "local"
25
+ },
26
+ runtime: {
27
+ images: {
28
+ roles: {
29
+ manager: { image: roles.manager?.image ?? "treeseed/agent-manager", tag: roles.manager?.tag ?? "latest" },
30
+ runner: { image: roles.runner?.image ?? "treeseed/agent-runner", tag: roles.runner?.tag ?? "latest" }
31
+ }
32
+ }
33
+ }
34
+ };
35
+ const parsed = parseCapacityProviderLaunchManifest(launchManifest);
36
+ return {
37
+ path: agentManifestPath,
38
+ manifest: parsed,
39
+ plan: resolveCapacityProviderLaunchPlan(parsed)
40
+ };
41
+ }
42
+ function loadCapacityLaunchFromPath(configPath) {
43
+ if (!configPath) return null;
44
+ const absolutePath = resolve(configPath);
45
+ if (!existsSync(absolutePath)) {
46
+ throw new Error(`Capacity launch config was not found: ${absolutePath}`);
47
+ }
48
+ const parsed = parseCapacityProviderLaunchManifest(readFileSync(absolutePath, "utf8"));
49
+ return {
50
+ path: absolutePath,
51
+ manifest: parsed,
52
+ plan: resolveCapacityProviderLaunchPlan(parsed)
53
+ };
54
+ }
55
+ function loadTreeseedDevManifest(tenantRoot) {
56
+ return loadOptionalYaml(resolve(tenantRoot, "treeseed.dev.yaml")) ?? {
57
+ schemaVersion: 1,
58
+ dev: {
59
+ processes: {
60
+ "market-web": { package: "@treeseed/market", cwd: ".", surface: "web" },
61
+ api: { package: "@treeseed/api", cwd: "packages/api", surface: "api" },
62
+ "operations-runner": { package: "@treeseed/api", cwd: "packages/api", surface: "operations-runner" }
63
+ }
64
+ }
65
+ };
66
+ }
67
+ function discoverPlatformPackages(tenantRoot) {
68
+ if (!existsSync(resolve(tenantRoot, "package.json"))) {
69
+ return [];
70
+ }
71
+ return discoverTreeseedPackageAdapters(tenantRoot);
72
+ }
73
+ function loadTreeseedPlatformConfig(input) {
74
+ const tenantRoot = resolve(input.tenantRoot);
75
+ const deployConfigPath = resolveTreeseedDeployConfigPathFromRoot(tenantRoot);
76
+ const deployConfig = loadTreeseedDeployConfigFromPath(deployConfigPath);
77
+ const packages = discoverPlatformPackages(tenantRoot);
78
+ const applications = discoverTreeseedApplications(tenantRoot);
79
+ const capacityLaunch = loadCapacityLaunchFromPath(input.capacityConfigPath ?? input.env?.TREESEED_CAPACITY_CONFIG_PATH) ?? loadCapacityLaunchFromPackageManifest(tenantRoot);
80
+ const dev = loadTreeseedDevManifest(tenantRoot);
81
+ let envRegistry = null;
82
+ try {
83
+ envRegistry = collectTreeseedEnvironmentContext(tenantRoot, input.environment, { env: input.env });
84
+ } catch {
85
+ envRegistry = null;
86
+ }
87
+ return {
88
+ tenantRoot,
89
+ environment: input.environment,
90
+ deployConfig,
91
+ packages,
92
+ applications,
93
+ capacityLaunch,
94
+ dev,
95
+ envRegistry
96
+ };
97
+ }
98
+ export {
99
+ loadTreeseedPlatformConfig
100
+ };
@@ -0,0 +1,54 @@
1
+ import type { SeedContentRuntimeSource, SeedProjectArchitecture } from '../seeds/types.js';
2
+ export type TreeseedEffectiveContentSource = SeedContentRuntimeSource | 'missing';
3
+ export type TreeseedContentRuntimeMode = 'local' | 'treedx' | 'r2' | 'missing';
4
+ export type TreeseedContentRuntimeDiagnosticStatus = 'ready' | 'missing' | 'site_not_prepared' | 'unsupported_structure';
5
+ export type TreeseedContentRuntimeDiagnostic = {
6
+ code: string;
7
+ status: TreeseedContentRuntimeDiagnosticStatus;
8
+ source: TreeseedContentRuntimeMode;
9
+ summary: string;
10
+ relativePath?: string;
11
+ };
12
+ export type TreeseedLocalContentRuntimeSummary = {
13
+ requestedLocalContentMode?: 'auto' | 'none' | 'preview' | 'edit' | string;
14
+ materializationStatus?: string | null;
15
+ effectiveLocalPath?: string | null;
16
+ localPathExists?: boolean;
17
+ };
18
+ export type TreeseedR2ContentRuntimeMetadata = {
19
+ manifestKey?: string | null;
20
+ overlayKey?: string | null;
21
+ revision?: string | null;
22
+ };
23
+ export type TreeseedTreeDxContentRuntimeMetadata = {
24
+ libraryId?: string | null;
25
+ repositoryId?: string | null;
26
+ snapshotId?: string | null;
27
+ };
28
+ export type TreeseedContentRuntimeResolution = {
29
+ contentRuntimeSource: SeedContentRuntimeSource;
30
+ effectiveContentSource: TreeseedEffectiveContentSource;
31
+ mode: TreeseedContentRuntimeMode;
32
+ ready: boolean;
33
+ manifestKey: string | null;
34
+ overlayKey: string | null;
35
+ revision: string | null;
36
+ snapshotId: string | null;
37
+ diagnostics: TreeseedContentRuntimeDiagnostic[];
38
+ localPath?: string | null;
39
+ };
40
+ export declare function resolveTreeseedContentRuntimeSource(input: {
41
+ architecture: Pick<SeedProjectArchitecture, 'contentRuntimeSource' | 'contentPublishTarget'>;
42
+ local?: TreeseedLocalContentRuntimeSummary | null;
43
+ r2?: TreeseedR2ContentRuntimeMetadata | null;
44
+ treeDx?: TreeseedTreeDxContentRuntimeMetadata | null;
45
+ includeLocalPath?: boolean;
46
+ }): TreeseedContentRuntimeResolution;
47
+ export declare function inspectTreeseedContentStructure(input: {
48
+ projectRoot: string;
49
+ architecture: Pick<SeedProjectArchitecture, 'rootPath' | 'sitePath' | 'contentPath'>;
50
+ }): TreeseedContentRuntimeDiagnostic;
51
+ export declare function contentRuntimeMetadataFromTarget(target: unknown): {
52
+ r2: TreeseedR2ContentRuntimeMetadata;
53
+ treeDx: TreeseedTreeDxContentRuntimeMetadata;
54
+ };
@@ -0,0 +1,169 @@
1
+ import { existsSync, readdirSync, statSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ function isRecord(value) {
4
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
5
+ }
6
+ function text(value, fallback = "") {
7
+ return typeof value === "string" && value.trim() ? value.trim() : fallback;
8
+ }
9
+ function cleanRelativePath(value, fallback = ".") {
10
+ const raw = text(value, fallback).replace(/\\/gu, "/").replace(/^\/+/u, "");
11
+ const parts = raw.split("/").filter((part) => part && part !== ".");
12
+ if (parts.some((part) => part === "..")) return fallback;
13
+ return parts.length > 0 ? parts.join("/") : ".";
14
+ }
15
+ function contentRuntimeMode(source) {
16
+ if (source === "local_directory") return "local";
17
+ if (source === "treedx_snapshot") return "treedx";
18
+ if (source === "r2_published_manifest" || source === "r2_preview_overlay") return "r2";
19
+ return "missing";
20
+ }
21
+ function localStatusReady(status) {
22
+ return status === "existing_path_ready" || status === "managed_clone_ready" || status === "submodule_ready";
23
+ }
24
+ function localContentRequested(architecture, local) {
25
+ const mode = local?.requestedLocalContentMode;
26
+ return architecture.contentRuntimeSource === "local_directory" || mode === "preview" || mode === "edit";
27
+ }
28
+ function defaultManifestKey(architecture) {
29
+ const target = architecture.contentPublishTarget;
30
+ return target?.kind === "cloudflare_r2" && typeof target.manifestPath === "string" && target.manifestPath.trim() ? target.manifestPath.trim() : null;
31
+ }
32
+ function resolveTreeseedContentRuntimeSource(input) {
33
+ const diagnostics = [];
34
+ const localReady = input.local?.localPathExists === true || localStatusReady(input.local?.materializationStatus);
35
+ const localSelected = localReady && localContentRequested(input.architecture, input.local);
36
+ const source = localSelected ? "local_directory" : input.architecture.contentRuntimeSource ?? "r2_published_manifest";
37
+ const mode = contentRuntimeMode(source);
38
+ const manifestKey = input.r2?.manifestKey ?? defaultManifestKey(input.architecture);
39
+ const overlayKey = source === "r2_preview_overlay" ? input.r2?.overlayKey ?? null : null;
40
+ const snapshotId = source === "treedx_snapshot" ? input.treeDx?.snapshotId ?? null : null;
41
+ const revision = source === "r2_published_manifest" || source === "r2_preview_overlay" ? input.r2?.revision ?? null : null;
42
+ if (source === "local_directory") {
43
+ diagnostics.push({
44
+ code: localReady ? "local_content_ready" : "local_content_missing",
45
+ status: localReady ? "ready" : "missing",
46
+ source: "local",
47
+ summary: localReady ? "Local content path is available for runtime preview." : "Local content path is not available."
48
+ });
49
+ } else if (source === "treedx_snapshot") {
50
+ const ready = Boolean(snapshotId || input.treeDx?.libraryId || input.treeDx?.repositoryId);
51
+ diagnostics.push({
52
+ code: ready ? "treedx_snapshot_ready" : "treedx_snapshot_missing",
53
+ status: ready ? "ready" : "missing",
54
+ source: "treedx",
55
+ summary: ready ? "TreeDX content snapshot metadata is available." : "TreeDX content snapshot metadata is missing."
56
+ });
57
+ } else if (source === "r2_published_manifest" || source === "r2_preview_overlay") {
58
+ const ready = Boolean(manifestKey);
59
+ diagnostics.push({
60
+ code: ready ? "r2_manifest_ready" : "r2_manifest_missing",
61
+ status: ready ? "ready" : "missing",
62
+ source: "r2",
63
+ summary: ready ? "R2 published content manifest metadata is available." : "R2 published content manifest metadata is missing."
64
+ });
65
+ if (source === "r2_preview_overlay" && !overlayKey) {
66
+ diagnostics.push({
67
+ code: "r2_preview_overlay_missing",
68
+ status: "missing",
69
+ source: "r2",
70
+ summary: "R2 preview overlay metadata is missing."
71
+ });
72
+ }
73
+ }
74
+ return {
75
+ contentRuntimeSource: input.architecture.contentRuntimeSource,
76
+ effectiveContentSource: source,
77
+ mode,
78
+ ready: diagnostics.every((entry) => entry.status === "ready"),
79
+ manifestKey,
80
+ overlayKey,
81
+ revision,
82
+ snapshotId,
83
+ diagnostics,
84
+ ...input.includeLocalPath ? { localPath: input.local?.effectiveLocalPath ?? null } : {}
85
+ };
86
+ }
87
+ function hasMarkdownFile(root) {
88
+ if (!existsSync(root)) return false;
89
+ const stats = statSync(root);
90
+ if (stats.isFile()) return root.endsWith(".md") || root.endsWith(".mdx");
91
+ if (!stats.isDirectory()) return false;
92
+ return readdirSync(root, { withFileTypes: true }).some((entry) => {
93
+ const fullPath = resolve(root, entry.name);
94
+ if (entry.isDirectory()) return hasMarkdownFile(fullPath);
95
+ return entry.isFile() && (entry.name.endsWith(".md") || entry.name.endsWith(".mdx"));
96
+ });
97
+ }
98
+ function inspectTreeseedContentStructure(input) {
99
+ const rootPath = cleanRelativePath(input.architecture.rootPath);
100
+ const sitePath = cleanRelativePath(input.architecture.sitePath);
101
+ const contentPath = input.architecture.contentPath ? cleanRelativePath(input.architecture.contentPath) : null;
102
+ const siteRoot = resolve(input.projectRoot, rootPath === "." ? "" : rootPath, sitePath === "." ? "" : sitePath);
103
+ if (!existsSync(siteRoot)) {
104
+ return {
105
+ code: "site_not_prepared",
106
+ status: "site_not_prepared",
107
+ source: "local",
108
+ summary: "Site path is not prepared yet.",
109
+ relativePath: sitePath
110
+ };
111
+ }
112
+ const candidatePaths = [
113
+ contentPath,
114
+ sitePath === "." ? "src/content" : `${sitePath}/src/content`,
115
+ sitePath,
116
+ "content"
117
+ ].filter((entry) => Boolean(entry));
118
+ for (const candidate of [...new Set(candidatePaths)]) {
119
+ const absolute = resolve(input.projectRoot, rootPath === "." ? "" : rootPath, candidate === "." ? "" : candidate);
120
+ if (!existsSync(absolute)) continue;
121
+ if (hasMarkdownFile(absolute)) {
122
+ return {
123
+ code: "content_structure_ready",
124
+ status: "ready",
125
+ source: "local",
126
+ summary: "Content structure contains Markdown or MDX files.",
127
+ relativePath: candidate
128
+ };
129
+ }
130
+ return {
131
+ code: "unsupported_content_structure",
132
+ status: "unsupported_structure",
133
+ source: "local",
134
+ summary: "Content path exists but does not contain Markdown or MDX files.",
135
+ relativePath: candidate
136
+ };
137
+ }
138
+ return {
139
+ code: "content_structure_missing",
140
+ status: "missing",
141
+ source: "local",
142
+ summary: "No supported local content path was found.",
143
+ relativePath: contentPath ?? "src/content"
144
+ };
145
+ }
146
+ function contentRuntimeMetadataFromTarget(target) {
147
+ const record = isRecord(target) ? target : {};
148
+ const contentRuntime = isRecord(record.contentRuntime) ? record.contentRuntime : {};
149
+ const contentPublish = isRecord(record.contentPublish) ? record.contentPublish : {};
150
+ const r2 = isRecord(contentRuntime.r2) ? contentRuntime.r2 : isRecord(contentPublish.r2) ? contentPublish.r2 : {};
151
+ const treeDx = isRecord(contentRuntime.treeDx) ? contentRuntime.treeDx : contentPublish.provider === "treedx" ? contentPublish : {};
152
+ return {
153
+ r2: {
154
+ manifestKey: text(contentRuntime.manifestKey) || text(r2.manifestKey) || text(r2.manifestPath) || null,
155
+ overlayKey: text(contentRuntime.overlayKey) || text(r2.overlayKey) || null,
156
+ revision: text(contentRuntime.revision) || text(r2.revision) || null
157
+ },
158
+ treeDx: {
159
+ libraryId: text(treeDx.libraryId) || null,
160
+ repositoryId: text(treeDx.repositoryId) || null,
161
+ snapshotId: text(treeDx.snapshotId) || text(contentPublish.snapshotId) || null
162
+ }
163
+ };
164
+ }
165
+ export {
166
+ contentRuntimeMetadataFromTarget,
167
+ inspectTreeseedContentStructure,
168
+ resolveTreeseedContentRuntimeSource
169
+ };
@@ -1,4 +1,4 @@
1
- import type { CapacityProviderRegistrationRequest } from '../capacity-provider.ts';
1
+ import type { CapacityProviderRegistrationRequest } from '../capacity-provider.js';
2
2
  export type TreeseedFeatureName = 'docs' | 'books' | 'notes' | 'questions' | 'objectives' | 'proposals' | 'decisions' | 'agents' | 'forms';
3
3
  export type TreeseedContentCollection = 'pages' | 'notes' | 'questions' | 'objectives' | 'proposals' | 'decisions' | 'people' | 'agents' | 'books' | 'docs' | 'templates' | 'knowledge_packs' | 'workdays';
4
4
  export interface TreeseedFeatureModules {
@@ -226,6 +226,11 @@ export interface TreeseedManagedServiceRailwayConfig {
226
226
  serviceId?: string;
227
227
  serviceName?: string;
228
228
  rootDir?: string;
229
+ imageRef?: string;
230
+ sourceMode?: 'git' | 'image';
231
+ sourceRepo?: string;
232
+ sourceBranch?: string;
233
+ sourceRootDirectory?: string;
229
234
  buildCommand?: string;
230
235
  startCommand?: string;
231
236
  healthcheckPath?: string;
@@ -1,4 +1,4 @@
1
- import type { TreeseedDeployConfig, TreeseedWebCachePolicyConfig } from './contracts.ts';
1
+ import type { TreeseedDeployConfig, TreeseedWebCachePolicyConfig } from './contracts.js';
2
2
  export declare function resolveTreeseedDeployConfigPath(configPath?: string): string;
3
3
  export declare function resolveTreeseedDeployConfigPathFromRoot(tenantRoot: string, configPath?: string): string;
4
4
  export declare function deriveCloudflareWorkerName(config: TreeseedDeployConfig): string;
@@ -365,6 +365,12 @@ function parseManagedServiceConfig(value, label) {
365
365
  serviceId: optionalString(railway.serviceId),
366
366
  serviceName: optionalString(railway.serviceName),
367
367
  rootDir: optionalString(railway.rootDir),
368
+ imageRef: optionalString(railway.imageRef),
369
+ sourceMode: optionalEnum(railway.sourceMode, `${label}.railway.sourceMode`, ["git", "image"]),
370
+ sourceRepo: optionalString(railway.sourceRepo),
371
+ sourceBranch: optionalString(railway.sourceBranch),
372
+ sourceRootDirectory: optionalString(railway.sourceRootDirectory),
373
+ dockerfilePath: optionalString(railway.dockerfilePath),
368
374
  buildCommand: optionalString(railway.buildCommand),
369
375
  startCommand: optionalString(railway.startCommand),
370
376
  healthcheckPath: optionalString(railway.healthcheckPath),
@@ -615,7 +621,7 @@ function parseDeployConfig(raw) {
615
621
  hub,
616
622
  runtime,
617
623
  cloudflare: {
618
- accountId: optionalCloudflareAccountId(process.env.CLOUDFLARE_ACCOUNT_ID) ?? CLOUDFLARE_ACCOUNT_ID_PLACEHOLDER,
624
+ accountId: optionalCloudflareAccountId(process.env.TREESEED_CLOUDFLARE_ACCOUNT_ID) ?? CLOUDFLARE_ACCOUNT_ID_PLACEHOLDER,
619
625
  zoneId: optionalString(cloudflare.zoneId),
620
626
  workerName: optionalString(cloudflare.workerName),
621
627
  queueName: optionalString(cloudflare.queueName),
@@ -1,4 +1,4 @@
1
- import type { TreeseedDeployConfig } from './contracts.ts';
1
+ import type { TreeseedDeployConfig } from './contracts.js';
2
2
  export declare function getTreeseedDeployConfig(): TreeseedDeployConfig;
3
3
  export declare function resetTreeseedDeployConfigForTests(): void;
4
4
  export declare function getTreeseedFormsProvider(): string;
@@ -0,0 +1,66 @@
1
+ import type { TreeseedDesiredUnit, TreeseedReconcileSelector, TreeseedReconcileTarget } from '../reconcile/contracts.js';
2
+ import { type TreeseedLocalContentMode } from './local-content-materialization.js';
3
+ export type TreeseedDesiredEnvironment = 'local' | 'staging' | 'prod';
4
+ export type TreeseedPackageUnit = {
5
+ id: string;
6
+ name: string;
7
+ kind: string;
8
+ path: string;
9
+ version: string | null;
10
+ publishTarget: string | null;
11
+ manifestPath: string | null;
12
+ repository: string | null;
13
+ releaseCapability: 'npm' | 'image' | 'deploy-only' | 'none';
14
+ requiredSecrets: string[];
15
+ requiredVariables: string[];
16
+ githubEnvironments: string[];
17
+ };
18
+ export type TreeseedTemplateUnit = {
19
+ id: string;
20
+ name: string;
21
+ category: string;
22
+ path: string;
23
+ version: string | null;
24
+ repository: string | null;
25
+ manifestPath: string | null;
26
+ releaseTag: string | null;
27
+ recordPath: string;
28
+ };
29
+ export type TreeseedDesiredResourceKind = 'package-manifest' | 'template-manifest' | 'package-workflow' | 'package-image' | 'github-environment' | 'github-secret-binding' | 'github-variable-binding' | 'docker-image-build' | 'cloudflare-resource' | 'railway-project' | 'railway-environment' | 'railway-service' | 'railway-volume' | 'railway-domain' | 'local-process' | 'local-docker-compose' | 'local-treedx' | 'local-content-materialization' | 'capacity-provider' | 'branch-preview' | 'branch-preview-cleanup' | 'workflow-gate' | 'save-gate' | 'release-gate';
30
+ export type TreeseedDesiredResource = {
31
+ id: string;
32
+ kind: TreeseedDesiredResourceKind;
33
+ provider: string;
34
+ environment: TreeseedDesiredEnvironment;
35
+ packageId: string | null;
36
+ serviceId: string | null;
37
+ logicalName: string;
38
+ dependencies: string[];
39
+ spec: Record<string, unknown>;
40
+ source: {
41
+ type: 'reconcile-unit' | 'package-adapter';
42
+ id: string;
43
+ };
44
+ };
45
+ export type TreeseedDesiredResourceEdge = {
46
+ from: string;
47
+ to: string;
48
+ reason: 'depends-on' | 'releases' | 'hosts';
49
+ };
50
+ export type TreeseedDesiredResourceGraph = {
51
+ workspaceId: string;
52
+ environment: TreeseedDesiredEnvironment;
53
+ packages: TreeseedPackageUnit[];
54
+ templates: TreeseedTemplateUnit[];
55
+ resources: TreeseedDesiredResource[];
56
+ edges: TreeseedDesiredResourceEdge[];
57
+ fingerprints: Record<string, string>;
58
+ };
59
+ export declare function compileTreeseedDesiredResourceGraph({ tenantRoot, target, localContent, }: {
60
+ tenantRoot?: string;
61
+ target: TreeseedReconcileTarget;
62
+ localContent?: TreeseedLocalContentMode;
63
+ }): TreeseedDesiredResourceGraph;
64
+ export declare function selectTreeseedDesiredResources(graph: TreeseedDesiredResourceGraph, selector?: TreeseedReconcileSelector): TreeseedDesiredResourceGraph;
65
+ export declare function convertDesiredResourceToReconcileUnit(graph: TreeseedDesiredResourceGraph, resource: TreeseedDesiredResource): TreeseedDesiredUnit | null;
66
+ export declare function compileTreeseedDesiredUnitsFromGraph(graph: TreeseedDesiredResourceGraph, selector?: TreeseedReconcileSelector): TreeseedDesiredUnit[];