@treeseed/sdk 0.12.62 → 0.13.0-rc.10

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 (1108) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +33 -359
  3. package/dist/accounts/account-contracts.d.ts +170 -0
  4. package/dist/accounts/account-contracts.js +33 -0
  5. package/dist/agent-capacity/allocation.d.ts +186 -0
  6. package/dist/agent-capacity/allocation.js +226 -0
  7. package/dist/agent-capacity/artifact-mutation-receipt.d.ts +49 -0
  8. package/dist/agent-capacity/artifact-mutation-receipt.js +36 -0
  9. package/dist/agent-capacity/artifacts.d.ts +107 -0
  10. package/dist/agent-capacity/artifacts.js +39 -0
  11. package/dist/agent-capacity/authority/agent-authority-presets.d.ts +13 -0
  12. package/dist/agent-capacity/authority/agent-authority-presets.js +106 -0
  13. package/dist/agent-capacity/contracts/capacity/assignments/assignment-records.d.ts +269 -0
  14. package/dist/agent-capacity/contracts/capacity/assignments/assignment-records.js +10 -0
  15. package/dist/agent-capacity/contracts/capacity/communication/communication-records.d.ts +101 -0
  16. package/dist/agent-capacity/contracts/capacity/communication/communication-records.js +9 -0
  17. package/dist/agent-capacity/contracts/capacity/providers/supply-policy.d.ts +36 -0
  18. package/dist/agent-capacity/contracts/capacity/providers/supply-policy.js +4 -0
  19. package/dist/agent-capacity/contracts/capacity/workdays/workday-records.d.ts +188 -0
  20. package/dist/agent-capacity/contracts/configuration/configuration.d.ts +11 -0
  21. package/dist/agent-capacity/contracts/configuration/configuration.js +20 -0
  22. package/dist/agent-capacity/contracts/operations/research-workflow.d.ts +59 -0
  23. package/dist/agent-capacity/contracts/operations/research-workflow.js +16 -0
  24. package/dist/agent-capacity/contracts/operations/workflow-promotion.d.ts +24 -0
  25. package/dist/agent-capacity/contracts/projects/agents/project-agent-class.d.ts +37 -0
  26. package/dist/agent-capacity/contracts/runtime/runtime-observability.d.ts +335 -0
  27. package/dist/agent-capacity/contracts/support/agent-atlas.d.ts +185 -0
  28. package/dist/agent-capacity/contracts/support/agent-atlas.js +47 -0
  29. package/dist/agent-capacity/contracts/support/agent-lab-monitoring.d.ts +96 -0
  30. package/dist/agent-capacity/contracts/support/agent-lab-monitoring.js +14 -0
  31. package/dist/agent-capacity/contracts/support/authority/execution-mode.d.ts +10 -0
  32. package/dist/agent-capacity/contracts/support/authority/execution-mode.js +17 -0
  33. package/dist/agent-capacity/contracts/support/decision-work.d.ts +251 -0
  34. package/dist/agent-capacity/contracts/support/failure-records.d.ts +9 -0
  35. package/dist/agent-capacity/contracts/support/failure-records.js +0 -0
  36. package/dist/agent-capacity/contracts/support/financial-records.d.ts +124 -0
  37. package/dist/agent-capacity/contracts/support/financial-records.js +0 -0
  38. package/dist/agent-capacity/contracts/support/planning-records.d.ts +121 -0
  39. package/dist/agent-capacity/contracts/support/planning-records.js +0 -0
  40. package/dist/agent-capacity/contracts/support/research-citation.d.ts +15 -0
  41. package/dist/agent-capacity/contracts/support/research-citation.js +0 -0
  42. package/dist/agent-capacity/contracts/support/research-source-policy.d.ts +8 -0
  43. package/dist/agent-capacity/contracts/support/research-source-policy.js +0 -0
  44. package/dist/agent-capacity/contracts/support/time-capacity.d.ts +163 -0
  45. package/dist/agent-capacity/contracts/support/time-capacity.js +63 -0
  46. package/dist/agent-capacity/policy/capacity/allocations/allocation-hierarchy.d.ts +29 -0
  47. package/dist/agent-capacity/policy/capacity/allocations/allocation-hierarchy.js +110 -0
  48. package/dist/agent-capacity/validation/activity-profile.d.ts +12 -0
  49. package/dist/agent-capacity/validation/activity-profile.js +264 -0
  50. package/dist/agent-capacity/validation/agent-definition-schema.d.ts +9140 -0
  51. package/dist/agent-capacity/validation/agent-definition-schema.js +198 -0
  52. package/dist/agent-capacity/validation/agent-lab-forensics-schema.d.ts +234 -0
  53. package/dist/agent-capacity/validation/agent-lab-forensics-schema.js +104 -0
  54. package/dist/agent-capacity/validation/agent-signal.d.ts +30 -0
  55. package/dist/agent-capacity/validation/agent-signal.js +31 -0
  56. package/dist/agent-capacity/validation/allocation.d.ts +12 -0
  57. package/dist/agent-capacity/validation/allocation.js +115 -0
  58. package/dist/agent-capacity/validation/assignment-records.d.ts +16 -0
  59. package/dist/agent-capacity/validation/assignment-records.js +92 -0
  60. package/dist/agent-capacity/validation/configuration.d.ts +14 -0
  61. package/dist/agent-capacity/validation/configuration.js +23 -0
  62. package/dist/agent-capacity/validation/index.d.ts +11 -0
  63. package/dist/agent-capacity/validation/index.js +11 -0
  64. package/dist/agent-capacity/validation/proposal-type.d.ts +22 -0
  65. package/dist/agent-capacity/validation/proposal-type.js +21 -0
  66. package/dist/agent-capacity/validation/research/citation.d.ts +16 -0
  67. package/dist/agent-capacity/validation/research/citation.js +47 -0
  68. package/dist/agent-capacity/validation/research/source-policy.d.ts +11 -0
  69. package/dist/agent-capacity/validation/research/source-policy.js +26 -0
  70. package/dist/agent-capacity/validation/research/workflow.d.ts +10 -0
  71. package/dist/agent-capacity/validation/research/workflow.js +31 -0
  72. package/dist/agent-capacity/validation/workflow-promotion.d.ts +2 -0
  73. package/dist/agent-capacity/validation/workflow-promotion.js +34 -0
  74. package/dist/agent-capacity/workday.d.ts +52 -0
  75. package/dist/agent-capacity/workday.js +105 -0
  76. package/dist/ai-appliance/contracts.d.ts +90 -0
  77. package/dist/ai-appliance/contracts.js +16 -0
  78. package/dist/ai-appliance/validation.d.ts +4 -0
  79. package/dist/ai-appliance/validation.js +62 -0
  80. package/dist/capacity/agents/agent-capacity.d.ts +21 -0
  81. package/dist/capacity/agents/agent-capacity.js +20 -0
  82. package/dist/capacity/capacity-core/capacity-pagination.d.ts +18 -0
  83. package/dist/capacity/capacity-core/capacity-pagination.js +33 -0
  84. package/dist/capacity/providers/capacity-provider.d.ts +1 -0
  85. package/dist/capacity/providers/capacity-provider.js +1 -0
  86. package/dist/capacity-provider/client.d.ts +56 -0
  87. package/dist/capacity-provider/client.js +163 -0
  88. package/dist/capacity-provider/contracts/capacity-facts.d.ts +64 -0
  89. package/dist/capacity-provider/contracts/capacity-facts.js +0 -0
  90. package/dist/capacity-provider/contracts/governance.d.ts +399 -0
  91. package/dist/capacity-provider/contracts/governance.js +18 -0
  92. package/dist/capacity-provider/contracts/index.d.ts +2 -0
  93. package/dist/capacity-provider/contracts/index.js +2 -0
  94. package/dist/capacity-provider/index.d.ts +3 -0
  95. package/dist/capacity-provider/index.js +3 -0
  96. package/dist/capacity-provider/validation.d.ts +27 -0
  97. package/dist/capacity-provider/validation.js +184 -0
  98. package/dist/configuration/secrets-capability.d.ts +4 -0
  99. package/dist/configuration/secrets-capability.js +4 -0
  100. package/dist/content/contracts.d.ts +12 -0
  101. package/dist/content/contracts.js +0 -0
  102. package/dist/content/validation/agent-operational-content-schemas.d.ts +1351 -0
  103. package/dist/content/validation/agent-operational-content-schemas.js +146 -0
  104. package/dist/content/validation/auxiliary-content-schemas.d.ts +1715 -0
  105. package/dist/content/validation/auxiliary-content-schemas.js +173 -0
  106. package/dist/content/validation/content-model-schemas.d.ts +21728 -0
  107. package/dist/content/validation/content-model-schemas.js +271 -0
  108. package/dist/content/validation/index.d.ts +3 -0
  109. package/dist/content/validation/index.js +3 -0
  110. package/dist/content/validation/portable-content-data.d.ts +2101 -0
  111. package/dist/content/validation/portable-content-data.js +49 -0
  112. package/dist/entrypoints/clients/control-plane-client.d.ts +112 -0
  113. package/dist/entrypoints/clients/control-plane-client.js +180 -0
  114. package/dist/entrypoints/models/field-aliases.d.ts +11 -0
  115. package/dist/entrypoints/models/model-registry.d.ts +3 -0
  116. package/dist/entrypoints/models/model-registry.js +3 -0
  117. package/dist/entrypoints/models/sdk-fields.d.ts +11 -0
  118. package/dist/entrypoints/models/sdk-types.d.ts +10 -0
  119. package/dist/entrypoints/models/sdk-types.js +10 -0
  120. package/dist/feedback/contracts.d.ts +142 -0
  121. package/dist/feedback/contracts.js +18 -0
  122. package/dist/feedback/index.d.ts +1 -0
  123. package/dist/feedback/index.js +1 -0
  124. package/dist/governance/groups/contracts.d.ts +102 -0
  125. package/dist/governance/groups/contracts.js +6 -0
  126. package/dist/graph/context-query-contracts.d.ts +19 -1
  127. package/dist/graph/context-query-contracts.js +49 -8
  128. package/dist/knowledge/contracts.d.ts +173 -0
  129. package/dist/knowledge/contracts.js +16 -0
  130. package/dist/knowledge/index.d.ts +1 -0
  131. package/dist/knowledge/index.js +1 -0
  132. package/dist/model-registry/agent-operational-models.d.ts +4 -0
  133. package/dist/model-registry/agent-operational-models.js +38 -0
  134. package/dist/model-registry/build-builtin-model-registry.d.ts +2 -0
  135. package/dist/model-registry/build-builtin-model-registry.js +426 -0
  136. package/dist/model-registry/content-root.d.ts +9 -0
  137. package/dist/model-registry/content-root.js +33 -0
  138. package/dist/model-registry/discussion-models.d.ts +4 -0
  139. package/dist/model-registry/discussion-models.js +84 -0
  140. package/dist/model-registry/group-models.d.ts +2 -0
  141. package/dist/model-registry/group-models.js +52 -0
  142. package/dist/model-registry/knowledge-models.d.ts +2 -0
  143. package/dist/model-registry/knowledge-models.js +89 -0
  144. package/dist/model-registry/normalize-definition.d.ts +8 -0
  145. package/dist/model-registry/normalize-definition.js +69 -0
  146. package/dist/operator-contracts/canonical-command-tree.d.ts +3 -0
  147. package/dist/operator-contracts/canonical-command-tree.js +81 -0
  148. package/dist/operator-contracts/command-tree.d.ts +79 -0
  149. package/dist/operator-contracts/command-tree.js +53 -0
  150. package/dist/operator-contracts/control-plane-operation.d.ts +80 -0
  151. package/dist/operator-contracts/control-plane-operation.js +75 -0
  152. package/dist/operator-contracts/control-plane-operations.d.ts +546 -0
  153. package/dist/operator-contracts/control-plane-operations.js +352 -0
  154. package/dist/operator-contracts/index.d.ts +8 -0
  155. package/dist/operator-contracts/index.js +8 -0
  156. package/dist/operator-contracts/mcp.d.ts +78 -0
  157. package/dist/operator-contracts/mcp.js +23 -0
  158. package/dist/operator-contracts/oauth.d.ts +46 -0
  159. package/dist/operator-contracts/oauth.js +0 -0
  160. package/dist/operator-contracts/workday-lifecycle.d.ts +157 -0
  161. package/dist/operator-contracts/workday-lifecycle.js +65 -0
  162. package/dist/operator-contracts/workday-profile.d.ts +72 -0
  163. package/dist/operator-contracts/workday-profile.js +106 -0
  164. package/dist/projects/projects-core/project-workflow.d.ts +179 -0
  165. package/dist/projects/projects-core/project-workflow.js +66 -0
  166. package/dist/sdk-types/configuration/sdk-dispatch-credential-source.d.ts +201 -0
  167. package/dist/sdk-types/configuration/sdk-dispatch-credential-source.js +0 -0
  168. package/dist/sdk-types/control-plane/resource-requests.d.ts +124 -0
  169. package/dist/sdk-types/control-plane/resource-requests.js +0 -0
  170. package/dist/sdk-types/governance/commons/commons-question-input.d.ts +61 -0
  171. package/dist/sdk-types/governance/commons/commons-question-input.js +0 -0
  172. package/dist/sdk-types/support/planning-policy.d.ts +210 -0
  173. package/dist/sdk-types/support/planning-policy.js +0 -0
  174. package/dist/sdk-types/support/platform-contracts.d.ts +178 -0
  175. package/dist/sdk-types/support/platform-contracts.js +15 -0
  176. package/dist/sdk-types/support/sdk-model-names.d.ts +44 -0
  177. package/dist/sdk-types/support/sdk-model-names.js +80 -0
  178. package/dist/sdk-types/support/sdk-search-request.d.ts +182 -0
  179. package/dist/sdk-types/support/sdk-search-request.js +0 -0
  180. package/dist/sdk-types/support/task-planning.d.ts +189 -0
  181. package/dist/sdk-types/support/task-planning.js +0 -0
  182. package/dist/sdk-types/treedx/graph/sdk-graph-query-request.d.ts +157 -0
  183. package/dist/sdk-types/treedx/graph/sdk-graph-query-request.js +0 -0
  184. package/dist/secrets-capability/provider-operation-contracts.d.ts +90 -0
  185. package/dist/secrets-capability/provider-operation-contracts.js +10 -0
  186. package/dist/secrets-capability/service-provider-contracts.d.ts +92 -0
  187. package/dist/secrets-capability/service-provider-contracts.js +183 -0
  188. package/dist/secrets-capability/service-vault-contracts.d.ts +61 -0
  189. package/dist/secrets-capability/service-vault-contracts.js +39 -0
  190. package/dist/secrets-capability/workflow-operation-contracts.d.ts +95 -0
  191. package/dist/secrets-capability/workflow-operation-contracts.js +0 -0
  192. package/dist/standards/canonicalize.d.ts +10 -0
  193. package/dist/standards/canonicalize.js +43 -0
  194. package/dist/standards/compatibility-attestation.d.ts +23 -0
  195. package/dist/standards/compatibility-attestation.js +40 -0
  196. package/dist/standards/composition.d.ts +15 -0
  197. package/dist/standards/composition.js +14 -0
  198. package/dist/standards/contract-bundle.d.ts +8 -0
  199. package/dist/standards/contract-bundle.js +23 -0
  200. package/dist/standards/contracts.d.ts +39 -0
  201. package/dist/standards/contracts.js +0 -0
  202. package/dist/standards/errors.d.ts +6 -0
  203. package/dist/standards/errors.js +13 -0
  204. package/dist/standards/index.d.ts +8 -0
  205. package/dist/standards/index.js +8 -0
  206. package/dist/standards/mcp/compare.d.ts +2 -0
  207. package/dist/standards/mcp/compare.js +38 -0
  208. package/dist/standards/mcp/contracts.d.ts +34 -0
  209. package/dist/standards/mcp/contracts.js +0 -0
  210. package/dist/standards/mcp/index.d.ts +3 -0
  211. package/dist/standards/mcp/index.js +3 -0
  212. package/dist/standards/mcp/normalize.d.ts +4 -0
  213. package/dist/standards/mcp/normalize.js +30 -0
  214. package/dist/standards/openapi/compare.d.ts +2 -0
  215. package/dist/standards/openapi/compare.js +112 -0
  216. package/dist/standards/openapi/contracts.d.ts +24 -0
  217. package/dist/standards/openapi/contracts.js +0 -0
  218. package/dist/standards/openapi/index.d.ts +3 -0
  219. package/dist/standards/openapi/index.js +3 -0
  220. package/dist/standards/openapi/normalize.d.ts +2 -0
  221. package/dist/standards/openapi/normalize.js +57 -0
  222. package/dist/standards/package-manifest.d.ts +37 -0
  223. package/dist/standards/package-manifest.js +89 -0
  224. package/dist/standards/portfolio-entry.d.ts +12 -0
  225. package/dist/standards/portfolio-entry.js +11 -0
  226. package/dist/standards/typescript/compare.d.ts +2 -0
  227. package/dist/standards/typescript/compare.js +88 -0
  228. package/dist/standards/typescript/contracts.d.ts +44 -0
  229. package/dist/standards/typescript/contracts.js +0 -0
  230. package/dist/standards/typescript/extract.d.ts +10 -0
  231. package/dist/standards/typescript/extract.js +244 -0
  232. package/dist/standards/typescript/index.d.ts +3 -0
  233. package/dist/standards/typescript/index.js +3 -0
  234. package/dist/treedx/accounts/auth.d.ts +17 -0
  235. package/dist/treedx/accounts/auth.js +48 -0
  236. package/dist/treedx/client/accounts/contracts/auth-mode.d.ts +3 -0
  237. package/dist/treedx/client/accounts/contracts/auth-mode.js +6 -0
  238. package/dist/treedx/client/build/creation/build-context.d.ts +3 -0
  239. package/dist/treedx/client/build/creation/build-context.js +7 -0
  240. package/dist/treedx/client/build/creation/build-snapshot.d.ts +3 -0
  241. package/dist/treedx/client/build/creation/build-snapshot.js +8 -0
  242. package/dist/treedx/client/capacity/allocations/contracts/put-capability-grant.d.ts +3 -0
  243. package/dist/treedx/client/capacity/allocations/contracts/put-capability-grant.js +7 -0
  244. package/dist/treedx/client/capacity/allocations/queries/list-capability-grants.d.ts +6 -0
  245. package/dist/treedx/client/capacity/allocations/queries/list-capability-grants.js +10 -0
  246. package/dist/treedx/client/methods.d.ts +102 -0
  247. package/dist/treedx/client/methods.js +209 -0
  248. package/dist/treedx/client/persistence/contracts/restore-storage.d.ts +3 -0
  249. package/dist/treedx/client/persistence/contracts/restore-storage.js +6 -0
  250. package/dist/treedx/client/persistence/lifecycle/verify-storage-restore.d.ts +3 -0
  251. package/dist/treedx/client/persistence/lifecycle/verify-storage-restore.js +6 -0
  252. package/dist/treedx/client/repositories/creation/register-repository.d.ts +3 -0
  253. package/dist/treedx/client/repositories/creation/register-repository.js +7 -0
  254. package/dist/treedx/client/repositories/queries/get-repository.d.ts +3 -0
  255. package/dist/treedx/client/repositories/queries/get-repository.js +7 -0
  256. package/dist/treedx/client/repositories/queries/list-repository-paths.d.ts +3 -0
  257. package/dist/treedx/client/repositories/queries/list-repository-paths.js +7 -0
  258. package/dist/treedx/client/repositories/queries/list-repository-refs.d.ts +3 -0
  259. package/dist/treedx/client/repositories/queries/list-repository-refs.js +12 -0
  260. package/dist/treedx/client/repositories/queries/query-repository.d.ts +3 -0
  261. package/dist/treedx/client/repositories/queries/query-repository.js +7 -0
  262. package/dist/treedx/client/repositories/queries/read-repository-file.d.ts +3 -0
  263. package/dist/treedx/client/repositories/queries/read-repository-file.js +6 -0
  264. package/dist/treedx/client/repositories/queries/read-repository-files.d.ts +3 -0
  265. package/dist/treedx/client/repositories/queries/read-repository-files.js +7 -0
  266. package/dist/treedx/client/repositories/queries/search-repository-files.d.ts +3 -0
  267. package/dist/treedx/client/repositories/queries/search-repository-files.js +7 -0
  268. package/dist/treedx/client/support/contracts/treedx/artifacts/contracts/download-artifact.d.ts +3 -0
  269. package/dist/treedx/client/support/contracts/treedx/artifacts/contracts/download-artifact.js +9 -0
  270. package/dist/treedx/client/support/contracts/treedx/authorization/contracts/whoami.d.ts +3 -0
  271. package/dist/treedx/client/support/contracts/treedx/authorization/contracts/whoami.js +6 -0
  272. package/dist/treedx/client/support/contracts/treedx/graph/contracts/parse-context-dsl.d.ts +3 -0
  273. package/dist/treedx/client/support/contracts/treedx/graph/contracts/parse-context-dsl.js +7 -0
  274. package/dist/treedx/client/support/contracts/treedx/health/contracts/deep-health.d.ts +5 -0
  275. package/dist/treedx/client/support/contracts/treedx/health/contracts/deep-health.js +7 -0
  276. package/dist/treedx/client/support/contracts/treedx/health/contracts/health.d.ts +3 -0
  277. package/dist/treedx/client/support/contracts/treedx/health/contracts/health.js +6 -0
  278. package/dist/treedx/client/support/contracts/treedx/health/contracts/metrics.d.ts +3 -0
  279. package/dist/treedx/client/support/contracts/treedx/health/contracts/metrics.js +7 -0
  280. package/dist/treedx/client/support/contracts/treedx/health/contracts/prometheus-metrics.d.ts +2 -0
  281. package/dist/treedx/client/support/contracts/treedx/health/contracts/prometheus-metrics.js +19 -0
  282. package/dist/treedx/client/support/contracts/treedx/health/contracts/ready.d.ts +3 -0
  283. package/dist/treedx/client/support/contracts/treedx/health/contracts/ready.js +7 -0
  284. package/dist/treedx/client/support/contracts/treedx/health/contracts/status.d.ts +3 -0
  285. package/dist/treedx/client/support/contracts/treedx/health/contracts/status.js +6 -0
  286. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/commit.d.ts +3 -0
  287. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/commit.js +7 -0
  288. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/diff.d.ts +3 -0
  289. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/diff.js +6 -0
  290. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/fetch-remote.d.ts +3 -0
  291. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/fetch-remote.js +7 -0
  292. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/push.d.ts +6 -0
  293. package/dist/treedx/client/support/contracts/treedx/repositories/contracts/push.js +23 -0
  294. package/dist/treedx/client/support/contracts/treedx/search/contracts/compact-search-index.d.ts +3 -0
  295. package/dist/treedx/client/support/contracts/treedx/search/contracts/compact-search-index.js +8 -0
  296. package/dist/treedx/client/support/contracts/treedx/search/contracts/search.d.ts +3 -0
  297. package/dist/treedx/client/support/contracts/treedx/search/contracts/search.js +7 -0
  298. package/dist/treedx/client/support/contracts/treedx/storage/contracts/backup-storage.d.ts +3 -0
  299. package/dist/treedx/client/support/contracts/treedx/storage/contracts/backup-storage.js +8 -0
  300. package/dist/treedx/client/support/contracts/treedx/storage/contracts/compact-storage.d.ts +3 -0
  301. package/dist/treedx/client/support/contracts/treedx/storage/contracts/compact-storage.js +8 -0
  302. package/dist/treedx/client/support/contracts/treedx/transport/contracts/assert-binary-ok.d.ts +2 -0
  303. package/dist/treedx/client/support/contracts/treedx/transport/contracts/assert-binary-ok.js +15 -0
  304. package/dist/treedx/client/support/contracts/treedx/transport/contracts/fetch-with-timeout.d.ts +2 -0
  305. package/dist/treedx/client/support/contracts/treedx/transport/contracts/fetch-with-timeout.js +38 -0
  306. package/dist/treedx/client/support/contracts/treedx/transport/contracts/headers.d.ts +2 -0
  307. package/dist/treedx/client/support/contracts/treedx/transport/contracts/headers.js +15 -0
  308. package/dist/treedx/client/support/contracts/treedx/transport/contracts/parse-json-response.d.ts +2 -0
  309. package/dist/treedx/client/support/contracts/treedx/transport/contracts/parse-json-response.js +15 -0
  310. package/dist/treedx/client/support/contracts/treedx/transport/contracts/query.d.ts +2 -0
  311. package/dist/treedx/client/support/contracts/treedx/transport/contracts/query.js +14 -0
  312. package/dist/treedx/client/support/contracts/treedx/transport/contracts/repo-id.d.ts +2 -0
  313. package/dist/treedx/client/support/contracts/treedx/transport/contracts/repo-id.js +14 -0
  314. package/dist/treedx/client/support/contracts/treedx/transport/contracts/request.d.ts +6 -0
  315. package/dist/treedx/client/support/contracts/treedx/transport/contracts/request.js +41 -0
  316. package/dist/treedx/client/support/contracts/treedx/transport/contracts/throw-api-error.d.ts +2 -0
  317. package/dist/treedx/client/support/contracts/treedx/transport/contracts/throw-api-error.js +14 -0
  318. package/dist/treedx/client/support/contracts/treedx/workspaces/contracts/exec.d.ts +3 -0
  319. package/dist/treedx/client/support/contracts/treedx/workspaces/contracts/exec.js +7 -0
  320. package/dist/treedx/client/support/creation/apply-changeset.d.ts +3 -0
  321. package/dist/treedx/client/support/creation/apply-changeset.js +10 -0
  322. package/dist/treedx/client/support/creation/apply-storage-migration.d.ts +3 -0
  323. package/dist/treedx/client/support/creation/apply-storage-migration.js +7 -0
  324. package/dist/treedx/client/support/creation/create-migration.d.ts +6 -0
  325. package/dist/treedx/client/support/creation/create-migration.js +7 -0
  326. package/dist/treedx/client/support/creation/export-artifact.d.ts +3 -0
  327. package/dist/treedx/client/support/creation/export-artifact.js +8 -0
  328. package/dist/treedx/client/support/creation/plan-storage-migration.d.ts +3 -0
  329. package/dist/treedx/client/support/creation/plan-storage-migration.js +7 -0
  330. package/dist/treedx/client/support/creation/request-binary.d.ts +6 -0
  331. package/dist/treedx/client/support/creation/request-binary.js +42 -0
  332. package/dist/treedx/client/support/creation/write-file.d.ts +3 -0
  333. package/dist/treedx/client/support/creation/write-file.js +10 -0
  334. package/dist/treedx/client/support/creation/write-files.d.ts +3 -0
  335. package/dist/treedx/client/support/creation/write-files.js +12 -0
  336. package/dist/treedx/client/support/queries/treedx/artifacts/queries/get-artifact.d.ts +3 -0
  337. package/dist/treedx/client/support/queries/treedx/artifacts/queries/get-artifact.js +7 -0
  338. package/dist/treedx/client/support/queries/treedx/artifacts/queries/list-artifacts.d.ts +3 -0
  339. package/dist/treedx/client/support/queries/treedx/artifacts/queries/list-artifacts.js +7 -0
  340. package/dist/treedx/client/support/queries/treedx/authorization/queries/effective-scope.d.ts +3 -0
  341. package/dist/treedx/client/support/queries/treedx/authorization/queries/effective-scope.js +9 -0
  342. package/dist/treedx/client/support/queries/treedx/authorization/queries/list-capabilities.d.ts +4 -0
  343. package/dist/treedx/client/support/queries/treedx/authorization/queries/list-capabilities.js +6 -0
  344. package/dist/treedx/client/support/queries/treedx/federation/queries/get-placement.d.ts +3 -0
  345. package/dist/treedx/client/support/queries/treedx/federation/queries/get-placement.js +7 -0
  346. package/dist/treedx/client/support/queries/treedx/graph/queries/get-node.d.ts +3 -0
  347. package/dist/treedx/client/support/queries/treedx/graph/queries/get-node.js +7 -0
  348. package/dist/treedx/client/support/queries/treedx/graph/queries/get-related.d.ts +3 -0
  349. package/dist/treedx/client/support/queries/treedx/graph/queries/get-related.js +7 -0
  350. package/dist/treedx/client/support/queries/treedx/graph/queries/list-nodes.d.ts +3 -0
  351. package/dist/treedx/client/support/queries/treedx/graph/queries/list-nodes.js +7 -0
  352. package/dist/treedx/client/support/queries/treedx/repositories/queries/list-tree.d.ts +3 -0
  353. package/dist/treedx/client/support/queries/treedx/repositories/queries/list-tree.js +10 -0
  354. package/dist/treedx/client/support/queries/treedx/repositories/queries/read-file.d.ts +3 -0
  355. package/dist/treedx/client/support/queries/treedx/repositories/queries/read-file.js +9 -0
  356. package/dist/treedx/client/support/queries/treedx/search/queries/get-search-index-status.d.ts +3 -0
  357. package/dist/treedx/client/support/queries/treedx/search/queries/get-search-index-status.js +7 -0
  358. package/dist/treedx/client/support/queries/treedx/storage/queries/get-migration.d.ts +6 -0
  359. package/dist/treedx/client/support/queries/treedx/storage/queries/get-migration.js +7 -0
  360. package/dist/treedx/client/support/queries/treedx/storage/queries/get-snapshot.d.ts +6 -0
  361. package/dist/treedx/client/support/queries/treedx/storage/queries/get-snapshot.js +7 -0
  362. package/dist/treedx/client/support/queries/treedx/storage/queries/list-storage-migrations.d.ts +6 -0
  363. package/dist/treedx/client/support/queries/treedx/storage/queries/list-storage-migrations.js +6 -0
  364. package/dist/treedx/client/support/queries/treedx/transport/queries/list-audit-events.d.ts +15 -0
  365. package/dist/treedx/client/support/queries/treedx/transport/queries/list-audit-events.js +6 -0
  366. package/dist/treedx/client/support/queries/treedx/transport/queries/list-repositories.d.ts +3 -0
  367. package/dist/treedx/client/support/queries/treedx/transport/queries/list-repositories.js +7 -0
  368. package/dist/treedx/client/support/retirement/cleanup-artifacts.d.ts +3 -0
  369. package/dist/treedx/client/support/retirement/cleanup-artifacts.js +7 -0
  370. package/dist/treedx/client/support/retirement/delete-artifact.d.ts +3 -0
  371. package/dist/treedx/client/support/retirement/delete-artifact.js +7 -0
  372. package/dist/treedx/client/support/retirement/delete-file.d.ts +3 -0
  373. package/dist/treedx/client/support/retirement/delete-file.js +10 -0
  374. package/dist/treedx/client/support/retirement/rollback-storage-migration.d.ts +3 -0
  375. package/dist/treedx/client/support/retirement/rollback-storage-migration.js +7 -0
  376. package/dist/treedx/client/support/updates/patch-file.d.ts +3 -0
  377. package/dist/treedx/client/support/updates/patch-file.js +10 -0
  378. package/dist/treedx/client/support/updates/refresh-search-index.d.ts +3 -0
  379. package/dist/treedx/client/support/updates/refresh-search-index.js +8 -0
  380. package/dist/treedx/client/treedx/blobs/contracts/download-blob.d.ts +3 -0
  381. package/dist/treedx/client/treedx/blobs/contracts/download-blob.js +6 -0
  382. package/dist/treedx/client/treedx/blobs/creation/create-blob-upload.d.ts +3 -0
  383. package/dist/treedx/client/treedx/blobs/creation/create-blob-upload.js +8 -0
  384. package/dist/treedx/client/treedx/blobs/creation/request-blob-download.d.ts +3 -0
  385. package/dist/treedx/client/treedx/blobs/creation/request-blob-download.js +27 -0
  386. package/dist/treedx/client/treedx/blobs/creation/request-blob-upload.d.ts +3 -0
  387. package/dist/treedx/client/treedx/blobs/creation/request-blob-upload.js +41 -0
  388. package/dist/treedx/client/treedx/blobs/creation/upload-blob-part.d.ts +3 -0
  389. package/dist/treedx/client/treedx/blobs/creation/upload-blob-part.js +27 -0
  390. package/dist/treedx/client/treedx/blobs/creation/upload-blob.d.ts +3 -0
  391. package/dist/treedx/client/treedx/blobs/creation/upload-blob.js +6 -0
  392. package/dist/treedx/client/treedx/blobs/creation/write-blob.d.ts +3 -0
  393. package/dist/treedx/client/treedx/blobs/creation/write-blob.js +8 -0
  394. package/dist/treedx/client/treedx/blobs/lifecycle/complete-blob-upload.d.ts +3 -0
  395. package/dist/treedx/client/treedx/blobs/lifecycle/complete-blob-upload.js +8 -0
  396. package/dist/treedx/client/treedx/blobs/queries/read-blob.d.ts +3 -0
  397. package/dist/treedx/client/treedx/blobs/queries/read-blob.js +10 -0
  398. package/dist/treedx/client/treedx/blobs/retirement/abort-blob-upload.d.ts +3 -0
  399. package/dist/treedx/client/treedx/blobs/retirement/abort-blob-upload.js +7 -0
  400. package/dist/treedx/client/treedx/blobs/retirement/delete-blob.d.ts +3 -0
  401. package/dist/treedx/client/treedx/blobs/retirement/delete-blob.js +8 -0
  402. package/dist/treedx/client/treedx/federation/contracts/federated-query.d.ts +3 -0
  403. package/dist/treedx/client/treedx/federation/contracts/federated-query.js +7 -0
  404. package/dist/treedx/client/treedx/federation/creation/plan-federated-query.d.ts +3 -0
  405. package/dist/treedx/client/treedx/federation/creation/plan-federated-query.js +6 -0
  406. package/dist/treedx/client/treedx/federation/queries/check-mirror-health.d.ts +3 -0
  407. package/dist/treedx/client/treedx/federation/queries/check-mirror-health.js +7 -0
  408. package/dist/treedx/client/treedx/federation/updates/promote-mirror.d.ts +3 -0
  409. package/dist/treedx/client/treedx/federation/updates/promote-mirror.js +7 -0
  410. package/dist/treedx/client/treedx/federation/updates/sync-mirror.d.ts +3 -0
  411. package/dist/treedx/client/treedx/federation/updates/sync-mirror.js +7 -0
  412. package/dist/treedx/client/treedx/graph/contracts/federated-context.d.ts +3 -0
  413. package/dist/treedx/client/treedx/graph/contracts/federated-context.js +7 -0
  414. package/dist/treedx/client/treedx/graph/contracts/federated-graph.d.ts +3 -0
  415. package/dist/treedx/client/treedx/graph/contracts/federated-graph.js +7 -0
  416. package/dist/treedx/client/treedx/graph/contracts/graph-search.d.ts +3 -0
  417. package/dist/treedx/client/treedx/graph/contracts/graph-search.js +8 -0
  418. package/dist/treedx/client/treedx/graph/queries/get-graph-node.d.ts +3 -0
  419. package/dist/treedx/client/treedx/graph/queries/get-graph-node.js +10 -0
  420. package/dist/treedx/client/treedx/graph/queries/get-graph-refresh-job.d.ts +3 -0
  421. package/dist/treedx/client/treedx/graph/queries/get-graph-refresh-job.js +7 -0
  422. package/dist/treedx/client/treedx/graph/queries/get-subgraph.d.ts +3 -0
  423. package/dist/treedx/client/treedx/graph/queries/get-subgraph.js +7 -0
  424. package/dist/treedx/client/treedx/graph/queries/query-graph.d.ts +3 -0
  425. package/dist/treedx/client/treedx/graph/queries/query-graph.js +7 -0
  426. package/dist/treedx/client/treedx/graph/queries/search-graph-entities.d.ts +3 -0
  427. package/dist/treedx/client/treedx/graph/queries/search-graph-entities.js +6 -0
  428. package/dist/treedx/client/treedx/graph/queries/search-graph-files.d.ts +3 -0
  429. package/dist/treedx/client/treedx/graph/queries/search-graph-files.js +6 -0
  430. package/dist/treedx/client/treedx/graph/queries/search-graph-sections.d.ts +3 -0
  431. package/dist/treedx/client/treedx/graph/queries/search-graph-sections.js +6 -0
  432. package/dist/treedx/client/treedx/graph/updates/refresh-graph.d.ts +3 -0
  433. package/dist/treedx/client/treedx/graph/updates/refresh-graph.js +7 -0
  434. package/dist/treedx/client/treedx/search/contracts/federated-search.d.ts +3 -0
  435. package/dist/treedx/client/treedx/search/contracts/federated-search.js +7 -0
  436. package/dist/treedx/client/treedx/workspaces/creation/create-workspace.d.ts +3 -0
  437. package/dist/treedx/client/treedx/workspaces/creation/create-workspace.js +7 -0
  438. package/dist/treedx/client/treedx/workspaces/retirement/abandon-workspace.d.ts +3 -0
  439. package/dist/treedx/client/treedx/workspaces/retirement/abandon-workspace.js +12 -0
  440. package/dist/treedx/client/treedx/workspaces/retirement/close-workspace.d.ts +2 -0
  441. package/dist/treedx/client/treedx/workspaces/retirement/close-workspace.js +6 -0
  442. package/dist/treedx/generated/openapi-types.d.ts +104 -0
  443. package/dist/treedx/support/client.d.ts +251 -0
  444. package/dist/treedx/support/client.js +252 -0
  445. package/dist/treedx/support/errors.d.ts +13 -0
  446. package/dist/treedx/types/tree-dx-actor.d.ts +209 -0
  447. package/dist/treedx/types/tree-dx-actor.js +8 -0
  448. package/dist/treedx/types/tree-dx-artifact-list-response.d.ts +13 -0
  449. package/dist/treedx/types/tree-dx-artifact-list-response.js +0 -0
  450. package/dist/treedx/types/tree-dx-changeset.d.ts +51 -0
  451. package/dist/treedx/types/tree-dx-changeset.js +6 -0
  452. package/dist/treedx/types/tree-dx-context-request.d.ts +245 -0
  453. package/dist/treedx/types/tree-dx-context-request.js +0 -0
  454. package/dist/treedx/types/tree-dx-exec-result.d.ts +249 -0
  455. package/dist/treedx/types/tree-dx-exec-result.js +0 -0
  456. package/dist/treedx/types/tree-dx-list-tree-request.d.ts +222 -0
  457. package/dist/treedx/types/tree-dx-list-tree-request.js +0 -0
  458. package/dist/treedx/types/tree-dx-push-request.d.ts +229 -0
  459. package/dist/treedx/types/tree-dx-push-request.js +0 -0
  460. package/dist/treedx/types.d.ts +7 -1084
  461. package/dist/treedx/types.js +7 -8
  462. package/dist/types/agents/agent-activity-profile.d.ts +267 -0
  463. package/dist/types/agents/agent-activity-profile.js +0 -0
  464. package/dist/types/agents/agent-trigger-kinds.d.ts +189 -0
  465. package/dist/types/agents/agent-trigger-kinds.js +107 -0
  466. package/dist/types/agents/execution-run-ref.d.ts +136 -0
  467. package/dist/types/agents/execution-run-ref.js +0 -0
  468. package/dist/types/agents.d.ts +3 -493
  469. package/dist/types/agents.js +3 -95
  470. package/package.json +77 -362
  471. package/dist/agent-capacity.d.ts +0 -1100
  472. package/dist/agent-capacity.js +0 -1822
  473. package/dist/agent-tools.d.ts +0 -37
  474. package/dist/agent-tools.js +0 -301
  475. package/dist/api/app.d.ts +0 -8
  476. package/dist/api/app.js +0 -404
  477. package/dist/api/auth/d1-database.d.ts +0 -3
  478. package/dist/api/auth/d1-database.js +0 -20
  479. package/dist/api/auth/d1-provider.d.ts +0 -85
  480. package/dist/api/auth/d1-provider.js +0 -95
  481. package/dist/api/auth/d1-store.d.ts +0 -121
  482. package/dist/api/auth/d1-store.js +0 -990
  483. package/dist/api/auth/memory-provider.d.ts +0 -82
  484. package/dist/api/auth/memory-provider.js +0 -297
  485. package/dist/api/auth/rbac.d.ts +0 -22
  486. package/dist/api/auth/rbac.js +0 -162
  487. package/dist/api/auth/tokens.d.ts +0 -18
  488. package/dist/api/auth/tokens.js +0 -56
  489. package/dist/api/config.d.ts +0 -4
  490. package/dist/api/config.js +0 -149
  491. package/dist/api/http.d.ts +0 -28
  492. package/dist/api/http.js +0 -51
  493. package/dist/api/index.d.ts +0 -10
  494. package/dist/api/index.js +0 -29
  495. package/dist/api/operations-routes.d.ts +0 -11
  496. package/dist/api/operations-routes.js +0 -39
  497. package/dist/api/operations.d.ts +0 -3
  498. package/dist/api/operations.js +0 -26
  499. package/dist/api/providers.d.ts +0 -2
  500. package/dist/api/providers.js +0 -85
  501. package/dist/api/railway.d.ts +0 -53
  502. package/dist/api/railway.js +0 -71
  503. package/dist/api/sdk-dispatch.d.ts +0 -6
  504. package/dist/api/sdk-dispatch.js +0 -14
  505. package/dist/api/sdk-routes.d.ts +0 -11
  506. package/dist/api/sdk-routes.js +0 -29
  507. package/dist/api/templates.d.ts +0 -3
  508. package/dist/api/templates.js +0 -31
  509. package/dist/api/types.d.ts +0 -238
  510. package/dist/capacity-provider.d.ts +0 -494
  511. package/dist/capacity-provider.js +0 -727
  512. package/dist/capacity.d.ts +0 -483
  513. package/dist/capacity.js +0 -2331
  514. package/dist/cli-tools.d.ts +0 -3
  515. package/dist/cli-tools.js +0 -46
  516. package/dist/content-operations.d.ts +0 -97
  517. package/dist/content-operations.js +0 -250
  518. package/dist/content-store.d.ts +0 -25
  519. package/dist/content-store.js +0 -269
  520. package/dist/control-plane-client.d.ts +0 -203
  521. package/dist/control-plane-client.js +0 -540
  522. package/dist/control-plane.d.ts +0 -101
  523. package/dist/control-plane.js +0 -201
  524. package/dist/copilot.d.ts +0 -18
  525. package/dist/copilot.js +0 -90
  526. package/dist/d1-http.d.ts +0 -38
  527. package/dist/d1-http.js +0 -95
  528. package/dist/d1-store.d.ts +0 -336
  529. package/dist/d1-store.js +0 -1431
  530. package/dist/db/d1.d.ts +0 -246
  531. package/dist/db/d1.js +0 -8
  532. package/dist/db/index.d.ts +0 -3
  533. package/dist/db/index.js +0 -3
  534. package/dist/db/market-schema.d.ts +0 -83651
  535. package/dist/db/market-schema.js +0 -3725
  536. package/dist/db/node-sqlite.d.ts +0 -297
  537. package/dist/db/node-sqlite.js +0 -133
  538. package/dist/db/schema.d.ts +0 -483
  539. package/dist/db/schema.js +0 -29
  540. package/dist/dispatch.d.ts +0 -4
  541. package/dist/dispatch.js +0 -174
  542. package/dist/field-aliases.d.ts +0 -11
  543. package/dist/fixture-support.d.ts +0 -24
  544. package/dist/fixture-support.js +0 -385
  545. package/dist/frontmatter.d.ts +0 -6
  546. package/dist/frontmatter.js +0 -33
  547. package/dist/git-runtime.d.ts +0 -16
  548. package/dist/git-runtime.js +0 -69
  549. package/dist/governance.d.ts +0 -133
  550. package/dist/governance.js +0 -285
  551. package/dist/graph/build.d.ts +0 -19
  552. package/dist/graph/build.js +0 -949
  553. package/dist/graph/dsl.d.ts +0 -2
  554. package/dist/graph/dsl.js +0 -243
  555. package/dist/graph/query.d.ts +0 -47
  556. package/dist/graph/query.js +0 -447
  557. package/dist/graph/ranking.d.ts +0 -3
  558. package/dist/graph/ranking.js +0 -483
  559. package/dist/graph/schema.d.ts +0 -142
  560. package/dist/graph/schema.js +0 -137
  561. package/dist/graph.d.ts +0 -52
  562. package/dist/graph.js +0 -133
  563. package/dist/guarantees/index.d.ts +0 -512
  564. package/dist/guarantees/index.js +0 -1782
  565. package/dist/hosting/apps.d.ts +0 -12
  566. package/dist/hosting/apps.js +0 -107
  567. package/dist/hosting/builtins.d.ts +0 -25
  568. package/dist/hosting/builtins.js +0 -685
  569. package/dist/hosting/contracts.d.ts +0 -190
  570. package/dist/hosting/graph.d.ts +0 -110
  571. package/dist/hosting/graph.js +0 -993
  572. package/dist/hosting/index.d.ts +0 -4
  573. package/dist/hosting/index.js +0 -4
  574. package/dist/index.d.ts +0 -88
  575. package/dist/index.js +0 -757
  576. package/dist/local-dev/managed-dev.d.ts +0 -85
  577. package/dist/local-dev/managed-dev.js +0 -431
  578. package/dist/managed-dependencies.d.ts +0 -91
  579. package/dist/managed-dependencies.js +0 -1186
  580. package/dist/market-client.d.ts +0 -831
  581. package/dist/market-client.js +0 -1219
  582. package/dist/model-registry.d.ts +0 -8
  583. package/dist/model-registry.js +0 -674
  584. package/dist/operations/agent-tools.d.ts +0 -105
  585. package/dist/operations/agent-tools.js +0 -171
  586. package/dist/operations/providers/default.d.ts +0 -10
  587. package/dist/operations/providers/default.js +0 -1245
  588. package/dist/operations/repository-operations.d.ts +0 -158
  589. package/dist/operations/repository-operations.js +0 -851
  590. package/dist/operations/runtime.d.ts +0 -7
  591. package/dist/operations/runtime.js +0 -61
  592. package/dist/operations/services/bootstrap-runner.d.ts +0 -39
  593. package/dist/operations/services/bootstrap-runner.js +0 -191
  594. package/dist/operations/services/build-warning-policy.d.ts +0 -34
  595. package/dist/operations/services/build-warning-policy.js +0 -91
  596. package/dist/operations/services/commit-message-provider.d.ts +0 -65
  597. package/dist/operations/services/commit-message-provider.js +0 -496
  598. package/dist/operations/services/config-runtime.d.ts +0 -558
  599. package/dist/operations/services/config-runtime.js +0 -3494
  600. package/dist/operations/services/d1-migration.d.ts +0 -6
  601. package/dist/operations/services/d1-migration.js +0 -120
  602. package/dist/operations/services/deploy.d.ts +0 -645
  603. package/dist/operations/services/deploy.js +0 -3826
  604. package/dist/operations/services/deployment-readiness.d.ts +0 -30
  605. package/dist/operations/services/deployment-readiness.js +0 -217
  606. package/dist/operations/services/export-runtime.d.ts +0 -18
  607. package/dist/operations/services/export-runtime.js +0 -140
  608. package/dist/operations/services/git-remote-policy.d.ts +0 -9
  609. package/dist/operations/services/git-remote-policy.js +0 -63
  610. package/dist/operations/services/git-runner.d.ts +0 -68
  611. package/dist/operations/services/git-runner.js +0 -500
  612. package/dist/operations/services/git-workflow.d.ts +0 -255
  613. package/dist/operations/services/git-workflow.js +0 -845
  614. package/dist/operations/services/github-actions-verification.d.ts +0 -148
  615. package/dist/operations/services/github-actions-verification.js +0 -589
  616. package/dist/operations/services/github-api.d.ts +0 -279
  617. package/dist/operations/services/github-api.js +0 -936
  618. package/dist/operations/services/github-automation.d.ts +0 -230
  619. package/dist/operations/services/github-automation.js +0 -520
  620. package/dist/operations/services/github-credentials.d.ts +0 -13
  621. package/dist/operations/services/github-credentials.js +0 -59
  622. package/dist/operations/services/hosted-service-checks.d.ts +0 -82
  623. package/dist/operations/services/hosted-service-checks.js +0 -527
  624. package/dist/operations/services/hosting-audit.d.ts +0 -69
  625. package/dist/operations/services/hosting-audit.js +0 -638
  626. package/dist/operations/services/hub-launch.d.ts +0 -182
  627. package/dist/operations/services/hub-launch.js +0 -309
  628. package/dist/operations/services/hub-provider-launch.d.ts +0 -160
  629. package/dist/operations/services/hub-provider-launch.js +0 -1056
  630. package/dist/operations/services/key-agent.d.ts +0 -137
  631. package/dist/operations/services/key-agent.js +0 -641
  632. package/dist/operations/services/live-hosted-service-checks.d.ts +0 -30
  633. package/dist/operations/services/live-hosted-service-checks.js +0 -611
  634. package/dist/operations/services/local-cleanup.d.ts +0 -30
  635. package/dist/operations/services/local-cleanup.js +0 -77
  636. package/dist/operations/services/local-dev.d.ts +0 -8
  637. package/dist/operations/services/local-dev.js +0 -97
  638. package/dist/operations/services/managed-host-security.d.ts +0 -13
  639. package/dist/operations/services/managed-host-security.js +0 -56
  640. package/dist/operations/services/managed-repositories.d.ts +0 -37
  641. package/dist/operations/services/managed-repositories.js +0 -177
  642. package/dist/operations/services/market-packaging.d.ts +0 -59
  643. package/dist/operations/services/market-packaging.js +0 -234
  644. package/dist/operations/services/operations-runner-smoke.d.ts +0 -31
  645. package/dist/operations/services/operations-runner-smoke.js +0 -212
  646. package/dist/operations/services/package-adapters.d.ts +0 -184
  647. package/dist/operations/services/package-adapters.js +0 -912
  648. package/dist/operations/services/package-artifacts.d.ts +0 -37
  649. package/dist/operations/services/package-artifacts.js +0 -99
  650. package/dist/operations/services/package-reference-policy.d.ts +0 -64
  651. package/dist/operations/services/package-reference-policy.js +0 -364
  652. package/dist/operations/services/project-host-operations.d.ts +0 -153
  653. package/dist/operations/services/project-host-operations.js +0 -365
  654. package/dist/operations/services/project-platform.d.ts +0 -727
  655. package/dist/operations/services/project-platform.js +0 -1603
  656. package/dist/operations/services/project-web-monitor.d.ts +0 -15
  657. package/dist/operations/services/project-web-monitor.js +0 -377
  658. package/dist/operations/services/railway-api.d.ts +0 -494
  659. package/dist/operations/services/railway-api.js +0 -1874
  660. package/dist/operations/services/railway-cli.d.ts +0 -47
  661. package/dist/operations/services/railway-cli.js +0 -142
  662. package/dist/operations/services/railway-deploy.d.ts +0 -161
  663. package/dist/operations/services/railway-deploy.js +0 -1808
  664. package/dist/operations/services/railway-source-policy.d.ts +0 -25
  665. package/dist/operations/services/railway-source-policy.js +0 -111
  666. package/dist/operations/services/release-history.d.ts +0 -59
  667. package/dist/operations/services/release-history.js +0 -158
  668. package/dist/operations/services/release-proof-ledger.d.ts +0 -13
  669. package/dist/operations/services/release-proof-ledger.js +0 -81
  670. package/dist/operations/services/release-proof-planner.d.ts +0 -48
  671. package/dist/operations/services/release-proof-planner.js +0 -195
  672. package/dist/operations/services/release-proof-runner.d.ts +0 -16
  673. package/dist/operations/services/release-proof-runner.js +0 -169
  674. package/dist/operations/services/release-proof.d.ts +0 -81
  675. package/dist/operations/services/release-proof.js +0 -79
  676. package/dist/operations/services/repository-save-orchestrator.d.ts +0 -193
  677. package/dist/operations/services/repository-save-orchestrator.js +0 -2110
  678. package/dist/operations/services/runtime-paths.d.ts +0 -19
  679. package/dist/operations/services/runtime-paths.js +0 -54
  680. package/dist/operations/services/runtime-tools.d.ts +0 -35
  681. package/dist/operations/services/runtime-tools.js +0 -212
  682. package/dist/operations/services/save-deploy-preflight.d.ts +0 -32
  683. package/dist/operations/services/save-deploy-preflight.js +0 -82
  684. package/dist/operations/services/template-host-bindings.d.ts +0 -68
  685. package/dist/operations/services/template-host-bindings.js +0 -401
  686. package/dist/operations/services/template-registry.d.ts +0 -110
  687. package/dist/operations/services/template-registry.js +0 -595
  688. package/dist/operations/services/template-secret-sync.d.ts +0 -97
  689. package/dist/operations/services/template-secret-sync.js +0 -292
  690. package/dist/operations/services/verification-cache.d.ts +0 -25
  691. package/dist/operations/services/verification-cache.js +0 -71
  692. package/dist/operations/services/watch-dev.d.ts +0 -21
  693. package/dist/operations/services/watch-dev.js +0 -282
  694. package/dist/operations/services/workflow-timing.d.ts +0 -25
  695. package/dist/operations/services/workflow-timing.js +0 -79
  696. package/dist/operations/services/workspace-dependency-mode.d.ts +0 -74
  697. package/dist/operations/services/workspace-dependency-mode.js +0 -478
  698. package/dist/operations/services/workspace-preflight.d.ts +0 -40
  699. package/dist/operations/services/workspace-preflight.js +0 -172
  700. package/dist/operations/services/workspace-save-script.d.ts +0 -26
  701. package/dist/operations/services/workspace-save-script.js +0 -50
  702. package/dist/operations/services/workspace-save.d.ts +0 -76
  703. package/dist/operations/services/workspace-save.js +0 -453
  704. package/dist/operations/services/workspace-tools.d.ts +0 -17
  705. package/dist/operations/services/workspace-tools.js +0 -320
  706. package/dist/operations-registry.d.ts +0 -5
  707. package/dist/operations-registry.js +0 -98
  708. package/dist/operations-types.d.ts +0 -75
  709. package/dist/operations-types.js +0 -17
  710. package/dist/operations.d.ts +0 -17
  711. package/dist/operations.js +0 -114
  712. package/dist/platform/book-export.d.ts +0 -78
  713. package/dist/platform/book-export.js +0 -451
  714. package/dist/platform/books-data.d.ts +0 -28
  715. package/dist/platform/books-data.js +0 -111
  716. package/dist/platform/config.d.ts +0 -27
  717. package/dist/platform/config.js +0 -100
  718. package/dist/platform/content-runtime-source.d.ts +0 -54
  719. package/dist/platform/content-runtime-source.js +0 -169
  720. package/dist/platform/contracts.d.ts +0 -361
  721. package/dist/platform/deploy-config.d.ts +0 -17
  722. package/dist/platform/deploy-config.js +0 -731
  723. package/dist/platform/deploy-runtime.d.ts +0 -22
  724. package/dist/platform/deploy-runtime.js +0 -93
  725. package/dist/platform/desired-state.d.ts +0 -66
  726. package/dist/platform/desired-state.js +0 -1071
  727. package/dist/platform/env.yaml +0 -1126
  728. package/dist/platform/environment.d.ts +0 -159
  729. package/dist/platform/environment.js +0 -778
  730. package/dist/platform/local-content-materialization.d.ts +0 -9
  731. package/dist/platform/local-content-materialization.js +0 -212
  732. package/dist/platform/plugin.d.ts +0 -103
  733. package/dist/platform/plugin.js +0 -6
  734. package/dist/platform/plugins/constants.d.ts +0 -26
  735. package/dist/platform/plugins/constants.js +0 -33
  736. package/dist/platform/plugins/runtime.d.ts +0 -41
  737. package/dist/platform/plugins/runtime.js +0 -257
  738. package/dist/platform/plugins.d.ts +0 -6
  739. package/dist/platform/plugins.js +0 -42
  740. package/dist/platform/published-content-pipeline.d.ts +0 -84
  741. package/dist/platform/published-content-pipeline.js +0 -547
  742. package/dist/platform/published-content.d.ts +0 -224
  743. package/dist/platform/published-content.js +0 -611
  744. package/dist/platform/site-config-schema.d.ts +0 -1
  745. package/dist/platform/site-config-schema.js +0 -4
  746. package/dist/platform/tenant/runtime-config.d.ts +0 -154
  747. package/dist/platform/tenant/runtime-config.js +0 -69
  748. package/dist/platform/tenant-config.d.ts +0 -8
  749. package/dist/platform/tenant-config.js +0 -207
  750. package/dist/platform/utils/site-config-schema.d.ts +0 -154
  751. package/dist/platform/utils/site-config-schema.js +0 -450
  752. package/dist/platform-operation-store.d.ts +0 -94
  753. package/dist/platform-operation-store.js +0 -531
  754. package/dist/platform-operations.d.ts +0 -273
  755. package/dist/platform-operations.js +0 -440
  756. package/dist/plugin-default.d.ts +0 -28
  757. package/dist/plugin-default.js +0 -55
  758. package/dist/project-import.d.ts +0 -91
  759. package/dist/project-import.js +0 -257
  760. package/dist/project-workflow.d.ts +0 -233
  761. package/dist/project-workflow.js +0 -82
  762. package/dist/reconcile/bootstrap-systems.d.ts +0 -32
  763. package/dist/reconcile/bootstrap-systems.js +0 -175
  764. package/dist/reconcile/builtin-adapters.d.ts +0 -9
  765. package/dist/reconcile/builtin-adapters.js +0 -5545
  766. package/dist/reconcile/contracts.d.ts +0 -172
  767. package/dist/reconcile/desired-state.d.ts +0 -10
  768. package/dist/reconcile/desired-state.js +0 -322
  769. package/dist/reconcile/engine.d.ts +0 -118
  770. package/dist/reconcile/engine.js +0 -645
  771. package/dist/reconcile/errors.d.ts +0 -5
  772. package/dist/reconcile/errors.js +0 -13
  773. package/dist/reconcile/index.d.ts +0 -10
  774. package/dist/reconcile/index.js +0 -10
  775. package/dist/reconcile/live-acceptance.d.ts +0 -100
  776. package/dist/reconcile/live-acceptance.js +0 -2018
  777. package/dist/reconcile/platform.d.ts +0 -104
  778. package/dist/reconcile/platform.js +0 -100
  779. package/dist/reconcile/providers/docker-private.d.ts +0 -54
  780. package/dist/reconcile/providers/docker-private.js +0 -101
  781. package/dist/reconcile/providers/github-private.d.ts +0 -69
  782. package/dist/reconcile/providers/github-private.js +0 -145
  783. package/dist/reconcile/providers/local-private.d.ts +0 -28
  784. package/dist/reconcile/providers/local-private.js +0 -75
  785. package/dist/reconcile/providers/railway-iac.d.ts +0 -220
  786. package/dist/reconcile/providers/railway-iac.js +0 -621
  787. package/dist/reconcile/providers/release-private.d.ts +0 -89
  788. package/dist/reconcile/providers/release-private.js +0 -140
  789. package/dist/reconcile/registry.d.ts +0 -7
  790. package/dist/reconcile/registry.js +0 -79
  791. package/dist/reconcile/state.d.ts +0 -7
  792. package/dist/reconcile/state.js +0 -270
  793. package/dist/reconcile/units.d.ts +0 -6
  794. package/dist/reconcile/units.js +0 -72
  795. package/dist/remote.d.ts +0 -244
  796. package/dist/remote.js +0 -284
  797. package/dist/scenes/artifacts.d.ts +0 -16
  798. package/dist/scenes/artifacts.js +0 -61
  799. package/dist/scenes/auth.d.ts +0 -2
  800. package/dist/scenes/auth.js +0 -28
  801. package/dist/scenes/base-url.d.ts +0 -12
  802. package/dist/scenes/base-url.js +0 -123
  803. package/dist/scenes/builtin-plugins.d.ts +0 -2
  804. package/dist/scenes/builtin-plugins.js +0 -499
  805. package/dist/scenes/checkpoints.d.ts +0 -14
  806. package/dist/scenes/checkpoints.js +0 -33
  807. package/dist/scenes/device-matrix.d.ts +0 -2
  808. package/dist/scenes/device-matrix.js +0 -100
  809. package/dist/scenes/devices.d.ts +0 -11
  810. package/dist/scenes/devices.js +0 -40
  811. package/dist/scenes/diagnostics.d.ts +0 -5
  812. package/dist/scenes/diagnostics.js +0 -22
  813. package/dist/scenes/diagram-providers.d.ts +0 -2
  814. package/dist/scenes/diagram-providers.js +0 -181
  815. package/dist/scenes/diagram-validation.d.ts +0 -22
  816. package/dist/scenes/diagram-validation.js +0 -74
  817. package/dist/scenes/environment.d.ts +0 -2
  818. package/dist/scenes/environment.js +0 -65
  819. package/dist/scenes/evidence-bundle.d.ts +0 -5
  820. package/dist/scenes/evidence-bundle.js +0 -42
  821. package/dist/scenes/evidence-report.d.ts +0 -10
  822. package/dist/scenes/evidence-report.js +0 -73
  823. package/dist/scenes/evidence.d.ts +0 -16
  824. package/dist/scenes/evidence.js +0 -277
  825. package/dist/scenes/index.d.ts +0 -48
  826. package/dist/scenes/index.js +0 -312
  827. package/dist/scenes/inspect.d.ts +0 -9
  828. package/dist/scenes/inspect.js +0 -64
  829. package/dist/scenes/loader.d.ts +0 -3
  830. package/dist/scenes/loader.js +0 -38
  831. package/dist/scenes/logs.d.ts +0 -2
  832. package/dist/scenes/logs.js +0 -47
  833. package/dist/scenes/operations.d.ts +0 -3
  834. package/dist/scenes/operations.js +0 -128
  835. package/dist/scenes/phase0.d.ts +0 -9
  836. package/dist/scenes/phase0.js +0 -637
  837. package/dist/scenes/planner.d.ts +0 -12
  838. package/dist/scenes/planner.js +0 -166
  839. package/dist/scenes/playwright-adapter.d.ts +0 -2
  840. package/dist/scenes/playwright-adapter.js +0 -63
  841. package/dist/scenes/plugins.d.ts +0 -5
  842. package/dist/scenes/plugins.js +0 -115
  843. package/dist/scenes/progress.d.ts +0 -17
  844. package/dist/scenes/progress.js +0 -24
  845. package/dist/scenes/publish-destinations.d.ts +0 -12
  846. package/dist/scenes/publish-destinations.js +0 -99
  847. package/dist/scenes/publish-plan-report.d.ts +0 -10
  848. package/dist/scenes/publish-plan-report.js +0 -70
  849. package/dist/scenes/publish-plan.d.ts +0 -15
  850. package/dist/scenes/publish-plan.js +0 -248
  851. package/dist/scenes/publish-redaction.d.ts +0 -16
  852. package/dist/scenes/publish-redaction.js +0 -148
  853. package/dist/scenes/publish-release-record.d.ts +0 -13
  854. package/dist/scenes/publish-release-record.js +0 -34
  855. package/dist/scenes/publish-report.d.ts +0 -10
  856. package/dist/scenes/publish-report.js +0 -67
  857. package/dist/scenes/publish.d.ts +0 -16
  858. package/dist/scenes/publish.js +0 -298
  859. package/dist/scenes/registry.d.ts +0 -12
  860. package/dist/scenes/registry.js +0 -65
  861. package/dist/scenes/remotion-adapter.d.ts +0 -3
  862. package/dist/scenes/remotion-adapter.js +0 -94
  863. package/dist/scenes/remotion-composition-registry.d.ts +0 -2
  864. package/dist/scenes/remotion-composition-registry.js +0 -12
  865. package/dist/scenes/remotion-compositions.d.ts +0 -15
  866. package/dist/scenes/remotion-compositions.js +0 -464
  867. package/dist/scenes/remotion-diagrams.d.ts +0 -9
  868. package/dist/scenes/remotion-diagrams.js +0 -188
  869. package/dist/scenes/remotion-input.d.ts +0 -13
  870. package/dist/scenes/remotion-input.js +0 -291
  871. package/dist/scenes/remotion-visuals.d.ts +0 -29
  872. package/dist/scenes/remotion-visuals.js +0 -198
  873. package/dist/scenes/render-media-assets.d.ts +0 -9
  874. package/dist/scenes/render-media-assets.js +0 -117
  875. package/dist/scenes/render-report.d.ts +0 -10
  876. package/dist/scenes/render-report.js +0 -27
  877. package/dist/scenes/render.d.ts +0 -2
  878. package/dist/scenes/render.js +0 -218
  879. package/dist/scenes/reporter.d.ts +0 -3
  880. package/dist/scenes/reporter.js +0 -101
  881. package/dist/scenes/resume.d.ts +0 -2
  882. package/dist/scenes/resume.js +0 -79
  883. package/dist/scenes/runner.d.ts +0 -2
  884. package/dist/scenes/runner.js +0 -687
  885. package/dist/scenes/schema.d.ts +0 -6
  886. package/dist/scenes/schema.js +0 -1023
  887. package/dist/scenes/seed.d.ts +0 -2
  888. package/dist/scenes/seed.js +0 -83
  889. package/dist/scenes/segments.d.ts +0 -15
  890. package/dist/scenes/segments.js +0 -79
  891. package/dist/scenes/selectors.d.ts +0 -3
  892. package/dist/scenes/selectors.js +0 -21
  893. package/dist/scenes/timeline.d.ts +0 -11
  894. package/dist/scenes/timeline.js +0 -26
  895. package/dist/scenes/timeouts.d.ts +0 -6
  896. package/dist/scenes/timeouts.js +0 -17
  897. package/dist/scenes/training-captions.d.ts +0 -14
  898. package/dist/scenes/training-captions.js +0 -98
  899. package/dist/scenes/training-report.d.ts +0 -10
  900. package/dist/scenes/training-report.js +0 -78
  901. package/dist/scenes/training-transcript.d.ts +0 -24
  902. package/dist/scenes/training-transcript.js +0 -204
  903. package/dist/scenes/training.d.ts +0 -10
  904. package/dist/scenes/training.js +0 -134
  905. package/dist/scenes/types.d.ts +0 -1900
  906. package/dist/scenes/types.js +0 -8
  907. package/dist/scenes/visual-audit-contact-sheets.d.ts +0 -6
  908. package/dist/scenes/visual-audit-contact-sheets.js +0 -119
  909. package/dist/scenes/visual-audit-fixtures.d.ts +0 -25
  910. package/dist/scenes/visual-audit-fixtures.js +0 -247
  911. package/dist/scenes/visual-audit-report.d.ts +0 -11
  912. package/dist/scenes/visual-audit-report.js +0 -85
  913. package/dist/scenes/visual-audit-review.d.ts +0 -23
  914. package/dist/scenes/visual-audit-review.js +0 -829
  915. package/dist/scenes/visual-audit-routes.d.ts +0 -13
  916. package/dist/scenes/visual-audit-routes.js +0 -308
  917. package/dist/scenes/visual-audit.d.ts +0 -3
  918. package/dist/scenes/visual-audit.js +0 -596
  919. package/dist/scripts/aggregate-book.js +0 -16
  920. package/dist/scripts/assert-release-tag-version.js +0 -23
  921. package/dist/scripts/build-dist.js +0 -294
  922. package/dist/scripts/build-tenant-worker.js +0 -36
  923. package/dist/scripts/check-build-warnings.js +0 -51
  924. package/dist/scripts/cleanup-markdown.js +0 -377
  925. package/dist/scripts/cli-test-fixtures.js +0 -44
  926. package/dist/scripts/config-treeseed.js +0 -131
  927. package/dist/scripts/deployment-readiness.js +0 -20
  928. package/dist/scripts/generate-treedx-openapi-types.js +0 -186
  929. package/dist/scripts/install-managed-dependencies.js +0 -12
  930. package/dist/scripts/key-agent.js +0 -165
  931. package/dist/scripts/local-dev.js +0 -129
  932. package/dist/scripts/migrate-journey-csv-to-guarantees.js +0 -140
  933. package/dist/scripts/operations-runner-smoke.js +0 -16
  934. package/dist/scripts/package-tools.js +0 -85
  935. package/dist/scripts/patch-starlight-content-path.js +0 -173
  936. package/dist/scripts/prepare.js +0 -10
  937. package/dist/scripts/publish-package.js +0 -29
  938. package/dist/scripts/release-verify.js +0 -105
  939. package/dist/scripts/run-fixture-astro-command.js +0 -18
  940. package/dist/scripts/scaffold-site.js +0 -66
  941. package/dist/scripts/sync-template.js +0 -20
  942. package/dist/scripts/template-catalog.test.js +0 -86
  943. package/dist/scripts/template-command.js +0 -31
  944. package/dist/scripts/tenant-astro-command.js +0 -3
  945. package/dist/scripts/tenant-build.js +0 -48
  946. package/dist/scripts/tenant-check.js +0 -10
  947. package/dist/scripts/tenant-d1-migrate-local.js +0 -15
  948. package/dist/scripts/tenant-deploy.js +0 -220
  949. package/dist/scripts/tenant-destroy.js +0 -112
  950. package/dist/scripts/tenant-dev.js +0 -160
  951. package/dist/scripts/tenant-lint.js +0 -4
  952. package/dist/scripts/tenant-test.js +0 -4
  953. package/dist/scripts/tenant-workflow-action.js +0 -101
  954. package/dist/scripts/test-cloudflare-local.js +0 -209
  955. package/dist/scripts/test-scaffold.js +0 -300
  956. package/dist/scripts/test-smoke.js +0 -137
  957. package/dist/scripts/treeseed-assert-release-tag-version.js +0 -21
  958. package/dist/scripts/treeseed-build-dist.js +0 -131
  959. package/dist/scripts/treeseed-publish-package.js +0 -19
  960. package/dist/scripts/treeseed-release-verify.js +0 -131
  961. package/dist/scripts/validate-templates.js +0 -6
  962. package/dist/scripts/verify-driver.js +0 -45
  963. package/dist/scripts/workflow-commands.test.js +0 -31
  964. package/dist/scripts/workspace-command-e2e.js +0 -718
  965. package/dist/scripts/workspace-lint.js +0 -15
  966. package/dist/scripts/workspace-preflight.js +0 -22
  967. package/dist/scripts/workspace-publish-changed-packages.js +0 -16
  968. package/dist/scripts/workspace-release-test.js +0 -104
  969. package/dist/scripts/workspace-release-verify.js +0 -81
  970. package/dist/scripts/workspace-save.js +0 -64
  971. package/dist/scripts/workspace-start-warning.js +0 -3
  972. package/dist/scripts/workspace-test-unit.js +0 -4
  973. package/dist/scripts/workspace-test.js +0 -17
  974. package/dist/sdk-dispatch.d.ts +0 -12
  975. package/dist/sdk-dispatch.js +0 -126
  976. package/dist/sdk-fields.d.ts +0 -11
  977. package/dist/sdk-filters.d.ts +0 -4
  978. package/dist/sdk-filters.js +0 -74
  979. package/dist/sdk-types.d.ts +0 -3868
  980. package/dist/sdk-types.js +0 -542
  981. package/dist/sdk-version.d.ts +0 -2
  982. package/dist/sdk-version.js +0 -42
  983. package/dist/sdk.d.ts +0 -266
  984. package/dist/sdk.js +0 -825
  985. package/dist/secrets-capability.d.ts +0 -421
  986. package/dist/secrets-capability.js +0 -530
  987. package/dist/seeds/errors.d.ts +0 -5
  988. package/dist/seeds/errors.js +0 -22
  989. package/dist/seeds/index.d.ts +0 -20
  990. package/dist/seeds/index.js +0 -53
  991. package/dist/seeds/loader.d.ts +0 -8
  992. package/dist/seeds/loader.js +0 -32
  993. package/dist/seeds/normalize.d.ts +0 -13
  994. package/dist/seeds/normalize.js +0 -282
  995. package/dist/seeds/planner.d.ts +0 -10
  996. package/dist/seeds/planner.js +0 -149
  997. package/dist/seeds/schema.d.ts +0 -2
  998. package/dist/seeds/schema.js +0 -893
  999. package/dist/seeds/types.d.ts +0 -312
  1000. package/dist/seeds/types.js +0 -12
  1001. package/dist/service-credentials.d.ts +0 -54
  1002. package/dist/service-credentials.js +0 -112
  1003. package/dist/stores/cursor-store.d.ts +0 -10
  1004. package/dist/stores/cursor-store.js +0 -164
  1005. package/dist/stores/envelopes.d.ts +0 -116
  1006. package/dist/stores/envelopes.js +0 -219
  1007. package/dist/stores/helpers.d.ts +0 -12
  1008. package/dist/stores/helpers.js +0 -42
  1009. package/dist/stores/lease-store.d.ts +0 -18
  1010. package/dist/stores/lease-store.js +0 -189
  1011. package/dist/stores/message-store.d.ts +0 -12
  1012. package/dist/stores/message-store.js +0 -273
  1013. package/dist/stores/operational-store.d.ts +0 -55
  1014. package/dist/stores/operational-store.js +0 -861
  1015. package/dist/stores/project-workflow-store.d.ts +0 -56
  1016. package/dist/stores/project-workflow-store.js +0 -482
  1017. package/dist/stores/run-store.d.ts +0 -9
  1018. package/dist/stores/run-store.js +0 -75
  1019. package/dist/stores/subscription-store.d.ts +0 -8
  1020. package/dist/stores/subscription-store.js +0 -73
  1021. package/dist/template-catalog.d.ts +0 -13
  1022. package/dist/template-catalog.js +0 -151
  1023. package/dist/template-launch-requirements.d.ts +0 -118
  1024. package/dist/template-launch-requirements.js +0 -768
  1025. package/dist/template-launch-ui.d.ts +0 -85
  1026. package/dist/template-launch-ui.js +0 -189
  1027. package/dist/timing.d.ts +0 -20
  1028. package/dist/timing.js +0 -73
  1029. package/dist/treedx/adapters.d.ts +0 -6
  1030. package/dist/treedx/adapters.js +0 -36
  1031. package/dist/treedx/client.d.ts +0 -222
  1032. package/dist/treedx/client.js +0 -871
  1033. package/dist/treedx/errors.d.ts +0 -13
  1034. package/dist/treedx/federated-client.d.ts +0 -27
  1035. package/dist/treedx/federated-client.js +0 -158
  1036. package/dist/treedx/graph-adapter.d.ts +0 -33
  1037. package/dist/treedx/graph-adapter.js +0 -156
  1038. package/dist/treedx/index.d.ts +0 -14
  1039. package/dist/treedx/index.js +0 -48
  1040. package/dist/treedx/market-integration.d.ts +0 -27
  1041. package/dist/treedx/market-integration.js +0 -131
  1042. package/dist/treedx/ports.d.ts +0 -166
  1043. package/dist/treedx/ports.js +0 -231
  1044. package/dist/treedx/query-adapter.d.ts +0 -19
  1045. package/dist/treedx/query-adapter.js +0 -62
  1046. package/dist/treedx/registry-client.d.ts +0 -11
  1047. package/dist/treedx/registry-client.js +0 -19
  1048. package/dist/treedx/repository-adapter.d.ts +0 -45
  1049. package/dist/treedx/repository-adapter.js +0 -319
  1050. package/dist/treedx/sdk-integration.d.ts +0 -27
  1051. package/dist/treedx/sdk-integration.js +0 -63
  1052. package/dist/treedx/workspace-adapter.d.ts +0 -27
  1053. package/dist/treedx/workspace-adapter.js +0 -65
  1054. package/dist/treedx-backends.d.ts +0 -220
  1055. package/dist/treedx-backends.js +0 -634
  1056. package/dist/treedx-client.d.ts +0 -89
  1057. package/dist/treedx-client.js +0 -184
  1058. package/dist/treeseed/services/compose.yml +0 -6
  1059. package/dist/treeseed/template-catalog/catalog.fixture.json +0 -707
  1060. package/dist/types/cloudflare.d.ts +0 -54
  1061. package/dist/verification.d.ts +0 -31
  1062. package/dist/verification.js +0 -430
  1063. package/dist/workflow/operations.d.ts +0 -1516
  1064. package/dist/workflow/operations.js +0 -7001
  1065. package/dist/workflow/policy.d.ts +0 -12
  1066. package/dist/workflow/policy.js +0 -70
  1067. package/dist/workflow/runs.d.ts +0 -143
  1068. package/dist/workflow/runs.js +0 -720
  1069. package/dist/workflow/session.d.ts +0 -34
  1070. package/dist/workflow/session.js +0 -160
  1071. package/dist/workflow/worktrees.d.ts +0 -43
  1072. package/dist/workflow/worktrees.js +0 -307
  1073. package/dist/workflow-state.d.ts +0 -250
  1074. package/dist/workflow-state.js +0 -844
  1075. package/dist/workflow-support.d.ts +0 -28
  1076. package/dist/workflow-support.js +0 -390
  1077. package/dist/workflow.d.ts +0 -327
  1078. package/dist/workflow.js +0 -140
  1079. package/drizzle/d1/0000_treeseed_d1.sql +0 -19
  1080. package/drizzle/market/0000_market_control_plane.sql +0 -3223
  1081. package/drizzle/market/0001_capacity_budget_mode_default.sql +0 -4
  1082. package/drizzle/market/0002_user_email_addresses.sql +0 -26
  1083. package/drizzle/market/0003_project_team_slug_unique.sql +0 -4
  1084. package/drizzle/market/0004_treedx_market_integration.sql +0 -99
  1085. package/drizzle/market/0005_agent_capacity_coordination.sql +0 -145
  1086. package/drizzle/market/0006_provider_assignment_lifecycle.sql +0 -9
  1087. package/drizzle/market/0007_agent_architecture_gap_closure.sql +0 -157
  1088. package/drizzle/market/0008_agent_capacity_operational_closure.sql +0 -27
  1089. package/drizzle/market/0009_agent_capacity_runtime_hardening.sql +0 -29
  1090. package/drizzle/market/0010_secrets_capability_persistence.sql +0 -130
  1091. package/drizzle/market/0011_github_app_adapter.sql +0 -47
  1092. package/drizzle/market/0012_workday_test_runs.sql +0 -44
  1093. package/drizzle/market/0013_runtime_task_lifecycle.sql +0 -39
  1094. package/drizzle/market/0014_governance_pipeline.sql +0 -189
  1095. package/drizzle/market/0015_agent_decision_assignment_graphs.sql +0 -60
  1096. package/scripts/verify-driver.ts +0 -51
  1097. package/templates/github/deploy-web.workflow.yml +0 -168
  1098. package/templates/github/hosted-project.workflow.yml +0 -76
  1099. /package/dist/{api/types.js → agent-capacity/contracts/capacity/workdays/workday-records.js} +0 -0
  1100. /package/dist/{hosting/contracts.js → agent-capacity/contracts/operations/workflow-promotion.js} +0 -0
  1101. /package/dist/{platform/contracts.js → agent-capacity/contracts/projects/agents/project-agent-class.js} +0 -0
  1102. /package/dist/{reconcile/contracts.js → agent-capacity/contracts/runtime/runtime-observability.js} +0 -0
  1103. /package/dist/{types/cloudflare.js → agent-capacity/contracts/support/decision-work.js} +0 -0
  1104. /package/dist/{field-aliases.js → entrypoints/models/field-aliases.js} +0 -0
  1105. /package/dist/{sdk-fields.js → entrypoints/models/sdk-fields.js} +0 -0
  1106. /package/dist/{runtime.d.ts → runtime/runtime.d.ts} +0 -0
  1107. /package/dist/{runtime.js → runtime/runtime.js} +0 -0
  1108. /package/dist/treedx/{errors.js → support/errors.js} +0 -0
@@ -1,1808 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { relative, resolve } from "node:path";
3
- import { parse as parseYaml } from "yaml";
4
- import { loadCliDeployConfig } from "./runtime-tools.js";
5
- import { resolveTreeseedMachineEnvironmentValues } from "./config-runtime.js";
6
- import { createPersistentDeployTarget, resolveTreeseedResourceIdentity } from "./deploy.js";
7
- import { classifyTreeseedGitMode, runTreeseedGitText } from "./git-runner.js";
8
- import { discoverTreeseedApplications } from "../../hosting/apps.js";
9
- import { apiRailwayDefaultDockerfilePath, apiRailwayDefaultSourceRepo, assertApiRailwaySourcePolicy, isApiRailwaySourcePolicyService, railwayEnvironmentQualifiedServiceName, railwayTreeDxServiceName } from "./railway-source-policy.js";
10
- import { runPrefixedCommand, sleep } from "./bootstrap-runner.js";
11
- import {
12
- ensureRailwayEnvironment,
13
- ensureRailwayProject,
14
- ensureRailwayService,
15
- ensureRailwayServiceInstanceConfiguration,
16
- ensureRailwayServiceVolume,
17
- deployRailwayServiceInstance,
18
- getRailwayServiceInstance,
19
- listRailwayEnvironments,
20
- listRailwayProjects,
21
- listRailwayServices,
22
- listRailwayVolumes,
23
- normalizeRailwayEnvironmentName,
24
- railwayGraphqlRequest,
25
- resolveRailwayApiToken,
26
- resolveRailwayApiUrl,
27
- resolveRailwayWorkspaceContext,
28
- upsertRailwayVariables
29
- } from "./railway-api.js";
30
- import { elapsedMs, formatDurationMs } from "../../timing.js";
31
- function normalizeScope(scope) {
32
- return scope === "prod" ? "prod" : scope === "staging" ? "staging" : "local";
33
- }
34
- function resolveRailwayEnvironmentForScope(scope, configuredEnvironment) {
35
- return normalizeRailwayEnvironmentName(configuredEnvironment || normalizeScope(scope));
36
- }
37
- const RAILWAY_SERVICE_KEYS = ["api", "operationsRunner", "capacityProviderManager", "capacityProviderRunner"];
38
- const HOSTED_PROJECT_SERVICE_KEYS = ["api"];
39
- const WORKER_RUNNER_BOOTSTRAP_INDEX = 1;
40
- const WORKER_RUNNER_VOLUME_MOUNT_PATH = "/data";
41
- const OPERATIONS_RUNNER_BOOTSTRAP_COUNT = 2;
42
- const PUBLIC_TREEDX_NODE_SERVICE_KEY_PREFIX = "public-treedx-node-";
43
- function isTreeseedOperationsRunnerResourceName(value) {
44
- const normalized = String(value ?? "").trim().toLowerCase();
45
- if (!normalized) {
46
- return false;
47
- }
48
- if (normalized.startsWith("market-ops")) {
49
- return true;
50
- }
51
- return normalized.includes("operations-runner");
52
- }
53
- function findStaleTreeseedOperationsRunnerResources(resources, desiredNames) {
54
- const desired = new Set([...desiredNames].map((value) => String(value ?? "").trim()).filter(Boolean));
55
- return resources.filter((resource) => {
56
- const name = String(resource?.name ?? "").trim();
57
- return name && isTreeseedOperationsRunnerResourceName(name) && !desired.has(name);
58
- });
59
- }
60
- function shouldManageRailwaySchedules(scope, phase = "deploy") {
61
- const environment = normalizeRailwayEnvironmentName(scope);
62
- return phase === "deploy" && (environment === "staging" || environment === "production");
63
- }
64
- function railwayServiceNameSuffix(serviceKey) {
65
- return serviceKey === "capacityProviderManager" ? "capacity-provider-manager" : serviceKey === "capacityProviderRunner" ? "capacity-provider-runner" : serviceKey === "workdayManager" ? "workday-manager" : serviceKey === "workerRunner" ? "worker-runner" : serviceKey === "operationsRunner" ? "operations-runner" : serviceKey;
66
- }
67
- function deriveRailwayWorkerRunnerServiceName(projectSlug, index = WORKER_RUNNER_BOOTSTRAP_INDEX) {
68
- const normalizedIndex = Math.max(1, Number.parseInt(String(index), 10) || WORKER_RUNNER_BOOTSTRAP_INDEX);
69
- return `${projectSlug}-worker-runner-${String(normalizedIndex).padStart(2, "0")}`;
70
- }
71
- function deriveRailwayOperationsRunnerServiceName(baseServiceName, index = WORKER_RUNNER_BOOTSTRAP_INDEX) {
72
- const normalizedIndex = Math.max(1, Number.parseInt(String(index), 10) || WORKER_RUNNER_BOOTSTRAP_INDEX);
73
- const base = String(baseServiceName ?? "").trim().replace(/-\d+$/u, "").replace(/-\d{2}$/u, "") || "treeseed-api-operations-runner";
74
- return `${base}-${String(normalizedIndex).padStart(2, "0")}`;
75
- }
76
- function railwayImageRefEnvForService(serviceKey) {
77
- if (serviceKey === "api") return "TREESEED_API_IMAGE_REF";
78
- if (serviceKey === "operationsRunner") return "TREESEED_OPERATIONS_RUNNER_IMAGE_REF";
79
- if (serviceKey === "capacityProviderManager") return "TREESEED_AGENT_MANAGER_IMAGE_REF";
80
- if (serviceKey === "capacityProviderRunner") return "TREESEED_AGENT_RUNNER_IMAGE_REF";
81
- if (isPublicTreeDxNodeServiceKey(serviceKey)) return "TREESEED_PUBLIC_TREEDX_IMAGE_REF";
82
- return null;
83
- }
84
- function defaultRailwayImageRef(serviceKey, scope = "staging", env = process.env) {
85
- if (normalizeScope(scope) !== "prod" && serviceKey !== "capacityProviderManager" && serviceKey !== "capacityProviderRunner") {
86
- return null;
87
- }
88
- if (serviceKey === "api") {
89
- return envValue("TREESEED_API_IMAGE_REF", env) || null;
90
- }
91
- if (serviceKey === "operationsRunner") {
92
- return envValue("TREESEED_OPERATIONS_RUNNER_IMAGE_REF", env) || null;
93
- }
94
- if (serviceKey === "capacityProviderManager") {
95
- return envValue("TREESEED_AGENT_MANAGER_IMAGE_REF", env) || null;
96
- }
97
- if (serviceKey === "capacityProviderRunner") {
98
- return envValue("TREESEED_AGENT_RUNNER_IMAGE_REF", env) || null;
99
- }
100
- if (isPublicTreeDxNodeServiceKey(serviceKey)) {
101
- return envValue("TREESEED_PUBLIC_TREEDX_IMAGE_REF", env) || null;
102
- }
103
- return null;
104
- }
105
- function isPublicTreeDxNodeServiceKey(serviceKey) {
106
- return String(serviceKey ?? "").startsWith(PUBLIC_TREEDX_NODE_SERVICE_KEY_PREFIX);
107
- }
108
- function deriveRailwayWorkerRunnerVolumeName(serviceName, environmentName = "") {
109
- return `${serviceName}-volume`;
110
- }
111
- function deriveRailwayOperationsRunnerVolumeName(serviceName, environmentName = "") {
112
- return `${serviceName}-volume`;
113
- }
114
- function deriveRailwayCapacityProviderRunnerServiceName(baseServiceName, index = WORKER_RUNNER_BOOTSTRAP_INDEX) {
115
- const normalizedIndex = Math.max(1, Number.parseInt(String(index), 10) || WORKER_RUNNER_BOOTSTRAP_INDEX);
116
- const base = String(baseServiceName ?? "").trim().replace(/-\d+$/u, "").replace(/-\d{2}$/u, "") || "treeseed-capacity-provider-runner";
117
- return `${base}-${String(normalizedIndex).padStart(2, "0")}`;
118
- }
119
- function deriveRailwayCapacityProviderRunnerVolumeName(serviceName, environmentName = "") {
120
- return `${serviceName}-volume`;
121
- }
122
- function railwayServiceRuntimeStartCommand(service) {
123
- return service.startCommand;
124
- }
125
- function normalizeScheduleExpressions(value) {
126
- if (typeof value === "string" && value.trim()) {
127
- return [value.trim()];
128
- }
129
- if (Array.isArray(value)) {
130
- return value.map((entry) => typeof entry === "string" ? entry.trim() : "").filter(Boolean);
131
- }
132
- return [];
133
- }
134
- function envValue(name, env = process.env) {
135
- const value = env?.[name];
136
- return typeof value === "string" && value.trim() ? value.trim() : "";
137
- }
138
- function relativeRailwayRootDir(tenantRoot, serviceRoot) {
139
- const resolved = relative(tenantRoot, serviceRoot).replace(/\\/gu, "/");
140
- return !resolved || resolved === "" ? "." : resolved;
141
- }
142
- function configuredEnvValue(env, name) {
143
- const value = env?.[name];
144
- return typeof value === "string" && value.trim() ? value.trim() : "";
145
- }
146
- function configuredApiPublicBaseUrl(deployConfig, scope) {
147
- const apiSurface = deployConfig.surfaces?.api;
148
- if (!apiSurface || typeof apiSurface !== "object") return null;
149
- const environment = apiSurface.environments?.[scope];
150
- const configured = environment?.baseUrl ?? environment?.domain ?? (scope === "local" ? apiSurface.localBaseUrl : null) ?? apiSurface.publicBaseUrl ?? null;
151
- if (typeof configured !== "string" || !configured.trim()) return null;
152
- const value = configured.trim().replace(/\/+$/u, "");
153
- return /^https?:\/\//iu.test(value) ? value : `https://${value}`;
154
- }
155
- function railwayDeployTransport(env) {
156
- const configured = configuredEnvValue(env, "TREESEED_RAILWAY_DEPLOY_TRANSPORT").toLowerCase();
157
- return configured === "cli-fallback" ? "cli-fallback" : "api";
158
- }
159
- async function timedRailwayPhase(timings, name, run, metadata) {
160
- const startMs = performance.now();
161
- try {
162
- const result = await Promise.resolve(run());
163
- timings.push({
164
- name,
165
- durationMs: elapsedMs(startMs),
166
- status: "success",
167
- ...metadata ? { metadata } : {}
168
- });
169
- return result;
170
- } catch (error) {
171
- timings.push({
172
- name,
173
- durationMs: elapsedMs(startMs),
174
- status: "failed",
175
- metadata: {
176
- ...metadata ?? {},
177
- error: error instanceof Error ? error.name || "Error" : "Error"
178
- }
179
- });
180
- throw error;
181
- }
182
- }
183
- function parseRailwayJsonOutput(output) {
184
- const trimmed = typeof output === "string" ? output.trim() : "";
185
- if (!trimmed) {
186
- return null;
187
- }
188
- try {
189
- return JSON.parse(trimmed);
190
- } catch {
191
- }
192
- const lines = trimmed.split(/\r?\n/u);
193
- for (let index = lines.length - 1; index >= 0; index -= 1) {
194
- const candidate = lines.slice(index).join("\n").trim();
195
- if (!candidate.startsWith("{") && !candidate.startsWith("[")) {
196
- continue;
197
- }
198
- try {
199
- return JSON.parse(candidate);
200
- } catch {
201
- }
202
- }
203
- return null;
204
- }
205
- function railwayEdgeNodes(value) {
206
- return Array.isArray(value?.edges) ? value.edges.map((entry) => entry?.node).filter(Boolean) : [];
207
- }
208
- function railwayStatusEnvironmentNodes(payload) {
209
- if (!payload || typeof payload !== "object") {
210
- return [];
211
- }
212
- if (Array.isArray(payload.environments)) {
213
- return payload.environments;
214
- }
215
- return railwayEdgeNodes(payload.environments);
216
- }
217
- function railwayStatusDeploymentSettled(status) {
218
- const normalized = String(status ?? "").trim().toUpperCase();
219
- return normalized === "SUCCESS" || normalized === "SLEEPING";
220
- }
221
- function railwayStatusDeploymentTerminalFailure(status) {
222
- const normalized = String(status ?? "").trim().toUpperCase();
223
- return ["FAILED", "CRASHED", "REMOVED"].includes(normalized);
224
- }
225
- function formatRailwayDeploymentStatusSummary(scope, checks) {
226
- const aliases = {
227
- api: "api",
228
- workdayManager: "manager",
229
- workerRunner: "runner"
230
- };
231
- const parts = checks.map((check) => {
232
- const name = aliases[check.service] ?? String(check.serviceName ?? check.service ?? "service");
233
- const status = String(check.status ?? "unknown").toUpperCase();
234
- const instanceStatuses = Array.isArray(check.observed?.instanceStatuses) && check.observed.instanceStatuses.length > 0 ? `/${check.observed.instanceStatuses.join("+")}` : "";
235
- const stopped = check.observed?.deploymentStopped === true ? "/stopped" : "";
236
- return `${name}=${status}${instanceStatuses}${stopped}`;
237
- });
238
- return `[railway][monitor][${scope}] ${parts.join(" ")}`;
239
- }
240
- function collectRailwayDeploymentStatusChecks(statusPayload, scope, services) {
241
- const expectedEnvironment = resolveRailwayEnvironmentForScope(scope);
242
- const environments = railwayStatusEnvironmentNodes(statusPayload);
243
- const environment = environments.find(
244
- (candidate) => normalizeRailwayEnvironmentName(candidate?.name) === expectedEnvironment
245
- ) ?? null;
246
- if (!environment) {
247
- return services.map((service) => ({
248
- type: "deployment-status",
249
- service: service.key,
250
- serviceName: service.serviceName,
251
- environment: expectedEnvironment,
252
- ok: false,
253
- status: "missing_environment",
254
- message: `Railway status did not include the ${expectedEnvironment} environment.`
255
- }));
256
- }
257
- const instances = railwayEdgeNodes(environment.serviceInstances);
258
- return services.map((service) => {
259
- const instance = instances.find((candidate) => candidate?.serviceName === service.serviceName) ?? null;
260
- if (!instance) {
261
- return {
262
- type: "deployment-status",
263
- service: service.key,
264
- serviceName: service.serviceName,
265
- environment: expectedEnvironment,
266
- ok: false,
267
- status: "missing_service_instance",
268
- message: `Railway status did not include service ${service.serviceName} in ${expectedEnvironment}.`
269
- };
270
- }
271
- const deployment = instance.latestDeployment ?? null;
272
- if (!deployment) {
273
- return {
274
- type: "deployment-status",
275
- service: service.key,
276
- serviceName: service.serviceName,
277
- environment: normalizeRailwayEnvironmentName(environment.name),
278
- ok: true,
279
- skipped: true,
280
- status: "no_active_deployment",
281
- observed: {
282
- status: null,
283
- deploymentId: null,
284
- deploymentCreatedAt: null,
285
- deploymentStopped: null,
286
- instanceStatuses: [],
287
- volumeMounts: []
288
- },
289
- message: `Railway service ${service.serviceName} has no active deployment to wait for.`
290
- };
291
- }
292
- const status = String(deployment?.status ?? "").trim().toUpperCase();
293
- const instanceStatuses = Array.isArray(deployment?.instances) ? deployment.instances.map((entry) => String(entry?.status ?? "").trim()).filter(Boolean) : [];
294
- const ok = railwayStatusDeploymentSettled(status);
295
- const terminalFailure = railwayStatusDeploymentTerminalFailure(status);
296
- return {
297
- type: "deployment-status",
298
- service: service.key,
299
- serviceName: service.serviceName,
300
- environment: normalizeRailwayEnvironmentName(environment.name),
301
- ok,
302
- terminalFailure,
303
- status: status || "missing_deployment",
304
- observed: {
305
- status: status || null,
306
- deploymentId: deployment?.id ?? null,
307
- deploymentCreatedAt: deployment?.createdAt ?? null,
308
- deploymentStopped: deployment?.deploymentStopped ?? null,
309
- instanceStatuses,
310
- volumeMounts: Array.isArray(deployment?.meta?.volumeMounts) ? deployment.meta.volumeMounts : []
311
- },
312
- message: ok ? void 0 : terminalFailure ? `Railway deployment for ${service.serviceName} failed with terminal status ${status}.` : `Railway deployment for ${service.serviceName} is not settled yet; observed ${status || "missing deployment status"}.`
313
- };
314
- });
315
- }
316
- function isUsableRailwayToken(value) {
317
- return typeof value === "string" && value.trim().length >= 8;
318
- }
319
- function resolveRailwayAuthToken(env = process.env) {
320
- return resolveRailwayApiToken(env);
321
- }
322
- function buildRailwayCommandEnv(env = process.env) {
323
- const merged = { ...env };
324
- const token = resolveRailwayAuthToken(merged);
325
- const projectToken = configuredEnvValue(merged, "TREESEED_RAILWAY_TOKEN");
326
- if (token) {
327
- merged.RAILWAY_API_TOKEN = token;
328
- } else {
329
- merged.RAILWAY_API_TOKEN = void 0;
330
- }
331
- merged.RAILWAY_TOKEN = projectToken || void 0;
332
- return merged;
333
- }
334
- function normalizeRailwaySchedule(schedule) {
335
- if (!schedule || typeof schedule !== "object") {
336
- return null;
337
- }
338
- const expression = String(
339
- schedule.expression ?? schedule.schedule ?? schedule.cron ?? schedule.cronExpression ?? ""
340
- ).trim();
341
- if (!expression) {
342
- return null;
343
- }
344
- return {
345
- id: schedule.id ? String(schedule.id) : null,
346
- name: schedule.name ? String(schedule.name) : null,
347
- expression,
348
- command: String(schedule.command ?? schedule.startCommand ?? "").trim() || null,
349
- enabled: schedule.enabled !== false,
350
- serviceId: schedule.serviceId ? String(schedule.serviceId) : schedule.service?.id ? String(schedule.service.id) : null,
351
- serviceName: schedule.serviceName ? String(schedule.serviceName) : schedule.service?.name ? String(schedule.service.name) : null,
352
- environmentId: schedule.environmentId ? String(schedule.environmentId) : schedule.environment?.id ? String(schedule.environment.id) : null,
353
- environmentName: schedule.environmentName ? String(schedule.environmentName) : schedule.environment?.name ? String(schedule.environment.name) : null
354
- };
355
- }
356
- function collectRailwaySchedules(value, seen = /* @__PURE__ */ new Set()) {
357
- const matches = [];
358
- const visit = (entry) => {
359
- if (!entry || typeof entry !== "object") {
360
- return;
361
- }
362
- if (seen.has(entry)) {
363
- return;
364
- }
365
- seen.add(entry);
366
- if (Array.isArray(entry)) {
367
- for (const item of entry) {
368
- visit(item);
369
- }
370
- return;
371
- }
372
- const normalized = normalizeRailwaySchedule(entry);
373
- if (normalized) {
374
- matches.push(normalized);
375
- }
376
- for (const child of Object.values(entry)) {
377
- visit(child);
378
- }
379
- };
380
- visit(value);
381
- return matches;
382
- }
383
- function isRailwayScheduleCapabilityError(error) {
384
- const message = error instanceof Error ? error.message : String(error ?? "");
385
- return /cronTriggers|cronTriggerCreate|cronTriggerUpdate/iu.test(message);
386
- }
387
- async function waitForRailwayManagedDeploymentsSettled(tenantRoot, scope, {
388
- services = configuredRailwayServices(tenantRoot, scope),
389
- env = process.env,
390
- timeoutMs = 6e5,
391
- pollMs = 15e3,
392
- fetchImpl = fetch,
393
- onProgress
394
- } = {}) {
395
- const startMs = performance.now();
396
- const deadline = Date.now() + timeoutMs;
397
- const projectId = await resolveRailwayDeploymentProjectId(services, { env, fetchImpl });
398
- if (!projectId) {
399
- return {
400
- ok: false,
401
- checks: services.map((service) => ({
402
- type: "deployment-status",
403
- service: service.key,
404
- serviceName: service.serviceName,
405
- environment: resolveRailwayEnvironmentForScope(scope),
406
- ok: false,
407
- status: "missing_project",
408
- settle: {
409
- durationMs: elapsedMs(startMs),
410
- pollCount: 0,
411
- finalStatus: "missing_project"
412
- },
413
- message: `Railway deployment status for ${service.serviceName} cannot be checked without a project id.`
414
- }))
415
- };
416
- }
417
- let checks = [];
418
- let lastError = null;
419
- let lastSummary = "";
420
- let pollCount = 0;
421
- for (; ; ) {
422
- lastError = null;
423
- pollCount += 1;
424
- try {
425
- const statusPayload = await fetchRailwayProjectDeploymentStatus({
426
- projectId,
427
- env,
428
- fetchImpl
429
- });
430
- checks = collectRailwayDeploymentStatusChecks(statusPayload, scope, services);
431
- } catch (error) {
432
- lastError = error;
433
- checks = services.map((service) => ({
434
- type: "deployment-status",
435
- service: service.key,
436
- serviceName: service.serviceName,
437
- environment: resolveRailwayEnvironmentForScope(scope),
438
- ok: false,
439
- status: "status_error",
440
- settle: {
441
- durationMs: elapsedMs(startMs),
442
- pollCount,
443
- finalStatus: "status_error"
444
- },
445
- message: error instanceof Error ? error.message : String(error)
446
- }));
447
- }
448
- const summary = formatRailwayDeploymentStatusSummary(scope, checks);
449
- const progress = `${summary} poll=${pollCount} elapsed=${formatDurationMs(elapsedMs(startMs))}`;
450
- if (progress !== lastSummary || !checks.every((entry) => entry.ok === true || entry.skipped === true)) {
451
- onProgress?.(progress, "stdout");
452
- lastSummary = progress;
453
- }
454
- if (checks.every((entry) => entry.ok === true || entry.skipped === true)) {
455
- return {
456
- ok: true,
457
- checks: checks.map((check) => ({
458
- ...check,
459
- settle: {
460
- durationMs: elapsedMs(startMs),
461
- pollCount,
462
- finalStatus: check.status,
463
- fastSkipped: check.skipped === true
464
- }
465
- })),
466
- settle: {
467
- durationMs: elapsedMs(startMs),
468
- pollCount,
469
- status: checks.every((entry) => entry.skipped === true) ? "skipped" : "settled"
470
- }
471
- };
472
- }
473
- if (checks.some((entry) => entry.terminalFailure === true)) {
474
- return {
475
- ok: false,
476
- checks: checks.map((check) => ({
477
- ...check,
478
- settle: {
479
- durationMs: elapsedMs(startMs),
480
- pollCount,
481
- finalStatus: check.status,
482
- terminalFailure: check.terminalFailure === true
483
- }
484
- })),
485
- settle: {
486
- durationMs: elapsedMs(startMs),
487
- pollCount,
488
- status: "failed"
489
- },
490
- message: "Railway deployment reached a terminal failed state."
491
- };
492
- }
493
- if (Date.now() >= deadline) {
494
- return {
495
- ok: false,
496
- checks: checks.map((check) => ({
497
- ...check,
498
- settle: {
499
- durationMs: elapsedMs(startMs),
500
- pollCount,
501
- finalStatus: check.status,
502
- timeout: true
503
- }
504
- })),
505
- settle: {
506
- durationMs: elapsedMs(startMs),
507
- pollCount,
508
- status: "timeout"
509
- },
510
- message: lastError instanceof Error ? lastError.message : "Railway deployments did not settle before the monitor timeout."
511
- };
512
- }
513
- await sleep(pollMs);
514
- }
515
- }
516
- async function resolveRailwayDeploymentProjectId(services, { env = process.env, fetchImpl = fetch } = {}) {
517
- const configuredProjectId = services.find((service) => typeof service.projectId === "string" && service.projectId.trim())?.projectId?.trim();
518
- if (configuredProjectId) {
519
- return configuredProjectId;
520
- }
521
- const projectName = services.find((service) => typeof service.projectName === "string" && service.projectName.trim())?.projectName?.trim();
522
- if (!projectName) {
523
- return null;
524
- }
525
- try {
526
- const workspace = await resolveRailwayWorkspaceContext({ env, fetchImpl });
527
- const projects = await listRailwayProjects({ env, workspaceId: workspace.id, fetchImpl });
528
- return projects.find((project) => project.name === projectName)?.id ?? null;
529
- } catch {
530
- return null;
531
- }
532
- }
533
- async function fetchRailwayProjectDeploymentStatus({ projectId, env = process.env, fetchImpl = fetch }) {
534
- const payload = await railwayGraphqlRequest({
535
- query: `
536
- query TreeseedRailwayDeploymentStatus($projectId: String!) {
537
- project(id: $projectId) {
538
- id
539
- environments(first: 50) {
540
- edges {
541
- node {
542
- id
543
- name
544
- serviceInstances {
545
- edges {
546
- node {
547
- id
548
- serviceId
549
- serviceName
550
- latestDeployment {
551
- id
552
- status
553
- createdAt
554
- deploymentStopped
555
- meta
556
- instances {
557
- id
558
- status
559
- }
560
- }
561
- }
562
- }
563
- }
564
- }
565
- }
566
- }
567
- }
568
- }
569
- `.trim(),
570
- variables: { projectId },
571
- env,
572
- fetchImpl
573
- });
574
- return payload.data?.project ?? null;
575
- }
576
- function configuredRailwayServicesForConfig(tenantRoot, scope, deployConfig, application = null, machineConfigRoot = tenantRoot, envOverlay = {}, options = {}) {
577
- const normalizedScope = normalizeScope(scope);
578
- const identityOnly = options.identityOnly === true;
579
- const imageRefKeys = [
580
- "TREESEED_API_IMAGE_REF",
581
- "TREESEED_OPERATIONS_RUNNER_IMAGE_REF",
582
- "TREESEED_AGENT_MANAGER_IMAGE_REF",
583
- "TREESEED_AGENT_RUNNER_IMAGE_REF",
584
- "TREESEED_PUBLIC_TREEDX_IMAGE_REF"
585
- ];
586
- let machineEnv = {};
587
- try {
588
- machineEnv = resolveTreeseedMachineEnvironmentValues(machineConfigRoot, normalizedScope, imageRefKeys);
589
- } catch {
590
- machineEnv = {};
591
- }
592
- const imageRefEnv = { ...machineEnv, ...process.env, ...envOverlay };
593
- let identity;
594
- try {
595
- identity = resolveTreeseedResourceIdentity(deployConfig, createPersistentDeployTarget(normalizedScope));
596
- } catch {
597
- identity = { deploymentKey: deployConfig.slug ?? deployConfig.name ?? "treeseed" };
598
- }
599
- const managedRuntime = deployConfig.runtime?.mode === "treeseed_managed";
600
- const hostingKind = deployConfig.hosting?.kind ?? (managedRuntime ? "hosted_project" : "self_hosted_project");
601
- if (!managedRuntime) {
602
- return [];
603
- }
604
- const configuredOptionalServiceKeys = Object.keys(deployConfig.services ?? {}).filter((serviceKey) => RAILWAY_SERVICE_KEYS.includes(serviceKey));
605
- const serviceKeys = hostingKind === "hosted_project" ? [.../* @__PURE__ */ new Set([...HOSTED_PROJECT_SERVICE_KEYS, ...configuredOptionalServiceKeys])] : RAILWAY_SERVICE_KEYS;
606
- const configuredServices = serviceKeys.flatMap((serviceKey) => {
607
- const service = deployConfig.services?.[serviceKey];
608
- if (!service || service.enabled === false || (service.provider ?? "railway") !== "railway") {
609
- return [];
610
- }
611
- const isCapacityProviderService = String(serviceKey).startsWith("capacityProvider");
612
- const defaultRootDir = ["api", "operationsRunner"].includes(serviceKey) ? "." : isCapacityProviderService ? "packages/agent" : "packages/core";
613
- const serviceRoot = isCapacityProviderService ? resolveRailwayCapacityProviderRoot(tenantRoot, service) : resolve(tenantRoot, service.railway?.rootDir ?? service.rootDir ?? defaultRootDir);
614
- const railwayEnvironment = resolveRailwayEnvironmentForScope(
615
- normalizedScope,
616
- service.environments?.[normalizedScope]?.railwayEnvironment
617
- );
618
- const publicBaseUrl = service.environments?.[normalizedScope]?.baseUrl ?? service.publicBaseUrl ?? (serviceKey === "api" ? configuredApiPublicBaseUrl(deployConfig, normalizedScope) : null);
619
- const environmentConfig = service.environments?.[normalizedScope];
620
- const baseServiceName = service.railway?.serviceName ?? (serviceKey === "workerRunner" ? deriveRailwayWorkerRunnerServiceName(identity.deploymentKey) : `${identity.deploymentKey}-${railwayServiceNameSuffix(serviceKey)}`);
621
- const configuredServiceName = typeof environmentConfig?.serviceName === "string" && environmentConfig.serviceName.trim() ? environmentConfig.serviceName.trim() : isApiRailwaySourcePolicyService({ key: serviceKey, serviceName: baseServiceName }) ? railwayEnvironmentQualifiedServiceName(baseServiceName, normalizedScope) : baseServiceName;
622
- const configuredRunnerPool = service.railway?.runnerPool && typeof service.railway.runnerPool === "object" ? service.railway.runnerPool : null;
623
- const runnerPool = serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? {
624
- bootstrapCount: Math.max(1, Number.parseInt(String(configuredRunnerPool?.bootstrapCount ?? (serviceKey === "capacityProviderRunner" ? 1 : OPERATIONS_RUNNER_BOOTSTRAP_COUNT)), 10) || (serviceKey === "capacityProviderRunner" ? 1 : OPERATIONS_RUNNER_BOOTSTRAP_COUNT)),
625
- maxRunners: Math.max(1, Number.parseInt(String(configuredRunnerPool?.maxRunners ?? configuredRunnerPool?.bootstrapCount ?? (serviceKey === "capacityProviderRunner" ? 1 : OPERATIONS_RUNNER_BOOTSTRAP_COUNT)), 10) || (serviceKey === "capacityProviderRunner" ? 1 : OPERATIONS_RUNNER_BOOTSTRAP_COUNT)),
626
- volumeMountPath: service.railway?.volumeMountPath ?? configuredRunnerPool?.volumeMountPath ?? WORKER_RUNNER_VOLUME_MOUNT_PATH
627
- } : serviceKey === "workerRunner" ? {
628
- bootstrapIndex: WORKER_RUNNER_BOOTSTRAP_INDEX,
629
- volumeMountPath: WORKER_RUNNER_VOLUME_MOUNT_PATH
630
- } : null;
631
- const instanceCount = serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? runnerPool.bootstrapCount : 1;
632
- return Array.from({ length: instanceCount }, (_, offset) => {
633
- const runnerIndex = offset + 1;
634
- const serviceName = serviceKey === "operationsRunner" ? deriveRailwayOperationsRunnerServiceName(configuredServiceName, runnerIndex) : serviceKey === "capacityProviderRunner" ? deriveRailwayCapacityProviderRunnerServiceName(configuredServiceName, runnerIndex) : configuredServiceName;
635
- const configuredImageRefEnv = service.railway?.imageRefEnv ?? railwayImageRefEnvForService(serviceKey);
636
- const canUseImageRefEnv = normalizedScope === "prod" || serviceKey === "capacityProviderManager" || serviceKey === "capacityProviderRunner";
637
- const imageRef = service.railway?.imageRef ?? (canUseImageRefEnv && configuredImageRefEnv ? envValue(configuredImageRefEnv, imageRefEnv) || null : null) ?? defaultRailwayImageRef(serviceKey, normalizedScope, imageRefEnv);
638
- const sourcePolicy = identityOnly ? {
639
- sourceMode: normalizedScope === "prod" ? "image" : "git",
640
- sourceRepo: null,
641
- sourceBranch: null,
642
- sourceCommit: null,
643
- sourceRootDirectory: null
644
- } : resolveRailwayServiceSourcePolicy({
645
- tenantRoot,
646
- scope: normalizedScope,
647
- serviceKey,
648
- service,
649
- serviceRoot,
650
- imageRef,
651
- serviceName
652
- });
653
- const resolvedImageRef = sourcePolicy.sourceMode === "image" ? imageRef : null;
654
- return {
655
- key: serviceKey,
656
- instanceKey: serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? `${serviceKey}:${runnerIndex}` : serviceKey,
657
- runnerIndex: serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? runnerIndex : null,
658
- serviceConfig: service,
659
- scope: normalizedScope,
660
- projectId: service.railway?.projectId ?? null,
661
- projectName: environmentConfig?.railwayProjectName ?? service.railway?.projectName ?? identity.deploymentKey,
662
- serviceId: service.railway?.serviceId ?? null,
663
- serviceName,
664
- runnerId: serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? serviceName : null,
665
- rootDir: serviceRoot,
666
- publicBaseUrl,
667
- railwayEnvironment,
668
- buildCommand: resolvedImageRef || sourcePolicy.sourceMode === "git" && service.railway?.dockerfilePath ? null : service.railway?.buildCommand ?? null,
669
- startCommand: isCapacityProviderService ? null : resolvedImageRef ? null : service.railway?.startCommand ?? null,
670
- imageRef: resolvedImageRef,
671
- sourceMode: sourcePolicy.sourceMode,
672
- sourceRepo: sourcePolicy.sourceRepo,
673
- sourceBranch: sourcePolicy.sourceBranch,
674
- sourceCommit: sourcePolicy.sourceCommit,
675
- sourceRootDirectory: sourcePolicy.sourceRootDirectory,
676
- dockerfilePath: sourcePolicy.sourceMode === "git" ? service.railway?.dockerfilePath ?? apiRailwayDefaultDockerfilePath({ key: serviceKey, serviceName }) : null,
677
- healthcheckPath: service.railway?.healthcheckPath ?? null,
678
- healthcheckTimeoutSeconds: service.railway?.healthcheckTimeoutSeconds ?? null,
679
- healthcheckIntervalSeconds: service.railway?.healthcheckIntervalSeconds ?? null,
680
- restartPolicy: service.railway?.restartPolicy ?? null,
681
- runtimeMode: service.railway?.runtimeMode ?? null,
682
- volumeMountPath: serviceKey === "operationsRunner" || serviceKey === "capacityProviderRunner" ? runnerPool.volumeMountPath : service.railway?.volumeMountPath ?? null,
683
- schedule: normalizeScheduleExpressions(service.railway?.schedule),
684
- hostingKind,
685
- runnerPool,
686
- application,
687
- secretRefs: Array.isArray(service.secretRefs) ? service.secretRefs : [],
688
- variableRefs: Array.isArray(service.variableRefs) ? service.variableRefs : []
689
- };
690
- });
691
- }).filter(Boolean);
692
- return [
693
- ...configuredServices,
694
- ...configuredPublicTreeDxRailwayServices({
695
- tenantRoot,
696
- scope: normalizedScope,
697
- deployConfig,
698
- identity,
699
- hostingKind,
700
- application,
701
- imageRefEnv,
702
- workspaceRoot: machineConfigRoot,
703
- identityOnly
704
- })
705
- ];
706
- }
707
- function configuredPublicTreeDxRailwayServices({ tenantRoot, scope, deployConfig, identity, hostingKind, application, imageRefEnv, workspaceRoot, identityOnly = false }) {
708
- if (deployConfig.hosting?.kind !== "treeseed_control_plane") {
709
- return [];
710
- }
711
- const railway = deployConfig.publicTreeDxFederation?.railway ?? {};
712
- const nodePool = railway.nodePool && typeof railway.nodePool === "object" && !Array.isArray(railway.nodePool) ? railway.nodePool : {};
713
- const bootstrapCount = Math.max(0, Number.parseInt(String(nodePool.bootstrapCount ?? 1), 10) || 0);
714
- if (bootstrapCount <= 0) {
715
- return [];
716
- }
717
- const configuredSource = railway.source && typeof railway.source === "object" && !Array.isArray(railway.source) ? railway.source : {};
718
- const treeDxRoot = resolve(workspaceRoot ?? tenantRoot, "packages", "treedx");
719
- const configuredMode = typeof railway.sourceMode === "string" ? railway.sourceMode : null;
720
- if (scope === "staging" && configuredMode === "image") {
721
- throw new Error("public-treedx-node-01: API Railway staging services must use GitHub Dockerfile source builds (configured sourceMode image is not allowed).");
722
- }
723
- const sourceMode = scope === "prod" ? "image" : configuredMode === "git" || configuredMode === "image" ? configuredMode : "git";
724
- const repository = typeof railway.sourceRepo === "string" ? railway.sourceRepo : typeof configuredSource.repository === "string" ? configuredSource.repository : typeof configuredSource.repo === "string" ? configuredSource.repo : readTreeseedPackageRepository(treeDxRoot) ?? "treeseed-ai/treedx";
725
- const sourceBranch = typeof railway.sourceBranch === "string" ? railway.sourceBranch : typeof configuredSource.branch === "string" ? configuredSource.branch : scope === "staging" ? "staging" : null;
726
- const sourceRootDirectory = typeof railway.sourceRootDirectory === "string" ? railway.sourceRootDirectory : typeof configuredSource.rootDirectory === "string" ? configuredSource.rootDirectory : ".";
727
- const projectName = typeof railway.projectName === "string" && railway.projectName.trim() ? railway.projectName.trim() : typeof imageRefEnv.TREESEED_PUBLIC_TREEDX_RAILWAY_PROJECT_NAME === "string" && imageRefEnv.TREESEED_PUBLIC_TREEDX_RAILWAY_PROJECT_NAME.trim() ? imageRefEnv.TREESEED_PUBLIC_TREEDX_RAILWAY_PROJECT_NAME.trim() : identity.deploymentKey;
728
- const railwayEnvironment = resolveRailwayEnvironmentForScope(scope, railway.environmentName);
729
- const baseImageRef = envValue("TREESEED_PUBLIC_TREEDX_IMAGE_REF", imageRefEnv) || "treeseed/treedx";
730
- return Array.from({ length: bootstrapCount }, (_, offset) => {
731
- const index = offset + 1;
732
- const baseServiceName = `${PUBLIC_TREEDX_NODE_SERVICE_KEY_PREFIX}${String(index).padStart(2, "0")}`;
733
- const serviceName = railwayTreeDxServiceName(index, scope);
734
- const service = {
735
- key: baseServiceName,
736
- serviceName,
737
- sourceMode,
738
- sourceRepo: sourceMode === "git" ? repository : null,
739
- sourceBranch: sourceMode === "git" ? sourceBranch : null,
740
- sourceCommit: sourceMode === "git" ? typeof railway.sourceCommit === "string" ? railway.sourceCommit : typeof configuredSource.commit === "string" ? configuredSource.commit : headCommitSafe(treeDxRoot) ?? headCommitSafe(tenantRoot) : null,
741
- sourceRootDirectory: sourceMode === "git" ? sourceRootDirectory : null,
742
- imageRef: sourceMode === "image" ? baseImageRef : null,
743
- dockerfilePath: sourceMode === "git" ? railway.dockerfilePath ?? "/Dockerfile" : null,
744
- buildCommand: sourceMode === "git" ? railway.buildCommand ?? null : null,
745
- startCommand: sourceMode === "git" ? railway.startCommand ?? null : null
746
- };
747
- if (!identityOnly) {
748
- assertApiRailwaySourcePolicy(scope, service);
749
- }
750
- return {
751
- key: service.key,
752
- instanceKey: serviceName,
753
- runnerIndex: null,
754
- serviceConfig: null,
755
- scope,
756
- projectId: typeof railway.projectId === "string" ? railway.projectId : null,
757
- projectName,
758
- serviceId: typeof railway.serviceId === "string" && bootstrapCount === 1 ? railway.serviceId : null,
759
- serviceName: service.serviceName,
760
- runnerId: null,
761
- rootDir: treeDxRoot,
762
- publicBaseUrl: null,
763
- railwayEnvironment,
764
- buildCommand: service.buildCommand,
765
- startCommand: service.startCommand,
766
- imageRef: service.imageRef,
767
- sourceMode: service.sourceMode,
768
- sourceRepo: service.sourceRepo,
769
- sourceBranch: service.sourceBranch,
770
- sourceCommit: service.sourceCommit,
771
- sourceRootDirectory: service.sourceRootDirectory,
772
- dockerfilePath: service.dockerfilePath,
773
- healthcheckPath: railway.healthcheckPath ?? null,
774
- healthcheckTimeoutSeconds: railway.healthcheckTimeoutSeconds ?? null,
775
- healthcheckIntervalSeconds: railway.healthcheckIntervalSeconds ?? null,
776
- restartPolicy: railway.restartPolicy ?? null,
777
- runtimeMode: railway.runtimeMode ?? "replicated",
778
- volumeMountPath: railway.volumeMountPath ?? "/data",
779
- schedule: [],
780
- hostingKind,
781
- runnerPool: null,
782
- application,
783
- environmentVariables: {
784
- PORT: "4000",
785
- TREEDX_DATA_DIR: railway.volumeMountPath ?? "/data",
786
- TREEDX_AUTH_MODE: "connected",
787
- TREEDX_AUTH_VERIFIER: "hs256_dev",
788
- TREEDX_ALLOW_DEV_VERIFIER_IN_PROD: "true",
789
- TREEDX_EXEC_BACKEND: "container_sandbox",
790
- TREEDX_FEDERATION_MODE: "connected_library",
791
- TREEDX_JWT_AUDIENCE: "treedx-public-federation",
792
- TREEDX_JWT_ISSUER: "https://api.treeseed.local/treedx",
793
- TREEDX_BOOTSTRAP_TRUST_ACTOR_ID: "treeseed-api",
794
- TREEDX_BOOTSTRAP_TRUST_TENANT_ID: "treeseed-control-plane",
795
- TREEDX_BOOTSTRAP_TRUST_REPO_IDS: "*",
796
- TREEDX_BOOTSTRAP_TRUST_REFS: "*",
797
- TREEDX_BOOTSTRAP_TRUST_PATHS: "**",
798
- TREEDX_SCOPE: "public_federation"
799
- },
800
- secretRefs: ["TREEDX_SECRET_KEY_BASE", "TREEDX_ADMIN_TOKEN", "TREEDX_JWT_HS256_SECRET"],
801
- variableRefs: [
802
- "PORT",
803
- "TREEDX_DATA_DIR",
804
- "TREEDX_AUTH_MODE",
805
- "TREEDX_AUTH_VERIFIER",
806
- "TREEDX_ALLOW_DEV_VERIFIER_IN_PROD",
807
- "TREEDX_EXEC_BACKEND",
808
- "TREEDX_FEDERATION_MODE",
809
- "TREEDX_JWT_AUDIENCE",
810
- "TREEDX_JWT_ISSUER",
811
- "TREEDX_BOOTSTRAP_TRUST_ACTOR_ID",
812
- "TREEDX_BOOTSTRAP_TRUST_TENANT_ID",
813
- "TREEDX_BOOTSTRAP_TRUST_REPO_IDS",
814
- "TREEDX_BOOTSTRAP_TRUST_REFS",
815
- "TREEDX_BOOTSTRAP_TRUST_PATHS",
816
- "TREEDX_SCOPE"
817
- ]
818
- };
819
- });
820
- }
821
- function readTreeseedPackageRepository(packageRoot) {
822
- const manifestPath = resolve(packageRoot, "treeseed.package.yaml");
823
- if (!existsSync(manifestPath)) return null;
824
- try {
825
- const manifest = parseYaml(readFileSync(manifestPath, "utf8"));
826
- const repository = manifest && typeof manifest === "object" && !Array.isArray(manifest) ? manifest.repository : null;
827
- return typeof repository === "string" && /^[^/\s]+\/[^/\s]+$/u.test(repository.trim()) ? repository.trim() : null;
828
- } catch {
829
- return null;
830
- }
831
- }
832
- function headCommitSafe(cwd) {
833
- try {
834
- return runTreeseedGitText(["rev-parse", "HEAD"], {
835
- cwd,
836
- mode: classifyTreeseedGitMode(["rev-parse", "HEAD"])
837
- }).trim();
838
- } catch {
839
- return null;
840
- }
841
- }
842
- function resolveRailwayServiceSourcePolicy({ tenantRoot, scope, serviceKey, service, serviceRoot, imageRef, serviceName: effectiveServiceName }) {
843
- const configuredMode = typeof service.railway?.sourceMode === "string" ? service.railway.sourceMode : null;
844
- const configuredSource = service.railway?.source && typeof service.railway.source === "object" && !Array.isArray(service.railway.source) ? service.railway.source : {};
845
- const configuredRepo = typeof service.railway?.sourceRepo === "string" ? service.railway.sourceRepo : typeof configuredSource.repository === "string" ? configuredSource.repository : typeof configuredSource.repo === "string" ? configuredSource.repo : null;
846
- const serviceName = effectiveServiceName ?? service.railway?.serviceName ?? null;
847
- const packageRepository = configuredRepo ?? readTreeseedPackageRepository(serviceRoot) ?? readTreeseedPackageRepository(tenantRoot) ?? apiRailwayDefaultSourceRepo({ key: serviceKey, serviceName });
848
- const dockerfilePath = service.railway?.dockerfilePath ?? apiRailwayDefaultDockerfilePath({ key: serviceKey, serviceName });
849
- const apiPackageSourceEligible = ["api", "operationsRunner"].includes(serviceKey);
850
- if (scope === "staging" && isApiRailwaySourcePolicyService({ key: serviceKey, serviceName }) && (configuredMode === "image" || service.railway?.imageRef)) {
851
- throw new Error(`${serviceName ?? serviceKey}: API Railway staging services must use GitHub Dockerfile source builds (configured image source is not allowed).`);
852
- }
853
- const sourceMode = scope === "prod" ? "image" : scope === "staging" && apiPackageSourceEligible ? "git" : configuredMode === "git" || configuredMode === "image" ? configuredMode : imageRef ? "image" : "git";
854
- if (sourceMode !== "git") {
855
- const policy2 = {
856
- sourceMode: "image",
857
- sourceRepo: null,
858
- sourceBranch: null,
859
- sourceCommit: null,
860
- sourceRootDirectory: null
861
- };
862
- assertApiRailwaySourcePolicy(scope, {
863
- key: serviceKey,
864
- serviceName,
865
- imageRef,
866
- dockerfilePath: null,
867
- buildCommand: null,
868
- startCommand: null,
869
- ...policy2
870
- });
871
- return policy2;
872
- }
873
- const policy = {
874
- sourceMode: "git",
875
- sourceRepo: packageRepository,
876
- sourceBranch: typeof service.railway?.sourceBranch === "string" ? service.railway.sourceBranch : typeof configuredSource.branch === "string" ? configuredSource.branch : scope === "staging" ? "staging" : null,
877
- sourceCommit: typeof service.railway?.sourceCommit === "string" ? service.railway.sourceCommit : typeof configuredSource.commit === "string" ? configuredSource.commit : headCommitSafe(serviceRoot),
878
- sourceRootDirectory: typeof service.railway?.sourceRootDirectory === "string" ? service.railway.sourceRootDirectory : typeof configuredSource.rootDirectory === "string" ? configuredSource.rootDirectory : "."
879
- };
880
- assertApiRailwaySourcePolicy(scope, {
881
- key: serviceKey,
882
- serviceName,
883
- imageRef: null,
884
- dockerfilePath,
885
- ...policy
886
- });
887
- return policy;
888
- }
889
- function resolveRailwayCapacityProviderRoot(tenantRoot, service) {
890
- if (service.railway?.rootDir) {
891
- return resolve(tenantRoot, service.railway.rootDir);
892
- }
893
- const candidates = [
894
- resolve(tenantRoot, "..", "agent"),
895
- resolve(tenantRoot, "packages", "agent"),
896
- resolve(tenantRoot, "..", "..", "packages", "agent")
897
- ];
898
- const found = candidates.find(
899
- (candidate) => existsSync(resolve(candidate, "treeseed.package.yaml")) || existsSync(resolve(candidate, "package.json"))
900
- );
901
- return found ?? resolve(tenantRoot, "packages", "agent");
902
- }
903
- function configuredRailwayServices(tenantRoot, scope, envOverlay = {}, options = {}) {
904
- const deployConfig = loadCliDeployConfig(tenantRoot);
905
- const direct = configuredRailwayServicesForConfig(tenantRoot, scope, deployConfig, null, tenantRoot, envOverlay, options);
906
- const nested = discoverTreeseedApplications(tenantRoot).filter((application) => application.root !== resolve(tenantRoot)).flatMap((application) => configuredRailwayServicesForConfig(
907
- application.root,
908
- scope,
909
- application.config,
910
- {
911
- id: application.id,
912
- root: application.root,
913
- relativeRoot: application.relativeRoot
914
- },
915
- tenantRoot,
916
- envOverlay,
917
- options
918
- ));
919
- return [...direct, ...nested];
920
- }
921
- function obsoleteUnqualifiedRailwayResourceNames(services) {
922
- const aliases = /* @__PURE__ */ new Set();
923
- for (const service of services) {
924
- const alias = service.serviceName.replace(/-(?:staging|production)(?=-\d+$|$)/u, "");
925
- if (!alias || alias === service.serviceName) continue;
926
- aliases.add(alias);
927
- if (service.volumeMountPath) aliases.add(`${alias}-volume`);
928
- const index = /-(\d+)$/u.exec(service.serviceName)?.[1] ?? "01";
929
- const environmentSuffix = service.railwayEnvironment === "production" ? "production" : "staging";
930
- const formerNames = service.key === "operationsRunner" ? [
931
- `treeseed-api-operations-runner-${index}`,
932
- `treeseed-api-operations-runner-${environmentSuffix}-${index}`
933
- ] : service.key.startsWith("public-treedx-node-") ? [
934
- `public-treedx-node-${index}`,
935
- `public-treedx-node-${environmentSuffix}-${index}`
936
- ] : [];
937
- for (const formerName of formerNames) {
938
- if (formerName === service.serviceName) continue;
939
- aliases.add(formerName);
940
- if (service.volumeMountPath) aliases.add(`${formerName}-volume`);
941
- }
942
- }
943
- return [...aliases];
944
- }
945
- function railwayObsoleteAliasCleanupPolicy(scope, services, liveProjectServiceNames = [], activeEnvironmentServiceNames = []) {
946
- const aliases = obsoleteUnqualifiedRailwayResourceNames(services);
947
- const liveNames = new Set(liveProjectServiceNames);
948
- void scope;
949
- void activeEnvironmentServiceNames;
950
- const qualifiedServices = services.filter((service) => service.serviceName !== service.serviceName.replace(/-(?:staging|production)(?=-\d+$|$)/u, "")).map((service) => service.serviceName);
951
- const qualifiedResourcesExist = aliases.length > 0 && qualifiedServices.every((name) => liveNames.has(name));
952
- return {
953
- retainedResourceNames: qualifiedResourcesExist ? [] : aliases,
954
- allowedResourceDeletions: qualifiedResourcesExist ? aliases : []
955
- };
956
- }
957
- function configuredRailwayScheduledJobs(tenantRoot, scope, { phase = "deploy" } = {}) {
958
- if (!shouldManageRailwaySchedules(scope, phase)) {
959
- return [];
960
- }
961
- return configuredRailwayServices(tenantRoot, scope).filter((service) => Array.isArray(service.schedule) && service.schedule.length > 0).flatMap(
962
- (service) => service.schedule.map((expression, index) => ({
963
- service: service.key,
964
- projectId: service.projectId,
965
- projectName: service.projectName,
966
- serviceId: service.serviceId,
967
- serviceName: service.serviceName,
968
- environment: normalizeRailwayEnvironmentName(service.railwayEnvironment),
969
- environmentId: envValue("TREESEED_RAILWAY_ENVIRONMENT_ID") || null,
970
- expression,
971
- command: service.startCommand,
972
- enabled: true,
973
- logicalName: `${service.key}:${index + 1}`
974
- }))
975
- );
976
- }
977
- async function resolveRailwayScheduleTarget(schedule, {
978
- env = process.env,
979
- fetchImpl = fetch,
980
- ensure = false
981
- } = {}) {
982
- const workspace = await resolveRailwayWorkspaceContext({ env, fetchImpl });
983
- const projects = await listRailwayProjects({
984
- env,
985
- workspaceId: workspace.id,
986
- fetchImpl
987
- });
988
- let project = projects.find((entry) => entry.id === schedule.projectId || entry.name === schedule.projectName) ?? null;
989
- if (!project && ensure) {
990
- project = (await ensureRailwayProject({
991
- projectId: schedule.projectId,
992
- projectName: schedule.projectName,
993
- defaultEnvironmentName: schedule.environment,
994
- env,
995
- workspace: workspace.name,
996
- fetchImpl
997
- })).project;
998
- }
999
- if (!project) {
1000
- return { workspace, project: null, environment: null, service: null };
1001
- }
1002
- let environment = project.environments.find((entry) => entry.id === schedule.environmentId || entry.name === schedule.environment) ?? null;
1003
- if (!environment) {
1004
- environment = ensure ? (await ensureRailwayEnvironment({
1005
- projectId: project.id,
1006
- environmentName: schedule.environment,
1007
- env,
1008
- fetchImpl
1009
- })).environment : (await listRailwayEnvironments({ projectId: project.id, env, fetchImpl })).find((entry) => entry.id === schedule.environmentId || entry.name === schedule.environment) ?? null;
1010
- }
1011
- let service = project.services.find((entry) => entry.id === schedule.serviceId || entry.name === schedule.serviceName) ?? null;
1012
- if (!service) {
1013
- service = ensure ? (await ensureRailwayService({
1014
- projectId: project.id,
1015
- serviceId: schedule.serviceId,
1016
- serviceName: schedule.serviceName,
1017
- env,
1018
- fetchImpl
1019
- })).service : (await listRailwayServices({ projectId: project.id, env, fetchImpl })).find((entry) => entry.id === schedule.serviceId || entry.name === schedule.serviceName) ?? null;
1020
- }
1021
- return { workspace, project, environment, service };
1022
- }
1023
- function resolveRailwayDeploymentProfile(tenantRoot) {
1024
- const deployConfig = loadCliDeployConfig(tenantRoot);
1025
- const hostingKind = deployConfig.hosting?.kind ?? (deployConfig.runtime?.mode === "treeseed_managed" ? "hosted_project" : "self_hosted_project");
1026
- const configuredOptionalServiceKeys = Object.keys(deployConfig.services ?? {}).filter((serviceKey) => RAILWAY_SERVICE_KEYS.includes(serviceKey));
1027
- return {
1028
- hostingKind,
1029
- managedTopology: deployConfig.runtime?.mode === "treeseed_managed" ? hostingKind === "hosted_project" ? [.../* @__PURE__ */ new Set([...HOSTED_PROJECT_SERVICE_KEYS, ...configuredOptionalServiceKeys])] : [...RAILWAY_SERVICE_KEYS] : []
1030
- };
1031
- }
1032
- function validateRailwayServiceConfiguration(tenantRoot, scope) {
1033
- const services = configuredRailwayServices(tenantRoot, scope);
1034
- const { hostingKind, managedTopology } = resolveRailwayDeploymentProfile(tenantRoot);
1035
- const issues = [];
1036
- const configuredKeys = new Set(services.map((service) => service.key));
1037
- if (hostingKind === "hosted_project") {
1038
- for (const serviceKey of HOSTED_PROJECT_SERVICE_KEYS) {
1039
- if (!configuredKeys.has(serviceKey)) {
1040
- issues.push(`${serviceKey}: hosted_project deployments require the ${serviceKey} Railway service to be configured.`);
1041
- }
1042
- }
1043
- }
1044
- for (const service of services) {
1045
- if (!service.serviceName && !service.serviceId) {
1046
- issues.push(`${service.key}: set railway.serviceName or railway.serviceId in treeseed.site.yaml.`);
1047
- }
1048
- if (!service.projectName && !service.projectId) {
1049
- issues.push(`${service.key}: set railway.projectName or railway.projectId in treeseed.site.yaml.`);
1050
- }
1051
- if (service.sourceMode === "git" && !service.sourceRepo) {
1052
- issues.push(`${service.key}: staging source builds require railway.source.repository or package repository metadata.`);
1053
- }
1054
- const usesExternalGitSource = service.sourceMode === "git" && Boolean(service.sourceRepo);
1055
- if (!service.imageRef && !usesExternalGitSource && !existsSync(service.rootDir)) {
1056
- issues.push(`${service.key}: service root ${service.rootDir} does not exist.`);
1057
- }
1058
- if (service.schedule?.length && !service.startCommand) {
1059
- issues.push(`${service.key}: scheduled Railway services require railway.startCommand in treeseed.site.yaml.`);
1060
- }
1061
- }
1062
- if (issues.length > 0) {
1063
- throw new Error(`Railway service configuration is incomplete:
1064
- - ${issues.join("\n- ")}`);
1065
- }
1066
- return {
1067
- services,
1068
- schedules: configuredRailwayScheduledJobs(tenantRoot, scope, { phase: "deploy" }),
1069
- hostingKind,
1070
- managedTopology
1071
- };
1072
- }
1073
- function validateRailwayDeployPrerequisites(tenantRoot, scope, { env = process.env } = {}) {
1074
- const validation = validateRailwayServiceConfiguration(tenantRoot, scope);
1075
- const token = resolveRailwayAuthToken(env);
1076
- if (typeof token !== "string" || token.trim().length === 0) {
1077
- throw new Error("Configure TREESEED_RAILWAY_API_TOKEN before deploying Railway-managed services.");
1078
- }
1079
- return validation;
1080
- }
1081
- async function ensureRailwayScheduledJobs(tenantRoot, scope, { planOnly = false, fetchImpl = fetch, apiToken, apiUrl, env = process.env } = {}) {
1082
- const { schedules } = validateRailwayServiceConfiguration(tenantRoot, scope);
1083
- if (schedules.length === 0) {
1084
- return [];
1085
- }
1086
- const effectiveApiToken = apiToken || resolveRailwayAuthToken(env);
1087
- const effectiveApiUrl = apiUrl || resolveRailwayApiUrl(env);
1088
- if (typeof effectiveApiToken !== "string" || effectiveApiToken.trim().length === 0) {
1089
- throw new Error("Configure TREESEED_RAILWAY_API_TOKEN before deploying Railway-managed services.");
1090
- }
1091
- const results = [];
1092
- try {
1093
- for (const schedule of schedules) {
1094
- const target = await resolveRailwayScheduleTarget(schedule, {
1095
- env,
1096
- fetchImpl,
1097
- ensure: !planOnly
1098
- });
1099
- if (!target.project || !target.environment || !target.service) {
1100
- results.push({
1101
- ...schedule,
1102
- id: null,
1103
- projectId: target.project?.id ?? null,
1104
- serviceId: target.service?.id ?? null,
1105
- environmentId: target.environment?.id ?? null,
1106
- status: "skipped_missing_identifiers",
1107
- enabled: schedule.enabled !== false,
1108
- command: schedule.command
1109
- });
1110
- continue;
1111
- }
1112
- const current = await getRailwayServiceInstance({
1113
- serviceId: target.service.id,
1114
- environmentId: target.environment.id,
1115
- env: { ...env, TREESEED_RAILWAY_API_TOKEN: effectiveApiToken, RAILWAY_API_TOKEN: effectiveApiToken, TREESEED_RAILWAY_API_URL: effectiveApiUrl },
1116
- fetchImpl
1117
- });
1118
- const desired = {
1119
- name: schedule.logicalName,
1120
- schedule: schedule.expression,
1121
- command: schedule.command,
1122
- enabled: schedule.enabled !== false
1123
- };
1124
- const drifted = Boolean(
1125
- current.id && (current.cronSchedule !== desired.schedule || (current.startCommand ?? null) !== (desired.command ?? null))
1126
- );
1127
- if (planOnly) {
1128
- results.push({
1129
- ...schedule,
1130
- projectId: target.project.id,
1131
- id: current.id,
1132
- status: current.id ? drifted ? "planned_update" : "planned_noop" : "planned_create",
1133
- enabled: desired.enabled,
1134
- command: desired.command,
1135
- serviceId: target.service.id,
1136
- environmentId: target.environment.id
1137
- });
1138
- continue;
1139
- }
1140
- const updated = await ensureRailwayServiceInstanceConfiguration({
1141
- serviceId: target.service.id,
1142
- environmentId: target.environment.id,
1143
- startCommand: desired.command,
1144
- cronSchedule: desired.schedule,
1145
- env: { ...env, TREESEED_RAILWAY_API_TOKEN: effectiveApiToken, RAILWAY_API_TOKEN: effectiveApiToken, TREESEED_RAILWAY_API_URL: effectiveApiUrl },
1146
- fetchImpl
1147
- });
1148
- results.push({
1149
- ...schedule,
1150
- projectId: target.project.id,
1151
- id: updated.instance.id,
1152
- status: updated.updated ? "updated" : "noop",
1153
- enabled: desired.enabled,
1154
- command: desired.command,
1155
- serviceId: target.service.id,
1156
- environmentId: target.environment.id
1157
- });
1158
- }
1159
- } catch (error) {
1160
- if (!isRailwayScheduleCapabilityError(error)) {
1161
- throw error;
1162
- }
1163
- return schedules.map((schedule) => ({
1164
- ...schedule,
1165
- id: null,
1166
- status: "unsupported",
1167
- enabled: schedule.enabled !== false,
1168
- command: schedule.command,
1169
- message: "Railway GraphQL no longer exposes cron trigger resources for this account. Schedule reconciliation is not currently supported."
1170
- }));
1171
- }
1172
- return results;
1173
- }
1174
- async function verifyRailwayScheduledJobs(tenantRoot, scope, { fetchImpl = fetch, apiToken, apiUrl, env = process.env } = {}) {
1175
- const effectiveApiToken = apiToken || resolveRailwayAuthToken(env);
1176
- const effectiveApiUrl = apiUrl || resolveRailwayApiUrl(env);
1177
- const configured = configuredRailwayScheduledJobs(tenantRoot, scope);
1178
- const checks = [];
1179
- try {
1180
- for (const schedule of configured) {
1181
- const target = await resolveRailwayScheduleTarget(schedule, {
1182
- env,
1183
- fetchImpl,
1184
- ensure: false
1185
- });
1186
- if (!target.project || !target.environment || !target.service) {
1187
- checks.push({
1188
- ...schedule,
1189
- id: null,
1190
- ok: false,
1191
- status: "skipped_missing_identifiers",
1192
- message: `Railway schedule target is missing in workspace ${target.workspace.name}.`
1193
- });
1194
- continue;
1195
- }
1196
- const existing = await getRailwayServiceInstance({
1197
- serviceId: target.service.id,
1198
- environmentId: target.environment.id,
1199
- env: { ...env, TREESEED_RAILWAY_API_TOKEN: effectiveApiToken, RAILWAY_API_TOKEN: effectiveApiToken, TREESEED_RAILWAY_API_URL: effectiveApiUrl },
1200
- fetchImpl
1201
- });
1202
- checks.push({
1203
- ...schedule,
1204
- id: existing.id,
1205
- projectId: target.project.id,
1206
- serviceId: target.service.id,
1207
- environmentId: target.environment.id,
1208
- ok: Boolean(
1209
- existing.id && existing.cronSchedule === schedule.expression && (existing.startCommand ?? null) === (schedule.command ?? null)
1210
- ),
1211
- status: existing.id ? "checked" : "missing",
1212
- observed: existing.id ? {
1213
- expression: existing.cronSchedule,
1214
- command: existing.startCommand ?? null,
1215
- enabled: true
1216
- } : null,
1217
- message: existing.id ? void 0 : `Railway schedule ${schedule.logicalName} is missing for ${target.service.name} in ${target.environment.name}.`
1218
- });
1219
- }
1220
- } catch (error) {
1221
- if (!isRailwayScheduleCapabilityError(error)) {
1222
- throw error;
1223
- }
1224
- return {
1225
- ok: true,
1226
- unsupported: true,
1227
- message: "Railway GraphQL no longer exposes cron trigger resources for this account. Schedule verification is skipped.",
1228
- checks: configured.map((schedule) => ({
1229
- ...schedule,
1230
- id: null,
1231
- ok: true,
1232
- status: "unsupported",
1233
- message: "Railway GraphQL no longer exposes cron trigger resources for this account. Schedule verification is skipped."
1234
- }))
1235
- };
1236
- }
1237
- return {
1238
- ok: checks.every((entry) => entry.ok === true),
1239
- checks
1240
- };
1241
- }
1242
- async function verifyRailwayManagedResources(tenantRoot, scope, {
1243
- fetchImpl = fetch,
1244
- apiToken,
1245
- apiUrl,
1246
- env = process.env,
1247
- settleDeployments = false,
1248
- settleTimeoutMs = 6e5,
1249
- settlePollMs = 15e3,
1250
- onProgress
1251
- } = {}) {
1252
- const effectiveApiToken = apiToken || resolveRailwayAuthToken(env);
1253
- const effectiveApiUrl = apiUrl || resolveRailwayApiUrl(env);
1254
- const effectiveEnv = { ...env, TREESEED_RAILWAY_API_TOKEN: effectiveApiToken, RAILWAY_API_TOKEN: effectiveApiToken, TREESEED_RAILWAY_API_URL: effectiveApiUrl };
1255
- const services = configuredRailwayServices(tenantRoot, scope);
1256
- const checks = [];
1257
- const deploymentStatusServices = [];
1258
- for (const service of services) {
1259
- const target = await resolveRailwayScheduleTarget({
1260
- projectId: service.projectId,
1261
- projectName: service.projectName,
1262
- serviceId: service.serviceId,
1263
- serviceName: service.serviceName,
1264
- environment: normalizeRailwayEnvironmentName(service.railwayEnvironment),
1265
- environmentId: envValue("TREESEED_RAILWAY_ENVIRONMENT_ID") || null
1266
- }, {
1267
- env: effectiveEnv,
1268
- fetchImpl,
1269
- ensure: false
1270
- });
1271
- if (!target.project || !target.environment || !target.service) {
1272
- checks.push({
1273
- type: "service",
1274
- service: service.key,
1275
- serviceName: service.serviceName,
1276
- projectName: service.projectName,
1277
- environment: service.railwayEnvironment,
1278
- ok: false,
1279
- status: "missing",
1280
- message: `Railway service ${service.serviceName} is missing in ${service.railwayEnvironment}.`
1281
- });
1282
- continue;
1283
- }
1284
- deploymentStatusServices.push({
1285
- ...service,
1286
- projectId: target.project.id
1287
- });
1288
- const instance = await getRailwayServiceInstance({
1289
- serviceId: target.service.id,
1290
- environmentId: target.environment.id,
1291
- env: effectiveEnv,
1292
- fetchImpl
1293
- });
1294
- checks.push({
1295
- type: "service-instance",
1296
- service: service.key,
1297
- serviceName: target.service.name,
1298
- serviceId: target.service.id,
1299
- projectId: target.project.id,
1300
- environment: target.environment.name,
1301
- environmentId: target.environment.id,
1302
- instanceId: instance.id,
1303
- ok: Boolean(instance.id),
1304
- status: instance.id ? "checked" : "missing",
1305
- observed: instance.id ? {
1306
- rootDirectory: instance.rootDirectory,
1307
- startCommand: instance.startCommand,
1308
- cronSchedule: instance.cronSchedule,
1309
- sleepApplication: instance.sleepApplication,
1310
- runtimeMode: instance.runtimeMode
1311
- } : null,
1312
- message: instance.id ? void 0 : `Railway service instance for ${target.service.name} is missing in ${target.environment.name}.`
1313
- });
1314
- const expectedVolumeMountPath = service.volumeMountPath ?? service.runnerPool?.volumeMountPath ?? null;
1315
- if (expectedVolumeMountPath) {
1316
- const expectedVolumeName = service.key === "operationsRunner" ? deriveRailwayOperationsRunnerVolumeName(target.service.name, target.environment.name) : service.key === "capacityProviderRunner" ? deriveRailwayCapacityProviderRunnerVolumeName(target.service.name, target.environment.name) : deriveRailwayWorkerRunnerVolumeName(target.service.name, target.environment.name);
1317
- const volumes = await listRailwayVolumes({
1318
- projectId: target.project.id,
1319
- env: effectiveEnv,
1320
- fetchImpl
1321
- });
1322
- const volume = volumes.find(
1323
- (candidate) => candidate.name === expectedVolumeName && candidate.instances.some((entry) => entry.serviceId === target.service.id && entry.environmentId === target.environment.id && entry.mountPath === expectedVolumeMountPath)
1324
- ) ?? null;
1325
- checks.push({
1326
- type: "service-volume",
1327
- service: service.key,
1328
- serviceName: target.service.name,
1329
- serviceId: target.service.id,
1330
- projectId: target.project.id,
1331
- environment: target.environment.name,
1332
- environmentId: target.environment.id,
1333
- volumeName: expectedVolumeName,
1334
- mountPath: expectedVolumeMountPath,
1335
- ok: Boolean(volume),
1336
- status: volume ? "checked" : "missing",
1337
- observed: volume ? {
1338
- id: volume.id,
1339
- name: volume.name,
1340
- instances: volume.instances
1341
- } : null,
1342
- message: volume ? void 0 : `Railway volume ${expectedVolumeName} is missing or is not mounted on ${target.service.name} at ${expectedVolumeMountPath}.`
1343
- });
1344
- }
1345
- }
1346
- const schedules = await verifyRailwayScheduledJobs(tenantRoot, scope, {
1347
- fetchImpl,
1348
- apiToken: effectiveApiToken,
1349
- apiUrl: effectiveApiUrl,
1350
- env: effectiveEnv
1351
- });
1352
- for (const check of schedules.checks ?? []) {
1353
- checks.push({
1354
- type: "schedule",
1355
- ...check
1356
- });
1357
- }
1358
- if (settleDeployments) {
1359
- const settled = await waitForRailwayManagedDeploymentsSettled(tenantRoot, scope, {
1360
- services: deploymentStatusServices.length > 0 ? deploymentStatusServices : services,
1361
- env: effectiveEnv,
1362
- fetchImpl,
1363
- timeoutMs: settleTimeoutMs,
1364
- pollMs: settlePollMs,
1365
- onProgress
1366
- });
1367
- for (const check of settled.checks ?? []) {
1368
- checks.push(check);
1369
- }
1370
- }
1371
- return {
1372
- ok: checks.every((entry) => entry.ok === true || entry.skipped === true),
1373
- checks
1374
- };
1375
- }
1376
- function railwayPhaseTimeoutMs(env = process.env, phase = "default") {
1377
- const configured = Number.parseInt(configuredEnvValue(env, `TREESEED_RAILWAY_${String(phase).toUpperCase().replace(/[^A-Z0-9]+/gu, "_")}_TIMEOUT_MS`), 10);
1378
- if (Number.isFinite(configured) && configured > 0) {
1379
- return configured;
1380
- }
1381
- const defaultConfigured = Number.parseInt(configuredEnvValue(env, "TREESEED_RAILWAY_PHASE_TIMEOUT_MS"), 10);
1382
- if (Number.isFinite(defaultConfigured) && defaultConfigured > 0) {
1383
- return defaultConfigured;
1384
- }
1385
- if (phase === "sync_runtime_config") {
1386
- return 6e5;
1387
- }
1388
- return phase === "deploy" ? 3e5 : 18e4;
1389
- }
1390
- async function withRailwayPhaseTimeout(run, timeoutMs, message) {
1391
- let timer = null;
1392
- try {
1393
- return await Promise.race([
1394
- Promise.resolve().then(run),
1395
- new Promise((_, reject) => {
1396
- timer = setTimeout(() => reject(new Error(message)), timeoutMs);
1397
- })
1398
- ]);
1399
- } finally {
1400
- if (timer) {
1401
- clearTimeout(timer);
1402
- }
1403
- }
1404
- }
1405
- function shouldRunRailwayPredeployBuild(env = process.env) {
1406
- const configured = configuredEnvValue(env, "TREESEED_RAILWAY_PREDEPLOY_BUILD");
1407
- if (configured === "1" || configured === "true") {
1408
- return true;
1409
- }
1410
- if (configured === "0" || configured === "false") {
1411
- return false;
1412
- }
1413
- return configuredEnvValue(env, "CI") !== "true";
1414
- }
1415
- async function syncRailwayApiDeviceLoginVariables(service, env, write, prefix, fetchImpl = fetch) {
1416
- if (service.key !== "api") {
1417
- return null;
1418
- }
1419
- const projectId = configuredEnvValue(service, "projectId");
1420
- const environmentId = configuredEnvValue(service, "environmentId");
1421
- const serviceId = configuredEnvValue(service, "serviceId");
1422
- if (!projectId || !environmentId || !serviceId) {
1423
- return null;
1424
- }
1425
- const variables = Object.fromEntries(
1426
- [
1427
- "TREESEED_API_AUTH_APPROVAL_BASE_URL",
1428
- "TREESEED_SITE_URL",
1429
- "TREESEED_BETTER_AUTH_URL"
1430
- ].map((key) => [key, configuredEnvValue(env, key)]).filter(([, value]) => value)
1431
- );
1432
- if (Object.keys(variables).length === 0) {
1433
- return null;
1434
- }
1435
- await upsertRailwayVariables({
1436
- projectId,
1437
- environmentId,
1438
- serviceId,
1439
- variables,
1440
- env,
1441
- fetchImpl
1442
- });
1443
- write ? write(`[${prefix.scope}][${prefix.system}][${prefix.task}][vars] Synced device login approval URL variables for ${service.serviceName ?? serviceId}.`, "stdout") : null;
1444
- return { variables: Object.keys(variables) };
1445
- }
1446
- async function resolveRailwayDeployProjectContext(service, { env = process.env, fetchImpl = fetch } = {}) {
1447
- if (service.projectId) {
1448
- return service;
1449
- }
1450
- const workspace = await resolveRailwayWorkspaceContext({ env, fetchImpl });
1451
- const { project } = await ensureRailwayProject({
1452
- projectId: service.projectId,
1453
- projectName: service.projectName,
1454
- defaultEnvironmentName: service.railwayEnvironment,
1455
- env,
1456
- workspace: workspace.id,
1457
- fetchImpl
1458
- });
1459
- return {
1460
- ...service,
1461
- projectId: project.id,
1462
- projectName: project.name ?? service.projectName
1463
- };
1464
- }
1465
- async function syncRailwayServiceRuntimeConfigurationAfterDeploy(tenantRoot, service, { env = process.env, writePhase = null, fetchImpl = fetch } = {}) {
1466
- const writeSyncPhase = (stage, message) => {
1467
- if (typeof writePhase === "function") {
1468
- writePhase(`sync-runtime-config:${stage}`, message);
1469
- }
1470
- };
1471
- const wantsInstanceConfig = service.buildCommand || service.startCommand || !(service.imageRef || service.sourceMode === "image") && service.rootDir || service.healthcheckPath || service.healthcheckTimeoutSeconds !== null || service.healthcheckTimeoutSeconds !== void 0 || service.healthcheckIntervalSeconds !== null || service.healthcheckIntervalSeconds !== void 0 || service.restartPolicy || service.runtimeMode;
1472
- const wantsRunnerVolume = service.key === "workerRunner" || service.key === "operationsRunner" || service.key === "capacityProviderRunner";
1473
- if (!wantsInstanceConfig && !wantsRunnerVolume) {
1474
- writeSyncPhase("skip", "No runtime configuration changes requested.");
1475
- return null;
1476
- }
1477
- writeSyncPhase("workspace", "Resolving Railway workspace.");
1478
- const workspace = await resolveRailwayWorkspaceContext({ env, fetchImpl });
1479
- let project = null;
1480
- if (service.projectId) {
1481
- writeSyncPhase("project", `Resolving Railway project ${service.projectName ?? service.projectId}.`);
1482
- project = await ensureRailwayProject({
1483
- projectId: service.projectId,
1484
- projectName: service.projectName,
1485
- defaultEnvironmentName: service.railwayEnvironment,
1486
- env,
1487
- workspace: workspace.id,
1488
- fetchImpl
1489
- }).then((result) => result.project);
1490
- } else {
1491
- writeSyncPhase("project", `Looking up Railway project ${service.projectName}.`);
1492
- const projects = await listRailwayProjects({ env, workspaceId: workspace.id, fetchImpl });
1493
- project = projects.find((entry) => entry.name === service.projectName) ?? null;
1494
- if (!project) {
1495
- writeSyncPhase("project", `Creating Railway project ${service.projectName}.`);
1496
- project = await ensureRailwayProject({
1497
- projectName: service.projectName,
1498
- defaultEnvironmentName: service.railwayEnvironment,
1499
- env,
1500
- workspace: workspace.id,
1501
- fetchImpl
1502
- }).then((result) => result.project);
1503
- }
1504
- }
1505
- const environmentName = normalizeRailwayEnvironmentName(service.railwayEnvironment);
1506
- let environment = project.environments.find((entry) => entry.name === environmentName || entry.id === environmentName) ?? null;
1507
- if (!environment) {
1508
- writeSyncPhase("environment", `Creating Railway environment ${environmentName}.`);
1509
- environment = await ensureRailwayEnvironment({
1510
- projectId: project.id,
1511
- environmentName,
1512
- env,
1513
- fetchImpl
1514
- }).then((result) => result.environment);
1515
- }
1516
- let railwayService = project.services.find((entry) => entry.id === service.serviceId || entry.name === service.serviceName) ?? null;
1517
- if (!railwayService) {
1518
- writeSyncPhase("service", `Creating Railway service ${service.serviceName ?? service.key}.`);
1519
- railwayService = await ensureRailwayService({
1520
- projectId: project.id,
1521
- serviceId: service.serviceId,
1522
- serviceName: service.serviceName,
1523
- environmentId: environment.id,
1524
- imageRef: service.imageRef,
1525
- sourceRepo: service.sourceRepo,
1526
- sourceBranch: service.sourceBranch,
1527
- env,
1528
- fetchImpl
1529
- }).then((result) => result.service);
1530
- } else if (service.imageRef || service.sourceRepo) {
1531
- railwayService = await ensureRailwayService({
1532
- projectId: project.id,
1533
- serviceId: service.serviceId,
1534
- serviceName: service.serviceName,
1535
- environmentId: environment.id,
1536
- imageRef: service.imageRef,
1537
- sourceRepo: service.sourceRepo,
1538
- sourceBranch: service.sourceBranch,
1539
- env,
1540
- fetchImpl
1541
- }).then((result) => result.service);
1542
- }
1543
- if (wantsInstanceConfig) {
1544
- writeSyncPhase("instance", "Ensuring Railway service instance configuration.");
1545
- }
1546
- const runtimeConfiguration = wantsInstanceConfig ? await ensureRailwayServiceInstanceConfiguration({
1547
- serviceId: railwayService.id,
1548
- environmentId: environment.id,
1549
- buildCommand: service.buildCommand,
1550
- startCommand: railwayServiceRuntimeStartCommand(service),
1551
- cronSchedule: service.schedule?.[0] ?? null,
1552
- rootDirectory: service.imageRef || service.sourceMode === "image" ? null : service.sourceRootDirectory ?? ".",
1553
- healthcheckPath: service.healthcheckPath,
1554
- healthcheckTimeoutSeconds: service.healthcheckTimeoutSeconds,
1555
- healthcheckIntervalSeconds: service.healthcheckIntervalSeconds,
1556
- restartPolicy: service.restartPolicy,
1557
- runtimeMode: service.runtimeMode,
1558
- deploymentRegion: wantsRunnerVolume ? configuredEnvValue(env, "TREESEED_RAILWAY_STATEFUL_REGION") || "us-west2" : null,
1559
- env,
1560
- fetchImpl
1561
- }) : null;
1562
- writeSyncPhase("variables", "Upserting Railway runtime variables.");
1563
- await upsertRailwayVariables({
1564
- projectId: project.id,
1565
- environmentId: environment.id,
1566
- serviceId: railwayService.id,
1567
- variables: {
1568
- TREESEED_SKIP_PACKAGE_PREPARE: "1",
1569
- ...["api", "operationsRunner"].includes(service.key) ? {
1570
- ...configuredEnvValue(env, "TREESEED_PLATFORM_RUNNER_SECRET") ? {
1571
- TREESEED_PLATFORM_RUNNER_SECRET: configuredEnvValue(env, "TREESEED_PLATFORM_RUNNER_SECRET")
1572
- } : {},
1573
- ...configuredEnvValue(env, "TREESEED_CREDENTIAL_SESSION_SECRET") ? {
1574
- TREESEED_CREDENTIAL_SESSION_SECRET: configuredEnvValue(env, "TREESEED_CREDENTIAL_SESSION_SECRET")
1575
- } : {},
1576
- ...configuredEnvValue(env, "TREESEED_WEB_SERVICE_SECRET") ? {
1577
- TREESEED_WEB_SERVICE_SECRET: configuredEnvValue(env, "TREESEED_WEB_SERVICE_SECRET")
1578
- } : {}
1579
- } : {},
1580
- ...service.sourceMode === "git" ? {
1581
- TREESEED_DEPLOY_SOURCE_MODE: "git",
1582
- ...service.sourceRepo ? { TREESEED_DEPLOY_SOURCE_REPOSITORY: service.sourceRepo } : {},
1583
- ...service.sourceBranch ? { TREESEED_DEPLOY_SOURCE_BRANCH: service.sourceBranch } : {},
1584
- ...service.sourceCommit ? { TREESEED_DEPLOY_SOURCE_COMMIT: service.sourceCommit } : {}
1585
- } : {
1586
- TREESEED_DEPLOY_SOURCE_MODE: "image"
1587
- },
1588
- ...service.key === "operationsRunner" ? {
1589
- NIXPACKS_APT_PKGS: "git",
1590
- NIXPACKS_PKGS: "git",
1591
- TREESEED_PLATFORM_RUNNER_ID: service.runnerId ?? railwayService.name,
1592
- TREESEED_PLATFORM_RUNNER_DATA_DIR: service.volumeMountPath ?? WORKER_RUNNER_VOLUME_MOUNT_PATH,
1593
- TREESEED_PLATFORM_RUNNER_ENVIRONMENT: normalizeScope(service.scope) === "prod" ? "production" : normalizeScope(service.scope),
1594
- TREESEED_MANAGER_ID: normalizeScope(service.scope),
1595
- ...configuredEnvValue(env, "TREESEED_RAILWAY_API_TOKEN") ? { TREESEED_RAILWAY_API_TOKEN: configuredEnvValue(env, "TREESEED_RAILWAY_API_TOKEN") } : {},
1596
- ...configuredEnvValue(env, "TREESEED_RAILWAY_WORKSPACE") ? { TREESEED_RAILWAY_WORKSPACE: configuredEnvValue(env, "TREESEED_RAILWAY_WORKSPACE") } : {},
1597
- ...configuredEnvValue(env, "TREESEED_API_BASE_URL") || configuredEnvValue(env, "TREESEED_URL") ? {
1598
- TREESEED_API_BASE_URL: configuredEnvValue(env, "TREESEED_API_BASE_URL") || configuredEnvValue(env, "TREESEED_URL")
1599
- } : {}
1600
- } : {},
1601
- ...String(service.key).startsWith("capacityProvider") ? {
1602
- TREESEED_PROVIDER_ENVIRONMENT: normalizeScope(service.scope) === "prod" ? "production" : normalizeScope(service.scope),
1603
- TREESEED_MANAGER_ID: normalizeScope(service.scope),
1604
- TREESEED_MARKET_ID: normalizeScope(service.scope),
1605
- TREESEED_PROVIDER_ROLE: service.key === "capacityProviderManager" ? "manager" : "runner",
1606
- ...service.key === "capacityProviderRunner" ? {
1607
- TREESEED_PROVIDER_DATA_DIR: service.volumeMountPath ?? WORKER_RUNNER_VOLUME_MOUNT_PATH,
1608
- TREESEED_PROVIDER_RUNNER_ID: service.runnerId ?? railwayService.name
1609
- } : {},
1610
- ...configuredEnvValue(env, "TREESEED_MARKET_URL") ? { TREESEED_MARKET_URL: configuredEnvValue(env, "TREESEED_MARKET_URL") } : {},
1611
- ...configuredEnvValue(env, "TREESEED_CAPACITY_PROVIDER_API_KEY") ? { TREESEED_CAPACITY_PROVIDER_API_KEY: configuredEnvValue(env, "TREESEED_CAPACITY_PROVIDER_API_KEY") } : {},
1612
- ...configuredEnvValue(env, "TREESEED_CODEX_AUTH_JSON_B64") ? { TREESEED_CODEX_AUTH_JSON_B64: configuredEnvValue(env, "TREESEED_CODEX_AUTH_JSON_B64") } : {}
1613
- } : {}
1614
- },
1615
- env,
1616
- fetchImpl
1617
- });
1618
- const volumeMountPath = service.volumeMountPath ?? service.runnerPool?.volumeMountPath ?? WORKER_RUNNER_VOLUME_MOUNT_PATH;
1619
- if (wantsRunnerVolume) {
1620
- writeSyncPhase("volume", `Ensuring Railway volume mounted at ${volumeMountPath}.`);
1621
- }
1622
- const volumeConfiguration = wantsRunnerVolume ? await ensureRailwayServiceVolume({
1623
- projectId: project.id,
1624
- environmentId: environment.id,
1625
- serviceId: railwayService.id,
1626
- name: service.key === "operationsRunner" ? deriveRailwayOperationsRunnerVolumeName(railwayService.name, environment.name) : service.key === "capacityProviderRunner" ? deriveRailwayCapacityProviderRunnerVolumeName(railwayService.name, environment.name) : deriveRailwayWorkerRunnerVolumeName(railwayService.name, environment.name),
1627
- mountPath: volumeMountPath,
1628
- env,
1629
- fetchImpl
1630
- }) : null;
1631
- if (wantsRunnerVolume) {
1632
- if (service.key === "workerRunner") {
1633
- writeSyncPhase("volume-vars", "Upserting Railway worker volume variables.");
1634
- await upsertRailwayVariables({
1635
- projectId: project.id,
1636
- environmentId: environment.id,
1637
- serviceId: railwayService.id,
1638
- variables: {
1639
- TREESEED_RUNNER_SERVICE_NAME: railwayService.name,
1640
- TREESEED_RUNNER_VOLUME_ROOT: volumeMountPath,
1641
- TREESEED_RUNNER_VOLUME_NAME: volumeConfiguration?.volume.name ?? deriveRailwayWorkerRunnerVolumeName(railwayService.name, environment.name),
1642
- TREESEED_WORKER_IDLE_EXIT_MS: configuredEnvValue(env, "TREESEED_WORKER_IDLE_EXIT_MS") || "60000",
1643
- ...volumeConfiguration?.volume.id ? { TREESEED_RUNNER_VOLUME_ID: volumeConfiguration.volume.id } : {}
1644
- },
1645
- env,
1646
- fetchImpl
1647
- });
1648
- }
1649
- }
1650
- writeSyncPhase("done", "Runtime configuration is synchronized.");
1651
- return {
1652
- projectId: project.id,
1653
- projectName: project.name ?? service.projectName ?? null,
1654
- environmentId: environment.id,
1655
- environmentName: environment.name ?? environmentName,
1656
- serviceId: railwayService.id,
1657
- serviceName: railwayService.name ?? service.serviceName ?? null,
1658
- instance: runtimeConfiguration?.instance ?? null,
1659
- updated: Boolean(runtimeConfiguration?.updated || volumeConfiguration?.updated || volumeConfiguration?.created),
1660
- volume: volumeConfiguration ? {
1661
- id: volumeConfiguration.volume.id,
1662
- name: volumeConfiguration.volume.name,
1663
- mountPath: volumeConfiguration.instance?.mountPath ?? volumeMountPath,
1664
- created: volumeConfiguration.created,
1665
- updated: volumeConfiguration.updated
1666
- } : null
1667
- };
1668
- }
1669
- async function deployRailwayService(tenantRoot, service, {
1670
- planOnly = false,
1671
- write,
1672
- prefix,
1673
- env = process.env,
1674
- fetchImpl = fetch
1675
- } = {}) {
1676
- const timings = [];
1677
- if (planOnly) {
1678
- return {
1679
- service: service.key,
1680
- status: "planned",
1681
- command: "railway-cli service redeploy",
1682
- cwd: service.rootDir,
1683
- publicBaseUrl: service.publicBaseUrl,
1684
- timings,
1685
- transport: {
1686
- railway: {
1687
- reconcile: "api",
1688
- deploy: railwayDeployTransport(env)
1689
- }
1690
- }
1691
- };
1692
- }
1693
- const deployService = await timedRailwayPhase(timings, "railway:resolve-context", () => resolveRailwayDeployProjectContext(service, { env, fetchImpl }), {
1694
- service: service.key
1695
- });
1696
- const commandEnv = buildRailwayCommandEnv({ ...process.env, ...env });
1697
- const deployTransport = railwayDeployTransport(commandEnv);
1698
- const taskPrefix = prefix ?? {
1699
- scope: normalizeScope(deployService.scope ?? deployService.railwayEnvironment ?? "railway"),
1700
- system: deployService.key === "api" ? "api" : "agents",
1701
- task: `${deployService.key}-railway-deploy`,
1702
- stage: "deploy"
1703
- };
1704
- const writePhase = (stage, message) => {
1705
- write ? write(`[${taskPrefix.scope}][${taskPrefix.system}][${taskPrefix.task}][${stage}] ${message}`, "stdout") : null;
1706
- };
1707
- writePhase("resolve-context", `Resolved Railway service ${deployService.serviceName ?? deployService.serviceId ?? deployService.key}.`);
1708
- writePhase("sync-runtime-config", "Syncing Railway runtime configuration.");
1709
- const runtimeConfiguration = await timedRailwayPhase(timings, "railway:sync-runtime-config", () => withRailwayPhaseTimeout(
1710
- () => syncRailwayServiceRuntimeConfigurationAfterDeploy(tenantRoot, deployService, { env: commandEnv, writePhase, fetchImpl }),
1711
- railwayPhaseTimeoutMs(commandEnv, "sync_runtime_config"),
1712
- `Railway runtime configuration sync timed out for ${deployService.serviceName ?? deployService.key}.`
1713
- ), { service: deployService.key });
1714
- const cliDeployService = {
1715
- ...deployService,
1716
- projectId: runtimeConfiguration?.projectId ?? deployService.projectId,
1717
- projectName: runtimeConfiguration?.projectName ?? deployService.projectName,
1718
- environmentId: runtimeConfiguration?.environmentId ?? deployService.environmentId,
1719
- serviceId: runtimeConfiguration?.serviceId ?? deployService.serviceId,
1720
- serviceName: runtimeConfiguration?.serviceName ?? deployService.serviceName,
1721
- railwayEnvironment: runtimeConfiguration?.environmentName ?? runtimeConfiguration?.environmentId ?? deployService.railwayEnvironment
1722
- };
1723
- writePhase("device-login-vars", "Syncing Railway device-login variables.");
1724
- await timedRailwayPhase(timings, "railway:device-login-vars", () => withRailwayPhaseTimeout(
1725
- () => syncRailwayApiDeviceLoginVariables(cliDeployService, commandEnv, write, taskPrefix, fetchImpl),
1726
- railwayPhaseTimeoutMs(commandEnv, "device_login_vars"),
1727
- `Railway device-login variable sync timed out for ${cliDeployService.serviceName ?? cliDeployService.key}.`
1728
- ), {
1729
- service: cliDeployService.key
1730
- });
1731
- if (deployService.buildCommand && !deployService.imageRef && shouldRunRailwayPredeployBuild(commandEnv)) {
1732
- const buildResult = await timedRailwayPhase(timings, "railway:predeploy-build", () => runPrefixedCommand("bash", ["-lc", deployService.buildCommand], {
1733
- cwd: deployService.rootDir,
1734
- env: commandEnv,
1735
- write,
1736
- prefix: { ...taskPrefix, stage: "build" }
1737
- }), { service: deployService.key });
1738
- if (buildResult.status !== 0) {
1739
- throw new Error(`Railway ${deployService.key} build command failed.`);
1740
- }
1741
- }
1742
- if (deployTransport !== "cli-fallback") {
1743
- writePhase("deploy", `Deploying Railway service ${cliDeployService.serviceName ?? cliDeployService.serviceId ?? cliDeployService.key} through the managed Railway CLI.`);
1744
- const apiDeploy = await timedRailwayPhase(timings, "railway:api-deploy", () => withRailwayPhaseTimeout(
1745
- () => deployRailwayServiceInstance({
1746
- projectId: cliDeployService.projectId,
1747
- serviceId: cliDeployService.serviceId,
1748
- environmentId: cliDeployService.environmentId,
1749
- env: commandEnv,
1750
- fetchImpl
1751
- }),
1752
- railwayPhaseTimeoutMs(commandEnv, "deploy"),
1753
- `Railway API deploy phase timed out for ${cliDeployService.serviceName ?? cliDeployService.key}.`
1754
- ), { service: cliDeployService.key });
1755
- return {
1756
- service: deployService.key,
1757
- status: "deployed",
1758
- command: "railway-cli service redeploy",
1759
- cwd: deployService.rootDir,
1760
- publicBaseUrl: deployService.publicBaseUrl,
1761
- timings,
1762
- deploymentId: apiDeploy.deploymentId,
1763
- transport: {
1764
- railway: {
1765
- reconcile: "api",
1766
- deploy: "api"
1767
- }
1768
- },
1769
- runtimeConfiguration: runtimeConfiguration ? {
1770
- updated: runtimeConfiguration.updated,
1771
- healthcheckPath: runtimeConfiguration.instance?.healthcheckPath ?? null,
1772
- healthcheckTimeoutSeconds: runtimeConfiguration.instance?.healthcheckTimeoutSeconds ?? null,
1773
- runtimeMode: runtimeConfiguration.instance?.runtimeMode ?? null,
1774
- volume: runtimeConfiguration.volume ?? null
1775
- } : null
1776
- };
1777
- }
1778
- throw new Error(`Railway deployment for ${cliDeployService.serviceName ?? cliDeployService.serviceId ?? cliDeployService.key} requires Railway API deployment support. CLI deploy fallback has been removed.`);
1779
- }
1780
- export {
1781
- buildRailwayCommandEnv,
1782
- collectRailwayDeploymentStatusChecks,
1783
- configuredRailwayScheduledJobs,
1784
- configuredRailwayServices,
1785
- deployRailwayService,
1786
- deriveRailwayCapacityProviderRunnerServiceName,
1787
- deriveRailwayCapacityProviderRunnerVolumeName,
1788
- deriveRailwayOperationsRunnerServiceName,
1789
- deriveRailwayOperationsRunnerVolumeName,
1790
- deriveRailwayWorkerRunnerServiceName,
1791
- deriveRailwayWorkerRunnerVolumeName,
1792
- ensureRailwayScheduledJobs,
1793
- findStaleTreeseedOperationsRunnerResources,
1794
- isTreeseedOperationsRunnerResourceName,
1795
- isUsableRailwayToken,
1796
- obsoleteUnqualifiedRailwayResourceNames,
1797
- parseRailwayJsonOutput,
1798
- railwayObsoleteAliasCleanupPolicy,
1799
- railwayServiceRuntimeStartCommand,
1800
- resolveRailwayAuthToken,
1801
- resolveRailwayDeploymentProfile,
1802
- shouldRunRailwayPredeployBuild,
1803
- validateRailwayDeployPrerequisites,
1804
- validateRailwayServiceConfiguration,
1805
- verifyRailwayManagedResources,
1806
- verifyRailwayScheduledJobs,
1807
- waitForRailwayManagedDeploymentsSettled
1808
- };