{"_id":"@jshookmcp/jshook","_rev":"25-a344c367705883542884b97253c07909","name":"@jshookmcp/jshook","dist-tags":{"latest":"0.4.3"},"versions":{"0.1.2":{"name":"@jshookmcp/jshook","version":"0.1.2","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"MIT","_id":"@jshookmcp/jshook@0.1.2","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"2973eaa32cbfd751a60860d85a5dfeb0dd10282f","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.2.tgz","fileCount":1592,"integrity":"sha512-HQs62MIPF2LPbRN1VFr0NvwgxyPKh0YA+Ozc+inPn2z0fw/4zH40ZnbvFv3Q+cMd4FUXbYOLrl0aJbazED46kA==","signatures":[{"sig":"MEUCIQCy0dRErTSTdR/MymFDcPjk/WI/xw38VmSD9HrN10GuXAIgI9Y/TD6haQRc7mhhmrTcxlUQLgVEY8sFna7TZj+nH/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4822175},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild","better-sqlite3"]},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d2929fbdf6450710329ed4d1fd2e755ebd69ecf8","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","package":"pnpm pack","prepare":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","audit:tools":"node scripts/audit-tools.mjs","install:full":"pnpm install && pnpm exec camoufox-js fetch","prepublishOnly":"pnpm run check"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 242 built-in tools (234 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","prettier":"^3.8.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.3.0","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.2_1772847044580_0.1317037076346399","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@jshookmcp/jshook","version":"0.1.3","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"MIT","_id":"@jshookmcp/jshook@0.1.3","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"6d698741c0dbb09fe6c8e9b27c679abe3fc12694","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.3.tgz","fileCount":1596,"integrity":"sha512-n/dVQvNiL25xRVgQf+SYdBkR3GjlsuiqDpwneB0SleYmB0G5Uh0mTq+EwmiipOyqcNDuKG7LRPtdBau5RX7iog==","signatures":[{"sig":"MEYCIQDyb1zilDC3uTn1GWtCZb75hFi4YGzP1wGpe/8Vq4XeLwIhAI/b7IVXxxES7khE+EzBcSwdYBGjlt5VO9G0dAuzw9e3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4830795},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild","better-sqlite3"]},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"170f94391e4cc85ffcb94cd4d1568ea436130563","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","package":"pnpm pack","prepare":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","audit:tools":"node scripts/audit-tools.mjs","install:full":"pnpm install && pnpm exec camoufox-js fetch","prepublishOnly":"pnpm run check"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 242 built-in tools (234 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","prettier":"^3.8.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.3.0","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.3_1772853576469_0.5885524211814843","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@jshookmcp/jshook","version":"0.1.4","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"MIT","_id":"@jshookmcp/jshook@0.1.4","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"b91aa6d2df1a8becffce560a53d9fd246beaec0a","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.4.tgz","fileCount":1596,"integrity":"sha512-Krr+fAyHa4i6vEcK+IHPrLuCHJdCVcqDcBPstWto69KfBRnpqVGG8OU3jc76w3bPbdJny1C95EeRAxkbsMi/Kg==","signatures":[{"sig":"MEYCIQD4436htoVlM0boqPRWf8CloTFk35WzoKvAzXVgX80WwgIhAKjfyEQay7ebc5wN/QIBCtLnkKfEAvGQQ/9NBjK53FrK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4852578},"main":"dist/index.js","type":"module","_from":"file:jshookmcp-jshook-0.1.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\"","package":"pnpm pack","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","audit:tools":"node scripts/audit-tools.mjs","install:full":"pnpm install && pnpm exec camoufox-js fetch"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"C:\\Users\\vmoranv\\AppData\\Local\\Temp\\6d896d2e190741b3e555889fc14543f8\\jshookmcp-jshook-0.1.4.tgz","_integrity":"sha512-Krr+fAyHa4i6vEcK+IHPrLuCHJdCVcqDcBPstWto69KfBRnpqVGG8OU3jc76w3bPbdJny1C95EeRAxkbsMi/Kg==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 242 built-in tools (234 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","prettier":"^3.8.1","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.3.0","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.4_1772866691329_0.6639127020864846","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@jshookmcp/jshook","version":"0.1.5","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.1.5","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"7dcbbe72aed6bfdf7df77e02054b6ca20a5b4645","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.5.tgz","fileCount":812,"integrity":"sha512-q5lspl7P9E1tg+IDCVDN7NLC3M6ZoOMv6XYbLFZVfxYeu6haAQ8OVuaIgYSC936Kvd9PnZHQVxI8luRxGzjytg==","signatures":[{"sig":"MEYCIQDCfLRufc2ZhDtlnLLEl6JZFH795ljxinMPi/0iwvbM1AIhAPu8dB8sY0ctjsW51+18c+ITlPPey00xOeIUVPJ+cgQN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2838965},"main":"dist/index.js","pnpm":{"overrides":{"hono":"4.12.5","esbuild":"0.27.3","basic-ftp":"5.2.0","minimatch":"10.2.4","@hono/node-server":"1.19.11","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","koffi"]},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5be94a35c699690ae2d6ddb13f258c7fc92e81d2","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","prepack":"pnpm run build","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","prepublishOnly":"pnpm run check","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","prettier":"^3.8.1","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.5_1772963713451_0.1284837349503829","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@jshookmcp/jshook","version":"0.1.6","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.1.6","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"c92faffef33da9945659db02e837e65baf6770f5","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.6.tgz","fileCount":816,"integrity":"sha512-6SgRj7GiIHtslQKL7oQE2qBoWNQXfunKkAk5se0UVZBg+NuG7zypTy5y6jUhOEK2wPQM2xhWstBhddmBIkrGLw==","signatures":[{"sig":"MEUCIF7Qexj8NwZ8nVlPf+Vn8CF9tZi63RuB6VeO0JIjLtEeAiEAs7xa5baEej0LSsf0eLrQ6KOGUG/peWm812OyGBlt7os=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2905513},"main":"dist/index.js","pnpm":{"overrides":{"hono":"4.12.5","esbuild":"0.27.3","basic-ftp":"5.2.0","minimatch":"10.2.4","@hono/node-server":"1.19.11","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","koffi"]},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"675f4b3a151ea820ab8651718a7fcf1f54caa108","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","prepack":"pnpm run build","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"lefthook install","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","prepublishOnly":"pnpm run check","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.6_1773117508013_0.711675610349223","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@jshookmcp/jshook","version":"0.1.7","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.1.7","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"14e0d6b6c3430a5fb6748bc796855b72f71fe357","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.7.tgz","fileCount":816,"integrity":"sha512-AKDo1Y/TXnlakG9WzMKDFwCUlaSddP7O2sZQgrx2Nw9Tu0iGlKsmlkFQCvolHby20G3wehNUiChN7uMoupPQ+g==","signatures":[{"sig":"MEUCIQCwo+WJQYYkNVruvx43UtVWl79ON1fpF9maE4uq/BZLDAIgBHhyjduzOntYYvx7YpOqwdR1/y636GGni+MeP1XekzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2903194},"main":"dist/index.js","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.1.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"lefthook install","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","package:verify-bin":"node scripts/verify-packed-bin.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.1.7.tgz","_integrity":"sha512-AKDo1Y/TXnlakG9WzMKDFwCUlaSddP7O2sZQgrx2Nw9Tu0iGlKsmlkFQCvolHby20G3wehNUiChN7uMoupPQ+g==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.7_1773137957889_0.8003773343178697","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@jshookmcp/jshook","version":"0.1.8","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.1.8","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.js","jshookmcp":"dist/index.js"},"dist":{"shasum":"f40bbcf052b2681a8934150e671ef77411dbf78f","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.8.tgz","fileCount":821,"integrity":"sha512-9nMuZFr2rXrpgjzIxzKA285nBETHyv9AyNcQUfIWx9vxUXHUx4hOzd7OuAcKm2XFql1WlqEIZvEH5FnDJDxmOA==","signatures":[{"sig":"MEQCIBRaQ4qltJ2t4IdeOdwGs5NBNQFcivgkVKofcUdGb1f5AiBaVsGTNrHidFgK29iJIyi4wPMp9JeYTQ1n/ejqI+WdcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2929230},"main":"dist/index.js","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.1.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","package:verify-bin":"node scripts/verify-packed-bin.mjs","package:verify-install":"node scripts/verify-packed-install.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.1.8.tgz","_integrity":"sha512-9nMuZFr2rXrpgjzIxzKA285nBETHyv9AyNcQUfIWx9vxUXHUx4hOzd7OuAcKm2XFql1WlqEIZvEH5FnDJDxmOA==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","webcrack":"^2.15.1","commander":"^14.0.3","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.8_1773206161705_0.11650974678057313","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@jshookmcp/jshook","version":"0.1.9","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.1.9","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"fef7055fc8e1f9487e08c2d35721e21ac30a6765","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.1.9.tgz","fileCount":1222,"integrity":"sha512-iM+AfupXQXZ/KSoWGJSFldkU75qmPoMZBdeg4tKsRHRmPescv+keHEMXf3SB/QUxnzUv8rwscJvgsyBARZKd+g==","signatures":[{"sig":"MEQCIF7rdx9iiEAfrDmcuwpx1ON9Re2SqzpmLMdLOqf3AU97AiA/zZc22ZZLsV/bxxqe+DsHKRejIjfH5iEtsC4KaAo4UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3808132},"main":"dist/src/index.js","pnpm":{"overrides":{"hono":"4.12.7","esbuild":"0.27.3","basic-ftp":"5.2.0","minimatch":"10.2.4","isolated-vm":"6.1.2","@hono/node-server":"1.19.11","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","isolated-vm","koffi"]},"type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"184a6c40f793a9841a266c66a364e913bc27632f","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","prepack":"pnpm run build","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","prepublishOnly":"pnpm run check","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","package:verify-bin":"node scripts/verify-packed-bin.mjs","package:verify-install":"node scripts/verify-packed-install.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","vite":"^6.0.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@vitest/coverage-v8":"^4.0.18","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.1.9_1773483340564_0.8204818591071639","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@jshookmcp/jshook","version":"0.2.0","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.0","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"3e41c08ae13a36e49972750d6f8030dc6ae4f1a3","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.0.tgz","fileCount":1222,"integrity":"sha512-yXKkeEmIvljPDvxwyGtxMNMDGVWqDryMYKvpXzDY8qvuUEOo58Zaac+GNKadv0aOPvR2vmXfcMxpsev/WsaSSw==","signatures":[{"sig":"MEUCICrUDXKFF8XjMxWaz+UJOlzKNZklqQamTw0t3hLwJx8BAiEAuky5IzE7vl4wjmAVVLov5nKWEOOnoH2VcL4YIwl+13E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3805534},"main":"dist/src/index.js","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.2.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","package:verify-bin":"node scripts/verify-packed-bin.mjs","package:verify-install":"node scripts/verify-packed-install.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.2.0.tgz","_integrity":"sha512-yXKkeEmIvljPDvxwyGtxMNMDGVWqDryMYKvpXzDY8qvuUEOo58Zaac+GNKadv0aOPvR2vmXfcMxpsev/WsaSSw==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 244 built-in tools (236 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vite":"^6.0.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@vitest/coverage-v8":"^4.0.18","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.0_1773485124995_0.8534475869747975","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@jshookmcp/jshook","version":"0.2.1","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.1","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"314decc84674bb3f09dd597438c67adef6a143f8","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.1.tgz","fileCount":1734,"integrity":"sha512-hiWtn0mqQogJKBssEjyMxqZ+LBhlxdRx3m2nuZwYPnhDlgUy/I/q4U3YdCYLGwIwhxKpghHUAj80MPsygQf+Ng==","signatures":[{"sig":"MEUCIGanlPa3tY696R+pWfNkQjLrkVARaT77QAZjCH1pvV8VAiEAzjJcr9d4rbtKSf1wi465dYQ03vUyWRz31FKBkedAFzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6306420},"main":"dist/src/index.js","pnpm":{"overrides":{"hono":"4.12.7","esbuild":"0.27.3","basic-ftp":"5.2.0","minimatch":"10.2.4","isolated-vm":"6.1.2","@hono/node-server":"1.19.11","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","isolated-vm","koffi"]},"type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"40d8d96b4e2f9618ab5a31c51c385170f6596add","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.json && tsc-alias -p tsconfig.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","prepack":"pnpm run build","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","prepublishOnly":"pnpm run check","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","package:verify-bin":"node scripts/verify-packed-bin.mjs","package:verify-install":"node scripts/verify-packed-install.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 238 built-in tools (224 domain tools across 16 domains) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.2","devDependencies":{"tsx":"^4.21.0","vite":"^6.0.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","estree-walker":"^2.0.2","@vitest/coverage-v8":"^4.0.18","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.1_1773758181142_0.9797111497406845","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@jshookmcp/jshook","version":"0.2.2","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.2","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"1bbdc35eddd94fab14a54be6bf3563395091e436","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.2.tgz","fileCount":1052,"integrity":"sha512-nDXqvoZeaIXLC3vw+jfsHkT68TZeGZCWCtnqMNpIDW8wN5cPecWwSSDKv9KbpcA5a4CN5/6cZFWmJURh1v1bHg==","signatures":[{"sig":"MEUCIQDuAu80Brux4/PEF8vok/DnjGgxg6du8qswKtgGY67N8wIgVX0tzUzTAwJTuBjCARq+oIQkh5kgNDd0zSe4atIYPyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3484903},"main":"dist/src/index.js","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.2.2.tgz","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./plugin-api":{"types":"./dist/src/server/plugin-api.d.ts","import":"./dist/src/server/plugin-api.js"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.2.2.tgz","_integrity":"sha512-nDXqvoZeaIXLC3vw+jfsHkT68TZeGZCWCtnqMNpIDW8wN5cPecWwSSDKv9KbpcA5a4CN5/6cZFWmJURh1v1bHg==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 249 built-in tools (242 domain tools across 17 domains plus 7 built-in meta-tools) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orc","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.30","vite":"^6.0.0","eslint":"^10.0.2","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","medium-zoom":"^1.1.0","estree-walker":"^2.0.2","quickjs-emscripten":"^0.32.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@huggingface/transformers":"^3.8.1","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.2_1774090795544_0.4127014294300182","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@jshookmcp/jshook","version":"0.2.3","keywords":["mcp","model-context-protocol","javascript","javascript-analysis","security-analysis","hook","hooking","deobfuscation","ai","claude","puppeteer","chrome-devtools","debugger","web-scraping","anti-detection","captcha","browser-automation","network-monitoring","ast","obfuscation","cryptography-detection","code-analysis"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.3","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"df4b6f94dc8733beb15e869cff77c141b1a8e73e","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.3.tgz","fileCount":1054,"integrity":"sha512-PcjFboohkURGUPmfBhcAFvc3W1ST0GPu2XZ6aBEOvf8eUjSjWezjz9Wqdb/Zoui9WmQ0pWV+XT2n3GLIcAqaDg==","signatures":[{"sig":"MEQCIBt7p8QkgrhXhTjmLmK7OcpcauWQBj7EC7Wvctt6rBB1AiBpEWbZ1gTGo19uW/Fuz06Hlvdf5wl/k9xnwblDzvX7OQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3535073},"main":"dist/src/index.js","type":"module","_from":"file:jshookmcp-jshook-0.2.3.tgz","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./plugin-api":{"types":"./dist/src/server/plugin-api.d.ts","import":"./dist/src/server/plugin-api.js"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run lint:ox && pnpm run lint && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"prettier --write \"src/**/*.ts\"","lint:md":"pnpm dlx markdownlint-cli2","lint:ox":"oxlint src/ tests/","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.build.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"node scripts/audit-tools.mjs","format:docs":"pnpm run docs:generate && prettier docs .github README.md README.zh.md CONTRIBUTING.md --write","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs && prettier \"docs/reference/**/*.md\" \"docs/en/reference/**/*.md\" --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","check:docs-format":"prettier docs .github README.md README.zh.md CONTRIBUTING.md --check","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"C:\\Users\\vmoranv\\AppData\\Local\\Temp\\67a3aad67a10011ee1dea7e4cb4e73db\\jshookmcp-jshook-0.2.3.tgz","_integrity":"sha512-PcjFboohkURGUPmfBhcAFvc3W1ST0GPu2XZ6aBEOvf8eUjSjWezjz9Wqdb/Zoui9WmQ0pWV+XT2n3GLIcAqaDg==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server with 249 built-in tools (242 domain tools across 17 domains plus 7 built-in meta-tools) for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orc","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.30","vite":"^6.0.0","eslint":"^10.0.2","oxlint":"^1.56.0","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","prettier":"^3.8.1","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","medium-zoom":"^1.1.0","estree-walker":"^2.0.2","quickjs-emscripten":"^0.32.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","@huggingface/transformers":"^3.8.1","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.3_1774175743311_0.8445650912518012","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@jshookmcp/jshook","version":"0.2.5","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.5","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"09fa717ffd9fd8a67a0c70d535c0d7c2057f6c4f","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.5.tgz","fileCount":1121,"integrity":"sha512-8ReZ43zg8q8u93gk6KZzTKmOGQg+Lfzv1OEwDa8mz8TV6ky9+7aJ++SgNjeTcyn2AwS+detSES2BC91DP6P2vw==","signatures":[{"sig":"MEUCIDy0t2TX550Guuk5y3d8bCX2JISIoxK/r8+GOqa2ylIgAiEA1vYlivdjlqYYbFvBMimL8sFvO//KSkS05YXSJJlkqAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3577116},"main":"dist/src/index.js","type":"module","_from":"file:jshookmcp-jshook-0.2.5.tgz","types":"dist/src/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./plugin-api":{"types":"./dist/src/server/plugin-api.d.ts","import":"./dist/src/server/plugin-api.js"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run metadata:check && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.build.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","test:coverage":"cross-env ENABLE_INJECTION_TOOLS=true vitest run --coverage","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"C:\\Users\\vmoranv\\AppData\\Local\\Temp\\6c196671009336b84cbd3558dca0dc38\\jshookmcp-jshook-0.2.5.tgz","_integrity":"sha512-8ReZ43zg8q8u93gk6KZzTKmOGQg+Lfzv1OEwDa8mz8TV6ky9+7aJ++SgNjeTcyn2AwS+detSES2BC91DP6P2vw==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server with 327 built-in tools across 23 domains for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.3.1","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.30","vite":"^6.0.0","oxfmt":"^0.41.0","oxlint":"^1.56.0","vitest":"^4.0.18","nodemon":"^3.1.14","lefthook":"^2.1.3","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","medium-zoom":"^1.1.0","estree-walker":"^2.0.2","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","better-sqlite3":"12.6.2","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.5_1775049142852_0.2297141016608515","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@jshookmcp/jshook","version":"0.2.6","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.6","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/src/index.js","jshookmcp":"dist/src/index.js"},"dist":{"shasum":"c9ffe710a619e01e02acc6e5f5c451239d285d96","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.6.tgz","fileCount":1314,"integrity":"sha512-sQN+n/j/dzZp9+RURg0jiODKj6RXd7sd1/cyOYSMpt8mGWpUTkKf/qv0NWNhrY1SzTy1DfofI+1MOy6RCNdIGw==","signatures":[{"sig":"MEYCIQDomHGlmO2bfuo0CZyMTjjfNjwP7oXY3KiFuTrovy3KYgIhAKcl322TjwEhZVtCEh2dsQBkLaT5mHSc+IvwOGl4S0oo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4157891},"main":"dist/src/index.js","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.2.6.tgz","types":"dist/src/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"},"./plugin-api":{"types":"./dist/src/server/plugin-api.d.ts","import":"./dist/src/server/plugin-api.js"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"vitest run","build":"node scripts/clean-dist.mjs && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && pnpm -C packages/extension-sdk build && node scripts/copy-native-scripts.mjs && node scripts/generate-entry-reexport.mjs && node scripts/fix-bin-permissions.mjs","check":"pnpm run metadata:check && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run test","start":"node dist/src/index.js","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"pnpm dlx markdownlint-cli2","package":"pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.build.json && pnpm -C packages/extension-sdk typecheck","docs:build":"pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"pnpm install && pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","test:coverage":"node -e \"require('fs').mkdirSync('coverage/.tmp', { recursive: true })\" && cross-env ENABLE_INJECTION_TOOLS=true COVERAGE_FULL=true vitest run --coverage","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"D:\\coding\\reverse\\jshookmcp\\.release-artifacts\\jshookmcp-jshook-0.2.6.tgz","_integrity":"sha512-sQN+n/j/dzZp9+RURg0jiODKj6RXd7sd1/cyOYSMpt8mGWpUTkKf/qv0NWNhrY1SzTy1DfofI+1MOy6RCNdIGw==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server with 337 built-in tools across 24 domains for AI-assisted JavaScript analysis and security analysis — browser automation, CDP debugging, network monitoring, JS hooks, code analysis, and workflow orchestration","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.1","dotenv":"^17.4.0","openai":"^6.25.0","commander":"^14.0.3","tinyglobby":"^0.2.15","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.0","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","@anthropic-ai/sdk":"^0.78.0","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@huggingface/transformers":"^3.8.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.30","vite":"^8.0.2","oxfmt":"^0.43.0","oxlint":"^1.58.0","vitest":"^4.1.2","lefthook":"^2.1.4","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^5.9.3","@types/node":"^25.3.0","medium-zoom":"^1.1.0","estree-walker":"^2.0.2","@vitest/coverage-v8":"^4.1.2","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.1","better-sqlite3":"12.6.2","playwright-core":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.6_1775282900189_0.6112560549457806","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@jshookmcp/jshook","version":"0.2.7","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.7","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"07c29ce1624b0b20d5b2047d25fa59df7e8b29e4","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.7.tgz","fileCount":51,"integrity":"sha512-w9MIldkQWLD7sZyaBI4Oc+onM+ZGO8C2tG6fjxFSAlxexuxDHRoX2ttH25PnQv69JhKX3fOaIpbFf0OMQEOITw==","signatures":[{"sig":"MEUCIEnpn8JlkEHZOMLv9MBQi3oyeNnz+2BxIUrvCmRqMBDeAiEA7dYVWUxjKCNX+10zI8vypDgWanJ2GSamUuEFnnCdWS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2688428},"main":"dist/index.mjs","pnpm":{"overrides":{"hono":">=4.12.14","esbuild":"0.27.3","flatted":">=3.4.2","basic-ftp":">=5.3.0","minimatch":"10.2.4","protobufjs":">=7.5.5","isolated-vm":"6.1.2","path-to-regexp":"8.4.0","vitepress>vite":"$vite","brace-expansion":"5.0.5","picomatch@^2.0.0":"2.3.2","picomatch@^4.0.0":"4.0.4","@hono/node-server":"1.19.13","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","isolated-vm","koffi","lefthook","onnxruntime-node","protobufjs"]},"type":"module","types":"dist/index.d.mts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"gitHead":"368be426878b25343f8fd19ddb154a8e02bc20cb","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/clean-dist.mjs && node scripts/generate-domains-index.mjs && tsdown && corepack pnpm -C packages/extension-sdk build","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","prepack":"corepack pnpm run metadata:check && corepack pnpm run build","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","metadata:check":"node scripts/generate-metadata.mjs --check","prepublishOnly":"corepack pnpm run check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.7","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","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.6","dotenv":"^17.4.1","openai":"^6.34.0","mockttp":"^4.3.1","commander":"^14.0.3","tinyglobby":"^0.2.16","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"tsx":"^4.21.0","vue":"^3.5.32","vite":"^8.0.8","oxfmt":"^0.44.0","oxlint":"^1.59.0","tsdown":"^0.21.7","vitest":"^4.1.4","lefthook":"^2.1.5","rolldown":"1.0.0-rc.15","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^6.0.2","@types/node":"^25.5.2","medium-zoom":"^1.1.0","estree-walker":"^3.0.3","@vitest/coverage-v8":"^4.1.4","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.3","better-sqlite3":"12.8.0","playwright-core":"^1.59.1","@devicefarmer/adbkit":"^3.3.8"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.7_1776421856886_0.6094836517011339","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@jshookmcp/jshook","version":"0.2.8","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.8","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"d36dce1190c57078e7401a3d8446ddffdbcd33e7","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.8.tgz","fileCount":51,"integrity":"sha512-//oSg1wSOEgyNBF4fnGEkn8ucwyYHEBccAX5/sazR+rcl07xIoMbx1lKtt5arYX3YrMMNq4FeY7F9WnAthjnJA==","signatures":[{"sig":"MEUCIBhGp8kgunCYuBnKOaNHqPmYAxARBkT5ntWXYZJkFW7cAiEA9wy8tKKvwmeIBL31OSnPnssUMsQh0NUOEBluJ5kAFaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2897617},"main":"dist/index.mjs","type":"module","_from":"file:jshookmcp-jshook-0.2.8.tgz","types":"dist/index.d.mts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/clean-dist.mjs && node scripts/generate-domains-index.mjs && tsdown && corepack pnpm -C packages/extension-sdk build","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"C:\\Users\\vmoranv\\AppData\\Local\\Temp\\d3c961c1756e12167ec67fdcbc1f72f8\\jshookmcp-jshook-0.2.8.tgz","_integrity":"sha512-//oSg1wSOEgyNBF4fnGEkn8ucwyYHEBccAX5/sazR+rcl07xIoMbx1lKtt5arYX3YrMMNq4FeY7F9WnAthjnJA==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.7","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","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ajv":"^8.18.0","ora":"^9.3.0","zod":"^4.3.6","chalk":"^5.6.2","koffi":"^2.15.6","dotenv":"^17.4.1","openai":"^6.34.0","mockttp":"^4.3.1","commander":"^14.0.3","tinyglobby":"^0.2.16","ajv-formats":"^3.0.1","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@huggingface/transformers":"^4.0.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.32","vite":"^8.0.8","oxfmt":"^0.44.0","oxlint":"^1.59.0","tsdown":"^0.21.7","vitest":"^4.1.4","lefthook":"^2.1.5","rolldown":"1.0.0-rc.15","cross-env":"^10.1.0","tsc-alias":"^1.8.16","vitepress":"1.6.4","typescript":"^6.0.2","@types/node":"^25.5.2","medium-zoom":"^1.1.0","estree-walker":"^3.0.3","@vitest/coverage-v8":"^4.1.4","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.9.3","better-sqlite3":"12.8.0","playwright-core":"^1.59.1","@devicefarmer/adbkit":"^3.3.8"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.8_1776501876115_0.09591687274956184","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@jshookmcp/jshook","version":"0.2.9","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.2.9","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"02f91efc96cfa64c1b5cd35399b4894f9f529430","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.2.9.tgz","fileCount":172,"integrity":"sha512-8PQ4GGmMf5f1w8P1em3+TRDsGZa0BDBK+wMfJP7tyuFykAZ7M+zfz9UPZ6J7W4ElAKxG6rhnc3lZVpIbY4zQVg==","signatures":[{"sig":"MEUCIAksleKdcoWIx9grBKPN1G6YhUyYbQFcHt21KVjaV53FAiEAlWzGRlk2ITe+Cx3Yva74E87ZEXFu4u+cjHZsaUhSWGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2931270},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.2.9.tgz","types":"dist/index.d.mts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/clean-dist.mjs && node scripts/generate-domains-index.mjs && tsdown","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","build:all":"corepack pnpm run build && corepack pnpm run build:sdk","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"D:\\coding\\reverse\\jshookmcp\\.release-artifacts\\jshookmcp-jshook-0.2.9.tgz","_integrity":"sha512-8PQ4GGmMf5f1w8P1em3+TRDsGZa0BDBK+wMfJP7tyuFykAZ7M+zfz9UPZ6J7W4ElAKxG6rhnc3lZVpIbY4zQVg==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.7","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","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","jsdom":"^29.0.2","koffi":"^2.15.6","dotenv":"^17.4.1","mockttp":"^4.3.1","tinyglobby":"^0.2.16","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.32","vite":"^8.0.8","oxfmt":"^0.46.0","oxlint":"^1.59.0","tsdown":"^0.21.7","vitest":"^4.1.4","lefthook":"^2.1.5","cross-env":"^10.1.0","vitepress":"1.6.4","typescript":"^6.0.2","@types/node":"^25.5.2","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.1","@vitest/coverage-v8":"^4.1.4","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"^2.15.1","camoufox-js":"^0.10.2","better-sqlite3":"12.9.0","playwright-core":"^1.59.1","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.2.9_1777023990329_0.7644850217606416","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@jshookmcp/jshook","version":"0.3.0","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.0","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"6183d6abf10636c7c82b8c211e6e8f36ec9f5a0c","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.0.tgz","fileCount":177,"integrity":"sha512-JSan1BCw4VAB9J8627UsoSXG57Oy10DsP2/WI/zrkhffO/axlKSjc3y3FLvlU0VLBl8JzfvP+5dUn0q9+YAPeg==","signatures":[{"sig":"MEUCICw+ZLA1dHI4HHeLlSDLzAuSH/BThhLB4z/1USM6eUEvAiEApJHWGAsJ3yS80rOCSyD1iXzOVEFwKDXz+SSZAtysO4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3138960},"main":"dist/index.mjs","pnpm":{"overrides":{"hono":">=4.12.14","esbuild":"0.27.3","flatted":">=3.4.2","basic-ftp":">=5.3.0","minimatch":"10.2.4","protobufjs":">=7.5.5","isolated-vm":"6.1.2","path-to-regexp":"8.4.0","brace-expansion":"5.0.5","picomatch@^2.0.0":"2.3.2","picomatch@^4.0.0":"4.0.4","@hono/node-server":"1.19.13","express-rate-limit":"8.3.0"},"onlyBuiltDependencies":["better-sqlite3","esbuild","isolated-vm","koffi","lefthook","onnxruntime-node","protobufjs"]},"type":"module","types":"dist/index.d.mts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"gitHead":"17319b9574499e9918adba5d71753ca20e4b94ca","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/clean-dist.mjs && node scripts/generate-domains-index.mjs && tsdown","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","prepack":"corepack pnpm run metadata:check && corepack pnpm run build:all","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","build:all":"corepack pnpm run build && corepack pnpm run build:sdk","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","prepublishOnly":"corepack pnpm run check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.7","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","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","jsdom":"^29.0.2","koffi":"^2.15.6","dotenv":"^17.4.1","mockttp":"^4.3.1","tinyglobby":"^0.2.16","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"tsx":"^4.21.0","vue":"^3.5.32","vite":"^8.0.8","oxfmt":"^0.47.0","oxlint":"^1.59.0","tsdown":"^0.21.7","vitest":"^4.1.4","lefthook":"^2.1.5","cross-env":"^10.1.0","vitepress":"1.6.4","typescript":"^6.0.2","@types/node":"^25.5.2","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.1","@vitest/coverage-v8":"^4.1.4","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"2.15.1","camoufox-js":"^0.10.2","better-sqlite3":"12.9.0","playwright-core":"^1.59.1","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.0_1777649834216_0.0020685283739874105","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@jshookmcp/jshook","version":"0.3.1","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.1","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"e95ff56cbb23e9c85e67ee8b11d53337670ac738","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.1.tgz","fileCount":184,"integrity":"sha512-EaRhEbW00NS8E87c8+bYsyItvdhzOWDkgel2KbBdJu/C32XeaztKRDfWgrTpUNWIHu2fU8whWH9hviFUsBhnnA==","signatures":[{"sig":"MEYCIQCbhTAsgZbmqar2QtD9BW5znI0TK+mg7iDNEseR1VfT4gIhAMoYZlZCMTly1N/9wRD7TZxq72N5qq0NdmfSmtnivKWz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2010720},"main":"dist/index.mjs","type":"module","_from":"file:jshookmcp-jshook-0.3.1.tgz","types":"dist/index.d.mts","engines":{"node":"^22.12.0 || ^24.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"C:\\Users\\vmoranv\\AppData\\Local\\Temp\\83e9885b739deec8cbb53cd28d2a0bf1\\jshookmcp-jshook-0.3.1.tgz","_integrity":"sha512-EaRhEbW00NS8E87c8+bYsyItvdhzOWDkgel2KbBdJu/C32XeaztKRDfWgrTpUNWIHu2fU8whWH9hviFUsBhnnA==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"11.14.1","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","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.3.6","jsdom":"^29.0.2","koffi":"^2.15.6","dotenv":"^17.4.1","mockttp":"^4.3.1","tinyglobby":"^0.2.16","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vue":"^3.5.32","vite":"^8.0.8","oxfmt":"^0.48.0","oxlint":"^1.59.0","tsdown":"^0.22.0","vitest":"^4.1.4","lefthook":"^2.1.5","cross-env":"^10.1.0","vitepress":"1.6.4","typescript":"^6.0.2","@types/node":"^25.5.2","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.1","@vitest/coverage-v8":"^4.1.4","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"2.16.0","camoufox-js":"^0.10.2","better-sqlite3":"12.9.0","playwright-core":"^1.59.1","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.1_1778930749790_0.09401432552735223","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@jshookmcp/jshook","version":"0.3.2","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.2","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"5e96623dbbe366a076494e22177b38ef98f811e8","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.2.tgz","fileCount":203,"integrity":"sha512-vunN9qSJOsa7p7dwO8M4zduMAsuHWkWn5V1lAKvH7Wdi6ABymF4ERf6Vif3mbpvYdCTCxqHCph8K9Ids8PeltA==","signatures":[{"sig":"MEYCIQC/CkeeDh28oKpsPDbyUe/zyoAIULiglxzHA8RDNwwasgIhALYWklPTDRJYgG1wmnjzMAaSMmDp1RLOnS9FXRiYne7R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2174703},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.3.2.tgz","types":"dist/index.d.mts","engines":{"node":"^22.12.0 || ^24.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.3.2.tgz","_integrity":"sha512-vunN9qSJOsa7p7dwO8M4zduMAsuHWkWn5V1lAKvH7Wdi6ABymF4ERf6Vif3mbpvYdCTCxqHCph8K9Ids8PeltA==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.8","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","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","jsdom":"^29.0.2","koffi":"^3.0.1","yauzl":"^3.3.1","dotenv":"^17.4.1","mockttp":"^4.4.2","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","vue":"^3.5.32","vite":"^8.0.14","oxfmt":"^0.51.0","oxlint":"^1.66.0","tsdown":"^0.22.0","vitest":"^4.1.7","lefthook":"^2.1.8","cross-env":"^10.1.0","vitepress":"1.6.4","tinyglobby":"^0.2.16","typescript":"^6.0.2","@types/node":"^25.9.1","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.3","@vitest/coverage-v8":"^4.1.7","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"2.16.0","camoufox-js":"^0.10.2","better-sqlite3":"12.10.0","playwright-core":"^1.60.0","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.2_1779860938887_0.16204191587017314","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@jshookmcp/jshook","version":"0.3.3","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.3","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"3704165c4ce4b7e3285c1b80ef4d5e817a97d67f","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.3.tgz","fileCount":182,"integrity":"sha512-z1XpuxthRqp2V8VxKQ8QI1FGKknnTVC4KGvfph8CyUmcDkuIgfMvVsP2B+e+i4Utfc+Y3qVmJzK3+qzaV9SrkQ==","signatures":[{"sig":"MEQCIGUVl1H1CfklX7oUT2uPE25REgpafK92ZDPJ21nqcJeeAiBjk991foVgKbSCi4pzcVXW5SifsNQ5R89QsRx2UU9hmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2335048},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.3.3.tgz","types":"dist/index.d.mts","engines":{"node":"^22.12.0 || ^24.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","test:e2e":"cross-env E2E_TARGET_URL=https://vmoranv.github.io/jshookmcp/ vitest run --config tests/e2e/vitest.e2e.config.ts","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.3.3.tgz","_integrity":"sha512-z1XpuxthRqp2V8VxKQ8QI1FGKknnTVC4KGvfph8CyUmcDkuIgfMvVsP2B+e+i4Utfc+Y3qVmJzK3+qzaV9SrkQ==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.8","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","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.3.6","jsdom":"^29.0.2","koffi":"^3.0.1","yauzl":"^3.3.1","dotenv":"^17.4.1","mockttp":"^4.4.2","@babel/types":"^7.29.0","@babel/parser":"^7.29.2","@babel/traverse":"^7.29.0","@babel/generator":"^7.29.1","quickjs-emscripten":"^0.32.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.3","vue":"^3.5.32","vite":"^8.0.14","oxfmt":"^0.53.0","oxlint":"^1.66.0","tsdown":"^0.22.0","vitest":"^4.1.7","lefthook":"^2.1.8","cross-env":"^10.1.0","vitepress":"1.6.4","tinyglobby":"^0.2.16","typescript":"^6.0.2","@types/node":"^25.9.1","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.3","@vitest/coverage-v8":"^4.1.7","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"2.16.0","camoufox-js":"^0.10.2","better-sqlite3":"12.10.0","playwright-core":"^1.60.0","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.3_1780749416356_0.8407055892592965","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@jshookmcp/jshook","version":"0.3.4","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.4","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"90b95d7fe21d9fde8a1593c9c4a4479ba1d96cea","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.4.tgz","fileCount":223,"integrity":"sha512-pKaXfOhYXxU0tYcj9+vyH2cRSgIrrYhloYjYIJrG9dzzak3pCuW/fCRKM2SxvfC8v74fP4tcLlqeUQyySBYm6w==","signatures":[{"sig":"MEUCIFxuMzhRpqG0t0xndRjIYKlFJWT//CeoyBydAxSyzWDPAiEA2b9NDtmkDSSAP4OucflAUL4V4UJ76ek7vOASOOo+4K0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3413305},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.3.4.tgz","types":"dist/index.d.mts","engines":{"node":"^22.12.0 || ^24.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","daemon":"cross-env MCP_TRANSPORT=http node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","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","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","dev:daemon":"cross-env MCP_TRANSPORT=http tsx --conditions=development watch src/index.ts","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.3.4.tgz","_integrity":"sha512-pKaXfOhYXxU0tYcj9+vyH2cRSgIrrYhloYjYIJrG9dzzak3pCuW/fCRKM2SxvfC8v74fP4tcLlqeUQyySBYm6w==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.8","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","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","jsdom":"^29.1.1","koffi":"^3.0.2","yauzl":"^3.4.0","dotenv":"^17.4.2","mockttp":"^4.4.2","binaryen":"^130.0.0","z3-solver":"^4.16.0","protobufjs":">=7.6.3","@babel/types":"^8.0.0","@babel/parser":"^8.0.0","@babel/traverse":"^8.0.0","@babel/generator":"^8.0.0","quickjs-emscripten":"^0.32.0","@alexaltea/capstone-js":"^5.0.9","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vue":"^3.5.38","vite":"^8.0.16","oxfmt":"^0.55.0","oxlint":"^1.70.0","tsdown":"^0.22.3","vitest":"^4.1.9","lefthook":"^2.1.9","cross-env":"^10.1.0","vitepress":"1.6.4","tinyglobby":"^0.2.17","typescript":"^6.0.3","@types/node":"^25.9.3","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.3","@vitest/coverage-v8":"^4.1.9","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"webcrack":"2.16.0","camoufox-js":"^0.11.1","better-sqlite3":"12.11.1","playwright-core":"^1.61.0","@devicefarmer/adbkit":"^3.3.8","@huggingface/transformers":"^4.2.0"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.4_1784132765092_0.3847410217207965","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@jshookmcp/jshook","version":"0.3.5","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.3.5","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"d5901d5c6ec6708f573022dfc208ca29863fc851","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.3.5.tgz","fileCount":252,"integrity":"sha512-QunELpgsxo1Wpq0vvgS0h9n0Sp8TaSOAUoaboI67LzVfYPq/J47OWpPovqzzYCH1oiXJbDRUu7Bdmjfaqt6b4w==","signatures":[{"sig":"MEUCIEiXpk5ieG+sjkt8wb+iP0d4qPTu/+92r/IvfMs4Gg7dAiEA7IEzYeR3acCocmVwUpZS8hFwbZHFfav4Kya0VE0Jzcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4078103},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.3.5.tgz","types":"dist/index.d.mts","engines":{"node":"^22.12.0 || ^24.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./fleet-api":{"types":"./dist/server/fleet-api.d.mts","import":"./dist/server/fleet-api.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","daemon":"cross-env MCP_TRANSPORT=http node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","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","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","dev:daemon":"cross-env MCP_TRANSPORT=http tsx --conditions=development watch src/index.ts","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","postinstall":"node scripts/postinstall.cjs","search:tune":"tsx scripts/search-tune/optimize.ts","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","metadata:sync":"node scripts/generate-metadata.mjs --write","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","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","metadata:check":"node scripts/generate-metadata.mjs --check","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","search:benchmark-model":"tsx scripts/search-tune/compare-static-model.ts","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.3.5.tgz","_integrity":"sha512-QunELpgsxo1Wpq0vvgS0h9n0Sp8TaSOAUoaboI67LzVfYPq/J47OWpPovqzzYCH1oiXJbDRUu7Bdmjfaqt6b4w==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"10.9.8","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","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","jsdom":"^29.1.1","koffi":"^3.0.2","yauzl":"^3.4.0","dotenv":"^17.4.2","mockttp":"4.4.2","protobufjs":"8.7.1","@babel/types":"^8.0.0","@babel/parser":"^8.0.0","@babel/traverse":"^8.0.0","@babel/generator":"^8.0.0","quickjs-emscripten":"^0.32.0","@alexaltea/capstone-js":"^5.0.9","@huggingface/tokenizers":"^0.1.3","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vue":"^3.5.38","vite":"^8.1.5","oxfmt":"^0.60.0","oxlint":"^1.70.0","tsdown":"^0.22.3","vitest":"^4.1.9","lefthook":"^2.1.9","cross-env":"^10.1.0","vitepress":"2.0.0-alpha.18","tinyglobby":"^0.2.17","typescript":"^6.0.3","@types/node":"^25.9.3","medium-zoom":"^1.1.0","@types/jsdom":"^28.0.3","@vitest/coverage-v8":"^4.1.9","@types/better-sqlite3":"^7.6.13","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"binaryen":"^130.0.0","webcrack":"2.16.0","z3-solver":"^5.0.0","camoufox-js":"^0.11.1","better-sqlite3":"12.11.1","playwright-core":"^1.61.0","@devicefarmer/adbkit":"^3.3.8"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.3.5_1785816528495_0.499044219797836","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@jshookmcp/jshook","version":"0.4.2","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"],"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","_id":"@jshookmcp/jshook@0.4.2","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"homepage":"https://github.com/vmoranv/jshookmcp#readme","bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"dist":{"shasum":"836a730e736f87f816c772445ee76d374e53c9be","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.4.2.tgz","fileCount":359,"integrity":"sha512-tAk7c1M5T/0e3FYkpPUI7EhoszfnyDu4J5CXf+FcFIg5RdoTkcnR7mS3xtEBm2WvfLhWTUMxcrwGBPw986ZfiQ==","signatures":[{"sig":"MEYCIQDepMMU4aOH3YJm2OMboXBlpglOjIO4ISagbzDSA3f9agIhAJyEdEaH/tHJtp4CjONuYFRm5RLeoeDCoXMVTOAvT92n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jshookmcp%2fjshook@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4820485},"main":"dist/index.mjs","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.4.2.tgz","types":"dist/index.d.mts","engines":{"node":"^22.22.2 || ^24.15.0 || >=26.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./fleet-api":{"types":"./dist/server/fleet-api.d.mts","import":"./dist/server/fleet-api.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run openapi:check && corepack pnpm run audit:domains && corepack pnpm run audit:events && corepack pnpm run audit:promises && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","daemon":"cross-env MCP_TRANSPORT=http node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","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","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","dev:daemon":"cross-env MCP_TRANSPORT=http tsx --conditions=development watch src/index.ts","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","search:tune":"tsx scripts/search-tune/optimize.ts","audit:events":"node scripts/audit-event-contracts.mjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","search:stats":"node scripts/search-quality-stats.mjs","audit:domains":"node scripts/audit-domain-integrity.mjs","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","hooks:install":"node scripts/postinstall.cjs","metadata:sync":"node scripts/generate-metadata.mjs --write","openapi:check":"node scripts/generate-openapi.mjs --check","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","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","audit:promises":"node scripts/audit-promise-assertions.mjs","metadata:check":"node scripts/generate-metadata.mjs --check","openapi:generate":"node scripts/generate-openapi.mjs","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","audit:events:selftest":"node scripts/audit-event-contracts.selftest.mjs","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","search:benchmark-model":"tsx scripts/search-tune/compare-static-model.ts","audit:promises:selftest":"node scripts/audit-promise-assertions.selftest.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"vmoranv6","email":"vmoranv@outlook.com"},"trustedPublisher":{"id":"github","oidcConfigId":"9618c170-2b75-40b3-9eff-603abf4dd65c"}},"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.4.2.tgz","_integrity":"sha512-tAk7c1M5T/0e3FYkpPUI7EhoszfnyDu4J5CXf+FcFIg5RdoTkcnR7mS3xtEBm2WvfLhWTUMxcrwGBPw986ZfiQ==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"12.2.0","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","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.4.3","diff":"^9.0.0","jsdom":"^30.0.1","yauzl":"^3.4.0","dotenv":"^18.0.4","mockttp":"4.4.2","fast-uri":"^4.1.4","dns-packet":"^5.6.1","protobufjs":"8.8.0","@babel/types":"^8.0.6","@babel/parser":"^8.0.6","@babel/traverse":"^8.0.6","@babel/generator":"^8.0.6","@msgpack/msgpack":"^3.1.3","quickjs-emscripten":"^0.32.0","@alexaltea/capstone-js":"^5.0.9","@huggingface/tokenizers":"^0.1.3","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"contentPolicy":{"class":"dual-use"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vue":"^3.5.43","vite":"^8.3.0","oxfmt":"^0.70.0","fallow":"^3.30.0","oxlint":"^1.81.0","tsdown":"^0.23.0","vitest":"^4.1.11","lefthook":"^2.1.9","cross-env":"^10.1.0","vitepress":"2.0.0-alpha.20","tinyglobby":"^0.2.17","typescript":"^7.0.2","@types/node":"^26.6.3","medium-zoom":"^1.1.0","@types/jsdom":"^30.0.0","@types/dns-packet":"^5.6.5","@vitest/coverage-v8":"^4.1.11","@types/better-sqlite3":"^9.6.0","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"koffi":"^3.3.1","binaryen":"^132.0.0","webcrack":"2.16.0","z3-solver":"^5.0.0","camoufox-js":"^0.11.1","better-sqlite3":"13.0.3","playwright-core":"^1.61.0","https-proxy-agent":"^9.1.0","@opentelemetry/api":"^1.9.1","@devicefarmer/adbkit":"^3.3.8","@opentelemetry/resources":"^2.11.0","@opentelemetry/sdk-metrics":"^2.11.0","@opentelemetry/sdk-trace-base":"^2.11.0","@opentelemetry/exporter-trace-otlp-http":"^0.222.0","@opentelemetry/exporter-metrics-otlp-http":"^0.222.0"},"_npmOperationalInternal":{"tmp":"tmp/jshook_0.4.2_1791527232246_0.6484993585865955","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"_id":"@jshookmcp/jshook@0.4.3","bin":{"jshook":"dist/index.mjs","jshookmcp":"dist/index.mjs"},"bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"dist":{"shasum":"ccac5ad53c7f9de3c5c71e92c76d96330822531b","tarball":"https://registry.npmjs.org/@jshookmcp/jshook/-/jshook-0.4.3.tgz","integrity":"sha512-ts134m6OaIN8FaBQOgeZBUTa4y74DDbwUD5At0TRJ2GqDqkyVMvG+EBatFHRgmYcZxGgee7uLMttSPblDYuMPw==","fileCount":355,"unpackedSize":4895049,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@jshookmcp%2fjshook@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDd8WxSE6lDsVSz/xmtAE+DPxSMxrq7AIxkkQ0bIF4PfgIgQZj7uevGz/T6spX+5Bta78iXS53o/OiiwWu8mMopugU="}]},"main":"dist/index.mjs","name":"@jshookmcp/jshook","type":"module","_from":"file:.release-artifacts/jshookmcp-jshook-0.4.3.tgz","types":"dist/index.d.mts","author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"engines":{"node":"^22.22.2 || ^24.15.0 || >=26.0.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./fleet-api":{"types":"./dist/server/fleet-api.d.mts","import":"./dist/server/fleet-api.mjs"},"./plugin-api":{"types":"./dist/server/plugin-api.d.mts","import":"./dist/server/plugin-api.mjs"}},"license":"AGPL-3.0-only","mcpName":"io.github.vmoranv/jshookmcp","scripts":{"dev":"tsx --conditions=development watch src/index.ts","lint":"oxlint src/ tests/","test":"node scripts/run-vitest-smart.mjs run","build":"node scripts/build.mjs","check":"corepack pnpm run metadata:check && corepack pnpm run openapi:check && corepack pnpm run audit:domains && corepack pnpm run audit:events && corepack pnpm run audit:promises && corepack pnpm run lint && corepack pnpm run format:check && corepack pnpm run typecheck && corepack pnpm run test","start":"node dist/index.mjs","daemon":"cross-env MCP_TRANSPORT=http node dist/index.mjs","doctor":"tsx src/cli/doctor.ts","format":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --write --no-error-on-unmatched-pattern","lint:md":"corepack pnpm dlx markdownlint-cli2 README.md README.zh.md CONTRIBUTING.md docs/**/*.md","package":"corepack pnpm pack","docs:dev":"vitepress dev docs --host 127.0.0.1 --port 5173","lint:fix":"oxlint --fix src/ tests/","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","build:all":"corepack pnpm run build:dts && corepack pnpm run build:sdk","build:dts":"node scripts/build.mjs --dts","build:sdk":"corepack pnpm -C packages/extension-sdk build","typecheck":"tsc --noEmit -p tsconfig.json && corepack pnpm -C packages/extension-sdk typecheck","dev:daemon":"cross-env MCP_TRANSPORT=http tsx --conditions=development watch src/index.ts","docs:build":"corepack pnpm run docs:generate && vitepress build docs","audit:tools":"tsx scripts/audit-tools.mjs","deps:update":"corepack pnpm update -r","search:tune":"tsx scripts/search-tune/optimize.ts","audit:events":"node scripts/audit-event-contracts.mjs","docs:preview":"vitepress preview docs --host 127.0.0.1 --port 4173","format:check":"oxfmt \"src/**\" \"tests/**\" \"!tests/tmp/**\" \"!src/server/registry/generated-tool-catalog.ts\" --check --no-error-on-unmatched-pattern","install:full":"corepack pnpm install && corepack pnpm exec camoufox-js fetch","search:stats":"node scripts/search-quality-stats.mjs","audit:domains":"node scripts/audit-domain-integrity.mjs","audit:runtime":"node scripts/audit-runtime-probes.mjs","build:analyze":"cross-env BUNDLE_ANALYZE=1 corepack pnpm run build && echo 'Open stats.html in browser to view bundle analysis'","docs:generate":"node scripts/generate-vitepress-reference.mjs","hooks:install":"node scripts/postinstall.cjs","metadata:sync":"node scripts/generate-metadata.mjs --write","openapi:check":"node scripts/generate-openapi.mjs --check","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","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","audit:promises":"node scripts/audit-promise-assertions.mjs","metadata:check":"node scripts/generate-metadata.mjs --check","openapi:generate":"node scripts/generate-openapi.mjs","check:docs-format":"corepack pnpm run lint:md","git:refresh-noise":"node scripts/refresh-git-noise.mjs","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","package:verify-bin":"node scripts/verify-packed-bin.mjs","search:tune:report":"tsx scripts/search-tune/report.ts","audit:readme-counts":"node scripts/audit-readme-counts.mjs","audit:events:selftest":"node scripts/audit-event-contracts.selftest.mjs","package:verify-install":"node scripts/verify-packed-install.mjs","package:verify-release":"node scripts/verify-release-artifact.mjs","search:benchmark-model":"tsx scripts/search-tune/compare-static-model.ts","audit:promises:selftest":"node scripts/audit-promise-assertions.selftest.mjs","test:e2e:protocol-runtime":"vitest run --config tests/e2e/vitest.e2e.config.ts tests/e2e/protocol-runtime-assisted.e2e.test.ts","audit:readme-counts:selftest":"node scripts/audit-readme-counts.selftest.mjs"},"version":"0.4.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9618c170-2b75-40b3-9eff-603abf4dd65c"},"approver":{"name":"vmoranv6","email":"vmoranv@outlook.com"}},"homepage":"https://github.com/vmoranv/jshookmcp#readme","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"],"_resolved":"/home/runner/work/jshookmcp/jshookmcp/.release-artifacts/jshookmcp-jshook-0.4.3.tgz","_integrity":"sha512-ts134m6OaIN8FaBQOgeZBUTa4y74DDbwUD5At0TRJ2GqDqkyVMvG+EBatFHRgmYcZxGgee7uLMttSPblDYuMPw==","repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"_npmVersion":"12.2.1","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","directories":{},"maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"_nodeVersion":"22.23.4","dependencies":{"zod":"^4.6.7","diff":"^9.0.0","jsdom":"^30.0.1","yauzl":"^3.4.0","dotenv":"^18.0.4","mockttp":"4.4.2","fast-uri":"^4.1.4","dns-packet":"^5.6.1","protobufjs":"8.8.0","@babel/types":"^8.0.6","@babel/parser":"^8.0.6","@babel/traverse":"^8.0.6","@babel/generator":"^8.0.6","@msgpack/msgpack":"^3.1.3","quickjs-emscripten":"^0.32.0","@alexaltea/capstone-js":"^5.0.9","@huggingface/tokenizers":"^0.2.0","rebrowser-puppeteer-core":"^24.8.1","@modelcontextprotocol/core":"^2.3.1","@modelcontextprotocol/node":"^2.1.1","@modelcontextprotocol/client":"^2.3.1","@modelcontextprotocol/server":"^2.3.1"},"contentPolicy":{"class":"dual-use"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"devDependencies":{"tsx":"^4.22.4","vue":"^3.5.43","vite":"^8.3.0","oxfmt":"^0.70.0","fallow":"^3.30.0","oxlint":"^1.81.0","tsdown":"^0.23.0","vitest":"^4.1.11","lefthook":"^2.1.9","cross-env":"^10.1.0","vitepress":"2.0.0-alpha.20","tinyglobby":"^0.2.17","typescript":"^7.0.2","@types/node":"^26.6.3","medium-zoom":"^1.1.0","@types/jsdom":"^30.0.0","@types/dns-packet":"^5.6.5","@vitest/coverage-v8":"^4.1.11","@types/better-sqlite3":"^9.6.0","@types/babel__traverse":"^7.28.0","@types/babel__generator":"^7.27.0","rollup-plugin-visualizer":"^7.0.1"},"optionalDependencies":{"koffi":"^3.3.1","binaryen":"^132.0.0","webcrack":"2.16.0","z3-solver":"^5.0.0","camoufox-js":"^0.11.1","better-sqlite3":"13.0.3","playwright-core":"^1.61.0","https-proxy-agent":"^9.1.0","@opentelemetry/api":"^1.9.1","@devicefarmer/adbkit":"^3.3.8","@opentelemetry/resources":"^2.11.0","@opentelemetry/sdk-metrics":"^2.11.0","@opentelemetry/sdk-trace-base":"^2.11.0","@opentelemetry/exporter-trace-otlp-http":"^0.222.0","@opentelemetry/exporter-metrics-otlp-http":"^0.222.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jshook_0.4.3_1793337164332_0.07125691059633954"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-07T01:30:44.479Z","modified":"2026-10-30T05:12:44.747Z","0.1.2":"2026-03-07T01:30:44.829Z","0.1.3":"2026-03-07T03:19:36.674Z","0.1.4":"2026-03-07T06:58:11.614Z","0.1.5":"2026-03-08T09:55:13.639Z","0.1.6":"2026-03-10T04:38:28.237Z","0.1.7":"2026-03-10T10:19:18.082Z","0.1.8":"2026-03-11T05:16:02.039Z","0.1.9":"2026-03-14T10:15:40.783Z","0.2.0":"2026-03-14T10:45:25.223Z","0.2.1":"2026-03-17T14:36:21.444Z","0.2.2":"2026-03-21T10:59:55.781Z","0.2.3":"2026-03-22T10:35:43.543Z","0.2.5":"2026-04-01T13:12:23.134Z","0.2.6":"2026-04-04T06:08:20.393Z","0.2.7":"2026-04-17T10:30:57.050Z","0.2.8":"2026-04-18T08:44:36.325Z","0.2.9":"2026-04-24T09:46:30.568Z","0.3.0":"2026-05-01T15:37:14.405Z","0.3.1":"2026-05-16T11:25:49.984Z","0.3.2":"2026-05-27T05:48:59.113Z","0.3.3":"2026-06-06T12:36:56.519Z","0.3.4":"2026-07-15T16:26:05.358Z","0.3.5":"2026-08-04T04:08:48.675Z","0.4.2":"2026-10-09T06:27:12.351Z","0.4.3":"2026-10-30T05:12:44.443Z"},"bugs":{"url":"https://github.com/vmoranv/jshookmcp/issues"},"author":{"url":"https://github.com/vmoranv","name":"vmoranv"},"license":"AGPL-3.0-only","homepage":"https://github.com/vmoranv/jshookmcp#readme","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"],"repository":{"url":"git+https://github.com/vmoranv/jshookmcp.git","type":"git"},"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","maintainers":[{"name":"vmoranv6","email":"vmoranv@outlook.com"}],"readme":"<div align=\"center\">\n\n<img src=\"docs/public/favicon.png\" width=\"96\" alt=\"@jshookmcp/jshook\" />\n\n# @jshookmcp/jshook\n\n[![License: AGPLv3](https://img.shields.io/badge/License-AGPLv3-red.svg)](LICENSE)\n[![Node.js 22.22.2+](https://img.shields.io/badge/node-22.22.2%2B%20%7C%7C%2024.15%2B-brightgreen.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6.svg)](https://www.typescriptlang.org/)\n[![MCP](https://img.shields.io/badge/MCP-current-8A2BE2.svg)](https://modelcontextprotocol.io/)\n[![pnpm](https://img.shields.io/badge/pnpm-10.x-F69220.svg)](https://pnpm.io/)\n\n**一个为 AI 智能体打造的搜索优先、档位可调的前端逆向工程工作台。**\n\n[English](./README.md) · 中文\n\n<p align=\"center\">\n  <a href=\"https://github.com/vmoranv/jshookmcp/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/vmoranv/jshookmcp?style=for-the-badge\" alt=\"Stars\" />\n  </a>\n  <a href=\"https://github.com/vmoranv/jshookmcp/network/members\">\n    <img src=\"https://img.shields.io/github/forks/vmoranv/jshookmcp?style=for-the-badge\" alt=\"Forks\" />\n  </a>\n  <a href=\"https://github.com/vmoranv/jshookmcp/releases\">\n    <img src=\"https://img.shields.io/github/v/tag/vmoranv/jshookmcp?style=for-the-badge&sort=semver\" alt=\"最新版本\" />\n  </a>\n  <a href=\"LICENSE\">\n    <img src=\"https://img.shields.io/badge/license-AGPLv3-red?style=for-the-badge\" alt=\"License\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <!-- npm badge: re-add once @jshookmcp/jshook is published -->\n  <a href=\"https://nodejs.org/\">\n    <img src=\"https://img.shields.io/badge/node-22.22.2%2B-brightgreen?style=for-the-badge&logo=node.js\" alt=\"Node.js 22.22.2+\" />\n  </a>\n  <a href=\"https://www.typescriptlang.org/\">\n    <img src=\"https://img.shields.io/badge/TypeScript-strict-3178C6?style=for-the-badge&logo=typescript&logoColor=white\" alt=\"TypeScript strict\" />\n  </a>\n  <a href=\"https://modelcontextprotocol.io/\">\n    <img src=\"https://img.shields.io/badge/MCP-current-8A2BE2?style=for-the-badge\" alt=\"MCP current\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#jshook-的不同之处\">有什么不同</a> ·\n  <a href=\"#能力概览\">能力概览</a> ·\n  <a href=\"#典型场景\">典型场景</a> ·\n  <a href=\"#亮点\">亮点</a> ·\n  <a href=\"#传输与部署\">传输与部署</a> ·\n  <a href=\"#注册表快照\">注册表</a> ·\n  <a href=\"#架构\">架构</a> ·\n  <a href=\"#从源码构建\">构建</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://vmoranv.github.io/jshookmcp/\">官方文档</a> ·\n  <a href=\"https://vmoranv.github.io/jshookmcp/guide/getting-started.html\">快速开始</a> ·\n  <a href=\"https://vmoranv.github.io/jshookmcp/guide/configuration.html\">配置指南</a> ·\n  <a href=\"https://vmoranv.github.io/jshookmcp/reference/\">工具参考</a>\n</p>\n\n---\n\n</div>\n\n## jshook 的不同之处\n\n大多数面向 JS 分析的 MCP 服务器只暴露少量手写工具，或者只封装一个浏览器引擎。jshook 更接近 **面向前端逆向工程的操作系统**——36 个自发现域、搜索优先的元工具控制 token 开销、以及能在页面崩溃和会话中断时恢复的运行时：\n\n- **搜索优先、档位可调。** `search` 档加载约 3K token 的工具元数据；`full` 档一次性暴露全部 735 个工具，约 109K token（2026-10-10 实测——该值随工具总数增长，工具目录变大后需重新测量）。智能体按任务复杂度逐级提升：`search` → `workflow` → `full`，避免在第一轮就淹没在 schema 海洋里。\n- **运行时恢复与会话隔离。** Streamable HTTP 会话在重连后恢复已激活域、浏览器 attach 状态、coverage 状态；浏览器侧会话状态按客户端隔离，两个智能体不会互相踩对方的 CDP 会话。\n- **全栈浏览器自动化。** Chromium 与 Camoufox 通过 CDP 控制，内置反检测；显式输入驱动的 CAPTCHA 求解（不内置页面/特征探测）；按需生成自签名 HTTPS 拦截 CA；HTTP/2 帧级构造。\n- **真正的逆向工程，不是字符串搜索。** wabt WASM 反汇编（`wasm2wat` / `wasm-decompile` / `wasm-objdump`）、Frida/Ghidra/IDA 桥接、原生 FFI 扫描、硬件断点、PE 内省、GraphQL/Burp Suite 代理桥接、AST 变换——而不是把单条正则塞进工具里。\n- **动态可扩展。** 热重载插件、声明式工作流、自发现域让服务器不需要重启就能持续生长。\n\n---\n\n## 能力概览\n\n下面是开箱即用能力的快速扫描。每一行都链向下方的 [能力概览](#能力概览)。\n\n| 能力域 | 亮点 |\n| --- | --- |\n| **工具档位** | `search`（约 3K token，BM25 + 混合向量排序）· `workflow`（复合脚本）· `full`（全部 735 工具） |\n| **浏览器自动化** | Chromium 与 Camoufox · CDP 附着已有目标 · 反检测预设 · 显式输入 CAPTCHA 求解 · 弹窗、下载、权限、协议拦截器 |\n| **网络拦截** | HTTP/1.1 + HTTP/2 帧级构造 · MITM 代理自动生成 CA · WebSocket 抓包 · GraphQL 自省辅助 · Burp Suite 桥接 |\n| **JS Hook 与分析** | LLM 驱动的反混淆 · 加密逻辑识别 · AST 深度理解 · Source Map 重建 · 脚本提取与回放 |\n| **WASM 逆向工程** | wabt 反汇编 / C 转译（`wasm2wat` / `wasm-decompile` / `wasm-objdump` / `wasm2c`）· Binaryen `wasm-opt` · 纯 TS section 解析 · 导入/导出列表 · 按 section 分组的字符串提取（含 name 段函数名恢复）· 函数级二进制 diff · 混淆检测 · 函数级与基本块级插桩 |\n| **进程与内存取证** | 原生 FFI 扫描 · 交叉引用图谱 · 硬件断点 · PE 内省 · 活进程附着 · 带区域守卫的内存读写 |\n| **二进制插桩** | Frida 桥接 · Ghidra 与 IDA 桥接 · 系统调用 hook · TLS keylog 与会话分析 · Mojo IPC 分析 |\n| **Android 与 APK 分析** | APK 静态分诊 · manifest 导出与查询 · apktool 反编译/回编 · jadx 反编译与代码检索 · DEX 扫描 · native 库列表 · APK 签名 · unidbg 模拟执行 · 运行时 DEX dump |\n| **原生运行时** | 跨架构样本模拟器 · 平台内省 · Mojo IPC · Dart Inspector · ADB 桥接获取设备流量 |\n| **编码与变换** | URL/Base64/Hex/JWT/Protobuf 编码器 · AST 变换 · 流式解码管线 |\n| **协同** | 后台任务队列带进度、取消、异步模式 · 多智能体协同 · 覆盖率报告 |\n| **Schema 优先元工具** | `describe_tool` · 带参数校验的 `call_tool` · `coverage_report` · `search_tools` |\n| **可插拔扩展注册表** | 热重载插件 · 声明式工作流 · 自发现域 |\n\n---\n\n## 典型场景\n\n| 场景 | 做法 | 涉及域 |\n| --- | --- | --- |\n| 审阅一个压缩后的 bundle | `search_tools` → `deobfuscate` → `search_in_scripts` → `understand_code` | `core` |\n| 逆向 CAPTCHA 挑战 | 驱动 Camoufox 页面 → 截图 → 用显式输入求解 → 回放 | `browser`、`canvas` |\n| 抓取并回放 OAuth 流程 | `proxy_start`（自动 CA）→ `network_get_requests` → `graphql_introspect` → `graphql_replay` | `proxy`、`network`、`graphql` |\n| 逆向 WASM 加密逻辑 | `wasm_dump` → `wasm_disassemble` → `generate_hooks` → `memory_breakpoint` | `wasm`、`binary-instrument`、`memory` |\n| 分诊可疑 APK | `apk_static_triage` → `apk_manifest_dump` → `jadx_decompile` → `dex_scan_file` | `binary-instrument` |\n| 恢复中断的浏览器会话 | 重连 Streamable HTTP → 恢复已激活域与浏览器状态 | `browser`、`coordination` |\n| 审计 Node 进程中的凭据 | `process_list` → `memory_scan_filtered` → `binary_strings_extract` | `process`、`memory`、`binary-instrument` |\n| 构建自定义工作流 | `list_extension_workflows` → `run_extension_workflow` | `workflow`、`extension-registry` |\n| Hook 活进程里的函数 | `frida_spawn` → `frida_attach_interceptor` → `frida_run_script` → `frida_enumerate_functions` | `binary-instrument` |\n\n---\n\n## 快速接入\n\n无需全局安装，添加到 MCP 客户端配置即可使用。\n\n**Claude Desktop / Cursor（`claude_desktop_config.json`）：**\n\n```json\n{\n  \"mcpServers\": {\n    \"jshook\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@jshookmcp/jshook@latest\"],\n      \"env\": {\n        \"MCP_TOOL_PROFILE\": \"search\",\n        \"npm_config_omit\": \"optional\"\n      }\n    }\n  }\n}\n```\n\n*（Windows 用户：若找不到 `npx`，请使用 `npx.cmd` 绝对路径。）*\n\n该轻量配置会跳过可选的 ONNX、Z3、Binaryen、Camoufox 和 Playwright 包；需要这些完整档\n运行时，移除 `npm_config_omit`。\n\n### 多个 Agent 共用一个本地进程\n\n默认 stdio 配置会让每个 MCP 宿主启动一份完整的 jshook。若要共享 embedding 模型、浏览器运行时和缓存，可以启动一个本地 Streamable HTTP daemon：\n\n```bash\npnpm build\npnpm daemon\n```\n\n向量搜索在所有传输下默认开启：轻量静态模型，工具目录 embedding 落盘缓存，按需加载、空闲释放。只需词法搜索时可设置 `SEARCH_VECTOR_ENABLED=false`。\n\n然后在各 MCP 客户端的 HTTP/URL server 配置中统一指向 `http://127.0.0.1:3000/mcp`。每个客户端拥有独立的 MCP 会话和响应路由，重量级运行时资源只保留一份。建议保持默认的本机回环监听；如需对外暴露，必须先设置 `MCP_AUTH_TOKEN`。\n\n### 随任务复杂度逐级提升档位\n\n```jsonc\n{\n  \"env\": {\n    \"MCP_TOOL_PROFILE\": \"search\"     // 从这里开始，约 3K token 元数据\n  }\n}\n```\n\n开始组合复合脚本时把 `MCP_TOOL_PROFILE` 切到 `workflow`；需要所有工具时切到 `full`。`coverage_report` 可随时查询当前激活集。\n\n---\n\n## 亮点\n\n- **档位阶梯。** 从 `search`（约 3K token 元数据）起步；组合复合脚本时切到 `workflow`；确实需要全部工具才升到 `full`。`coverage_report` 随时告诉你现在激活的是什么。\n- **元工具。** `describe_tool` 返回 JSON Schema；`call_tool` 在调用前校验参数；每个工具都带 `readOnlyHint` / `destructiveHint` / `idempotentHint` / `openWorldHint`。\n- **浏览器自动化。** Chromium 与 Camoufox 走 CDP，可附着已有目标，反检测预设，弹窗/下载/权限拦截器，显式输入 CAPTCHA 求解，三种文档时机的 JS/CSS 注入，coverage 跨重连持久化。\n- **网络拦截。** 自动生成 HTTPS 拦截 CA、HTTP/1.1 + HTTP/2 帧级构造、WebSocket 抓包、GraphQL 辅助、Burp Suite 桥接——同一套 MCP 工具面。\n- **逆向工程。** wabt WASM 反汇编（`wasm2wat` / `wasm-decompile` / `wasm-objdump`）与 Binaryen `wasm-opt`、Frida/Ghidra/IDA 桥接、硬件断点、原生 FFI 扫描、PE 内省、系统调用 hook、AST 变换、Source Map 重建。\n- **会话恢复。** Streamable HTTP 传输在重连后恢复已激活域、浏览器 attach 状态、coverage 状态；浏览器侧会话按客户端隔离。\n- **插件和工作流。** 放进目录即获得一个域；写一段 YAML 就能当一个工具跑；注册表自发现。\n\n---\n\n## 传输与部署\n\n服务器开箱支持两种传输。\n\n| 传输 | 何时使用 | 说明 |\n| --- | --- | --- |\n| **stdio** | Claude Desktop、Cursor 等单宿主客户端默认 | 每个 MCP 宿主一个完整进程；建议使用轻量档位 |\n| **Streamable HTTP** | 多个智能体共享 embedding 模型、浏览器运行时和缓存 | 默认本机回环监听；对外暴露前必须设置 `MCP_AUTH_TOKEN` |\n\n两种传输暴露相同的工具面。`coverage_report` 展示每个会话已激活的域——长运行会话在重连后恢复浏览器 attach 状态、coverage 状态与工具激活。\n\n生产部署请参考 [安全与生产指南](https://vmoranv.github.io/jshookmcp/operations/security-and-production.html)。\n\n---\n\n## 最近运行时变更\n\n- HTTP 传输现在支持多路复用独立 MCP 会话，并在重连后恢复运行时状态。\n- `proxy_start` 在需要时会自动生成本地 HTTPS 拦截 CA。\n- Browser 域的 CAPTCHA 求解已改为显式参数驱动：按需传入 `taskKind`、`siteKey`、`imageBase64`、`callbackName`、`responseSelector`。不会再内置页面/组件特征探测。\n\n---\n\n## 注册表快照\n\n下面的内置能力快照由运行时 registry 动态生成，并在 CI 中校验。\n\n<!-- metadata-sync:start -->\n- 包版本：`0.4.3`\n- 内置工具数：`735`\n- 域列表：`adb-bridge`, `binary-instrument`, `browser`, `canvas`, `coordination`, `core`, `cross-domain`, `dart-inspector`, `debugger`, `encoding`, `exploit-dev`, `extension-registry`, `graphql`, `instrumentation`, `maintenance`, `memory`, `mojo-ipc`, `native-bridge`, `native-emulator`, `network`, `platform`, `process`, `protocol-analysis`, `proxy`, `session`, `sourcemap`, `streaming`, `syscall-hook`, `tasks`, `tls-inspector`, `trace`, `transform`, `v8-inspector`, `wasm`, `webgpu`, `workflow`\n- 说明：以上数据由运行时 registry 动态生成，不要手改计数。\n<!-- metadata-sync:end -->\n\n> **[查看完整工具参考 ↗](https://vmoranv.github.io/jshookmcp/reference/)**\n\n---\n\n## 架构\n\n- **运行时注册表** — 域通过 `manifest.ts` 自发现；新增域只需创建一个文件。\n- **延迟初始化** — Handler 在首次调用时实例化，而非启动时预加载。\n- **BM25 + 向量搜索** — `search_tools` 混合排序 + 自适应权重。\n- **MCP `ToolAnnotations`** — 每个工具携带 `readOnlyHint` / `destructiveHint` / `idempotentHint` / `openWorldHint`。\n- **档位阶梯** — `search`（约 3K token）→ `workflow`（复合脚本）→ `full`（全部 735 工具）。\n- **传输对称** — stdio 与 Streamable HTTP 暴露相同工具面；按客户端隔离会话。\n\n详见 [架构指南](https://vmoranv.github.io/jshookmcp/guide/best-practices.html) 与 [配置参考](https://vmoranv.github.io/jshookmcp/guide/configuration.html)。\n\n---\n\n## 从源码构建\n\n环境要求：Node.js 22.22.2+、pnpm 10.x。\n\n```bash\npnpm install\npnpm build\npnpm start           # 从 dist/ 启动构建后的服务\npnpm dev             # tsx watch 模式从源码启动\npnpm check           # 漂移守卫（metadata + openapi + 域完整性 + 事件契约）+ lint + format check + typecheck + 单元测试\npnpm test            # Vitest 单元套件\npnpm test:e2e        # 浏览器/工具端到端套件\npnpm daemon          # 构建后启动 Streamable HTTP daemon\n```\n\n原生辅助库通过 `pnpm build` 一并打包；首次运行时服务会按档位下载可选运行时\n（ONNX、Z3、Binaryen、Camoufox、Playwright）。\n\n---\n\n## 项目统计\n\n<div align=\"center\">\n\n<a href=\"https://www.star-history.com/?repos=vmoranv%2Fjshookmcp&type=date&legend=top-left\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=vmoranv/jshookmcp&type=date&legend=top-left\" />\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=vmoranv/jshookmcp&type=date&legend=top-left\" />\n    <img alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=vmoranv/jshookmcp&type=date&legend=top-left\" />\n  </picture>\n</a>\n\n![Activity](https://repobeats.axiom.co/api/embed/83c000c790b1c665ff2686d2d02605412a0b8805.svg 'Repobeats analytics image')\n\n</div>\n\n---\n\n## 许可证\n\n[AGPLv3](./LICENSE)。\n","readmeFilename":"README.zh.md"}