agent-relay 2.0.21 → 2.0.23

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 (412) 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 +31 -100
  4. package/package.json +22 -29
  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/cloud/dist/server.js +25 -4
  9. package/packages/cloud/package.json +6 -6
  10. package/packages/config/package.json +2 -2
  11. package/packages/continuity/package.json +1 -1
  12. package/packages/daemon/dist/orchestrator.js +21 -1
  13. package/packages/daemon/dist/router.d.ts +5 -0
  14. package/packages/daemon/dist/router.js +31 -0
  15. package/packages/daemon/dist/server.d.ts +5 -0
  16. package/packages/daemon/dist/server.js +131 -1
  17. package/packages/daemon/package.json +12 -12
  18. package/packages/hooks/package.json +4 -4
  19. package/packages/mcp/dist/client.d.ts +15 -0
  20. package/packages/mcp/dist/client.js +9 -0
  21. package/packages/mcp/dist/server.js +13 -1
  22. package/packages/mcp/dist/tools/index.d.ts +2 -0
  23. package/packages/mcp/dist/tools/index.js +2 -0
  24. package/packages/mcp/dist/tools/relay-connected.d.ts +17 -0
  25. package/packages/mcp/dist/tools/relay-connected.js +40 -0
  26. package/packages/mcp/dist/tools/relay-remove-agent.d.ts +20 -0
  27. package/packages/mcp/dist/tools/relay-remove-agent.js +50 -0
  28. package/packages/mcp/package.json +2 -2
  29. package/packages/memory/package.json +2 -2
  30. package/packages/policy/package.json +2 -2
  31. package/packages/protocol/dist/types.d.ts +46 -1
  32. package/packages/protocol/package.json +1 -1
  33. package/packages/resiliency/package.json +1 -1
  34. package/packages/sdk/dist/client.d.ts +22 -1
  35. package/packages/sdk/dist/client.js +31 -0
  36. package/packages/sdk/dist/protocol/index.d.ts +1 -1
  37. package/packages/sdk/dist/protocol/types.d.ts +35 -1
  38. package/packages/sdk/package.json +2 -2
  39. package/packages/spawner/package.json +1 -1
  40. package/packages/state/package.json +1 -1
  41. package/packages/storage/dist/adapter.d.ts +4 -0
  42. package/packages/storage/dist/sqlite-adapter.d.ts +10 -0
  43. package/packages/storage/dist/sqlite-adapter.js +26 -0
  44. package/packages/storage/package.json +2 -2
  45. package/packages/telemetry/package.json +1 -1
  46. package/packages/trajectory/package.json +2 -2
  47. package/packages/user-directory/package.json +2 -2
  48. package/packages/utils/dist/update-checker.js +4 -0
  49. package/packages/utils/package.json +1 -1
  50. package/packages/wrapper/package.json +6 -6
  51. package/deploy/workspace/codex.config.toml +0 -20
  52. package/deploy/workspace/entrypoint-browser.sh +0 -118
  53. package/deploy/workspace/entrypoint.sh +0 -612
  54. package/deploy/workspace/gh-credential-relay +0 -90
  55. package/deploy/workspace/gh-relay +0 -156
  56. package/deploy/workspace/git-credential-relay +0 -330
  57. package/deploy/workspace/git-credential-relay.test.sh +0 -230
  58. package/dist/dashboard/out/404.html +0 -1
  59. package/dist/dashboard/out/_next/static/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
  60. package/dist/dashboard/out/_next/static/7MZPqYkVGw3EGzVBkVmY9/_ssgManifest.js +0 -1
  61. package/dist/dashboard/out/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  62. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  63. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  64. package/dist/dashboard/out/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  65. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +0 -9
  66. package/dist/dashboard/out/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  67. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  68. package/dist/dashboard/out/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  69. package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  70. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  71. package/dist/dashboard/out/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  72. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  73. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  74. package/dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  75. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  76. package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  77. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  78. package/dist/dashboard/out/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  79. package/dist/dashboard/out/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  80. package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  81. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  82. package/dist/dashboard/out/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  83. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  84. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  85. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  86. package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  87. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  88. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  89. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  90. package/dist/dashboard/out/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  91. package/dist/dashboard/out/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  92. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  93. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  94. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  95. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  96. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +0 -1
  97. package/dist/dashboard/out/_next/static/css/6892f8422896ef7a.css +0 -1
  98. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  99. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  100. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  101. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  102. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  103. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +0 -45
  104. package/dist/dashboard/out/alt-logos/logo.svg +0 -38
  105. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  106. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  107. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  108. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  109. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  110. package/dist/dashboard/out/alt-logos/monogram-logo.svg +0 -38
  111. package/dist/dashboard/out/app/onboarding.html +0 -1
  112. package/dist/dashboard/out/app/onboarding.txt +0 -7
  113. package/dist/dashboard/out/app.html +0 -1
  114. package/dist/dashboard/out/app.txt +0 -7
  115. package/dist/dashboard/out/apple-icon.png +0 -0
  116. package/dist/dashboard/out/cloud/link.html +0 -1
  117. package/dist/dashboard/out/cloud/link.txt +0 -7
  118. package/dist/dashboard/out/complete-profile.html +0 -5
  119. package/dist/dashboard/out/complete-profile.txt +0 -7
  120. package/dist/dashboard/out/connect-repos.html +0 -1
  121. package/dist/dashboard/out/connect-repos.txt +0 -7
  122. package/dist/dashboard/out/history.html +0 -1
  123. package/dist/dashboard/out/history.txt +0 -7
  124. package/dist/dashboard/out/index.html +0 -1
  125. package/dist/dashboard/out/index.txt +0 -7
  126. package/dist/dashboard/out/login.html +0 -5
  127. package/dist/dashboard/out/login.txt +0 -7
  128. package/dist/dashboard/out/metrics.html +0 -1
  129. package/dist/dashboard/out/metrics.txt +0 -7
  130. package/dist/dashboard/out/pricing.html +0 -13
  131. package/dist/dashboard/out/pricing.txt +0 -7
  132. package/dist/dashboard/out/providers/setup/claude.html +0 -1
  133. package/dist/dashboard/out/providers/setup/claude.txt +0 -8
  134. package/dist/dashboard/out/providers/setup/codex.html +0 -1
  135. package/dist/dashboard/out/providers/setup/codex.txt +0 -8
  136. package/dist/dashboard/out/providers/setup/cursor.html +0 -1
  137. package/dist/dashboard/out/providers/setup/cursor.txt +0 -8
  138. package/dist/dashboard/out/providers.html +0 -1
  139. package/dist/dashboard/out/providers.txt +0 -7
  140. package/dist/dashboard/out/signup.html +0 -6
  141. package/dist/dashboard/out/signup.txt +0 -7
  142. package/dist/src/dashboard-server/index.d.ts +0 -8
  143. package/dist/src/dashboard-server/index.js +0 -8
  144. package/packages/dashboard/README.md +0 -48
  145. package/packages/dashboard/dist/health-worker-manager.d.ts +0 -62
  146. package/packages/dashboard/dist/health-worker-manager.js +0 -144
  147. package/packages/dashboard/dist/health-worker.d.ts +0 -9
  148. package/packages/dashboard/dist/health-worker.js +0 -79
  149. package/packages/dashboard/dist/index.d.ts +0 -20
  150. package/packages/dashboard/dist/index.js +0 -19
  151. package/packages/dashboard/dist/metrics.d.ts +0 -105
  152. package/packages/dashboard/dist/metrics.js +0 -193
  153. package/packages/dashboard/dist/needs-attention.d.ts +0 -24
  154. package/packages/dashboard/dist/needs-attention.js +0 -78
  155. package/packages/dashboard/dist/server.d.ts +0 -25
  156. package/packages/dashboard/dist/server.js +0 -5270
  157. package/packages/dashboard/dist/start.d.ts +0 -6
  158. package/packages/dashboard/dist/start.js +0 -13
  159. package/packages/dashboard/dist/types/threading.d.ts +0 -8
  160. package/packages/dashboard/dist/types/threading.js +0 -2
  161. package/packages/dashboard/dist/user-bridge.d.ts +0 -154
  162. package/packages/dashboard/dist/user-bridge.js +0 -372
  163. package/packages/dashboard/package.json +0 -65
  164. package/packages/dashboard/ui/app/app/onboarding/page.tsx +0 -394
  165. package/packages/dashboard/ui/app/app/page.tsx +0 -667
  166. package/packages/dashboard/ui/app/apple-icon.png +0 -0
  167. package/packages/dashboard/ui/app/cloud/link/page.tsx +0 -464
  168. package/packages/dashboard/ui/app/complete-profile/page.tsx +0 -204
  169. package/packages/dashboard/ui/app/connect-repos/page.tsx +0 -410
  170. package/packages/dashboard/ui/app/favicon.png +0 -0
  171. package/packages/dashboard/ui/app/globals.css +0 -59
  172. package/packages/dashboard/ui/app/history/page.tsx +0 -658
  173. package/packages/dashboard/ui/app/layout.tsx +0 -25
  174. package/packages/dashboard/ui/app/login/page.tsx +0 -424
  175. package/packages/dashboard/ui/app/metrics/page.tsx +0 -751
  176. package/packages/dashboard/ui/app/page.tsx +0 -59
  177. package/packages/dashboard/ui/app/pricing/page.tsx +0 -7
  178. package/packages/dashboard/ui/app/providers/page.tsx +0 -193
  179. package/packages/dashboard/ui/app/providers/setup/[provider]/ProviderSetupClient.tsx +0 -148
  180. package/packages/dashboard/ui/app/providers/setup/[provider]/constants.ts +0 -35
  181. package/packages/dashboard/ui/app/providers/setup/[provider]/page.tsx +0 -42
  182. package/packages/dashboard/ui/app/signup/page.tsx +0 -533
  183. package/packages/dashboard/ui/index.ts +0 -49
  184. package/packages/dashboard/ui/landing/LandingPage.tsx +0 -713
  185. package/packages/dashboard/ui/landing/PricingPage.tsx +0 -559
  186. package/packages/dashboard/ui/landing/index.ts +0 -6
  187. package/packages/dashboard/ui/landing/styles.css +0 -2850
  188. package/packages/dashboard/ui/lib/agent-merge.ts +0 -35
  189. package/packages/dashboard/ui/lib/api.ts +0 -1155
  190. package/packages/dashboard/ui/lib/cloudApi.ts +0 -877
  191. package/packages/dashboard/ui/lib/colors.ts +0 -218
  192. package/packages/dashboard/ui/lib/hierarchy.ts +0 -242
  193. package/packages/dashboard/ui/lib/stuckDetection.ts +0 -142
  194. package/packages/dashboard/ui/next-env.d.ts +0 -5
  195. package/packages/dashboard/ui/next.config.js +0 -41
  196. package/packages/dashboard/ui/package-lock.json +0 -2882
  197. package/packages/dashboard/ui/package.json +0 -33
  198. package/packages/dashboard/ui/postcss.config.js +0 -5
  199. package/packages/dashboard/ui/react-components/ActivityFeed.tsx +0 -216
  200. package/packages/dashboard/ui/react-components/AddWorkspaceModal.tsx +0 -170
  201. package/packages/dashboard/ui/react-components/AgentCard.tsx +0 -587
  202. package/packages/dashboard/ui/react-components/AgentList.tsx +0 -411
  203. package/packages/dashboard/ui/react-components/AgentProfilePanel.tsx +0 -564
  204. package/packages/dashboard/ui/react-components/App.tsx +0 -3033
  205. package/packages/dashboard/ui/react-components/BillingPanel.tsx +0 -922
  206. package/packages/dashboard/ui/react-components/BillingResult.tsx +0 -447
  207. package/packages/dashboard/ui/react-components/BroadcastComposer.tsx +0 -690
  208. package/packages/dashboard/ui/react-components/ChannelAdminPanel.tsx +0 -773
  209. package/packages/dashboard/ui/react-components/ChannelBrowser.tsx +0 -385
  210. package/packages/dashboard/ui/react-components/ChannelChat.tsx +0 -261
  211. package/packages/dashboard/ui/react-components/ChannelSidebar.tsx +0 -399
  212. package/packages/dashboard/ui/react-components/CloudSessionProvider.tsx +0 -130
  213. package/packages/dashboard/ui/react-components/CommandPalette.tsx +0 -815
  214. package/packages/dashboard/ui/react-components/ConfirmationDialog.tsx +0 -133
  215. package/packages/dashboard/ui/react-components/ConversationHistory.tsx +0 -518
  216. package/packages/dashboard/ui/react-components/CoordinatorPanel.tsx +0 -944
  217. package/packages/dashboard/ui/react-components/DecisionQueue.tsx +0 -717
  218. package/packages/dashboard/ui/react-components/DirectMessageView.tsx +0 -164
  219. package/packages/dashboard/ui/react-components/FileAutocomplete.tsx +0 -368
  220. package/packages/dashboard/ui/react-components/FleetOverview.tsx +0 -278
  221. package/packages/dashboard/ui/react-components/LogViewer.tsx +0 -310
  222. package/packages/dashboard/ui/react-components/LogViewerPanel.tsx +0 -482
  223. package/packages/dashboard/ui/react-components/Logo.tsx +0 -284
  224. package/packages/dashboard/ui/react-components/MentionAutocomplete.tsx +0 -384
  225. package/packages/dashboard/ui/react-components/MessageComposer.tsx +0 -457
  226. package/packages/dashboard/ui/react-components/MessageList.tsx +0 -649
  227. package/packages/dashboard/ui/react-components/MessageSenderName.tsx +0 -91
  228. package/packages/dashboard/ui/react-components/MessageStatusIndicator.tsx +0 -142
  229. package/packages/dashboard/ui/react-components/NewConversationModal.tsx +0 -400
  230. package/packages/dashboard/ui/react-components/NotificationToast.tsx +0 -488
  231. package/packages/dashboard/ui/react-components/OnlineUsersIndicator.tsx +0 -164
  232. package/packages/dashboard/ui/react-components/Pagination.tsx +0 -124
  233. package/packages/dashboard/ui/react-components/PricingPlans.tsx +0 -386
  234. package/packages/dashboard/ui/react-components/ProjectList.tsx +0 -625
  235. package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +0 -853
  236. package/packages/dashboard/ui/react-components/ProviderConnectionList.tsx +0 -378
  237. package/packages/dashboard/ui/react-components/ProvisioningProgress.tsx +0 -730
  238. package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +0 -549
  239. package/packages/dashboard/ui/react-components/ServerCard.tsx +0 -202
  240. package/packages/dashboard/ui/react-components/SessionExpiredModal.tsx +0 -128
  241. package/packages/dashboard/ui/react-components/SpawnModal.tsx +0 -804
  242. package/packages/dashboard/ui/react-components/TaskAssignmentUI.tsx +0 -375
  243. package/packages/dashboard/ui/react-components/TerminalProviderSetup.tsx +0 -608
  244. package/packages/dashboard/ui/react-components/ThemeProvider.tsx +0 -325
  245. package/packages/dashboard/ui/react-components/ThinkingIndicator.tsx +0 -231
  246. package/packages/dashboard/ui/react-components/ThreadList.tsx +0 -198
  247. package/packages/dashboard/ui/react-components/ThreadPanel.tsx +0 -346
  248. package/packages/dashboard/ui/react-components/TrajectoryViewer.tsx +0 -698
  249. package/packages/dashboard/ui/react-components/TypingIndicator.tsx +0 -69
  250. package/packages/dashboard/ui/react-components/UsageBanner.tsx +0 -231
  251. package/packages/dashboard/ui/react-components/UserProfilePanel.tsx +0 -233
  252. package/packages/dashboard/ui/react-components/WorkspaceContext.tsx +0 -107
  253. package/packages/dashboard/ui/react-components/WorkspaceSelector.tsx +0 -234
  254. package/packages/dashboard/ui/react-components/WorkspaceStatusIndicator.tsx +0 -370
  255. package/packages/dashboard/ui/react-components/XTermInteractive.tsx +0 -510
  256. package/packages/dashboard/ui/react-components/XTermLogViewer.tsx +0 -719
  257. package/packages/dashboard/ui/react-components/channels/ChannelDialogs.tsx +0 -1411
  258. package/packages/dashboard/ui/react-components/channels/ChannelHeader.tsx +0 -317
  259. package/packages/dashboard/ui/react-components/channels/ChannelMessageList.tsx +0 -463
  260. package/packages/dashboard/ui/react-components/channels/ChannelViewV1.tsx +0 -146
  261. package/packages/dashboard/ui/react-components/channels/MessageInput.tsx +0 -288
  262. package/packages/dashboard/ui/react-components/channels/SearchInput.tsx +0 -172
  263. package/packages/dashboard/ui/react-components/channels/SearchResults.tsx +0 -336
  264. package/packages/dashboard/ui/react-components/channels/api.ts +0 -697
  265. package/packages/dashboard/ui/react-components/channels/index.ts +0 -76
  266. package/packages/dashboard/ui/react-components/channels/mockApi.ts +0 -344
  267. package/packages/dashboard/ui/react-components/channels/types.ts +0 -566
  268. package/packages/dashboard/ui/react-components/hooks/index.ts +0 -57
  269. package/packages/dashboard/ui/react-components/hooks/useAgentLogs.ts +0 -394
  270. package/packages/dashboard/ui/react-components/hooks/useAgents.ts +0 -127
  271. package/packages/dashboard/ui/react-components/hooks/useBroadcastDedup.ts +0 -86
  272. package/packages/dashboard/ui/react-components/hooks/useChannelAdmin.ts +0 -329
  273. package/packages/dashboard/ui/react-components/hooks/useChannelBrowser.ts +0 -239
  274. package/packages/dashboard/ui/react-components/hooks/useChannelCommands.ts +0 -138
  275. package/packages/dashboard/ui/react-components/hooks/useChannels.ts +0 -328
  276. package/packages/dashboard/ui/react-components/hooks/useDebounce.ts +0 -29
  277. package/packages/dashboard/ui/react-components/hooks/useDirectMessage.ts +0 -141
  278. package/packages/dashboard/ui/react-components/hooks/useMessages.ts +0 -309
  279. package/packages/dashboard/ui/react-components/hooks/useOrchestrator.ts +0 -364
  280. package/packages/dashboard/ui/react-components/hooks/usePinnedAgents.ts +0 -140
  281. package/packages/dashboard/ui/react-components/hooks/usePresence.ts +0 -340
  282. package/packages/dashboard/ui/react-components/hooks/useRecentRepos.ts +0 -130
  283. package/packages/dashboard/ui/react-components/hooks/useSession.ts +0 -209
  284. package/packages/dashboard/ui/react-components/hooks/useTrajectory.ts +0 -265
  285. package/packages/dashboard/ui/react-components/hooks/useWebSocket.ts +0 -169
  286. package/packages/dashboard/ui/react-components/hooks/useWorkspaceMembers.ts +0 -120
  287. package/packages/dashboard/ui/react-components/hooks/useWorkspaceRepos.ts +0 -73
  288. package/packages/dashboard/ui/react-components/hooks/useWorkspaceStatus.ts +0 -237
  289. package/packages/dashboard/ui/react-components/index.ts +0 -81
  290. package/packages/dashboard/ui/react-components/layout/Header.tsx +0 -355
  291. package/packages/dashboard/ui/react-components/layout/RepoContextHeader.tsx +0 -361
  292. package/packages/dashboard/ui/react-components/layout/Sidebar.archive.test.tsx +0 -126
  293. package/packages/dashboard/ui/react-components/layout/Sidebar.test.tsx +0 -691
  294. package/packages/dashboard/ui/react-components/layout/Sidebar.tsx +0 -930
  295. package/packages/dashboard/ui/react-components/layout/index.ts +0 -7
  296. package/packages/dashboard/ui/react-components/settings/BillingSettingsPanel.tsx +0 -564
  297. package/packages/dashboard/ui/react-components/settings/SettingsPage.tsx +0 -544
  298. package/packages/dashboard/ui/react-components/settings/TeamSettingsPanel.tsx +0 -560
  299. package/packages/dashboard/ui/react-components/settings/WorkspaceSettingsPanel.tsx +0 -1386
  300. package/packages/dashboard/ui/react-components/settings/index.ts +0 -11
  301. package/packages/dashboard/ui/react-components/settings/types.ts +0 -53
  302. package/packages/dashboard/ui/react-components/utils/messageFormatting.tsx +0 -370
  303. package/packages/dashboard/ui/tailwind.config.js +0 -148
  304. package/packages/dashboard/ui/types/index.ts +0 -304
  305. package/packages/dashboard/ui/types/threading.ts +0 -7
  306. package/packages/dashboard/ui-dist/404.html +0 -1
  307. package/packages/dashboard/ui-dist/_next/static/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
  308. package/packages/dashboard/ui-dist/_next/static/7MZPqYkVGw3EGzVBkVmY9/_ssgManifest.js +0 -1
  309. package/packages/dashboard/ui-dist/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  310. package/packages/dashboard/ui-dist/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  311. package/packages/dashboard/ui-dist/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  312. package/packages/dashboard/ui-dist/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  313. package/packages/dashboard/ui-dist/_next/static/chunks/532-bace199897eeab37.js +0 -9
  314. package/packages/dashboard/ui-dist/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  315. package/packages/dashboard/ui-dist/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  316. package/packages/dashboard/ui-dist/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  317. package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  318. package/packages/dashboard/ui-dist/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  319. package/packages/dashboard/ui-dist/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  320. package/packages/dashboard/ui-dist/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  321. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  322. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  323. package/packages/dashboard/ui-dist/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  324. package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  325. package/packages/dashboard/ui-dist/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  326. package/packages/dashboard/ui-dist/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  327. package/packages/dashboard/ui-dist/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  328. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  329. package/packages/dashboard/ui-dist/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  330. package/packages/dashboard/ui-dist/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  331. package/packages/dashboard/ui-dist/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  332. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  333. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  334. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  335. package/packages/dashboard/ui-dist/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  336. package/packages/dashboard/ui-dist/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  337. package/packages/dashboard/ui-dist/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  338. package/packages/dashboard/ui-dist/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  339. package/packages/dashboard/ui-dist/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  340. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  341. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  342. package/packages/dashboard/ui-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  343. package/packages/dashboard/ui-dist/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  344. package/packages/dashboard/ui-dist/_next/static/css/4034f236dd1a3178.css +0 -1
  345. package/packages/dashboard/ui-dist/_next/static/css/6892f8422896ef7a.css +0 -1
  346. package/packages/dashboard/ui-dist/_next/static/iJ3Uiz3IrqUJL7IxKZHiV/_buildManifest.js +0 -1
  347. package/packages/dashboard/ui-dist/_next/static/iJ3Uiz3IrqUJL7IxKZHiV/_ssgManifest.js +0 -1
  348. package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_buildManifest.js +0 -1
  349. package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_ssgManifest.js +0 -1
  350. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-128.png +0 -0
  351. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-256.png +0 -0
  352. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-32.png +0 -0
  353. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-512.png +0 -0
  354. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-64.png +0 -0
  355. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo.svg +0 -45
  356. package/packages/dashboard/ui-dist/alt-logos/logo.svg +0 -38
  357. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-128.png +0 -0
  358. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-256.png +0 -0
  359. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-32.png +0 -0
  360. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-512.png +0 -0
  361. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-64.png +0 -0
  362. package/packages/dashboard/ui-dist/alt-logos/monogram-logo.svg +0 -38
  363. package/packages/dashboard/ui-dist/app/onboarding.html +0 -1
  364. package/packages/dashboard/ui-dist/app/onboarding.txt +0 -7
  365. package/packages/dashboard/ui-dist/app.html +0 -1
  366. package/packages/dashboard/ui-dist/app.txt +0 -7
  367. package/packages/dashboard/ui-dist/apple-icon.png +0 -0
  368. package/packages/dashboard/ui-dist/cloud/link.html +0 -1
  369. package/packages/dashboard/ui-dist/cloud/link.txt +0 -7
  370. package/packages/dashboard/ui-dist/complete-profile.html +0 -5
  371. package/packages/dashboard/ui-dist/complete-profile.txt +0 -7
  372. package/packages/dashboard/ui-dist/connect-repos.html +0 -1
  373. package/packages/dashboard/ui-dist/connect-repos.txt +0 -7
  374. package/packages/dashboard/ui-dist/history.html +0 -1
  375. package/packages/dashboard/ui-dist/history.txt +0 -7
  376. package/packages/dashboard/ui-dist/index.html +0 -1
  377. package/packages/dashboard/ui-dist/index.txt +0 -7
  378. package/packages/dashboard/ui-dist/login.html +0 -5
  379. package/packages/dashboard/ui-dist/login.txt +0 -7
  380. package/packages/dashboard/ui-dist/metrics.html +0 -1
  381. package/packages/dashboard/ui-dist/metrics.txt +0 -7
  382. package/packages/dashboard/ui-dist/pricing.html +0 -13
  383. package/packages/dashboard/ui-dist/pricing.txt +0 -7
  384. package/packages/dashboard/ui-dist/providers/setup/claude.html +0 -1
  385. package/packages/dashboard/ui-dist/providers/setup/claude.txt +0 -8
  386. package/packages/dashboard/ui-dist/providers/setup/codex.html +0 -1
  387. package/packages/dashboard/ui-dist/providers/setup/codex.txt +0 -8
  388. package/packages/dashboard/ui-dist/providers/setup/cursor.html +0 -1
  389. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +0 -8
  390. package/packages/dashboard/ui-dist/providers.html +0 -1
  391. package/packages/dashboard/ui-dist/providers.txt +0 -7
  392. package/packages/dashboard/ui-dist/signup.html +0 -6
  393. package/packages/dashboard/ui-dist/signup.txt +0 -7
  394. package/packages/dashboard-server/dist/health-worker-manager.d.ts +0 -62
  395. package/packages/dashboard-server/dist/health-worker-manager.js +0 -144
  396. package/packages/dashboard-server/dist/health-worker.d.ts +0 -9
  397. package/packages/dashboard-server/dist/health-worker.js +0 -79
  398. package/packages/dashboard-server/dist/index.d.ts +0 -18
  399. package/packages/dashboard-server/dist/index.js +0 -17
  400. package/packages/dashboard-server/dist/metrics.d.ts +0 -105
  401. package/packages/dashboard-server/dist/metrics.js +0 -193
  402. package/packages/dashboard-server/dist/needs-attention.d.ts +0 -24
  403. package/packages/dashboard-server/dist/needs-attention.js +0 -78
  404. package/packages/dashboard-server/dist/server.d.ts +0 -25
  405. package/packages/dashboard-server/dist/server.js +0 -5158
  406. package/packages/dashboard-server/dist/start.d.ts +0 -6
  407. package/packages/dashboard-server/dist/start.js +0 -13
  408. package/packages/dashboard-server/dist/types/threading.d.ts +0 -8
  409. package/packages/dashboard-server/dist/types/threading.js +0 -2
  410. package/packages/dashboard-server/dist/user-bridge.d.ts +0 -158
  411. package/packages/dashboard-server/dist/user-bridge.js +0 -390
  412. package/packages/dashboard-server/package.json +0 -55
@@ -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
- `;