@treeseed/sdk 0.11.0 → 0.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +9 -4
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +117 -60
  27. package/dist/capacity-provider.js +215 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +2 -2
  36. package/dist/copilot.d.ts +3 -0
  37. package/dist/copilot.js +16 -1
  38. package/dist/d1-http.d.ts +1 -1
  39. package/dist/d1-store.d.ts +32 -57
  40. package/dist/d1-store.js +115 -318
  41. package/dist/db/d1.d.ts +1 -232
  42. package/dist/db/index.d.ts +3 -3
  43. package/dist/db/market-schema.d.ts +49037 -11843
  44. package/dist/db/market-schema.js +1788 -50
  45. package/dist/db/node-sqlite.d.ts +1 -232
  46. package/dist/db/schema.d.ts +0 -462
  47. package/dist/db/schema.js +2 -22
  48. package/dist/dispatch.d.ts +1 -1
  49. package/dist/dispatch.js +0 -11
  50. package/dist/fixture-support.js +52 -4
  51. package/dist/governance.d.ts +133 -0
  52. package/dist/governance.js +285 -0
  53. package/dist/graph/build.d.ts +2 -2
  54. package/dist/graph/context-query-contracts.d.ts +1 -1
  55. package/dist/graph/dsl.d.ts +1 -1
  56. package/dist/graph/query.d.ts +4 -4
  57. package/dist/graph/ranking.d.ts +1 -1
  58. package/dist/graph/schema.d.ts +1 -1
  59. package/dist/graph.d.ts +11 -11
  60. package/dist/guarantees/index.d.ts +425 -0
  61. package/dist/guarantees/index.js +1146 -0
  62. package/dist/hosting/apps.d.ts +1 -1
  63. package/dist/hosting/builtins.d.ts +1 -1
  64. package/dist/hosting/builtins.js +9 -198
  65. package/dist/hosting/contracts.d.ts +3 -2
  66. package/dist/hosting/graph.d.ts +24 -21
  67. package/dist/hosting/graph.js +280 -294
  68. package/dist/hosting/index.d.ts +4 -4
  69. package/dist/index.d.ts +88 -74
  70. package/dist/index.js +81 -10
  71. package/dist/local-dev/managed-dev.d.ts +85 -0
  72. package/dist/local-dev/managed-dev.js +368 -0
  73. package/dist/managed-dependencies.d.ts +9 -0
  74. package/dist/managed-dependencies.js +10 -8
  75. package/dist/market-client.d.ts +265 -7
  76. package/dist/market-client.js +381 -9
  77. package/dist/model-registry.d.ts +1 -1
  78. package/dist/model-registry.js +19 -19
  79. package/dist/operations/agent-tools.d.ts +2 -11
  80. package/dist/operations/agent-tools.js +2 -14
  81. package/dist/operations/providers/default.d.ts +1 -1
  82. package/dist/operations/providers/default.js +20 -37
  83. package/dist/operations/repository-operations.d.ts +26 -2
  84. package/dist/operations/repository-operations.js +159 -1
  85. package/dist/operations/runtime.d.ts +3 -3
  86. package/dist/operations/services/bootstrap-runner.d.ts +1 -1
  87. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  88. package/dist/operations/services/build-warning-policy.js +81 -82
  89. package/dist/operations/services/commit-message-provider.js +4 -4
  90. package/dist/operations/services/config-runtime.d.ts +73 -19
  91. package/dist/operations/services/config-runtime.js +276 -100
  92. package/dist/operations/services/deploy.d.ts +41 -622
  93. package/dist/operations/services/deploy.js +181 -213
  94. package/dist/operations/services/deployment-readiness.d.ts +1 -1
  95. package/dist/operations/services/deployment-readiness.js +38 -7
  96. package/dist/operations/services/git-remote-policy.js +12 -4
  97. package/dist/operations/services/git-runner.d.ts +66 -0
  98. package/dist/operations/services/git-runner.js +479 -0
  99. package/dist/operations/services/git-workflow.d.ts +43 -5
  100. package/dist/operations/services/git-workflow.js +242 -20
  101. package/dist/operations/services/github-actions-verification.d.ts +3 -1
  102. package/dist/operations/services/github-actions-verification.js +11 -3
  103. package/dist/operations/services/github-api.js +21 -5
  104. package/dist/operations/services/github-automation.d.ts +3 -3
  105. package/dist/operations/services/github-automation.js +15 -18
  106. package/dist/operations/services/github-credentials.js +2 -1
  107. package/dist/operations/services/hosted-service-checks.d.ts +19 -1
  108. package/dist/operations/services/hosted-service-checks.js +162 -11
  109. package/dist/operations/services/hosting-audit.d.ts +2 -2
  110. package/dist/operations/services/hosting-audit.js +7 -7
  111. package/dist/operations/services/hub-launch.d.ts +1 -1
  112. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  113. package/dist/operations/services/hub-provider-launch.js +19 -14
  114. package/dist/operations/services/live-hosted-service-checks.d.ts +2 -1
  115. package/dist/operations/services/live-hosted-service-checks.js +193 -80
  116. package/dist/operations/services/local-dev.js +0 -1
  117. package/dist/operations/services/managed-host-security.d.ts +1 -1
  118. package/dist/operations/services/managed-repositories.d.ts +37 -0
  119. package/dist/operations/services/managed-repositories.js +177 -0
  120. package/dist/operations/services/operations-runner-smoke.d.ts +3 -2
  121. package/dist/operations/services/operations-runner-smoke.js +22 -4
  122. package/dist/operations/services/package-adapters.d.ts +77 -2
  123. package/dist/operations/services/package-adapters.js +629 -56
  124. package/dist/operations/services/package-reference-policy.d.ts +12 -88
  125. package/dist/operations/services/package-reference-policy.js +81 -213
  126. package/dist/operations/services/project-host-operations.d.ts +4 -4
  127. package/dist/operations/services/project-platform.d.ts +19 -193
  128. package/dist/operations/services/project-platform.js +31 -103
  129. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  130. package/dist/operations/services/project-web-monitor.js +97 -2
  131. package/dist/operations/services/railway-api.d.ts +36 -7
  132. package/dist/operations/services/railway-api.js +331 -100
  133. package/dist/operations/services/railway-deploy.d.ts +7 -95
  134. package/dist/operations/services/railway-deploy.js +334 -742
  135. package/dist/operations/services/release-history.js +3 -4
  136. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  137. package/dist/operations/services/release-proof-ledger.js +81 -0
  138. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  139. package/dist/operations/services/release-proof-planner.js +195 -0
  140. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  141. package/dist/operations/services/release-proof-runner.js +169 -0
  142. package/dist/operations/services/release-proof.d.ts +81 -0
  143. package/dist/operations/services/release-proof.js +79 -0
  144. package/dist/operations/services/repository-save-orchestrator.d.ts +6 -7
  145. package/dist/operations/services/repository-save-orchestrator.js +353 -174
  146. package/dist/operations/services/runtime-paths.d.ts +1 -3
  147. package/dist/operations/services/runtime-paths.js +0 -4
  148. package/dist/operations/services/runtime-tools.d.ts +1 -192
  149. package/dist/operations/services/runtime-tools.js +4 -444
  150. package/dist/operations/services/save-deploy-preflight.js +9 -1
  151. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  152. package/dist/operations/services/template-host-bindings.js +3 -2
  153. package/dist/operations/services/template-registry.d.ts +6 -6
  154. package/dist/operations/services/template-registry.js +33 -14
  155. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  156. package/dist/operations/services/workflow-timing.d.ts +25 -0
  157. package/dist/operations/services/workflow-timing.js +79 -0
  158. package/dist/operations/services/workspace-dependency-mode.js +41 -4
  159. package/dist/operations/services/workspace-preflight.js +8 -8
  160. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  161. package/dist/operations/services/workspace-save.d.ts +1 -0
  162. package/dist/operations/services/workspace-save.js +41 -18
  163. package/dist/operations/services/workspace-tools.js +40 -6
  164. package/dist/operations-registry.d.ts +1 -1
  165. package/dist/operations-registry.js +5 -6
  166. package/dist/operations-types.d.ts +1 -1
  167. package/dist/operations.d.ts +17 -11
  168. package/dist/operations.js +57 -3
  169. package/dist/platform/book-export.js +2 -0
  170. package/dist/platform/books-data.d.ts +1 -1
  171. package/dist/platform/config.d.ts +27 -0
  172. package/dist/platform/config.js +100 -0
  173. package/dist/platform/content-runtime-source.d.ts +54 -0
  174. package/dist/platform/content-runtime-source.js +169 -0
  175. package/dist/platform/contracts.d.ts +6 -1
  176. package/dist/platform/deploy-config.d.ts +1 -1
  177. package/dist/platform/deploy-config.js +7 -1
  178. package/dist/platform/deploy-runtime.d.ts +1 -1
  179. package/dist/platform/desired-state.d.ts +66 -0
  180. package/dist/platform/desired-state.js +1052 -0
  181. package/dist/platform/env.yaml +414 -19
  182. package/dist/platform/environment.d.ts +2 -2
  183. package/dist/platform/environment.js +54 -22
  184. package/dist/platform/local-content-materialization.d.ts +9 -0
  185. package/dist/platform/local-content-materialization.js +212 -0
  186. package/dist/platform/plugin.d.ts +5 -5
  187. package/dist/platform/plugins/runtime.d.ts +3 -3
  188. package/dist/platform/plugins/runtime.js +62 -1
  189. package/dist/platform/plugins.d.ts +6 -6
  190. package/dist/platform/published-content-pipeline.d.ts +3 -3
  191. package/dist/platform/published-content-pipeline.js +5 -1
  192. package/dist/platform/published-content.d.ts +4 -3
  193. package/dist/platform/site-config-schema.d.ts +1 -0
  194. package/dist/platform/site-config-schema.js +4 -1
  195. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  196. package/dist/platform/tenant-config.d.ts +1 -1
  197. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  198. package/dist/platform/utils/site-config-schema.js +400 -461
  199. package/dist/platform-operation-store.d.ts +1 -1
  200. package/dist/plugin-default.d.ts +1 -1
  201. package/dist/plugin-default.js +27 -12
  202. package/dist/project-import.d.ts +91 -0
  203. package/dist/project-import.js +257 -0
  204. package/dist/project-workflow.d.ts +1 -1
  205. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  206. package/dist/reconcile/bootstrap-systems.js +3 -3
  207. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  208. package/dist/reconcile/builtin-adapters.js +2924 -346
  209. package/dist/reconcile/contracts.d.ts +15 -2
  210. package/dist/reconcile/desired-state.d.ts +2 -193
  211. package/dist/reconcile/desired-state.js +24 -33
  212. package/dist/reconcile/engine.d.ts +60 -397
  213. package/dist/reconcile/engine.js +182 -18
  214. package/dist/reconcile/index.d.ts +10 -10
  215. package/dist/reconcile/live-acceptance.d.ts +22 -1
  216. package/dist/reconcile/live-acceptance.js +456 -44
  217. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  218. package/dist/reconcile/providers/docker-private.js +101 -0
  219. package/dist/reconcile/providers/github-private.d.ts +65 -0
  220. package/dist/reconcile/providers/github-private.js +119 -0
  221. package/dist/reconcile/providers/local-private.d.ts +28 -0
  222. package/dist/reconcile/providers/local-private.js +75 -0
  223. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  224. package/dist/reconcile/providers/railway-iac.js +275 -0
  225. package/dist/reconcile/providers/release-private.d.ts +92 -0
  226. package/dist/reconcile/providers/release-private.js +152 -0
  227. package/dist/reconcile/registry.d.ts +2 -2
  228. package/dist/reconcile/registry.js +16 -1
  229. package/dist/reconcile/state.d.ts +1 -1
  230. package/dist/reconcile/state.js +3 -40
  231. package/dist/reconcile/units.d.ts +1 -1
  232. package/dist/reconcile/units.js +7 -1
  233. package/dist/remote.d.ts +6 -6
  234. package/dist/scenes/artifacts.d.ts +16 -0
  235. package/dist/scenes/artifacts.js +61 -0
  236. package/dist/scenes/auth.d.ts +2 -0
  237. package/dist/scenes/auth.js +28 -0
  238. package/dist/scenes/base-url.d.ts +12 -0
  239. package/dist/scenes/base-url.js +123 -0
  240. package/dist/scenes/builtin-plugins.d.ts +2 -0
  241. package/dist/scenes/builtin-plugins.js +447 -0
  242. package/dist/scenes/checkpoints.d.ts +14 -0
  243. package/dist/scenes/checkpoints.js +33 -0
  244. package/dist/scenes/device-matrix.d.ts +2 -0
  245. package/dist/scenes/device-matrix.js +97 -0
  246. package/dist/scenes/devices.d.ts +11 -0
  247. package/dist/scenes/devices.js +22 -0
  248. package/dist/scenes/diagnostics.d.ts +5 -0
  249. package/dist/scenes/diagnostics.js +22 -0
  250. package/dist/scenes/diagram-providers.d.ts +2 -0
  251. package/dist/scenes/diagram-providers.js +181 -0
  252. package/dist/scenes/diagram-validation.d.ts +22 -0
  253. package/dist/scenes/diagram-validation.js +74 -0
  254. package/dist/scenes/environment.d.ts +2 -0
  255. package/dist/scenes/environment.js +65 -0
  256. package/dist/scenes/evidence-bundle.d.ts +5 -0
  257. package/dist/scenes/evidence-bundle.js +42 -0
  258. package/dist/scenes/evidence-report.d.ts +10 -0
  259. package/dist/scenes/evidence-report.js +73 -0
  260. package/dist/scenes/evidence.d.ts +16 -0
  261. package/dist/scenes/evidence.js +277 -0
  262. package/dist/scenes/index.d.ts +48 -0
  263. package/dist/scenes/index.js +312 -0
  264. package/dist/scenes/inspect.d.ts +9 -0
  265. package/dist/scenes/inspect.js +64 -0
  266. package/dist/scenes/loader.d.ts +3 -0
  267. package/dist/scenes/loader.js +38 -0
  268. package/dist/scenes/logs.d.ts +2 -0
  269. package/dist/scenes/logs.js +47 -0
  270. package/dist/scenes/operations.d.ts +3 -0
  271. package/dist/scenes/operations.js +128 -0
  272. package/dist/scenes/phase0.d.ts +9 -0
  273. package/dist/scenes/phase0.js +637 -0
  274. package/dist/scenes/planner.d.ts +12 -0
  275. package/dist/scenes/planner.js +166 -0
  276. package/dist/scenes/playwright-adapter.d.ts +2 -0
  277. package/dist/scenes/playwright-adapter.js +63 -0
  278. package/dist/scenes/plugins.d.ts +5 -0
  279. package/dist/scenes/plugins.js +115 -0
  280. package/dist/scenes/progress.d.ts +17 -0
  281. package/dist/scenes/progress.js +24 -0
  282. package/dist/scenes/publish-destinations.d.ts +12 -0
  283. package/dist/scenes/publish-destinations.js +99 -0
  284. package/dist/scenes/publish-plan-report.d.ts +10 -0
  285. package/dist/scenes/publish-plan-report.js +70 -0
  286. package/dist/scenes/publish-plan.d.ts +15 -0
  287. package/dist/scenes/publish-plan.js +248 -0
  288. package/dist/scenes/publish-redaction.d.ts +16 -0
  289. package/dist/scenes/publish-redaction.js +148 -0
  290. package/dist/scenes/publish-release-record.d.ts +13 -0
  291. package/dist/scenes/publish-release-record.js +34 -0
  292. package/dist/scenes/publish-report.d.ts +10 -0
  293. package/dist/scenes/publish-report.js +67 -0
  294. package/dist/scenes/publish.d.ts +16 -0
  295. package/dist/scenes/publish.js +298 -0
  296. package/dist/scenes/registry.d.ts +12 -0
  297. package/dist/scenes/registry.js +65 -0
  298. package/dist/scenes/remotion-adapter.d.ts +3 -0
  299. package/dist/scenes/remotion-adapter.js +94 -0
  300. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  301. package/dist/scenes/remotion-composition-registry.js +12 -0
  302. package/dist/scenes/remotion-compositions.d.ts +15 -0
  303. package/dist/scenes/remotion-compositions.js +464 -0
  304. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  305. package/dist/scenes/remotion-diagrams.js +188 -0
  306. package/dist/scenes/remotion-input.d.ts +13 -0
  307. package/dist/scenes/remotion-input.js +291 -0
  308. package/dist/scenes/remotion-visuals.d.ts +29 -0
  309. package/dist/scenes/remotion-visuals.js +198 -0
  310. package/dist/scenes/render-media-assets.d.ts +9 -0
  311. package/dist/scenes/render-media-assets.js +117 -0
  312. package/dist/scenes/render-report.d.ts +10 -0
  313. package/dist/scenes/render-report.js +27 -0
  314. package/dist/scenes/render.d.ts +2 -0
  315. package/dist/scenes/render.js +218 -0
  316. package/dist/scenes/reporter.d.ts +3 -0
  317. package/dist/scenes/reporter.js +101 -0
  318. package/dist/scenes/resume.d.ts +2 -0
  319. package/dist/scenes/resume.js +79 -0
  320. package/dist/scenes/runner.d.ts +2 -0
  321. package/dist/scenes/runner.js +674 -0
  322. package/dist/scenes/schema.d.ts +6 -0
  323. package/dist/scenes/schema.js +994 -0
  324. package/dist/scenes/seed.d.ts +2 -0
  325. package/dist/scenes/seed.js +83 -0
  326. package/dist/scenes/segments.d.ts +15 -0
  327. package/dist/scenes/segments.js +79 -0
  328. package/dist/scenes/selectors.d.ts +3 -0
  329. package/dist/scenes/selectors.js +21 -0
  330. package/dist/scenes/timeline.d.ts +11 -0
  331. package/dist/scenes/timeline.js +26 -0
  332. package/dist/scenes/timeouts.d.ts +6 -0
  333. package/dist/scenes/timeouts.js +17 -0
  334. package/dist/scenes/training-captions.d.ts +14 -0
  335. package/dist/scenes/training-captions.js +98 -0
  336. package/dist/scenes/training-report.d.ts +10 -0
  337. package/dist/scenes/training-report.js +78 -0
  338. package/dist/scenes/training-transcript.d.ts +24 -0
  339. package/dist/scenes/training-transcript.js +204 -0
  340. package/dist/scenes/training.d.ts +10 -0
  341. package/dist/scenes/training.js +134 -0
  342. package/dist/scenes/types.d.ts +1872 -0
  343. package/dist/scenes/types.js +8 -0
  344. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  345. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  346. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  347. package/dist/scenes/visual-audit-fixtures.js +210 -0
  348. package/dist/scenes/visual-audit-report.d.ts +11 -0
  349. package/dist/scenes/visual-audit-report.js +85 -0
  350. package/dist/scenes/visual-audit-review.d.ts +23 -0
  351. package/dist/scenes/visual-audit-review.js +829 -0
  352. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  353. package/dist/scenes/visual-audit-routes.js +308 -0
  354. package/dist/scenes/visual-audit.d.ts +3 -0
  355. package/dist/scenes/visual-audit.js +596 -0
  356. package/dist/scripts/build-dist.js +154 -40
  357. package/dist/scripts/check-build-warnings.js +42 -53
  358. package/dist/scripts/cleanup-markdown.js +1 -1
  359. package/dist/scripts/cli-test-fixtures.js +24 -28
  360. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  361. package/dist/scripts/package-tools.js +12 -1
  362. package/dist/scripts/prepare.js +3 -7
  363. package/dist/scripts/release-verify.js +2 -5
  364. package/dist/scripts/run-fixture-astro-command.js +1 -1
  365. package/dist/scripts/template-catalog.test.js +68 -82
  366. package/dist/scripts/tenant-dev.js +0 -10
  367. package/dist/scripts/test-cloudflare-local.js +1 -1
  368. package/dist/scripts/test-scaffold.js +0 -1
  369. package/dist/scripts/test-smoke.js +3 -3
  370. package/dist/scripts/treeseed-build-dist.js +4 -7
  371. package/dist/scripts/treeseed-release-verify.js +1 -1
  372. package/dist/scripts/verify-driver.js +30 -21
  373. package/dist/scripts/workflow-commands.test.js +18 -27
  374. package/dist/scripts/workspace-command-e2e.js +1 -1
  375. package/dist/scripts/workspace-lint.js +6 -0
  376. package/dist/scripts/workspace-release-test.js +90 -1
  377. package/dist/scripts/workspace-test.js +6 -0
  378. package/dist/sdk-dispatch.d.ts +1 -1
  379. package/dist/sdk-dispatch.js +0 -16
  380. package/dist/sdk-fields.d.ts +1 -1
  381. package/dist/sdk-filters.d.ts +1 -1
  382. package/dist/sdk-types.d.ts +1184 -113
  383. package/dist/sdk-types.js +393 -0
  384. package/dist/sdk.d.ts +74 -79
  385. package/dist/sdk.js +27 -36
  386. package/dist/secrets-capability.d.ts +421 -0
  387. package/dist/secrets-capability.js +530 -0
  388. package/dist/seeds/normalize.js +1 -0
  389. package/dist/seeds/planner.js +38 -0
  390. package/dist/seeds/schema.js +293 -4
  391. package/dist/seeds/types.d.ts +60 -0
  392. package/dist/seeds/types.js +9 -1
  393. package/dist/service-credentials.d.ts +54 -0
  394. package/dist/service-credentials.js +112 -0
  395. package/dist/stores/cursor-store.d.ts +2 -2
  396. package/dist/stores/envelopes.d.ts +1 -1
  397. package/dist/stores/helpers.d.ts +1 -1
  398. package/dist/stores/lease-store.d.ts +2 -2
  399. package/dist/stores/message-store.d.ts +2 -2
  400. package/dist/stores/operational-store.d.ts +3 -26
  401. package/dist/stores/operational-store.js +0 -225
  402. package/dist/stores/project-workflow-store.d.ts +2 -2
  403. package/dist/stores/run-store.d.ts +2 -3
  404. package/dist/stores/run-store.js +0 -98
  405. package/dist/stores/subscription-store.d.ts +2 -3
  406. package/dist/stores/subscription-store.js +0 -100
  407. package/dist/template-catalog.d.ts +1 -1
  408. package/dist/template-launch-requirements.d.ts +2 -2
  409. package/dist/template-launch-ui.d.ts +2 -2
  410. package/dist/treedx/adapters.d.ts +6 -6
  411. package/dist/treedx/client.d.ts +1 -1
  412. package/dist/treedx/errors.d.ts +1 -1
  413. package/dist/treedx/federated-client.d.ts +3 -3
  414. package/dist/treedx/graph-adapter.d.ts +2 -2
  415. package/dist/treedx/index.d.ts +14 -14
  416. package/dist/treedx/market-integration.d.ts +1 -1
  417. package/dist/treedx/ports.d.ts +30 -30
  418. package/dist/treedx/query-adapter.d.ts +3 -3
  419. package/dist/treedx/registry-client.d.ts +2 -2
  420. package/dist/treedx/repository-adapter.d.ts +4 -4
  421. package/dist/treedx/repository-adapter.js +14 -3
  422. package/dist/treedx/sdk-integration.d.ts +3 -3
  423. package/dist/treedx/types.d.ts +2 -2
  424. package/dist/treedx/workspace-adapter.d.ts +2 -2
  425. package/dist/treedx-backends.d.ts +13 -11
  426. package/dist/treedx-backends.js +52 -50
  427. package/dist/treedx-client.d.ts +3 -0
  428. package/dist/treedx-client.js +10 -1
  429. package/dist/treeseed/services/compose.yml +2 -3
  430. package/dist/treeseed/template-catalog/catalog.fixture.json +4 -4
  431. package/dist/types/agents.d.ts +256 -0
  432. package/dist/types/agents.js +42 -1
  433. package/dist/verification.d.ts +1 -0
  434. package/dist/verification.js +143 -14
  435. package/dist/workflow/operations.d.ts +510 -559
  436. package/dist/workflow/operations.js +1891 -1342
  437. package/dist/workflow/policy.js +19 -7
  438. package/dist/workflow/runs.d.ts +9 -3
  439. package/dist/workflow/runs.js +66 -26
  440. package/dist/workflow/session.d.ts +4 -1
  441. package/dist/workflow/session.js +50 -10
  442. package/dist/workflow/worktrees.d.ts +6 -2
  443. package/dist/workflow/worktrees.js +98 -15
  444. package/dist/workflow-state.d.ts +5 -5
  445. package/dist/workflow-state.js +27 -17
  446. package/dist/workflow-support.d.ts +26 -25
  447. package/dist/workflow-support.js +27 -31
  448. package/dist/workflow.d.ts +46 -16
  449. package/dist/workflow.js +19 -7
  450. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  451. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  452. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  453. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  454. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  455. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  456. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  457. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  458. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  459. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  460. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  461. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  462. package/package.json +75 -18
  463. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  464. package/templates/github/deploy-web.workflow.yml +12 -8
  465. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  466. package/dist/operations/services/mailpit-runtime.js +0 -67
  467. package/dist/operations/services/release-candidate.d.ts +0 -60
  468. package/dist/operations/services/release-candidate.js +0 -953
  469. package/dist/scripts/ensure-mailpit.js +0 -48
  470. package/dist/scripts/logs-mailpit.js +0 -2
  471. package/dist/scripts/run-ts.js +0 -45
  472. package/dist/scripts/stop-mailpit.js +0 -5
  473. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -1,13 +1,65 @@
1
- import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
- import { basename, dirname, extname, join, relative, resolve } from 'node:path';
1
+ import { chmodSync, copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, rmdirSync, statSync, writeFileSync } from 'node:fs';
2
+ import { dirname, extname, join, relative, resolve } from 'node:path';
3
3
  import { build } from 'esbuild';
4
4
  import ts from 'typescript';
5
5
  import { packageRoot } from './package-tools.js';
6
6
  const srcRoot = resolve(packageRoot, 'src');
7
7
  const scriptsRoot = resolve(packageRoot, 'scripts');
8
8
  const distRoot = resolve(packageRoot, 'dist');
9
+ const distBuildRoot = resolve(packageRoot, `.treeseed-dist-build-${process.pid}`);
10
+ const buildLockRoot = resolve(packageRoot, '.treeseed-build-dist.lock');
9
11
  const treeseedTemplateCatalogSourceRoot = resolve(srcRoot, 'treeseed', 'template-catalog');
10
12
  const treeseedServicesSourceRoot = resolve(srcRoot, 'treeseed', 'services');
13
+ const BIN_ENTRYPOINTS = new Set(['verification.ts']);
14
+ const BUILD_LOCK_TIMEOUT_MS = 15 * 60 * 1000;
15
+ const BUILD_LOCK_STALE_MS = 20 * 60 * 1000;
16
+ function sleep(ms) {
17
+ return new Promise((resolvePromise) => setTimeout(resolvePromise, ms));
18
+ }
19
+ function lockOwnerIsRunning() {
20
+ let owner;
21
+ try {
22
+ owner = JSON.parse(readFileSync(resolve(buildLockRoot, 'owner.json'), 'utf8'));
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ if (typeof owner.pid !== 'number') {
28
+ return false;
29
+ }
30
+ try {
31
+ process.kill(owner.pid, 0);
32
+ return true;
33
+ }
34
+ catch (error) {
35
+ const code = typeof error === 'object' && error && 'code' in error ? error.code : null;
36
+ return code === 'EPERM';
37
+ }
38
+ }
39
+ async function acquireBuildLock() {
40
+ const startedAt = Date.now();
41
+ while (true) {
42
+ try {
43
+ mkdirSync(buildLockRoot);
44
+ writeFileSync(resolve(buildLockRoot, 'owner.json'), JSON.stringify({
45
+ pid: process.pid,
46
+ startedAt: new Date().toISOString(),
47
+ }, null, 2));
48
+ return () => rmSync(buildLockRoot, { recursive: true, force: true });
49
+ }
50
+ catch (error) {
51
+ const ageMs = existsSync(buildLockRoot) ? Date.now() - statSync(buildLockRoot).mtimeMs : 0;
52
+ if (!lockOwnerIsRunning() || ageMs > BUILD_LOCK_STALE_MS) {
53
+ rmSync(buildLockRoot, { recursive: true, force: true });
54
+ continue;
55
+ }
56
+ if (Date.now() - startedAt > BUILD_LOCK_TIMEOUT_MS) {
57
+ throw new Error(`Timed out waiting for SDK dist build lock at ${buildLockRoot}.`);
58
+ }
59
+ await sleep(250);
60
+ }
61
+ }
62
+ }
11
63
  const COPY_EXTENSIONS = new Set(['.json', '.md', '.js', '.d.js', '.yaml', '.yml']);
12
64
  function walkFiles(root) {
13
65
  const files = [];
@@ -40,7 +92,7 @@ function isDeclarationAsset(filePath) {
40
92
  }
41
93
  async function compileModule(filePath, sourceRoot, outputRoot) {
42
94
  const relativePath = relative(sourceRoot, filePath);
43
- const outputFile = resolve(outputRoot, relativePath.replace(/\.(mjs|ts)$/u, '.js'));
95
+ const outputFile = resolve(outputRoot, relativePath.replace(/\.ts$/u, '.js'));
44
96
  ensureDir(outputFile);
45
97
  await build({
46
98
  entryPoints: [filePath],
@@ -51,7 +103,14 @@ async function compileModule(filePath, sourceRoot, outputRoot) {
51
103
  logLevel: 'silent',
52
104
  });
53
105
  const builtSource = readFileSync(outputFile, 'utf8');
54
- writeFileSync(outputFile, rewriteRuntimeSpecifiers(builtSource), 'utf8');
106
+ const rewritten = rewriteRuntimeSpecifiers(builtSource);
107
+ const executableSource = BIN_ENTRYPOINTS.has(relativePath)
108
+ ? `${rewritten.startsWith('#!') ? '' : '#!/usr/bin/env node\n'}${rewritten}`
109
+ : rewritten;
110
+ writeFileSync(outputFile, executableSource, 'utf8');
111
+ if (BIN_ENTRYPOINTS.has(relativePath)) {
112
+ chmodSync(outputFile, 0o755);
113
+ }
55
114
  }
56
115
  function copyAsset(filePath, sourceRoot, outputRoot) {
57
116
  const outputFile = resolve(outputRoot, relative(sourceRoot, filePath));
@@ -67,16 +126,54 @@ function copyAssetTree(sourceRoot, outputRoot) {
67
126
  copyAsset(filePath, sourceRoot, outputRoot);
68
127
  }
69
128
  }
70
- function transpileScript(filePath) {
71
- if (basename(filePath).startsWith('.ts-run-')) {
129
+ function listRelativeFiles(root) {
130
+ if (!existsSync(root)) {
131
+ return [];
132
+ }
133
+ return walkFiles(root).map((filePath) => relative(root, filePath));
134
+ }
135
+ function removeEmptyDirectories(root) {
136
+ if (!existsSync(root)) {
137
+ return;
138
+ }
139
+ const entries = readdirSync(root, { withFileTypes: true });
140
+ for (const entry of entries) {
141
+ if (!entry.isDirectory()) {
142
+ continue;
143
+ }
144
+ removeEmptyDirectories(resolve(root, entry.name));
145
+ }
146
+ if (root !== distRoot && readdirSync(root).length === 0) {
147
+ rmdirSync(root);
148
+ }
149
+ }
150
+ function publishDistBuild() {
151
+ if (!existsSync(distRoot)) {
152
+ renameSync(distBuildRoot, distRoot);
72
153
  return;
73
154
  }
155
+ const nextFiles = new Set(listRelativeFiles(distBuildRoot));
156
+ for (const relativeFile of nextFiles) {
157
+ const sourceFile = resolve(distBuildRoot, relativeFile);
158
+ const targetFile = resolve(distRoot, relativeFile);
159
+ ensureDir(targetFile);
160
+ renameSync(sourceFile, targetFile);
161
+ }
162
+ for (const relativeFile of listRelativeFiles(distRoot)) {
163
+ if (nextFiles.has(relativeFile)) {
164
+ continue;
165
+ }
166
+ rmSync(resolve(distRoot, relativeFile), { force: true });
167
+ }
168
+ removeEmptyDirectories(distRoot);
169
+ }
170
+ function transpileScript(filePath, outputRoot) {
74
171
  const source = readFileSync(filePath, 'utf8');
75
172
  const relativePath = relative(scriptsRoot, filePath);
76
173
  if (relativePath === 'fixture-tools.ts') {
77
174
  return;
78
175
  }
79
- const outputFile = resolve(distRoot, 'scripts', relativePath.replace(/\.(mjs|ts)$/u, '.js'));
176
+ const outputFile = resolve(outputRoot, 'scripts', relativePath.replace(/\.ts$/u, '.js'));
80
177
  const transformed = extname(filePath) === '.ts'
81
178
  ? ts.transpileModule(source, {
82
179
  compilerOptions: {
@@ -88,7 +185,7 @@ function transpileScript(filePath) {
88
185
  ensureDir(outputFile);
89
186
  writeFileSync(outputFile, rewriteScriptRuntimeSpecifiers(transformed), 'utf8');
90
187
  }
91
- function emitDeclarations() {
188
+ function emitDeclarations(outputRoot) {
92
189
  const rootNames = walkFiles(srcRoot).filter(isTypeScriptSource);
93
190
  const program = ts.createProgram({
94
191
  rootNames,
@@ -102,7 +199,7 @@ function emitDeclarations() {
102
199
  types: ['node'],
103
200
  declaration: true,
104
201
  emitDeclarationOnly: true,
105
- declarationDir: distRoot,
202
+ declarationDir: outputRoot,
106
203
  rootDir: srcRoot,
107
204
  noEmit: false,
108
205
  },
@@ -117,42 +214,59 @@ function emitDeclarations() {
117
214
  throw new Error(`Declaration build failed.\n${diagnostics}`);
118
215
  }
119
216
  }
120
- rmSync(distRoot, { recursive: true, force: true });
121
- for (const filePath of walkFiles(srcRoot)) {
122
- if (filePath.startsWith(`${treeseedTemplateCatalogSourceRoot}/`)) {
123
- continue;
217
+ function rewriteDeclarations(outputRoot) {
218
+ for (const filePath of walkFiles(outputRoot)) {
219
+ if (!filePath.endsWith('.d.js'))
220
+ continue;
221
+ const contents = readFileSync(filePath, 'utf8');
222
+ writeFileSync(filePath, rewriteRuntimeSpecifiers(contents), 'utf8');
124
223
  }
125
- const extension = extname(filePath);
126
- if (isDeclarationAsset(filePath)) {
127
- copyAsset(filePath, srcRoot, distRoot);
128
- continue;
224
+ }
225
+ const releaseBuildLock = await acquireBuildLock();
226
+ try {
227
+ rmSync(distBuildRoot, { recursive: true, force: true });
228
+ for (const filePath of walkFiles(srcRoot)) {
229
+ if (filePath.startsWith(`${treeseedTemplateCatalogSourceRoot}/`)) {
230
+ continue;
231
+ }
232
+ const extension = extname(filePath);
233
+ if (isDeclarationAsset(filePath)) {
234
+ copyAsset(filePath, srcRoot, distBuildRoot);
235
+ continue;
236
+ }
237
+ if (isTypeScriptSource(filePath)) {
238
+ await compileModule(filePath, srcRoot, distBuildRoot);
239
+ continue;
240
+ }
241
+ if (COPY_EXTENSIONS.has(extension)) {
242
+ copyAsset(filePath, srcRoot, distBuildRoot);
243
+ }
129
244
  }
130
- if (isTypeScriptSource(filePath)) {
131
- await compileModule(filePath, srcRoot, distRoot);
132
- continue;
245
+ if (existsSync(treeseedTemplateCatalogSourceRoot)) {
246
+ copyAssetTree(treeseedTemplateCatalogSourceRoot, resolve(distBuildRoot, 'treeseed', 'template-catalog'));
133
247
  }
134
- if (COPY_EXTENSIONS.has(extension)) {
135
- copyAsset(filePath, srcRoot, distRoot);
248
+ if (existsSync(treeseedServicesSourceRoot)) {
249
+ copyAssetTree(treeseedServicesSourceRoot, resolve(distBuildRoot, 'treeseed', 'services'));
136
250
  }
137
- }
138
- if (existsSync(treeseedTemplateCatalogSourceRoot)) {
139
- copyAssetTree(treeseedTemplateCatalogSourceRoot, resolve(distRoot, 'treeseed', 'template-catalog'));
140
- }
141
- if (existsSync(treeseedServicesSourceRoot)) {
142
- copyAssetTree(treeseedServicesSourceRoot, resolve(distRoot, 'treeseed', 'services'));
143
- }
144
- for (const filePath of walkFiles(scriptsRoot)) {
145
- const extension = extname(filePath);
146
- if (extension === '.ts' || extension === '.mjs') {
147
- transpileScript(filePath);
251
+ for (const filePath of walkFiles(scriptsRoot)) {
252
+ const extension = extname(filePath);
253
+ if (extension === '.ts') {
254
+ transpileScript(filePath, distBuildRoot);
255
+ }
148
256
  }
149
- }
150
- emitDeclarations();
151
- for (const filePath of walkFiles(distRoot)) {
152
- if (filePath.endsWith('.d.js')) {
153
- rmSync(filePath, { force: true });
257
+ emitDeclarations(distBuildRoot);
258
+ rewriteDeclarations(distBuildRoot);
259
+ for (const filePath of walkFiles(distBuildRoot)) {
260
+ if (filePath.endsWith('.d.js')) {
261
+ rmSync(filePath, { force: true });
262
+ }
263
+ }
264
+ if (existsSync(resolve(packageRoot, 'README.md'))) {
265
+ copyFileSync(resolve(packageRoot, 'README.md'), resolve(distBuildRoot, '..', 'README.md'));
154
266
  }
267
+ publishDistBuild();
155
268
  }
156
- if (existsSync(resolve(packageRoot, 'README.md'))) {
157
- copyFileSync(resolve(packageRoot, 'README.md'), resolve(distRoot, '..', 'README.md'));
269
+ finally {
270
+ rmSync(distBuildRoot, { recursive: true, force: true });
271
+ releaseBuildLock();
158
272
  }
@@ -1,62 +1,51 @@
1
1
  #!/usr/bin/env node
2
-
3
2
  import { readFileSync } from 'node:fs';
4
- import { resolve } from 'node:path';
5
- import {
6
- formatAllowedBuildWarnings,
7
- scanBuildWarningText,
8
- } from '../operations/services/build-warning-policy.js';
9
-
10
- const args = process.argv.slice(2);
11
- const allowlisted = [];
12
- const files = [];
13
- let useDefaultPolicy = true;
14
-
15
- for (let index = 0; index < args.length; index += 1) {
16
- const arg = args[index];
17
- if (arg === '--no-default-policy') {
18
- useDefaultPolicy = false;
19
- continue;
20
- }
21
- if (arg === '--allow') {
22
- const pattern = args[index + 1];
23
- if (!pattern) {
24
- throw new Error('Missing value for --allow.');
25
- }
26
- allowlisted.push(pattern);
27
- index += 1;
28
- continue;
29
- }
30
- files.push(arg);
3
+ import { formatAllowedBuildWarnings, mergeAllowedBuildWarnings, scanBuildWarningText, } from '../operations/services/build-warning-policy.js';
4
+ function parseArgs(argv) {
5
+ const files = [];
6
+ const allow = [];
7
+ let useDefaultPolicy = true;
8
+ for (let index = 0; index < argv.length; index += 1) {
9
+ const arg = argv[index];
10
+ if (arg === '--allow') {
11
+ const pattern = argv[index + 1];
12
+ if (!pattern)
13
+ throw new Error('--allow requires a regular expression.');
14
+ allow.push(pattern);
15
+ index += 1;
16
+ continue;
17
+ }
18
+ if (arg === '--no-default-policy') {
19
+ useDefaultPolicy = false;
20
+ continue;
21
+ }
22
+ files.push(arg);
23
+ }
24
+ return { files, allow, useDefaultPolicy };
31
25
  }
32
-
33
- if (files.length === 0) {
34
- throw new Error('Usage: node check-build-warnings.mjs <log-file> [<log-file> ...] [--allow <regex>] [--no-default-policy]');
26
+ const args = parseArgs(process.argv.slice(2));
27
+ if (args.files.length === 0) {
28
+ throw new Error('Usage: tsx scripts/check-build-warnings.ts <log-file> [<log-file> ...] [--allow <regex>] [--no-default-policy]');
35
29
  }
36
-
37
- const warningLines = [];
38
30
  const allowedWarnings = new Map();
39
- for (const file of files) {
40
- const contents = readFileSync(resolve(process.cwd(), file), 'utf8');
41
- const scan = scanBuildWarningText(contents, {
42
- useDefaultPolicy,
43
- allow: allowlisted,
44
- });
45
- for (const [label, count] of scan.allowedWarnings.entries()) {
46
- allowedWarnings.set(label, (allowedWarnings.get(label) ?? 0) + count);
47
- }
48
- warningLines.push(...scan.unexpectedWarnings);
31
+ const unexpectedWarnings = [];
32
+ for (const file of args.files) {
33
+ const result = scanBuildWarningText(readFileSync(file, 'utf8'), {
34
+ allow: args.allow,
35
+ useDefaultPolicy: args.useDefaultPolicy,
36
+ });
37
+ mergeAllowedBuildWarnings(allowedWarnings, result.allowedWarnings);
38
+ unexpectedWarnings.push(...result.unexpectedWarnings);
49
39
  }
50
-
51
- if (warningLines.length > 0) {
52
- console.error('Unexpected build warnings detected:');
53
- for (const line of warningLines) {
54
- console.error(`- ${line}`);
55
- }
56
- process.exit(1);
40
+ const allowedLines = formatAllowedBuildWarnings(allowedWarnings);
41
+ if (allowedLines.length > 0) {
42
+ console.log(allowedLines.join('\n'));
57
43
  }
58
-
59
- for (const line of formatAllowedBuildWarnings(allowedWarnings)) {
60
- console.log(line);
44
+ if (unexpectedWarnings.length > 0) {
45
+ console.error('Unexpected build warnings detected:');
46
+ for (const warning of unexpectedWarnings) {
47
+ console.error(`- ${warning}`);
48
+ }
49
+ process.exit(1);
61
50
  }
62
51
  console.log('No unexpected build warnings detected.');
@@ -314,7 +314,7 @@ function parseArgs(argv) {
314
314
  return args;
315
315
  }
316
316
  function printHelp() {
317
- console.log(`Usage: node scripts/cleanup-markdown.mjs [--check|--write] [paths...]
317
+ console.log(`Usage: tsx scripts/cleanup-markdown.ts [--check|--write] [paths...]
318
318
 
319
319
  Normalizes Markdown/MDX files for public docs readability.
320
320
 
@@ -3,46 +3,42 @@ import { spawnSync } from 'node:child_process';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { dirname, join, resolve } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
-
7
6
  const scriptsRoot = dirname(fileURLToPath(import.meta.url));
8
7
  const cliRoot = resolve(scriptsRoot, '..');
9
8
  const sharedFixtureRoot = resolve(cliRoot, '.fixtures', 'treeseed-fixtures', 'sites', 'working-site');
10
-
11
9
  export function makeWorkspaceRoot() {
12
- const root = mkdtempSync(join(tmpdir(), 'treeseed-help-workspace-'));
13
- writeFileSync(resolve(root, 'package.json'), JSON.stringify({
14
- name: 'help-test',
15
- private: true,
16
- workspaces: ['packages/*'],
17
- }, null, 2));
18
- writeFileSync(resolve(root, 'treeseed.site.yaml'), `name: Help Test
10
+ const root = mkdtempSync(join(tmpdir(), 'treeseed-help-workspace-'));
11
+ writeFileSync(resolve(root, 'package.json'), JSON.stringify({
12
+ name: 'help-test',
13
+ private: true,
14
+ workspaces: ['packages/*'],
15
+ }, null, 2));
16
+ writeFileSync(resolve(root, 'treeseed.site.yaml'), `name: Help Test
19
17
  slug: help-test
20
18
  siteUrl: https://example.com
21
19
  contactEmail: hello@example.com
22
20
  cloudflare:
23
21
  accountId: account-123
24
22
  `, 'utf8');
25
- return root;
23
+ return root;
26
24
  }
27
-
28
25
  export function makeTenantWorkspace(branch = 'staging') {
29
- const root = makeWorkspaceRoot();
30
- cpSync(sharedFixtureRoot, root, { recursive: true });
31
- mkdirSync(resolve(root, 'packages', 'placeholder'), { recursive: true });
32
- writeFileSync(resolve(root, 'packages', 'placeholder', 'package.json'), JSON.stringify({
33
- name: '@test/placeholder',
34
- version: '0.0.1',
35
- }, null, 2));
36
- spawnSync('git', ['init', '-b', branch], { cwd: root, stdio: 'ignore' });
37
- spawnSync('git', ['config', 'user.name', 'Treeseed Test'], { cwd: root, stdio: 'ignore' });
38
- spawnSync('git', ['config', 'user.email', 'treeseed@example.com'], { cwd: root, stdio: 'ignore' });
39
- spawnSync('git', ['add', '-A'], { cwd: root, stdio: 'ignore' });
40
- spawnSync('git', ['commit', '-m', 'init'], { cwd: root, stdio: 'ignore' });
41
- return root;
26
+ const root = makeWorkspaceRoot();
27
+ cpSync(sharedFixtureRoot, root, { recursive: true });
28
+ mkdirSync(resolve(root, 'packages', 'placeholder'), { recursive: true });
29
+ writeFileSync(resolve(root, 'packages', 'placeholder', 'package.json'), JSON.stringify({
30
+ name: '@test/placeholder',
31
+ version: '0.0.1',
32
+ }, null, 2));
33
+ spawnSync('git', ['init', '-b', branch], { cwd: root, stdio: 'ignore' });
34
+ spawnSync('git', ['config', 'user.name', 'Treeseed Test'], { cwd: root, stdio: 'ignore' });
35
+ spawnSync('git', ['config', 'user.email', 'treeseed@example.com'], { cwd: root, stdio: 'ignore' });
36
+ spawnSync('git', ['add', '-A'], { cwd: root, stdio: 'ignore' });
37
+ spawnSync('git', ['commit', '-m', 'init'], { cwd: root, stdio: 'ignore' });
38
+ return root;
42
39
  }
43
-
44
40
  export function makeTenantRoot() {
45
- const root = mkdtempSync(join(tmpdir(), 'treeseed-cli-test-'));
46
- cpSync(sharedFixtureRoot, root, { recursive: true });
47
- return root;
41
+ const root = mkdtempSync(join(tmpdir(), 'treeseed-cli-test-'));
42
+ cpSync(sharedFixtureRoot, root, { recursive: true });
43
+ return root;
48
44
  }
@@ -0,0 +1,140 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { stringify as stringifyYaml } from 'yaml';
4
+ import { normalizeTreeseedGuaranteeTaxonomy, slugifyTreeseedGuaranteeJourney, } from '../guarantees/index.js';
5
+ function argValue(name) {
6
+ const index = process.argv.indexOf(name);
7
+ return index >= 0 ? process.argv[index + 1] : undefined;
8
+ }
9
+ function hasArg(name) {
10
+ return process.argv.includes(name);
11
+ }
12
+ function parseCsv(source) {
13
+ const rows = [];
14
+ let row = [];
15
+ let field = '';
16
+ let quoted = false;
17
+ for (let index = 0; index < source.length; index += 1) {
18
+ const char = source[index];
19
+ const next = source[index + 1];
20
+ if (quoted) {
21
+ if (char === '"' && next === '"') {
22
+ field += '"';
23
+ index += 1;
24
+ }
25
+ else if (char === '"')
26
+ quoted = false;
27
+ else
28
+ field += char;
29
+ }
30
+ else if (char === '"')
31
+ quoted = true;
32
+ else if (char === ',') {
33
+ row.push(field);
34
+ field = '';
35
+ }
36
+ else if (char === '\n') {
37
+ row.push(field.replace(/\r$/u, ''));
38
+ rows.push(row);
39
+ row = [];
40
+ field = '';
41
+ }
42
+ else
43
+ field += char;
44
+ }
45
+ if (field || row.length > 0) {
46
+ row.push(field.replace(/\r$/u, ''));
47
+ rows.push(row);
48
+ }
49
+ return rows.filter((entry) => entry.some(Boolean));
50
+ }
51
+ function ownerPackage(type, subtype) {
52
+ if (['marketplace', 'checkout', 'service', 'capacity-discovery', 'feedback', 'commons', 'public-profile'].includes(type))
53
+ return '@treeseed/market';
54
+ if (type === 'marketplace-seller')
55
+ return '@treeseed/admin';
56
+ if (type === 'host' && subtype === 'reconciliation')
57
+ return '@treeseed/api';
58
+ if (type === 'capacity' && ['assignment', 'usage', 'provider'].includes(subtype))
59
+ return '@treeseed/api';
60
+ if (type === 'project' && subtype === 'treedx')
61
+ return '@treeseed/api';
62
+ if (type === 'workday' && ['diagnostics', 'artifacts', 'decision'].includes(subtype))
63
+ return '@treeseed/api';
64
+ return '@treeseed/admin';
65
+ }
66
+ function ownerRoot(workspace, owner) {
67
+ return owner === '@treeseed/market' ? workspace : resolve(workspace, 'packages', owner.replace('@treeseed/', ''));
68
+ }
69
+ function guaranteeId(type, subtype, journey, index) {
70
+ return `guarantee.${type}.${subtype}.${slugifyTreeseedGuaranteeJourney(journey)}.${String(index).padStart(3, '0')}`;
71
+ }
72
+ const csv = argValue('--csv');
73
+ const workspace = resolve(argValue('--workspace') ?? process.cwd());
74
+ const writePlan = argValue('--write-plan');
75
+ const write = hasArg('--write');
76
+ if (!csv) {
77
+ console.error('Usage: node --import tsx packages/sdk/scripts/migrate-journey-csv-to-guarantees.ts --csv <path> [--workspace <root>] [--write-plan <path>] [--write]');
78
+ process.exit(1);
79
+ }
80
+ const rows = parseCsv(readFileSync(csv, 'utf8'));
81
+ const header = rows[0] ?? [];
82
+ const records = rows.slice(1).map((row) => Object.fromEntries(header.map((key, index) => [key, row[index] ?? ''])));
83
+ const indexed = new Map(records.map((record) => [Number(record.Index), record]));
84
+ const outputs = records.map((record) => {
85
+ const index = Number(record.Index);
86
+ const type = normalizeTreeseedGuaranteeTaxonomy(String(record.Type));
87
+ const subtype = normalizeTreeseedGuaranteeTaxonomy(String(record['Sub-Type']));
88
+ const journey = String(record.Journey);
89
+ const owner = ownerPackage(type, subtype);
90
+ const journeySlug = slugifyTreeseedGuaranteeJourney(journey);
91
+ const dependencies = String(record.Dependencies ?? '').split(/[;, ]+/u).filter(Boolean).map(Number);
92
+ const dependencyGuarantees = dependencies.map((dependency) => {
93
+ const dep = indexed.get(dependency);
94
+ if (!dep)
95
+ return null;
96
+ return guaranteeId(normalizeTreeseedGuaranteeTaxonomy(String(dep.Type)), normalizeTreeseedGuaranteeTaxonomy(String(dep['Sub-Type'])), String(dep.Journey), dependency);
97
+ }).filter(Boolean);
98
+ const packageRoot = ownerRoot(workspace, owner);
99
+ const guaranteePath = resolve(packageRoot, 'guarantees', type, subtype, `${journeySlug}.guarantee.yaml`);
100
+ const manifest = {
101
+ schemaVersion: 'treeseed.guarantee/v1',
102
+ id: guaranteeId(type, subtype, journey, index),
103
+ journeyIndex: index,
104
+ type,
105
+ subtype,
106
+ journey,
107
+ ownerPackage: owner,
108
+ summary: String(record.Notes || `Guarantee migrated from journey ${index}.`),
109
+ status: 'planned',
110
+ dependencies: { journeys: dependencies, guarantees: dependencyGuarantees },
111
+ actors: { allowed: ['owner'], forbidden: ['unauthorized_user'] },
112
+ devices: { required: ['desktop_chromium'] },
113
+ gates: ['core', 'release'],
114
+ preconditions: { fixtures: [] },
115
+ scene: { required: true, manifest: `./scenes/${journeySlug}.scene.yaml` },
116
+ api: { required: true, verifierRefs: [`todo.${type}.${subtype}.${journeySlug}.api`] },
117
+ evidence: { required: ['playwright_trace', 'api_verification_log'] },
118
+ notes: [String(record.Notes || '').trim()].filter(Boolean),
119
+ };
120
+ return { index, type, subtype, journey, ownerPackage: owner, guaranteePath, manifest };
121
+ });
122
+ const plan = {
123
+ schemaVersion: 'treeseed.guarantee-migration-plan/v1',
124
+ sourceCsv: resolve(csv),
125
+ workspace,
126
+ count: outputs.length,
127
+ outputs: outputs.map(({ manifest, ...entry }) => ({ ...entry, id: manifest.id })),
128
+ };
129
+ if (writePlan) {
130
+ const target = resolve(writePlan);
131
+ mkdirSync(dirname(target), { recursive: true });
132
+ writeFileSync(target, `${JSON.stringify(plan, null, 2)}\n`);
133
+ }
134
+ if (write) {
135
+ for (const output of outputs) {
136
+ mkdirSync(dirname(output.guaranteePath), { recursive: true });
137
+ writeFileSync(output.guaranteePath, stringifyYaml(output.manifest, { lineWidth: 0 }));
138
+ }
139
+ }
140
+ console.log(JSON.stringify(plan, null, 2));
@@ -43,7 +43,7 @@ export function packageScriptPath(scriptName) {
43
43
  if (extname(scriptName)) {
44
44
  return resolve(packageScriptRoot, scriptName);
45
45
  }
46
- for (const extension of ['.js', '.ts', '.mjs']) {
46
+ for (const extension of ['.ts', '.js']) {
47
47
  const candidate = resolve(packageScriptRoot, `${scriptName}${extension}`);
48
48
  if (existsSync(candidate)) {
49
49
  return candidate;
@@ -62,6 +62,17 @@ export function runNodeBinary(binPath, args, options = {}) {
62
62
  }
63
63
  }
64
64
  export function runNodeScript(scriptPath, args = [], options = {}) {
65
+ if (scriptPath.endsWith('.ts')) {
66
+ const result = spawnSync('tsx', [scriptPath, ...args], {
67
+ stdio: options.stdio ?? 'inherit',
68
+ cwd: options.cwd ?? process.cwd(),
69
+ env: { ...process.env, ...(options.env ?? {}) },
70
+ });
71
+ if (result.status !== 0) {
72
+ process.exit(result.status ?? 1);
73
+ }
74
+ return;
75
+ }
65
76
  return runNodeBinary(scriptPath, args, options);
66
77
  }
67
78
  export function spawnNodeBinary(binPath, args, options = {}) {
@@ -1,14 +1,10 @@
1
1
  #!/usr/bin/env node
2
-
3
2
  import { spawnSync } from 'node:child_process';
4
-
5
3
  if (process.env.TREESEED_SKIP_PACKAGE_PREPARE === '1') {
6
- process.exit(0);
4
+ process.exit(0);
7
5
  }
8
-
9
6
  const result = spawnSync('npm', ['run', 'build:dist'], {
10
- stdio: 'inherit',
11
- shell: process.platform === 'win32',
7
+ stdio: 'inherit',
8
+ shell: process.platform === 'win32',
12
9
  });
13
-
14
10
  process.exit(result.status ?? 1);
@@ -1,10 +1,10 @@
1
1
  import { existsSync, mkdtempSync, readFileSync, readdirSync } from 'node:fs';
2
- import { basename, extname, join, resolve } from 'node:path';
2
+ import { extname, join, resolve } from 'node:path';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { spawnSync } from 'node:child_process';
5
5
  import { packageRoot } from './package-tools.js';
6
6
  const npmCacheDir = mkdtempSync(join(tmpdir(), 'treeseed-sdk-npm-cache-'));
7
- const textExtensions = new Set(['.js', '.ts', '.mjs', '.cjs', '.d.js', '.json', '.md']);
7
+ const textExtensions = new Set(['.js', '.ts', '.d.js', '.json', '.md']);
8
8
  const forbiddenPatterns = [
9
9
  /['"`]workspace:[^'"`\n]+['"`]/,
10
10
  /['"`](?:\.\.\/|\.\/)[^'"`\n]*src\/[^'"`\n]*\.(?:[cm]?js|ts|tsx|json|astro|css)['"`]/,
@@ -89,9 +89,6 @@ function assertCleanDistArtifacts() {
89
89
  if (filePath.endsWith('.d.js')) {
90
90
  throw new Error(`Unexpected generated declaration runtime artifact: ${filePath}`);
91
91
  }
92
- if (basename(filePath).startsWith('.ts-run-')) {
93
- throw new Error(`Unexpected temporary runtime artifact: ${filePath}`);
94
- }
95
92
  if (filePath.includes('/dist/scripts/') && filePath.endsWith('.d.js')) {
96
93
  throw new Error(`Unexpected script declaration artifact: ${filePath}`);
97
94
  }
@@ -2,7 +2,7 @@ import { spawnSync } from 'node:child_process';
2
2
  import { corePackageRoot, fixtureRoot } from '../operations/services/runtime-paths.js';
3
3
  const [command, ...rest] = process.argv.slice(2);
4
4
  if (!command) {
5
- console.error('Usage: node ./scripts/run-fixture-astro-command.mjs <check|build|preview|dev> [...args]');
5
+ console.error('Usage: tsx ./scripts/run-fixture-astro-command.ts <check|build|preview|dev> [...args]');
6
6
  process.exit(1);
7
7
  }
8
8
  const result = spawnSync('npx', ['astro', command, '--root', fixtureRoot, ...rest], {