agent-relay 2.0.21 → 2.0.22
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/complete-profile.html +1 -1
- package/dist/dashboard/out/complete-profile.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/package.json +16 -16
- package/packages/api-types/package.json +1 -1
- package/packages/bridge/package.json +8 -8
- package/packages/cli-tester/package.json +1 -1
- 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/orchestrator.js +2 -0
- package/packages/daemon/dist/router.d.ts +5 -0
- package/packages/daemon/dist/router.js +31 -0
- package/packages/daemon/dist/server.d.ts +5 -0
- package/packages/daemon/dist/server.js +131 -1
- package/packages/daemon/package.json +12 -12
- package/packages/dashboard/package.json +13 -13
- 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/complete-profile.html +1 -1
- package/packages/dashboard/ui-dist/complete-profile.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/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/dist/client.d.ts +15 -0
- package/packages/mcp/dist/client.js +9 -0
- package/packages/mcp/dist/server.js +13 -1
- package/packages/mcp/dist/tools/index.d.ts +2 -0
- package/packages/mcp/dist/tools/index.js +2 -0
- package/packages/mcp/dist/tools/relay-connected.d.ts +17 -0
- package/packages/mcp/dist/tools/relay-connected.js +40 -0
- package/packages/mcp/dist/tools/relay-remove-agent.d.ts +20 -0
- package/packages/mcp/dist/tools/relay-remove-agent.js +50 -0
- package/packages/mcp/package.json +2 -2
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/dist/types.d.ts +46 -1
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/dist/client.d.ts +22 -1
- package/packages/sdk/dist/client.js +31 -0
- package/packages/sdk/dist/protocol/index.d.ts +1 -1
- package/packages/sdk/dist/protocol/types.d.ts +35 -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/dist/adapter.d.ts +4 -0
- package/packages/storage/dist/sqlite-adapter.d.ts +10 -0
- package/packages/storage/dist/sqlite-adapter.js +26 -0
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- 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/package.json +6 -6
- /package/dist/dashboard/out/_next/static/{7MZPqYkVGw3EGzVBkVmY9 → 91mkGYq3qbG8WHE6VytQ8}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{7MZPqYkVGw3EGzVBkVmY9 → 91mkGYq3qbG8WHE6VytQ8}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{7MZPqYkVGw3EGzVBkVmY9 → 91mkGYq3qbG8WHE6VytQ8}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{7MZPqYkVGw3EGzVBkVmY9 → 91mkGYq3qbG8WHE6VytQ8}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{iJ3Uiz3IrqUJL7IxKZHiV → T2rV14eEU5OweDeV29SvG}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{iJ3Uiz3IrqUJL7IxKZHiV → T2rV14eEU5OweDeV29SvG}/_ssgManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{l-jd878zUJ_IlraqEWMZc → l8L2OscDSR2vsMIlWcC48}/_buildManifest.js +0 -0
- /package/packages/dashboard/ui-dist/_next/static/{l-jd878zUJ_IlraqEWMZc → l8L2OscDSR2vsMIlWcC48}/_ssgManifest.js +0 -0
|
@@ -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="flex mb-6 bg-bg-secondary/50 rounded-lg p-1"><button type="button" class="flex-1 py-2 px-4 rounded-md text-sm font-medium transition-colors bg-bg-primary text-white shadow-sm">GitHub</button><button type="button" class="flex-1 py-2 px-4 rounded-md text-sm font-medium transition-colors text-text-muted hover:text-white">Email</button></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/6892f8422896ef7a.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-c7a0a28341365ae0.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="flex mb-6 bg-bg-secondary/50 rounded-lg p-1"><button type="button" class="flex-1 py-2 px-4 rounded-md text-sm font-medium transition-colors bg-bg-primary text-white shadow-sm">GitHub</button><button type="button" class="flex-1 py-2 px-4 rounded-md text-sm font-medium transition-colors text-text-muted hover:text-white">Email</button></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/6892f8422896ef7a.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-c7a0a28341365ae0.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\":\"91mkGYq3qbG8WHE6VytQ8\",\"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/6892f8422896ef7a.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-c7a0a28341365ae0.js"],"default",1]
|
|
3
3
|
4:I[4707,[],""]
|
|
4
4
|
5:I[6423,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["91mkGYq3qbG8WHE6VytQ8",[[["",{"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/6892f8422896ef7a.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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/dashboard-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
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.22",
|
|
26
|
+
"@agent-relay/config": "2.0.22",
|
|
27
|
+
"@agent-relay/storage": "2.0.22",
|
|
28
|
+
"@agent-relay/bridge": "2.0.22",
|
|
29
|
+
"@agent-relay/utils": "2.0.22",
|
|
30
|
+
"@agent-relay/resiliency": "2.0.22",
|
|
31
|
+
"@agent-relay/trajectory": "2.0.22",
|
|
32
|
+
"@agent-relay/cloud": "2.0.22",
|
|
33
|
+
"@agent-relay/daemon": "2.0.22",
|
|
34
|
+
"@agent-relay/user-directory": "2.0.22",
|
|
35
|
+
"@agent-relay/sdk": "2.0.22",
|
|
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.22",
|
|
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.22",
|
|
41
|
+
"@agent-relay/config": "2.0.22",
|
|
42
|
+
"@agent-relay/trajectory": "2.0.22"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.19.3",
|
|
@@ -102,6 +102,21 @@ export interface RelayClient {
|
|
|
102
102
|
idle?: boolean;
|
|
103
103
|
parent?: string;
|
|
104
104
|
}>>;
|
|
105
|
+
listConnectedAgents(options?: {
|
|
106
|
+
project?: string;
|
|
107
|
+
}): Promise<Array<{
|
|
108
|
+
name: string;
|
|
109
|
+
cli?: string;
|
|
110
|
+
idle?: boolean;
|
|
111
|
+
parent?: string;
|
|
112
|
+
}>>;
|
|
113
|
+
removeAgent(name: string, options?: {
|
|
114
|
+
removeMessages?: boolean;
|
|
115
|
+
}): Promise<{
|
|
116
|
+
success: boolean;
|
|
117
|
+
removed: boolean;
|
|
118
|
+
message?: string;
|
|
119
|
+
}>;
|
|
105
120
|
getHealth(options?: {
|
|
106
121
|
include_crashes?: boolean;
|
|
107
122
|
include_alerts?: boolean;
|
|
@@ -252,6 +252,15 @@ export function createRelayClient(options) {
|
|
|
252
252
|
const response = await request('LIST_AGENTS', payload);
|
|
253
253
|
return response.agents || [];
|
|
254
254
|
},
|
|
255
|
+
async listConnectedAgents(opts = {}) {
|
|
256
|
+
const payload = { project: opts.project };
|
|
257
|
+
const response = await request('LIST_CONNECTED_AGENTS', payload);
|
|
258
|
+
return response.agents || [];
|
|
259
|
+
},
|
|
260
|
+
async removeAgent(name, opts = {}) {
|
|
261
|
+
const payload = { name, removeMessages: opts.removeMessages };
|
|
262
|
+
return request('REMOVE_AGENT', payload);
|
|
263
|
+
},
|
|
255
264
|
async getHealth(opts = {}) {
|
|
256
265
|
const payload = {
|
|
257
266
|
includeCrashes: opts.include_crashes,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
import { relaySendTool, relaySendSchema, handleRelaySend, relayInboxTool, relayInboxSchema, handleRelayInbox, relayWhoTool, relayWhoSchema, handleRelayWho, relaySpawnTool, relaySpawnSchema, handleRelaySpawn, relayReleaseTool, relayReleaseSchema, handleRelayRelease, relayStatusTool, relayStatusSchema, handleRelayStatus, relayLogsTool, relayLogsSchema, handleRelayLogs, relayMetricsTool, relayMetricsSchema, handleRelayMetrics, relayHealthTool, relayHealthSchema, handleRelayHealth, relayContinuityTool, relayContinuitySchema, handleRelayContinuity, } from './tools/index.js';
|
|
4
|
+
import { relaySendTool, relaySendSchema, handleRelaySend, relayInboxTool, relayInboxSchema, handleRelayInbox, relayWhoTool, relayWhoSchema, handleRelayWho, relaySpawnTool, relaySpawnSchema, handleRelaySpawn, relayReleaseTool, relayReleaseSchema, handleRelayRelease, relayStatusTool, relayStatusSchema, handleRelayStatus, relayLogsTool, relayLogsSchema, handleRelayLogs, relayMetricsTool, relayMetricsSchema, handleRelayMetrics, relayHealthTool, relayHealthSchema, handleRelayHealth, relayContinuityTool, relayContinuitySchema, handleRelayContinuity, relayConnectedTool, relayConnectedSchema, handleRelayConnected, relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, } from './tools/index.js';
|
|
5
5
|
import { protocolPrompt, getProtocolPrompt } from './prompts/index.js';
|
|
6
6
|
import { agentsResource, getAgentsResource, inboxResource, getInboxResource, projectResource, getProjectResource, } from './resources/index.js';
|
|
7
7
|
/**
|
|
@@ -11,8 +11,10 @@ const TOOLS = [
|
|
|
11
11
|
relaySendTool,
|
|
12
12
|
relayInboxTool,
|
|
13
13
|
relayWhoTool,
|
|
14
|
+
relayConnectedTool,
|
|
14
15
|
relaySpawnTool,
|
|
15
16
|
relayReleaseTool,
|
|
17
|
+
relayRemoveAgentTool,
|
|
16
18
|
relayStatusTool,
|
|
17
19
|
relayLogsTool,
|
|
18
20
|
relayMetricsTool,
|
|
@@ -68,6 +70,11 @@ export function createMCPServer(client, config) {
|
|
|
68
70
|
result = await handleRelayWho(client, input);
|
|
69
71
|
break;
|
|
70
72
|
}
|
|
73
|
+
case 'relay_connected': {
|
|
74
|
+
const input = relayConnectedSchema.parse(args);
|
|
75
|
+
result = await handleRelayConnected(client, input);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
71
78
|
case 'relay_spawn': {
|
|
72
79
|
const input = relaySpawnSchema.parse(args);
|
|
73
80
|
result = await handleRelaySpawn(client, input);
|
|
@@ -78,6 +85,11 @@ export function createMCPServer(client, config) {
|
|
|
78
85
|
result = await handleRelayRelease(client, input);
|
|
79
86
|
break;
|
|
80
87
|
}
|
|
88
|
+
case 'relay_remove_agent': {
|
|
89
|
+
const input = relayRemoveAgentSchema.parse(args);
|
|
90
|
+
result = await handleRelayRemoveAgent(client, input);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
81
93
|
case 'relay_status': {
|
|
82
94
|
const input = relayStatusSchema.parse(args);
|
|
83
95
|
result = await handleRelayStatus(client, input);
|
|
@@ -8,4 +8,6 @@ export { relayLogsTool, relayLogsSchema, handleRelayLogs, type RelayLogsInput, }
|
|
|
8
8
|
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, type RelayMetricsInput, } from './relay-metrics.js';
|
|
9
9
|
export { relayHealthTool, relayHealthSchema, handleRelayHealth, type RelayHealthInput, } from './relay-health.js';
|
|
10
10
|
export { relayContinuityTool, relayContinuitySchema, handleRelayContinuity, type RelayContinuityInput, } from './relay-continuity.js';
|
|
11
|
+
export { relayConnectedTool, relayConnectedSchema, handleRelayConnected, type RelayConnectedInput, } from './relay-connected.js';
|
|
12
|
+
export { relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, type RelayRemoveAgentInput, } from './relay-remove-agent.js';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -8,4 +8,6 @@ export { relayLogsTool, relayLogsSchema, handleRelayLogs, } from './relay-logs.j
|
|
|
8
8
|
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, } from './relay-metrics.js';
|
|
9
9
|
export { relayHealthTool, relayHealthSchema, handleRelayHealth, } from './relay-health.js';
|
|
10
10
|
export { relayContinuityTool, relayContinuitySchema, handleRelayContinuity, } from './relay-continuity.js';
|
|
11
|
+
export { relayConnectedTool, relayConnectedSchema, handleRelayConnected, } from './relay-connected.js';
|
|
12
|
+
export { relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, } from './relay-remove-agent.js';
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { RelayClient } from '../client.js';
|
|
4
|
+
export declare const relayConnectedSchema: z.ZodObject<{
|
|
5
|
+
project: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
project?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
project?: string | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
export type RelayConnectedInput = z.infer<typeof relayConnectedSchema>;
|
|
12
|
+
export declare const relayConnectedTool: Tool;
|
|
13
|
+
/**
|
|
14
|
+
* List only currently connected agents (not historical/registered).
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleRelayConnected(client: RelayClient, input: RelayConnectedInput): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=relay-connected.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const relayConnectedSchema = z.object({
|
|
3
|
+
project: z.string().optional().describe('Filter by project (for multi-project setups)'),
|
|
4
|
+
});
|
|
5
|
+
export const relayConnectedTool = {
|
|
6
|
+
name: 'relay_connected',
|
|
7
|
+
description: `List only currently connected agents in the relay network.
|
|
8
|
+
|
|
9
|
+
Unlike relay_who which includes historical/registered agents, this only shows
|
|
10
|
+
agents that are actively connected right now. Use this for accurate liveness checks.
|
|
11
|
+
|
|
12
|
+
Example output:
|
|
13
|
+
- Alice (claude) - connected
|
|
14
|
+
- Bob (codex) - connected`,
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
properties: {
|
|
18
|
+
project: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'Filter by project',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: [],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* List only currently connected agents (not historical/registered).
|
|
28
|
+
*/
|
|
29
|
+
export async function handleRelayConnected(client, input) {
|
|
30
|
+
const agents = await client.listConnectedAgents(input);
|
|
31
|
+
if (agents.length === 0) {
|
|
32
|
+
return 'No agents currently connected.';
|
|
33
|
+
}
|
|
34
|
+
const formatted = agents.map((a) => {
|
|
35
|
+
const worker = a.parent ? ` [worker of: ${a.parent}]` : '';
|
|
36
|
+
return `- ${a.name} (${a.cli || 'unknown'}) - connected${worker}`;
|
|
37
|
+
});
|
|
38
|
+
return `${agents.length} agent(s) currently connected:\n${formatted.join('\n')}`;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=relay-connected.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { RelayClient } from '../client.js';
|
|
4
|
+
export declare const relayRemoveAgentSchema: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
remove_messages: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
name: string;
|
|
9
|
+
remove_messages: boolean;
|
|
10
|
+
}, {
|
|
11
|
+
name: string;
|
|
12
|
+
remove_messages?: boolean | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export type RelayRemoveAgentInput = z.infer<typeof relayRemoveAgentSchema>;
|
|
15
|
+
export declare const relayRemoveAgentTool: Tool;
|
|
16
|
+
/**
|
|
17
|
+
* Remove an agent from the registry.
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleRelayRemoveAgent(client: RelayClient, input: RelayRemoveAgentInput): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=relay-remove-agent.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const relayRemoveAgentSchema = z.object({
|
|
3
|
+
name: z.string().describe('Name of the agent to remove from the registry'),
|
|
4
|
+
remove_messages: z.boolean().optional().default(false).describe('Also remove all messages from/to this agent'),
|
|
5
|
+
});
|
|
6
|
+
export const relayRemoveAgentTool = {
|
|
7
|
+
name: 'relay_remove_agent',
|
|
8
|
+
description: `Remove a stale agent from the relay registry.
|
|
9
|
+
|
|
10
|
+
Use this to clean up agents that are no longer needed or have become stale.
|
|
11
|
+
This removes the agent from:
|
|
12
|
+
- The agent registry (agents.json)
|
|
13
|
+
- The sessions table in storage
|
|
14
|
+
- Optionally, all messages from/to this agent
|
|
15
|
+
|
|
16
|
+
WARNING: This permanently removes the agent's history. Use with caution.`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
name: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Name of the agent to remove',
|
|
23
|
+
},
|
|
24
|
+
remove_messages: {
|
|
25
|
+
type: 'boolean',
|
|
26
|
+
description: 'Also remove all messages from/to this agent',
|
|
27
|
+
default: false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
required: ['name'],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Remove an agent from the registry.
|
|
35
|
+
*/
|
|
36
|
+
export async function handleRelayRemoveAgent(client, input) {
|
|
37
|
+
const result = await client.removeAgent(input.name, {
|
|
38
|
+
removeMessages: input.remove_messages,
|
|
39
|
+
});
|
|
40
|
+
if (result.success && result.removed) {
|
|
41
|
+
return `✓ ${result.message}`;
|
|
42
|
+
}
|
|
43
|
+
else if (result.success && !result.removed) {
|
|
44
|
+
return `Agent "${input.name}" was not found in registry or storage.`;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return `✗ Failed to remove agent: ${result.message}`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=relay-remove-agent.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/mcp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"description": "MCP server for Agent Relay - native messaging tools for AI agents in Claude, Cursor, and VS Code",
|
|
5
5
|
"author": "Agent Workforce Inc.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@agent-relay/config": "2.0.
|
|
50
|
+
"@agent-relay/config": "2.0.22",
|
|
51
51
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
52
52
|
"smol-toml": "^1.6.0",
|
|
53
53
|
"zod": "^3.23.8"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/memory",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"description": "Semantic memory storage and retrieval system for agent-relay with multiple backend support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/hooks": "2.0.
|
|
25
|
+
"@agent-relay/hooks": "2.0.22"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/policy",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.22",
|
|
4
4
|
"description": "Agent policy management with multi-level fallback (repo, local PRPM, cloud workspace)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/config": "2.0.
|
|
25
|
+
"@agent-relay/config": "2.0.22"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* These types define the wire protocol for agent-to-agent communication.
|
|
6
6
|
*/
|
|
7
7
|
export declare const PROTOCOL_VERSION = 1;
|
|
8
|
-
export type MessageType = 'HELLO' | 'WELCOME' | 'SEND' | 'DELIVER' | 'ACK' | 'NACK' | 'PING' | 'PONG' | 'ERROR' | 'BUSY' | 'RESUME' | 'BYE' | 'STATE' | 'SYNC' | 'SYNC_SNAPSHOT' | 'SYNC_DELTA' | 'SUBSCRIBE' | 'UNSUBSCRIBE' | 'SHADOW_BIND' | 'SHADOW_UNBIND' | 'LOG' | 'CHANNEL_JOIN' | 'CHANNEL_LEAVE' | 'CHANNEL_MESSAGE' | 'CHANNEL_INFO' | 'CHANNEL_MEMBERS' | 'CHANNEL_TYPING' | 'SPAWN' | 'SPAWN_RESULT' | 'RELEASE' | 'RELEASE_RESULT' | 'STATUS' | 'STATUS_RESPONSE' | 'INBOX' | 'INBOX_RESPONSE' | 'LIST_AGENTS' | 'LIST_AGENTS_RESPONSE' | 'HEALTH' | 'HEALTH_RESPONSE' | 'METRICS' | 'METRICS_RESPONSE';
|
|
8
|
+
export type MessageType = 'HELLO' | 'WELCOME' | 'SEND' | 'DELIVER' | 'ACK' | 'NACK' | 'PING' | 'PONG' | 'ERROR' | 'BUSY' | 'RESUME' | 'BYE' | 'STATE' | 'SYNC' | 'SYNC_SNAPSHOT' | 'SYNC_DELTA' | 'SUBSCRIBE' | 'UNSUBSCRIBE' | 'SHADOW_BIND' | 'SHADOW_UNBIND' | 'LOG' | 'CHANNEL_JOIN' | 'CHANNEL_LEAVE' | 'CHANNEL_MESSAGE' | 'CHANNEL_INFO' | 'CHANNEL_MEMBERS' | 'CHANNEL_TYPING' | 'SPAWN' | 'SPAWN_RESULT' | 'RELEASE' | 'RELEASE_RESULT' | 'STATUS' | 'STATUS_RESPONSE' | 'INBOX' | 'INBOX_RESPONSE' | 'LIST_AGENTS' | 'LIST_AGENTS_RESPONSE' | 'LIST_CONNECTED_AGENTS' | 'LIST_CONNECTED_AGENTS_RESPONSE' | 'REMOVE_AGENT' | 'REMOVE_AGENT_RESPONSE' | 'HEALTH' | 'HEALTH_RESPONSE' | 'METRICS' | 'METRICS_RESPONSE';
|
|
9
9
|
export type PayloadKind = 'message' | 'action' | 'state' | 'thinking';
|
|
10
10
|
/**
|
|
11
11
|
* Base envelope structure for all protocol messages.
|
|
@@ -412,12 +412,57 @@ export interface ListAgentsResponsePayload {
|
|
|
412
412
|
parent?: string;
|
|
413
413
|
}>;
|
|
414
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Payload for LIST_CONNECTED_AGENTS request.
|
|
417
|
+
* Returns only currently connected agents (not historical/registered agents).
|
|
418
|
+
*/
|
|
419
|
+
export interface ListConnectedAgentsPayload {
|
|
420
|
+
/** Filter by project */
|
|
421
|
+
project?: string;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Payload for LIST_CONNECTED_AGENTS_RESPONSE.
|
|
425
|
+
*/
|
|
426
|
+
export interface ListConnectedAgentsResponsePayload {
|
|
427
|
+
/** List of currently connected agents */
|
|
428
|
+
agents: Array<{
|
|
429
|
+
name: string;
|
|
430
|
+
cli?: string;
|
|
431
|
+
idle?: boolean;
|
|
432
|
+
parent?: string;
|
|
433
|
+
}>;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Payload for REMOVE_AGENT request.
|
|
437
|
+
* Removes an agent from the registry (sessions, agents.json).
|
|
438
|
+
*/
|
|
439
|
+
export interface RemoveAgentPayload {
|
|
440
|
+
/** Agent name to remove */
|
|
441
|
+
name: string;
|
|
442
|
+
/** If true, also removes all messages from/to this agent */
|
|
443
|
+
removeMessages?: boolean;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Payload for REMOVE_AGENT_RESPONSE.
|
|
447
|
+
*/
|
|
448
|
+
export interface RemoveAgentResponsePayload {
|
|
449
|
+
/** Whether the operation succeeded */
|
|
450
|
+
success: boolean;
|
|
451
|
+
/** Whether an agent was actually removed */
|
|
452
|
+
removed: boolean;
|
|
453
|
+
/** Human-readable message */
|
|
454
|
+
message?: string;
|
|
455
|
+
}
|
|
415
456
|
export type StatusEnvelope = Envelope<StatusPayload>;
|
|
416
457
|
export type StatusResponseEnvelope = Envelope<StatusResponsePayload>;
|
|
417
458
|
export type InboxEnvelope = Envelope<InboxPayload>;
|
|
418
459
|
export type InboxResponseEnvelope = Envelope<InboxResponsePayload>;
|
|
419
460
|
export type ListAgentsEnvelope = Envelope<ListAgentsPayload>;
|
|
420
461
|
export type ListAgentsResponseEnvelope = Envelope<ListAgentsResponsePayload>;
|
|
462
|
+
export type ListConnectedAgentsEnvelope = Envelope<ListConnectedAgentsPayload>;
|
|
463
|
+
export type ListConnectedAgentsResponseEnvelope = Envelope<ListConnectedAgentsResponsePayload>;
|
|
464
|
+
export type RemoveAgentEnvelope = Envelope<RemoveAgentPayload>;
|
|
465
|
+
export type RemoveAgentResponseEnvelope = Envelope<RemoveAgentResponsePayload>;
|
|
421
466
|
/**
|
|
422
467
|
* Payload for HEALTH request.
|
|
423
468
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Lightweight client for agent-to-agent communication via Agent Relay daemon.
|
|
6
6
|
*/
|
|
7
|
-
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment, type SpawnResultPayload, type ReleaseResultPayload, type StatusResponsePayload, type InboxMessage, type AgentInfo, type HealthResponsePayload, type MetricsResponsePayload, type CreateProposalOptions, type VoteOptions } from './protocol/types.js';
|
|
7
|
+
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment, type SpawnResultPayload, type ReleaseResultPayload, type StatusResponsePayload, type InboxMessage, type AgentInfo, type RemoveAgentResponsePayload, type HealthResponsePayload, type MetricsResponsePayload, type CreateProposalOptions, type VoteOptions } from './protocol/types.js';
|
|
8
8
|
export type ClientState = 'DISCONNECTED' | 'CONNECTING' | 'HANDSHAKING' | 'READY' | 'BACKOFF';
|
|
9
9
|
export interface SyncOptions {
|
|
10
10
|
timeoutMs?: number;
|
|
@@ -289,6 +289,27 @@ export declare class RelayClient {
|
|
|
289
289
|
getMetrics(options?: {
|
|
290
290
|
agent?: string;
|
|
291
291
|
}): Promise<MetricsResponsePayload>;
|
|
292
|
+
/**
|
|
293
|
+
* List only currently connected agents (not historical/registered agents).
|
|
294
|
+
* Use this instead of listAgents() when you need accurate liveness information.
|
|
295
|
+
* @param options - Filter options
|
|
296
|
+
* @param options.project - Filter by project
|
|
297
|
+
* @returns Array of currently connected agent info
|
|
298
|
+
*/
|
|
299
|
+
listConnectedAgents(options?: {
|
|
300
|
+
project?: string;
|
|
301
|
+
}): Promise<AgentInfo[]>;
|
|
302
|
+
/**
|
|
303
|
+
* Remove an agent from the registry (sessions, agents.json).
|
|
304
|
+
* Use this to clean up stale agents that are no longer needed.
|
|
305
|
+
* @param name - Agent name to remove
|
|
306
|
+
* @param options - Removal options
|
|
307
|
+
* @param options.removeMessages - Also remove all messages from/to this agent (default: false)
|
|
308
|
+
* @returns Result indicating if the agent was removed
|
|
309
|
+
*/
|
|
310
|
+
removeAgent(name: string, options?: {
|
|
311
|
+
removeMessages?: boolean;
|
|
312
|
+
}): Promise<RemoveAgentResponsePayload>;
|
|
292
313
|
private setState;
|
|
293
314
|
private sendHello;
|
|
294
315
|
private send;
|
|
@@ -731,6 +731,35 @@ export class RelayClient {
|
|
|
731
731
|
};
|
|
732
732
|
return this.query('METRICS', payload);
|
|
733
733
|
}
|
|
734
|
+
/**
|
|
735
|
+
* List only currently connected agents (not historical/registered agents).
|
|
736
|
+
* Use this instead of listAgents() when you need accurate liveness information.
|
|
737
|
+
* @param options - Filter options
|
|
738
|
+
* @param options.project - Filter by project
|
|
739
|
+
* @returns Array of currently connected agent info
|
|
740
|
+
*/
|
|
741
|
+
async listConnectedAgents(options = {}) {
|
|
742
|
+
const payload = {
|
|
743
|
+
project: options.project,
|
|
744
|
+
};
|
|
745
|
+
const response = await this.query('LIST_CONNECTED_AGENTS', payload);
|
|
746
|
+
return response.agents || [];
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Remove an agent from the registry (sessions, agents.json).
|
|
750
|
+
* Use this to clean up stale agents that are no longer needed.
|
|
751
|
+
* @param name - Agent name to remove
|
|
752
|
+
* @param options - Removal options
|
|
753
|
+
* @param options.removeMessages - Also remove all messages from/to this agent (default: false)
|
|
754
|
+
* @returns Result indicating if the agent was removed
|
|
755
|
+
*/
|
|
756
|
+
async removeAgent(name, options = {}) {
|
|
757
|
+
const payload = {
|
|
758
|
+
name,
|
|
759
|
+
removeMessages: options.removeMessages,
|
|
760
|
+
};
|
|
761
|
+
return this.query('REMOVE_AGENT', payload);
|
|
762
|
+
}
|
|
734
763
|
// Private methods
|
|
735
764
|
setState(state) {
|
|
736
765
|
this._state = state;
|
|
@@ -839,6 +868,8 @@ export class RelayClient {
|
|
|
839
868
|
case 'STATUS_RESPONSE':
|
|
840
869
|
case 'INBOX_RESPONSE':
|
|
841
870
|
case 'LIST_AGENTS_RESPONSE':
|
|
871
|
+
case 'LIST_CONNECTED_AGENTS_RESPONSE':
|
|
872
|
+
case 'REMOVE_AGENT_RESPONSE':
|
|
842
873
|
case 'HEALTH_RESPONSE':
|
|
843
874
|
case 'METRICS_RESPONSE':
|
|
844
875
|
this.handleQueryResponse(envelope);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Protocol exports for @agent-relay/sdk
|
|
3
3
|
*/
|
|
4
|
-
export { PROTOCOL_VERSION, type MessageType, type PayloadKind, type Envelope, type EntityType, type HelloPayload, type WelcomePayload, type SendPayload, type SendMeta, type SyncMeta, type DeliveryInfo, type AckPayload, type NackPayload, type BusyPayload, type PingPayload, type PongPayload, type ErrorCode, type ErrorPayload, type LogPayload, type SyncStream, type SyncPayload, type SpeakOnTrigger, type ShadowConfig, type ShadowBindPayload, type ShadowUnbindPayload, type SpawnPayload, type SpawnPolicyDecision, type SpawnResultPayload, type ReleasePayload, type ReleaseResultPayload, type ConsensusType, type VoteValue, type ProposalStatus, type CreateProposalOptions, type VoteOptions, type MessageAttachment, type ChannelJoinPayload, type ChannelLeavePayload, type ChannelMessagePayload, type StatusPayload, type StatusResponsePayload, type InboxPayload, type InboxMessage, type InboxResponsePayload, type ListAgentsPayload, type AgentInfo, type ListAgentsResponsePayload, type HealthPayload, type CrashRecord, type AlertRecord, type HealthResponsePayload, type MetricsPayload, type AgentMetrics, type MetricsResponsePayload, type HelloEnvelope, type WelcomeEnvelope, type SendEnvelope, type DeliverEnvelope, type AckEnvelope, type NackEnvelope, type PingEnvelope, type PongEnvelope, type ErrorEnvelope, type BusyEnvelope, type LogEnvelope, type SyncEnvelope, type ShadowBindEnvelope, type ShadowUnbindEnvelope, type SpawnEnvelope, type SpawnResultEnvelope, type ReleaseEnvelope, type ReleaseResultEnvelope, type ChannelJoinEnvelope, type ChannelLeaveEnvelope, type ChannelMessageEnvelope, type StatusEnvelope, type StatusResponseEnvelope, type InboxEnvelope, type InboxResponseEnvelope, type ListAgentsEnvelope, type ListAgentsResponseEnvelope, type HealthEnvelope, type HealthResponseEnvelope, type MetricsEnvelope, type MetricsResponseEnvelope, } from './types.js';
|
|
4
|
+
export { PROTOCOL_VERSION, type MessageType, type PayloadKind, type Envelope, type EntityType, type HelloPayload, type WelcomePayload, type SendPayload, type SendMeta, type SyncMeta, type DeliveryInfo, type AckPayload, type NackPayload, type BusyPayload, type PingPayload, type PongPayload, type ErrorCode, type ErrorPayload, type LogPayload, type SyncStream, type SyncPayload, type SpeakOnTrigger, type ShadowConfig, type ShadowBindPayload, type ShadowUnbindPayload, type SpawnPayload, type SpawnPolicyDecision, type SpawnResultPayload, type ReleasePayload, type ReleaseResultPayload, type ConsensusType, type VoteValue, type ProposalStatus, type CreateProposalOptions, type VoteOptions, type MessageAttachment, type ChannelJoinPayload, type ChannelLeavePayload, type ChannelMessagePayload, type StatusPayload, type StatusResponsePayload, type InboxPayload, type InboxMessage, type InboxResponsePayload, type ListAgentsPayload, type AgentInfo, type ListAgentsResponsePayload, type ListConnectedAgentsPayload, type ListConnectedAgentsResponsePayload, type RemoveAgentPayload, type RemoveAgentResponsePayload, type HealthPayload, type CrashRecord, type AlertRecord, type HealthResponsePayload, type MetricsPayload, type AgentMetrics, type MetricsResponsePayload, type HelloEnvelope, type WelcomeEnvelope, type SendEnvelope, type DeliverEnvelope, type AckEnvelope, type NackEnvelope, type PingEnvelope, type PongEnvelope, type ErrorEnvelope, type BusyEnvelope, type LogEnvelope, type SyncEnvelope, type ShadowBindEnvelope, type ShadowUnbindEnvelope, type SpawnEnvelope, type SpawnResultEnvelope, type ReleaseEnvelope, type ReleaseResultEnvelope, type ChannelJoinEnvelope, type ChannelLeaveEnvelope, type ChannelMessageEnvelope, type StatusEnvelope, type StatusResponseEnvelope, type InboxEnvelope, type InboxResponseEnvelope, type ListAgentsEnvelope, type ListAgentsResponseEnvelope, type ListConnectedAgentsEnvelope, type ListConnectedAgentsResponseEnvelope, type RemoveAgentEnvelope, type RemoveAgentResponseEnvelope, type HealthEnvelope, type HealthResponseEnvelope, type MetricsEnvelope, type MetricsResponseEnvelope, } from './types.js';
|
|
5
5
|
export { MAX_FRAME_BYTES, HEADER_SIZE, LEGACY_HEADER_SIZE, type WireFormat, initMessagePack, hasMessagePack, encodeFrame, encodeFrameLegacy, FrameParser, } from './framing.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|