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,175 +0,0 @@
1
- /**
2
- * CLI PTY Runner
3
- *
4
- * Shared module for running CLI auth flows via PTY.
5
- * Used by both production (onboarding.ts) and tests (ci-test-real-clis.ts).
6
- *
7
- * Uses the relay-pty Rust binary for PTY emulation.
8
- */
9
- import { spawn } from 'node:child_process';
10
- import { dirname } from 'node:path';
11
- import { fileURLToPath } from 'node:url';
12
- import { randomUUID } from 'node:crypto';
13
- // Get the directory where this module is located
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = dirname(__filename);
16
- // Import shared config and utilities
17
- import { CLI_AUTH_CONFIG, stripAnsiCodes, matchesSuccessPattern, findMatchingPrompt, validateProviderConfig, validateAllProviderConfigs as validateAllConfigs, getSupportedProviders, } from '@agent-relay/config/cli-auth-config';
18
- import { findRelayPtyBinary as findRelayPtyBinaryUtil } from '@agent-relay/utils/relay-pty-path';
19
- // Re-export everything from shared config for backward compatibility
20
- export { CLI_AUTH_CONFIG, stripAnsiCodes, matchesSuccessPattern, findMatchingPrompt, validateProviderConfig, getSupportedProviders, };
21
- // Wrapper that throws instead of returning array (backward compatible)
22
- export function validateAllProviderConfigs() {
23
- const errors = validateAllConfigs();
24
- if (errors.length > 0) {
25
- throw new Error(`Invalid provider configurations:\n${errors.join('\n')}`);
26
- }
27
- }
28
- /**
29
- * Find the relay-pty binary path.
30
- * Uses shared utility from @agent-relay/utils.
31
- */
32
- function findRelayPtyBinary() {
33
- return findRelayPtyBinaryUtil(__dirname);
34
- }
35
- /**
36
- * Run CLI auth flow via PTY using relay-pty binary
37
- *
38
- * This is the core PTY runner used by both production and tests.
39
- * It handles:
40
- * - Spawning the CLI with proper TTY emulation via relay-pty
41
- * - Auto-responding to interactive prompts
42
- * - Extracting auth URLs from output
43
- * - Detecting success patterns
44
- *
45
- * @param config - CLI auth configuration for the provider
46
- * @param options - Optional callbacks and overrides
47
- * @returns Promise resolving to auth result
48
- */
49
- export async function runCLIAuthViaPTY(config, options = {}) {
50
- const result = {
51
- authUrl: null,
52
- success: false,
53
- promptsHandled: [],
54
- output: '',
55
- exitCode: null,
56
- };
57
- const respondedPrompts = new Set();
58
- // Find relay-pty binary
59
- const relayPtyPath = findRelayPtyBinary();
60
- if (!relayPtyPath) {
61
- result.error = 'relay-pty binary not found. Build with: cd relay-pty && cargo build --release';
62
- return result;
63
- }
64
- return new Promise((resolve) => {
65
- try {
66
- // Generate unique name for this auth session
67
- const sessionName = `auth-${randomUUID().substring(0, 8)}`;
68
- // Build relay-pty arguments
69
- const relayArgs = [
70
- '--name', sessionName,
71
- '--rows', '30',
72
- '--cols', '120',
73
- '--log-level', 'error', // Suppress relay-pty logs
74
- '--', config.command,
75
- ...config.args,
76
- ];
77
- const proc = spawn(relayPtyPath, relayArgs, {
78
- cwd: options.cwd || process.cwd(),
79
- env: {
80
- ...process.env,
81
- NO_COLOR: '1',
82
- TERM: 'xterm-256color',
83
- // Prevent CLIs from trying to open browsers
84
- BROWSER: 'echo',
85
- DISPLAY: '',
86
- ...options.env,
87
- },
88
- stdio: ['pipe', 'pipe', 'pipe'],
89
- });
90
- // Timeout handler
91
- const timeout = setTimeout(() => {
92
- proc.kill();
93
- result.error = 'Timeout waiting for auth URL';
94
- resolve(result);
95
- }, config.waitTimeout + 5000);
96
- // Handle stdout (main PTY output)
97
- proc.stdout?.on('data', (data) => {
98
- const text = data.toString();
99
- result.output += text;
100
- options.onOutput?.(text);
101
- // Check for matching prompts and auto-respond
102
- const matchingPrompt = findMatchingPrompt(text, config.prompts, respondedPrompts);
103
- if (matchingPrompt) {
104
- respondedPrompts.add(matchingPrompt.description);
105
- result.promptsHandled.push(matchingPrompt.description);
106
- options.onPromptHandled?.(matchingPrompt.description);
107
- const delay = matchingPrompt.delay ?? 100;
108
- setTimeout(() => {
109
- try {
110
- proc.stdin?.write(matchingPrompt.response);
111
- }
112
- catch {
113
- // Process may have exited
114
- }
115
- }, delay);
116
- }
117
- // Look for auth URL in accumulated output
118
- // Join lines that look like URL continuations (handles wrapped URLs)
119
- const cleanAccumulated = stripAnsiCodes(result.output)
120
- .replace(/\n(?=[a-zA-Z0-9\-_.~:/?#\[\]@!$&'()*+,;=%])/g, '');
121
- const match = cleanAccumulated.match(config.urlPattern);
122
- if (match && match[1] && !result.authUrl) {
123
- result.authUrl = match[1];
124
- if (result.authUrl) {
125
- options.onAuthUrl?.(result.authUrl);
126
- }
127
- }
128
- // Check for success indicators
129
- if (matchesSuccessPattern(text, config.successPatterns)) {
130
- result.success = true;
131
- }
132
- });
133
- // Handle stderr (relay-pty logs, usually minimal)
134
- proc.stderr?.on('data', (data) => {
135
- const text = data.toString();
136
- // Also check stderr for output (some CLIs write to stderr)
137
- result.output += text;
138
- options.onOutput?.(text);
139
- // Check stderr for auth URLs too (using accumulated output)
140
- const cleanAccumulated = stripAnsiCodes(result.output)
141
- .replace(/\n(?=[a-zA-Z0-9\-_.~:/?#\[\]@!$&'()*+,;=%])/g, '');
142
- const match = cleanAccumulated.match(config.urlPattern);
143
- if (match && match[1] && !result.authUrl) {
144
- result.authUrl = match[1];
145
- if (result.authUrl) {
146
- options.onAuthUrl?.(result.authUrl);
147
- }
148
- }
149
- });
150
- proc.on('exit', (code) => {
151
- clearTimeout(timeout);
152
- result.exitCode = code;
153
- // Consider it a success if we got a URL (main goal)
154
- // or if exit code was 0 with success pattern
155
- if (result.authUrl || (code === 0 && result.success)) {
156
- result.success = true;
157
- }
158
- if (!result.authUrl && !result.success && !result.error) {
159
- result.error = 'Failed to extract auth URL from CLI output';
160
- }
161
- resolve(result);
162
- });
163
- proc.on('error', (err) => {
164
- clearTimeout(timeout);
165
- result.error = err.message;
166
- resolve(result);
167
- });
168
- }
169
- catch (err) {
170
- result.error = err instanceof Error ? err.message : 'Unknown error';
171
- resolve(result);
172
- }
173
- });
174
- }
175
- //# sourceMappingURL=cli-pty-runner.js.map
@@ -1,21 +0,0 @@
1
- /**
2
- * Codex Auth Helper API
3
- *
4
- * Provides endpoints for the `npx agent-relay codex-auth` CLI command.
5
- * Uses SSH tunneling to forward localhost:1455 to the workspace container,
6
- * allowing the Codex CLI's OAuth callback to work in remote/container environments.
7
- *
8
- * Flow:
9
- * 1. CLI gets workspace SSH info via /tunnel-info
10
- * 2. CLI establishes SSH tunnel: local:1455 -> container:1455
11
- * 3. User completes OAuth, browser redirects to localhost:1455
12
- * 4. Tunnel forwards to container's Codex CLI server
13
- * 5. Codex CLI exchanges code for tokens internally
14
- * 6. CLI polls for auth completion
15
- */
16
- export declare const codexAuthHelperRouter: import("express-serve-static-core").Router;
17
- /**
18
- * Stop the cleanup interval. Call this on server shutdown.
19
- */
20
- export declare function stopCodexAuthCleanup(): void;
21
- //# sourceMappingURL=codex-auth-helper.d.ts.map
@@ -1,327 +0,0 @@
1
- /**
2
- * Codex Auth Helper API
3
- *
4
- * Provides endpoints for the `npx agent-relay codex-auth` CLI command.
5
- * Uses SSH tunneling to forward localhost:1455 to the workspace container,
6
- * allowing the Codex CLI's OAuth callback to work in remote/container environments.
7
- *
8
- * Flow:
9
- * 1. CLI gets workspace SSH info via /tunnel-info
10
- * 2. CLI establishes SSH tunnel: local:1455 -> container:1455
11
- * 3. User completes OAuth, browser redirects to localhost:1455
12
- * 4. Tunnel forwards to container's Codex CLI server
13
- * 5. Codex CLI exchanges code for tokens internally
14
- * 6. CLI polls for auth completion
15
- */
16
- import { Router } from 'express';
17
- import crypto from 'crypto';
18
- import { requireAuth } from './auth.js';
19
- import { db } from '../db/index.js';
20
- import { deriveSshPassword } from '../services/ssh-security.js';
21
- export const codexAuthHelperRouter = Router();
22
- const WORKSPACE_SSH_PORT = 3022;
23
- const pendingAuthSessions = new Map();
24
- const pendingCliTokens = new Map();
25
- // Clean up old sessions every minute
26
- const cleanupInterval = setInterval(() => {
27
- const now = Date.now();
28
- for (const [id, session] of pendingAuthSessions) {
29
- // Remove sessions older than 10 minutes
30
- if (now - session.createdAt.getTime() > 10 * 60 * 1000) {
31
- pendingAuthSessions.delete(id);
32
- }
33
- }
34
- // Also clean up CLI tokens
35
- for (const [id, token] of pendingCliTokens) {
36
- // Remove tokens older than 10 minutes
37
- if (now - token.createdAt.getTime() > 10 * 60 * 1000) {
38
- pendingCliTokens.delete(id);
39
- }
40
- }
41
- }, 60000);
42
- /**
43
- * Stop the cleanup interval. Call this on server shutdown.
44
- */
45
- export function stopCodexAuthCleanup() {
46
- clearInterval(cleanupInterval);
47
- }
48
- /**
49
- * POST /api/auth/codex-helper/cli-session
50
- * Create a new auth session for the CLI command.
51
- * Returns workspace info and CLI command for SSH tunnel approach.
52
- */
53
- codexAuthHelperRouter.post('/cli-session', requireAuth, async (req, res) => {
54
- const userId = req.session.userId;
55
- const { workspaceId, authUrl, sessionId: onboardingSessionId } = req.body;
56
- // If workspace ID provided, return SSH tunnel command
57
- if (workspaceId) {
58
- try {
59
- const workspace = await db.workspaces.findById(workspaceId);
60
- if (!workspace || workspace.userId !== userId) {
61
- return res.status(404).json({ error: 'Workspace not found' });
62
- }
63
- // Generate a one-time CLI token for authentication
64
- const cliToken = crypto.randomUUID();
65
- pendingCliTokens.set(cliToken, {
66
- userId,
67
- workspaceId,
68
- createdAt: new Date(),
69
- authUrl, // Store authUrl so CLI can retrieve it
70
- sessionId: onboardingSessionId, // Store sessionId for credential storage
71
- });
72
- console.log(`[codex-helper] Created CLI session for workspace ${workspaceId} with token ${cliToken.slice(0, 8)}...`);
73
- const cloudUrl = process.env.PUBLIC_URL || 'https://agent-relay.com';
74
- // Generate the CLI command with workspace ID and token
75
- res.json({
76
- workspaceId: workspace.id,
77
- workspaceName: workspace.name,
78
- expiresIn: 600, // 10 minutes
79
- command: `npx agent-relay codex-auth --workspace=${workspaceId} --token=${cliToken}`,
80
- commandWithUrl: `npx agent-relay codex-auth --workspace=${workspaceId} --token=${cliToken} --cloud-url=${cloudUrl}`,
81
- });
82
- return;
83
- }
84
- catch (error) {
85
- console.error('[codex-helper] Error creating CLI session:', error);
86
- return res.status(500).json({ error: 'Failed to create CLI session' });
87
- }
88
- }
89
- // Legacy: token-based session (for backwards compatibility)
90
- const authSessionId = crypto.randomUUID();
91
- pendingAuthSessions.set(authSessionId, {
92
- userId,
93
- createdAt: new Date(),
94
- });
95
- console.log(`[codex-helper] Created legacy CLI session ${authSessionId} for user ${userId}`);
96
- res.json({
97
- authSessionId,
98
- expiresIn: 600, // 10 minutes
99
- command: `npx agent-relay codex-auth --token=${authSessionId}`,
100
- });
101
- });
102
- /**
103
- * POST /api/auth/codex-helper/callback
104
- * Receives the auth code from the CLI.
105
- * No auth required - validated by authSessionId.
106
- */
107
- codexAuthHelperRouter.post('/callback', async (req, res) => {
108
- const { authSessionId, code, state, error } = req.body;
109
- if (!authSessionId) {
110
- return res.status(400).json({ error: 'Missing authSessionId' });
111
- }
112
- const session = pendingAuthSessions.get(authSessionId);
113
- if (!session) {
114
- return res.status(404).json({ error: 'Session not found or expired' });
115
- }
116
- if (error) {
117
- console.log(`[codex-helper] Auth error for session ${authSessionId}:`, error);
118
- pendingAuthSessions.delete(authSessionId);
119
- return res.json({ success: false, error });
120
- }
121
- if (!code) {
122
- return res.status(400).json({ error: 'Missing auth code' });
123
- }
124
- // Store the code and state so the polling endpoint can retrieve them
125
- session.code = code;
126
- session.state = state; // Store state for CSRF validation
127
- pendingAuthSessions.set(authSessionId, session);
128
- console.log(`[codex-helper] Auth code received for session ${authSessionId}`);
129
- res.json({ success: true, message: 'Auth code received. You can close this terminal.' });
130
- });
131
- /**
132
- * GET /api/auth/codex-helper/status/:authSessionId
133
- * Check if auth code has been received.
134
- * The dashboard polls this to know when the CLI has captured the callback.
135
- */
136
- codexAuthHelperRouter.get('/status/:authSessionId', requireAuth, async (req, res) => {
137
- const authSessionId = req.params.authSessionId;
138
- const session = pendingAuthSessions.get(authSessionId);
139
- if (!session || session.userId !== req.session.userId) {
140
- return res.status(404).json({ error: 'Session not found or expired' });
141
- }
142
- if (session.code) {
143
- // Clean up session after successful retrieval (code is single-use)
144
- const code = session.code;
145
- const state = session.state;
146
- pendingAuthSessions.delete(authSessionId);
147
- return res.json({
148
- ready: true,
149
- code,
150
- state, // Return state for CSRF validation
151
- });
152
- }
153
- res.json({ ready: false });
154
- });
155
- /**
156
- * GET /api/auth/codex-helper/tunnel-info/:workspaceId
157
- * Get SSH tunnel info for establishing port forwarding to a workspace.
158
- * Returns host, port, user, and password for SSH connection.
159
- *
160
- * Authentication: Requires either session auth OR a valid CLI token.
161
- */
162
- codexAuthHelperRouter.get('/tunnel-info/:workspaceId', async (req, res) => {
163
- const workspaceId = req.params.workspaceId;
164
- const { token } = req.query;
165
- // Authenticate via CLI token or session
166
- let userId;
167
- if (token && typeof token === 'string') {
168
- // CLI token authentication
169
- const cliToken = pendingCliTokens.get(token);
170
- if (!cliToken) {
171
- return res.status(401).json({ error: 'Invalid or expired token' });
172
- }
173
- if (cliToken.workspaceId !== workspaceId) {
174
- return res.status(403).json({ error: 'Token does not match workspace' });
175
- }
176
- userId = cliToken.userId;
177
- // Don't delete token - it's also used for auth-status polling
178
- // Cleanup interval will remove it after 10 minutes
179
- console.log(`[codex-helper] CLI token used for workspace ${workspaceId}`);
180
- }
181
- else if (req.session?.userId) {
182
- // Session authentication
183
- userId = req.session.userId;
184
- }
185
- else {
186
- return res.status(401).json({ error: 'Authentication required. Provide token query parameter or valid session.' });
187
- }
188
- try {
189
- const workspace = await db.workspaces.findById(workspaceId);
190
- if (!workspace || workspace.userId !== userId) {
191
- return res.status(404).json({ error: 'Workspace not found' });
192
- }
193
- if (workspace.status !== 'running') {
194
- return res.status(400).json({ error: 'Workspace is not running' });
195
- }
196
- // Parse workspace URL to get host
197
- const publicUrl = workspace.publicUrl;
198
- if (!publicUrl) {
199
- return res.status(400).json({ error: 'Workspace URL not available' });
200
- }
201
- const url = new URL(publicUrl);
202
- const host = url.hostname;
203
- const apiPort = parseInt(url.port, 10) || 80;
204
- // SSH connection info varies by environment:
205
- // - Fly.io: Use public fly.dev hostname with port 3022 (exposed via TCP service)
206
- // - Local Docker: Use localhost with derived SSH port (22000 + apiPort - 3000)
207
- const isOnFly = !!process.env.FLY_APP_NAME;
208
- const isLocalDocker = (host === 'localhost' || host === '127.0.0.1') && apiPort >= 3000;
209
- let sshHost;
210
- let sshPort;
211
- if (isOnFly) {
212
- // Fly.io public hostname - SSH is exposed as a public TCP service on port 3022
213
- // Users can SSH directly from their machine to {app}.fly.dev:3022
214
- const appName = `ar-${workspace.id.substring(0, 8)}`;
215
- sshHost = `${appName}.fly.dev`;
216
- sshPort = WORKSPACE_SSH_PORT;
217
- }
218
- else if (isLocalDocker) {
219
- // Local Docker: SSH port is derived from API port
220
- // API port 3500 -> SSH port 22500 (formula: 22000 + apiPort - 3000)
221
- sshHost = 'localhost';
222
- sshPort = 22000 + (apiPort - 3000);
223
- }
224
- else {
225
- // Default fallback
226
- sshHost = host;
227
- sshPort = WORKSPACE_SSH_PORT;
228
- }
229
- // SSH password is derived per-workspace for security
230
- // Each workspace gets a unique password based on its ID + secret salt
231
- const sshPassword = deriveSshPassword(workspace.id);
232
- // Get authUrl from CLI token if available
233
- let authUrl;
234
- if (token && typeof token === 'string') {
235
- const cliToken = pendingCliTokens.get(token);
236
- authUrl = cliToken?.authUrl;
237
- }
238
- res.json({
239
- host: sshHost,
240
- port: sshPort,
241
- user: 'workspace',
242
- password: sshPassword,
243
- tunnelPort: 1455, // Codex OAuth callback port
244
- workspaceId: workspace.id,
245
- workspaceName: workspace.name,
246
- authUrl, // OAuth URL if available (set by dashboard)
247
- });
248
- }
249
- catch (error) {
250
- console.error('[codex-helper] Error getting tunnel info:', error);
251
- res.status(500).json({ error: 'Failed to get tunnel info' });
252
- }
253
- });
254
- /**
255
- * GET /api/auth/codex-helper/auth-status/:workspaceId
256
- * Poll for Codex authentication completion in a workspace.
257
- * The CLI uses this after establishing the tunnel to know when auth is done.
258
- *
259
- * Authentication: Requires either session auth OR a valid CLI token.
260
- */
261
- codexAuthHelperRouter.get('/auth-status/:workspaceId', async (req, res) => {
262
- const workspaceId = req.params.workspaceId;
263
- const { token } = req.query;
264
- // Authenticate via CLI token or session
265
- let userId;
266
- if (token && typeof token === 'string') {
267
- // CLI token authentication
268
- const cliToken = pendingCliTokens.get(token);
269
- if (!cliToken) {
270
- return res.status(401).json({ error: 'Invalid or expired token' });
271
- }
272
- if (cliToken.workspaceId !== workspaceId) {
273
- return res.status(403).json({ error: 'Token does not match workspace' });
274
- }
275
- userId = cliToken.userId;
276
- }
277
- else if (req.session?.userId) {
278
- // Session authentication
279
- userId = req.session.userId;
280
- }
281
- else {
282
- return res.status(401).json({ error: 'Authentication required. Provide token query parameter or valid session.' });
283
- }
284
- try {
285
- const workspace = await db.workspaces.findById(workspaceId);
286
- if (!workspace || workspace.userId !== userId) {
287
- return res.status(404).json({ error: 'Workspace not found' });
288
- }
289
- if (!workspace.publicUrl) {
290
- return res.status(400).json({ error: 'Workspace URL not available' });
291
- }
292
- // Check with workspace daemon if Codex is authenticated for this specific user
293
- // Pass userId to enable per-user credential checking (multiple users can share a workspace)
294
- const checkUrl = new URL(`${workspace.publicUrl}/auth/cli/openai/check`);
295
- checkUrl.searchParams.set('userId', userId);
296
- const response = await fetch(checkUrl.toString(), {
297
- method: 'GET',
298
- signal: AbortSignal.timeout(5000),
299
- });
300
- if (response.ok) {
301
- const data = await response.json();
302
- // When authentication is detected, mark the provider as connected in the database
303
- // This ensures the dashboard shows correct per-user connection status
304
- if (data.authenticated && userId) {
305
- try {
306
- await db.credentials.upsert({
307
- userId,
308
- provider: 'codex', // Codex provider for OpenAI
309
- scopes: [],
310
- });
311
- console.log(`[codex-helper] Marked codex as connected for user ${userId}`);
312
- }
313
- catch (dbError) {
314
- console.error('[codex-helper] Failed to mark provider as connected:', dbError);
315
- // Don't fail the request if DB update fails
316
- }
317
- }
318
- return res.json({ authenticated: data.authenticated });
319
- }
320
- res.json({ authenticated: false });
321
- }
322
- catch (_error) {
323
- // Workspace might not be reachable, return false
324
- res.json({ authenticated: false });
325
- }
326
- });
327
- //# sourceMappingURL=codex-auth-helper.js.map
@@ -1,13 +0,0 @@
1
- /**
2
- * Consensus API Routes (Read-Only)
3
- *
4
- * Provides API endpoints for observing multi-agent consensus decisions.
5
- * The dashboard is read-only - agents handle all consensus activity via relay messages.
6
- *
7
- * Architecture:
8
- * - Agents create proposals and vote via ->relay:_consensus messages
9
- * - The daemon processes these and syncs state to cloud via /sync endpoint
10
- * - Dashboard reads consensus state for display only
11
- */
12
- export declare const consensusRouter: import("express-serve-static-core").Router;
13
- //# sourceMappingURL=consensus.d.ts.map