{"_id":"@agentauto/agent-gateway","_rev":"15-1f27de74a8801c0eccecdacc071298f6","name":"@agentauto/agent-gateway","dist-tags":{"latest":"1.0.10"},"versions":{"0.1.0":{"name":"@agentauto/agent-gateway","version":"0.1.0","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.0","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"ab0322837c51b8139e67a0beeaa705debc291a55","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.0.tgz","fileCount":12,"integrity":"sha512-sDCGXpHk8maIrZIJMTgjoLq5fjHYd+oFHa6wUlFHxAjuk8nr+jRiIRDpc/AaAcBaXlFH3MXh7IaAH+d34CegHQ==","signatures":[{"sig":"MEUCIAr6yD+M259UPhAvjKbEuJdCGOBDPIhzLNw5pxgwSNHbAiEA0sARSGMQl3hAqwDgJ9L34WPY38D7eaWxeBJeFqAtySc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28104},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/2a4b19ec4b4752af281b03d2898b33c1/agentauto-agent-gateway-0.1.0.tgz","_integrity":"sha512-sDCGXpHk8maIrZIJMTgjoLq5fjHYd+oFHa6wUlFHxAjuk8nr+jRiIRDpc/AaAcBaXlFH3MXh7IaAH+d34CegHQ==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.0_1774490672170_0.7758822171343294","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agentauto/agent-gateway","version":"0.1.1","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.1","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"7591bbbe1a58448f0c6974236d9067cf3a5533fa","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.1.tgz","fileCount":13,"integrity":"sha512-epTv6OLCoShbMeGbrux8jDw9GtUFzYiQShgZdCKm4+/xOJpsNEdwnBXdQc6kBF6/YEHQSFkNHCiXaqsRLsWCMg==","signatures":[{"sig":"MEUCIQC2XECH3FhGZqxwtwJeczfpAIA6/enIjP97DxKe4imXIgIgNMse4f4l655V5ap7yEWzNM0/mKjvsnuLPchc8Eu4vCI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39043},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/36226ed31c96c47a80d8567142714761/agentauto-agent-gateway-0.1.1.tgz","_integrity":"sha512-epTv6OLCoShbMeGbrux8jDw9GtUFzYiQShgZdCKm4+/xOJpsNEdwnBXdQc6kBF6/YEHQSFkNHCiXaqsRLsWCMg==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.1_1774494954763_0.8992883260693767","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agentauto/agent-gateway","version":"0.1.2","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.2","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"bf9a9d43fa1cadb2e272ca09620feaa5d67788af","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.2.tgz","fileCount":13,"integrity":"sha512-HEmEBu+vW+5CN24xHbB+O1YcvH90KE0AJYWnsHCaa3yL9Y3uK6T9myOsQB+XpZf3pqlivIRYPIwK9MyFkghyHQ==","signatures":[{"sig":"MEUCIQDccqCHbEyA9Bim+xUOvmtTJ45AIboSlSTBrifyI5ZcCgIgIcjy1TtPkrH6e7Ms/JKR+MeH6romOkkh/gxr2V+5Kq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39043},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.2.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/e6f394c91ca9d77f33d32b34fc236138/agentauto-agent-gateway-0.1.2.tgz","_integrity":"sha512-HEmEBu+vW+5CN24xHbB+O1YcvH90KE0AJYWnsHCaa3yL9Y3uK6T9myOsQB+XpZf3pqlivIRYPIwK9MyFkghyHQ==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.2_1774499631291_0.8726977615421709","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agentauto/agent-gateway","version":"0.1.3","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.3","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"e8c61799fdecf1cdfd078cb9891e4f89e4673ae9","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.3.tgz","fileCount":13,"integrity":"sha512-i4jxbDz2AH/JG7sOTkAtgSa7OVgXCEhibtnaLy/GsmJ+A5ko9Hljgm8QJnA07p8nv9FZNciSkLa0RaAg+/kOww==","signatures":[{"sig":"MEUCIGmuAQJP9NO8WJbs6y4DF/MHGFGEq26Zo6eAG4iCzHiOAiEA4K35dfGHDLJsRhV1BJKZdENxDLj3JnM8SyTMfOYuOHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43267},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.3.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/667f42ae729cd0d9e9edd00895d95d0c/agentauto-agent-gateway-0.1.3.tgz","_integrity":"sha512-i4jxbDz2AH/JG7sOTkAtgSa7OVgXCEhibtnaLy/GsmJ+A5ko9Hljgm8QJnA07p8nv9FZNciSkLa0RaAg+/kOww==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.3_1774500548995_0.04485345960901155","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@agentauto/agent-gateway","version":"0.1.4","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.4","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"d7269ebb457a0f97c5a64b95755d4d4b34bb415c","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.4.tgz","fileCount":13,"integrity":"sha512-Vi0UELQCek7PSAT4FYDo/FacdmkoaGdiRFWzhVABZtkhzjvuTzch0/lvtxaTf2EoKNSjVc6xbVa58WNqDIhomA==","signatures":[{"sig":"MEQCIHppgBdfTJH8lb3InY7mBYJM5LGSXJ/3zq8U2/0m95lIAiBUKggp0/2emfMmZwr7PhtkM4aFjuckR2vOpF0fKABjbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45399},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.4.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/f56ace29e06dacb0b6205c877fb8dae9/agentauto-agent-gateway-0.1.4.tgz","_integrity":"sha512-Vi0UELQCek7PSAT4FYDo/FacdmkoaGdiRFWzhVABZtkhzjvuTzch0/lvtxaTf2EoKNSjVc6xbVa58WNqDIhomA==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.4_1774500966831_0.759768336938206","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@agentauto/agent-gateway","version":"0.1.5","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.5","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"9acb2ac1f33c35208c5a89895ef91a8d14ae386d","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.5.tgz","fileCount":13,"integrity":"sha512-QIUB4YA0lsrYjzUYRFLgd4y2zc5kadNhB8uaBI86lfzOZd9XLa5b3KC0D7kXLK0B62LrRPOraLfc+g4jr3QMsQ==","signatures":[{"sig":"MEUCIQDl6in9XhCXEC+vZ2SP325ZolE2homzOi4aCINEK9/3+QIgNXTHrVjPyx8Ro6G5ZtNR33imE69kYP1tR8ITKuHAe2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51732},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.5.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/06e02ffae4c90c1e3cc8a934ce2a5cff/agentauto-agent-gateway-0.1.5.tgz","_integrity":"sha512-QIUB4YA0lsrYjzUYRFLgd4y2zc5kadNhB8uaBI86lfzOZd9XLa5b3KC0D7kXLK0B62LrRPOraLfc+g4jr3QMsQ==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.5_1774505583611_0.8707084929839339","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@agentauto/agent-gateway","version":"0.1.6","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.6","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"815619308fc44061d0ed0884cd082108943bde0a","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.6.tgz","fileCount":13,"integrity":"sha512-hVXhF2LZ8dbbS/ct/R2ZeSX81q8KG78sYJVPPRnPsEak+CcA8RDFHgiC2W+656xhpvC0lbA8+rL0xsT2Chlxpg==","signatures":[{"sig":"MEUCIArpm5fAtycce9CghaQ7KEfzhSORNC8zzSfv+XtPwGmMAiEAt3xUHx30MKa67ws/NOc5M0NlwrZDhxUnLhaGjreFD24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52134},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.6.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/4de5e852f63c8134c6e3e86314bac1d8/agentauto-agent-gateway-0.1.6.tgz","_integrity":"sha512-hVXhF2LZ8dbbS/ct/R2ZeSX81q8KG78sYJVPPRnPsEak+CcA8RDFHgiC2W+656xhpvC0lbA8+rL0xsT2Chlxpg==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.6_1774509036993_0.5707077427416039","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@agentauto/agent-gateway","version":"0.1.7","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.7","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"ac78feb39fe9f7a47070a8556131ab25ada0df5f","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.7.tgz","fileCount":13,"integrity":"sha512-SGJL7oWx7/wU+KDk2uWfVPgwPBficoK4DbwqMndxcgbNnvCTcKdEs4H+AucPccPe3S17beZL3okpIURrg1BQcQ==","signatures":[{"sig":"MEYCIQCkvlGgMb6xMT5+AgRVam5Z51axtOC49+9PAMaNsW2qUQIhANemmg71vTrYzXXyLWvOyA1+19IaX2wjAGtTavew7Sqi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52134},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.7.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/a5112463e5ea1ddb929af97d89e92fd5/agentauto-agent-gateway-0.1.7.tgz","_integrity":"sha512-SGJL7oWx7/wU+KDk2uWfVPgwPBficoK4DbwqMndxcgbNnvCTcKdEs4H+AucPccPe3S17beZL3okpIURrg1BQcQ==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.7_1774509902662_0.3651118685724466","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@agentauto/agent-gateway","version":"0.1.8","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.8","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"89931f17aa3c927ca15d996c70b5c6c8cafab56b","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.8.tgz","fileCount":13,"integrity":"sha512-YT6a7URIN521zgfe2z1vIuTAr4tjhQvDMatzZLHihtPdK8FDtLkT9mPrv3gVqRFWKCdVW1PMnvLTA7ORbAGiUA==","signatures":[{"sig":"MEQCIFdFrXDPhGB/1TCIkCgQEOMmfe7WS6dvt8VGQIzyflgsAiBWCHYp7TuYqjUGKRA6oXzbbGQY4OTbNeoqmCUX2g6rXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54684},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.8.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/24359af520c370372efdf973e96dc72a/agentauto-agent-gateway-0.1.8.tgz","_integrity":"sha512-YT6a7URIN521zgfe2z1vIuTAr4tjhQvDMatzZLHihtPdK8FDtLkT9mPrv3gVqRFWKCdVW1PMnvLTA7ORbAGiUA==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.8_1774510609115_0.11101540426544432","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@agentauto/agent-gateway","version":"0.1.9","license":"Apache-2.0","_id":"@agentauto/agent-gateway@0.1.9","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"78891bf94ec85985fe158169d5ff24f3dff4eb3c","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-0.1.9.tgz","fileCount":13,"integrity":"sha512-4ZvzzSWz7muyZmFE7fiBgYmzJnSYYAfmF4g/42TxmpeIx9JSQ6Z4LYDmaNmo6rCbhmUf7yO9wWVS3UhVuQNwKA==","signatures":[{"sig":"MEUCIA8LczZ0+rWKR2gf3p7teIUNDqfa3sfTVSeT4SMD4rgrAiEAhRr3Qt6qFhKN1c8hDc4OLWuiqsph3HB+mnpcfjEi6I8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56048},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-0.1.9.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/307376fee4e48f8d5f4c75a8c3737a0c/agentauto-agent-gateway-0.1.9.tgz","_integrity":"sha512-4ZvzzSWz7muyZmFE7fiBgYmzJnSYYAfmF4g/42TxmpeIx9JSQ6Z4LYDmaNmo6rCbhmUf7yO9wWVS3UhVuQNwKA==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_0.1.9_1774510886325_0.9396926070306477","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@agentauto/agent-gateway","version":"1.0.0","license":"Apache-2.0","_id":"@agentauto/agent-gateway@1.0.0","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"2f200a91004e1cb68825ee122d8b729065f0193a","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-1.0.0.tgz","fileCount":13,"integrity":"sha512-RmbqA9fEhqONO3HpI1Lgz6r7KCB4tjMfwQHEInWBLJWpozd9jJ48+V4+fMh2peUkf+DwfbFJc/aYQgpq4hqpvw==","signatures":[{"sig":"MEYCIQDd+2fPKmlAVyalc21m24lQQhYdifUfbi2CrByHpgljvwIhAJ7WCDMp3KKYm2f+cIC9ZYnGfn0Z9d2cPFIzkFqoGeec","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66551},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-1.0.0.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/6efc91e91b4d5b47a3a063feb1836976/agentauto-agent-gateway-1.0.0.tgz","_integrity":"sha512-RmbqA9fEhqONO3HpI1Lgz6r7KCB4tjMfwQHEInWBLJWpozd9jJ48+V4+fMh2peUkf+DwfbFJc/aYQgpq4hqpvw==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_1.0.0_1774515350152_0.46021769134717716","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@agentauto/agent-gateway","version":"1.0.1","license":"Apache-2.0","_id":"@agentauto/agent-gateway@1.0.1","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"1a11b7364ad614c678960f32ebf444666757709a","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-1.0.1.tgz","fileCount":13,"integrity":"sha512-shqPputbeb7qamPsgVXzFTCYNGqK6hivU9S/6snqNS3hTn1Uij7wTFPLxbN76ix5jfr2DEe5E7xvGRdQ1RZ3TA==","signatures":[{"sig":"MEQCIB7xhiPpQofPfm9dP9JFsT+vkzgMHjuq8+DrkQ0lge2JAiBSn4OmL0z86UadzgtcbthuVsHPGIeEv6zL1+/3x2unKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66555},"main":"dist/index.js","type":"module","_from":"file:agentauto-agent-gateway-1.0.1.tgz","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"scripts":{"dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_resolved":"/private/var/folders/2p/pf0llj252knd4fy5mt1hyykw0000gp/T/62919d046904cfb1e6c9e63262ee8cd6/agentauto-agent-gateway-1.0.1.tgz","_integrity":"sha512-shqPputbeb7qamPsgVXzFTCYNGqK6hivU9S/6snqNS3hTn1Uij7wTFPLxbN76ix5jfr2DEe5E7xvGRdQ1RZ3TA==","_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote opencode ACP sessions","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_1.0.1_1774519115544_0.004680423966054281","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@agentauto/agent-gateway","version":"1.0.4","license":"Apache-2.0","_id":"@agentauto/agent-gateway@1.0.4","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"24e74c24d876b782306bf7002961deb5d3efca7a","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-1.0.4.tgz","fileCount":31,"integrity":"sha512-wJfRz0cAG7MnBBQ1q6nCwPPRxXNjttutNH5bCNSwU0ShrlifWMBLUQ7djMBaPuviZg/y4B/CWEeEXvrFDkjBNw==","signatures":[{"sig":"MEUCIQCUdrtfwDqbd9bJe5apyyXezAq1ZX+Zf6Ks6BUXFKgCUQIgBDt4zfBNnxQmayC2h8M5sHMJYlSmLi6JGUDB7n36agA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97327},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"gitHead":"0c327c20d98395958a264f3ebcfc015197d17607","scripts":{"ap":"node scripts/publish.mjs","dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_npmVersion":"10.9.4","description":"Standalone Agent Gateway for AionUI remote ACP sessions (OpenCode, Claude Code, Flowise, LangGraph)","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_1.0.4_1775188634714_0.5151421400690162","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@agentauto/agent-gateway","version":"1.0.7","license":"Apache-2.0","_id":"@agentauto/agent-gateway@1.0.7","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"bin":{"aionui-agent-gateway":"dist/cli.js"},"dist":{"shasum":"cb6395b3682b0839888ec6bc0972306a44b41d08","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-1.0.7.tgz","fileCount":31,"integrity":"sha512-yAkl0yJtEpGvhu5JKrJqnbAWNeTRpb+BP0Ln4dL4qtCFm1+AbowZSfHXA3w8uYTHu8M8rFcBOrc9u3EJp79ZWw==","signatures":[{"sig":"MEUCIALYHRvKOowyqoQG69eB7WHkrJ0+i4Bu5/MTFy4vkuHrAiEAzcFK9nCVshVGSZVnGiJVjfVYF3qClWfsRlxLF+CkdU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115085},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22 <25"},"gitHead":"5f846ad0ae28ed3b399afa3316f8d4edb3629b4f","scripts":{"ap":"node scripts/publish.mjs","dev":"pnpm exec tsx cli.ts","build":"pnpm exec tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"pnpm exec tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"_npmVersion":"10.9.0","description":"Standalone Agent Gateway for AionUI remote ACP sessions (OpenCode, Claude Code, Flowise, LangGraph)","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ws":"^8.18.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","@types/ws":"^8.18.1","typescript":"^5.8.3","@types/node":"^24.3.1"},"_npmOperationalInternal":{"tmp":"tmp/agent-gateway_1.0.7_1775914747430_0.14710384594284043","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@agentauto/agent-gateway","version":"1.0.10","description":"Standalone Agent Gateway for AionUI remote ACP sessions (OpenCode, Claude Code, Flowise, LangGraph)","license":"Apache-2.0","bin":{"aionui-agent-gateway":"dist/cli.js"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"npx tsx cli.ts","build":"npx tsc -p tsconfig.json","start":"node dist/cli.js","typecheck":"npx tsc --noEmit -p tsconfig.json","ap":"node scripts/publish.mjs"},"dependencies":{"ws":"^8.18.3"},"devDependencies":{"@types/node":"^24.3.1","@types/ws":"^8.18.1","tsx":"^4.19.1","typescript":"^5.8.3"},"engines":{"node":">=22 <25"},"_id":"@agentauto/agent-gateway@1.0.10","gitHead":"157a70954beb0f59a7763fe2abd6590f25cb71bc","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-LD7z3TEVTUiniovqMHIJlqCwiUbFdLrDMZlzRHfWVRja3rDfTV4mggjXDbSrY1Dj2Em36jf4quTZHsvuxyjLMQ==","shasum":"23ca9692a775a0d0094f9d09e6653e4f766080ee","tarball":"https://registry.npmjs.org/@agentauto/agent-gateway/-/agent-gateway-1.0.10.tgz","fileCount":31,"unpackedSize":170042,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEHFQuyJtS3mC3/8JqhaLSNhWfHJabw6q320TR+E7682AiEAp4Gp76qN32lMvQYeUH3zotC9f4s0q5j0kysTRpO8zws="}]},"_npmUser":{"name":"senro","email":"584233821@qq.com"},"directories":{},"maintainers":[{"name":"senro","email":"584233821@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agent-gateway_1.0.10_1778851638953_0.9100063350441789"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-26T02:04:32.060Z","modified":"2026-05-15T13:27:19.236Z","0.1.0":"2026-03-26T02:04:32.321Z","0.1.1":"2026-03-26T03:15:54.922Z","0.1.2":"2026-03-26T04:33:51.436Z","0.1.3":"2026-03-26T04:49:09.156Z","0.1.4":"2026-03-26T04:56:06.966Z","0.1.5":"2026-03-26T06:13:03.755Z","0.1.6":"2026-03-26T07:10:37.139Z","0.1.7":"2026-03-26T07:25:02.844Z","0.1.8":"2026-03-26T07:36:49.259Z","0.1.9":"2026-03-26T07:41:26.492Z","1.0.0":"2026-03-26T08:55:50.282Z","1.0.1":"2026-03-26T09:58:35.674Z","1.0.4":"2026-04-03T03:57:14.917Z","1.0.7":"2026-04-11T13:39:07.577Z","1.0.10":"2026-05-15T13:27:19.121Z"},"license":"Apache-2.0","description":"Standalone Agent Gateway for AionUI remote ACP sessions (OpenCode, Claude Code, Flowise, LangGraph)","maintainers":[{"name":"senro","email":"584233821@qq.com"}],"readme":"# @aionui/agent-gateway\n\n独立部署的 Agent Gateway，把不同执行后端（OpenCode / Claude Code / Flowise / LangGraph）统一封装成一个 WebSocket 服务，供 AionUI 或其他客户端远程接入。\n\n## 功能概览\n\n- WebSocket 命令入口：`/ws`\n- 健康检查接口：`/healthz`\n- 四种 runtime：`opencode` / `claude-code` / `flowise` / `langgraph`\n- 远程工作目录 `workspace` 支持，并受 `allowedRoots` 白名单限制\n- Token 鉴权（客户端通过 `?token=...` 传入）\n- 远程工作空间文件读写、增删改、目录浏览\n- 会话空闲回收、客户端断开自动清理\n- 模型切换、运行时配置切换、权限确认透传\n\n## 一个进程 = 一个 runtime = 一个端口\n\n> **多个 runtime 不能共用同一个端口**。\n\nGateway 启动时根据 `--runtime` 参数实例化**唯一一个** SessionManager，整个进程在该端口上只服务这一种后端（见 [index.ts:34-39](index.ts#L34-L39)）。\n\n如果需要在同一台服务器上同时提供 OpenCode、Claude Code、Flowise、LangGraph 四种后端，请启动 **4 个 Gateway 进程**，分别监听不同端口，例如：\n\n| Runtime     | 端口  | 说明                              |\n| ----------- | ----- | --------------------------------- |\n| opencode    | 18790 | 本地 opencode acp 子进程          |\n| claude-code | 18791 | 本地 claude-agent-acp(ACP 适配器) |\n| flowise     | 18792 | 远程 Flowise HTTP/SSE             |\n| langgraph   | 18793 | 远程 LangGraph HTTP/SSE           |\n\nAionUI 客户端在添加远程 Agent 时，分别填写对应端口即可。\n\n## 安装\n\n```bash\npnpm install\npnpm build\n```\n\n或全局安装发布包：\n\n```bash\npnpm dlx @agentauto/agent-gateway --help\n```\n\n## 启动方式（按 runtime 分类）\n\n所有示例都假设：\n\n- 鉴权 token：`your-token`\n- 允许的远程工作目录：`/srv/projects`\n\n客户端连接地址统一为：`ws://host:port/ws?token=your-token`\n\n### 1. OpenCode runtime（默认）\n\n后端是本地的 `opencode` 二进制，Gateway 通过 `opencode acp` 拉起子进程，使用 ACP-over-stdio 协议通信。\n\n**前置依赖：** Gateway 所在机器已安装并能直接运行 `opencode`。\n\n```bash\n# 开发模式\npnpm dev -- \\\n  --runtime opencode \\\n  --port 18790 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n\n# 生产模式（构建后）\npnpm start -- \\\n  --runtime opencode \\\n  --port 18790 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n\n# 全局命令\npnpm dlx @agentauto/agent-gateway \\\n  --runtime opencode \\\n  --port 18790 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n```\n\n如需自定义启动命令或参数：\n\n```bash\npnpm start -- \\\n  --runtime opencode \\\n  --opencode-command /usr/local/bin/opencode \\\n  --opencode-args acp,--verbose \\\n  --port 18790 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n```\n\n### 2. Claude Code runtime\n\n后端是 ACP 适配器 `@zed-industries/claude-agent-acp`，它内部封装了 `@anthropic-ai/claude-agent-sdk` 并暴露 ACP-over-stdio 接口。**协议层与 OpenCode 完全相同**，区别只在 spawn 的命令换成 `claude-agent-acp`，并在 `session/new` 上额外携带 `_meta.claudeCode.options.resume` 用于恢复会话（见 [src/gateway-claude-code/sessionManager.ts:30-78](src/gateway-claude-code/sessionManager.ts#L30-L78)）。\n\n> 注意：Anthropic 官方的 `claude` CLI 本身**不支持** ACP，没有 `--experimental-acp` 这个 flag。必须使用上面这个独立的适配器包。AionUI 桌面端的本地 Claude Code ACP 集成走的是同一个包，所以在同一台机器上一份安装即可同时供桌面和 Gateway 使用（见 [src/common/types/acpTypes.ts:41-42](../src/common/types/acpTypes.ts#L41-L42)）。\n\n**前置依赖：**\n\n- Gateway 所在机器全局安装 `@zed-industries/claude-agent-acp`（提供 `claude-agent-acp` 命令）\n- 已设置 `ANTHROPIC_API_KEY` 环境变量，或本机已经登录过 Claude（适配器会复用 Claude Code SDK 的认证逻辑）\n\n```bash\nnpm i -g @zed-industries/claude-agent-acp\n\npnpm start -- \\\n  --runtime claude-code \\\n  --port 18791 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n```\n\n自定义命令或参数（例如指向某个绝对路径或测试新版本）：\n\n```bash\npnpm start -- \\\n  --runtime claude-code \\\n  --claude-code-command /usr/local/bin/claude-agent-acp \\\n  --port 18791 \\\n  --token your-token \\\n  --allowed-roots /srv/projects\n```\n\n### 3. Flowise runtime\n\n后端是**远程** Flowise 服务。Gateway 不会拉起任何子进程，而是把客户端消息转成 HTTP/SSE 请求发给 Flowise 的 prediction 接口，并把流式结果转成 ACP 风格事件回推给客户端。\n\n**前置依赖：**\n\n- 一个可访问的 Flowise 实例\n- 一个已经发布的 Flowise workflow（chatflow）id\n- （可选）Flowise 的 Authorization 头\n\n可以在启动时通过 `--flowise-*` 参数提供默认值，AionUI 客户端在 `create_session` 时也可以在 `payload.flowise` 中按会话覆盖。\n\n```bash\npnpm start -- \\\n  --runtime flowise \\\n  --port 18792 \\\n  --token your-token \\\n  --allowed-roots /srv/projects \\\n  --flowise-base-url https://flowise.example.com \\\n  --flowise-workflow-id 1f2e3d4c-5b6a-7890-abcd-ef0123456789 \\\n  --flowise-authorization \"Bearer sk-xxxxxxxx\"\n```\n\n> Flowise runtime 仍需要 `--allowed-roots`：工作空间面板的文件读写仍发生在 Gateway 所在机器上。\n\n### 4. LangGraph runtime\n\n当前 `LanggraphSessionManager` 是 `FlowiseSessionManager` 的薄子类（见 [src/gateway-langgraph/sessionManager.ts](src/gateway-langgraph/sessionManager.ts)），协议与启动参数与 Flowise 完全一致，区别只在客户端侧的标签：\n\n```bash\npnpm start -- \\\n  --runtime langgraph \\\n  --port 18793 \\\n  --token your-token \\\n  --allowed-roots /srv/projects \\\n  --flowise-base-url https://langgraph.example.com \\\n  --flowise-workflow-id your-graph-id\n```\n\n## CLI 参数\n\n通用参数：\n\n| 参数                   | 默认值     | 说明                                                 |\n| ---------------------- | ---------- | ---------------------------------------------------- |\n| `--host`               | `0.0.0.0`  | 监听地址                                             |\n| `--port`               | `18790`    | 监听端口                                             |\n| `--runtime`            | `opencode` | `opencode` / `claude-code` / `flowise` / `langgraph` |\n| `--token`              | _无_       | WS 鉴权 token，客户端 `?token=...`                   |\n| `--allowed-roots`      | _无_       | 工作目录白名单，逗号分隔的绝对路径列表               |\n| `--max-sessions`       | `30`       | 最大并发会话数                                       |\n| `--idle-timeout-ms`    | `1800000`  | 会话空闲回收毫秒数（30 分钟）                        |\n| `--request-timeout-ms` | `300000`   | RPC 请求超时毫秒数（5 分钟）                         |\n\nOpenCode runtime 专用：\n\n| 参数                 | 默认值     | 说明                |\n| -------------------- | ---------- | ------------------- |\n| `--opencode-command` | `opencode` | opencode 可执行文件 |\n| `--opencode-args`    | `acp`      | 启动参数，逗号分隔  |\n\nClaude Code runtime 专用：\n\n| 参数                    | 默认值             | 说明                                   |\n| ----------------------- | ------------------ | -------------------------------------- |\n| `--claude-code-command` | `claude-agent-acp` | ACP 适配器可执行文件                   |\n| `--claude-code-args`    | _无_               | 启动参数，逗号分隔（适配器一般不需要） |\n\nFlowise / LangGraph runtime 专用：\n\n| 参数                      | 说明                                              |\n| ------------------------- | ------------------------------------------------- |\n| `--flowise-base-url`      | Flowise / LangGraph API base URL                  |\n| `--flowise-workflow-id`   | 默认 workflow / chatflow id                       |\n| `--flowise-authorization` | 默认 Authorization 请求头（例如 `Bearer sk-xxx`） |\n\n## 环境变量\n\n每个 CLI 参数都有同名环境变量；CLI 参数优先级更高，会覆盖环境变量。\n\n```text\nAGENT_GATEWAY_HOST\nAGENT_GATEWAY_PORT\nAGENT_GATEWAY_RUNTIME\nAGENT_GATEWAY_TOKEN\nAGENT_GATEWAY_ALLOWED_ROOTS\nAGENT_GATEWAY_MAX_SESSIONS\nAGENT_GATEWAY_IDLE_TIMEOUT_MS\nAGENT_GATEWAY_REQUEST_TIMEOUT_MS\nAGENT_GATEWAY_OPENCODE_COMMAND\nAGENT_GATEWAY_OPENCODE_ARGS\nAGENT_GATEWAY_CLAUDE_CODE_COMMAND\nAGENT_GATEWAY_CLAUDE_CODE_ARGS\nAGENT_GATEWAY_FLOWISE_BASE_URL\nAGENT_GATEWAY_FLOWISE_WORKFLOW_ID\nAGENT_GATEWAY_FLOWISE_AUTHORIZATION\n```\n\n示例（systemd / docker-compose 中常用）：\n\n```bash\nexport AGENT_GATEWAY_RUNTIME=claude-code\nexport AGENT_GATEWAY_PORT=18791\nexport AGENT_GATEWAY_TOKEN=your-token\nexport AGENT_GATEWAY_ALLOWED_ROOTS=/srv/projects,/data/workspaces\nnode dist/cli.js\n```\n\n## WebSocket 协议\n\n连接地址：\n\n```text\nws://host:port/ws?token=your-token\n```\n\n客户端请求格式：\n\n```json\n{\n  \"action\": \"create_session\",\n  \"requestId\": \"req-1\",\n  \"payload\": {\n    \"workspace\": \"/srv/projects/demo-repo\"\n  }\n}\n```\n\n支持的 `action`：\n\n会话与对话：\n\n- `create_session` — 新建会话，`payload.workspace` 必须落在 `allowedRoots` 内\n- `send_message` — 发送一轮提问；服务端立刻返回 `accepted`，真正的流式输出走 `event`\n- `set_model` — 切换模型（仅 ACP runtime 有效）\n- `set_config_option` — 切换运行时配置项（仅 ACP runtime 有效）\n- `confirm_permission` — 应答工具调用权限请求\n- `stop_session` — 终止指定会话\n- `list_sessions` — 列出当前进程内的会话\n\n工作空间（所有 runtime 都支持，操作目标始终是 Gateway 本机的 `workspace` 目录）：\n\n- `list_workspace` — 列目录\n- `read_file` — 读文件\n- `write_file` — 写文件\n- `create_entry` — 创建文件 / 目录\n- `rename_entry` — 重命名 / 移动\n- `delete_entry` — 删除（可 `recursive`）\n\n服务端响应格式：\n\n```json\n{\n  \"type\": \"response\",\n  \"requestId\": \"req-1\",\n  \"success\": true,\n  \"data\": {\n    \"sessionId\": \"gateway-session-id\"\n  }\n}\n```\n\n服务端事件格式（流式输出、权限请求、工作空间变更等）：\n\n```json\n{\n  \"type\": \"event\",\n  \"sessionId\": \"gateway-session-id\",\n  \"event\": {\n    \"type\": \"acp_message\",\n    \"payload\": {}\n  }\n}\n```\n\n常见事件 `type`：\n\n- `status` — 会话状态变化（`starting` / `ready` / `closed` …）\n- `acp_message` — 模型流式消息块\n- `permission_request` — 工具调用前的权限请求\n- `stream_end` — 一轮对话结束（含可选 `error`）\n- `workspace_changed` — 工作空间文件变化\n- `stderr` — 后端进程的 stderr 输出（调试用）\n\n## AionUI 客户端配置样例\n\n在 AionUI 中，每个远程后端对应一个「自定义 ACP 代理（Custom ACP Agent）」。在 `设置 → 模型与代理 → 自定义 ACP 代理 → 添加 → 高级 (JSON)` 里粘贴下面的配置即可。\n\n通用字段说明：\n\n| 字段                       | 说明                                                                                         |\n| -------------------------- | -------------------------------------------------------------------------------------------- |\n| `defaultCliPath`           | 用于在 UI 上区分后端类型；远程模式下不会真正执行，建议填运行时名（`opencode` / `claude` 等） |\n| `enabled`                  | 是否启用                                                                                     |\n| `env`                      | 注入到子进程的环境变量；远程模式下保持 `{}` 即可                                             |\n| `gateway.url`              | Gateway 的 WebSocket 地址，必须以 `ws://` 或 `wss://` 开头并以 `/ws` 结尾                    |\n| `gateway.token`            | 与 Gateway `--token` 保持一致                                                                |\n| `gateway.workspace`        | 远程会话的工作目录，必须落在 Gateway `--allowed-roots` 内                                    |\n| `gateway.requestTimeoutMs` | RPC 超时（毫秒），建议 ≥ Gateway 端的 `--request-timeout-ms`                                 |\n| `gateway.upstream`         | 仅 Flowise / LangGraph 需要，按会话覆盖远端 base URL / workflow / Authorization 等           |\n\n### 1. OpenCode runtime 配置样例\n\n```json\n{\n  \"defaultCliPath\": \"opencode\",\n  \"enabled\": true,\n  \"env\": {},\n  \"gateway\": {\n    \"url\": \"ws://127.0.0.1:18790/ws\",\n    \"token\": \"your-token\",\n    \"workspace\": \"/srv/projects/demo-repo\",\n    \"requestTimeoutMs\": 300000\n  }\n}\n```\n\n### 2. Claude Code runtime 配置样例\n\n```json\n{\n  \"defaultCliPath\": \"claude\",\n  \"enabled\": true,\n  \"env\": {},\n  \"gateway\": {\n    \"url\": \"ws://127.0.0.1:18791/ws\",\n    \"token\": \"your-token\",\n    \"workspace\": \"/srv/projects/demo-repo\",\n    \"requestTimeoutMs\": 300000\n  }\n}\n```\n\n### 3. Flowise runtime 配置样例\n\n```json\n{\n  \"defaultCliPath\": \"flowise\",\n  \"enabled\": true,\n  \"env\": {},\n  \"gateway\": {\n    \"url\": \"ws://127.0.0.1:18792/ws\",\n    \"token\": \"your-token\",\n    \"workspace\": \"/srv/projects/demo-repo\",\n    \"requestTimeoutMs\": 600000,\n    \"upstream\": {\n      \"baseUrl\": \"https://flowise.example.com\",\n      \"workflowId\": \"1f2e3d4c-5b6a-7890-abcd-ef0123456789\",\n      \"authorization\": \"Bearer sk-xxxxxxxx\",\n      \"streaming\": true,\n      \"passWorkspace\": true,\n      \"passSessionId\": true,\n      \"runtimeEmbedUrl\": \"https://flowise.example.com/chatbot/1f2e3d4c-5b6a-7890-abcd-ef0123456789\"\n    }\n  }\n}\n```\n\n> `upstream` 中的字段会按会话覆盖 Gateway 启动时的 `--flowise-*` 默认值。如果 Gateway 已经通过 CLI 配好默认 workflow，这里只需保留必要的差异即可。\n\n### 4. LangGraph runtime 配置样例\n\nLangGraph 当前协议与 Flowise 共用，区别只在 `defaultCliPath` 标签：\n\n```json\n{\n  \"defaultCliPath\": \"langgraph\",\n  \"enabled\": true,\n  \"env\": {},\n  \"gateway\": {\n    \"url\": \"ws://127.0.0.1:18793/ws\",\n    \"token\": \"your-token\",\n    \"workspace\": \"/srv/projects/demo-repo\",\n    \"requestTimeoutMs\": 600000,\n    \"upstream\": {\n      \"baseUrl\": \"https://langgraph.example.com\",\n      \"workflowId\": \"your-graph-id\",\n      \"authorization\": \"Bearer sk-xxxxxxxx\",\n      \"streaming\": true,\n      \"passWorkspace\": true,\n      \"passSessionId\": true\n    }\n  }\n}\n```\n\n> 远程访问时把 `127.0.0.1` 换成 Gateway 公网地址，并强烈建议在 Nginx / Caddy 前面套一层 `wss://` + 真实证书。\n\n## 健康检查\n\n```bash\ncurl http://host:port/healthz\n# {\"ok\":true}\n```\n\n## 部署\n\n更多 systemd / Docker / Nginx 反向代理示例，见 [DEPLOY.md](DEPLOY.md)。\n","readmeFilename":"README.md"}