@agent-relay/dashboard-server 2.0.82 → 2.0.84

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 (393) hide show
  1. package/dist/index.d.ts +3 -21
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -23
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/attachment-storage.d.ts +10 -0
  6. package/dist/lib/attachment-storage.d.ts.map +1 -0
  7. package/dist/lib/attachment-storage.js +53 -0
  8. package/dist/lib/attachment-storage.js.map +1 -0
  9. package/dist/lib/broadcast.d.ts +18 -0
  10. package/dist/lib/broadcast.d.ts.map +1 -0
  11. package/dist/lib/broadcast.js +118 -0
  12. package/dist/lib/broadcast.js.map +1 -0
  13. package/dist/lib/channel-state.d.ts +32 -0
  14. package/dist/lib/channel-state.d.ts.map +1 -0
  15. package/dist/lib/channel-state.js +146 -0
  16. package/dist/lib/channel-state.js.map +1 -0
  17. package/dist/lib/cli-auth.d.ts +40 -0
  18. package/dist/lib/cli-auth.d.ts.map +1 -0
  19. package/dist/lib/cli-auth.js +144 -0
  20. package/dist/lib/cli-auth.js.map +1 -0
  21. package/dist/lib/cloud-persistence.d.ts +6 -0
  22. package/dist/lib/cloud-persistence.d.ts.map +1 -0
  23. package/dist/lib/cloud-persistence.js +130 -0
  24. package/dist/lib/cloud-persistence.js.map +1 -0
  25. package/dist/lib/data-assembly.d.ts +136 -0
  26. package/dist/lib/data-assembly.d.ts.map +1 -0
  27. package/dist/lib/data-assembly.js +550 -0
  28. package/dist/lib/data-assembly.js.map +1 -0
  29. package/dist/lib/file-search.d.ts +8 -0
  30. package/dist/lib/file-search.d.ts.map +1 -0
  31. package/dist/lib/file-search.js +90 -0
  32. package/dist/lib/file-search.js.map +1 -0
  33. package/dist/lib/identity.d.ts +54 -0
  34. package/dist/lib/identity.d.ts.map +1 -0
  35. package/dist/lib/identity.js +124 -0
  36. package/dist/lib/identity.js.map +1 -0
  37. package/dist/lib/log-line-cleaner.d.ts +20 -0
  38. package/dist/lib/log-line-cleaner.d.ts.map +1 -0
  39. package/dist/lib/log-line-cleaner.js +117 -0
  40. package/dist/lib/log-line-cleaner.js.map +1 -0
  41. package/dist/lib/log-reader.d.ts +14 -0
  42. package/dist/lib/log-reader.d.ts.map +1 -0
  43. package/dist/lib/log-reader.js +80 -0
  44. package/dist/lib/log-reader.js.map +1 -0
  45. package/dist/lib/message-id.d.ts +30 -0
  46. package/dist/lib/message-id.d.ts.map +1 -0
  47. package/dist/lib/message-id.js +50 -0
  48. package/dist/lib/message-id.js.map +1 -0
  49. package/dist/lib/process-metrics.d.ts +11 -0
  50. package/dist/lib/process-metrics.d.ts.map +1 -0
  51. package/dist/lib/process-metrics.js +252 -0
  52. package/dist/lib/process-metrics.js.map +1 -0
  53. package/dist/lib/proxy-route-table.d.ts +16 -0
  54. package/dist/lib/proxy-route-table.d.ts.map +1 -0
  55. package/dist/lib/proxy-route-table.js +73 -0
  56. package/dist/lib/proxy-route-table.js.map +1 -0
  57. package/dist/lib/send-strategy.d.ts +61 -0
  58. package/dist/lib/send-strategy.d.ts.map +1 -0
  59. package/dist/lib/send-strategy.js +134 -0
  60. package/dist/lib/send-strategy.js.map +1 -0
  61. package/dist/lib/server-state.d.ts +115 -0
  62. package/dist/lib/server-state.d.ts.map +1 -0
  63. package/dist/lib/server-state.js +138 -0
  64. package/dist/lib/server-state.js.map +1 -0
  65. package/dist/lib/spawned-agents.d.ts +35 -0
  66. package/dist/lib/spawned-agents.d.ts.map +1 -0
  67. package/dist/lib/spawned-agents.js +323 -0
  68. package/dist/lib/spawned-agents.js.map +1 -0
  69. package/dist/lib/types.d.ts +117 -0
  70. package/dist/lib/types.d.ts.map +1 -0
  71. package/dist/lib/types.js +12 -0
  72. package/dist/lib/types.js.map +1 -0
  73. package/dist/lib/utils.d.ts +71 -0
  74. package/dist/lib/utils.d.ts.map +1 -0
  75. package/dist/lib/utils.js +332 -0
  76. package/dist/lib/utils.js.map +1 -0
  77. package/dist/lib/websocket-runtime.d.ts +17 -0
  78. package/dist/lib/websocket-runtime.d.ts.map +1 -0
  79. package/dist/lib/websocket-runtime.js +76 -0
  80. package/dist/lib/websocket-runtime.js.map +1 -0
  81. package/dist/mocks/fixtures.d.ts +2 -2
  82. package/dist/mocks/fixtures.js +1 -1
  83. package/dist/mocks/routes.d.ts.map +1 -1
  84. package/dist/mocks/routes.js +30 -3
  85. package/dist/mocks/routes.js.map +1 -1
  86. package/dist/mocks/types.d.ts +1 -1
  87. package/dist/mocks/types.js +1 -1
  88. package/dist/proxy-server.d.ts +7 -33
  89. package/dist/proxy-server.d.ts.map +1 -1
  90. package/dist/proxy-server.js +292 -200
  91. package/dist/proxy-server.js.map +1 -1
  92. package/dist/relaycast-provider-helpers.d.ts +40 -0
  93. package/dist/relaycast-provider-helpers.d.ts.map +1 -0
  94. package/dist/relaycast-provider-helpers.js +284 -0
  95. package/dist/relaycast-provider-helpers.js.map +1 -0
  96. package/dist/relaycast-provider-types.d.ts +116 -0
  97. package/dist/relaycast-provider-types.d.ts.map +1 -0
  98. package/dist/relaycast-provider-types.js +6 -0
  99. package/dist/relaycast-provider-types.js.map +1 -0
  100. package/dist/relaycast-provider.d.ts +42 -0
  101. package/dist/relaycast-provider.d.ts.map +1 -0
  102. package/dist/relaycast-provider.js +277 -0
  103. package/dist/relaycast-provider.js.map +1 -0
  104. package/dist/routes/agents.d.ts +7 -0
  105. package/dist/routes/agents.d.ts.map +1 -0
  106. package/dist/routes/agents.js +180 -0
  107. package/dist/routes/agents.js.map +1 -0
  108. package/dist/routes/auth.d.ts +45 -0
  109. package/dist/routes/auth.d.ts.map +1 -0
  110. package/dist/routes/auth.js +261 -0
  111. package/dist/routes/auth.js.map +1 -0
  112. package/dist/routes/broker-proxy.d.ts +7 -0
  113. package/dist/routes/broker-proxy.d.ts.map +1 -0
  114. package/dist/routes/broker-proxy.js +114 -0
  115. package/dist/routes/broker-proxy.js.map +1 -0
  116. package/dist/routes/channels-integrated.d.ts +84 -0
  117. package/dist/routes/channels-integrated.d.ts.map +1 -0
  118. package/dist/routes/channels-integrated.js +644 -0
  119. package/dist/routes/channels-integrated.js.map +1 -0
  120. package/dist/routes/channels.d.ts +7 -0
  121. package/dist/routes/channels.d.ts.map +1 -0
  122. package/dist/routes/channels.js +453 -0
  123. package/dist/routes/channels.js.map +1 -0
  124. package/dist/routes/data.d.ts +7 -0
  125. package/dist/routes/data.d.ts.map +1 -0
  126. package/dist/routes/data.js +108 -0
  127. package/dist/routes/data.js.map +1 -0
  128. package/dist/routes/decisions.d.ts +31 -0
  129. package/dist/routes/decisions.d.ts.map +1 -0
  130. package/dist/routes/decisions.js +109 -0
  131. package/dist/routes/decisions.js.map +1 -0
  132. package/dist/routes/fleet.d.ts +24 -0
  133. package/dist/routes/fleet.d.ts.map +1 -0
  134. package/dist/routes/fleet.js +131 -0
  135. package/dist/routes/fleet.js.map +1 -0
  136. package/dist/routes/health.d.ts +7 -0
  137. package/dist/routes/health.d.ts.map +1 -0
  138. package/dist/routes/health.js +55 -0
  139. package/dist/routes/health.js.map +1 -0
  140. package/dist/routes/history-relaycast.d.ts +8 -0
  141. package/dist/routes/history-relaycast.d.ts.map +1 -0
  142. package/dist/routes/history-relaycast.js +165 -0
  143. package/dist/routes/history-relaycast.js.map +1 -0
  144. package/dist/routes/history.d.ts +13 -0
  145. package/dist/routes/history.d.ts.map +1 -0
  146. package/dist/routes/history.js +205 -0
  147. package/dist/routes/history.js.map +1 -0
  148. package/dist/routes/messaging.d.ts +31 -0
  149. package/dist/routes/messaging.d.ts.map +1 -0
  150. package/dist/routes/messaging.js +182 -0
  151. package/dist/routes/messaging.js.map +1 -0
  152. package/dist/routes/metrics.d.ts +26 -0
  153. package/dist/routes/metrics.d.ts.map +1 -0
  154. package/dist/routes/metrics.js +276 -0
  155. package/dist/routes/metrics.js.map +1 -0
  156. package/dist/routes/reactions.d.ts +9 -0
  157. package/dist/routes/reactions.d.ts.map +1 -0
  158. package/dist/routes/reactions.js +76 -0
  159. package/dist/routes/reactions.js.map +1 -0
  160. package/dist/routes/relay-config.d.ts +4 -0
  161. package/dist/routes/relay-config.d.ts.map +1 -0
  162. package/dist/routes/relay-config.js +50 -0
  163. package/dist/routes/relay-config.js.map +1 -0
  164. package/dist/routes/settings.d.ts +6 -0
  165. package/dist/routes/settings.d.ts.map +1 -0
  166. package/dist/routes/settings.js +119 -0
  167. package/dist/routes/settings.js.map +1 -0
  168. package/dist/routes/spawn.d.ts +74 -0
  169. package/dist/routes/spawn.d.ts.map +1 -0
  170. package/dist/routes/spawn.js +520 -0
  171. package/dist/routes/spawn.js.map +1 -0
  172. package/dist/routes/system.d.ts +21 -0
  173. package/dist/routes/system.d.ts.map +1 -0
  174. package/dist/routes/system.js +186 -0
  175. package/dist/routes/system.js.map +1 -0
  176. package/dist/routes/tasks.d.ts +27 -0
  177. package/dist/routes/tasks.d.ts.map +1 -0
  178. package/dist/routes/tasks.js +103 -0
  179. package/dist/routes/tasks.js.map +1 -0
  180. package/dist/routes/ui.d.ts +6 -0
  181. package/dist/routes/ui.d.ts.map +1 -0
  182. package/dist/routes/ui.js +114 -0
  183. package/dist/routes/ui.js.map +1 -0
  184. package/dist/server.d.ts.map +1 -1
  185. package/dist/server.js +337 -6072
  186. package/dist/server.js.map +1 -1
  187. package/dist/services/broker-spawn-reader.d.ts +40 -0
  188. package/dist/services/broker-spawn-reader.d.ts.map +1 -0
  189. package/dist/services/broker-spawn-reader.js +155 -0
  190. package/dist/services/broker-spawn-reader.js.map +1 -0
  191. package/dist/services/health-worker-manager.d.ts +9 -60
  192. package/dist/services/health-worker-manager.d.ts.map +1 -1
  193. package/dist/services/health-worker-manager.js +18 -148
  194. package/dist/services/health-worker-manager.js.map +1 -1
  195. package/dist/services/index.d.ts +3 -3
  196. package/dist/services/index.d.ts.map +1 -1
  197. package/dist/services/index.js +3 -3
  198. package/dist/services/index.js.map +1 -1
  199. package/dist/services/metrics.d.ts +11 -104
  200. package/dist/services/metrics.d.ts.map +1 -1
  201. package/dist/services/metrics.js +21 -190
  202. package/dist/services/metrics.js.map +1 -1
  203. package/dist/services/needs-attention.d.ts +21 -22
  204. package/dist/services/needs-attention.d.ts.map +1 -1
  205. package/dist/services/needs-attention.js +46 -71
  206. package/dist/services/needs-attention.js.map +1 -1
  207. package/dist/services/user-bridge.d.ts +0 -3
  208. package/dist/services/user-bridge.d.ts.map +1 -1
  209. package/dist/services/user-bridge.js +0 -5
  210. package/dist/services/user-bridge.js.map +1 -1
  211. package/dist/start.d.ts +4 -4
  212. package/dist/start.js +96 -89
  213. package/dist/start.js.map +1 -1
  214. package/dist/types/index.d.ts +13 -16
  215. package/dist/types/index.d.ts.map +1 -1
  216. package/dist/websocket/bridge.d.ts +12 -0
  217. package/dist/websocket/bridge.d.ts.map +1 -0
  218. package/dist/websocket/bridge.js +33 -0
  219. package/dist/websocket/bridge.js.map +1 -0
  220. package/dist/websocket/logs.d.ts +30 -0
  221. package/dist/websocket/logs.d.ts.map +1 -0
  222. package/dist/websocket/logs.js +577 -0
  223. package/dist/websocket/logs.js.map +1 -0
  224. package/dist/websocket/main.d.ts +15 -0
  225. package/dist/websocket/main.d.ts.map +1 -0
  226. package/dist/websocket/main.js +84 -0
  227. package/dist/websocket/main.js.map +1 -0
  228. package/dist/websocket/mock.d.ts +6 -0
  229. package/dist/websocket/mock.d.ts.map +1 -0
  230. package/dist/websocket/mock.js +49 -0
  231. package/dist/websocket/mock.js.map +1 -0
  232. package/dist/websocket/presence.d.ts +74 -0
  233. package/dist/websocket/presence.d.ts.map +1 -0
  234. package/dist/websocket/presence.js +330 -0
  235. package/dist/websocket/presence.js.map +1 -0
  236. package/dist/websocket/proxy.d.ts +6 -0
  237. package/dist/websocket/proxy.d.ts.map +1 -0
  238. package/dist/websocket/proxy.js +39 -0
  239. package/dist/websocket/proxy.js.map +1 -0
  240. package/dist/websocket/standalone.d.ts +17 -0
  241. package/dist/websocket/standalone.d.ts.map +1 -0
  242. package/dist/websocket/standalone.js +268 -0
  243. package/dist/websocket/standalone.js.map +1 -0
  244. package/out/404.html +1 -1
  245. package/out/_next/static/chunks/1028-da5d75e35d1420f1.js +1 -0
  246. package/out/_next/static/chunks/1528-78b17000a7e10bc6.js +2 -0
  247. package/out/_next/static/chunks/1695-4a5d33ba715e09b4.js +1 -0
  248. package/out/_next/static/chunks/1705-36c2180d00a4a569.js +1 -0
  249. package/out/_next/static/chunks/1dd3208c-e1f87c7b3dc1a820.js +1 -0
  250. package/out/_next/static/chunks/3663-47290254b8f6f5dd.js +1 -0
  251. package/out/_next/static/chunks/3677-4b225baf4801d9b9.js +73 -0
  252. package/out/_next/static/chunks/5118-7e8ada2df38eef07.js +1 -0
  253. package/out/_next/static/chunks/5888-15cbe97c90ed5fae.js +1 -0
  254. package/out/_next/static/chunks/6773-a45343a98df3abb5.js +1 -0
  255. package/out/_next/static/chunks/6940-b824612b605e79b3.js +9 -0
  256. package/out/_next/static/chunks/7894-f4a15249082a680d.js +1 -0
  257. package/out/_next/static/chunks/9175-b3617c1e5cbfed0e.js +1 -0
  258. package/out/_next/static/chunks/9372-1a804b8d08c7a236.js +1 -0
  259. package/out/_next/static/chunks/{ab6c8a12-0a58072fbb505134.js → ab6c8a12-91438a812d94ecf0.js} +1 -1
  260. package/out/_next/static/chunks/app/_not-found/page-8e8842f82d204726.js +1 -0
  261. package/out/_next/static/chunks/app/about/page-b78577a7da8fa459.js +1 -0
  262. package/out/_next/static/chunks/app/app/[[...slug]]/page-3dffd65b6344f53e.js +1 -0
  263. package/out/_next/static/chunks/app/app/onboarding/page-b89be9aa6264a5e1.js +1 -0
  264. package/out/_next/static/chunks/app/blog/go-to-bed-wake-up-to-a-finished-product/page-fbd00893ef69e499.js +1 -0
  265. package/out/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-de2ea13649d0b6d3.js +1 -0
  266. package/out/_next/static/chunks/app/blog/page-a08e263c57a156fa.js +1 -0
  267. package/out/_next/static/chunks/app/careers/page-02228e1d6969b232.js +1 -0
  268. package/out/_next/static/chunks/app/changelog/page-1b5c1d79efc6e53a.js +1 -0
  269. package/out/_next/static/chunks/app/cloud/link/page-99654edffffb3af2.js +1 -0
  270. package/out/_next/static/chunks/app/complete-profile/page-59d146e5ddeafc5c.js +1 -0
  271. package/out/_next/static/chunks/app/connect-repos/page-995e16a976a6632c.js +1 -0
  272. package/out/_next/static/chunks/app/contact/page-273396a5ad57bcee.js +1 -0
  273. package/out/_next/static/chunks/app/dev/cli-tools/page-a71b80dcb2d5fc8d.js +1 -0
  274. package/out/_next/static/chunks/app/dev/log-viewer/page-46a6151ae1be0796.js +1 -0
  275. package/out/_next/static/chunks/app/docs/page-7c7cb603b24b7c40.js +1 -0
  276. package/out/_next/static/chunks/app/history/page-0c5cab1dab4e8886.js +1 -0
  277. package/out/_next/static/chunks/app/layout-96d72ba8ef8a43a0.js +1 -0
  278. package/out/_next/static/chunks/app/login/page-0ccbab34213df842.js +1 -0
  279. package/out/_next/static/chunks/app/metrics/page-8616272aeab9c8b0.js +1 -0
  280. package/out/_next/static/chunks/app/page-09ce10603ad9a251.js +1 -0
  281. package/out/_next/static/chunks/app/pricing/page-91c975079120c941.js +1 -0
  282. package/out/_next/static/chunks/app/privacy/{page-c21d51ac2dee3a88.js → page-a49ab271cc686644.js} +1 -1
  283. package/out/_next/static/chunks/app/providers/{page-59114505f4353512.js → page-d775d6eb5bc29e96.js} +1 -1
  284. package/out/_next/static/chunks/app/providers/setup/[provider]/page-ec4ef3cd80de807e.js +1 -0
  285. package/out/_next/static/chunks/app/security/page-d9da9bd9191e8f95.js +1 -0
  286. package/out/_next/static/chunks/app/signup/page-930eca0bf5fd299d.js +1 -0
  287. package/out/_next/static/chunks/app/terms/page-3e4827620b98613c.js +1 -0
  288. package/out/_next/static/chunks/framework-648e1ae7da590300.js +1 -0
  289. package/out/_next/static/chunks/{main-acb1b24265295d6a.js → main-2b1990080c292d92.js} +1 -1
  290. package/out/_next/static/chunks/main-app-9f6b7ff9e754a8f5.js +1 -0
  291. package/out/_next/static/chunks/pages/_app-a077b72e02273ab1.js +1 -0
  292. package/out/_next/static/chunks/pages/_error-84001666436a04e4.js +1 -0
  293. package/out/_next/static/chunks/{webpack-dd93b81e2659669c.js → webpack-7586035f1585f2db.js} +1 -1
  294. package/out/_next/static/css/eb9fc69d1e3d2bed.css +1 -0
  295. package/out/_next/static/{IxfA6RZu4trcsEMYlkQra → g3G0LMdB7lxcrU5mdM54m}/_buildManifest.js +1 -1
  296. package/out/about.html +2 -2
  297. package/out/about.txt +2 -2
  298. package/out/app/onboarding.html +1 -1
  299. package/out/app/onboarding.txt +2 -2
  300. package/out/app.html +1 -1
  301. package/out/app.txt +2 -2
  302. package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +3 -3
  303. package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
  304. package/out/blog/let-them-cook-multi-agent-orchestration.html +2 -2
  305. package/out/blog/let-them-cook-multi-agent-orchestration.txt +2 -2
  306. package/out/blog.html +2 -2
  307. package/out/blog.txt +1 -1
  308. package/out/careers.html +2 -2
  309. package/out/careers.txt +2 -2
  310. package/out/changelog.html +2 -2
  311. package/out/changelog.txt +2 -2
  312. package/out/cloud/link.html +1 -1
  313. package/out/cloud/link.txt +2 -2
  314. package/out/complete-profile.html +2 -2
  315. package/out/complete-profile.txt +2 -2
  316. package/out/connect-repos.html +1 -1
  317. package/out/connect-repos.txt +2 -2
  318. package/out/contact.html +2 -2
  319. package/out/contact.txt +2 -2
  320. package/out/dev/cli-tools.html +1 -0
  321. package/out/dev/cli-tools.txt +7 -0
  322. package/out/dev/log-viewer.html +23 -0
  323. package/out/dev/log-viewer.txt +7 -0
  324. package/out/docs.html +2 -2
  325. package/out/docs.txt +2 -2
  326. package/out/history.html +1 -1
  327. package/out/history.txt +2 -2
  328. package/out/index.html +1 -1
  329. package/out/index.txt +2 -2
  330. package/out/login.html +2 -2
  331. package/out/login.txt +2 -2
  332. package/out/metrics.html +1 -1
  333. package/out/metrics.txt +2 -2
  334. package/out/pricing.html +2 -2
  335. package/out/pricing.txt +2 -2
  336. package/out/privacy.html +2 -2
  337. package/out/privacy.txt +2 -2
  338. package/out/providers/setup/claude.html +1 -1
  339. package/out/providers/setup/claude.txt +2 -2
  340. package/out/providers/setup/codex.html +1 -1
  341. package/out/providers/setup/codex.txt +2 -2
  342. package/out/providers/setup/cursor.html +1 -1
  343. package/out/providers/setup/cursor.txt +2 -2
  344. package/out/providers.html +1 -1
  345. package/out/providers.txt +2 -2
  346. package/out/security.html +2 -2
  347. package/out/security.txt +2 -2
  348. package/out/signup.html +2 -2
  349. package/out/signup.txt +2 -2
  350. package/out/terms.html +2 -2
  351. package/out/terms.txt +2 -2
  352. package/package.json +10 -11
  353. package/out/_next/static/chunks/11-9a2993a37266dcb3.js +0 -9
  354. package/out/_next/static/chunks/118-ae2b650136a5a5fc.js +0 -1
  355. package/out/_next/static/chunks/1dd3208c-40ab0fc0f60392b8.js +0 -1
  356. package/out/_next/static/chunks/202-fc0763dd7488e58f.js +0 -1
  357. package/out/_next/static/chunks/259-83b77fa1b91ba5aa.js +0 -1
  358. package/out/_next/static/chunks/407-0c82986cf79c8ecb.js +0 -1
  359. package/out/_next/static/chunks/528-f5f676996d613c25.js +0 -2
  360. package/out/_next/static/chunks/663-ddb04081febc3678.js +0 -1
  361. package/out/_next/static/chunks/687-88b6b139a6bb0e2e.js +0 -1
  362. package/out/_next/static/chunks/695-51d25b1988644374.js +0 -1
  363. package/out/_next/static/chunks/773-54a2641043c81e55.js +0 -1
  364. package/out/_next/static/chunks/app/_not-found/page-6da9b72091e5b511.js +0 -1
  365. package/out/_next/static/chunks/app/about/page-fff7c6457683f243.js +0 -1
  366. package/out/_next/static/chunks/app/app/[[...slug]]/page-f7eca1b66fb4249b.js +0 -1
  367. package/out/_next/static/chunks/app/app/onboarding/page-129abc5da2e67971.js +0 -1
  368. package/out/_next/static/chunks/app/blog/go-to-bed-wake-up-to-a-finished-product/page-5d5f28fd126b692f.js +0 -1
  369. package/out/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-b194f207fbd91862.js +0 -1
  370. package/out/_next/static/chunks/app/blog/page-b9bd9d8703fca76a.js +0 -1
  371. package/out/_next/static/chunks/app/careers/page-a4bd8d5f4de8f4eb.js +0 -1
  372. package/out/_next/static/chunks/app/changelog/page-9a1f6ad1743d63c5.js +0 -1
  373. package/out/_next/static/chunks/app/cloud/link/page-0844c5699b027c3b.js +0 -1
  374. package/out/_next/static/chunks/app/complete-profile/page-39ed5a67916beb87.js +0 -1
  375. package/out/_next/static/chunks/app/connect-repos/page-297eddee0c39f2a3.js +0 -1
  376. package/out/_next/static/chunks/app/contact/page-3c1dd8690217fade.js +0 -1
  377. package/out/_next/static/chunks/app/docs/page-1875e981f2c3fd13.js +0 -1
  378. package/out/_next/static/chunks/app/history/page-2d5c5695c9e8b40c.js +0 -1
  379. package/out/_next/static/chunks/app/layout-0a4b99656da25511.js +0 -1
  380. package/out/_next/static/chunks/app/login/page-f69c076f5a6fc520.js +0 -1
  381. package/out/_next/static/chunks/app/metrics/page-bebbee055669a17e.js +0 -1
  382. package/out/_next/static/chunks/app/page-0ee604f7070d14c0.js +0 -1
  383. package/out/_next/static/chunks/app/pricing/page-eeae7d594af333b6.js +0 -1
  384. package/out/_next/static/chunks/app/providers/setup/[provider]/page-daf9b3e05e77ae19.js +0 -1
  385. package/out/_next/static/chunks/app/security/page-cd562730fe84a0a2.js +0 -1
  386. package/out/_next/static/chunks/app/signup/page-c242ca08101a84ff.js +0 -1
  387. package/out/_next/static/chunks/app/terms/page-c7001720e7941dc6.js +0 -1
  388. package/out/_next/static/chunks/framework-3664cab31236a9fa.js +0 -1
  389. package/out/_next/static/chunks/main-app-7f73a939a312a228.js +0 -1
  390. package/out/_next/static/chunks/pages/_app-10a93ab5b7c32eb3.js +0 -1
  391. package/out/_next/static/chunks/pages/_error-2d792b2a41857be4.js +0 -1
  392. package/out/_next/static/css/8968d98ed4c4d33f.css +0 -1
  393. /package/out/_next/static/{IxfA6RZu4trcsEMYlkQra → g3G0LMdB7lxcrU5mdM54m}/_ssgManifest.js +0 -0
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Shared types for the dashboard server.
3
+ */
4
+ import type { Express } from 'express';
5
+ import type { Server } from 'http';
6
+ import type { WebSocketServer } from 'ws';
7
+ import type { AgentStatus, Message, RelaycastConfig } from '../relaycast-provider.js';
8
+ export type DashboardMode = 'proxy' | 'standalone' | 'mock';
9
+ export interface DashboardSnapshot {
10
+ agents: AgentStatus[];
11
+ users: AgentStatus[];
12
+ messages: Message[];
13
+ activity: Message[];
14
+ sessions: Array<Record<string, unknown>>;
15
+ summaries: Array<Record<string, unknown>>;
16
+ }
17
+ export interface DashboardChannel {
18
+ id: string;
19
+ name: string;
20
+ description?: string;
21
+ topic?: string;
22
+ visibility: 'public' | 'private';
23
+ status: 'active' | 'archived';
24
+ createdAt: string;
25
+ createdBy: string;
26
+ memberCount: number;
27
+ unreadCount: number;
28
+ hasMentions: boolean;
29
+ isDm: boolean;
30
+ }
31
+ export interface FileSearchResult {
32
+ path: string;
33
+ name: string;
34
+ isDirectory: boolean;
35
+ }
36
+ export interface SpawnedAgentSummary {
37
+ name: string;
38
+ cli: string;
39
+ model?: string;
40
+ cwd?: string;
41
+ pid?: number;
42
+ }
43
+ export interface SpawnedAgentNamesResult {
44
+ names: Set<string>;
45
+ agents: SpawnedAgentSummary[];
46
+ hasSpawnedList: boolean;
47
+ }
48
+ export interface LocalStateAgentSummary {
49
+ name: string;
50
+ cli: string;
51
+ startedAt: string;
52
+ online: boolean;
53
+ pid?: number;
54
+ cwd?: string;
55
+ }
56
+ export declare const EMPTY_DASHBOARD_SNAPSHOT: DashboardSnapshot;
57
+ export interface DashboardServerOptions {
58
+ /** Port to listen on (default: 3888) */
59
+ port?: number;
60
+ /** Relay broker URL for proxy mode */
61
+ relayUrl?: string;
62
+ /** Path to static files directory (default: ../out) */
63
+ staticDir?: string;
64
+ /** Data directory containing relaycast.json credentials */
65
+ dataDir?: string;
66
+ /** Enable verbose logging */
67
+ verbose?: boolean;
68
+ /** Run in mock mode (no relay broker required) */
69
+ mock?: boolean;
70
+ /** CORS allowed origins (comma-separated, or '*' for all) */
71
+ corsOrigins?: string;
72
+ /** Request timeout in milliseconds (default: 30000) */
73
+ requestTimeout?: number;
74
+ }
75
+ export interface DashboardServer {
76
+ app: Express;
77
+ server: Server;
78
+ wss: WebSocketServer;
79
+ close: () => Promise<void>;
80
+ mode: DashboardMode;
81
+ }
82
+ /**
83
+ * Shared context passed to route registration functions.
84
+ */
85
+ export interface RouteContext {
86
+ mode: DashboardMode;
87
+ dataDir: string;
88
+ staticDir: string;
89
+ verbose: boolean;
90
+ relayUrl: string | undefined;
91
+ brokerProxyEnabled: boolean;
92
+ resolveRelaycastConfig: () => RelaycastConfig | null;
93
+ getRelaycastSnapshot: () => Promise<DashboardSnapshot>;
94
+ getRelaycastChannels: () => Promise<{
95
+ channels: DashboardChannel[];
96
+ archivedChannels: DashboardChannel[];
97
+ }>;
98
+ sendRelaycastMessage: (params: {
99
+ to: string;
100
+ message: string;
101
+ from?: string;
102
+ }) => Promise<{
103
+ success: true;
104
+ messageId: string;
105
+ } | {
106
+ success: false;
107
+ status: number;
108
+ error: string;
109
+ }>;
110
+ getSpawnedAgents: () => Promise<{
111
+ names: Set<string> | null;
112
+ agents: SpawnedAgentSummary[] | null;
113
+ }>;
114
+ getLocalAgentNames: () => Set<string> | null;
115
+ filterPhantomAgents: (agents: AgentStatus[], spawnedAgentNames: Set<string> | null, localAgentNames: Set<string> | null) => AgentStatus[];
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared types for the dashboard server.
3
+ */
4
+ export const EMPTY_DASHBOARD_SNAPSHOT = {
5
+ agents: [],
6
+ users: [],
7
+ messages: [],
8
+ activity: [],
9
+ sessions: [],
10
+ summaries: [],
11
+ };
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8DH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;CACd,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Pure utility functions and constants extracted from proxy-server.ts.
3
+ */
4
+ import type { Response } from 'express';
5
+ import type { DashboardChannel } from './types.js';
6
+ export declare const PHANTOM_OFFLINE_MAX_AGE_MS: number;
7
+ export declare const SPAWNED_CACHE_TTL_MS = 3000;
8
+ export declare const STANDALONE_WS_POLL_MS = 3000;
9
+ export declare const WORKFLOW_BOOTSTRAP_TASK = "You are connected to Agent Relay. Wait for relay messages and respond using Relaycast MCP tools.";
10
+ export declare const WORKFLOW_CONVENTIONS: string;
11
+ export declare function normalizeRelayUrl(relayUrl: string | undefined): string | undefined;
12
+ export declare function withWorkflowConventions(task: string | undefined, includeWorkflowConventions: boolean): string | undefined;
13
+ export declare function parseTimestamp(value: string | undefined): number | null;
14
+ export declare function countOnlineAgents(agents: Array<{
15
+ status?: string;
16
+ }>): number;
17
+ export { normalizeName } from './identity.js';
18
+ export declare function isDirectRecipient(target: string): boolean;
19
+ export declare function parseCommandDescriptor(rawCli: string | undefined, rawArgs?: unknown, rawModel?: string): {
20
+ cli: string;
21
+ args: string[];
22
+ model?: string;
23
+ };
24
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
25
+ export declare function normalizeChannelTarget(channel: string): string;
26
+ export declare function normalizeChannelName(channel: string): string;
27
+ export declare function parseInviteMembers(invites: unknown): Array<{
28
+ id: string;
29
+ type: 'user' | 'agent';
30
+ }>;
31
+ export declare function mapChannelForDashboard(channel: {
32
+ id: string;
33
+ name: string;
34
+ topic: string | null;
35
+ member_count?: number;
36
+ created_at: string;
37
+ is_archived: boolean;
38
+ }): DashboardChannel;
39
+ export declare function sendHtmlFileOrFallback(res: Response, filePath: string, fallbackHtml?: string, statusIfMissing?: number): void;
40
+ /**
41
+ * Get the host to bind to.
42
+ * In cloud environments, bind to '::' (IPv6 any) which also accepts IPv4 on dual-stack.
43
+ */
44
+ export declare function getBindHost(): string | undefined;
45
+ export declare function isPidAlive(pid: number): boolean;
46
+ export declare function toIsoTimestamp(epochSeconds: unknown): string;
47
+ export interface TeamWorkerLike {
48
+ name: string;
49
+ team?: string;
50
+ }
51
+ export interface TeamSpawnReaderLike {
52
+ getActiveWorkers(): TeamWorkerLike[];
53
+ }
54
+ export interface UserBridgeLike {
55
+ isUserRegistered(username: string): boolean;
56
+ }
57
+ /**
58
+ * Check if an agent has heartbeated recently in agents.json.
59
+ */
60
+ export declare function isAgentOnline(teamDir: string, agentName: string): boolean;
61
+ export declare function isRemoteAgent(teamDir: string, agentName: string): boolean;
62
+ export declare function isRemoteUser(teamDir: string, username: string): boolean;
63
+ export declare function isUserOnline(teamDir: string, username: string, onlineUsers: Map<string, unknown>, userBridge?: UserBridgeLike): boolean;
64
+ export declare function isRecipientOnline(teamDir: string, name: string, onlineUsers: Map<string, unknown>, userBridge?: UserBridgeLike): boolean;
65
+ /**
66
+ * Resolve team members from teams config, active workers, and agents.json.
67
+ */
68
+ export declare function getTeamMembers(teamName: string, projectRoot: string | undefined, dataDir: string, teamDir: string, spawnReader?: TeamSpawnReaderLike): string[];
69
+ export declare function isValidUsername(username: unknown): username is string;
70
+ export declare function isValidAvatarUrl(url: unknown): url is string | undefined;
71
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,0BAA0B,QAAgB,CAAC;AACxD,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,uBAAuB,qGACgE,CAAC;AACrG,eAAO,MAAM,oBAAoB,QAOrB,CAAC;AAEb,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKlF;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,0BAA0B,EAAE,OAAO,GAClC,MAAM,GAAG,SAAS,CAepB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAI5E;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,CAAC,EAAE,OAAO,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAqCjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAiClG;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,gBAAgB,CAiBnB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,SAAM,GACpB,IAAI,CAYN;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAUhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAK5D;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,IAAI,cAAc,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBzE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAazE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAavE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAGT;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,mBAAmB,GAChC,MAAM,EAAE,CAkCV;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,MAAM,CAQrE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,GAAG,SAAS,CAiBxE"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Pure utility functions and constants extracted from proxy-server.ts.
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import { loadTeamsConfig } from '@agent-relay/config';
7
+ export const PHANTOM_OFFLINE_MAX_AGE_MS = 5 * 60 * 1000;
8
+ export const SPAWNED_CACHE_TTL_MS = 3000;
9
+ export const STANDALONE_WS_POLL_MS = 3000;
10
+ export const WORKFLOW_BOOTSTRAP_TASK = 'You are connected to Agent Relay. Wait for relay messages and respond using Relaycast MCP tools.';
11
+ export const WORKFLOW_CONVENTIONS = [
12
+ 'Messaging requirements:',
13
+ '- When you receive `Relay message from <sender> ...`, reply using `relay_send(to: "<sender>", message: "...")`.',
14
+ '- Send `ACK: ...` when you receive a task.',
15
+ '- Send `DONE: ...` when the task is complete.',
16
+ '- Do not reply only in terminal text; send the response via relay_send.',
17
+ '- Use relay_inbox() and relay_who() when context is missing.',
18
+ ].join('\n');
19
+ export function normalizeRelayUrl(relayUrl) {
20
+ if (!relayUrl)
21
+ return undefined;
22
+ const trimmed = relayUrl.trim();
23
+ if (!trimmed)
24
+ return undefined;
25
+ return trimmed.replace(/\/+$/, '');
26
+ }
27
+ export function withWorkflowConventions(task, includeWorkflowConventions) {
28
+ const normalized = typeof task === 'string' ? task.trim() : '';
29
+ if (!includeWorkflowConventions) {
30
+ return normalized.length > 0 ? normalized : undefined;
31
+ }
32
+ if (normalized.length === 0) {
33
+ return `${WORKFLOW_BOOTSTRAP_TASK}\n\n${WORKFLOW_CONVENTIONS}`;
34
+ }
35
+ const lower = normalized.toLowerCase();
36
+ const alreadyConfigured = lower.includes('relay_send(') || (lower.includes('ack:') && lower.includes('done:'));
37
+ return alreadyConfigured ? normalized : `${normalized}\n\n${WORKFLOW_CONVENTIONS}`;
38
+ }
39
+ export function parseTimestamp(value) {
40
+ if (!value)
41
+ return null;
42
+ const timestamp = new Date(value).getTime();
43
+ return Number.isNaN(timestamp) ? null : timestamp;
44
+ }
45
+ export function countOnlineAgents(agents) {
46
+ return agents.reduce((count, agent) => {
47
+ return (agent.status ?? '').toLowerCase() === 'online' ? count + 1 : count;
48
+ }, 0);
49
+ }
50
+ export { normalizeName } from './identity.js';
51
+ export function isDirectRecipient(target) {
52
+ const trimmed = target.trim();
53
+ if (!trimmed)
54
+ return false;
55
+ return !trimmed.startsWith('#') && !trimmed.startsWith('dm:');
56
+ }
57
+ export function parseCommandDescriptor(rawCli, rawArgs, rawModel) {
58
+ const cliSource = typeof rawCli === 'string' ? rawCli.trim() : '';
59
+ const cliTokens = cliSource ? cliSource.split(/\s+/) : [];
60
+ const cli = cliTokens[0] ?? 'unknown';
61
+ const inlineArgs = cliTokens.slice(1);
62
+ const extraArgs = Array.isArray(rawArgs)
63
+ ? rawArgs.filter((arg) => typeof arg === 'string' && arg.trim().length > 0)
64
+ : [];
65
+ const combinedArgs = [...inlineArgs, ...extraArgs];
66
+ const filteredArgs = [];
67
+ let model = typeof rawModel === 'string' && rawModel.trim() ? rawModel.trim() : undefined;
68
+ for (let index = 0; index < combinedArgs.length; index += 1) {
69
+ const arg = combinedArgs[index];
70
+ if (arg === '--model') {
71
+ const next = combinedArgs[index + 1];
72
+ if (!model && typeof next === 'string' && next.trim()) {
73
+ model = next.trim();
74
+ }
75
+ index += 1;
76
+ continue;
77
+ }
78
+ if (arg.startsWith('--model=')) {
79
+ if (!model) {
80
+ const value = arg.slice('--model='.length).trim();
81
+ if (value) {
82
+ model = value;
83
+ }
84
+ }
85
+ continue;
86
+ }
87
+ filteredArgs.push(arg);
88
+ }
89
+ return { cli, args: filteredArgs, model };
90
+ }
91
+ export function isRecord(value) {
92
+ return typeof value === 'object' && value !== null;
93
+ }
94
+ export function normalizeChannelTarget(channel) {
95
+ const trimmed = channel.trim();
96
+ if (!trimmed)
97
+ return '';
98
+ if (trimmed.startsWith('#') || trimmed.startsWith('dm:')) {
99
+ return trimmed;
100
+ }
101
+ return `#${trimmed}`;
102
+ }
103
+ export function normalizeChannelName(channel) {
104
+ const target = normalizeChannelTarget(channel);
105
+ if (target.startsWith('#')) {
106
+ return target.slice(1);
107
+ }
108
+ return target;
109
+ }
110
+ export function parseInviteMembers(invites) {
111
+ if (typeof invites === 'string') {
112
+ return invites
113
+ .split(',')
114
+ .map((value) => value.trim())
115
+ .filter(Boolean)
116
+ .map((id) => ({ id, type: 'agent' }));
117
+ }
118
+ if (Array.isArray(invites)) {
119
+ return invites
120
+ .map((item) => {
121
+ if (typeof item === 'string') {
122
+ const id = item.trim();
123
+ return id ? { id, type: 'agent' } : null;
124
+ }
125
+ if (!isRecord(item) || typeof item.id !== 'string') {
126
+ return null;
127
+ }
128
+ const id = item.id.trim();
129
+ if (!id) {
130
+ return null;
131
+ }
132
+ const type = item.type === 'user' ? 'user' : 'agent';
133
+ return { id, type };
134
+ })
135
+ .filter((item) => item !== null);
136
+ }
137
+ return [];
138
+ }
139
+ export function mapChannelForDashboard(channel) {
140
+ const channelId = channel.name.startsWith('#') ? channel.name : `#${channel.name}`;
141
+ return {
142
+ id: channelId,
143
+ name: channel.name,
144
+ description: channel.topic ?? undefined,
145
+ topic: channel.topic ?? undefined,
146
+ visibility: 'public',
147
+ status: channel.is_archived ? 'archived' : 'active',
148
+ createdAt: channel.created_at,
149
+ createdBy: 'system',
150
+ memberCount: channel.member_count ?? 0,
151
+ unreadCount: 0,
152
+ hasMentions: false,
153
+ isDm: channel.name.startsWith('dm:'),
154
+ };
155
+ }
156
+ export function sendHtmlFileOrFallback(res, filePath, fallbackHtml, statusIfMissing = 404) {
157
+ if (fs.existsSync(filePath)) {
158
+ res.sendFile(path.resolve(filePath));
159
+ return;
160
+ }
161
+ if (fallbackHtml) {
162
+ res.type('html').send(fallbackHtml);
163
+ return;
164
+ }
165
+ res.status(statusIfMissing).json({ error: 'Not found' });
166
+ }
167
+ /**
168
+ * Get the host to bind to.
169
+ * In cloud environments, bind to '::' (IPv6 any) which also accepts IPv4 on dual-stack.
170
+ */
171
+ export function getBindHost() {
172
+ if (process.env.BIND_HOST) {
173
+ return process.env.BIND_HOST;
174
+ }
175
+ const isCloudEnvironment = process.env.FLY_APP_NAME ||
176
+ process.env.WORKSPACE_ID ||
177
+ process.env.RELAY_WORKSPACE_ID ||
178
+ process.env.RUNNING_IN_DOCKER === 'true';
179
+ return isCloudEnvironment ? '::' : undefined;
180
+ }
181
+ export function isPidAlive(pid) {
182
+ try {
183
+ process.kill(pid, 0);
184
+ return true;
185
+ }
186
+ catch {
187
+ return false;
188
+ }
189
+ }
190
+ export function toIsoTimestamp(epochSeconds) {
191
+ if (typeof epochSeconds !== 'number' || !Number.isFinite(epochSeconds) || epochSeconds <= 0) {
192
+ return new Date(0).toISOString();
193
+ }
194
+ return new Date(epochSeconds * 1000).toISOString();
195
+ }
196
+ /**
197
+ * Check if an agent has heartbeated recently in agents.json.
198
+ */
199
+ export function isAgentOnline(teamDir, agentName) {
200
+ if (agentName === '*')
201
+ return true;
202
+ const agentsPath = path.join(teamDir, 'agents.json');
203
+ if (!fs.existsSync(agentsPath))
204
+ return false;
205
+ try {
206
+ const data = JSON.parse(fs.readFileSync(agentsPath, 'utf-8'));
207
+ const agent = data.agents?.find((a) => a.name === agentName);
208
+ if (!agent || !agent.lastSeen)
209
+ return false;
210
+ const thirtySecondsAgo = Date.now() - 30 * 1000;
211
+ return new Date(agent.lastSeen).getTime() > thirtySecondsAgo;
212
+ }
213
+ catch {
214
+ return false;
215
+ }
216
+ }
217
+ export function isRemoteAgent(teamDir, agentName) {
218
+ const remoteAgentsPath = path.join(teamDir, 'remote-agents.json');
219
+ if (!fs.existsSync(remoteAgentsPath))
220
+ return false;
221
+ try {
222
+ const data = JSON.parse(fs.readFileSync(remoteAgentsPath, 'utf-8'));
223
+ if (data.updatedAt && Date.now() - data.updatedAt > 60 * 1000) {
224
+ return false;
225
+ }
226
+ return data.agents?.some((a) => a.name === agentName) ?? false;
227
+ }
228
+ catch {
229
+ return false;
230
+ }
231
+ }
232
+ export function isRemoteUser(teamDir, username) {
233
+ const remoteUsersPath = path.join(teamDir, 'remote-users.json');
234
+ if (!fs.existsSync(remoteUsersPath))
235
+ return false;
236
+ try {
237
+ const data = JSON.parse(fs.readFileSync(remoteUsersPath, 'utf-8'));
238
+ if (data.updatedAt && Date.now() - data.updatedAt > 60 * 1000) {
239
+ return false;
240
+ }
241
+ return data.users?.some((u) => u.name === username) ?? false;
242
+ }
243
+ catch {
244
+ return false;
245
+ }
246
+ }
247
+ export function isUserOnline(teamDir, username, onlineUsers, userBridge) {
248
+ if (username === '*')
249
+ return true;
250
+ return onlineUsers.has(username) || userBridge?.isUserRegistered(username) === true || isRemoteUser(teamDir, username);
251
+ }
252
+ export function isRecipientOnline(teamDir, name, onlineUsers, userBridge) {
253
+ return (isAgentOnline(teamDir, name) ||
254
+ isRemoteAgent(teamDir, name) ||
255
+ isUserOnline(teamDir, name, onlineUsers, userBridge));
256
+ }
257
+ /**
258
+ * Resolve team members from teams config, active workers, and agents.json.
259
+ */
260
+ export function getTeamMembers(teamName, projectRoot, dataDir, teamDir, spawnReader) {
261
+ const members = new Set();
262
+ const teamsConfig = loadTeamsConfig(projectRoot || dataDir);
263
+ if (teamsConfig && teamsConfig.team === teamName) {
264
+ for (const agent of teamsConfig.agents) {
265
+ members.add(agent.name);
266
+ }
267
+ }
268
+ if (spawnReader) {
269
+ const activeWorkers = spawnReader.getActiveWorkers();
270
+ for (const worker of activeWorkers) {
271
+ if (worker.team === teamName) {
272
+ members.add(worker.name);
273
+ }
274
+ }
275
+ }
276
+ const agentsPath = path.join(teamDir, 'agents.json');
277
+ if (fs.existsSync(agentsPath)) {
278
+ try {
279
+ const data = JSON.parse(fs.readFileSync(agentsPath, 'utf-8'));
280
+ for (const agent of (data.agents || [])) {
281
+ if (agent.team === teamName) {
282
+ members.add(agent.name);
283
+ }
284
+ }
285
+ }
286
+ catch {
287
+ // Ignore parse errors.
288
+ }
289
+ }
290
+ return Array.from(members);
291
+ }
292
+ export function isValidUsername(username) {
293
+ if (typeof username !== 'string')
294
+ return false;
295
+ if (username.length === 0 || username.length > 50)
296
+ return false;
297
+ if (!/^[a-zA-Z0-9]/.test(username) || !/[a-zA-Z0-9]$/.test(username))
298
+ return false;
299
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9 _.-]*[a-zA-Z0-9]$/.test(username) && username.length > 1)
300
+ return false;
301
+ if (username.length === 1 && !/^[a-zA-Z0-9]$/.test(username))
302
+ return false;
303
+ if (/ /.test(username))
304
+ return false;
305
+ return true;
306
+ }
307
+ export function isValidAvatarUrl(url) {
308
+ if (url === undefined || url === null)
309
+ return true;
310
+ if (typeof url !== 'string')
311
+ return false;
312
+ try {
313
+ const parsed = new URL(url);
314
+ if (parsed.protocol !== 'https:')
315
+ return false;
316
+ if (parsed.hostname === 'avatars.githubusercontent.com' ||
317
+ parsed.hostname === 'github.com' ||
318
+ parsed.hostname.endsWith('.githubusercontent.com'))
319
+ return true;
320
+ if (parsed.hostname === 'www.gravatar.com' ||
321
+ parsed.hostname === 'gravatar.com' ||
322
+ parsed.hostname === 'secure.gravatar.com')
323
+ return true;
324
+ if (parsed.hostname === 'ui-avatars.com')
325
+ return true;
326
+ return false;
327
+ }
328
+ catch {
329
+ return false;
330
+ }
331
+ }
332
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Server } from 'http';
2
+ import type { WebSocket, WebSocketServer } from 'ws';
3
+ export interface WebSocketRuntimeDeps {
4
+ server: Server;
5
+ wss: WebSocketServer;
6
+ wssBridge: WebSocketServer;
7
+ wssLogs: WebSocketServer;
8
+ wssPresence: WebSocketServer;
9
+ mainClientAlive: WeakMap<WebSocket, boolean>;
10
+ bridgeClientAlive: WeakMap<WebSocket, boolean>;
11
+ debug: (message: string) => void;
12
+ }
13
+ /**
14
+ * Configure ping/pong health checks, HTTP upgrade routing, and server-level WS error handlers.
15
+ */
16
+ export declare function setupWebSocketRuntime(deps: WebSocketRuntimeDeps): void;
17
+ //# sourceMappingURL=websocket-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/websocket-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,eAAe,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,iBAAiB,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CA4FtE"}