{
  "name": "openhuman-app",
  "version": "0.54.10",
  "type": "module",
  "engines": {
    "node": ">=24.0.0"
  },
  "scripts": {
    "dev": "vite",
    "dev:web": "vite",
    "dev:app": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && bash ../scripts/setup-chromium-safe-storage.sh && source ../scripts/load-dotenv.sh && APPLE_SIGNING_IDENTITY='OpenHuman Dev Signer' cargo tauri dev",
    "dev:app:win": "\"C:/Program Files/Git/bin/bash.exe\" ../scripts/run-dev-win.sh",
    "dev:cef": "pnpm dev:app",
    "dev:wry": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-dotenv.sh && cargo tauri dev --no-default-features --features wry",
    "core:stage": "echo '[core:stage] no-op — core is linked in-process; sidecar removed (PR #1061)'",
    "tauri:ensure": "bash ../scripts/ensure-tauri-cli.sh",
    "build": "tsc && vite build",
    "build:app": "tsc && vite build",
    "build:app:e2e": "tsc && vite build --mode development",
    "build:web": "cross-env VITE_OPENHUMAN_TARGET=web tsc && cross-env VITE_OPENHUMAN_TARGET=web vite build",
    "compile": "tsc --noEmit",
    "preview": "vite preview",
    "tauri": "tauri",
    "tauri:build:ui": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && cargo tauri build -- --bin OpenHuman",
    "macos:build:intel": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-dotenv.sh && cargo tauri build --bundles app dmg --target x86_64-apple-darwin -- --bin OpenHuman",
    "macos:build:intel:debug": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-dotenv.sh && cargo tauri build --debug --bundles app dmg --target x86_64-apple-darwin -- --bin OpenHuman",
    "macos:build:debug": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-dotenv.sh && cargo tauri build --debug --bundles app dmg -- --bin OpenHuman",
    "macos:build:release": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-dotenv.sh && cargo tauri build --bundles app dmg -- --bin OpenHuman",
    "macos:build:release:signed": "pnpm tauri:ensure && export CEF_PATH=\"$HOME/Library/Caches/tauri-cef\" && source ../scripts/load-env.sh && cargo tauri build --bundles app dmg -- --bin OpenHuman",
    "macos:build:sign:release": "pnpm macos:build:release:signed",
    "macos:run": "open '../target/debug/bundle/macos/OpenHuman.app'",
    "macos:dev": "pnpm macos:build:debug && open '../target/debug/bundle/macos/OpenHuman.app'",
    "test": "vitest run --config test/vitest.config.ts",
    "test:unit": "vitest run --config test/vitest.config.ts",
    "test:unit:watch": "vitest --config test/vitest.config.ts",
    "test:watch": "vitest --config test/vitest.config.ts",
    "test:coverage": "vitest run --config test/vitest.config.ts --coverage",
    "test:rust": "bash ../scripts/test-rust-with-mock.sh",
    "test:e2e:build": "bash ./scripts/e2e-build.sh",
    "test:e2e:login": "bash ./scripts/e2e-login.sh",
    "test:e2e:auth": "bash ./scripts/e2e-auth.sh",
    "test:e2e:service-connectivity": "OPENHUMAN_SERVICE_MOCK=1 bash ./scripts/e2e-run-spec.sh test/e2e/specs/service-connectivity-flow.spec.ts service-connectivity",
    "test:e2e:skills-registry": "bash ./scripts/e2e-run-spec.sh test/e2e/specs/skills-registry.spec.ts skills-registry",
    "test:e2e:cron-jobs": "bash ./scripts/e2e-run-spec.sh test/e2e/specs/cron-jobs-flow.spec.ts cron-jobs",
    "test:e2e": "pnpm test:e2e:build && pnpm test:e2e:login && pnpm test:e2e:auth",
    "test:e2e:all:flows": "bash ./scripts/e2e-run-all-flows.sh",
    "test:e2e:all": "pnpm test:e2e:build && pnpm test:e2e:all:flows",
    "test:e2e:session": "bash ./scripts/e2e-run-session.sh",
    "test:e2e:session:full": "pnpm test:e2e:build && pnpm test:e2e:session",
    "test:all": "pnpm test:coverage && pnpm test:rust && pnpm test:e2e",
    "rust:check": "cargo check --manifest-path src-tauri/Cargo.toml",
    "rust:format": "cargo fmt --manifest-path ../Cargo.toml --all && cargo fmt --manifest-path src-tauri/Cargo.toml --all",
    "rust:format:check": "cargo fmt --manifest-path ../Cargo.toml --all --check && cargo fmt --manifest-path src-tauri/Cargo.toml --all --check",
    "rust:clippy": "cargo clippy -p openhuman -- -D warnings",
    "format": "prettier --write . && pnpm rust:format",
    "format:check": "prettier --check . && pnpm rust:format:check",
    "lint": "eslint . --ext .ts,.tsx --cache",
    "lint:fix": "eslint . --ext .ts,.tsx --fix --cache",
    "lint:commands-tokens": "bash -c 'command -v rg >/dev/null 2>&1 || { echo \"lint:commands-tokens requires ripgrep. Install: brew install ripgrep (macOS) / apt install ripgrep (Debian/Ubuntu) / see https://github.com/BurntSushi/ripgrep#installation\" >&2; exit 1; }; ! rg -nU \"(bg|text|border|ring|shadow)-(neutral|primary|sage|amber|canvas|stone|slate)\" src/components/commands/'",
    "knip": "knip --config knip.json",
    "knip:production": "knip --config knip.json --production"
  },
  "dependencies": {
    "@noble/curves": "^2.2.0",
    "@noble/hashes": "^2.0.1",
    "@noble/secp256k1": "^3.0.0",
    "@radix-ui/react-dialog": "^1.1.15",
    "@reduxjs/toolkit": "^2.11.2",
    "@remotion/player": "4.0.454",
    "@remotion/zod-types": "4.0.454",
    "@scure/base": "^2.2.0",
    "@scure/bip32": "^2.0.1",
    "@scure/bip39": "^2.0.1",
    "@sentry/react": "^10.38.0",
    "@tauri-apps/api": "^2.10.0",
    "@tauri-apps/plugin-deep-link": "^2",
    "@tauri-apps/plugin-opener": "^2",
    "@tauri-apps/plugin-os": "^2.3.2",
    "@types/three": "^0.183.1",
    "buffer": "^6.0.3",
    "cmdk": "^1.1.1",
    "debug": "^4.4.3",
    "lottie-react": "^2.4.1",
    "os-browserify": "^0.3.0",
    "process": "^0.11.10",
    "react": "^19.1.0",
    "react-dom": "^19.1.0",
    "react-ga4": "^3.0.1",
    "react-icons": "^5.6.0",
    "react-joyride": "^3.1.0",
    "react-markdown": "^10.1.0",
    "react-redux": "^9.2.0",
    "react-router-dom": "^7.13.0",
    "redux-logger": "^3.0.6",
    "redux-persist": "^6.0.0",
    "remotion": "4.0.454",
    "socket.io-client": "^4.8.3",
    "three": "^0.183.2",
    "util": "^0.12.5",
    "zod": "4.3.6"
  },
  "devDependencies": {
    "@eslint/js": "^9.39.2",
    "@sentry/vite-plugin": "^2.22.6",
    "@tailwindcss/forms": "^0.5.11",
    "@tailwindcss/typography": "^0.5.19",
    "@tauri-apps/cli": "2.10.0",
    "@testing-library/dom": "^10.4.1",
    "@testing-library/jest-dom": "^6.9.1",
    "@testing-library/react": "^16.3.2",
    "@testing-library/user-event": "^14.6.1",
    "@trivago/prettier-plugin-sort-imports": "^6.0.2",
    "@types/debug": "^4.1.12",
    "@types/node": "^25.0.10",
    "@types/react": "^19.1.8",
    "@types/react-dom": "^19.1.6",
    "@types/redux-logger": "^3.0.13",
    "@typescript-eslint/eslint-plugin": "^8.54.0",
    "@typescript-eslint/parser": "^8.54.0",
    "@vitejs/plugin-react": "^6.0.1",
    "@vitest/coverage-v8": "^4.0.18",
    "@wdio/appium-service": "^9.24.0",
    "@wdio/cli": "^9.24.0",
    "@wdio/local-runner": "^9.24.0",
    "@wdio/mocha-framework": "^9.24.0",
    "@wdio/spec-reporter": "^9.24.0",
    "autoprefixer": "^10.4.23",
    "cross-env": "^10.1.0",
    "eslint": "^9.39.2",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-import": "^2.32.0",
    "eslint-plugin-react": "^7.37.5",
    "eslint-plugin-react-hooks": "^7.0.1",
    "husky": "^9.1.7",
    "jsdom": "^28.0.0",
    "knip": "^6.3.1",
    "postcss": "^8.5.6",
    "prettier": "^3.8.1",
    "tailwindcss": "^3.4.19",
    "typescript": "~5.8.3",
    "vite": "^8.0.0",
    "vite-plugin-node-polyfills": "^0.26.0",
    "vitest": "^4.0.18"
  }
}
