@agent-relay/cloud 2.0.23 → 6.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) 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/connect.d.ts +45 -0
  10. package/dist/connect.d.ts.map +1 -0
  11. package/dist/connect.js +166 -0
  12. package/dist/connect.js.map +1 -0
  13. package/dist/index.d.ts +7 -10
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +7 -37
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/ssh-interactive.d.ts +70 -0
  18. package/dist/lib/ssh-interactive.d.ts.map +1 -0
  19. package/dist/lib/ssh-interactive.js +440 -0
  20. package/dist/lib/ssh-interactive.js.map +1 -0
  21. package/dist/lib/ssh-runtime.d.ts +35 -0
  22. package/dist/lib/ssh-runtime.d.ts.map +1 -0
  23. package/dist/lib/ssh-runtime.js +52 -0
  24. package/dist/lib/ssh-runtime.js.map +1 -0
  25. package/dist/types.d.ts +76 -0
  26. package/dist/types.d.ts.map +1 -0
  27. package/dist/types.js +12 -0
  28. package/dist/types.js.map +1 -0
  29. package/dist/workflows.d.ts +49 -0
  30. package/dist/workflows.d.ts.map +1 -0
  31. package/dist/workflows.js +473 -0
  32. package/dist/workflows.js.map +1 -0
  33. package/package.json +12 -25
  34. package/dist/api/admin.d.ts +0 -8
  35. package/dist/api/admin.d.ts.map +0 -1
  36. package/dist/api/admin.js +0 -225
  37. package/dist/api/admin.js.map +0 -1
  38. package/dist/api/auth.d.ts +0 -20
  39. package/dist/api/auth.d.ts.map +0 -1
  40. package/dist/api/auth.js +0 -138
  41. package/dist/api/auth.js.map +0 -1
  42. package/dist/api/billing.d.ts +0 -7
  43. package/dist/api/billing.d.ts.map +0 -1
  44. package/dist/api/billing.js +0 -564
  45. package/dist/api/billing.js.map +0 -1
  46. package/dist/api/cli-pty-runner.d.ts +0 -53
  47. package/dist/api/cli-pty-runner.d.ts.map +0 -1
  48. package/dist/api/cli-pty-runner.js +0 -175
  49. package/dist/api/cli-pty-runner.js.map +0 -1
  50. package/dist/api/codex-auth-helper.d.ts +0 -21
  51. package/dist/api/codex-auth-helper.d.ts.map +0 -1
  52. package/dist/api/codex-auth-helper.js +0 -327
  53. package/dist/api/codex-auth-helper.js.map +0 -1
  54. package/dist/api/consensus.d.ts +0 -13
  55. package/dist/api/consensus.d.ts.map +0 -1
  56. package/dist/api/consensus.js +0 -261
  57. package/dist/api/consensus.js.map +0 -1
  58. package/dist/api/coordinators.d.ts +0 -8
  59. package/dist/api/coordinators.d.ts.map +0 -1
  60. package/dist/api/coordinators.js +0 -750
  61. package/dist/api/coordinators.js.map +0 -1
  62. package/dist/api/daemons.d.ts +0 -12
  63. package/dist/api/daemons.d.ts.map +0 -1
  64. package/dist/api/daemons.js +0 -535
  65. package/dist/api/daemons.js.map +0 -1
  66. package/dist/api/email-auth.d.ts +0 -11
  67. package/dist/api/email-auth.d.ts.map +0 -1
  68. package/dist/api/email-auth.js +0 -347
  69. package/dist/api/email-auth.js.map +0 -1
  70. package/dist/api/generic-webhooks.d.ts +0 -8
  71. package/dist/api/generic-webhooks.d.ts.map +0 -1
  72. package/dist/api/generic-webhooks.js +0 -129
  73. package/dist/api/generic-webhooks.js.map +0 -1
  74. package/dist/api/git.d.ts +0 -8
  75. package/dist/api/git.d.ts.map +0 -1
  76. package/dist/api/git.js +0 -269
  77. package/dist/api/git.js.map +0 -1
  78. package/dist/api/github-app.d.ts +0 -11
  79. package/dist/api/github-app.d.ts.map +0 -1
  80. package/dist/api/github-app.js +0 -223
  81. package/dist/api/github-app.js.map +0 -1
  82. package/dist/api/middleware/planLimits.d.ts +0 -43
  83. package/dist/api/middleware/planLimits.d.ts.map +0 -1
  84. package/dist/api/middleware/planLimits.js +0 -202
  85. package/dist/api/middleware/planLimits.js.map +0 -1
  86. package/dist/api/monitoring.d.ts +0 -11
  87. package/dist/api/monitoring.d.ts.map +0 -1
  88. package/dist/api/monitoring.js +0 -578
  89. package/dist/api/monitoring.js.map +0 -1
  90. package/dist/api/nango-auth.d.ts +0 -9
  91. package/dist/api/nango-auth.d.ts.map +0 -1
  92. package/dist/api/nango-auth.js +0 -741
  93. package/dist/api/nango-auth.js.map +0 -1
  94. package/dist/api/onboarding.d.ts +0 -15
  95. package/dist/api/onboarding.d.ts.map +0 -1
  96. package/dist/api/onboarding.js +0 -679
  97. package/dist/api/onboarding.js.map +0 -1
  98. package/dist/api/policy.d.ts +0 -8
  99. package/dist/api/policy.d.ts.map +0 -1
  100. package/dist/api/policy.js +0 -229
  101. package/dist/api/policy.js.map +0 -1
  102. package/dist/api/provider-env.d.ts +0 -26
  103. package/dist/api/provider-env.d.ts.map +0 -1
  104. package/dist/api/provider-env.js +0 -141
  105. package/dist/api/provider-env.js.map +0 -1
  106. package/dist/api/providers.d.ts +0 -7
  107. package/dist/api/providers.d.ts.map +0 -1
  108. package/dist/api/providers.js +0 -574
  109. package/dist/api/providers.js.map +0 -1
  110. package/dist/api/repos.d.ts +0 -8
  111. package/dist/api/repos.d.ts.map +0 -1
  112. package/dist/api/repos.js +0 -577
  113. package/dist/api/repos.js.map +0 -1
  114. package/dist/api/sessions.d.ts +0 -11
  115. package/dist/api/sessions.d.ts.map +0 -1
  116. package/dist/api/sessions.js +0 -302
  117. package/dist/api/sessions.js.map +0 -1
  118. package/dist/api/teams.d.ts +0 -7
  119. package/dist/api/teams.d.ts.map +0 -1
  120. package/dist/api/teams.js +0 -281
  121. package/dist/api/teams.js.map +0 -1
  122. package/dist/api/test-helpers.d.ts +0 -10
  123. package/dist/api/test-helpers.d.ts.map +0 -1
  124. package/dist/api/test-helpers.js +0 -745
  125. package/dist/api/test-helpers.js.map +0 -1
  126. package/dist/api/usage.d.ts +0 -7
  127. package/dist/api/usage.d.ts.map +0 -1
  128. package/dist/api/usage.js +0 -111
  129. package/dist/api/usage.js.map +0 -1
  130. package/dist/api/webhooks.d.ts +0 -8
  131. package/dist/api/webhooks.d.ts.map +0 -1
  132. package/dist/api/webhooks.js +0 -645
  133. package/dist/api/webhooks.js.map +0 -1
  134. package/dist/api/workspaces.d.ts +0 -25
  135. package/dist/api/workspaces.d.ts.map +0 -1
  136. package/dist/api/workspaces.js +0 -1799
  137. package/dist/api/workspaces.js.map +0 -1
  138. package/dist/billing/index.d.ts +0 -9
  139. package/dist/billing/index.d.ts.map +0 -1
  140. package/dist/billing/index.js +0 -9
  141. package/dist/billing/index.js.map +0 -1
  142. package/dist/billing/plans.d.ts +0 -39
  143. package/dist/billing/plans.d.ts.map +0 -1
  144. package/dist/billing/plans.js +0 -245
  145. package/dist/billing/plans.js.map +0 -1
  146. package/dist/billing/service.d.ts +0 -80
  147. package/dist/billing/service.d.ts.map +0 -1
  148. package/dist/billing/service.js +0 -388
  149. package/dist/billing/service.js.map +0 -1
  150. package/dist/billing/types.d.ts +0 -141
  151. package/dist/billing/types.d.ts.map +0 -1
  152. package/dist/billing/types.js +0 -7
  153. package/dist/billing/types.js.map +0 -1
  154. package/dist/config.d.ts +0 -5
  155. package/dist/config.d.ts.map +0 -1
  156. package/dist/config.js +0 -5
  157. package/dist/config.js.map +0 -1
  158. package/dist/db/bulk-ingest.d.ts +0 -89
  159. package/dist/db/bulk-ingest.d.ts.map +0 -1
  160. package/dist/db/bulk-ingest.js +0 -268
  161. package/dist/db/bulk-ingest.js.map +0 -1
  162. package/dist/db/drizzle.d.ts +0 -290
  163. package/dist/db/drizzle.d.ts.map +0 -1
  164. package/dist/db/drizzle.js +0 -1422
  165. package/dist/db/drizzle.js.map +0 -1
  166. package/dist/db/index.d.ts +0 -56
  167. package/dist/db/index.d.ts.map +0 -1
  168. package/dist/db/index.js +0 -70
  169. package/dist/db/index.js.map +0 -1
  170. package/dist/db/schema.d.ts +0 -5117
  171. package/dist/db/schema.d.ts.map +0 -1
  172. package/dist/db/schema.js +0 -656
  173. package/dist/db/schema.js.map +0 -1
  174. package/dist/provisioner/index.d.ts +0 -207
  175. package/dist/provisioner/index.d.ts.map +0 -1
  176. package/dist/provisioner/index.js +0 -2118
  177. package/dist/provisioner/index.js.map +0 -1
  178. package/dist/server.d.ts +0 -17
  179. package/dist/server.d.ts.map +0 -1
  180. package/dist/server.js +0 -2055
  181. package/dist/server.js.map +0 -1
  182. package/dist/services/auto-scaler.d.ts +0 -152
  183. package/dist/services/auto-scaler.d.ts.map +0 -1
  184. package/dist/services/auto-scaler.js +0 -439
  185. package/dist/services/auto-scaler.js.map +0 -1
  186. package/dist/services/capacity-manager.d.ts +0 -148
  187. package/dist/services/capacity-manager.d.ts.map +0 -1
  188. package/dist/services/capacity-manager.js +0 -449
  189. package/dist/services/capacity-manager.js.map +0 -1
  190. package/dist/services/ci-agent-spawner.d.ts +0 -49
  191. package/dist/services/ci-agent-spawner.d.ts.map +0 -1
  192. package/dist/services/ci-agent-spawner.js +0 -373
  193. package/dist/services/ci-agent-spawner.js.map +0 -1
  194. package/dist/services/cloud-message-bus.d.ts +0 -28
  195. package/dist/services/cloud-message-bus.d.ts.map +0 -1
  196. package/dist/services/cloud-message-bus.js +0 -19
  197. package/dist/services/cloud-message-bus.js.map +0 -1
  198. package/dist/services/compute-enforcement.d.ts +0 -57
  199. package/dist/services/compute-enforcement.d.ts.map +0 -1
  200. package/dist/services/compute-enforcement.js +0 -175
  201. package/dist/services/compute-enforcement.js.map +0 -1
  202. package/dist/services/coordinator.d.ts +0 -62
  203. package/dist/services/coordinator.d.ts.map +0 -1
  204. package/dist/services/coordinator.js +0 -389
  205. package/dist/services/coordinator.js.map +0 -1
  206. package/dist/services/index.d.ts +0 -17
  207. package/dist/services/index.d.ts.map +0 -1
  208. package/dist/services/index.js +0 -25
  209. package/dist/services/index.js.map +0 -1
  210. package/dist/services/intro-expiration.d.ts +0 -60
  211. package/dist/services/intro-expiration.d.ts.map +0 -1
  212. package/dist/services/intro-expiration.js +0 -252
  213. package/dist/services/intro-expiration.js.map +0 -1
  214. package/dist/services/mention-handler.d.ts +0 -65
  215. package/dist/services/mention-handler.d.ts.map +0 -1
  216. package/dist/services/mention-handler.js +0 -405
  217. package/dist/services/mention-handler.js.map +0 -1
  218. package/dist/services/nango.d.ts +0 -219
  219. package/dist/services/nango.d.ts.map +0 -1
  220. package/dist/services/nango.js +0 -424
  221. package/dist/services/nango.js.map +0 -1
  222. package/dist/services/persistence.d.ts +0 -131
  223. package/dist/services/persistence.d.ts.map +0 -1
  224. package/dist/services/persistence.js +0 -200
  225. package/dist/services/persistence.js.map +0 -1
  226. package/dist/services/planLimits.d.ts +0 -147
  227. package/dist/services/planLimits.d.ts.map +0 -1
  228. package/dist/services/planLimits.js +0 -335
  229. package/dist/services/planLimits.js.map +0 -1
  230. package/dist/services/presence-registry.d.ts +0 -56
  231. package/dist/services/presence-registry.d.ts.map +0 -1
  232. package/dist/services/presence-registry.js +0 -91
  233. package/dist/services/presence-registry.js.map +0 -1
  234. package/dist/services/scaling-orchestrator.d.ts +0 -159
  235. package/dist/services/scaling-orchestrator.d.ts.map +0 -1
  236. package/dist/services/scaling-orchestrator.js +0 -502
  237. package/dist/services/scaling-orchestrator.js.map +0 -1
  238. package/dist/services/scaling-policy.d.ts +0 -121
  239. package/dist/services/scaling-policy.d.ts.map +0 -1
  240. package/dist/services/scaling-policy.js +0 -415
  241. package/dist/services/scaling-policy.js.map +0 -1
  242. package/dist/services/ssh-security.d.ts +0 -31
  243. package/dist/services/ssh-security.d.ts.map +0 -1
  244. package/dist/services/ssh-security.js +0 -63
  245. package/dist/services/ssh-security.js.map +0 -1
  246. package/dist/services/workspace-keepalive.d.ts +0 -76
  247. package/dist/services/workspace-keepalive.d.ts.map +0 -1
  248. package/dist/services/workspace-keepalive.js +0 -234
  249. package/dist/services/workspace-keepalive.js.map +0 -1
  250. package/dist/shims/consensus.d.ts +0 -23
  251. package/dist/shims/consensus.d.ts.map +0 -1
  252. package/dist/shims/consensus.js +0 -5
  253. package/dist/shims/consensus.js.map +0 -1
  254. package/dist/webhooks/index.d.ts +0 -24
  255. package/dist/webhooks/index.d.ts.map +0 -1
  256. package/dist/webhooks/index.js +0 -29
  257. package/dist/webhooks/index.js.map +0 -1
  258. package/dist/webhooks/parsers/github.d.ts +0 -8
  259. package/dist/webhooks/parsers/github.d.ts.map +0 -1
  260. package/dist/webhooks/parsers/github.js +0 -234
  261. package/dist/webhooks/parsers/github.js.map +0 -1
  262. package/dist/webhooks/parsers/index.d.ts +0 -23
  263. package/dist/webhooks/parsers/index.d.ts.map +0 -1
  264. package/dist/webhooks/parsers/index.js +0 -30
  265. package/dist/webhooks/parsers/index.js.map +0 -1
  266. package/dist/webhooks/parsers/linear.d.ts +0 -9
  267. package/dist/webhooks/parsers/linear.d.ts.map +0 -1
  268. package/dist/webhooks/parsers/linear.js +0 -258
  269. package/dist/webhooks/parsers/linear.js.map +0 -1
  270. package/dist/webhooks/parsers/slack.d.ts +0 -9
  271. package/dist/webhooks/parsers/slack.d.ts.map +0 -1
  272. package/dist/webhooks/parsers/slack.js +0 -214
  273. package/dist/webhooks/parsers/slack.js.map +0 -1
  274. package/dist/webhooks/responders/github.d.ts +0 -8
  275. package/dist/webhooks/responders/github.d.ts.map +0 -1
  276. package/dist/webhooks/responders/github.js +0 -73
  277. package/dist/webhooks/responders/github.js.map +0 -1
  278. package/dist/webhooks/responders/index.d.ts +0 -23
  279. package/dist/webhooks/responders/index.d.ts.map +0 -1
  280. package/dist/webhooks/responders/index.js +0 -30
  281. package/dist/webhooks/responders/index.js.map +0 -1
  282. package/dist/webhooks/responders/linear.d.ts +0 -9
  283. package/dist/webhooks/responders/linear.d.ts.map +0 -1
  284. package/dist/webhooks/responders/linear.js +0 -149
  285. package/dist/webhooks/responders/linear.js.map +0 -1
  286. package/dist/webhooks/responders/slack.d.ts +0 -20
  287. package/dist/webhooks/responders/slack.d.ts.map +0 -1
  288. package/dist/webhooks/responders/slack.js +0 -178
  289. package/dist/webhooks/responders/slack.js.map +0 -1
  290. package/dist/webhooks/router.d.ts +0 -25
  291. package/dist/webhooks/router.d.ts.map +0 -1
  292. package/dist/webhooks/router.js +0 -504
  293. package/dist/webhooks/router.js.map +0 -1
  294. package/dist/webhooks/rules-engine.d.ts +0 -24
  295. package/dist/webhooks/rules-engine.d.ts.map +0 -1
  296. package/dist/webhooks/rules-engine.js +0 -287
  297. package/dist/webhooks/rules-engine.js.map +0 -1
  298. package/dist/webhooks/types.d.ts +0 -186
  299. package/dist/webhooks/types.d.ts.map +0 -1
  300. package/dist/webhooks/types.js +0 -8
  301. package/dist/webhooks/types.js.map +0 -1
@@ -0,0 +1,49 @@
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
+ resume?: string;
12
+ startFrom?: string;
13
+ previousRunId?: string;
14
+ };
15
+ export declare function inferWorkflowFileType(filePath: string): WorkflowFileType | null;
16
+ export declare function shouldSyncCodeByDefault(_workflowArg: string, _explicitFileType?: WorkflowFileType): boolean;
17
+ export declare function resolveWorkflowInput(workflowArg: string, explicitFileType?: WorkflowFileType): Promise<ResolvedWorkflowInput>;
18
+ export declare function runWorkflow(workflowArg: string, options?: RunWorkflowOptions): Promise<RunWorkflowResponse>;
19
+ export declare function getRunStatus(runId: string, options?: {
20
+ apiUrl?: string;
21
+ }): Promise<Record<string, unknown>>;
22
+ export declare function cancelWorkflow(runId: string, options?: {
23
+ apiUrl?: string;
24
+ }): Promise<{
25
+ runId: string;
26
+ status: string;
27
+ }>;
28
+ export declare function getRunLogs(runId: string, options?: {
29
+ apiUrl?: string;
30
+ offset?: number;
31
+ sandboxId?: string;
32
+ }): Promise<WorkflowLogsResponse>;
33
+ export declare function syncWorkflowPatch(runId: string, options?: {
34
+ apiUrl?: string;
35
+ }): Promise<SyncPatchResponse>;
36
+ /**
37
+ * Turn the user-typed workflow path into a path **relative to the tarball
38
+ * root** (process.cwd()) that the cloud launcher can append to
39
+ * `/project/` to locate the file inside the synced code tree.
40
+ *
41
+ * Returns `null` when the result would escape the tarball (absolute
42
+ * outside cwd, or contains `..`). Callers drop the hint in that case —
43
+ * the server falls back to the legacy $HOME upload path, which still
44
+ * works (it just breaks sibling-relative imports, the pre-existing
45
+ * behaviour this field was added to fix).
46
+ */
47
+ export declare function relativizeWorkflowPath(workflowArg: string): string | null;
48
+ export {};
49
+ //# 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;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,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,CA2H9B;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,473 @@
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 (options.resume) {
162
+ requestBody.resume = options.resume;
163
+ }
164
+ if (options.startFrom) {
165
+ requestBody.startFrom = options.startFrom;
166
+ }
167
+ if (options.previousRunId) {
168
+ requestBody.previousRunId = options.previousRunId;
169
+ }
170
+ if (input.sourceFileType) {
171
+ requestBody.sourceFileType = input.sourceFileType;
172
+ }
173
+ if (syncCode) {
174
+ const t0 = Date.now();
175
+ console.error('Preparing run...');
176
+ const { response: prepResponse, auth: prepAuth } = await authorizedApiFetch(auth, '/api/v1/workflows/prepare', {
177
+ method: 'POST',
178
+ headers: { Accept: 'application/json' },
179
+ });
180
+ auth = prepAuth;
181
+ const prepPayload = await readJsonResponse(prepResponse);
182
+ if (!prepResponse.ok) {
183
+ throw new Error(`Workflow prepare failed: ${describeResponseError(prepResponse, prepPayload)}`);
184
+ }
185
+ if (!isPrepareWorkflowResponse(prepPayload)) {
186
+ throw new Error('Workflow prepare response was not valid JSON.');
187
+ }
188
+ const prepared = prepPayload;
189
+ console.error(` Prepared in ${((Date.now() - t0) / 1000).toFixed(1)}s`);
190
+ const t1 = Date.now();
191
+ console.error('Creating tarball...');
192
+ const s3Client = createScopedS3Client(prepared.s3Credentials);
193
+ const tarball = await createTarball(process.cwd());
194
+ console.error(` Tarball: ${(tarball.length / 1024).toFixed(0)}KB in ${((Date.now() - t1) / 1000).toFixed(1)}s`);
195
+ const t2 = Date.now();
196
+ console.error('Uploading to S3...');
197
+ const key = scopedCodeKey(prepared.s3Credentials.prefix, prepared.s3CodeKey);
198
+ await s3Client.send(new PutObjectCommand({
199
+ Bucket: prepared.s3Credentials.bucket,
200
+ Key: key,
201
+ Body: tarball,
202
+ ContentType: 'application/gzip',
203
+ }));
204
+ console.error(` Uploaded in ${((Date.now() - t2) / 1000).toFixed(1)}s`);
205
+ requestBody.runId = prepared.runId;
206
+ requestBody.s3CodeKey = prepared.s3CodeKey;
207
+ // Send the workflow's path inside the synced tarball so the cloud
208
+ // launcher can set WORKFLOW_FILE directly — no $HOME upload dance,
209
+ // sibling-relative imports (e.g. `../shared/models.ts`) resolve
210
+ // against the repo layout. The tarball was produced from
211
+ // process.cwd(), so relativize the user-typed argument against cwd.
212
+ //
213
+ // Absolute paths outside cwd OR paths that would escape the tarball
214
+ // via `..` are dropped silently — the server falls back to the
215
+ // legacy $HOME upload path in that case.
216
+ const workflowPath = relativizeWorkflowPath(workflowArg);
217
+ if (workflowPath) {
218
+ requestBody.workflowPath = workflowPath;
219
+ }
220
+ }
221
+ const t3 = Date.now();
222
+ console.error('Launching workflow...');
223
+ const { response, auth: updatedAuth } = await authorizedApiFetch(auth, '/api/v1/workflows/run', {
224
+ method: 'POST',
225
+ headers: {
226
+ 'Content-Type': 'application/json',
227
+ Accept: 'application/json',
228
+ },
229
+ body: JSON.stringify(requestBody),
230
+ });
231
+ auth = updatedAuth;
232
+ console.error(` Launched in ${((Date.now() - t3) / 1000).toFixed(1)}s`);
233
+ const payload = await readJsonResponse(response);
234
+ if (!response.ok) {
235
+ throw new Error(`Workflow run failed: ${describeResponseError(response, payload)}`);
236
+ }
237
+ if (!payload ||
238
+ typeof payload !== 'object' ||
239
+ typeof payload.runId !== 'string' ||
240
+ typeof payload.status !== 'string') {
241
+ throw new Error('Workflow run response was not valid JSON.');
242
+ }
243
+ return payload;
244
+ }
245
+ export async function getRunStatus(runId, options = {}) {
246
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
247
+ const auth = await ensureAuthenticated(apiUrl);
248
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}`, {
249
+ headers: { Accept: 'application/json' },
250
+ });
251
+ const payload = await readJsonResponse(response);
252
+ if (!response.ok) {
253
+ throw new Error(`Status request failed: ${describeResponseError(response, payload)}`);
254
+ }
255
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
256
+ throw new Error('Status response was not valid JSON.');
257
+ }
258
+ return payload;
259
+ }
260
+ export async function cancelWorkflow(runId, options = {}) {
261
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
262
+ const auth = await ensureAuthenticated(apiUrl);
263
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}/cancel`, {
264
+ method: 'POST',
265
+ headers: { Accept: 'application/json' },
266
+ });
267
+ const payload = await readJsonResponse(response);
268
+ if (!response.ok) {
269
+ throw new Error(`Cancel failed: ${describeResponseError(response, payload)}`);
270
+ }
271
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
272
+ throw new Error('Cancel response was not valid JSON.');
273
+ }
274
+ return payload;
275
+ }
276
+ export async function getRunLogs(runId, options = {}) {
277
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
278
+ const auth = await ensureAuthenticated(apiUrl);
279
+ const searchParams = new URLSearchParams();
280
+ if (typeof options.offset === 'number') {
281
+ searchParams.set('offset', String(options.offset));
282
+ }
283
+ if (options.sandboxId) {
284
+ searchParams.set('sandboxId', options.sandboxId);
285
+ }
286
+ const requestPath = `/api/v1/workflows/runs/${encodeURIComponent(runId)}/logs${searchParams.size ? `?${searchParams.toString()}` : ''}`;
287
+ const { response } = await authorizedApiFetch(auth, requestPath, {
288
+ headers: { Accept: 'application/json' },
289
+ });
290
+ const payload = await readJsonResponse(response);
291
+ if (!response.ok) {
292
+ throw new Error(`Log request failed: ${describeResponseError(response, payload)}`);
293
+ }
294
+ if (!payload ||
295
+ typeof payload !== 'object' ||
296
+ typeof payload.content !== 'string' ||
297
+ typeof payload.offset !== 'number' ||
298
+ typeof payload.totalSize !== 'number' ||
299
+ typeof payload.done !== 'boolean') {
300
+ throw new Error('Log response was not valid JSON.');
301
+ }
302
+ return payload;
303
+ }
304
+ export async function syncWorkflowPatch(runId, options = {}) {
305
+ const apiUrl = options.apiUrl ?? defaultApiUrl();
306
+ let auth = await ensureAuthenticated(apiUrl);
307
+ // Verify the run is completed
308
+ const { response: statusResponse, auth: a1 } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}`, { headers: { Accept: 'application/json' } });
309
+ auth = a1;
310
+ if (!statusResponse.ok) {
311
+ const payload = await readJsonResponse(statusResponse);
312
+ throw new Error(`Failed to fetch run status: ${describeResponseError(statusResponse, payload)}`);
313
+ }
314
+ const runData = (await statusResponse.json());
315
+ if (runData.status !== 'completed' && runData.status !== 'failed' && runData.status !== 'cancelled') {
316
+ throw new Error(`Run is still ${runData.status ?? 'unknown'}. Wait for completion before syncing.`);
317
+ }
318
+ // Download the patch
319
+ const { response } = await authorizedApiFetch(auth, `/api/v1/workflows/runs/${encodeURIComponent(runId)}/patch`, { headers: { Accept: 'application/json' } });
320
+ const payload = await readJsonResponse(response);
321
+ if (!response.ok) {
322
+ throw new Error(`Patch download failed: ${describeResponseError(response, payload)}`);
323
+ }
324
+ if (!payload ||
325
+ typeof payload !== 'object' ||
326
+ typeof payload.hasChanges !== 'boolean') {
327
+ throw new Error('Patch response was not valid JSON.');
328
+ }
329
+ return payload;
330
+ }
331
+ // ── Internal helpers ──────────────────────────────────────────────────────────
332
+ async function readJsonResponse(response) {
333
+ const rawBody = await response.text();
334
+ if (!rawBody) {
335
+ return null;
336
+ }
337
+ try {
338
+ return JSON.parse(rawBody);
339
+ }
340
+ catch {
341
+ return rawBody;
342
+ }
343
+ }
344
+ function describeResponseError(response, payload) {
345
+ if (typeof payload === 'string' && payload.trim()) {
346
+ return `${response.status} ${response.statusText}: ${payload.trim()}`;
347
+ }
348
+ if (payload && typeof payload === 'object' && !Array.isArray(payload)) {
349
+ const record = payload;
350
+ const message = record.error ?? record.message;
351
+ if (typeof message === 'string' && message.trim()) {
352
+ return `${response.status} ${response.statusText}: ${message.trim()}`;
353
+ }
354
+ }
355
+ return `${response.status} ${response.statusText}`;
356
+ }
357
+ function isMissingFileError(error) {
358
+ return Boolean(error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT');
359
+ }
360
+ function isPrepareWorkflowResponse(payload) {
361
+ if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
362
+ return false;
363
+ }
364
+ const record = payload;
365
+ const s3Creds = record.s3Credentials;
366
+ if (!s3Creds || typeof s3Creds !== 'object' || Array.isArray(s3Creds)) {
367
+ return false;
368
+ }
369
+ const creds = s3Creds;
370
+ return (typeof record.runId === 'string' &&
371
+ typeof record.s3CodeKey === 'string' &&
372
+ typeof creds.accessKeyId === 'string' &&
373
+ typeof creds.secretAccessKey === 'string' &&
374
+ typeof creds.sessionToken === 'string' &&
375
+ typeof creds.bucket === 'string' &&
376
+ typeof creds.prefix === 'string');
377
+ }
378
+ function createScopedS3Client(s3Credentials) {
379
+ return new S3Client({
380
+ region: process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION ?? 'us-east-1',
381
+ credentials: {
382
+ accessKeyId: s3Credentials.accessKeyId,
383
+ secretAccessKey: s3Credentials.secretAccessKey,
384
+ sessionToken: s3Credentials.sessionToken,
385
+ },
386
+ });
387
+ }
388
+ async function createTarball(rootDir) {
389
+ const absoluteRoot = path.resolve(rootDir);
390
+ try {
391
+ const { execSync } = await import('node:child_process');
392
+ const gitFiles = execSync('git ls-files -z', {
393
+ cwd: absoluteRoot,
394
+ encoding: 'utf-8',
395
+ maxBuffer: 50 * 1024 * 1024,
396
+ });
397
+ const files = gitFiles.split('\0').filter(Boolean);
398
+ if (files.length > 0) {
399
+ const tarStream = tar.create({ gzip: true, cwd: absoluteRoot, portable: true }, files);
400
+ const chunks = [];
401
+ for await (const chunk of tarStream) {
402
+ chunks.push(Buffer.from(chunk));
403
+ }
404
+ return Buffer.concat(chunks);
405
+ }
406
+ }
407
+ catch {
408
+ // Not a git repo or git not available — fall back to ignore-based filter
409
+ }
410
+ const ig = await buildIgnoreMatcher(absoluteRoot);
411
+ const tarStream = tar.create({
412
+ gzip: true,
413
+ cwd: absoluteRoot,
414
+ portable: true,
415
+ filter(entryPath) {
416
+ const normalized = normalizeEntryPath(entryPath);
417
+ if (!normalized || normalized === '.')
418
+ return true;
419
+ return !ig.ignores(normalized);
420
+ },
421
+ }, ['.']);
422
+ const chunks = [];
423
+ for await (const chunk of tarStream) {
424
+ chunks.push(Buffer.from(chunk));
425
+ }
426
+ return Buffer.concat(chunks);
427
+ }
428
+ async function buildIgnoreMatcher(rootDir) {
429
+ const ig = ignore();
430
+ ig.add(CODE_SYNC_EXCLUDES);
431
+ try {
432
+ const gitignoreContent = await fs.readFile(path.join(rootDir, '.gitignore'), 'utf-8');
433
+ ig.add(gitignoreContent);
434
+ }
435
+ catch (error) {
436
+ if (!isMissingFileError(error)) {
437
+ throw error;
438
+ }
439
+ }
440
+ return ig;
441
+ }
442
+ function normalizeEntryPath(entryPath) {
443
+ return entryPath.replace(/^\.\//, '').replace(/\\/g, '/');
444
+ }
445
+ function scopedCodeKey(prefix, key) {
446
+ return [prefix, key].filter(Boolean).join('/');
447
+ }
448
+ /**
449
+ * Turn the user-typed workflow path into a path **relative to the tarball
450
+ * root** (process.cwd()) that the cloud launcher can append to
451
+ * `/project/` to locate the file inside the synced code tree.
452
+ *
453
+ * Returns `null` when the result would escape the tarball (absolute
454
+ * outside cwd, or contains `..`). Callers drop the hint in that case —
455
+ * the server falls back to the legacy $HOME upload path, which still
456
+ * works (it just breaks sibling-relative imports, the pre-existing
457
+ * behaviour this field was added to fix).
458
+ */
459
+ export function relativizeWorkflowPath(workflowArg) {
460
+ const absolute = path.resolve(process.cwd(), workflowArg);
461
+ let rel = path.relative(process.cwd(), absolute);
462
+ if (rel.length === 0)
463
+ return null;
464
+ // Normalize to forward slashes so the server-side validator (which
465
+ // runs on Linux Lambda) gets the same shape regardless of the CLI OS.
466
+ rel = rel.split(path.sep).join('/');
467
+ if (rel.startsWith('../') || rel === '..')
468
+ return null;
469
+ if (path.isAbsolute(rel))
470
+ return null;
471
+ return rel;
472
+ }
473
+ //# 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.4",
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,17 @@
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.4",
27
+ "@aws-sdk/client-s3": "3.1020.0",
28
+ "ignore": "^7.0.5",
29
+ "tar": "^7.5.10"
30
+ },
31
+ "optionalDependencies": {
32
+ "ssh2": "^1.17.0"
46
33
  },
47
34
  "devDependencies": {
48
35
  "@types/node": "^22.19.3",
49
- "typescript": "^5.9.3",
36
+ "@types/ssh2": "^1.15.5",
50
37
  "vitest": "^3.2.4"
51
38
  },
52
39
  "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"}