{"_id":"codehost","_rev":"62-5decbb66396c4b66da9066c4fef8c214","name":"codehost","dist-tags":{"latest":"0.40.0"},"versions":{"0.1.0":{"name":"codehost","version":"0.1.0","_id":"codehost@0.1.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"d82835888323b08bce5b9f1a8ddfd58f3dfeb084","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.1.0.tgz","fileCount":41,"integrity":"sha512-AcKBPG05yH7IHqsz4X1RtnSh0U60wm0Cc8rXll0WKjm09z0ymo3zT3U+eSinI59q4h//wAIFPT1JyycsRwiTng==","signatures":[{"sig":"MEYCIQCzUByBARsFdhqHdfkbriac2UKMKPqKhV4VgwNPZjWbLgIhALwYFeHMHyT6Mwx/Q74smdNHkcIaVpZQTqQk9QeLKHKv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127636},"type":"module","gitHead":"2d3ffda1d6e48e2426d918239d13e15132811099","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"_npmVersion":"10.9.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"22.12.0","dependencies":{"hono":"^4.12.16","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","@vitejs/plugin-react":"^6.0.1","@cloudflare/workers-types":"^4.20250101.0"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.1.0_1780561791261_0.6710119175653404","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"codehost","version":"0.1.1","_id":"codehost@0.1.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"23902876f12e98709148c4363243c48302e1f58a","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.1.1.tgz","fileCount":48,"integrity":"sha512-kIrWbK9wdQpaydLO7PtEZV0X39PbI4u1bzy9Vd+Oaj3EeBNbA+cGx+Xaqilw1ES6qayXvL+HrxbzGr8eGzNqzQ==","signatures":[{"sig":"MEUCIAfOUz+lID+OUjO4eAk3gd/ZLGH7YEsr850fnZxBlGkMAiEAyILyCi06DRLJ4dyG/bcMSRqdI1JWvkX7DNj/nS2VfI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149588},"type":"module","shasum":"23902876f12e98709148c4363243c48302e1f58a","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"snomiao","email":"snomiao@gmail.com"},"_integrity":"sha512-kIrWbK9wdQpaydLO7PtEZV0X39PbI4u1bzy9Vd+Oaj3EeBNbA+cGx+Xaqilw1ES6qayXvL+HrxbzGr8eGzNqzQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"hono":"^4.12.16","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","@vitejs/plugin-react":"^6.0.1","@cloudflare/workers-types":"^4.20250101.0"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.1.1_1780573071684_0.25951538797494944","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"codehost","version":"0.3.1","_id":"codehost@0.3.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"de4e0f0706cfdb5ae4159c0e7ce6d7f4cfb3882e","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.3.1.tgz","fileCount":63,"integrity":"sha512-Ofsr65/fp40R5dNsv/f0G+L8H48HuoHeJ3WoM0p2yx0trnIwJzp4qL9BH3vSACS+hWkZZQuACXB8pgbbHSv+Fw==","signatures":[{"sig":"MEQCIBMoXitO4LXU4UHAFXUk7Ca/OOTYaiHjh6XjGGwIG6RzAiApN/U4JK5eUWVSJBTFHZMcOlWOM08x21F7GtAzSUenLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":204453},"type":"module","gitHead":"f118a5b1ec278f0e81a0ace48aecf99551500004","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.3.1_1780803663279_0.8141796149285261","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"codehost","version":"0.4.0","_id":"codehost@0.4.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"dd0042f48399bb977fb661647f049c9598c880cd","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.4.0.tgz","fileCount":65,"integrity":"sha512-zfVBXZYun2OeopAQUqR+z7ixF2BIlNCBJomQkmom9kBlAHLZIxqZE0FO7CHqOxvssWd36mqZpZ3uNyMujYvBRw==","signatures":[{"sig":"MEQCIHnCg9uL1tuYvWwgSsQ9NbbNaeVXgvG8BKI+5H9xf/hSAiAENMFmj49hAnpGiH4ETY5l2kxf6R9n6gpVd/PWb7V9uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213901},"type":"module","gitHead":"c0c1e76c21e08653e2cea46a07c3953ff562e146","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.4.0_1780885808954_0.014369150478323212","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"codehost","version":"0.5.0","_id":"codehost@0.5.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"11800ae5835393616a82cd2bf15c246a61d544a5","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.5.0.tgz","fileCount":65,"integrity":"sha512-wCvMK/u9UzoYmENy55xetCwi9BmeUeaQAJNdJ5ac8HZio8i36wQzKdvZfGV7A9HsbdR3O4Wb6QP77BMemwRXSw==","signatures":[{"sig":"MEYCIQC5SBTDLtqqb0f4aeEgKfjb8yzOFJsCB4H4BRiFauSxjQIhAMqgbPlb17eMz4yOYouz50qCT76pQ+cSi4yuKRZhBuDC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":225960},"type":"module","gitHead":"b50611bdf21ed40d59d0538c5709e1e1ff43c1fa","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.5.0_1780888110623_0.43617186335251845","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"codehost","version":"0.5.1","_id":"codehost@0.5.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"d40e8eca9eba5e033b269e6b93020673a102716c","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.5.1.tgz","fileCount":65,"integrity":"sha512-4ZzWNKcIzpfpff/PwiFOpQcyKBH4R+AK3M2QG+DUomkUEMOG03Aq7RbkG5b9VmJQ6m3IrsW0AiyUZg3y5G6KZA==","signatures":[{"sig":"MEUCIQCv0piZ11CiFJn16MzfI6t1XySllS993gOc+LJHS4+q1QIgBIw03BO2uI2jkIjjmJCBYnC/NrFT5OAevh8Ga0LQCVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229107},"type":"module","gitHead":"a7231afc88378aeffd686eeba40c99b5cbe278e9","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.5.1_1780896060028_0.020267867077034873","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"codehost","version":"0.6.0","_id":"codehost@0.6.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts"},"dist":{"shasum":"40652cd94365703b4fe1ce28d7a67cd9c79246eb","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.6.0.tgz","fileCount":67,"integrity":"sha512-FUfWZIkx4TV6HTXYPSJE2y/m3+Hwm8/JVhW+RcYk3Rz5zJuFvI8gAfIG+crV5SbQPLigJH5N+FGN8ZQhc9vihw==","signatures":[{"sig":"MEQCIFyfrhnjDYMKVTbv2Mo/0xySgynjR6/avRjjxkIfbeCOAiAT8Z4CTg8WB5HYjxO4c8OtH8toBRwVe+BO5GY1qTHUEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237138},"type":"module","gitHead":"0dd8cddb8bc05e3a359cc9cb2d33c65ec06aee8f","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.6.0_1780897833758_0.9138665697094754","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"codehost","version":"0.7.0","_id":"codehost@0.7.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"8b0518f0d91b246428fe75e217bf7a0f9edb1cd1","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.7.0.tgz","fileCount":67,"integrity":"sha512-l7Xo8O9Nal+1+dE82U5WXFMlV2fVFp0JgzQjLCDHnkq7X/L0+nGjxdtSN5G+i30bspqKGXyTDKhx+cImfKVhIQ==","signatures":[{"sig":"MEUCIQCHgmb6vhBXLzlgLJWfne5O///CGpeQ23hreFWGodzZhQIgFSHL4aT/SOX4kLn+HXT3y5xleMKC+sizXuXKEXpFMWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":237406},"type":"module","gitHead":"2dd9dac67fdd8dc9e8435af644c483149bcc7e43","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.7.0_1780899476935_0.2757159014124606","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"codehost","version":"0.7.1","_id":"codehost@0.7.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"345e11f95eaf1554cad7ce49b9ca80c44b127b40","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.7.1.tgz","fileCount":68,"integrity":"sha512-7F52VRVgnfnoJ9eODh21LYHG8p4cCJowWF915iFE2X1LB2kzzfphSTilmTnru/OPxdjNIUggQJeSxtbQLdR97Q==","signatures":[{"sig":"MEQCIEBxy1fJNOSY2Vqy3LoZfmDPFaMCYMiihy6WUMgolfKSAiAc+fzTiXm6RW71NTUf6qrusNnlIPUE6YXXVYcMHmnM1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":241461},"type":"module","gitHead":"a3668f43a22775fc381c2a0dd097c306f5d55fa2","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.7.1_1780904533550_0.14305881954316324","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"codehost","version":"0.8.0","_id":"codehost@0.8.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"89ce1e18c9aaf7fcd395cc9422d4a208ed082ad3","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.8.0.tgz","fileCount":70,"integrity":"sha512-6qlNropREcbmL1YPmV7pskt7xvIuWoSqSzKkH1f6wTvJF++gqOQp9x5imni6+8jlClWC+ayrXSiVenVpGPJkFQ==","signatures":[{"sig":"MEUCIBVho7yqjg32bSqP4L/0ldJDEJO5koDJ3qFV876Xz9ubAiEApUN/vcuyWbNf8+kI92lPU7JtQTZDqxtJKudByarsoqM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":251404},"type":"module","gitHead":"335c78d9c5ba3d287baec2ef1a8fd9f957b264d7","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.8.0_1780909575616_0.06385145795531288","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"codehost","version":"0.9.0","_id":"codehost@0.9.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"a9c629727d497961b4aa394b8cf836971509de72","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.9.0.tgz","fileCount":70,"integrity":"sha512-G08F6O3tI/beMsgh3InCCejP9atrCVMo155I4IQHc2O+YGzQ3A+/h/bzBcJpBIDoOf1AmixpiMeuV53fOJQZpQ==","signatures":[{"sig":"MEQCIGJJwOg3TctANOD9xLTN5vnYnFhCyYf8ILb752nfqcVRAiBNWn4ZBt+zvZEFEy9ug1BFwhGmrEIIq6Ygv1YigJJe2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":254357},"type":"module","gitHead":"188ea4d3f4aaedd58f65802bcba53e00b7367589","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.9.0_1780911461569_0.29410349327101426","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"codehost","version":"0.9.1","_id":"codehost@0.9.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"0aa18e218a037f90caf37a00ab5227fb0c4c66b0","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.9.1.tgz","fileCount":70,"integrity":"sha512-1XCEc4ZfFm9w7g3gUDsEiCbW8xy8WbMOggMBcM1g77A/n59JFCqxclPxUGG5BBFrG565dchufYh1m4gv+ZMZvw==","signatures":[{"sig":"MEUCIQC1N5tQDpIfEHhqXzcSvTOFfZTux33GQ1fKkC9JthvffwIgUvho0IMmvheF8VG7dcfYz2o/K3HvUAz2rQV/pgVIetI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255689},"type":"module","gitHead":"fb580b114ff8788e8fea55739f06fa1fe929c10a","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.9.1_1780912768781_0.23914379097260996","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"codehost","version":"0.10.0","_id":"codehost@0.10.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"78ec0bfbd95593a161507375202b785fa710f76e","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.10.0.tgz","fileCount":70,"integrity":"sha512-puieGTOtRCLXhP8eEBcWJYDhN2GR4KVfQqlxMPJOYgzE5YyJF/VzKuP1qelcVMOCwNxgYdvGvNb6PQbt3wkC8A==","signatures":[{"sig":"MEUCIQCXHMKbtHvlJkrFksm1x/kJYRa5V8S0xC3fTW8OhbEBugIgeggNLO90LQeEA6CRy4RksMrVro+byQDfmOb4HqghMpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261776},"type":"module","gitHead":"41ce942773eb7c2eb5ccfbe35fa0d050f8790eb7","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.10.0_1780974568259_0.3135754450565129","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"codehost","version":"0.11.0","_id":"codehost@0.11.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"9aea39a635284e31b1eee9938834c1ccf3f21c34","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.11.0.tgz","fileCount":71,"integrity":"sha512-0di4FSF/ApXmnLV5RvlAhPSXIyv2fb1Whnh+G5s9evOfL65pD5rWslhNFFdk9RFwNYAGqgZ4vUHNQKA4pMz5/g==","signatures":[{"sig":"MEYCIQC1/KuFlnbVVct5EDtyiUJV/iR4yAWdQcyWHPMYtc0+OQIhAOZMRqEb+x5ZySrLZ3hUg4Q+FC7Vc9bIX5slLpR3zr4x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":264093},"type":"module","gitHead":"cf2b0b2787e8a67f477fa8dcdde856c83c9769cf","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.11.0_1780978640038_0.6089974823867721","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"codehost","version":"0.11.1","_id":"codehost@0.11.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"2e7dc3db0c97e78d7cf2cbee0b00d71cd0dcf28b","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.11.1.tgz","fileCount":71,"integrity":"sha512-upO/kR5fWj2mKfH1kGSZMKRpZU5nWFqPtDfoUZZCAFvgm+p2uYZ/MhcPx0SM8pb9/Sp4Z8EEXswnmR2OfJXcRw==","signatures":[{"sig":"MEYCIQDWxCB53CwFN3e/tRx8FXnhRtPQpkDAwLGQvPDG0lFqrQIhAL8usx2+zPXNyftphYZlJ/1HSQIkNhzhYYLPt9zCKrT/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":266479},"type":"module","gitHead":"6f1e74590780964d93f0a491416d0b0baa356899","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.11.1_1780988483193_0.5834831007158963","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"codehost","version":"0.12.0","_id":"codehost@0.12.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"71f4603b8c012d80287a9cc0e35d8a060a7a86af","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.12.0.tgz","fileCount":71,"integrity":"sha512-ApkT63x1RiZ7hXEM8w5oD8J3R8nU/m6I2gJ9CHmXDs9vw4jZyAJAt2LTxtQFiv3c0fzbLLpk+NLe7RHWU7+k1w==","signatures":[{"sig":"MEQCIB4rMxNQQKyeOr93C5UIakTpRNCNGn+PQqTNhuyNA4iVAiByJMqgamfuSQeh52wFTSh+TukJX/Hr9nl4NRCKRmuOKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271134},"type":"module","gitHead":"d2a464857fe9bb80e328336dea509f5517882beb","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.12.0_1780996830198_0.6371543959836181","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"codehost","version":"0.13.0","_id":"codehost@0.13.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"aa42d86e9b73d09b92b470e38965fe9de88633a7","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.13.0.tgz","fileCount":71,"integrity":"sha512-Nv9gjpPElm0URDuUD8mzgRVwHNUMi6eEZO0SWEclNHL8hMMuTXNfDuMIwTAB1JzKSGDWoF9hYcP/ifKq/SCyGg==","signatures":[{"sig":"MEQCIH+MuLQJriDeC/qEvM1bDlDoQLV7aD1afI3SPHEkEecoAiBDYLUp7Vh5Vo+a8dYOaJc8z3qNKYrkjr4EhqIjZk4QxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":274733},"type":"module","gitHead":"55c57877f38011dbb6835335196fe832cf7a14f1","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.13.0_1781011615541_0.19564139328260843","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"codehost","version":"0.14.0","_id":"codehost@0.14.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"8e80b99242806118f20623326cfe5d0dfbf86dbb","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.14.0.tgz","fileCount":71,"integrity":"sha512-vgwb5H8rIUleOKHJtf0Twq9QMz6UFxHES+ICgxDW2dkDrdlzwHFNAn3ifXrWHmkEyYfKC4sAFLjiPWk8G+V4zA==","signatures":[{"sig":"MEUCIGiaSdi9u0Qcwh8tFrxOL/8R7dnbNtr9ewCiUREWkHazAiEAv0lMqA8iBv5oCwr3hrcwAGcuIVfVCLvrlrKVSzlRW1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":276251},"type":"module","gitHead":"71a94512e49a2c5a1eb53c099e2291da94abfe8e","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.14.0_1781055730933_0.6315985686153422","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"codehost","version":"0.15.0","_id":"codehost@0.15.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"61ffba0d5be810a5cf746a6178d2f12a0a182c00","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.15.0.tgz","fileCount":72,"integrity":"sha512-FWYOEHXS0unjKvWvaY4JBeQtztw85xftpmzlS+gT08EfE1A7olBAdYYnyYwXz9/CclhJeOSfvjECEHW+amWHOA==","signatures":[{"sig":"MEQCIEvQ+D47KGzyXhnLtXo0t9VVMUWIRZGmb5m95Zap/LFeAiBIoXP/vk1Y+Vx18gFqXfnYA4lNk9adHRywDoIgolOnoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":287822},"type":"module","gitHead":"a668932ed40c09e3c4b5af11e6147579988c84e7","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.15.0_1781058087670_0.057236392688493565","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"codehost","version":"0.16.0","_id":"codehost@0.16.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"e7bf3d2a66f72451413fdf582a037867e95b2097","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.16.0.tgz","fileCount":79,"integrity":"sha512-1cytVEbuH9sxuuoS27VLVQ0aPctm1oseXpbHQaIabEMK6/1s5CHnQ6tWUo//3n+aaCxTXwzL8bim621BCt/pMA==","signatures":[{"sig":"MEQCIEAxsJEQLtkRg55sd0UIdtYM8dwnyOHg/sh0MdRPogNMAiA1Wj3xa16e3FfJqQ0uWFwzUi42I9roYsvrzXQy41ZceQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318097},"type":"module","gitHead":"64ac065c0f3bca4a57dad75978f75fad71ea73b5","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.16.0_1781064768460_0.022499205292541458","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"codehost","version":"0.17.0","_id":"codehost@0.17.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"703b549cf82226b44abc5f2246c364fd86c854d0","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.17.0.tgz","fileCount":88,"integrity":"sha512-onEVFP4gana6Ge4SPHrbEOHg7B4FMPqpJy7QgWm7Gc4C9czppdZZ5S0B8AENRjSD4AJX4Mhrt0kdgpQcmCpHgw==","signatures":[{"sig":"MEYCIQC+O/deD020M84wUHOLYD8UbprT46U7A18WqLAXfQkTBQIhAMdNUzk1RfB5H53H2Q9pJmdGmROMr3lA2668B7H9znPj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365994},"type":"module","gitHead":"5f89cdaaa7a9b957826e57f3ab0025022a4603ad","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.17.0_1781143824279_0.13325763717153838","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"codehost","version":"0.18.0","_id":"codehost@0.18.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"941e36af45a18071b85f7956b324e356620dfeeb","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.18.0.tgz","fileCount":88,"integrity":"sha512-u34ZhzemmVbofevldzv9W/H2fSm/IEFwsLN7mZqDxYGZr8hW4WxBg3HWlKRtCrZqtxOvkoqUyud3hbdxCKnIaw==","signatures":[{"sig":"MEQCIB8eKSKnFtSnVFyTws8uf10uFmc6nQRjmRoRmGq7p0rTAiBjj5lnmESwR8BwRolSzqNWvZwaWdAWNE3EVd66qRzm/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":371060},"type":"module","gitHead":"946e40af78003453040b483dd548a89c1ec92070","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.18.0_1781145600984_0.8375864372722055","host":"s3://npm-registry-packages-npm-production"}},"0.18.1":{"name":"codehost","version":"0.18.1","_id":"codehost@0.18.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"2cdf63694d6f46e206145deabf509d9b75c190c8","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.18.1.tgz","fileCount":88,"integrity":"sha512-GYWMADSxa1orBSioHt81DMml1GCTIr7db1rR+wUiLsO99IWrXtG68nrYFYknQpQb+kjmdpZHLCIcyl73f6EP1Q==","signatures":[{"sig":"MEUCIQDJuZ9Qds06bJtiaJmZ54pvhkSrN/vr1nysPbo2vbdCnAIgMVMOH5b1C/U59feIf+A+AsowMErSiDaOz6X0xj7tLZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":372367},"type":"module","gitHead":"4ce44924f118bc491d2d234abae5848b205c3de4","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.18.1_1781145942351_0.39968330760545245","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"codehost","version":"0.18.2","_id":"codehost@0.18.2","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"56c9ed4ec3a89a6581881c1c5e862d763f2ebb82","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.18.2.tgz","fileCount":88,"integrity":"sha512-kI2FFmScbORTZnKSCnSe050KxVeWckyG0ln0sf+8gvSk+udkrOMORg+4mchG7IsPlmeFnpZxBsr6iEFBcZAncQ==","signatures":[{"sig":"MEUCIQDMWiMQ+QaRIA8kt75GijcCeRH3bxIK9SCTSulhhRaVQgIgBiFCLKcZL5TEfN6Z/ywEC1C+28kXV1tSJx6xue0IDKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":374723},"type":"module","gitHead":"9b5cbc2880e937bdbd61cb9e87e78941863cbbc5","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.18.2_1781146512793_0.8802598506258776","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"codehost","version":"0.19.0","_id":"codehost@0.19.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"565309770aac28acc61bd6b668ebc1f6ffe8d1a2","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.19.0.tgz","fileCount":88,"integrity":"sha512-LVMFqA/vK0+TgZ2Lg7yvta35Ikfqu9rC8wD3FMHdiLGLrv3KCQxOOIrrKnPOJE8h11sA3uQZxCC63JwRX0pqLQ==","signatures":[{"sig":"MEUCIQC4GX6/GPNP1rM0FvKcozJnbHy6hw2o87lTLF7QWb85bwIgInbVamCukk6M5+ceAGVQUXVv8q0JZ3Xx/X6+0J8dkDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376667},"type":"module","gitHead":"47e3d35f93b8e8a412839cc5454d4d4ec841ce06","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.19.0_1781146933922_0.1269874861332405","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"codehost","version":"0.20.0","_id":"codehost@0.20.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"ee26febff29259b96d132f76e96e43b887e84ba4","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.0.tgz","fileCount":88,"integrity":"sha512-Mszmccx8lxJdGT7cWdRa4pxcnD/jnYQ2ujqB3f+L5PQQ7Q61SEyGrhR+Nr5Fblcxa9JFa5GGK9gGUedV+7WXAg==","signatures":[{"sig":"MEQCIC6CNjS19Tbd9t0F21XaoowVKmBByIPItM9NAyls9rsrAiAvQKXhYSlLV+eIkKWlozl6Ktjji68krBr61so44eXZ6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":377720},"type":"module","gitHead":"dda43774c8e8d501de537e5c8900816a42b037f3","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.0_1781158813560_0.9917481256305263","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"codehost","version":"0.20.1","_id":"codehost@0.20.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"93e09330a3061dd2a5d35d0d248c6016fdbcc34f","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.1.tgz","fileCount":88,"integrity":"sha512-T/AWRpvlQN1tecttLHPqaSJ+E9ROWoUA/4EaWxlxTmjZB4iS2diMvE2d88Hvs+VLB5LjeyuUocqGE+tm3uQd/A==","signatures":[{"sig":"MEUCIQCYbSNrKsSGE6PQngcPqbhSPu08pL1bYGQXviSSp/iwRQIgB3DWcbQp6KjBlDEZC3YN9GiplMNgvz3WieB+Gbux3iI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385635},"type":"module","gitHead":"45c6ee43a77d1237da7a2b0b320dcea93f303b9b","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.1_1781166191679_0.34938181661833645","host":"s3://npm-registry-packages-npm-production"}},"0.20.2":{"name":"codehost","version":"0.20.2","_id":"codehost@0.20.2","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"e88478336221f809d8dcba8b19d2968acd7c6862","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.2.tgz","fileCount":88,"integrity":"sha512-L9Fy69h0ZfjO4JoUpQ7KRYbKdL4xAV5fWaX3rVDnoJ/k+i7L57dqu1Mo2wZa2vGr8YUm6WlTsL+l7SXQkQAffA==","signatures":[{"sig":"MEYCIQDJVCmrIbPhLbB0Sv2dEjAte5HSkhFSKPZPyOi4pQHvGgIhAKOdJ/pvDrbm8pO1aQCInA6fuu8pDoBOkNiiu3mRMfCT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":392921},"type":"module","gitHead":"306f03330112d3a76c6f87b74409720f8f59174b","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.16.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.2_1781170790881_0.8321356295705018","host":"s3://npm-registry-packages-npm-production"}},"0.20.3":{"name":"codehost","version":"0.20.3","_id":"codehost@0.20.3","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"2413c7bbbc21b5e9b39edc186b7513c42af2da85","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.3.tgz","fileCount":88,"integrity":"sha512-oPLt4e7yzkOq0qrJTnelxhh7PfwOUcaX8ka7VcT0X7nkOA3islK89V3ZhT9UT1OGrsxrKzLgrFtUJCMZFO56cA==","signatures":[{"sig":"MEQCIAkf2D8++PPPW8b9RJnIUpcPgu5/bC5Q9Dl9yl32cThwAiAGKeG5Paw0D5DytfRG7/pZufj6H3SeupzmAnwQT19WwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393867},"type":"module","gitHead":"33a537644af79b5f8e0b768cb5f289f5650aa700","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.3_1781231107661_0.3059284207083839","host":"s3://npm-registry-packages-npm-production"}},"0.20.4":{"name":"codehost","version":"0.20.4","_id":"codehost@0.20.4","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"d4efbfe368c3919b0a74f34aff16cfc3babbff18","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.4.tgz","fileCount":88,"integrity":"sha512-cylfVMDGCWjYyt3NNUGVKnVpxt0e15rwo4T9Ju2YQwStclX2oUYtg0pbiwo14QqmhsGitbxdZfPHpSqz4rOMug==","signatures":[{"sig":"MEUCIH2EcWwipGSug+FIQ2Ch+RjjuelR5Tx5pxZrS8hTXlc4AiEAhRkufFWkX6z0cCVrBezLUxz9oglmtrQloKNAsmgINKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":394438},"type":"module","gitHead":"b40cb4df3b1f4245e24fea5f30345e275aa02b2b","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.4_1781231242761_0.47984703980335053","host":"s3://npm-registry-packages-npm-production"}},"0.20.5":{"name":"codehost","version":"0.20.5","_id":"codehost@0.20.5","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"ab94c77e731868f2b04e708b91205327fe90ae1f","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.20.5.tgz","fileCount":88,"integrity":"sha512-I75vN5z/0KeX88e6q+cG+Tcs2FXAFNyjWcEJ2TCM6gNpdpCx7Wi7zrYJCHoHJk+Ek/Qbg2bN9EQctKRblbwrXQ==","signatures":[{"sig":"MEUCIAqnTTF32wXoAP9o9sFAfajsXgnHNUp94GjzUCMj+V2NAiEA3ftz+peo7d9hcWx41WXyueG8yiUiufpO7ANHwfPemBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.20.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":397172},"type":"module","gitHead":"a3723537c62f1a0b36d06e092fad1019e6641abf","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.20.5_1781233006467_0.33983501329330656","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"codehost","version":"0.21.0","_id":"codehost@0.21.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"e53dc3b44a80e2ef6d7a6719f603cd274e7d1e63","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.21.0.tgz","fileCount":90,"integrity":"sha512-JYn90V0H7Jz6W2FoLV6bSGVQ6PO8uVuLvxx10fZ7o4eRvCXMTpcH1AEZbAyBdrs6q6beELBt5z1ioBwgJChAPA==","signatures":[{"sig":"MEUCIQDYx/eCyi1Ec9HoPExziS4iSeHisvjvkt0XWJkq8x78QQIgFKqyqMaTt0ltUmga0h1UAku8OCLsnWOfwyQwDdaLrrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":423600},"type":"module","gitHead":"74567f212259c210f973d64cffe72bedd231542e","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.21.0_1781368125810_0.6714025697163934","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"codehost","version":"0.22.0","_id":"codehost@0.22.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"889814f75bc2c289469253e04f00c9225ede93ce","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.22.0.tgz","fileCount":90,"integrity":"sha512-TH30wuEg+j6h1Z0DPbQCl/hmhR1vGwu+GtCWZtMt9DyXDmJkNDgO4hT3j0cG2m3OLRk6TViVCHp06IRps1h7xg==","signatures":[{"sig":"MEUCIDXnkZ0X+fAJTvx0sN7hWDHqriYuhiCa+X88yKFOAq18AiEA9APWVWVWDYQJdxqo00wSSC9IavP/1cFSfeDxOf685IA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":426410},"type":"module","gitHead":"40a4f0b37e804466ef9d2b29d457ab1b4470d93e","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.22.0_1781445210579_0.6724828807749261","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"codehost","version":"0.22.1","_id":"codehost@0.22.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"dae54d979f8fdcbc743b87e533ba406e481aabb0","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.22.1.tgz","fileCount":90,"integrity":"sha512-s0uavOerttJpxdwkM9BQddB0K0tmmvTuEcRO6hZXBqjqIxvIbtc60B+DGIIBHzsnF8Ryo861MODURJ+EJy77ow==","signatures":[{"sig":"MEQCIDqM+QJtUXv6WrFyvmncLlHZ/yMUdneleVU6t8EWb6BsAiBn+2bO5TzZ14dLyWYK9fUnNMfSDZ+9kb7fCigZG5rw1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":427781},"type":"module","gitHead":"11d2cd506f67d757874790c3e057699d96a992fb","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.22.1_1781492421955_0.97657376730925","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"codehost","version":"0.23.0","_id":"codehost@0.23.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"433493ad39a4bcdc9e444c2e1c4c3cb13cfc1149","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.23.0.tgz","fileCount":90,"integrity":"sha512-DHMlfyAKJqhj9r0ZpsflTT8Ydr4c/o67AsQ2ZzakbUb+Lxx0nSxSeWYdXU1uAxQnSpaWKcNy6sZ/dbtAKYsFdA==","signatures":[{"sig":"MEUCIQDs5+F+tTz/U61TPJI88Hb4TQSjDpBVd51YYkbx4Wz65QIgRAQLYGwJNc6mUwHs4CzYb2FHtO79vMhXhfJV6zOIbaI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":433138},"type":"module","gitHead":"55b1a4171e8ccbc3697bd6bf82b9b24fc96b5ce1","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.23.0_1781545277944_0.08489458202677924","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"codehost","version":"0.23.1","_id":"codehost@0.23.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"f381cf6d506acc1f9be84c66acc5b9f9081ccbf4","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.23.1.tgz","fileCount":90,"integrity":"sha512-OMaFgmDkIORh2eiuBomoDOCzWUBylBT2VXoln4Hzk0r6nx4hBHOMHNicmw+UoqDtFfdFNcDIjFmCjzwcL7oD9A==","signatures":[{"sig":"MEYCIQDbVDW7ZGPp1vj+hBLv7jqzdhdIVxgE0bibxqEZb0AkQQIhALN0w417Xuz1/pHpXV+rtNLbDLzseLYL3EzuJr8XtdeG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.23.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":435284},"type":"module","gitHead":"3e8b289c00882757677db865a60e243cc1cf1c57","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.23.1_1781582792319_0.7339195324397683","host":"s3://npm-registry-packages-npm-production"}},"0.23.2":{"name":"codehost","version":"0.23.2","_id":"codehost@0.23.2","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b75b9cfb66d7a3137148dd997d748328e44ab511","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.23.2.tgz","fileCount":90,"integrity":"sha512-LMorYW1eCoQBcLDBnSWnCdUnIfb0r1hbmS73ashrqAlCOPjIi31//5/X2m0pxWxyPnhUMAYVDGMN+Pk3HRn0Vw==","signatures":[{"sig":"MEUCIGsd/Vq7pc7dqSNsMpO9XdZ1P4EBLCaohqUNHOq/a6beAiEAiNHxrhPeFkcrJJNNdWAoCS41dJU7ujz4uVzy1QR5nS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.23.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":436997},"type":"module","gitHead":"e2c28795beb670195df166afa474ab4a2875c5b3","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.23.2_1781597032810_0.5575619368211822","host":"s3://npm-registry-packages-npm-production"}},"0.23.3":{"name":"codehost","version":"0.23.3","_id":"codehost@0.23.3","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"d00fe9ba1cf07f8b38b1bc7b3f5268e497f5192b","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.23.3.tgz","fileCount":93,"integrity":"sha512-qhy4dCJOAAhc18pABV8HsPgIJsSPZH6fV7iBXDGzMWFW+2dSLQtPArbnqFbjtZ9Vb3OScH6V6IIsoJZ7G+ZpJw==","signatures":[{"sig":"MEQCIAEx/JtXfns7Hr/GR8zlFhfrtfG4PSsXo8XsPNT1euLpAiB9Glmms1CNwqBzHkemB/dHRqu1NlID4uKaShkXNydgkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.23.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":448210},"type":"module","gitHead":"d9b69b7a06770a88cfe3372c36f01fccf2e6e40f","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsc --noEmit && tsc --noEmit -p src/web/tsconfig.sw.json && tsc --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.23.3_1781964999951_0.7798282181885208","host":"s3://npm-registry-packages-npm-production"}},"0.23.4":{"name":"codehost","version":"0.23.4","_id":"codehost@0.23.4","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"bcde48ec4cd328d6eb6a07144542e9457f554ea9","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.23.4.tgz","fileCount":93,"integrity":"sha512-6W/hgnhP4/hCHAVD19e4gHd0chhK/XWu/YgUQlxlkt9eWO2E0F7onNeu2/ocA0TjyfVERT2y1Je7YGH6oFIjjg==","signatures":[{"sig":"MEUCIAZGD4OxpP6DgHlZCcnTf9eVUcW5E26n37iqSNg+maLwAiEA1zUjTAls0cfZIzybIOBQOGmAt9rQ0w5hePLJUdmh2vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.23.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":441611},"type":"module","gitHead":"2d08d820f101b94aa78fbcba1c9f865a462b8e10","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.16.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.23.4_1782332764261_0.12424675954891762","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"codehost","version":"0.24.0","_id":"codehost@0.24.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b4f2644288a490535a996c0f378eff99f6b800d4","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.24.0.tgz","fileCount":97,"integrity":"sha512-Wy4DW4h4b/ugSJmTVHhD9hb/9oHE1CL37mbm3BhO2kjzFQ3Xwsw2KfiF4vwxbz5+9V37A97VRNWE7GzpPHWoOQ==","signatures":[{"sig":"MEYCIQCSyKwj1P65+zViKCCU+/VuQeM7aXQNzC/PCBidAZTa8wIhAKzyiA4a8vpB5J5BDKZgTeA5FB3e11Y4CmndmADj69HU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":467362},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"f39a85c45a5168c1bba7d9a4add23c0d80697bef","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.17.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.24.0_1782583702663_0.2866203495230608","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"codehost","version":"0.24.1","_id":"codehost@0.24.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"808b6a6a2ad7fd163b3dd4d357302b84bb38b2d2","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.24.1.tgz","fileCount":97,"integrity":"sha512-sJvjerme9VuOQn5T6qmLlpeenWfjvDTMnxceJQ6oP2Y/oLOzEyf4v82yELYmwTULAJEz43QM1EQh8yPdfiS98A==","signatures":[{"sig":"MEUCIQD9UDU2LkHMJRoHHNACGI12w3kzIwqxshYtjZKFKL5towIgYiNYPFg/4ugrbNMQ4eOHsTYf6loqj/YgCE1JsU1lg4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":467845},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"8f231076f48524b115c465ec3228cb2bada9e782","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.17.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.24.1_1782698214099_0.5789471742317749","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"codehost","version":"0.25.0","_id":"codehost@0.25.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"e6345c7e8682baa46dd448bd8aaa7252d8edc493","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.25.0.tgz","fileCount":97,"integrity":"sha512-KOEy98hz+/ur9UPcuz5qe9d12NxOfZFQcB2ohM/O6mj8tMt4S7FS/EoWzX66PxMozqTAJIHtYTx4gNMJd+zgGQ==","signatures":[{"sig":"MEYCIQCxQcfK3hRl7GLIsnwGNKQyYrpgLwrD/3P77lRQO0rXYgIhAI1itsUbczhiTQHwFfN2n8mFexNZhva012RdFoFgkHKP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":475094},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"192d1bc18109ed371ddaa05d01541f52e2a8c526","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.17.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.17.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.25.0_1782722822501_0.7419254583263641","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"codehost","version":"0.26.0","_id":"codehost@0.26.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b9fcd82a7bea2c384ae9f19dd9ffa0fde4ff3e8d","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.26.0.tgz","fileCount":97,"integrity":"sha512-MwrDku2fwRCtq5D3QtBl+cvC9VxzBVaNyY6cjYSdwv+vtRb5w7te9l9JtsbC2qhXdjr5nEVsbK/GnycZPu5u5g==","signatures":[{"sig":"MEUCIQCslwZK8rpaOJVOd09tK/1/szFgN2fJsJkIFGg6U70rxwIgYCKcmIvHmhxK+hfb8Jmc/pIeyZRZ1uCmfFvWWuwYnQQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":477848},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"a0c544e425384ca1d78468336cd5eb584e6c81cd","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.17.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.26.0_1782871791983_0.6373695320903972","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"codehost","version":"0.27.0","_id":"codehost@0.27.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b927060df1e368dd707cb8ebf89fde0dfd43d698","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.27.0.tgz","fileCount":97,"integrity":"sha512-OyTxzm5pyXJ1uYj9pZxtem8MDl6PaCS7TzPF/bIoQvM5/dkJQP9/rZ33xuxxa0S+d4KVmj5r37XTZdBL2OFVkA==","signatures":[{"sig":"MEUCIC+M34e/a6dhn4tBWkQD40NQdZW7r1Cl9iiGIzGIqUe5AiEA+kG/ygedEOvJbnCni9aSRu9EvHIN4GGK0ovi17XT7ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":496181},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"62fef0726337178eecc5aab718a507da866cddab","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.27.0_1782959359319_0.8947268633700947","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"codehost","version":"0.28.0","_id":"codehost@0.28.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"d4a65c6370fec1bb4b465774c19b4cd60b30f1e9","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.28.0.tgz","fileCount":97,"integrity":"sha512-glRfz9moNVBkpm72J0yTTJoesM/L4190mdhW+2oaTt1Chvyb5w/WPecdyaiun4lwgan3ZwyKNzP6XEtMMN843Q==","signatures":[{"sig":"MEQCIH0dv13h/pllxUKi7HgNJspN1jS9yKVrPnvL6HEiEMySAiBTmQ4BYnUmHYKy5hM8In0nw+6lLT1emVVlN831lplqnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":508910},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"3504e811fbc170eef24d960db2f6d30f2166890d","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.28.0_1782974908410_0.8436022401584398","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"codehost","version":"0.29.0","_id":"codehost@0.29.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"308cc754e9a96773b4db1f44c5bbc45ba1440cf5","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.29.0.tgz","fileCount":97,"integrity":"sha512-RBUznoaqp+MQbSpFnH2v3V269YPMd7qAFL4QrmnXIWdskmfspT3lqp9/0d8RiE2QaIiD9CH//FVU7wY8DkZmhA==","signatures":[{"sig":"MEQCIBUcEtZq6CJIkBbr5JJfA7hIg7SNSYaEAzOXIcMhOZI4AiArlcuP7XiRQqikyuzRdpCqM7OleNnWM68+GN3P5Mg1MQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":510515},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"3c71d4b9687cbe014974e212238b7df0a745036e","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.29.0_1783447710743_0.6740009645713332","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"codehost","version":"0.29.1","_id":"codehost@0.29.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"5820a850a33972a3f390dfa3f4a60177454f07a0","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.29.1.tgz","fileCount":97,"integrity":"sha512-gmd+ANAA7+5PMhbObhSyiNND4Abo8EKFNgZuG3FthwKlOEXkXmireNzOqn4gg6QVdx71EOU3bYlbfrBZ4EvD0g==","signatures":[{"sig":"MEQCIHsdbZIPTj4WFYr4L9zG8O27WsYUYkzxvE89ZknwtxoWAiBX3swNpVkOO+5O0N3TckOCNjgKI0WiYi86vL/4elXCGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.29.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":512191},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"1703a5d55b48c06334c7605944d21584b80e7ba0","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.29.1_1783454600565_0.7138320233177042","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"codehost","version":"0.30.0","_id":"codehost@0.30.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"d4598962475eddaf1caccad3a6bf0b2f8e14cebb","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.30.0.tgz","fileCount":97,"integrity":"sha512-mB8a93xkFbGHhxGMLQASUJBuVYSukLKHKPiqQZzcVTDUdB+042dZMcE9HHC+qYxP8NI6CC77G5rx10qNsEDmgg==","signatures":[{"sig":"MEQCIFrot0LliNqEvmJhDe9W4v4KT8AzrTs7epBbDbiQ9Xc8AiBh8UsU8T29CqOnaj480kb/96kC7vsLEAc/xiNj2GMxYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":517210},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"ae9209d342f4ec20e163ef6c8b443f1ce387f3e6","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.30.0_1783455405323_0.5145624862898337","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"name":"codehost","version":"0.30.1","_id":"codehost@0.30.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"736dd432b9530369244f9a9ace97bf2aa3fc0e30","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.30.1.tgz","fileCount":97,"integrity":"sha512-KLviAua8XpNgpfgqOPGrGe8umG80v9e1Qmq2k0XrDrlzEZAQ9G+8C70nL4GIarlnM7efnKJpI53iqyLd28X2yQ==","signatures":[{"sig":"MEYCIQDSa2dgYEHL3iYP8Klo55UyBmjlsm6qduqTRS1A51/3cAIhAKf6Td8JGNBwd28Q+ThnbNL57uhXp5dTAgX6ykpLwjuA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.30.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":518671},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"359dd121bb4d829f7197ef5263b96ab3b66777db","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.30.1_1783510388926_0.302232519162297","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"codehost","version":"0.31.0","_id":"codehost@0.31.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"3ba347855abba2f2f54d6bd8a672b0b13628da9b","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.31.0.tgz","fileCount":97,"integrity":"sha512-8+SEKhVYUW9/IJwEs2N3NEMeLCAEs3obWahWaISC47+djr4pfymod5w0ArDMddHSpxCT3DM2d2UfNwMkKXqJfg==","signatures":[{"sig":"MEUCID8uvi4jjLTPEkFJX98Mh1F2jlp2FsVSoSdyxu1wLNVtAiEAwDx8f1AdoRnIccgnw4WpiJ43bbN5/S+QqWyTLLAvDH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521612},"type":"module","exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts"},"gitHead":"37bef391a9da43b176d9854128081e582b5afbe1","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.31.0_1783511016682_0.6160245589269446","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"codehost","version":"0.32.0","_id":"codehost@0.32.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"1bd87c41816335aea02faaade9f229929849672a","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.32.0.tgz","fileCount":107,"integrity":"sha512-sv/5Y/VMZg9Cu8vungcLs0c7kgHO9lxKL+J4AMAAYdavr2Pnboyo9ChgdulbxumQIw5jxk6EYNUUIJBvZqeGxw==","signatures":[{"sig":"MEQCIBzBLDrYVv2eG6zQ8Q5Rpr8HoS2J76Lhen5ej5PZHpL1AiBUraRSWBMW3ccmRdG7xR7EQmDZX6+7yEXtrg6b7Rw1mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":547066},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"b4211cfeff9e1bdbbfd38ec21e8b775421745ac4","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.32.0_1783862002149_0.5348175931294639","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"codehost","version":"0.33.0","_id":"codehost@0.33.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"2d8bfcd7115e872c1a5bed315f1073f8d7061788","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.33.0.tgz","fileCount":109,"integrity":"sha512-u5HmXOjuK2t1V/sjYW933DOKCJNfZFTzy0iidp9MXcL/jMkke3oBXZYWeWT/kdhj3eageYm9ZgswXPsv3tThTA==","signatures":[{"sig":"MEQCIAG8ul3Iku9O8me7jhzylwpcGiRlFd6kv+Y4sr+V2M3kAiAXt1trmJzYIN2W+C8bNnY0ijjn2dOr3IveWdh/MW6m3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":551770},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"6dad4bb2e02c65bb7d4cbd7588825c1b39904bd6","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.33.0_1783916312166_0.0672380425956487","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"codehost","version":"0.34.0","_id":"codehost@0.34.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"9398b9f7b762bb4d5a258ee66144a0c1d5b48aa8","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.34.0.tgz","fileCount":109,"integrity":"sha512-qUvBDJeDTfF7TIkBwFES6Gb0NbPtq9MQ21iHuYFGH2wQwtFdfnNQhyc/G0kAam1tJ/6fow4qExADFfsL2AOG/A==","signatures":[{"sig":"MEQCICLGiGAcmNVEOorg021kOloRYHBvtu+nK2gzpHBuXsuaAiAw1A/eerAlzn3SsgE0vrYPR3HZNDllAmYof0QBjSDZPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":553760},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"d3e103387ab497aa4477507e71e51f7940c94b2b","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.34.0_1783919533390_0.1296447412986439","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"codehost","version":"0.35.0","_id":"codehost@0.35.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b40599784540defa5ff269a0b0fb43541bd504e4","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.35.0.tgz","fileCount":109,"integrity":"sha512-quhFilMrgOf++07shi4Ej3UZTDSBZkVcCrfPRMqqySqUHW1sEi3r5n2xfJJ1iZGN31TLEvqmLVE9/kapKdhK2g==","signatures":[{"sig":"MEUCIEWS864Ls4jEHhBtzSu0YNiSuCwtyqaJTbJrnmcS03g6AiEA8QaJroFhGdZu/vgmsdHozcglowE/dJTjTsC/e/nHRuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.35.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":561884},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"a5aee683db14cfaef95b92db63b26be040a1e5e3","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.35.0_1785332689847_0.23629849448924878","host":"s3://npm-registry-packages-npm-production"}},"0.35.1":{"name":"codehost","version":"0.35.1","_id":"codehost@0.35.1","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"b9c6d34b3913ebf356dc20c46d6dbfc44ea1c768","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.35.1.tgz","fileCount":109,"integrity":"sha512-lDyZkZ6tjAGrjQu5yiZ812/OoE5naMKMcJA82JMeX5KpVWWft7eoOFpxQa02v4au46K9PWVGsPw/dvVg3bBw3Q==","signatures":[{"sig":"MEQCIGM069MyuJLzkAtIT4mOc8ucam+I0MmjHkcBaAjpIwXDAiBX874X0hcdj+i8nPfAGxv6NuVglvNDoUQTqfd1DSvzrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.35.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":563642},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"cab43630f750bf029f217f3e76f467911c57b81c","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.18.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.35.1_1785339262441_0.45381575272481967","host":"s3://npm-registry-packages-npm-production"}},"0.35.2":{"name":"codehost","version":"0.35.2","_id":"codehost@0.35.2","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"45416dcaee4b42fb11eeee7461fd071014425f3b","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.35.2.tgz","fileCount":110,"integrity":"sha512-4qBShGHpdbyQPswtQzjuaJbIFHmFZpnZg1ZILPjVHuJ9UE0wevQGAnuF1h7GjD3ePZjGcxxU4UGC1+QRdjj0Ng==","signatures":[{"sig":"MEYCIQC8zWTldEK8f+XZz8prv+ZcjroZsXRiOchu9NLvmfq3RgIhAKt82algJmzOCPW9MApNDaBfK345nlZvXD0AOnuo7qcZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.35.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":566117},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"96d15d3057a106fc29f591d44fdb7c58d4a7dc16","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.35.2_1785899239582_0.6384012527790373","host":"s3://npm-registry-packages-npm-production"}},"0.35.3":{"name":"codehost","version":"0.35.3","_id":"codehost@0.35.3","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"d008f01161278d671679fcbf4f2517107b86a681","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.35.3.tgz","fileCount":110,"integrity":"sha512-9xSG1wXNK5pg8qdH0XVGjDFT6d8gSd6ga+cONxpxxnBXq5270tjBApdyLdGnBecEfhTSxMVzqTUaQWgB9kEKVw==","signatures":[{"sig":"MEYCIQDnWufSNwD5duzC7xiJkdKC/AWLpkuXpZHkw3Yv4e9T0wIhAP73N7kWJ7UhCC4TV8+be5/7VRq7M6cQl093sfQjYwQK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.35.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":567895},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"77831e373e0ecc15d981b4291ad3f8a484561290","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.35.3_1785999326900_0.5781342603042472","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"codehost","version":"0.36.0","_id":"codehost@0.36.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"066b51581609219617102f288a1f106530f7561a","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.36.0.tgz","fileCount":110,"integrity":"sha512-fpwEWohXKx+CxH85+tK5g6Y6hJpBgdpkdlLaw/AyyP68s/i0HbSa6yO8nCIZFDiuMHCOQpY7IBQ9jNPhlVvNqQ==","signatures":[{"sig":"MEQCIBAlNsjMH5osuwdoFypGy146AIcm0GCcp0/4UqcdUqh4AiAq89Y29Fky8D9ekpM06oIoQgYHYWr4PlsA/h1NqxVaRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.36.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":569986},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"0c0582f0cd72077a6f209f36631c1a7adb134dc1","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.36.0_1786002567771_0.8000880509564965","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"codehost","version":"0.37.0","_id":"codehost@0.37.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"7c5502837a019ad77dfbc8da9ba05964e769bc61","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.37.0.tgz","fileCount":110,"integrity":"sha512-eM4kVGV81BBaAjrCC+LMKvOtSppIS8vfhupIlLWpcdUGFZCjoxAmjqfXi6lCwoXcY3+Iuj7PnWRltBbS+lTBlw==","signatures":[{"sig":"MEQCIGZlllbaem+Siw2uadMPvY4E9OVeDcki8+eEvMsA9kahAiBzv0RTBLEtvTYbEUfcrJgaVMq7ExCtvSpsxBv8fzFNSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.37.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":574421},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"76d36dddc5dc6c7332686e78c1d8259cd446b426","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.37.0_1786003769710_0.3936751906408298","host":"s3://npm-registry-packages-npm-production"}},"0.38.0":{"name":"codehost","version":"0.38.0","_id":"codehost@0.38.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"ce6e8c4db5ec79ae814ea04222713f742e9bc271","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.38.0.tgz","fileCount":112,"integrity":"sha512-uWtYjK5Rwa5cx9giVY6qRB54IxVF0Oo5mz7GkFuBOwt7+JiQvhtqtzMdCzCHdIktiBNLL16dd9Wfc6bBXB5EDg==","signatures":[{"sig":"MEQCIGlxG2h8uqwvXodiS/0rpGpRolAxAHJszznoln5zKB5kAiBRBOSAi1yj1p+qieUwc9S1kjHswaehH1D5v68X/NA97A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.38.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":585666},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"082b772d877ad7f056e28e697f484b79473b9797","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.38.0_1786005784516_0.6997539576140948","host":"s3://npm-registry-packages-npm-production"}},"0.39.0":{"name":"codehost","version":"0.39.0","_id":"codehost@0.39.0","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"ch":"src/cli/index.ts","codehost":"src/cli/index.ts"},"dist":{"shasum":"915873264ce1453729e4431dcf2c93e1f5c4e814","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.39.0.tgz","fileCount":112,"integrity":"sha512-6zs7hrTdQO2OuQ9NfxWFctqrDCH6iZKuwnReKHcIu7qMW54jN8+nvawFZKisHB1QMPHTKd7pt5jkAa3/ZHAlzQ==","signatures":[{"sig":"MEQCIFpp26NFY5oy2cJ2LxltqF2UM4yQeWubHhT2THpHCwr0AiBChUIOEKfOB8GEg+SxuHgE1TXqMQOmD/jPbzb+VFtoaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.39.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":586246},"type":"module","exports":{"./tunnel":"./src/tunnel/index.ts","./provision":"./src/provision/index.ts","./tunnel/testing":"./src/tunnel/testing.ts","./provision/watch":"./src/provision/watch.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts"},"gitHead":"45d1f2a4af3be58f987e208f4c77cbf4610333f1","scripts":{"cli":"bun src/cli/index.ts","dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","test":"bun test","build":"vite build && vite build --config vite.sw.config.ts","start":"bun src/server.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","deploy:signal":"cd worker && wrangler deploy"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"repository":{"url":"git+https://github.com/snomiao/codehost.git","type":"git"},"_npmVersion":"11.19.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"hono":"^4.12.16","yaml":"^2.9.0","oxmgr":"^0.4.0","react":"^19.1.1","yargs":"^17.7.2","bun-pty":"^0.4.8","react-dom":"^19.1.1","@xterm/xterm":"^6.0.0","@parcel/watcher":"^2.5.6","@xterm/headless":"^6.0.0","@xterm/addon-fit":"^0.11.0","node-datachannel":"^0.32.3","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-search":"^0.15.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.10","portless":"^0.12.0","wrangler":"^4.95.0","@types/bun":"^1.3.0","typescript":"^5","@types/react":"^19.1.9","@types/yargs":"^17.0.33","concurrently":"^9.2.1","@types/react-dom":"^19.1.7","semantic-release":"^25.0.0","@vitejs/plugin-react":"^6.0.1","@semantic-release/git":"^10.0.1","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","@semantic-release/changelog":"^6.0.3"},"trustedDependencies":["node-datachannel"],"_npmOperationalInternal":{"tmp":"tmp/codehost_0.39.0_1786007442790_0.6379145706194835","host":"s3://npm-registry-packages-npm-production"}},"0.40.0":{"name":"codehost","version":"0.40.0","type":"module","repository":{"type":"git","url":"git+https://github.com/snomiao/codehost.git"},"homepage":"https://codehost.dev","bugs":{"url":"https://github.com/snomiao/codehost/issues"},"bin":{"codehost":"src/cli/index.ts","ch":"src/cli/index.ts"},"exports":{"./provision":"./src/provision/index.ts","./provision/watch":"./src/provision/watch.ts","./tunnel":"./src/tunnel/index.ts","./tunnel/node-datachannel":"./src/tunnel/node-datachannel.ts","./tunnel/testing":"./src/tunnel/testing.ts"},"scripts":{"dev":"concurrently \"bun run dev:server\" \"vite --port 5173\"","dev:server":"bun --watch src/server.ts","dev:signal":"cd worker && wrangler dev","cli":"bun src/cli/index.ts","build":"vite build && vite build --config vite.sw.config.ts","build:lib":"bun build src/web/room-client.ts --target browser --format esm --minify --outfile dist/room-client.js","deploy:signal":"cd worker && wrangler deploy","deploy:pages":"vite build && wrangler pages deploy dist/public --project-name codehost","start":"bun src/server.ts","test":"bun test","typecheck":"tsgo --noEmit && tsgo --noEmit -p src/web/tsconfig.sw.json && tsgo --noEmit -p worker/tsconfig.json"},"dependencies":{"@parcel/watcher":"^2.5.6","@snomiao/daemon-kit":"^0.2.0","@xterm/addon-clipboard":"^0.2.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-search":"^0.15.0","@xterm/addon-unicode11":"^0.9.0","@xterm/addon-web-links":"^0.11.0","@xterm/headless":"^6.0.0","@xterm/xterm":"^6.0.0","bun-pty":"^0.4.8","hono":"^4.12.16","node-datachannel":"^0.32.3","oxmgr":"^0.4.0","react":"^19.1.1","react-dom":"^19.1.1","yaml":"^2.9.0","yargs":"^17.7.2"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","semantic-release":"^25.0.0","@types/bun":"^1.3.0","@types/react":"^19.1.9","@types/react-dom":"^19.1.7","@types/yargs":"^17.0.33","@cloudflare/workers-types":"^4.20250101.0","@typescript/native-preview":"^7.0.0-dev.20260124.1","wrangler":"^4.95.0","@vitejs/plugin-react":"^6.0.1","concurrently":"^9.2.1","portless":"^0.12.0","typescript":"^5","vite":"^8.0.10"},"trustedDependencies":["node-datachannel"],"gitHead":"cfba919e2a677609472c56a0db82d730129e95bd","_id":"codehost@0.40.0","description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","_nodeVersion":"24.18.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-xl8+WLwdOtqxAL4JT8jQmebOa4lYBlYJ9ZZcPIe9LJIz/+UHmKh69Br777qxtmvtjBqpUjTa8d7ETKB5KU1fdw==","shasum":"4c5ddad0b4c018a0e31eb1d377d1e39e9587d8a7","tarball":"https://registry.npmjs.org/codehost/-/codehost-0.40.0.tgz","fileCount":116,"unpackedSize":589002,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/codehost@0.40.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCM7maezyiCLJ+5X/ULhQfE0DmbxAyLmSuMM/DkK0/6SgIhAKOtehlHMk4gzRC7y83Q+qRgep5ipHhFpIWW5NmU9Id1"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4c4c00f6-a70f-4a41-82b2-148ff0257998"}},"directories":{},"maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codehost_0.40.0_1786016426433_0.4375543388178631"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T08:29:51.188Z","modified":"2026-08-06T11:40:26.976Z","0.1.0":"2026-06-04T08:29:51.401Z","0.1.1":"2026-06-04T11:37:51.849Z","0.3.1":"2026-06-07T03:41:03.415Z","0.4.0":"2026-06-08T02:30:09.117Z","0.5.0":"2026-06-08T03:08:30.753Z","0.5.1":"2026-06-08T05:21:00.166Z","0.6.0":"2026-06-08T05:50:33.904Z","0.7.0":"2026-06-08T06:17:57.179Z","0.7.1":"2026-06-08T07:42:13.699Z","0.8.0":"2026-06-08T09:06:15.737Z","0.9.0":"2026-06-08T09:37:41.699Z","0.9.1":"2026-06-08T09:59:28.934Z","0.10.0":"2026-06-09T03:09:28.454Z","0.11.0":"2026-06-09T04:17:20.174Z","0.11.1":"2026-06-09T07:01:23.331Z","0.12.0":"2026-06-09T09:20:30.326Z","0.13.0":"2026-06-09T13:26:55.747Z","0.14.0":"2026-06-10T01:42:11.111Z","0.15.0":"2026-06-10T02:21:27.848Z","0.16.0":"2026-06-10T04:12:48.642Z","0.17.0":"2026-06-11T02:10:24.454Z","0.18.0":"2026-06-11T02:40:01.134Z","0.18.1":"2026-06-11T02:45:42.521Z","0.18.2":"2026-06-11T02:55:12.953Z","0.19.0":"2026-06-11T03:02:14.141Z","0.20.0":"2026-06-11T06:20:13.720Z","0.20.1":"2026-06-11T08:23:11.863Z","0.20.2":"2026-06-11T09:39:51.076Z","0.20.3":"2026-06-12T02:25:07.876Z","0.20.4":"2026-06-12T02:27:22.891Z","0.20.5":"2026-06-12T02:56:46.606Z","0.21.0":"2026-06-13T16:28:45.952Z","0.22.0":"2026-06-14T13:53:30.785Z","0.22.1":"2026-06-15T03:00:22.115Z","0.23.0":"2026-06-15T17:41:18.136Z","0.23.1":"2026-06-16T04:06:32.546Z","0.23.2":"2026-06-16T08:03:53.002Z","0.23.3":"2026-06-20T14:16:40.131Z","0.23.4":"2026-06-24T20:26:04.435Z","0.24.0":"2026-06-27T18:08:22.836Z","0.24.1":"2026-06-29T01:56:54.250Z","0.25.0":"2026-06-29T08:47:02.653Z","0.26.0":"2026-07-01T02:09:52.152Z","0.27.0":"2026-07-02T02:29:19.501Z","0.28.0":"2026-07-02T06:48:28.619Z","0.29.0":"2026-07-07T18:08:30.944Z","0.29.1":"2026-07-07T20:03:20.767Z","0.30.0":"2026-07-07T20:16:45.481Z","0.30.1":"2026-07-08T11:33:09.087Z","0.31.0":"2026-07-08T11:43:36.886Z","0.32.0":"2026-07-12T13:13:22.366Z","0.33.0":"2026-07-13T04:18:32.335Z","0.34.0":"2026-07-13T05:12:13.535Z","0.35.0":"2026-07-29T13:44:50.039Z","0.35.1":"2026-07-29T15:34:22.816Z","0.35.2":"2026-08-05T03:07:19.798Z","0.35.3":"2026-08-06T06:55:27.107Z","0.36.0":"2026-08-06T07:49:27.962Z","0.37.0":"2026-08-06T08:09:29.918Z","0.38.0":"2026-08-06T08:43:04.684Z","0.39.0":"2026-08-06T09:10:43.090Z","0.40.0":"2026-08-06T11:40:26.622Z"},"bugs":{"url":"https://github.com/snomiao/codehost/issues"},"homepage":"https://codehost.dev","repository":{"type":"git","url":"git+https://github.com/snomiao/codehost.git"},"description":"Run VS Code on any machine and reach it from **codehost.dev** over a direct peer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no port forwarding. The daemon behind your NAT and the browser tab connect directly; a tiny Cloudflare Wo","maintainers":[{"name":"snomiao","email":"snomiao@gmail.com"}],"readme":"# codehost\n\nRun VS Code on any machine and reach it from **codehost.dev** over a direct\npeer-to-peer **WebRTC** connection — no public ingress, no reverse proxy, no\nport forwarding. The daemon behind your NAT and the browser tab connect\ndirectly; a tiny Cloudflare Worker only brokers the handshake.\n\n```\n Browser (codehost.dev)                          Your machine (codehost serve)\n ┌──────────────────────────┐                    ┌──────────────────────────────┐\n │ Discovery: list servers   │                    │ codehost CLI (yargs)          │\n │ Service Worker: /vs/<id>/* │   WebRTC           │ node-datachannel peer         │\n │ ─────────────────────────▶│◀═ data channel ══▶│ HTTP/WS proxy → code serve-web │\n │ <iframe> VS Code           │                    │ in your project directory      │\n └────────────┬─────────────┘                    └───────────────┬──────────────┘y -c\n              │ WebSocket (signaling)                             │ WebSocket (signaling)\n              └───────────────────► Cloudflare Worker + DO ◄──────┘\n                       per-token room: registry + SDP/ICE relay\n```\n\n## Quickstart\n\nOn the machine you want to edit, run the one-line installer — it installs\n[Bun](https://bun.sh) if needed, the `codehost` CLI, and then `codehost setup`\n(picks a token, installs VS Code, and starts a server):\n\n```bash\n# macOS / Linux\ncurl -fsSL https://codehost.dev/install.sh | sh\n\n# Windows (PowerShell)\npowershell -c \"irm codehost.dev/install.ps1 | iex\"\n```\n\n`/setup.sh` and `/setup.ps1` are aliases of the same script. Re-running it any\ntime **upgrades you to the latest codehost** (`bun add -g codehost@latest`), so\nit doubles as the updater — and it bootstraps Bun by absolute path, so it won't\nbail just because your shell hasn't picked Bun up on `PATH` yet.\n\nAlready have Bun? `bun add -g codehost && codehost setup` does the same. Or, for\na specific directory/token in one shot:\n\n```bash\nbunx codehost setup ~/my-project -t <token>\n```\n\nThen open **https://codehost.dev**, enter the token printed by `setup`, and your\nserver appears in the list. Click **Connect** — VS Code loads in the page,\nserved entirely over the peer-to-peer data channel.\n\n> Use `setup` (not `bunx codehost serve`) for the first run: `setup` installs\n> everything and self-heals the native WebRTC module that a bare `bunx` can't\n> fetch on its own.\n\nThe `<token>` is a shared secret: anyone with it can see and connect to the\nservers in that room, so treat it like a password. It must be **at least 12\ncharacters, contain no whitespace, and mix at least 3 of {lowercase, uppercase,\ndigits, symbols}** — the CLI, the web page, and the signaling Worker all reject\nweaker tokens (e.g. `Str0ng-Token-99`).\n\n## CLI\n\n```bash\ncodehost setup [dir] [-t <token>]           # token + VS Code + daemon, one shot\ncodehost serve [dir] -t <token> [options]   # serve a directory (default: cwd)\ncodehost list                                # list daemonized servers (oxmgr)\ncodehost stop <name>                         # stop a daemonized server\ncodehost update                              # fetch the latest VS Code CLI now\n```\n\n**`codehost setup`** is the easy path: it reuses (or generates and saves to\n`~/.codehost/config.json`) a strong room token, ensures a working VS Code,\nstarts the server under oxmgr, and prints the token + URL. Pass `-t` to set a\ntoken explicitly, or `--new-token` to rotate the saved one.\n\n**VS Code is auto-installed.** On first `serve`, codehost uses a `code` already\non your `PATH` if present; otherwise it downloads Microsoft's standalone VS Code\nCLI for your OS/arch (verifying its sha256), caches it under `~/.codehost/vscode/`,\nand re-checks the stable channel at most once per day. Force a refresh with\n`codehost update`, or point at a specific binary with the `CODEHOST_CODE_BIN`\nenvironment variable.\n\n`serve` options:\n\n| flag | default | meaning |\n|------|---------|---------|\n| `-t, --token` | (required) | room token shared with the codehost.dev page |\n| `-d, --daemon` | `false` | run in the background under [oxmgr](https://www.npmjs.com/package/oxmgr) (auto-restart) |\n| `--name` | hostname | display name shown on the page |\n| `--signal` | `wss://signal.codehost.dev` | signaling server URL |\n| `--port` | ephemeral | fixed port for the local `code serve-web` |\n\nDaemon mode requires `oxmgr` (`npm i -g oxmgr`). Without `-d`, `serve` runs in\nthe foreground and stops on Ctrl-C.\n\n## How it works\n\n1. **Signaling** — `worker/` is a Cloudflare Worker whose Durable Object hosts\n   one room per token. Daemons register their metadata; the page lists the\n   room's servers; the DO relays WebRTC offer/answer/ICE between them. STUN-only\n   (no TURN yet), so strict/symmetric NATs may not connect.\n2. **WebRTC** — the daemon uses `node-datachannel` (native, loaded via\n   `createRequire` so it resolves under Bun); the browser uses the standard\n   `RTCPeerConnection`. The browser is the offerer.\n3. **Tunnel** — `code serve-web` runs on `127.0.0.1` under base path\n   `/vs/<peerId>`. The browser Service Worker intercepts `/vs/<peerId>/*` and\n   forwards each HTTP request to the page, which ships it over the data channel;\n   the daemon (`src/cli/tunnel.ts`) replays it against the local VS Code server\n   and streams the response back. VS Code's WebSockets are routed the same way\n   via an injected `window.WebSocket` shim inside the iframe.\n\n## Development\n\n```bash\nbun install\nbun run dev          # web terminal scaffold (legacy) on :5173 + :3001\nbun run dev:signal   # signaling Worker locally (wrangler dev on :8787)\nbun run cli -- serve . -t test --signal ws://localhost:8787   # run the daemon\nbun run typecheck    # app + service worker + worker programs\nbun run build        # builds dist/public (app + /sw.js)\n```\n\nIn local dev the page (on `localhost`) auto-targets `ws://localhost:8787`;\noverride the signaling URL anytime via `localStorage[\"codehost.signal\"]`.\n\n### Local page at https://codehost.localhost (optional)\n\nIf you iterate on the page a lot, [portless](https://npmjs.com/package/portless)\ngives the dev server a stable, port-free HTTPS URL — same-origin storage that\nsurvives vite picking a different port, and no `:5173` to remember:\n\n```bash\nnpm i -g portless\nsudo portless proxy start --https   # one-time: HTTPS proxy on 443 (sudo for the port + local CA trust)\nportless service install            # optional: auto-start the proxy on login\nportless run                        # runs `bun run dev`, routes https://codehost.localhost → vite\n```\n\nThen open `https://codehost.localhost/#t=<your-token>`. To point the local page\nat production signaling (so it sees your real daemons), set\n`localStorage.setItem(\"codehost.signal\", \"wss://signal.codehost.dev\")` in the\nconsole and reload. Note a push to `main` deploys codehost.dev via CI — do the\nlook-and-feel QA here first, and push when it's right.\n\n## Deploy\n\n```bash\nbun run deploy:signal   # cd worker && wrangler deploy   (Durable Object signaling)\nbun run deploy:pages    # vite build && wrangler pages deploy dist/public --project-name codehost\n```\n\nThe signaling Worker is bound to a `signal.` subdomain of the zone; the page is\nthe `codehost` Pages project on the `codehost.dev` custom domain (Cloudflare\naccount `SNOLAB`). After deploying the Worker the first time, add its\n`signal.codehost.dev` custom-domain route (commented in `worker/wrangler.jsonc`).\n\n## Status / limitations\n\n- Verified live end-to-end across two networks: a daemon behind one NAT and a\n  browser on `codehost.dev` (another network) connect over STUN, the VS Code\n  workbench loads in the iframe, the Explorer lists the real workspace, and\n  files open in the editor — all HTTP + WebSocket traffic over the data channel.\n- Data-channel frames are capped at 16 KiB (the portable WebRTC limit); HTTP\n  bodies and WebSocket messages larger than that are fragmented and reassembled\n  (`src/shared/protocol.ts`).\n- STUN-only: add Cloudflare Realtime TURN for strict/symmetric-NAT reachability.\n- Token = bearer auth for now; no per-user identity yet.\n","readmeFilename":"README.md"}