@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,90 @@
1
+ /**
2
+ * File search utility for the dashboard file picker.
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ export const FILE_SEARCH_IGNORE_DIRS = new Set([
7
+ 'node_modules',
8
+ '.git',
9
+ 'dist',
10
+ 'build',
11
+ '.next',
12
+ 'coverage',
13
+ '__pycache__',
14
+ '.venv',
15
+ 'venv',
16
+ '.cache',
17
+ '.turbo',
18
+ '.vercel',
19
+ '.nuxt',
20
+ '.output',
21
+ 'vendor',
22
+ 'target',
23
+ '.idea',
24
+ '.vscode',
25
+ ]);
26
+ export const FILE_SEARCH_IGNORE_PATTERNS = [
27
+ /\.lock$/,
28
+ /\.log$/,
29
+ /\.min\.(js|css)$/,
30
+ /\.map$/,
31
+ /\.d\.ts$/,
32
+ /\.pyc$/,
33
+ ];
34
+ export async function searchFiles(rootDir, query, limit) {
35
+ const results = [];
36
+ const normalizedQuery = query.trim().toLowerCase();
37
+ const shouldIgnore = (name, isDirectory) => {
38
+ if (isDirectory) {
39
+ return FILE_SEARCH_IGNORE_DIRS.has(name);
40
+ }
41
+ return FILE_SEARCH_IGNORE_PATTERNS.some((pattern) => pattern.test(name));
42
+ };
43
+ const matches = (relativePath, name) => {
44
+ if (!normalizedQuery)
45
+ return true;
46
+ const lowerPath = relativePath.toLowerCase();
47
+ const lowerName = name.toLowerCase();
48
+ if (normalizedQuery.includes('/')) {
49
+ return lowerPath.includes(normalizedQuery);
50
+ }
51
+ return lowerName.includes(normalizedQuery) || lowerPath.includes(normalizedQuery);
52
+ };
53
+ const visit = async (dir, relativePath = '') => {
54
+ if (results.length >= limit)
55
+ return;
56
+ let entries;
57
+ try {
58
+ entries = await fs.promises.readdir(dir, { withFileTypes: true });
59
+ }
60
+ catch {
61
+ return;
62
+ }
63
+ entries.sort((a, b) => {
64
+ if (a.isDirectory() !== b.isDirectory()) {
65
+ return a.isDirectory() ? -1 : 1;
66
+ }
67
+ return a.name.localeCompare(b.name);
68
+ });
69
+ for (const entry of entries) {
70
+ if (results.length >= limit)
71
+ break;
72
+ if (shouldIgnore(entry.name, entry.isDirectory()))
73
+ continue;
74
+ const entryPath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
75
+ if (matches(entryPath, entry.name)) {
76
+ results.push({
77
+ path: entryPath,
78
+ name: entry.name,
79
+ isDirectory: entry.isDirectory(),
80
+ });
81
+ }
82
+ if (entry.isDirectory()) {
83
+ await visit(path.join(dir, entry.name), entryPath);
84
+ }
85
+ }
86
+ };
87
+ await visit(rootDir);
88
+ return results;
89
+ }
90
+ //# sourceMappingURL=file-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/lib/file-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Unified identity resolution module.
3
+ *
4
+ * Consolidates identity concerns from relaycast-provider-helpers,
5
+ * proxy-server, and utils into a single stateless module.
6
+ *
7
+ * All functions accept an explicit IdentityConfig instead of relying on
8
+ * module-level state.
9
+ */
10
+ export interface IdentityConfig {
11
+ /** Project identity derived from dashboard runtime context. */
12
+ projectIdentity: string;
13
+ /** Relay agent display name (config.agentName), when relevant. */
14
+ relayAgentName?: string;
15
+ /** Additional identities that should be treated as broker aliases. */
16
+ brokerIdentities?: string[];
17
+ }
18
+ /**
19
+ * Simple name normalization -- lowercases and trims.
20
+ */
21
+ export declare function normalizeName(name: string): string;
22
+ /**
23
+ * Dashboard variant detection.
24
+ *
25
+ * Matches:
26
+ * - "Dashboard" (exact, case-insensitive)
27
+ * - "dashboard-reader"
28
+ * - "Dashboard-<hex>" (Relaycast conflict suffix, e.g. Dashboard-5b8c70e5)
29
+ * - "human:dashboard"
30
+ */
31
+ export declare function isDashboardVariant(name: string): boolean;
32
+ /**
33
+ * Broker identity check.
34
+ *
35
+ * Delegates to `@agent-relay/contracts` isBrokerIdentity for standard broker
36
+ * names ("broker" or "broker-*"), and also checks explicit aliases provided
37
+ * by config.
38
+ */
39
+ export declare function isBrokerIdentity(name: string, config: IdentityConfig): boolean;
40
+ /**
41
+ * Full identity resolution.
42
+ *
43
+ * Maps Dashboard variants, broker names, and project-identity aliases back to
44
+ * the canonical `projectIdentity` (or `DASHBOARD_DISPLAY_NAME` when no project
45
+ * identity is configured).
46
+ *
47
+ * Replaces both `normalizeIdentity()` and `resolveRelaycastSenderName()`.
48
+ */
49
+ export declare function resolveIdentity(name: string, config: IdentityConfig): string;
50
+ /**
51
+ * Canonical display name for the dashboard given current config.
52
+ */
53
+ export declare function dashboardDisplayName(config: IdentityConfig): string;
54
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/lib/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWxD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAyB9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CA+B5E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAInE"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Unified identity resolution module.
3
+ *
4
+ * Consolidates identity concerns from relaycast-provider-helpers,
5
+ * proxy-server, and utils into a single stateless module.
6
+ *
7
+ * All functions accept an explicit IdentityConfig instead of relying on
8
+ * module-level state.
9
+ */
10
+ import { DASHBOARD_DISPLAY_NAME, DASHBOARD_READER_NAME } from '../relaycast-provider-types.js';
11
+ /**
12
+ * Check if a name matches the broker identity pattern.
13
+ * Returns true for "broker" or "broker-*" (e.g., "broker-abc123").
14
+ */
15
+ function isBrokerIdentityContract(name) {
16
+ const trimmed = (name ?? '').trim().toLowerCase();
17
+ if (!trimmed)
18
+ return false;
19
+ return trimmed === 'broker' || trimmed.startsWith('broker-');
20
+ }
21
+ /**
22
+ * Simple name normalization -- lowercases and trims.
23
+ */
24
+ export function normalizeName(name) {
25
+ return (name ?? '').trim().toLowerCase();
26
+ }
27
+ /**
28
+ * Dashboard variant detection.
29
+ *
30
+ * Matches:
31
+ * - "Dashboard" (exact, case-insensitive)
32
+ * - "dashboard-reader"
33
+ * - "Dashboard-<hex>" (Relaycast conflict suffix, e.g. Dashboard-5b8c70e5)
34
+ * - "human:dashboard"
35
+ */
36
+ export function isDashboardVariant(name) {
37
+ const trimmed = (name ?? '').trim();
38
+ if (!trimmed)
39
+ return false;
40
+ const lowered = trimmed.toLowerCase();
41
+ if (lowered === DASHBOARD_DISPLAY_NAME.toLowerCase())
42
+ return true;
43
+ if (lowered === DASHBOARD_READER_NAME)
44
+ return true;
45
+ if (lowered === 'human:dashboard')
46
+ return true;
47
+ if (/^dashboard-[0-9a-f]{6,}$/i.test(trimmed))
48
+ return true;
49
+ return false;
50
+ }
51
+ /**
52
+ * Broker identity check.
53
+ *
54
+ * Delegates to `@agent-relay/contracts` isBrokerIdentity for standard broker
55
+ * names ("broker" or "broker-*"), and also checks explicit aliases provided
56
+ * by config.
57
+ */
58
+ export function isBrokerIdentity(name, config) {
59
+ const trimmed = (name ?? '').trim();
60
+ if (!trimmed)
61
+ return false;
62
+ if (isBrokerIdentityContract(trimmed))
63
+ return true;
64
+ const normalized = normalizeName(trimmed);
65
+ const aliases = new Set();
66
+ const addAlias = (value) => {
67
+ const alias = normalizeName(value ?? '');
68
+ if (alias) {
69
+ aliases.add(alias);
70
+ }
71
+ };
72
+ addAlias(config.projectIdentity);
73
+ if (Array.isArray(config.brokerIdentities)) {
74
+ for (const identity of config.brokerIdentities) {
75
+ addAlias(identity);
76
+ }
77
+ }
78
+ return aliases.has(normalized);
79
+ }
80
+ /**
81
+ * Full identity resolution.
82
+ *
83
+ * Maps Dashboard variants, broker names, and project-identity aliases back to
84
+ * the canonical `projectIdentity` (or `DASHBOARD_DISPLAY_NAME` when no project
85
+ * identity is configured).
86
+ *
87
+ * Replaces both `normalizeIdentity()` and `resolveRelaycastSenderName()`.
88
+ */
89
+ export function resolveIdentity(name, config) {
90
+ const trimmed = (name ?? '').trim();
91
+ if (!trimmed)
92
+ return '';
93
+ const fallback = dashboardDisplayName(config);
94
+ // Dashboard variant -> project identity
95
+ if (isDashboardVariant(trimmed)) {
96
+ return fallback;
97
+ }
98
+ // Broker identity -> project identity
99
+ if (isBrokerIdentity(trimmed, config)) {
100
+ return fallback;
101
+ }
102
+ // Project identity itself (case-insensitive match) -> canonical casing
103
+ const lowered = normalizeName(trimmed);
104
+ const projectValue = config.projectIdentity?.trim();
105
+ const projectKey = normalizeName(projectValue ?? '');
106
+ if (projectKey && lowered === projectKey) {
107
+ return projectValue ?? '';
108
+ }
109
+ // Relay agent name -> project identity
110
+ const relayKey = normalizeName(config.relayAgentName ?? '');
111
+ if (relayKey && lowered === relayKey) {
112
+ return fallback;
113
+ }
114
+ return trimmed;
115
+ }
116
+ /**
117
+ * Canonical display name for the dashboard given current config.
118
+ */
119
+ export function dashboardDisplayName(config) {
120
+ return config.projectIdentity?.trim()
121
+ || config.relayAgentName?.trim()
122
+ || DASHBOARD_DISPLAY_NAME;
123
+ }
124
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/lib/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared log sanitization helpers for dashboard log streaming.
3
+ */
4
+ export interface LogChunkResult {
5
+ lines: string[];
6
+ carry: string;
7
+ }
8
+ export interface LogSanitizeOptions {
9
+ /** Keep leading/trailing whitespace after stripping control characters. */
10
+ trimWhitespace?: boolean;
11
+ /**
12
+ * Filter lines that look like spinner/status noise.
13
+ * Keep enabled for compact mock-like displays; disable for raw logs.
14
+ */
15
+ dropNoise?: boolean;
16
+ }
17
+ export declare function sanitizeLogLine(rawLine: string, options?: LogSanitizeOptions): string;
18
+ export declare function sanitizeLogLines(lines: string[], options?: LogSanitizeOptions): string[];
19
+ export declare function splitLogChunk(rawContent: string, carry?: string, options?: LogSanitizeOptions): LogChunkResult;
20
+ //# sourceMappingURL=log-line-cleaner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-line-cleaner.d.ts","sourceRoot":"","sources":["../../src/lib/log-line-cleaner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiHH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAIzF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,MAAM,EAAE,CAO5F;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAS9G"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Shared log sanitization helpers for dashboard log streaming.
3
+ */
4
+ const CLI_SPINNER_GLYPHS = '✳✢✶✻✺✹⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏⣾⣽⣻⢿⡿⣟⣯⣷◐◓◑◒●○◉◎◉·⎿⎽⎾⎷⏺⏵⏢✢✣⣻';
5
+ const CLI_SPINNER_GLYPH_RE = new RegExp(`[${CLI_SPINNER_GLYPHS}]`, 'g');
6
+ const CLI_SPINNER_GLYPH_TEST_RE = new RegExp(`[${CLI_SPINNER_GLYPHS}]`);
7
+ const RUST_WARNING_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z\s+WARN\b.*\bagent_relay_broker\b/i;
8
+ const UI_NOISE_PATTERN = /\b(?:shift\+tab|esc\s*to\s*interrupt|bypass\s+permissions|shimmying|shimming|combobulating|orbiting|nebulizing|simmering|percolating|brewing|distilling|synthesizing|weaving|forging|materializing|catalyzing|conjuring|transmuting|bypass|shim|orbit|comb|thinking|running|working|connecting\s+to)\b/i;
9
+ const TELEMETRY_PATTERN = /agent\s+relay\s+collects\s+anonymous\s+usage\s+data|agent-relay\s+telemetry|agent-relay\s+telemetry\s+disable|learn\s+more:\s*https:\/\/agent-relay\.com\/telemetry/i;
10
+ function stripAnsiAndControls(text) {
11
+ let result = text;
12
+ // OSC / DCS control sequences
13
+ result = result.replace(/\x1b\].*?(?:\x07|\x1b\\)/gs, '');
14
+ result = result.replace(/\x1bP.*?\x1b\\/gs, '');
15
+ // CSI / SGR and legacy ESC sequences
16
+ result = result.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, '');
17
+ result = result.replace(/\x1b[@-Z\\-_]/g, '');
18
+ result = result.replace(/^\[\??\d+[hlKJHfABCDGPXsu]/gm, '');
19
+ // Common literal SGR fragments
20
+ result = result.replace(/\[\d+(?:;\d+)*m/g, '');
21
+ // Normalize CRLF to LF and remove overwrite behavior via carriage returns.
22
+ result = result.replace(/\r\n/g, '\n');
23
+ result = result
24
+ .split('\n')
25
+ .map((line) => {
26
+ if (!line.includes('\r'))
27
+ return line;
28
+ const parts = line.split('\r');
29
+ return parts[parts.length - 1];
30
+ })
31
+ .join('\n');
32
+ // Handle backspace sequences.
33
+ let prev = '';
34
+ while (prev !== result) {
35
+ prev = result;
36
+ result = result.replace(/[^\x08]\x08/g, '');
37
+ }
38
+ result = result.replace(/\x08+/g, '');
39
+ // Remove remaining control bytes and orphaned escape.
40
+ result = result.replace(/\x1b/g, '');
41
+ result = result.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, '');
42
+ return result;
43
+ }
44
+ function isSpinnerFragment(line) {
45
+ const compact = line.replace(/\s+/g, '');
46
+ if (!compact)
47
+ return false;
48
+ if (compact.length <= 2 && CLI_SPINNER_GLYPH_TEST_RE.test(compact)) {
49
+ return true;
50
+ }
51
+ if (compact.length <= 4 && /^(?:b|by|bi|shi|shim|orbit|comb|o|to)$/i.test(compact)) {
52
+ return true;
53
+ }
54
+ const spinGlyphCount = (compact.match(CLI_SPINNER_GLYPH_RE) || []).length;
55
+ if (spinGlyphCount > 0) {
56
+ return compact.length <= 30 || spinGlyphCount / compact.length > 0.4;
57
+ }
58
+ return false;
59
+ }
60
+ function isLikelyNoiseLine(trimmed) {
61
+ if (!trimmed)
62
+ return true;
63
+ const lower = trimmed.toLowerCase();
64
+ const compact = trimmed.replace(/\s+/g, '');
65
+ const symbolsRemoved = trimmed.replace(/[a-zA-Z0-9]/g, '');
66
+ if (trimmed.length <= 2 && /^[^a-zA-Z0-9]+$/.test(trimmed)) {
67
+ return true;
68
+ }
69
+ if (RUST_WARNING_PATTERN.test(trimmed))
70
+ return true;
71
+ if (TELEMETRY_PATTERN.test(lower))
72
+ return true;
73
+ if (UI_NOISE_PATTERN.test(trimmed))
74
+ return true;
75
+ if (compact.length >= 2 && /^(\.{1,4}|[⎿⎽⎾⎷⏺⏵⎺⎼·]+)$/.test(compact)) {
76
+ return true;
77
+ }
78
+ if (isSpinnerFragment(trimmed))
79
+ return true;
80
+ if (symbolsRemoved.length > 0) {
81
+ if (trimmed.length <= 10 && !/[a-zA-Z]/.test(trimmed)) {
82
+ return true;
83
+ }
84
+ if (trimmed.length <= 12) {
85
+ const hasAlpha = /[a-z]/i.test(trimmed);
86
+ if (!hasAlpha)
87
+ return true;
88
+ }
89
+ if (symbolsRemoved.length / trimmed.length > 0.7) {
90
+ return true;
91
+ }
92
+ }
93
+ return false;
94
+ }
95
+ export function sanitizeLogLine(rawLine, options = {}) {
96
+ const { trimWhitespace = false } = options;
97
+ const cleaned = stripAnsiAndControls(rawLine).replace(/\uFEFF/g, '');
98
+ return trimWhitespace ? cleaned.trim() : cleaned.trimEnd();
99
+ }
100
+ export function sanitizeLogLines(lines, options = {}) {
101
+ const { dropNoise = false } = options;
102
+ const sanitized = lines.map((line) => sanitizeLogLine(line, options)).filter((line) => line.length > 0);
103
+ if (!dropNoise) {
104
+ return sanitized;
105
+ }
106
+ return sanitized.filter((line) => !isLikelyNoiseLine(line));
107
+ }
108
+ export function splitLogChunk(rawContent, carry = '', options = {}) {
109
+ const merged = `${carry}${stripAnsiAndControls(rawContent)}`;
110
+ const lines = merged.split('\n');
111
+ const nextCarry = lines.pop() ?? '';
112
+ return {
113
+ lines: sanitizeLogLines(lines, options),
114
+ carry: nextCarry,
115
+ };
116
+ }
117
+ //# sourceMappingURL=log-line-cleaner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-line-cleaner.js","sourceRoot":"","sources":["../../src/lib/log-line-cleaner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Log file reading utilities for standalone worker logs.
3
+ */
4
+ export declare const STANDALONE_LOG_POLL_MS = 1000;
5
+ export declare const STANDALONE_LOG_HISTORY_LINES = 200;
6
+ export declare function getWorkerLogsDir(dataDir: string): string;
7
+ export declare function sanitizeLogAgentName(value: string): string | null;
8
+ export declare function listStandaloneLogAgents(dataDir: string): string[];
9
+ export declare function readRecentLogLines(filePath: string, lineLimit?: number): string[];
10
+ export declare function readLogDelta(filePath: string, offset: number): {
11
+ nextOffset: number;
12
+ content: string;
13
+ };
14
+ //# sourceMappingURL=log-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-reader.d.ts","sourceRoot":"","sources":["../../src/lib/log-reader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOjE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAejE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,SAA+B,GAAG,MAAM,EAAE,CAWvG;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4BzC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Log file reading utilities for standalone worker logs.
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ export const STANDALONE_LOG_POLL_MS = 1000;
7
+ export const STANDALONE_LOG_HISTORY_LINES = 200;
8
+ export function getWorkerLogsDir(dataDir) {
9
+ return path.join(dataDir, 'team', 'worker-logs');
10
+ }
11
+ export function sanitizeLogAgentName(value) {
12
+ const trimmed = value.trim();
13
+ if (!trimmed)
14
+ return null;
15
+ if (trimmed.includes('/') || trimmed.includes('\\') || trimmed.includes('\0')) {
16
+ return null;
17
+ }
18
+ return trimmed;
19
+ }
20
+ export function listStandaloneLogAgents(dataDir) {
21
+ const logsDir = getWorkerLogsDir(dataDir);
22
+ if (!fs.existsSync(logsDir)) {
23
+ return [];
24
+ }
25
+ try {
26
+ return fs
27
+ .readdirSync(logsDir)
28
+ .filter((name) => name.endsWith('.log'))
29
+ .map((name) => name.slice(0, -4))
30
+ .sort((a, b) => a.localeCompare(b));
31
+ }
32
+ catch {
33
+ return [];
34
+ }
35
+ }
36
+ export function readRecentLogLines(filePath, lineLimit = STANDALONE_LOG_HISTORY_LINES) {
37
+ try {
38
+ const content = fs.readFileSync(filePath, 'utf-8');
39
+ const lines = content.split(/\r?\n/);
40
+ if (lines.length > 0 && lines[lines.length - 1] === '') {
41
+ lines.pop();
42
+ }
43
+ return lines.slice(-lineLimit);
44
+ }
45
+ catch {
46
+ return [];
47
+ }
48
+ }
49
+ export function readLogDelta(filePath, offset) {
50
+ let fd;
51
+ try {
52
+ fd = fs.openSync(filePath, 'r');
53
+ const stats = fs.fstatSync(fd);
54
+ const start = stats.size < offset ? 0 : offset;
55
+ if (stats.size <= start) {
56
+ return { nextOffset: start, content: '' };
57
+ }
58
+ const length = stats.size - start;
59
+ const buffer = Buffer.alloc(length);
60
+ fs.readSync(fd, buffer, 0, length, start);
61
+ return {
62
+ nextOffset: stats.size,
63
+ content: buffer.toString('utf-8'),
64
+ };
65
+ }
66
+ catch {
67
+ return { nextOffset: offset, content: '' };
68
+ }
69
+ finally {
70
+ if (fd !== undefined) {
71
+ try {
72
+ fs.closeSync(fd);
73
+ }
74
+ catch {
75
+ // Ignore close failures.
76
+ }
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=log-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-reader.js","sourceRoot":"","sources":["../../src/lib/log-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared message-ID utilities used by both the broker proxy and the
3
+ * Relaycast provider so that ID extraction / generation logic lives in
4
+ * exactly one place.
5
+ */
6
+ /**
7
+ * Extract a message ID from a parsed JSON payload by checking, in order:
8
+ * 1. `event_id`
9
+ * 2. `messageId`
10
+ * 3. `id`
11
+ *
12
+ * Returns `null` when no suitable string field is found.
13
+ */
14
+ export declare function extractMessageId(payload: Record<string, unknown>): string | null;
15
+ /**
16
+ * Generate a synthetic message ID for cases where the upstream does not
17
+ * provide one.
18
+ */
19
+ export declare function syntheticMessageId(): string;
20
+ /**
21
+ * Return `true` when the given ID was generated optimistically by the
22
+ * dashboard client before a server round-trip.
23
+ */
24
+ export declare function isOptimisticId(id: string): boolean;
25
+ /**
26
+ * Return `true` when the given ID looks like a broker event ID (prefixed
27
+ * with `http_`).
28
+ */
29
+ export declare function isBrokerEventId(id: string): boolean;
30
+ //# sourceMappingURL=message-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-id.d.ts","sourceRoot":"","sources":["../../src/lib/message-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAiBhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Shared message-ID utilities used by both the broker proxy and the
3
+ * Relaycast provider so that ID extraction / generation logic lives in
4
+ * exactly one place.
5
+ */
6
+ /**
7
+ * Extract a message ID from a parsed JSON payload by checking, in order:
8
+ * 1. `event_id`
9
+ * 2. `messageId`
10
+ * 3. `id`
11
+ *
12
+ * Returns `null` when no suitable string field is found.
13
+ */
14
+ export function extractMessageId(payload) {
15
+ const eventId = payload.event_id;
16
+ if (typeof eventId === 'string' && eventId.trim()) {
17
+ return eventId;
18
+ }
19
+ const messageId = payload.messageId;
20
+ if (typeof messageId === 'string' && messageId.trim()) {
21
+ return messageId;
22
+ }
23
+ const id = payload.id;
24
+ if (typeof id === 'string' && id.trim()) {
25
+ return id;
26
+ }
27
+ return null;
28
+ }
29
+ /**
30
+ * Generate a synthetic message ID for cases where the upstream does not
31
+ * provide one.
32
+ */
33
+ export function syntheticMessageId() {
34
+ return `synthetic-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
35
+ }
36
+ /**
37
+ * Return `true` when the given ID was generated optimistically by the
38
+ * dashboard client before a server round-trip.
39
+ */
40
+ export function isOptimisticId(id) {
41
+ return id.startsWith('optimistic-');
42
+ }
43
+ /**
44
+ * Return `true` when the given ID looks like a broker event ID (prefixed
45
+ * with `http_`).
46
+ */
47
+ export function isBrokerEventId(id) {
48
+ return id.startsWith('http_');
49
+ }
50
+ //# sourceMappingURL=message-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-id.js","sourceRoot":"","sources":["../../src/lib/message-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACtB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type ProcessUsage = {
2
+ rssBytes: number;
3
+ cpuPercent: number;
4
+ };
5
+ /**
6
+ * Build process-tree metrics helpers with internal sampling caches.
7
+ */
8
+ export declare function createProcessMetrics(): {
9
+ getProcTreeUsage: (rootPid: number) => ProcessUsage;
10
+ };
11
+ //# sourceMappingURL=process-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-metrics.d.ts","sourceRoot":"","sources":["../../src/lib/process-metrics.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAQF;;GAEG;AACH,wBAAgB,oBAAoB;gCAoQC,MAAM,KAAG,YAAY;EAazD"}