{"_id":"claude-react-web","_rev":"31-afebe9b21518df6f0b93da98aee341cf","name":"claude-react-web","dist-tags":{"latest":"0.7.3"},"versions":{"0.4.8":{"name":"claude-react-web","version":"0.4.8","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.8","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"3c3fe89f933bd5c9033b39b8b01b828e5d8268c9","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.8.tgz","fileCount":21,"integrity":"sha512-2iC0yrU6AJ8w0yp6wOLl1449kMUx9Z4TDPlhXNYlCUM7/S6LJstudRI9JweF4YDrr1WtWq3kwQLUP5X/ey+Vig==","signatures":[{"sig":"MEQCIEC15hd2UDsFk1YYUi+YMPaG1NBPychxv6ShEBRR0WhvAiANmAiBIbX1qJJO2TvfskN47bF53ralszlaVZNAjI/6+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1550668},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"390382b1d04a11401b56b39c6b12f921fb5fd2b5","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.8_1780476327518_0.9788402119225588","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"claude-react-web","version":"0.4.9","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.9","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"4a89742c8d29a3439386243a249ff551e3c832ed","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.9.tgz","fileCount":22,"integrity":"sha512-pnMdEP7pyWYoHfuWUVA8ogLAD/ZwmwCBFCqtmA5awVy5nWBwddd31eWoLSemvL4CXV8r940mpWDyiEJ4sYxyLQ==","signatures":[{"sig":"MEYCIQCwNB6b54ZRK2dso6XBJU26353BU6VEI0mSNqaA/TiC2wIhAMSgl6w+VOP4AH2aHxqZbX6DB0f8WMtQUnKlvofw9KTp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1558865},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d9f762f19f205f6d524f08cb8243ae0a09e83c58","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.9_1780483683957_0.3813547966441122","host":"s3://npm-registry-packages-npm-production"}},"0.4.10":{"name":"claude-react-web","version":"0.4.10","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.10","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"a1d782acdcc2a9ab428498e639b6024f3b40da48","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.10.tgz","fileCount":23,"integrity":"sha512-biOMXsOqUK7jMdDUDIdCZi9OB9SMxyls6QxgnRpKaVYQUJ7L8Sg2/LI4A/2HjjqPS6C7vulgNVOh93eHHiC22A==","signatures":[{"sig":"MEUCIQCqG6BsgZGCHZQLO65qZrXX3pPKmAtEWIYQ0NesGYgHogIgXRCO8Jf7i1MeA4/XdciWDxYQ/TaBhzmNkCKxNPH2sbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1649227},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"37cb7f849b9fef891e939707ef27140db89481ec","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.10_1780487990253_0.39068952996639417","host":"s3://npm-registry-packages-npm-production"}},"0.4.11":{"name":"claude-react-web","version":"0.4.11","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.11","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"b66efa2a5416cd3556ad7067383291d8fb8003a8","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.11.tgz","fileCount":23,"integrity":"sha512-2rfWp+geImjQ/VIctGkBXQ5vyj3xj3jaN1+UFJxNisTNS8vXa8jzgzTY3B9wSZMsBhfmrZCI9W53ABIaqOxsYw==","signatures":[{"sig":"MEUCIQChUD2uty8REk+mBJ2HuKR7W64Wmk9K1jMmMjNpUEnOFQIgXKT26S2rADQKvRA+1Eq5u0vd3GiLZriRJI0J8/q4NHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1662810},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"679412e47ae99a8caf7cd6c0e631e94ecf139064","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.11_1780542767412_0.7403663589972744","host":"s3://npm-registry-packages-npm-production"}},"0.4.12":{"name":"claude-react-web","version":"0.4.12","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.12","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"5adf42d2bfdc51150e8076e36ada7fc42dcd3045","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.12.tgz","fileCount":23,"integrity":"sha512-6/tjzdxayqzoBanp1s9u3O3AigoYXJYlkYTLypvEQ2cC8b90bD7WDDoAHr2aUQR8ZUa6xAhESz1zckT9drNB8g==","signatures":[{"sig":"MEUCIAJWBqZfud0dsfGEaa2xtwATIE7WVEe2dDgshXiRNmAfAiEA7lcN4pDN1fO8h/k6xdAa3yW+dtKrLi2+XnCqTCWIWjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1664632},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"ba7ee311abe6396a7d594a9df7926256c57d660e","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.12_1780555983093_0.6026003339427346","host":"s3://npm-registry-packages-npm-production"}},"0.4.13":{"name":"claude-react-web","version":"0.4.13","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.13","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"f769880065772ee4bb0ca378cfe258efc2edcbb3","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.13.tgz","fileCount":24,"integrity":"sha512-DuBCsKIsfDGhfOG4wXfX1VLHG6XAOK5Kr5cibdw/ZF8nhbYpWiBYfKTvKx5y4XmYuzBLY+xYvFSjl68MaNlV+Q==","signatures":[{"sig":"MEYCIQCAty1xLJL4EIzlPV4ekiXk0Fvphj+vrpQokDrgmjs69wIhAPdYYuwV+9tj/AmqWn/XMLEIbqe9uojzZmuDItY5OxSe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1680271},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"29fea6d5904bf491c32d8b02e77145a196da0422","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.13_1780661300597_0.13951564490693968","host":"s3://npm-registry-packages-npm-production"}},"0.4.14":{"name":"claude-react-web","version":"0.4.14","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.14","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"edd045b5ddef17600beceba4ce63822e6fd01f1d","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.14.tgz","fileCount":24,"integrity":"sha512-63nlCUlZser2cX3GPDo5JaoorrB666OtO4Z58SatFJkKbf5uk6RudLgJ9TMpRE1PttgS70QP3OCFB9NFTVBbkw==","signatures":[{"sig":"MEQCID5akYDArI1iHHre+j60n8qzqlzcpF/U2wrPGtZLOyg4AiAVThFlsHCYTkAhnEvzV7cFM3flgbhrsAxGptNdY2DmeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1685960},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d30fde4a88c9bf5706518cb6bb7b8c5c8d9e7901","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.14_1780892298972_0.49656170368832186","host":"s3://npm-registry-packages-npm-production"}},"0.4.15":{"name":"claude-react-web","version":"0.4.15","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.15","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"e7da41bcdcc4e49ad966b0b1042475f5eaaef30f","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.15.tgz","fileCount":24,"integrity":"sha512-yGTfDr6hqD5mUqfIUa16aTV7TFThMavzfHjcDIKozvbjQIE6hWbRduY7Ex0M7AIrxUWlhN89yNtD+XZnpmDAZQ==","signatures":[{"sig":"MEQCIBxfEnRjpL2PeD+IR7oWVqQwdP7sGNvylRtbQMnaE5MfAiA+6YJirV3Tw8CeOiDg9JSOZt+oT5qa64Ar1KeQcSkN6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1707620},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d1de96c851edacfe37f46a27a2fc2950a2ea334c","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.15_1780911871742_0.8288376429294451","host":"s3://npm-registry-packages-npm-production"}},"0.4.16":{"name":"claude-react-web","version":"0.4.16","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.16","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"991d2243809db78484bc5c38d24d73eb55fc127b","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.16.tgz","fileCount":24,"integrity":"sha512-WVR6ZbeznGUuPNft8J6MWRu4xh45F1rWWwxso3ko/J0/ihNmxTNuV8GPsroDzDy1+qnvD3Cl5gSGPy7ToBFBZQ==","signatures":[{"sig":"MEUCIQDHwy/oTEdL2vIJJ8WlStABP9FcPR0+QAFvCUEFSBHzugIgG5YuV2kTBTDeulD6omn+d9SxOSfF4E5eNrrZLmG2Xx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1711016},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"72a40804d48de252fccdd700f0944b2f41255719","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.16_1780923071761_0.06791651009474431","host":"s3://npm-registry-packages-npm-production"}},"0.4.17":{"name":"claude-react-web","version":"0.4.17","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.17","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"4ae6f3fda87dd733586aa8780f88066eaad512e0","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.17.tgz","fileCount":23,"integrity":"sha512-tcgjFrWdQxw2iwDSJgbCsagQqzqV2i4qtOm4kPROqYXo+qNZzI4KnElOsVqziuzLTJliyNZAPS3xoBZa6grFJQ==","signatures":[{"sig":"MEUCIQCQLGimEA8iRMw5HePhg81p3rD+RUDxFajt0RMyv6iHSAIgW6b1tCRuANuQN6CFmfHaMbu2NktmL4Eo8Mfn1Dai3tU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1704486},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"c86a3d6e6dab4346d9e25bdb190fa5379adc8918","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.17_1780988645570_0.9840020406520655","host":"s3://npm-registry-packages-npm-production"}},"0.4.18":{"name":"claude-react-web","version":"0.4.18","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.18","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"5aef585465fdbd6ad80c009b800e1241f2b68ffe","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.18.tgz","fileCount":23,"integrity":"sha512-7fO/VKokeJU8Q+CEP4UUZ9Owqoy9jrxnOb/3pntrLogeylB7ZpMovAjgi7Dzp/+vrXzjFWQ/PdPPJEkHJlSc+A==","signatures":[{"sig":"MEYCIQCl/rLe6KS3YXQpTols5gZ4pk3KpHOtQqlIMtthb39xvwIhAOUeVduPqyq0qk0VDEjjWcel+9z+Nb913oGjZJ0I7G+c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1795094},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"7026efefc5d6b3bf0c2b845ca7e2f63639fa937b","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.18_1781074387682_0.808223441790598","host":"s3://npm-registry-packages-npm-production"}},"0.4.19":{"name":"claude-react-web","version":"0.4.19","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.4.19","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"8b97e10e580d55cae692aef13099ca85510c64ef","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.4.19.tgz","fileCount":24,"integrity":"sha512-nu0+4G3YqXkwXeGaMioYDoZIEO5jlXqtUPbsgnD2c/V6/Hek86eElNqkcLIoV4SAjh/oFaqisE4jvnL5JQeVjw==","signatures":[{"sig":"MEUCIE9Gk0diiaYg5u1Xo10ZQb1TPVZhPgbg4uLO2VGFXOI/AiEA8vcbmJY2H2QVxTcrBLYDFBl/yhkjkPugY+YeWkvHq8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1811915},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"b225f2a42fca934da55c765f98b421ce9e2fd500","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.160"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.4.19_1781231152134_0.1526734917921846","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"claude-react-web","version":"0.5.0","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.0","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"6bbedf147aa9a71e62695795d4caafabb48b38e0","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.0.tgz","fileCount":23,"integrity":"sha512-3UxAYefIqY5fHklsCYmZ04OAkMrQibSdGiGfgfz29wEnZzQfMi8sVjE9u/HxBlZvr8NIUucxsMJDiUqhBhGAsQ==","signatures":[{"sig":"MEUCIGav40ph8T1VQrawRrjPiz8ZeafSajbd9c3bc3l3/iQ3AiEAt4JlKvJ3NPHzbtkcAwtPx59t3fidYZRpA1TH7QGQ+9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2078735},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"adf28de97ec80d759e61726a25cc1b6b298baba7","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.0_1781589868147_0.1178183054217603","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"claude-react-web","version":"0.5.1","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.1","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"359d1a677eb0d5997393d3892990c15f2a6eec3d","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.1.tgz","fileCount":25,"integrity":"sha512-1S/CYciHTtjfAfN52kCu4vzlwrGEoEub666WmfCeXBmF1YX6gnrN1LhTMGS+mvTNytUaQU2w3Yv3o+Sm+jmCCw==","signatures":[{"sig":"MEYCIQDX3YEIcVwAeiuJcs/P5avfsIzU0wVHkCWroJKY36kH1QIhAMS57b6kkub6ZQNXkCARZJA4S1fnAeVMZMDq6AjQINl2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2094584},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"04991a966e4467a2a80fa53efbe03e6bc8bbdac6","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.1_1781608509309_0.41686836261659366","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"claude-react-web","version":"0.5.2","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.2","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"5b53488a7e16bf53ba4d56fe5229659953633967","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.2.tgz","fileCount":25,"integrity":"sha512-sPJgQGnahoBIeNY1e+fjPKhWYHKdJU3CA50OGqpTomUYiw5ZJC2iDLsE8AMeDHrDInTPhDVFJF+vFvsEhXeFRA==","signatures":[{"sig":"MEYCIQDgzy/5x4B17VqqMDcLJzdiBO5u5mY5KhLZjfPG51WLWwIhAKLUlWuRoUvQHZRs8M5s58BsKM/GmSTjM6ezD7q3DymP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2097923},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"e1aeed416675c7198e59321ab4aefcb3ea4fbd87","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.2_1781617756611_0.15696104145929857","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"claude-react-web","version":"0.5.3","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.3","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"71ba12e72f05dd5a98ea510670e996f702dbcf45","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.3.tgz","fileCount":25,"integrity":"sha512-VCg63rH41YKuDc4g7doFid39OYC8EIhgWQcNylIwZlq5ea0qWymHqkUMLAjG0dtUAAYOs4Vp7FhdD3brERITBw==","signatures":[{"sig":"MEUCIH552F5gQHSXPyGr7ZaCppEIHt6V5PWUOrRgvnm2e+DsAiEA55dYqS7VA/QOPYMf2rdeOoFEl1nJsm0XvWgNmfFuwds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2146381},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"fdf30a014bc4066e2fb3b57853fc86f38dd195ae","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.3_1781768087132_0.04385057426412309","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"claude-react-web","version":"0.5.4","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.4","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"1d9ecc490a3611e12c9062012dd89241a3e6e7c6","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.4.tgz","fileCount":25,"integrity":"sha512-1SFg8dokCqWyIaf2tGd3FiqWckhx+BVo3Bq8sSY/oVltaEbdEoxPreWjU5drsJv+q65rQ4G8QtW4u91sG7bW6Q==","signatures":[{"sig":"MEUCIBwXWB5uBQEvOakkr5BJEf7xIpDHxdLkWMSLe7cCExlrAiEAryMLmI7p+omV5Le+zsggkmNcGhVTzU9RrAoEsU9AYJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2166304},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"7c8c28f6d9f549aa770c05863deedf243d9c060a","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"deprecated":"Deprecated: contained runtime crash. Use 0.5.6+ instead.","repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.4_1781781605222_0.16134757954417833","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"claude-react-web","version":"0.5.5","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.5","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"b2effe644e9aaed9412b0c2b8d3e417f5e666dcd","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.5.tgz","fileCount":25,"integrity":"sha512-/jTURx7UiICim0EnBsqh20im4sctkoOa0QduKAJhdSMZm7fWbnch3qFPs1X3pHJPcJ5PPCMFarGp+zPAYMnlIA==","signatures":[{"sig":"MEQCIEc2NOw7GH6S/9KedqpynpUInlO7bP+xCBCLCMY690AlAiARTH/UIt82238IUmBq+3HY4pxyrNrS4MePPkECdR3CfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2166364},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"77dd0a0821b1741b14f1a272757c057eb9f953d1","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"deprecated":"Deprecated: contained runtime crash. Use 0.5.6+ instead.","repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.5_1781782637651_0.5920146125393224","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"claude-react-web","version":"0.5.6","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.6","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"6a5546eee4586b75f327e7f65b4c360998cbfcb8","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.6.tgz","fileCount":25,"integrity":"sha512-k0BgAS2/9AsRhr7oRhr5J48WC6YJNngIICL0tZ2TeAsWrFCPN4Dx2pndYJcpNAiuH71DZNuIw7jN8OcSH37d3A==","signatures":[{"sig":"MEYCIQDcZKdYa0BP4g03OCqPXpdwMIHOiz3+3Ok+L9h5OiBfKQIhANFvgZM79VCHSfFG6sjrj+1PsHXBaVuNBjl2qziwMa7F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2166397},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"455c72f064ac2f5c543be09705756c0cbb49d0ad","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.6_1781783357481_0.296641337268728","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"claude-react-web","version":"0.5.7","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.7","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"cbee6acad3c53d53a8fdd8b5850dfa6ff001fc63","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.7.tgz","fileCount":25,"integrity":"sha512-NPPaB+5xx54oxx+OvfzeZkhJzaUWAAGSHdld9OCwdIcmXUkBKuVSI0XmIJlInbhzyuhXiesttDTIf3LFAr2SQw==","signatures":[{"sig":"MEUCIQC4bR80Sc0amrm4VWo08auxJjxQyDENjc4y47RP8u4ougIgY86UOwI3L6xO5CYkEwhPUhnZL7uOeRDFI3VunRKMtJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2174455},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"1a324aa373ce24138179345058f27ca7e9a5987a","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"0.3.177"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.7_1782131983917_0.2609603412482786","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"claude-react-web","version":"0.5.8","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.8","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"d3c854e7a5b9b6d430596825c92f7bc7b92c4c2a","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.8.tgz","fileCount":25,"integrity":"sha512-z09ZFxgwuyaKjbKC9ArFFBqhLNTTy4Ea3LaiqfMW1P4ir5V6fWNy25BuhoLnd0HKmiRZMgrjLEqnY78+qPRcIw==","signatures":[{"sig":"MEQCID8aRwJfySFH9tPv2aeLuPFRbreFxXbknSuPRsgHfCZvAiBiHvDGt6dGRZV9f2khJtRs5OpTX1KkuY+tEfU/KZIdng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2202574},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"3b9592e91e8ed922d3f378a1f47cd2723566edf4","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.185"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.8_1782202290061_0.19406284643521787","host":"s3://npm-registry-packages-npm-production"}},"0.5.9":{"name":"claude-react-web","version":"0.5.9","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.9","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"fecdaf583e1a8f447d9e8937d2e68e741e59c99b","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.9.tgz","fileCount":25,"integrity":"sha512-ez7/Ov84j/vOvw25TTNdHJWRXvcftqCMr28exwgdgbPuv08dQNUpXlJtPJ2uyeL5CMuU2ci70RwEe4LdePuXAQ==","signatures":[{"sig":"MEUCIQD7x+n9lhZxpgGIYzUYcklGPcmZBZgkNGmc0f7n06+7VQIgE8J++tunP186tZZdVx+Aa01/1d17DW3RTkGdmL82ic8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2209864},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"eeeb26333beba4ea57444f0d28177e395670e3ef","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"deprecated":"This version has been deprecated","repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.185"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.9_1782289861295_0.016683947873156857","host":"s3://npm-registry-packages-npm-production"}},"0.5.10":{"name":"claude-react-web","version":"0.5.10","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.5.10","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"31f38242149379f0c4e82630d00d4b72c7fce6ba","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.5.10.tgz","fileCount":25,"integrity":"sha512-2dDDWpK3fxMk5eesJ989yoJN0/IP679QnKZRXZA5t/YTnPZbICyo/7qFxkqbmz/0JbXL+ypWUWGBtvIgr/iCXA==","signatures":[{"sig":"MEUCIDdAQPCx8eh1hEQyVsD06QUFNMaJGL5486LHX4NbVTEoAiEApUA0AKg2Ce+sTTwQA3rTpzNWdsPRJEBNYzgtwF5Ad+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2236116},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"abb5f62b06501ce6d9d7571d2da53edeb712bbcf","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.185"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.5.10_1782367401409_0.42128636043909995","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"claude-react-web","version":"0.6.0","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.6.0","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"bce89bc7f28defa033ccf3e260aad3cc8ba40038","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.6.0.tgz","fileCount":25,"integrity":"sha512-mQm5RFJtNYsxFdTH8t88yOf9P1kPIXMm+RCRNGw4enh79bjKB1yxD+an8so/b/i2lUhk3BhSudqJW867rwp/Eg==","signatures":[{"sig":"MEQCIGHV2BrCJu4ObZyhYABUSZANaznrc6/zbBy59zpKw3JmAiAtQwoO/pnETuez2YnLenOdlmmx6gvP8oYbJK859o8SDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2336713},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"06a356ad27acc0acfb831e78fc3efc5a4ae9caf4","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","verify":"npm run typecheck && npm run lint && npm test && npm run build","preview":"npm run build && npm run start","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","idb":"^8.0.3","diff":"^9.0.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","@types/diff":"^7.0.2","highlight.js":"^11.11.1","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.185"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","fake-indexeddb":"^6.2.5","@types/react-dom":"^19.0.0","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.6.0_1783306118499_0.28093270196968456","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"claude-react-web","version":"0.7.0","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.7.0","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"2e857d8e61a6c2d1a87633844ee3b0a592f84c3d","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.7.0.tgz","fileCount":52,"integrity":"sha512-njnw70C/ddFMMoR0JNFFYkTA0I213uG+K7NsD0N339kUkrp5pYUS+hoTn7aruxQ4ScqJ0zVWkUsQ3HHG+OWlMA==","signatures":[{"sig":"MEUCICuym4yHVfD62Dsx7uPf2oMcVIYU9fz+WocRXRIakcu7AiEAlcVNxhZAb3Zb5EF0PhChlXdvHsohxLDRRabWtA0Vj0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3643828},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"d31e568a210f1e3ae3a4caa120b520d07a78a5bd","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","verify":"npm run typecheck && npm run lint && npm test && npm run build","preview":"npm run build && npm run start","dev:once":"concurrently -n server,client -c blue,magenta \"npm:dev:server:once\" \"npm:dev:client:once\"","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build","dev:client:once":"vite --port 5174","dev:server:once":"tsx server/cli.ts --port 3456 --no-open"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","idb":"^8.0.3","diff":"^9.0.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","motion":"^12.42.2","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","@types/diff":"^7.0.2","highlight.js":"^11.11.1","remark-breaks":"^4.0.0","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.185"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","fake-indexeddb":"^6.2.5","@types/react-dom":"^19.0.0","systeminformation":"^5.33.4","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.7.0_1788143485822_0.7858036965969712","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"claude-react-web","version":"0.7.1","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.7.1","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"ffc62e7d9720d0c0e22688f6bcf53d6a0afd9a3f","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.7.1.tgz","fileCount":48,"integrity":"sha512-p0nbR8Mx82mqM17JnZ6JSpHacty3w0PXhYUXtudE4pxLMTItZmQzx/9l3zptL+y/YH1RACwlJlbGJQp6J+S3jg==","signatures":[{"sig":"MEUCIHy74tV6vXe/c9jycvzGE3IyARUApZ2eNQ2GjmGYeA58AiEA5W+xd7+VxuXngJm8u4sSDlPauP/eGc+2UFH2r1y1lxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3940039},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"7d4bd74f11912552c406905273c9682f6a3e60b8","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","verify":"npm run typecheck && npm run lint && npm test && npm run build","preview":"npm run build && npm run start","dev:once":"concurrently -n server,client -c blue,magenta \"npm:dev:server:once\" \"npm:dev:client:once\"","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build","dev:client:once":"vite --port 5174","dev:server:once":"tsx server/cli.ts --port 3456 --no-open"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","idb":"^8.0.3","zod":"^4.3.6","diff":"^9.0.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","motion":"^12.42.2","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","@types/diff":"^7.0.2","highlight.js":"^11.11.1","remark-breaks":"^4.0.0","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.252"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","fake-indexeddb":"^6.2.5","@types/react-dom":"^19.0.0","systeminformation":"^5.33.4","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.7.1_1788337807948_0.47447682746048536","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"claude-react-web","version":"0.7.2","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"author":{"name":"LoopGe"},"license":"MIT","_id":"claude-react-web@0.7.2","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"homepage":"https://github.com/LoopGe/claude-react-web#readme","bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"bin":{"claude-react-web":"dist/cli.mjs"},"dist":{"shasum":"35e3bc15026fe7924423be03f5831e88a16e496b","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.7.2.tgz","fileCount":48,"integrity":"sha512-ocJ4efpZyIByuUNBUxJUpuyQgECkqZEEEL2sxrIgd8IyjKbFTDhzpjqoOhYpSwVG8gSARRMaqru3swFJ8sFW1Q==","signatures":[{"sig":"MEQCIFEP5MMMvLVFvnrsgLved6tM8JH0EPjvrqEzYYxz5/2lAiAwOKa3CJ07fQxaYGGaLlNL75X8o1s2ob9fAuRSitA7Ug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4055380},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"825127f1cabe50c7cabe2c0d9d0a490a77eb0024","scripts":{"dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","lint":"eslint .","test":"vitest run","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","format":"prettier --write .","verify":"npm run typecheck && npm run lint && npm test && npm run build","preview":"npm run build && npm run start","dev:once":"concurrently -n server,client -c blue,magenta \"npm:dev:server:once\" \"npm:dev:client:once\"","lint:fix":"eslint . --fix","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","dev:client":"vite --port 5174","dev:server":"tsx watch server/cli.ts --port 3456 --no-open","test:watch":"vitest","build:client":"vite build","build:server":"node build.mjs","format:check":"prettier --check .","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs","prepublishOnly":"npm run build","dev:client:once":"vite --port 5174","dev:server:once":"tsx server/cli.ts --port 3456 --no-open"},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"repository":{"url":"git+https://github.com/LoopGe/claude-react-web.git","type":"git"},"_npmVersion":"11.9.0","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ws":"^8.20.0","idb":"^8.0.3","zod":"^4.3.6","diff":"^9.0.0","hono":"^4.7.0","open":"^10.1.0","react":"^19.0.0","motion":"^12.42.2","qrcode":"^1.5.4","lowlight":"^3.3.0","ansicolor":"^2.0.3","react-dom":"^19.0.0","remark-gfm":"^4.0.1","@types/diff":"^7.0.2","highlight.js":"^11.11.1","remark-breaks":"^4.0.0","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.3.252"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^6.0.0","jsdom":"^29.1.1","eslint":"^9.39.4","vitest":"^3.2.4","esbuild":"^0.25.0","prettier":"^3.8.3","@types/ws":"^8.18.1","@eslint/js":"^9.39.4","typescript":"^5.6.0","@types/node":"^22.10.0","@types/react":"^19.0.0","concurrently":"^9.1.0","@types/qrcode":"^1.5.6","fake-indexeddb":"^6.2.5","@types/react-dom":"^19.0.0","systeminformation":"^5.33.4","typescript-eslint":"^8.59.2","@vitejs/plugin-react":"^4.3.0","@testing-library/react":"^16.3.2","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/claude-react-web_0.7.2_1788870595382_0.6400654494934566","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"claude-react-web","version":"0.7.3","description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","type":"module","license":"MIT","author":{"name":"LoopGe"},"homepage":"https://github.com/LoopGe/claude-react-web#readme","repository":{"type":"git","url":"git+https://github.com/LoopGe/claude-react-web.git"},"bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"bin":{"claude-react-web":"dist/cli.mjs"},"scripts":{"dev:server":"tsx watch server/cli.ts --port 3456 --no-open","dev:server:once":"tsx server/cli.ts --port 3456 --no-open","dev:client":"vite --port 5174","dev:client:once":"vite --port 5174","dev":"concurrently -n server,client -c blue,magenta \"npm:dev:server\" \"npm:dev:client\"","dev:once":"concurrently -n server,client -c blue,magenta \"npm:dev:server:once\" \"npm:dev:client:once\"","build:client":"vite build","build:server":"node build.mjs","build":"concurrently \"npm:build:client\" \"npm:build:server\"","start":"node dist/cli.mjs","preview":"npm run build && npm run start","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.node.json --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","test":"vitest run","test:watch":"vitest","verify":"npm run typecheck && npm run lint && npm test && npm run build","prepublishOnly":"npm run build","analyze:bundle":"npm run build:client && node scripts/analyze-bundle.mjs"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"^0.3.252","@hono/node-server":"^1.13.7","@modelcontextprotocol/sdk":"^1.29.0","@types/diff":"^7.0.2","ansicolor":"^2.0.3","busboy":"^1.6.0","diff":"^9.0.0","highlight.js":"^11.11.1","hono":"^4.7.0","idb":"^8.0.3","lowlight":"^3.3.0","motion":"^12.42.2","open":"^10.1.0","qrcode":"^1.5.4","react":"^19.0.0","react-dom":"^19.0.0","react-markdown":"^9.1.0","react-virtuoso":"^4.18.6","remark-breaks":"^4.0.0","remark-gfm":"^4.0.1","ws":"^8.20.0","zod":"^4.3.6"},"devDependencies":{"@eslint/js":"^9.39.4","@testing-library/react":"^16.3.2","@types/busboy":"^1.5.4","@types/node":"^22.10.0","@types/qrcode":"^1.5.6","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","@types/ws":"^8.18.1","@vitejs/plugin-react":"^4.3.0","concurrently":"^9.1.0","esbuild":"^0.25.0","eslint":"^9.39.4","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.2","fake-indexeddb":"^6.2.5","jsdom":"^29.1.1","prettier":"^3.8.3","systeminformation":"^5.33.4","tsx":"^4.19.0","typescript":"^5.6.0","typescript-eslint":"^8.59.2","vite":"^6.0.0","vitest":"^3.2.4"},"engines":{"node":">=20.0.0"},"gitHead":"4631aa76a1cdaadbea3686c26df349247ecb0a30","_id":"claude-react-web@0.7.3","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-rVfbiVIZOZSN3+mLpgULEavihS1DWu9VbY1Cws4YCuJtFCBpVLWwCc9dkZ6DInxejBBTnRihJi8UkGbBpuP/9w==","shasum":"f8450364003799eef79f87cc229f85fa6130b4d4","tarball":"https://registry.npmjs.org/claude-react-web/-/claude-react-web-0.7.3.tgz","fileCount":50,"unpackedSize":4221563,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDNb6f53Qj29i7iTZPg+sruwEck+AzxN+tHSexYryGeAAiBvhE9RKIkWJ22IAEyUkaqaWtsgsA3EmutbGpoJc1Durg=="}]},"_npmUser":{"name":"gezelin","email":"gezelin1178496442@gmail.com"},"directories":{},"maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-react-web_0.7.3_1789533176990_0.22967493132753813"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-03T08:45:27.403Z","modified":"2026-09-16T04:32:57.363Z","0.4.8":"2026-06-03T08:45:27.697Z","0.4.9":"2026-06-03T10:48:04.136Z","0.4.10":"2026-06-03T11:59:50.460Z","0.4.11":"2026-06-04T03:12:47.676Z","0.4.12":"2026-06-04T06:53:03.309Z","0.4.13":"2026-06-05T12:08:20.752Z","0.4.14":"2026-06-08T04:18:19.141Z","0.4.15":"2026-06-08T09:44:31.874Z","0.4.16":"2026-06-08T12:51:11.943Z","0.4.17":"2026-06-09T07:04:05.782Z","0.4.18":"2026-06-10T06:53:07.859Z","0.4.19":"2026-06-12T02:25:52.355Z","0.5.0":"2026-06-16T06:04:28.323Z","0.5.1":"2026-06-16T11:15:09.507Z","0.5.2":"2026-06-16T13:49:16.769Z","0.5.3":"2026-06-18T07:34:47.360Z","0.5.4":"2026-06-18T11:20:05.426Z","0.5.5":"2026-06-18T11:37:17.834Z","0.5.6":"2026-06-18T11:49:17.662Z","0.5.7":"2026-06-22T12:39:44.157Z","0.5.8":"2026-06-23T08:11:30.243Z","0.5.9":"2026-06-24T08:31:01.492Z","0.5.10":"2026-06-25T06:03:21.674Z","0.6.0":"2026-07-06T02:48:38.702Z","0.7.0":"2026-08-31T02:31:26.008Z","0.7.1":"2026-09-02T08:30:08.106Z","0.7.2":"2026-09-08T12:29:55.549Z","0.7.3":"2026-09-16T04:32:57.217Z"},"bugs":{"url":"https://github.com/LoopGe/claude-react-web/issues"},"author":{"name":"LoopGe"},"license":"MIT","homepage":"https://github.com/LoopGe/claude-react-web#readme","keywords":["claude","claude-agent-sdk","anthropic","chat","react","cli","hono","sse"],"repository":{"type":"git","url":"git+https://github.com/LoopGe/claude-react-web.git"},"description":"Local interactive chat platform powered by @anthropic-ai/claude-agent-sdk","maintainers":[{"name":"gezelin","email":"gezelin1178496442@gmail.com"}],"readme":"# claude-react-web\n\n[![npm version](https://img.shields.io/npm/v/claude-react-web.svg)](https://www.npmjs.com/package/claude-react-web)\n[![npm downloads](https://img.shields.io/npm/dm/claude-react-web.svg)](https://www.npmjs.com/package/claude-react-web)\n[![CI](https://github.com/LoopGe/claude-react-web/actions/workflows/ci.yml/badge.svg)](https://github.com/LoopGe/claude-react-web/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-20+-green.svg)](https://nodejs.org/)\n\nA local browser UI for [`@anthropic-ai/claude-agent-sdk`](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk).\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/homepage.png\" alt=\"claude-react-web UI\" width=\"100%\" />\n</p>\n\n## Features\n\n- **Multi-session chat** — Up to 3 conversations side-by-side, organised into reorderable session groups that persist across refreshes\n- **Streaming responses** — Real-time WebSocket streaming with fine-grained status (thinking / writing / tool use) and predicted next-prompt suggestions after each turn\n- **Permission management** — Visual tool-usage approval with per-session and global persistence, plan-mode approval with \"stop & take over\", and `Shift+Tab` permission-mode cycling\n- **Git integration** — Status, diff, branches, stashes, AI-generated commit messages, and rewinding tracked files to any point in the conversation\n- **Background tasks** — Background an in-flight task (`Ctrl+B`), watch subagents, and follow their progress live\n- **App plugins (Mods)** — Install plugins from a marketplace or a local directory to add menus, commands, settings, and panels to the app shell; each plugin runs its own trusted background service\n- **Image paste** — Drag & drop or paste images directly into the chat (inline multimodal content)\n- **Session search** — Full-text message search with highlighted matches and jump-to-result\n- **AI recaps** — One-click AI-generated summaries of a session\n- **MCP** — Configure global servers, add dynamic per-session servers, reconnect/toggle at runtime, and complete OAuth elicitation inline\n- **Keyboard shortcuts** — `Cmd+K` command palette and a full set of global shortcuts\n- **Themes & skins** — Dark / light / system modes with selectable skins (default, glow, Anthropic, high-contrast)\n- **Flexible config** — Model, permission mode, MCP servers, thinking/effort level, and more via in-app settings or `config.json`\n- **LAN access** — Scan a QR code to use from your phone on the same network\n\nEach chat session holds its own stateful `Query` (the SDK's streaming async generator), so multi-turn conversations, mid-run interruption, model switching, and permission-mode changes all drive a live subprocess.\n\n## Quick start\n\nInstall globally from npm and run:\n\n```bash\nnpm i -g claude-react-web\nclaude-react-web\n```\n\nOr run it without installing via `npx`:\n\n```bash\nnpx claude-react-web\n```\n\nEither way launches the server on `http://127.0.0.1:3456` and opens your browser.\n\n<details>\n<summary>Run from source instead</summary>\n\n```bash\ngit clone https://github.com/LoopGe/claude-react-web.git\ncd claude-react-web\nnpm install\nnpm run build\nnpm run start\n```\n\n</details>\n\nOn first run a starter `~/.claude-react-web/config.json` is scaffolded. Set your Anthropic credentials there before sending messages — the server forwards them to the Claude SDK subprocess:\n\n```json\n{\n  \"authToken\": \"sk-ant-...\",\n  \"baseUrl\": \"https://api.anthropic.com\"\n}\n```\n\n`authToken` is sent as a Bearer token, so it works against both the official API and Anthropic-compatible proxies (point `baseUrl` at the relay). You can also fill these in from the in-app settings panel. See [CONFIG.md](./CONFIG.md) for every field.\n\n### CLI options\n\n```\nclaude-react-web [options]\n  -p, --port <port>          Server port (default: 3456)\n      --host <host>          Bind host (default: 127.0.0.1). Use 0.0.0.0 to\n                             allow LAN access — this REQUIRES a web access\n                             token (auto-generated if --token is omitted).\n      --token <token>        Shared web access token required to use the UI.\n                             Auto-generated when the host is non-loopback.\n  -o, --open                 Open browser on start (default)\n      --no-open              Do not open a browser window\n      --cwd <path>           Default cwd advertised to new sessions\n      --model <name>         Default model advertised to new sessions\n      --state-dir <path>     Where session metadata + config.json are kept\n                             (default: ~/.claude-react-web)\n      --claude-binary <path> Path to the claude CLI binary (overrides\n                             CLAUDE_CODE_BINARY / PATH auto-detection)\n      --disable-app-plugins  Disable the App Plugins (Mods) subsystem\n      --safe-mode            Load app plugins in safe mode — static UI\n                             contributions only, no background subprocesses\n  -V, --version              Print version and exit\n  -h, --help                 Show help\n```\n\nWhen bound to a non-loopback host the server prints a token-bearing URL (plus a scannable QR code) so you can open the already-authenticated UI from a phone on the same network.\n\n### Terminal commands\n\nRun with no command to start the web server. Pass a subcommand to manage the\nsame persisted config the UI edits — headless and scriptable (`--json` for\nstructured output, `--yes` to confirm destructive verbs, `--state-dir <path>`\nto target a non-default state dir):\n\n```\nclaude-react-web mcp list | add <name> | update <name> | remove <name> | enable <name> | disable <name> | test <name>\nclaude-react-web marketplace add <url> | list | remove <id-or-url>\nclaude-react-web app-plugin marketplace add <url> | list | remove <id>\nclaude-react-web app-plugin list | install <marketplaceId>:<pluginName> | uninstall <id>\nclaude-react-web config get [key] | set <key> <value>\nclaude-react-web sessions list | delete <id>\nclaude-react-web doctor\nclaude-react-web update\n```\n\n`claude-react-web doctor` runs local environment checks and exits non-zero when\nsomething is broken; `claude-react-web update` checks the npm registry for a\nnewer release. `claude-react-web <command> --help` prints the full flags for a\ncommand.\n\n### Environment variables\n\nAnthropic credentials live in `config.json` (`authToken` / `baseUrl`), not in env vars — the server injects them into each SDK subprocess. The variables below tune the server itself and are all optional:\n\n| Variable | What it does | Default |\n| --- | --- | --- |\n| `CLAUDE_CODE_BINARY` | Path to the `claude` CLI binary (same as `--claude-binary`) | auto-detected on `PATH` |\n| `LOG_LEVEL` | Log verbosity (`error` / `warn` / `info` / `debug` / `trace`) | `info` |\n| `LOG_SCOPES` | Comma-separated scope filter for logs | all scopes |\n| `DEBUG_SESSION` | Set to `1` to force `LOG_LEVEL=debug` (back-compat alias) | — |\n| `EVENT_LOOP_PROBE` | Set to `0` to disable the event-loop stall probe | enabled |\n\nAny other `ANTHROPIC_*` variable in the environment is forwarded to the SDK subprocess as-is (except `ANTHROPIC_API_KEY`, which is intentionally stripped in favour of the `authToken` Bearer flow).\n\n### Configuration file\n\nMost server-side defaults (model list, recap model, commit-message model, upload limits, history cap, max group panels, etc.) are configured via `~/.claude-react-web/config.json`. See [CONFIG.md](./CONFIG.md) for the full field reference, or copy [`config.example.json`](./config.example.json) to get started:\n\n```bash\nmkdir -p ~/.claude-react-web\ncp config.example.json ~/.claude-react-web/config.json\n```\n\n## Develop\n\n```bash\nnpm install\nnpm run dev         # tsx watch server (:3456) + vite (:5174, /api proxied)\nnpm run typecheck\nnpm run lint\nnpm test\n```\n\nUseful scripts:\n\n| Script              | What it does                                             |\n| ------------------- | -------------------------------------------------------- |\n| `npm run dev`       | Hot-reloading server + Vite dev server side by side      |\n| `npm run build`     | `vite build` → `dist/client` then esbuild → `dist/cli.mjs` |\n| `npm run typecheck` | `tsc --noEmit` for both browser and Node tsconfigs       |\n| `npm run lint`      | ESLint (includes `react-hooks`)                          |\n| `npm run format`    | Prettier write                                           |\n| `npm test`          | Vitest (server unit tests + client hook tests)           |\n| `npm run verify`    | `typecheck` + `lint` + `test` + `build` in one go        |\n\n## Architecture\n\n```mermaid\ngraph TB\n  Browser[\"Browser UI<br/>React 19 · components · hooks · session-store\"]\n  Browser <-->|\"WebSocket (multiplexed) + REST /api\"| Routers\n\n  subgraph Server[\"Hono Server · port 3456\"]\n    direction TB\n    Gate[\"Auth gate (web token / LAN) · CORS · body-limit\"]\n    Routers[\"REST routers /api/* + WebSocket hub\"]\n    Gate --> Routers\n  end\n\n  subgraph SM[\"Session Manager — one live session per tab\"]\n    direction TB\n    Pool[\"Session pool\"]\n    Pump[\"Session Pump → history ring (500) → fan-out + task state\"]\n    Broker[\"Permission Broker (canUseTool)\"]\n    Dialogs[\"Dialog / Elicitation brokers<br/>(refusal fallback · MCP OAuth)\"]\n    Health[\"Health Monitor (stuck-session GC)\"]\n    Pool --> Pump & Broker & Dialogs & Health\n  end\n\n  Reg[\"Provider Registry<br/>(pluggable AgentProvider)\"]\n  Claude[\"claude provider → SDK Query\"]\n  SDK[\"Claude Agent SDK<br/>spawns claude CLI subprocess\"]\n  Anthro[\"Anthropic Messages API<br/>recap · commit-message · plugin ai-broker\"]\n  Stores[\"Disk-backed stores<br/>sessions.json · config.json · MCP · marketplace→plugins · snippets · UI state · app-plugins\"]\n  Plugins[\"App Plugins (Mods)<br/>marketplace · local installs · per-plugin Node service\"]\n  Git[\"Git Layer — git.ts owns all execution\"]\n  Disk[(\"~/.claude/projects/<br/>full transcripts · resumed via options.resume\")]\n\n  Routers --> Pool\n  Pool --> Reg --> Claude --> SDK\n  Broker -.->|canUseTool| Claude\n  Dialogs -.->|onUserDialog / elicitation| Claude\n  Routers --> Anthro\n  Routers --> Stores\n  Routers --> Plugins\n  Pump --> Git\n  Claude --> Disk\n  Pump -.->|history-reader| Disk\n```\n\n```\nserver/\n  cli.ts                # bin entry — argv, startup banner, QR, browser open\n  app.ts                # Hono app: auth gate, CORS, body-limit, route mounting, static serve\n  routes/               # REST routers: sessions, permissions, uploads, recap, config, health,\n                        # marketplace (mp), git-write, update, search, skills, hooks, dialog,\n                        # elicitation, reset, usage, ui-state\n  session-manager.ts    # multi-session pool, provider wiring, WS fan-out, idle GC\n  session-pump.ts       # drains each provider stream → history ring + subscribers + task state\n  providers/            # AgentProvider interface + registry; claude provider wraps the SDK Query\n  permission-broker.ts  # parks canUseTool requests until the client decides\n  elicitation-broker.ts # MCP OAuth elicitation requests\n  user-dialog-broker.ts # user dialogs (refusal-fallback prompt)\n  subagent-watcher.ts   # tracks background Agent dispatches → TaskRecordUi seeds\n  session-health.ts     # stuck-session detector (mid-turn silence GC)\n  recap.ts              # AI session summaries, via anthropic-api.ts\n  commit-message.ts     # AI commit messages, via anthropic-api.ts\n  compact-summary.ts    # session compaction summaries\n  history-reader.ts     # reads ~/.claude/projects transcripts; resume / fork anchors\n  ws.ts                 # WebSocket hub (single connection, multiplexed channels)\n  git.ts                # owns ALL git execution (runGit); git-broadcast.ts debounces mutations\n  git-routes.ts         # read-only git endpoints (status, diff, log)\n  fs-routes.ts          # directory-only browser for the cwd picker\n  mcp-config.ts         # global MCP server store; mcp-routes.ts exposes it\n  mp-store.ts           # homegrown git-repo marketplace → injects Options.plugins\n  snippet-store.ts      # composer text macros (snippet-routes.ts)\n  ui-state-store.ts     # session groups + sidebar order (json-file-store.ts backed)\n  app-plugins/          # Mods: manager, store, per-plugin Node process, marketplace, host API\n  config.ts             # centralised defaults from config.json\n  persistence.ts        # ~/.claude-react-web/sessions.json read/write\n  auth.ts               # web-access token gating (LAN)\n  exec.ts               # child_process helpers; process-monitor.ts watches subprocesses\n  update-checker.ts     # in-app upgrade detection (update-routes.ts)\n  log.ts                # createLogger(scope) — all diagnostics go through this\n\nshared/                 # types + logic shared by server and client\n                        # ws-protocol, tasks, elicitation, user-dialog, rewind, reset, usage,\n                        # account-info, app-plugins, hooks, skills, mcp-types, permission-request,\n                        # search/, …\n\nsrc/\n  App.tsx               # multi-panel chat grid, sidebar, settings overlay, command palette\n  components/           # Chat, Composer, MessageList, SessionList, GitPanel, TasksPanel,\n                        # CommandPalette, MarketplaceTab, McpInstaller, AppPluginsTab,\n                        # UsagePanel, RecapWindow, SubagentOverlay, …\n  hooks/                # useWsHub, useChatStream, usePastedImages, usePermissionChannel,\n                        # useGitStatus, useUpdateInfo, useUiState, useSessionRecap, useTaskInfo, …\n  session-store/        # client-side message store (reducer + selectors, IDB transcript cache)\n  search/               # full-text message search (extract, match, highlight)\n  app-plugins/          # plugin UI contributions (menus, commands, panels)\n```\n\nThe server keeps one live provider session per tab — the default `claude` provider wraps the SDK `Query`, and `session-pump.ts` drains it, fanning each SDK message out to every WebSocket subscriber via a single multiplexed connection per tab. Metadata is persisted in `~/.claude-react-web/sessions.json`, so sessions survive restarts; the SDK itself stores full conversation history in `~/.claude/projects/` and resumes them via `options.resume`. Server-side defaults (model list, recap model, commit-message model, upload limits, etc.) are centralised in `config.ts` and configurable via `~/.claude-react-web/config.json` — see [CONFIG.md](./CONFIG.md).\n\nThe separate **App Plugins (Mods)** system (`server/app-plugins/`, `shared/app-plugins/`, `src/app-plugins/`) lets plugins extend the app shell with menus, commands, settings, and panels. Each plugin's background code runs in its own trusted Node subprocess over JSON-RPC/stdio; plugins are installed from a marketplace repo (the official catalog lives in [`plugins/`](./plugins/), published as a separate lightweight GitHub repo) or a local directory. `--disable-app-plugins` and `--safe-mode` control the subsystem at launch.\n\n## Contributing\n\nIssues and pull requests welcome. The codebase has 2,500+ tests across ~170 files covering the session pool, persistence, git execution, permission broker, WebSocket hub, app-plugin runtime, keyboard shortcuts, and the client hooks — please keep them green (`npm test`).\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}