{
  "name": "@juspay/shooter",
  "version": "1.29.0",
  "description": "Bidirectional communication server for Claude Code and iOS — push notifications, remote terminal, session viewing",
  "type": "module",
  "packageManager": "pnpm@10.28.2",
  "license": "MIT",
  "author": {
    "name": "Juspay Technologies",
    "email": "support@juspay.in",
    "url": "https://juspay.io"
  },
  "homepage": "https://github.com/juspay/shooter#readme",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/juspay/shooter.git"
  },
  "bugs": {
    "url": "https://github.com/juspay/shooter/issues"
  },
  "bin": {
    "shooter": "bin/shooter.cjs"
  },
  "files": [
    "bin/",
    "build/",
    "scripts/",
    "server.ts",
    "src/",
    "svelte.config.js",
    "tsconfig.json",
    "vite.config.ts",
    ".claude/hooks/",
    ".claude/settings.json"
  ],
  "pnpm": {
    "onlyBuiltDependencies": [
      "@firebase/util",
      "better-sqlite3",
      "esbuild",
      "node-pty",
      "protobufjs"
    ],
    "overrides": {
      "devalue": ">=5.8.1",
      "protobufjs": ">=7.5.8 <8",
      "@protobufjs/utf8": ">=1.1.1",
      "lodash": ">=4.18.0",
      "lodash-es": ">=4.18.0",
      "fast-xml-parser": ">=5.7.0",
      "fast-xml-builder": ">=1.1.7",
      "postcss": ">=8.5.10",
      "cookie": ">=0.7.0 <2",
      "@tootallnate/once": ">=3.0.1"
    }
  },
  "engines": {
    "node": ">=20"
  },
  "publishConfig": {
    "access": "public"
  },
  "scripts": {
    "postinstall": "node-gyp rebuild --directory=node_modules/node-pty --loglevel=silent > /dev/null 2>&1 || echo '⚠ node-pty build failed — terminal features will not work. Install build tools: macOS: xcode-select --install | Linux: apt install python3 make g++'; node-gyp rebuild --directory=node_modules/better-sqlite3 --loglevel=silent > /dev/null 2>&1 || echo '⚠ better-sqlite3 build failed — terminal persistence will not work.'",
    "build": "vite build",
    "postbuild": "cp src/lib/modules/server/terminal/pty-holder.cjs build/pty-holder.cjs",
    "dev": "node scripts/dev.mjs",
    "preview": "vite preview",
    "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json && tsc --noEmit --strict",
    "start": "tsx server.ts",
    "lint": "eslint .",
    "lint:fix": "eslint . --fix",
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "lint:fix:generated": "eslint './src/lib/types/generated/**/*.{js,ts}' --fix",
    "format:generated": "prettier --write ./src/lib/types/generated/*",
    "quality:all": "pnpm run lint && pnpm run format:check && pnpm run check",
    "gen:types": "npx type-crafter generate typescript-with-decoders ./specs/types/index.yaml ./src/lib/types/generated SingleFile SingleFile && bash scripts/postgen-types.sh && pnpm run format:generated",
    "test": "node tests/terminal-store.test.cjs && node tests/pending-requests.test.cjs && node tests/tunnel-discovery.test.cjs && node tests/service-manager.test.cjs && node tests/plan-mode-routing.test.cjs && node tests/dynamic-options-extraction.test.cjs && node tests/next-step-consensus.test.cjs && node tests/summaries-route.test.cjs && node tests/litellm-client.test.cjs && node tests/decide-injection.test.cjs && node tests/presence-store.test.cjs && node tests/autopilot-context.test.cjs && node tests/apns-payload.test.cjs && node tests/agent-launch.test.cjs && node tests/codex-parser.test.cjs && node tests/provider-readers.test.cjs && node tests/generic-watcher.test.cjs && node tests/sos-coordinator.test.cjs && node tests/sos-policy.test.cjs && node tests/pty-input.test.cjs && node tests/share-store.test.cjs && node tests/seq-ring.test.cjs && node tests/terminal-emulator.test.cjs && node tests/resize-authority.test.cjs && node tests/device-token-resolution.test.cjs && node tests/pty-holder-integration.cjs && node tests/device-token-store.test.cjs && node tests/device-format.test.cjs && node tests/classify-apns-reason.test.cjs && node tests/fcm-classify.test.cjs && node tests/notify-fanout.test.cjs && node tests/device-registry-prune.test.cjs && node tests/summary-store.test.cjs && node tests/motion.test.cjs && node tests/native-bridge.test.cjs && node tests/pull-refresh.test.cjs && node tests/keyboard.test.cjs && node tests/web-push-store.test.cjs && node tests/edge-swipe.test.cjs && node tests/apns-liveactivity.test.cjs && node tests/live-activity-store.test.cjs",
    "setup": "node scripts/setup.cjs",
    "prepare": "husky || true",
    "prepublishOnly": "pnpm build"
  },
  "devDependencies": {
    "@eslint/js": "^9.39.2",
    "@semantic-release/changelog": "6.0.3",
    "@semantic-release/commit-analyzer": "13.0.1",
    "@semantic-release/git": "10.0.1",
    "@semantic-release/github": "11.0.6",
    "@semantic-release/npm": "12.0.2",
    "@semantic-release/release-notes-generator": "14.1.0",
    "@sveltejs/adapter-node": "^5.2.0",
    "@sveltejs/kit": "^2.50.2",
    "@sveltejs/vite-plugin-svelte": "^6.2.4",
    "@types/better-sqlite3": "^7.6.13",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/node": "^25.2.0",
    "@types/qrcode": "^1.5.6",
    "@types/web-push": "^3.6.4",
    "@types/ws": "^8.18.1",
    "conventional-changelog-conventionalcommits": "^9.3.0",
    "eslint": "^9.39.2",
    "eslint-config-prettier": "^10.1.8",
    "eslint-plugin-perfectionist": "^5.4.0",
    "eslint-plugin-svelte": "^3.14.0",
    "globals": "^17.3.0",
    "husky": "^9.1.7",
    "lint-staged": "^16.4.0",
    "prettier": "^3.8.1",
    "prettier-plugin-svelte": "^3.4.1",
    "semantic-release": "24.2.8",
    "svelte": "^5.55.7",
    "svelte-check": "^4.3.6",
    "type-crafter": "^0.10.0",
    "typescript": "^5.9.3",
    "typescript-eslint": "^8.54.0",
    "vite": "^7.3.2"
  },
  "dependencies": {
    "@juspay/svelte-ui-components": "2.87.0",
    "@xterm/addon-fit": "^0.10.0",
    "@xterm/addon-serialize": "0.14.0",
    "@xterm/addon-web-links": "^0.11.0",
    "@xterm/headless": "6.0.0",
    "@xterm/xterm": "^5.5.0",
    "better-sqlite3": "^12.8.0",
    "chokidar": "^4.0.0",
    "dompurify": "^3.4.0",
    "dotenv": "^17.2.3",
    "firebase-admin": "^13.7.0",
    "jsonwebtoken": "^9.0.3",
    "marked": "^17.0.4",
    "node-pty": "1.1.0",
    "qrcode": "^1.5.4",
    "tsx": "^4.19.0",
    "type-decoder": "^2.2.0",
    "web-push": "^3.6.7",
    "ws": "^8.18.0"
  },
  "lint-staged": {
    "src/**/*.{ts,svelte}": [
      "eslint --fix --no-warn-ignored --max-warnings 0",
      "prettier --write"
    ],
    "test/**/*.ts": [
      "eslint --fix --no-warn-ignored --max-warnings 0",
      "prettier --write"
    ],
    "*.{json,md,css}": [
      "prettier --write"
    ]
  }
}
