agent-relay 2.0.0 → 2.0.4

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 (360) hide show
  1. package/deploy/workspace/entrypoint.sh +4 -0
  2. package/dist/dashboard/out/404.html +1 -1
  3. package/dist/dashboard/out/app/onboarding.html +1 -1
  4. package/dist/dashboard/out/app/onboarding.txt +1 -1
  5. package/dist/dashboard/out/app.html +1 -1
  6. package/dist/dashboard/out/app.txt +1 -1
  7. package/dist/dashboard/out/cloud/link.html +1 -1
  8. package/dist/dashboard/out/cloud/link.txt +1 -1
  9. package/dist/dashboard/out/connect-repos.html +1 -1
  10. package/dist/dashboard/out/connect-repos.txt +1 -1
  11. package/dist/dashboard/out/history.html +1 -1
  12. package/dist/dashboard/out/history.txt +1 -1
  13. package/dist/dashboard/out/index.html +1 -1
  14. package/dist/dashboard/out/index.txt +1 -1
  15. package/dist/dashboard/out/login.html +1 -1
  16. package/dist/dashboard/out/login.txt +1 -1
  17. package/dist/dashboard/out/metrics.html +1 -1
  18. package/dist/dashboard/out/metrics.txt +1 -1
  19. package/dist/dashboard/out/pricing.html +1 -1
  20. package/dist/dashboard/out/pricing.txt +1 -1
  21. package/dist/dashboard/out/providers/setup/claude.html +1 -1
  22. package/dist/dashboard/out/providers/setup/claude.txt +1 -1
  23. package/dist/dashboard/out/providers/setup/codex.html +1 -1
  24. package/dist/dashboard/out/providers/setup/codex.txt +1 -1
  25. package/dist/dashboard/out/providers/setup/cursor.html +1 -1
  26. package/dist/dashboard/out/providers/setup/cursor.txt +1 -1
  27. package/dist/dashboard/out/providers.html +1 -1
  28. package/dist/dashboard/out/providers.txt +1 -1
  29. package/dist/dashboard/out/signup.html +1 -1
  30. package/dist/dashboard/out/signup.txt +1 -1
  31. package/dist/src/cli/index.js +7 -5
  32. package/package.json +10 -10
  33. package/packages/api-types/package.json +1 -1
  34. package/packages/bridge/dist/spawner.js +3 -1
  35. package/packages/bridge/package.json +12 -7
  36. package/packages/cloud/package.json +11 -6
  37. package/packages/config/dist/project-namespace.d.ts +4 -0
  38. package/packages/config/dist/project-namespace.js +8 -0
  39. package/packages/config/dist/relay-config.d.ts +14 -6
  40. package/packages/config/dist/relay-config.js +14 -6
  41. package/packages/config/package.json +7 -2
  42. package/packages/continuity/package.json +6 -1
  43. package/packages/daemon/package.json +16 -11
  44. package/packages/dashboard/dist/server.js +89 -17
  45. package/packages/dashboard/package.json +14 -22
  46. package/packages/dashboard/ui/react-components/SpawnModal.tsx +119 -29
  47. package/packages/dashboard/ui-dist/404.html +1 -1
  48. package/packages/dashboard/ui-dist/_next/static/chunks/677-7323947c23b35979.js +1 -0
  49. package/packages/dashboard/ui-dist/app/onboarding.html +1 -1
  50. package/packages/dashboard/ui-dist/app/onboarding.txt +1 -1
  51. package/packages/dashboard/ui-dist/app.html +1 -1
  52. package/packages/dashboard/ui-dist/app.txt +1 -1
  53. package/packages/dashboard/ui-dist/cloud/link.html +1 -1
  54. package/packages/dashboard/ui-dist/cloud/link.txt +1 -1
  55. package/packages/dashboard/ui-dist/connect-repos.html +1 -1
  56. package/packages/dashboard/ui-dist/connect-repos.txt +1 -1
  57. package/packages/dashboard/ui-dist/history.html +1 -1
  58. package/packages/dashboard/ui-dist/history.txt +1 -1
  59. package/packages/dashboard/ui-dist/index.html +1 -1
  60. package/packages/dashboard/ui-dist/index.txt +1 -1
  61. package/packages/dashboard/ui-dist/login.html +1 -1
  62. package/packages/dashboard/ui-dist/login.txt +1 -1
  63. package/packages/dashboard/ui-dist/metrics.html +1 -1
  64. package/packages/dashboard/ui-dist/metrics.txt +1 -1
  65. package/packages/dashboard/ui-dist/pricing.html +1 -1
  66. package/packages/dashboard/ui-dist/pricing.txt +1 -1
  67. package/packages/dashboard/ui-dist/providers/setup/claude.html +1 -1
  68. package/packages/dashboard/ui-dist/providers/setup/claude.txt +1 -1
  69. package/packages/dashboard/ui-dist/providers/setup/codex.html +1 -1
  70. package/packages/dashboard/ui-dist/providers/setup/codex.txt +1 -1
  71. package/packages/dashboard/ui-dist/providers/setup/cursor.html +1 -1
  72. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +1 -1
  73. package/packages/dashboard/ui-dist/providers.html +1 -1
  74. package/packages/dashboard/ui-dist/providers.txt +1 -1
  75. package/packages/dashboard/ui-dist/signup.html +1 -1
  76. package/packages/dashboard/ui-dist/signup.txt +1 -1
  77. package/packages/dashboard-server/package.json +18 -12
  78. package/packages/hooks/package.json +9 -4
  79. package/packages/mcp/README.md +135 -19
  80. package/packages/mcp/dist/cloud.js +50 -1
  81. package/packages/mcp/package.json +1 -1
  82. package/packages/memory/package.json +7 -2
  83. package/packages/policy/package.json +7 -2
  84. package/packages/protocol/package.json +6 -1
  85. package/packages/resiliency/package.json +6 -1
  86. package/packages/sdk/README.md +160 -43
  87. package/packages/sdk/dist/client.d.ts +99 -3
  88. package/packages/sdk/dist/client.js +113 -6
  89. package/packages/sdk/dist/discovery.d.ts +29 -0
  90. package/packages/sdk/dist/discovery.js +126 -0
  91. package/packages/sdk/dist/index.d.ts +1 -0
  92. package/packages/sdk/dist/index.js +2 -0
  93. package/packages/sdk/dist/standalone.js +1 -0
  94. package/packages/sdk/package.json +2 -2
  95. package/packages/spawner/package.json +2 -2
  96. package/packages/state/package.json +6 -1
  97. package/packages/storage/package.json +7 -2
  98. package/packages/trajectory/package.json +7 -2
  99. package/packages/user-directory/package.json +7 -2
  100. package/packages/utils/package.json +6 -1
  101. package/packages/wrapper/dist/base-wrapper.d.ts +25 -1
  102. package/packages/wrapper/dist/base-wrapper.js +44 -2
  103. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts +2 -0
  104. package/packages/wrapper/dist/relay-pty-orchestrator.js +55 -10
  105. package/packages/wrapper/dist/shared.d.ts +25 -0
  106. package/packages/wrapper/dist/shared.js +40 -0
  107. package/packages/wrapper/dist/tmux-wrapper.d.ts +7 -0
  108. package/packages/wrapper/dist/tmux-wrapper.js +62 -9
  109. package/packages/wrapper/package.json +7 -7
  110. package/.turbo/cache/013415461711937f-meta.json +0 -1
  111. package/.turbo/cache/013415461711937f.tar.zst +0 -0
  112. package/.turbo/cache/0562b1ff326acd6d-meta.json +0 -1
  113. package/.turbo/cache/0562b1ff326acd6d.tar.zst +0 -0
  114. package/.turbo/cache/0b46e0e17254882f-meta.json +0 -1
  115. package/.turbo/cache/0b46e0e17254882f.tar.zst +0 -0
  116. package/.turbo/cache/3799eda981d53d14-meta.json +0 -1
  117. package/.turbo/cache/3799eda981d53d14.tar.zst +0 -0
  118. package/.turbo/cache/47e9d8f404ed064d-meta.json +0 -1
  119. package/.turbo/cache/47e9d8f404ed064d.tar.zst +0 -0
  120. package/.turbo/cache/4cde1d1e5b298099-meta.json +0 -1
  121. package/.turbo/cache/4cde1d1e5b298099.tar.zst +0 -0
  122. package/.turbo/cache/538eea955c0936ef-meta.json +0 -1
  123. package/.turbo/cache/538eea955c0936ef.tar.zst +0 -0
  124. package/.turbo/cache/5dceac7f229f5d5d-meta.json +0 -1
  125. package/.turbo/cache/5dceac7f229f5d5d.tar.zst +0 -0
  126. package/.turbo/cache/64c15b201819367d-meta.json +0 -1
  127. package/.turbo/cache/64c15b201819367d.tar.zst +0 -0
  128. package/.turbo/cache/6d6a21a05efca434-meta.json +0 -1
  129. package/.turbo/cache/6d6a21a05efca434.tar.zst +0 -0
  130. package/.turbo/cache/7562610cb03ec040-meta.json +0 -1
  131. package/.turbo/cache/7562610cb03ec040.tar.zst +0 -0
  132. package/.turbo/cache/81a2456e17af4d7f-meta.json +0 -1
  133. package/.turbo/cache/81a2456e17af4d7f.tar.zst +0 -0
  134. package/.turbo/cache/823fc2a7b12f724c-meta.json +0 -1
  135. package/.turbo/cache/823fc2a7b12f724c.tar.zst +0 -0
  136. package/.turbo/cache/9daad16a073d1f91-meta.json +0 -1
  137. package/.turbo/cache/9daad16a073d1f91.tar.zst +0 -0
  138. package/.turbo/cache/b81ccbab0a606b60-meta.json +0 -1
  139. package/.turbo/cache/b81ccbab0a606b60.tar.zst +0 -0
  140. package/.turbo/cache/cf98487988bfcf91-meta.json +0 -1
  141. package/.turbo/cache/cf98487988bfcf91.tar.zst +0 -0
  142. package/.turbo/cache/cfdf7c57dca71f27-meta.json +0 -1
  143. package/.turbo/cache/cfdf7c57dca71f27.tar.zst +0 -0
  144. package/.turbo/cache/d3063ef43811b1e5-meta.json +0 -1
  145. package/.turbo/cache/d3063ef43811b1e5.tar.zst +0 -0
  146. package/.turbo/cache/de28892eb7678e65-meta.json +0 -1
  147. package/.turbo/cache/de28892eb7678e65.tar.zst +0 -0
  148. package/.turbo/cache/ec29adce408132ba-meta.json +0 -1
  149. package/.turbo/cache/ec29adce408132ba.tar.zst +0 -0
  150. package/.turbo/cache/f70450d8d305f172-meta.json +0 -1
  151. package/.turbo/cache/f70450d8d305f172.tar.zst +0 -0
  152. package/.turbo/cache/fe384d5d6b7a983a-meta.json +0 -1
  153. package/.turbo/cache/fe384d5d6b7a983a.tar.zst +0 -0
  154. package/bin/relay-pty +0 -0
  155. package/packages/dashboard/ui/.next/BUILD_ID +0 -1
  156. package/packages/dashboard/ui/.next/app-build-manifest.json +0 -135
  157. package/packages/dashboard/ui/.next/app-path-routes-manifest.json +0 -1
  158. package/packages/dashboard/ui/.next/build-manifest.json +0 -32
  159. package/packages/dashboard/ui/.next/cache/config.json +0 -7
  160. package/packages/dashboard/ui/.next/cache/eslint/.cache_1asv1h5 +0 -1
  161. package/packages/dashboard/ui/.next/cache/webpack/client-production/0.pack +0 -0
  162. package/packages/dashboard/ui/.next/cache/webpack/client-production/index.pack +0 -0
  163. package/packages/dashboard/ui/.next/cache/webpack/edge-server-production/0.pack +0 -0
  164. package/packages/dashboard/ui/.next/cache/webpack/edge-server-production/index.pack +0 -0
  165. package/packages/dashboard/ui/.next/cache/webpack/server-production/0.pack +0 -0
  166. package/packages/dashboard/ui/.next/cache/webpack/server-production/index.pack +0 -0
  167. package/packages/dashboard/ui/.next/export-detail.json +0 -1
  168. package/packages/dashboard/ui/.next/export-marker.json +0 -1
  169. package/packages/dashboard/ui/.next/images-manifest.json +0 -1
  170. package/packages/dashboard/ui/.next/next-minimal-server.js.nft.json +0 -1
  171. package/packages/dashboard/ui/.next/next-server.js.nft.json +0 -1
  172. package/packages/dashboard/ui/.next/package.json +0 -1
  173. package/packages/dashboard/ui/.next/prerender-manifest.json +0 -1
  174. package/packages/dashboard/ui/.next/react-loadable-manifest.json +0 -1970
  175. package/packages/dashboard/ui/.next/required-server-files.json +0 -1
  176. package/packages/dashboard/ui/.next/routes-manifest.json +0 -1
  177. package/packages/dashboard/ui/.next/server/app/_not-found/page.js +0 -1
  178. package/packages/dashboard/ui/.next/server/app/_not-found/page.js.nft.json +0 -1
  179. package/packages/dashboard/ui/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  180. package/packages/dashboard/ui/.next/server/app/_not-found.html +0 -1
  181. package/packages/dashboard/ui/.next/server/app/_not-found.meta +0 -6
  182. package/packages/dashboard/ui/.next/server/app/_not-found.rsc +0 -9
  183. package/packages/dashboard/ui/.next/server/app/app/onboarding/page.js +0 -6
  184. package/packages/dashboard/ui/.next/server/app/app/onboarding/page.js.nft.json +0 -1
  185. package/packages/dashboard/ui/.next/server/app/app/onboarding/page_client-reference-manifest.js +0 -1
  186. package/packages/dashboard/ui/.next/server/app/app/onboarding.html +0 -1
  187. package/packages/dashboard/ui/.next/server/app/app/onboarding.meta +0 -5
  188. package/packages/dashboard/ui/.next/server/app/app/onboarding.rsc +0 -7
  189. package/packages/dashboard/ui/.next/server/app/app/page.js +0 -436
  190. package/packages/dashboard/ui/.next/server/app/app/page.js.nft.json +0 -1
  191. package/packages/dashboard/ui/.next/server/app/app/page_client-reference-manifest.js +0 -1
  192. package/packages/dashboard/ui/.next/server/app/app.html +0 -1
  193. package/packages/dashboard/ui/.next/server/app/app.meta +0 -5
  194. package/packages/dashboard/ui/.next/server/app/app.rsc +0 -7
  195. package/packages/dashboard/ui/.next/server/app/apple-icon.png/route.js +0 -12
  196. package/packages/dashboard/ui/.next/server/app/apple-icon.png/route.js.nft.json +0 -1
  197. package/packages/dashboard/ui/.next/server/app/apple-icon.png.body +0 -0
  198. package/packages/dashboard/ui/.next/server/app/apple-icon.png.meta +0 -1
  199. package/packages/dashboard/ui/.next/server/app/cloud/link/page.js +0 -1
  200. package/packages/dashboard/ui/.next/server/app/cloud/link/page.js.nft.json +0 -1
  201. package/packages/dashboard/ui/.next/server/app/cloud/link/page_client-reference-manifest.js +0 -1
  202. package/packages/dashboard/ui/.next/server/app/cloud/link.html +0 -1
  203. package/packages/dashboard/ui/.next/server/app/cloud/link.meta +0 -5
  204. package/packages/dashboard/ui/.next/server/app/cloud/link.rsc +0 -7
  205. package/packages/dashboard/ui/.next/server/app/connect-repos/page.js +0 -6
  206. package/packages/dashboard/ui/.next/server/app/connect-repos/page.js.nft.json +0 -1
  207. package/packages/dashboard/ui/.next/server/app/connect-repos/page_client-reference-manifest.js +0 -1
  208. package/packages/dashboard/ui/.next/server/app/connect-repos.html +0 -1
  209. package/packages/dashboard/ui/.next/server/app/connect-repos.meta +0 -5
  210. package/packages/dashboard/ui/.next/server/app/connect-repos.rsc +0 -7
  211. package/packages/dashboard/ui/.next/server/app/history/page.js +0 -1
  212. package/packages/dashboard/ui/.next/server/app/history/page.js.nft.json +0 -1
  213. package/packages/dashboard/ui/.next/server/app/history/page_client-reference-manifest.js +0 -1
  214. package/packages/dashboard/ui/.next/server/app/history.html +0 -1
  215. package/packages/dashboard/ui/.next/server/app/history.meta +0 -5
  216. package/packages/dashboard/ui/.next/server/app/history.rsc +0 -7
  217. package/packages/dashboard/ui/.next/server/app/index.html +0 -1
  218. package/packages/dashboard/ui/.next/server/app/index.meta +0 -5
  219. package/packages/dashboard/ui/.next/server/app/index.rsc +0 -7
  220. package/packages/dashboard/ui/.next/server/app/login/page.js +0 -6
  221. package/packages/dashboard/ui/.next/server/app/login/page.js.nft.json +0 -1
  222. package/packages/dashboard/ui/.next/server/app/login/page_client-reference-manifest.js +0 -1
  223. package/packages/dashboard/ui/.next/server/app/login.html +0 -5
  224. package/packages/dashboard/ui/.next/server/app/login.meta +0 -5
  225. package/packages/dashboard/ui/.next/server/app/login.rsc +0 -7
  226. package/packages/dashboard/ui/.next/server/app/metrics/page.js +0 -1
  227. package/packages/dashboard/ui/.next/server/app/metrics/page.js.nft.json +0 -1
  228. package/packages/dashboard/ui/.next/server/app/metrics/page_client-reference-manifest.js +0 -1
  229. package/packages/dashboard/ui/.next/server/app/metrics.html +0 -1
  230. package/packages/dashboard/ui/.next/server/app/metrics.meta +0 -5
  231. package/packages/dashboard/ui/.next/server/app/metrics.rsc +0 -7
  232. package/packages/dashboard/ui/.next/server/app/page.js +0 -1
  233. package/packages/dashboard/ui/.next/server/app/page.js.nft.json +0 -1
  234. package/packages/dashboard/ui/.next/server/app/page_client-reference-manifest.js +0 -1
  235. package/packages/dashboard/ui/.next/server/app/pricing/page.js +0 -5
  236. package/packages/dashboard/ui/.next/server/app/pricing/page.js.nft.json +0 -1
  237. package/packages/dashboard/ui/.next/server/app/pricing/page_client-reference-manifest.js +0 -1
  238. package/packages/dashboard/ui/.next/server/app/pricing.html +0 -13
  239. package/packages/dashboard/ui/.next/server/app/pricing.meta +0 -5
  240. package/packages/dashboard/ui/.next/server/app/pricing.rsc +0 -7
  241. package/packages/dashboard/ui/.next/server/app/providers/page.js +0 -2
  242. package/packages/dashboard/ui/.next/server/app/providers/page.js.nft.json +0 -1
  243. package/packages/dashboard/ui/.next/server/app/providers/page_client-reference-manifest.js +0 -1
  244. package/packages/dashboard/ui/.next/server/app/providers/setup/[provider]/page.js +0 -1
  245. package/packages/dashboard/ui/.next/server/app/providers/setup/[provider]/page.js.nft.json +0 -1
  246. package/packages/dashboard/ui/.next/server/app/providers/setup/[provider]/page_client-reference-manifest.js +0 -1
  247. package/packages/dashboard/ui/.next/server/app/providers/setup/claude.html +0 -1
  248. package/packages/dashboard/ui/.next/server/app/providers/setup/claude.meta +0 -5
  249. package/packages/dashboard/ui/.next/server/app/providers/setup/claude.rsc +0 -8
  250. package/packages/dashboard/ui/.next/server/app/providers/setup/codex.html +0 -1
  251. package/packages/dashboard/ui/.next/server/app/providers/setup/codex.meta +0 -5
  252. package/packages/dashboard/ui/.next/server/app/providers/setup/codex.rsc +0 -8
  253. package/packages/dashboard/ui/.next/server/app/providers/setup/cursor.html +0 -1
  254. package/packages/dashboard/ui/.next/server/app/providers/setup/cursor.meta +0 -5
  255. package/packages/dashboard/ui/.next/server/app/providers/setup/cursor.rsc +0 -8
  256. package/packages/dashboard/ui/.next/server/app/providers.html +0 -1
  257. package/packages/dashboard/ui/.next/server/app/providers.meta +0 -5
  258. package/packages/dashboard/ui/.next/server/app/providers.rsc +0 -7
  259. package/packages/dashboard/ui/.next/server/app/signup/page.js +0 -6
  260. package/packages/dashboard/ui/.next/server/app/signup/page.js.nft.json +0 -1
  261. package/packages/dashboard/ui/.next/server/app/signup/page_client-reference-manifest.js +0 -1
  262. package/packages/dashboard/ui/.next/server/app/signup.html +0 -6
  263. package/packages/dashboard/ui/.next/server/app/signup.meta +0 -5
  264. package/packages/dashboard/ui/.next/server/app/signup.rsc +0 -7
  265. package/packages/dashboard/ui/.next/server/app-paths-manifest.json +0 -16
  266. package/packages/dashboard/ui/.next/server/chunks/190.js +0 -1
  267. package/packages/dashboard/ui/.next/server/chunks/205.js +0 -1
  268. package/packages/dashboard/ui/.next/server/chunks/251.js +0 -9
  269. package/packages/dashboard/ui/.next/server/chunks/288.js +0 -1
  270. package/packages/dashboard/ui/.next/server/chunks/434.js +0 -1
  271. package/packages/dashboard/ui/.next/server/chunks/471.js +0 -2
  272. package/packages/dashboard/ui/.next/server/chunks/621.js +0 -1
  273. package/packages/dashboard/ui/.next/server/chunks/680.js +0 -5
  274. package/packages/dashboard/ui/.next/server/chunks/682.js +0 -6
  275. package/packages/dashboard/ui/.next/server/chunks/684.js +0 -1
  276. package/packages/dashboard/ui/.next/server/chunks/71.js +0 -196
  277. package/packages/dashboard/ui/.next/server/chunks/711.js +0 -1
  278. package/packages/dashboard/ui/.next/server/chunks/90.js +0 -17
  279. package/packages/dashboard/ui/.next/server/chunks/948.js +0 -2
  280. package/packages/dashboard/ui/.next/server/chunks/font-manifest.json +0 -1
  281. package/packages/dashboard/ui/.next/server/font-manifest.json +0 -1
  282. package/packages/dashboard/ui/.next/server/functions-config-manifest.json +0 -1
  283. package/packages/dashboard/ui/.next/server/interception-route-rewrite-manifest.js +0 -1
  284. package/packages/dashboard/ui/.next/server/middleware-build-manifest.js +0 -1
  285. package/packages/dashboard/ui/.next/server/middleware-manifest.json +0 -6
  286. package/packages/dashboard/ui/.next/server/middleware-react-loadable-manifest.js +0 -1
  287. package/packages/dashboard/ui/.next/server/next-font-manifest.js +0 -1
  288. package/packages/dashboard/ui/.next/server/next-font-manifest.json +0 -1
  289. package/packages/dashboard/ui/.next/server/pages/404.html +0 -1
  290. package/packages/dashboard/ui/.next/server/pages/500.html +0 -1
  291. package/packages/dashboard/ui/.next/server/pages/_app.js +0 -1
  292. package/packages/dashboard/ui/.next/server/pages/_app.js.nft.json +0 -1
  293. package/packages/dashboard/ui/.next/server/pages/_document.js +0 -1
  294. package/packages/dashboard/ui/.next/server/pages/_document.js.nft.json +0 -1
  295. package/packages/dashboard/ui/.next/server/pages/_error.js +0 -1
  296. package/packages/dashboard/ui/.next/server/pages/_error.js.nft.json +0 -1
  297. package/packages/dashboard/ui/.next/server/pages-manifest.json +0 -1
  298. package/packages/dashboard/ui/.next/server/server-reference-manifest.js +0 -1
  299. package/packages/dashboard/ui/.next/server/server-reference-manifest.json +0 -1
  300. package/packages/dashboard/ui/.next/server/webpack-runtime.js +0 -1
  301. package/packages/dashboard/ui/.next/static/chunks/116-a883fca163f3a5bc.js +0 -1
  302. package/packages/dashboard/ui/.next/static/chunks/117-c8afed19e821a35d.js +0 -2
  303. package/packages/dashboard/ui/.next/static/chunks/282-980c2eb8fff20123.js +0 -1
  304. package/packages/dashboard/ui/.next/static/chunks/532-bace199897eeab37.js +0 -9
  305. package/packages/dashboard/ui/.next/static/chunks/631-af51bad94027527a.js +0 -1
  306. package/packages/dashboard/ui/.next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
  307. package/packages/dashboard/ui/.next/static/chunks/677-30e60cb0b47875b6.js +0 -1
  308. package/packages/dashboard/ui/.next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
  309. package/packages/dashboard/ui/.next/static/chunks/83-4f08122d4e7e79a6.js +0 -1
  310. package/packages/dashboard/ui/.next/static/chunks/847-f1f467060f32afff.js +0 -1
  311. package/packages/dashboard/ui/.next/static/chunks/891-5cb1513eeb97a891.js +0 -1
  312. package/packages/dashboard/ui/.next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
  313. package/packages/dashboard/ui/.next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
  314. package/packages/dashboard/ui/.next/static/chunks/app/app/page-44813aa26ad19681.js +0 -1
  315. package/packages/dashboard/ui/.next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
  316. package/packages/dashboard/ui/.next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
  317. package/packages/dashboard/ui/.next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
  318. package/packages/dashboard/ui/.next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
  319. package/packages/dashboard/ui/.next/static/chunks/app/login/page-a0ca6f7ca6a100b8.js +0 -1
  320. package/packages/dashboard/ui/.next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
  321. package/packages/dashboard/ui/.next/static/chunks/app/page-7993778218818ace.js +0 -1
  322. package/packages/dashboard/ui/.next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
  323. package/packages/dashboard/ui/.next/static/chunks/app/providers/page-bcf46064ac4474ce.js +0 -1
  324. package/packages/dashboard/ui/.next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
  325. package/packages/dashboard/ui/.next/static/chunks/app/signup/page-1ede2205b58649ca.js +0 -1
  326. package/packages/dashboard/ui/.next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
  327. package/packages/dashboard/ui/.next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
  328. package/packages/dashboard/ui/.next/static/chunks/framework-f66176bb897dc684.js +0 -1
  329. package/packages/dashboard/ui/.next/static/chunks/main-5a40a5ae29646e1b.js +0 -1
  330. package/packages/dashboard/ui/.next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
  331. package/packages/dashboard/ui/.next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
  332. package/packages/dashboard/ui/.next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
  333. package/packages/dashboard/ui/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
  334. package/packages/dashboard/ui/.next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
  335. package/packages/dashboard/ui/.next/static/css/4034f236dd1a3178.css +0 -1
  336. package/packages/dashboard/ui/.next/static/css/99c2552394077586.css +0 -1
  337. package/packages/dashboard/ui/.next/trace +0 -63
  338. package/packages/dashboard/ui/.next/types/app/app/onboarding/page.ts +0 -79
  339. package/packages/dashboard/ui/.next/types/app/app/page.ts +0 -79
  340. package/packages/dashboard/ui/.next/types/app/cloud/link/page.ts +0 -79
  341. package/packages/dashboard/ui/.next/types/app/connect-repos/page.ts +0 -79
  342. package/packages/dashboard/ui/.next/types/app/history/page.ts +0 -79
  343. package/packages/dashboard/ui/.next/types/app/layout.ts +0 -79
  344. package/packages/dashboard/ui/.next/types/app/login/page.ts +0 -79
  345. package/packages/dashboard/ui/.next/types/app/metrics/page.ts +0 -79
  346. package/packages/dashboard/ui/.next/types/app/page.ts +0 -79
  347. package/packages/dashboard/ui/.next/types/app/pricing/page.ts +0 -79
  348. package/packages/dashboard/ui/.next/types/app/providers/page.ts +0 -79
  349. package/packages/dashboard/ui/.next/types/app/providers/setup/[provider]/page.ts +0 -79
  350. package/packages/dashboard/ui/.next/types/app/signup/page.ts +0 -79
  351. package/packages/dashboard/ui/.next/types/package.json +0 -1
  352. package/packages/dashboard/ui-dist/_next/static/chunks/677-30e60cb0b47875b6.js +0 -1
  353. /package/dist/dashboard/out/_next/static/{ZCFjHbkF8yDKS2md3lVgb → 72btMIJ64BCAB4UgVkpaq}/_buildManifest.js +0 -0
  354. /package/dist/dashboard/out/_next/static/{ZCFjHbkF8yDKS2md3lVgb → 72btMIJ64BCAB4UgVkpaq}/_ssgManifest.js +0 -0
  355. /package/packages/dashboard/ui-dist/_next/static/{HR7W9z1PPVPFqUboUVZFZ → 0AsOfRemPXJmtynCKT-rx}/_buildManifest.js +0 -0
  356. /package/packages/dashboard/ui-dist/_next/static/{HR7W9z1PPVPFqUboUVZFZ → 0AsOfRemPXJmtynCKT-rx}/_ssgManifest.js +0 -0
  357. /package/packages/dashboard/ui-dist/_next/static/{ZCFjHbkF8yDKS2md3lVgb → 72btMIJ64BCAB4UgVkpaq}/_buildManifest.js +0 -0
  358. /package/packages/dashboard/ui-dist/_next/static/{ZCFjHbkF8yDKS2md3lVgb → 72btMIJ64BCAB4UgVkpaq}/_ssgManifest.js +0 -0
  359. /package/packages/dashboard/{ui/.next/static/HR7W9z1PPVPFqUboUVZFZ → ui-dist/_next/static/clUN2n0bz9HCjKI0qlOxU}/_buildManifest.js +0 -0
  360. /package/packages/dashboard/{ui/.next/static/HR7W9z1PPVPFqUboUVZFZ → ui-dist/_next/static/clUN2n0bz9HCjKI0qlOxU}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/dashboard",
3
- "version": "2.0.0",
3
+ "version": "2.0.4",
4
4
  "description": "Web dashboard for Agent Relay - optional package for visual agent coordination",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,31 +24,23 @@
24
24
  "test": "vitest run",
25
25
  "test:watch": "vitest"
26
26
  },
27
- "peerDependencies": {
28
- "agent-relay": ">=1.6.0"
29
- },
30
- "peerDependenciesMeta": {
31
- "agent-relay": {
32
- "optional": false
33
- }
34
- },
35
27
  "dependencies": {
36
- "@agent-relay/protocol": "2.0.0",
37
- "@agent-relay/config": "2.0.0",
38
- "@agent-relay/storage": "2.0.0",
39
- "@agent-relay/bridge": "2.0.0",
40
- "@agent-relay/utils": "2.0.0",
41
- "@agent-relay/resiliency": "2.0.0",
42
- "@agent-relay/trajectory": "2.0.0",
43
- "@agent-relay/cloud": "2.0.0",
44
- "@agent-relay/daemon": "2.0.0",
45
- "@agent-relay/user-directory": "2.0.0",
46
- "@agent-relay/wrapper": "2.0.0",
47
- "express": "^4.21.2",
28
+ "@agent-relay/protocol": "2.0.4",
29
+ "@agent-relay/config": "2.0.4",
30
+ "@agent-relay/storage": "2.0.4",
31
+ "@agent-relay/bridge": "2.0.4",
32
+ "@agent-relay/utils": "2.0.4",
33
+ "@agent-relay/resiliency": "2.0.4",
34
+ "@agent-relay/trajectory": "2.0.4",
35
+ "@agent-relay/cloud": "2.0.4",
36
+ "@agent-relay/daemon": "2.0.4",
37
+ "@agent-relay/user-directory": "2.0.4",
38
+ "@agent-relay/wrapper": "2.0.4",
39
+ "express": "^5.2.1",
48
40
  "ws": "^8.18.3"
49
41
  },
50
42
  "devDependencies": {
51
- "@types/express": "^5.0.1",
43
+ "@types/express": "^5.0.6",
52
44
  "@types/node": "^22.19.3",
53
45
  "@types/ws": "^8.18.1",
54
46
  "typescript": "^5.9.3",
@@ -43,13 +43,50 @@ export interface SpawnModalProps {
43
43
  }
44
44
 
45
45
  /** Model options for Claude agents */
46
- const CLAUDE_MODEL_OPTIONS = [
47
- { value: 'sonnet', label: 'Sonnet', description: 'Fast and capable (default)' },
48
- { value: 'opus', label: 'Opus', description: 'Most capable, slower' },
49
- { value: 'haiku', label: 'Haiku', description: 'Fastest, lightweight' },
50
- ] as const;
46
+ const CLAUDE_MODEL_OPTIONS: { value: string; label: string }[] = [
47
+ { value: 'sonnet', label: 'Sonnet' },
48
+ { value: 'opus', label: 'Opus' },
49
+ { value: 'haiku', label: 'Haiku' },
50
+ ];
51
+
52
+ type ClaudeModel = string;
53
+
54
+ /** Model options for Cursor agents */
55
+ const CURSOR_MODEL_OPTIONS: { value: string; label: string }[] = [
56
+ { value: 'opus-4.5-thinking', label: 'Claude 4.5 Opus (Thinking)' },
57
+ { value: 'opus-4.5', label: 'Claude 4.5 Opus' },
58
+ { value: 'sonnet-4.5', label: 'Claude 4.5 Sonnet' },
59
+ { value: 'sonnet-4.5-thinking', label: 'Claude 4.5 Sonnet (Thinking)' },
60
+ { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex' },
61
+ { value: 'gpt-5.2-codex-high', label: 'GPT-5.2 Codex High' },
62
+ { value: 'gpt-5.2-codex-low', label: 'GPT-5.2 Codex Low' },
63
+ { value: 'gpt-5.2-codex-xhigh', label: 'GPT-5.2 Codex Extra High' },
64
+ { value: 'gpt-5.2-codex-fast', label: 'GPT-5.2 Codex Fast' },
65
+ { value: 'gpt-5.2-codex-high-fast', label: 'GPT-5.2 Codex High Fast' },
66
+ { value: 'gpt-5.2-codex-low-fast', label: 'GPT-5.2 Codex Low Fast' },
67
+ { value: 'gpt-5.2-codex-xhigh-fast', label: 'GPT-5.2 Codex Extra High Fast' },
68
+ { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max' },
69
+ { value: 'gpt-5.1-codex-max-high', label: 'GPT-5.1 Codex Max High' },
70
+ { value: 'gpt-5.2', label: 'GPT-5.2' },
71
+ { value: 'gpt-5.2-high', label: 'GPT-5.2 High' },
72
+ { value: 'gpt-5.1-high', label: 'GPT-5.1 High' },
73
+ { value: 'gemini-3-pro', label: 'Gemini 3 Pro' },
74
+ { value: 'gemini-3-flash', label: 'Gemini 3 Flash' },
75
+ { value: 'composer-1', label: 'Composer 1' },
76
+ { value: 'grok', label: 'Grok' },
77
+ ];
78
+
79
+ type CursorModel = string;
51
80
 
52
- type ClaudeModel = typeof CLAUDE_MODEL_OPTIONS[number]['value'];
81
+ /** Model options for Codex agents */
82
+ const CODEX_MODEL_OPTIONS: { value: string; label: string }[] = [
83
+ { value: 'gpt-5.2-codex', label: 'GPT-5.2 Codex' },
84
+ { value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max' },
85
+ { value: 'gpt-5.1-codex-mini', label: 'GPT-5.1 Codex Mini' },
86
+ { value: 'gpt-5.2', label: 'GPT-5.2' },
87
+ ];
88
+
89
+ type CodexModel = string;
53
90
 
54
91
  const AGENT_TEMPLATES = [
55
92
  {
@@ -68,6 +105,7 @@ const AGENT_TEMPLATES = [
68
105
  description: 'OpenAI Codex agent',
69
106
  icon: '⚡',
70
107
  providerId: 'codex', // Backend uses 'openai', but we check for both
108
+ supportsModelSelection: true,
71
109
  },
72
110
  {
73
111
  id: 'gemini',
@@ -100,6 +138,7 @@ const AGENT_TEMPLATES = [
100
138
  description: 'Cursor AI agent',
101
139
  icon: '📝',
102
140
  providerId: 'cursor',
141
+ supportsModelSelection: true,
103
142
  },
104
143
  {
105
144
  id: 'custom',
@@ -125,6 +164,8 @@ export function SpawnModal({
125
164
  const [name, setName] = useState('');
126
165
  const [customCommand, setCustomCommand] = useState('');
127
166
  const [selectedModel, setSelectedModel] = useState<ClaudeModel>('sonnet');
167
+ const [selectedCursorModel, setSelectedCursorModel] = useState<CursorModel>('opus-4.5-thinking');
168
+ const [selectedCodexModel, setSelectedCodexModel] = useState<CodexModel>('gpt-5.2-codex');
128
169
  const [cwd, setCwd] = useState('');
129
170
  const [team, setTeam] = useState('');
130
171
  const [isShadow, setIsShadow] = useState(false);
@@ -134,17 +175,25 @@ export function SpawnModal({
134
175
  const [localError, setLocalError] = useState<string | null>(null);
135
176
  const nameInputRef = useRef<HTMLInputElement>(null);
136
177
 
137
- // Build effective command, including model flag for Claude
178
+ // Build effective command, always including model flag for Claude, Cursor, and Codex
138
179
  const effectiveCommand = useMemo(() => {
139
180
  if (selectedTemplate.id === 'custom') {
140
181
  return customCommand;
141
182
  }
142
- // For Claude, append model flag if not default (sonnet)
143
- if (selectedTemplate.id === 'claude' && selectedModel !== 'sonnet') {
183
+ // For Claude, always append model flag
184
+ if (selectedTemplate.id === 'claude') {
144
185
  return `${selectedTemplate.command} --model ${selectedModel}`;
145
186
  }
187
+ // For Cursor, always append model flag
188
+ if (selectedTemplate.id === 'cursor') {
189
+ return `${selectedTemplate.command} --model ${selectedCursorModel}`;
190
+ }
191
+ // For Codex, always append model flag
192
+ if (selectedTemplate.id === 'codex') {
193
+ return `${selectedTemplate.command} --model ${selectedCodexModel}`;
194
+ }
146
195
  return selectedTemplate.command;
147
- }, [selectedTemplate, customCommand, selectedModel]);
196
+ }, [selectedTemplate, customCommand, selectedModel, selectedCursorModel, selectedCodexModel]);
148
197
 
149
198
  const shadowMode = useMemo(() => deriveShadowMode(effectiveCommand), [effectiveCommand]);
150
199
 
@@ -234,6 +283,8 @@ export function SpawnModal({
234
283
  setName('');
235
284
  setCustomCommand('');
236
285
  setSelectedModel('sonnet');
286
+ setSelectedCursorModel('opus-4.5-thinking');
287
+ setSelectedCodexModel('gpt-5.2-codex');
237
288
  setCwd('');
238
289
  setTeam('');
239
290
  setIsShadow(false);
@@ -362,27 +413,66 @@ export function SpawnModal({
362
413
  {/* Model Selection (Claude only) */}
363
414
  {selectedTemplate.id === 'claude' && (
364
415
  <div className="mb-5">
365
- <label className="block text-sm font-semibold text-text-primary mb-2">Model</label>
366
- <div className="grid grid-cols-3 gap-2">
416
+ <label className="block text-sm font-semibold text-text-primary mb-2" htmlFor="claude-model">
417
+ Model
418
+ </label>
419
+ <select
420
+ id="claude-model"
421
+ className="w-full py-2.5 px-3.5 border border-border rounded-md text-sm font-sans outline-none bg-bg-primary text-text-primary transition-colors duration-150 focus:border-accent disabled:bg-bg-hover disabled:text-text-muted"
422
+ value={selectedModel}
423
+ onChange={(e) => setSelectedModel(e.target.value as ClaudeModel)}
424
+ disabled={isSpawning}
425
+ >
367
426
  {CLAUDE_MODEL_OPTIONS.map((model) => (
368
- <button
369
- key={model.value}
370
- type="button"
371
- className={`
372
- flex flex-col items-center gap-0.5 py-2.5 px-2 border-2 rounded-lg cursor-pointer font-sans transition-all duration-150
373
- ${selectedModel === model.value
374
- ? 'bg-accent/10 border-accent'
375
- : 'bg-bg-hover border-transparent hover:bg-bg-active'
376
- }
377
- `}
378
- onClick={() => setSelectedModel(model.value)}
379
- disabled={isSpawning}
380
- >
381
- <span className="text-sm font-semibold text-text-primary">{model.label}</span>
382
- <span className="text-xs text-text-muted text-center">{model.description}</span>
383
- </button>
427
+ <option key={model.value} value={model.value}>
428
+ {model.label}
429
+ </option>
384
430
  ))}
385
- </div>
431
+ </select>
432
+ </div>
433
+ )}
434
+
435
+ {/* Model Selection (Cursor only) */}
436
+ {selectedTemplate.id === 'cursor' && (
437
+ <div className="mb-5">
438
+ <label className="block text-sm font-semibold text-text-primary mb-2" htmlFor="cursor-model">
439
+ Model
440
+ </label>
441
+ <select
442
+ id="cursor-model"
443
+ className="w-full py-2.5 px-3.5 border border-border rounded-md text-sm font-sans outline-none bg-bg-primary text-text-primary transition-colors duration-150 focus:border-accent disabled:bg-bg-hover disabled:text-text-muted"
444
+ value={selectedCursorModel}
445
+ onChange={(e) => setSelectedCursorModel(e.target.value as CursorModel)}
446
+ disabled={isSpawning}
447
+ >
448
+ {CURSOR_MODEL_OPTIONS.map((model) => (
449
+ <option key={model.value} value={model.value}>
450
+ {model.label}
451
+ </option>
452
+ ))}
453
+ </select>
454
+ </div>
455
+ )}
456
+
457
+ {/* Model Selection (Codex only) */}
458
+ {selectedTemplate.id === 'codex' && (
459
+ <div className="mb-5">
460
+ <label className="block text-sm font-semibold text-text-primary mb-2" htmlFor="codex-model">
461
+ Model
462
+ </label>
463
+ <select
464
+ id="codex-model"
465
+ className="w-full py-2.5 px-3.5 border border-border rounded-md text-sm font-sans outline-none bg-bg-primary text-text-primary transition-colors duration-150 focus:border-accent disabled:bg-bg-hover disabled:text-text-muted"
466
+ value={selectedCodexModel}
467
+ onChange={(e) => setSelectedCodexModel(e.target.value as CodexModel)}
468
+ disabled={isSpawning}
469
+ >
470
+ {CODEX_MODEL_OPTIONS.map((model) => (
471
+ <option key={model.value} value={model.value}>
472
+ {model.label}
473
+ </option>
474
+ ))}
475
+ </select>
386
476
  </div>
387
477
  )}
388
478
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/99c2552394077586.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1cdd8ed57114d5e1.js"/><script src="/_next/static/chunks/fd9d1056-609918ca7b6280bb.js" async=""></script><script src="/_next/static/chunks/117-c8afed19e821a35d.js" async=""></script><script src="/_next/static/chunks/main-app-6e8e8d3ef4e0192a.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-1cdd8ed57114d5e1.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/99c2552394077586.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[6423,[],\"\"]\nb:I[1060,[],\"\"]\n6:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n7:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n8:{\"display\":\"inline-block\"}\n9:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"ZCFjHbkF8yDKS2md3lVgb\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/99c2552394077586.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$6\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$7\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$9\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Agent Relay Dashboard\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Fleet control dashboard for Agent Relay\"}]]\n3:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/99c2552394077586.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1cdd8ed57114d5e1.js"/><script src="/_next/static/chunks/fd9d1056-609918ca7b6280bb.js" async=""></script><script src="/_next/static/chunks/117-c8afed19e821a35d.js" async=""></script><script src="/_next/static/chunks/main-app-6e8e8d3ef4e0192a.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-1cdd8ed57114d5e1.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/99c2552394077586.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[2846,[],\"\"]\n4:I[4707,[],\"\"]\n5:I[6423,[],\"\"]\nb:I[1060,[],\"\"]\n6:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n7:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n8:{\"display\":\"inline-block\"}\n9:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"72btMIJ64BCAB4UgVkpaq\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/99c2552394077586.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$6\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$7\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$9\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Agent Relay Dashboard\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Fleet control dashboard for Agent Relay\"}]]\n3:null\n"])</script></body></html>