@agent-relay/cloud 2.0.23 → 6.0.2

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 (289) hide show
  1. package/dist/api-client.d.ts +33 -0
  2. package/dist/api-client.d.ts.map +1 -0
  3. package/dist/api-client.js +123 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/auth.d.ts +13 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +299 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/index.d.ts +4 -10
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -37
  12. package/dist/index.js.map +1 -1
  13. package/dist/types.d.ts +73 -0
  14. package/dist/types.d.ts.map +1 -0
  15. package/dist/types.js +12 -0
  16. package/dist/types.js.map +1 -0
  17. package/dist/workflows.d.ts +46 -0
  18. package/dist/workflows.d.ts.map +1 -0
  19. package/dist/workflows.js +464 -0
  20. package/dist/workflows.js.map +1 -0
  21. package/package.json +8 -25
  22. package/dist/api/admin.d.ts +0 -8
  23. package/dist/api/admin.d.ts.map +0 -1
  24. package/dist/api/admin.js +0 -225
  25. package/dist/api/admin.js.map +0 -1
  26. package/dist/api/auth.d.ts +0 -20
  27. package/dist/api/auth.d.ts.map +0 -1
  28. package/dist/api/auth.js +0 -138
  29. package/dist/api/auth.js.map +0 -1
  30. package/dist/api/billing.d.ts +0 -7
  31. package/dist/api/billing.d.ts.map +0 -1
  32. package/dist/api/billing.js +0 -564
  33. package/dist/api/billing.js.map +0 -1
  34. package/dist/api/cli-pty-runner.d.ts +0 -53
  35. package/dist/api/cli-pty-runner.d.ts.map +0 -1
  36. package/dist/api/cli-pty-runner.js +0 -175
  37. package/dist/api/cli-pty-runner.js.map +0 -1
  38. package/dist/api/codex-auth-helper.d.ts +0 -21
  39. package/dist/api/codex-auth-helper.d.ts.map +0 -1
  40. package/dist/api/codex-auth-helper.js +0 -327
  41. package/dist/api/codex-auth-helper.js.map +0 -1
  42. package/dist/api/consensus.d.ts +0 -13
  43. package/dist/api/consensus.d.ts.map +0 -1
  44. package/dist/api/consensus.js +0 -261
  45. package/dist/api/consensus.js.map +0 -1
  46. package/dist/api/coordinators.d.ts +0 -8
  47. package/dist/api/coordinators.d.ts.map +0 -1
  48. package/dist/api/coordinators.js +0 -750
  49. package/dist/api/coordinators.js.map +0 -1
  50. package/dist/api/daemons.d.ts +0 -12
  51. package/dist/api/daemons.d.ts.map +0 -1
  52. package/dist/api/daemons.js +0 -535
  53. package/dist/api/daemons.js.map +0 -1
  54. package/dist/api/email-auth.d.ts +0 -11
  55. package/dist/api/email-auth.d.ts.map +0 -1
  56. package/dist/api/email-auth.js +0 -347
  57. package/dist/api/email-auth.js.map +0 -1
  58. package/dist/api/generic-webhooks.d.ts +0 -8
  59. package/dist/api/generic-webhooks.d.ts.map +0 -1
  60. package/dist/api/generic-webhooks.js +0 -129
  61. package/dist/api/generic-webhooks.js.map +0 -1
  62. package/dist/api/git.d.ts +0 -8
  63. package/dist/api/git.d.ts.map +0 -1
  64. package/dist/api/git.js +0 -269
  65. package/dist/api/git.js.map +0 -1
  66. package/dist/api/github-app.d.ts +0 -11
  67. package/dist/api/github-app.d.ts.map +0 -1
  68. package/dist/api/github-app.js +0 -223
  69. package/dist/api/github-app.js.map +0 -1
  70. package/dist/api/middleware/planLimits.d.ts +0 -43
  71. package/dist/api/middleware/planLimits.d.ts.map +0 -1
  72. package/dist/api/middleware/planLimits.js +0 -202
  73. package/dist/api/middleware/planLimits.js.map +0 -1
  74. package/dist/api/monitoring.d.ts +0 -11
  75. package/dist/api/monitoring.d.ts.map +0 -1
  76. package/dist/api/monitoring.js +0 -578
  77. package/dist/api/monitoring.js.map +0 -1
  78. package/dist/api/nango-auth.d.ts +0 -9
  79. package/dist/api/nango-auth.d.ts.map +0 -1
  80. package/dist/api/nango-auth.js +0 -741
  81. package/dist/api/nango-auth.js.map +0 -1
  82. package/dist/api/onboarding.d.ts +0 -15
  83. package/dist/api/onboarding.d.ts.map +0 -1
  84. package/dist/api/onboarding.js +0 -679
  85. package/dist/api/onboarding.js.map +0 -1
  86. package/dist/api/policy.d.ts +0 -8
  87. package/dist/api/policy.d.ts.map +0 -1
  88. package/dist/api/policy.js +0 -229
  89. package/dist/api/policy.js.map +0 -1
  90. package/dist/api/provider-env.d.ts +0 -26
  91. package/dist/api/provider-env.d.ts.map +0 -1
  92. package/dist/api/provider-env.js +0 -141
  93. package/dist/api/provider-env.js.map +0 -1
  94. package/dist/api/providers.d.ts +0 -7
  95. package/dist/api/providers.d.ts.map +0 -1
  96. package/dist/api/providers.js +0 -574
  97. package/dist/api/providers.js.map +0 -1
  98. package/dist/api/repos.d.ts +0 -8
  99. package/dist/api/repos.d.ts.map +0 -1
  100. package/dist/api/repos.js +0 -577
  101. package/dist/api/repos.js.map +0 -1
  102. package/dist/api/sessions.d.ts +0 -11
  103. package/dist/api/sessions.d.ts.map +0 -1
  104. package/dist/api/sessions.js +0 -302
  105. package/dist/api/sessions.js.map +0 -1
  106. package/dist/api/teams.d.ts +0 -7
  107. package/dist/api/teams.d.ts.map +0 -1
  108. package/dist/api/teams.js +0 -281
  109. package/dist/api/teams.js.map +0 -1
  110. package/dist/api/test-helpers.d.ts +0 -10
  111. package/dist/api/test-helpers.d.ts.map +0 -1
  112. package/dist/api/test-helpers.js +0 -745
  113. package/dist/api/test-helpers.js.map +0 -1
  114. package/dist/api/usage.d.ts +0 -7
  115. package/dist/api/usage.d.ts.map +0 -1
  116. package/dist/api/usage.js +0 -111
  117. package/dist/api/usage.js.map +0 -1
  118. package/dist/api/webhooks.d.ts +0 -8
  119. package/dist/api/webhooks.d.ts.map +0 -1
  120. package/dist/api/webhooks.js +0 -645
  121. package/dist/api/webhooks.js.map +0 -1
  122. package/dist/api/workspaces.d.ts +0 -25
  123. package/dist/api/workspaces.d.ts.map +0 -1
  124. package/dist/api/workspaces.js +0 -1799
  125. package/dist/api/workspaces.js.map +0 -1
  126. package/dist/billing/index.d.ts +0 -9
  127. package/dist/billing/index.d.ts.map +0 -1
  128. package/dist/billing/index.js +0 -9
  129. package/dist/billing/index.js.map +0 -1
  130. package/dist/billing/plans.d.ts +0 -39
  131. package/dist/billing/plans.d.ts.map +0 -1
  132. package/dist/billing/plans.js +0 -245
  133. package/dist/billing/plans.js.map +0 -1
  134. package/dist/billing/service.d.ts +0 -80
  135. package/dist/billing/service.d.ts.map +0 -1
  136. package/dist/billing/service.js +0 -388
  137. package/dist/billing/service.js.map +0 -1
  138. package/dist/billing/types.d.ts +0 -141
  139. package/dist/billing/types.d.ts.map +0 -1
  140. package/dist/billing/types.js +0 -7
  141. package/dist/billing/types.js.map +0 -1
  142. package/dist/config.d.ts +0 -5
  143. package/dist/config.d.ts.map +0 -1
  144. package/dist/config.js +0 -5
  145. package/dist/config.js.map +0 -1
  146. package/dist/db/bulk-ingest.d.ts +0 -89
  147. package/dist/db/bulk-ingest.d.ts.map +0 -1
  148. package/dist/db/bulk-ingest.js +0 -268
  149. package/dist/db/bulk-ingest.js.map +0 -1
  150. package/dist/db/drizzle.d.ts +0 -290
  151. package/dist/db/drizzle.d.ts.map +0 -1
  152. package/dist/db/drizzle.js +0 -1422
  153. package/dist/db/drizzle.js.map +0 -1
  154. package/dist/db/index.d.ts +0 -56
  155. package/dist/db/index.d.ts.map +0 -1
  156. package/dist/db/index.js +0 -70
  157. package/dist/db/index.js.map +0 -1
  158. package/dist/db/schema.d.ts +0 -5117
  159. package/dist/db/schema.d.ts.map +0 -1
  160. package/dist/db/schema.js +0 -656
  161. package/dist/db/schema.js.map +0 -1
  162. package/dist/provisioner/index.d.ts +0 -207
  163. package/dist/provisioner/index.d.ts.map +0 -1
  164. package/dist/provisioner/index.js +0 -2118
  165. package/dist/provisioner/index.js.map +0 -1
  166. package/dist/server.d.ts +0 -17
  167. package/dist/server.d.ts.map +0 -1
  168. package/dist/server.js +0 -2055
  169. package/dist/server.js.map +0 -1
  170. package/dist/services/auto-scaler.d.ts +0 -152
  171. package/dist/services/auto-scaler.d.ts.map +0 -1
  172. package/dist/services/auto-scaler.js +0 -439
  173. package/dist/services/auto-scaler.js.map +0 -1
  174. package/dist/services/capacity-manager.d.ts +0 -148
  175. package/dist/services/capacity-manager.d.ts.map +0 -1
  176. package/dist/services/capacity-manager.js +0 -449
  177. package/dist/services/capacity-manager.js.map +0 -1
  178. package/dist/services/ci-agent-spawner.d.ts +0 -49
  179. package/dist/services/ci-agent-spawner.d.ts.map +0 -1
  180. package/dist/services/ci-agent-spawner.js +0 -373
  181. package/dist/services/ci-agent-spawner.js.map +0 -1
  182. package/dist/services/cloud-message-bus.d.ts +0 -28
  183. package/dist/services/cloud-message-bus.d.ts.map +0 -1
  184. package/dist/services/cloud-message-bus.js +0 -19
  185. package/dist/services/cloud-message-bus.js.map +0 -1
  186. package/dist/services/compute-enforcement.d.ts +0 -57
  187. package/dist/services/compute-enforcement.d.ts.map +0 -1
  188. package/dist/services/compute-enforcement.js +0 -175
  189. package/dist/services/compute-enforcement.js.map +0 -1
  190. package/dist/services/coordinator.d.ts +0 -62
  191. package/dist/services/coordinator.d.ts.map +0 -1
  192. package/dist/services/coordinator.js +0 -389
  193. package/dist/services/coordinator.js.map +0 -1
  194. package/dist/services/index.d.ts +0 -17
  195. package/dist/services/index.d.ts.map +0 -1
  196. package/dist/services/index.js +0 -25
  197. package/dist/services/index.js.map +0 -1
  198. package/dist/services/intro-expiration.d.ts +0 -60
  199. package/dist/services/intro-expiration.d.ts.map +0 -1
  200. package/dist/services/intro-expiration.js +0 -252
  201. package/dist/services/intro-expiration.js.map +0 -1
  202. package/dist/services/mention-handler.d.ts +0 -65
  203. package/dist/services/mention-handler.d.ts.map +0 -1
  204. package/dist/services/mention-handler.js +0 -405
  205. package/dist/services/mention-handler.js.map +0 -1
  206. package/dist/services/nango.d.ts +0 -219
  207. package/dist/services/nango.d.ts.map +0 -1
  208. package/dist/services/nango.js +0 -424
  209. package/dist/services/nango.js.map +0 -1
  210. package/dist/services/persistence.d.ts +0 -131
  211. package/dist/services/persistence.d.ts.map +0 -1
  212. package/dist/services/persistence.js +0 -200
  213. package/dist/services/persistence.js.map +0 -1
  214. package/dist/services/planLimits.d.ts +0 -147
  215. package/dist/services/planLimits.d.ts.map +0 -1
  216. package/dist/services/planLimits.js +0 -335
  217. package/dist/services/planLimits.js.map +0 -1
  218. package/dist/services/presence-registry.d.ts +0 -56
  219. package/dist/services/presence-registry.d.ts.map +0 -1
  220. package/dist/services/presence-registry.js +0 -91
  221. package/dist/services/presence-registry.js.map +0 -1
  222. package/dist/services/scaling-orchestrator.d.ts +0 -159
  223. package/dist/services/scaling-orchestrator.d.ts.map +0 -1
  224. package/dist/services/scaling-orchestrator.js +0 -502
  225. package/dist/services/scaling-orchestrator.js.map +0 -1
  226. package/dist/services/scaling-policy.d.ts +0 -121
  227. package/dist/services/scaling-policy.d.ts.map +0 -1
  228. package/dist/services/scaling-policy.js +0 -415
  229. package/dist/services/scaling-policy.js.map +0 -1
  230. package/dist/services/ssh-security.d.ts +0 -31
  231. package/dist/services/ssh-security.d.ts.map +0 -1
  232. package/dist/services/ssh-security.js +0 -63
  233. package/dist/services/ssh-security.js.map +0 -1
  234. package/dist/services/workspace-keepalive.d.ts +0 -76
  235. package/dist/services/workspace-keepalive.d.ts.map +0 -1
  236. package/dist/services/workspace-keepalive.js +0 -234
  237. package/dist/services/workspace-keepalive.js.map +0 -1
  238. package/dist/shims/consensus.d.ts +0 -23
  239. package/dist/shims/consensus.d.ts.map +0 -1
  240. package/dist/shims/consensus.js +0 -5
  241. package/dist/shims/consensus.js.map +0 -1
  242. package/dist/webhooks/index.d.ts +0 -24
  243. package/dist/webhooks/index.d.ts.map +0 -1
  244. package/dist/webhooks/index.js +0 -29
  245. package/dist/webhooks/index.js.map +0 -1
  246. package/dist/webhooks/parsers/github.d.ts +0 -8
  247. package/dist/webhooks/parsers/github.d.ts.map +0 -1
  248. package/dist/webhooks/parsers/github.js +0 -234
  249. package/dist/webhooks/parsers/github.js.map +0 -1
  250. package/dist/webhooks/parsers/index.d.ts +0 -23
  251. package/dist/webhooks/parsers/index.d.ts.map +0 -1
  252. package/dist/webhooks/parsers/index.js +0 -30
  253. package/dist/webhooks/parsers/index.js.map +0 -1
  254. package/dist/webhooks/parsers/linear.d.ts +0 -9
  255. package/dist/webhooks/parsers/linear.d.ts.map +0 -1
  256. package/dist/webhooks/parsers/linear.js +0 -258
  257. package/dist/webhooks/parsers/linear.js.map +0 -1
  258. package/dist/webhooks/parsers/slack.d.ts +0 -9
  259. package/dist/webhooks/parsers/slack.d.ts.map +0 -1
  260. package/dist/webhooks/parsers/slack.js +0 -214
  261. package/dist/webhooks/parsers/slack.js.map +0 -1
  262. package/dist/webhooks/responders/github.d.ts +0 -8
  263. package/dist/webhooks/responders/github.d.ts.map +0 -1
  264. package/dist/webhooks/responders/github.js +0 -73
  265. package/dist/webhooks/responders/github.js.map +0 -1
  266. package/dist/webhooks/responders/index.d.ts +0 -23
  267. package/dist/webhooks/responders/index.d.ts.map +0 -1
  268. package/dist/webhooks/responders/index.js +0 -30
  269. package/dist/webhooks/responders/index.js.map +0 -1
  270. package/dist/webhooks/responders/linear.d.ts +0 -9
  271. package/dist/webhooks/responders/linear.d.ts.map +0 -1
  272. package/dist/webhooks/responders/linear.js +0 -149
  273. package/dist/webhooks/responders/linear.js.map +0 -1
  274. package/dist/webhooks/responders/slack.d.ts +0 -20
  275. package/dist/webhooks/responders/slack.d.ts.map +0 -1
  276. package/dist/webhooks/responders/slack.js +0 -178
  277. package/dist/webhooks/responders/slack.js.map +0 -1
  278. package/dist/webhooks/router.d.ts +0 -25
  279. package/dist/webhooks/router.d.ts.map +0 -1
  280. package/dist/webhooks/router.js +0 -504
  281. package/dist/webhooks/router.js.map +0 -1
  282. package/dist/webhooks/rules-engine.d.ts +0 -24
  283. package/dist/webhooks/rules-engine.d.ts.map +0 -1
  284. package/dist/webhooks/rules-engine.js +0 -287
  285. package/dist/webhooks/rules-engine.js.map +0 -1
  286. package/dist/webhooks/types.d.ts +0 -186
  287. package/dist/webhooks/types.d.ts.map +0 -1
  288. package/dist/webhooks/types.js +0 -8
  289. package/dist/webhooks/types.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,mBAAmB,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,2EAA4E,CAAC;AAE7G,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,cAAc,QAA6D,CAAC;AAEzF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D"}
package/dist/types.js ADDED
@@ -0,0 +1,12 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ export const SUPPORTED_PROVIDERS = ['anthropic', 'openai', 'google', 'cursor', 'opencode', 'droid'];
4
+ export const REFRESH_WINDOW_MS = 60_000;
5
+ export const AUTH_FILE_PATH = path.join(os.homedir(), '.agent-relay', 'cloud-auth.json');
6
+ export function defaultApiUrl() {
7
+ return process.env.CLOUD_API_URL?.trim() || 'https://agentrelay.com/cloud';
8
+ }
9
+ export function isSupportedProvider(provider) {
10
+ return SUPPORTED_PROVIDERS.includes(provider);
11
+ }
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AA6E7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAE7G,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEzF,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,8BAA8B,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,QAAgD,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type WorkflowFileType, type RunWorkflowResponse, type WorkflowLogsResponse, type SyncPatchResponse } from './types.js';
2
+ type ResolvedWorkflowInput = {
3
+ workflow: string;
4
+ fileType: WorkflowFileType;
5
+ sourceFileType?: WorkflowFileType;
6
+ };
7
+ type RunWorkflowOptions = {
8
+ apiUrl?: string;
9
+ fileType?: WorkflowFileType;
10
+ syncCode?: boolean;
11
+ };
12
+ export declare function inferWorkflowFileType(filePath: string): WorkflowFileType | null;
13
+ export declare function shouldSyncCodeByDefault(_workflowArg: string, _explicitFileType?: WorkflowFileType): boolean;
14
+ export declare function resolveWorkflowInput(workflowArg: string, explicitFileType?: WorkflowFileType): Promise<ResolvedWorkflowInput>;
15
+ export declare function runWorkflow(workflowArg: string, options?: RunWorkflowOptions): Promise<RunWorkflowResponse>;
16
+ export declare function getRunStatus(runId: string, options?: {
17
+ apiUrl?: string;
18
+ }): Promise<Record<string, unknown>>;
19
+ export declare function cancelWorkflow(runId: string, options?: {
20
+ apiUrl?: string;
21
+ }): Promise<{
22
+ runId: string;
23
+ status: string;
24
+ }>;
25
+ export declare function getRunLogs(runId: string, options?: {
26
+ apiUrl?: string;
27
+ offset?: number;
28
+ sandboxId?: string;
29
+ }): Promise<WorkflowLogsResponse>;
30
+ export declare function syncWorkflowPatch(runId: string, options?: {
31
+ apiUrl?: string;
32
+ }): Promise<SyncPatchResponse>;
33
+ /**
34
+ * Turn the user-typed workflow path into a path **relative to the tarball
35
+ * root** (process.cwd()) that the cloud launcher can append to
36
+ * `/project/` to locate the file inside the synced code tree.
37
+ *
38
+ * Returns `null` when the result would escape the tarball (absolute
39
+ * outside cwd, or contains `..`). Callers drop the hint in that case —
40
+ * the server falls back to the legacy $HOME upload path, which still
41
+ * works (it just breaks sibling-relative imports, the pre-existing
42
+ * behaviour this field was added to fix).
43
+ */
44
+ export declare function relativizeWorkflowPath(workflowArg: string): string | null;
45
+ export {};
46
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAEpB,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAgBF,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AA8FF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAe/E;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAE3G;AAED,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,qBAAqB,CAAC,CA+BhC;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAkH9B;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiBlC;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5C;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,oBAAoB,CAAC,CAkC/B;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA2C5B;AA6ID;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUzE"}
@@ -0,0 +1,464 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3';
4
+ import ignore from 'ignore';
5
+ import * as tar from 'tar';
6
+ import { ensureAuthenticated, authorizedApiFetch } from './auth.js';
7
+ import { defaultApiUrl, } from './types.js';
8
+ const CODE_SYNC_EXCLUDES = [
9
+ '.git',
10
+ 'node_modules',
11
+ '.sst',
12
+ '.next',
13
+ '.open-next',
14
+ '.env',
15
+ '.env.*',
16
+ '.env.local',
17
+ '.env.production',
18
+ '*.pem',
19
+ '*.key',
20
+ 'credentials.json',
21
+ '.aws',
22
+ '.ssh',
23
+ ];
24
+ function validateYamlWorkflow(content) {
25
+ const hasField = (field) => new RegExp(`^${field}\\s*:`, 'm').test(content);
26
+ if (!hasField('version')) {
27
+ throw new Error('missing required field "version"');
28
+ }
29
+ if (!hasField('swarm')) {
30
+ throw new Error('missing required field "swarm"');
31
+ }
32
+ if (!hasField('agents')) {
33
+ throw new Error('missing required field "agents"');
34
+ }
35
+ if (!hasField('workflows')) {
36
+ throw new Error('missing required field "workflows"');
37
+ }
38
+ }
39
+ async function validateTypeScriptWorkflow(content) {
40
+ // Strategy: use bun's built-in TS transpiler when available (the CLI is
41
+ // bun-compiled, so this covers the common case with zero external deps).
42
+ // Fall back to esbuild for Node.js environments, and skip validation
43
+ // gracefully if neither is available — the cloud sandbox will catch real
44
+ // syntax errors at execution time anyway.
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ const Bun = globalThis.Bun;
47
+ if (typeof Bun !== 'undefined') {
48
+ try {
49
+ // Bun.build validates TS syntax during transpilation. A syntax error
50
+ // throws synchronously or returns build failures.
51
+ const result = await Bun.build({
52
+ stdin: { contents: content, loader: 'ts' },
53
+ throw: false,
54
+ });
55
+ if (!result.success && result.logs?.length) {
56
+ const errors = result.logs
57
+ .filter((l) => l.level === 'error')
58
+ .map((l) => l.message)
59
+ .join('\n');
60
+ if (errors) {
61
+ throw new Error(`Workflow file has syntax errors:\n${errors}`);
62
+ }
63
+ }
64
+ return;
65
+ }
66
+ catch (error) {
67
+ if (error instanceof Error && error.message.startsWith('Workflow file has syntax errors')) {
68
+ throw error;
69
+ }
70
+ // Bun.build failed for a non-syntax reason — skip validation
71
+ return;
72
+ }
73
+ }
74
+ // Fallback: try esbuild via npx (for Node.js environments)
75
+ try {
76
+ const { execSync } = await import('node:child_process');
77
+ execSync('npx --yes esbuild --loader=ts', {
78
+ input: content,
79
+ encoding: 'utf-8',
80
+ stdio: ['pipe', 'pipe', 'pipe'],
81
+ timeout: 30000,
82
+ });
83
+ }
84
+ catch (error) {
85
+ const err = error;
86
+ const stderr = typeof err.stderr === 'string' ? err.stderr.trim() : '';
87
+ // Skip validation when esbuild/npx is unavailable: killed by timeout,
88
+ // no exit status, exit 127 (command not found), or stderr mentions
89
+ // "command not found" / "not found".
90
+ if (err.killed || !err.status || err.status === 127 || /command not found|not found/i.test(stderr)) {
91
+ return;
92
+ }
93
+ const message = stderr || 'TypeScript validation failed';
94
+ throw new Error(`Workflow file has syntax errors:\n${message}`);
95
+ }
96
+ }
97
+ export function inferWorkflowFileType(filePath) {
98
+ const ext = path.extname(filePath).toLowerCase();
99
+ switch (ext) {
100
+ case '.yaml':
101
+ case '.yml':
102
+ return 'yaml';
103
+ case '.ts':
104
+ case '.mts':
105
+ case '.cts':
106
+ return 'ts';
107
+ case '.py':
108
+ return 'py';
109
+ default:
110
+ return null;
111
+ }
112
+ }
113
+ export function shouldSyncCodeByDefault(_workflowArg, _explicitFileType) {
114
+ return true;
115
+ }
116
+ export async function resolveWorkflowInput(workflowArg, explicitFileType) {
117
+ const looksLikeFile = path.isAbsolute(workflowArg) ||
118
+ workflowArg.includes(path.sep) ||
119
+ inferWorkflowFileType(workflowArg) !== null;
120
+ try {
121
+ const workflow = await fs.readFile(workflowArg, 'utf-8');
122
+ const fileType = explicitFileType ?? inferWorkflowFileType(workflowArg);
123
+ if (!fileType) {
124
+ throw new Error(`Could not infer workflow type from ${workflowArg}. Use --file-type.`);
125
+ }
126
+ return { workflow, fileType };
127
+ }
128
+ catch (error) {
129
+ const err = error;
130
+ if (err.code === 'EISDIR') {
131
+ throw new Error(`Workflow path is not a file: ${workflowArg}`);
132
+ }
133
+ if (!isMissingFileError(error)) {
134
+ throw error;
135
+ }
136
+ }
137
+ if (looksLikeFile) {
138
+ throw new Error(`Workflow file not found: ${workflowArg}`);
139
+ }
140
+ return {
141
+ workflow: workflowArg,
142
+ fileType: explicitFileType ?? 'yaml',
143
+ };
144
+ }
145
+ export async function runWorkflow(workflowArg, options = {}) {
146
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
147
+ let auth = await ensureAuthenticated(apiUrl);
148
+ const input = await resolveWorkflowInput(workflowArg, options.fileType);
149
+ if (input.fileType === 'ts') {
150
+ await validateTypeScriptWorkflow(input.workflow);
151
+ }
152
+ else if (input.fileType === 'yaml') {
153
+ console.error('Validating workflow...');
154
+ validateYamlWorkflow(input.workflow);
155
+ }
156
+ const syncCode = options.syncCode ?? shouldSyncCodeByDefault(workflowArg, options.fileType);
157
+ const requestBody = {
158
+ workflow: input.workflow,
159
+ fileType: input.fileType,
160
+ };
161
+ if (input.sourceFileType) {
162
+ requestBody.sourceFileType = input.sourceFileType;
163
+ }
164
+ if (syncCode) {
165
+ const t0 = Date.now();
166
+ console.error('Preparing run...');
167
+ const { response: prepResponse, auth: prepAuth } = await authorizedApiFetch(auth, '/api/v1/workflows/prepare', {
168
+ method: 'POST',
169
+ headers: { Accept: 'application/json' },
170
+ });
171
+ auth = prepAuth;
172
+ const prepPayload = await readJsonResponse(prepResponse);
173
+ if (!prepResponse.ok) {
174
+ throw new Error(`Workflow prepare failed: ${describeResponseError(prepResponse, prepPayload)}`);
175
+ }
176
+ if (!isPrepareWorkflowResponse(prepPayload)) {
177
+ throw new Error('Workflow prepare response was not valid JSON.');
178
+ }
179
+ const prepared = prepPayload;
180
+ console.error(` Prepared in ${((Date.now() - t0) / 1000).toFixed(1)}s`);
181
+ const t1 = Date.now();
182
+ console.error('Creating tarball...');
183
+ const s3Client = createScopedS3Client(prepared.s3Credentials);
184
+ const tarball = await createTarball(process.cwd());
185
+ console.error(` Tarball: ${(tarball.length / 1024).toFixed(0)}KB in ${((Date.now() - t1) / 1000).toFixed(1)}s`);
186
+ const t2 = Date.now();
187
+ console.error('Uploading to S3...');
188
+ const key = scopedCodeKey(prepared.s3Credentials.prefix, prepared.s3CodeKey);
189
+ await s3Client.send(new PutObjectCommand({
190
+ Bucket: prepared.s3Credentials.bucket,
191
+ Key: key,
192
+ Body: tarball,
193
+ ContentType: 'application/gzip',
194
+ }));
195
+ console.error(` Uploaded in ${((Date.now() - t2) / 1000).toFixed(1)}s`);
196
+ requestBody.runId = prepared.runId;
197
+ requestBody.s3CodeKey = prepared.s3CodeKey;
198
+ // Send the workflow's path inside the synced tarball so the cloud
199
+ // launcher can set WORKFLOW_FILE directly — no $HOME upload dance,
200
+ // sibling-relative imports (e.g. `../shared/models.ts`) resolve
201
+ // against the repo layout. The tarball was produced from
202
+ // process.cwd(), so relativize the user-typed argument against cwd.
203
+ //
204
+ // Absolute paths outside cwd OR paths that would escape the tarball
205
+ // via `..` are dropped silently — the server falls back to the
206
+ // legacy $HOME upload path in that case.
207
+ const workflowPath = relativizeWorkflowPath(workflowArg);
208
+ if (workflowPath) {
209
+ requestBody.workflowPath = workflowPath;
210
+ }
211
+ }
212
+ const t3 = Date.now();
213
+ console.error('Launching workflow...');
214
+ const { response, auth: updatedAuth } = await authorizedApiFetch(auth, '/api/v1/workflows/run', {
215
+ method: 'POST',
216
+ headers: {
217
+ 'Content-Type': 'application/json',
218
+ Accept: 'application/json',
219
+ },
220
+ body: JSON.stringify(requestBody),
221
+ });
222
+ auth = updatedAuth;
223
+ console.error(` Launched in ${((Date.now() - t3) / 1000).toFixed(1)}s`);
224
+ const payload = await readJsonResponse(response);
225
+ if (!response.ok) {
226
+ throw new Error(`Workflow run failed: ${describeResponseError(response, payload)}`);
227
+ }
228
+ if (!payload ||
229
+ typeof payload !== 'object' ||
230
+ typeof payload.runId !== 'string' ||
231
+ typeof payload.status !== 'string') {
232
+ throw new Error('Workflow run response was not valid JSON.');
233
+ }
234
+ return payload;
235
+ }
236
+ export async function getRunStatus(runId, options = {}) {
237
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
238
+ const auth = await ensureAuthenticated(apiUrl);
239
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}`, {
240
+ headers: { Accept: 'application/json' },
241
+ });
242
+ const payload = await readJsonResponse(response);
243
+ if (!response.ok) {
244
+ throw new Error(`Status request failed: ${describeResponseError(response, payload)}`);
245
+ }
246
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
247
+ throw new Error('Status response was not valid JSON.');
248
+ }
249
+ return payload;
250
+ }
251
+ export async function cancelWorkflow(runId, options = {}) {
252
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
253
+ const auth = await ensureAuthenticated(apiUrl);
254
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}/cancel`, {
255
+ method: 'POST',
256
+ headers: { Accept: 'application/json' },
257
+ });
258
+ const payload = await readJsonResponse(response);
259
+ if (!response.ok) {
260
+ throw new Error(`Cancel failed: ${describeResponseError(response, payload)}`);
261
+ }
262
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
263
+ throw new Error('Cancel response was not valid JSON.');
264
+ }
265
+ return payload;
266
+ }
267
+ export async function getRunLogs(runId, options = {}) {
268
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
269
+ const auth = await ensureAuthenticated(apiUrl);
270
+ const searchParams = new URLSearchParams();
271
+ if (typeof options.offset === 'number') {
272
+ searchParams.set('offset', String(options.offset));
273
+ }
274
+ if (options.sandboxId) {
275
+ searchParams.set('sandboxId', options.sandboxId);
276
+ }
277
+ const requestPath = `/api/v1/workflows/runs/${encodeURIComponent(runId)}/logs${searchParams.size ? `?${searchParams.toString()}` : ''}`;
278
+ const { response } = await authorizedApiFetch(auth, requestPath, {
279
+ headers: { Accept: 'application/json' },
280
+ });
281
+ const payload = await readJsonResponse(response);
282
+ if (!response.ok) {
283
+ throw new Error(`Log request failed: ${describeResponseError(response, payload)}`);
284
+ }
285
+ if (!payload ||
286
+ typeof payload !== 'object' ||
287
+ typeof payload.content !== 'string' ||
288
+ typeof payload.offset !== 'number' ||
289
+ typeof payload.totalSize !== 'number' ||
290
+ typeof payload.done !== 'boolean') {
291
+ throw new Error('Log response was not valid JSON.');
292
+ }
293
+ return payload;
294
+ }
295
+ export async function syncWorkflowPatch(runId, options = {}) {
296
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
297
+ let auth = await ensureAuthenticated(apiUrl);
298
+ // Verify the run is completed
299
+ const { response: statusResponse, auth: a1 } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}`, { headers: { Accept: 'application/json' } });
300
+ auth = a1;
301
+ if (!statusResponse.ok) {
302
+ const payload = await readJsonResponse(statusResponse);
303
+ throw new Error(`Failed to fetch run status: ${describeResponseError(statusResponse, payload)}`);
304
+ }
305
+ const runData = (await statusResponse.json());
306
+ if (runData.status !== 'completed' && runData.status !== 'failed' && runData.status !== 'cancelled') {
307
+ throw new Error(`Run is still ${runData.status ?? 'unknown'}. Wait for completion before syncing.`);
308
+ }
309
+ // Download the patch
310
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}/patch`, { headers: { Accept: 'application/json' } });
311
+ const payload = await readJsonResponse(response);
312
+ if (!response.ok) {
313
+ throw new Error(`Patch download failed: ${describeResponseError(response, payload)}`);
314
+ }
315
+ if (!payload ||
316
+ typeof payload !== 'object' ||
317
+ typeof payload.hasChanges !== 'boolean') {
318
+ throw new Error('Patch response was not valid JSON.');
319
+ }
320
+ return payload;
321
+ }
322
+ // ── Internal helpers ──────────────────────────────────────────────────────────
323
+ async function readJsonResponse(response) {
324
+ const rawBody = await response.text();
325
+ if (!rawBody) {
326
+ return null;
327
+ }
328
+ try {
329
+ return JSON.parse(rawBody);
330
+ }
331
+ catch {
332
+ return rawBody;
333
+ }
334
+ }
335
+ function describeResponseError(response, payload) {
336
+ if (typeof payload === 'string' && payload.trim()) {
337
+ return `${response.status} ${response.statusText}: ${payload.trim()}`;
338
+ }
339
+ if (payload && typeof payload === 'object' && !Array.isArray(payload)) {
340
+ const record = payload;
341
+ const message = record.error ?? record.message;
342
+ if (typeof message === 'string' && message.trim()) {
343
+ return `${response.status} ${response.statusText}: ${message.trim()}`;
344
+ }
345
+ }
346
+ return `${response.status} ${response.statusText}`;
347
+ }
348
+ function isMissingFileError(error) {
349
+ return Boolean(error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT');
350
+ }
351
+ function isPrepareWorkflowResponse(payload) {
352
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
353
+ return false;
354
+ }
355
+ const record = payload;
356
+ const s3Creds = record.s3Credentials;
357
+ if (!s3Creds || typeof s3Creds !== 'object' || Array.isArray(s3Creds)) {
358
+ return false;
359
+ }
360
+ const creds = s3Creds;
361
+ return (typeof record.runId === 'string' &&
362
+ typeof record.s3CodeKey === 'string' &&
363
+ typeof creds.accessKeyId === 'string' &&
364
+ typeof creds.secretAccessKey === 'string' &&
365
+ typeof creds.sessionToken === 'string' &&
366
+ typeof creds.bucket === 'string' &&
367
+ typeof creds.prefix === 'string');
368
+ }
369
+ function createScopedS3Client(s3Credentials) {
370
+ return new S3Client({
371
+ region: process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION ?? 'us-east-1',
372
+ credentials: {
373
+ accessKeyId: s3Credentials.accessKeyId,
374
+ secretAccessKey: s3Credentials.secretAccessKey,
375
+ sessionToken: s3Credentials.sessionToken,
376
+ },
377
+ });
378
+ }
379
+ async function createTarball(rootDir) {
380
+ const absoluteRoot = path.resolve(rootDir);
381
+ try {
382
+ const { execSync } = await import('node:child_process');
383
+ const gitFiles = execSync('git ls-files -z', {
384
+ cwd: absoluteRoot,
385
+ encoding: 'utf-8',
386
+ maxBuffer: 50 * 1024 * 1024,
387
+ });
388
+ const files = gitFiles.split('\0').filter(Boolean);
389
+ if (files.length > 0) {
390
+ const tarStream = tar.create({ gzip: true, cwd: absoluteRoot, portable: true }, files);
391
+ const chunks = [];
392
+ for await (const chunk of tarStream) {
393
+ chunks.push(Buffer.from(chunk));
394
+ }
395
+ return Buffer.concat(chunks);
396
+ }
397
+ }
398
+ catch {
399
+ // Not a git repo or git not available — fall back to ignore-based filter
400
+ }
401
+ const ig = await buildIgnoreMatcher(absoluteRoot);
402
+ const tarStream = tar.create({
403
+ gzip: true,
404
+ cwd: absoluteRoot,
405
+ portable: true,
406
+ filter(entryPath) {
407
+ const normalized = normalizeEntryPath(entryPath);
408
+ if (!normalized || normalized === '.')
409
+ return true;
410
+ return !ig.ignores(normalized);
411
+ },
412
+ }, ['.']);
413
+ const chunks = [];
414
+ for await (const chunk of tarStream) {
415
+ chunks.push(Buffer.from(chunk));
416
+ }
417
+ return Buffer.concat(chunks);
418
+ }
419
+ async function buildIgnoreMatcher(rootDir) {
420
+ const ig = ignore();
421
+ ig.add(CODE_SYNC_EXCLUDES);
422
+ try {
423
+ const gitignoreContent = await fs.readFile(path.join(rootDir, '.gitignore'), 'utf-8');
424
+ ig.add(gitignoreContent);
425
+ }
426
+ catch (error) {
427
+ if (!isMissingFileError(error)) {
428
+ throw error;
429
+ }
430
+ }
431
+ return ig;
432
+ }
433
+ function normalizeEntryPath(entryPath) {
434
+ return entryPath.replace(/^\.\//, '').replace(/\\/g, '/');
435
+ }
436
+ function scopedCodeKey(prefix, key) {
437
+ return [prefix, key].filter(Boolean).join('/');
438
+ }
439
+ /**
440
+ * Turn the user-typed workflow path into a path **relative to the tarball
441
+ * root** (process.cwd()) that the cloud launcher can append to
442
+ * `/project/` to locate the file inside the synced code tree.
443
+ *
444
+ * Returns `null` when the result would escape the tarball (absolute
445
+ * outside cwd, or contains `..`). Callers drop the hint in that case —
446
+ * the server falls back to the legacy $HOME upload path, which still
447
+ * works (it just breaks sibling-relative imports, the pre-existing
448
+ * behaviour this field was added to fix).
449
+ */
450
+ export function relativizeWorkflowPath(workflowArg) {
451
+ const absolute = path.resolve(process.cwd(), workflowArg);
452
+ let rel = path.relative(process.cwd(), absolute);
453
+ if (rel.length === 0)
454
+ return null;
455
+ // Normalize to forward slashes so the server-side validator (which
456
+ // runs on Linux Lambda) gets the same shape regardless of the CLI OS.
457
+ rel = rel.split(path.sep).join('/');
458
+ if (rel.startsWith('../') || rel === '..')
459
+ return null;
460
+ if (path.isAbsolute(rel))
461
+ return null;
462
+ return rel;
463
+ }
464
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,31 +1,16 @@
1
1
  {
2
2
  "name": "@agent-relay/cloud",
3
- "version": "2.0.23",
4
- "description": "Cloud API server and services for Agent Relay",
3
+ "version": "6.0.2",
4
+ "description": "Cloud SDK for Agent Relay auth, workflow execution, and provider connections",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "default": "./dist/index.js"
11
+ "import": "./dist/index.js"
13
12
  },
14
- "./db/drizzle": {
15
- "types": "./dist/db/drizzle.d.ts",
16
- "import": "./dist/db/drizzle.js",
17
- "default": "./dist/db/drizzle.js"
18
- },
19
- "./db/schema": {
20
- "types": "./dist/db/schema.d.ts",
21
- "import": "./dist/db/schema.js",
22
- "default": "./dist/db/schema.js"
23
- },
24
- "./server": {
25
- "types": "./dist/server.d.ts",
26
- "import": "./dist/server.js",
27
- "default": "./dist/server.js"
28
- }
13
+ "./package.json": "./package.json"
29
14
  },
30
15
  "files": [
31
16
  "dist",
@@ -38,15 +23,13 @@
38
23
  "test:watch": "vitest"
39
24
  },
40
25
  "dependencies": {
41
- "@agent-relay/wrapper": "2.0.23",
42
- "@agent-relay/config": "2.0.23",
43
- "@agent-relay/resiliency": "2.0.23",
44
- "@agent-relay/storage": "2.0.23",
45
- "@agent-relay/protocol": "2.0.23"
26
+ "@agent-relay/config": "6.0.2",
27
+ "@aws-sdk/client-s3": "3.1020.0",
28
+ "ignore": "^7.0.5",
29
+ "tar": "^7.5.10"
46
30
  },
47
31
  "devDependencies": {
48
32
  "@types/node": "^22.19.3",
49
- "typescript": "^5.9.3",
50
33
  "vitest": "^3.2.4"
51
34
  },
52
35
  "publishConfig": {
@@ -1,8 +0,0 @@
1
- /**
2
- * Admin API Routes
3
- *
4
- * Administrative endpoints for managing workspaces at scale.
5
- * Protected by admin secret (ADMIN_API_SECRET environment variable).
6
- */
7
- export declare const adminRouter: import("express-serve-static-core").Router;
8
- //# sourceMappingURL=admin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/api/admin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,WAAW,4CAAW,CAAC"}