agent-relay 2.0.4 → 2.0.5
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.
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/app/onboarding.html +1 -1
- package/dist/dashboard/out/app/onboarding.txt +1 -1
- package/dist/dashboard/out/app.html +1 -1
- package/dist/dashboard/out/app.txt +1 -1
- package/dist/dashboard/out/cloud/link.html +1 -1
- package/dist/dashboard/out/cloud/link.txt +1 -1
- package/dist/dashboard/out/connect-repos.html +1 -1
- package/dist/dashboard/out/connect-repos.txt +1 -1
- package/dist/dashboard/out/history.html +1 -1
- package/dist/dashboard/out/history.txt +1 -1
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +1 -1
- package/dist/dashboard/out/login.html +1 -1
- package/dist/dashboard/out/login.txt +1 -1
- package/dist/dashboard/out/metrics.html +1 -1
- package/dist/dashboard/out/metrics.txt +1 -1
- package/dist/dashboard/out/pricing.html +1 -1
- package/dist/dashboard/out/pricing.txt +1 -1
- package/dist/dashboard/out/providers/setup/claude.html +1 -1
- package/dist/dashboard/out/providers/setup/claude.txt +1 -1
- package/dist/dashboard/out/providers/setup/codex.html +1 -1
- package/dist/dashboard/out/providers/setup/codex.txt +1 -1
- package/dist/dashboard/out/providers/setup/cursor.html +1 -1
- package/dist/dashboard/out/providers/setup/cursor.txt +1 -1
- package/dist/dashboard/out/providers.html +1 -1
- package/dist/dashboard/out/providers.txt +1 -1
- package/dist/dashboard/out/signup.html +1 -1
- package/dist/dashboard/out/signup.txt +1 -1
- package/dist/src/cli/index.js +61 -3
- package/package.json +14 -12
- package/packages/api-types/package.json +1 -1
- package/packages/bridge/package.json +7 -7
- package/packages/cloud/package.json +6 -6
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +1 -1
- package/packages/daemon/dist/router.d.ts +2 -1
- package/packages/daemon/dist/router.js +142 -52
- package/packages/daemon/dist/server.d.ts +3 -0
- package/packages/daemon/dist/server.js +31 -1
- package/packages/daemon/dist/spawn-manager.d.ts +5 -0
- package/packages/daemon/dist/spawn-manager.js +39 -0
- package/packages/daemon/package.json +12 -11
- package/packages/dashboard/package.json +12 -12
- package/packages/dashboard/ui-dist/404.html +1 -1
- package/packages/dashboard/ui-dist/app/onboarding.html +1 -1
- package/packages/dashboard/ui-dist/app/onboarding.txt +1 -1
- package/packages/dashboard/ui-dist/app.html +1 -1
- package/packages/dashboard/ui-dist/app.txt +1 -1
- package/packages/dashboard/ui-dist/cloud/link.html +1 -1
- package/packages/dashboard/ui-dist/cloud/link.txt +1 -1
- package/packages/dashboard/ui-dist/connect-repos.html +1 -1
- package/packages/dashboard/ui-dist/connect-repos.txt +1 -1
- package/packages/dashboard/ui-dist/history.html +1 -1
- package/packages/dashboard/ui-dist/history.txt +1 -1
- package/packages/dashboard/ui-dist/index.html +1 -1
- package/packages/dashboard/ui-dist/index.txt +1 -1
- package/packages/dashboard/ui-dist/login.html +1 -1
- package/packages/dashboard/ui-dist/login.txt +1 -1
- package/packages/dashboard/ui-dist/metrics.html +1 -1
- package/packages/dashboard/ui-dist/metrics.txt +1 -1
- package/packages/dashboard/ui-dist/pricing.html +1 -1
- package/packages/dashboard/ui-dist/pricing.txt +1 -1
- package/packages/dashboard/ui-dist/providers/setup/claude.html +1 -1
- package/packages/dashboard/ui-dist/providers/setup/claude.txt +1 -1
- package/packages/dashboard/ui-dist/providers/setup/codex.html +1 -1
- package/packages/dashboard/ui-dist/providers/setup/codex.txt +1 -1
- package/packages/dashboard/ui-dist/providers/setup/cursor.html +1 -1
- package/packages/dashboard/ui-dist/providers/setup/cursor.txt +1 -1
- package/packages/dashboard/ui-dist/providers.html +1 -1
- package/packages/dashboard/ui-dist/providers.txt +1 -1
- package/packages/dashboard/ui-dist/signup.html +1 -1
- package/packages/dashboard/ui-dist/signup.txt +1 -1
- package/packages/dashboard-server/dist/user-bridge.d.ts +7 -3
- package/packages/dashboard-server/dist/user-bridge.js +48 -30
- package/packages/dashboard-server/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/README.md +19 -135
- package/packages/mcp/dist/client.js +67 -27
- package/packages/mcp/dist/cloud.js +1 -18
- package/packages/mcp/package.json +2 -1
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/README.md +43 -160
- package/packages/sdk/dist/client.d.ts +3 -99
- package/packages/sdk/dist/client.js +6 -113
- package/packages/sdk/dist/index.d.ts +0 -1
- package/packages/sdk/dist/index.js +0 -2
- package/packages/sdk/dist/standalone.js +0 -1
- package/packages/sdk/package.json +2 -2
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/dist/client.d.ts +19 -0
- package/packages/telemetry/dist/client.js +125 -0
- package/packages/telemetry/dist/config.d.ts +29 -0
- package/packages/telemetry/dist/config.js +88 -0
- package/packages/telemetry/dist/events.d.ts +106 -0
- package/packages/telemetry/dist/events.js +10 -0
- package/packages/telemetry/dist/index.d.ts +8 -0
- package/packages/telemetry/dist/index.js +7 -0
- package/packages/telemetry/dist/machine-id.d.ts +12 -0
- package/packages/telemetry/dist/machine-id.js +58 -0
- package/packages/telemetry/dist/posthog-config.d.ts +16 -0
- package/packages/telemetry/dist/posthog-config.js +33 -0
- package/packages/telemetry/package.json +41 -0
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +1 -1
- package/packages/wrapper/dist/relay-pty-orchestrator.js +1 -1
- package/packages/wrapper/package.json +6 -6
- package/packages/sdk/dist/discovery.d.ts +0 -29
- package/packages/sdk/dist/discovery.js +0 -126
- /package/dist/dashboard/out/_next/static/{72btMIJ64BCAB4UgVkpaq → xtLmZI8Coh2009JpfvOBw}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{72btMIJ64BCAB4UgVkpaq → xtLmZI8Coh2009JpfvOBw}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{0AsOfRemPXJmtynCKT-rx → QWdjV9SGDgz-GkriZP7Ao}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{0AsOfRemPXJmtynCKT-rx → QWdjV9SGDgz-GkriZP7Ao}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{72btMIJ64BCAB4UgVkpaq → SySrsm8xdGaeJLrZ2RNuf}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{72btMIJ64BCAB4UgVkpaq → SySrsm8xdGaeJLrZ2RNuf}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{clUN2n0bz9HCjKI0qlOxU → xtLmZI8Coh2009JpfvOBw}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{clUN2n0bz9HCjKI0qlOxU → xtLmZI8Coh2009JpfvOBw}/_ssgManifest.js +0 -0
|
@@ -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><script src="/_next/static/chunks/e868780c-48e5f147c90a3a41.js" async=""></script><script src="/_next/static/chunks/891-5cb1513eeb97a891.js" async=""></script><script src="/_next/static/chunks/app/providers/setup/%5Bprovider%5D/page-84161c802b020a1f.js" async=""></script><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><link rel="apple-touch-icon" href="/apple-icon.png?9e7a840704165ca6" type="image/png" sizes="256x256"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center"><div class="flex items-center gap-3"><svg class="w-6 h-6 text-accent-cyan animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><span class="text-text-muted">Loading setup...</span></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:\"$Sreact.suspense\"\n5:I[5844,[\"30\",\"static/chunks/e868780c-48e5f147c90a3a41.js\",\"891\",\"static/chunks/891-5cb1513eeb97a891.js\",\"668\",\"static/chunks/app/providers/setup/%5Bprovider%5D/page-84161c802b020a1f.js\"],\"ProviderSetupClient\"]\n6:I[4707,[],\"\"]\n8:I[6423,[],\"\"]\na:I[1060,[],\"\"]\n7:[\"provider\",\"cursor\",\"d\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"
|
|
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><script src="/_next/static/chunks/e868780c-48e5f147c90a3a41.js" async=""></script><script src="/_next/static/chunks/891-5cb1513eeb97a891.js" async=""></script><script src="/_next/static/chunks/app/providers/setup/%5Bprovider%5D/page-84161c802b020a1f.js" async=""></script><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><link rel="apple-touch-icon" href="/apple-icon.png?9e7a840704165ca6" type="image/png" sizes="256x256"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center"><div class="flex items-center gap-3"><svg class="w-6 h-6 text-accent-cyan animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><span class="text-text-muted">Loading setup...</span></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:\"$Sreact.suspense\"\n5:I[5844,[\"30\",\"static/chunks/e868780c-48e5f147c90a3a41.js\",\"891\",\"static/chunks/891-5cb1513eeb97a891.js\",\"668\",\"static/chunks/app/providers/setup/%5Bprovider%5D/page-84161c802b020a1f.js\"],\"ProviderSetupClient\"]\n6:I[4707,[],\"\"]\n8:I[6423,[],\"\"]\na:I[1060,[],\"\"]\n7:[\"provider\",\"cursor\",\"d\"]\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"xtLmZI8Coh2009JpfvOBw\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"providers\",\"setup\",\"cursor\"],\"initialTree\":[\"\",{\"children\":[\"providers\",{\"children\":[\"setup\",{\"children\":[[\"provider\",\"cursor\",\"d\"],{\"children\":[\"__PAGE__?{\\\"provider\\\":\\\"cursor\\\"}\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"providers\",{\"children\":[\"setup\",{\"children\":[[\"provider\",\"cursor\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$4\",null,{\"fallback\":[\"$\",\"div\",null,{\"className\":\"min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"w-6 h-6 text-accent-cyan animate-spin\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"circle\",null,{\"className\":\"opacity-25\",\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\",\"stroke\":\"currentColor\",\"strokeWidth\":\"4\"}],[\"$\",\"path\",null,{\"className\":\"opacity-75\",\"fill\":\"currentColor\",\"d\":\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"}]]}],[\"$\",\"span\",null,{\"className\":\"text-text-muted\",\"children\":\"Loading setup...\"}]]}]}],\"children\":[\"$\",\"$L5\",null,{\"provider\":\"cursor\"}]}],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"providers\",\"children\",\"setup\",\"children\",\"$7\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"providers\",\"children\",\"setup\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"providers\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",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\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"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.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"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\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?9e7a840704165ca6\",\"type\":\"image/png\",\"sizes\":\"256x256\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
4:I[4707,[],""]
|
|
4
4
|
6:I[6423,[],""]
|
|
5
5
|
5:["provider","cursor","d"]
|
|
6
|
-
0:["
|
|
6
|
+
0:["xtLmZI8Coh2009JpfvOBw",[[["",{"children":["providers",{"children":["setup",{"children":[["provider","cursor","d"],{"children":["__PAGE__?{\"provider\":\"cursor\"}",{}]}]}]}]},"$undefined","$undefined",true],["",{"children":["providers",{"children":["setup",{"children":[["provider","cursor","d"],{"children":["__PAGE__",{},[["$L1",["$","$2",null,{"fallback":["$","div",null,{"className":"min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center","children":["$","div",null,{"className":"flex items-center gap-3","children":[["$","svg",null,{"className":"w-6 h-6 text-accent-cyan animate-spin","fill":"none","viewBox":"0 0 24 24","children":[["$","circle",null,{"className":"opacity-25","cx":"12","cy":"12","r":"10","stroke":"currentColor","strokeWidth":"4"}],["$","path",null,{"className":"opacity-75","fill":"currentColor","d":"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"}]]}],["$","span",null,{"className":"text-text-muted","children":"Loading setup..."}]]}]}],"children":["$","$L3",null,{"provider":"cursor"}]}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","providers","children","setup","children","$5","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","providers","children","setup","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","providers","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",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":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","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."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L7",null]]]]
|
|
7
7
|
7:[["$","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"}],["$","link","4",{"rel":"apple-touch-icon","href":"/apple-icon.png?9e7a840704165ca6","type":"image/png","sizes":"256x256"}]]
|
|
8
8
|
1:null
|
|
@@ -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><script src="/_next/static/chunks/e868780c-48e5f147c90a3a41.js" async=""></script><script src="/_next/static/chunks/891-5cb1513eeb97a891.js" async=""></script><script src="/_next/static/chunks/83-4f08122d4e7e79a6.js" async=""></script><script src="/_next/static/chunks/631-af51bad94027527a.js" async=""></script><script src="/_next/static/chunks/app/providers/page-e65a0010da6ea5be.js" async=""></script><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><link rel="apple-touch-icon" href="/apple-icon.png?9e7a840704165ca6" type="image/png" sizes="256x256"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center"><div class="text-center"><svg class="w-8 h-8 text-accent-cyan animate-spin mx-auto" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><p class="mt-4 text-text-muted">Loading providers...</p></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[9107,[],\"ClientPageRoot\"]\n5:I[9197,[\"30\",\"static/chunks/e868780c-48e5f147c90a3a41.js\",\"891\",\"static/chunks/891-5cb1513eeb97a891.js\",\"83\",\"static/chunks/83-4f08122d4e7e79a6.js\",\"631\",\"static/chunks/631-af51bad94027527a.js\",\"150\",\"static/chunks/app/providers/page-e65a0010da6ea5be.js\"],\"default\",1]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\n9:I[1060,[],\"\"]\na:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"
|
|
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><script src="/_next/static/chunks/e868780c-48e5f147c90a3a41.js" async=""></script><script src="/_next/static/chunks/891-5cb1513eeb97a891.js" async=""></script><script src="/_next/static/chunks/83-4f08122d4e7e79a6.js" async=""></script><script src="/_next/static/chunks/631-af51bad94027527a.js" async=""></script><script src="/_next/static/chunks/app/providers/page-e65a0010da6ea5be.js" async=""></script><title>Agent Relay Dashboard</title><meta name="description" content="Fleet control dashboard for Agent Relay"/><link rel="apple-touch-icon" href="/apple-icon.png?9e7a840704165ca6" type="image/png" sizes="256x256"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex items-center justify-center"><div class="text-center"><svg class="w-8 h-8 text-accent-cyan animate-spin mx-auto" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><p class="mt-4 text-text-muted">Loading providers...</p></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[9107,[],\"ClientPageRoot\"]\n5:I[9197,[\"30\",\"static/chunks/e868780c-48e5f147c90a3a41.js\",\"891\",\"static/chunks/891-5cb1513eeb97a891.js\",\"83\",\"static/chunks/83-4f08122d4e7e79a6.js\",\"631\",\"static/chunks/631-af51bad94027527a.js\",\"150\",\"static/chunks/app/providers/page-e65a0010da6ea5be.js\"],\"default\",1]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\n9:I[1060,[],\"\"]\na:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"xtLmZI8Coh2009JpfvOBw\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"providers\"],\"initialTree\":[\"\",{\"children\":[\"providers\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"providers\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"providers\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"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.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L8\"],\"globalErrorComponent\":\"$9\",\"missingSlots\":\"$Wa\"}]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"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\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?9e7a840704165ca6\",\"type\":\"image/png\",\"sizes\":\"256x256\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
3:I[9197,["30","static/chunks/e868780c-48e5f147c90a3a41.js","891","static/chunks/891-5cb1513eeb97a891.js","83","static/chunks/83-4f08122d4e7e79a6.js","631","static/chunks/631-af51bad94027527a.js","150","static/chunks/app/providers/page-e65a0010da6ea5be.js"],"default",1]
|
|
3
3
|
4:I[4707,[],""]
|
|
4
4
|
5:I[6423,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["xtLmZI8Coh2009JpfvOBw",[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["providers",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","providers","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":{"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."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]]
|
|
6
6
|
6:[["$","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"}],["$","link","4",{"rel":"apple-touch-icon","href":"/apple-icon.png?9e7a840704165ca6","type":"image/png","sizes":"256x256"}]]
|
|
7
7
|
1:null
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
transition-all duration-300
|
|
4
4
|
drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]
|
|
5
5
|
|
|
6
|
-
" aria-label="Agent Relay Logo" role="img"><path d="M30 80 L 50 20 L 70 80" stroke="#00d9ff" stroke-width="5" stroke-linejoin="round" stroke-linecap="round" fill="none"></path><line x1="40" y1="50" x2="60" y2="50" stroke="#00d9ff" stroke-width="5" stroke-linecap="round"></line><path d="M50 20 L 50 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" opacity="0.7"></path><path d="M50 20 C 80 20 80 50 50 50 L 80 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.7"></path></svg><h1 class="mt-4 text-3xl font-bold text-white">Get Started</h1><p class="mt-2 text-text-muted text-center">Create your account and start orchestrating AI agents</p></div><div class="bg-bg-primary/80 backdrop-blur-sm border border-border-subtle rounded-2xl p-8 shadow-xl"><div><div class="mb-6 space-y-3"><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-accent-cyan/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-accent-cyan" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path></svg></div><span>Deploy AI agents in seconds</span></div><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-[#00ffc8]/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-[#00ffc8]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg></div><span>Real-time agent collaboration</span></div><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-[#0891b2]/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-[#0891b2]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg></div><span>Secure credential management</span></div></div><button type="button" disabled="" class="w-full py-4 px-6 bg-[#24292e] hover:bg-[#2f363d] border border-[#444d56] rounded-xl text-white font-medium flex items-center justify-center gap-3 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"><svg class="w-5 h-5 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><span>Loading...</span></button><p class="mt-6 text-center text-text-muted text-sm">By signing up, you agree to our<!-- --> <a href="/terms" class="text-accent-cyan hover:underline">Terms of Service</a> <!-- -->and<!-- --> <a href="/privacy" class="text-accent-cyan hover:underline">Privacy Policy</a></p></div></div><div class="mt-6 text-center"><p class="text-text-muted">Already have an account?<!-- --> <a href="/login" class="text-accent-cyan hover:underline font-medium">Sign in</a></p></div><div class="mt-4 text-center"><a href="/" class="text-text-muted hover:text-white transition-colors text-sm">Back to home</a></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[9107,[],\"ClientPageRoot\"]\n5:I[4665,[\"282\",\"static/chunks/282-980c2eb8fff20123.js\",\"966\",\"static/chunks/app/signup/page-18a4665665f6be11.js\"],\"default\",1]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\n9:I[1060,[],\"\"]\na:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"
|
|
6
|
+
" aria-label="Agent Relay Logo" role="img"><path d="M30 80 L 50 20 L 70 80" stroke="#00d9ff" stroke-width="5" stroke-linejoin="round" stroke-linecap="round" fill="none"></path><line x1="40" y1="50" x2="60" y2="50" stroke="#00d9ff" stroke-width="5" stroke-linecap="round"></line><path d="M50 20 L 50 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" opacity="0.7"></path><path d="M50 20 C 80 20 80 50 50 50 L 80 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.7"></path></svg><h1 class="mt-4 text-3xl font-bold text-white">Get Started</h1><p class="mt-2 text-text-muted text-center">Create your account and start orchestrating AI agents</p></div><div class="bg-bg-primary/80 backdrop-blur-sm border border-border-subtle rounded-2xl p-8 shadow-xl"><div><div class="mb-6 space-y-3"><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-accent-cyan/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-accent-cyan" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path></svg></div><span>Deploy AI agents in seconds</span></div><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-[#00ffc8]/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-[#00ffc8]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path></svg></div><span>Real-time agent collaboration</span></div><div class="flex items-center gap-3 text-sm text-text-secondary"><div class="w-8 h-8 rounded-lg bg-[#0891b2]/10 flex items-center justify-center flex-shrink-0"><svg class="w-4 h-4 text-[#0891b2]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"></path></svg></div><span>Secure credential management</span></div></div><button type="button" disabled="" class="w-full py-4 px-6 bg-[#24292e] hover:bg-[#2f363d] border border-[#444d56] rounded-xl text-white font-medium flex items-center justify-center gap-3 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"><svg class="w-5 h-5 animate-spin" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"></path></svg><span>Loading...</span></button><p class="mt-6 text-center text-text-muted text-sm">By signing up, you agree to our<!-- --> <a href="/terms" class="text-accent-cyan hover:underline">Terms of Service</a> <!-- -->and<!-- --> <a href="/privacy" class="text-accent-cyan hover:underline">Privacy Policy</a></p></div></div><div class="mt-6 text-center"><p class="text-text-muted">Already have an account?<!-- --> <a href="/login" class="text-accent-cyan hover:underline font-medium">Sign in</a></p></div><div class="mt-4 text-center"><a href="/" class="text-text-muted hover:text-white transition-colors text-sm">Back to home</a></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[9107,[],\"ClientPageRoot\"]\n5:I[4665,[\"282\",\"static/chunks/282-980c2eb8fff20123.js\",\"966\",\"static/chunks/app/signup/page-18a4665665f6be11.js\"],\"default\",1]\n6:I[4707,[],\"\"]\n7:I[6423,[],\"\"]\n9:I[1060,[],\"\"]\na:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"xtLmZI8Coh2009JpfvOBw\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"signup\"],\"initialTree\":[\"\",{\"children\":[\"signup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"signup\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],null],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"signup\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"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.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L8\"],\"globalErrorComponent\":\"$9\",\"missingSlots\":\"$Wa\"}]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"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\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?9e7a840704165ca6\",\"type\":\"image/png\",\"sizes\":\"256x256\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
3:I[4665,["282","static/chunks/282-980c2eb8fff20123.js","966","static/chunks/app/signup/page-18a4665665f6be11.js"],"default",1]
|
|
3
3
|
4:I[4707,[],""]
|
|
4
4
|
5:I[6423,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["xtLmZI8Coh2009JpfvOBw",[[["",{"children":["signup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["signup",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","signup","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":{"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."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]]
|
|
6
6
|
6:[["$","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"}],["$","link","4",{"rel":"apple-touch-icon","href":"/apple-icon.png?9e7a840704165ca6","type":"image/png","sizes":"256x256"}]]
|
|
7
7
|
1:null
|
|
@@ -88,6 +88,11 @@ export declare class UserBridge {
|
|
|
88
88
|
avatarUrl?: string;
|
|
89
89
|
displayName?: string;
|
|
90
90
|
}): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Remove a specific WebSocket connection from a user's session.
|
|
93
|
+
* If this was the last connection, unregister the user entirely.
|
|
94
|
+
*/
|
|
95
|
+
private removeWebSocket;
|
|
91
96
|
/**
|
|
92
97
|
* Unregister a user and disconnect their relay client.
|
|
93
98
|
*/
|
|
@@ -97,9 +102,8 @@ export declare class UserBridge {
|
|
|
97
102
|
*/
|
|
98
103
|
isUserRegistered(username: string): boolean;
|
|
99
104
|
/**
|
|
100
|
-
*
|
|
101
|
-
* This is needed when a user
|
|
102
|
-
* so messages are forwarded to the active WebSocket.
|
|
105
|
+
* Add a new WebSocket connection for an existing user session.
|
|
106
|
+
* This is needed when a user opens a new tab.
|
|
103
107
|
*/
|
|
104
108
|
updateWebSocket(username: string, newWebSocket: WebSocket): boolean;
|
|
105
109
|
/**
|
|
@@ -36,9 +36,11 @@ export class UserBridge {
|
|
|
36
36
|
* Creates a relay client connection for the user.
|
|
37
37
|
*/
|
|
38
38
|
async registerUser(username, webSocket, options) {
|
|
39
|
-
// If user already registered,
|
|
39
|
+
// If user already registered, just update the WebSocket (multi-tab support)
|
|
40
40
|
if (this.users.has(username)) {
|
|
41
|
-
|
|
41
|
+
console.log(`[user-bridge] User ${username} already registered, updating WebSocket`);
|
|
42
|
+
this.updateWebSocket(username, webSocket);
|
|
43
|
+
return;
|
|
42
44
|
}
|
|
43
45
|
// Create relay client for this user
|
|
44
46
|
const relayClient = await this.createRelayClient({
|
|
@@ -61,16 +63,16 @@ export class UserBridge {
|
|
|
61
63
|
relayClient.onChannelMessage = (from, channel, body, envelope) => {
|
|
62
64
|
this.handleIncomingChannelMessage(username, from, channel, body, envelope);
|
|
63
65
|
};
|
|
64
|
-
// Create session
|
|
66
|
+
// Create session with WebSocket set for multi-tab support
|
|
65
67
|
const session = {
|
|
66
68
|
username,
|
|
67
69
|
relayClient,
|
|
68
|
-
webSocket,
|
|
70
|
+
webSockets: new Set([webSocket]),
|
|
69
71
|
channels: new Set(),
|
|
70
72
|
avatarUrl: options?.avatarUrl,
|
|
71
73
|
};
|
|
72
74
|
this.users.set(username, session);
|
|
73
|
-
console.log(`[user-bridge] User registered: ${username} (total: ${this.users.size})`);
|
|
75
|
+
console.log(`[user-bridge] User registered: ${username} (total users: ${this.users.size}, connections: 1)`);
|
|
74
76
|
// Auto-join user to #general channel
|
|
75
77
|
// Note: The daemon auto-joins on connect, but we need to track locally too
|
|
76
78
|
session.channels.add('#general');
|
|
@@ -90,12 +92,27 @@ export class UserBridge {
|
|
|
90
92
|
console.error(`[user-bridge] Failed to restore persisted channels for ${username}:`, err);
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
|
-
// Set up WebSocket close handler
|
|
95
|
+
// Set up WebSocket close handler to remove this specific connection
|
|
94
96
|
webSocket.on('close', () => {
|
|
95
|
-
this.
|
|
97
|
+
this.removeWebSocket(username, webSocket);
|
|
96
98
|
});
|
|
97
99
|
console.log(`[user-bridge] User ${username} registered with relay daemon`);
|
|
98
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Remove a specific WebSocket connection from a user's session.
|
|
103
|
+
* If this was the last connection, unregister the user entirely.
|
|
104
|
+
*/
|
|
105
|
+
removeWebSocket(username, webSocket) {
|
|
106
|
+
const session = this.users.get(username);
|
|
107
|
+
if (!session)
|
|
108
|
+
return;
|
|
109
|
+
session.webSockets.delete(webSocket);
|
|
110
|
+
console.log(`[user-bridge] WebSocket closed for ${username} (${session.webSockets.size} connections remaining)`);
|
|
111
|
+
// Only unregister if ALL connections are closed
|
|
112
|
+
if (session.webSockets.size === 0) {
|
|
113
|
+
this.unregisterUser(username);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
99
116
|
/**
|
|
100
117
|
* Unregister a user and disconnect their relay client.
|
|
101
118
|
*/
|
|
@@ -114,26 +131,22 @@ export class UserBridge {
|
|
|
114
131
|
return this.users.has(username);
|
|
115
132
|
}
|
|
116
133
|
/**
|
|
117
|
-
*
|
|
118
|
-
* This is needed when a user
|
|
119
|
-
* so messages are forwarded to the active WebSocket.
|
|
134
|
+
* Add a new WebSocket connection for an existing user session.
|
|
135
|
+
* This is needed when a user opens a new tab.
|
|
120
136
|
*/
|
|
121
137
|
updateWebSocket(username, newWebSocket) {
|
|
122
138
|
const session = this.users.get(username);
|
|
123
139
|
if (!session) {
|
|
124
|
-
console.log(`[user-bridge] Cannot
|
|
140
|
+
console.log(`[user-bridge] Cannot add WebSocket - user ${username} not registered`);
|
|
125
141
|
return false;
|
|
126
142
|
}
|
|
127
|
-
//
|
|
128
|
-
session.
|
|
129
|
-
//
|
|
130
|
-
session.webSocket = newWebSocket;
|
|
131
|
-
// Set up close handler on new WebSocket
|
|
143
|
+
// Add the new WebSocket to the set
|
|
144
|
+
session.webSockets.add(newWebSocket);
|
|
145
|
+
// Set up close handler to remove this specific connection
|
|
132
146
|
newWebSocket.on('close', () => {
|
|
133
|
-
|
|
134
|
-
// unregisterUser when all connections are closed
|
|
147
|
+
this.removeWebSocket(username, newWebSocket);
|
|
135
148
|
});
|
|
136
|
-
console.log(`[user-bridge]
|
|
149
|
+
console.log(`[user-bridge] Added WebSocket for user ${username} (${session.webSockets.size} connections)`);
|
|
137
150
|
return true;
|
|
138
151
|
}
|
|
139
152
|
/**
|
|
@@ -224,23 +237,25 @@ export class UserBridge {
|
|
|
224
237
|
const session = this.users.get(username);
|
|
225
238
|
if (!session)
|
|
226
239
|
return;
|
|
227
|
-
const ws = session.webSocket;
|
|
228
|
-
if (ws.readyState !== 1)
|
|
229
|
-
return; // Not OPEN
|
|
230
240
|
// Look up sender's avatar if lookup function is available
|
|
231
241
|
const senderInfo = this.lookupUserInfo?.(from);
|
|
232
242
|
const fromAvatarUrl = senderInfo?.avatarUrl;
|
|
233
243
|
// Determine entity type: user if they have info, agent otherwise
|
|
234
244
|
const fromEntityType = senderInfo ? 'user' : 'agent';
|
|
235
|
-
|
|
236
|
-
ws.send(JSON.stringify({
|
|
245
|
+
const message = JSON.stringify({
|
|
237
246
|
type: 'direct_message',
|
|
238
247
|
from,
|
|
239
248
|
fromAvatarUrl,
|
|
240
249
|
fromEntityType,
|
|
241
250
|
body: payloadObj?.body || body,
|
|
242
251
|
timestamp: new Date().toISOString(),
|
|
243
|
-
})
|
|
252
|
+
});
|
|
253
|
+
// Send to ALL open WebSocket connections (multi-tab support)
|
|
254
|
+
for (const ws of session.webSockets) {
|
|
255
|
+
if (ws.readyState === 1) { // OPEN
|
|
256
|
+
ws.send(message);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
244
259
|
}
|
|
245
260
|
/**
|
|
246
261
|
* Handle incoming channel message from relay daemon.
|
|
@@ -249,9 +264,6 @@ export class UserBridge {
|
|
|
249
264
|
const session = this.users.get(username);
|
|
250
265
|
if (!session)
|
|
251
266
|
return;
|
|
252
|
-
const ws = session.webSocket;
|
|
253
|
-
if (ws.readyState !== 1)
|
|
254
|
-
return; // Not OPEN
|
|
255
267
|
// Look up sender's avatar if lookup function is available
|
|
256
268
|
const senderInfo = this.lookupUserInfo?.(from);
|
|
257
269
|
const fromAvatarUrl = senderInfo?.avatarUrl;
|
|
@@ -259,7 +271,7 @@ export class UserBridge {
|
|
|
259
271
|
const fromEntityType = senderInfo ? 'user' : 'agent';
|
|
260
272
|
// Channel message
|
|
261
273
|
const env = envelope;
|
|
262
|
-
|
|
274
|
+
const message = JSON.stringify({
|
|
263
275
|
type: 'channel_message',
|
|
264
276
|
channel,
|
|
265
277
|
from,
|
|
@@ -269,7 +281,13 @@ export class UserBridge {
|
|
|
269
281
|
thread: env?.payload?.thread,
|
|
270
282
|
mentions: env?.payload?.mentions,
|
|
271
283
|
timestamp: new Date().toISOString(),
|
|
272
|
-
})
|
|
284
|
+
});
|
|
285
|
+
// Send to ALL open WebSocket connections (multi-tab support)
|
|
286
|
+
for (const ws of session.webSockets) {
|
|
287
|
+
if (ws.readyState === 1) { // OPEN
|
|
288
|
+
ws.send(message);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
273
291
|
}
|
|
274
292
|
/**
|
|
275
293
|
* Admin: Add a member to a channel (does not require member to be connected).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/dashboard-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Relay dashboard server - HTTP/WebSocket server for agent coordination",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/protocol": "2.0.
|
|
26
|
-
"@agent-relay/config": "2.0.
|
|
27
|
-
"@agent-relay/storage": "2.0.
|
|
28
|
-
"@agent-relay/bridge": "2.0.
|
|
29
|
-
"@agent-relay/utils": "2.0.
|
|
30
|
-
"@agent-relay/resiliency": "2.0.
|
|
31
|
-
"@agent-relay/trajectory": "2.0.
|
|
32
|
-
"@agent-relay/cloud": "2.0.
|
|
33
|
-
"@agent-relay/daemon": "2.0.
|
|
34
|
-
"@agent-relay/user-directory": "2.0.
|
|
35
|
-
"@agent-relay/sdk": "2.0.
|
|
25
|
+
"@agent-relay/protocol": "2.0.5",
|
|
26
|
+
"@agent-relay/config": "2.0.5",
|
|
27
|
+
"@agent-relay/storage": "2.0.5",
|
|
28
|
+
"@agent-relay/bridge": "2.0.5",
|
|
29
|
+
"@agent-relay/utils": "2.0.5",
|
|
30
|
+
"@agent-relay/resiliency": "2.0.5",
|
|
31
|
+
"@agent-relay/trajectory": "2.0.5",
|
|
32
|
+
"@agent-relay/cloud": "2.0.5",
|
|
33
|
+
"@agent-relay/daemon": "2.0.5",
|
|
34
|
+
"@agent-relay/user-directory": "2.0.5",
|
|
35
|
+
"@agent-relay/sdk": "2.0.5",
|
|
36
36
|
"array-flatten": "^1.1.1",
|
|
37
37
|
"express": "^4.21.2",
|
|
38
38
|
"ws": "^8.18.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/hooks",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Hook emitter, registry, and trajectory hooks for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"test:watch": "vitest"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@agent-relay/protocol": "2.0.
|
|
41
|
-
"@agent-relay/config": "2.0.
|
|
42
|
-
"@agent-relay/trajectory": "2.0.
|
|
40
|
+
"@agent-relay/protocol": "2.0.5",
|
|
41
|
+
"@agent-relay/config": "2.0.5",
|
|
42
|
+
"@agent-relay/trajectory": "2.0.5"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.19.3",
|