@treeseed/sdk 0.11.0 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +9 -4
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +117 -60
  27. package/dist/capacity-provider.js +215 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +2 -2
  36. package/dist/copilot.d.ts +3 -0
  37. package/dist/copilot.js +16 -1
  38. package/dist/d1-http.d.ts +1 -1
  39. package/dist/d1-store.d.ts +32 -57
  40. package/dist/d1-store.js +115 -318
  41. package/dist/db/d1.d.ts +1 -232
  42. package/dist/db/index.d.ts +3 -3
  43. package/dist/db/market-schema.d.ts +49037 -11843
  44. package/dist/db/market-schema.js +1788 -50
  45. package/dist/db/node-sqlite.d.ts +1 -232
  46. package/dist/db/schema.d.ts +0 -462
  47. package/dist/db/schema.js +2 -22
  48. package/dist/dispatch.d.ts +1 -1
  49. package/dist/dispatch.js +0 -11
  50. package/dist/fixture-support.js +52 -4
  51. package/dist/governance.d.ts +133 -0
  52. package/dist/governance.js +285 -0
  53. package/dist/graph/build.d.ts +2 -2
  54. package/dist/graph/context-query-contracts.d.ts +1 -1
  55. package/dist/graph/dsl.d.ts +1 -1
  56. package/dist/graph/query.d.ts +4 -4
  57. package/dist/graph/ranking.d.ts +1 -1
  58. package/dist/graph/schema.d.ts +1 -1
  59. package/dist/graph.d.ts +11 -11
  60. package/dist/guarantees/index.d.ts +425 -0
  61. package/dist/guarantees/index.js +1146 -0
  62. package/dist/hosting/apps.d.ts +1 -1
  63. package/dist/hosting/builtins.d.ts +1 -1
  64. package/dist/hosting/builtins.js +9 -198
  65. package/dist/hosting/contracts.d.ts +3 -2
  66. package/dist/hosting/graph.d.ts +24 -21
  67. package/dist/hosting/graph.js +280 -294
  68. package/dist/hosting/index.d.ts +4 -4
  69. package/dist/index.d.ts +88 -74
  70. package/dist/index.js +81 -10
  71. package/dist/local-dev/managed-dev.d.ts +85 -0
  72. package/dist/local-dev/managed-dev.js +368 -0
  73. package/dist/managed-dependencies.d.ts +9 -0
  74. package/dist/managed-dependencies.js +10 -8
  75. package/dist/market-client.d.ts +265 -7
  76. package/dist/market-client.js +381 -9
  77. package/dist/model-registry.d.ts +1 -1
  78. package/dist/model-registry.js +19 -19
  79. package/dist/operations/agent-tools.d.ts +2 -11
  80. package/dist/operations/agent-tools.js +2 -14
  81. package/dist/operations/providers/default.d.ts +1 -1
  82. package/dist/operations/providers/default.js +20 -37
  83. package/dist/operations/repository-operations.d.ts +26 -2
  84. package/dist/operations/repository-operations.js +159 -1
  85. package/dist/operations/runtime.d.ts +3 -3
  86. package/dist/operations/services/bootstrap-runner.d.ts +1 -1
  87. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  88. package/dist/operations/services/build-warning-policy.js +81 -82
  89. package/dist/operations/services/commit-message-provider.js +4 -4
  90. package/dist/operations/services/config-runtime.d.ts +73 -19
  91. package/dist/operations/services/config-runtime.js +276 -100
  92. package/dist/operations/services/deploy.d.ts +41 -622
  93. package/dist/operations/services/deploy.js +181 -213
  94. package/dist/operations/services/deployment-readiness.d.ts +1 -1
  95. package/dist/operations/services/deployment-readiness.js +38 -7
  96. package/dist/operations/services/git-remote-policy.js +12 -4
  97. package/dist/operations/services/git-runner.d.ts +66 -0
  98. package/dist/operations/services/git-runner.js +479 -0
  99. package/dist/operations/services/git-workflow.d.ts +43 -5
  100. package/dist/operations/services/git-workflow.js +242 -20
  101. package/dist/operations/services/github-actions-verification.d.ts +3 -1
  102. package/dist/operations/services/github-actions-verification.js +11 -3
  103. package/dist/operations/services/github-api.js +21 -5
  104. package/dist/operations/services/github-automation.d.ts +3 -3
  105. package/dist/operations/services/github-automation.js +15 -18
  106. package/dist/operations/services/github-credentials.js +2 -1
  107. package/dist/operations/services/hosted-service-checks.d.ts +19 -1
  108. package/dist/operations/services/hosted-service-checks.js +162 -11
  109. package/dist/operations/services/hosting-audit.d.ts +2 -2
  110. package/dist/operations/services/hosting-audit.js +7 -7
  111. package/dist/operations/services/hub-launch.d.ts +1 -1
  112. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  113. package/dist/operations/services/hub-provider-launch.js +19 -14
  114. package/dist/operations/services/live-hosted-service-checks.d.ts +2 -1
  115. package/dist/operations/services/live-hosted-service-checks.js +193 -80
  116. package/dist/operations/services/local-dev.js +0 -1
  117. package/dist/operations/services/managed-host-security.d.ts +1 -1
  118. package/dist/operations/services/managed-repositories.d.ts +37 -0
  119. package/dist/operations/services/managed-repositories.js +177 -0
  120. package/dist/operations/services/operations-runner-smoke.d.ts +3 -2
  121. package/dist/operations/services/operations-runner-smoke.js +22 -4
  122. package/dist/operations/services/package-adapters.d.ts +77 -2
  123. package/dist/operations/services/package-adapters.js +627 -56
  124. package/dist/operations/services/package-reference-policy.d.ts +12 -88
  125. package/dist/operations/services/package-reference-policy.js +81 -213
  126. package/dist/operations/services/project-host-operations.d.ts +4 -4
  127. package/dist/operations/services/project-platform.d.ts +19 -193
  128. package/dist/operations/services/project-platform.js +31 -103
  129. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  130. package/dist/operations/services/project-web-monitor.js +97 -2
  131. package/dist/operations/services/railway-api.d.ts +36 -7
  132. package/dist/operations/services/railway-api.js +331 -100
  133. package/dist/operations/services/railway-deploy.d.ts +7 -95
  134. package/dist/operations/services/railway-deploy.js +334 -742
  135. package/dist/operations/services/release-history.js +3 -4
  136. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  137. package/dist/operations/services/release-proof-ledger.js +81 -0
  138. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  139. package/dist/operations/services/release-proof-planner.js +195 -0
  140. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  141. package/dist/operations/services/release-proof-runner.js +169 -0
  142. package/dist/operations/services/release-proof.d.ts +81 -0
  143. package/dist/operations/services/release-proof.js +79 -0
  144. package/dist/operations/services/repository-save-orchestrator.d.ts +6 -7
  145. package/dist/operations/services/repository-save-orchestrator.js +353 -174
  146. package/dist/operations/services/runtime-paths.d.ts +1 -3
  147. package/dist/operations/services/runtime-paths.js +0 -4
  148. package/dist/operations/services/runtime-tools.d.ts +1 -192
  149. package/dist/operations/services/runtime-tools.js +4 -444
  150. package/dist/operations/services/save-deploy-preflight.js +9 -1
  151. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  152. package/dist/operations/services/template-host-bindings.js +3 -2
  153. package/dist/operations/services/template-registry.d.ts +6 -6
  154. package/dist/operations/services/template-registry.js +33 -14
  155. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  156. package/dist/operations/services/workflow-timing.d.ts +25 -0
  157. package/dist/operations/services/workflow-timing.js +79 -0
  158. package/dist/operations/services/workspace-dependency-mode.js +41 -4
  159. package/dist/operations/services/workspace-preflight.js +8 -8
  160. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  161. package/dist/operations/services/workspace-save.d.ts +1 -0
  162. package/dist/operations/services/workspace-save.js +41 -18
  163. package/dist/operations/services/workspace-tools.js +40 -6
  164. package/dist/operations-registry.d.ts +1 -1
  165. package/dist/operations-registry.js +5 -6
  166. package/dist/operations-types.d.ts +1 -1
  167. package/dist/operations.d.ts +17 -11
  168. package/dist/operations.js +57 -3
  169. package/dist/platform/book-export.js +2 -0
  170. package/dist/platform/books-data.d.ts +1 -1
  171. package/dist/platform/config.d.ts +27 -0
  172. package/dist/platform/config.js +100 -0
  173. package/dist/platform/content-runtime-source.d.ts +54 -0
  174. package/dist/platform/content-runtime-source.js +169 -0
  175. package/dist/platform/contracts.d.ts +6 -1
  176. package/dist/platform/deploy-config.d.ts +1 -1
  177. package/dist/platform/deploy-config.js +7 -1
  178. package/dist/platform/deploy-runtime.d.ts +1 -1
  179. package/dist/platform/desired-state.d.ts +63 -0
  180. package/dist/platform/desired-state.js +1021 -0
  181. package/dist/platform/env.yaml +414 -19
  182. package/dist/platform/environment.d.ts +2 -2
  183. package/dist/platform/environment.js +54 -22
  184. package/dist/platform/local-content-materialization.d.ts +9 -0
  185. package/dist/platform/local-content-materialization.js +212 -0
  186. package/dist/platform/plugin.d.ts +5 -5
  187. package/dist/platform/plugins/runtime.d.ts +3 -3
  188. package/dist/platform/plugins/runtime.js +62 -1
  189. package/dist/platform/plugins.d.ts +6 -6
  190. package/dist/platform/published-content-pipeline.d.ts +3 -3
  191. package/dist/platform/published-content-pipeline.js +5 -1
  192. package/dist/platform/published-content.d.ts +4 -3
  193. package/dist/platform/site-config-schema.d.ts +1 -0
  194. package/dist/platform/site-config-schema.js +4 -1
  195. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  196. package/dist/platform/tenant-config.d.ts +1 -1
  197. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  198. package/dist/platform/utils/site-config-schema.js +400 -461
  199. package/dist/platform-operation-store.d.ts +1 -1
  200. package/dist/plugin-default.d.ts +1 -1
  201. package/dist/plugin-default.js +27 -12
  202. package/dist/project-import.d.ts +91 -0
  203. package/dist/project-import.js +257 -0
  204. package/dist/project-workflow.d.ts +1 -1
  205. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  206. package/dist/reconcile/bootstrap-systems.js +3 -3
  207. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  208. package/dist/reconcile/builtin-adapters.js +2924 -346
  209. package/dist/reconcile/contracts.d.ts +15 -2
  210. package/dist/reconcile/desired-state.d.ts +2 -193
  211. package/dist/reconcile/desired-state.js +24 -33
  212. package/dist/reconcile/engine.d.ts +60 -397
  213. package/dist/reconcile/engine.js +182 -18
  214. package/dist/reconcile/index.d.ts +10 -10
  215. package/dist/reconcile/live-acceptance.d.ts +22 -1
  216. package/dist/reconcile/live-acceptance.js +456 -44
  217. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  218. package/dist/reconcile/providers/docker-private.js +101 -0
  219. package/dist/reconcile/providers/github-private.d.ts +65 -0
  220. package/dist/reconcile/providers/github-private.js +119 -0
  221. package/dist/reconcile/providers/local-private.d.ts +28 -0
  222. package/dist/reconcile/providers/local-private.js +75 -0
  223. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  224. package/dist/reconcile/providers/railway-iac.js +275 -0
  225. package/dist/reconcile/providers/release-private.d.ts +92 -0
  226. package/dist/reconcile/providers/release-private.js +152 -0
  227. package/dist/reconcile/registry.d.ts +2 -2
  228. package/dist/reconcile/registry.js +16 -1
  229. package/dist/reconcile/state.d.ts +1 -1
  230. package/dist/reconcile/state.js +3 -40
  231. package/dist/reconcile/units.d.ts +1 -1
  232. package/dist/reconcile/units.js +7 -1
  233. package/dist/remote.d.ts +6 -6
  234. package/dist/scenes/artifacts.d.ts +16 -0
  235. package/dist/scenes/artifacts.js +61 -0
  236. package/dist/scenes/auth.d.ts +2 -0
  237. package/dist/scenes/auth.js +28 -0
  238. package/dist/scenes/base-url.d.ts +12 -0
  239. package/dist/scenes/base-url.js +123 -0
  240. package/dist/scenes/builtin-plugins.d.ts +2 -0
  241. package/dist/scenes/builtin-plugins.js +447 -0
  242. package/dist/scenes/checkpoints.d.ts +14 -0
  243. package/dist/scenes/checkpoints.js +33 -0
  244. package/dist/scenes/device-matrix.d.ts +2 -0
  245. package/dist/scenes/device-matrix.js +97 -0
  246. package/dist/scenes/devices.d.ts +11 -0
  247. package/dist/scenes/devices.js +22 -0
  248. package/dist/scenes/diagnostics.d.ts +5 -0
  249. package/dist/scenes/diagnostics.js +22 -0
  250. package/dist/scenes/diagram-providers.d.ts +2 -0
  251. package/dist/scenes/diagram-providers.js +181 -0
  252. package/dist/scenes/diagram-validation.d.ts +22 -0
  253. package/dist/scenes/diagram-validation.js +74 -0
  254. package/dist/scenes/environment.d.ts +2 -0
  255. package/dist/scenes/environment.js +65 -0
  256. package/dist/scenes/evidence-bundle.d.ts +5 -0
  257. package/dist/scenes/evidence-bundle.js +42 -0
  258. package/dist/scenes/evidence-report.d.ts +10 -0
  259. package/dist/scenes/evidence-report.js +73 -0
  260. package/dist/scenes/evidence.d.ts +16 -0
  261. package/dist/scenes/evidence.js +277 -0
  262. package/dist/scenes/index.d.ts +48 -0
  263. package/dist/scenes/index.js +312 -0
  264. package/dist/scenes/inspect.d.ts +9 -0
  265. package/dist/scenes/inspect.js +64 -0
  266. package/dist/scenes/loader.d.ts +3 -0
  267. package/dist/scenes/loader.js +38 -0
  268. package/dist/scenes/logs.d.ts +2 -0
  269. package/dist/scenes/logs.js +47 -0
  270. package/dist/scenes/operations.d.ts +3 -0
  271. package/dist/scenes/operations.js +128 -0
  272. package/dist/scenes/phase0.d.ts +9 -0
  273. package/dist/scenes/phase0.js +637 -0
  274. package/dist/scenes/planner.d.ts +12 -0
  275. package/dist/scenes/planner.js +166 -0
  276. package/dist/scenes/playwright-adapter.d.ts +2 -0
  277. package/dist/scenes/playwright-adapter.js +63 -0
  278. package/dist/scenes/plugins.d.ts +5 -0
  279. package/dist/scenes/plugins.js +115 -0
  280. package/dist/scenes/progress.d.ts +17 -0
  281. package/dist/scenes/progress.js +24 -0
  282. package/dist/scenes/publish-destinations.d.ts +12 -0
  283. package/dist/scenes/publish-destinations.js +99 -0
  284. package/dist/scenes/publish-plan-report.d.ts +10 -0
  285. package/dist/scenes/publish-plan-report.js +70 -0
  286. package/dist/scenes/publish-plan.d.ts +15 -0
  287. package/dist/scenes/publish-plan.js +248 -0
  288. package/dist/scenes/publish-redaction.d.ts +16 -0
  289. package/dist/scenes/publish-redaction.js +148 -0
  290. package/dist/scenes/publish-release-record.d.ts +13 -0
  291. package/dist/scenes/publish-release-record.js +34 -0
  292. package/dist/scenes/publish-report.d.ts +10 -0
  293. package/dist/scenes/publish-report.js +67 -0
  294. package/dist/scenes/publish.d.ts +16 -0
  295. package/dist/scenes/publish.js +298 -0
  296. package/dist/scenes/registry.d.ts +12 -0
  297. package/dist/scenes/registry.js +65 -0
  298. package/dist/scenes/remotion-adapter.d.ts +3 -0
  299. package/dist/scenes/remotion-adapter.js +94 -0
  300. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  301. package/dist/scenes/remotion-composition-registry.js +12 -0
  302. package/dist/scenes/remotion-compositions.d.ts +15 -0
  303. package/dist/scenes/remotion-compositions.js +464 -0
  304. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  305. package/dist/scenes/remotion-diagrams.js +188 -0
  306. package/dist/scenes/remotion-input.d.ts +13 -0
  307. package/dist/scenes/remotion-input.js +291 -0
  308. package/dist/scenes/remotion-visuals.d.ts +29 -0
  309. package/dist/scenes/remotion-visuals.js +198 -0
  310. package/dist/scenes/render-media-assets.d.ts +9 -0
  311. package/dist/scenes/render-media-assets.js +117 -0
  312. package/dist/scenes/render-report.d.ts +10 -0
  313. package/dist/scenes/render-report.js +27 -0
  314. package/dist/scenes/render.d.ts +2 -0
  315. package/dist/scenes/render.js +218 -0
  316. package/dist/scenes/reporter.d.ts +3 -0
  317. package/dist/scenes/reporter.js +101 -0
  318. package/dist/scenes/resume.d.ts +2 -0
  319. package/dist/scenes/resume.js +79 -0
  320. package/dist/scenes/runner.d.ts +2 -0
  321. package/dist/scenes/runner.js +674 -0
  322. package/dist/scenes/schema.d.ts +6 -0
  323. package/dist/scenes/schema.js +994 -0
  324. package/dist/scenes/seed.d.ts +2 -0
  325. package/dist/scenes/seed.js +83 -0
  326. package/dist/scenes/segments.d.ts +15 -0
  327. package/dist/scenes/segments.js +79 -0
  328. package/dist/scenes/selectors.d.ts +3 -0
  329. package/dist/scenes/selectors.js +21 -0
  330. package/dist/scenes/timeline.d.ts +11 -0
  331. package/dist/scenes/timeline.js +26 -0
  332. package/dist/scenes/timeouts.d.ts +6 -0
  333. package/dist/scenes/timeouts.js +17 -0
  334. package/dist/scenes/training-captions.d.ts +14 -0
  335. package/dist/scenes/training-captions.js +98 -0
  336. package/dist/scenes/training-report.d.ts +10 -0
  337. package/dist/scenes/training-report.js +78 -0
  338. package/dist/scenes/training-transcript.d.ts +24 -0
  339. package/dist/scenes/training-transcript.js +204 -0
  340. package/dist/scenes/training.d.ts +10 -0
  341. package/dist/scenes/training.js +134 -0
  342. package/dist/scenes/types.d.ts +1872 -0
  343. package/dist/scenes/types.js +8 -0
  344. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  345. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  346. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  347. package/dist/scenes/visual-audit-fixtures.js +210 -0
  348. package/dist/scenes/visual-audit-report.d.ts +11 -0
  349. package/dist/scenes/visual-audit-report.js +85 -0
  350. package/dist/scenes/visual-audit-review.d.ts +23 -0
  351. package/dist/scenes/visual-audit-review.js +829 -0
  352. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  353. package/dist/scenes/visual-audit-routes.js +308 -0
  354. package/dist/scenes/visual-audit.d.ts +3 -0
  355. package/dist/scenes/visual-audit.js +596 -0
  356. package/dist/scripts/build-dist.js +154 -40
  357. package/dist/scripts/check-build-warnings.js +42 -53
  358. package/dist/scripts/cleanup-markdown.js +1 -1
  359. package/dist/scripts/cli-test-fixtures.js +24 -28
  360. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  361. package/dist/scripts/package-tools.js +12 -1
  362. package/dist/scripts/prepare.js +3 -7
  363. package/dist/scripts/release-verify.js +2 -5
  364. package/dist/scripts/run-fixture-astro-command.js +1 -1
  365. package/dist/scripts/template-catalog.test.js +68 -82
  366. package/dist/scripts/tenant-dev.js +0 -10
  367. package/dist/scripts/test-cloudflare-local.js +1 -1
  368. package/dist/scripts/test-scaffold.js +0 -1
  369. package/dist/scripts/test-smoke.js +3 -3
  370. package/dist/scripts/treeseed-build-dist.js +4 -7
  371. package/dist/scripts/treeseed-release-verify.js +1 -1
  372. package/dist/scripts/verify-driver.js +30 -21
  373. package/dist/scripts/workflow-commands.test.js +18 -27
  374. package/dist/scripts/workspace-command-e2e.js +1 -1
  375. package/dist/scripts/workspace-lint.js +6 -0
  376. package/dist/scripts/workspace-release-test.js +90 -1
  377. package/dist/scripts/workspace-test.js +6 -0
  378. package/dist/sdk-dispatch.d.ts +1 -1
  379. package/dist/sdk-dispatch.js +0 -16
  380. package/dist/sdk-fields.d.ts +1 -1
  381. package/dist/sdk-filters.d.ts +1 -1
  382. package/dist/sdk-types.d.ts +1184 -113
  383. package/dist/sdk-types.js +393 -0
  384. package/dist/sdk.d.ts +74 -79
  385. package/dist/sdk.js +27 -36
  386. package/dist/secrets-capability.d.ts +421 -0
  387. package/dist/secrets-capability.js +530 -0
  388. package/dist/seeds/normalize.js +1 -0
  389. package/dist/seeds/planner.js +38 -0
  390. package/dist/seeds/schema.js +293 -4
  391. package/dist/seeds/types.d.ts +60 -0
  392. package/dist/seeds/types.js +9 -1
  393. package/dist/service-credentials.d.ts +54 -0
  394. package/dist/service-credentials.js +112 -0
  395. package/dist/stores/cursor-store.d.ts +2 -2
  396. package/dist/stores/envelopes.d.ts +1 -1
  397. package/dist/stores/helpers.d.ts +1 -1
  398. package/dist/stores/lease-store.d.ts +2 -2
  399. package/dist/stores/message-store.d.ts +2 -2
  400. package/dist/stores/operational-store.d.ts +3 -26
  401. package/dist/stores/operational-store.js +0 -225
  402. package/dist/stores/project-workflow-store.d.ts +2 -2
  403. package/dist/stores/run-store.d.ts +2 -3
  404. package/dist/stores/run-store.js +0 -98
  405. package/dist/stores/subscription-store.d.ts +2 -3
  406. package/dist/stores/subscription-store.js +0 -100
  407. package/dist/template-catalog.d.ts +1 -1
  408. package/dist/template-launch-requirements.d.ts +2 -2
  409. package/dist/template-launch-ui.d.ts +2 -2
  410. package/dist/treedx/adapters.d.ts +6 -6
  411. package/dist/treedx/client.d.ts +1 -1
  412. package/dist/treedx/errors.d.ts +1 -1
  413. package/dist/treedx/federated-client.d.ts +3 -3
  414. package/dist/treedx/graph-adapter.d.ts +2 -2
  415. package/dist/treedx/index.d.ts +14 -14
  416. package/dist/treedx/market-integration.d.ts +1 -1
  417. package/dist/treedx/ports.d.ts +30 -30
  418. package/dist/treedx/query-adapter.d.ts +3 -3
  419. package/dist/treedx/registry-client.d.ts +2 -2
  420. package/dist/treedx/repository-adapter.d.ts +4 -4
  421. package/dist/treedx/repository-adapter.js +14 -3
  422. package/dist/treedx/sdk-integration.d.ts +3 -3
  423. package/dist/treedx/types.d.ts +2 -2
  424. package/dist/treedx/workspace-adapter.d.ts +2 -2
  425. package/dist/treedx-backends.d.ts +13 -11
  426. package/dist/treedx-backends.js +52 -50
  427. package/dist/treedx-client.d.ts +3 -0
  428. package/dist/treedx-client.js +10 -1
  429. package/dist/treeseed/services/compose.yml +2 -3
  430. package/dist/treeseed/template-catalog/catalog.fixture.json +4 -4
  431. package/dist/types/agents.d.ts +256 -0
  432. package/dist/types/agents.js +42 -1
  433. package/dist/verification.d.ts +1 -0
  434. package/dist/verification.js +143 -14
  435. package/dist/workflow/operations.d.ts +510 -559
  436. package/dist/workflow/operations.js +1891 -1342
  437. package/dist/workflow/policy.js +19 -7
  438. package/dist/workflow/runs.d.ts +9 -3
  439. package/dist/workflow/runs.js +66 -26
  440. package/dist/workflow/session.d.ts +4 -1
  441. package/dist/workflow/session.js +50 -10
  442. package/dist/workflow/worktrees.d.ts +6 -2
  443. package/dist/workflow/worktrees.js +98 -15
  444. package/dist/workflow-state.d.ts +5 -5
  445. package/dist/workflow-state.js +27 -17
  446. package/dist/workflow-support.d.ts +26 -25
  447. package/dist/workflow-support.js +27 -31
  448. package/dist/workflow.d.ts +46 -16
  449. package/dist/workflow.js +19 -7
  450. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  451. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  452. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  453. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  454. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  455. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  456. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  457. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  458. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  459. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  460. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  461. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  462. package/package.json +75 -18
  463. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  464. package/templates/github/deploy-web.workflow.yml +12 -8
  465. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  466. package/dist/operations/services/mailpit-runtime.js +0 -67
  467. package/dist/operations/services/release-candidate.d.ts +0 -60
  468. package/dist/operations/services/release-candidate.js +0 -953
  469. package/dist/scripts/ensure-mailpit.js +0 -48
  470. package/dist/scripts/logs-mailpit.js +0 -2
  471. package/dist/scripts/run-ts.js +0 -45
  472. package/dist/scripts/stop-mailpit.js +0 -5
  473. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -0,0 +1,85 @@
1
+ export type TreeseedManagedDevSurface = 'web' | 'api' | 'operations-runner' | string;
2
+ export type TreeseedManagedDevAction = 'start' | 'status' | 'logs' | 'stop' | 'restart';
3
+ export type TreeseedManagedDevProcessSpec = {
4
+ id: string;
5
+ surface: TreeseedManagedDevSurface;
6
+ cwd: string;
7
+ command: string;
8
+ args: string[];
9
+ env: Record<string, string>;
10
+ port?: number | null;
11
+ health?: Array<{
12
+ id: string;
13
+ kind: 'http';
14
+ url: string;
15
+ timeoutMs?: number;
16
+ }>;
17
+ logPath: string;
18
+ pidPath: string;
19
+ instancePath: string;
20
+ };
21
+ export type TreeseedIntegratedDevPlan = {
22
+ tenantRoot: string;
23
+ scopeId: string;
24
+ worktreeRoot: string;
25
+ stateDir: string;
26
+ logDir: string;
27
+ processes: TreeseedManagedDevProcessSpec[];
28
+ };
29
+ export type TreeseedManagedDevOptions = {
30
+ action?: TreeseedManagedDevAction;
31
+ cwd?: string;
32
+ surfaces?: string;
33
+ webRuntime?: 'auto' | 'provider' | 'local';
34
+ webHost?: string;
35
+ webPort?: number;
36
+ apiHost?: string;
37
+ apiPort?: number;
38
+ force?: boolean;
39
+ forceConflicts?: boolean;
40
+ all?: boolean;
41
+ follow?: boolean;
42
+ json?: boolean;
43
+ env?: NodeJS.ProcessEnv | Record<string, string | undefined>;
44
+ };
45
+ export type TreeseedDevInstance = TreeseedManagedDevProcessSpec & {
46
+ pid: number | null;
47
+ running: boolean;
48
+ healthStatus?: Array<{
49
+ id: string;
50
+ ok: boolean;
51
+ status: number | null;
52
+ url: string;
53
+ error?: string;
54
+ }>;
55
+ startedAt?: string | null;
56
+ };
57
+ export type TreeseedManagedDevResult = {
58
+ ok: boolean;
59
+ action: TreeseedManagedDevAction;
60
+ plan: TreeseedIntegratedDevPlan;
61
+ instances: TreeseedDevInstance[];
62
+ output?: string;
63
+ };
64
+ export type TreeseedDevLogReadResult = {
65
+ logs: Array<{
66
+ id: string;
67
+ path: string;
68
+ content: string;
69
+ }>;
70
+ };
71
+ export declare function createTreeseedIntegratedDevPlan(options?: TreeseedManagedDevOptions): TreeseedIntegratedDevPlan;
72
+ export declare function readTreeseedDevInstance(input?: {
73
+ cwd?: string;
74
+ surface?: string;
75
+ }): TreeseedDevInstance | null;
76
+ export declare function listTreeseedDevInstances(input?: {
77
+ cwd?: string;
78
+ all?: boolean;
79
+ }): TreeseedDevInstance[];
80
+ export declare function startTreeseedManagedDev(options?: TreeseedManagedDevOptions): Promise<TreeseedManagedDevResult>;
81
+ export declare function stopTreeseedManagedDev(options?: TreeseedManagedDevOptions): Promise<TreeseedManagedDevResult>;
82
+ export declare function stopTreeseedDevInstance(options?: Omit<TreeseedManagedDevOptions, 'action'>): Promise<TreeseedManagedDevResult>;
83
+ export declare function restartTreeseedManagedDev(options?: TreeseedManagedDevOptions): Promise<TreeseedManagedDevResult>;
84
+ export declare function readTreeseedDevLogs(options?: TreeseedManagedDevOptions): TreeseedDevLogReadResult;
85
+ export declare function runTreeseedManagedDev(options: TreeseedManagedDevOptions): Promise<TreeseedManagedDevResult>;
@@ -0,0 +1,368 @@
1
+ import { spawn } from "node:child_process";
2
+ import { closeSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync, appendFileSync, openSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+ function splitSurfaces(value) {
5
+ return (value ?? "web,api").split(",").map((entry) => entry.trim()).filter(Boolean);
6
+ }
7
+ function pidAlive(pid) {
8
+ if (!pid) return false;
9
+ try {
10
+ process.kill(pid, 0);
11
+ return true;
12
+ } catch {
13
+ return false;
14
+ }
15
+ }
16
+ function scopeId(tenantRoot) {
17
+ return Buffer.from(tenantRoot).toString("base64url").slice(0, 32);
18
+ }
19
+ function readJson(path) {
20
+ try {
21
+ return JSON.parse(readFileSync(path, "utf8"));
22
+ } catch {
23
+ return null;
24
+ }
25
+ }
26
+ function redactedEnvShape(env) {
27
+ return Object.fromEntries(Object.keys(env).sort().map((key) => [key, key === "PATH" || key === "NODE_ENV" ? env[key] : "<redacted>"]));
28
+ }
29
+ function persistedInstanceRecord(spec, pid) {
30
+ return {
31
+ id: spec.id,
32
+ surface: spec.surface,
33
+ cwd: spec.cwd,
34
+ command: spec.command,
35
+ args: spec.args,
36
+ redactedEnv: redactedEnvShape(spec.env),
37
+ envKeys: Object.keys(spec.env).sort(),
38
+ port: spec.port ?? null,
39
+ health: spec.health ?? [],
40
+ logPath: spec.logPath,
41
+ pidPath: spec.pidPath,
42
+ instancePath: spec.instancePath,
43
+ pid,
44
+ startedAt: (/* @__PURE__ */ new Date()).toISOString()
45
+ };
46
+ }
47
+ function scriptCommand(tenantRoot, script, args = []) {
48
+ return {
49
+ command: "npm",
50
+ args: ["run", script, "--", ...args],
51
+ cwd: tenantRoot
52
+ };
53
+ }
54
+ function apiCommand(tenantRoot, script) {
55
+ return {
56
+ command: "npm",
57
+ args: ["-w", "packages/api", "run", script === "api" ? "dev:api" : "dev:runner"],
58
+ cwd: tenantRoot
59
+ };
60
+ }
61
+ function localApiEnvironment(apiPort) {
62
+ const apiBaseUrl = `http://127.0.0.1:${apiPort}`;
63
+ return {
64
+ TREESEED_DATABASE_URL: "postgresql://treeseed:treeseed-local-dev@127.0.0.1:54329/treeseed_api",
65
+ TREESEED_API_BASE_URL: apiBaseUrl,
66
+ TREESEED_CAPACITY_ACCEPTANCE_API_URL: apiBaseUrl,
67
+ TREESEED_CAPACITY_ACCEPTANCE_ADMIN_TOKEN: "tsk_local_treeseed_acceptance_admin",
68
+ TREESEED_CAPACITY_ACCEPTANCE_TEAM_ID: "d8a613c2-bbdb-4474-9c96-31e985beafd4",
69
+ TREESEED_CAPACITY_ACCEPTANCE_PROJECT_ID: "90764af2-5a13-42b9-a2fa-fb3af5882323",
70
+ TREESEED_CAPACITY_ACCEPTANCE_PROVIDER_ID: "ff48ce97-6959-46b5-be9f-9b7062161fe3",
71
+ TREESEED_CAPACITY_ACCEPTANCE_AGENT_CLASS_ID: "planning",
72
+ TREESEED_CAPACITY_ACCEPTANCE_ENVIRONMENT: "local",
73
+ TREESEED_CAPACITY_PROVIDER_API_KEY: "tsp_local_treeseed_demo_capacity_provider",
74
+ TREESEED_API_PROVIDER_AUTH: "market-postgres",
75
+ TREESEED_API_AUTH_SECRET: "treeseed-api-dev-secret",
76
+ TREESEED_API_WEB_SERVICE_ID: "web",
77
+ TREESEED_API_WEB_SERVICE_SECRET: "treeseed-web-service-dev-secret",
78
+ TREESEED_API_WEB_ASSERTION_SECRET: "treeseed-web-assertion-dev-secret",
79
+ TREESEED_TREEDX_URL: "http://127.0.0.1:4000",
80
+ TREESEED_TREEDX_JWT_ISSUER: "https://api.treeseed.local/treedx",
81
+ TREESEED_TREEDX_JWT_AUDIENCE: "treedx-local",
82
+ TREESEED_TREEDX_JWT_HS256_SECRET: "treeseed-local-treedx-jwt-secret",
83
+ TREESEED_TREEDX_PROXY_ACTOR_ID: "treeseed-api",
84
+ TREESEED_TREEDX_PROXY_TENANT_ID: "treeseed-control-plane",
85
+ TREESEED_SMTP_HOST: "127.0.0.1",
86
+ TREESEED_SMTP_PORT: "1025",
87
+ TREESEED_SMTP_USERNAME: "",
88
+ TREESEED_SMTP_PASSWORD: "",
89
+ TREESEED_SMTP_FROM: "TreeSeed Local <noreply@treeseed.local>",
90
+ TREESEED_SMTP_REPLY_TO: "noreply@treeseed.local",
91
+ TREESEED_MAILPIT_SMTP_HOST: "127.0.0.1",
92
+ TREESEED_MAILPIT_SMTP_PORT: "1025",
93
+ TREESEED_MAILPIT_UI_URL: "http://127.0.0.1:8025",
94
+ TREESEED_PLATFORM_RUNNER_ID: "treeseed-ops-local-1",
95
+ TREESEED_PLATFORM_RUNNER_SECRET: "treeseed-platform-runner-dev-secret",
96
+ TREESEED_PLATFORM_RUNNER_ENVIRONMENT: "local",
97
+ TREESEED_ENVIRONMENT: "local",
98
+ TREESEED_API_ENVIRONMENT: "local",
99
+ TREESEED_LOCAL_DEV_MODE: "1"
100
+ };
101
+ }
102
+ function localWebEnvironment(apiPort) {
103
+ const apiBaseUrl = `http://127.0.0.1:${apiPort}`;
104
+ return {
105
+ TREESEED_MARKET_API_BASE_URL: apiBaseUrl,
106
+ TREESEED_CENTRAL_MARKET_API_BASE_URL: apiBaseUrl,
107
+ TREESEED_API_BASE_URL: apiBaseUrl,
108
+ TREESEED_CAPACITY_ACCEPTANCE_API_URL: apiBaseUrl,
109
+ TREESEED_CAPACITY_ACCEPTANCE_ADMIN_TOKEN: "tsk_local_treeseed_acceptance_admin",
110
+ TREESEED_CAPACITY_ACCEPTANCE_TEAM_ID: "d8a613c2-bbdb-4474-9c96-31e985beafd4",
111
+ TREESEED_CAPACITY_ACCEPTANCE_PROJECT_ID: "90764af2-5a13-42b9-a2fa-fb3af5882323",
112
+ TREESEED_CAPACITY_ACCEPTANCE_PROVIDER_ID: "ff48ce97-6959-46b5-be9f-9b7062161fe3",
113
+ TREESEED_CAPACITY_ACCEPTANCE_AGENT_CLASS_ID: "planning",
114
+ TREESEED_CAPACITY_ACCEPTANCE_ENVIRONMENT: "local",
115
+ TREESEED_CAPACITY_PROVIDER_API_KEY: "tsp_local_treeseed_demo_capacity_provider",
116
+ TREESEED_API_WEB_SERVICE_ID: "web",
117
+ TREESEED_API_WEB_SERVICE_SECRET: "treeseed-web-service-dev-secret",
118
+ TREESEED_API_WEB_ASSERTION_SECRET: "treeseed-web-assertion-dev-secret",
119
+ TREESEED_SMTP_HOST: "127.0.0.1",
120
+ TREESEED_SMTP_PORT: "1025",
121
+ TREESEED_SMTP_USERNAME: "",
122
+ TREESEED_SMTP_PASSWORD: "",
123
+ TREESEED_SMTP_FROM: "TreeSeed Local <noreply@treeseed.local>",
124
+ TREESEED_SMTP_REPLY_TO: "noreply@treeseed.local",
125
+ TREESEED_MAILPIT_SMTP_HOST: "127.0.0.1",
126
+ TREESEED_MAILPIT_SMTP_PORT: "1025",
127
+ TREESEED_MAILPIT_UI_URL: "http://127.0.0.1:8025",
128
+ TREESEED_ENVIRONMENT: "local",
129
+ TREESEED_LOCAL_DEV_MODE: "1"
130
+ };
131
+ }
132
+ function processSpec(input) {
133
+ const host = input.options.webHost ?? "127.0.0.1";
134
+ const webPort = input.options.webPort ?? 4321;
135
+ const apiHost = input.options.apiHost ?? "0.0.0.0";
136
+ const apiPort = input.options.apiPort ?? 3e3;
137
+ const id = input.surface === "operations-runner" ? "operations-runner" : input.surface;
138
+ const logPath = resolve(input.logDir, `${id}.log`);
139
+ const pidPath = resolve(input.stateDir, "pids", `${id}.pid`);
140
+ const instancePath = resolve(input.stateDir, "instances", `${id}.json`);
141
+ const env = Object.fromEntries(
142
+ Object.entries(input.options.env ?? {}).filter((entry) => typeof entry[1] === "string")
143
+ );
144
+ if (input.surface === "api") {
145
+ const command2 = apiCommand(input.tenantRoot, "api");
146
+ return {
147
+ id,
148
+ surface: input.surface,
149
+ ...command2,
150
+ env: { ...localApiEnvironment(apiPort), ...env, HOST: apiHost, PORT: String(apiPort) },
151
+ port: apiPort,
152
+ health: [{ id: "api", kind: "http", url: `http://${apiHost}:${apiPort}/healthz` }],
153
+ logPath,
154
+ pidPath,
155
+ instancePath
156
+ };
157
+ }
158
+ if (input.surface === "operations-runner") {
159
+ const runnerPort = Number(env.TREESEED_OPERATIONS_RUNNER_PORT ?? 3001);
160
+ const command2 = apiCommand(input.tenantRoot, "runner");
161
+ return {
162
+ id,
163
+ surface: input.surface,
164
+ ...command2,
165
+ env: { ...localApiEnvironment(apiPort), ...env, PORT: String(runnerPort) },
166
+ port: runnerPort,
167
+ health: [{ id: "operations-runner", kind: "http", url: `http://127.0.0.1:${runnerPort}/readyz` }],
168
+ logPath,
169
+ pidPath,
170
+ instancePath
171
+ };
172
+ }
173
+ const webRuntime = input.options.webRuntime ?? "local";
174
+ const tenantAstroCommand = `./packages/sdk/scripts/tenant-astro-command.${"ts"}`;
175
+ const webArgs = webRuntime === "provider" ? ["--host", host, "--port", String(webPort)] : ["dev", "--host", host, "--port", String(webPort)];
176
+ const command = webRuntime === "provider" ? scriptCommand(input.tenantRoot, "build:web", []) : {
177
+ command: process.execPath,
178
+ args: ["--import", "tsx", tenantAstroCommand, ...webArgs],
179
+ cwd: input.tenantRoot
180
+ };
181
+ return {
182
+ id: "web",
183
+ surface: "web",
184
+ ...command,
185
+ env: { ...localWebEnvironment(apiPort), ...env },
186
+ port: webPort,
187
+ health: [{ id: "web", kind: "http", url: `http://${host}:${webPort}` }],
188
+ logPath,
189
+ pidPath,
190
+ instancePath
191
+ };
192
+ }
193
+ function createTreeseedIntegratedDevPlan(options = {}) {
194
+ const tenantRoot = resolve(options.cwd ?? process.cwd());
195
+ const id = scopeId(tenantRoot);
196
+ const stateDir = resolve(tenantRoot, ".treeseed", "dev");
197
+ const logDir = resolve(tenantRoot, ".treeseed", "logs", "dev");
198
+ const surfaces = splitSurfaces(options.surfaces);
199
+ return {
200
+ tenantRoot,
201
+ scopeId: id,
202
+ worktreeRoot: tenantRoot,
203
+ stateDir,
204
+ logDir,
205
+ processes: surfaces.map((surface) => processSpec({ tenantRoot, stateDir, logDir, surface, options }))
206
+ };
207
+ }
208
+ function instanceFromSpec(spec) {
209
+ const pid = existsSync(spec.pidPath) ? Number(readFileSync(spec.pidPath, "utf8").trim()) : null;
210
+ const record = readJson(spec.instancePath);
211
+ return {
212
+ ...spec,
213
+ pid: Number.isFinite(pid) ? pid : null,
214
+ running: pidAlive(Number.isFinite(pid) ? pid : null),
215
+ startedAt: typeof record?.startedAt === "string" ? record.startedAt : null
216
+ };
217
+ }
218
+ async function checkHealth(spec) {
219
+ const checks = spec.health ?? [];
220
+ return Promise.all(checks.map(async (check) => {
221
+ const controller = new AbortController();
222
+ const timeout = setTimeout(() => controller.abort(), check.timeoutMs ?? 2e3);
223
+ try {
224
+ const response = await fetch(check.url, { signal: controller.signal });
225
+ return { id: check.id, ok: response.ok, status: response.status, url: check.url };
226
+ } catch (error) {
227
+ return {
228
+ id: check.id,
229
+ ok: false,
230
+ status: null,
231
+ url: check.url,
232
+ error: error instanceof Error ? error.message : String(error)
233
+ };
234
+ } finally {
235
+ clearTimeout(timeout);
236
+ }
237
+ }));
238
+ }
239
+ async function instanceFromSpecWithHealth(spec) {
240
+ const instance = instanceFromSpec(spec);
241
+ const healthStatus = await checkHealth(spec);
242
+ const healthy = healthStatus.length === 0 || healthStatus.every((entry) => entry.ok);
243
+ const running = healthStatus.length > 0 ? healthy : instance.running;
244
+ return {
245
+ ...instance,
246
+ healthStatus,
247
+ running
248
+ };
249
+ }
250
+ function readTreeseedDevInstance(input = {}) {
251
+ const plan = createTreeseedIntegratedDevPlan({ cwd: input.cwd, surfaces: input.surface ?? "web,api,operations-runner" });
252
+ const match = plan.processes.find((process2) => !input.surface || process2.surface === input.surface || process2.id === input.surface);
253
+ return match ? instanceFromSpec(match) : null;
254
+ }
255
+ function listTreeseedDevInstances(input = {}) {
256
+ const plan = createTreeseedIntegratedDevPlan({ cwd: input.cwd, surfaces: "web,api,operations-runner" });
257
+ const instanceDir = resolve(plan.stateDir, "instances");
258
+ if (!existsSync(instanceDir)) return [];
259
+ return readdirSync(instanceDir).filter((entry) => entry.endsWith(".json")).map((entry) => entry.slice(0, -".json".length)).map((surface) => readTreeseedDevInstance({ cwd: input.cwd, surface })).filter((entry) => Boolean(entry));
260
+ }
261
+ function stopSpec(spec) {
262
+ const instance = instanceFromSpec(spec);
263
+ if (instance.pid && instance.running) {
264
+ try {
265
+ process.kill(instance.pid, "SIGTERM");
266
+ } catch {
267
+ }
268
+ }
269
+ rmSync(spec.pidPath, { force: true });
270
+ rmSync(spec.instancePath, { force: true });
271
+ return instance;
272
+ }
273
+ async function startSpec(spec, force = false) {
274
+ const existing = instanceFromSpec(spec);
275
+ if (existing.running && !force) {
276
+ return existing;
277
+ }
278
+ if (existing.running && force) {
279
+ stopSpec(spec);
280
+ }
281
+ mkdirSync(resolve(spec.pidPath, ".."), { recursive: true });
282
+ mkdirSync(resolve(spec.instancePath, ".."), { recursive: true });
283
+ mkdirSync(resolve(spec.logPath, ".."), { recursive: true });
284
+ appendFileSync(spec.logPath, `
285
+ [treeseed-dev] starting ${spec.id} ${(/* @__PURE__ */ new Date()).toISOString()}
286
+ `, "utf8");
287
+ const logFd = openSync(spec.logPath, "a");
288
+ const child = spawn(spec.command, spec.args, {
289
+ cwd: spec.cwd,
290
+ env: { ...process.env, ...spec.env },
291
+ detached: true,
292
+ stdio: ["ignore", logFd, logFd]
293
+ });
294
+ closeSync(logFd);
295
+ child.unref();
296
+ writeFileSync(spec.pidPath, String(child.pid ?? ""), "utf8");
297
+ writeFileSync(spec.instancePath, `${JSON.stringify(persistedInstanceRecord(spec, child.pid ?? null), null, 2)}
298
+ `, "utf8");
299
+ return instanceFromSpec(spec);
300
+ }
301
+ async function waitForHealthySpec(spec, timeoutMs = 9e4) {
302
+ const startedAt = Date.now();
303
+ let instance = await instanceFromSpecWithHealth(spec);
304
+ while (!instance.running && Date.now() - startedAt < timeoutMs) {
305
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, 1e3));
306
+ instance = await instanceFromSpecWithHealth(spec);
307
+ }
308
+ return instance;
309
+ }
310
+ async function startTreeseedManagedDev(options = {}) {
311
+ const plan = createTreeseedIntegratedDevPlan(options);
312
+ const instances = [];
313
+ for (const spec of plan.processes) {
314
+ await startSpec(spec, options.force === true);
315
+ instances.push(await waitForHealthySpec(spec));
316
+ }
317
+ return { ok: instances.every((entry) => entry.running), action: "start", plan, instances };
318
+ }
319
+ async function stopTreeseedManagedDev(options = {}) {
320
+ const plan = createTreeseedIntegratedDevPlan(options);
321
+ const instances = plan.processes.map((spec) => stopSpec(spec));
322
+ return { ok: true, action: "stop", plan, instances };
323
+ }
324
+ function stopTreeseedDevInstance(options = {}) {
325
+ return stopTreeseedManagedDev(options);
326
+ }
327
+ async function restartTreeseedManagedDev(options = {}) {
328
+ await stopTreeseedManagedDev(options);
329
+ const result = await startTreeseedManagedDev({ ...options, force: true });
330
+ return { ...result, action: "restart" };
331
+ }
332
+ function readTreeseedDevLogs(options = {}) {
333
+ const plan = createTreeseedIntegratedDevPlan(options);
334
+ return {
335
+ logs: plan.processes.map((spec) => ({
336
+ id: spec.id,
337
+ path: spec.logPath,
338
+ content: existsSync(spec.logPath) ? readFileSync(spec.logPath, "utf8") : ""
339
+ }))
340
+ };
341
+ }
342
+ async function runTreeseedManagedDev(options) {
343
+ const action = options.action ?? "status";
344
+ if (action === "start") return startTreeseedManagedDev(options);
345
+ if (action === "stop") return stopTreeseedManagedDev(options);
346
+ if (action === "restart") return restartTreeseedManagedDev(options);
347
+ const plan = createTreeseedIntegratedDevPlan(options);
348
+ const instances = await Promise.all(plan.processes.map((spec) => instanceFromSpecWithHealth(spec)));
349
+ const logs = action === "logs" ? readTreeseedDevLogs(options) : void 0;
350
+ return {
351
+ ok: action === "logs" ? true : instances.every((entry) => entry.running),
352
+ action,
353
+ plan,
354
+ instances,
355
+ output: logs ? JSON.stringify(logs) : void 0
356
+ };
357
+ }
358
+ export {
359
+ createTreeseedIntegratedDevPlan,
360
+ listTreeseedDevInstances,
361
+ readTreeseedDevInstance,
362
+ readTreeseedDevLogs,
363
+ restartTreeseedManagedDev,
364
+ runTreeseedManagedDev,
365
+ startTreeseedManagedDev,
366
+ stopTreeseedDevInstance,
367
+ stopTreeseedManagedDev
368
+ };
@@ -60,6 +60,15 @@ export declare function createTreeseedManagedToolEnv(env?: NodeJS.ProcessEnv): {
60
60
  GH_CONFIG_DIR: string;
61
61
  GH_PROMPT_DISABLED: string;
62
62
  GH_NO_UPDATE_NOTIFIER: string;
63
+ GH_TOKEN?: string;
64
+ GITHUB_TOKEN?: string;
65
+ CLOUDFLARE_API_TOKEN?: string;
66
+ CLOUDFLARE_ACCOUNT_ID?: string;
67
+ RAILWAY_API_TOKEN?: string;
68
+ RAILWAY_TOKEN?: string;
69
+ DOCKERHUB_TOKEN?: string;
70
+ DOCKERHUB_USERNAME?: string;
71
+ CODEX_API_KEY?: string;
63
72
  };
64
73
  export declare function formatTreeseedDependencyFailureDetails(result: Pick<TreeseedDependencyInstallResult, 'npmInstalls' | 'reports'>): string;
65
74
  export declare function resolveTreeseedToolBinary(toolName: TreeseedManagedToolName, options?: {
@@ -2,10 +2,11 @@ import { createHash } from "node:crypto";
2
2
  import { createWriteStream, existsSync, mkdirSync, rmSync, renameSync, chmodSync, copyFileSync, readFileSync, readdirSync } from "node:fs";
3
3
  import { request as httpRequest } from "node:http";
4
4
  import { request as httpsRequest } from "node:https";
5
- import { homedir, platform as osPlatform, arch as osArch } from "node:os";
5
+ import { platform as osPlatform, arch as osArch } from "node:os";
6
6
  import { basename, dirname, resolve } from "node:path";
7
7
  import { spawnSync } from "node:child_process";
8
8
  import { createRequire } from "node:module";
9
+ import { withTreeseedServiceCredentialEnv } from "./service-credentials.js";
9
10
  const require2 = createRequire(import.meta.url);
10
11
  const GH_VERSION = "2.90.0";
11
12
  const GH_CHECKSUMS_SHA256 = "95cbb66008dc467cf402724025f07551d2a949b3cc830146206a2797b963966c";
@@ -22,7 +23,7 @@ const NPM_TOOLS = [
22
23
  name: "railway",
23
24
  packageName: "@railway/cli",
24
25
  binName: "railway",
25
- version: "4.44.0"
26
+ version: "5.23.2"
26
27
  },
27
28
  { name: "copilot", packageName: "@github/copilot", binName: "copilot", version: "1.0.39" },
28
29
  { name: "copilot-language-server", packageName: "@github/copilot-language-server", binName: "copilot-language-server", version: "1.480.0" }
@@ -46,7 +47,7 @@ function resolveToolsHome(env = process.env) {
46
47
  if (env.XDG_CACHE_HOME?.trim()) {
47
48
  return resolve(env.XDG_CACHE_HOME, "treeseed", "tools");
48
49
  }
49
- return resolve(homedir(), ".cache", "treeseed", "tools");
50
+ return resolve(process.cwd(), ".treeseed", "tools");
50
51
  }
51
52
  function createTreeseedManagedToolEnv(env = process.env) {
52
53
  const toolsHome = resolveToolsHome(env);
@@ -54,7 +55,7 @@ function createTreeseedManagedToolEnv(env = process.env) {
54
55
  const pathKey = process.platform === "win32" ? "Path" : "PATH";
55
56
  const existingPath = env[pathKey] ?? env.PATH ?? "";
56
57
  return {
57
- ...env,
58
+ ...withTreeseedServiceCredentialEnv(env),
58
59
  GH_CONFIG_DIR: env.TREESEED_GH_CONFIG_DIR ?? resolve(toolsHome, "gh-config"),
59
60
  GH_PROMPT_DISABLED: "1",
60
61
  GH_NO_UPDATE_NOTIFIER: "1",
@@ -79,12 +80,13 @@ function managedGhBin(env = process.env) {
79
80
  return resolve(resolveToolsHome(env), "gh", GH_VERSION, platformKey(), "bin", "gh");
80
81
  }
81
82
  function tokenEnv(env = process.env) {
82
- const ghToken = env.GH_TOKEN?.trim() || env.GITHUB_TOKEN?.trim() || "";
83
+ const translated = withTreeseedServiceCredentialEnv(env);
84
+ const ghToken = translated.GH_TOKEN?.trim() || translated.GITHUB_TOKEN?.trim() || "";
83
85
  return ghToken ? {
84
- ...env,
86
+ ...translated,
85
87
  GH_TOKEN: ghToken,
86
88
  GITHUB_TOKEN: ghToken
87
- } : env;
89
+ } : translated;
88
90
  }
89
91
  function cleanCommandPathOutput(output) {
90
92
  const lines = output.split(/\r?\n/u).map((line) => line.trim()).filter(Boolean);
@@ -470,7 +472,7 @@ function checkGitHubAuth(options) {
470
472
  const remediation = [
471
473
  "Run `npx trsd install --json` to install or inspect managed tools.",
472
474
  "Run `npx trsd secrets:unlock` or provide TREESEED_KEY_PASSPHRASE so machine secrets can be decrypted.",
473
- "Verify GH_TOKEN is configured in machine.yaml or the environment."
475
+ "Verify TREESEED_GITHUB_TOKEN is configured in machine.yaml or the environment."
474
476
  ];
475
477
  if (!gh) {
476
478
  return {