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,405 @@
1
+ /**
2
+ * Mention Handler Service
3
+ *
4
+ * Handles @mentions of agents in GitHub issues and PR comments.
5
+ * Routes mentions to appropriate agents for response.
6
+ *
7
+ * Flow:
8
+ * 1. App posts acknowledgment comment
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
+ * Known agent types that can be mentioned
17
+ */
18
+ export const KNOWN_AGENTS = {
19
+ // Generic agents
20
+ 'agent-relay': 'General purpose agent for any task',
21
+ 'lead': 'Lead agent for coordination and delegation',
22
+ 'developer': 'Developer agent for coding tasks',
23
+ 'reviewer': 'Code review agent',
24
+ // Specialized agents
25
+ 'ci-fix': 'CI failure fixing agent',
26
+ 'debugger': 'Bug investigation and fixing agent',
27
+ 'docs': 'Documentation agent',
28
+ 'test': 'Test writing agent',
29
+ 'refactor': 'Code refactoring agent',
30
+ };
31
+ /**
32
+ * Check if a mention is for a known agent type
33
+ */
34
+ export function isKnownAgent(mention) {
35
+ return mention in KNOWN_AGENTS;
36
+ }
37
+ /**
38
+ * Get the GitHub App name for comments
39
+ */
40
+ function getAppName() {
41
+ return process.env.GITHUB_APP_NAME || 'Agent Relay';
42
+ }
43
+ /**
44
+ * Post an acknowledgment comment on GitHub
45
+ */
46
+ async function postAcknowledgmentComment(repository, issueNumber, mentionedAgent, authorLogin) {
47
+ if (!repository.nangoConnectionId) {
48
+ console.warn(`[mention-handler] Repository ${repository.githubFullName} has no Nango connection`);
49
+ return null;
50
+ }
51
+ const [owner, repo] = repository.githubFullName.split('/');
52
+ const appName = getAppName();
53
+ const agentDescription = isKnownAgent(mentionedAgent)
54
+ ? KNOWN_AGENTS[mentionedAgent]
55
+ : 'Custom agent';
56
+ const body = `👋 @${authorLogin}, I've received your request and am routing it to **@${mentionedAgent}** (${agentDescription}).
57
+
58
+ The agent will respond shortly. You can track progress in this thread.
59
+
60
+ _— ${appName}_`;
61
+ try {
62
+ const result = await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, issueNumber, body);
63
+ console.log(`[mention-handler] Posted acknowledgment comment: ${result.html_url}`);
64
+ return { id: result.id, url: result.html_url };
65
+ }
66
+ catch (error) {
67
+ console.error(`[mention-handler] Failed to post acknowledgment comment:`, error);
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Find a linked daemon that can handle this repository
73
+ */
74
+ async function findAvailableDaemon(repository) {
75
+ // The daemon must belong to the repository owner
76
+ if (!repository.userId) {
77
+ console.warn(`[mention-handler] Repository ${repository.githubFullName} has no userId`);
78
+ return null;
79
+ }
80
+ const daemons = await db.linkedDaemons.findByUserId(repository.userId);
81
+ const onlineDaemon = daemons.find(d => d.status === 'online');
82
+ if (!onlineDaemon) {
83
+ console.warn(`[mention-handler] No online daemon found for user ${repository.userId}`);
84
+ return null;
85
+ }
86
+ return { id: onlineDaemon.id, userId: repository.userId };
87
+ }
88
+ /**
89
+ * Queue a spawn command for a linked daemon
90
+ */
91
+ async function queueSpawnCommand(daemonId, agentName, prompt, metadata) {
92
+ const command = {
93
+ type: 'spawn_agent',
94
+ agentName,
95
+ cli: 'claude', // Default to Claude CLI
96
+ task: prompt,
97
+ metadata,
98
+ timestamp: new Date().toISOString(),
99
+ };
100
+ await db.linkedDaemons.queueMessage(daemonId, {
101
+ from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
102
+ to: '__spawner__',
103
+ content: JSON.stringify(command),
104
+ metadata: { type: 'spawn_command' },
105
+ timestamp: new Date().toISOString(),
106
+ });
107
+ console.log(`[mention-handler] Queued spawn command for daemon ${daemonId}`);
108
+ }
109
+ /**
110
+ * Handle a mention record
111
+ *
112
+ * This function:
113
+ * 1. Validates the mention is for a known agent
114
+ * 2. Posts an acknowledgment comment
115
+ * 3. Finds a linked daemon
116
+ * 4. Queues a spawn command for the agent
117
+ */
118
+ export async function handleMention(mention) {
119
+ console.log(`[mention-handler] Processing mention: @${mention.mentionedAgent} in ${mention.repository}`);
120
+ // Check if this is a known agent type
121
+ if (!isKnownAgent(mention.mentionedAgent)) {
122
+ console.log(`[mention-handler] Unknown agent: @${mention.mentionedAgent}, checking workspace config`);
123
+ // TODO: Check workspace configuration for custom agent names
124
+ // For now, mark as ignored
125
+ await db.commentMentions.markIgnored(mention.id);
126
+ return;
127
+ }
128
+ // Find the repository to get Nango connection
129
+ const repository = await db.repositories.findByFullName(mention.repository);
130
+ if (!repository) {
131
+ console.error(`[mention-handler] Repository not found: ${mention.repository}`);
132
+ await db.commentMentions.markIgnored(mention.id);
133
+ return;
134
+ }
135
+ // Generate agent info
136
+ const agentId = `mention-${mention.id}`;
137
+ const agentName = `${mention.mentionedAgent}-${mention.issueOrPrNumber}`;
138
+ // Update status to processing
139
+ await db.commentMentions.markProcessing(mention.id, agentId, agentName);
140
+ // Step 1: Post acknowledgment comment
141
+ const ackResult = await postAcknowledgmentComment(repository, mention.issueOrPrNumber, mention.mentionedAgent, mention.authorLogin);
142
+ if (!ackResult) {
143
+ console.warn(`[mention-handler] Could not post acknowledgment, continuing anyway`);
144
+ }
145
+ // Step 2: Find a linked daemon
146
+ const daemon = await findAvailableDaemon(repository);
147
+ if (!daemon) {
148
+ console.warn(`[mention-handler] No available daemon for ${mention.repository}`);
149
+ // Post a comment explaining the situation
150
+ if (repository.nangoConnectionId) {
151
+ const [owner, repo] = repository.githubFullName.split('/');
152
+ try {
153
+ await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, mention.issueOrPrNumber, `⚠️ @${mention.authorLogin}, I couldn't find an available agent to handle this request. Please ensure you have a linked Agent Relay daemon running.
154
+
155
+ You can set this up by running \`agent-relay cloud link\` on your development machine.
156
+
157
+ _— ${getAppName()}_`);
158
+ }
159
+ catch (error) {
160
+ console.error(`[mention-handler] Failed to post error comment:`, error);
161
+ }
162
+ }
163
+ return;
164
+ }
165
+ // Step 3: Build the prompt for the agent
166
+ const prompt = buildMentionPrompt(mention, repository);
167
+ // Step 4: Queue spawn command for the daemon
168
+ await queueSpawnCommand(daemon.id, agentName, prompt, {
169
+ mentionId: mention.id,
170
+ repository: mention.repository,
171
+ issueNumber: mention.issueOrPrNumber,
172
+ authorLogin: mention.authorLogin,
173
+ });
174
+ console.log(`[mention-handler] Spawned agent @${mention.mentionedAgent} for mention ${mention.id}`);
175
+ }
176
+ /**
177
+ * Build a prompt for handling a mention
178
+ */
179
+ function buildMentionPrompt(mention, _repository) {
180
+ const agentDescription = isKnownAgent(mention.mentionedAgent)
181
+ ? KNOWN_AGENTS[mention.mentionedAgent]
182
+ : 'Custom agent';
183
+ const sourceTypeDescription = {
184
+ issue_comment: 'GitHub issue comment',
185
+ pr_comment: 'GitHub PR comment',
186
+ pr_review: 'GitHub PR review comment',
187
+ }[mention.sourceType] || 'GitHub comment';
188
+ const responseInstructions = `
189
+ ## Response Instructions
190
+
191
+ When you complete your work:
192
+ 1. Post a comment on GitHub to notify @${mention.authorLogin}
193
+ 2. Reference specific files and line numbers when relevant
194
+ 3. If you made code changes, push them and reference the commit
195
+
196
+ Use the GitHub CLI (\`gh\`) to post your response:
197
+ \`\`\`bash
198
+ gh issue comment ${mention.issueOrPrNumber} --repo ${mention.repository} --body "Your response here @${mention.authorLogin}"
199
+ \`\`\`
200
+
201
+ Or for PR comments:
202
+ \`\`\`bash
203
+ gh pr comment ${mention.issueOrPrNumber} --repo ${mention.repository} --body "Your response here @${mention.authorLogin}"
204
+ \`\`\`
205
+ `;
206
+ return `
207
+ # Agent Mention Task
208
+
209
+ You (@${mention.mentionedAgent}) have been mentioned in a ${sourceTypeDescription}.
210
+
211
+ ## Your Role
212
+ ${agentDescription}
213
+
214
+ ## Context
215
+
216
+ **Repository:** ${mention.repository}
217
+ **Issue/PR:** #${mention.issueOrPrNumber}
218
+ **Comment by:** @${mention.authorLogin}
219
+ **Comment URL:** ${mention.commentUrl || 'N/A'}
220
+
221
+ ## Comment
222
+
223
+ ${mention.commentBody}
224
+
225
+ ## Your Task
226
+
227
+ Analyze the comment and respond appropriately:
228
+
229
+ 1. If a question was asked, provide a helpful answer
230
+ 2. If a task was requested, either complete it or explain what's needed
231
+ 3. If feedback was given, acknowledge it and act on it if needed
232
+
233
+ ${responseInstructions}
234
+
235
+ ## Important
236
+
237
+ - Be concise and helpful
238
+ - If you need to make code changes, create a commit and push
239
+ - If the request is unclear, ask for clarification in your response
240
+ - Always @mention ${mention.authorLogin} in your response so they get notified
241
+ `.trim();
242
+ }
243
+ /**
244
+ * Handle an issue assignment
245
+ *
246
+ * Called when an issue should be assigned to an agent
247
+ */
248
+ export async function handleIssueAssignment(assignment) {
249
+ console.log(`[mention-handler] Processing issue assignment: #${assignment.issueNumber} in ${assignment.repository}`);
250
+ // Find the repository
251
+ const repository = await db.repositories.findByFullName(assignment.repository);
252
+ if (!repository) {
253
+ console.error(`[mention-handler] Repository not found: ${assignment.repository}`);
254
+ return;
255
+ }
256
+ // Post acknowledgment comment
257
+ if (repository.nangoConnectionId) {
258
+ const [owner, repo] = repository.githubFullName.split('/');
259
+ try {
260
+ await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, assignment.issueNumber, `🤖 I've been assigned to work on this issue. I'll analyze the problem and get started.
261
+
262
+ You can track my progress in this thread. I'll update you when I have a solution or need more information.
263
+
264
+ _— ${getAppName()}_`);
265
+ }
266
+ catch (error) {
267
+ console.error(`[mention-handler] Failed to post assignment comment:`, error);
268
+ }
269
+ }
270
+ // Find a linked daemon
271
+ const daemon = await findAvailableDaemon(repository);
272
+ if (!daemon) {
273
+ console.warn(`[mention-handler] No available daemon for ${assignment.repository}`);
274
+ if (repository.nangoConnectionId) {
275
+ const [owner, repo] = repository.githubFullName.split('/');
276
+ try {
277
+ await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, assignment.issueNumber, `⚠️ I couldn't start working on this issue because no Agent Relay daemon is available.
278
+
279
+ Please ensure you have a linked daemon running by executing \`agent-relay cloud link\` on your development machine.
280
+
281
+ _— ${getAppName()}_`);
282
+ }
283
+ catch (error) {
284
+ console.error(`[mention-handler] Failed to post error comment:`, error);
285
+ }
286
+ }
287
+ return;
288
+ }
289
+ // Build prompt for the issue
290
+ const prompt = buildIssuePrompt(assignment, repository);
291
+ // Queue spawn command
292
+ const agentName = `issue-${assignment.issueNumber}`;
293
+ await queueSpawnCommand(daemon.id, agentName, prompt, {
294
+ mentionId: assignment.id,
295
+ repository: assignment.repository,
296
+ issueNumber: assignment.issueNumber,
297
+ authorLogin: 'issue-author', // TODO: Get from issue
298
+ });
299
+ // Update assignment status and assign agent
300
+ await db.issueAssignments.assignAgent(assignment.id, agentName, agentName);
301
+ await db.issueAssignments.updateStatus(assignment.id, 'in_progress');
302
+ console.log(`[mention-handler] Spawned agent for issue #${assignment.issueNumber}`);
303
+ }
304
+ /**
305
+ * Build a prompt for an issue assignment
306
+ */
307
+ function buildIssuePrompt(assignment, _repository) {
308
+ const priorityNote = assignment.priority
309
+ ? `\n**Priority:** ${assignment.priority.toUpperCase()}`
310
+ : '';
311
+ const labelsNote = assignment.labels && assignment.labels.length > 0
312
+ ? `\n**Labels:** ${assignment.labels.join(', ')}`
313
+ : '';
314
+ return `
315
+ # Issue Assignment
316
+
317
+ You have been assigned to work on GitHub issue #${assignment.issueNumber}.
318
+
319
+ ## Issue Details
320
+
321
+ **Repository:** ${assignment.repository}
322
+ **Title:** ${assignment.issueTitle}${priorityNote}${labelsNote}
323
+ **URL:** ${assignment.issueUrl || 'N/A'}
324
+
325
+ ## Description
326
+
327
+ ${assignment.issueBody || 'No description provided.'}
328
+
329
+ ## Your Task
330
+
331
+ 1. Analyze the issue and understand what needs to be done
332
+ 2. Investigate the codebase to find relevant files
333
+ 3. Implement a solution if possible
334
+ 4. Create a PR with your changes
335
+ 5. Link the PR to this issue
336
+
337
+ ## Response Instructions
338
+
339
+ Keep the issue updated with your progress:
340
+ \`\`\`bash
341
+ gh issue comment ${assignment.issueNumber} --repo ${assignment.repository} --body "Your update here"
342
+ \`\`\`
343
+
344
+ When you create a PR:
345
+ \`\`\`bash
346
+ gh pr create --repo ${assignment.repository} --title "Fix #${assignment.issueNumber}: Brief description" --body "Fixes #${assignment.issueNumber}
347
+
348
+ Description of changes..."
349
+ \`\`\`
350
+
351
+ ## Important
352
+
353
+ - Start with a comment on the issue acknowledging you're working on it
354
+ - If you need clarification, ask in the issue comments
355
+ - Create a draft PR early if the fix is complex
356
+ - Reference the issue number in your commit messages (e.g., "Fix #${assignment.issueNumber}")
357
+ `.trim();
358
+ }
359
+ /**
360
+ * Get pending mentions for processing
361
+ */
362
+ export async function getPendingMentions(limit = 50) {
363
+ return db.commentMentions.findPending(limit);
364
+ }
365
+ /**
366
+ * Get pending issue assignments for processing
367
+ */
368
+ export async function getPendingIssueAssignments(limit = 50) {
369
+ return db.issueAssignments.findPending(limit);
370
+ }
371
+ /**
372
+ * Process all pending mentions (background job)
373
+ */
374
+ export async function processPendingMentions() {
375
+ const pending = await getPendingMentions();
376
+ let processed = 0;
377
+ for (const mention of pending) {
378
+ try {
379
+ await handleMention(mention);
380
+ processed++;
381
+ }
382
+ catch (error) {
383
+ console.error(`[mention-handler] Failed to process mention ${mention.id}:`, error);
384
+ }
385
+ }
386
+ return processed;
387
+ }
388
+ /**
389
+ * Process all pending issue assignments (background job)
390
+ */
391
+ export async function processPendingIssueAssignments() {
392
+ const pending = await getPendingIssueAssignments();
393
+ let processed = 0;
394
+ for (const assignment of pending) {
395
+ try {
396
+ await handleIssueAssignment(assignment);
397
+ processed++;
398
+ }
399
+ catch (error) {
400
+ console.error(`[mention-handler] Failed to process assignment ${assignment.id}:`, error);
401
+ }
402
+ }
403
+ return processed;
404
+ }
405
+ //# sourceMappingURL=mention-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention-handler.js","sourceRoot":"","sources":["../../../src/cloud/services/mention-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ export declare const NANGO_INTEGRATIONS: {
2
+ readonly GITHUB_USER: "github";
3
+ readonly GITHUB_APP: "github-app-oauth";
4
+ };
5
+ export interface GithubUserProfile {
6
+ id: number;
7
+ login: string;
8
+ email?: string;
9
+ avatar_url?: string;
10
+ }
11
+ declare class NangoService {
12
+ private client;
13
+ private secret;
14
+ constructor();
15
+ /**
16
+ * Create a Nango connect session restricted to specific integrations.
17
+ */
18
+ createConnectSession(allowedIntegrations: string[], endUser: {
19
+ id: string;
20
+ email?: string;
21
+ }): Promise<{
22
+ token: string;
23
+ connect_link: string;
24
+ expires_at: string;
25
+ }>;
26
+ /**
27
+ * Fetch GitHub user profile via Nango proxy.
28
+ */
29
+ getGithubUser(connectionId: string): Promise<GithubUserProfile>;
30
+ /**
31
+ * Retrieve an installation access token from a GitHub App connection.
32
+ * Use this ONLY when you need the raw token (e.g., for git clone URLs).
33
+ * For API calls, use the proxy methods instead.
34
+ */
35
+ getGithubAppToken(connectionId: string): Promise<string>;
36
+ /**
37
+ * List repositories available to a GitHub App installation using the Nango Proxy.
38
+ * The proxy automatically handles token injection and refresh.
39
+ * @see https://nango.dev/docs/implementation-guides/requests-proxy/implement-requests-proxy
40
+ */
41
+ listGithubAppRepos(connectionId: string): Promise<{
42
+ repositories: Array<{
43
+ id: number;
44
+ full_name: string;
45
+ private: boolean;
46
+ default_branch: string;
47
+ }>;
48
+ }>;
49
+ /**
50
+ * Get the GitHub App installation ID from a connection.
51
+ * The installation ID is stored in connection_config.installation_id
52
+ */
53
+ getGithubAppInstallationId(connectionId: string): Promise<number | null>;
54
+ /**
55
+ * Create an issue via Nango Proxy.
56
+ */
57
+ createGithubIssue(connectionId: string, owner: string, repo: string, data: {
58
+ title: string;
59
+ body?: string;
60
+ labels?: string[];
61
+ }): Promise<{
62
+ number: number;
63
+ html_url: string;
64
+ }>;
65
+ /**
66
+ * Create a pull request via Nango Proxy.
67
+ */
68
+ createGithubPullRequest(connectionId: string, owner: string, repo: string, data: {
69
+ title: string;
70
+ body?: string;
71
+ head: string;
72
+ base: string;
73
+ }): Promise<{
74
+ number: number;
75
+ html_url: string;
76
+ }>;
77
+ /**
78
+ * Add a comment to an issue via Nango Proxy.
79
+ */
80
+ addGithubIssueComment(connectionId: string, owner: string, repo: string, issueNumber: number, body: string): Promise<{
81
+ id: number;
82
+ html_url: string;
83
+ }>;
84
+ /**
85
+ * Update connection end user metadata (e.g., after creating a user record).
86
+ */
87
+ updateEndUser(connectionId: string, providerConfigKey: string, endUser: {
88
+ id: string;
89
+ email?: string;
90
+ }): Promise<void>;
91
+ /**
92
+ * Delete a connection from Nango.
93
+ *
94
+ * Used to remove temporary session connections for returning users
95
+ * to prevent duplicate connections in Nango. In the two-connection pattern,
96
+ * new users get a permanent connection but returning users authenticate
97
+ * with a temporary one that gets deleted.
98
+ *
99
+ * @param connectionId - Nango connection ID to delete
100
+ * @param providerConfigKey - The integration key (e.g., 'github')
101
+ */
102
+ deleteConnection(connectionId: string, providerConfigKey: string): Promise<void>;
103
+ /**
104
+ * Get connection metadata including end_user info.
105
+ * Useful when webhook doesn't include end_user data.
106
+ */
107
+ getConnection(connectionId: string, providerConfigKey: string): Promise<{
108
+ id: number;
109
+ connection_id: string;
110
+ provider_config_key: string;
111
+ end_user?: {
112
+ id?: string;
113
+ email?: string;
114
+ };
115
+ metadata?: Record<string, unknown>;
116
+ }>;
117
+ /**
118
+ * Verify webhook signature sent by Nango.
119
+ * Uses the new verifyIncomingWebhookRequest method.
120
+ * @see https://nango.dev/docs/reference/sdks/node#verify-webhook-signature
121
+ */
122
+ verifyWebhookSignature(rawBody: string, headers: Record<string, string | string[] | undefined>): boolean;
123
+ }
124
+ export declare const nangoService: NangoService;
125
+ export {};
126
+ //# sourceMappingURL=nango.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nango.d.ts","sourceRoot":"","sources":["../../../src/cloud/services/nango.ts"],"names":[],"mappings":"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"}