agent-relay 2.0.22 → 2.0.24

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 (534) hide show
  1. package/bin/relay-pty-linux-arm64 +0 -0
  2. package/dist/src/cli/index.d.ts +3 -3
  3. package/dist/src/cli/index.js +58 -74
  4. package/package.json +21 -62
  5. package/packages/api-types/package.json +1 -1
  6. package/packages/bridge/package.json +8 -8
  7. package/packages/cli-tester/package.json +1 -1
  8. package/packages/config/package.json +2 -2
  9. package/packages/continuity/package.json +1 -1
  10. package/packages/daemon/dist/orchestrator.js +19 -1
  11. package/packages/daemon/package.json +12 -12
  12. package/packages/hooks/package.json +4 -4
  13. package/packages/mcp/package.json +2 -2
  14. package/packages/memory/package.json +2 -2
  15. package/packages/policy/package.json +2 -2
  16. package/packages/protocol/package.json +1 -1
  17. package/packages/resiliency/package.json +1 -1
  18. package/packages/sdk/package.json +2 -2
  19. package/packages/spawner/package.json +1 -1
  20. package/packages/state/package.json +1 -1
  21. package/packages/storage/package.json +2 -2
  22. package/packages/telemetry/package.json +1 -1
  23. package/packages/trajectory/package.json +2 -2
  24. package/packages/user-directory/package.json +2 -2
  25. package/packages/utils/dist/update-checker.js +4 -0
  26. package/packages/utils/package.json +1 -1
  27. package/packages/wrapper/package.json +6 -6
  28. package/deploy/init-db.sql +0 -5
  29. package/deploy/scripts/setup-fly-workspaces.sh +0 -69
  30. package/deploy/scripts/setup-railway.sh +0 -75
  31. package/deploy/workspace/codex.config.toml +0 -20
  32. package/deploy/workspace/entrypoint-browser.sh +0 -118
  33. package/deploy/workspace/entrypoint.sh +0 -612
  34. package/deploy/workspace/gh-credential-relay +0 -90
  35. package/deploy/workspace/gh-relay +0 -156
  36. package/deploy/workspace/git-credential-relay +0 -330
  37. package/deploy/workspace/git-credential-relay.test.sh +0 -230
  38. package/dist/dashboard/out/404.html +0 -1
  39. package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
  40. package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
  41. package/dist/dashboard/out/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  42. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  43. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  44. package/dist/dashboard/out/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  45. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +0 -9
  46. package/dist/dashboard/out/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  47. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  48. package/dist/dashboard/out/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  49. package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  50. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  51. package/dist/dashboard/out/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  52. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  53. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  54. package/dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  55. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  56. package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  57. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  58. package/dist/dashboard/out/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  59. package/dist/dashboard/out/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  60. package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  61. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  62. package/dist/dashboard/out/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  63. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  64. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  65. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  66. package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  67. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  68. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  69. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  70. package/dist/dashboard/out/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  71. package/dist/dashboard/out/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  72. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  73. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  74. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  75. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  76. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +0 -1
  77. package/dist/dashboard/out/_next/static/css/6892f8422896ef7a.css +0 -1
  78. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  79. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  80. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  81. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  82. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  83. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +0 -45
  84. package/dist/dashboard/out/alt-logos/logo.svg +0 -38
  85. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  86. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  87. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  88. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  89. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  90. package/dist/dashboard/out/alt-logos/monogram-logo.svg +0 -38
  91. package/dist/dashboard/out/app/onboarding.html +0 -1
  92. package/dist/dashboard/out/app/onboarding.txt +0 -7
  93. package/dist/dashboard/out/app.html +0 -1
  94. package/dist/dashboard/out/app.txt +0 -7
  95. package/dist/dashboard/out/apple-icon.png +0 -0
  96. package/dist/dashboard/out/cloud/link.html +0 -1
  97. package/dist/dashboard/out/cloud/link.txt +0 -7
  98. package/dist/dashboard/out/complete-profile.html +0 -5
  99. package/dist/dashboard/out/complete-profile.txt +0 -7
  100. package/dist/dashboard/out/connect-repos.html +0 -1
  101. package/dist/dashboard/out/connect-repos.txt +0 -7
  102. package/dist/dashboard/out/history.html +0 -1
  103. package/dist/dashboard/out/history.txt +0 -7
  104. package/dist/dashboard/out/index.html +0 -1
  105. package/dist/dashboard/out/index.txt +0 -7
  106. package/dist/dashboard/out/login.html +0 -5
  107. package/dist/dashboard/out/login.txt +0 -7
  108. package/dist/dashboard/out/metrics.html +0 -1
  109. package/dist/dashboard/out/metrics.txt +0 -7
  110. package/dist/dashboard/out/pricing.html +0 -13
  111. package/dist/dashboard/out/pricing.txt +0 -7
  112. package/dist/dashboard/out/providers/setup/claude.html +0 -1
  113. package/dist/dashboard/out/providers/setup/claude.txt +0 -8
  114. package/dist/dashboard/out/providers/setup/codex.html +0 -1
  115. package/dist/dashboard/out/providers/setup/codex.txt +0 -8
  116. package/dist/dashboard/out/providers/setup/cursor.html +0 -1
  117. package/dist/dashboard/out/providers/setup/cursor.txt +0 -8
  118. package/dist/dashboard/out/providers.html +0 -1
  119. package/dist/dashboard/out/providers.txt +0 -7
  120. package/dist/dashboard/out/signup.html +0 -6
  121. package/dist/dashboard/out/signup.txt +0 -7
  122. package/dist/src/cloud/index.d.ts +0 -8
  123. package/dist/src/cloud/index.js +0 -8
  124. package/dist/src/dashboard-server/index.d.ts +0 -8
  125. package/dist/src/dashboard-server/index.js +0 -8
  126. package/packages/cloud/dist/api/admin.d.ts +0 -8
  127. package/packages/cloud/dist/api/admin.js +0 -225
  128. package/packages/cloud/dist/api/auth.d.ts +0 -20
  129. package/packages/cloud/dist/api/auth.js +0 -138
  130. package/packages/cloud/dist/api/billing.d.ts +0 -7
  131. package/packages/cloud/dist/api/billing.js +0 -564
  132. package/packages/cloud/dist/api/cli-pty-runner.d.ts +0 -53
  133. package/packages/cloud/dist/api/cli-pty-runner.js +0 -175
  134. package/packages/cloud/dist/api/codex-auth-helper.d.ts +0 -21
  135. package/packages/cloud/dist/api/codex-auth-helper.js +0 -327
  136. package/packages/cloud/dist/api/consensus.d.ts +0 -13
  137. package/packages/cloud/dist/api/consensus.js +0 -261
  138. package/packages/cloud/dist/api/coordinators.d.ts +0 -8
  139. package/packages/cloud/dist/api/coordinators.js +0 -750
  140. package/packages/cloud/dist/api/daemons.d.ts +0 -12
  141. package/packages/cloud/dist/api/daemons.js +0 -535
  142. package/packages/cloud/dist/api/email-auth.d.ts +0 -11
  143. package/packages/cloud/dist/api/email-auth.js +0 -347
  144. package/packages/cloud/dist/api/generic-webhooks.d.ts +0 -8
  145. package/packages/cloud/dist/api/generic-webhooks.js +0 -129
  146. package/packages/cloud/dist/api/git.d.ts +0 -8
  147. package/packages/cloud/dist/api/git.js +0 -269
  148. package/packages/cloud/dist/api/github-app.d.ts +0 -11
  149. package/packages/cloud/dist/api/github-app.js +0 -223
  150. package/packages/cloud/dist/api/middleware/planLimits.d.ts +0 -43
  151. package/packages/cloud/dist/api/middleware/planLimits.js +0 -202
  152. package/packages/cloud/dist/api/monitoring.d.ts +0 -11
  153. package/packages/cloud/dist/api/monitoring.js +0 -578
  154. package/packages/cloud/dist/api/nango-auth.d.ts +0 -9
  155. package/packages/cloud/dist/api/nango-auth.js +0 -741
  156. package/packages/cloud/dist/api/onboarding.d.ts +0 -15
  157. package/packages/cloud/dist/api/onboarding.js +0 -679
  158. package/packages/cloud/dist/api/policy.d.ts +0 -8
  159. package/packages/cloud/dist/api/policy.js +0 -229
  160. package/packages/cloud/dist/api/provider-env.d.ts +0 -26
  161. package/packages/cloud/dist/api/provider-env.js +0 -141
  162. package/packages/cloud/dist/api/providers.d.ts +0 -7
  163. package/packages/cloud/dist/api/providers.js +0 -574
  164. package/packages/cloud/dist/api/repos.d.ts +0 -8
  165. package/packages/cloud/dist/api/repos.js +0 -577
  166. package/packages/cloud/dist/api/sessions.d.ts +0 -11
  167. package/packages/cloud/dist/api/sessions.js +0 -302
  168. package/packages/cloud/dist/api/teams.d.ts +0 -7
  169. package/packages/cloud/dist/api/teams.js +0 -281
  170. package/packages/cloud/dist/api/test-helpers.d.ts +0 -10
  171. package/packages/cloud/dist/api/test-helpers.js +0 -745
  172. package/packages/cloud/dist/api/usage.d.ts +0 -7
  173. package/packages/cloud/dist/api/usage.js +0 -111
  174. package/packages/cloud/dist/api/webhooks.d.ts +0 -8
  175. package/packages/cloud/dist/api/webhooks.js +0 -645
  176. package/packages/cloud/dist/api/workspaces.d.ts +0 -25
  177. package/packages/cloud/dist/api/workspaces.js +0 -1799
  178. package/packages/cloud/dist/billing/index.d.ts +0 -9
  179. package/packages/cloud/dist/billing/index.js +0 -9
  180. package/packages/cloud/dist/billing/plans.d.ts +0 -39
  181. package/packages/cloud/dist/billing/plans.js +0 -245
  182. package/packages/cloud/dist/billing/service.d.ts +0 -80
  183. package/packages/cloud/dist/billing/service.js +0 -388
  184. package/packages/cloud/dist/billing/types.d.ts +0 -141
  185. package/packages/cloud/dist/billing/types.js +0 -7
  186. package/packages/cloud/dist/config.d.ts +0 -5
  187. package/packages/cloud/dist/config.js +0 -5
  188. package/packages/cloud/dist/db/bulk-ingest.d.ts +0 -89
  189. package/packages/cloud/dist/db/bulk-ingest.js +0 -268
  190. package/packages/cloud/dist/db/drizzle.d.ts +0 -290
  191. package/packages/cloud/dist/db/drizzle.js +0 -1422
  192. package/packages/cloud/dist/db/index.d.ts +0 -56
  193. package/packages/cloud/dist/db/index.js +0 -70
  194. package/packages/cloud/dist/db/schema.d.ts +0 -5117
  195. package/packages/cloud/dist/db/schema.js +0 -656
  196. package/packages/cloud/dist/index.d.ts +0 -11
  197. package/packages/cloud/dist/index.js +0 -38
  198. package/packages/cloud/dist/provisioner/index.d.ts +0 -207
  199. package/packages/cloud/dist/provisioner/index.js +0 -2118
  200. package/packages/cloud/dist/server.d.ts +0 -17
  201. package/packages/cloud/dist/server.js +0 -2034
  202. package/packages/cloud/dist/services/auto-scaler.d.ts +0 -152
  203. package/packages/cloud/dist/services/auto-scaler.js +0 -439
  204. package/packages/cloud/dist/services/capacity-manager.d.ts +0 -148
  205. package/packages/cloud/dist/services/capacity-manager.js +0 -449
  206. package/packages/cloud/dist/services/ci-agent-spawner.d.ts +0 -49
  207. package/packages/cloud/dist/services/ci-agent-spawner.js +0 -373
  208. package/packages/cloud/dist/services/cloud-message-bus.d.ts +0 -28
  209. package/packages/cloud/dist/services/cloud-message-bus.js +0 -19
  210. package/packages/cloud/dist/services/compute-enforcement.d.ts +0 -57
  211. package/packages/cloud/dist/services/compute-enforcement.js +0 -175
  212. package/packages/cloud/dist/services/coordinator.d.ts +0 -62
  213. package/packages/cloud/dist/services/coordinator.js +0 -389
  214. package/packages/cloud/dist/services/index.d.ts +0 -17
  215. package/packages/cloud/dist/services/index.js +0 -25
  216. package/packages/cloud/dist/services/intro-expiration.d.ts +0 -60
  217. package/packages/cloud/dist/services/intro-expiration.js +0 -252
  218. package/packages/cloud/dist/services/mention-handler.d.ts +0 -65
  219. package/packages/cloud/dist/services/mention-handler.js +0 -405
  220. package/packages/cloud/dist/services/nango.d.ts +0 -219
  221. package/packages/cloud/dist/services/nango.js +0 -424
  222. package/packages/cloud/dist/services/persistence.d.ts +0 -131
  223. package/packages/cloud/dist/services/persistence.js +0 -200
  224. package/packages/cloud/dist/services/planLimits.d.ts +0 -147
  225. package/packages/cloud/dist/services/planLimits.js +0 -335
  226. package/packages/cloud/dist/services/presence-registry.d.ts +0 -56
  227. package/packages/cloud/dist/services/presence-registry.js +0 -91
  228. package/packages/cloud/dist/services/scaling-orchestrator.d.ts +0 -159
  229. package/packages/cloud/dist/services/scaling-orchestrator.js +0 -502
  230. package/packages/cloud/dist/services/scaling-policy.d.ts +0 -121
  231. package/packages/cloud/dist/services/scaling-policy.js +0 -415
  232. package/packages/cloud/dist/services/ssh-security.d.ts +0 -31
  233. package/packages/cloud/dist/services/ssh-security.js +0 -63
  234. package/packages/cloud/dist/services/workspace-keepalive.d.ts +0 -76
  235. package/packages/cloud/dist/services/workspace-keepalive.js +0 -234
  236. package/packages/cloud/dist/shims/consensus.d.ts +0 -23
  237. package/packages/cloud/dist/shims/consensus.js +0 -5
  238. package/packages/cloud/dist/webhooks/index.d.ts +0 -24
  239. package/packages/cloud/dist/webhooks/index.js +0 -29
  240. package/packages/cloud/dist/webhooks/parsers/github.d.ts +0 -8
  241. package/packages/cloud/dist/webhooks/parsers/github.js +0 -234
  242. package/packages/cloud/dist/webhooks/parsers/index.d.ts +0 -23
  243. package/packages/cloud/dist/webhooks/parsers/index.js +0 -30
  244. package/packages/cloud/dist/webhooks/parsers/linear.d.ts +0 -9
  245. package/packages/cloud/dist/webhooks/parsers/linear.js +0 -258
  246. package/packages/cloud/dist/webhooks/parsers/slack.d.ts +0 -9
  247. package/packages/cloud/dist/webhooks/parsers/slack.js +0 -214
  248. package/packages/cloud/dist/webhooks/responders/github.d.ts +0 -8
  249. package/packages/cloud/dist/webhooks/responders/github.js +0 -73
  250. package/packages/cloud/dist/webhooks/responders/index.d.ts +0 -23
  251. package/packages/cloud/dist/webhooks/responders/index.js +0 -30
  252. package/packages/cloud/dist/webhooks/responders/linear.d.ts +0 -9
  253. package/packages/cloud/dist/webhooks/responders/linear.js +0 -149
  254. package/packages/cloud/dist/webhooks/responders/slack.d.ts +0 -20
  255. package/packages/cloud/dist/webhooks/responders/slack.js +0 -178
  256. package/packages/cloud/dist/webhooks/router.d.ts +0 -25
  257. package/packages/cloud/dist/webhooks/router.js +0 -504
  258. package/packages/cloud/dist/webhooks/rules-engine.d.ts +0 -24
  259. package/packages/cloud/dist/webhooks/rules-engine.js +0 -287
  260. package/packages/cloud/dist/webhooks/types.d.ts +0 -186
  261. package/packages/cloud/dist/webhooks/types.js +0 -8
  262. package/packages/cloud/package.json +0 -60
  263. package/packages/dashboard/README.md +0 -48
  264. package/packages/dashboard/dist/health-worker-manager.d.ts +0 -62
  265. package/packages/dashboard/dist/health-worker-manager.js +0 -144
  266. package/packages/dashboard/dist/health-worker.d.ts +0 -9
  267. package/packages/dashboard/dist/health-worker.js +0 -79
  268. package/packages/dashboard/dist/index.d.ts +0 -20
  269. package/packages/dashboard/dist/index.js +0 -19
  270. package/packages/dashboard/dist/metrics.d.ts +0 -105
  271. package/packages/dashboard/dist/metrics.js +0 -193
  272. package/packages/dashboard/dist/needs-attention.d.ts +0 -24
  273. package/packages/dashboard/dist/needs-attention.js +0 -78
  274. package/packages/dashboard/dist/server.d.ts +0 -25
  275. package/packages/dashboard/dist/server.js +0 -5270
  276. package/packages/dashboard/dist/start.d.ts +0 -6
  277. package/packages/dashboard/dist/start.js +0 -13
  278. package/packages/dashboard/dist/types/threading.d.ts +0 -8
  279. package/packages/dashboard/dist/types/threading.js +0 -2
  280. package/packages/dashboard/dist/user-bridge.d.ts +0 -154
  281. package/packages/dashboard/dist/user-bridge.js +0 -372
  282. package/packages/dashboard/package.json +0 -65
  283. package/packages/dashboard/ui/app/app/onboarding/page.tsx +0 -394
  284. package/packages/dashboard/ui/app/app/page.tsx +0 -667
  285. package/packages/dashboard/ui/app/apple-icon.png +0 -0
  286. package/packages/dashboard/ui/app/cloud/link/page.tsx +0 -464
  287. package/packages/dashboard/ui/app/complete-profile/page.tsx +0 -204
  288. package/packages/dashboard/ui/app/connect-repos/page.tsx +0 -410
  289. package/packages/dashboard/ui/app/favicon.png +0 -0
  290. package/packages/dashboard/ui/app/globals.css +0 -59
  291. package/packages/dashboard/ui/app/history/page.tsx +0 -658
  292. package/packages/dashboard/ui/app/layout.tsx +0 -25
  293. package/packages/dashboard/ui/app/login/page.tsx +0 -424
  294. package/packages/dashboard/ui/app/metrics/page.tsx +0 -751
  295. package/packages/dashboard/ui/app/page.tsx +0 -59
  296. package/packages/dashboard/ui/app/pricing/page.tsx +0 -7
  297. package/packages/dashboard/ui/app/providers/page.tsx +0 -193
  298. package/packages/dashboard/ui/app/providers/setup/[provider]/ProviderSetupClient.tsx +0 -148
  299. package/packages/dashboard/ui/app/providers/setup/[provider]/constants.ts +0 -35
  300. package/packages/dashboard/ui/app/providers/setup/[provider]/page.tsx +0 -42
  301. package/packages/dashboard/ui/app/signup/page.tsx +0 -533
  302. package/packages/dashboard/ui/index.ts +0 -49
  303. package/packages/dashboard/ui/landing/LandingPage.tsx +0 -713
  304. package/packages/dashboard/ui/landing/PricingPage.tsx +0 -559
  305. package/packages/dashboard/ui/landing/index.ts +0 -6
  306. package/packages/dashboard/ui/landing/styles.css +0 -2850
  307. package/packages/dashboard/ui/lib/agent-merge.ts +0 -35
  308. package/packages/dashboard/ui/lib/api.ts +0 -1155
  309. package/packages/dashboard/ui/lib/cloudApi.ts +0 -877
  310. package/packages/dashboard/ui/lib/colors.ts +0 -218
  311. package/packages/dashboard/ui/lib/hierarchy.ts +0 -242
  312. package/packages/dashboard/ui/lib/stuckDetection.ts +0 -142
  313. package/packages/dashboard/ui/next-env.d.ts +0 -5
  314. package/packages/dashboard/ui/next.config.js +0 -41
  315. package/packages/dashboard/ui/package-lock.json +0 -2882
  316. package/packages/dashboard/ui/package.json +0 -33
  317. package/packages/dashboard/ui/postcss.config.js +0 -5
  318. package/packages/dashboard/ui/react-components/ActivityFeed.tsx +0 -216
  319. package/packages/dashboard/ui/react-components/AddWorkspaceModal.tsx +0 -170
  320. package/packages/dashboard/ui/react-components/AgentCard.tsx +0 -587
  321. package/packages/dashboard/ui/react-components/AgentList.tsx +0 -411
  322. package/packages/dashboard/ui/react-components/AgentProfilePanel.tsx +0 -564
  323. package/packages/dashboard/ui/react-components/App.tsx +0 -3033
  324. package/packages/dashboard/ui/react-components/BillingPanel.tsx +0 -922
  325. package/packages/dashboard/ui/react-components/BillingResult.tsx +0 -447
  326. package/packages/dashboard/ui/react-components/BroadcastComposer.tsx +0 -690
  327. package/packages/dashboard/ui/react-components/ChannelAdminPanel.tsx +0 -773
  328. package/packages/dashboard/ui/react-components/ChannelBrowser.tsx +0 -385
  329. package/packages/dashboard/ui/react-components/ChannelChat.tsx +0 -261
  330. package/packages/dashboard/ui/react-components/ChannelSidebar.tsx +0 -399
  331. package/packages/dashboard/ui/react-components/CloudSessionProvider.tsx +0 -130
  332. package/packages/dashboard/ui/react-components/CommandPalette.tsx +0 -815
  333. package/packages/dashboard/ui/react-components/ConfirmationDialog.tsx +0 -133
  334. package/packages/dashboard/ui/react-components/ConversationHistory.tsx +0 -518
  335. package/packages/dashboard/ui/react-components/CoordinatorPanel.tsx +0 -944
  336. package/packages/dashboard/ui/react-components/DecisionQueue.tsx +0 -717
  337. package/packages/dashboard/ui/react-components/DirectMessageView.tsx +0 -164
  338. package/packages/dashboard/ui/react-components/FileAutocomplete.tsx +0 -368
  339. package/packages/dashboard/ui/react-components/FleetOverview.tsx +0 -278
  340. package/packages/dashboard/ui/react-components/LogViewer.tsx +0 -310
  341. package/packages/dashboard/ui/react-components/LogViewerPanel.tsx +0 -482
  342. package/packages/dashboard/ui/react-components/Logo.tsx +0 -284
  343. package/packages/dashboard/ui/react-components/MentionAutocomplete.tsx +0 -384
  344. package/packages/dashboard/ui/react-components/MessageComposer.tsx +0 -457
  345. package/packages/dashboard/ui/react-components/MessageList.tsx +0 -649
  346. package/packages/dashboard/ui/react-components/MessageSenderName.tsx +0 -91
  347. package/packages/dashboard/ui/react-components/MessageStatusIndicator.tsx +0 -142
  348. package/packages/dashboard/ui/react-components/NewConversationModal.tsx +0 -400
  349. package/packages/dashboard/ui/react-components/NotificationToast.tsx +0 -488
  350. package/packages/dashboard/ui/react-components/OnlineUsersIndicator.tsx +0 -164
  351. package/packages/dashboard/ui/react-components/Pagination.tsx +0 -124
  352. package/packages/dashboard/ui/react-components/PricingPlans.tsx +0 -386
  353. package/packages/dashboard/ui/react-components/ProjectList.tsx +0 -625
  354. package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +0 -853
  355. package/packages/dashboard/ui/react-components/ProviderConnectionList.tsx +0 -378
  356. package/packages/dashboard/ui/react-components/ProvisioningProgress.tsx +0 -730
  357. package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +0 -549
  358. package/packages/dashboard/ui/react-components/ServerCard.tsx +0 -202
  359. package/packages/dashboard/ui/react-components/SessionExpiredModal.tsx +0 -128
  360. package/packages/dashboard/ui/react-components/SpawnModal.tsx +0 -804
  361. package/packages/dashboard/ui/react-components/TaskAssignmentUI.tsx +0 -375
  362. package/packages/dashboard/ui/react-components/TerminalProviderSetup.tsx +0 -608
  363. package/packages/dashboard/ui/react-components/ThemeProvider.tsx +0 -325
  364. package/packages/dashboard/ui/react-components/ThinkingIndicator.tsx +0 -231
  365. package/packages/dashboard/ui/react-components/ThreadList.tsx +0 -198
  366. package/packages/dashboard/ui/react-components/ThreadPanel.tsx +0 -346
  367. package/packages/dashboard/ui/react-components/TrajectoryViewer.tsx +0 -698
  368. package/packages/dashboard/ui/react-components/TypingIndicator.tsx +0 -69
  369. package/packages/dashboard/ui/react-components/UsageBanner.tsx +0 -231
  370. package/packages/dashboard/ui/react-components/UserProfilePanel.tsx +0 -233
  371. package/packages/dashboard/ui/react-components/WorkspaceContext.tsx +0 -107
  372. package/packages/dashboard/ui/react-components/WorkspaceSelector.tsx +0 -234
  373. package/packages/dashboard/ui/react-components/WorkspaceStatusIndicator.tsx +0 -370
  374. package/packages/dashboard/ui/react-components/XTermInteractive.tsx +0 -510
  375. package/packages/dashboard/ui/react-components/XTermLogViewer.tsx +0 -719
  376. package/packages/dashboard/ui/react-components/channels/ChannelDialogs.tsx +0 -1411
  377. package/packages/dashboard/ui/react-components/channels/ChannelHeader.tsx +0 -317
  378. package/packages/dashboard/ui/react-components/channels/ChannelMessageList.tsx +0 -463
  379. package/packages/dashboard/ui/react-components/channels/ChannelViewV1.tsx +0 -146
  380. package/packages/dashboard/ui/react-components/channels/MessageInput.tsx +0 -288
  381. package/packages/dashboard/ui/react-components/channels/SearchInput.tsx +0 -172
  382. package/packages/dashboard/ui/react-components/channels/SearchResults.tsx +0 -336
  383. package/packages/dashboard/ui/react-components/channels/api.ts +0 -697
  384. package/packages/dashboard/ui/react-components/channels/index.ts +0 -76
  385. package/packages/dashboard/ui/react-components/channels/mockApi.ts +0 -344
  386. package/packages/dashboard/ui/react-components/channels/types.ts +0 -566
  387. package/packages/dashboard/ui/react-components/hooks/index.ts +0 -57
  388. package/packages/dashboard/ui/react-components/hooks/useAgentLogs.ts +0 -394
  389. package/packages/dashboard/ui/react-components/hooks/useAgents.ts +0 -127
  390. package/packages/dashboard/ui/react-components/hooks/useBroadcastDedup.ts +0 -86
  391. package/packages/dashboard/ui/react-components/hooks/useChannelAdmin.ts +0 -329
  392. package/packages/dashboard/ui/react-components/hooks/useChannelBrowser.ts +0 -239
  393. package/packages/dashboard/ui/react-components/hooks/useChannelCommands.ts +0 -138
  394. package/packages/dashboard/ui/react-components/hooks/useChannels.ts +0 -328
  395. package/packages/dashboard/ui/react-components/hooks/useDebounce.ts +0 -29
  396. package/packages/dashboard/ui/react-components/hooks/useDirectMessage.ts +0 -141
  397. package/packages/dashboard/ui/react-components/hooks/useMessages.ts +0 -309
  398. package/packages/dashboard/ui/react-components/hooks/useOrchestrator.ts +0 -364
  399. package/packages/dashboard/ui/react-components/hooks/usePinnedAgents.ts +0 -140
  400. package/packages/dashboard/ui/react-components/hooks/usePresence.ts +0 -340
  401. package/packages/dashboard/ui/react-components/hooks/useRecentRepos.ts +0 -130
  402. package/packages/dashboard/ui/react-components/hooks/useSession.ts +0 -209
  403. package/packages/dashboard/ui/react-components/hooks/useTrajectory.ts +0 -265
  404. package/packages/dashboard/ui/react-components/hooks/useWebSocket.ts +0 -169
  405. package/packages/dashboard/ui/react-components/hooks/useWorkspaceMembers.ts +0 -120
  406. package/packages/dashboard/ui/react-components/hooks/useWorkspaceRepos.ts +0 -73
  407. package/packages/dashboard/ui/react-components/hooks/useWorkspaceStatus.ts +0 -237
  408. package/packages/dashboard/ui/react-components/index.ts +0 -81
  409. package/packages/dashboard/ui/react-components/layout/Header.tsx +0 -355
  410. package/packages/dashboard/ui/react-components/layout/RepoContextHeader.tsx +0 -361
  411. package/packages/dashboard/ui/react-components/layout/Sidebar.archive.test.tsx +0 -126
  412. package/packages/dashboard/ui/react-components/layout/Sidebar.test.tsx +0 -691
  413. package/packages/dashboard/ui/react-components/layout/Sidebar.tsx +0 -930
  414. package/packages/dashboard/ui/react-components/layout/index.ts +0 -7
  415. package/packages/dashboard/ui/react-components/settings/BillingSettingsPanel.tsx +0 -564
  416. package/packages/dashboard/ui/react-components/settings/SettingsPage.tsx +0 -544
  417. package/packages/dashboard/ui/react-components/settings/TeamSettingsPanel.tsx +0 -560
  418. package/packages/dashboard/ui/react-components/settings/WorkspaceSettingsPanel.tsx +0 -1386
  419. package/packages/dashboard/ui/react-components/settings/index.ts +0 -11
  420. package/packages/dashboard/ui/react-components/settings/types.ts +0 -53
  421. package/packages/dashboard/ui/react-components/utils/messageFormatting.tsx +0 -370
  422. package/packages/dashboard/ui/tailwind.config.js +0 -148
  423. package/packages/dashboard/ui/types/index.ts +0 -304
  424. package/packages/dashboard/ui/types/threading.ts +0 -7
  425. package/packages/dashboard/ui-dist/404.html +0 -1
  426. package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
  427. package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
  428. package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_buildManifest.js +0 -1
  429. package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_ssgManifest.js +0 -1
  430. package/packages/dashboard/ui-dist/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  431. package/packages/dashboard/ui-dist/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  432. package/packages/dashboard/ui-dist/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  433. package/packages/dashboard/ui-dist/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  434. package/packages/dashboard/ui-dist/_next/static/chunks/532-bace199897eeab37.js +0 -9
  435. package/packages/dashboard/ui-dist/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  436. package/packages/dashboard/ui-dist/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  437. package/packages/dashboard/ui-dist/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  438. package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  439. package/packages/dashboard/ui-dist/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  440. package/packages/dashboard/ui-dist/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  441. package/packages/dashboard/ui-dist/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  442. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  443. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  444. package/packages/dashboard/ui-dist/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  445. package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  446. package/packages/dashboard/ui-dist/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  447. package/packages/dashboard/ui-dist/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  448. package/packages/dashboard/ui-dist/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  449. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  450. package/packages/dashboard/ui-dist/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  451. package/packages/dashboard/ui-dist/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  452. package/packages/dashboard/ui-dist/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  453. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  454. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  455. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  456. package/packages/dashboard/ui-dist/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  457. package/packages/dashboard/ui-dist/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  458. package/packages/dashboard/ui-dist/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  459. package/packages/dashboard/ui-dist/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  460. package/packages/dashboard/ui-dist/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  461. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  462. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  463. package/packages/dashboard/ui-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  464. package/packages/dashboard/ui-dist/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  465. package/packages/dashboard/ui-dist/_next/static/css/4034f236dd1a3178.css +0 -1
  466. package/packages/dashboard/ui-dist/_next/static/css/6892f8422896ef7a.css +0 -1
  467. package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_buildManifest.js +0 -1
  468. package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_ssgManifest.js +0 -1
  469. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-128.png +0 -0
  470. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-256.png +0 -0
  471. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-32.png +0 -0
  472. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-512.png +0 -0
  473. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-64.png +0 -0
  474. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo.svg +0 -45
  475. package/packages/dashboard/ui-dist/alt-logos/logo.svg +0 -38
  476. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-128.png +0 -0
  477. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-256.png +0 -0
  478. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-32.png +0 -0
  479. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-512.png +0 -0
  480. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-64.png +0 -0
  481. package/packages/dashboard/ui-dist/alt-logos/monogram-logo.svg +0 -38
  482. package/packages/dashboard/ui-dist/app/onboarding.html +0 -1
  483. package/packages/dashboard/ui-dist/app/onboarding.txt +0 -7
  484. package/packages/dashboard/ui-dist/app.html +0 -1
  485. package/packages/dashboard/ui-dist/app.txt +0 -7
  486. package/packages/dashboard/ui-dist/apple-icon.png +0 -0
  487. package/packages/dashboard/ui-dist/cloud/link.html +0 -1
  488. package/packages/dashboard/ui-dist/cloud/link.txt +0 -7
  489. package/packages/dashboard/ui-dist/complete-profile.html +0 -5
  490. package/packages/dashboard/ui-dist/complete-profile.txt +0 -7
  491. package/packages/dashboard/ui-dist/connect-repos.html +0 -1
  492. package/packages/dashboard/ui-dist/connect-repos.txt +0 -7
  493. package/packages/dashboard/ui-dist/history.html +0 -1
  494. package/packages/dashboard/ui-dist/history.txt +0 -7
  495. package/packages/dashboard/ui-dist/index.html +0 -1
  496. package/packages/dashboard/ui-dist/index.txt +0 -7
  497. package/packages/dashboard/ui-dist/login.html +0 -5
  498. package/packages/dashboard/ui-dist/login.txt +0 -7
  499. package/packages/dashboard/ui-dist/metrics.html +0 -1
  500. package/packages/dashboard/ui-dist/metrics.txt +0 -7
  501. package/packages/dashboard/ui-dist/pricing.html +0 -13
  502. package/packages/dashboard/ui-dist/pricing.txt +0 -7
  503. package/packages/dashboard/ui-dist/providers/setup/claude.html +0 -1
  504. package/packages/dashboard/ui-dist/providers/setup/claude.txt +0 -8
  505. package/packages/dashboard/ui-dist/providers/setup/codex.html +0 -1
  506. package/packages/dashboard/ui-dist/providers/setup/codex.txt +0 -8
  507. package/packages/dashboard/ui-dist/providers/setup/cursor.html +0 -1
  508. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +0 -8
  509. package/packages/dashboard/ui-dist/providers.html +0 -1
  510. package/packages/dashboard/ui-dist/providers.txt +0 -7
  511. package/packages/dashboard/ui-dist/signup.html +0 -6
  512. package/packages/dashboard/ui-dist/signup.txt +0 -7
  513. package/packages/dashboard-server/dist/health-worker-manager.d.ts +0 -62
  514. package/packages/dashboard-server/dist/health-worker-manager.js +0 -144
  515. package/packages/dashboard-server/dist/health-worker.d.ts +0 -9
  516. package/packages/dashboard-server/dist/health-worker.js +0 -79
  517. package/packages/dashboard-server/dist/index.d.ts +0 -18
  518. package/packages/dashboard-server/dist/index.js +0 -17
  519. package/packages/dashboard-server/dist/metrics.d.ts +0 -105
  520. package/packages/dashboard-server/dist/metrics.js +0 -193
  521. package/packages/dashboard-server/dist/needs-attention.d.ts +0 -24
  522. package/packages/dashboard-server/dist/needs-attention.js +0 -78
  523. package/packages/dashboard-server/dist/server.d.ts +0 -25
  524. package/packages/dashboard-server/dist/server.js +0 -5158
  525. package/packages/dashboard-server/dist/start.d.ts +0 -6
  526. package/packages/dashboard-server/dist/start.js +0 -13
  527. package/packages/dashboard-server/dist/types/threading.d.ts +0 -8
  528. package/packages/dashboard-server/dist/types/threading.js +0 -2
  529. package/packages/dashboard-server/dist/user-bridge.d.ts +0 -158
  530. package/packages/dashboard-server/dist/user-bridge.js +0 -390
  531. package/packages/dashboard-server/package.json +0 -55
  532. package/scripts/run-migrations.js +0 -43
  533. package/scripts/setup-stripe-products.ts +0 -312
  534. package/scripts/verify-schema.js +0 -134
@@ -1,405 +0,0 @@
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
@@ -1,219 +0,0 @@
1
- /**
2
- * Nango Integration Configuration
3
- *
4
- * REQUIRED SCOPES:
5
- * - github (GITHUB_USER): Requires 'user:email' scope for email reconciliation.
6
- * Configure this in Nango Dashboard: Integrations → GitHub → OAuth Scopes
7
- */
8
- export declare const NANGO_INTEGRATIONS: {
9
- readonly GITHUB_USER: "github";
10
- readonly GITHUB_APP: "github-app-oauth";
11
- };
12
- export interface GithubUserProfile {
13
- id: number;
14
- login: string;
15
- email?: string;
16
- avatar_url?: string;
17
- }
18
- declare class NangoService {
19
- private _client;
20
- private _secret;
21
- /** Lazily initialize client on first use to avoid requiring env vars at import */
22
- private get client();
23
- private get secret();
24
- /**
25
- * Create a Nango connect session restricted to specific integrations.
26
- */
27
- createConnectSession(allowedIntegrations: string[], endUser: {
28
- id: string;
29
- email?: string;
30
- }): Promise<{
31
- token: string;
32
- connect_link: string;
33
- expires_at: string;
34
- }>;
35
- /**
36
- * Fetch GitHub user profile via Nango proxy.
37
- */
38
- getGithubUser(connectionId: string): Promise<GithubUserProfile>;
39
- /**
40
- * Fetch all email addresses associated with a GitHub user.
41
- * Requires 'user:email' scope to be configured in Nango.
42
- * @see https://docs.github.com/en/rest/users/emails#list-email-addresses-for-the-authenticated-user
43
- */
44
- getGithubUserEmails(connectionId: string): Promise<Array<{
45
- email: string;
46
- verified: boolean;
47
- primary: boolean;
48
- visibility: string | null;
49
- }>>;
50
- /**
51
- * Retrieve an installation access token from a GitHub App connection.
52
- * Use this ONLY when you need the raw token (e.g., for git clone URLs).
53
- * For API calls, use the proxy methods instead.
54
- */
55
- getGithubAppToken(connectionId: string): Promise<string>;
56
- /**
57
- * Retrieve the user's OAuth access token from a GitHub App OAuth connection.
58
- * This is the user-level token (not the installation token).
59
- * Use this for operations that require user context (e.g., gh CLI).
60
- *
61
- * The user token is stored in connection_config.userCredentials.access_token
62
- * by Nango's GitHub App OAuth flow. This is a gho_* or ghu_* token that
63
- * works for both git operations and gh CLI commands.
64
- */
65
- getGithubUserOAuthToken(connectionId: string): Promise<string>;
66
- /**
67
- * Retrieve the user's OAuth token from a 'github' user connection.
68
- * This is for the separate GitHub OAuth login (not the App connection).
69
- */
70
- getGithubUserToken(connectionId: string): Promise<string>;
71
- /**
72
- * List repositories available to a GitHub App installation using the Nango Proxy.
73
- * The proxy automatically handles token injection and refresh.
74
- * @see https://nango.dev/docs/implementation-guides/requests-proxy/implement-requests-proxy
75
- */
76
- listGithubAppRepos(connectionId: string): Promise<{
77
- repositories: Array<{
78
- id: number;
79
- full_name: string;
80
- private: boolean;
81
- default_branch: string;
82
- }>;
83
- }>;
84
- /**
85
- * Get the GitHub App installation ID from a connection.
86
- * The installation ID is stored in connection_config.installation_id
87
- */
88
- getGithubAppInstallationId(connectionId: string): Promise<number | null>;
89
- /**
90
- * Create an issue via Nango Proxy.
91
- */
92
- createGithubIssue(connectionId: string, owner: string, repo: string, data: {
93
- title: string;
94
- body?: string;
95
- labels?: string[];
96
- }): Promise<{
97
- number: number;
98
- html_url: string;
99
- }>;
100
- /**
101
- * Create a pull request via Nango Proxy.
102
- */
103
- createGithubPullRequest(connectionId: string, owner: string, repo: string, data: {
104
- title: string;
105
- body?: string;
106
- head: string;
107
- base: string;
108
- }): Promise<{
109
- number: number;
110
- html_url: string;
111
- }>;
112
- /**
113
- * Add a comment to an issue via Nango Proxy.
114
- */
115
- addGithubIssueComment(connectionId: string, owner: string, repo: string, issueNumber: number, body: string): Promise<{
116
- id: number;
117
- html_url: string;
118
- }>;
119
- /**
120
- * Update connection end user metadata (e.g., after creating a user record).
121
- */
122
- updateEndUser(connectionId: string, providerConfigKey: string, endUser: {
123
- id: string;
124
- email?: string;
125
- }): Promise<void>;
126
- /**
127
- * Delete a connection from Nango.
128
- *
129
- * Used to remove temporary session connections for returning users
130
- * to prevent duplicate connections in Nango. In the two-connection pattern,
131
- * new users get a permanent connection but returning users authenticate
132
- * with a temporary one that gets deleted.
133
- *
134
- * @param connectionId - Nango connection ID to delete
135
- * @param providerConfigKey - The integration key (e.g., 'github')
136
- */
137
- deleteConnection(connectionId: string, providerConfigKey: string): Promise<void>;
138
- /**
139
- * Get connection metadata including end_user info.
140
- * Useful when webhook doesn't include end_user data.
141
- */
142
- getConnection(connectionId: string, providerConfigKey: string): Promise<{
143
- id: number;
144
- connection_id: string;
145
- provider_config_key: string;
146
- end_user?: {
147
- id?: string;
148
- email?: string;
149
- };
150
- metadata?: Record<string, unknown>;
151
- }>;
152
- /**
153
- * Check if user has access to a specific GitHub repository.
154
- * Uses the user's OAuth connection to query GitHub API.
155
- * @param connectionId - User's Nango connection ID (github user OAuth)
156
- * @param owner - Repository owner
157
- * @param repo - Repository name
158
- * @returns Access details or null if no access
159
- */
160
- checkUserRepoAccess(connectionId: string, owner: string, repo: string): Promise<{
161
- hasAccess: boolean;
162
- permission?: 'admin' | 'write' | 'read' | 'none';
163
- repository?: {
164
- id: number;
165
- fullName: string;
166
- isPrivate: boolean;
167
- defaultBranch: string;
168
- };
169
- }>;
170
- /**
171
- * List all repositories the user has access to via their OAuth connection.
172
- * Uses the user's personal OAuth token (not the GitHub App).
173
- * @param connectionId - User's Nango connection ID (github user OAuth)
174
- * @param options - Pagination and filter options
175
- * @returns List of accessible repositories
176
- */
177
- listUserAccessibleRepos(connectionId: string, options?: {
178
- page?: number;
179
- perPage?: number;
180
- type?: 'all' | 'owner' | 'public' | 'private' | 'member';
181
- sort?: 'created' | 'updated' | 'pushed' | 'full_name';
182
- }): Promise<{
183
- repositories: Array<{
184
- id: number;
185
- fullName: string;
186
- isPrivate: boolean;
187
- defaultBranch: string;
188
- permissions: {
189
- admin: boolean;
190
- push: boolean;
191
- pull: boolean;
192
- };
193
- }>;
194
- hasMore: boolean;
195
- }>;
196
- /**
197
- * List collaborators for a repository via Nango Proxy.
198
- * Uses the GitHub App connection to access repository collaborators.
199
- * @param connectionId - GitHub App connection ID
200
- * @param owner - Repository owner
201
- * @param repo - Repository name
202
- * @returns List of collaborators with their permissions
203
- */
204
- listRepoCollaborators(connectionId: string, owner: string, repo: string): Promise<Array<{
205
- id: number;
206
- login: string;
207
- avatarUrl: string;
208
- permission: 'admin' | 'write' | 'read' | 'none';
209
- }>>;
210
- /**
211
- * Verify webhook signature sent by Nango.
212
- * Uses the new verifyIncomingWebhookRequest method.
213
- * @see https://nango.dev/docs/reference/sdks/node#verify-webhook-signature
214
- */
215
- verifyWebhookSignature(rawBody: string, headers: Record<string, string | string[] | undefined>): boolean;
216
- }
217
- export declare const nangoService: NangoService;
218
- export {};
219
- //# sourceMappingURL=nango.d.ts.map