{"_id":"happy-code-cli","_rev":"42-503977dfd2c12925b653d4d7ace49a3b","name":"happy-code-cli","dist-tags":{"latest":"0.14.0-dev.19","dev":"0.14.0-dev.19"},"versions":{"0.14.0-dev.2":{"name":"happy-code-cli","version":"0.14.0-dev.2","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.2","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"60c4bc7934d83ebd8b46dd7e159741cee41fa28b","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.2.tgz","fileCount":62,"integrity":"sha512-4WVXc5KNTGqM8koCFcFyEqua6FN1K+bY8WyO7nKqq4zzLvqHk3nbqkV5MCLGZ07Uck3kqJA54lpFNbgNVaQJHw==","signatures":[{"sig":"MEUCIAF2UheXrbYdqUsEpV+L+bljKY1dT9CAseQaSOFzzLmIAiEAnumwRjdqbURYAkuTbrshOEWRVMIJo8kMIfcKRoFfPzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249395665},"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":"727e3891455cefa637cb6b42d964bf7728db0cf4","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^3.23.8","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","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.2_1769382749456_0.1828185283550976","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.3":{"name":"happy-code-cli","version":"0.14.0-dev.3","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.3","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a57ee3e0bf41ada57e5fb8747f1c7c7c44498cac","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.3.tgz","fileCount":62,"integrity":"sha512-+kLvb8NaPWuYzHRcMlMNlNfMfX9/Yw6nDpM74dtjJ893sn7MMx8II9Nh1TQisPBgDlTcdanrElU/XmQyFWqbrg==","signatures":[{"sig":"MEYCIQDquPTHNJZtsr+POjXb9Ep1MOswWazwW1B0OmlEl3hjZgIhAIvHOhdv3fO/vaDQUHYC9UjUog8BBbeqIhGqLeYrGKyB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249399875},"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":"1d91b65eb7f6f5053e8b634ebf4f893b89a0ad9b","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^3.23.8","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","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.3_1769438912764_0.9866418621701938","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.4":{"name":"happy-code-cli","version":"0.14.0-dev.4","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.4","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"8ff3b452bec6bc2e1a2f8614e475c8a294158396","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.4.tgz","fileCount":62,"integrity":"sha512-kBnHG3E4BHii0nsQlmLWol82GG/lBG8I61tzjDpnv5O8lkg4ffQisEYyIlTD9n6oDk7e2WRqN8WKEntDIG+w1Q==","signatures":[{"sig":"MEUCIEfhV+YpLMnuzdlkT+g3nWjN+Zm+sbkboUp26RJFzzWvAiEA5R1YMRksR/zyHLEhVwvDv5wfV4c2prDj5cNWJrNZ6oo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249399891},"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":"38f38c1420faa7a76bbe69626bf5f73b009dd1c2","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^3.23.8","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","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.4_1769458861625_0.004922434566689615","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.5":{"name":"happy-code-cli","version":"0.14.0-dev.5","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.5","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"44e060319e2f5a9efd22696a0213c7ec685efd81","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.5.tgz","fileCount":62,"integrity":"sha512-6BlntJULXYbCzuSvzf5mJfxFNzm916ZX1Yu6MFs2Dg7HLuOxN74Mnf6cLlEeLWV7bwypdoMfNR+wnholcr7DwA==","signatures":[{"sig":"MEQCICgj6gTbnUG2MH0J9aZQ6Hk2qWoTNi804W2Y1txiDxQ3AiAxgGBWKWX6SWtWoAqqafUr51X6LUtW3Q85BwPCzLC3bQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249400029},"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":"04189ccbd618591d5701a040fce9dbe7f83dad31","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","ink":"^6.5.1","tar":"^7.5.2","tmp":"^0.2.5","zod":"^3.23.8","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","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.5_1769467489875_0.6194358653154679","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.6":{"name":"happy-code-cli","version":"0.14.0-dev.6","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.6","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"111969dad053384e0b3a2bc7d22dd7e2d39cb06d","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.6.tgz","fileCount":65,"integrity":"sha512-TUAFmXTp56nAbF7D11zTxi8vLLIgtczldkDzqzwngBoIyWWrbHpwePumKIDEs+6M4wKTlVHtmYHfpOKJX7PLwQ==","signatures":[{"sig":"MEUCIQC+zi1rMIhl149Kx/z6ZY/tFyyrchBHcTgL94N9UOqU0QIgf4SdULFzKvGDfwYI0r9uXdOG986g28zF0h6MCL0ANFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261386110},"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":"b88e1fc07abe345511848814f231456c7641756f","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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.23.8","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.6_1769561512127_0.4954984985336415","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.7":{"name":"happy-code-cli","version":"0.14.0-dev.7","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.7","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"0471ff4566eb80a57651aa18742fd5c5eb525297","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.7.tgz","fileCount":65,"integrity":"sha512-2RM9YEz6GW6fdhvp8s+Ml+J0KhsizctCKUWaK1rffV3IytageTHS+nKM9fuFBbx+Jsnilg6GxiSjc6Z1w0PZ7g==","signatures":[{"sig":"MEUCIQCZlgoPOjfs/pzW9b27AL2YDq4hnYZID/6WfoFyu6LVsAIgIR6FjGNJmS/2GCwjq/VGadRBKJMtGxsL410t8Lfi6FA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261386274},"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":"0b0735febd97648fc119667678dccc3010e3e13a","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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.23.8","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.7_1769565818951_0.5203524577445531","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.8":{"name":"happy-code-cli","version":"0.14.0-dev.8","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.8","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"f54d991eaaab600c69fc2144006dcad5f5651a36","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.8.tgz","fileCount":65,"integrity":"sha512-8p9NMGuZ6U/bUZlBPsBAFM8U/8S6xISCJmiwFfiBvbZRRlrngpXl7L8ZngSqdbEY+ght5u3cbmN6tQSAmlvl4w==","signatures":[{"sig":"MEYCIQCD78AlGJeN3iiI3QJAzDf5VA5l/oDnQ9vWhw7oC6/foAIhAN9u1wiuUJ13anoO6iQM+8H2DvaCrTvHaqQtMTvO80U/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261409670},"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":"46dd0cf420933127dd45e6c3ae8f8b6f243dff89","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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.23.8","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.8_1769734437136_0.8791630437056739","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.9":{"name":"happy-code-cli","version":"0.14.0-dev.9","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.9","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"4cb1b1a89990a58a8a02580c02ce2e4b3d6808be","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.9.tgz","fileCount":65,"integrity":"sha512-F4OdMh6NbGQevLhAGDbPyknI8Mo+hYWiuWSv97Ur6pCvcXzcI9JRb3D2TC1nHr1c7LRnHGhAIjBcBYwm0SPzPQ==","signatures":[{"sig":"MEUCIDAdJ5PWr2h1w/U2Lsl+RVL3AtVTLsIU7cMxYEzmF9FpAiEAg7kMcpHglFOWXXMYomBWspCVNRh5Q7k2iY19Hda/rmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261416348},"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":"ad3e9a63297e84f2160d60904c572524d6b01df2","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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.23.8","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.9_1769967251783_0.18274224180526155","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.10":{"name":"happy-code-cli","version":"0.14.0-dev.10","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.10","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"9c9389f3e3a28d33a368eaa8cbabecc81fcac1ed","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.10.tgz","fileCount":65,"integrity":"sha512-xhIGGZnXz9vhrkHvDWej3JDW+mIs2IAMzHhhHmN3h34LFsNRxzDpKfK3FThU8fyGCENcep9sxhFhWQ4Md+7g4g==","signatures":[{"sig":"MEUCIAeJjhGvFg56SE76PiiMNTh4ApTUtQkh2J50TiC8d6iuAiEAie5yVGpeGx25rX5kuv/NVeq5JLhuvsTAcmFtkUgKB4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261419908},"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":"ef3a506277df8e6607b044118cb044921ef619e2","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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.23.8","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","@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.8.0","@modelcontextprotocol/sdk":"^1.22.0","fastify-type-provider-zod":"4.0.2"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","readmeFilename":"README.md","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","@types/node":">=20","@eslint/compat":"^1","eslint-config-prettier":"^10"},"_npmOperationalInternal":{"tmp":"tmp/happy-code-cli_0.14.0-dev.10_1769996428018_0.3874794198379006","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.11":{"name":"happy-code-cli","version":"0.14.0-dev.11","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.11","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"51a82d567a1282a6d55214b357a42592a305d208","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.11.tgz","fileCount":65,"integrity":"sha512-OKFMtVq9RzWIbU+1U1uNyH7rJrtFnp7i66AtqAwJkeJlIK7z9qLhAEOHt1fwWKAGE9JuDBXw86rcI9wQeT7MAQ==","signatures":[{"sig":"MEQCIAQyY3MVLD8mSsypZQY1HXBiFhwCuVhObI3usRPWE6uaAiBQAPXmgKIIE8Qmh54/JOvD6Lw9fW5XLhAArWP06uA5mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261431865},"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":"2a651b83ab8c4847124d795abde3721ce1405d33","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.11_1770140923197_0.6958073110130116","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.12":{"name":"happy-code-cli","version":"0.14.0-dev.12","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.12","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"c75ff1ffca12309e8565cd9c3e89857504fff19e","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.12.tgz","fileCount":65,"integrity":"sha512-+G957FjXU9AuvJNQZyxRad9XQYSyClzERo0O2F1W/HZhnZ16HPa4m3l7cpbJn41EpV/x59ULFFRl0dXo09mqJw==","signatures":[{"sig":"MEUCIQD2vGn93auR7m7kcESsSDvVH7E98CdhLWukX4f3jqVvaQIgZOJcze5l0fji/ipE4NIQAjDupj0VrkXxNEHafXALK04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261433227},"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":"86d3b9c0f849f62f747e78b39d9f063238007587","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.12_1770252760322_0.5693691192225885","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.13":{"name":"happy-code-cli","version":"0.14.0-dev.13","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.13","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"b330a70b2b2515d6264ec4f1dad1e20ffe17bbf1","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.13.tgz","fileCount":65,"integrity":"sha512-9Cdv9E1/w20FbunJv2zocjOkkPgZagCa1Ju0//vAba52sBGVCqS5cXeEcUv7YZTdT0206s6KQT432mZL3taFjA==","signatures":[{"sig":"MEYCIQCRwSISzHMstBEL9d4Ovvzt4AY/p4mT1FpTNZQWggJKuQIhALPI119VvynGisV/ndnFpY/K/4Zs3cxKIya76QGSFlfs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261434435},"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":"33f43743bd2b0bd3be0bc7b4226970a8ef58f8b0","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.13_1770263323942_0.1930322826062041","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.14":{"name":"happy-code-cli","version":"0.14.0-dev.14","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.14","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"2c19013f11c1604063a86a5e637dd60c70b53117","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.14.tgz","fileCount":65,"integrity":"sha512-fdjIkPPNm/5XL8ayUlVZxH1BIbbs4lKQLP5DwTYVjHVdI7M6MYin3DaHJjMxcw1F2DC1jPHLti57G8kecs/IDQ==","signatures":[{"sig":"MEUCICwCxnNceE8gmzYFMGBv+TiuLXPXa7FbNoI/TewevNSMAiEAuPvYfGIDbVO6Q3T94dMKOp/ui41Flh471LsNp6ypquc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261435677},"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":"320303f2cf13f24c9628bceb4f6246d935e5ba80","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.14_1770275058624_0.5464491097335438","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.15":{"name":"happy-code-cli","version":"0.14.0-dev.15","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.15","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"053b04d2af4286fca36b51f19e14e30019e0a6a1","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.15.tgz","fileCount":65,"integrity":"sha512-yDuxBep2puMvLLKuxF6tzbR19PMeocotdszTFd8b+5xKr+4c/dTyGriBtU4NO1iCqAEwq2hWLJh5z+egNRY4nw==","signatures":[{"sig":"MEUCIQCj2+jO1ObizLdZOky6KUND5N6x14Spt9FiEXrz0AIPmAIgJXsV03xnRVF7N3Mbccw05vDciG1/jFd7qCoybFNWsFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261441712},"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":"dad6e19918fcf9f7c3163ea01f1c60d4f37f817d","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.15_1770279140096_0.32121356001093715","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.16":{"name":"happy-code-cli","version":"0.14.0-dev.16","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.16","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"bfb874b4e109b1a003e262aad8d67760acf71234","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.16.tgz","fileCount":65,"integrity":"sha512-Atya6bU8HIgE0/yZjA8skdHv7oztbSHmTdzBfigBCrJKOzJlwrYtzKzc+fQuMAm07/AwG6I4EH/6c6wucwz4WQ==","signatures":[{"sig":"MEUCIQCatH0LWBRJ91zHbjKSR6QZ/3M5/uqOZ8dYBBlh1ZQJ7wIgHOPvSv6QWYLUoxlysS4R5Jeu3lWZv6QONly1BnQI63s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261444169},"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":"c0b4817b4c24d23aaa663899b6fef2d752f15375","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.16_1770711048731_0.829502079928174","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.17":{"name":"happy-code-cli","version":"0.14.0-dev.17","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.17","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"a397ad1fac66d01875c6b5a0e17ab50f9555b662","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.17.tgz","fileCount":65,"integrity":"sha512-uWnHJmBPmjbPna7kV9O52+6WMKHXcslT2KXV8wWHi0hROKq7RKgn7zmnRjbPHw03UPRtfzhzaMGpf1Sl+XP0xg==","signatures":[{"sig":"MEYCIQCOpg5e5p2TGdAzzCW/d6XpfHZt2uKfIJ6jUWYrHujpwAIhAOwQBAB+kLfhtx5XnUS1q4B5ph3Rudi7Kx3I1HzQyT7m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261453315},"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":"4aa297c88a277bee4aa11d345d0ddd74af113146","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.17_1770873788273_0.99862476528605","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.18":{"name":"happy-code-cli","version":"0.14.0-dev.18","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.18","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"580cc980c15773c2ff3ced8e7ea51c6170a05be0","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.18.tgz","fileCount":65,"integrity":"sha512-sqUxruPZ95sbMhmtLTZ6cSvo5yNUZ91U0P00nt+seblzETboagV7wyhaHdFvqDhISOQxEhddBu7FQemfm0E5zw==","signatures":[{"sig":"MEQCIHicu094eq1qfbVbblN/TmwkAi1ayJT23SqJ9/aI7PHCAiBm0WLqWT6W9gXe+5017jFuNz+rCby5u6a/3osi7peDGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261486251},"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":"02ca8dfcbc24d9cb0d20ce050cd59696d6ad149c","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/slopus/happy-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Mobile and Web client for Claude Code and Codex","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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.18_1770888728893_0.0976617883676616","host":"s3://npm-registry-packages-npm-production"}},"0.14.0-dev.19":{"name":"happy-code-cli","version":"0.14.0-dev.19","author":{"name":"Kirill Dubovitskiy"},"license":"MIT","_id":"happy-code-cli@0.14.0-dev.19","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"homepage":"https://github.com/slopus/happy-cli","bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"bin":{"happy":"bin/happy.mjs","happy-mcp":"bin/happy-mcp.mjs"},"dist":{"shasum":"df3866ea128c19808f718e6ffe63d9840daea635","tarball":"https://registry.npmjs.org/happy-code-cli/-/happy-code-cli-0.14.0-dev.19.tgz","fileCount":65,"integrity":"sha512-Uwq+oFTX6aoelXBAch59GdhuRCTFmdYaUuWznkk6qxptbATmUodtPnA+g6gPWnzB1W31gvHrBhpYgWOuJazWMw==","signatures":[{"sig":"MEQCIGu15cMH5Vk5P0YesPG2/XDDfHJ+6rjCsB48hn0teUZ6AiBtvH6vQFfJ2bg6dWG8OBH6avcb5UG2IWz5nWtGYE0WMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261635961},"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":"38b76a1163bdb30050c3a3752e13b41159a4b51d","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/slopus/happy-cli.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","@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.8.0","@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","readmeFilename":"README.md","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-code-cli_0.14.0-dev.19_1771905920102_0.8379824281082244","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-01-23T08:06:42.461Z","modified":"2026-02-24T04:05:43.779Z","0.14.0":"2026-01-23T08:06:45.412Z","0.14.1":"2026-01-23T09:04:18.783Z","0.14.2":"2026-01-24T05:23:21.187Z","0.14.0-1":"2026-01-24T23:41:47.534Z","0.14.0-dev.1":"2026-01-25T16:24:21.940Z","0.14.0-dev.2":"2026-01-25T23:12:32.630Z","0.14.0-dev.3":"2026-01-26T14:48:35.928Z","0.14.0-dev.4":"2026-01-26T20:21:04.777Z","0.14.0-dev.5":"2026-01-26T22:44:52.713Z","0.14.0-dev.6":"2026-01-28T00:51:55.271Z","0.14.0-dev.7":"2026-01-28T02:03:42.119Z","0.14.0-dev.8":"2026-01-30T00:54:00.252Z","0.14.0-dev.9":"2026-02-01T17:34:14.881Z","0.14.0-dev.10":"2026-02-02T01:40:31.111Z","0.14.0-dev.11":"2026-02-03T17:48:46.316Z","0.14.0-dev.12":"2026-02-05T00:52:43.427Z","0.14.0-dev.13":"2026-02-05T03:48:47.012Z","0.14.0-dev.14":"2026-02-05T07:04:21.646Z","0.14.0-dev.15":"2026-02-05T08:12:23.187Z","0.14.0-dev.16":"2026-02-10T08:10:52.289Z","0.14.0-dev.17":"2026-02-12T05:23:11.356Z","0.14.0-dev.18":"2026-02-12T09:32:11.999Z","0.14.0-dev.19":"2026-02-24T04:05:23.342Z"},"bugs":{"url":"https://github.com/slopus/happy-cli/issues"},"author":{"name":"Kirill Dubovitskiy"},"license":"MIT","homepage":"https://github.com/slopus/happy-cli","repository":{"url":"git+https://github.com/slopus/happy-cli.git","type":"git"},"description":"Mobile and Web client for Claude Code and Codex","maintainers":[{"name":"kuaifan","email":"aipaw@live.cn"}],"readme":"","readmeFilename":"README.md"}