{
  "name": "@jshookmcp/jshook",
  "version": "0.3.5",
  "description": "MCP server with built-in tools across multiple domains for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration",
  "keywords": [
    "ai",
    "anti-detection",
    "ast",
    "browser-automation",
    "captcha",
    "chrome-devtools",
    "claude",
    "code-analysis",
    "cryptography-detection",
    "debugger",
    "deobfuscation",
    "hook",
    "hooking",
    "javascript",
    "javascript-analysis",
    "mcp",
    "model-context-protocol",
    "network-monitoring",
    "obfuscation",
    "puppeteer",
    "security-analysis",
    "web-scraping"
  ],
  "homepage": "https://github.com/vmoranv/jshookmcp#readme",
  "bugs": {
    "url": "https://github.com/vmoranv/jshookmcp/issues"
  },
  "license": "AGPL-3.0-only",
  "author": {
    "name": "vmoranv",
    "url": "https://github.com/vmoranv"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/vmoranv/jshookmcp.git"
  },
  "bin": {
    "jshook": "dist/index.mjs",
    "jshookmcp": "dist/index.mjs"
  },
  "files": [
    "dist",
    "workflows",
    "src/native/scripts",
    "scripts/postinstall.cjs"
  ],
  "type": "module",
  "main": "dist/index.mjs",
  "types": "dist/index.d.mts",
  "exports": {
    ".": {
      "import": "./dist/index.mjs",
      "types": "./dist/index.d.mts"
    },
    "./plugin-api": {
      "import": "./dist/server/plugin-api.mjs",
      "types": "./dist/server/plugin-api.d.mts"
    },
    "./fleet-api": {
      "import": "./dist/server/fleet-api.mjs",
      "types": "./dist/server/fleet-api.d.mts"
    }
  },
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org"
  },
  "dependencies": {
    "@alexaltea/capstone-js": "^5.0.9",
    "@babel/generator": "^8.0.0",
    "@babel/parser": "^8.0.0",
    "@babel/traverse": "^8.0.0",
    "@babel/types": "^8.0.0",
    "@huggingface/tokenizers": "^0.1.3",
    "@modelcontextprotocol/sdk": "^1.29.0",
    "dotenv": "^17.4.2",
    "jsdom": "^29.1.1",
    "koffi": "^3.0.2",
    "mockttp": "4.4.2",
    "protobufjs": "8.7.1",
    "quickjs-emscripten": "^0.32.0",
    "rebrowser-puppeteer-core": "^24.8.1",
    "yauzl": "^3.4.0",
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@types/babel__generator": "^7.27.0",
    "@types/babel__traverse": "^7.28.0",
    "@types/better-sqlite3": "^7.6.13",
    "@types/jsdom": "^28.0.3",
    "@types/node": "^25.9.3",
    "@vitest/coverage-v8": "^4.1.9",
    "cross-env": "^10.1.0",
    "lefthook": "^2.1.9",
    "medium-zoom": "^1.1.0",
    "oxfmt": "^0.60.0",
    "oxlint": "^1.70.0",
    "rollup-plugin-visualizer": "^7.0.1",
    "tinyglobby": "^0.2.17",
    "tsdown": "^0.22.3",
    "tsx": "^4.22.4",
    "typescript": "^6.0.3",
    "vite": "^8.1.5",
    "vitepress": "2.0.0-alpha.18",
    "vitest": "^4.1.9",
    "vue": "^3.5.38"
  },
  "optionalDependencies": {
    "@devicefarmer/adbkit": "^3.3.8",
    "better-sqlite3": "12.11.1",
    "binaryen": "^130.0.0",
    "camoufox-js": "^0.11.1",
    "playwright-core": "^1.61.0",
    "webcrack": "2.16.0",
    "z3-solver": "^5.0.0"
  },
  "engines": {
    "node": "^22.12.0 || ^24.0.0"
  },
  "mcpName": "io.github.vmoranv/jshookmcp",
  "scripts": {
    "build": "node scripts/build.mjs",
    "build:dts": "node scripts/build.mjs --dts",
    "build:sdk": "corepack pnpm -C packages/extension-sdk build",
    "build:all": "corepack pnpm run build:dts && corepack pnpm run build:sdk",
    "build:analyze": "cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'",
    "typecheck": "tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck",
    "deps:update": "corepack pnpm update -r",
    "dev": "tsx --conditions=development watch src/index.ts",
    "dev:daemon": "cross-env MCP_TRANSPORT=http tsx --conditions=development watch src/index.ts",
    "start": "node dist/index.mjs",
    "daemon": "cross-env MCP_TRANSPORT=http node dist/index.mjs",
    "doctor": "tsx src/cli/doctor.ts",
    "docs:generate": "node scripts/generate-vitepress-reference.mjs",
    "docs:dev": "vitepress dev docs --host 127.0.0.1 --port 5173",
    "docs:build": "corepack pnpm run docs:generate && vitepress build docs",
    "docs:preview": "vitepress preview docs --host 127.0.0.1 --port 4173",
    "lint:md": "corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md",
    "lint": "oxlint src/ tests/",
    "lint:fix": "oxlint --fix src/ tests/",
    "format": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --write --no-error-on-unmatched-pattern",
    "format:check": "oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --check --no-error-on-unmatched-pattern",
    "test": "node scripts/run-vitest-smart.mjs run",
    "test:e2e": "node scripts/build.mjs && cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts",
    "test:e2e:portable": "cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ PUPPETEER_HEADLESS=true vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/portable-smoke.e2e.test.ts tests/e2e/process-lifecycle.test.ts",
    "test:e2e:protocol": "vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-pure-compute.e2e.test.ts",
    "test:e2e:protocol-runtime": "vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts",
    "test:e2e:perf": "cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ E2E_COLLECT_PERFORMANCE=1 vitest run --config tests/e2e/vitest.e2e.config.ts",
    "test:coverage": "node -e \"require('fs').mkdirSync('coverage/.tmp', { recursive: true })\" && cross-env ENABLE_INJECTION_TOOLS=true COVERAGE_FULL=true node scripts/run-vitest-smart.mjs run --coverage",
    "package:verify-bin": "node scripts/verify-packed-bin.mjs",
    "package:verify-install": "node scripts/verify-packed-install.mjs",
    "package:verify-release": "node scripts/verify-release-artifact.mjs",
    "audit:tools": "tsx scripts/audit-tools.mjs",
    "audit:runtime": "node scripts/audit-runtime-probes.mjs",
    "git:refresh-noise": "node scripts/refresh-git-noise.mjs",
    "check": "corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test",
    "package": "corepack pnpm pack",
    "postinstall": "node scripts/postinstall.cjs",
    "install:full": "corepack pnpm install && corepack pnpm exec camoufox-js fetch",
    "metadata:sync": "node scripts/generate-metadata.mjs --write",
    "metadata:check": "node scripts/generate-metadata.mjs --check",
    "check:docs-format": "corepack pnpm run lint:md",
    "search:tune": "tsx scripts/search-tune/optimize.ts",
    "search:tune:report": "tsx scripts/search-tune/report.ts",
    "search:benchmark-model": "tsx scripts/search-tune/compare-static-model.ts"
  }
}