agent-relay 2.0.22 → 2.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/bin/relay-pty-linux-arm64 +0 -0
  2. package/dist/src/cli/index.d.ts +3 -3
  3. package/dist/src/cli/index.js +58 -74
  4. package/package.json +21 -62
  5. package/packages/api-types/package.json +1 -1
  6. package/packages/bridge/package.json +8 -8
  7. package/packages/cli-tester/package.json +1 -1
  8. package/packages/config/package.json +2 -2
  9. package/packages/continuity/package.json +1 -1
  10. package/packages/daemon/dist/orchestrator.js +19 -1
  11. package/packages/daemon/package.json +12 -12
  12. package/packages/hooks/package.json +4 -4
  13. package/packages/mcp/package.json +2 -2
  14. package/packages/memory/package.json +2 -2
  15. package/packages/policy/package.json +2 -2
  16. package/packages/protocol/package.json +1 -1
  17. package/packages/resiliency/package.json +1 -1
  18. package/packages/sdk/package.json +2 -2
  19. package/packages/spawner/package.json +1 -1
  20. package/packages/state/package.json +1 -1
  21. package/packages/storage/package.json +2 -2
  22. package/packages/telemetry/package.json +1 -1
  23. package/packages/trajectory/package.json +2 -2
  24. package/packages/user-directory/package.json +2 -2
  25. package/packages/utils/dist/update-checker.js +4 -0
  26. package/packages/utils/package.json +1 -1
  27. package/packages/wrapper/package.json +6 -6
  28. package/deploy/init-db.sql +0 -5
  29. package/deploy/scripts/setup-fly-workspaces.sh +0 -69
  30. package/deploy/scripts/setup-railway.sh +0 -75
  31. package/deploy/workspace/codex.config.toml +0 -20
  32. package/deploy/workspace/entrypoint-browser.sh +0 -118
  33. package/deploy/workspace/entrypoint.sh +0 -612
  34. package/deploy/workspace/gh-credential-relay +0 -90
  35. package/deploy/workspace/gh-relay +0 -156
  36. package/deploy/workspace/git-credential-relay +0 -330
  37. package/deploy/workspace/git-credential-relay.test.sh +0 -230
  38. package/dist/dashboard/out/404.html +0 -1
  39. package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
  40. package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
  41. package/dist/dashboard/out/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  42. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  43. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  44. package/dist/dashboard/out/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  45. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +0 -9
  46. package/dist/dashboard/out/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  47. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  48. package/dist/dashboard/out/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  49. package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  50. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  51. package/dist/dashboard/out/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  52. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  53. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  54. package/dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  55. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  56. package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  57. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  58. package/dist/dashboard/out/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  59. package/dist/dashboard/out/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  60. package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  61. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  62. package/dist/dashboard/out/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  63. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  64. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  65. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  66. package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  67. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  68. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  69. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  70. package/dist/dashboard/out/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  71. package/dist/dashboard/out/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  72. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  73. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  74. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  75. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  76. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +0 -1
  77. package/dist/dashboard/out/_next/static/css/6892f8422896ef7a.css +0 -1
  78. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  79. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  80. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  81. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  82. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  83. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +0 -45
  84. package/dist/dashboard/out/alt-logos/logo.svg +0 -38
  85. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  86. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  87. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  88. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  89. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  90. package/dist/dashboard/out/alt-logos/monogram-logo.svg +0 -38
  91. package/dist/dashboard/out/app/onboarding.html +0 -1
  92. package/dist/dashboard/out/app/onboarding.txt +0 -7
  93. package/dist/dashboard/out/app.html +0 -1
  94. package/dist/dashboard/out/app.txt +0 -7
  95. package/dist/dashboard/out/apple-icon.png +0 -0
  96. package/dist/dashboard/out/cloud/link.html +0 -1
  97. package/dist/dashboard/out/cloud/link.txt +0 -7
  98. package/dist/dashboard/out/complete-profile.html +0 -5
  99. package/dist/dashboard/out/complete-profile.txt +0 -7
  100. package/dist/dashboard/out/connect-repos.html +0 -1
  101. package/dist/dashboard/out/connect-repos.txt +0 -7
  102. package/dist/dashboard/out/history.html +0 -1
  103. package/dist/dashboard/out/history.txt +0 -7
  104. package/dist/dashboard/out/index.html +0 -1
  105. package/dist/dashboard/out/index.txt +0 -7
  106. package/dist/dashboard/out/login.html +0 -5
  107. package/dist/dashboard/out/login.txt +0 -7
  108. package/dist/dashboard/out/metrics.html +0 -1
  109. package/dist/dashboard/out/metrics.txt +0 -7
  110. package/dist/dashboard/out/pricing.html +0 -13
  111. package/dist/dashboard/out/pricing.txt +0 -7
  112. package/dist/dashboard/out/providers/setup/claude.html +0 -1
  113. package/dist/dashboard/out/providers/setup/claude.txt +0 -8
  114. package/dist/dashboard/out/providers/setup/codex.html +0 -1
  115. package/dist/dashboard/out/providers/setup/codex.txt +0 -8
  116. package/dist/dashboard/out/providers/setup/cursor.html +0 -1
  117. package/dist/dashboard/out/providers/setup/cursor.txt +0 -8
  118. package/dist/dashboard/out/providers.html +0 -1
  119. package/dist/dashboard/out/providers.txt +0 -7
  120. package/dist/dashboard/out/signup.html +0 -6
  121. package/dist/dashboard/out/signup.txt +0 -7
  122. package/dist/src/cloud/index.d.ts +0 -8
  123. package/dist/src/cloud/index.js +0 -8
  124. package/dist/src/dashboard-server/index.d.ts +0 -8
  125. package/dist/src/dashboard-server/index.js +0 -8
  126. package/packages/cloud/dist/api/admin.d.ts +0 -8
  127. package/packages/cloud/dist/api/admin.js +0 -225
  128. package/packages/cloud/dist/api/auth.d.ts +0 -20
  129. package/packages/cloud/dist/api/auth.js +0 -138
  130. package/packages/cloud/dist/api/billing.d.ts +0 -7
  131. package/packages/cloud/dist/api/billing.js +0 -564
  132. package/packages/cloud/dist/api/cli-pty-runner.d.ts +0 -53
  133. package/packages/cloud/dist/api/cli-pty-runner.js +0 -175
  134. package/packages/cloud/dist/api/codex-auth-helper.d.ts +0 -21
  135. package/packages/cloud/dist/api/codex-auth-helper.js +0 -327
  136. package/packages/cloud/dist/api/consensus.d.ts +0 -13
  137. package/packages/cloud/dist/api/consensus.js +0 -261
  138. package/packages/cloud/dist/api/coordinators.d.ts +0 -8
  139. package/packages/cloud/dist/api/coordinators.js +0 -750
  140. package/packages/cloud/dist/api/daemons.d.ts +0 -12
  141. package/packages/cloud/dist/api/daemons.js +0 -535
  142. package/packages/cloud/dist/api/email-auth.d.ts +0 -11
  143. package/packages/cloud/dist/api/email-auth.js +0 -347
  144. package/packages/cloud/dist/api/generic-webhooks.d.ts +0 -8
  145. package/packages/cloud/dist/api/generic-webhooks.js +0 -129
  146. package/packages/cloud/dist/api/git.d.ts +0 -8
  147. package/packages/cloud/dist/api/git.js +0 -269
  148. package/packages/cloud/dist/api/github-app.d.ts +0 -11
  149. package/packages/cloud/dist/api/github-app.js +0 -223
  150. package/packages/cloud/dist/api/middleware/planLimits.d.ts +0 -43
  151. package/packages/cloud/dist/api/middleware/planLimits.js +0 -202
  152. package/packages/cloud/dist/api/monitoring.d.ts +0 -11
  153. package/packages/cloud/dist/api/monitoring.js +0 -578
  154. package/packages/cloud/dist/api/nango-auth.d.ts +0 -9
  155. package/packages/cloud/dist/api/nango-auth.js +0 -741
  156. package/packages/cloud/dist/api/onboarding.d.ts +0 -15
  157. package/packages/cloud/dist/api/onboarding.js +0 -679
  158. package/packages/cloud/dist/api/policy.d.ts +0 -8
  159. package/packages/cloud/dist/api/policy.js +0 -229
  160. package/packages/cloud/dist/api/provider-env.d.ts +0 -26
  161. package/packages/cloud/dist/api/provider-env.js +0 -141
  162. package/packages/cloud/dist/api/providers.d.ts +0 -7
  163. package/packages/cloud/dist/api/providers.js +0 -574
  164. package/packages/cloud/dist/api/repos.d.ts +0 -8
  165. package/packages/cloud/dist/api/repos.js +0 -577
  166. package/packages/cloud/dist/api/sessions.d.ts +0 -11
  167. package/packages/cloud/dist/api/sessions.js +0 -302
  168. package/packages/cloud/dist/api/teams.d.ts +0 -7
  169. package/packages/cloud/dist/api/teams.js +0 -281
  170. package/packages/cloud/dist/api/test-helpers.d.ts +0 -10
  171. package/packages/cloud/dist/api/test-helpers.js +0 -745
  172. package/packages/cloud/dist/api/usage.d.ts +0 -7
  173. package/packages/cloud/dist/api/usage.js +0 -111
  174. package/packages/cloud/dist/api/webhooks.d.ts +0 -8
  175. package/packages/cloud/dist/api/webhooks.js +0 -645
  176. package/packages/cloud/dist/api/workspaces.d.ts +0 -25
  177. package/packages/cloud/dist/api/workspaces.js +0 -1799
  178. package/packages/cloud/dist/billing/index.d.ts +0 -9
  179. package/packages/cloud/dist/billing/index.js +0 -9
  180. package/packages/cloud/dist/billing/plans.d.ts +0 -39
  181. package/packages/cloud/dist/billing/plans.js +0 -245
  182. package/packages/cloud/dist/billing/service.d.ts +0 -80
  183. package/packages/cloud/dist/billing/service.js +0 -388
  184. package/packages/cloud/dist/billing/types.d.ts +0 -141
  185. package/packages/cloud/dist/billing/types.js +0 -7
  186. package/packages/cloud/dist/config.d.ts +0 -5
  187. package/packages/cloud/dist/config.js +0 -5
  188. package/packages/cloud/dist/db/bulk-ingest.d.ts +0 -89
  189. package/packages/cloud/dist/db/bulk-ingest.js +0 -268
  190. package/packages/cloud/dist/db/drizzle.d.ts +0 -290
  191. package/packages/cloud/dist/db/drizzle.js +0 -1422
  192. package/packages/cloud/dist/db/index.d.ts +0 -56
  193. package/packages/cloud/dist/db/index.js +0 -70
  194. package/packages/cloud/dist/db/schema.d.ts +0 -5117
  195. package/packages/cloud/dist/db/schema.js +0 -656
  196. package/packages/cloud/dist/index.d.ts +0 -11
  197. package/packages/cloud/dist/index.js +0 -38
  198. package/packages/cloud/dist/provisioner/index.d.ts +0 -207
  199. package/packages/cloud/dist/provisioner/index.js +0 -2118
  200. package/packages/cloud/dist/server.d.ts +0 -17
  201. package/packages/cloud/dist/server.js +0 -2034
  202. package/packages/cloud/dist/services/auto-scaler.d.ts +0 -152
  203. package/packages/cloud/dist/services/auto-scaler.js +0 -439
  204. package/packages/cloud/dist/services/capacity-manager.d.ts +0 -148
  205. package/packages/cloud/dist/services/capacity-manager.js +0 -449
  206. package/packages/cloud/dist/services/ci-agent-spawner.d.ts +0 -49
  207. package/packages/cloud/dist/services/ci-agent-spawner.js +0 -373
  208. package/packages/cloud/dist/services/cloud-message-bus.d.ts +0 -28
  209. package/packages/cloud/dist/services/cloud-message-bus.js +0 -19
  210. package/packages/cloud/dist/services/compute-enforcement.d.ts +0 -57
  211. package/packages/cloud/dist/services/compute-enforcement.js +0 -175
  212. package/packages/cloud/dist/services/coordinator.d.ts +0 -62
  213. package/packages/cloud/dist/services/coordinator.js +0 -389
  214. package/packages/cloud/dist/services/index.d.ts +0 -17
  215. package/packages/cloud/dist/services/index.js +0 -25
  216. package/packages/cloud/dist/services/intro-expiration.d.ts +0 -60
  217. package/packages/cloud/dist/services/intro-expiration.js +0 -252
  218. package/packages/cloud/dist/services/mention-handler.d.ts +0 -65
  219. package/packages/cloud/dist/services/mention-handler.js +0 -405
  220. package/packages/cloud/dist/services/nango.d.ts +0 -219
  221. package/packages/cloud/dist/services/nango.js +0 -424
  222. package/packages/cloud/dist/services/persistence.d.ts +0 -131
  223. package/packages/cloud/dist/services/persistence.js +0 -200
  224. package/packages/cloud/dist/services/planLimits.d.ts +0 -147
  225. package/packages/cloud/dist/services/planLimits.js +0 -335
  226. package/packages/cloud/dist/services/presence-registry.d.ts +0 -56
  227. package/packages/cloud/dist/services/presence-registry.js +0 -91
  228. package/packages/cloud/dist/services/scaling-orchestrator.d.ts +0 -159
  229. package/packages/cloud/dist/services/scaling-orchestrator.js +0 -502
  230. package/packages/cloud/dist/services/scaling-policy.d.ts +0 -121
  231. package/packages/cloud/dist/services/scaling-policy.js +0 -415
  232. package/packages/cloud/dist/services/ssh-security.d.ts +0 -31
  233. package/packages/cloud/dist/services/ssh-security.js +0 -63
  234. package/packages/cloud/dist/services/workspace-keepalive.d.ts +0 -76
  235. package/packages/cloud/dist/services/workspace-keepalive.js +0 -234
  236. package/packages/cloud/dist/shims/consensus.d.ts +0 -23
  237. package/packages/cloud/dist/shims/consensus.js +0 -5
  238. package/packages/cloud/dist/webhooks/index.d.ts +0 -24
  239. package/packages/cloud/dist/webhooks/index.js +0 -29
  240. package/packages/cloud/dist/webhooks/parsers/github.d.ts +0 -8
  241. package/packages/cloud/dist/webhooks/parsers/github.js +0 -234
  242. package/packages/cloud/dist/webhooks/parsers/index.d.ts +0 -23
  243. package/packages/cloud/dist/webhooks/parsers/index.js +0 -30
  244. package/packages/cloud/dist/webhooks/parsers/linear.d.ts +0 -9
  245. package/packages/cloud/dist/webhooks/parsers/linear.js +0 -258
  246. package/packages/cloud/dist/webhooks/parsers/slack.d.ts +0 -9
  247. package/packages/cloud/dist/webhooks/parsers/slack.js +0 -214
  248. package/packages/cloud/dist/webhooks/responders/github.d.ts +0 -8
  249. package/packages/cloud/dist/webhooks/responders/github.js +0 -73
  250. package/packages/cloud/dist/webhooks/responders/index.d.ts +0 -23
  251. package/packages/cloud/dist/webhooks/responders/index.js +0 -30
  252. package/packages/cloud/dist/webhooks/responders/linear.d.ts +0 -9
  253. package/packages/cloud/dist/webhooks/responders/linear.js +0 -149
  254. package/packages/cloud/dist/webhooks/responders/slack.d.ts +0 -20
  255. package/packages/cloud/dist/webhooks/responders/slack.js +0 -178
  256. package/packages/cloud/dist/webhooks/router.d.ts +0 -25
  257. package/packages/cloud/dist/webhooks/router.js +0 -504
  258. package/packages/cloud/dist/webhooks/rules-engine.d.ts +0 -24
  259. package/packages/cloud/dist/webhooks/rules-engine.js +0 -287
  260. package/packages/cloud/dist/webhooks/types.d.ts +0 -186
  261. package/packages/cloud/dist/webhooks/types.js +0 -8
  262. package/packages/cloud/package.json +0 -60
  263. package/packages/dashboard/README.md +0 -48
  264. package/packages/dashboard/dist/health-worker-manager.d.ts +0 -62
  265. package/packages/dashboard/dist/health-worker-manager.js +0 -144
  266. package/packages/dashboard/dist/health-worker.d.ts +0 -9
  267. package/packages/dashboard/dist/health-worker.js +0 -79
  268. package/packages/dashboard/dist/index.d.ts +0 -20
  269. package/packages/dashboard/dist/index.js +0 -19
  270. package/packages/dashboard/dist/metrics.d.ts +0 -105
  271. package/packages/dashboard/dist/metrics.js +0 -193
  272. package/packages/dashboard/dist/needs-attention.d.ts +0 -24
  273. package/packages/dashboard/dist/needs-attention.js +0 -78
  274. package/packages/dashboard/dist/server.d.ts +0 -25
  275. package/packages/dashboard/dist/server.js +0 -5270
  276. package/packages/dashboard/dist/start.d.ts +0 -6
  277. package/packages/dashboard/dist/start.js +0 -13
  278. package/packages/dashboard/dist/types/threading.d.ts +0 -8
  279. package/packages/dashboard/dist/types/threading.js +0 -2
  280. package/packages/dashboard/dist/user-bridge.d.ts +0 -154
  281. package/packages/dashboard/dist/user-bridge.js +0 -372
  282. package/packages/dashboard/package.json +0 -65
  283. package/packages/dashboard/ui/app/app/onboarding/page.tsx +0 -394
  284. package/packages/dashboard/ui/app/app/page.tsx +0 -667
  285. package/packages/dashboard/ui/app/apple-icon.png +0 -0
  286. package/packages/dashboard/ui/app/cloud/link/page.tsx +0 -464
  287. package/packages/dashboard/ui/app/complete-profile/page.tsx +0 -204
  288. package/packages/dashboard/ui/app/connect-repos/page.tsx +0 -410
  289. package/packages/dashboard/ui/app/favicon.png +0 -0
  290. package/packages/dashboard/ui/app/globals.css +0 -59
  291. package/packages/dashboard/ui/app/history/page.tsx +0 -658
  292. package/packages/dashboard/ui/app/layout.tsx +0 -25
  293. package/packages/dashboard/ui/app/login/page.tsx +0 -424
  294. package/packages/dashboard/ui/app/metrics/page.tsx +0 -751
  295. package/packages/dashboard/ui/app/page.tsx +0 -59
  296. package/packages/dashboard/ui/app/pricing/page.tsx +0 -7
  297. package/packages/dashboard/ui/app/providers/page.tsx +0 -193
  298. package/packages/dashboard/ui/app/providers/setup/[provider]/ProviderSetupClient.tsx +0 -148
  299. package/packages/dashboard/ui/app/providers/setup/[provider]/constants.ts +0 -35
  300. package/packages/dashboard/ui/app/providers/setup/[provider]/page.tsx +0 -42
  301. package/packages/dashboard/ui/app/signup/page.tsx +0 -533
  302. package/packages/dashboard/ui/index.ts +0 -49
  303. package/packages/dashboard/ui/landing/LandingPage.tsx +0 -713
  304. package/packages/dashboard/ui/landing/PricingPage.tsx +0 -559
  305. package/packages/dashboard/ui/landing/index.ts +0 -6
  306. package/packages/dashboard/ui/landing/styles.css +0 -2850
  307. package/packages/dashboard/ui/lib/agent-merge.ts +0 -35
  308. package/packages/dashboard/ui/lib/api.ts +0 -1155
  309. package/packages/dashboard/ui/lib/cloudApi.ts +0 -877
  310. package/packages/dashboard/ui/lib/colors.ts +0 -218
  311. package/packages/dashboard/ui/lib/hierarchy.ts +0 -242
  312. package/packages/dashboard/ui/lib/stuckDetection.ts +0 -142
  313. package/packages/dashboard/ui/next-env.d.ts +0 -5
  314. package/packages/dashboard/ui/next.config.js +0 -41
  315. package/packages/dashboard/ui/package-lock.json +0 -2882
  316. package/packages/dashboard/ui/package.json +0 -33
  317. package/packages/dashboard/ui/postcss.config.js +0 -5
  318. package/packages/dashboard/ui/react-components/ActivityFeed.tsx +0 -216
  319. package/packages/dashboard/ui/react-components/AddWorkspaceModal.tsx +0 -170
  320. package/packages/dashboard/ui/react-components/AgentCard.tsx +0 -587
  321. package/packages/dashboard/ui/react-components/AgentList.tsx +0 -411
  322. package/packages/dashboard/ui/react-components/AgentProfilePanel.tsx +0 -564
  323. package/packages/dashboard/ui/react-components/App.tsx +0 -3033
  324. package/packages/dashboard/ui/react-components/BillingPanel.tsx +0 -922
  325. package/packages/dashboard/ui/react-components/BillingResult.tsx +0 -447
  326. package/packages/dashboard/ui/react-components/BroadcastComposer.tsx +0 -690
  327. package/packages/dashboard/ui/react-components/ChannelAdminPanel.tsx +0 -773
  328. package/packages/dashboard/ui/react-components/ChannelBrowser.tsx +0 -385
  329. package/packages/dashboard/ui/react-components/ChannelChat.tsx +0 -261
  330. package/packages/dashboard/ui/react-components/ChannelSidebar.tsx +0 -399
  331. package/packages/dashboard/ui/react-components/CloudSessionProvider.tsx +0 -130
  332. package/packages/dashboard/ui/react-components/CommandPalette.tsx +0 -815
  333. package/packages/dashboard/ui/react-components/ConfirmationDialog.tsx +0 -133
  334. package/packages/dashboard/ui/react-components/ConversationHistory.tsx +0 -518
  335. package/packages/dashboard/ui/react-components/CoordinatorPanel.tsx +0 -944
  336. package/packages/dashboard/ui/react-components/DecisionQueue.tsx +0 -717
  337. package/packages/dashboard/ui/react-components/DirectMessageView.tsx +0 -164
  338. package/packages/dashboard/ui/react-components/FileAutocomplete.tsx +0 -368
  339. package/packages/dashboard/ui/react-components/FleetOverview.tsx +0 -278
  340. package/packages/dashboard/ui/react-components/LogViewer.tsx +0 -310
  341. package/packages/dashboard/ui/react-components/LogViewerPanel.tsx +0 -482
  342. package/packages/dashboard/ui/react-components/Logo.tsx +0 -284
  343. package/packages/dashboard/ui/react-components/MentionAutocomplete.tsx +0 -384
  344. package/packages/dashboard/ui/react-components/MessageComposer.tsx +0 -457
  345. package/packages/dashboard/ui/react-components/MessageList.tsx +0 -649
  346. package/packages/dashboard/ui/react-components/MessageSenderName.tsx +0 -91
  347. package/packages/dashboard/ui/react-components/MessageStatusIndicator.tsx +0 -142
  348. package/packages/dashboard/ui/react-components/NewConversationModal.tsx +0 -400
  349. package/packages/dashboard/ui/react-components/NotificationToast.tsx +0 -488
  350. package/packages/dashboard/ui/react-components/OnlineUsersIndicator.tsx +0 -164
  351. package/packages/dashboard/ui/react-components/Pagination.tsx +0 -124
  352. package/packages/dashboard/ui/react-components/PricingPlans.tsx +0 -386
  353. package/packages/dashboard/ui/react-components/ProjectList.tsx +0 -625
  354. package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +0 -853
  355. package/packages/dashboard/ui/react-components/ProviderConnectionList.tsx +0 -378
  356. package/packages/dashboard/ui/react-components/ProvisioningProgress.tsx +0 -730
  357. package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +0 -549
  358. package/packages/dashboard/ui/react-components/ServerCard.tsx +0 -202
  359. package/packages/dashboard/ui/react-components/SessionExpiredModal.tsx +0 -128
  360. package/packages/dashboard/ui/react-components/SpawnModal.tsx +0 -804
  361. package/packages/dashboard/ui/react-components/TaskAssignmentUI.tsx +0 -375
  362. package/packages/dashboard/ui/react-components/TerminalProviderSetup.tsx +0 -608
  363. package/packages/dashboard/ui/react-components/ThemeProvider.tsx +0 -325
  364. package/packages/dashboard/ui/react-components/ThinkingIndicator.tsx +0 -231
  365. package/packages/dashboard/ui/react-components/ThreadList.tsx +0 -198
  366. package/packages/dashboard/ui/react-components/ThreadPanel.tsx +0 -346
  367. package/packages/dashboard/ui/react-components/TrajectoryViewer.tsx +0 -698
  368. package/packages/dashboard/ui/react-components/TypingIndicator.tsx +0 -69
  369. package/packages/dashboard/ui/react-components/UsageBanner.tsx +0 -231
  370. package/packages/dashboard/ui/react-components/UserProfilePanel.tsx +0 -233
  371. package/packages/dashboard/ui/react-components/WorkspaceContext.tsx +0 -107
  372. package/packages/dashboard/ui/react-components/WorkspaceSelector.tsx +0 -234
  373. package/packages/dashboard/ui/react-components/WorkspaceStatusIndicator.tsx +0 -370
  374. package/packages/dashboard/ui/react-components/XTermInteractive.tsx +0 -510
  375. package/packages/dashboard/ui/react-components/XTermLogViewer.tsx +0 -719
  376. package/packages/dashboard/ui/react-components/channels/ChannelDialogs.tsx +0 -1411
  377. package/packages/dashboard/ui/react-components/channels/ChannelHeader.tsx +0 -317
  378. package/packages/dashboard/ui/react-components/channels/ChannelMessageList.tsx +0 -463
  379. package/packages/dashboard/ui/react-components/channels/ChannelViewV1.tsx +0 -146
  380. package/packages/dashboard/ui/react-components/channels/MessageInput.tsx +0 -288
  381. package/packages/dashboard/ui/react-components/channels/SearchInput.tsx +0 -172
  382. package/packages/dashboard/ui/react-components/channels/SearchResults.tsx +0 -336
  383. package/packages/dashboard/ui/react-components/channels/api.ts +0 -697
  384. package/packages/dashboard/ui/react-components/channels/index.ts +0 -76
  385. package/packages/dashboard/ui/react-components/channels/mockApi.ts +0 -344
  386. package/packages/dashboard/ui/react-components/channels/types.ts +0 -566
  387. package/packages/dashboard/ui/react-components/hooks/index.ts +0 -57
  388. package/packages/dashboard/ui/react-components/hooks/useAgentLogs.ts +0 -394
  389. package/packages/dashboard/ui/react-components/hooks/useAgents.ts +0 -127
  390. package/packages/dashboard/ui/react-components/hooks/useBroadcastDedup.ts +0 -86
  391. package/packages/dashboard/ui/react-components/hooks/useChannelAdmin.ts +0 -329
  392. package/packages/dashboard/ui/react-components/hooks/useChannelBrowser.ts +0 -239
  393. package/packages/dashboard/ui/react-components/hooks/useChannelCommands.ts +0 -138
  394. package/packages/dashboard/ui/react-components/hooks/useChannels.ts +0 -328
  395. package/packages/dashboard/ui/react-components/hooks/useDebounce.ts +0 -29
  396. package/packages/dashboard/ui/react-components/hooks/useDirectMessage.ts +0 -141
  397. package/packages/dashboard/ui/react-components/hooks/useMessages.ts +0 -309
  398. package/packages/dashboard/ui/react-components/hooks/useOrchestrator.ts +0 -364
  399. package/packages/dashboard/ui/react-components/hooks/usePinnedAgents.ts +0 -140
  400. package/packages/dashboard/ui/react-components/hooks/usePresence.ts +0 -340
  401. package/packages/dashboard/ui/react-components/hooks/useRecentRepos.ts +0 -130
  402. package/packages/dashboard/ui/react-components/hooks/useSession.ts +0 -209
  403. package/packages/dashboard/ui/react-components/hooks/useTrajectory.ts +0 -265
  404. package/packages/dashboard/ui/react-components/hooks/useWebSocket.ts +0 -169
  405. package/packages/dashboard/ui/react-components/hooks/useWorkspaceMembers.ts +0 -120
  406. package/packages/dashboard/ui/react-components/hooks/useWorkspaceRepos.ts +0 -73
  407. package/packages/dashboard/ui/react-components/hooks/useWorkspaceStatus.ts +0 -237
  408. package/packages/dashboard/ui/react-components/index.ts +0 -81
  409. package/packages/dashboard/ui/react-components/layout/Header.tsx +0 -355
  410. package/packages/dashboard/ui/react-components/layout/RepoContextHeader.tsx +0 -361
  411. package/packages/dashboard/ui/react-components/layout/Sidebar.archive.test.tsx +0 -126
  412. package/packages/dashboard/ui/react-components/layout/Sidebar.test.tsx +0 -691
  413. package/packages/dashboard/ui/react-components/layout/Sidebar.tsx +0 -930
  414. package/packages/dashboard/ui/react-components/layout/index.ts +0 -7
  415. package/packages/dashboard/ui/react-components/settings/BillingSettingsPanel.tsx +0 -564
  416. package/packages/dashboard/ui/react-components/settings/SettingsPage.tsx +0 -544
  417. package/packages/dashboard/ui/react-components/settings/TeamSettingsPanel.tsx +0 -560
  418. package/packages/dashboard/ui/react-components/settings/WorkspaceSettingsPanel.tsx +0 -1386
  419. package/packages/dashboard/ui/react-components/settings/index.ts +0 -11
  420. package/packages/dashboard/ui/react-components/settings/types.ts +0 -53
  421. package/packages/dashboard/ui/react-components/utils/messageFormatting.tsx +0 -370
  422. package/packages/dashboard/ui/tailwind.config.js +0 -148
  423. package/packages/dashboard/ui/types/index.ts +0 -304
  424. package/packages/dashboard/ui/types/threading.ts +0 -7
  425. package/packages/dashboard/ui-dist/404.html +0 -1
  426. package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
  427. package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
  428. package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_buildManifest.js +0 -1
  429. package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_ssgManifest.js +0 -1
  430. package/packages/dashboard/ui-dist/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  431. package/packages/dashboard/ui-dist/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
  432. package/packages/dashboard/ui-dist/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
  433. package/packages/dashboard/ui-dist/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
  434. package/packages/dashboard/ui-dist/_next/static/chunks/532-bace199897eeab37.js +0 -9
  435. package/packages/dashboard/ui-dist/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
  436. package/packages/dashboard/ui-dist/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  437. package/packages/dashboard/ui-dist/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  438. package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
  439. package/packages/dashboard/ui-dist/_next/static/chunks/847-f1f467060f32afff.js +0 -1
  440. package/packages/dashboard/ui-dist/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  441. package/packages/dashboard/ui-dist/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  442. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  443. package/packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
  444. package/packages/dashboard/ui-dist/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  445. package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
  446. package/packages/dashboard/ui-dist/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  447. package/packages/dashboard/ui-dist/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  448. package/packages/dashboard/ui-dist/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  449. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
  450. package/packages/dashboard/ui-dist/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  451. package/packages/dashboard/ui-dist/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
  452. package/packages/dashboard/ui-dist/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  453. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
  454. package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  455. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
  456. package/packages/dashboard/ui-dist/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  457. package/packages/dashboard/ui-dist/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  458. package/packages/dashboard/ui-dist/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
  459. package/packages/dashboard/ui-dist/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
  460. package/packages/dashboard/ui-dist/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  461. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  462. package/packages/dashboard/ui-dist/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  463. package/packages/dashboard/ui-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  464. package/packages/dashboard/ui-dist/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  465. package/packages/dashboard/ui-dist/_next/static/css/4034f236dd1a3178.css +0 -1
  466. package/packages/dashboard/ui-dist/_next/static/css/6892f8422896ef7a.css +0 -1
  467. package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_buildManifest.js +0 -1
  468. package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_ssgManifest.js +0 -1
  469. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-128.png +0 -0
  470. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-256.png +0 -0
  471. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-32.png +0 -0
  472. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-512.png +0 -0
  473. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-64.png +0 -0
  474. package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo.svg +0 -45
  475. package/packages/dashboard/ui-dist/alt-logos/logo.svg +0 -38
  476. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-128.png +0 -0
  477. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-256.png +0 -0
  478. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-32.png +0 -0
  479. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-512.png +0 -0
  480. package/packages/dashboard/ui-dist/alt-logos/monogram-logo-64.png +0 -0
  481. package/packages/dashboard/ui-dist/alt-logos/monogram-logo.svg +0 -38
  482. package/packages/dashboard/ui-dist/app/onboarding.html +0 -1
  483. package/packages/dashboard/ui-dist/app/onboarding.txt +0 -7
  484. package/packages/dashboard/ui-dist/app.html +0 -1
  485. package/packages/dashboard/ui-dist/app.txt +0 -7
  486. package/packages/dashboard/ui-dist/apple-icon.png +0 -0
  487. package/packages/dashboard/ui-dist/cloud/link.html +0 -1
  488. package/packages/dashboard/ui-dist/cloud/link.txt +0 -7
  489. package/packages/dashboard/ui-dist/complete-profile.html +0 -5
  490. package/packages/dashboard/ui-dist/complete-profile.txt +0 -7
  491. package/packages/dashboard/ui-dist/connect-repos.html +0 -1
  492. package/packages/dashboard/ui-dist/connect-repos.txt +0 -7
  493. package/packages/dashboard/ui-dist/history.html +0 -1
  494. package/packages/dashboard/ui-dist/history.txt +0 -7
  495. package/packages/dashboard/ui-dist/index.html +0 -1
  496. package/packages/dashboard/ui-dist/index.txt +0 -7
  497. package/packages/dashboard/ui-dist/login.html +0 -5
  498. package/packages/dashboard/ui-dist/login.txt +0 -7
  499. package/packages/dashboard/ui-dist/metrics.html +0 -1
  500. package/packages/dashboard/ui-dist/metrics.txt +0 -7
  501. package/packages/dashboard/ui-dist/pricing.html +0 -13
  502. package/packages/dashboard/ui-dist/pricing.txt +0 -7
  503. package/packages/dashboard/ui-dist/providers/setup/claude.html +0 -1
  504. package/packages/dashboard/ui-dist/providers/setup/claude.txt +0 -8
  505. package/packages/dashboard/ui-dist/providers/setup/codex.html +0 -1
  506. package/packages/dashboard/ui-dist/providers/setup/codex.txt +0 -8
  507. package/packages/dashboard/ui-dist/providers/setup/cursor.html +0 -1
  508. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +0 -8
  509. package/packages/dashboard/ui-dist/providers.html +0 -1
  510. package/packages/dashboard/ui-dist/providers.txt +0 -7
  511. package/packages/dashboard/ui-dist/signup.html +0 -6
  512. package/packages/dashboard/ui-dist/signup.txt +0 -7
  513. package/packages/dashboard-server/dist/health-worker-manager.d.ts +0 -62
  514. package/packages/dashboard-server/dist/health-worker-manager.js +0 -144
  515. package/packages/dashboard-server/dist/health-worker.d.ts +0 -9
  516. package/packages/dashboard-server/dist/health-worker.js +0 -79
  517. package/packages/dashboard-server/dist/index.d.ts +0 -18
  518. package/packages/dashboard-server/dist/index.js +0 -17
  519. package/packages/dashboard-server/dist/metrics.d.ts +0 -105
  520. package/packages/dashboard-server/dist/metrics.js +0 -193
  521. package/packages/dashboard-server/dist/needs-attention.d.ts +0 -24
  522. package/packages/dashboard-server/dist/needs-attention.js +0 -78
  523. package/packages/dashboard-server/dist/server.d.ts +0 -25
  524. package/packages/dashboard-server/dist/server.js +0 -5158
  525. package/packages/dashboard-server/dist/start.d.ts +0 -6
  526. package/packages/dashboard-server/dist/start.js +0 -13
  527. package/packages/dashboard-server/dist/types/threading.d.ts +0 -8
  528. package/packages/dashboard-server/dist/types/threading.js +0 -2
  529. package/packages/dashboard-server/dist/user-bridge.d.ts +0 -158
  530. package/packages/dashboard-server/dist/user-bridge.js +0 -390
  531. package/packages/dashboard-server/package.json +0 -55
  532. package/scripts/run-migrations.js +0 -43
  533. package/scripts/setup-stripe-products.ts +0 -312
  534. package/scripts/verify-schema.js +0 -134
@@ -1,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
- `;