{"_id":"happy-plus","_rev":"27-26854c9230d27f8caa55233e7ad7323b","name":"happy-plus","dist-tags":{"latest":"1.2.3"},"versions":{"1.1.10-beta.7-plus.0":{"name":"happy-plus","version":"1.1.10-beta.7-plus.0","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.10-beta.7-plus.0","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"4bcd7a73d2868609e79a49a66d4e1227f694ba03","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.10-beta.7-plus.0.tgz","fileCount":63,"integrity":"sha512-KEZPYX5OWFqWW2l3HQN2/GtsNDe3y5f1FDJHQHbGHqx5fvJg6sdx6WgalKb1/CcIh9DVnjp4MDB/ZqNakFwQFg==","signatures":[{"sig":"MEYCIQDSh6JPmpaY5yQo6Wh+4+Gzv74F3U0gCfqlh/1pyDTW0gIhAOIe35s93Ect9uhxdwjN+NoGMZJ9WjfJHX56sEVayJKh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.10-beta.7-plus.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451177},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"gitHead":"4cb997e28a9b270c9c7b78dd2723a6379c488cbc","scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"workspace:*","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.2.96"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.11.0","devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.10-beta.7-plus.0_1780561798176_0.8314231868438635","host":"s3://npm-registry-packages-npm-production"}},"1.1.10-beta.7-plus.2":{"name":"happy-plus","version":"1.1.10-beta.7-plus.2","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.10-beta.7-plus.2","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"dffd0973121ae9052a24c9a3ecfdb8dcff4e466e","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.10-beta.7-plus.2.tgz","fileCount":63,"integrity":"sha512-H5DLBVIlFLPMzDCLZ5yy4UToRkDcYFOkM/Y0Xr87nYPrc0WcCRuhJmww39k+2NIBGrfEaCBk//moGBMkNKlZ3g==","signatures":[{"sig":"MEUCIQD7Jiv49jRk7mSD8BYxQhiDRoHcwetvbUA1riifuHMHdQIgI+McLZajb3j4XHfbCbDrp5EAoJ6oi9Nt1CMXhvzoWwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.10-beta.7-plus.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451134},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.10-beta.7-plus.2.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/0db06b465ba91c278fe236977fa6d613/happy-plus-1.1.10-beta.7-plus.2.tgz","_integrity":"sha512-H5DLBVIlFLPMzDCLZ5yy4UToRkDcYFOkM/Y0Xr87nYPrc0WcCRuhJmww39k+2NIBGrfEaCBk//moGBMkNKlZ3g==","repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.2.96"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.10-beta.7-plus.2_1780562918281_0.5747094151323275","host":"s3://npm-registry-packages-npm-production"}},"1.1.11-plus.0":{"name":"happy-plus","version":"1.1.11-plus.0","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.11-plus.0","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"93d02c90e6005156415b7e0a7012ad86eb0636e2","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.11-plus.0.tgz","fileCount":63,"integrity":"sha512-l2+dYxgWrgw9gjofDN3DbJizVCb8K1t6bM7ThSgcYNaksXd11as3s2VmUYl+7SeThffMWyKXaRvUZNZp1y3S6g==","signatures":[{"sig":"MEQCIA4vQLgW6/0dpvhSHkU5wcD1cDjit5/100GKx83lSk4oAiAKxn+c1BBDVXG6UPvuKtmCwW9h53T969pPoEqdxaje9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.11-plus.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451343},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.11-plus.0.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/d38090250ecc1c7fc0deb0187778ae74/happy-plus-1.1.11-plus.0.tgz","_integrity":"sha512-l2+dYxgWrgw9gjofDN3DbJizVCb8K1t6bM7ThSgcYNaksXd11as3s2VmUYl+7SeThffMWyKXaRvUZNZp1y3S6g==","repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.2.96"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.11-plus.0_1780580278788_0.00876766295521203","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"happy-plus","version":"1.1.11","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.11","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"13b007ce29dd741eb4b42436876db4825c17d13b","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.11.tgz","fileCount":63,"integrity":"sha512-VV028UgQfDSp8HV6vLbEARSawCfIpIc+XAoSK3SlvOs/dCOAVDCcIAuGYiq0+ZDAffcRZ0+ltWaOCDKHpINBPQ==","signatures":[{"sig":"MEUCIEVxNEYRk+pfp1L+rddmQH3wSGxwcx3s2zLyBEGtX9tSAiEA9DrVM2u93kaBjkYYjHRy5Irc6rzFTPIy4o83/mTARJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451322},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.11.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/30b7bd1d94f5dee4c4c75430cb66b2f9/happy-plus-1.1.11.tgz","_integrity":"sha512-VV028UgQfDSp8HV6vLbEARSawCfIpIc+XAoSK3SlvOs/dCOAVDCcIAuGYiq0+ZDAffcRZ0+ltWaOCDKHpINBPQ==","repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.2.96"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.11_1780580619595_0.5000825261763515","host":"s3://npm-registry-packages-npm-production"}},"1.1.12":{"name":"happy-plus","version":"1.1.12","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.12","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"244c5a7cfedac63c932300ce15173d6732ea1a42","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.12.tgz","fileCount":63,"integrity":"sha512-bKddGCcZdmSlsvMGsYHmmaz4Ks3pWpQM6sfIqJSAKK8nROP+vubvmKFw+LxLj3lJq2ysA1roojYG1CvDlrL9lA==","signatures":[{"sig":"MEQCIEbSiCSlncOctfbOVi0P5XxAN5kvnwSsSjz0JpIT0hPBAiBbT7uHa1m7hiBE/DwQpUxLDSkWXnQWI4E42rHAYxCsrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451325},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.12.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/16f9a45b9066d80fb57caf940a4a2a11/happy-plus-1.1.12.tgz","_integrity":"sha512-bKddGCcZdmSlsvMGsYHmmaz4Ks3pWpQM6sfIqJSAKK8nROP+vubvmKFw+LxLj3lJq2ysA1roojYG1CvDlrL9lA==","repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.2.141"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.12_1780582661491_0.005518094137687113","host":"s3://npm-registry-packages-npm-production"}},"1.1.13":{"name":"happy-plus","version":"1.1.13","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.13","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"0e595c24a7df95f11cf9981b40ee9b68390c76d1","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.13.tgz","fileCount":63,"integrity":"sha512-ZMNdHgjIsTjT78ghhBdmDGjUy27j5zM4e0nJeeKwLZ7zWtNRR7eC7Md2OAFJAtYIYtcpE2Mo7FvxEex71BX5nw==","signatures":[{"sig":"MEUCIQC+oHCGFxwQZhQs7KqwlLLiVGI86UAoVBaiYvePmicHSwIgKPBG0Zmgqu8yRrtxYbmp87dbBpBCo8g265SaLDe83aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451399},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.13.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/bd457079b113d3076e67372a8b181a06/happy-plus-1.1.13.tgz","_integrity":"sha512-ZMNdHgjIsTjT78ghhBdmDGjUy27j5zM4e0nJeeKwLZ7zWtNRR7eC7Md2OAFJAtYIYtcpE2Mo7FvxEex71BX5nw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.162"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.13_1780657878188_0.9533490306534638","host":"s3://npm-registry-packages-npm-production"}},"1.1.14":{"name":"happy-plus","version":"1.1.14","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.14","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a7479a0850cd82164e8d0994e868a4814fb25c28","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.14.tgz","fileCount":63,"integrity":"sha512-A05l425iZWz2cj6xYRwvJNefz+HK/YbvcDxQrhtiSN6O9tnoslRWcqEeafBPoiZl+eWwNY1ZW5voNkTQpgWZuw==","signatures":[{"sig":"MEUCIQC0HP8JrXEboYy2AZ1qYp3FtKDQxnUCmk4yRiwQv4Uo2gIgf/yJUX8RyBCZYQsryRw9t7f3h34LuP01pt21pp+WvEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112451414},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.14.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/99527b4f1bb7d37157d6b361a43ab6d6/happy-plus-1.1.14.tgz","_integrity":"sha512-A05l425iZWz2cj6xYRwvJNefz+HK/YbvcDxQrhtiSN6O9tnoslRWcqEeafBPoiZl+eWwNY1ZW5voNkTQpgWZuw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.162"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.14_1780893419876_0.28208329195848414","host":"s3://npm-registry-packages-npm-production"}},"1.1.15":{"name":"happy-plus","version":"1.1.15","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.15","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"0c0812ee957f2c3152ef79c7043696d7a291db12","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.15.tgz","fileCount":63,"integrity":"sha512-2wTyiJXW4jp4DGCWGDY1iJA953/6HAI+JAenTp0UqlA8UCAQHwKdspb4iNp4L58eiR4I+eJXDXNmffuruSXJHw==","signatures":[{"sig":"MEQCIG6WLL7aVIJlQVKFDrfocLRje0AtPNFutio5hNZ9lGK1AiAXYrJY87ofIRJ2LuTvaYv7dqHcoqpscynlOYhvNgcc+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112452137},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.15.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/647de551b76e5a4db9cd409780f70670/happy-plus-1.1.15.tgz","_integrity":"sha512-2wTyiJXW4jp4DGCWGDY1iJA953/6HAI+JAenTp0UqlA8UCAQHwKdspb4iNp4L58eiR4I+eJXDXNmffuruSXJHw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.162"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.15_1780898768597_0.5019621784961708","host":"s3://npm-registry-packages-npm-production"}},"1.1.16":{"name":"happy-plus","version":"1.1.16","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.16","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"7b01f650e74303bb0c845351295885551bb48af5","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.16.tgz","fileCount":63,"integrity":"sha512-+5/wimtSszjiDd0tY3guiSafAxDODMNKNHXQ0ls9R+stFmty+6o8luwTwTRKkx56cY2fhBJUncfROQ1nl5TNXQ==","signatures":[{"sig":"MEQCIH9+AwcAKg0TnUcAysdnbyym7RCdY15oXajngO/ON+iIAiB5r91Xv2yldSzcdC2CZ27fyKBFI/nyXkBoTMQ3HJ3ZRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112452081},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.16.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/ae6d89051b22a5d52b0115e3aeb5aadc/happy-plus-1.1.16.tgz","_integrity":"sha512-+5/wimtSszjiDd0tY3guiSafAxDODMNKNHXQ0ls9R+stFmty+6o8luwTwTRKkx56cY2fhBJUncfROQ1nl5TNXQ==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.162"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.16_1780902243131_0.4582005023268263","host":"s3://npm-registry-packages-npm-production"}},"1.1.17":{"name":"happy-plus","version":"1.1.17","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.17","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"1d021f305549cae614a22472cd6ade2ddff2fe4d","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.17.tgz","fileCount":63,"integrity":"sha512-lRImuvW4LLkEoX8+TnSX/acLgnYM4fEAg37JUS19t4viQk0Amt5tiaxfH65TyGOWasO3yRo7HyuOtJOe+w1j9A==","signatures":[{"sig":"MEQCICTL3ALsEZdFKV4nube2HCq1Q+sPlt6D3cIMZUToabphAiAvfwONOPsgYrmnMTiTzpLzsouaf/Slf0RhQb1bcCprzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112452981},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.17.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/d6a4bb50e76181b6abb9a1052a0c286e/happy-plus-1.1.17.tgz","_integrity":"sha512-lRImuvW4LLkEoX8+TnSX/acLgnYM4fEAg37JUS19t4viQk0Amt5tiaxfH65TyGOWasO3yRo7HyuOtJOe+w1j9A==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"4.0.2","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.162"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.17_1780915464502_0.7065501199317579","host":"s3://npm-registry-packages-npm-production"}},"1.1.18":{"name":"happy-plus","version":"1.1.18","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.18","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"9ea7876abf5e211145509307aadae230a8aff6a9","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.18.tgz","fileCount":63,"integrity":"sha512-WBybMJMcfbfDBJ9hLw1KHw9nbUEcqDuO+YiVjIHXn9hUSNlumQjFXbt31dYn8hTujhcvtQk4Pb83lAi6csI8vA==","signatures":[{"sig":"MEUCIFwiKI7CcPPsShA2pSoLXJoIgZZddf+br8yrSHtrdysjAiEAzA8ciEC78cWpH2L5gGws8ckdWPS3v5kGGGmZMq5YQMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112408287},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.18.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/6abde314007ff880b61fbf4027633637/happy-plus-1.1.18.tgz","_integrity":"sha512-WBybMJMcfbfDBJ9hLw1KHw9nbUEcqDuO+YiVjIHXn9hUSNlumQjFXbt31dYn8hTujhcvtQk4Pb83lAi6csI8vA==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.167"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.18_1780991315777_0.48293397189824994","host":"s3://npm-registry-packages-npm-production"}},"1.1.19":{"name":"happy-plus","version":"1.1.19","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.19","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"782304c8c12d662d061f08c2513cb0ee8c97de94","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.19.tgz","fileCount":63,"integrity":"sha512-IzdTNnuHmr2dFR/27oixlElPzdkyiiNyYQwxN7uOG0hVCmXCTLHAQEle3Ia1c8LEoQnGGsfBGQWRqG2we1jR2w==","signatures":[{"sig":"MEQCIA9fMEs228lvjBdgWIzZrZ2WMH6Y7xWLb8D2EooeGNzDAiB3VBO1cUsHQrGR74hvxDUAlreazGURLag80sBiwnuvig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112408287},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.19.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/4331501b722ab8a15b8fa86a84dd6f25/happy-plus-1.1.19.tgz","_integrity":"sha512-IzdTNnuHmr2dFR/27oixlElPzdkyiiNyYQwxN7uOG0hVCmXCTLHAQEle3Ia1c8LEoQnGGsfBGQWRqG2we1jR2w==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.167"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.19_1780997237179_0.43348185477285606","host":"s3://npm-registry-packages-npm-production"}},"1.1.20":{"name":"happy-plus","version":"1.1.20","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.20","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b82a19201e4871394c2c8c82c7bbe90a36bf8e41","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.20.tgz","fileCount":63,"integrity":"sha512-4QAb/BAQmsVDtfyOj4E+ej+E4u+6HWXspeSDRw1JjZVbcasG8AY0h2Yq0LZnL0hyWPmOP9Gne0s+rmp5yPN/mQ==","signatures":[{"sig":"MEQCIHQK6XfgvbfYrA39zbw7oHZ/cYIqLJDJwolhZLSXVIlFAiAX4SZtRu0R5+pv5cmAgxL9hs/4OlCnWooZjqm+kmU8gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112425948},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.20.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/0a8b09ddba03da9336e43cfe8372b2dd/happy-plus-1.1.20.tgz","_integrity":"sha512-4QAb/BAQmsVDtfyOj4E+ej+E4u+6HWXspeSDRw1JjZVbcasG8AY0h2Yq0LZnL0hyWPmOP9Gne0s+rmp5yPN/mQ==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.167","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.20_1781008848125_0.005493859725876016","host":"s3://npm-registry-packages-npm-production"}},"1.1.21":{"name":"happy-plus","version":"1.1.21","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.21","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"d9392d4b5e86abad1c99e4d8ee87e36bacd3ea02","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.21.tgz","fileCount":63,"integrity":"sha512-pbD8uL5JN9s5JGGzClIzeMnobbLRL15ZrmAdOjchvUW0+anKLyYKth17uNBJVS6N3tzvEaXQJiUTL6THwcyh2w==","signatures":[{"sig":"MEUCIQCBDPDQdrKBWIHwZM9Jo1XUSwRaZsu2Amxd2jtYocXi4AIgS6znJvWKQd9V//oImuYsRj89HE48SvE41R6sVa5sxXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112425948},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.21.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/5f75c8724bc05081b651b59b243cc6cc/happy-plus-1.1.21.tgz","_integrity":"sha512-pbD8uL5JN9s5JGGzClIzeMnobbLRL15ZrmAdOjchvUW0+anKLyYKth17uNBJVS6N3tzvEaXQJiUTL6THwcyh2w==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.167","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.21_1781019849711_0.624108350786706","host":"s3://npm-registry-packages-npm-production"}},"1.1.22":{"name":"happy-plus","version":"1.1.22","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.22","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"2063581364fa9396fb47be48561d9343df65c1a8","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.22.tgz","fileCount":63,"integrity":"sha512-rwPKs/P7LPghR0YQfqzvt4nglAUerB4XO9lYfNexOvc9Yk0MxVC2C74txvrjFws/8YCerVWAl6RmEVrPuOs/YQ==","signatures":[{"sig":"MEUCIQCrmDNlrP4WVJP5u5Yr2GDTZXaYyQ18YaHFI70KdFGbUQIgVkCCjSQhrYV6n9kfssxgfOtuSXPI7CeO5C0NtUnEEMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112425948},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.22.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/a9c0f3f6db6d1d06892eedc8f1dac09d/happy-plus-1.1.22.tgz","_integrity":"sha512-rwPKs/P7LPghR0YQfqzvt4nglAUerB4XO9lYfNexOvc9Yk0MxVC2C74txvrjFws/8YCerVWAl6RmEVrPuOs/YQ==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.167","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.22_1781023657516_0.7452087651258057","host":"s3://npm-registry-packages-npm-production"}},"1.1.23":{"name":"happy-plus","version":"1.1.23","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.23","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"8762e6a6fe043daf7bc5ed71462be81888028034","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.23.tgz","fileCount":63,"integrity":"sha512-Fy+hHLnSiNBRPit4ST8GIo+BohfGxN1HG5n4yWJLhiz8MAXjq4WZT2Ybk72w1p3lRIJlpZ5j828DPpxzdU+MJg==","signatures":[{"sig":"MEQCIAXnZ9lQVQYq6nXJT7lVHyNsOjpCiPCXQifWn06bQTF4AiAajansbXe68owQyggon3nrGU0r395L5OOpkYLVdLq81Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112426396},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.23.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/f98bd41341e46b5c45abf17c0ea430d6/happy-plus-1.1.23.tgz","_integrity":"sha512-Fy+hHLnSiNBRPit4ST8GIo+BohfGxN1HG5n4yWJLhiz8MAXjq4WZT2Ybk72w1p3lRIJlpZ5j828DPpxzdU+MJg==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.170","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.23_1781060189338_0.7160812276985604","host":"s3://npm-registry-packages-npm-production"}},"1.1.24":{"name":"happy-plus","version":"1.1.24","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.24","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b952d8ca9c9f93fc8b9347a060988dc5c8829b5e","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.24.tgz","fileCount":63,"integrity":"sha512-GHmy1Rg2S6jr6BOq6cBzP1ylpBHmZjNqCTGieDp/DoD0Cppq3lNJZnmWEytPSFG16O5y7i1Xx35fKwWirJqXaQ==","signatures":[{"sig":"MEUCIArHzqzBgjuCKOa0kK9eXnTyv2tES+WrmBPILVhrzcGeAiEA0VwMA7j9a+ftEtB/fMth27ullJI9B2cGKvwVuBh01l0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112426396},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.24.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/9e1d8c1c8e29b531cc2b369763ab4f17/happy-plus-1.1.24.tgz","_integrity":"sha512-GHmy1Rg2S6jr6BOq6cBzP1ylpBHmZjNqCTGieDp/DoD0Cppq3lNJZnmWEytPSFG16O5y7i1Xx35fKwWirJqXaQ==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@slopus/happy-wire":"0.1.0","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.170","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.24_1781065331476_0.048774806651967983","host":"s3://npm-registry-packages-npm-production"}},"1.1.25":{"name":"happy-plus","version":"1.1.25","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.25","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"7bb4705c85a14f25c366d928e065500f0200fae4","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.25.tgz","fileCount":63,"integrity":"sha512-U767eM71vvC8/kLFbP9bOHeyLSUWrdPd8X5snSkQU+XxIVGG5tm6UqQkcqNeeLqJ7mI52NvL52CBaMNwYRn0Cw==","signatures":[{"sig":"MEYCIQC7mwEuowJSOk+B4k0D6UQ5LvgM3jNG6hrQnq2YOO83pAIhANjaiV1h3L8RHmT2sds/D8rbn3mqzq89p3vJulfUZ4qT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112457175},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.25.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/8dc0cfeca1987b3fd508775bc16df696/happy-plus-1.1.25.tgz","_integrity":"sha512-U767eM71vvC8/kLFbP9bOHeyLSUWrdPd8X5snSkQU+XxIVGG5tm6UqQkcqNeeLqJ7mI52NvL52CBaMNwYRn0Cw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.170","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.25_1781078014357_0.2613093389408767","host":"s3://npm-registry-packages-npm-production"}},"1.1.26":{"name":"happy-plus","version":"1.1.26","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.26","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"9b4f27dd5e2bbd06f5f508ec740263743de8d378","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.26.tgz","fileCount":63,"integrity":"sha512-tVahbDlzI7YZ7/C3zbwh2oQ/zAlbHl1yV2XdexnPq220XkQLQwa+nMB/N+1wTS4qLKw58XUbK59aBzeJ39yymg==","signatures":[{"sig":"MEQCID+UGT6SeZcK8jGC9p+va6EtsNzetRDbyOsTkesh5kppAiBORozJvuHls1q9lQtWQRMBIA8ES6LQ8MgOTPHwDho7Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112502582},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.26.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/7bd2a812bad317852dcd56a036df37a6/happy-plus-1.1.26.tgz","_integrity":"sha512-tVahbDlzI7YZ7/C3zbwh2oQ/zAlbHl1yV2XdexnPq220XkQLQwa+nMB/N+1wTS4qLKw58XUbK59aBzeJ39yymg==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.25.3","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.170","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.26_1781101883996_0.6230953832459349","host":"s3://npm-registry-packages-npm-production"}},"1.1.27":{"name":"happy-plus","version":"1.1.27","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.27","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"3d5663a0b169f7dc5a5f51533e4236d02d61594b","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.27.tgz","fileCount":63,"integrity":"sha512-sLY1G6bp37t73RVmJ66y87dXA+vOHug6mQshwgfWagTHYTwenPedsnhZ+foDjo8jPomRQey6XfzNFb90NhCR1Q==","signatures":[{"sig":"MEQCIHO7TvlCh/MUW+Zv6YBwa67iQeN+tapdQba9s1r56jY4AiBMuAvgAhUzxRzUnNIQg1LgDQqUhae80lI9hwsto8y6jA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112587634},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.27.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/0087ad29d2884e1bbc34c95a7a420348/happy-plus-1.1.27.tgz","_integrity":"sha512-sLY1G6bp37t73RVmJ66y87dXA+vOHug6mQshwgfWagTHYTwenPedsnhZ+foDjo8jPomRQey6XfzNFb90NhCR1Q==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.27_1782120906089_0.3871039953642619","host":"s3://npm-registry-packages-npm-production"}},"1.1.28":{"name":"happy-plus","version":"1.1.28","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.28","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b48e68d6f302fcfb29a64ed0adf3064478847ff4","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.28.tgz","fileCount":63,"integrity":"sha512-snDqs7QKkjO0FhM6JHx0rBAV9ZTmvpLlrE1vSgeqy+yMe3ShUUZhHR+aoy26rdM26Fne/yH2bsa5MmnrViE9Dw==","signatures":[{"sig":"MEYCIQDlHlu5/LGuimJYzXYiGEqignd3LjwYvkqOf6RxjbouPwIhAPmY1fD5GP/b+6L9W7L4Lw7JAXUHSTt6OBmVh6EUVN5R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112587986},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.28.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/88270cb1d5bb8068b14e32ac4b4e8878/happy-plus-1.1.28.tgz","_integrity":"sha512-snDqs7QKkjO0FhM6JHx0rBAV9ZTmvpLlrE1vSgeqy+yMe3ShUUZhHR+aoy26rdM26Fne/yH2bsa5MmnrViE9Dw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.28_1782404984078_0.16791853217355146","host":"s3://npm-registry-packages-npm-production"}},"1.1.29":{"name":"happy-plus","version":"1.1.29","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.29","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"598dd392a5d7764e0424ebdedefb49706cc2901f","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.29.tgz","fileCount":63,"integrity":"sha512-ZNV2lmtliLA85S4z11E9kBveeVgMMvHo7zfaqtXOef0RElPV+i1sza9TUTJmtzxRuZ/ZSXFmJq9wj2Dzi7tkVA==","signatures":[{"sig":"MEUCIQCcOS6NtlO7YR/VKq3RoDGz4s5KyqKbBK18dT317r2z/gIgIV8+KJ/Pf8yR9TTXQWxPm2v8vcjqxs0IsJ2ggVwPTEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112587986},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.29.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/7cced8bdcdcae602b83262da861626bf/happy-plus-1.1.29.tgz","_integrity":"sha512-ZNV2lmtliLA85S4z11E9kBveeVgMMvHo7zfaqtXOef0RElPV+i1sza9TUTJmtzxRuZ/ZSXFmJq9wj2Dzi7tkVA==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.29_1783048385078_0.7518322174551271","host":"s3://npm-registry-packages-npm-production"}},"1.1.30":{"name":"happy-plus","version":"1.1.30","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.1.30","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"32ccc3c4c79cbe1f5feefd6f1a16498104bed913","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.1.30.tgz","fileCount":63,"integrity":"sha512-oAV6uOgKDTkOs6li5N2NnF8EWCL5VQGlk5ZNQyx7BqJ1ZrER8Sf4BXPD+BbHcPZM4eL8EglJvf3rYRVGilSEtg==","signatures":[{"sig":"MEUCIDKD8DiyA2j5QoFesOUE4suIDwv6oS/SMzAb+oGoZH++AiEA4ZBgfiGxRLB1FMZ9jTyIINETbOJce2ebvMDErRq81is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.1.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112587986},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.1.30.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"pnpm run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/tmp/cc3c2a2630ad3c0aa9c495c45836e349/happy-plus-1.1.30.tgz","_integrity":"sha512-oAV6uOgKDTkOs6li5N2NnF8EWCL5VQGlk5ZNQyx7BqJ1ZrER8Sf4BXPD+BbHcPZM4eL8EglJvf3rYRVGilSEtg==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.1.30_1783261893896_0.8400363026588631","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"happy-plus","version":"1.2.0","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.2.0","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"42b2bb7bae853053e72a76f31108ce1b4f6f00af","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.2.0.tgz","fileCount":65,"integrity":"sha512-N+R0JEMeK27phMGJg7Iqf+uSSVWak7/uB6ZxqaOwPDgJ7OzWcLbjVXCRNriQ3SCdoLB3lfVP6lGFu7i6xhZDWw==","signatures":[{"sig":"MEUCIHjCc5IYSCWdGX1atrMSnfgVSzxaOHWbqmx9+kJNS3y7AiEAynlyRe/IwJwTn6eaNssqi18npfY6FxZZc5CVh+C1w4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112751794},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.2.0.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"bun run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"bun run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/home/runner/work/happy-plus/happy-plus/packages/happy-cli/happy-plus-1.2.0.tgz","_integrity":"sha512-N+R0JEMeK27phMGJg7Iqf+uSSVWak7/uB6ZxqaOwPDgJ7OzWcLbjVXCRNriQ3SCdoLB3lfVP6lGFu7i6xhZDWw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.2.0_1784953595564_0.03887379598848084","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"happy-plus","version":"1.2.1","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.2.1","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"162f0347d1b3a7794cc4369a1816557d32919351","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.2.1.tgz","fileCount":65,"integrity":"sha512-ZHxIZF7mztRngYE3aBPihzBpF0zbqqI+6H4YRl4Yx+1+sy+Ew3dmE+DjkxpvlWEk607aNLdnu1SRJuGmpSMM8A==","signatures":[{"sig":"MEYCIQCdeFcFbfqdmiqjrg9C/xWYjdc/QYU3d9qrGWGNmEGxGwIhAKGRzI9QKebIiEr1w3HRBKMt4FyyjPXenXg8NTBEXM78","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112751794},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.2.1.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"bun run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"bun run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/home/runner/work/happy-plus/happy-plus/packages/happy-cli/happy-plus-1.2.1.tgz","_integrity":"sha512-ZHxIZF7mztRngYE3aBPihzBpF0zbqqI+6H4YRl4Yx+1+sy+Ew3dmE+DjkxpvlWEk607aNLdnu1SRJuGmpSMM8A==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.2.1_1785133979406_0.3838335039978289","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"happy-plus","version":"1.2.2","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-plus@1.2.2","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"924b1edeee8c721d7598682d5fcd996262cc481e","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.2.2.tgz","fileCount":65,"integrity":"sha512-sNitLMCk8ve5e53nftlQo7NxOJTqB9YwMPqaKP6j5aYgycevhLu2uMlLnQj0Odv4Rnu7xFo9b7p9V5ad7GYdAw==","signatures":[{"sig":"MEUCIQDcvnaCNXovaydYON3+pS1ttdnaLAm3pYFiyALajYJvlgIgAZeFv6tXGvTwYDx+H+6hMkUkdrUU4XFzmwpzBdiCAEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112751794},"main":"./dist/index.cjs","type":"module","_from":"file:happy-plus-1.2.2.tgz","types":"./dist/index.d.cts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./lib":{"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"},"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"}},"./codex/happyMcpStdioBridge":{"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"},"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"}}},"scripts":{"test":"bun run build && vitest run --project unit","build":"shx rm -rf dist && tsc --noEmit && pkgroll","typecheck":"tsc --noEmit","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs","bundle:server":"node scripts/bundle-server.cjs","bundle:webapp":"node scripts/bundle-webapp.cjs","test:integration":"bun run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms"},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"_resolved":"/home/runner/work/happy-plus/happy-plus/packages/happy-cli/happy-plus-1.2.2.tgz","_integrity":"sha512-sNitLMCk8ve5e53nftlQo7NxOJTqB9YwMPqaKP6j5aYgycevhLu2uMlLnQj0Odv4Rnu7xFo9b7p9V5ad7GYdAw==","repository":{"url":"git+https://github.com/yiranxiaohui/happy-plus.git","type":"git"},"_npmVersion":"10.9.8","description":"Mobile and Web client for Claude Code and Codex","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^5.0.107","ws":"^8.19.0","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^4.0.0","open":"^10.2.0","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","inquirer":"^13.2.2","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@noble/hashes":"^2.0.1","@noble/ed25519":"^3.0.0","@stablelib/hex":"^2.0.1","expo-server-sdk":"^3.15.0","qrcode-terminal":"^0.12.0","socket.io-client":"^4.8.1","@stablelib/base64":"^2.0.1","@types/http-proxy":"^1.17.17","@types/cross-spawn":"^6.0.6","@paralleldrive/cuid2":"^2.2.2","http-proxy-middleware":"^3.0.5","@types/qrcode-terminal":"^0.12.2","@agentclientprotocol/sdk":"^0.14.1","@modelcontextprotocol/sdk":"1.29.0","fastify-type-provider-zod":"^6.1.0","@anthropic-ai/sandbox-runtime":"^0.0.37","@anthropic-ai/claude-agent-sdk":"^0.3.179","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"shx":"^0.3.3","tsx":"^4.20.6","dotenv":"^16.6.1","eslint":"^9","vitest":"^3.2.4","pkgroll":"^2.14.2","ts-node":"^10","@types/ws":"^8.18.1","cross-env":"^10.1.0","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","@types/inquirer":"^9.0.9","@slopus/happy-wire":"0.1.0","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-plus_1.2.2_1785140735292_0.5863712639606271","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"happy-plus","version":"1.2.3","description":"Mobile and Web client for Claude Code and Codex","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","type":"module","homepage":"https://happy.engineering","bugs":{"url":"https://github.com/slopus/happy/issues"},"repository":{"type":"git","url":"git+https://github.com/yiranxiaohui/happy-plus.git"},"bin":{"happy-plus":"bin/happy.mjs","happy-plus-mcp":"bin/happy-mcp.mjs"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.cts","exports":{".":{"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"./lib":{"require":{"types":"./dist/lib.d.cts","default":"./dist/lib.cjs"},"import":{"types":"./dist/lib.d.mts","default":"./dist/lib.mjs"}},"./codex/happyMcpStdioBridge":{"require":{"types":"./dist/codex/happyMcpStdioBridge.d.cts","default":"./dist/codex/happyMcpStdioBridge.cjs"},"import":{"types":"./dist/codex/happyMcpStdioBridge.d.mts","default":"./dist/codex/happyMcpStdioBridge.mjs"}}},"scripts":{"typecheck":"tsc --noEmit","bundle:server":"node scripts/bundle-server.cjs","bundle:server:all":"node scripts/bundle-server.cjs --all-platforms","bundle:webapp":"node scripts/bundle-webapp.cjs","build":"shx rm -rf dist && tsc --noEmit && pkgroll","test":"bun run build && vitest run --project unit","test:integration":"bun run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated","cli:install":"node scripts/install-local.cjs","postinstall":"node scripts/unpack-tools.cjs"},"dependencies":{"@agentclientprotocol/sdk":"^0.14.1","@homebridge/node-pty-prebuilt-multiarch":"^0.13.1","@anthropic-ai/claude-agent-sdk":"^0.3.179","@anthropic-ai/sandbox-runtime":"^0.0.37","@modelcontextprotocol/sdk":"1.29.0","@noble/ed25519":"^3.0.0","@noble/hashes":"^2.0.1","@paralleldrive/cuid2":"^2.2.2","@stablelib/base64":"^2.0.1","@stablelib/hex":"^2.0.1","@types/cross-spawn":"^6.0.6","@types/http-proxy":"^1.17.17","@types/qrcode-terminal":"^0.12.2","@types/react":"^19.2.7","@types/tmp":"^0.2.6","ai":"^5.0.107","axios":"^1.13.2","chalk":"^5.6.2","cross-spawn":"^7.0.6","expo-server-sdk":"^3.15.0","fastify":"^5.6.2","fastify-type-provider-zod":"^6.1.0","http-proxy":"^1.18.1","http-proxy-middleware":"^3.0.5","ink":"^6.5.1","inquirer":"^13.2.2","open":"^10.2.0","ps-list":"^8.1.1","qrcode-terminal":"^0.12.0","react":"^19.2.0","socket.io-client":"^4.8.1","tar":"^7.5.2","tmp":"^0.2.5","tweetnacl":"^1.0.3","ws":"^8.19.0","zod":"^4.0.0"},"devDependencies":{"@eslint/compat":"^1","@slopus/happy-wire":"0.1.0","@types/inquirer":"^9.0.9","@types/node":">=20","@types/ws":"^8.18.1","cross-env":"^10.1.0","dotenv":"^16.6.1","eslint":"^9","eslint-config-prettier":"^10","pkgroll":"^2.14.2","shx":"^0.3.3","ts-node":"^10","tsx":"^4.20.6","typescript":"5.9.3","vitest":"^3.2.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"packageManager":"bun@1.3.14","_id":"happy-plus@1.2.3","_integrity":"sha512-wA5gxmuwFM1/8bIko9gz+DDEr10EBydNfMgelimrrKnZQY8e+LjPSB2FSS/M3rqQ1bufSx9VcUfXj4NCUjqggg==","_resolved":"/home/runner/work/happy-plus/happy-plus/packages/happy-cli/happy-plus-1.2.3.tgz","_from":"file:happy-plus-1.2.3.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-wA5gxmuwFM1/8bIko9gz+DDEr10EBydNfMgelimrrKnZQY8e+LjPSB2FSS/M3rqQ1bufSx9VcUfXj4NCUjqggg==","shasum":"bf75dfce210233c269af7bf2a0f7530f72cbbb9f","tarball":"https://registry.npmjs.org/happy-plus/-/happy-plus-1.2.3.tgz","fileCount":65,"unpackedSize":112753046,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/happy-plus@1.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCp51EvRkypHucRjJbOQfh4h7W/FVHb6WBT1CUk6zYFWAIhAN5LUeBiJxdNQhfsgOgf4vTbJ1Dw79tVK/7LNAK+ajnK"}]},"_npmUser":{"name":"yiranxiaohui","email":"1798468479@qq.com"},"directories":{},"maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/happy-plus_1.2.3_1785740068271_0.12819177057192066"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T08:29:57.983Z","modified":"2026-08-03T06:54:29.948Z","1.1.10-beta.7-plus.0":"2026-06-04T08:29:59.610Z","1.1.10-beta.7-plus.2":"2026-06-04T08:48:40.213Z","1.1.11-plus.0":"2026-06-04T13:38:00.229Z","1.1.11":"2026-06-04T13:43:41.229Z","1.1.12":"2026-06-04T14:17:43.250Z","1.1.13":"2026-06-05T11:11:19.627Z","1.1.14":"2026-06-08T04:37:01.490Z","1.1.15":"2026-06-08T06:06:09.967Z","1.1.16":"2026-06-08T07:04:04.531Z","1.1.17":"2026-06-08T10:44:25.912Z","1.1.18":"2026-06-09T07:48:37.189Z","1.1.19":"2026-06-09T09:27:18.578Z","1.1.20":"2026-06-09T12:40:49.553Z","1.1.21":"2026-06-09T15:44:11.316Z","1.1.22":"2026-06-09T16:47:38.975Z","1.1.23":"2026-06-10T02:56:30.728Z","1.1.24":"2026-06-10T04:22:12.941Z","1.1.25":"2026-06-10T07:53:35.811Z","1.1.26":"2026-06-10T14:31:25.416Z","1.1.27":"2026-06-22T09:35:07.669Z","1.1.28":"2026-06-25T16:29:45.483Z","1.1.29":"2026-07-03T03:13:06.519Z","1.1.30":"2026-07-05T14:31:35.305Z","1.2.0":"2026-07-25T04:26:36.932Z","1.2.1":"2026-07-27T06:33:00.790Z","1.2.2":"2026-07-27T08:25:37.066Z","1.2.3":"2026-08-03T06:54:29.683Z"},"bugs":{"url":"https://github.com/slopus/happy/issues"},"author":{"name":"Kirill Dubovitskiy"},"license":"MIT","homepage":"https://happy.engineering","repository":{"type":"git","url":"git+https://github.com/yiranxiaohui/happy-plus.git"},"description":"Mobile and Web client for Claude Code and Codex","maintainers":[{"name":"yiranxiaohui","email":"1798468479@qq.com"}],"readme":"# Happy\n\nCode on the go — control AI coding agents from your phone, browser, or terminal.\n\nFree. Open source. Code anywhere.\n\n## Installation\n\n```bash\nnpm install -g happy\n```\n\n> Migrated from the `happy-coder` package. Thanks to [@franciscop](https://github.com/franciscop) for donating the `happy` package name!\n\n## Usage\n\n### Claude Code (default)\n\n```bash\nhappy\n# or\nhappy claude\n```\n\nThis will:\n1. Start a Claude Code session\n2. Display a QR code to connect from your mobile device or browser\n3. Allow real-time session control — all communication is end-to-end encrypted\n4. Start new sessions directly from your phone or web while your computer is online\n\n### More agents\n\n```\nhappy codex\nhappy agy        # Antigravity CLI (Gemini's successor)\nhappy gemini     # deprecated — use `happy agy`\nhappy openclaw\n\n# or any ACP-compatible CLI\nhappy acp opencode\nhappy acp -- custom-agent --flag\n```\n\n> **Note on agy permissions:** the agy backend runs `agy --print`, which is\n> one-shot and has no interactive approval surface — tool calls proceed\n> automatically without ever prompting you. The permission mode you pick in\n> Happy only chooses which flag is passed to agy: the default modes use\n> `--sandbox`, and the bypass/yolo-style modes (including `acceptEdits`) use\n> `--dangerously-skip-permissions`. Neither adds a per-tool approval gate\n> inside Happy, so selecting \"default\" for an agy session does **not** give\n> you an approval prompt the way it does for Claude Code.\n\n## Daemon\n\nThe daemon is a background service that stays running on your machine. It lets you spawn and manage coding sessions remotely — from your phone or the web app — without needing an open terminal.\n\n```bash\nhappy daemon start\nhappy daemon stop\nhappy daemon status\nhappy daemon list\n```\n\nThe daemon starts automatically when you run `happy`, so you usually don't need to manage it manually.\n\n### Keeping the daemon running across reboots\n\nIf you want the daemon to come back automatically after a reboot — without opening a `happy` session first — start it from your shell profile so it inherits your normal user session context (PATH, keychain access, OAuth credentials):\n\n```bash\n# ~/.zshrc or ~/.bashrc\nif [[ -o interactive ]] && [[ -z \"$HAPPY_DAEMON_CHECKED\" ]]; then\n    export HAPPY_DAEMON_CHECKED=1\n    () {\n        local state=$HOME/.happy/daemon.state.json\n        local pid=$(grep -oE '\"pid\"[[:space:]]*:[[:space:]]*[0-9]+' \"$state\" 2>/dev/null | grep -oE '[0-9]+')\n        if [[ -z \"$pid\" ]] || ! kill -0 \"$pid\" 2>/dev/null; then\n            happy daemon start >/dev/null 2>&1\n        fi\n    } &!\nfi\n```\n\nThe first interactive shell after a reboot triggers the start; subsequent shells short-circuit because the daemon is already running.\n\n> **macOS users:** prefer this shell-init approach over a `launchd` LaunchAgent. A LaunchAgent runs in an agent domain that is **detached from your GUI/Aqua login session**, which means the bundled `claude-agent-sdk` cannot reach the macOS keychain and silently fails authentication (\"Failed to authenticate. API Error: 401 terminated\", `duration_api_ms: 0`). If you must use launchd, your wrapper has to read the OAuth access token from `~/.claude/.credentials.json` and export it as `CLAUDE_CODE_OAUTH_TOKEN` before exec'ing the daemon — and you'll need to handle token rotation yourself.\n\n## Authentication\n\n```bash\nhappy auth login\nhappy auth logout\n```\n\nHappy uses cryptographic key pairs for authentication — your private key stays on your machine. All session data is end-to-end encrypted before leaving your device.\n\nTo connect third-party agent APIs:\n\n```bash\nhappy connect gemini\nhappy connect claude\nhappy connect codex\nhappy connect status\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `happy` | Start Claude Code session (default) |\n| `happy codex` | Start Codex mode |\n| `happy agy` | Start agy (Antigravity CLI) session |\n| `happy gemini` | Start Gemini CLI session (**deprecated** — use `happy agy`) |\n| `happy openclaw` | Start OpenClaw session |\n| `happy acp` | Start any ACP-compatible agent |\n| `happy resume <id>` | Resume a previous session |\n| `happy notify` | Send push notification to your devices |\n| `happy doctor` | Diagnostics & troubleshooting |\n\n---\n\n## Advanced\n\n### Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `HAPPY_SERVER_URL` | Custom server URL (default: `https://api.cluster-fluster.com`) |\n| `HAPPY_WEBAPP_URL` | Custom web app URL (default: `https://app.happy.engineering`) |\n| `HAPPY_HOME_DIR` | Custom home directory for Happy data (default: `~/.happy`) |\n| `HAPPY_DISABLE_CAFFEINATE` | Disable macOS sleep prevention |\n| `HAPPY_EXPERIMENTAL` | Enable experimental features |\n\n### Sandbox (experimental)\n\nHappy can run agents inside an OS-level sandbox to restrict file system and network access.\n\n```bash\nhappy sandbox configure\nhappy sandbox status\nhappy sandbox disable\n```\n\n### Building from source\n\n```bash\ngit clone https://github.com/slopus/happy\ncd happy-cli\nyarn install\nyarn workspace happy cli --help\n```\n\n## Requirements\n\n- Node.js >= 20.0.0\n- For Claude: `claude` CLI installed & logged in\n- For Codex: `codex` CLI installed & logged in\n- For agy: install the Antigravity CLI (`agy`) and log in\n- For Gemini (**deprecated** — use agy): `npm install -g @google/gemini-cli` + `happy connect gemini`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}