agent-relay 1.0.22 → 1.2.0

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 (613) hide show
  1. package/README.md +1 -1
  2. package/dist/bridge/shadow-cli.d.ts +17 -0
  3. package/dist/bridge/shadow-cli.d.ts.map +1 -0
  4. package/dist/bridge/shadow-cli.js +75 -0
  5. package/dist/bridge/shadow-cli.js.map +1 -0
  6. package/dist/bridge/shadow-config.d.ts +87 -0
  7. package/dist/bridge/shadow-config.d.ts.map +1 -0
  8. package/dist/bridge/shadow-config.js +134 -0
  9. package/dist/bridge/shadow-config.js.map +1 -0
  10. package/dist/bridge/spawner.d.ts +68 -1
  11. package/dist/bridge/spawner.d.ts.map +1 -1
  12. package/dist/bridge/spawner.js +360 -16
  13. package/dist/bridge/spawner.js.map +1 -1
  14. package/dist/bridge/types.d.ts +67 -0
  15. package/dist/bridge/types.d.ts.map +1 -1
  16. package/dist/cli/index.js +1196 -15
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cloud/api/auth.d.ts +20 -0
  19. package/dist/cloud/api/auth.d.ts.map +1 -0
  20. package/dist/cloud/api/auth.js +128 -0
  21. package/dist/cloud/api/auth.js.map +1 -0
  22. package/dist/cloud/api/billing.d.ts +17 -0
  23. package/dist/cloud/api/billing.d.ts.map +1 -0
  24. package/dist/cloud/api/billing.js +353 -0
  25. package/dist/cloud/api/billing.js.map +1 -0
  26. package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
  27. package/dist/cloud/api/cli-pty-runner.d.ts.map +1 -0
  28. package/dist/cloud/api/cli-pty-runner.js +119 -0
  29. package/dist/cloud/api/cli-pty-runner.js.map +1 -0
  30. package/dist/cloud/api/coordinators.d.ts +8 -0
  31. package/dist/cloud/api/coordinators.d.ts.map +1 -0
  32. package/dist/cloud/api/coordinators.js +347 -0
  33. package/dist/cloud/api/coordinators.js.map +1 -0
  34. package/dist/cloud/api/daemons.d.ts +12 -0
  35. package/dist/cloud/api/daemons.d.ts.map +1 -0
  36. package/dist/cloud/api/daemons.js +320 -0
  37. package/dist/cloud/api/daemons.js.map +1 -0
  38. package/dist/cloud/api/generic-webhooks.d.ts +8 -0
  39. package/dist/cloud/api/generic-webhooks.d.ts.map +1 -0
  40. package/dist/cloud/api/generic-webhooks.js +129 -0
  41. package/dist/cloud/api/generic-webhooks.js.map +1 -0
  42. package/dist/cloud/api/git.d.ts +8 -0
  43. package/dist/cloud/api/git.d.ts.map +1 -0
  44. package/dist/cloud/api/git.js +131 -0
  45. package/dist/cloud/api/git.js.map +1 -0
  46. package/dist/cloud/api/github-app.d.ts +11 -0
  47. package/dist/cloud/api/github-app.d.ts.map +1 -0
  48. package/dist/cloud/api/github-app.js +189 -0
  49. package/dist/cloud/api/github-app.js.map +1 -0
  50. package/dist/cloud/api/middleware/planLimits.d.ts +43 -0
  51. package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -0
  52. package/dist/cloud/api/middleware/planLimits.js +202 -0
  53. package/dist/cloud/api/middleware/planLimits.js.map +1 -0
  54. package/dist/cloud/api/monitoring.d.ts +11 -0
  55. package/dist/cloud/api/monitoring.d.ts.map +1 -0
  56. package/dist/cloud/api/monitoring.js +578 -0
  57. package/dist/cloud/api/monitoring.js.map +1 -0
  58. package/dist/cloud/api/nango-auth.d.ts +9 -0
  59. package/dist/cloud/api/nango-auth.d.ts.map +1 -0
  60. package/dist/cloud/api/nango-auth.js +377 -0
  61. package/dist/cloud/api/nango-auth.js.map +1 -0
  62. package/dist/cloud/api/onboarding.d.ts +15 -0
  63. package/dist/cloud/api/onboarding.d.ts.map +1 -0
  64. package/dist/cloud/api/onboarding.js +588 -0
  65. package/dist/cloud/api/onboarding.js.map +1 -0
  66. package/dist/cloud/api/policy.d.ts +8 -0
  67. package/dist/cloud/api/policy.d.ts.map +1 -0
  68. package/dist/cloud/api/policy.js +229 -0
  69. package/dist/cloud/api/policy.js.map +1 -0
  70. package/dist/cloud/api/providers.d.ts +7 -0
  71. package/dist/cloud/api/providers.d.ts.map +1 -0
  72. package/dist/cloud/api/providers.js +507 -0
  73. package/dist/cloud/api/providers.js.map +1 -0
  74. package/dist/cloud/api/repos.d.ts +7 -0
  75. package/dist/cloud/api/repos.d.ts.map +1 -0
  76. package/dist/cloud/api/repos.js +314 -0
  77. package/dist/cloud/api/repos.js.map +1 -0
  78. package/dist/cloud/api/teams.d.ts +7 -0
  79. package/dist/cloud/api/teams.d.ts.map +1 -0
  80. package/dist/cloud/api/teams.js +279 -0
  81. package/dist/cloud/api/teams.js.map +1 -0
  82. package/dist/cloud/api/test-helpers.d.ts +10 -0
  83. package/dist/cloud/api/test-helpers.d.ts.map +1 -0
  84. package/dist/cloud/api/test-helpers.js +575 -0
  85. package/dist/cloud/api/test-helpers.js.map +1 -0
  86. package/dist/cloud/api/usage.d.ts +7 -0
  87. package/dist/cloud/api/usage.d.ts.map +1 -0
  88. package/dist/cloud/api/usage.js +98 -0
  89. package/dist/cloud/api/usage.js.map +1 -0
  90. package/dist/cloud/api/webhooks.d.ts +7 -0
  91. package/dist/cloud/api/webhooks.d.ts.map +1 -0
  92. package/dist/cloud/api/webhooks.js +496 -0
  93. package/dist/cloud/api/webhooks.js.map +1 -0
  94. package/dist/cloud/api/workspaces.d.ts +7 -0
  95. package/dist/cloud/api/workspaces.d.ts.map +1 -0
  96. package/dist/cloud/api/workspaces.js +727 -0
  97. package/dist/cloud/api/workspaces.js.map +1 -0
  98. package/dist/cloud/billing/index.d.ts +9 -0
  99. package/dist/cloud/billing/index.d.ts.map +1 -0
  100. package/dist/cloud/billing/index.js +9 -0
  101. package/dist/cloud/billing/index.js.map +1 -0
  102. package/dist/cloud/billing/plans.d.ts +39 -0
  103. package/dist/cloud/billing/plans.d.ts.map +1 -0
  104. package/dist/cloud/billing/plans.js +245 -0
  105. package/dist/cloud/billing/plans.js.map +1 -0
  106. package/dist/cloud/billing/service.d.ts +80 -0
  107. package/dist/cloud/billing/service.d.ts.map +1 -0
  108. package/dist/cloud/billing/service.js +388 -0
  109. package/dist/cloud/billing/service.js.map +1 -0
  110. package/dist/cloud/billing/types.d.ts +141 -0
  111. package/dist/cloud/billing/types.d.ts.map +1 -0
  112. package/dist/cloud/billing/types.js +7 -0
  113. package/dist/cloud/billing/types.js.map +1 -0
  114. package/dist/cloud/config.d.ts +66 -0
  115. package/dist/cloud/config.d.ts.map +1 -0
  116. package/dist/cloud/config.js +92 -0
  117. package/dist/cloud/config.js.map +1 -0
  118. package/dist/cloud/db/drizzle.d.ts +215 -0
  119. package/dist/cloud/db/drizzle.d.ts.map +1 -0
  120. package/dist/cloud/db/drizzle.js +1083 -0
  121. package/dist/cloud/db/drizzle.js.map +1 -0
  122. package/dist/cloud/db/index.d.ts +35 -0
  123. package/dist/cloud/db/index.d.ts.map +1 -0
  124. package/dist/cloud/db/index.js +52 -0
  125. package/dist/cloud/db/index.js.map +1 -0
  126. package/dist/cloud/db/schema.d.ts +4519 -0
  127. package/dist/cloud/db/schema.d.ts.map +1 -0
  128. package/dist/cloud/db/schema.js +547 -0
  129. package/dist/cloud/db/schema.js.map +1 -0
  130. package/dist/cloud/index.d.ts +12 -0
  131. package/dist/cloud/index.d.ts.map +1 -0
  132. package/dist/cloud/index.js +39 -0
  133. package/dist/cloud/index.js.map +1 -0
  134. package/dist/cloud/provisioner/index.d.ts +75 -0
  135. package/dist/cloud/provisioner/index.d.ts.map +1 -0
  136. package/dist/cloud/provisioner/index.js +977 -0
  137. package/dist/cloud/provisioner/index.js.map +1 -0
  138. package/dist/cloud/server.d.ts +17 -0
  139. package/dist/cloud/server.d.ts.map +1 -0
  140. package/dist/cloud/server.js +534 -0
  141. package/dist/cloud/server.js.map +1 -0
  142. package/dist/cloud/services/auto-scaler.d.ts +152 -0
  143. package/dist/cloud/services/auto-scaler.d.ts.map +1 -0
  144. package/dist/cloud/services/auto-scaler.js +439 -0
  145. package/dist/cloud/services/auto-scaler.js.map +1 -0
  146. package/dist/cloud/services/capacity-manager.d.ts +148 -0
  147. package/dist/cloud/services/capacity-manager.d.ts.map +1 -0
  148. package/dist/cloud/services/capacity-manager.js +449 -0
  149. package/dist/cloud/services/capacity-manager.js.map +1 -0
  150. package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
  151. package/dist/cloud/services/ci-agent-spawner.d.ts.map +1 -0
  152. package/dist/cloud/services/ci-agent-spawner.js +373 -0
  153. package/dist/cloud/services/ci-agent-spawner.js.map +1 -0
  154. package/dist/cloud/services/coordinator.d.ts +62 -0
  155. package/dist/cloud/services/coordinator.d.ts.map +1 -0
  156. package/dist/cloud/services/coordinator.js +389 -0
  157. package/dist/cloud/services/coordinator.js.map +1 -0
  158. package/dist/cloud/services/index.d.ts +12 -0
  159. package/dist/cloud/services/index.d.ts.map +1 -0
  160. package/dist/cloud/services/index.js +15 -0
  161. package/dist/cloud/services/index.js.map +1 -0
  162. package/dist/cloud/services/mention-handler.d.ts +65 -0
  163. package/dist/cloud/services/mention-handler.d.ts.map +1 -0
  164. package/dist/cloud/services/mention-handler.js +405 -0
  165. package/dist/cloud/services/mention-handler.js.map +1 -0
  166. package/dist/cloud/services/nango.d.ts +126 -0
  167. package/dist/cloud/services/nango.d.ts.map +1 -0
  168. package/dist/cloud/services/nango.js +191 -0
  169. package/dist/cloud/services/nango.js.map +1 -0
  170. package/dist/cloud/services/persistence.d.ts +131 -0
  171. package/dist/cloud/services/persistence.d.ts.map +1 -0
  172. package/dist/cloud/services/persistence.js +200 -0
  173. package/dist/cloud/services/persistence.js.map +1 -0
  174. package/dist/cloud/services/planLimits.d.ts +125 -0
  175. package/dist/cloud/services/planLimits.d.ts.map +1 -0
  176. package/dist/cloud/services/planLimits.js +282 -0
  177. package/dist/cloud/services/planLimits.js.map +1 -0
  178. package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
  179. package/dist/cloud/services/scaling-orchestrator.d.ts.map +1 -0
  180. package/dist/cloud/services/scaling-orchestrator.js +502 -0
  181. package/dist/cloud/services/scaling-orchestrator.js.map +1 -0
  182. package/dist/cloud/services/scaling-policy.d.ts +121 -0
  183. package/dist/cloud/services/scaling-policy.d.ts.map +1 -0
  184. package/dist/cloud/services/scaling-policy.js +415 -0
  185. package/dist/cloud/services/scaling-policy.js.map +1 -0
  186. package/dist/cloud/vault/index.d.ts +76 -0
  187. package/dist/cloud/vault/index.d.ts.map +1 -0
  188. package/dist/cloud/vault/index.js +219 -0
  189. package/dist/cloud/vault/index.js.map +1 -0
  190. package/dist/cloud/webhooks/index.d.ts +24 -0
  191. package/dist/cloud/webhooks/index.d.ts.map +1 -0
  192. package/dist/cloud/webhooks/index.js +29 -0
  193. package/dist/cloud/webhooks/index.js.map +1 -0
  194. package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
  195. package/dist/cloud/webhooks/parsers/github.d.ts.map +1 -0
  196. package/dist/cloud/webhooks/parsers/github.js +234 -0
  197. package/dist/cloud/webhooks/parsers/github.js.map +1 -0
  198. package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
  199. package/dist/cloud/webhooks/parsers/index.d.ts.map +1 -0
  200. package/dist/cloud/webhooks/parsers/index.js +30 -0
  201. package/dist/cloud/webhooks/parsers/index.js.map +1 -0
  202. package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
  203. package/dist/cloud/webhooks/parsers/linear.d.ts.map +1 -0
  204. package/dist/cloud/webhooks/parsers/linear.js +258 -0
  205. package/dist/cloud/webhooks/parsers/linear.js.map +1 -0
  206. package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
  207. package/dist/cloud/webhooks/parsers/slack.d.ts.map +1 -0
  208. package/dist/cloud/webhooks/parsers/slack.js +214 -0
  209. package/dist/cloud/webhooks/parsers/slack.js.map +1 -0
  210. package/dist/cloud/webhooks/responders/github.d.ts +8 -0
  211. package/dist/cloud/webhooks/responders/github.d.ts.map +1 -0
  212. package/dist/cloud/webhooks/responders/github.js +73 -0
  213. package/dist/cloud/webhooks/responders/github.js.map +1 -0
  214. package/dist/cloud/webhooks/responders/index.d.ts +23 -0
  215. package/dist/cloud/webhooks/responders/index.d.ts.map +1 -0
  216. package/dist/cloud/webhooks/responders/index.js +30 -0
  217. package/dist/cloud/webhooks/responders/index.js.map +1 -0
  218. package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
  219. package/dist/cloud/webhooks/responders/linear.d.ts.map +1 -0
  220. package/dist/cloud/webhooks/responders/linear.js +149 -0
  221. package/dist/cloud/webhooks/responders/linear.js.map +1 -0
  222. package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
  223. package/dist/cloud/webhooks/responders/slack.d.ts.map +1 -0
  224. package/dist/cloud/webhooks/responders/slack.js +178 -0
  225. package/dist/cloud/webhooks/responders/slack.js.map +1 -0
  226. package/dist/cloud/webhooks/router.d.ts +25 -0
  227. package/dist/cloud/webhooks/router.d.ts.map +1 -0
  228. package/dist/cloud/webhooks/router.js +504 -0
  229. package/dist/cloud/webhooks/router.js.map +1 -0
  230. package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
  231. package/dist/cloud/webhooks/rules-engine.d.ts.map +1 -0
  232. package/dist/cloud/webhooks/rules-engine.js +287 -0
  233. package/dist/cloud/webhooks/rules-engine.js.map +1 -0
  234. package/dist/cloud/webhooks/types.d.ts +186 -0
  235. package/dist/cloud/webhooks/types.d.ts.map +1 -0
  236. package/dist/cloud/webhooks/types.js +8 -0
  237. package/dist/cloud/webhooks/types.js.map +1 -0
  238. package/dist/continuity/formatter.d.ts +51 -0
  239. package/dist/continuity/formatter.d.ts.map +1 -0
  240. package/dist/continuity/formatter.js +313 -0
  241. package/dist/continuity/formatter.js.map +1 -0
  242. package/dist/continuity/handoff-store.d.ts +67 -0
  243. package/dist/continuity/handoff-store.d.ts.map +1 -0
  244. package/dist/continuity/handoff-store.js +472 -0
  245. package/dist/continuity/handoff-store.js.map +1 -0
  246. package/dist/continuity/index.d.ts +45 -0
  247. package/dist/continuity/index.d.ts.map +1 -0
  248. package/dist/continuity/index.js +48 -0
  249. package/dist/continuity/index.js.map +1 -0
  250. package/dist/continuity/ledger-store.d.ts +110 -0
  251. package/dist/continuity/ledger-store.d.ts.map +1 -0
  252. package/dist/continuity/ledger-store.js +500 -0
  253. package/dist/continuity/ledger-store.js.map +1 -0
  254. package/dist/continuity/manager.d.ts +178 -0
  255. package/dist/continuity/manager.d.ts.map +1 -0
  256. package/dist/continuity/manager.js +562 -0
  257. package/dist/continuity/manager.js.map +1 -0
  258. package/dist/continuity/parser.d.ts +76 -0
  259. package/dist/continuity/parser.d.ts.map +1 -0
  260. package/dist/continuity/parser.js +579 -0
  261. package/dist/continuity/parser.js.map +1 -0
  262. package/dist/continuity/types.d.ts +180 -0
  263. package/dist/continuity/types.d.ts.map +1 -0
  264. package/dist/continuity/types.js +9 -0
  265. package/dist/continuity/types.js.map +1 -0
  266. package/dist/daemon/agent-manager.d.ts +114 -0
  267. package/dist/daemon/agent-manager.d.ts.map +1 -0
  268. package/dist/daemon/agent-manager.js +513 -0
  269. package/dist/daemon/agent-manager.js.map +1 -0
  270. package/dist/daemon/agent-registry.d.ts +34 -0
  271. package/dist/daemon/agent-registry.d.ts.map +1 -1
  272. package/dist/daemon/agent-registry.js +45 -2
  273. package/dist/daemon/agent-registry.js.map +1 -1
  274. package/dist/daemon/api.d.ts +81 -0
  275. package/dist/daemon/api.d.ts.map +1 -0
  276. package/dist/daemon/api.js +554 -0
  277. package/dist/daemon/api.js.map +1 -0
  278. package/dist/daemon/cli-auth.d.ts +67 -0
  279. package/dist/daemon/cli-auth.d.ts.map +1 -0
  280. package/dist/daemon/cli-auth.js +537 -0
  281. package/dist/daemon/cli-auth.js.map +1 -0
  282. package/dist/daemon/cloud-sync.d.ts +101 -0
  283. package/dist/daemon/cloud-sync.d.ts.map +1 -0
  284. package/dist/daemon/cloud-sync.js +263 -0
  285. package/dist/daemon/cloud-sync.js.map +1 -0
  286. package/dist/daemon/index.d.ts +4 -0
  287. package/dist/daemon/index.d.ts.map +1 -1
  288. package/dist/daemon/index.js +6 -0
  289. package/dist/daemon/index.js.map +1 -1
  290. package/dist/daemon/orchestrator.d.ts +155 -0
  291. package/dist/daemon/orchestrator.d.ts.map +1 -0
  292. package/dist/daemon/orchestrator.js +766 -0
  293. package/dist/daemon/orchestrator.js.map +1 -0
  294. package/dist/daemon/router.d.ts +29 -0
  295. package/dist/daemon/router.d.ts.map +1 -1
  296. package/dist/daemon/router.js +143 -21
  297. package/dist/daemon/router.js.map +1 -1
  298. package/dist/daemon/server.d.ts +42 -0
  299. package/dist/daemon/server.d.ts.map +1 -1
  300. package/dist/daemon/server.js +199 -16
  301. package/dist/daemon/server.js.map +1 -1
  302. package/dist/daemon/services/browser-testing.d.ts +88 -0
  303. package/dist/daemon/services/browser-testing.d.ts.map +1 -0
  304. package/dist/daemon/services/browser-testing.js +244 -0
  305. package/dist/daemon/services/browser-testing.js.map +1 -0
  306. package/dist/daemon/services/container-spawner.d.ts +135 -0
  307. package/dist/daemon/services/container-spawner.d.ts.map +1 -0
  308. package/dist/daemon/services/container-spawner.js +313 -0
  309. package/dist/daemon/services/container-spawner.js.map +1 -0
  310. package/dist/daemon/types.d.ts +131 -0
  311. package/dist/daemon/types.d.ts.map +1 -0
  312. package/dist/daemon/types.js +6 -0
  313. package/dist/daemon/types.js.map +1 -0
  314. package/dist/daemon/workspace-manager.d.ts +75 -0
  315. package/dist/daemon/workspace-manager.d.ts.map +1 -0
  316. package/dist/daemon/workspace-manager.js +289 -0
  317. package/dist/daemon/workspace-manager.js.map +1 -0
  318. package/dist/dashboard/out/404.html +1 -1
  319. package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
  320. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  321. package/dist/dashboard/out/_next/static/chunks/480-2d4111711d4e473c.js +1 -0
  322. package/dist/dashboard/out/_next/static/chunks/724-73c1ee5f60abe860.js +9 -0
  323. package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +1 -0
  324. package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +1 -0
  325. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-dc2e3a1a22478efc.js +1 -0
  326. package/dist/dashboard/out/_next/static/chunks/app/history/page-56a8b4616a90dc43.js +1 -0
  327. package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
  328. package/dist/dashboard/out/_next/static/chunks/app/login/page-3eac37ea6f5dd153.js +1 -0
  329. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1081dd190a331a91.js +1 -0
  330. package/dist/dashboard/out/_next/static/chunks/app/page-daf87e86f783f980.js +1 -0
  331. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-4d72d5a5d8a9b618.js +1 -0
  332. package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +1 -0
  333. package/dist/dashboard/out/_next/static/chunks/app/signup/page-fee4ed1709070bcd.js +1 -0
  334. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  335. package/dist/dashboard/out/_next/static/chunks/{main-e0a1f53fe0617a63.js → main-97850e03d723ea8c.js} +1 -1
  336. package/dist/dashboard/out/_next/static/chunks/main-app-5d692157a8eb1fd9.js +1 -0
  337. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  338. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
  339. package/dist/dashboard/out/_next/static/css/411ce23ffeae9f76.css +1 -0
  340. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  341. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  342. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  343. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  344. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  345. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
  346. package/dist/dashboard/out/alt-logos/logo.svg +38 -0
  347. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  348. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  349. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  350. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  351. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  352. package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
  353. package/dist/dashboard/out/app.html +1 -0
  354. package/dist/dashboard/out/app.txt +7 -0
  355. package/dist/dashboard/out/connect-repos.html +1 -0
  356. package/dist/dashboard/out/connect-repos.txt +7 -0
  357. package/dist/dashboard/out/history.html +1 -0
  358. package/dist/dashboard/out/history.txt +7 -0
  359. package/dist/dashboard/out/index.html +1 -1
  360. package/dist/dashboard/out/index.txt +2 -2
  361. package/dist/dashboard/out/login.html +6 -0
  362. package/dist/dashboard/out/login.txt +7 -0
  363. package/dist/dashboard/out/metrics.html +1 -515
  364. package/dist/dashboard/out/metrics.txt +2 -2
  365. package/dist/dashboard/out/pricing.html +13 -0
  366. package/dist/dashboard/out/pricing.txt +7 -0
  367. package/dist/dashboard/out/providers.html +1 -0
  368. package/dist/dashboard/out/providers.txt +7 -0
  369. package/dist/dashboard/out/signup.html +6 -0
  370. package/dist/dashboard/out/signup.txt +7 -0
  371. package/dist/dashboard-server/metrics.d.ts.map +1 -1
  372. package/dist/dashboard-server/metrics.js +3 -2
  373. package/dist/dashboard-server/metrics.js.map +1 -1
  374. package/dist/dashboard-server/server.d.ts.map +1 -1
  375. package/dist/dashboard-server/server.js +2653 -130
  376. package/dist/dashboard-server/server.js.map +1 -1
  377. package/dist/hooks/emitter.d.ts +40 -0
  378. package/dist/hooks/emitter.d.ts.map +1 -0
  379. package/dist/hooks/emitter.js +63 -0
  380. package/dist/hooks/emitter.js.map +1 -0
  381. package/dist/hooks/index.d.ts +3 -0
  382. package/dist/hooks/index.d.ts.map +1 -1
  383. package/dist/hooks/index.js +3 -0
  384. package/dist/hooks/index.js.map +1 -1
  385. package/dist/hooks/registry.d.ts +173 -0
  386. package/dist/hooks/registry.d.ts.map +1 -0
  387. package/dist/hooks/registry.js +476 -0
  388. package/dist/hooks/registry.js.map +1 -0
  389. package/dist/hooks/trajectory-hooks.d.ts +52 -0
  390. package/dist/hooks/trajectory-hooks.d.ts.map +1 -0
  391. package/dist/hooks/trajectory-hooks.js +183 -0
  392. package/dist/hooks/trajectory-hooks.js.map +1 -0
  393. package/dist/hooks/types.d.ts +141 -0
  394. package/dist/hooks/types.d.ts.map +1 -1
  395. package/dist/index.d.ts +2 -0
  396. package/dist/index.d.ts.map +1 -1
  397. package/dist/index.js +3 -0
  398. package/dist/index.js.map +1 -1
  399. package/dist/memory/adapters/index.d.ts +8 -0
  400. package/dist/memory/adapters/index.d.ts.map +1 -0
  401. package/dist/memory/adapters/index.js +8 -0
  402. package/dist/memory/adapters/index.js.map +1 -0
  403. package/dist/memory/adapters/inmemory.d.ts +59 -0
  404. package/dist/memory/adapters/inmemory.d.ts.map +1 -0
  405. package/dist/memory/adapters/inmemory.js +195 -0
  406. package/dist/memory/adapters/inmemory.js.map +1 -0
  407. package/dist/memory/adapters/supermemory.d.ts +71 -0
  408. package/dist/memory/adapters/supermemory.d.ts.map +1 -0
  409. package/dist/memory/adapters/supermemory.js +338 -0
  410. package/dist/memory/adapters/supermemory.js.map +1 -0
  411. package/dist/memory/factory.d.ts +48 -0
  412. package/dist/memory/factory.d.ts.map +1 -0
  413. package/dist/memory/factory.js +143 -0
  414. package/dist/memory/factory.js.map +1 -0
  415. package/dist/memory/index.d.ts +32 -0
  416. package/dist/memory/index.d.ts.map +1 -0
  417. package/dist/memory/index.js +32 -0
  418. package/dist/memory/index.js.map +1 -0
  419. package/dist/memory/memory-hooks.d.ts +60 -0
  420. package/dist/memory/memory-hooks.d.ts.map +1 -0
  421. package/dist/memory/memory-hooks.js +313 -0
  422. package/dist/memory/memory-hooks.js.map +1 -0
  423. package/dist/memory/service.d.ts +49 -0
  424. package/dist/memory/service.d.ts.map +1 -0
  425. package/dist/memory/service.js +146 -0
  426. package/dist/memory/service.js.map +1 -0
  427. package/dist/memory/types.d.ts +195 -0
  428. package/dist/memory/types.d.ts.map +1 -0
  429. package/dist/memory/types.js +8 -0
  430. package/dist/memory/types.js.map +1 -0
  431. package/dist/policy/agent-policy.d.ts +225 -0
  432. package/dist/policy/agent-policy.d.ts.map +1 -0
  433. package/dist/policy/agent-policy.js +665 -0
  434. package/dist/policy/agent-policy.js.map +1 -0
  435. package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
  436. package/dist/policy/cloud-policy-fetcher.d.ts.map +1 -0
  437. package/dist/policy/cloud-policy-fetcher.js +64 -0
  438. package/dist/policy/cloud-policy-fetcher.js.map +1 -0
  439. package/dist/protocol/types.d.ts +10 -1
  440. package/dist/protocol/types.d.ts.map +1 -1
  441. package/dist/resiliency/context-persistence.d.ts +140 -0
  442. package/dist/resiliency/context-persistence.d.ts.map +1 -0
  443. package/dist/resiliency/context-persistence.js +397 -0
  444. package/dist/resiliency/context-persistence.js.map +1 -0
  445. package/dist/resiliency/crash-insights.d.ts +156 -0
  446. package/dist/resiliency/crash-insights.d.ts.map +1 -0
  447. package/dist/resiliency/crash-insights.js +492 -0
  448. package/dist/resiliency/crash-insights.js.map +1 -0
  449. package/dist/resiliency/gossip-health.d.ts +137 -0
  450. package/dist/resiliency/gossip-health.d.ts.map +1 -0
  451. package/dist/resiliency/gossip-health.js +241 -0
  452. package/dist/resiliency/gossip-health.js.map +1 -0
  453. package/dist/resiliency/health-monitor.d.ts +97 -0
  454. package/dist/resiliency/health-monitor.d.ts.map +1 -0
  455. package/dist/resiliency/health-monitor.js +291 -0
  456. package/dist/resiliency/health-monitor.js.map +1 -0
  457. package/dist/resiliency/index.d.ts +68 -0
  458. package/dist/resiliency/index.d.ts.map +1 -0
  459. package/dist/resiliency/index.js +68 -0
  460. package/dist/resiliency/index.js.map +1 -0
  461. package/dist/resiliency/leader-watchdog.d.ts +109 -0
  462. package/dist/resiliency/leader-watchdog.d.ts.map +1 -0
  463. package/dist/resiliency/leader-watchdog.js +189 -0
  464. package/dist/resiliency/leader-watchdog.js.map +1 -0
  465. package/dist/resiliency/logger.d.ts +114 -0
  466. package/dist/resiliency/logger.d.ts.map +1 -0
  467. package/dist/resiliency/logger.js +250 -0
  468. package/dist/resiliency/logger.js.map +1 -0
  469. package/dist/resiliency/memory-monitor.d.ts +172 -0
  470. package/dist/resiliency/memory-monitor.d.ts.map +1 -0
  471. package/dist/resiliency/memory-monitor.js +593 -0
  472. package/dist/resiliency/memory-monitor.js.map +1 -0
  473. package/dist/resiliency/metrics.d.ts +115 -0
  474. package/dist/resiliency/metrics.d.ts.map +1 -0
  475. package/dist/resiliency/metrics.js +239 -0
  476. package/dist/resiliency/metrics.js.map +1 -0
  477. package/dist/resiliency/provider-context.d.ts +100 -0
  478. package/dist/resiliency/provider-context.d.ts.map +1 -0
  479. package/dist/resiliency/provider-context.js +360 -0
  480. package/dist/resiliency/provider-context.js.map +1 -0
  481. package/dist/resiliency/stateless-lead.d.ts +149 -0
  482. package/dist/resiliency/stateless-lead.d.ts.map +1 -0
  483. package/dist/resiliency/stateless-lead.js +308 -0
  484. package/dist/resiliency/stateless-lead.js.map +1 -0
  485. package/dist/resiliency/supervisor.d.ts +147 -0
  486. package/dist/resiliency/supervisor.d.ts.map +1 -0
  487. package/dist/resiliency/supervisor.js +459 -0
  488. package/dist/resiliency/supervisor.js.map +1 -0
  489. package/dist/shared/cli-auth-config.d.ts +91 -0
  490. package/dist/shared/cli-auth-config.d.ts.map +1 -0
  491. package/dist/shared/cli-auth-config.js +264 -0
  492. package/dist/shared/cli-auth-config.js.map +1 -0
  493. package/dist/storage/adapter.d.ts +3 -1
  494. package/dist/storage/adapter.d.ts.map +1 -1
  495. package/dist/storage/adapter.js +12 -2
  496. package/dist/storage/adapter.js.map +1 -1
  497. package/dist/storage/sqlite-adapter.d.ts.map +1 -1
  498. package/dist/storage/sqlite-adapter.js +18 -14
  499. package/dist/storage/sqlite-adapter.js.map +1 -1
  500. package/dist/trajectory/config.d.ts +84 -0
  501. package/dist/trajectory/config.d.ts.map +1 -0
  502. package/dist/trajectory/config.js +163 -0
  503. package/dist/trajectory/config.js.map +1 -0
  504. package/dist/trajectory/index.d.ts +8 -0
  505. package/dist/trajectory/index.d.ts.map +1 -0
  506. package/dist/trajectory/index.js +8 -0
  507. package/dist/trajectory/index.js.map +1 -0
  508. package/dist/trajectory/integration.d.ts +292 -0
  509. package/dist/trajectory/integration.d.ts.map +1 -0
  510. package/dist/trajectory/integration.js +834 -0
  511. package/dist/trajectory/integration.js.map +1 -0
  512. package/dist/utils/index.d.ts +1 -0
  513. package/dist/utils/index.d.ts.map +1 -1
  514. package/dist/utils/index.js +1 -0
  515. package/dist/utils/index.js.map +1 -1
  516. package/dist/utils/logger.d.ts +40 -0
  517. package/dist/utils/logger.d.ts.map +1 -0
  518. package/dist/utils/logger.js +84 -0
  519. package/dist/utils/logger.js.map +1 -0
  520. package/dist/utils/project-namespace.d.ts +24 -0
  521. package/dist/utils/project-namespace.d.ts.map +1 -1
  522. package/dist/utils/project-namespace.js +84 -0
  523. package/dist/utils/project-namespace.js.map +1 -1
  524. package/dist/wrapper/client.d.ts +16 -1
  525. package/dist/wrapper/client.d.ts.map +1 -1
  526. package/dist/wrapper/client.js +32 -1
  527. package/dist/wrapper/client.js.map +1 -1
  528. package/dist/wrapper/parser.d.ts +13 -0
  529. package/dist/wrapper/parser.d.ts.map +1 -1
  530. package/dist/wrapper/parser.js +217 -47
  531. package/dist/wrapper/parser.js.map +1 -1
  532. package/dist/wrapper/pty-wrapper.d.ts +219 -17
  533. package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
  534. package/dist/wrapper/pty-wrapper.js +1050 -104
  535. package/dist/wrapper/pty-wrapper.js.map +1 -1
  536. package/dist/wrapper/shared.d.ts +165 -0
  537. package/dist/wrapper/shared.d.ts.map +1 -0
  538. package/dist/wrapper/shared.js +270 -0
  539. package/dist/wrapper/shared.js.map +1 -0
  540. package/dist/wrapper/tmux-wrapper.d.ts +78 -11
  541. package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
  542. package/dist/wrapper/tmux-wrapper.js +567 -106
  543. package/dist/wrapper/tmux-wrapper.js.map +1 -1
  544. package/docs/CLOUD-ARCHITECTURE.md +804 -0
  545. package/docs/CLOUD-ONBOARDING-DESIGN.md +1983 -0
  546. package/docs/HOOKS_API.md +394 -0
  547. package/docs/WRAPPER_EVENTS.md +358 -0
  548. package/docs/agent-policy-snippet.md +40 -0
  549. package/docs/agent-relay-protocol.md +238 -0
  550. package/docs/agent-relay-snippet.md +115 -6
  551. package/docs/archive/EXECUTIVE_SUMMARY.md +358 -0
  552. package/docs/archive/ROADMAP.md +329 -0
  553. package/docs/archive/TESTING_PRESENCE_FEATURES.md +327 -0
  554. package/docs/competitive/GASTOWN.md +451 -0
  555. package/docs/{COMPETITIVE_ANALYSIS.md → competitive/OVERVIEW.md} +1 -0
  556. package/docs/competitive/README.md +34 -0
  557. package/docs/competitive/TMUX_ORCHESTRATOR.md +605 -0
  558. package/docs/dashboard.png +0 -0
  559. package/docs/design/ci-failure-webhooks.md +812 -0
  560. package/docs/design/comprehensive-integrations.md +238 -0
  561. package/docs/design/e2b-sandbox-integration.md +504 -0
  562. package/docs/design/github-app-permissions.md +264 -0
  563. package/docs/guides/CLOUD.md +236 -0
  564. package/docs/guides/LOCAL.md +535 -0
  565. package/docs/guides/SELF-HOSTED.md +494 -0
  566. package/docs/local-testing.md +428 -0
  567. package/docs/proposals/continuous-claude-integration.md +622 -0
  568. package/docs/proposals/custom-commands.md +368 -0
  569. package/docs/proposals/shadow-as-subagent.md +765 -0
  570. package/docs/proposals/slack-bot-integration.md +1457 -0
  571. package/docs/tasks/global-skills-system.tasks.md +230 -0
  572. package/docs/tasks/webhook-integrations.tasks.md +184 -0
  573. package/docs/tasks/workspace-capabilities.tasks.md +121 -0
  574. package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +366 -0
  575. package/package.json +45 -7
  576. package/scripts/cloud-setup.sh +96 -0
  577. package/scripts/manual-qa.sh +293 -0
  578. package/scripts/postinstall.js +60 -0
  579. package/scripts/run-cloud-qa.sh +220 -0
  580. package/scripts/test-cli-auth/Dockerfile +44 -0
  581. package/scripts/test-cli-auth/Dockerfile.real +79 -0
  582. package/scripts/test-cli-auth/README.md +286 -0
  583. package/scripts/test-cli-auth/ci-test-real-clis.ts +251 -0
  584. package/scripts/test-cli-auth/ci-test-runner.ts +263 -0
  585. package/scripts/test-cli-auth/mock-cli.sh +147 -0
  586. package/scripts/test-cli-auth/package.json +14 -0
  587. package/scripts/test-cli-auth/test-oauth-flow.ts +220 -0
  588. package/scripts/test-pty-input-auto.js +222 -0
  589. package/scripts/test-pty-input.js +150 -0
  590. package/dist/dashboard/out/_next/static/chunks/app/layout-c9d8c5d95e48c6bf.js +0 -1
  591. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-8aa9936bc6c771ab.js +0 -1
  592. package/dist/dashboard/out/_next/static/chunks/app/page-4498be09a5157759.js +0 -1
  593. package/dist/dashboard/out/_next/static/chunks/main-app-bae2e535de00de50.js +0 -1
  594. package/dist/dashboard/out/_next/static/chunks/webpack-c81f7fd28659d64f.js +0 -1
  595. package/dist/dashboard/out/_next/static/css/50ed6996e3df7bdd.css +0 -1
  596. /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_buildManifest.js +0 -0
  597. /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_ssgManifest.js +0 -0
  598. /package/dist/dashboard/out/_next/static/chunks/{117-3bef7b19f3e60751.js → 117-b100311aff8d5c61.js} +0 -0
  599. /package/dist/dashboard/out/_next/static/chunks/{648-6cf686106c891ad3.js → 648-a13d3c2b1be45466.js} +0 -0
  600. /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-8ff6572bc7c9bc61.js → page-a4973f3e3c82fb67.js} +0 -0
  601. /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-26bd8d656b496dba.js → fd9d1056-bf46c09eb57e019c.js} +0 -0
  602. /package/docs/{CHANGELOG.md → archive/CHANGELOG.md} +0 -0
  603. /package/docs/{CLI-SIMPLIFICATION-COMPLETE.md → archive/CLI-SIMPLIFICATION-COMPLETE.md} +0 -0
  604. /package/docs/{DESIGN_BRIDGE_STAFFING.md → archive/DESIGN_BRIDGE_STAFFING.md} +0 -0
  605. /package/docs/{DESIGN_V2.md → archive/DESIGN_V2.md} +0 -0
  606. /package/docs/{MONETIZATION.md → archive/MONETIZATION.md} +0 -0
  607. /package/docs/{PROPOSAL-trajectories.md → archive/PROPOSAL-trajectories.md} +0 -0
  608. /package/docs/{SCALING_ANALYSIS.md → archive/SCALING_ANALYSIS.md} +0 -0
  609. /package/docs/{TMUX_IMPLEMENTATION_NOTES.md → archive/TMUX_IMPLEMENTATION_NOTES.md} +0 -0
  610. /package/docs/{TMUX_IMPROVEMENTS.md → archive/TMUX_IMPROVEMENTS.md} +0 -0
  611. /package/docs/{dashboard-v2-plan.md → archive/dashboard-v2-plan.md} +0 -0
  612. /package/docs/{removable-code-analysis.md → archive/removable-code-analysis.md} +0 -0
  613. /package/docs/{competitive-analysis-mcp-agent-mail.md → competitive/MCP_AGENT_MAIL.md} +0 -0
@@ -0,0 +1,373 @@
1
+ /**
2
+ * CI Agent Spawner Service
3
+ *
4
+ * Spawns agents to fix CI failures automatically.
5
+ * Called by the webhook handler when CI checks fail on PRs.
6
+ *
7
+ * Flow:
8
+ * 1. App posts acknowledgment comment on the PR
9
+ * 2. Finds a linked daemon for the repository
10
+ * 3. Queues spawn command for the daemon
11
+ * 4. Agent works and posts response comment
12
+ */
13
+ import { db } from '../db/index.js';
14
+ import { nangoService } from './nango.js';
15
+ /**
16
+ * Get the GitHub App name for comments
17
+ */
18
+ function getAppName() {
19
+ return process.env.GITHUB_APP_NAME || 'Agent Relay';
20
+ }
21
+ /**
22
+ * Post a CI failure acknowledgment comment on GitHub
23
+ */
24
+ async function postCIAcknowledgmentComment(repository, prNumber, checkName, failureTitle) {
25
+ if (!repository.nangoConnectionId) {
26
+ console.warn(`[ci-spawner] Repository ${repository.githubFullName} has no Nango connection`);
27
+ return null;
28
+ }
29
+ const [owner, repo] = repository.githubFullName.split('/');
30
+ const appName = getAppName();
31
+ const body = `🔴 **CI Failure Detected**
32
+
33
+ The \`${checkName}\` check has failed${failureTitle ? `: ${failureTitle}` : ''}.
34
+
35
+ I'm spawning an agent to investigate and fix this issue. The **@ci-fix** agent will analyze the failure and attempt to resolve it.
36
+
37
+ You'll be notified when the fix is ready or if manual intervention is needed.
38
+
39
+ _— ${appName}_`;
40
+ try {
41
+ const result = await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, body);
42
+ console.log(`[ci-spawner] Posted CI acknowledgment comment: ${result.html_url}`);
43
+ return { id: result.id, url: result.html_url };
44
+ }
45
+ catch (error) {
46
+ console.error(`[ci-spawner] Failed to post CI acknowledgment comment:`, error);
47
+ return null;
48
+ }
49
+ }
50
+ /**
51
+ * Post a completion comment on GitHub
52
+ */
53
+ async function postCompletionComment(repository, prNumber, success, summary, commitSha) {
54
+ if (!repository.nangoConnectionId) {
55
+ return;
56
+ }
57
+ const [owner, repo] = repository.githubFullName.split('/');
58
+ const appName = getAppName();
59
+ let body;
60
+ if (success) {
61
+ body = `✅ **CI Fix Applied**
62
+
63
+ ${summary}
64
+
65
+ ${commitSha ? `**Commit:** ${commitSha.substring(0, 7)}` : ''}
66
+
67
+ Please review the changes and re-run the CI checks.
68
+
69
+ _— ${appName}_`;
70
+ }
71
+ else {
72
+ body = `⚠️ **CI Fix Unsuccessful**
73
+
74
+ ${summary}
75
+
76
+ Manual intervention may be required. Please check the failure details and fix the issue manually.
77
+
78
+ _— ${appName}_`;
79
+ }
80
+ try {
81
+ await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, body);
82
+ console.log(`[ci-spawner] Posted completion comment for PR #${prNumber}`);
83
+ }
84
+ catch (error) {
85
+ console.error(`[ci-spawner] Failed to post completion comment:`, error);
86
+ }
87
+ }
88
+ /**
89
+ * Find a linked daemon that can handle this repository
90
+ */
91
+ async function findAvailableDaemon(repository) {
92
+ if (!repository.userId) {
93
+ console.warn(`[ci-spawner] Repository ${repository.githubFullName} has no userId`);
94
+ return null;
95
+ }
96
+ const daemons = await db.linkedDaemons.findByUserId(repository.userId);
97
+ const onlineDaemon = daemons.find(d => d.status === 'online');
98
+ if (!onlineDaemon) {
99
+ console.warn(`[ci-spawner] No online daemon found for user ${repository.userId}`);
100
+ return null;
101
+ }
102
+ return { id: onlineDaemon.id, userId: repository.userId };
103
+ }
104
+ /**
105
+ * Queue a spawn command for a linked daemon
106
+ */
107
+ async function queueSpawnCommand(daemonId, agentName, prompt, metadata) {
108
+ const command = {
109
+ type: 'spawn_agent',
110
+ agentName,
111
+ cli: 'claude',
112
+ task: prompt,
113
+ metadata,
114
+ timestamp: new Date().toISOString(),
115
+ };
116
+ await db.linkedDaemons.queueMessage(daemonId, {
117
+ from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
118
+ to: '__spawner__',
119
+ content: JSON.stringify(command),
120
+ metadata: { type: 'spawn_command' },
121
+ timestamp: new Date().toISOString(),
122
+ });
123
+ console.log(`[ci-spawner] Queued spawn command for daemon ${daemonId}`);
124
+ }
125
+ /**
126
+ * Spawn an agent to fix CI failures
127
+ *
128
+ * This function:
129
+ * 1. Finds the workspace for the repository
130
+ * 2. Posts acknowledgment comment
131
+ * 3. Creates a fix attempt record
132
+ * 4. Queues spawn command for a linked daemon
133
+ *
134
+ * @param failureEvent - The CI failure event from the database
135
+ */
136
+ export async function spawnCIFixAgent(failureEvent) {
137
+ console.log(`[ci-spawner] Spawning agent for failure: ${failureEvent.id}`);
138
+ console.log(`[ci-spawner] Repository: ${failureEvent.repository}`);
139
+ console.log(`[ci-spawner] Check: ${failureEvent.checkName}`);
140
+ console.log(`[ci-spawner] PR: #${failureEvent.prNumber}`);
141
+ // Only handle failures on PRs
142
+ if (failureEvent.prNumber === null) {
143
+ console.log(`[ci-spawner] Failure not on a PR, skipping`);
144
+ return;
145
+ }
146
+ const prNumber = failureEvent.prNumber;
147
+ // Find the repository
148
+ const repository = await db.repositories.findByFullName(failureEvent.repository);
149
+ if (!repository) {
150
+ console.error(`[ci-spawner] Repository not found: ${failureEvent.repository}`);
151
+ return;
152
+ }
153
+ // Generate agent name and ID
154
+ const agentName = `ci-fix-${failureEvent.checkName.replace(/[^a-zA-Z0-9-]/g, '-')}-${prNumber}`;
155
+ const agentId = `ci-${failureEvent.id}`;
156
+ // Create fix attempt record
157
+ const fixAttempt = await db.ciFixAttempts.create({
158
+ failureEventId: failureEvent.id,
159
+ agentId,
160
+ agentName,
161
+ status: 'pending',
162
+ });
163
+ console.log(`[ci-spawner] Created fix attempt: ${fixAttempt.id}`);
164
+ try {
165
+ // Step 1: Post acknowledgment comment
166
+ await postCIAcknowledgmentComment(repository, prNumber, failureEvent.checkName, failureEvent.failureTitle);
167
+ // Step 2: Find a linked daemon
168
+ const daemon = await findAvailableDaemon(repository);
169
+ if (!daemon) {
170
+ console.warn(`[ci-spawner] No available daemon for ${failureEvent.repository}`);
171
+ // Post a comment explaining the situation
172
+ if (repository.nangoConnectionId) {
173
+ const [owner, repo] = repository.githubFullName.split('/');
174
+ try {
175
+ await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, `⚠️ I couldn't spawn an agent to fix this CI failure because no Agent Relay daemon is available.
176
+
177
+ Please ensure you have a linked daemon running by executing \`agent-relay cloud link\` on your development machine.
178
+
179
+ You can also fix this issue manually by reviewing the failure output above.
180
+
181
+ _— ${getAppName()}_`);
182
+ }
183
+ catch (error) {
184
+ console.error(`[ci-spawner] Failed to post error comment:`, error);
185
+ }
186
+ }
187
+ await db.ciFixAttempts.complete(fixAttempt.id, 'failed', undefined, 'No available daemon to spawn agent');
188
+ return;
189
+ }
190
+ // Step 3: Build the agent prompt
191
+ const prompt = buildAgentPrompt(failureEvent, repository);
192
+ // Step 4: Update status to in_progress
193
+ await db.ciFixAttempts.updateStatus(fixAttempt.id, 'in_progress');
194
+ // Step 5: Queue spawn command for the daemon
195
+ await queueSpawnCommand(daemon.id, agentName, prompt, {
196
+ failureEventId: failureEvent.id,
197
+ fixAttemptId: fixAttempt.id,
198
+ repository: failureEvent.repository,
199
+ prNumber,
200
+ checkName: failureEvent.checkName,
201
+ });
202
+ console.log(`[ci-spawner] Successfully queued CI fix agent for ${failureEvent.repository}#${prNumber}`);
203
+ }
204
+ catch (error) {
205
+ console.error(`[ci-spawner] Failed to spawn agent:`, error);
206
+ await db.ciFixAttempts.complete(fixAttempt.id, 'failed', undefined, error instanceof Error ? error.message : 'Unknown error');
207
+ throw error;
208
+ }
209
+ }
210
+ /**
211
+ * Build the prompt for the CI fix agent
212
+ */
213
+ function buildAgentPrompt(failureEvent, _repository) {
214
+ const annotations = failureEvent.annotations;
215
+ const annotationsList = annotations && annotations.length > 0
216
+ ? annotations
217
+ .slice(0, 20) // Limit to first 20 annotations
218
+ .map(a => `- ${a.path}:${a.startLine} - ${a.message}`)
219
+ .join('\n')
220
+ : null;
221
+ const responseInstructions = `
222
+ ## Response Instructions
223
+
224
+ When you complete your work:
225
+ 1. Commit and push your changes
226
+ 2. Post a comment on the PR summarizing what you fixed
227
+
228
+ Use the GitHub CLI (\`gh\`) to post your response:
229
+ \`\`\`bash
230
+ gh pr comment ${failureEvent.prNumber} --repo ${failureEvent.repository} --body "## CI Fix Applied
231
+
232
+ Summary of changes...
233
+
234
+ **Files modified:**
235
+ - file1.ts
236
+ - file2.ts
237
+
238
+ Please re-run the CI checks to verify the fix."
239
+ \`\`\`
240
+ `;
241
+ return `
242
+ # CI Failure Fix Task
243
+
244
+ A CI check has failed on PR #${failureEvent.prNumber} in ${failureEvent.repository}.
245
+
246
+ ## Failure Details
247
+
248
+ **Check Name:** ${failureEvent.checkName}
249
+ **Branch:** ${failureEvent.branch || 'unknown'}
250
+ **Commit:** ${failureEvent.commitSha || 'unknown'}
251
+
252
+ ${failureEvent.failureTitle ? `**Title:** ${failureEvent.failureTitle}` : ''}
253
+
254
+ ${failureEvent.failureSummary ? `**Summary:**\n${failureEvent.failureSummary}` : ''}
255
+
256
+ ${failureEvent.failureDetails ? `**Details:**\n${failureEvent.failureDetails}` : ''}
257
+
258
+ ${annotationsList ? `## Annotations\n\n${annotationsList}` : ''}
259
+
260
+ ## Your Task
261
+
262
+ 1. Checkout the branch: \`${failureEvent.branch || 'unknown'}\`
263
+ 2. Analyze the failure based on the annotations and error messages
264
+ 3. Fix the issues in the affected files
265
+ 4. Run the relevant checks locally to verify the fix
266
+ 5. Commit and push your changes with a clear commit message
267
+ 6. Report back with a summary of what was fixed
268
+
269
+ ${responseInstructions}
270
+
271
+ ## Important
272
+
273
+ - Only fix the specific issues causing the CI failure
274
+ - Do not refactor or improve unrelated code
275
+ - If you cannot fix the issue, explain why and what manual intervention is needed
276
+ - Keep your commit message descriptive and reference the CI check name
277
+ `.trim();
278
+ }
279
+ /**
280
+ * Notify an existing agent about a CI failure
281
+ *
282
+ * Used when an agent is already working on a PR and a new failure occurs.
283
+ *
284
+ * @param agentId - The ID of the existing agent
285
+ * @param failureEvent - The new CI failure event
286
+ */
287
+ export async function notifyAgentOfCIFailure(agentId, failureEvent) {
288
+ console.log(`[ci-spawner] Notifying agent ${agentId} of new failure`);
289
+ // Find the repository
290
+ const repository = await db.repositories.findByFullName(failureEvent.repository);
291
+ if (!repository || !repository.userId) {
292
+ console.warn(`[ci-spawner] Repository not found or has no userId: ${failureEvent.repository}`);
293
+ return;
294
+ }
295
+ // Find the daemon that should have this agent
296
+ const daemons = await db.linkedDaemons.findByUserId(repository.userId);
297
+ const onlineDaemon = daemons.find(d => d.status === 'online');
298
+ if (!onlineDaemon) {
299
+ console.warn(`[ci-spawner] No online daemon to notify agent ${agentId}`);
300
+ return;
301
+ }
302
+ // Build notification message
303
+ const annotations = failureEvent.annotations;
304
+ const annotationsList = annotations && annotations.length > 0
305
+ ? annotations
306
+ .slice(0, 10)
307
+ .map(a => ` - ${a.path}:${a.startLine}: ${a.message}`)
308
+ .join('\n')
309
+ : null;
310
+ const message = `
311
+ CI FAILURE: ${failureEvent.checkName}
312
+
313
+ ${failureEvent.failureTitle || 'Check failed'}
314
+
315
+ ${failureEvent.failureSummary || ''}
316
+
317
+ ${annotationsList ? `Issues:\n${annotationsList}` : ''}
318
+
319
+ Please investigate and fix these issues, then push your changes.
320
+ `.trim();
321
+ // Queue message for the agent via daemon
322
+ await db.linkedDaemons.queueMessage(onlineDaemon.id, {
323
+ from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
324
+ to: agentId,
325
+ content: message,
326
+ metadata: { type: 'ci_failure_notification', failureEventId: failureEvent.id },
327
+ timestamp: new Date().toISOString(),
328
+ });
329
+ console.log(`[ci-spawner] Queued CI failure notification for agent ${agentId}`);
330
+ }
331
+ /**
332
+ * Mark a fix attempt as complete
333
+ *
334
+ * Called when an agent reports completion (success or failure)
335
+ */
336
+ export async function completeFixAttempt(fixAttemptId, success, commitSha, errorMessage) {
337
+ console.log(`[ci-spawner] Completing fix attempt ${fixAttemptId}: ${success ? 'success' : 'failed'}`);
338
+ // Update the fix attempt record
339
+ await db.ciFixAttempts.complete(fixAttemptId, success ? 'success' : 'failed', commitSha, errorMessage);
340
+ // Get the fix attempt to find the failure event
341
+ const fixAttempt = await db.ciFixAttempts.findById(fixAttemptId);
342
+ if (!fixAttempt) {
343
+ console.warn(`[ci-spawner] Fix attempt not found: ${fixAttemptId}`);
344
+ return;
345
+ }
346
+ // Get the failure event to find the repository and PR
347
+ const failureEvent = await db.ciFailureEvents.findById(fixAttempt.failureEventId);
348
+ if (!failureEvent) {
349
+ console.warn(`[ci-spawner] Failure event not found: ${fixAttempt.failureEventId}`);
350
+ return;
351
+ }
352
+ // Find the repository to post completion comment
353
+ const repository = await db.repositories.findByFullName(failureEvent.repository);
354
+ if (repository && failureEvent.prNumber !== null) {
355
+ const summary = success
356
+ ? `The @ci-fix agent has fixed the \`${failureEvent.checkName}\` check failure.`
357
+ : errorMessage || 'The @ci-fix agent was unable to fix the issue.';
358
+ await postCompletionComment(repository, failureEvent.prNumber, success, summary, commitSha);
359
+ }
360
+ }
361
+ /**
362
+ * Get failure history for a repository
363
+ */
364
+ export async function getFailureHistory(repository, limit = 50) {
365
+ return db.ciFailureEvents.findByRepository(repository, limit);
366
+ }
367
+ /**
368
+ * Get failure history for a specific PR
369
+ */
370
+ export async function getPRFailureHistory(repository, prNumber) {
371
+ return db.ciFailureEvents.findByPR(repository, prNumber);
372
+ }
373
+ //# sourceMappingURL=ci-agent-spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-agent-spawner.js","sourceRoot":"","sources":["../../../src/cloud/services/ci-agent-spawner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Coordinator Agent Service
3
+ *
4
+ * Manages lifecycle of coordinator agents for project groups.
5
+ * Coordinators oversee and orchestrate work across repositories in a group.
6
+ */
7
+ import { Repository } from '../db/index.js';
8
+ /**
9
+ * Coordinator agent state
10
+ */
11
+ interface CoordinatorState {
12
+ groupId: string;
13
+ groupName: string;
14
+ agentName: string;
15
+ model: string;
16
+ status: 'starting' | 'running' | 'stopping' | 'stopped' | 'error';
17
+ startedAt?: Date;
18
+ stoppedAt?: Date;
19
+ error?: string;
20
+ repositories: Repository[];
21
+ }
22
+ export interface CoordinatorService {
23
+ start(groupId: string): Promise<void>;
24
+ stop(groupId: string): Promise<void>;
25
+ restart(groupId: string): Promise<void>;
26
+ getStatus(groupId: string): Promise<CoordinatorState | null>;
27
+ listActive(): Promise<CoordinatorState[]>;
28
+ }
29
+ /**
30
+ * Send a message from coordinator to a workspace
31
+ */
32
+ export declare function sendToWorkspace(coordinatorGroupId: string, targetWorkspaceId: string, agentName: string, message: string, thread?: string): Promise<void>;
33
+ /**
34
+ * Broadcast a message to all workspaces in a project group
35
+ */
36
+ export declare function broadcastToGroup(coordinatorGroupId: string, message: string, thread?: string): Promise<void>;
37
+ /**
38
+ * Route a message from a workspace to the coordinator
39
+ */
40
+ export declare function routeToCoordinator(workspaceId: string, agentName: string, message: string, thread?: string): Promise<void>;
41
+ /**
42
+ * Get all active coordinators
43
+ */
44
+ export declare function getActiveCoordinators(): Promise<Array<{
45
+ groupId: string;
46
+ groupName: string;
47
+ agentName: string;
48
+ model: string;
49
+ startedAt: string;
50
+ workspaces: string[];
51
+ }>>;
52
+ /**
53
+ * Get the coordinator service singleton
54
+ */
55
+ export declare function getCoordinatorService(): CoordinatorService;
56
+ /**
57
+ * Initialize coordinator service
58
+ * Restarts any coordinators that should be running
59
+ */
60
+ export declare function initializeCoordinatorService(): Promise<void>;
61
+ export {};
62
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/cloud/services/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoB,UAAU,EAA0B,MAAM,gBAAgB,CAAC;AAItF;;GAEG;AACH,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAClE,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,UAAU,EAAE,CAAC;CAC5B;AAQD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAC3C;AAmLD;;GAEG;AACH,wBAAsB,eAAe,CACnC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqCf;AAyED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,KAAK,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC,CAAC,CAyBF;AA+CD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAW1D;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAUlE"}