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,325 +0,0 @@
1
- /**
2
- * ThemeProvider Component
3
- *
4
- * Provides theme context for light/dark mode support.
5
- * Handles system preference detection and persistence.
6
- */
7
-
8
- import React, { createContext, useContext, useState, useEffect, useCallback, useMemo } from 'react';
9
-
10
- export type Theme = 'light' | 'dark' | 'system';
11
- export type ResolvedTheme = 'light' | 'dark';
12
-
13
- export interface ThemeContextValue {
14
- theme: Theme;
15
- resolvedTheme: ResolvedTheme;
16
- setTheme: (theme: Theme) => void;
17
- toggleTheme: () => void;
18
- }
19
-
20
- const ThemeContext = createContext<ThemeContextValue | null>(null);
21
-
22
- export interface ThemeProviderProps {
23
- children: React.ReactNode;
24
- defaultTheme?: Theme;
25
- storageKey?: string;
26
- }
27
-
28
- export function ThemeProvider({
29
- children,
30
- defaultTheme = 'system',
31
- storageKey = 'dashboard-theme',
32
- }: ThemeProviderProps) {
33
- const [theme, setThemeState] = useState<Theme>(() => {
34
- // Try to get from storage
35
- if (typeof window !== 'undefined') {
36
- const stored = localStorage.getItem(storageKey);
37
- if (stored === 'light' || stored === 'dark' || stored === 'system') {
38
- return stored;
39
- }
40
- }
41
- return defaultTheme;
42
- });
43
-
44
- const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(() => {
45
- if (typeof window !== 'undefined') {
46
- return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
47
- }
48
- return 'light';
49
- });
50
-
51
- // Listen for system theme changes
52
- useEffect(() => {
53
- if (typeof window === 'undefined') return;
54
-
55
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
56
- const handleChange = (e: MediaQueryListEvent) => {
57
- setSystemTheme(e.matches ? 'dark' : 'light');
58
- };
59
-
60
- mediaQuery.addEventListener('change', handleChange);
61
- return () => mediaQuery.removeEventListener('change', handleChange);
62
- }, []);
63
-
64
- // Resolve theme
65
- const resolvedTheme: ResolvedTheme = theme === 'system' ? systemTheme : theme;
66
-
67
- // Apply theme to document
68
- useEffect(() => {
69
- if (typeof document === 'undefined') return;
70
-
71
- const root = document.documentElement;
72
- root.classList.remove('theme-light', 'theme-dark');
73
- root.classList.add(`theme-${resolvedTheme}`);
74
- root.style.colorScheme = resolvedTheme;
75
- }, [resolvedTheme]);
76
-
77
- // Set theme with persistence
78
- const setTheme = useCallback(
79
- (newTheme: Theme) => {
80
- setThemeState(newTheme);
81
- if (typeof localStorage !== 'undefined') {
82
- localStorage.setItem(storageKey, newTheme);
83
- }
84
- },
85
- [storageKey]
86
- );
87
-
88
- // Toggle between light and dark
89
- const toggleTheme = useCallback(() => {
90
- setTheme(resolvedTheme === 'light' ? 'dark' : 'light');
91
- }, [resolvedTheme, setTheme]);
92
-
93
- const value = useMemo(
94
- () => ({ theme, resolvedTheme, setTheme, toggleTheme }),
95
- [theme, resolvedTheme, setTheme, toggleTheme]
96
- );
97
-
98
- return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;
99
- }
100
-
101
- export function useTheme() {
102
- const context = useContext(ThemeContext);
103
- if (!context) {
104
- throw new Error('useTheme must be used within a ThemeProvider');
105
- }
106
- return context;
107
- }
108
-
109
- /**
110
- * CSS variables for theming
111
- * Include these in your global styles
112
- */
113
- export const themeStyles = `
114
- /* Light Theme (Default) */
115
- :root,
116
- .theme-light {
117
- /* Backgrounds */
118
- --bg-primary: #f5f5f5;
119
- --bg-secondary: #ffffff;
120
- --bg-tertiary: #fafafa;
121
- --bg-hover: #f0f0f0;
122
- --bg-active: #e8e8e8;
123
- --bg-elevated: #ffffff;
124
- --bg-overlay: rgba(0, 0, 0, 0.5);
125
-
126
- /* Text */
127
- --text-primary: #1a1a1a;
128
- --text-secondary: #666666;
129
- --text-muted: #888888;
130
- --text-inverse: #ffffff;
131
-
132
- /* Borders */
133
- --border-default: #e8e8e8;
134
- --border-light: #f0f0f0;
135
- --border-dark: #d0d0d0;
136
-
137
- /* Accent */
138
- --accent-primary: #1264a3;
139
- --accent-hover: #0d4f82;
140
- --accent-light: #e8f4fd;
141
-
142
- /* Status */
143
- --status-success: #10b981;
144
- --status-success-light: #dcfce7;
145
- --status-warning: #f59e0b;
146
- --status-warning-light: #fef3c7;
147
- --status-error: #ef4444;
148
- --status-error-light: #fee2e2;
149
- --status-info: #3b82f6;
150
- --status-info-light: #dbeafe;
151
-
152
- /* Shadows */
153
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
154
- --shadow-md: 0 1px 3px rgba(0, 0, 0, 0.1);
155
- --shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.1);
156
- --shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.1);
157
-
158
- /* Scrollbar */
159
- --scrollbar-track: transparent;
160
- --scrollbar-thumb: #d0d0d0;
161
- --scrollbar-thumb-hover: #888888;
162
- }
163
-
164
- /* Dark Theme */
165
- .theme-dark {
166
- /* Backgrounds */
167
- --bg-primary: #1a1a1a;
168
- --bg-secondary: #252525;
169
- --bg-tertiary: #2a2a2a;
170
- --bg-hover: #333333;
171
- --bg-active: #3a3a3a;
172
- --bg-elevated: #2f2f2f;
173
- --bg-overlay: rgba(0, 0, 0, 0.7);
174
-
175
- /* Text */
176
- --text-primary: #f0f0f0;
177
- --text-secondary: #a0a0a0;
178
- --text-muted: #707070;
179
- --text-inverse: #1a1a1a;
180
-
181
- /* Borders */
182
- --border-default: #3a3a3a;
183
- --border-light: #333333;
184
- --border-dark: #4a4a4a;
185
-
186
- /* Accent */
187
- --accent-primary: #4a9eda;
188
- --accent-hover: #6bb3e8;
189
- --accent-light: #1e3a5f;
190
-
191
- /* Status */
192
- --status-success: #34d399;
193
- --status-success-light: #064e3b;
194
- --status-warning: #fbbf24;
195
- --status-warning-light: #78350f;
196
- --status-error: #f87171;
197
- --status-error-light: #7f1d1d;
198
- --status-info: #60a5fa;
199
- --status-info-light: #1e3a8a;
200
-
201
- /* Shadows */
202
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
203
- --shadow-md: 0 1px 3px rgba(0, 0, 0, 0.4);
204
- --shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.4);
205
- --shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.5);
206
-
207
- /* Scrollbar */
208
- --scrollbar-track: #2a2a2a;
209
- --scrollbar-thumb: #4a4a4a;
210
- --scrollbar-thumb-hover: #5a5a5a;
211
- }
212
-
213
- /* Apply theme variables */
214
- body {
215
- background: var(--bg-primary);
216
- color: var(--text-primary);
217
- }
218
-
219
- /* Scrollbar theming */
220
- ::-webkit-scrollbar {
221
- width: 8px;
222
- height: 8px;
223
- }
224
-
225
- ::-webkit-scrollbar-track {
226
- background: var(--scrollbar-track);
227
- }
228
-
229
- ::-webkit-scrollbar-thumb {
230
- background: var(--scrollbar-thumb);
231
- border-radius: 4px;
232
- }
233
-
234
- ::-webkit-scrollbar-thumb:hover {
235
- background: var(--scrollbar-thumb-hover);
236
- }
237
-
238
- /* Selection theming */
239
- ::selection {
240
- background: var(--accent-light);
241
- color: var(--accent-primary);
242
- }
243
-
244
- /* Transition for theme changes */
245
- html.theme-transitioning,
246
- html.theme-transitioning *,
247
- html.theme-transitioning *::before,
248
- html.theme-transitioning *::after {
249
- transition: background-color 0.3s ease, border-color 0.3s ease, color 0.15s ease !important;
250
- }
251
- `;
252
-
253
- /**
254
- * ThemeToggle Component
255
- * A simple button to toggle between themes
256
- */
257
- export interface ThemeToggleProps {
258
- showLabel?: boolean;
259
- className?: string;
260
- }
261
-
262
- export function ThemeToggle({ showLabel = false, className = '' }: ThemeToggleProps) {
263
- const { resolvedTheme, toggleTheme } = useTheme();
264
-
265
- return (
266
- <button
267
- className={`theme-toggle ${className}`}
268
- onClick={toggleTheme}
269
- aria-label={`Switch to ${resolvedTheme === 'light' ? 'dark' : 'light'} mode`}
270
- >
271
- {resolvedTheme === 'light' ? <MoonIcon /> : <SunIcon />}
272
- {showLabel && <span>{resolvedTheme === 'light' ? 'Dark' : 'Light'} mode</span>}
273
- </button>
274
- );
275
- }
276
-
277
- function SunIcon() {
278
- return (
279
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
280
- <circle cx="12" cy="12" r="5" />
281
- <line x1="12" y1="1" x2="12" y2="3" />
282
- <line x1="12" y1="21" x2="12" y2="23" />
283
- <line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
284
- <line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
285
- <line x1="1" y1="12" x2="3" y2="12" />
286
- <line x1="21" y1="12" x2="23" y2="12" />
287
- <line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
288
- <line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
289
- </svg>
290
- );
291
- }
292
-
293
- function MoonIcon() {
294
- return (
295
- <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
296
- <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" />
297
- </svg>
298
- );
299
- }
300
-
301
- export const themeToggleStyles = `
302
- .theme-toggle {
303
- display: flex;
304
- align-items: center;
305
- gap: 8px;
306
- padding: 8px;
307
- background: var(--bg-tertiary);
308
- border: 1px solid var(--border-default);
309
- border-radius: 8px;
310
- color: var(--text-secondary);
311
- cursor: pointer;
312
- font-family: inherit;
313
- font-size: 13px;
314
- transition: all 0.15s;
315
- }
316
-
317
- .theme-toggle:hover {
318
- background: var(--bg-hover);
319
- color: var(--text-primary);
320
- }
321
-
322
- .theme-toggle svg {
323
- flex-shrink: 0;
324
- }
325
- `;
@@ -1,231 +0,0 @@
1
- /**
2
- * ThinkingIndicator Component
3
- *
4
- * Displays an animated indicator when an agent is processing/thinking.
5
- * Shows a pulsing animation similar to "typing..." indicators in chat apps.
6
- */
7
-
8
- import React, { useEffect, useState } from 'react';
9
-
10
- export interface ThinkingIndicatorProps {
11
- /** Whether the agent is currently processing */
12
- isProcessing: boolean;
13
- /** When processing started (for elapsed time display) */
14
- processingStartedAt?: number;
15
- /** Size variant */
16
- size?: 'small' | 'medium' | 'large';
17
- /** Show elapsed time */
18
- showElapsed?: boolean;
19
- /** Show label text */
20
- showLabel?: boolean;
21
- }
22
-
23
- export function ThinkingIndicator({
24
- isProcessing,
25
- processingStartedAt,
26
- size = 'medium',
27
- showElapsed = false,
28
- showLabel = false,
29
- }: ThinkingIndicatorProps) {
30
- const [elapsedMs, setElapsedMs] = useState(0);
31
-
32
- // Update elapsed time every second when processing
33
- useEffect(() => {
34
- if (!isProcessing || !processingStartedAt) {
35
- setElapsedMs(0);
36
- return;
37
- }
38
-
39
- const updateElapsed = () => {
40
- setElapsedMs(Date.now() - processingStartedAt);
41
- };
42
-
43
- updateElapsed();
44
- const interval = setInterval(updateElapsed, 1000);
45
- return () => clearInterval(interval);
46
- }, [isProcessing, processingStartedAt]);
47
-
48
- if (!isProcessing) {
49
- return null;
50
- }
51
-
52
- const formatElapsed = (ms: number): string => {
53
- const seconds = Math.floor(ms / 1000);
54
- if (seconds < 60) return `${seconds}s`;
55
- const minutes = Math.floor(seconds / 60);
56
- return `${minutes}m ${seconds % 60}s`;
57
- };
58
-
59
- const dotSizeClasses: Record<string, string> = {
60
- small: 'w-1 h-1',
61
- medium: 'w-1.5 h-1.5',
62
- large: 'w-2 h-2',
63
- };
64
-
65
- const gapClasses: Record<string, string> = {
66
- small: 'gap-0.5',
67
- medium: 'gap-1',
68
- large: 'gap-1.5',
69
- };
70
-
71
- return (
72
- <span
73
- className="inline-flex items-center gap-1.5 text-accent-purple"
74
- title="Processing..."
75
- >
76
- <span className={`inline-flex items-center ${gapClasses[size]}`}>
77
- <span
78
- className={`${dotSizeClasses[size]} rounded-full bg-accent-purple animate-bounce`}
79
- style={{ animationDelay: '0ms', animationDuration: '800ms' }}
80
- />
81
- <span
82
- className={`${dotSizeClasses[size]} rounded-full bg-accent-purple animate-bounce`}
83
- style={{ animationDelay: '150ms', animationDuration: '800ms' }}
84
- />
85
- <span
86
- className={`${dotSizeClasses[size]} rounded-full bg-accent-purple animate-bounce`}
87
- style={{ animationDelay: '300ms', animationDuration: '800ms' }}
88
- />
89
- </span>
90
- {showLabel && (
91
- <span className="text-xs font-medium text-accent-purple">thinking</span>
92
- )}
93
- {showElapsed && elapsedMs > 0 && (
94
- <span className="text-xs text-accent-purple/70">{formatElapsed(elapsedMs)}</span>
95
- )}
96
- </span>
97
- );
98
- }
99
-
100
- /**
101
- * Inline thinking indicator for compact views
102
- */
103
- export function ThinkingDot({ isProcessing }: { isProcessing: boolean }) {
104
- if (!isProcessing) return null;
105
-
106
- return (
107
- <span className="thinking-dot-inline" title="Processing...">
108
- <span className="thinking-dot-pulse" />
109
- </span>
110
- );
111
- }
112
-
113
- /**
114
- * CSS styles for the thinking indicator
115
- */
116
- export const thinkingIndicatorStyles = `
117
- .thinking-indicator {
118
- display: inline-flex;
119
- align-items: center;
120
- gap: 6px;
121
- }
122
-
123
- .thinking-dots {
124
- display: inline-flex;
125
- align-items: center;
126
- gap: 3px;
127
- }
128
-
129
- .thinking-dot {
130
- width: 6px;
131
- height: 6px;
132
- border-radius: 50%;
133
- background: #6366f1;
134
- animation: thinking-bounce 1.4s ease-in-out infinite;
135
- }
136
-
137
- .thinking-dot:nth-child(1) {
138
- animation-delay: 0s;
139
- }
140
-
141
- .thinking-dot:nth-child(2) {
142
- animation-delay: 0.2s;
143
- }
144
-
145
- .thinking-dot:nth-child(3) {
146
- animation-delay: 0.4s;
147
- }
148
-
149
- @keyframes thinking-bounce {
150
- 0%, 60%, 100% {
151
- transform: translateY(0);
152
- opacity: 0.4;
153
- }
154
- 30% {
155
- transform: translateY(-4px);
156
- opacity: 1;
157
- }
158
- }
159
-
160
- .thinking-elapsed {
161
- font-size: 10px;
162
- color: #6366f1;
163
- margin-left: 4px;
164
- }
165
-
166
- /* Size variants */
167
- .thinking-indicator-small .thinking-dot {
168
- width: 4px;
169
- height: 4px;
170
- }
171
-
172
- .thinking-indicator-small .thinking-dots {
173
- gap: 2px;
174
- }
175
-
176
- .thinking-indicator-large .thinking-dot {
177
- width: 8px;
178
- height: 8px;
179
- }
180
-
181
- .thinking-indicator-large .thinking-dots {
182
- gap: 4px;
183
- }
184
-
185
- @keyframes thinking-bounce-large {
186
- 0%, 60%, 100% {
187
- transform: translateY(0);
188
- opacity: 0.4;
189
- }
190
- 30% {
191
- transform: translateY(-6px);
192
- opacity: 1;
193
- }
194
- }
195
-
196
- .thinking-indicator-large .thinking-dot {
197
- animation: thinking-bounce-large 1.4s ease-in-out infinite;
198
- }
199
-
200
- /* Inline dot for compact views */
201
- .thinking-dot-inline {
202
- display: inline-flex;
203
- align-items: center;
204
- justify-content: center;
205
- width: 12px;
206
- height: 12px;
207
- }
208
-
209
- .thinking-dot-pulse {
210
- width: 8px;
211
- height: 8px;
212
- border-radius: 50%;
213
- background: #6366f1;
214
- animation: thinking-pulse 1.5s ease-in-out infinite;
215
- }
216
-
217
- @keyframes thinking-pulse {
218
- 0% {
219
- transform: scale(0.8);
220
- opacity: 0.5;
221
- }
222
- 50% {
223
- transform: scale(1.1);
224
- opacity: 1;
225
- }
226
- 100% {
227
- transform: scale(0.8);
228
- opacity: 0.5;
229
- }
230
- }
231
- `;