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,690 +0,0 @@
1
- /**
2
- * BroadcastComposer Component
3
- *
4
- * Enhanced message composer for fleet-wide broadcasts,
5
- * with server/agent targeting and message templates.
6
- */
7
-
8
- import React, { useState, useCallback, useMemo } from 'react';
9
- import type { Agent } from '../types';
10
- import type { ServerInfo } from './ServerCard';
11
- import { getAgentColor, getAgentInitials } from '../lib/colors';
12
-
13
- export interface BroadcastTarget {
14
- type: 'all' | 'server' | 'agents';
15
- serverIds?: string[];
16
- agentNames?: string[];
17
- }
18
-
19
- export interface BroadcastComposerProps {
20
- servers: ServerInfo[];
21
- agents: Agent[];
22
- onSend: (message: string, target: BroadcastTarget) => Promise<boolean>;
23
- isSending?: boolean;
24
- error?: string | null;
25
- }
26
-
27
- const MESSAGE_TEMPLATES = [
28
- { id: 'status', label: 'Status Request', message: 'STATUS: Please report your current status and progress.' },
29
- { id: 'sync', label: 'Sync Check', message: 'SYNC: Checking in - please acknowledge receipt.' },
30
- { id: 'halt', label: 'Halt Work', message: 'HALT: Please pause current work and await further instructions.' },
31
- { id: 'resume', label: 'Resume Work', message: 'RESUME: You may continue with your assigned tasks.' },
32
- ];
33
-
34
- export function BroadcastComposer({
35
- servers,
36
- agents,
37
- onSend,
38
- isSending = false,
39
- error,
40
- }: BroadcastComposerProps) {
41
- const [message, setMessage] = useState('');
42
- const [targetType, setTargetType] = useState<'all' | 'server' | 'agents'>('all');
43
- const [selectedServers, setSelectedServers] = useState<Set<string>>(new Set());
44
- const [selectedAgents, setSelectedAgents] = useState<Set<string>>(new Set());
45
- const [showTemplates, setShowTemplates] = useState(false);
46
-
47
- // Online servers only
48
- const onlineServers = useMemo(
49
- () => servers.filter((s) => s.status === 'online'),
50
- [servers]
51
- );
52
-
53
- // Build target description
54
- const targetDescription = useMemo(() => {
55
- if (targetType === 'all') {
56
- return `All ${agents.length} agents across ${onlineServers.length} servers`;
57
- }
58
- if (targetType === 'server') {
59
- const count = selectedServers.size;
60
- return count === 0
61
- ? 'Select servers'
62
- : `${count} server${count > 1 ? 's' : ''} selected`;
63
- }
64
- if (targetType === 'agents') {
65
- const count = selectedAgents.size;
66
- return count === 0
67
- ? 'Select agents'
68
- : `${count} agent${count > 1 ? 's' : ''} selected`;
69
- }
70
- return '';
71
- }, [targetType, selectedServers, selectedAgents, agents.length, onlineServers.length]);
72
-
73
- // Handle send
74
- const handleSend = useCallback(async () => {
75
- if (!message.trim() || isSending) return;
76
-
77
- const target: BroadcastTarget = {
78
- type: targetType,
79
- serverIds: targetType === 'server' ? Array.from(selectedServers) : undefined,
80
- agentNames: targetType === 'agents' ? Array.from(selectedAgents) : undefined,
81
- };
82
-
83
- const success = await onSend(message, target);
84
- if (success) {
85
- setMessage('');
86
- }
87
- }, [message, targetType, selectedServers, selectedAgents, onSend, isSending]);
88
-
89
- // Toggle server selection
90
- const toggleServer = (serverId: string) => {
91
- setSelectedServers((prev) => {
92
- const next = new Set(prev);
93
- if (next.has(serverId)) {
94
- next.delete(serverId);
95
- } else {
96
- next.add(serverId);
97
- }
98
- return next;
99
- });
100
- };
101
-
102
- // Toggle agent selection
103
- const toggleAgent = (agentName: string) => {
104
- setSelectedAgents((prev) => {
105
- const next = new Set(prev);
106
- if (next.has(agentName)) {
107
- next.delete(agentName);
108
- } else {
109
- next.add(agentName);
110
- }
111
- return next;
112
- });
113
- };
114
-
115
- // Apply template
116
- const applyTemplate = (template: (typeof MESSAGE_TEMPLATES)[0]) => {
117
- setMessage(template.message);
118
- setShowTemplates(false);
119
- };
120
-
121
- return (
122
- <div className="broadcast-composer">
123
- <div className="broadcast-header">
124
- <BroadcastIcon />
125
- <span className="broadcast-title">Fleet Broadcast</span>
126
- <span className="broadcast-target">{targetDescription}</span>
127
- </div>
128
-
129
- {/* Target Type Selection */}
130
- <div className="broadcast-target-types">
131
- <button
132
- className={`broadcast-target-btn ${targetType === 'all' ? 'active' : ''}`}
133
- onClick={() => setTargetType('all')}
134
- >
135
- <GlobeIcon />
136
- All
137
- </button>
138
- <button
139
- className={`broadcast-target-btn ${targetType === 'server' ? 'active' : ''}`}
140
- onClick={() => setTargetType('server')}
141
- >
142
- <ServerIcon />
143
- By Server
144
- </button>
145
- <button
146
- className={`broadcast-target-btn ${targetType === 'agents' ? 'active' : ''}`}
147
- onClick={() => setTargetType('agents')}
148
- >
149
- <UsersIcon />
150
- By Agent
151
- </button>
152
- </div>
153
-
154
- {/* Server Selection */}
155
- {targetType === 'server' && (
156
- <div className="broadcast-selection">
157
- <div className="broadcast-selection-label">Select servers:</div>
158
- <div className="broadcast-selection-items">
159
- {onlineServers.map((server) => (
160
- <button
161
- key={server.id}
162
- className={`broadcast-selection-item ${
163
- selectedServers.has(server.id) ? 'selected' : ''
164
- }`}
165
- onClick={() => toggleServer(server.id)}
166
- >
167
- <span className="broadcast-item-dot" />
168
- <span>{server.name}</span>
169
- <span className="broadcast-item-count">{server.agentCount}</span>
170
- </button>
171
- ))}
172
- </div>
173
- </div>
174
- )}
175
-
176
- {/* Agent Selection */}
177
- {targetType === 'agents' && (
178
- <div className="broadcast-selection">
179
- <div className="broadcast-selection-label">Select agents:</div>
180
- <div className="broadcast-selection-items broadcast-selection-agents">
181
- {agents.map((agent) => {
182
- const colors = getAgentColor(agent.name);
183
- return (
184
- <button
185
- key={agent.name}
186
- className={`broadcast-selection-item ${
187
- selectedAgents.has(agent.name) ? 'selected' : ''
188
- }`}
189
- onClick={() => toggleAgent(agent.name)}
190
- >
191
- <div
192
- className="broadcast-agent-avatar"
193
- style={{ backgroundColor: colors.primary, color: colors.text }}
194
- >
195
- {getAgentInitials(agent.name)}
196
- </div>
197
- <span>{agent.name}</span>
198
- </button>
199
- );
200
- })}
201
- </div>
202
- </div>
203
- )}
204
-
205
- {/* Message Input */}
206
- <div className="broadcast-input-wrapper">
207
- <textarea
208
- className="broadcast-input"
209
- placeholder="Type your broadcast message..."
210
- value={message}
211
- onChange={(e) => setMessage(e.target.value)}
212
- disabled={isSending}
213
- rows={3}
214
- />
215
-
216
- <div className="broadcast-input-actions">
217
- <div className="broadcast-templates-wrapper">
218
- <button
219
- className="broadcast-template-btn"
220
- onClick={() => setShowTemplates(!showTemplates)}
221
- >
222
- <TemplateIcon />
223
- <span className="broadcast-template-text">Templates</span>
224
- </button>
225
- {showTemplates && (
226
- <div className="broadcast-templates-menu">
227
- {MESSAGE_TEMPLATES.map((template) => (
228
- <button
229
- key={template.id}
230
- className="broadcast-template-item"
231
- onClick={() => applyTemplate(template)}
232
- >
233
- <span className="broadcast-template-label">{template.label}</span>
234
- <span className="broadcast-template-preview">{template.message}</span>
235
- </button>
236
- ))}
237
- </div>
238
- )}
239
- </div>
240
-
241
- <button
242
- className="broadcast-send-btn"
243
- onClick={handleSend}
244
- disabled={!message.trim() || isSending || (targetType !== 'all' &&
245
- (targetType === 'server' ? selectedServers.size === 0 : selectedAgents.size === 0))}
246
- >
247
- {isSending ? <Spinner /> : <SendIcon />}
248
- <span className="broadcast-send-text">{isSending ? 'Sending...' : 'Broadcast'}</span>
249
- </button>
250
- </div>
251
- </div>
252
-
253
- {error && (
254
- <div className="broadcast-error">
255
- <ErrorIcon />
256
- <span>{error}</span>
257
- </div>
258
- )}
259
- </div>
260
- );
261
- }
262
-
263
- // Icon components
264
- function BroadcastIcon() {
265
- return (
266
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
267
- <circle cx="12" cy="12" r="2" />
268
- <path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14" />
269
- </svg>
270
- );
271
- }
272
-
273
- function GlobeIcon() {
274
- return (
275
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
276
- <circle cx="12" cy="12" r="10" />
277
- <line x1="2" y1="12" x2="22" y2="12" />
278
- <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" />
279
- </svg>
280
- );
281
- }
282
-
283
- function ServerIcon() {
284
- return (
285
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
286
- <rect x="2" y="2" width="20" height="8" rx="2" ry="2" />
287
- <rect x="2" y="14" width="20" height="8" rx="2" ry="2" />
288
- <line x1="6" y1="6" x2="6.01" y2="6" />
289
- <line x1="6" y1="18" x2="6.01" y2="18" />
290
- </svg>
291
- );
292
- }
293
-
294
- function UsersIcon() {
295
- return (
296
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
297
- <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" />
298
- <circle cx="9" cy="7" r="4" />
299
- <path d="M23 21v-2a4 4 0 0 0-3-3.87" />
300
- <path d="M16 3.13a4 4 0 0 1 0 7.75" />
301
- </svg>
302
- );
303
- }
304
-
305
- function TemplateIcon() {
306
- return (
307
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
308
- <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
309
- <line x1="3" y1="9" x2="21" y2="9" />
310
- <line x1="9" y1="21" x2="9" y2="9" />
311
- </svg>
312
- );
313
- }
314
-
315
- function SendIcon() {
316
- return (
317
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
318
- <line x1="22" y1="2" x2="11" y2="13" />
319
- <polygon points="22 2 15 22 11 13 2 9 22 2" />
320
- </svg>
321
- );
322
- }
323
-
324
- function ErrorIcon() {
325
- return (
326
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
327
- <circle cx="12" cy="12" r="10" />
328
- <line x1="12" y1="8" x2="12" y2="12" />
329
- <line x1="12" y1="16" x2="12.01" y2="16" />
330
- </svg>
331
- );
332
- }
333
-
334
- function Spinner() {
335
- return (
336
- <svg className="broadcast-spinner" width="14" height="14" viewBox="0 0 24 24">
337
- <circle
338
- cx="12"
339
- cy="12"
340
- r="10"
341
- stroke="currentColor"
342
- strokeWidth="2"
343
- fill="none"
344
- strokeDasharray="32"
345
- strokeLinecap="round"
346
- />
347
- </svg>
348
- );
349
- }
350
-
351
- /**
352
- * CSS styles for the broadcast composer
353
- */
354
- export const broadcastComposerStyles = `
355
- .broadcast-composer {
356
- background: #ffffff;
357
- border-radius: 8px;
358
- border: 1px solid #e8e8e8;
359
- overflow: hidden;
360
- }
361
-
362
- .broadcast-header {
363
- display: flex;
364
- align-items: center;
365
- gap: 8px;
366
- padding: 12px 16px;
367
- border-bottom: 1px solid #e8e8e8;
368
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
369
- color: #ffffff;
370
- }
371
-
372
- .broadcast-header svg {
373
- opacity: 0.9;
374
- }
375
-
376
- .broadcast-title {
377
- font-weight: 600;
378
- font-size: 14px;
379
- }
380
-
381
- .broadcast-target {
382
- margin-left: auto;
383
- font-size: 12px;
384
- opacity: 0.9;
385
- }
386
-
387
- .broadcast-target-types {
388
- display: flex;
389
- gap: 8px;
390
- padding: 12px 16px;
391
- border-bottom: 1px solid #e8e8e8;
392
- background: #fafafa;
393
- }
394
-
395
- .broadcast-target-btn {
396
- display: flex;
397
- align-items: center;
398
- gap: 6px;
399
- padding: 8px 14px;
400
- background: #ffffff;
401
- border: 1px solid #e8e8e8;
402
- border-radius: 6px;
403
- font-size: 13px;
404
- color: #666;
405
- cursor: pointer;
406
- font-family: inherit;
407
- transition: all 0.15s;
408
- }
409
-
410
- .broadcast-target-btn:hover {
411
- border-color: #d0d0d0;
412
- color: #333;
413
- }
414
-
415
- .broadcast-target-btn.active {
416
- background: #1264a3;
417
- border-color: #1264a3;
418
- color: #ffffff;
419
- }
420
-
421
- .broadcast-selection {
422
- padding: 12px 16px;
423
- border-bottom: 1px solid #e8e8e8;
424
- }
425
-
426
- .broadcast-selection-label {
427
- font-size: 12px;
428
- font-weight: 500;
429
- color: #666;
430
- margin-bottom: 8px;
431
- }
432
-
433
- .broadcast-selection-items {
434
- display: flex;
435
- flex-wrap: wrap;
436
- gap: 8px;
437
- }
438
-
439
- .broadcast-selection-agents {
440
- max-height: 120px;
441
- overflow-y: auto;
442
- }
443
-
444
- .broadcast-selection-item {
445
- display: flex;
446
- align-items: center;
447
- gap: 8px;
448
- padding: 6px 12px;
449
- background: #fafafa;
450
- border: 1px solid #e8e8e8;
451
- border-radius: 6px;
452
- font-size: 12px;
453
- color: #333;
454
- cursor: pointer;
455
- font-family: inherit;
456
- transition: all 0.15s;
457
- }
458
-
459
- .broadcast-selection-item:hover {
460
- background: #f0f0f0;
461
- }
462
-
463
- .broadcast-selection-item.selected {
464
- background: #e8f4fd;
465
- border-color: #1264a3;
466
- color: #1264a3;
467
- }
468
-
469
- .broadcast-item-dot {
470
- width: 6px;
471
- height: 6px;
472
- border-radius: 50%;
473
- background: #10b981;
474
- }
475
-
476
- .broadcast-item-count {
477
- font-size: 11px;
478
- color: #888;
479
- background: #f0f0f0;
480
- padding: 1px 5px;
481
- border-radius: 8px;
482
- }
483
-
484
- .broadcast-agent-avatar {
485
- width: 20px;
486
- height: 20px;
487
- border-radius: 4px;
488
- display: flex;
489
- align-items: center;
490
- justify-content: center;
491
- font-size: 8px;
492
- font-weight: 600;
493
- }
494
-
495
- .broadcast-input-wrapper {
496
- padding: 16px;
497
- }
498
-
499
- .broadcast-input {
500
- width: 100%;
501
- padding: 12px;
502
- border: 1px solid #e8e8e8;
503
- border-radius: 6px;
504
- font-size: 14px;
505
- font-family: inherit;
506
- resize: vertical;
507
- min-height: 80px;
508
- outline: none;
509
- transition: border-color 0.15s;
510
- }
511
-
512
- .broadcast-input:focus {
513
- border-color: #1264a3;
514
- }
515
-
516
- .broadcast-input:disabled {
517
- background: #fafafa;
518
- color: #888;
519
- }
520
-
521
- .broadcast-input-actions {
522
- display: flex;
523
- align-items: center;
524
- justify-content: space-between;
525
- margin-top: 12px;
526
- }
527
-
528
- .broadcast-templates-wrapper {
529
- position: relative;
530
- }
531
-
532
- .broadcast-template-btn {
533
- display: flex;
534
- align-items: center;
535
- gap: 6px;
536
- padding: 8px 12px;
537
- background: #fafafa;
538
- border: 1px solid #e8e8e8;
539
- border-radius: 6px;
540
- font-size: 12px;
541
- color: #666;
542
- cursor: pointer;
543
- font-family: inherit;
544
- transition: all 0.15s;
545
- }
546
-
547
- .broadcast-template-btn:hover {
548
- background: #f0f0f0;
549
- color: #333;
550
- }
551
-
552
- .broadcast-templates-menu {
553
- position: absolute;
554
- bottom: 100%;
555
- left: 0;
556
- width: 300px;
557
- margin-bottom: 4px;
558
- background: #ffffff;
559
- border: 1px solid #e8e8e8;
560
- border-radius: 8px;
561
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
562
- overflow: hidden;
563
- z-index: 10;
564
- }
565
-
566
- .broadcast-template-item {
567
- display: flex;
568
- flex-direction: column;
569
- align-items: flex-start;
570
- width: 100%;
571
- padding: 10px 12px;
572
- background: transparent;
573
- border: none;
574
- border-bottom: 1px solid #f0f0f0;
575
- cursor: pointer;
576
- font-family: inherit;
577
- text-align: left;
578
- transition: background 0.15s;
579
- }
580
-
581
- .broadcast-template-item:last-child {
582
- border-bottom: none;
583
- }
584
-
585
- .broadcast-template-item:hover {
586
- background: #f9f9f9;
587
- }
588
-
589
- .broadcast-template-label {
590
- font-size: 13px;
591
- font-weight: 500;
592
- color: #333;
593
- }
594
-
595
- .broadcast-template-preview {
596
- font-size: 11px;
597
- color: #888;
598
- margin-top: 2px;
599
- white-space: nowrap;
600
- overflow: hidden;
601
- text-overflow: ellipsis;
602
- max-width: 100%;
603
- }
604
-
605
- .broadcast-send-btn {
606
- display: flex;
607
- align-items: center;
608
- gap: 6px;
609
- padding: 10px 20px;
610
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
611
- border: none;
612
- border-radius: 6px;
613
- font-size: 13px;
614
- font-weight: 500;
615
- color: #ffffff;
616
- cursor: pointer;
617
- font-family: inherit;
618
- transition: all 0.15s;
619
- }
620
-
621
- .broadcast-send-btn:hover:not(:disabled) {
622
- opacity: 0.9;
623
- transform: translateY(-1px);
624
- }
625
-
626
- .broadcast-send-btn:disabled {
627
- opacity: 0.5;
628
- cursor: not-allowed;
629
- transform: none;
630
- }
631
-
632
- .broadcast-spinner {
633
- animation: spin 1s linear infinite;
634
- }
635
-
636
- @keyframes spin {
637
- from { transform: rotate(0deg); }
638
- to { transform: rotate(360deg); }
639
- }
640
-
641
- .broadcast-error {
642
- display: flex;
643
- align-items: center;
644
- gap: 8px;
645
- padding: 12px 16px;
646
- background: #fef2f2;
647
- border-top: 1px solid #fecaca;
648
- color: #dc2626;
649
- font-size: 13px;
650
- }
651
-
652
- /* Responsive styles */
653
- @media (max-width: 768px) {
654
- .broadcast-input-actions {
655
- gap: 8px;
656
- }
657
-
658
- .broadcast-send-btn {
659
- padding: 8px 12px;
660
- font-size: 12px;
661
- }
662
-
663
- .broadcast-template-btn {
664
- padding: 6px 10px;
665
- }
666
- }
667
-
668
- @media (max-width: 480px) {
669
- .broadcast-input-wrapper {
670
- padding: 12px;
671
- }
672
-
673
- .broadcast-send-btn {
674
- padding: 8px;
675
- min-width: auto;
676
- }
677
-
678
- .broadcast-send-text {
679
- display: none;
680
- }
681
-
682
- .broadcast-template-text {
683
- display: none;
684
- }
685
-
686
- .broadcast-template-btn {
687
- padding: 8px;
688
- }
689
- }
690
- `;