@treeseed/sdk 0.10.28 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +213 -7
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +118 -59
  27. package/dist/capacity-provider.js +235 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +3 -2
  36. package/dist/control-plane.js +38 -13
  37. package/dist/copilot.d.ts +3 -0
  38. package/dist/copilot.js +16 -1
  39. package/dist/d1-http.d.ts +1 -1
  40. package/dist/d1-store.d.ts +32 -57
  41. package/dist/d1-store.js +115 -318
  42. package/dist/db/d1.d.ts +1 -232
  43. package/dist/db/index.d.ts +3 -3
  44. package/dist/db/market-schema.d.ts +50900 -11018
  45. package/dist/db/market-schema.js +2313 -467
  46. package/dist/db/node-sqlite.d.ts +1 -232
  47. package/dist/db/node-sqlite.js +7 -2
  48. package/dist/db/schema.d.ts +0 -462
  49. package/dist/db/schema.js +2 -22
  50. package/dist/dispatch.d.ts +1 -1
  51. package/dist/dispatch.js +0 -11
  52. package/dist/fixture-support.js +52 -4
  53. package/dist/governance.d.ts +133 -0
  54. package/dist/governance.js +285 -0
  55. package/dist/graph/build.d.ts +2 -2
  56. package/dist/graph/context-query-contracts.d.ts +1 -1
  57. package/dist/graph/dsl.d.ts +1 -1
  58. package/dist/graph/query.d.ts +4 -4
  59. package/dist/graph/ranking.d.ts +1 -1
  60. package/dist/graph/schema.d.ts +1 -1
  61. package/dist/graph.d.ts +11 -11
  62. package/dist/guarantees/index.d.ts +425 -0
  63. package/dist/guarantees/index.js +1146 -0
  64. package/dist/hosting/apps.d.ts +12 -0
  65. package/dist/hosting/apps.js +107 -0
  66. package/dist/hosting/builtins.d.ts +25 -0
  67. package/dist/hosting/builtins.js +602 -0
  68. package/dist/hosting/contracts.d.ts +208 -0
  69. package/dist/hosting/contracts.js +0 -0
  70. package/dist/hosting/graph.d.ts +195 -0
  71. package/dist/hosting/graph.js +1092 -0
  72. package/dist/hosting/index.d.ts +4 -0
  73. package/dist/hosting/index.js +4 -0
  74. package/dist/index.d.ts +88 -67
  75. package/dist/index.js +142 -14
  76. package/dist/local-dev/managed-dev.d.ts +85 -0
  77. package/dist/local-dev/managed-dev.js +368 -0
  78. package/dist/managed-dependencies.d.ts +9 -0
  79. package/dist/managed-dependencies.js +10 -9
  80. package/dist/market-client.d.ts +327 -9
  81. package/dist/market-client.js +464 -20
  82. package/dist/model-registry.d.ts +1 -1
  83. package/dist/model-registry.js +19 -19
  84. package/dist/operations/agent-tools.d.ts +2 -11
  85. package/dist/operations/agent-tools.js +2 -14
  86. package/dist/operations/providers/default.d.ts +1 -1
  87. package/dist/operations/providers/default.js +20 -37
  88. package/dist/operations/repository-operations.d.ts +26 -2
  89. package/dist/operations/repository-operations.js +159 -1
  90. package/dist/operations/runtime.d.ts +3 -3
  91. package/dist/operations/services/bootstrap-runner.d.ts +4 -2
  92. package/dist/operations/services/bootstrap-runner.js +22 -2
  93. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  94. package/dist/operations/services/build-warning-policy.js +81 -82
  95. package/dist/operations/services/commit-message-provider.js +4 -4
  96. package/dist/operations/services/config-runtime.d.ts +83 -24
  97. package/dist/operations/services/config-runtime.js +449 -130
  98. package/dist/operations/services/deploy.d.ts +106 -624
  99. package/dist/operations/services/deploy.js +746 -263
  100. package/dist/operations/services/deployment-readiness.d.ts +30 -0
  101. package/dist/operations/services/deployment-readiness.js +206 -0
  102. package/dist/operations/services/git-remote-policy.js +12 -4
  103. package/dist/operations/services/git-runner.d.ts +66 -0
  104. package/dist/operations/services/git-runner.js +479 -0
  105. package/dist/operations/services/git-workflow.d.ts +45 -6
  106. package/dist/operations/services/git-workflow.js +251 -23
  107. package/dist/operations/services/github-actions-verification.d.ts +4 -1
  108. package/dist/operations/services/github-actions-verification.js +12 -3
  109. package/dist/operations/services/github-api.js +22 -6
  110. package/dist/operations/services/github-automation.d.ts +4 -4
  111. package/dist/operations/services/github-automation.js +19 -21
  112. package/dist/operations/services/github-credentials.d.ts +13 -0
  113. package/dist/operations/services/github-credentials.js +59 -0
  114. package/dist/operations/services/hosted-service-checks.d.ts +81 -0
  115. package/dist/operations/services/hosted-service-checks.js +478 -0
  116. package/dist/operations/services/hosting-audit.d.ts +2 -2
  117. package/dist/operations/services/hosting-audit.js +7 -7
  118. package/dist/operations/services/hub-launch.d.ts +1 -1
  119. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  120. package/dist/operations/services/hub-provider-launch.js +22 -17
  121. package/dist/operations/services/live-hosted-service-checks.d.ts +26 -0
  122. package/dist/operations/services/live-hosted-service-checks.js +463 -0
  123. package/dist/operations/services/local-dev.js +0 -1
  124. package/dist/operations/services/managed-host-security.d.ts +1 -1
  125. package/dist/operations/services/managed-host-security.js +1 -1
  126. package/dist/operations/services/managed-repositories.d.ts +37 -0
  127. package/dist/operations/services/managed-repositories.js +177 -0
  128. package/dist/operations/services/operations-runner-smoke.d.ts +31 -0
  129. package/dist/operations/services/operations-runner-smoke.js +198 -0
  130. package/dist/operations/services/package-adapters.d.ts +170 -0
  131. package/dist/operations/services/package-adapters.js +859 -0
  132. package/dist/operations/services/package-reference-policy.d.ts +13 -88
  133. package/dist/operations/services/package-reference-policy.js +96 -215
  134. package/dist/operations/services/project-host-operations.d.ts +4 -4
  135. package/dist/operations/services/project-platform.d.ts +57 -173
  136. package/dist/operations/services/project-platform.js +80 -111
  137. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  138. package/dist/operations/services/project-web-monitor.js +122 -5
  139. package/dist/operations/services/railway-api.d.ts +117 -5
  140. package/dist/operations/services/railway-api.js +915 -93
  141. package/dist/operations/services/railway-deploy.d.ts +30 -112
  142. package/dist/operations/services/railway-deploy.js +521 -961
  143. package/dist/operations/services/release-history.js +3 -4
  144. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  145. package/dist/operations/services/release-proof-ledger.js +81 -0
  146. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  147. package/dist/operations/services/release-proof-planner.js +195 -0
  148. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  149. package/dist/operations/services/release-proof-runner.js +169 -0
  150. package/dist/operations/services/release-proof.d.ts +81 -0
  151. package/dist/operations/services/release-proof.js +79 -0
  152. package/dist/operations/services/repository-save-orchestrator.d.ts +8 -7
  153. package/dist/operations/services/repository-save-orchestrator.js +604 -212
  154. package/dist/operations/services/runtime-paths.d.ts +1 -3
  155. package/dist/operations/services/runtime-paths.js +0 -4
  156. package/dist/operations/services/runtime-tools.d.ts +1 -191
  157. package/dist/operations/services/runtime-tools.js +4 -443
  158. package/dist/operations/services/save-deploy-preflight.js +9 -1
  159. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  160. package/dist/operations/services/template-host-bindings.js +3 -2
  161. package/dist/operations/services/template-registry.d.ts +6 -6
  162. package/dist/operations/services/template-registry.js +33 -14
  163. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  164. package/dist/operations/services/verification-cache.d.ts +25 -0
  165. package/dist/operations/services/verification-cache.js +71 -0
  166. package/dist/operations/services/workflow-timing.d.ts +25 -0
  167. package/dist/operations/services/workflow-timing.js +79 -0
  168. package/dist/operations/services/workspace-dependency-mode.js +50 -5
  169. package/dist/operations/services/workspace-preflight.js +8 -8
  170. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  171. package/dist/operations/services/workspace-save.d.ts +1 -0
  172. package/dist/operations/services/workspace-save.js +42 -19
  173. package/dist/operations/services/workspace-tools.js +42 -7
  174. package/dist/operations-registry.d.ts +1 -1
  175. package/dist/operations-registry.js +5 -6
  176. package/dist/operations-types.d.ts +1 -1
  177. package/dist/operations.d.ts +17 -11
  178. package/dist/operations.js +57 -3
  179. package/dist/platform/book-export.js +2 -0
  180. package/dist/platform/books-data.d.ts +1 -1
  181. package/dist/platform/config.d.ts +27 -0
  182. package/dist/platform/config.js +100 -0
  183. package/dist/platform/content-runtime-source.d.ts +54 -0
  184. package/dist/platform/content-runtime-source.js +169 -0
  185. package/dist/platform/contracts.d.ts +38 -2
  186. package/dist/platform/deploy-config.d.ts +1 -1
  187. package/dist/platform/deploy-config.js +80 -9
  188. package/dist/platform/deploy-runtime.d.ts +1 -1
  189. package/dist/platform/desired-state.d.ts +63 -0
  190. package/dist/platform/desired-state.js +1021 -0
  191. package/dist/platform/env.yaml +568 -45
  192. package/dist/platform/environment.d.ts +3 -2
  193. package/dist/platform/environment.js +122 -21
  194. package/dist/platform/local-content-materialization.d.ts +9 -0
  195. package/dist/platform/local-content-materialization.js +212 -0
  196. package/dist/platform/plugin.d.ts +13 -4
  197. package/dist/platform/plugins/runtime.d.ts +3 -3
  198. package/dist/platform/plugins/runtime.js +62 -1
  199. package/dist/platform/plugins.d.ts +6 -6
  200. package/dist/platform/published-content-pipeline.d.ts +3 -3
  201. package/dist/platform/published-content-pipeline.js +5 -1
  202. package/dist/platform/published-content.d.ts +4 -3
  203. package/dist/platform/site-config-schema.d.ts +1 -0
  204. package/dist/platform/site-config-schema.js +4 -1
  205. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  206. package/dist/platform/tenant-config.d.ts +1 -1
  207. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  208. package/dist/platform/utils/site-config-schema.js +400 -461
  209. package/dist/platform-operation-store.d.ts +1 -1
  210. package/dist/platform-operation-store.js +2 -2
  211. package/dist/platform-operations.js +1 -1
  212. package/dist/plugin-default.d.ts +1 -1
  213. package/dist/plugin-default.js +27 -12
  214. package/dist/project-import.d.ts +91 -0
  215. package/dist/project-import.js +257 -0
  216. package/dist/project-workflow.d.ts +1 -1
  217. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  218. package/dist/reconcile/bootstrap-systems.js +5 -5
  219. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  220. package/dist/reconcile/builtin-adapters.js +3190 -429
  221. package/dist/reconcile/contracts.d.ts +23 -6
  222. package/dist/reconcile/desired-state.d.ts +2 -192
  223. package/dist/reconcile/desired-state.js +29 -38
  224. package/dist/reconcile/engine.d.ts +61 -395
  225. package/dist/reconcile/engine.js +229 -44
  226. package/dist/reconcile/index.d.ts +10 -8
  227. package/dist/reconcile/index.js +2 -0
  228. package/dist/reconcile/live-acceptance.d.ts +100 -0
  229. package/dist/reconcile/live-acceptance.js +2027 -0
  230. package/dist/reconcile/platform.d.ts +104 -0
  231. package/dist/reconcile/platform.js +100 -0
  232. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  233. package/dist/reconcile/providers/docker-private.js +101 -0
  234. package/dist/reconcile/providers/github-private.d.ts +65 -0
  235. package/dist/reconcile/providers/github-private.js +119 -0
  236. package/dist/reconcile/providers/local-private.d.ts +28 -0
  237. package/dist/reconcile/providers/local-private.js +75 -0
  238. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  239. package/dist/reconcile/providers/railway-iac.js +275 -0
  240. package/dist/reconcile/providers/release-private.d.ts +92 -0
  241. package/dist/reconcile/providers/release-private.js +152 -0
  242. package/dist/reconcile/registry.d.ts +2 -2
  243. package/dist/reconcile/registry.js +16 -1
  244. package/dist/reconcile/state.d.ts +1 -1
  245. package/dist/reconcile/state.js +7 -44
  246. package/dist/reconcile/units.d.ts +1 -1
  247. package/dist/reconcile/units.js +9 -3
  248. package/dist/remote.d.ts +6 -6
  249. package/dist/scenes/artifacts.d.ts +16 -0
  250. package/dist/scenes/artifacts.js +61 -0
  251. package/dist/scenes/auth.d.ts +2 -0
  252. package/dist/scenes/auth.js +28 -0
  253. package/dist/scenes/base-url.d.ts +12 -0
  254. package/dist/scenes/base-url.js +123 -0
  255. package/dist/scenes/builtin-plugins.d.ts +2 -0
  256. package/dist/scenes/builtin-plugins.js +447 -0
  257. package/dist/scenes/checkpoints.d.ts +14 -0
  258. package/dist/scenes/checkpoints.js +33 -0
  259. package/dist/scenes/device-matrix.d.ts +2 -0
  260. package/dist/scenes/device-matrix.js +97 -0
  261. package/dist/scenes/devices.d.ts +11 -0
  262. package/dist/scenes/devices.js +22 -0
  263. package/dist/scenes/diagnostics.d.ts +5 -0
  264. package/dist/scenes/diagnostics.js +22 -0
  265. package/dist/scenes/diagram-providers.d.ts +2 -0
  266. package/dist/scenes/diagram-providers.js +181 -0
  267. package/dist/scenes/diagram-validation.d.ts +22 -0
  268. package/dist/scenes/diagram-validation.js +74 -0
  269. package/dist/scenes/environment.d.ts +2 -0
  270. package/dist/scenes/environment.js +65 -0
  271. package/dist/scenes/evidence-bundle.d.ts +5 -0
  272. package/dist/scenes/evidence-bundle.js +42 -0
  273. package/dist/scenes/evidence-report.d.ts +10 -0
  274. package/dist/scenes/evidence-report.js +73 -0
  275. package/dist/scenes/evidence.d.ts +16 -0
  276. package/dist/scenes/evidence.js +277 -0
  277. package/dist/scenes/index.d.ts +48 -0
  278. package/dist/scenes/index.js +312 -0
  279. package/dist/scenes/inspect.d.ts +9 -0
  280. package/dist/scenes/inspect.js +64 -0
  281. package/dist/scenes/loader.d.ts +3 -0
  282. package/dist/scenes/loader.js +38 -0
  283. package/dist/scenes/logs.d.ts +2 -0
  284. package/dist/scenes/logs.js +47 -0
  285. package/dist/scenes/operations.d.ts +3 -0
  286. package/dist/scenes/operations.js +128 -0
  287. package/dist/scenes/phase0.d.ts +9 -0
  288. package/dist/scenes/phase0.js +637 -0
  289. package/dist/scenes/planner.d.ts +12 -0
  290. package/dist/scenes/planner.js +166 -0
  291. package/dist/scenes/playwright-adapter.d.ts +2 -0
  292. package/dist/scenes/playwright-adapter.js +63 -0
  293. package/dist/scenes/plugins.d.ts +5 -0
  294. package/dist/scenes/plugins.js +115 -0
  295. package/dist/scenes/progress.d.ts +17 -0
  296. package/dist/scenes/progress.js +24 -0
  297. package/dist/scenes/publish-destinations.d.ts +12 -0
  298. package/dist/scenes/publish-destinations.js +99 -0
  299. package/dist/scenes/publish-plan-report.d.ts +10 -0
  300. package/dist/scenes/publish-plan-report.js +70 -0
  301. package/dist/scenes/publish-plan.d.ts +15 -0
  302. package/dist/scenes/publish-plan.js +248 -0
  303. package/dist/scenes/publish-redaction.d.ts +16 -0
  304. package/dist/scenes/publish-redaction.js +148 -0
  305. package/dist/scenes/publish-release-record.d.ts +13 -0
  306. package/dist/scenes/publish-release-record.js +34 -0
  307. package/dist/scenes/publish-report.d.ts +10 -0
  308. package/dist/scenes/publish-report.js +67 -0
  309. package/dist/scenes/publish.d.ts +16 -0
  310. package/dist/scenes/publish.js +298 -0
  311. package/dist/scenes/registry.d.ts +12 -0
  312. package/dist/scenes/registry.js +65 -0
  313. package/dist/scenes/remotion-adapter.d.ts +3 -0
  314. package/dist/scenes/remotion-adapter.js +94 -0
  315. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  316. package/dist/scenes/remotion-composition-registry.js +12 -0
  317. package/dist/scenes/remotion-compositions.d.ts +15 -0
  318. package/dist/scenes/remotion-compositions.js +464 -0
  319. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  320. package/dist/scenes/remotion-diagrams.js +188 -0
  321. package/dist/scenes/remotion-input.d.ts +13 -0
  322. package/dist/scenes/remotion-input.js +291 -0
  323. package/dist/scenes/remotion-visuals.d.ts +29 -0
  324. package/dist/scenes/remotion-visuals.js +198 -0
  325. package/dist/scenes/render-media-assets.d.ts +9 -0
  326. package/dist/scenes/render-media-assets.js +117 -0
  327. package/dist/scenes/render-report.d.ts +10 -0
  328. package/dist/scenes/render-report.js +27 -0
  329. package/dist/scenes/render.d.ts +2 -0
  330. package/dist/scenes/render.js +218 -0
  331. package/dist/scenes/reporter.d.ts +3 -0
  332. package/dist/scenes/reporter.js +101 -0
  333. package/dist/scenes/resume.d.ts +2 -0
  334. package/dist/scenes/resume.js +79 -0
  335. package/dist/scenes/runner.d.ts +2 -0
  336. package/dist/scenes/runner.js +674 -0
  337. package/dist/scenes/schema.d.ts +6 -0
  338. package/dist/scenes/schema.js +994 -0
  339. package/dist/scenes/seed.d.ts +2 -0
  340. package/dist/scenes/seed.js +83 -0
  341. package/dist/scenes/segments.d.ts +15 -0
  342. package/dist/scenes/segments.js +79 -0
  343. package/dist/scenes/selectors.d.ts +3 -0
  344. package/dist/scenes/selectors.js +21 -0
  345. package/dist/scenes/timeline.d.ts +11 -0
  346. package/dist/scenes/timeline.js +26 -0
  347. package/dist/scenes/timeouts.d.ts +6 -0
  348. package/dist/scenes/timeouts.js +17 -0
  349. package/dist/scenes/training-captions.d.ts +14 -0
  350. package/dist/scenes/training-captions.js +98 -0
  351. package/dist/scenes/training-report.d.ts +10 -0
  352. package/dist/scenes/training-report.js +78 -0
  353. package/dist/scenes/training-transcript.d.ts +24 -0
  354. package/dist/scenes/training-transcript.js +204 -0
  355. package/dist/scenes/training.d.ts +10 -0
  356. package/dist/scenes/training.js +134 -0
  357. package/dist/scenes/types.d.ts +1872 -0
  358. package/dist/scenes/types.js +8 -0
  359. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  360. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  361. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  362. package/dist/scenes/visual-audit-fixtures.js +210 -0
  363. package/dist/scenes/visual-audit-report.d.ts +11 -0
  364. package/dist/scenes/visual-audit-report.js +85 -0
  365. package/dist/scenes/visual-audit-review.d.ts +23 -0
  366. package/dist/scenes/visual-audit-review.js +829 -0
  367. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  368. package/dist/scenes/visual-audit-routes.js +308 -0
  369. package/dist/scenes/visual-audit.d.ts +3 -0
  370. package/dist/scenes/visual-audit.js +596 -0
  371. package/dist/scripts/build-dist.js +154 -40
  372. package/dist/scripts/check-build-warnings.js +42 -53
  373. package/dist/scripts/cleanup-markdown.js +1 -1
  374. package/dist/scripts/cli-test-fixtures.js +24 -28
  375. package/dist/scripts/deployment-readiness.js +20 -0
  376. package/dist/scripts/generate-treedx-openapi-types.js +186 -0
  377. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  378. package/dist/scripts/operations-runner-smoke.js +16 -0
  379. package/dist/scripts/package-tools.js +12 -1
  380. package/dist/scripts/prepare.js +3 -7
  381. package/dist/scripts/release-verify.js +6 -6
  382. package/dist/scripts/run-fixture-astro-command.js +1 -1
  383. package/dist/scripts/template-catalog.test.js +68 -82
  384. package/dist/scripts/tenant-dev.js +0 -10
  385. package/dist/scripts/tenant-workflow-action.js +10 -1
  386. package/dist/scripts/test-cloudflare-local.js +1 -1
  387. package/dist/scripts/test-scaffold.js +0 -1
  388. package/dist/scripts/test-smoke.js +3 -3
  389. package/dist/scripts/treeseed-build-dist.js +4 -7
  390. package/dist/scripts/treeseed-release-verify.js +1 -1
  391. package/dist/scripts/verify-driver.js +30 -21
  392. package/dist/scripts/workflow-commands.test.js +18 -27
  393. package/dist/scripts/workspace-command-e2e.js +1 -1
  394. package/dist/scripts/workspace-lint.js +6 -0
  395. package/dist/scripts/workspace-release-test.js +90 -1
  396. package/dist/scripts/workspace-test.js +6 -0
  397. package/dist/sdk-dispatch.d.ts +1 -1
  398. package/dist/sdk-dispatch.js +0 -16
  399. package/dist/sdk-fields.d.ts +1 -1
  400. package/dist/sdk-filters.d.ts +1 -1
  401. package/dist/sdk-types.d.ts +1352 -116
  402. package/dist/sdk-types.js +413 -2
  403. package/dist/sdk.d.ts +106 -100
  404. package/dist/sdk.js +211 -51
  405. package/dist/secrets-capability.d.ts +421 -0
  406. package/dist/secrets-capability.js +530 -0
  407. package/dist/seeds/normalize.js +1 -0
  408. package/dist/seeds/planner.js +38 -0
  409. package/dist/seeds/schema.js +293 -4
  410. package/dist/seeds/types.d.ts +60 -0
  411. package/dist/seeds/types.js +9 -1
  412. package/dist/service-credentials.d.ts +54 -0
  413. package/dist/service-credentials.js +112 -0
  414. package/dist/stores/cursor-store.d.ts +2 -2
  415. package/dist/stores/envelopes.d.ts +1 -1
  416. package/dist/stores/helpers.d.ts +1 -1
  417. package/dist/stores/lease-store.d.ts +2 -2
  418. package/dist/stores/message-store.d.ts +2 -2
  419. package/dist/stores/operational-store.d.ts +3 -26
  420. package/dist/stores/operational-store.js +0 -225
  421. package/dist/stores/project-workflow-store.d.ts +2 -2
  422. package/dist/stores/run-store.d.ts +2 -3
  423. package/dist/stores/run-store.js +0 -98
  424. package/dist/stores/subscription-store.d.ts +2 -3
  425. package/dist/stores/subscription-store.js +0 -100
  426. package/dist/template-catalog.d.ts +1 -1
  427. package/dist/template-launch-requirements.d.ts +2 -2
  428. package/dist/template-launch-requirements.js +9 -0
  429. package/dist/template-launch-ui.d.ts +2 -2
  430. package/dist/treedx/adapters.d.ts +6 -0
  431. package/dist/treedx/adapters.js +36 -0
  432. package/dist/treedx/client.d.ts +222 -0
  433. package/dist/treedx/client.js +871 -0
  434. package/dist/treedx/errors.d.ts +13 -0
  435. package/dist/treedx/errors.js +17 -0
  436. package/dist/treedx/federated-client.d.ts +27 -0
  437. package/dist/treedx/federated-client.js +158 -0
  438. package/dist/treedx/generated/openapi-types.d.ts +3558 -0
  439. package/dist/treedx/generated/openapi-types.js +0 -0
  440. package/dist/treedx/graph-adapter.d.ts +33 -0
  441. package/dist/treedx/graph-adapter.js +156 -0
  442. package/dist/treedx/index.d.ts +14 -0
  443. package/dist/treedx/index.js +48 -0
  444. package/dist/treedx/market-integration.d.ts +27 -0
  445. package/dist/treedx/market-integration.js +131 -0
  446. package/dist/treedx/ports.d.ts +166 -0
  447. package/dist/treedx/ports.js +231 -0
  448. package/dist/treedx/query-adapter.d.ts +19 -0
  449. package/dist/treedx/query-adapter.js +62 -0
  450. package/dist/treedx/registry-client.d.ts +11 -0
  451. package/dist/treedx/registry-client.js +19 -0
  452. package/dist/treedx/repository-adapter.d.ts +45 -0
  453. package/dist/treedx/repository-adapter.js +319 -0
  454. package/dist/treedx/sdk-integration.d.ts +27 -0
  455. package/dist/treedx/sdk-integration.js +63 -0
  456. package/dist/treedx/types.d.ts +1084 -0
  457. package/dist/treedx/types.js +8 -0
  458. package/dist/treedx/workspace-adapter.d.ts +27 -0
  459. package/dist/treedx/workspace-adapter.js +65 -0
  460. package/dist/treedx-backends.d.ts +220 -0
  461. package/dist/treedx-backends.js +634 -0
  462. package/dist/treedx-client.d.ts +89 -0
  463. package/dist/treedx-client.js +184 -0
  464. package/dist/treeseed/services/compose.yml +2 -3
  465. package/dist/treeseed/template-catalog/catalog.fixture.json +27 -27
  466. package/dist/types/agents.d.ts +256 -0
  467. package/dist/types/agents.js +42 -1
  468. package/dist/verification.d.ts +1 -0
  469. package/dist/verification.js +143 -14
  470. package/dist/workflow/operations.d.ts +580 -523
  471. package/dist/workflow/operations.js +2084 -1279
  472. package/dist/workflow/policy.js +19 -7
  473. package/dist/workflow/runs.d.ts +9 -3
  474. package/dist/workflow/runs.js +66 -26
  475. package/dist/workflow/session.d.ts +4 -1
  476. package/dist/workflow/session.js +50 -10
  477. package/dist/workflow/worktrees.d.ts +6 -2
  478. package/dist/workflow/worktrees.js +98 -15
  479. package/dist/workflow-state.d.ts +17 -4
  480. package/dist/workflow-state.js +68 -41
  481. package/dist/workflow-support.d.ts +26 -17
  482. package/dist/workflow-support.js +84 -24
  483. package/dist/workflow.d.ts +51 -16
  484. package/dist/workflow.js +19 -7
  485. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  486. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  487. package/drizzle/market/0004_treedx_market_integration.sql +99 -0
  488. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  489. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  490. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  491. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  492. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  493. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  494. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  495. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  496. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  497. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  498. package/package.json +106 -18
  499. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  500. package/templates/github/deploy-web.workflow.yml +49 -12
  501. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  502. package/dist/operations/services/mailpit-runtime.js +0 -67
  503. package/dist/operations/services/release-candidate.d.ts +0 -41
  504. package/dist/operations/services/release-candidate.js +0 -616
  505. package/dist/scripts/ensure-mailpit.js +0 -48
  506. package/dist/scripts/logs-mailpit.js +0 -2
  507. package/dist/scripts/run-ts.js +0 -45
  508. package/dist/scripts/stop-mailpit.js +0 -5
  509. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -2,6 +2,7 @@ import {
2
2
  TREESEED_REMOTE_CONTRACT_HEADER,
3
3
  TREESEED_REMOTE_CONTRACT_VERSION
4
4
  } from "./remote.js";
5
+ import { parse as parseYaml } from "yaml";
5
6
  import {
6
7
  collectTreeseedConfigSeedValues,
7
8
  collectTreeseedEnvironmentContext,
@@ -11,12 +12,19 @@ import {
11
12
  const CAPACITY_PROVIDER_ENDPOINTS = {
12
13
  register: "/v1/provider/register",
13
14
  heartbeat: "/v1/provider/heartbeat",
15
+ checkIn: "/v1/provider/check-in",
16
+ sessions: "/v1/provider/sessions",
14
17
  portfolio: "/v1/provider/portfolio",
15
18
  workdays: "/v1/provider/workdays",
16
- claimTask: "/v1/provider/tasks/claim",
17
- taskEvents: (taskId) => `/v1/provider/tasks/${encodeURIComponent(taskId)}/events`,
18
- completeTask: (taskId) => `/v1/provider/tasks/${encodeURIComponent(taskId)}/complete`,
19
- failTask: (taskId) => `/v1/provider/tasks/${encodeURIComponent(taskId)}/fail`,
19
+ nextAssignment: "/v1/provider/assignments/next",
20
+ assignment: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}`,
21
+ assignmentRenew: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/renew`,
22
+ assignmentReturn: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/return`,
23
+ assignmentComplete: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/complete`,
24
+ assignmentFail: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/fail`,
25
+ assignmentModeRuns: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/mode-runs`,
26
+ assignmentWorkflowOperationDispatch: (assignmentId, operationId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/workflow-operations/${encodeURIComponent(operationId)}/dispatch`,
27
+ assignmentExplanation: (assignmentId) => `/v1/provider/assignments/${encodeURIComponent(assignmentId)}/explanation`,
20
28
  usage: "/v1/provider/usage",
21
29
  reports: "/v1/provider/reports"
22
30
  };
@@ -24,20 +32,23 @@ const CAPACITY_PROVIDER_SCOPES = [
24
32
  "provider:register",
25
33
  "provider:heartbeat",
26
34
  "provider:portfolio:read",
27
- "provider:tasks:claim",
28
- "provider:tasks:update",
35
+ "provider:assignments:read",
36
+ "provider:assignments:write",
29
37
  "provider:usage:report",
30
38
  "provider:reports:write",
31
39
  "provider:capabilities:write"
32
40
  ];
33
41
  const CAPACITY_PROVIDER_ENV_KEYS = [
42
+ "TREESEED_MANAGEMENT_API_URL",
34
43
  "TREESEED_MARKET_URL",
35
44
  "TREESEED_MARKET_ID",
45
+ "TREESEED_MANAGER_ID",
46
+ "TREESEED_CAPACITY_PROVIDER_ID",
47
+ "TREESEED_CAPACITY_PROVIDER_TEAM_ID",
36
48
  "TREESEED_CAPACITY_PROVIDER_API_KEY",
37
49
  "TREESEED_PROVIDER_HOST_DATA_DIR",
50
+ "TREESEED_HOST_CODEX_AUTH_FILE",
38
51
  "TREESEED_PROVIDER_DATA_DIR",
39
- "TREESEED_PROVIDER_API_PORT",
40
- "TREESEED_PROVIDER_HOST_API_PORT",
41
52
  "TREESEED_PROVIDER_ENVIRONMENT",
42
53
  "TREESEED_PROVIDER_CAPABILITIES_FILE",
43
54
  "TREESEED_PROVIDER_BUDGET_FILE",
@@ -48,9 +59,25 @@ const CAPACITY_PROVIDER_ENV_KEYS = [
48
59
  "TREESEED_PROVIDER_STARTUP_MODE",
49
60
  "TREESEED_CODEX_AUTH_FILE",
50
61
  "TREESEED_CODEX_AUTH_JSON_B64",
51
- "TREESEED_CODEX_AUTH_OVERWRITE"
62
+ "TREESEED_CODEX_AUTH_OVERWRITE",
63
+ "TREESEED_TREEDX_BASE_URL",
64
+ "TREESEED_TREEDX_URL",
65
+ "TREESEED_TREEDX_TOKEN",
66
+ "TREESEED_TREEDX_REPO_ID",
67
+ "TREESEED_TREEDX_REF",
68
+ "TREESEED_TREEDX_WORKSPACE_ID",
69
+ "TREESEED_TREEDX_JWT_ISSUER",
70
+ "TREESEED_TREEDX_JWT_AUDIENCE",
71
+ "TREESEED_TREEDX_JWT_HS256_SECRET",
72
+ "TREESEED_TREEDX_PROXY_ACTOR_ID",
73
+ "TREESEED_TREEDX_PROXY_TENANT_ID"
52
74
  ];
53
75
  const CAPACITY_PROVIDER_DEPLOYMENT_SERVICE_ROLES = ["api", "manager", "runner"];
76
+ const DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES = {
77
+ api: "treeseed/agent-provider-api",
78
+ manager: "treeseed/agent-manager",
79
+ runner: "treeseed/agent-runner"
80
+ };
54
81
  class CapacityProviderApiError extends Error {
55
82
  constructor(message, status, payload) {
56
83
  super(message);
@@ -158,6 +185,26 @@ function assertCapacityProviderPortfolioManifest(value) {
158
185
  requireString(project, "slug", `Capacity provider portfolio project ${index}`);
159
186
  requireString(project, "name", `Capacity provider portfolio project ${index}`);
160
187
  if (!isRecord(project.repository)) throw new Error(`Capacity provider portfolio project ${index} is missing repository.`);
188
+ if (project.repositoryTopology !== void 0) {
189
+ if (!isRecord(project.repositoryTopology)) {
190
+ throw new Error(`Capacity provider portfolio project ${index} repositoryTopology must be an object.`);
191
+ }
192
+ if (!isRecord(project.repositoryTopology.contentRepository)) {
193
+ throw new Error(`Capacity provider portfolio project ${index} repositoryTopology is missing contentRepository.`);
194
+ }
195
+ if (project.repositoryTopology.contentRepository.accessMode !== "treedx") {
196
+ throw new Error(`Capacity provider portfolio project ${index} contentRepository must use treedx access.`);
197
+ }
198
+ if (!isRecord(project.repositoryTopology.siteRepository)) {
199
+ throw new Error(`Capacity provider portfolio project ${index} repositoryTopology is missing siteRepository.`);
200
+ }
201
+ if (project.repositoryTopology.siteRepository.accessMode !== "filesystem") {
202
+ throw new Error(`Capacity provider portfolio project ${index} siteRepository must use filesystem access.`);
203
+ }
204
+ if (project.repositoryTopology.projectRepository !== void 0 && project.repositoryTopology.projectRepository !== null && (!isRecord(project.repositoryTopology.projectRepository) || project.repositoryTopology.projectRepository.accessMode !== "filesystem")) {
205
+ throw new Error(`Capacity provider portfolio project ${index} projectRepository must use filesystem access.`);
206
+ }
207
+ }
161
208
  if (!isRecord(project.agentSpecs)) throw new Error(`Capacity provider portfolio project ${index} is missing agentSpecs.`);
162
209
  if (!isRecord(project.workPolicy)) throw new Error(`Capacity provider portfolio project ${index} is missing workPolicy.`);
163
210
  }
@@ -166,13 +213,15 @@ function resolveCapacityProviderEnvironment(input) {
166
213
  const env = {
167
214
  TREESEED_MARKET_URL: normalizeBaseUrl(input.marketUrl),
168
215
  TREESEED_MARKET_ID: input.marketId.trim(),
216
+ TREESEED_MANAGER_ID: input.marketId.trim(),
169
217
  TREESEED_CAPACITY_PROVIDER_API_KEY: input.apiKey.trim(),
170
218
  TREESEED_PROVIDER_DATA_DIR: input.providerDataDir ?? "/data",
171
- TREESEED_PROVIDER_API_PORT: stringValue(input.providerApiPort, "3100"),
172
219
  TREESEED_PROVIDER_ENVIRONMENT: input.providerEnvironment ?? "local"
173
220
  };
174
- if (!env.TREESEED_MARKET_ID) throw new Error("Capacity provider Market ID is required.");
221
+ env.TREESEED_MANAGEMENT_API_URL = env.TREESEED_MARKET_URL || "https://api.treeseed.dev";
175
222
  if (!env.TREESEED_CAPACITY_PROVIDER_API_KEY) throw new Error("Capacity provider API key is required.");
223
+ if (input.providerId) env.TREESEED_CAPACITY_PROVIDER_ID = input.providerId;
224
+ if (input.teamId) env.TREESEED_CAPACITY_PROVIDER_TEAM_ID = input.teamId;
176
225
  if (input.providerHostDataDir) env.TREESEED_PROVIDER_HOST_DATA_DIR = input.providerHostDataDir;
177
226
  if (input.capabilitiesFile) env.TREESEED_PROVIDER_CAPABILITIES_FILE = input.capabilitiesFile;
178
227
  if (input.budgetFile) env.TREESEED_PROVIDER_BUDGET_FILE = input.budgetFile;
@@ -215,12 +264,14 @@ function resolveCapacityProviderLaunchEnvironment(input = {}) {
215
264
  const diagnostic = input.diagnostic === true || values.TREESEED_PROVIDER_STARTUP_MODE === "diagnostic";
216
265
  const resolved = {
217
266
  TREESEED_PROVIDER_DATA_DIR: "/data",
218
- TREESEED_PROVIDER_API_PORT: "3100",
219
267
  TREESEED_PROVIDER_ENVIRONMENT: scope,
220
268
  ...values
221
269
  };
222
- if (!resolved.TREESEED_PROVIDER_HOST_API_PORT) {
223
- resolved.TREESEED_PROVIDER_HOST_API_PORT = resolved.TREESEED_PROVIDER_API_PORT;
270
+ if (!resolved.TREESEED_MARKET_ID && resolved.TREESEED_MANAGER_ID) {
271
+ resolved.TREESEED_MARKET_ID = resolved.TREESEED_MANAGER_ID;
272
+ }
273
+ if (!resolved.TREESEED_MANAGER_ID && resolved.TREESEED_MARKET_ID) {
274
+ resolved.TREESEED_MANAGER_ID = resolved.TREESEED_MARKET_ID;
224
275
  }
225
276
  if (!resolved.TREESEED_PROVIDER_HOST_DATA_DIR) {
226
277
  resolved.TREESEED_PROVIDER_HOST_DATA_DIR = ".treeseed/local-capacity-provider/data";
@@ -229,8 +280,6 @@ function resolveCapacityProviderLaunchEnvironment(input = {}) {
229
280
  resolved.TREESEED_PROVIDER_STARTUP_MODE = "diagnostic";
230
281
  }
231
282
  const required = [
232
- "TREESEED_MARKET_URL",
233
- "TREESEED_MARKET_ID",
234
283
  ...diagnostic ? [] : ["TREESEED_CAPACITY_PROVIDER_API_KEY"],
235
284
  "TREESEED_PROVIDER_HOST_DATA_DIR"
236
285
  ];
@@ -261,8 +310,12 @@ function persistCapacityProviderConnectionToTreeseedConfig(input) {
261
310
  }
262
311
  const entryById = new Map(registryEntries.map((entry) => [entry.id, entry]));
263
312
  const keys = [
313
+ "TREESEED_MANAGEMENT_API_URL",
264
314
  "TREESEED_MARKET_URL",
265
315
  "TREESEED_MARKET_ID",
316
+ "TREESEED_MANAGER_ID",
317
+ "TREESEED_CAPACITY_PROVIDER_ID",
318
+ "TREESEED_CAPACITY_PROVIDER_TEAM_ID",
266
319
  "TREESEED_CAPACITY_PROVIDER_API_KEY",
267
320
  "TREESEED_PROVIDER_HOST_DATA_DIR",
268
321
  "TREESEED_PROVIDER_ENVIRONMENT"
@@ -292,6 +345,63 @@ function redactCapacityProviderEnv(env) {
292
345
  }
293
346
  return redacted;
294
347
  }
348
+ function manifestRecord(value) {
349
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
350
+ }
351
+ function manifestRoleImage(role, manifest) {
352
+ const tag = manifest.runtime?.images?.tag ?? "latest";
353
+ const roleConfig = manifest.runtime?.images?.roles?.[role] ?? {};
354
+ const extension = manifest.extensions?.[role];
355
+ if (extension?.enabled && extension.image) {
356
+ return `${extension.image}:${extension.tag ?? tag}`;
357
+ }
358
+ return `${roleConfig.image ?? DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES[role]}:${roleConfig.tag ?? tag}`;
359
+ }
360
+ function assertSafeCapacityProviderManifest(value) {
361
+ for (const [role, extension] of Object.entries(value.extensions ?? {})) {
362
+ if (!extension) continue;
363
+ for (const [key, entryValue] of Object.entries(extension.buildArgs ?? {})) {
364
+ if (entryValue === void 0 || entryValue === null || entryValue === "") continue;
365
+ if (isCapacityProviderSecretEnvKey(key) || /(?:tscp_|tsp_|sk-|ghp_|gho_|github_pat_)/u.test(String(entryValue))) {
366
+ throw new Error(`Capacity provider ${role} extension build arg ${key} looks secret-like. Store secrets in Treeseed config or the host secret manager instead.`);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ function parseCapacityProviderLaunchManifest(source) {
372
+ const parsed = typeof source === "string" ? parseYaml(source) : source;
373
+ const record = manifestRecord(parsed);
374
+ if (record.schemaVersion !== 1) {
375
+ throw new Error("Capacity provider launch manifest schemaVersion must be 1.");
376
+ }
377
+ const manifest = record;
378
+ assertSafeCapacityProviderManifest(manifest);
379
+ return manifest;
380
+ }
381
+ function resolveCapacityProviderLaunchPlan(manifest) {
382
+ assertSafeCapacityProviderManifest(manifest);
383
+ const roleImages = {
384
+ api: manifestRoleImage("api", manifest),
385
+ manager: manifestRoleImage("manager", manifest),
386
+ runner: manifestRoleImage("runner", manifest)
387
+ };
388
+ const composeEnv = {
389
+ ...manifest.provider?.dataDir ? { TREESEED_PROVIDER_HOST_DATA_DIR: manifest.provider.dataDir } : {},
390
+ ...manifest.provider?.environment ? { TREESEED_PROVIDER_ENVIRONMENT: manifest.provider.environment } : {},
391
+ ...manifest.provider?.market?.url ? { TREESEED_MARKET_URL: manifest.provider.market.url } : {},
392
+ ...manifest.provider?.market?.id ? { TREESEED_MANAGER_ID: manifest.provider.market.id, TREESEED_MARKET_ID: manifest.provider.market.id } : {},
393
+ ...manifest.runtime?.runners?.maxConcurrent ? { TREESEED_PROVIDER_MAX_CONCURRENT_RUNNERS: String(manifest.runtime.runners.maxConcurrent) } : {},
394
+ TREESEED_AGENT_API_IMAGE: roleImages.api,
395
+ TREESEED_AGENT_MANAGER_IMAGE: roleImages.manager,
396
+ TREESEED_AGENT_RUNNER_IMAGE: roleImages.runner
397
+ };
398
+ return {
399
+ manifest,
400
+ roleImages,
401
+ composeEnv,
402
+ redactedEnv: redactCapacityProviderEnv(composeEnv)
403
+ };
404
+ }
295
405
  function renderCapacityProviderSelfHostInstructions(input) {
296
406
  const env = resolveCapacityProviderEnvironment(input);
297
407
  return {
@@ -318,7 +428,7 @@ function defaultProviderDeploymentAdapter(hostKind) {
318
428
  role: spec.role,
319
429
  serviceName: spec.serviceName,
320
430
  serviceId: `${hostKind}:${spec.serviceName}`,
321
- url: spec.role === "api" ? `https://${spec.serviceName}.example.invalid` : null,
431
+ url: null,
322
432
  status: "deployed",
323
433
  envRefs: Object.fromEntries(
324
434
  Object.keys(spec.env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? `${spec.serviceName}:${key}` : spec.redactedEnv[key] ?? spec.env[key]])
@@ -328,7 +438,11 @@ function defaultProviderDeploymentAdapter(hostKind) {
328
438
  };
329
439
  }
330
440
  async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
331
- const imageRef = input.imageRef ?? input.intent.imageRef ?? "ghcr.io/treeseed-ai/agent:capacity-provider";
441
+ const roleImageRefs = {
442
+ api: input.roleImageRefs?.api ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-provider-api:latest",
443
+ manager: input.roleImageRefs?.manager ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-manager:latest",
444
+ runner: input.roleImageRefs?.runner ?? input.imageRef ?? input.intent.imageRef ?? "treeseed/agent-runner:latest"
445
+ };
332
446
  const serviceNamePrefix = input.serviceNamePrefix ?? `${input.intent.capacityProviderId || "capacity-provider"}`.replace(/^cp[_-]?/u, "capacity-provider-").replace(/[^a-zA-Z0-9_.-]+/gu, "-");
333
447
  const env = { ...input.env };
334
448
  const redactedEnv = input.redactedEnv ?? redactCapacityProviderEnv(env);
@@ -340,7 +454,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
340
454
  const result = await adapter.provisionService({
341
455
  role,
342
456
  serviceName: providerDeploymentServiceName(serviceNamePrefix, role),
343
- imageRef,
457
+ imageRef: roleImageRefs[role],
344
458
  startCommand: providerDeploymentStartCommand(role),
345
459
  env,
346
460
  redactedEnv
@@ -359,7 +473,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
359
473
  ok: true,
360
474
  launchMode,
361
475
  hostKind,
362
- imageRef,
476
+ roleImageRefs,
363
477
  status: "deployed",
364
478
  serviceRefs: services,
365
479
  envRefs: Object.fromEntries(Object.keys(env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? "<host-secret>" : redactedEnv[key] ?? env[key]])),
@@ -372,7 +486,7 @@ async function deployCapacityProviderWithAdapter(input, launchMode, hostKind) {
372
486
  ok: false,
373
487
  launchMode,
374
488
  hostKind,
375
- imageRef,
489
+ roleImageRefs,
376
490
  status: "failed",
377
491
  serviceRefs: services,
378
492
  envRefs: Object.fromEntries(Object.keys(env).map((key) => [key, isCapacityProviderSecretEnvKey(key) ? "<host-secret>" : redactedEnv[key] ?? env[key]])),
@@ -394,14 +508,15 @@ class MarketProviderClient {
394
508
  apiKey;
395
509
  fetchImpl;
396
510
  userAgent;
511
+ requestTimeoutMs;
397
512
  constructor(options) {
398
513
  this.marketUrl = normalizeBaseUrl(options.marketUrl);
399
514
  this.marketId = options.marketId.trim();
400
515
  this.apiKey = options.apiKey.trim();
401
- if (!this.marketId) throw new Error("Capacity provider Market ID is required.");
402
516
  if (!this.apiKey) throw new Error("Capacity provider API key is required.");
403
517
  this.fetchImpl = options.fetchImpl ?? fetch;
404
518
  this.userAgent = options.userAgent;
519
+ this.requestTimeoutMs = Math.max(1e3, Number(options.requestTimeoutMs ?? 3e4) || 3e4);
405
520
  }
406
521
  async requestJson(path, options = {}) {
407
522
  const headers = {
@@ -411,11 +526,22 @@ class MarketProviderClient {
411
526
  };
412
527
  if (this.userAgent) headers["user-agent"] = this.userAgent;
413
528
  if (options.body !== void 0) headers["content-type"] = "application/json";
414
- const response = await this.fetchImpl(`${this.marketUrl}${path}`, {
415
- method: options.method ?? "GET",
416
- headers,
417
- body: options.body === void 0 ? void 0 : JSON.stringify(options.body)
418
- });
529
+ const controller = new AbortController();
530
+ const timeout = setTimeout(() => controller.abort(), this.requestTimeoutMs);
531
+ let response;
532
+ try {
533
+ response = await this.fetchImpl(`${this.marketUrl}${path}`, {
534
+ method: options.method ?? "GET",
535
+ headers,
536
+ body: options.body === void 0 ? void 0 : JSON.stringify(options.body),
537
+ signal: controller.signal
538
+ });
539
+ } catch (error) {
540
+ const message = error instanceof Error && error.name === "AbortError" ? `Capacity provider request timed out after ${this.requestTimeoutMs}ms: ${path}` : error instanceof Error ? error.message : String(error);
541
+ throw new CapacityProviderApiError(message, 0, { path, timeoutMs: this.requestTimeoutMs });
542
+ } finally {
543
+ clearTimeout(timeout);
544
+ }
419
545
  const payload = await response.json().catch(() => ({}));
420
546
  if (!response.ok) {
421
547
  const message = isRecord(payload) && typeof payload.error === "string" ? payload.error : `Capacity provider request failed with ${response.status}.`;
@@ -424,23 +550,48 @@ class MarketProviderClient {
424
550
  return payload;
425
551
  }
426
552
  register(request) {
553
+ const marketId = request.marketId ?? this.marketId;
554
+ const body = marketId ? { ...request, marketId } : request;
427
555
  return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.register, {
428
556
  method: "POST",
429
- body: { ...request, marketId: request.marketId ?? this.marketId }
557
+ body
430
558
  }).then((response) => {
431
559
  assertCapacityProviderRegistrationResponse(response);
560
+ if (typeof response.sessionToken === "string" && response.sessionToken.trim()) {
561
+ this.apiKey = response.sessionToken.trim();
562
+ }
432
563
  return response;
433
564
  });
434
565
  }
435
566
  heartbeat(request = {}) {
567
+ const marketId = request.marketId ?? this.marketId;
568
+ const body = marketId ? { ...request, marketId } : request;
436
569
  return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.heartbeat, {
437
570
  method: "POST",
438
- body: { ...request, marketId: request.marketId ?? this.marketId }
571
+ body
439
572
  }).then((response) => {
440
573
  assertCapacityProviderOkEnvelope(response, "Capacity provider heartbeat response");
441
574
  return response;
442
575
  });
443
576
  }
577
+ createAvailabilitySession(request = {}) {
578
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.sessions, {
579
+ method: "POST",
580
+ body: request
581
+ }).then((response) => {
582
+ assertCapacityProviderOkEnvelope(response, "Capacity provider availability session response");
583
+ return response;
584
+ });
585
+ }
586
+ checkIn(request = {}) {
587
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.checkIn, {
588
+ method: "POST",
589
+ body: request
590
+ }).then((response) => {
591
+ assertCapacityProviderOkEnvelope(response, "Capacity provider check-in response");
592
+ return response;
593
+ });
594
+ }
444
595
  portfolio() {
445
596
  return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.portfolio).then((response) => {
446
597
  assertCapacityProviderPortfolioManifest(response);
@@ -456,40 +607,78 @@ class MarketProviderClient {
456
607
  return response;
457
608
  });
458
609
  }
459
- claimTask(request = {}) {
460
- return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.claimTask, {
610
+ assignment(assignmentId) {
611
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignment(assignmentId)).then((response) => {
612
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment response");
613
+ return response;
614
+ });
615
+ }
616
+ assignmentExplanation(assignmentId) {
617
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentExplanation(assignmentId)).then((response) => {
618
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment explanation response");
619
+ return response;
620
+ });
621
+ }
622
+ nextAssignment(request = {}) {
623
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.nextAssignment, {
624
+ method: "POST",
625
+ body: request
626
+ }).then((response) => {
627
+ assertCapacityProviderOkEnvelope(response, "Capacity provider next assignment response");
628
+ return response;
629
+ });
630
+ }
631
+ renewAssignment(assignmentId, request = {}) {
632
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentRenew(assignmentId), {
633
+ method: "POST",
634
+ body: request
635
+ }).then((response) => {
636
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment renew response");
637
+ return response;
638
+ });
639
+ }
640
+ returnAssignment(assignmentId, request = {}) {
641
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentReturn(assignmentId), {
642
+ method: "POST",
643
+ body: request
644
+ }).then((response) => {
645
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment return response");
646
+ return response;
647
+ });
648
+ }
649
+ completeAssignment(assignmentId, request = {}) {
650
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentComplete(assignmentId), {
461
651
  method: "POST",
462
652
  body: request
463
653
  }).then((response) => {
464
- assertCapacityProviderOkEnvelope(response, "Capacity provider task claim response");
465
- if (!Array.isArray(response.tasks)) throw new Error("Capacity provider task claim response is missing tasks.");
654
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment complete response");
466
655
  return response;
467
656
  });
468
657
  }
469
- appendTaskEvent(taskId, request) {
470
- return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.taskEvents(taskId), {
658
+ failAssignment(assignmentId, request = {}) {
659
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentFail(assignmentId), {
471
660
  method: "POST",
472
661
  body: request
473
662
  }).then((response) => {
474
- assertCapacityProviderOkEnvelope(response, "Capacity provider task event response");
663
+ assertCapacityProviderOkEnvelope(response, "Capacity provider assignment fail response");
475
664
  return response;
476
665
  });
477
666
  }
478
- completeTask(taskId, request = {}) {
479
- return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.completeTask(taskId), {
667
+ createAssignmentModeRun(assignmentId, request) {
668
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentModeRuns(assignmentId), {
480
669
  method: "POST",
481
670
  body: request
482
671
  }).then((response) => {
483
- assertCapacityProviderOkEnvelope(response, "Capacity provider task completion response");
672
+ assertCapacityProviderOkEnvelope(response, "Capacity provider mode run response");
484
673
  return response;
485
674
  });
486
675
  }
487
- failTask(taskId, request) {
488
- return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.failTask(taskId), {
676
+ dispatchAssignmentWorkflowOperation(assignmentId, operationId, request) {
677
+ return this.requestJson(CAPACITY_PROVIDER_ENDPOINTS.assignmentWorkflowOperationDispatch(assignmentId, operationId), {
489
678
  method: "POST",
490
679
  body: request
491
680
  }).then((response) => {
492
- assertCapacityProviderOkEnvelope(response, "Capacity provider task failure response");
681
+ assertCapacityProviderOkEnvelope(response, "Capacity provider workflow operation dispatch response");
493
682
  return response;
494
683
  });
495
684
  }
@@ -518,6 +707,7 @@ export {
518
707
  CAPACITY_PROVIDER_ENV_KEYS,
519
708
  CAPACITY_PROVIDER_SCOPES,
520
709
  CapacityProviderApiError,
710
+ DEFAULT_CAPACITY_PROVIDER_ROLE_IMAGES,
521
711
  MarketProviderClient,
522
712
  assertCapacityProviderOkEnvelope,
523
713
  assertCapacityProviderPortfolioManifest,
@@ -526,10 +716,12 @@ export {
526
716
  deployCapacityProviderToManagedMarketHost,
527
717
  deployCapacityProviderToRailway,
528
718
  isCapacityProviderSecretEnvKey,
719
+ parseCapacityProviderLaunchManifest,
529
720
  persistCapacityProviderConnectionToTreeseedConfig,
530
721
  redactCapacityProviderEnv,
531
722
  redactCapacityProviderSecret,
532
723
  renderCapacityProviderSelfHostInstructions,
533
724
  resolveCapacityProviderEnvironment,
534
- resolveCapacityProviderLaunchEnvironment
725
+ resolveCapacityProviderLaunchEnvironment,
726
+ resolveCapacityProviderLaunchPlan
535
727
  };
@@ -1,5 +1,5 @@
1
- import type { AttentionEstimate, AttentionPolicy, CapacityEstimateConfidence, CapacityGrant, CapacityPlan, CapacityProvider, CapacityProviderLane, CapacityReservation, CreditConversionProfile, CreateCapacityReservationRequest, CreateCapacityRoutingDecisionRequest, DerivedCapacityAvailability, DerivedCapacityInput, ExecutionProfile, HybridExecutionPlan, NativeUsageObservation, PlannedTaskNode, PlanningAdmissionResult, PlanningPolicy, PredictiveReservePolicy, ProjectEnvironmentName, RecordCapacityUsageRequest, ReservePrediction, TaskAdmissionDecision, TaskAdmissionPolicy, TaskClassification, TaskEstimateProfile, TaskPlanProposal, TaskMutationScope, TaskUsageActual, UtilityEstimate, UtilityPolicy, WorkdayBudgetEnvelope } from './sdk-types.ts';
2
- import type { AgentProviderProfile } from './types/agents.ts';
1
+ import type { AttentionEstimate, AttentionPolicy, CapacityEstimateConfidence, CapacityGrant, CapacityPlan, CapacityProvider, CapacityProviderLane, CapacityReservation, CreditConversionProfile, CreateCapacityReservationRequest, CreateCapacityRoutingDecisionRequest, DerivedCapacityAvailability, DerivedCapacityInput, ExecutionProfile, HybridExecutionPlan, NativeUsageObservation, PlannedTaskNode, PlanningAdmissionResult, PlanningPolicy, PredictiveReservePolicy, ProjectEnvironmentName, RecordCapacityUsageRequest, ReservePrediction, TaskAdmissionDecision, TaskAdmissionPolicy, TaskClassification, TaskEstimateProfile, TaskPlanProposal, TaskMutationScope, TaskUsageActual, UtilityEstimate, UtilityPolicy, WorkdayBudgetEnvelope } from './sdk-types.js';
2
+ import type { AgentProviderProfile } from './types/agents.js';
3
3
  export declare const ACTUAL_CREDIT_FORMULA_VERSION = "treeseed.actual-credits.v1";
4
4
  export interface ActualCreditCalculationInput {
5
5
  nativeUsage?: NativeUsageObservation | Record<string, unknown> | null;
@@ -1,3 +1,3 @@
1
- import type { AgentCliOptions } from './types/agents.ts';
1
+ import type { AgentCliOptions } from './types/agents.js';
2
2
  export declare function normalizeAgentCliOptions(input: unknown): AgentCliOptions;
3
3
  export declare function buildCopilotAllowToolArgs(allowTools?: AgentCliOptions['allowTools']): string[];
@@ -0,0 +1,97 @@
1
+ import type { SdkModelRegistry } from './sdk-types.js';
2
+ export type TreeseedContentAction = 'describe' | 'query' | 'read' | 'create' | 'update' | 'link' | 'validate' | 'commit';
3
+ export type TreeseedContentModel = 'page' | 'note' | 'question' | 'proposal' | 'decision' | 'book' | 'knowledge' | 'objective' | 'person' | 'agent';
4
+ export interface TreeseedContentRelationInput {
5
+ field: string;
6
+ targetModel?: TreeseedContentModel | string;
7
+ targetSlug: string;
8
+ }
9
+ export interface TreeseedContentPlacement {
10
+ bookSlug?: string;
11
+ parentPath?: string;
12
+ path?: string;
13
+ }
14
+ export interface TreeseedContentOperationInput {
15
+ action: TreeseedContentAction;
16
+ model?: TreeseedContentModel | string;
17
+ id?: string;
18
+ slug?: string;
19
+ title?: string;
20
+ fields?: Record<string, unknown>;
21
+ body?: string;
22
+ query?: string;
23
+ filters?: unknown[];
24
+ relations?: TreeseedContentRelationInput[];
25
+ placement?: TreeseedContentPlacement;
26
+ commit?: {
27
+ enabled: boolean;
28
+ message?: string;
29
+ };
30
+ }
31
+ export interface TreeseedContentRef {
32
+ model: TreeseedContentModel;
33
+ collection: string;
34
+ slug: string;
35
+ id?: string;
36
+ path?: string;
37
+ href?: string;
38
+ }
39
+ export interface TreeseedContentDiagnostic {
40
+ severity: 'info' | 'warning' | 'error';
41
+ code: string;
42
+ message: string;
43
+ field?: string;
44
+ }
45
+ export interface TreeseedContentOperationResult {
46
+ ok: true;
47
+ action: TreeseedContentAction;
48
+ refs: TreeseedContentRef[];
49
+ changedPaths?: string[];
50
+ diagnostics: TreeseedContentDiagnostic[];
51
+ payload?: Record<string, unknown>;
52
+ }
53
+ export interface RenderTreeseedContentInput {
54
+ model: TreeseedContentModel | string;
55
+ slug?: string;
56
+ title?: string;
57
+ fields?: Record<string, unknown>;
58
+ body?: string;
59
+ relations?: TreeseedContentRelationInput[];
60
+ placement?: TreeseedContentPlacement;
61
+ existingFrontmatter?: Record<string, unknown>;
62
+ registry?: SdkModelRegistry;
63
+ now?: string;
64
+ }
65
+ export interface RenderedTreeseedContentRecord {
66
+ model: TreeseedContentModel;
67
+ collection: string;
68
+ slug: string;
69
+ path: string;
70
+ frontmatter: Record<string, unknown>;
71
+ body: string;
72
+ content: string;
73
+ ref: TreeseedContentRef;
74
+ diagnostics: TreeseedContentDiagnostic[];
75
+ }
76
+ export interface TreeseedContentToolPreset {
77
+ id: string;
78
+ action: TreeseedContentAction;
79
+ model?: TreeseedContentModel;
80
+ title: string;
81
+ description: string;
82
+ inputSchema: Record<string, unknown>;
83
+ }
84
+ export declare const TREESEED_CONTENT_ACTIONS: TreeseedContentAction[];
85
+ export declare const TREESEED_CONTENT_READ_ACTIONS: Set<TreeseedContentAction>;
86
+ export declare const TREESEED_CONTENT_WRITE_ACTIONS: Set<TreeseedContentAction>;
87
+ export declare function slugifyTreeseedContent(value: unknown): string;
88
+ export declare function renderTreeseedContentRecord(input: RenderTreeseedContentInput): RenderedTreeseedContentRecord;
89
+ export declare function validateTreeseedContentRecord(model: string, source: string, registry?: SdkModelRegistry): {
90
+ ok: boolean;
91
+ frontmatter: Record<string, unknown>;
92
+ body: string;
93
+ diagnostics: TreeseedContentDiagnostic[];
94
+ };
95
+ export declare function genericTreeseedContentInputSchema(action: TreeseedContentAction): Record<string, unknown>;
96
+ export declare function createTreeseedContentToolPresets(registry?: SdkModelRegistry): TreeseedContentToolPreset[];
97
+ export declare function findTreeseedContentToolPreset(id: string, registry?: SdkModelRegistry): TreeseedContentToolPreset | null;