{ "name": "happy", "version": "1.2.0", "description": "Mobile and Web client for Claude Code and Codex", "author": "Kirill Dubovitskiy", "license": "MIT", "type": "module", "homepage": "https://happy.engineering", "bugs": "https://github.com/slopus/happy/issues", "repository": { "type": "git", "url": "https://github.com/slopus/happy" }, "bin": { "happy": "./bin/happy.mjs", "happy-mcp": "./bin/happy-mcp.mjs" }, "main": "./dist/index.cjs", "module": "./dist/index.mjs", "types": "./dist/index.d.cts", "exports": { ".": { "require": { "types": "./dist/index.d.cts", "default": "./dist/index.cjs" }, "import": { "types": "./dist/index.d.mts", "default": "./dist/index.mjs" } }, "./lib": { "require": { "types": "./dist/lib.d.cts", "default": "./dist/lib.cjs" }, "import": { "types": "./dist/lib.d.mts", "default": "./dist/lib.mjs" } }, "./codex/happyMcpStdioBridge": { "require": { "types": "./dist/codex/happyMcpStdioBridge.d.cts", "default": "./dist/codex/happyMcpStdioBridge.cjs" }, "import": { "types": "./dist/codex/happyMcpStdioBridge.d.mts", "default": "./dist/codex/happyMcpStdioBridge.mjs" } } }, "files": [ "dist", "bin", "scripts", "tools/archives", "tools/licenses", "package.json" ], "scripts": { "typecheck": "tsc --noEmit", "bundle:server": "node scripts/bundle-server.cjs", "bundle:server:all": "node scripts/bundle-server.cjs --all-platforms", "bundle:webapp": "node scripts/bundle-webapp.cjs", "build": "shx rm -rf dist && tsc --noEmit && pkgroll", "test": "pnpm run build && vitest run --project unit", "test:integration": "pnpm run build && vitest run --project integration-empty --project integration-plan-mode --project integration-authenticated", "cli:install": "node scripts/install-local.cjs", "prepublishOnly": "pnpm test", "postinstall": "node scripts/unpack-tools.cjs" }, "dependencies": { "@agentclientprotocol/sdk": "^0.14.1", "@anthropic-ai/claude-agent-sdk": "^0.3.179", "@anthropic-ai/sandbox-runtime": "^0.0.37", "@modelcontextprotocol/sdk": "1.29.0", "@noble/ed25519": "^3.0.0", "@noble/hashes": "^2.0.1", "@paralleldrive/cuid2": "^2.2.2", "@slopus/happy-wire": "workspace:*", "@stablelib/base64": "^2.0.1", "@stablelib/hex": "^2.0.1", "@types/cross-spawn": "^6.0.6", "@types/http-proxy": "^1.17.17", "@types/qrcode-terminal": "^0.12.2", "@types/react": "^19.2.7", "@types/tmp": "^0.2.6", "ai": "^5.0.107", "axios": "^1.13.2", "chalk": "^5.6.2", "cross-spawn": "^7.0.6", "expo-server-sdk": "^3.15.0", "fastify": "^5.6.2", "fastify-type-provider-zod": "^6.1.0", "http-proxy": "^1.18.1", "http-proxy-middleware": "^3.0.5", "ink": "^6.5.1", "inquirer": "^13.2.2", "open": "^10.2.0", "ps-list": "^8.1.1", "qrcode-terminal": "^0.12.0", "react": "^19.2.0", "socket.io-client": "^4.8.1", "tar": "^7.5.2", "tmp": "^0.2.5", "tweetnacl": "^1.0.3", "ws": "^8.19.0", "zod": "^4.0.0" }, "devDependencies": { "@eslint/compat": "^1", "@types/inquirer": "^9.0.9", "@types/node": ">=20", "@types/ws": "^8.18.1", "cross-env": "^10.1.0", "dotenv": "^16.6.1", "eslint": "^9", "eslint-config-prettier": "^10", "pkgroll": "^2.14.2", "shx": "^0.3.3", "ts-node": "^10", "tsx": "^4.20.6", "typescript": "5.9.3", "vitest": "^3.2.4" }, "publishConfig": { "registry": "https://registry.npmjs.org" }, "packageManager": "pnpm@10.11.0" }