{"_id":"happy-next-cli","_rev":"51-c2df0998fd16b3192e3b7e860af28b78","name":"happy-next-cli","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.0":{"name":"happy-next-cli","version":"0.1.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"dc1f23e12acf404f02a625e545b0b3c8a13bf3b5","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.0.tgz","fileCount":65,"integrity":"sha512-lmJSRLSVdeFDXpp/Hc+h4zw3PUDqUosP3elXog1mlETggni/A/CVnQCSFr4/Hhhu8HyH0pNsWnEMLFCtJMt2KA==","signatures":[{"sig":"MEUCIGaXL9mArbQDIuwvMQ/SNJ0Kl1gYLyTh3jec/7WnU+7fAiEA5NfwhLTK3sz9z9C39MKmy1dUCgA1bOAMrLuEtnsU8sQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261680958},"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":"2457ab2a9fb736954a2c9988faf6426af7aa68dd","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.0_1772239180248_0.04454635841937371","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"happy-next-cli","version":"0.1.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"35a24649ad6afeda3bdd5312ee602f124e8ab5e9","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.1.tgz","fileCount":65,"integrity":"sha512-XxSAc1qr/P/gdqxKj4+aUM5o9/EgO/lddb06NxWvqQ6H9t3vX+ziFh56Mp7Kot2RYToLPHSTnSyLvig6rGX6Lw==","signatures":[{"sig":"MEMCIDPCVAHaBNBHadz5O8Kaoam8+8iHyqwKdsg4EQBQrBtDAh9vuF6Iykwn7j4J2Ij0w41VFzLFssjbwaGw0HXG23Jl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261680949},"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":"57b37459ee828295a80e168efef56bcff027db02","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.1_1772300579277_0.4560320020420945","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"happy-next-cli","version":"0.1.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a6ef825667be0b4e6e706ea25825d4e2c9290d77","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.2.tgz","fileCount":65,"integrity":"sha512-7TB4D4lKFf0E8FA+HIk0fb2VUh67buHKGy86LlQshKCkfhePlXNWruYH/SWPkGus90s27vq1qu8ixvHqfYxJMA==","signatures":[{"sig":"MEUCIARA3FNRfe4BFqFWsvbX0leP84h+OT6nmePpyDjXHRlTAiEA9zdqI7nR0CHIWTtRU/QXfcjfF+idFqxVA3ZYanFdjsY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261692021},"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":"e2486474880cdcd6d1d9afe62f0a62ecd69e023a","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.2_1772505261418_0.2844157536121319","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"happy-next-cli","version":"0.1.3","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"f4dd1588519fa3dfd200dbfd1858bc05ab100795","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.3.tgz","fileCount":65,"integrity":"sha512-k3S8E0LjFolVgUNAuKfAreLOkVuvmAMcSvU4E4sGQRIeuKmekycgLbwoyBAX5a0dWCbj0lV2g2/gjflFjZcO6A==","signatures":[{"sig":"MEQCIB7/dx6iulKyQ12+44bffegIhYNduOOAdPJFPaToLGNAAiBwPaN926XE+gXWASrLg8F+7/5DKvNyF0IkTo8FpGAcuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261699998},"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":"307ab4583acb126efe2bc4ec569710186c7500d4","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.3_1772509006176_0.40858843623641894","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"happy-next-cli","version":"0.1.4","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"d3b89d7b0db1b8010c07bbd4b0798aa3deb890f9","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.4.tgz","fileCount":65,"integrity":"sha512-RrHvZnadfpmM4IOc0fIJb0sXnHpHqx1bfnxuToFgB6oq3LESJgXE1NaigmnP/S3VMTmDs51vx3VZs4dciWUzsQ==","signatures":[{"sig":"MEQCIHArwMgZ+m7eTqiQcSYVXZeY3IVPBEafHZhMmgbhQ8m5AiAHIrGqU8dbUqwhHhXyH41II+fLDNScz5wZPMCGUwTbQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261716822},"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":"4a2b795e150fdd503ee3e99c022fd1db48870568","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.4_1772849272829_0.8265119246543347","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"happy-next-cli","version":"0.1.5","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"4d34b865e3d1df0c5ca461c3a71dedf37d8b43c4","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.5.tgz","fileCount":65,"integrity":"sha512-mNAoZ/ARt6lQO9fnUISJxLtBvqPafpNL/lmETN4HDr5PgeQbMnWSOisIupqZyC/MIvZATDvlldX58Py50t3CzA==","signatures":[{"sig":"MEUCIHFWE4WUh8L5KzmwI8DWewqFhSx6E3x2cULB1bcFtriRAiEA08MKp0m2p/JbXPOwdPGxPnlv3ntPZIHyff0CT8et1JY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261717168},"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":"8a2d1dd2f22a066700889b21b46ba695b856c4ad","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.5_1772888205192_0.14071921267381216","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"happy-next-cli","version":"0.1.6","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.6","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"da4b3286e90ff087e05eb6d1f9345e0c0296bf04","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.6.tgz","fileCount":65,"integrity":"sha512-D0WdkLbT0BX5ECbSx2sFY8i9BkVqBGW98wl0qOAuk2ogh4TTBqLMqmAaK+hv0wzSBGmbM1YdjDkd5Taep3CC2Q==","signatures":[{"sig":"MEUCIQDG91AFP55VpBUT70JRMJGiNIkvw324EJAWP7bMVtsJRgIgOPX/MWEjCcpV6o78C5nlhod/F05cPeB4ne7qcY7XJ3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261718328},"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":"6b7381d008d7a96f49494fc5aef78ca860f1f57c","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.6_1773017105860_0.5259087064287125","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"happy-next-cli","version":"0.1.7","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.7","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy","bugs":{"url":"https://github.com/hitosea/happy/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"7bc0ddd535aec891076b1a41410f07f23c910f65","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.7.tgz","fileCount":65,"integrity":"sha512-APBAddMe/BCOtcVIEOlitQs2/JeBTl8MsE2e4oWA4rxERBVAE2KX4utyo63IprQwem3r2mgNvZ52DiCVda8xMg==","signatures":[{"sig":"MEQCIDuABd8Z+19a0bGInVqBGc8nzmBIyOQPgTSMr634X6gAAiBRecgzNzDPNaOAuI0u4kzembsmxuUP7NERzfdPUtYk1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261789894},"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":"7ebe943dda4e1bca9be0c383e75c81b0940db3d6","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","happy-wire":"*","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@types/ps-list":"^6.2.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","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"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.7_1773616312137_0.028830531949747495","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"happy-next-cli","version":"0.1.8","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.8","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"38d6ce6b017c7fe3d5550a7992c6298ea8024670","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.8.tgz","fileCount":69,"integrity":"sha512-yZlPbpJcYQqeJm4hA4f4Y65j3V2UvRMsCmDRd5OZucqikXw7tGEymij1YdfezuNvyh/MaaY1yL8ajzD98HxMJg==","signatures":[{"sig":"MEYCIQDITu3xmyNp5GwI3TXCmMRbQqrIPVgxdQ9Eet4WDviJVgIhAJ2ldnl0xmE1scCZBP+2/bjUlhCe5g9+IHdmPp7wmPrO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261923425},"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":"1cc76e0d79b558165ee957ad3e7188d1eb0736c7","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.8_1773877523976_0.7049093620741929","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"happy-next-cli","version":"0.1.9","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.1.9","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"5c18e6aa96ad0669cb70bfa161dd8a7ab5792104","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.1.9.tgz","fileCount":69,"integrity":"sha512-+SaSNG/Q0bbj56hxmG+XS69n+KQmNY/0BSVu9JcdGw0YFAhr9cGZvYeiB8gPOtEn7UBl7xZ3b0VJvzWKyM/R7g==","signatures":[{"sig":"MEQCIH6h2nZ7eJA3ackZ7YbBAHAvrYuloWh3658cjtl+Eun7AiBNNiI0CcWNmnkZRpH8lX6DJpneS2M4K2sarpxbX2CIfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261923143},"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":"e7249543e06eb695906b2e0457c12140b9fe4619","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.1.9_1773886305806_0.779282907319385","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"happy-next-cli","version":"0.2.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b62a550da5b79146482ad40e4d4ecd3785db7ba9","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.0.tgz","fileCount":69,"integrity":"sha512-s/0mL45AMPYP4tnjFUb4S3AXo9Xx4gkE/+nBfP1QzeOTSu4g0Q3AbNYW4EssTT6Bm5+hI9195i5P3NkaqgPqCQ==","signatures":[{"sig":"MEYCIQCj0ZnuHqPevRGy7J/UF9cDXC7HvBMWkH8uzPqU4k0pTgIhAIJvsr4CxFLuyUL/hcpqrxTzADzNz3QWGD2xcf7BoqN7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261923570},"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":"97f74489a96c21ad674788ba075fecd20c2869aa","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.0_1773899045268_0.5050064475978691","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"happy-next-cli","version":"0.2.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"3de473879f237ca47ad66558faf34d9c68c0a7b6","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.1.tgz","fileCount":69,"integrity":"sha512-mA4VfLP74ijQTEBtJZbtyQuXNyvjc+WO6cjTKX35VetsUg8pySn6fIEna4pjiQtpHvQ4ufF0lIN3gJ7NsPCJkA==","signatures":[{"sig":"MEQCIGyygFv6YOdpbKm7yYMiW6mNdwIHCUQLLaW+Z81PAOEdAiBlzOLcbls8P7delOtN+bsaO+zgto4VE29syhMA/92eOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261934341},"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":"44481618e942b6343fa82aeb11ed9c11ebdd8e5b","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.1_1774190835096_0.5890543097900669","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"happy-next-cli","version":"0.2.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"cf3f92eca16c627cdb00b870ae049777b811b6a0","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.2.tgz","fileCount":69,"integrity":"sha512-0/xFDxnOrZ6yH5PwR/XwTutf/ilughxJBtDUZBl5s7Z9XKLXpOW/cxDflmRGOVwwTtwgB9WKyoGH83YphDyo7Q==","signatures":[{"sig":"MEYCIQDJiv9dbfaAtjv8sOMS/8IeR5RD0cGnipqM4Bl4FgCd9wIhAO9fjYd9Sq8SjCJH+OnppyFluehmfGJP0tFLnLbZjAFF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261943213},"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":"321f0003b9c855403caa34f88a443daee4158a55","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.2_1774360165183_0.03443655566331838","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"happy-next-cli","version":"0.2.3","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"7bfe7cb679e4aded2e9230dc46c344ed3a0ba3f1","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.3.tgz","fileCount":69,"integrity":"sha512-TPg12RgmjRxWXw93LEohauqsCzdbxB85dA1589+ZKKzeITdI0X3gpzMVVE1xNB0XXFCfxEXkpilmVhx3jxzEGA==","signatures":[{"sig":"MEUCIAux0Cfvvf83LdqTz1se6OmFKyODyLzmeknoINMcWuLLAiEA2I6oC30OuU3unUz6GtMjvYRbzUSggXAgf50U1blmj8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261944673},"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":"a578f018ded75742a48f6b50507eab8703f505c3","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.3_1774409364506_0.1541822382431124","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"happy-next-cli","version":"0.2.4","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"08b451bf3b0b5a27304538393df47f49313ad99b","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.4.tgz","fileCount":69,"integrity":"sha512-iQcRBzMz9jdQrn46MB87LhzSnup2yARNKCQOmhUS/RA5Mx7Ax325KOQ56eFAGBesnWPFAMxAucYZiuPxtyJkWw==","signatures":[{"sig":"MEQCIC4VlDuv+OQIReGJU8yLIkE2YuHs43BOyoTXWng+T95pAiA9koNnyzl8yJRQD6S03WD9Npp9kzerl/22TjHBEZoukQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261944657},"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":"ef48bc25e1f7a6264ef059b5dc88e65cb1d96544","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"24.12.0","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.4_1774589297297_0.07768642102650847","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"happy-next-cli","version":"0.2.5","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"2bb703e5885b235d409ac23e470a1cb6f2e74b20","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.5.tgz","fileCount":69,"integrity":"sha512-/Jm90MUQv4L1KbgnkUNCNxdSUJeDQhK4eP7qAZULoMuw6eedQ1XJpMlYAswzpN5CGeJ5R23vyyYIFurhxL8lfQ==","signatures":[{"sig":"MEUCIGV5Fjej6cUY+mTF5xwMRehmhFJT1yIR5vJRTgicgcYJAiEAn2Uew3yPwGOvltbPP1oLRCe6DiVPFuOiIieNQb8j2tI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261947366},"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":"bf6cc860f129515ab1532e4005ba0b6221f42a48","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.1","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.5_1774931932168_0.6806894909306973","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"happy-next-cli","version":"0.2.6","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.6","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b02a04c42c63b2aa1e1f758a868384767ead28bd","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.6.tgz","fileCount":69,"integrity":"sha512-L+Q1ChRvqZ4ZoIkChHdZFl1tmrUTk2nn9kKobbZC6htO+NruwdxssXbdq4hHNOmCQ6uBhri+gW3kTczpHKY1vw==","signatures":[{"sig":"MEYCIQDMZi/RLTvmay69AremlIWHyxlE8djZr7mCErZ8eL6j4QIhAKOrcCLDL+/1JsH71+akaKg8AZiluv4z0pEm7cTQRk4I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261949325},"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":"29ec2ff5d863e919235d628b0ec5bc9929a8aa03","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.6_1776333712055_0.22932068662111416","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"happy-next-cli","version":"0.2.7","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.7","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"1ee736063bb43fbcc52223a9f289a48eff8e1d08","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.7.tgz","fileCount":69,"integrity":"sha512-v1Tc7hyZ5RE/ivj7vyyRWBrm/e9eheppzwozTYttnixT7hGbH+XPo2+v6HsPS1J9uIZlk/UAMCz5i01WS0Fwcg==","signatures":[{"sig":"MEUCIBRdIkevB2qORL/QWalPvP/kUTkj4RgbWZo9u52xEFqhAiEAz3QuHllYhkGYFTFMDfccBDFI5zGHGSMSx6nvdUEIwSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261957963},"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":"caccff87fdf28bc63722dd1dcfcac00aef139b70","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.7_1776472385250_0.8569234668517276","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"happy-next-cli","version":"0.2.8","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.8","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"5f805e7b10931df22144696110203737005802f7","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.8.tgz","fileCount":69,"integrity":"sha512-VuVNoyvjAIW1i12fAu+SLaEhmNpiMSn5vqSicncVqaSB6DpDsD6ljL4uQ0bCgYC+WSgQV4dt4ZTozsHe04Plow==","signatures":[{"sig":"MEYCIQDWc4mjq5NSh0uzA4a7YOcyvTQXnlR0Jqhr2ZJ1Cf5NaAIhAJLSF2XxmcsRq3h39Qqhc2XHjqkhZEnDhJZuCKQDh0n2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261957963},"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":"98c99b5fa45d7a8134bd9d1c3cfa92200bebd8a7","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.8_1776476450391_0.6563764138110795","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"happy-next-cli","version":"0.2.9","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.2.9","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"389fb660bae708e5a0d0b0c68116a804d913817d","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.2.9.tgz","fileCount":69,"integrity":"sha512-ByZAhsbW/JQJnAHtSoCXtdZ/ybUQoZ2GegtLZaiCXBF8YXjVk9FDiBokk1NA7/imkBnsaUOHFsrrUd0Wrg7jvg==","signatures":[{"sig":"MEYCIQDqMY9qYMXl6XritsP02wM/toiTDhdJ4/hhfq7xe4FJqAIhALfnCcBnX2lWdAsoIwl8CsFscDgPIKw2h/83qv2h9N1j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261963519},"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":"b060810d29abafbcbd9d9f787ffcee9c43fe7e50","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.2.9_1776551023498_0.7106492463152909","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"happy-next-cli","version":"0.3.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"1d1e62daf745080aca1aee217d1b4b945a7938fc","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.0.tgz","fileCount":69,"integrity":"sha512-vUQHMBpLpXXC+H4yfytUgUFCqpRZc8TEp25xtHOXyg+pCJDmundH19QOdvpmkQHjMWcDBvwWa4BlZ7RvIVkp5Q==","signatures":[{"sig":"MEQCIF+bkXINANQ2iQzOnbdmSHQ6RYhip3ruam61zGdGeDvgAiBkgEbaw9AY9EH7r+cNLQO4NYPdgdNTiWldh06nLmpcew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261963993},"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":"d45b57ce4b09f2b31ce5f74bb25297c295eaff58","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.0_1776563256769_0.6112974044557344","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"happy-next-cli","version":"0.3.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"ae3186ce0dd13a909f856049de93247c95641c78","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.1.tgz","fileCount":69,"integrity":"sha512-WGjylrIhOeA1Df0o4si5JSqPdZPNLUiOl+dF8W1aDlbmiHl3eAnbKNFP0TtQ4KMSf0bwBA2PTiqmNbNq+ZxvpA==","signatures":[{"sig":"MEUCIQD+2RLz7Jh+RAu/EE3poOE+XAf7qavEg5zNjJjEctO72gIgcLdW++FdFSUJLFXNhfKMSurPWflnA0aG2CE8b6StirY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261964823},"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":"88786a731d95b3fa9535eaa311da55b4516240da","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.1_1777373039674_0.13883160567277364","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"happy-next-cli","version":"0.3.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a5b05b463f475129ba8476703b58a87de24fcbc1","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.2.tgz","fileCount":69,"integrity":"sha512-HvY+dBCocx5sX6eIPQ8MUwK1qKwqC1co6zzTGTyygnkmTDKLVArDIizoBfltO4gDsPW6/R0oPw0N1k6Fu/wxxg==","signatures":[{"sig":"MEUCIAZqfp7Fl6dapKl01un6XwTjDFvb2nMI/QURqfckzQKFAiEA8GjxDG0Z8c5cCTWLIEsDlFw0hw6fM0Ur9F7x5ZRiS3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261965523},"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":"cacc5004ff45fdf73632f683048d3cc64fbb0ad4","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.2_1777814222294_0.32549132036743833","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"happy-next-cli","version":"0.3.3","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"c8ad6faf282bee24ac484c815e770965bcd39667","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.3.tgz","fileCount":69,"integrity":"sha512-uzCIf1Oju+vHKZz+TLTW4kyuuw31VeFsgL6IfWSSkdZwGAWVJEMKMXzIMhyw5Nf/lz1An46yDvAMj36EEOD7hA==","signatures":[{"sig":"MEUCIQCLXL4HqzcMX+Siws15k+NRvCb8kxjCZuPzdIFuv8l0mgIgX6/E/1cEugVyJXxNeXPzfc6JVzATN3DkSawgKzVeGqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261965499},"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":"36defc01525fe8c585a92c7e4fff7a3af6ff8970","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.3_1778856512899_0.9235857977332416","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"happy-next-cli","version":"0.3.4","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"54eebe4c00d0e89113d8cc57e2766eff084f7e93","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.4.tgz","fileCount":69,"integrity":"sha512-GA+8Bt3iEleLHaTq9JtVR3KmFfMXmzPF6JELdYxhZ5Jf3xGANY/2pfRrJ6MBkZqax710wHqqD/BTzgirmsfeHg==","signatures":[{"sig":"MEQCID6sTtY8Xz4x4j1IOMFKPhfQsqc2JIDkbfSDOMjmnv58AiAbHdwN3Lg/lrij8+9lxlEaqIIfPAktpjtN9IKpNPvGtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261967541},"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":"0a95a77a4df0e4fb2e458172f7d0c1fd1c2de7b0","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.4_1779062293420_0.05117341096574801","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"happy-next-cli","version":"0.3.5","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.3.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"334baec2fff0a2b786836190c4e136c6c3650932","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.3.5.tgz","fileCount":69,"integrity":"sha512-PsTzt2L5RVt1v38UJEQeuMyHP2n/X9iU7At+qGFZUFAsDKfDxVbTPcEEfXr1emeMvzKiWJzas0sTfjdvLAM/CA==","signatures":[{"sig":"MEUCIQCbhH9nD+/3Cntob8Dr/R5guSXhKJHPT+zVQ3T9sO8HwgIgaAiXFz1VlTd7kqR/Xkt9cmsmE9f9rzo2I3O8hbNKLWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261967589},"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":"f4927d9aab14a54315d9003c128f43c6aaa24725","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.3.5_1779067594989_0.6287726347871492","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"happy-next-cli","version":"0.4.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.4.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"fc08d874608a835429e2101c2cee3614b3ee9301","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.4.0.tgz","fileCount":69,"integrity":"sha512-CdeYIRA2s+8ARUKn8OwYfDlG3E5JiWllPmbS1L35c41iwLYrgH7iVrOQUO0sGXKddgs9xgtQVwa89gyToqSaiA==","signatures":[{"sig":"MEUCIQDLViFM/zy9JtOLS0gvwEIV7rwPYtB2mM1HMSxInp7w2gIgSne3mdafQPoOwKF8Ehc+I7qOXWaSlhdU02hqSG5IgGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261982699},"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":"7e672c56d97182e6ff9b230cc3002b269389bb68","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.4.0_1779687529930_0.3045487247181027","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"happy-next-cli","version":"0.5.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a3aaa22a85158bd7e4dacd15cf09ccbc30369d3a","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.0.tgz","fileCount":69,"integrity":"sha512-pgrdtMkmgge9UUwgYRVsGz6v3fslyPLPBAiz0cGE/RFL0k6KTMLy5wRPdFPUo4eXHI06qsn0KzXep9M6FJ8RQg==","signatures":[{"sig":"MEUCIFwnpLuyjnzTIS8n8T7/12MjbOX/U3by+WfaKlM6cUu1AiEA/bYTLJHvNWLAxSM3Hy+AuLrp+MHpMH1Onl1+AkThG5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262012829},"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":"a84721c3e815f1aba5318e19ea035a13bd69d323","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.0_1779866806892_0.08026214143037791","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"happy-next-cli","version":"0.5.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"2cbc38ca075f9aed924bd19d5c04cd5f906c3f6a","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.1.tgz","fileCount":69,"integrity":"sha512-/W+sZE8p4ZuoW205G5SYY47zH+n4F2n2bx4K6xISxjg1azkXq69Fk1hX4MWn7OlnnsEvbo9T2OERjN4EdatGQA==","signatures":[{"sig":"MEYCIQCYlAlzL4WwqCqpuWC+jaqK0ytTGDhinMkZr2SIJW6fBQIhANdi1V2Run1JjVwDj3N3NMif5eP/C1ccU5Bora3COxhT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262012945},"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":"9edbddb9d73432c5d5fa1a1e684e537fd146e00e","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.1_1779875465391_0.1292781247557444","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"happy-next-cli","version":"0.5.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"f3d5a6d030961ab33b7b04306ee450d7d7ab8699","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.2.tgz","fileCount":69,"integrity":"sha512-db05gffQ8FxMj7GsCaezz2JSRQEeQ/DvnrvvUOtke8t1hGAnW3wmh9bExL9EyYh5RGtjlf+o5ezqT0GH0zJ8lA==","signatures":[{"sig":"MEYCIQCMW0nhH1Wy+MY3g088+OgvV4RJURM3RXURima5sfXRfQIhAI28S3HwGBUjnmv6hbW39SWj2cytht2RBllZtHyGu1Il","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262019737},"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":"e1161fc723bfe6962918c7b40994fef55c8dc868","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.2_1780113852315_0.22149187204407617","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"happy-next-cli","version":"0.5.3","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"7bb845b60a9e804c07c3209ae3fb0fee286addb8","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.3.tgz","fileCount":69,"integrity":"sha512-rZHxh+kNo/08yvgn7XH+Fv5EDahV6I6Zq1nP5nRy71i5H41FO1RnxPKE/Ljxgc2OwpfSDemZeGnkZfoHdxoQBQ==","signatures":[{"sig":"MEUCIDDjXWPX4+C6dtJnVSmJtKQ6/OiR95664edkL2qw+AQXAiEA+QuQTm6FsMVQoVqTa4ik5FS/zassCZfDFueLMIHaXTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262021183},"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":"45b35e92ca7c8adcf70a31e3a408add1b8bb9576","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.3_1780845301227_0.19662204280301498","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"happy-next-cli","version":"0.5.4","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"45fcb015914224afb8032e1e8dd109db628f9a55","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.4.tgz","fileCount":69,"integrity":"sha512-3VpgIcihY4DM5RsYBydaPlz8w86RPf5kMj4xpuUT4SKrRmsDnkIV1vmGCJDe5j60inYA346zNk2NZiyH+6X9OA==","signatures":[{"sig":"MEYCIQDZRPecdZI0oNJPmt0TRAL9sdFZInpr1AyhxW2y1idnZwIhALfd9FEvjnYMwoC5ezlFIWxt7ZQ/jbC2fZwhd6IMBxBo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262023349},"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":"cd7363202e18f3246aee84bebc239e0e1c4a1f8f","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.4_1780917167046_0.6458340489958361","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"happy-next-cli","version":"0.5.5","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"94b5dba6117a1d10c0ef408795e7dd3ed58a70dd","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.5.tgz","fileCount":69,"integrity":"sha512-+/EpgYB/KBKjOY7n+hpamKGlzS6kd1Uu1uGDP2mXgKpaOMUCc2O9w3N5HD7eCbZFJnOIwaMcszfOP68OdhED/Q==","signatures":[{"sig":"MEUCICY0oa7gPRYtee7Fb0nzPxDdpN3fmZfHiK05AUb5EBNmAiEA0a1zwJGSColLM1y7ib96MDuajCbj3lrqXxq6mhM0P0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262028811},"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":"75c07d77b57349481bbec7cc063289e9d4cc2dc2","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.5_1781775566931_0.012121423011620003","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"happy-next-cli","version":"0.5.6","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.6","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"cb3808fe020e4955cb75cd2c4ac258fee8d2f24f","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.6.tgz","fileCount":69,"integrity":"sha512-9eE6rjLFISYj+mPjPTRqvnrn0Ieu4H+8B0kudq1KvbX2EiuPIdYnWWF9dHhqgQpURkLlzEpdtTc8hQvM++K5nA==","signatures":[{"sig":"MEYCIQDpvpeupMtldVZeq3wVIflgld0OEdHMuVTsJzHEytkq2wIhANNb1LQybrStCajj5PRoOZFhnwvZxfnuolNNx7lI94CY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262044609},"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":"d41c8e1067cb8ac707c12ff17d5f22b4da393acf","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.6_1782468380623_0.9737187061989871","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"happy-next-cli","version":"0.5.7","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.5.7","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"626d28ed1c8c93c59caad7f9b9e98c6745bd3df7","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.5.7.tgz","fileCount":69,"integrity":"sha512-PH3Ey+7RJ4SMfrFskRQ52htq3Npf8dqCTfTd5xkQR6ic0uTKIs7zq9omjIVLin4TiDJlK/8fPp8VybNQK7cvQw==","signatures":[{"sig":"MEYCIQD7O6tIMC0yEtL0Zwdms6zgomZR8JNLUPH+0pESm+9BrQIhAJNILiMV1+NiIW+nWOfelDlTxoVQnTLujpJUZ7YrO5Fe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262048011},"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":"a7b13e53acd8c10b6acbceb87c1c2e3ee5107535","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.5.7_1782717611531_0.04336379603237961","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"happy-next-cli","version":"0.6.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"37c788a26c9d12d62e6218eb55cc2991743a8178","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.0.tgz","fileCount":69,"integrity":"sha512-FXTb94CsIBCvq9+NTu47g0qNeGoQ/hH8YMqJzaR5UtP+S8KsmYkHaJ6pIC9Cs9eWesFdKTsh81C8D8bl5JzfPA==","signatures":[{"sig":"MEUCIQCrZ9s8T+Cqjq4kGr6ERToanSFfI/Fzo3kFoYp6S2dKzwIgDfKxbAJaLRL9y0c64Q7SnkVQWh6IWdkGSy5r4PfX9HA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262076005},"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":"97c84aa5bc82ad479c4187d7ff66cd0ca639ad7f","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.0_1783293177978_0.18503808591508042","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"happy-next-cli","version":"0.6.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"c86047dddbf7af1c24078a3261c0325aec3014b6","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.1.tgz","fileCount":69,"integrity":"sha512-u1kOB4ESpHSsmus7e+3rAFyo598k+G/VlBubER5df4vLTGD5jBdR7DHgYEtdhD632Ut2Xz4kv6XiqybhEKV6wg==","signatures":[{"sig":"MEQCIHA2CZ+cR3VkfBXJ2R3bIahc9gmaRlCqyHHBZ6ARonFVAiBw9GlNczAG52+mRiM9/FRVEbbRJ/L//WSx+X1ian376w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262079215},"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":"448a75867e92cfed6597ace871a68bfaee34306c","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.1_1783695769924_0.9848074202149528","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"happy-next-cli","version":"0.6.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"d79b69f102b3ef9f4859bd49d284aca4db22e55a","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.2.tgz","fileCount":69,"integrity":"sha512-bXBgtWLMsjS1aHHPTqQNPp3BxJpKKtx+bKc33l/N7IJ8xEmJrSAJjz24TRbH6QLTzJHFrOe757kIQQLcLw5OGA==","signatures":[{"sig":"MEYCIQCvqU99yGOHEEpCuLwjtUnjpGzy20wCCrgbU/c7IFTlgAIhAOMsQr75VkRq0Y/tq7K7Kzjy/dlgEj+HtMXdRB7v+oC/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262080247},"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":"cc92fc8faafb0ea8e3c85d75bbbb235bdf1a5cd4","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.2_1783856172817_0.26849724280568865","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"happy-next-cli","version":"0.6.3","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a742dc54cc00e1f6db49735d4cfc0e903af4f15b","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.3.tgz","fileCount":69,"integrity":"sha512-bZfZM5TzVpsXHso5UsrkTF7ChG3isKNwgfVSy0fhDLlPDTtIcPppwutRZKszmKjNcVzOlQ5hMIsRxvDzeOX5rQ==","signatures":[{"sig":"MEUCIQDVeE8U5KrjbrKF/EO0PjN9sIrROaKwlMlG45eNDD0NHQIgUgUU5mGhzkAf8dM5AItiOqlJOOcb3rnyMt9DnrNTLKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262097589},"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":"46bb8e818b7370ab7ea5d97bb63cc316d35fca9e","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.3_1783911504243_0.4417573515739679","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"happy-next-cli","version":"0.6.4","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"f5335f44f0f7640170609c88a763352c2902c016","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.4.tgz","fileCount":71,"integrity":"sha512-09N7cxovaImIVxxSmpiUYJ/6GDBNqi0HtqHsOggPkWhSzSJYq67YO5e//2Ep19VlT89oSxD4xjr4BgDC+PGyog==","signatures":[{"sig":"MEUCIQCOBWey8FUl/g1iUFnwGAHEMBnFXHXAH+v8raIRfGPOVAIgTaasAsFYgrKorbeBesBi83Sm5XJ6OY9YWa97p8QQgkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262102816},"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":"4aaa8ce7073e600ce90caedbdb70a96c3c895820","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.4_1784715628099_0.6852022431184646","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"happy-next-cli","version":"0.6.5","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"74800d1a13c53e3db2d1a849cbfd1e8554a6c48a","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.5.tgz","fileCount":71,"integrity":"sha512-mD8od3rd6prGmR3SyLgGeqwaEL5Wf7nKuEhbhTsblysfSYrO2BnAw0HHMyrkWQif0rkK2B3HAn8lE51Biv0enA==","signatures":[{"sig":"MEQCIENQIJyx5s5LwfSFNnqIwXUeXOJ3+OvvBOvhdgm4vBJ4AiBI6lVIInN6FqFUOphLL3YFDhI52ld2KvtqQkUDwxzJZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262119591},"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":"55b5e3e665b3179c048c3e804ebe6f7d82d32a39","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.5_1785075409585_0.9588886435021269","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"happy-next-cli","version":"0.6.6","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.6","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a9fa3c7d039ac996296af2488a57782a16ddb173","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.6.tgz","fileCount":71,"integrity":"sha512-ngBEEpnMnATTXwRgTeSXwY1jWiP33Al7biJ5UiePFYV0But12DMTxF/qBrA874HO4aOqs+xRX8OTsHmv6o85Nw==","signatures":[{"sig":"MEUCIEFJwRrmKQTF4voXtJG4iQIT01msPdquxuMzuGEddPtGAiEAvbPoR8GscLntTzIVGjs8TymzQh7ENXagYbTUSPb//+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262123485},"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":"1e0e1a626358c5b6616ac89e16d61505a45f4602","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.6_1785390179507_0.33587076762895296","host":"s3://npm-registry-packages-npm-production"}},"0.6.7":{"name":"happy-next-cli","version":"0.6.7","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.7","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"3eb6f31b44d229d3d6fcc3bf8e2019eb7c479808","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.7.tgz","fileCount":71,"integrity":"sha512-Pcc3Udgv7KIyYEH1nqHlbHt10L+Nag61bepATIMorS8nheC435+A3wE+8LerOyACw0ur2VS99/G9C7wDLIHLiw==","signatures":[{"sig":"MEUCIQCIo85pY4L4ERjWbtzq7mzXJ4vLKnT+wdADI+85WGIHpQIgCmMamBJzPf6xmOATnDc3lNi2XkH4ZuvksguSgOMFNWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262134697},"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":"599547cc15573e76b96081a45fc3b2fff2edefe9","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.7_1788492818261_0.17558756419886357","host":"s3://npm-registry-packages-npm-production"}},"0.6.8":{"name":"happy-next-cli","version":"0.6.8","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.8","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"39345e7d2e17da9c5878f30650e8a0fce40ae4e2","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.8.tgz","fileCount":71,"integrity":"sha512-kjwvtaeT7MWnCYdhEkMI9pdsySgj6NVVTljd+vuB82+QPX1TFgx72WnKSLaUMxd1LjWAnmANQJT1gvkDWxetxw==","signatures":[{"sig":"MEQCIBycjBs2V4uVOc36vRWr8m00Xma54DThZYqqeKXO6m/DAiB5airS1hbjRyP7OkqA4+U1oV26+8Peofs5DgYpR3mqJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262136830},"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":"7909c24fd968a6e67b5d40ed53261ec115f4c2cf","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.8_1788684061647_0.5754413933069731","host":"s3://npm-registry-packages-npm-production"}},"0.6.9":{"name":"happy-next-cli","version":"0.6.9","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.6.9","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"36aed3a2d19dcfaf875b4b37846df0ff99258604","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.6.9.tgz","fileCount":69,"integrity":"sha512-FJvFWPKJgi4lQ1rWP48wFOG5O37E0OyN0CjsHWg3CmQYfL1w9EumfXNImBIZEtC/Sns8e39Er7n48VjBmZFbPw==","signatures":[{"sig":"MEUCIQDRfLzXk89k/XSPrzyVJwLXJ9nNpXMP4K7OzGCYajQFpgIgPRWTdc76s2jCdSlW3pG0H06jLK+Wu22UyE/GkjKTFSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262146778},"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":"7d42e38ef000a046b56464196c025495dc14a489","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.6.9_1788751377389_0.15989892216273205","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"happy-next-cli","version":"0.7.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.7.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"50691b841a4e2d209d8a55cefa84138728b3184c","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.7.0.tgz","fileCount":71,"integrity":"sha512-zDS+vzbsQWgvYHDWvjRSz0ZbYium6sSyFTdO43d07DiuKIDwL+XO1dpHKAqrWn9o6Y4kbSXK3hpCUCwjaS8n2A==","signatures":[{"sig":"MEUCIDmUBqGRRoBk6eaQpOO/1FNTW2DeOqQVU6rl/k87Qjr3AiEA5jJG5EFuz3ejYAAOEvNZAgL2ooEYSZN7wBuejYHyBXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262216249},"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":"568771060c5a1999d789955cdc2fa54951425d53","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.7.0_1788924928806_0.2952714322555212","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"happy-next-cli","version":"0.8.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.8.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"f81ba68050f4f7f2c3fa6a2d29d1adf89cc88412","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.8.0.tgz","fileCount":71,"integrity":"sha512-4WuEwRd5bOYcE31HfWDx0BAM5Y3PO4mJ1ENyXZJpqLN56NGohpmFc/YoEd25QLBzqLYaxNPqO7roDBjqfFCy2A==","signatures":[{"sig":"MEUCIQD2c5XK8TVbDQWdmG08+rcblgX1iR5l4tD7UQFdgE9m4wIgWHclmPwPWin0NughY9QshLug9DS80gAP74YZ2gPvFjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262257959},"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":"2131aed3ec0075df5155ac21b080ec98e5f59d9a","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.8.0_1789125278401_0.7598452744559605","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"happy-next-cli","version":"0.9.0","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.9.0","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"747c29788acbaed1a228ec690dcb33160cd33e73","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.9.0.tgz","fileCount":71,"integrity":"sha512-/PYLprkxUaIhZTlTXJYmZPrMlRUFlsM/H6DTUPqjNq3/1tTMAwcROP4qpfV8M5gpiHNe/aQiv8d7uc6AGHjpRA==","signatures":[{"sig":"MEQCICBB3SBe6HsApE7yUpCM96tbeDXlz2Ta3KGAXm5t5+TXAiA7XNghS4r6cOXgg63deXt9X+f15sYyFTzN/BrnlSkX6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDlQ87r+My5cP+BcclY1QZHadozedHZk5R49rFOjr+xDgIgCa30zYumZjw5EqGHgKbGrir/u/2yYdfxjLwMMr54VEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262273269},"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":"36fb75219ff3bf2c70ab287f02d8170128a18917","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.9.0_1789733324466_0.9078522122569699","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"happy-next-cli","version":"0.9.1","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.9.1","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"ad6ae632d181be892205f5e3ae74b0f704962257","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.9.1.tgz","fileCount":79,"integrity":"sha512-bXEeJCs52uFkHJ7eHfxJsU/vnElKxerPi1dMux5jf/mVeNxHAyExU4uUkpQn5hShDUSjUx++qFO5FIHEJJ8LXA==","signatures":[{"sig":"MEUCIQD5tCu1tComh+sG0TOiMkqf/47d6/FoL6QvfK6vsZA6uQIgC6iQHznrMWxxwjuS03C2DML+FgYzc1aqleVgYxfvLVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFAEkvAbJhoN49198EWCkyc2+OArhgz+Q5YSbADeBmzOAiEAr/3TDlx9q5bkQNH712dz7U8XjcvQHrsAZ5gATNUlVYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262366160},"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"}},"./modules/terminal/terminalWorkerProcess":{"import":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.mts","default":"./dist/modules/terminal/terminalWorkerProcess.mjs"},"require":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.cts","default":"./dist/modules/terminal/terminalWorkerProcess.cjs"}}},"gitHead":"959f25c12e6f9abb323d711bb1fd8cee76942d15","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","node-pty":"1.2.0-beta.15","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@xterm/headless":"6.1.0-beta.213","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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.9.1_1790000915666_0.11069132526500458","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"happy-next-cli","version":"0.9.2","author":{"name":"Hitosea"},"license":"MIT","_id":"happy-next-cli@0.9.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/hitosea/happy-next","bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"5ec5c8fdad2ee2a87cee6e0f871ba76184da2b57","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.9.2.tgz","fileCount":79,"integrity":"sha512-+zk6cYmrTqBkWy3JMPHHRsFN4H5rDuo7kkWpXziBfw5rA4W4B5lwxMKTNikPSYVDLI1Zdax4ySv9sbxHKqFCTg==","signatures":[{"sig":"MEUCICmrGfmQFFEZ2CjHHW9o2aa3fXpdhVeYznim72wA+mNPAiEAzX5lHYutVyBi0LO6QqMFcGTRr4GLyujuL3jRhIRd174=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHqvKLEloO7X0qhN0pm9y/wBkpOgxhBb0CvjdEEMqyGUAiB+71h5lIpT7H3eZb2o3OjlzhUufWBCMotP7bD9Et121Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262374693},"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"}},"./modules/terminal/terminalWorkerProcess":{"import":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.mts","default":"./dist/modules/terminal/terminalWorkerProcess.mjs"},"require":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.cts","default":"./dist/modules/terminal/terminalWorkerProcess.cjs"}}},"gitHead":"ea63e35a7f3da945f0059c9c14fa5244a19ac0d5","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","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","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","node-pty":"1.2.0-beta.15","@types/ws":"^8.18.1","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@xterm/headless":"6.1.0-beta.213","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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-next-cli_0.9.2_1790095302536_0.020217079597073306","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"_id":"happy-next-cli@0.10.0","bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"dist":{"shasum":"73e04e56c4a677068dc5ea14de88fe201ecf9187","tarball":"https://registry.npmjs.org/happy-next-cli/-/happy-next-cli-0.10.0.tgz","fileCount":79,"integrity":"sha512-oZnj0gqM0yy/hHMNZtf4LUo9aDHuIOeHf7bBmvvdqQgZ3MWZmjbsIVPF0NQlSwGTstxNCZGXdt3fTd9GwITjXg==","signatures":[{"sig":"MEQCIAgChLuPVFB23sDZ1yAUFaVWGNDSLCWCz0fkeATEnL73AiAqwtVSk1Nq96JH2ulIQRqWmWwyQOLzJrPjhSqshfuc0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA2/5zOtx3FxP37UuSm9OYtgAel8CrfeEjZyDuFtjvdHAiBIQDW4Vjpp1IvgGsN2v/wr/scATjD/sG58cnfyEr4gRQ=="}],"unpackedSize":262359992},"main":"./dist/index.cjs","name":"happy-next-cli","type":"module","types":"./dist/index.d.cts","author":{"name":"Hitosea"},"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"}},"./modules/terminal/terminalWorkerProcess":{"import":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.mts","default":"./dist/modules/terminal/terminalWorkerProcess.mjs"},"require":{"types":"./dist/modules/terminal/terminalWorkerProcess.d.cts","default":"./dist/modules/terminal/terminalWorkerProcess.cjs"}}},"gitHead":"7f15e2bb0ed62a137d272fc3b11aeaa9f04dec4e","license":"MIT","scripts":{"dev":"tsx src/index.ts","test":"$npm_execpath run build && vitest run","build":"shx rm -rf dist && npx tsc --noEmit && pkgroll","start":"$npm_execpath run build && node ./bin/happy.mjs","doctor":"node scripts/env-wrapper.cjs stable doctor","stable":"node scripts/env-wrapper.cjs stable","release":"$npm_execpath install && release-it","dev:auth":"node scripts/env-wrapper.cjs dev auth","link:dev":"node scripts/link-dev.cjs","setup:dev":"node scripts/setup-dev.cjs","typecheck":"tsc --noEmit","unlink:dev":"node scripts/link-dev.cjs unlink","dev:variant":"node scripts/env-wrapper.cjs dev","postinstall":"node scripts/unpack-tools.cjs","stable:auth":"node scripts/env-wrapper.cjs stable auth","prepublishOnly":"$npm_execpath run build && $npm_execpath test","dev:daemon:stop":"node scripts/env-wrapper.cjs dev daemon stop","dev:daemon:start":"node scripts/env-wrapper.cjs dev daemon start","dev:local-server":"$npm_execpath run build && tsx --env-file .env.dev-local-server src/index.ts","test:integration":"$npm_execpath run build && vitest run --config vitest.integration.config.ts","dev:daemon:status":"node scripts/env-wrapper.cjs dev daemon status","// ==== Setup ====":"","stable:daemon:stop":"node scripts/env-wrapper.cjs stable daemon stop","stable:daemon:start":"node scripts/env-wrapper.cjs stable daemon start","stable:daemon:status":"node scripts/env-wrapper.cjs stable daemon status","dev:integration-test-env":"$npm_execpath run build && tsx --env-file .env.integration-test src/index.ts","// ==== Development Linking ====":"","// ==== Dev/Stable Variant Management ====":"","// ==== Stable Version Quick Commands ====":"","// ==== Development Version Quick Commands ====":"","why do we need to build before running tests / dev?":"We need the binary to be built so we run daemon commands which directly run the binary - we don't want them to go out of sync or have custom spawn logic depending how we started happy"},"version":"0.10.0","_npmUser":{"name":"kuaifan","email":"aipaw@live.cn"},"homepage":"https://github.com/hitosea/happy-next","repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"_npmVersion":"10.8.2","description":"Mobile and Web client for Claude Code, Codex, and Gemini","directories":{},"maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"resolutions":{"parse-path":"7.0.3","whatwg-url":"14.2.0","@types/parse-path":"7.0.3"},"_nodeVersion":"20.20.2","dependencies":{"ai":"^5.0.107","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"3.25.76","open":"^10.2.0","yaml":"^2.4.2","axios":"^1.13.2","chalk":"^5.6.2","react":"^19.2.0","fastify":"^5.6.2","ps-list":"^8.1.1","node-pty":"1.2.0-beta.15","tweetnacl":"^1.0.3","@types/tmp":"^0.2.6","http-proxy":"^1.18.1","cross-spawn":"^7.0.6","@types/react":"^19.2.7","@stablelib/hex":"^2.0.1","@xterm/headless":"6.1.0-beta.213","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":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","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","cross-env":"^10.1.0","happy-wire":"*","release-it":"^19.0.6","typescript":"5.9.3","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/happy-next-cli_0.10.0_1790724194365_0.6172582354703862"}}},"time":{"created":"2026-02-28T00:39:40.247Z","modified":"2026-09-29T23:23:16.120Z","0.1.0":"2026-02-28T00:39:43.364Z","0.1.1":"2026-02-28T17:43:02.462Z","0.1.2":"2026-03-03T02:34:24.605Z","0.1.3":"2026-03-03T03:36:52.739Z","0.1.4":"2026-03-07T02:07:56.034Z","0.1.5":"2026-03-07T12:56:48.257Z","0.1.6":"2026-03-09T00:45:09.052Z","0.1.7":"2026-03-15T23:11:55.272Z","0.1.8":"2026-03-18T23:45:27.161Z","0.1.9":"2026-03-19T02:11:48.957Z","0.2.0":"2026-03-19T05:44:08.508Z","0.2.1":"2026-03-22T14:47:18.218Z","0.2.2":"2026-03-24T13:49:28.329Z","0.2.3":"2026-03-25T03:29:27.699Z","0.2.4":"2026-03-27T05:28:20.350Z","0.2.5":"2026-03-31T04:38:55.848Z","0.2.6":"2026-04-16T10:01:55.139Z","0.2.7":"2026-04-18T00:33:08.590Z","0.2.8":"2026-04-18T01:40:53.792Z","0.2.9":"2026-04-18T22:23:46.627Z","0.3.0":"2026-04-19T01:47:40.229Z","0.3.1":"2026-04-28T10:44:02.729Z","0.3.2":"2026-05-03T13:17:05.372Z","0.3.3":"2026-05-15T14:48:36.003Z","0.3.4":"2026-05-17T23:58:16.445Z","0.3.5":"2026-05-18T01:26:38.100Z","0.4.0":"2026-05-25T05:38:51.598Z","0.5.0":"2026-05-27T07:26:48.551Z","0.5.1":"2026-05-27T09:51:07.053Z","0.5.2":"2026-05-30T04:04:14.031Z","0.5.3":"2026-06-07T15:15:02.927Z","0.5.4":"2026-06-08T11:12:48.744Z","0.5.5":"2026-06-18T09:39:28.607Z","0.5.6":"2026-06-26T10:06:22.285Z","0.5.7":"2026-06-29T07:20:13.182Z","0.6.0":"2026-07-05T23:12:59.649Z","0.6.1":"2026-07-10T15:02:51.605Z","0.6.2":"2026-07-12T11:36:14.974Z","0.6.3":"2026-07-13T02:58:25.915Z","0.6.4":"2026-07-22T10:20:29.854Z","0.6.5":"2026-07-26T14:16:51.242Z","0.6.6":"2026-07-30T05:43:01.606Z","0.6.7":"2026-09-04T03:33:39.909Z","0.6.8":"2026-09-06T08:41:03.348Z","0.6.9":"2026-09-07T03:22:59.033Z","0.7.0":"2026-09-09T03:35:30.437Z","0.8.0":"2026-09-11T11:14:40.069Z","0.9.0":"2026-09-18T12:08:46.045Z","0.9.1":"2026-09-21T14:28:37.999Z","0.9.2":"2026-09-22T16:41:44.303Z","0.10.0":"2026-09-29T23:23:15.956Z"},"bugs":{"url":"https://github.com/hitosea/happy-next/issues"},"author":{"name":"Hitosea"},"license":"MIT","homepage":"https://github.com/hitosea/happy-next","repository":{"url":"git+https://github.com/hitosea/happy-next.git","type":"git"},"description":"Mobile and Web client for Claude Code, Codex, and Gemini","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"readme":"# Happy Next\n\nCode on the go — control AI coding agents from your mobile device.\n\nFree. Open source. Code anywhere.\n\n## Installation\n\n```bash\nnpm i -g happy-next-cli\n```\n\n## Usage\n\n### Claude (default)\n\n```bash\nhappy\n```\n\nThis will:\n1. Start a Claude Code session\n2. Display a QR code to connect from your mobile device\n3. Allow real-time session sharing between Claude Code and your mobile app\n\n### Gemini\n\n```bash\nhappy gemini\n```\n\nStart a Gemini CLI session with remote control capabilities.\n\n**First time setup:**\n```bash\n# Authenticate with Google\nhappy connect gemini\n```\n\n## Commands\n\n### Main Commands\n\n- `happy` – Start Claude Code session (default)\n- `happy claude [args]` – Start Claude with explicit positional arguments\n- `happy -- <args>` – Pass positional arguments directly to Claude\n- `happy gemini` – Start Gemini CLI session\n- `happy codex` – Start Codex mode\n\n### Utility Commands\n\n- `happy auth` – Manage authentication\n- `happy connect` – Store AI vendor API keys in Happy Next cloud\n- `happy notify` – Send a push notification to your devices\n- `happy daemon` – Manage background service\n- `happy doctor` – System diagnostics & troubleshooting\n\n### Connect Subcommands\n\n```bash\nhappy connect gemini     # Authenticate with Google for Gemini\nhappy connect claude     # Authenticate with Anthropic\nhappy connect codex      # Authenticate with OpenAI\nhappy connect status     # Show connection status for all vendors\n```\n\n### Gemini Subcommands\n\n```bash\nhappy gemini                      # Start Gemini session\nhappy gemini model set <model>    # Set default model\nhappy gemini model get            # Show current model\nhappy gemini project set <id>     # Set Google Cloud Project ID (for Workspace accounts)\nhappy gemini project get          # Show current Google Cloud Project ID\n```\n\n**Available models:** `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite`\n\n## Options\n\n### Claude Options\n\n- `-m, --model <model>` - Claude model to use (default: sonnet)\n- `-p, --permission-mode <mode>` - Permission mode: auto, default, or plan\n- `--claude-env KEY=VALUE` - Set environment variable for Claude Code\n- `--claude-arg ARG` - Pass additional argument to Claude CLI\n\n### Global Options\n\n- `-h, --help` - Show help\n- `-v, --version` - Show version\n\n## Environment Variables\n\n### Happy Configuration\n\n- `HAPPY_SERVER_URL` - Custom server URL (default: https://api.happy-next.com)\n- `HAPPY_WEBAPP_URL` - Custom web app URL (default: https://app.happy-next.com)\n- `HAPPY_HOME_DIR` - Custom home directory for Happy Next data (default: ~/.happy-next)\n- `HAPPY_DISABLE_CAFFEINATE` - Disable macOS sleep prevention (set to `true`, `1`, or `yes`)\n- `HAPPY_EXPERIMENTAL` - Enable experimental features (set to `true`, `1`, or `yes`)\n\n### Gemini Configuration\n\n- `GEMINI_MODEL` - Override default Gemini model\n- `GOOGLE_CLOUD_PROJECT` - Google Cloud Project ID (required for Workspace accounts)\n\n## Gemini Authentication\n\n### Personal Google Account\n\nPersonal Gmail accounts work out of the box:\n\n```bash\nhappy connect gemini\nhappy gemini\n```\n\n### Google Workspace Account\n\nGoogle Workspace (organization) accounts require a Google Cloud Project:\n\n1. Create a project in [Google Cloud Console](https://console.cloud.google.com/)\n2. Enable the Gemini API\n3. Set the project ID:\n\n```bash\nhappy gemini project set your-project-id\n```\n\nOr use environment variable:\n```bash\nGOOGLE_CLOUD_PROJECT=your-project-id happy gemini\n```\n\n**Guide:** https://goo.gle/gemini-cli-auth-docs#workspace-gca\n\n## Contributing\n\nInterested in contributing? See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## Requirements\n\n- Node.js >= 20.0.0\n\n### For Claude\n\n- Claude CLI installed & logged in (`claude` command available in PATH)\n\n### For Gemini\n\n- Gemini CLI installed (`npm install -g @google/gemini-cli`)\n- Google account authenticated via `happy connect gemini`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}