@treeseed/sdk 0.10.28 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +213 -7
  2. package/dist/agent-capacity.d.ts +916 -0
  3. package/dist/agent-capacity.js +1600 -0
  4. package/dist/agent-tools.d.ts +37 -0
  5. package/dist/agent-tools.js +301 -0
  6. package/dist/api/app.d.ts +1 -1
  7. package/dist/api/auth/d1-database.d.ts +2 -2
  8. package/dist/api/auth/d1-provider.d.ts +4 -4
  9. package/dist/api/auth/d1-store.d.ts +2 -2
  10. package/dist/api/auth/memory-provider.d.ts +1 -1
  11. package/dist/api/auth/tokens.d.ts +1 -1
  12. package/dist/api/config.d.ts +3 -1
  13. package/dist/api/config.js +34 -10
  14. package/dist/api/http.d.ts +2 -2
  15. package/dist/api/index.d.ts +10 -10
  16. package/dist/api/index.js +4 -2
  17. package/dist/api/operations-routes.d.ts +3 -3
  18. package/dist/api/operations.d.ts +1 -1
  19. package/dist/api/providers.d.ts +1 -1
  20. package/dist/api/providers.js +21 -4
  21. package/dist/api/railway.d.ts +3 -2
  22. package/dist/api/sdk-dispatch.d.ts +4 -4
  23. package/dist/api/sdk-routes.d.ts +2 -2
  24. package/dist/api/templates.d.ts +2 -2
  25. package/dist/api/types.d.ts +3 -2
  26. package/dist/capacity-provider.d.ts +118 -59
  27. package/dist/capacity-provider.js +235 -43
  28. package/dist/capacity.d.ts +2 -2
  29. package/dist/cli-tools.d.ts +1 -1
  30. package/dist/content-operations.d.ts +97 -0
  31. package/dist/content-operations.js +250 -0
  32. package/dist/content-store.d.ts +4 -4
  33. package/dist/control-plane-client.d.ts +13 -18
  34. package/dist/control-plane-client.js +8 -86
  35. package/dist/control-plane.d.ts +3 -2
  36. package/dist/control-plane.js +38 -13
  37. package/dist/copilot.d.ts +3 -0
  38. package/dist/copilot.js +16 -1
  39. package/dist/d1-http.d.ts +1 -1
  40. package/dist/d1-store.d.ts +32 -57
  41. package/dist/d1-store.js +115 -318
  42. package/dist/db/d1.d.ts +1 -232
  43. package/dist/db/index.d.ts +3 -3
  44. package/dist/db/market-schema.d.ts +50900 -11018
  45. package/dist/db/market-schema.js +2313 -467
  46. package/dist/db/node-sqlite.d.ts +1 -232
  47. package/dist/db/node-sqlite.js +7 -2
  48. package/dist/db/schema.d.ts +0 -462
  49. package/dist/db/schema.js +2 -22
  50. package/dist/dispatch.d.ts +1 -1
  51. package/dist/dispatch.js +0 -11
  52. package/dist/fixture-support.js +52 -4
  53. package/dist/governance.d.ts +133 -0
  54. package/dist/governance.js +285 -0
  55. package/dist/graph/build.d.ts +2 -2
  56. package/dist/graph/context-query-contracts.d.ts +1 -1
  57. package/dist/graph/dsl.d.ts +1 -1
  58. package/dist/graph/query.d.ts +4 -4
  59. package/dist/graph/ranking.d.ts +1 -1
  60. package/dist/graph/schema.d.ts +1 -1
  61. package/dist/graph.d.ts +11 -11
  62. package/dist/guarantees/index.d.ts +425 -0
  63. package/dist/guarantees/index.js +1146 -0
  64. package/dist/hosting/apps.d.ts +12 -0
  65. package/dist/hosting/apps.js +107 -0
  66. package/dist/hosting/builtins.d.ts +25 -0
  67. package/dist/hosting/builtins.js +602 -0
  68. package/dist/hosting/contracts.d.ts +208 -0
  69. package/dist/hosting/contracts.js +0 -0
  70. package/dist/hosting/graph.d.ts +195 -0
  71. package/dist/hosting/graph.js +1092 -0
  72. package/dist/hosting/index.d.ts +4 -0
  73. package/dist/hosting/index.js +4 -0
  74. package/dist/index.d.ts +88 -67
  75. package/dist/index.js +142 -14
  76. package/dist/local-dev/managed-dev.d.ts +85 -0
  77. package/dist/local-dev/managed-dev.js +368 -0
  78. package/dist/managed-dependencies.d.ts +9 -0
  79. package/dist/managed-dependencies.js +10 -9
  80. package/dist/market-client.d.ts +327 -9
  81. package/dist/market-client.js +464 -20
  82. package/dist/model-registry.d.ts +1 -1
  83. package/dist/model-registry.js +19 -19
  84. package/dist/operations/agent-tools.d.ts +2 -11
  85. package/dist/operations/agent-tools.js +2 -14
  86. package/dist/operations/providers/default.d.ts +1 -1
  87. package/dist/operations/providers/default.js +20 -37
  88. package/dist/operations/repository-operations.d.ts +26 -2
  89. package/dist/operations/repository-operations.js +159 -1
  90. package/dist/operations/runtime.d.ts +3 -3
  91. package/dist/operations/services/bootstrap-runner.d.ts +4 -2
  92. package/dist/operations/services/bootstrap-runner.js +22 -2
  93. package/dist/operations/services/build-warning-policy.d.ts +34 -0
  94. package/dist/operations/services/build-warning-policy.js +81 -82
  95. package/dist/operations/services/commit-message-provider.js +4 -4
  96. package/dist/operations/services/config-runtime.d.ts +83 -24
  97. package/dist/operations/services/config-runtime.js +449 -130
  98. package/dist/operations/services/deploy.d.ts +106 -624
  99. package/dist/operations/services/deploy.js +746 -263
  100. package/dist/operations/services/deployment-readiness.d.ts +30 -0
  101. package/dist/operations/services/deployment-readiness.js +206 -0
  102. package/dist/operations/services/git-remote-policy.js +12 -4
  103. package/dist/operations/services/git-runner.d.ts +66 -0
  104. package/dist/operations/services/git-runner.js +479 -0
  105. package/dist/operations/services/git-workflow.d.ts +45 -6
  106. package/dist/operations/services/git-workflow.js +251 -23
  107. package/dist/operations/services/github-actions-verification.d.ts +4 -1
  108. package/dist/operations/services/github-actions-verification.js +12 -3
  109. package/dist/operations/services/github-api.js +22 -6
  110. package/dist/operations/services/github-automation.d.ts +4 -4
  111. package/dist/operations/services/github-automation.js +19 -21
  112. package/dist/operations/services/github-credentials.d.ts +13 -0
  113. package/dist/operations/services/github-credentials.js +59 -0
  114. package/dist/operations/services/hosted-service-checks.d.ts +81 -0
  115. package/dist/operations/services/hosted-service-checks.js +478 -0
  116. package/dist/operations/services/hosting-audit.d.ts +2 -2
  117. package/dist/operations/services/hosting-audit.js +7 -7
  118. package/dist/operations/services/hub-launch.d.ts +1 -1
  119. package/dist/operations/services/hub-provider-launch.d.ts +5 -5
  120. package/dist/operations/services/hub-provider-launch.js +22 -17
  121. package/dist/operations/services/live-hosted-service-checks.d.ts +26 -0
  122. package/dist/operations/services/live-hosted-service-checks.js +463 -0
  123. package/dist/operations/services/local-dev.js +0 -1
  124. package/dist/operations/services/managed-host-security.d.ts +1 -1
  125. package/dist/operations/services/managed-host-security.js +1 -1
  126. package/dist/operations/services/managed-repositories.d.ts +37 -0
  127. package/dist/operations/services/managed-repositories.js +177 -0
  128. package/dist/operations/services/operations-runner-smoke.d.ts +31 -0
  129. package/dist/operations/services/operations-runner-smoke.js +198 -0
  130. package/dist/operations/services/package-adapters.d.ts +170 -0
  131. package/dist/operations/services/package-adapters.js +859 -0
  132. package/dist/operations/services/package-reference-policy.d.ts +13 -88
  133. package/dist/operations/services/package-reference-policy.js +96 -215
  134. package/dist/operations/services/project-host-operations.d.ts +4 -4
  135. package/dist/operations/services/project-platform.d.ts +57 -173
  136. package/dist/operations/services/project-platform.js +80 -111
  137. package/dist/operations/services/project-web-monitor.d.ts +2 -2
  138. package/dist/operations/services/project-web-monitor.js +122 -5
  139. package/dist/operations/services/railway-api.d.ts +117 -5
  140. package/dist/operations/services/railway-api.js +915 -93
  141. package/dist/operations/services/railway-deploy.d.ts +30 -112
  142. package/dist/operations/services/railway-deploy.js +521 -961
  143. package/dist/operations/services/release-history.js +3 -4
  144. package/dist/operations/services/release-proof-ledger.d.ts +13 -0
  145. package/dist/operations/services/release-proof-ledger.js +81 -0
  146. package/dist/operations/services/release-proof-planner.d.ts +48 -0
  147. package/dist/operations/services/release-proof-planner.js +195 -0
  148. package/dist/operations/services/release-proof-runner.d.ts +16 -0
  149. package/dist/operations/services/release-proof-runner.js +169 -0
  150. package/dist/operations/services/release-proof.d.ts +81 -0
  151. package/dist/operations/services/release-proof.js +79 -0
  152. package/dist/operations/services/repository-save-orchestrator.d.ts +8 -7
  153. package/dist/operations/services/repository-save-orchestrator.js +604 -212
  154. package/dist/operations/services/runtime-paths.d.ts +1 -3
  155. package/dist/operations/services/runtime-paths.js +0 -4
  156. package/dist/operations/services/runtime-tools.d.ts +1 -191
  157. package/dist/operations/services/runtime-tools.js +4 -443
  158. package/dist/operations/services/save-deploy-preflight.js +9 -1
  159. package/dist/operations/services/template-host-bindings.d.ts +2 -2
  160. package/dist/operations/services/template-host-bindings.js +3 -2
  161. package/dist/operations/services/template-registry.d.ts +6 -6
  162. package/dist/operations/services/template-registry.js +33 -14
  163. package/dist/operations/services/template-secret-sync.d.ts +3 -3
  164. package/dist/operations/services/verification-cache.d.ts +25 -0
  165. package/dist/operations/services/verification-cache.js +71 -0
  166. package/dist/operations/services/workflow-timing.d.ts +25 -0
  167. package/dist/operations/services/workflow-timing.js +79 -0
  168. package/dist/operations/services/workspace-dependency-mode.js +50 -5
  169. package/dist/operations/services/workspace-preflight.js +8 -8
  170. package/dist/operations/services/workspace-save-script.d.ts +4 -4
  171. package/dist/operations/services/workspace-save.d.ts +1 -0
  172. package/dist/operations/services/workspace-save.js +42 -19
  173. package/dist/operations/services/workspace-tools.js +42 -7
  174. package/dist/operations-registry.d.ts +1 -1
  175. package/dist/operations-registry.js +5 -6
  176. package/dist/operations-types.d.ts +1 -1
  177. package/dist/operations.d.ts +17 -11
  178. package/dist/operations.js +57 -3
  179. package/dist/platform/book-export.js +2 -0
  180. package/dist/platform/books-data.d.ts +1 -1
  181. package/dist/platform/config.d.ts +27 -0
  182. package/dist/platform/config.js +100 -0
  183. package/dist/platform/content-runtime-source.d.ts +54 -0
  184. package/dist/platform/content-runtime-source.js +169 -0
  185. package/dist/platform/contracts.d.ts +38 -2
  186. package/dist/platform/deploy-config.d.ts +1 -1
  187. package/dist/platform/deploy-config.js +80 -9
  188. package/dist/platform/deploy-runtime.d.ts +1 -1
  189. package/dist/platform/desired-state.d.ts +63 -0
  190. package/dist/platform/desired-state.js +1021 -0
  191. package/dist/platform/env.yaml +568 -45
  192. package/dist/platform/environment.d.ts +3 -2
  193. package/dist/platform/environment.js +122 -21
  194. package/dist/platform/local-content-materialization.d.ts +9 -0
  195. package/dist/platform/local-content-materialization.js +212 -0
  196. package/dist/platform/plugin.d.ts +13 -4
  197. package/dist/platform/plugins/runtime.d.ts +3 -3
  198. package/dist/platform/plugins/runtime.js +62 -1
  199. package/dist/platform/plugins.d.ts +6 -6
  200. package/dist/platform/published-content-pipeline.d.ts +3 -3
  201. package/dist/platform/published-content-pipeline.js +5 -1
  202. package/dist/platform/published-content.d.ts +4 -3
  203. package/dist/platform/site-config-schema.d.ts +1 -0
  204. package/dist/platform/site-config-schema.js +4 -1
  205. package/dist/platform/tenant/runtime-config.d.ts +152 -2
  206. package/dist/platform/tenant-config.d.ts +1 -1
  207. package/dist/platform/utils/site-config-schema.d.ts +154 -0
  208. package/dist/platform/utils/site-config-schema.js +400 -461
  209. package/dist/platform-operation-store.d.ts +1 -1
  210. package/dist/platform-operation-store.js +2 -2
  211. package/dist/platform-operations.js +1 -1
  212. package/dist/plugin-default.d.ts +1 -1
  213. package/dist/plugin-default.js +27 -12
  214. package/dist/project-import.d.ts +91 -0
  215. package/dist/project-import.js +257 -0
  216. package/dist/project-workflow.d.ts +1 -1
  217. package/dist/reconcile/bootstrap-systems.d.ts +2 -2
  218. package/dist/reconcile/bootstrap-systems.js +5 -5
  219. package/dist/reconcile/builtin-adapters.d.ts +7 -1
  220. package/dist/reconcile/builtin-adapters.js +3190 -429
  221. package/dist/reconcile/contracts.d.ts +23 -6
  222. package/dist/reconcile/desired-state.d.ts +2 -192
  223. package/dist/reconcile/desired-state.js +29 -38
  224. package/dist/reconcile/engine.d.ts +61 -395
  225. package/dist/reconcile/engine.js +229 -44
  226. package/dist/reconcile/index.d.ts +10 -8
  227. package/dist/reconcile/index.js +2 -0
  228. package/dist/reconcile/live-acceptance.d.ts +100 -0
  229. package/dist/reconcile/live-acceptance.js +2027 -0
  230. package/dist/reconcile/platform.d.ts +104 -0
  231. package/dist/reconcile/platform.js +100 -0
  232. package/dist/reconcile/providers/docker-private.d.ts +54 -0
  233. package/dist/reconcile/providers/docker-private.js +101 -0
  234. package/dist/reconcile/providers/github-private.d.ts +65 -0
  235. package/dist/reconcile/providers/github-private.js +119 -0
  236. package/dist/reconcile/providers/local-private.d.ts +28 -0
  237. package/dist/reconcile/providers/local-private.js +75 -0
  238. package/dist/reconcile/providers/railway-iac.d.ts +66 -0
  239. package/dist/reconcile/providers/railway-iac.js +275 -0
  240. package/dist/reconcile/providers/release-private.d.ts +92 -0
  241. package/dist/reconcile/providers/release-private.js +152 -0
  242. package/dist/reconcile/registry.d.ts +2 -2
  243. package/dist/reconcile/registry.js +16 -1
  244. package/dist/reconcile/state.d.ts +1 -1
  245. package/dist/reconcile/state.js +7 -44
  246. package/dist/reconcile/units.d.ts +1 -1
  247. package/dist/reconcile/units.js +9 -3
  248. package/dist/remote.d.ts +6 -6
  249. package/dist/scenes/artifacts.d.ts +16 -0
  250. package/dist/scenes/artifacts.js +61 -0
  251. package/dist/scenes/auth.d.ts +2 -0
  252. package/dist/scenes/auth.js +28 -0
  253. package/dist/scenes/base-url.d.ts +12 -0
  254. package/dist/scenes/base-url.js +123 -0
  255. package/dist/scenes/builtin-plugins.d.ts +2 -0
  256. package/dist/scenes/builtin-plugins.js +447 -0
  257. package/dist/scenes/checkpoints.d.ts +14 -0
  258. package/dist/scenes/checkpoints.js +33 -0
  259. package/dist/scenes/device-matrix.d.ts +2 -0
  260. package/dist/scenes/device-matrix.js +97 -0
  261. package/dist/scenes/devices.d.ts +11 -0
  262. package/dist/scenes/devices.js +22 -0
  263. package/dist/scenes/diagnostics.d.ts +5 -0
  264. package/dist/scenes/diagnostics.js +22 -0
  265. package/dist/scenes/diagram-providers.d.ts +2 -0
  266. package/dist/scenes/diagram-providers.js +181 -0
  267. package/dist/scenes/diagram-validation.d.ts +22 -0
  268. package/dist/scenes/diagram-validation.js +74 -0
  269. package/dist/scenes/environment.d.ts +2 -0
  270. package/dist/scenes/environment.js +65 -0
  271. package/dist/scenes/evidence-bundle.d.ts +5 -0
  272. package/dist/scenes/evidence-bundle.js +42 -0
  273. package/dist/scenes/evidence-report.d.ts +10 -0
  274. package/dist/scenes/evidence-report.js +73 -0
  275. package/dist/scenes/evidence.d.ts +16 -0
  276. package/dist/scenes/evidence.js +277 -0
  277. package/dist/scenes/index.d.ts +48 -0
  278. package/dist/scenes/index.js +312 -0
  279. package/dist/scenes/inspect.d.ts +9 -0
  280. package/dist/scenes/inspect.js +64 -0
  281. package/dist/scenes/loader.d.ts +3 -0
  282. package/dist/scenes/loader.js +38 -0
  283. package/dist/scenes/logs.d.ts +2 -0
  284. package/dist/scenes/logs.js +47 -0
  285. package/dist/scenes/operations.d.ts +3 -0
  286. package/dist/scenes/operations.js +128 -0
  287. package/dist/scenes/phase0.d.ts +9 -0
  288. package/dist/scenes/phase0.js +637 -0
  289. package/dist/scenes/planner.d.ts +12 -0
  290. package/dist/scenes/planner.js +166 -0
  291. package/dist/scenes/playwright-adapter.d.ts +2 -0
  292. package/dist/scenes/playwright-adapter.js +63 -0
  293. package/dist/scenes/plugins.d.ts +5 -0
  294. package/dist/scenes/plugins.js +115 -0
  295. package/dist/scenes/progress.d.ts +17 -0
  296. package/dist/scenes/progress.js +24 -0
  297. package/dist/scenes/publish-destinations.d.ts +12 -0
  298. package/dist/scenes/publish-destinations.js +99 -0
  299. package/dist/scenes/publish-plan-report.d.ts +10 -0
  300. package/dist/scenes/publish-plan-report.js +70 -0
  301. package/dist/scenes/publish-plan.d.ts +15 -0
  302. package/dist/scenes/publish-plan.js +248 -0
  303. package/dist/scenes/publish-redaction.d.ts +16 -0
  304. package/dist/scenes/publish-redaction.js +148 -0
  305. package/dist/scenes/publish-release-record.d.ts +13 -0
  306. package/dist/scenes/publish-release-record.js +34 -0
  307. package/dist/scenes/publish-report.d.ts +10 -0
  308. package/dist/scenes/publish-report.js +67 -0
  309. package/dist/scenes/publish.d.ts +16 -0
  310. package/dist/scenes/publish.js +298 -0
  311. package/dist/scenes/registry.d.ts +12 -0
  312. package/dist/scenes/registry.js +65 -0
  313. package/dist/scenes/remotion-adapter.d.ts +3 -0
  314. package/dist/scenes/remotion-adapter.js +94 -0
  315. package/dist/scenes/remotion-composition-registry.d.ts +2 -0
  316. package/dist/scenes/remotion-composition-registry.js +12 -0
  317. package/dist/scenes/remotion-compositions.d.ts +15 -0
  318. package/dist/scenes/remotion-compositions.js +464 -0
  319. package/dist/scenes/remotion-diagrams.d.ts +9 -0
  320. package/dist/scenes/remotion-diagrams.js +188 -0
  321. package/dist/scenes/remotion-input.d.ts +13 -0
  322. package/dist/scenes/remotion-input.js +291 -0
  323. package/dist/scenes/remotion-visuals.d.ts +29 -0
  324. package/dist/scenes/remotion-visuals.js +198 -0
  325. package/dist/scenes/render-media-assets.d.ts +9 -0
  326. package/dist/scenes/render-media-assets.js +117 -0
  327. package/dist/scenes/render-report.d.ts +10 -0
  328. package/dist/scenes/render-report.js +27 -0
  329. package/dist/scenes/render.d.ts +2 -0
  330. package/dist/scenes/render.js +218 -0
  331. package/dist/scenes/reporter.d.ts +3 -0
  332. package/dist/scenes/reporter.js +101 -0
  333. package/dist/scenes/resume.d.ts +2 -0
  334. package/dist/scenes/resume.js +79 -0
  335. package/dist/scenes/runner.d.ts +2 -0
  336. package/dist/scenes/runner.js +674 -0
  337. package/dist/scenes/schema.d.ts +6 -0
  338. package/dist/scenes/schema.js +994 -0
  339. package/dist/scenes/seed.d.ts +2 -0
  340. package/dist/scenes/seed.js +83 -0
  341. package/dist/scenes/segments.d.ts +15 -0
  342. package/dist/scenes/segments.js +79 -0
  343. package/dist/scenes/selectors.d.ts +3 -0
  344. package/dist/scenes/selectors.js +21 -0
  345. package/dist/scenes/timeline.d.ts +11 -0
  346. package/dist/scenes/timeline.js +26 -0
  347. package/dist/scenes/timeouts.d.ts +6 -0
  348. package/dist/scenes/timeouts.js +17 -0
  349. package/dist/scenes/training-captions.d.ts +14 -0
  350. package/dist/scenes/training-captions.js +98 -0
  351. package/dist/scenes/training-report.d.ts +10 -0
  352. package/dist/scenes/training-report.js +78 -0
  353. package/dist/scenes/training-transcript.d.ts +24 -0
  354. package/dist/scenes/training-transcript.js +204 -0
  355. package/dist/scenes/training.d.ts +10 -0
  356. package/dist/scenes/training.js +134 -0
  357. package/dist/scenes/types.d.ts +1872 -0
  358. package/dist/scenes/types.js +8 -0
  359. package/dist/scenes/visual-audit-contact-sheets.d.ts +6 -0
  360. package/dist/scenes/visual-audit-contact-sheets.js +119 -0
  361. package/dist/scenes/visual-audit-fixtures.d.ts +25 -0
  362. package/dist/scenes/visual-audit-fixtures.js +210 -0
  363. package/dist/scenes/visual-audit-report.d.ts +11 -0
  364. package/dist/scenes/visual-audit-report.js +85 -0
  365. package/dist/scenes/visual-audit-review.d.ts +23 -0
  366. package/dist/scenes/visual-audit-review.js +829 -0
  367. package/dist/scenes/visual-audit-routes.d.ts +13 -0
  368. package/dist/scenes/visual-audit-routes.js +308 -0
  369. package/dist/scenes/visual-audit.d.ts +3 -0
  370. package/dist/scenes/visual-audit.js +596 -0
  371. package/dist/scripts/build-dist.js +154 -40
  372. package/dist/scripts/check-build-warnings.js +42 -53
  373. package/dist/scripts/cleanup-markdown.js +1 -1
  374. package/dist/scripts/cli-test-fixtures.js +24 -28
  375. package/dist/scripts/deployment-readiness.js +20 -0
  376. package/dist/scripts/generate-treedx-openapi-types.js +186 -0
  377. package/dist/scripts/migrate-journey-csv-to-guarantees.js +140 -0
  378. package/dist/scripts/operations-runner-smoke.js +16 -0
  379. package/dist/scripts/package-tools.js +12 -1
  380. package/dist/scripts/prepare.js +3 -7
  381. package/dist/scripts/release-verify.js +6 -6
  382. package/dist/scripts/run-fixture-astro-command.js +1 -1
  383. package/dist/scripts/template-catalog.test.js +68 -82
  384. package/dist/scripts/tenant-dev.js +0 -10
  385. package/dist/scripts/tenant-workflow-action.js +10 -1
  386. package/dist/scripts/test-cloudflare-local.js +1 -1
  387. package/dist/scripts/test-scaffold.js +0 -1
  388. package/dist/scripts/test-smoke.js +3 -3
  389. package/dist/scripts/treeseed-build-dist.js +4 -7
  390. package/dist/scripts/treeseed-release-verify.js +1 -1
  391. package/dist/scripts/verify-driver.js +30 -21
  392. package/dist/scripts/workflow-commands.test.js +18 -27
  393. package/dist/scripts/workspace-command-e2e.js +1 -1
  394. package/dist/scripts/workspace-lint.js +6 -0
  395. package/dist/scripts/workspace-release-test.js +90 -1
  396. package/dist/scripts/workspace-test.js +6 -0
  397. package/dist/sdk-dispatch.d.ts +1 -1
  398. package/dist/sdk-dispatch.js +0 -16
  399. package/dist/sdk-fields.d.ts +1 -1
  400. package/dist/sdk-filters.d.ts +1 -1
  401. package/dist/sdk-types.d.ts +1352 -116
  402. package/dist/sdk-types.js +413 -2
  403. package/dist/sdk.d.ts +106 -100
  404. package/dist/sdk.js +211 -51
  405. package/dist/secrets-capability.d.ts +421 -0
  406. package/dist/secrets-capability.js +530 -0
  407. package/dist/seeds/normalize.js +1 -0
  408. package/dist/seeds/planner.js +38 -0
  409. package/dist/seeds/schema.js +293 -4
  410. package/dist/seeds/types.d.ts +60 -0
  411. package/dist/seeds/types.js +9 -1
  412. package/dist/service-credentials.d.ts +54 -0
  413. package/dist/service-credentials.js +112 -0
  414. package/dist/stores/cursor-store.d.ts +2 -2
  415. package/dist/stores/envelopes.d.ts +1 -1
  416. package/dist/stores/helpers.d.ts +1 -1
  417. package/dist/stores/lease-store.d.ts +2 -2
  418. package/dist/stores/message-store.d.ts +2 -2
  419. package/dist/stores/operational-store.d.ts +3 -26
  420. package/dist/stores/operational-store.js +0 -225
  421. package/dist/stores/project-workflow-store.d.ts +2 -2
  422. package/dist/stores/run-store.d.ts +2 -3
  423. package/dist/stores/run-store.js +0 -98
  424. package/dist/stores/subscription-store.d.ts +2 -3
  425. package/dist/stores/subscription-store.js +0 -100
  426. package/dist/template-catalog.d.ts +1 -1
  427. package/dist/template-launch-requirements.d.ts +2 -2
  428. package/dist/template-launch-requirements.js +9 -0
  429. package/dist/template-launch-ui.d.ts +2 -2
  430. package/dist/treedx/adapters.d.ts +6 -0
  431. package/dist/treedx/adapters.js +36 -0
  432. package/dist/treedx/client.d.ts +222 -0
  433. package/dist/treedx/client.js +871 -0
  434. package/dist/treedx/errors.d.ts +13 -0
  435. package/dist/treedx/errors.js +17 -0
  436. package/dist/treedx/federated-client.d.ts +27 -0
  437. package/dist/treedx/federated-client.js +158 -0
  438. package/dist/treedx/generated/openapi-types.d.ts +3558 -0
  439. package/dist/treedx/generated/openapi-types.js +0 -0
  440. package/dist/treedx/graph-adapter.d.ts +33 -0
  441. package/dist/treedx/graph-adapter.js +156 -0
  442. package/dist/treedx/index.d.ts +14 -0
  443. package/dist/treedx/index.js +48 -0
  444. package/dist/treedx/market-integration.d.ts +27 -0
  445. package/dist/treedx/market-integration.js +131 -0
  446. package/dist/treedx/ports.d.ts +166 -0
  447. package/dist/treedx/ports.js +231 -0
  448. package/dist/treedx/query-adapter.d.ts +19 -0
  449. package/dist/treedx/query-adapter.js +62 -0
  450. package/dist/treedx/registry-client.d.ts +11 -0
  451. package/dist/treedx/registry-client.js +19 -0
  452. package/dist/treedx/repository-adapter.d.ts +45 -0
  453. package/dist/treedx/repository-adapter.js +319 -0
  454. package/dist/treedx/sdk-integration.d.ts +27 -0
  455. package/dist/treedx/sdk-integration.js +63 -0
  456. package/dist/treedx/types.d.ts +1084 -0
  457. package/dist/treedx/types.js +8 -0
  458. package/dist/treedx/workspace-adapter.d.ts +27 -0
  459. package/dist/treedx/workspace-adapter.js +65 -0
  460. package/dist/treedx-backends.d.ts +220 -0
  461. package/dist/treedx-backends.js +634 -0
  462. package/dist/treedx-client.d.ts +89 -0
  463. package/dist/treedx-client.js +184 -0
  464. package/dist/treeseed/services/compose.yml +2 -3
  465. package/dist/treeseed/template-catalog/catalog.fixture.json +27 -27
  466. package/dist/types/agents.d.ts +256 -0
  467. package/dist/types/agents.js +42 -1
  468. package/dist/verification.d.ts +1 -0
  469. package/dist/verification.js +143 -14
  470. package/dist/workflow/operations.d.ts +580 -523
  471. package/dist/workflow/operations.js +2084 -1279
  472. package/dist/workflow/policy.js +19 -7
  473. package/dist/workflow/runs.d.ts +9 -3
  474. package/dist/workflow/runs.js +66 -26
  475. package/dist/workflow/session.d.ts +4 -1
  476. package/dist/workflow/session.js +50 -10
  477. package/dist/workflow/worktrees.d.ts +6 -2
  478. package/dist/workflow/worktrees.js +98 -15
  479. package/dist/workflow-state.d.ts +17 -4
  480. package/dist/workflow-state.js +68 -41
  481. package/dist/workflow-support.d.ts +26 -17
  482. package/dist/workflow-support.js +84 -24
  483. package/dist/workflow.d.ts +51 -16
  484. package/dist/workflow.js +19 -7
  485. package/drizzle/d1/0000_treeseed_d1.sql +0 -18
  486. package/drizzle/market/0000_market_control_plane.sql +1793 -1499
  487. package/drizzle/market/0004_treedx_market_integration.sql +99 -0
  488. package/drizzle/market/0005_agent_capacity_coordination.sql +145 -0
  489. package/drizzle/market/0006_provider_assignment_lifecycle.sql +9 -0
  490. package/drizzle/market/0007_agent_architecture_gap_closure.sql +157 -0
  491. package/drizzle/market/0008_agent_capacity_operational_closure.sql +27 -0
  492. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +29 -0
  493. package/drizzle/market/0010_secrets_capability_persistence.sql +130 -0
  494. package/drizzle/market/0011_github_app_adapter.sql +47 -0
  495. package/drizzle/market/0012_workday_test_runs.sql +44 -0
  496. package/drizzle/market/0013_runtime_task_lifecycle.sql +39 -0
  497. package/drizzle/market/0014_governance_pipeline.sql +189 -0
  498. package/package.json +106 -18
  499. package/scripts/{verify-driver.mjs → verify-driver.ts} +19 -4
  500. package/templates/github/deploy-web.workflow.yml +49 -12
  501. package/dist/operations/services/mailpit-runtime.d.ts +0 -20
  502. package/dist/operations/services/mailpit-runtime.js +0 -67
  503. package/dist/operations/services/release-candidate.d.ts +0 -41
  504. package/dist/operations/services/release-candidate.js +0 -616
  505. package/dist/scripts/ensure-mailpit.js +0 -48
  506. package/dist/scripts/logs-mailpit.js +0 -2
  507. package/dist/scripts/run-ts.js +0 -45
  508. package/dist/scripts/stop-mailpit.js +0 -5
  509. package/dist/scripts/treeseed-run-ts.js +0 -45
@@ -1,7 +1,5 @@
1
- export type DevDependencyReferenceMode = 'git-tag' | 'registry-prerelease';
2
- export type DevTagCleanupMode = 'safe-after-release' | 'off';
1
+ export type DevDependencyReferenceMode = 'git-commit';
3
2
  export type GitDependencyProtocol = 'preserve-origin' | 'https' | 'ssh';
4
- export type DevTagBranchScope = 'staging' | 'preview' | 'all';
5
3
  export type PackageDependencyReference = {
6
4
  packageName: string;
7
5
  version: string;
@@ -10,7 +8,7 @@ export type PackageDependencyReference = {
10
8
  installSpec: string;
11
9
  tagName: string | null;
12
10
  remoteUrl: string | null;
13
- mode: 'stable-semver' | 'dev-git-tag' | 'dev-registry-prerelease';
11
+ mode: 'stable-semver' | 'dev-git-commit';
14
12
  };
15
13
  export type RewrittenDevReference = {
16
14
  packageName: string;
@@ -19,22 +17,6 @@ export type RewrittenDevReference = {
19
17
  to: string;
20
18
  tagName: string | null;
21
19
  };
22
- export type TreeseedDevTagInfo = {
23
- tagName: string;
24
- stableVersion: string;
25
- branchSlug: string;
26
- timestamp: string;
27
- metadata: Record<string, string>;
28
- branch: string | null;
29
- packageName: string | null;
30
- version: string | null;
31
- };
32
- export type StaleDevTagClassification = {
33
- tagName: string;
34
- action: 'delete' | 'skip';
35
- reason: string;
36
- info: TreeseedDevTagInfo | null;
37
- };
38
20
  export declare function internalDependencyFields(packageJson: Record<string, unknown> | null): string[];
39
21
  export declare function isPrereleaseVersion(version: string): boolean;
40
22
  export declare function isStableVersion(version: string): boolean;
@@ -48,10 +30,12 @@ export declare function createPackageDependencyReference(input: {
48
30
  version: string;
49
31
  branchMode: 'package-release-main' | 'package-dev-save';
50
32
  remoteUrl?: string | null;
33
+ commitSha?: string | null;
51
34
  devDependencyReferenceMode?: DevDependencyReferenceMode;
52
35
  gitDependencyProtocol?: GitDependencyProtocol;
53
36
  }): PackageDependencyReference;
54
37
  export declare function updateInternalDependencySpecs(packageJson: Record<string, unknown> | null, references: Map<string, PackageDependencyReference>): RewrittenDevReference[];
38
+ export declare function installableInternalDependencyVersions(root: any, versions: Map<string, string>): Map<string, string>;
55
39
  export declare function rewriteInternalDependenciesToStableVersions(root: any, versions: Map<string, string>): (RewrittenDevReference & {
56
40
  repoName: string;
57
41
  packageJsonPath: string;
@@ -68,72 +52,13 @@ export declare function collectInternalDevReferenceIssues(root?: any, packageNam
68
52
  spec: string;
69
53
  reason: string;
70
54
  }[];
55
+ export declare function collectDevelopmentCommitReferenceIssues(root?: any, packageNames?: Set<any>): {
56
+ repoName: string;
57
+ filePath: string;
58
+ field?: string;
59
+ dependencyName?: string;
60
+ spec: string;
61
+ reason: string;
62
+ }[];
63
+ export declare function assertDevelopmentInternalCommitReferences(root?: any, packageNames?: Set<string>): void;
71
64
  export declare function assertNoInternalDevReferences(root?: any, packageNames?: Set<string>): void;
72
- export declare function createDevTagMessage(input: {
73
- packageName: string;
74
- version: string;
75
- branch: string;
76
- commitSha: string;
77
- workflowRunId?: string | null;
78
- createdAt?: string;
79
- }): string;
80
- export declare function gitTagMessage(repoDir: string, tagName: string): string;
81
- export declare function tagHasTreeseedDevMetadata(repoDir: string, tagName: string): boolean;
82
- export declare function parseTreeseedDevTag(tagName: string, message: string): TreeseedDevTagInfo | null;
83
- export declare function classifyStaleTreeseedDevTag(input: {
84
- tagName: string;
85
- message: string;
86
- currentVersion: string;
87
- activeReferences?: string[];
88
- branchScope?: DevTagBranchScope;
89
- expectedPackageName?: string | null;
90
- }): StaleDevTagClassification;
91
- export declare function cleanupDevTags(repoDir: string, tagNames: string[], activeReferences?: string[]): {
92
- cleaned: string[];
93
- skipped: {
94
- tagName: string;
95
- reason: string;
96
- }[];
97
- };
98
- export declare function collectTreeseedDevTagCleanupPlan(input: {
99
- repoDir: string;
100
- packageName: string;
101
- currentVersion: string;
102
- activeReferences?: string[];
103
- branchScope?: DevTagBranchScope;
104
- }): {
105
- packageName: string;
106
- currentVersion: string;
107
- branchScope: DevTagBranchScope;
108
- candidates: StaleDevTagClassification[];
109
- skipped: StaleDevTagClassification[];
110
- tags: StaleDevTagClassification[];
111
- };
112
- export declare function cleanupStaleTreeseedDevTags(input: {
113
- repoDir: string;
114
- packageName: string;
115
- currentVersion: string;
116
- activeReferences?: string[];
117
- branchScope?: DevTagBranchScope;
118
- dryRun?: boolean;
119
- }): {
120
- status: string;
121
- packageName: string;
122
- currentVersion: string;
123
- branchScope: DevTagBranchScope;
124
- candidates: {
125
- tagName: string;
126
- reason: string;
127
- branch: string | null | undefined;
128
- branchSlug: string | undefined;
129
- version: string | null | undefined;
130
- }[];
131
- candidateCount: number;
132
- cleaned: string[];
133
- cleanedCount: number;
134
- skipped: {
135
- tagName: string;
136
- reason: string;
137
- }[];
138
- skippedCount: number;
139
- };
@@ -1,7 +1,8 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { resolve } from "node:path";
3
3
  import { pathToFileURL } from "node:url";
4
- import { run, workspacePackages, workspaceRoot } from "./workspace-tools.js";
4
+ import { discoverTreeseedPackageAdapters } from "./package-adapters.js";
5
+ import { workspacePackages, workspaceRoot } from "./workspace-tools.js";
5
6
  const INTERNAL_DEPENDENCY_FIELDS = ["dependencies", "optionalDependencies", "peerDependencies", "devDependencies"];
6
7
  function readJson(filePath) {
7
8
  return JSON.parse(readFileSync(filePath, "utf8"));
@@ -20,19 +21,6 @@ function isPrereleaseVersion(version) {
20
21
  function isStableVersion(version) {
21
22
  return /^\d+\.\d+\.\d+$/u.test(String(version).trim());
22
23
  }
23
- function stableVersionBase(version) {
24
- const match = String(version).trim().match(/^(\d+\.\d+\.\d+)(?:-|$)/u);
25
- return match?.[1] ?? null;
26
- }
27
- function compareStableVersions(left, right) {
28
- const leftParts = left.split(".").map((part) => Number(part));
29
- const rightParts = right.split(".").map((part) => Number(part));
30
- for (let index = 0; index < 3; index += 1) {
31
- const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);
32
- if (difference !== 0) return difference;
33
- }
34
- return 0;
35
- }
36
24
  function isGitDependencySpec(spec) {
37
25
  return /^(?:git\+|github:|gitlab:|bitbucket:|ssh:\/\/|https:\/\/|file:)/u.test(String(spec).trim()) && String(spec).includes("#");
38
26
  }
@@ -104,33 +92,25 @@ function createPackageDependencyReference(input) {
104
92
  mode: "stable-semver"
105
93
  };
106
94
  }
107
- if ((input.devDependencyReferenceMode ?? "git-tag") === "registry-prerelease") {
108
- return {
109
- packageName: input.packageName,
110
- version: input.version,
111
- spec: input.version,
112
- manifestSpec: input.version,
113
- installSpec: input.version,
114
- tagName: input.version,
115
- remoteUrl: input.remoteUrl ?? null,
116
- mode: "dev-registry-prerelease"
117
- };
118
- }
119
95
  const installRemote = normalizeGitRemoteForDependency(input.remoteUrl ?? "", input.gitDependencyProtocol ?? "preserve-origin");
120
96
  const manifestRemote = normalizeGitRemoteForManifest(input.remoteUrl ?? "", input.gitDependencyProtocol ?? "preserve-origin");
121
97
  if (!installRemote || !manifestRemote) {
122
- throw new Error(`Unable to create Git-tag dependency for ${input.packageName}; origin remote is missing.`);
98
+ throw new Error(`Unable to create Git dependency for ${input.packageName}; origin remote is missing.`);
99
+ }
100
+ const ref = String(input.commitSha ?? "").trim();
101
+ if (!ref) {
102
+ throw new Error(`Unable to create commit dependency for ${input.packageName}; commit SHA is missing.`);
123
103
  }
124
- const manifestSpec = `${manifestRemote}#${input.version}`;
104
+ const manifestSpec = `${manifestRemote}#${ref}`;
125
105
  return {
126
106
  packageName: input.packageName,
127
107
  version: input.version,
128
108
  spec: manifestSpec,
129
109
  manifestSpec,
130
110
  installSpec: manifestSpec,
131
- tagName: input.version,
111
+ tagName: null,
132
112
  remoteUrl: input.remoteUrl ?? null,
133
- mode: "dev-git-tag"
113
+ mode: "dev-git-commit"
134
114
  };
135
115
  }
136
116
  function updateInternalDependencySpecs(packageJson, references) {
@@ -155,14 +135,24 @@ function updateInternalDependencySpecs(packageJson, references) {
155
135
  }
156
136
  return changed;
157
137
  }
138
+ function installableInternalDependencyVersions(root = workspaceRoot(), versions) {
139
+ const publishTargets = /* @__PURE__ */ new Map();
140
+ for (const adapter of discoverTreeseedPackageAdapters(root)) {
141
+ const publishTarget = adapter.publishTarget ?? "npm";
142
+ publishTargets.set(adapter.id, publishTarget);
143
+ publishTargets.set(adapter.name, publishTarget);
144
+ }
145
+ return new Map([...versions.entries()].filter(([packageName]) => (publishTargets.get(packageName) ?? "npm") === "npm"));
146
+ }
158
147
  function rewriteInternalDependenciesToStableVersions(root = workspaceRoot(), versions) {
159
148
  const rewrites = [];
149
+ const installableVersions = installableInternalDependencyVersions(root, versions);
160
150
  for (const pkg of workspacePackages(root)) {
161
151
  const packageJsonPath = resolve(pkg.dir, "package.json");
162
152
  const packageJson = readJson(packageJsonPath);
163
153
  const changed = updateInternalDependencySpecs(
164
154
  packageJson,
165
- new Map([...versions.entries()].map(([packageName, version]) => [packageName, {
155
+ new Map([...installableVersions.entries()].map(([packageName, version]) => [packageName, {
166
156
  packageName,
167
157
  version,
168
158
  spec: version,
@@ -185,6 +175,7 @@ function rewriteInternalDependenciesToStableVersions(root = workspaceRoot(), ver
185
175
  }
186
176
  function rewriteProjectInternalDependenciesToStableVersions(root = workspaceRoot(), versions) {
187
177
  const rewrites = [];
178
+ const installableVersions = installableInternalDependencyVersions(root, versions);
188
179
  const targets = [
189
180
  { name: "@treeseed/market", dir: root },
190
181
  ...workspacePackages(root).map((pkg) => ({ name: pkg.name, dir: pkg.dir }))
@@ -195,7 +186,7 @@ function rewriteProjectInternalDependenciesToStableVersions(root = workspaceRoot
195
186
  const packageJson = readJson(packageJsonPath);
196
187
  const changed = updateInternalDependencySpecs(
197
188
  packageJson,
198
- new Map([...versions.entries()].map(([packageName, version]) => [packageName, {
189
+ new Map([...installableVersions.entries()].map(([packageName, version]) => [packageName, {
199
190
  packageName,
200
191
  version,
201
192
  spec: version,
@@ -231,8 +222,8 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
231
222
  for (const [depName, specValue] of Object.entries(values)) {
232
223
  if (!packageNames.has(depName)) continue;
233
224
  const spec = String(specValue);
234
- if (isGitDependencySpec(spec) && !releaseTagFromDependencySpec(spec)) {
235
- issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: "git-dev-ref" });
225
+ if (isGitDependencySpec(spec)) {
226
+ issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: releaseTagFromDependencySpec(spec) ? "git-release-ref" : "git-dev-ref" });
236
227
  } else if (isPrereleaseVersion(spec)) {
237
228
  issues.push({ repoName: pkg.name, filePath: packageJsonPath, field, dependencyName: depName, spec, reason: "prerelease-dev-ref" });
238
229
  }
@@ -259,10 +250,10 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
259
250
  record.resolved,
260
251
  record.from
261
252
  ].map((value) => typeof value === "string" ? value : "").find(
262
- (value) => isGitDependencySpec(value) && !releaseTagFromDependencySpec(value) || devTagFromDependencySpec(value) || isPrereleaseVersion(value)
253
+ (value) => isGitDependencySpec(value) || devTagFromDependencySpec(value) || isPrereleaseVersion(value)
263
254
  );
264
255
  if (spec) {
265
- issues.push({ repoName: lockRoot.name, filePath: lockPath, spec, reason: "lockfile-dev-ref", dependencyName: packageName });
256
+ issues.push({ repoName: lockRoot.name, filePath: lockPath, spec, reason: releaseTagFromDependencySpec(spec) ? "lockfile-git-release-ref" : "lockfile-dev-ref", dependencyName: packageName });
266
257
  }
267
258
  }
268
259
  }
@@ -270,204 +261,94 @@ function collectInternalDevReferenceIssues(root = workspaceRoot(), packageNames
270
261
  }
271
262
  return issues;
272
263
  }
273
- function assertNoInternalDevReferences(root = workspaceRoot(), packageNames) {
274
- const issues = collectInternalDevReferenceIssues(root, packageNames);
275
- if (issues.length === 0) return;
276
- const rendered = issues.map((issue) => `${issue.filePath}${issue.field ? ` ${issue.field}.${issue.dependencyName}` : ""}: ${issue.reason} ${issue.spec}`).join("\n");
277
- throw new Error(`Stable release still contains internal Git/dev dependency references.
278
- ${rendered}`);
279
- }
280
- function createDevTagMessage(input) {
281
- const branchSlug = input.branch.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 40) || "dev";
282
- return [
283
- `save: ${input.packageName} ${input.version}`,
284
- "",
285
- "treeseed-dev-tag: true",
286
- `package: ${input.packageName}`,
287
- `version: ${input.version}`,
288
- `branch: ${input.branch}`,
289
- `branchSlug: ${branchSlug}`,
290
- `createdAt: ${input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()}`,
291
- `workflowRunId: ${input.workflowRunId ?? ""}`,
292
- `commitSha: ${input.commitSha}`
293
- ].join("\n");
294
- }
295
- function gitTagMessage(repoDir, tagName) {
296
- try {
297
- return run("git", ["tag", "-l", tagName, "--format=%(contents)"], { cwd: repoDir, capture: true });
298
- } catch {
299
- return "";
300
- }
301
- }
302
- function gitRemoteTagMessage(repoDir, tagName) {
303
- try {
304
- run("git", ["fetch", "--no-tags", "origin", `refs/tags/${tagName}`], { cwd: repoDir, capture: true });
305
- return run("git", ["cat-file", "-p", "FETCH_HEAD"], { cwd: repoDir, capture: true });
306
- } catch {
307
- return "";
308
- }
309
- }
310
- function gitDevTagMessage(repoDir, tagName) {
311
- const local = gitTagMessage(repoDir, tagName);
312
- if (local.trim()) return local;
313
- return gitRemoteTagMessage(repoDir, tagName);
314
- }
315
- function tagHasTreeseedDevMetadata(repoDir, tagName) {
316
- return gitTagMessage(repoDir, tagName).includes("treeseed-dev-tag: true");
317
- }
318
- function parseTreeseedDevTag(tagName, message) {
319
- const match = String(tagName).match(/^(\d+\.\d+\.\d+)-dev\.([0-9A-Za-z.-]+)\.(\d{8}T\d{6}Z)$/u);
320
- if (!match) return null;
321
- const metadata = Object.fromEntries(
322
- String(message).split(/\r?\n/u).map((line) => line.match(/^([^:]+):\s*(.*)$/u)).filter((lineMatch) => Boolean(lineMatch)).map((lineMatch) => [String(lineMatch[1]).trim(), String(lineMatch[2] ?? "").trim()])
323
- );
324
- if (metadata["treeseed-dev-tag"] !== "true") return null;
325
- return {
326
- tagName,
327
- stableVersion: match[1],
328
- branchSlug: match[2],
329
- timestamp: match[3],
330
- metadata,
331
- branch: metadata.branch || null,
332
- packageName: metadata.package || null,
333
- version: metadata.version || null
334
- };
335
- }
336
- function devTagScope(info) {
337
- const branch = info.branch ?? info.branchSlug;
338
- if (branch === "staging" || info.branchSlug === "staging") return "staging";
339
- if (branch === "main" || branch === "prod" || branch === "production" || info.branchSlug === "main" || info.branchSlug === "prod" || info.branchSlug === "production") return "main";
340
- return "preview";
341
- }
342
- function classifyStaleTreeseedDevTag(input) {
343
- const tagName = String(input.tagName).trim();
344
- if (!tagName.includes("-dev.")) return { tagName, action: "skip", reason: "not-dev-tag", info: null };
345
- if (tagName.startsWith("deprecated/")) return { tagName, action: "skip", reason: "deprecated-tag", info: null };
346
- const info = parseTreeseedDevTag(tagName, input.message);
347
- if (!info) return { tagName, action: "skip", reason: input.message.includes("treeseed-dev-tag: true") ? "malformed-dev-tag" : "missing-treeseed-metadata", info: null };
348
- if (input.expectedPackageName && info.packageName && info.packageName !== input.expectedPackageName) {
349
- return { tagName, action: "skip", reason: "package-mismatch", info };
350
- }
351
- if ((input.activeReferences ?? []).includes(tagName)) return { tagName, action: "skip", reason: "still-referenced", info };
352
- const scope = devTagScope(info);
353
- if (scope === "main") return { tagName, action: "skip", reason: "main-or-production-tag", info };
354
- const branchScope = input.branchScope ?? "all";
355
- if (branchScope !== "all" && branchScope !== scope) return { tagName, action: "skip", reason: `scope-${scope}`, info };
356
- const currentStableVersion = stableVersionBase(input.currentVersion);
357
- if (!currentStableVersion) return { tagName, action: "skip", reason: "invalid-current-version", info };
358
- const comparison = compareStableVersions(info.stableVersion, currentStableVersion);
359
- if (comparison >= 0) {
360
- return { tagName, action: "skip", reason: comparison === 0 ? "current-version" : "newer-version", info };
361
- }
362
- return { tagName, action: "delete", reason: "stale-before-current-version", info };
363
- }
364
- function cleanupDevTags(repoDir, tagNames, activeReferences = []) {
365
- const active = new Set(activeReferences.filter(Boolean));
366
- const cleaned = [];
367
- const skipped = [];
368
- for (const tagName of [...new Set(tagNames.filter(Boolean))].sort()) {
369
- if (!tagName.includes("-dev.")) {
370
- skipped.push({ tagName, reason: "not-dev-tag" });
371
- continue;
372
- }
373
- if (active.has(tagName)) {
374
- skipped.push({ tagName, reason: "still-referenced" });
375
- continue;
376
- }
377
- if (!tagHasTreeseedDevMetadata(repoDir, tagName)) {
378
- skipped.push({ tagName, reason: "missing-treeseed-metadata" });
379
- continue;
380
- }
381
- try {
382
- run("git", ["tag", "-d", tagName], { cwd: repoDir });
383
- run("git", ["push", "origin", `:refs/tags/${tagName}`], { cwd: repoDir });
384
- cleaned.push(tagName);
385
- } catch (error) {
386
- skipped.push({ tagName, reason: error instanceof Error ? error.message : String(error) });
264
+ function collectDevelopmentCommitReferenceIssues(root = workspaceRoot(), packageNames = new Set(workspacePackages(root).map((pkg) => pkg.name))) {
265
+ const issues = [];
266
+ const manifestRoots = [
267
+ { name: "@treeseed/market", dir: root },
268
+ ...workspacePackages(root).map((pkg) => ({ name: pkg.name, dir: pkg.dir }))
269
+ ];
270
+ for (const pkg of manifestRoots) {
271
+ const packageJsonPath = resolve(pkg.dir, "package.json");
272
+ if (!existsSync(packageJsonPath)) continue;
273
+ const packageJson = readJson(packageJsonPath);
274
+ for (const field of internalDependencyFields(packageJson)) {
275
+ const values = packageJson[field];
276
+ for (const [depName, specValue] of Object.entries(values)) {
277
+ if (!packageNames.has(depName)) continue;
278
+ const spec = String(specValue);
279
+ if (!/^github:treeseed-ai\/[a-z0-9._-]+#[a-f0-9]{40}$/u.test(spec)) {
280
+ issues.push({
281
+ repoName: pkg.name,
282
+ filePath: packageJsonPath,
283
+ field,
284
+ dependencyName: depName,
285
+ spec,
286
+ reason: isGitDependencySpec(spec) ? "git-ref-is-not-commit-sha" : isPrereleaseVersion(spec) ? "prerelease-ref" : "non-git-commit-ref"
287
+ });
288
+ }
289
+ }
387
290
  }
388
291
  }
389
- return { cleaned, skipped };
390
- }
391
- function localDevTags(repoDir) {
392
- return run("git", ["tag", "-l", "*-dev.*"], { cwd: repoDir, capture: true }).split(/\r?\n/u).map((line) => line.trim()).filter(Boolean);
393
- }
394
- function remoteDevTags(repoDir) {
395
- try {
396
- return run("git", ["ls-remote", "--tags", "origin", "*-dev.*"], { cwd: repoDir, capture: true }).split(/\r?\n/u).map((line) => line.trim()).filter(Boolean).filter((line) => !line.endsWith("^{}")).map((line) => line.split(/\s+/u)[1] ?? "").filter((ref) => ref.startsWith("refs/tags/")).map((ref) => ref.slice("refs/tags/".length));
397
- } catch {
398
- return [];
292
+ for (const lockRoot of manifestRoots) {
293
+ for (const lockName of ["package-lock.json", "npm-shrinkwrap.json"]) {
294
+ const lockPath = resolve(lockRoot.dir, lockName);
295
+ if (!existsSync(lockPath)) continue;
296
+ const lockfile = readJson(lockPath);
297
+ const packageEntries = lockfile.packages && typeof lockfile.packages === "object" ? Object.entries(lockfile.packages) : [];
298
+ for (const [entryPath, entry] of packageEntries) {
299
+ if (!entry || typeof entry !== "object") continue;
300
+ for (const field of internalDependencyFields(entry)) {
301
+ const values = entry[field];
302
+ for (const [depName, specValue] of Object.entries(values)) {
303
+ if (!packageNames.has(depName)) continue;
304
+ const spec = String(specValue);
305
+ if (!/^github:treeseed-ai\/[a-z0-9._-]+#[a-f0-9]{40}$/u.test(spec)) {
306
+ issues.push({
307
+ repoName: lockRoot.name,
308
+ filePath: lockPath,
309
+ field: entryPath ? `packages.${entryPath}.${field}` : field,
310
+ dependencyName: depName,
311
+ spec,
312
+ reason: isGitDependencySpec(spec) ? "lockfile-git-ref-is-not-commit-sha" : "lockfile-non-git-commit-ref"
313
+ });
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }
399
319
  }
320
+ return issues;
400
321
  }
401
- function collectTreeseedDevTagCleanupPlan(input) {
402
- const tagNames = [.../* @__PURE__ */ new Set([...localDevTags(input.repoDir), ...remoteDevTags(input.repoDir)])].sort();
403
- const classifications = tagNames.map((tagName) => classifyStaleTreeseedDevTag({
404
- tagName,
405
- message: gitDevTagMessage(input.repoDir, tagName),
406
- currentVersion: input.currentVersion,
407
- activeReferences: input.activeReferences ?? [],
408
- branchScope: input.branchScope ?? "all",
409
- expectedPackageName: input.packageName
410
- }));
411
- return {
412
- packageName: input.packageName,
413
- currentVersion: input.currentVersion,
414
- branchScope: input.branchScope ?? "all",
415
- candidates: classifications.filter((classification) => classification.action === "delete"),
416
- skipped: classifications.filter((classification) => classification.action === "skip"),
417
- tags: classifications
418
- };
322
+ function assertDevelopmentInternalCommitReferences(root = workspaceRoot(), packageNames) {
323
+ const issues = collectDevelopmentCommitReferenceIssues(root, packageNames);
324
+ if (issues.length === 0) return;
325
+ const rendered = issues.map((issue) => `${issue.filePath}${issue.field ? ` ${issue.field}.${issue.dependencyName}` : ""}: ${issue.reason} ${issue.spec}`).join("\n");
326
+ throw new Error(`Development and staging package references must use GitHub commit SHAs for internal Treeseed dependencies.
327
+ ${rendered}`);
419
328
  }
420
- function cleanupStaleTreeseedDevTags(input) {
421
- const plan = collectTreeseedDevTagCleanupPlan(input);
422
- const cleaned = [];
423
- const skipped = [...plan.skipped.map((entry) => ({ tagName: entry.tagName, reason: entry.reason }))];
424
- for (const candidate of plan.candidates) {
425
- if (input.dryRun) continue;
426
- try {
427
- run("git", ["tag", "-d", candidate.tagName], { cwd: input.repoDir });
428
- } catch {
429
- }
430
- try {
431
- run("git", ["push", "origin", `:refs/tags/${candidate.tagName}`], { cwd: input.repoDir });
432
- cleaned.push(candidate.tagName);
433
- } catch (error) {
434
- skipped.push({ tagName: candidate.tagName, reason: error instanceof Error ? error.message : String(error) });
435
- }
436
- }
437
- return {
438
- status: input.dryRun ? "planned" : "completed",
439
- packageName: input.packageName,
440
- currentVersion: input.currentVersion,
441
- branchScope: input.branchScope ?? "all",
442
- candidates: plan.candidates.map((entry) => ({ tagName: entry.tagName, reason: entry.reason, branch: entry.info?.branch, branchSlug: entry.info?.branchSlug, version: entry.info?.version })),
443
- candidateCount: plan.candidates.length,
444
- cleaned,
445
- cleanedCount: cleaned.length,
446
- skipped,
447
- skippedCount: skipped.length
448
- };
329
+ function assertNoInternalDevReferences(root = workspaceRoot(), packageNames) {
330
+ const issues = collectInternalDevReferenceIssues(root, packageNames);
331
+ if (issues.length === 0) return;
332
+ const rendered = issues.map((issue) => `${issue.filePath}${issue.field ? ` ${issue.field}.${issue.dependencyName}` : ""}: ${issue.reason} ${issue.spec}`).join("\n");
333
+ throw new Error(`Stable release still contains internal Git or dev dependency references; production package.json files must use plain semver npm versions.
334
+ ${rendered}`);
449
335
  }
450
336
  export {
337
+ assertDevelopmentInternalCommitReferences,
451
338
  assertNoInternalDevReferences,
452
- classifyStaleTreeseedDevTag,
453
- cleanupDevTags,
454
- cleanupStaleTreeseedDevTags,
339
+ collectDevelopmentCommitReferenceIssues,
455
340
  collectInternalDevReferenceIssues,
456
- collectTreeseedDevTagCleanupPlan,
457
- createDevTagMessage,
458
341
  createPackageDependencyReference,
459
342
  devTagFromDependencySpec,
460
- gitTagMessage,
343
+ installableInternalDependencyVersions,
461
344
  internalDependencyFields,
462
345
  isGitDependencySpec,
463
346
  isPrereleaseVersion,
464
347
  isStableVersion,
465
348
  normalizeGitRemoteForDependency,
466
349
  normalizeGitRemoteForManifest,
467
- parseTreeseedDevTag,
468
350
  releaseTagFromDependencySpec,
469
351
  rewriteInternalDependenciesToStableVersions,
470
352
  rewriteProjectInternalDependenciesToStableVersions,
471
- tagHasTreeseedDevMetadata,
472
353
  updateInternalDependencySpecs
473
354
  };
@@ -1,7 +1,7 @@
1
- import type { ProjectEnvironmentName, ProjectLaunchHostBindingInput, TemplateLaunchRequirements } from '../../sdk-types.ts';
2
- import { type PlatformRepositoryDescriptor } from '../repository-operations.ts';
3
- import { type ProjectLaunchSecretSyncProgressEvent, type ProjectLaunchSecretSyncResult } from './template-secret-sync.ts';
4
- import { type ProjectLaunchHostInventoryRecord, type ProjectLaunchResolvedHostBinding, type ResolveProjectLaunchHostBindingsResult } from '../../template-launch-requirements.ts';
1
+ import type { ProjectEnvironmentName, ProjectLaunchHostBindingInput, TemplateLaunchRequirements } from '../../sdk-types.js';
2
+ import { type PlatformRepositoryDescriptor } from '../repository-operations.js';
3
+ import { type ProjectLaunchSecretSyncProgressEvent, type ProjectLaunchSecretSyncResult } from './template-secret-sync.js';
4
+ import { type ProjectLaunchHostInventoryRecord, type ProjectLaunchResolvedHostBinding, type ResolveProjectLaunchHostBindingsResult } from '../../template-launch-requirements.js';
5
5
  export type ProjectHostOperationKind = 'inspect' | 'audit' | 'resync' | 'replace' | 'rotate';
6
6
  export type ProjectHostOperationStatus = 'ok' | 'warning' | 'blocked';
7
7
  export interface ProjectHostOperationDiagnostic {