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,717 +0,0 @@
1
- /**
2
- * DecisionQueue Component
3
- *
4
- * Displays pending decisions from agents that require human input,
5
- * with approve/reject actions and priority indicators.
6
- */
7
-
8
- import React, { useState, useMemo } from 'react';
9
- import { getAgentColor, getAgentInitials } from '../lib/colors';
10
-
11
- export interface Decision {
12
- id: string;
13
- agentName: string;
14
- timestamp: string | number;
15
- type: 'approval' | 'choice' | 'confirmation' | 'input';
16
- title: string;
17
- description: string;
18
- options?: { id: string; label: string; description?: string }[];
19
- priority: 'low' | 'medium' | 'high' | 'critical';
20
- context?: Record<string, unknown>;
21
- expiresAt?: string | number;
22
- }
23
-
24
- export interface DecisionQueueProps {
25
- decisions: Decision[];
26
- onApprove?: (decisionId: string, optionId?: string) => Promise<void>;
27
- onReject?: (decisionId: string, reason?: string) => Promise<void>;
28
- onDismiss?: (decisionId: string) => void;
29
- isProcessing?: Record<string, boolean>;
30
- }
31
-
32
- export function DecisionQueue({
33
- decisions,
34
- onApprove,
35
- onReject,
36
- onDismiss,
37
- isProcessing = {},
38
- }: DecisionQueueProps) {
39
- const [expandedDecision, setExpandedDecision] = useState<string | null>(null);
40
- const [rejectReason, setRejectReason] = useState<Record<string, string>>({});
41
-
42
- // Sort by priority and timestamp
43
- const sortedDecisions = useMemo(() => {
44
- const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
45
- return [...decisions].sort((a, b) => {
46
- const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
47
- if (priorityDiff !== 0) return priorityDiff;
48
- return new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime();
49
- });
50
- }, [decisions]);
51
-
52
- // Count by priority
53
- const priorityCounts = useMemo(() => {
54
- return decisions.reduce(
55
- (acc, d) => {
56
- acc[d.priority] = (acc[d.priority] || 0) + 1;
57
- return acc;
58
- },
59
- {} as Record<string, number>
60
- );
61
- }, [decisions]);
62
-
63
- const handleApprove = async (decision: Decision, optionId?: string) => {
64
- await onApprove?.(decision.id, optionId);
65
- };
66
-
67
- const handleReject = async (decision: Decision) => {
68
- await onReject?.(decision.id, rejectReason[decision.id]);
69
- setRejectReason((prev) => {
70
- const next = { ...prev };
71
- delete next[decision.id];
72
- return next;
73
- });
74
- };
75
-
76
- if (decisions.length === 0) {
77
- return (
78
- <div className="decision-queue decision-queue-empty">
79
- <CheckIcon />
80
- <span>No pending decisions</span>
81
- </div>
82
- );
83
- }
84
-
85
- return (
86
- <div className="decision-queue">
87
- <div className="decision-queue-header">
88
- <div className="decision-queue-title">
89
- <AlertIcon />
90
- <span>Pending Decisions</span>
91
- <span className="decision-queue-count">{decisions.length}</span>
92
- </div>
93
- <div className="decision-queue-summary">
94
- {priorityCounts.critical && (
95
- <span className="decision-priority-badge critical">{priorityCounts.critical} critical</span>
96
- )}
97
- {priorityCounts.high && (
98
- <span className="decision-priority-badge high">{priorityCounts.high} high</span>
99
- )}
100
- </div>
101
- </div>
102
-
103
- <div className="decision-queue-list">
104
- {sortedDecisions.map((decision) => (
105
- <DecisionCard
106
- key={decision.id}
107
- decision={decision}
108
- isExpanded={expandedDecision === decision.id}
109
- isProcessing={isProcessing[decision.id] || false}
110
- rejectReason={rejectReason[decision.id] || ''}
111
- onToggle={() =>
112
- setExpandedDecision((prev) => (prev === decision.id ? null : decision.id))
113
- }
114
- onApprove={(optionId) => handleApprove(decision, optionId)}
115
- onReject={() => handleReject(decision)}
116
- onRejectReasonChange={(reason) =>
117
- setRejectReason((prev) => ({ ...prev, [decision.id]: reason }))
118
- }
119
- onDismiss={() => onDismiss?.(decision.id)}
120
- />
121
- ))}
122
- </div>
123
- </div>
124
- );
125
- }
126
-
127
- interface DecisionCardProps {
128
- decision: Decision;
129
- isExpanded: boolean;
130
- isProcessing: boolean;
131
- rejectReason: string;
132
- onToggle: () => void;
133
- onApprove: (optionId?: string) => void;
134
- onReject: () => void;
135
- onRejectReasonChange: (reason: string) => void;
136
- onDismiss: () => void;
137
- }
138
-
139
- function DecisionCard({
140
- decision,
141
- isExpanded,
142
- isProcessing,
143
- rejectReason,
144
- onToggle,
145
- onApprove,
146
- onReject,
147
- onRejectReasonChange,
148
- onDismiss,
149
- }: DecisionCardProps) {
150
- const colors = getAgentColor(decision.agentName);
151
- const timestamp = formatTimestamp(decision.timestamp);
152
- const timeRemaining = decision.expiresAt ? getTimeRemaining(decision.expiresAt) : null;
153
-
154
- return (
155
- <div className={`decision-card ${decision.priority}`}>
156
- <div className="decision-card-header" onClick={onToggle}>
157
- <div
158
- className="decision-card-avatar"
159
- style={{ backgroundColor: colors.primary, color: colors.text }}
160
- >
161
- {getAgentInitials(decision.agentName)}
162
- </div>
163
-
164
- <div className="decision-card-info">
165
- <div className="decision-card-title">
166
- <span className="decision-card-agent">{decision.agentName}</span>
167
- <span className="decision-card-type">{formatType(decision.type)}</span>
168
- <PriorityBadge priority={decision.priority} />
169
- </div>
170
- <div className="decision-card-subtitle">{decision.title}</div>
171
- </div>
172
-
173
- <div className="decision-card-meta">
174
- {timeRemaining && (
175
- <span className={`decision-card-expires ${timeRemaining.urgent ? 'urgent' : ''}`}>
176
- {timeRemaining.text}
177
- </span>
178
- )}
179
- <span className="decision-card-time">{timestamp}</span>
180
- <ChevronIcon isExpanded={isExpanded} />
181
- </div>
182
- </div>
183
-
184
- {isExpanded && (
185
- <div className="decision-card-body">
186
- <p className="decision-card-desc">{decision.description}</p>
187
-
188
- {decision.context && Object.keys(decision.context).length > 0 && (
189
- <div className="decision-card-context">
190
- <span className="decision-card-context-label">Context</span>
191
- <pre>{JSON.stringify(decision.context, null, 2)}</pre>
192
- </div>
193
- )}
194
-
195
- {decision.type === 'choice' && decision.options && (
196
- <div className="decision-card-options">
197
- {decision.options.map((option) => (
198
- <button
199
- key={option.id}
200
- className="decision-card-option"
201
- onClick={() => onApprove(option.id)}
202
- disabled={isProcessing}
203
- >
204
- <span className="decision-option-label">{option.label}</span>
205
- {option.description && (
206
- <span className="decision-option-desc">{option.description}</span>
207
- )}
208
- </button>
209
- ))}
210
- </div>
211
- )}
212
-
213
- {decision.type !== 'choice' && (
214
- <div className="decision-card-actions">
215
- <button
216
- className="decision-btn decision-btn-approve"
217
- onClick={() => onApprove()}
218
- disabled={isProcessing}
219
- >
220
- {isProcessing ? <Spinner /> : <CheckIcon />}
221
- {decision.type === 'confirmation' ? 'Confirm' : 'Approve'}
222
- </button>
223
-
224
- <div className="decision-reject-group">
225
- <input
226
- type="text"
227
- className="decision-reject-input"
228
- placeholder="Reason (optional)"
229
- value={rejectReason}
230
- onChange={(e) => onRejectReasonChange(e.target.value)}
231
- disabled={isProcessing}
232
- />
233
- <button
234
- className="decision-btn decision-btn-reject"
235
- onClick={onReject}
236
- disabled={isProcessing}
237
- >
238
- <XIcon />
239
- Reject
240
- </button>
241
- </div>
242
- </div>
243
- )}
244
-
245
- <button
246
- className="decision-card-dismiss"
247
- onClick={onDismiss}
248
- disabled={isProcessing}
249
- >
250
- Dismiss without action
251
- </button>
252
- </div>
253
- )}
254
- </div>
255
- );
256
- }
257
-
258
- function PriorityBadge({ priority }: { priority: Decision['priority'] }) {
259
- return <span className={`decision-priority-badge ${priority}`}>{priority}</span>;
260
- }
261
-
262
- // Helper functions
263
- function formatTimestamp(ts: string | number): string {
264
- const date = new Date(ts);
265
- const now = new Date();
266
- const diffMs = now.getTime() - date.getTime();
267
- const diffMins = Math.floor(diffMs / 60000);
268
-
269
- if (diffMins < 1) return 'just now';
270
- if (diffMins < 60) return `${diffMins}m ago`;
271
- if (diffMins < 1440) return `${Math.floor(diffMins / 60)}h ago`;
272
- return date.toLocaleDateString();
273
- }
274
-
275
- function formatType(type: Decision['type']): string {
276
- const labels: Record<Decision['type'], string> = {
277
- approval: 'Approval',
278
- choice: 'Choice',
279
- confirmation: 'Confirm',
280
- input: 'Input',
281
- };
282
- return labels[type];
283
- }
284
-
285
- function getTimeRemaining(expiresAt: string | number): { text: string; urgent: boolean } | null {
286
- const expiry = new Date(expiresAt);
287
- const now = new Date();
288
- const diffMs = expiry.getTime() - now.getTime();
289
-
290
- if (diffMs <= 0) return { text: 'Expired', urgent: true };
291
-
292
- const diffMins = Math.floor(diffMs / 60000);
293
- if (diffMins < 5) return { text: `${diffMins}m left`, urgent: true };
294
- if (diffMins < 60) return { text: `${diffMins}m left`, urgent: false };
295
- return { text: `${Math.floor(diffMins / 60)}h left`, urgent: false };
296
- }
297
-
298
- // Icon components
299
- function AlertIcon() {
300
- return (
301
- <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
302
- <circle cx="12" cy="12" r="10" />
303
- <line x1="12" y1="8" x2="12" y2="12" />
304
- <line x1="12" y1="16" x2="12.01" y2="16" />
305
- </svg>
306
- );
307
- }
308
-
309
- function CheckIcon() {
310
- return (
311
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
312
- <polyline points="20 6 9 17 4 12" />
313
- </svg>
314
- );
315
- }
316
-
317
- function XIcon() {
318
- return (
319
- <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
320
- <line x1="18" y1="6" x2="6" y2="18" />
321
- <line x1="6" y1="6" x2="18" y2="18" />
322
- </svg>
323
- );
324
- }
325
-
326
- function ChevronIcon({ isExpanded }: { isExpanded: boolean }) {
327
- return (
328
- <svg
329
- width="14"
330
- height="14"
331
- viewBox="0 0 24 24"
332
- fill="none"
333
- stroke="currentColor"
334
- strokeWidth="2"
335
- style={{
336
- transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)',
337
- transition: 'transform 0.2s',
338
- }}
339
- >
340
- <polyline points="6 9 12 15 18 9" />
341
- </svg>
342
- );
343
- }
344
-
345
- function Spinner() {
346
- return (
347
- <svg className="decision-spinner" width="14" height="14" viewBox="0 0 24 24">
348
- <circle
349
- cx="12"
350
- cy="12"
351
- r="10"
352
- stroke="currentColor"
353
- strokeWidth="2"
354
- fill="none"
355
- strokeDasharray="32"
356
- strokeLinecap="round"
357
- />
358
- </svg>
359
- );
360
- }
361
-
362
- /**
363
- * CSS styles for the decision queue
364
- */
365
- export const decisionQueueStyles = `
366
- .decision-queue {
367
- background: #ffffff;
368
- border-radius: 8px;
369
- border: 1px solid #e8e8e8;
370
- overflow: hidden;
371
- }
372
-
373
- .decision-queue-empty {
374
- display: flex;
375
- align-items: center;
376
- justify-content: center;
377
- gap: 8px;
378
- padding: 24px;
379
- color: #10b981;
380
- font-size: 13px;
381
- }
382
-
383
- .decision-queue-header {
384
- display: flex;
385
- align-items: center;
386
- justify-content: space-between;
387
- padding: 12px 16px;
388
- border-bottom: 1px solid #e8e8e8;
389
- background: #fafafa;
390
- }
391
-
392
- .decision-queue-title {
393
- display: flex;
394
- align-items: center;
395
- gap: 8px;
396
- font-weight: 600;
397
- font-size: 14px;
398
- color: #333;
399
- }
400
-
401
- .decision-queue-title svg {
402
- color: #f59e0b;
403
- }
404
-
405
- .decision-queue-count {
406
- font-weight: 600;
407
- font-size: 12px;
408
- color: #ffffff;
409
- background: #f59e0b;
410
- padding: 2px 8px;
411
- border-radius: 10px;
412
- }
413
-
414
- .decision-queue-summary {
415
- display: flex;
416
- gap: 8px;
417
- }
418
-
419
- .decision-queue-list {
420
- max-height: 500px;
421
- overflow-y: auto;
422
- }
423
-
424
- .decision-card {
425
- border-bottom: 1px solid #e8e8e8;
426
- }
427
-
428
- .decision-card:last-child {
429
- border-bottom: none;
430
- }
431
-
432
- .decision-card.critical {
433
- background: linear-gradient(to right, #fef2f2 0%, #ffffff 20%);
434
- }
435
-
436
- .decision-card.high {
437
- background: linear-gradient(to right, #fffbeb 0%, #ffffff 20%);
438
- }
439
-
440
- .decision-card-header {
441
- display: flex;
442
- align-items: center;
443
- gap: 12px;
444
- padding: 12px 16px;
445
- cursor: pointer;
446
- transition: background 0.15s;
447
- }
448
-
449
- .decision-card-header:hover {
450
- background: rgba(0, 0, 0, 0.02);
451
- }
452
-
453
- .decision-card-avatar {
454
- width: 36px;
455
- height: 36px;
456
- border-radius: 8px;
457
- display: flex;
458
- align-items: center;
459
- justify-content: center;
460
- font-size: 12px;
461
- font-weight: 600;
462
- flex-shrink: 0;
463
- }
464
-
465
- .decision-card-info {
466
- flex: 1;
467
- min-width: 0;
468
- }
469
-
470
- .decision-card-title {
471
- display: flex;
472
- align-items: center;
473
- gap: 8px;
474
- }
475
-
476
- .decision-card-agent {
477
- font-weight: 600;
478
- font-size: 13px;
479
- color: #333;
480
- }
481
-
482
- .decision-card-type {
483
- font-size: 11px;
484
- color: #888;
485
- background: #f0f0f0;
486
- padding: 2px 6px;
487
- border-radius: 3px;
488
- }
489
-
490
- .decision-card-subtitle {
491
- font-size: 13px;
492
- color: #555;
493
- margin-top: 2px;
494
- white-space: nowrap;
495
- overflow: hidden;
496
- text-overflow: ellipsis;
497
- }
498
-
499
- .decision-card-meta {
500
- display: flex;
501
- align-items: center;
502
- gap: 12px;
503
- flex-shrink: 0;
504
- }
505
-
506
- .decision-card-expires {
507
- font-size: 11px;
508
- color: #888;
509
- }
510
-
511
- .decision-card-expires.urgent {
512
- color: #ef4444;
513
- font-weight: 500;
514
- }
515
-
516
- .decision-card-time {
517
- font-size: 11px;
518
- color: #888;
519
- }
520
-
521
- .decision-card-body {
522
- padding: 0 16px 16px 64px;
523
- }
524
-
525
- .decision-card-desc {
526
- margin: 0 0 16px;
527
- font-size: 13px;
528
- color: #555;
529
- line-height: 1.5;
530
- }
531
-
532
- .decision-card-context {
533
- background: #f5f5f5;
534
- border-radius: 6px;
535
- padding: 12px;
536
- margin-bottom: 16px;
537
- }
538
-
539
- .decision-card-context-label {
540
- display: block;
541
- font-size: 11px;
542
- font-weight: 600;
543
- color: #888;
544
- text-transform: uppercase;
545
- margin-bottom: 8px;
546
- }
547
-
548
- .decision-card-context pre {
549
- margin: 0;
550
- font-size: 12px;
551
- font-family: 'SF Mono', monospace;
552
- color: #333;
553
- white-space: pre-wrap;
554
- word-break: break-word;
555
- }
556
-
557
- .decision-card-options {
558
- display: flex;
559
- flex-direction: column;
560
- gap: 8px;
561
- margin-bottom: 16px;
562
- }
563
-
564
- .decision-card-option {
565
- display: flex;
566
- flex-direction: column;
567
- align-items: flex-start;
568
- padding: 12px 16px;
569
- background: #fafafa;
570
- border: 1px solid #e8e8e8;
571
- border-radius: 6px;
572
- cursor: pointer;
573
- font-family: inherit;
574
- text-align: left;
575
- transition: all 0.15s;
576
- }
577
-
578
- .decision-card-option:hover:not(:disabled) {
579
- background: #f0f0f0;
580
- border-color: #d0d0d0;
581
- }
582
-
583
- .decision-card-option:disabled {
584
- opacity: 0.5;
585
- cursor: not-allowed;
586
- }
587
-
588
- .decision-option-label {
589
- font-size: 13px;
590
- font-weight: 500;
591
- color: #333;
592
- }
593
-
594
- .decision-option-desc {
595
- font-size: 12px;
596
- color: #888;
597
- margin-top: 2px;
598
- }
599
-
600
- .decision-card-actions {
601
- display: flex;
602
- flex-direction: column;
603
- gap: 12px;
604
- }
605
-
606
- .decision-btn {
607
- display: flex;
608
- align-items: center;
609
- justify-content: center;
610
- gap: 6px;
611
- padding: 10px 16px;
612
- border: none;
613
- border-radius: 6px;
614
- font-size: 13px;
615
- font-weight: 500;
616
- cursor: pointer;
617
- font-family: inherit;
618
- transition: all 0.15s;
619
- }
620
-
621
- .decision-btn:disabled {
622
- opacity: 0.5;
623
- cursor: not-allowed;
624
- }
625
-
626
- .decision-btn-approve {
627
- background: #10b981;
628
- color: #ffffff;
629
- }
630
-
631
- .decision-btn-approve:hover:not(:disabled) {
632
- background: #059669;
633
- }
634
-
635
- .decision-reject-group {
636
- display: flex;
637
- gap: 8px;
638
- }
639
-
640
- .decision-reject-input {
641
- flex: 1;
642
- padding: 10px 12px;
643
- border: 1px solid #e8e8e8;
644
- border-radius: 6px;
645
- font-size: 13px;
646
- font-family: inherit;
647
- outline: none;
648
- }
649
-
650
- .decision-reject-input:focus {
651
- border-color: #1264a3;
652
- }
653
-
654
- .decision-btn-reject {
655
- background: #ffffff;
656
- color: #ef4444;
657
- border: 1px solid #fecaca;
658
- }
659
-
660
- .decision-btn-reject:hover:not(:disabled) {
661
- background: #fef2f2;
662
- border-color: #ef4444;
663
- }
664
-
665
- .decision-card-dismiss {
666
- margin-top: 12px;
667
- padding: 8px;
668
- background: transparent;
669
- border: none;
670
- color: #888;
671
- font-size: 12px;
672
- cursor: pointer;
673
- font-family: inherit;
674
- transition: color 0.15s;
675
- }
676
-
677
- .decision-card-dismiss:hover:not(:disabled) {
678
- color: #333;
679
- }
680
-
681
- .decision-priority-badge {
682
- font-size: 10px;
683
- padding: 2px 6px;
684
- border-radius: 3px;
685
- text-transform: uppercase;
686
- font-weight: 600;
687
- }
688
-
689
- .decision-priority-badge.critical {
690
- background: #fecaca;
691
- color: #dc2626;
692
- }
693
-
694
- .decision-priority-badge.high {
695
- background: #fed7aa;
696
- color: #ea580c;
697
- }
698
-
699
- .decision-priority-badge.medium {
700
- background: #fef08a;
701
- color: #ca8a04;
702
- }
703
-
704
- .decision-priority-badge.low {
705
- background: #e0e7ff;
706
- color: #4f46e5;
707
- }
708
-
709
- .decision-spinner {
710
- animation: spin 1s linear infinite;
711
- }
712
-
713
- @keyframes spin {
714
- from { transform: rotate(0deg); }
715
- to { transform: rotate(360deg); }
716
- }
717
- `;