{"_id":"@alderzhang/easy-dev","_rev":"16-61e351832930c34fd69e89a9ed335805","name":"@alderzhang/easy-dev","dist-tags":{"latest":"0.6.10"},"versions":{"0.4.5":{"name":"@alderzhang/easy-dev","version":"0.4.5","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.4.5","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"847505d54b8b1591c50bc814015837bfcca2b946","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.4.5.tgz","fileCount":96,"integrity":"sha512-+tSEI3jyUIjPA642aq8GlYgqbvZlDyC58oU1IejPv6yul6tqiKg+mQoHpw3vBWv1Xx3rgzj6QhRHqQZJxI9ReQ==","signatures":[{"sig":"MEUCIQDXFt2A2PwW4qeSN+eZ6RLcPsZstd9pt2dPkPIhkEBTTQIgRrxS35/QPtjkd7Ox3ULZ2pnRTMNQuJVNUpAnwLvvhE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27622860},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postinstall":"node scripts/postinstall.mjs","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.4.5_1787324730933_0.27612656009412007","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@alderzhang/easy-dev","version":"0.4.6","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.4.6","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"d0ea8f0a267dd08760b0542038671a80f8f2ae44","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.4.6.tgz","fileCount":96,"integrity":"sha512-oXKTr/3vjD8ePwT0cYZufbQ5W51Y0QbLbKbwjv+NgYAvrJs+C5KPnn+4F5skCdCUSLbLvv6/KRs6x5fe1jZ9aw==","signatures":[{"sig":"MEUCIEzNo9WGGUCU7iL5rDFItLsWzSn0GwIDavuQWvTStCjkAiEA/TUDMYMgc8k/UVGfF5kW9ZEAo/Q3b3bBWe6bKM6pqOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27638581},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postinstall":"node scripts/postinstall.mjs","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.4.6_1787360270105_0.202314740253011","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@alderzhang/easy-dev","version":"0.4.7","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.4.7","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"76f43b21ad0381cc47f5eb98c1761a9d3e5125d9","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.4.7.tgz","fileCount":96,"integrity":"sha512-V5IOzVwElysHvsNdyu1bSTWTHUySRSsSAN8d67U+6ghcc3Oz2rZufiqG0B1C4z48yxNzJ3h9OlrHMXgEzPhCEA==","signatures":[{"sig":"MEUCIQC20YFTtG1fmbtfo6f+HX5for95/WYu8Spq/K0xsYiyAwIgBgpJQ6G1ZB4/aBJb8op7Nytw8JVitxC0TppR0B+Obqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27700838},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postinstall":"node scripts/postinstall.mjs","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.4.7_1787369483577_0.1876711705278309","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@alderzhang/easy-dev","version":"0.4.8","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.4.8","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"2fa016af76e5c188bb726150a681b0fb26b9f6e0","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.4.8.tgz","fileCount":96,"integrity":"sha512-jb1w/Kic4Ap6mpsD6okCTx7q6/nDAJHlTUBOqEpftiVGuoOs/tnPTEP1CzXncbZYEHw8Ba2oE6LATTpKTs2Gzg==","signatures":[{"sig":"MEUCIQCVCf+RhDqdmCA9yYQ8zlLXXTQEZ94T6JmXl5o10PCidQIgUWy7y+wF3m7hJ6mDepiyoRxY10z4TZP6TAUvlfsnVjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27717485},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postinstall":"node scripts/postinstall.mjs","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.4.8_1787373276852_0.8224430609719884","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@alderzhang/easy-dev","version":"0.4.9","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.4.9","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"615a3f5444303c5707bac8c3d4bce3b3f50ba6b1","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.4.9.tgz","fileCount":96,"integrity":"sha512-gE2xWdy1eOURnmXmZtCB22ipkxg6QXgUtAV9U+pUsi3VV/EwIySljtfBCVrqLru3XXp9UGbhgV6YT7RpGR5iZg==","signatures":[{"sig":"MEYCIQCOCFOO2zWmaTS3KuOL5ymlO8bJsndogCNfHxDK9WrhOgIhAP6W/awKflY0Nm29V0gGl9dQLR/HYZ1Z6GmfxFe7gc9P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27723396},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.4.9_1787375055626_0.989681793966608","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alderzhang/easy-dev","version":"0.5.0","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.5.0","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"eaa56a0306bd57c360c706150f8f21fd35180c3c","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.5.0.tgz","fileCount":96,"integrity":"sha512-TW0Y1/E0yPaRr9z1Y17nguAN/bvTZ6L7qfkn+WQHwuhtzd/1yqMbx0YA4QwO72hC5cPbreO0Q4orZ2SupC96mg==","signatures":[{"sig":"MEUCIQCMzeiYhngBRD9Jf7Y4M1Q7j0+WjsJgRbPKcLCN7nT/UAIgCoMyMPx6XAbhvLsfxnD2lT+EtmlEwIvoPD3LXTna8AQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27754467},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.5.0_1787382605057_0.5582425804770543","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@alderzhang/easy-dev","version":"0.5.1","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.5.1","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"e15320d47974e4af79b45e39c6caeeaaa23db31b","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.5.1.tgz","fileCount":96,"integrity":"sha512-tv0mENpEpvJGaiIL4OjU/pe5TrkFs8cM+nD9ZLRJmGYQxZ7dCkaW0JMiMlq5GoWz/siGHeCB5CGarpDUZYt1MA==","signatures":[{"sig":"MEUCIGFTHsQQ+se3i+ZidP1gi/X0NirqHaya0ie7p9Ma3F90AiEAqWvqE0TkQLVVsWtCmk0bkwG9bzPNzMuDwurJOpu9DFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27790502},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.5.1_1787392723059_0.5708068137219682","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@alderzhang/easy-dev","version":"0.5.2","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.5.2","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"87734a6ec5734073598ac24bc4f7821346dd659d","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.5.2.tgz","fileCount":96,"integrity":"sha512-VpCrJrTrRsr10xufj49pP/naMZPG5L/8bz2eDSHnebb1WfwCSDpm/ZWxdwcR9fqqQQnv/r+apkze/9exO6PjRg==","signatures":[{"sig":"MEUCIQCrmp79zSklJ/sOUgILayl+JZNu5iYjiHYHajrEfQg6fAIgIzHUPHjeL6uDvqI6wtTKv8SOIXb9PHZpzqVJMMAhKVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27810620},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.5.2_1787410113869_0.4096688777874522","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@alderzhang/easy-dev","version":"0.5.3","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.5.3","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js"},"dist":{"shasum":"7b409fc0e7f1039043d8d31eb8919f466a4d35c1","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.5.3.tgz","fileCount":96,"integrity":"sha512-R/B23I0+Q0ac7vNDbMNTsC+/4seus/aMqaQUwwEyDo5gNvoi2mD0OBpGNizxs4/uKwcZyM6q0v9585zHCa8xoQ==","signatures":[{"sig":"MEUCIQCkUyGrpptYi7zSq0QXC9EqU0QjI/Dlrr5Fr1clNb7JGQIgDMpUW5sxOjarap5mC1tNo9VugNjZeI3i052qxg+9OS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27847199},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix server test && npm --prefix web test && npm --prefix relay test && node --test scripts/*.test.mjs","build":"npm run build:web && npm run build:server && npm run build:relay","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","publish:internal":"node scripts/publish.mjs --target internal","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","rotating-file-stream":"^3.2.9","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.29.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.5.3_1787472114415_0.30059948013846793","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@alderzhang/easy-dev","version":"0.6.2","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.2","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"3ad2c1da099a6dceae19e4390ff009e4991540c0","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.2.tgz","fileCount":305,"integrity":"sha512-rbncGTimFE8KlgziHYVhQ7d3NHFtbGSH2mip8iZE9DEQVzIFD5DfanyCrS14+RHRH0LRc/Gwn/yFQNPq/lAbUg==","signatures":[{"sig":"MEUCIHSzrs+Q14KsGVYG+18C5SvXkqFjxe9voBW/jJUM8lhAAiEA45pZKPIanHFLbhO0V+Vrz4DaCF9FJ1Q6bcSQxa5+Fug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73874296},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test scripts/*.test.mjs","build":"npm run build:text-tokenizer && npm run build:web && npm run build:server && npm run build:codememory && npm run build:relay && npm run build:mcp-gateway","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","build:codememory":"npm --prefix codememory run build","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"file:shared/text-tokenizer","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.2_1788328713903_0.7535481113284848","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@alderzhang/easy-dev","version":"0.6.3","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.3","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"8b22113c2cd0054ac8ab86c2afe4d418c34b96e3","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.3.tgz","fileCount":306,"integrity":"sha512-r3L2VKBwrQ86/TTcj8Wh7CSpzWXXJVEwbPQTophGneqQJRWMEYytLPyXLWc5gjGv/E/UJ/wVYsuZcQ/26dgshA==","signatures":[{"sig":"MEUCIQD0N3Ngyk8CsjpnRYeVOmk7DcJWnLD9eCfnbJnKqLIZFwIgNB1tY7oMTSa+lJvs26lmfxFSHe68bYTfH52qzLkJCC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74006917},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test scripts/*.test.mjs","build":"npm run build:text-tokenizer && npm run build:web && npm run build:server && npm run build:codememory && npm run build:relay && npm run build:mcp-gateway","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","build:codememory":"npm --prefix codememory run build","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.3_1788347118920_0.6013544609982309","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@alderzhang/easy-dev","version":"0.6.4","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.4","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"95c61d7f8a0e3b53052232f9339c1d192785c5a3","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.4.tgz","fileCount":306,"integrity":"sha512-YTkcrQDDsWdkZW65YFmqxHt4V07JkGjgrJtGxNy0VojVMWxgqvGkmBrSNbp9L53DWEz33g2wggbEJQuRkQGrLw==","signatures":[{"sig":"MEQCIFmKiwAzMcaBHsZgfeO001OcyxHTmJOiD1ycsZvtKaurAiAYnNPe+2uHsd83ZGMBnHUEat6zJcJpIdELmCe91qMLvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74014202},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test scripts/*.test.mjs","build":"npm run build:text-tokenizer && npm run build:web && npm run build:server && npm run build:codememory && npm run build:relay && npm run build:mcp-gateway","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","build:codememory":"npm --prefix codememory run build","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.4_1788356293458_0.0903654724733356","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@alderzhang/easy-dev","version":"0.6.5","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.5","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"4ee08514744237938468556a0b9bf1bb05c801fc","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.5.tgz","fileCount":348,"integrity":"sha512-yHAAPSCeuJR2p2q/BGYtJ6TKTxLvhVU23GyCS/wAGQqpzRYBzB0h21uXxXntr7CFH3rF42Wjc06gNv5RSNKCBg==","signatures":[{"sig":"MEQCIH0RpqvAIKNXW6D+c2/reSrQAxI9oGQIPsk919PDoWNGAiA4rXbLFJfnIuXbNtMj/ASnZt7ugqDkqADOQVRaVH1JOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87818171},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test scripts/*.test.mjs","build":"npm run build:text-tokenizer && concurrently -s all -n web,server,codememory,relay,mcp-gateway -c auto \"npm:build:web\" \"npm:build:server\" \"npm:build:codememory\" \"npm:build:relay\" \"npm:build:mcp-gateway\"","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","test:affected":"npm --prefix shared/text-tokenizer run build && node scripts/test-affected.mjs","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target public","build:codememory":"npm --prefix codememory run build","build:if-changed":"node scripts/build-if-changed.mjs","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.5_1788506068056_0.3427253287231391","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"@alderzhang/easy-dev","version":"0.6.8","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.8","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","doc-memory":"docmemory/dist/main.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"5790ba4b32cd5b62fc42b4b12ccc71df4bd88cc4","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.8.tgz","fileCount":416,"integrity":"sha512-JS9DPeunjkSu84VUc4saJxnmt1H/VSoyMlixSW5A5BjzFCijeL1DPiLCt4tYBrQMGEqigvTVER1ODO7jMwtj/A==","signatures":[{"sig":"MEUCIAbJXbUkeZVMe7eCosKi/2tSOiJci6eaRVYwPddLurJNAiEAsR88DmXasJsF6BFKwQaM3aElHV4T2cD6XIWQBzQ/eHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGyTWmQaOuYPl6VQm5P0ZdCTDMFnT896iIJ65hWCUBxzAiBTlZIc/dRjnYRpB8TDM5Hjmxs8g/OTOGZ4ptQH/Zy9qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89249399},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test $(node scripts/list-root-test-files.mjs)","build":"npm run build:text-tokenizer && concurrently -s all -n web,server,codememory,relay,mcp-gateway,docmemory -c auto \"npm:build:web\" \"npm:build:server\" \"npm:build:codememory\" \"npm:build:relay\" \"npm:build:mcp-gateway\" \"npm:build:docmemory\"","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","test:ci":"node scripts/ci-full-test.mjs","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","test:full":"node scripts/test-full.mjs","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck && npm --prefix docmemory run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","test:affected":"npm --prefix shared/text-tokenizer run build && node scripts/test-affected.mjs","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target private","build:docmemory":"npm --prefix docmemory run build","lint:docs-links":"npm --prefix server run lint:docs-links --","publish:private":"node scripts/publish.mjs --target private","build:codememory":"npm --prefix codememory run build","build:if-changed":"node scripts/build-if-changed.mjs","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","@zip.js/zip.js":"^2.14.0","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.8_1789746221515_0.828757474611667","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"@alderzhang/easy-dev","version":"0.6.9","keywords":["acp","ai-coding","multi-repo","agent"],"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","_id":"@alderzhang/easy-dev@0.6.9","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"bin":{"easy-dev":"server/dist/cli/index.js","doc-memory":"docmemory/dist/main.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"ee56a16121490bad9739f956a81f7f041764962e","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.9.tgz","fileCount":416,"integrity":"sha512-Elex1fk4xJKVp1wv82EGNkkmbye126EKKGqtFhQaA7qrvCDGLetsO5g+OW7pxmlvdA5pFO30FhIBsQUk8gSAJw==","signatures":[{"sig":"MEQCIFCP+T44/WixWCmHyhpWxG+qreUVRjdZNRuEvtHX9FNcAiANtsItZSGCwKNkgc+Jlbo8x6YEOquBR0ZoJOYBVSMOqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEGQABiBHk3NeIIZC+bKCo4FCFd9teP6L927PIdPV7N3AiBozc4/7iPkbS9zBnwbCTSheUhcBJNg8BfaSyBptMlPYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89275071},"type":"module","engines":{"node":">=20"},"scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test $(node scripts/list-root-test-files.mjs)","build":"npm run build:text-tokenizer && concurrently -s all -n web,server,codememory,relay,mcp-gateway,docmemory -c auto \"npm:build:web\" \"npm:build:server\" \"npm:build:codememory\" \"npm:build:relay\" \"npm:build:mcp-gateway\" \"npm:build:docmemory\"","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","test:ci":"node scripts/ci-full-test.mjs","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","test:full":"node scripts/test-full.mjs","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck && npm --prefix docmemory run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","test:affected":"npm --prefix shared/text-tokenizer run build && node scripts/test-affected.mjs","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target private","build:docmemory":"npm --prefix docmemory run build","lint:docs-links":"npm --prefix server run lint:docs-links --","publish:private":"node scripts/publish.mjs --target private","build:codememory":"npm --prefix codememory run build","build:if-changed":"node scripts/build-if-changed.mjs","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","@zip.js/zip.js":"^2.14.0","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"tmp":"tmp/easy-dev_0.6.9_1789896810630_0.4887627119957241","host":"s3://npm-registry-packages-npm-production"}},"0.6.10":{"_id":"@alderzhang/easy-dev@0.6.10","bin":{"easy-dev":"server/dist/cli/index.js","doc-memory":"docmemory/dist/main.js","code-memory":"codememory/dist/main.js","mcp-gateway":"mcp-gateway/dist/main.js"},"dist":{"shasum":"2b69a90f7af13e28c697ac15ca19421c1f84ee34","tarball":"https://registry.npmjs.org/@alderzhang/easy-dev/-/easy-dev-0.6.10.tgz","fileCount":419,"integrity":"sha512-PFY3YrvV9oWgpYAjOouLq7Yvxejsbnpfrlc/GhH0L7BNAiR9ZlBhMcPSzSJniSiey+ZmxgB5Ma3RHwcQYt30LA==","signatures":[{"sig":"MEUCIDUp/1fuGwE+mREsNbjf8KjBOVYmAWSrqwTTn/t602XOAiEAzer7ZQogcI4Xm7u9MPpAHPJgRp7r8Ys0iNof0Hj2D7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBQ/j9K00qgcYvO5jUzUvS6hVXb6C4igC7CTnd5ulKLeAiAUl8MiVtHKwNE0SCyeeDofZG1axm1v9W1+Yu3NC74xPQ=="}],"unpackedSize":89530625},"name":"@alderzhang/easy-dev","type":"module","author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"engines":{"node":">=20"},"license":"UNLICENSED","scripts":{"cli":"node server/dist/cli/index.js","dev":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server\" \"npm:dev:web\"","test":"npm --prefix shared/text-tokenizer run build && npm --prefix server test && npm --prefix web test && npm --prefix relay test && npm --prefix mcp-gateway test && node --test $(node scripts/list-root-test-files.mjs)","build":"npm run build:text-tokenizer && concurrently -s all -n web,server,codememory,relay,mcp-gateway,docmemory -c auto \"npm:build:web\" \"npm:build:server\" \"npm:build:codememory\" \"npm:build:relay\" \"npm:build:mcp-gateway\" \"npm:build:docmemory\"","start":"node server/dist/cli/index.js start","dev:web":"npm --prefix web run dev","test:ci":"node scripts/ci-full-test.mjs","build:web":"npm --prefix web run build","dev:relay":"npm --prefix relay run dev","smoke:npm":"bash scripts/smoke-npm-availability.sh","test:full":"node scripts/test-full.mjs","typecheck":"npm --prefix shared/text-tokenizer run typecheck && npm --prefix server run typecheck && npm --prefix web run typecheck && npm --prefix relay run typecheck && npm --prefix codememory run typecheck && npm --prefix mcp-gateway run typecheck && npm --prefix docmemory run typecheck","dev:server":"npm --prefix server run dev","dev:stable":"concurrently -k -n server,web -c cyan,magenta \"npm:dev:server:stable\" \"npm:dev:web\"","build:relay":"npm --prefix relay run build","postpublish":"npm run smoke:npm","publish:all":"node scripts/publish.mjs --target all","build:server":"npm --prefix server run build","test:affected":"npm --prefix shared/text-tokenizer run build && node scripts/test-affected.mjs","prepublishOnly":"npm run check:publish-deps && npm run typecheck && npm run test && npm run build","publish:public":"node scripts/publish.mjs --target private","build:docmemory":"npm --prefix docmemory run build","lint:docs-links":"npm --prefix server run lint:docs-links --","publish:private":"node scripts/publish.mjs --target private","build:codememory":"npm --prefix codememory run build","build:if-changed":"node scripts/build-if-changed.mjs","publish:internal":"node scripts/publish.mjs --target internal","build:mcp-gateway":"npm --prefix mcp-gateway run build","dev:server:stable":"npm --prefix server run start:stable","check:publish-deps":"node scripts/check-publish-deps.mjs","build:text-tokenizer":"npm --prefix shared/text-tokenizer run build"},"version":"0.6.10","_npmUser":{"name":"alderzhang","email":"464770392@qq.com"},"keywords":["acp","ai-coding","multi-repo","agent"],"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"_npmVersion":"10.9.8","description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","directories":{},"maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.18.0","zod":"^4.4.3","cors":"^2.8.5","pino":"^10.3.1","ignore":"^5.3.2","qrcode":"^1.5.4","zigpty":"0.2.1","express":"^4.21.2","archiver":"^8.0.0","picomatch":"^4.0.5","jieba-wasm":"^2.4.0","minisearch":"^7.2.0","acme-client":"^5.4.0","compression":"^1.8.1","pino-pretty":"^13.1.3","@zip.js/zip.js":"^2.14.0","web-tree-sitter":"0.24.7","rotating-file-stream":"^3.2.9","@tencent/text-tokenizer":"0.1.0","@tursodatabase/database":"^0.6.1","@agentclientprotocol/sdk":"^1.2.1","@modelcontextprotocol/sdk":"^1.30.0","@agentclientprotocol/codex-acp":"^1.1.2","@agentclientprotocol/claude-agent-acp":"^0.58.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"concurrently":"^9.1.0"},"bundleDependencies":["@tencent/text-tokenizer","jieba-wasm"],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easy-dev_0.6.10_1790055307362_0.6457345478232284"}}},"time":{"created":"2026-08-21T15:05:30.671Z","modified":"2026-09-22T05:35:08.063Z","0.4.5":"2026-08-21T15:05:31.224Z","0.4.6":"2026-08-22T00:57:50.377Z","0.4.7":"2026-08-22T03:31:23.872Z","0.4.8":"2026-08-22T04:34:37.181Z","0.4.9":"2026-08-22T05:04:15.935Z","0.5.0":"2026-08-22T07:10:05.403Z","0.5.1":"2026-08-22T09:58:43.385Z","0.5.2":"2026-08-22T14:48:34.145Z","0.5.3":"2026-08-23T08:01:54.759Z","0.6.2":"2026-09-02T05:58:34.320Z","0.6.3":"2026-09-02T11:05:19.355Z","0.6.4":"2026-09-02T13:38:13.899Z","0.6.5":"2026-09-04T07:14:28.517Z","0.6.8":"2026-09-18T15:43:42.325Z","0.6.9":"2026-09-20T09:33:30.984Z","0.6.10":"2026-09-22T05:35:07.825Z"},"author":{"name":"alderzhang","email":"alderzhang@tencent.com"},"license":"UNLICENSED","keywords":["acp","ai-coding","multi-repo","agent"],"repository":{"url":"https://git.woa.com/alderzhang/easy-dev.git","type":"git"},"description":"基于 ACP 的多仓 AI Coding 交互层（单端口服务：前端 + API/WS）","maintainers":[{"name":"alderzhang","email":"464770392@qq.com"}],"readme":"# @tencent/easy-dev\n\n基于 ACP 协议的多仓 AI Coding 交互层。一个 Node 服务同时托管 **前端 UI** 与 **API / WebSocket**（单端口），并调用 Cursor、Codex、Claude Code 等 CLI Agent 完成 Coding 任务。\n\n## 快速开始\n\n```bash\n# 内网（腾讯 npm）\nnpx @tencent/easy-dev start\n\n# 外网（npmjs.com）\nnpx @alderzhang/easy-dev start\n\n# 指定端口并启动后打开浏览器\nnpx @tencent/easy-dev start --port 9000 --open\n# 或：npx @alderzhang/easy-dev start --port 9000 --open\n\n# 中继 HTTPS：命令行或 ~/.easy-dev/config.json（不必再记一长串 ACP_*）\nnpx @tencent/easy-dev start --exposure relay --relay-url https://easy-dev-hub.woa.com:9444\n\n# 查看状态 / 日志 / 重启 / 停止\nnpx @tencent/easy-dev status\nnpx @tencent/easy-dev logs -f\nnpx @tencent/easy-dev restart\nnpx @tencent/easy-dev stop\n```\n\n启动后访问终端打印的地址（默认 http://localhost:8787）。\n\n## 命令\n\n| 命令 | 说明 |\n| --- | --- |\n| `start` | 启动服务（默认后台；内置 supervisor，server 崩溃后自动重启） |\n| `stop` | 停止服务（结束 supervisor，不再拉起） |\n| `restart` | 重启服务 |\n| `status` | 查看运行状态（含健康检查、supervisor / server pid） |\n| `logs` | 查看服务日志 |\n| `clone` | 从 meta 仓一键导入项目（未全局安装时会先 `npm install -g`） |\n\n配置优先级：**命令行 > 环境变量 > `<dataDir>/config.json` > 内置默认**。示例见仓库根 `config.example.json`；也可用 `--config` / `EASY_DEV_CONFIG` 指定文件。\n\n### `start` / `restart` 选项\n\n| 选项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `--config <路径>` | `<dataDir>/config.json` | JSON 配置文件 |\n| `-p, --port <端口>` | `8787`（或 `PORT`） | 监听端口 |\n| `-H, --host <地址>` | `0.0.0.0`（或 `HOST`；relay 未显式指定时收回 `127.0.0.1`） | 监听地址 |\n| `-d, --data-dir <目录>` | `~/.easy-dev`（或 `ACP_SRV_ROOT`） | 数据目录（DB / worktree / meta 仓 / 日志 / PID） |\n| `--exposure <模式>` | `none`（或 `ACP_EXPOSURE_MODE`） | 暴露适配器：`none` / `relay` |\n| `--relay-url <URL>` | — | Relay Server 隧道入口（`ACP_RELAY_URL`） |\n| `--relay-ca <路径>` | — | 中继信任锚 CA（`ACP_RELAY_CA`） |\n| `--relay-name <前缀>` | — | 实例可读前缀（`ACP_RELAY_NAME`） |\n| `--set <key=value>` | — | 覆盖任意配置项（点路径，如 `exposure.relay.poolSize=16`） |\n| `-f, --foreground` | — | 前台运行（supervisor 占当前进程，适合调试 / 容器） |\n| `-o, --open` | — | 启动后自动打开浏览器 |\n| `--tls-cert <路径>` | — | HTTPS 证书 PEM（须与 `--tls-key` 成对） |\n| `--tls-key <路径>` | — | HTTPS 私钥 PEM |\n| `--tls-ca <路径>` | — | 可选 CA / 中间证书 PEM |\n| `--tls` / `--https` | — | 启用数据目录 `certs/` 中的托管证书 |\n\n> **自动重启**：`start` 拉起常驻 supervisor，由其管理 server 子进程。原生崩溃（如 SIGABRT）也会被感知并按退避策略重启；5 分钟内连续崩溃过多会熔断退出，避免 crash loop。`stop` 会写入 stop 意图再结束 supervisor。\n\n## HTTPS\n\n支持两条路径（可并存于文档/运维习惯，一次只选一种接入）：\n\n### 1) 原生 HTTPS（应用直接挂证书）\n\n证书默认落在数据目录：\n\n```text\n~/.easy-dev/certs/\n  tls.json      # { \"enabled\": true }\n  cert.pem\n  key.pem       # 权限 0600\n  ca.pem        # 可选\n```\n\n也可用环境变量 / CLI 指向外部文件（优先级高于托管目录）：\n\n```bash\nexport ACP_TLS_CERT=/path/to/cert.pem\nexport ACP_TLS_KEY=/path/to/key.pem\n# 可选：ACP_TLS_CA=/path/to/ca.pem\nnpx @tencent/easy-dev start\n\n# 或\nnpx @tencent/easy-dev start --tls-cert ./cert.pem --tls-key ./key.pem\n```\n\nWeb「全局配置 → HTTPS」可上传 PEM、生成开发用自签证书、切换启用；**变更后需 `easy-dev restart`**。\n\n启用原生 HTTPS 时，对外为 HTTPS；同一端口上的明文 HTTP 会 302 到 `https://`（按请求 Host 跳转）。Agent/MCP 仍走本机 loopback 明文 HTTP（避免自签证书导致 Agent 校验失败）。可用 `ACP_LOOPBACK_HTTP_PORT` 固定内部端口，默认由系统自动分配。\n\n### 2) 反向代理终止 TLS（正式部署推荐）\n\n应用保持 HTTP，并建议绑定本机：\n\n```bash\nHOST=127.0.0.1 npx @tencent/easy-dev start\n```\n\nCaddy 示例：\n\n```caddy\neasy-dev.example.com {\n  reverse_proxy 127.0.0.1:8787\n}\n```\n\nNginx 示例（需开启 WebSocket Upgrade）：\n\n```nginx\nserver {\n  listen 443 ssl http2;\n  server_name easy-dev.example.com;\n  ssl_certificate     /path/to/fullchain.pem;\n  ssl_certificate_key /path/to/privkey.pem;\n\n  location / {\n    proxy_pass http://127.0.0.1:8787;\n    proxy_http_version 1.1;\n    proxy_set_header Host $host;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n  }\n}\n```\n\n前端会按页面协议自动使用 `wss://`；服务端已开启 `trust proxy`，可识别 `X-Forwarded-Proto`。\n\n### `logs` 选项\n\n| 选项 | 默认值 | 说明 |\n| --- | --- | --- |\n| `-f, --follow` | — | 持续跟随输出 |\n| `-n, --lines <行数>` | `200` | 显示末尾行数 |\n| `-d, --data-dir <目录>` | `~/.easy-dev` | 数据目录 |\n\n## 前置依赖\n\n- **Node.js >= 20**\n- 至少一个 CLI Agent 在 `PATH` 中（如 `cursor-agent`、`codex`、`claude` 等）。Easy Dev 不代为安装这些 Agent。\n\n## 数据目录\n\n默认 `~/.easy-dev`，包含：SQLite 数据库、各任务 worktree、meta 仓、日志（`logs/`）、进程 PID 文件（`easy-dev.pid`）、可选 `config.json`。可用 `--data-dir` 或环境变量 `ACP_SRV_ROOT` 覆盖。\n\n## 本地开发\n\n```bash\nnpm install    # 安装根依赖；postinstall 会自动安装全部构建子包依赖\nnpm run dev      # 并行起 server(:8787) 与 vite dev(:5173)；server 用 tsx watch\nnpm run dev:stable  # 自托管推荐：server 不用 watch，避免 merge 改 server 源码时整进程重启\nnpm run build   # 构建 web 静态资源 + 打包混淆 server 到 dist\nnpm run test:affected  # 按 git 变更只跑受影响测试（见下）\n```\n\n`npm run test:affected` 会先用 import 图反查 git 变更（未提交改动 ∪ 相对**当前分支分叉源**的已提交改动）实际影响哪些测试，只实跑这些；本地改码时用它快速回归。**合并 main 前仍应跑全量 `npm test`**。分叉源从分支 reflog 的 `branch: Created from` 推断：普通任务即主干、子任务即父任务分支——否则子任务对照 `origin/main` 会把父分支存量（骨架、兄弟任务等）一并算作本次变更，整条重跑；推断失败回退 `origin/main`。常用参数：\n\n| 参数 | 说明 |\n| --- | --- |\n| `--dry-run` | 只打印选择结果，不执行测试 |\n| `--all` | 跳过选择，直接跑全部模块全量测试 |\n| `--module <server\\|web\\|relay\\|mcp-gateway\\|codememory\\|docmemory\\|scripts\\|text-tokenizer>` | 限定只跑某模块 |\n| `--base <ref>` | 显式指定比对基线（缺省自动推断分叉源；可传 `origin/main` 强制对照主干） |\n\n兜底规则：`test:affected` 是开发期快检，**尽量不跑全量，最多本模块**；整仓交给 `test:ci` / `npm test`。仓根 `package.json` / tsconfig **不**在这里拉整仓。模块内清单只跑该模块。未登记新包只跑该包测试并提示入表。`scripts/` 收进选择器（改脚本跑 `scripts/*.test.mjs`，进得了图就闭包）。`shared/text-tokenizer` 走路径模块映射：重建后跑自身 + server / mcp-gateway / docmemory，不带 web / relay / codememory。下游模块读的是 `@tencent/text-tokenizer/dist`——新 worktree 须先 `npm run build`（至少构建 text-tokenizer），否则会 `ERR_MODULE_NOT_FOUND`；`test:affected` 不会自动 build。图外产品源码若静态 `import` 了图内模块（如 CLI 壳 import 逻辑模块），先复用那些模块的测试闭包，借不到再**本模块**全量。spikes / 包内 `scripts/` / 未登记 `.scm/.scad` 等与 `.md/.log/.txt` 一样图外只告警、不跑。两个例外：① 纯类型文件（esbuild transform 后无运行时输出，如 `web/src/types.ts`）不影响运行时行为，不触发兜底（类型门禁在 `npm run typecheck` / `test:full`）；② 各测试模块源码由 `listSrcAnchorFiles` **目录扫描**自动进图并挂到该模块 `graphAnchors` 测试，增删文件无需改手写表；入口 / CLI / worker 等少数文件刻意排除（顶层副作用），**修改**走 import-side（复用它们静态 import 的图内模块闭包），**删除**读不到 import、落到本模块全量。`ASSET_MAPPINGS` 只认已登记 glob（`queries/**` / grammars / golden 等），不是任意 `.scm`。残留已删 import：纯副作用 `import \"./x\"` 会桩化并警告、建图继续；使用中的命名导入会整图失败并提示 `--all`。web 测试经 `web/test/registerAssetStubs.mjs` 注册 node 钩子桩化 `.css`/`.md`/`?url`/`?worker` 等 vite 资产导入。详细矩阵见 `docs/project/design/features/test-affected.md` §7。\n\n提交前建议先跑 `npm run typecheck` 做类型检查；测试按需执行：`npm run test:affected` 基于 import 图闭包 + 资产映射只跑受影响测试，输出**逐文件处置报告**（每个变更文件选中了哪些测试 / 模块兜底 / 无需测试），可逐一核对无遗漏。需要手动全量时用 `npm run test:full`（typecheck + 根套件，变更涉及 `codememory/` 或 `shared/` 时自动加跑 codememory 的 `test:node20`）。打向 `main` 的 MR 由工蜂 Stream CI（`.ci/mr-full-test.yml`）跑 `npm run test:ci`（强制 node20 + typecheck + 根套件 + 始终跑 codememory/docmemory；跳过依赖本机 Agent CLI 的用例）；本地复现同一套命令即可。本机有 CLI 时用 `npm test` 才会跑 `itAgentCli` / `*.agent.test.ts`。\n\n## 发布后可用性冒烟\n\n默认只发内网 `@tencent/easy-dev`：\n\n```bash\n# 凭证：TENCENT_NPM_TOKEN 或 ~/.npmrc（mirrors.tencent.com）\nnpm run publish:internal\n```\n\n源码 `package.json.name` 是 `@tencent/easy-dev`，`publishConfig.registry` 指向腾讯源。直接 `npm publish` 也会走内网（会跑 `prepublishOnly` + `postpublish` 冒烟）。\n\n发布副本会去掉 `postinstall` / `prepare` 等安装生命周期脚本：这些只服务源码仓的 `npm install`（给各构建子包装依赖）。打进用户包会被 npm 11+ 的 `allow-scripts` 默认拦截，且对发布布局是空操作。\n\n发布成功后跑 `scripts/smoke-npm-availability.sh`：在 Docker 容器（默认 `node:20-bullseye-slim`，约 200MB）内按真实默认路径验证包可用——全新安装，以及旧版起服后 `easy-dev update`。发布后会先轮询 `npm view name@version`，等 packument 可见再安装——包名已存在、新版本未同步时安装精确版本会 ETARGET，不是 404。\n\n```bash\nnpm run smoke:npm                 # 单独复跑内网（测 package.json 中的版本）\nVERSION=0.2.7 npm run smoke:npm   # 指定版本\n```\n\n前置：本机 Docker；内网冒烟需要 `~/.npmrc`（或 `SMOKE_NPMRC`）可访问腾讯源。无 Docker 时可设 `SMOKE_NPM_OPTIONAL=1` 跳过。镜像可用 `SMOKE_NPM_IMAGE` 换成内网加速源（勿用 alpine：native 依赖需要 glibc；也勿用 bookworm 系 `node:20-slim`，旧 Docker seccomp 可能无法跑 Node 20）。\n","readmeFilename":"README.md"}