{"_id":"@whitenoisenpm/testforge-mcp","_rev":"77-0dda837c549eddab2433d6e9a854792b","name":"@whitenoisenpm/testforge-mcp","dist-tags":{"latest":"0.37.0"},"versions":{"0.2.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge-steel.vercel.app","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"dist/index.js"},"dist":{"shasum":"d45c0be03e72d5ffa5a743b62e516e1e5049d7f0","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.0.tgz","fileCount":24,"integrity":"sha512-JOsxHsX2zeuWvVxRRAGivVZrABQtbr+rpG+qCEacZ1Z/vjKUEOmS2f5eEaO2gCIPjZ0Wd1dCiO1hzIw0kkloQg==","signatures":[{"sig":"MEUCIQCbZyq4KnxglATuyHctkn9q1Mrb1Ft8F+QPN847xRuzoAIgdjQZy23L5G0LfTNMSWgDlLfipF6MtGx5VYR87dLdvb4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163531},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"cf23a51b568e31bb8efcbdd3c28c201a2c7b9667","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.0_1779654648935_0.6000178724562981","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge-steel.vercel.app","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"dist/index.js"},"dist":{"shasum":"b20e255ec7ded4ac7f81c771dcf6096fc3c69c2c","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.1.tgz","fileCount":24,"integrity":"sha512-jZwX3MZ445U9FA5yeznPAo4hk+ZVpy33yxK7/dXy3y2PyX7hGdHWNx83sXdYbSnaWPiZjQ1/V5AvLKDqIBP39Q==","signatures":[{"sig":"MEUCIBgM+0+uIFJxc2ioPJW6hE8hic/F2dtgnUJv/LMWrOy5AiEAsMhsLEWMSzuIIwQEjORvb9FdScwYfvPmPNtm44Mtbjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163531},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"cf23a51b568e31bb8efcbdd3c28c201a2c7b9667","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.1_1779654687956_0.1918919347951591","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge-steel.vercel.app","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"b4e85ae97508ad2f150de6c894c2ed07b18765cd","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.2.tgz","fileCount":25,"integrity":"sha512-jEPjQBKGB3zUCSDX6vX0/uiC8sVZ4xYxyOUFqQO1lpTClU4PMAihqAdaLWtqKBtRvct0VtAHNA62wsljUxMGHw==","signatures":[{"sig":"MEQCIA3gKEEpxG2roJsF2l9wuRsBTXjN0YlKH+KaYWJjdivTAiBEiKA0Rv5rTffBuF69wtMYWIWQnEkk42c7IkRecA4XVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163564},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"cf23a51b568e31bb8efcbdd3c28c201a2c7b9667","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.2_1779654722998_0.7843585120770755","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.3","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.3","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge-steel.vercel.app","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"891bf2af89f7ad6662e7d93eb64a7bd329e049b2","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.3.tgz","fileCount":25,"integrity":"sha512-kBraZKAauyJercbNkBTbaVB5ASVeNOM/zT4EBME1e57Tje0X1OeNPUVPtzTi9oTFaSj9s8YG/hUUQTTq83h/6Q==","signatures":[{"sig":"MEYCIQCiy+86ZHgGVjHrhfaRsv/Q4nK4yt9rXLHDLl5B90+5kwIhAPwtIkdosBi0lGY63Ll6mPnx6CalgdE9MfbRcRJ0b63n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":163662},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"cf23a51b568e31bb8efcbdd3c28c201a2c7b9667","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.3_1779654793536_0.6234921885558262","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.4","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.4","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"1a10375645200ee671d63b3ad7f1282d10ea2fda","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.4.tgz","fileCount":29,"integrity":"sha512-KhAa+fB2lmLp6cDvw3VgadSBjH2vAOwP+4aGRx3ZT7NaDQVBJRu1XVW78EUkb6Y6IC8h8O5HlR+w5yYbt0/U4A==","signatures":[{"sig":"MEYCIQDEWyCAjWQcGoZf/9DVPwRT90OfdfJ1tO7c9XvMwuBAOwIhAOAS4bicMpsBkxe4Tm7pw3P/iIiZgdvIf9rOnk+p+7XG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225087},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d2de58c0c59b2afd793ce0d1579f06c35f1d559c","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.4_1779704508086_0.0778951193366566","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.5","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.5","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"008bf4757a3378d3a0c6b39e2915677badc4a781","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.5.tgz","fileCount":29,"integrity":"sha512-7iIsQV3rczYoI7Ua18qhKPuyCG6jM/Fzz84dAoncqB89P0WvCYCX1tAQK4sZUBvbha+GTDC5RUhxsfPqMHPLfw==","signatures":[{"sig":"MEUCIEo0Uc11/mruj/JxZOr/V+TyGNpKu0duMCaRVXL5TdA9AiEAlFThooWHwpKExPnOEpHkACLa0Fu6Q8V+yLYi0V+2Qbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233937},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8a5e79c3c49276ac8bcf111775f47cf494d7f07a","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.5_1779705726850_0.4841448038406908","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.6","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.6","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"c8c31eddcb24d7b737b637cadcff742e1828358e","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.6.tgz","fileCount":29,"integrity":"sha512-y2cLlUHfb+adhkA5sjjpab3jbgbevi1R/BvQ9dxB+QKZyC4RCqhPn6BEtA33Myg2NbiYqRjCb9Eyjw3CdvgVgQ==","signatures":[{"sig":"MEQCICg7LLLSTjicZa9NGUUSYgY8Ysaywjv65saFhjjv2KplAiBlPk9VrB3a0336gfvyXpF0NGe4hDZa205wJRokv2TecQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241573},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e67d9e652b7dce003e45156378865d2334269d93","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.6_1779706775063_0.6401331781000443","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.7","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.7","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"96b16487e70456317afd1c0b0be91ce2f93bd9de","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.7.tgz","fileCount":29,"integrity":"sha512-E8f4DgFMXo+WoMViPhsAELQpazOfwQ1hqAMpKOspvXXaPUM2f70fuehVKvLvv4Ngysvec/U/ikFIChCDpECMYw==","signatures":[{"sig":"MEQCIGkG9It4N+dWsAHbVnoJ2H9RmkGURa0xspJVdies3RbfAiBadZy93iK4MVU14IsZLRG+O+nheXTwrezStOmmZ8RIqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241573},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e67d9e652b7dce003e45156378865d2334269d93","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.7_1779709788957_0.9949160347539252","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.8","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.8","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"44daae7f3532efdc37d99d756dc3c4b0ecbed73d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.8.tgz","fileCount":31,"integrity":"sha512-GL2J7KcHl4+A0iT0gQT138T7HgjnUfMCeQzB4i6rfw6itOVPNOPtVqDKpBTszdGTvzz54Rg7XXEIuuNNR2fkIw==","signatures":[{"sig":"MEUCIQCO9mN0Eefq/WT9NvDGxmia8reHIFTEvSZZywPzLfFi6AIgL3qy2Qa6oX8fCVwq2y3pImLtVChxFsmQkV0VJPYtsOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245943},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"616b618bc1006ce4f1249f6897635f6cf9968a43","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.8_1779710282946_0.31355665646749964","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.9","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.9","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"e9ceb88385cbd69f1cfbe680ae001710d17fad8b","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.9.tgz","fileCount":31,"integrity":"sha512-wlIW9OvBcmqBXP7p8r3xHYiqjLnZsd86XQvsXCvv/vBwhOTLO5epfqwpFF2OrVOW3FlORnJt9cRv9gUvt2yCmw==","signatures":[{"sig":"MEUCIQCplm7umAUzitjJw+0uIr8N7pxIZY5/S9jd0v+rwJtGCwIgDhjNcX2zRmhGbtNeW91cPOQtanYiCb4gCc0x9sO02QM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245943},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"882af11302cafd91e360f9030c3480b74198cd74","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.9_1779710520925_0.05460811211755523","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.11","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.11","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"ef36d9e1c741e2f59f9666382795cec23dd00235","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.11.tgz","fileCount":31,"integrity":"sha512-UbfEBMM7rJQehCqOfV4/hc3gEOs8r4e3aWhKllOdsjy0/EtHLzk70DybvxM9Rt0MjEC16vPQIJSrRsdC0bieGA==","signatures":[{"sig":"MEUCIQCjuxaXomS1sZ3qzONFpPWv9jmmKB2mf9bUjF6AqAKhxQIgUCQ9ShzPtFMJhqHnZ2jKCRatb5t5+8vJjP0dIovpxjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245944},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fcbe90dded8db5172cc20523a47b4124ece74517","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.11_1779710796052_0.4344428747301572","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.12","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.12","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"40754c0b0106579e97dc67616a76df4465c719a3","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.12.tgz","fileCount":31,"integrity":"sha512-C4jIjJEul/Ri6IuxOaPUpyb1GZhaaOzg23xeUBG+uaZLd+Q7MuBmZpZ4KDW83QQCaGr871CX+8IsONlsTPMRWQ==","signatures":[{"sig":"MEQCIFSCfRKpckQlzk2Iqk363g5NSxidI4OpkXLs7RLr0YBZAiBo1JBPiBxnkX/+5ZltAkUcf3ibkeL8Z/jq9PwFZI3ptQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236736},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fcbe90dded8db5172cc20523a47b4124ece74517","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^9.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.12_1779710938117_0.23949813901412154","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.13","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.13","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"8536254621c53ae90774e03d213be53c546af628","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.13.tgz","fileCount":31,"integrity":"sha512-cDm+t3XvhGMbArVFpzRQWrU0pGPfjaGMF8yxDV17MIA/r2gmYicWA76SWqXQVPdKZeIVM/FPSbIMMVEMukMbDA==","signatures":[{"sig":"MEYCIQCs2DqbBTCYDJZtc5ROdIgEgJf6Sua/XEMPw08J1W8kmAIhALE5XGBoQq06QDDMEeXU3HP1h/+RF7io4Q1aNJAcbpmn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236736},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fcbe90dded8db5172cc20523a47b4124ece74517","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^9.1.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.13_1779710948780_0.6146848383725829","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.14","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.14","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"b2cf567e711132abbb8142551c09c7921eb356f3","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.14.tgz","fileCount":31,"integrity":"sha512-BU1UcHedI8IvDMCHK8KzO6QtsOPp0kR7oXyanhU1H2SttkTLXHDoDvzNwaPv/taQnCngAtabxKnd/7Z3b/Zfkw==","signatures":[{"sig":"MEQCIEBSjyKT0caXZwJfcuhU5pjlH/t7BEXPh4kOvf9kOyPiAiAkXEWrm3rzXhe9UHAyrXcYmtKrJFi9PBSpI/hhialazQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236736},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e361b26b4aaff3ddbe281b45803dc1f5c19c1617","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^8.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.14_1779711122594_0.029880137934806372","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.15","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.15","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"868f44786cb55676ef6fba3cc5dcf647553f4d54","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.15.tgz","fileCount":31,"integrity":"sha512-2D7zMvH+t2cNV79EHpB+noLc9C8P6C4hrG/S6ygejIiOrz9hsh1Je7UpUw17i2Idd1+ru5f2BYN1uij3UbIkXw==","signatures":[{"sig":"MEYCIQD5PngRk+NZJRgJZiRT+R3/PwUzran/clmq1w1qVcdsUwIhAMbmmwEMgbaHJ5Q8NIF6A1nbKDtN1i2mjk1Iqm6xihU2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236736},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"960ed34bfd52555a1206b246196ff40cd052f31e","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^7.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.15_1779711237630_0.1604948157908579","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.16","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.16","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"a744ce8908e46275856beac47e87ede9cf7a0be6","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.16.tgz","fileCount":32,"integrity":"sha512-+4Q1xfefUR0v1Hc3pXFziwVXz7pe1nd2Ek1CpxwsHkolXXJfmV6ZPBDqABAksS/MrxcNzmTWgikqdqpZDSInVg==","signatures":[{"sig":"MEUCIGpI1h73bhm8RFdBjVb7MffZifOje9qeEc+QaCpy34IKAiEA0+/AXepYLEoP+cV7IMmGrzjT+ORAtcqpArZNTKt3i9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251224},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d2879fdbe001e0222808de7df49fc00bc4f382b8","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^7.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.16_1779711342585_0.9626536996207231","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.17","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.17","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"febb216fe141906ddac525fa3c057b94a64a4426","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.17.tgz","fileCount":32,"integrity":"sha512-ZglGkJL3ekQgPfJlm1yC1eBF83bS/PzZOP7v8BqErJC6FUVIRlj5Djm2OiECgobrN97ghpq8mTorAdQCPxi7LQ==","signatures":[{"sig":"MEUCIQD3SRKLBMd0VvnR3RJPoSlbSSEKEeJPtDbdD1DyD2ULoQIgHMk1ZRjtuSFVJlYhDbKJTOUd0xsWk6IOjnXlEvDGUm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251191},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"29771796fe2b830cb9b0bef4b28b8d1d334a248d","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.9.4","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^7.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.17_1779711522248_0.7222278019248407","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.18","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.18","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"2c45cecfc8fd26fe6b9d36bf67e05a49377280c9","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.18.tgz","fileCount":32,"integrity":"sha512-XghPJQmSGaV064tV3at0jpcXFCK18nO9u1DOhtNNabzqBlepQHQgh6JHmVa97G28jPAbwb1dFg2UX37ZiMvfZQ==","signatures":[{"sig":"MEUCIQDESZrO6QpKlCpyNoRU1NAentDBnsD2N2X5S6U/kYf6mAIgZPJmVqHBj52ZTJY5qZBKna1cgng1oCmmLdkEbM84ptY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253773},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"42d7657eedc65615132983da66ff1f1152c60c42","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.18_1779722343196_0.9852691463100711","host":"s3://npm-registry-packages-npm-production"}},"0.2.19":{"name":"@whitenoisenpm/testforge-mcp","version":"0.2.19","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.2.19","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"c0b9313632a1acc64a2d285249b61b9e346862a2","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.2.19.tgz","fileCount":32,"integrity":"sha512-+btnDQWlqFOvPDyGPZ6UP5tn2HiSMgVECgTt22qTgrmvPEuHlSG+yBeqdacQXrVrYnyEM9z9GJEU72rRv75KkA==","signatures":[{"sig":"MEUCIHT0ccitFbeSLezHCPKnbGg+sy4GqM3t6BGcYl6DhUJHAiEApktZW/q/lyfCnvxDqNx17hYYfLrxmWcaXfeFJ/sTaNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256508},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"53f825699e48d410b3c80837b3ee17a5340087f6","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.2.19_1779728039680_0.16693527079464943","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.3.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.3.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"c44fbba1ac19587b925efe381da5b936df2bc05b","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.3.0.tgz","fileCount":38,"integrity":"sha512-ZAqCGM5PiVTqPc4IQ51uiFbmzv3S/5+JFeYTd4/ScqCkThQFFx/lRGrzjZTz0Wv8Zbxvaj4cWKkjgxYTvwI42Q==","signatures":[{"sig":"MEUCIByzrrWQILXemjlHBTM4kTNBM/sW2+dhW23W0jXEOtvUAiEA4i68pwIgF2wNFSZqvgwUDNLCHXuBF5suckkWMn+OA5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286709},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"582b3fa3649f5e4d371d0e56ccb176418c45bf1d","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.3.0_1779791396078_0.011792514588896408","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.4.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.4.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"ccd4167fc9e43d62404955a3a6902a397a2e4d64","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.4.0.tgz","fileCount":40,"integrity":"sha512-RrCC04vRK4Mag/Fa4qrqDWkkfAEkoki9AlAchNIBbHYIzuvEnCzkIUJDvQD5PcHINS75r8bkx5gETKqyEJQBJQ==","signatures":[{"sig":"MEQCIASvQ96jU63RarKXfLL53KOGXk/JlKzbfyJX5EmBYA5/AiBgRBsFD8XAmLjgai7WF8U04OzoamI7BJdSSp4QDe/mMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":300978},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d5bca5b28c14665e9a4863a71bd32802a7930ca0","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.4.0_1779799895104_0.35138350443090327","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.5.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.5.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"20781962334f848302ff543d0143548b776f4f12","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.5.0.tgz","fileCount":42,"integrity":"sha512-CRIXgH7Csr9VVxZZaiQpu7kTlPFx5ibaveooGzO1l+EGByMLFOdZo2sgqi2252OQiIPnlbK4qCKgFbYcVnC/7w==","signatures":[{"sig":"MEYCIQCzCgokJth5NVePxXA77bBuImgGgggC1+OJL5fwP8SnLQIhAI5xFk5WdSi6an+ftKTKVYbcS0GpzK+CKQnt0tYRv64O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322066},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f67913ff7e391e09f7721eac4682b6caa46e00e2","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.5.0_1779800672296_0.7599858516053262","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.6.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.6.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3ed8d20b0cbda82361bc0dffbebf9265b547747a","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.6.0.tgz","fileCount":46,"integrity":"sha512-CL5TvK+kfuXGAylvn858KbIE/Y7Cv7P+wiXoP6+kMdGgz63xCDPONrY+ZtQjyWbYhOV9V8wy5IlFNizAso76rA==","signatures":[{"sig":"MEYCIQDZhNKlhT2DJH92ZWjkPFLnZsZ17+atG15cgJPoTc+BpQIhAIMx9Ki2K5r5XHUSBHuDIypeU+wZoHbfdBYh2IW/mJE3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347876},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9955b91e55507135a36a4813551b3ebadb869678","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.6.0_1779801428771_0.9353927936609441","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.7.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.7.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"f5ede529d62b1acd45bb70282d0f695d320f8f76","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.7.0.tgz","fileCount":48,"integrity":"sha512-kDjCkG0gYF6VyX++TfVVBRMaJwJaDhU8v5/4qMmLvVgTjVamlhJoM1Oe+TZwsvdXvubdthx3s3sYUszGBQNeKQ==","signatures":[{"sig":"MEUCIFu3Sq38lswJD7HjBlrnRfDgoBHODjmrfnBsvq5SUAKXAiEAgKdSXyosgc6MKK0Q4ZHCcakQ73X+IiAewezvB7tWRrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365681},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"3159654aa5f75f44e44b61c05261b454990d3195","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.7.0_1779803839690_0.18124647908478853","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.8.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.8.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"d5abad8c8b1eb7e52b88328aeec9c31d17ebae80","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.8.0.tgz","fileCount":50,"integrity":"sha512-Cwo4ZSvWNM4bi5PS5b/FUnPnF5ud1t8iDACb6dZpo45i+bQmpy+fQeE7I5LgkRB7GVFKG1mncfz2V+CvBlJa5w==","signatures":[{"sig":"MEQCIHkqpuzEDAIeLmhBwqyp4CwJG4hgf9f0XnqcSnSIduWaAiAfWD7ISkVw42ackSSoPK/FV5TKVZMs1juQSmcO3JCOig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378879},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4c210ac696978f23371467db2e7f133b77962e70","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.8.0_1779808575445_0.8623340732451488","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.8.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.8.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3adb1a2321ee23a79ecac81897598a982567e691","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.8.1.tgz","fileCount":50,"integrity":"sha512-EP8aPhPOtQoebCNJUwaQyXDRBz9DkNoyLAT4CzXuMgfjfrVvaUgyVEuLujesmdcEpABJfPi5Yd5xdvZ/dLhilQ==","signatures":[{"sig":"MEQCID5GbcxpIjFSE4iFfvY1iYuWcN40dtgYW/mc5IQzRzz6AiBAdIgXs1W5RHgKW7NHhud52K0+b5wUSQq1RUtfs2ceOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379123},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"ab226159b41d20156812673d12a49d47da68e38f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.8.1_1779810393391_0.5148307417221394","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.9.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.9.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3418eacb0f7e838b163b3ba740862f205d2b4645","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.9.0.tgz","fileCount":54,"integrity":"sha512-fO0w2WU9n+ACR25/eFvO06Hkhk14ykLyVsLkRnGWNdQrbnrIv9BIMduiBaG/te3U4Rkysn4J6Mo1CWd9h17geA==","signatures":[{"sig":"MEYCIQCI+l5JwHKIH+4tXx2MbGOrqiMzI1agnhL0R6fPr50KKQIhAPsybzWLUH9U5X/TlJY9D+N2zn9V0mm1mZkozNVKudY9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395821},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f3aa080d808051048e6558e754403df5d2696522","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.9.0_1779811068534_0.38189034617258955","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.10.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.10.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"2a6def247d0867718dbe935170c2cc1a6032e2fd","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.10.0.tgz","fileCount":56,"integrity":"sha512-oI6b3TPp1d+MwLaIgw40sNLLEVDfiZNPx4kqQ6bjp4udcCGwpI18X3qGMQRDSTIikCMUlbBo5nzeijydTllOsg==","signatures":[{"sig":"MEUCIQCq56WuOChUnAjfY0RFbirXhwZ8A1YATAQytjPCSR4BsAIgeDHtUA+6wpkpYrCqxDS73mi0gA6AZyUIMjUR2SUUT9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":412733},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"998df9488de678630871ab085f1a8e494748a2fd","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.10.0_1779811705416_0.1413855164099116","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.11.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.11.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"cf92458aef841454bcd2f7e94b6cb27b68d20fc8","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.11.0.tgz","fileCount":60,"integrity":"sha512-6focs0KAFBNjUYCKzW6HEkDQ8BRpJPYpkgseB+fg6UmhDnnZxpQmCaErsQaSbqLcoy05+BhkYslCmWBeZFtH3w==","signatures":[{"sig":"MEUCIEKLpnDOsWE2CzoXY5HE78dCiZR4SBLsUraVwkMWVvKyAiEA10AL/wVmKDmcyx/RVZlWhQ3f5m1l4y+uEKnXWDavGJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426566},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f6d6926102c3918dc5b75a15527c2b5191973ef9","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.11.0_1779812386045_0.2632030147391826","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.12.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.12.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"5827f25703f3864fdb4d15a391a95536e588493f","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.12.0.tgz","fileCount":64,"integrity":"sha512-i4/saJ56/O7W/onEzfaGWejllNYnCDKCCz7JWOEtkZ2TVNfXJDFa/WRV/nk5mC8odL0iPefD77onC8D8u5Krwg==","signatures":[{"sig":"MEUCIAvXt2kbwydx918BLOkq684jGqm+e7iI/2XTYt2/NMcdAiEA8aqUnAFzdTqge0efiISpSLN6Q+oXlLA1uqdy1ocZ5pA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441617},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8f76bccdd38425adcd110bb44a00925e4cca2980","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.12.0_1779812891166_0.9469552324586401","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.13.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.13.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"c6501eecb643e23c6762b2a1ff0956dec3a064fc","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.13.0.tgz","fileCount":66,"integrity":"sha512-g0x1Q3RRjUNfdWymrhwVAgnrVER/CSIbfIbqL04rvZPMOos2yvMUmt5ogb7Usyxjp3sydnBEZYhws/k+xp83gQ==","signatures":[{"sig":"MEUCIQCZFI8FFxIa3su3T5aJ07dMZfbk76aeYP22cUzif506cgIgF7KOWJoQaqFYw/hHPbKiD1RbDajvMwjraX17eIBOUUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459247},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"22c8237015fbb758029c832b746811a083c5f9f5","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.13.0_1779813455045_0.4869299132422371","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.14.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.14.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"519d6c71dc333560f9b780218575e65bca2417ea","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.14.0.tgz","fileCount":68,"integrity":"sha512-0QCkxem2xV3BNhL/cjCjHLNw5yhld32fA66X6/ehoeFOnud7wM7fxK4MG9oP2y6rQz7CWKxW7t9snCtBF0NSKg==","signatures":[{"sig":"MEQCIE2aRpgfg5dWhal+Y+342+unQJZCLQkSPsnkfPyW01dRAiAYgI6dDwgEP8aCYcz0fzm6hoLrYV/Ehzop6dNVVh/XlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475714},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"0bddd12b779ef214c683d81dcd361054e076ec74","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.14.0_1779813979282_0.6617342369921189","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.15.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.15.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"386c0a963082daeae5fb009b09ae0dc8c6a3a578","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.15.0.tgz","fileCount":70,"integrity":"sha512-0tbyRzs3AVV1JrX6pNAUySmBoBszj2mCbIp1l0NgnVe47GfRJXS4Sv0ul6fnUFbDf4G/8Soh2pw2Zl8REr2g9Q==","signatures":[{"sig":"MEQCIACqv/5ZLZfdOmngDvsyvrpaiLOQyU7JVNcQCBvfKWzlAiBGW+9o4PT+aqMB9yxqnzCxWStaWWz9qrO3HCoCppeiAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":484353},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"0fbfd2251d4c615c63a7ab6ed0076e50d4a4c9a8","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.15.0_1779814418619_0.8942218690092856","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.16.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.16.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3577657c436f09431c9837ae28707c1200e85c0d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.16.0.tgz","fileCount":72,"integrity":"sha512-WrU6BTcaCKyD+EKqeiLfTlGF/fx1qwKJP49f5TmH7Pfcwshvk/9nYCtEMY0QyS553awa5uruAwMVlF3DsnBFqg==","signatures":[{"sig":"MEUCIFuuPslID1qdKJPnuzO1925txAQXvnjy5GANBw9z/2PYAiEAu6iTNhqbxsTuzQUJ0S8GLlaJFpsGPYRKiH4mlwlVyq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":498194},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"cb43b8f4127d76d390f57f02eac136fefa872870","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.16.0_1779814977381_0.14315815407614108","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.17.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.17.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"0001ba4bdc1e9cf55d9f877217dbd5d97706cc2d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.17.0.tgz","fileCount":74,"integrity":"sha512-ScwUF4o4cRERQ8yv4xkzwkHG8HNaYGYF0WC5Bc5q7r9l0Vw26RjMsGt/Of0n9JpSQ+BDk9heWewolqzXuBX6fA==","signatures":[{"sig":"MEQCH3RFk0HcS/0zFEDSSPhU6gJtyecZgt9yNKjSi/UPE9ECIQDvS5MORJjY4/1Hw9lmSyq6gZX/yYPybc1zow8dti7aQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":511812},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"de2064df4f1434de3fad4873f00155835ab9dd31","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.17.0_1779815869316_0.04190797573895755","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.18.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.18.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"1e5b8428bf0c2ee9a2de0da4b3be76f053867c0e","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.18.0.tgz","fileCount":76,"integrity":"sha512-gYTVuxVKwHHWt6ACCKJH7fGbtI6S5vPVNk4y2lhfg+5kvtcIfO4ibi6O0UxGI9KNyUI5MqZFtMw/2d5rQ0Bg7g==","signatures":[{"sig":"MEUCIGPJodSpl0RekiG4Da6L3kl7ZQ3GcB05a8it/BK4SHWkAiEA0Pj7LWl2boteJBu117NPKh6+BLnTKlZCUASl+K4tIdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525235},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"aecd3304ccefc5d74c3fbb6a2c924bb75358e65b","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.18.0_1779820224775_0.39113246967196935","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.19.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.19.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"b28492ee869ab258bc49f3a8d6e9c8283d85325c","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.19.0.tgz","fileCount":78,"integrity":"sha512-AlFCB8Gk10Ce3NRoPGwJYTo/3xaZ0WcBn08vKzXfc+CTzkrOCD/N7S94yqq/1kosAzFjO3G7Dyt/stdkeF6EOg==","signatures":[{"sig":"MEUCIFTzpqzke8L/gimUpYfabYoE7G0w9nkvGTC+aG4pBSrVAiEAwFAzkbVmVdvA55GU1vfCXxZRVPMTM45DJvcdIFU5cbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536728},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b134dd2df7cb8b97ce7cad72a550032b06f669a3","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.19.0_1779820801037_0.893711876276611","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.20.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.20.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"d0bf6a961f72936f21a44a03c5e8f911e62c0eab","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.20.0.tgz","fileCount":80,"integrity":"sha512-2LqECu7xS4XAmX4lrwqP4xxJngdW8PAXdZaZVp+8ojJn6rFRv1w9V3ZeIzquZ0WQfBQsV9Z5C72v854ltK8OsQ==","signatures":[{"sig":"MEYCIQDdaFPipofQga6McgJegBdySa3nV9EP+TzTSP+1eNB50gIhAK76VutcLK/0PEWpwaYLipXwBFJR9fbcrBKPFq1l33Os","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551831},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"09031e9dc39e290a67d0679051a045284738cfa4","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.20.0_1779821514166_0.2625752189740309","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.21.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.21.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"02185f77f58295579ef37b74d02fd59302d0ae7d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.21.0.tgz","fileCount":82,"integrity":"sha512-kL8MlWb9B5iFt5Hlk2Qgg5h8yHrJs8xwKe3/biORzSh86CJaP4Go9XzDiTUoa04zyhz0qfQ9sukj4PZlwGpy/w==","signatures":[{"sig":"MEQCIA5nQNBxx29v61M4kQrCTN/Hy9i9WJi33E+iAPO6qPWGAiA85/CSNc1QWLn03OQA0MOrUN2xFFHXTa4XgK50vo7dQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":559623},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"0474db665327486d1f04fd46412b0c1d6534e64f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.21.0_1779822399967_0.25607369307554384","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.22.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.22.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"7d81acab753e6f09d080da82babf23e3ca3bd6db","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.22.0.tgz","fileCount":84,"integrity":"sha512-8dwVnNuWVBq7OVrssmKnXBqJxX2T+4JFIcXSzJMcZ2/esP49y/7OZcAYVmb345lM8A/Bc3jYnwyYvFVTbQ8jUQ==","signatures":[{"sig":"MEQCIBsOwt/2llSB1x8t78NXtlEbXH9yTedJDklRVYxhawtXAiBmyb5agogAuIOMWJ21IImnlLeq9Wjr189N1SjLAMBFMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568291},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1c04a842a0ffbb457873605cc21168369a732676","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.22.0_1779822985444_0.567672547884364","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.23.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.23.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"0b67fbc5cf41dc8f71a9f657e45afe2869cfd9de","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.23.0.tgz","fileCount":88,"integrity":"sha512-tj2i9pu0VbpUYXnSnGdyL9mAYelSxVeYGt7UHbEfI/GOxBkQ62awjSQI5PQa11ke4ZWx+YZQy7rbG+2woGww4Q==","signatures":[{"sig":"MEQCIHjA6lKpOX2qA5kE6DfHosw8yuQB2SPeOCcwHYP6UzvGAiACFRhMf9X5BFhAJPPdUQxxQ+ycOxybB/oYUddluFVeDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":581123},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"224e52b36af058b041fe529fe5a089e1876d4ffd","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.23.0_1779823472338_0.36409076467617574","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.24.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.24.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"a3548d1becd29c40380f5907b5bd5c68e7c83aa9","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.24.0.tgz","fileCount":88,"integrity":"sha512-VsDEZYmc5I9+OphLe5Uqn0WVlzBhVvY2JCMJd56uw9m+sz/vQVDE43aMDjMOE0KxgwERmSEeVACtAujtS2PbFA==","signatures":[{"sig":"MEQCIEYcVM63wdfzmXgy+cDGdR0BB662wEBSQqYWvt9Dez2TAiAPi1OPDKkkl74ME/TxHLfaKP92SraXgF+vDRQvocwBGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":588423},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"09440dabf891ce05f367f31e2ba00b52b90e9bb6","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.24.0_1779824049738_0.37771051068338246","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.25.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.25.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"535e6b649c2157af8e86b5cac90e7ad73daef7dd","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.25.0.tgz","fileCount":95,"integrity":"sha512-6A8/ZJ8ZR6sxhMS2GVKlMT4lZr8656U7LZVLI6uhPVjHFp/VCUoYUuu3g1ORn89NaNjKJ0mdLt+5D5qxwNPgXg==","signatures":[{"sig":"MEUCIBuZHU/9frtAh0LYC6DcRJsRDU0YBqItpg48GPv+h+NqAiEAwWvSdsa+k9V+6jm7SYDBBf9qd9Rksjt7qy1gONNmQB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":616095},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"08d0cf91e4279c9dac3bf64737b1eef750f97065","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.25.0_1779885806232_0.16287224508634845","host":"s3://npm-registry-packages-npm-production"}},"0.25.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.25.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.25.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"51e221302e3aeeaca3a9a61ab86ec3cd02699481","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.25.1.tgz","fileCount":95,"integrity":"sha512-yToaOkd51l7TYIaK9dxCWHuNgq1Gp5p+T+CEs9ThQHzHEBBbEqbCuH5GxpXIXCw24+t7C9mUJbQDUGUtzxre4g==","signatures":[{"sig":"MEQCIAXbfJUpy6TfU0dfx5HhN3+JhZxqMiiktYDAgyWwqqpLAiBamCz8vzMxduZdpnrD+cyOt0yEBWr1ZRyNBAXiH2RM+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620986},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"01f0d8fd4fc51375455b4c1d2b8bb92c40b658a1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.25.1_1779887303361_0.57538277545535","host":"s3://npm-registry-packages-npm-production"}},"0.25.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.25.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.25.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"6490ff37daba1b9b2f505fc46240c2faf9e8a2a1","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.25.2.tgz","fileCount":95,"integrity":"sha512-NgenoIP+0ETLowMSy1HUYa3jdnltjKslt2YbupfCr0lhOiEwKtZ7ohSyyGlYtUCWpQ8b/F0A+dQ8HFj98HDaHA==","signatures":[{"sig":"MEUCICNFN38WS4dQKBzc2DfXy+xudAKJFH0eu3cIbRCjYSmaAiEA68HT4IqGA8Erdcmn9+GpDDknehSDllgiPligaP9EUVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":624235},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"26db5d7fb5d2973bfb00dad8393efb607ae8a954","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.25.2_1779887811052_0.22679229570432913","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.26.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.26.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"f0c2254ad5fc91638c7ac4a52fe48ca4610523b2","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.26.0.tgz","fileCount":95,"integrity":"sha512-Vn27RZOq3rimA61GjSJtFXDjmjdiPSuNo1MLCp1PuuWEhCD1+BVHSlBQqG4fF3VzD1BDRQJLFW7u7w83sp4f5A==","signatures":[{"sig":"MEUCIQDAWL1jGYNdPjanVt5IpnyyUB7CLoTATdXE6Vfh9ejdYQIgV2nfnCWwrNb2AA1guWdnzyxT8lkvk3ujZoob07Y5d1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":641631},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"c210467b6e3855be57e8505b83d8d40f77dd827f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.26.0_1779907313146_0.37405287586167835","host":"s3://npm-registry-packages-npm-production"}},"0.26.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.26.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.26.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"4f4d58c8f3769aa3ed67bd1e6917e72e3afa468d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.26.1.tgz","fileCount":95,"integrity":"sha512-plmGbPAuS6zbzqi67RgxcniepDvVfbIgosgU/bMrSTx1608xHSywEHxiW4VvdmPpXqagwiV0euOre+KJNWwboA==","signatures":[{"sig":"MEYCIQC/Ca4eyo0LD2tQCsf9NEdYbx1cEBwu4C3KEfz/g/fd4AIhAKXh7JiOkExAQwkGYTDbW0OTP0VwWHw3sOy+2ZoxFlXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651554},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a0e5045f72f96d603036579121067fe77a7a3899","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.26.1_1779911928289_0.7630511701419009","host":"s3://npm-registry-packages-npm-production"}},"0.26.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.26.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.26.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"0495fe12ca69d384e6d8b795af5471e15e37e3ed","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.26.2.tgz","fileCount":96,"integrity":"sha512-rPKKpmUuMj4h4/aEtxIcYhFohs+wECpJziKx7ZFCUzy55dqKf3vB+eS77ocRI50vIFy+CQ9VAr56Sxkc8Tv+9A==","signatures":[{"sig":"MEYCIQDaBLfZzHMFlrtfzoqV4NUiol0guD7TSiDvEn4nbNYnUQIhAPKEogTc11DDNNOrPLencUu5bh4u0BVNEuhALW/NSQUW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655859},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"5b23b7e8204f775f364020e04d9d4b580425104d","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.26.2_1779919604910_0.8636135761411501","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.27.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.27.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"cde036ec139caef9cbbef7e073ba1acbaaebc931","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.27.0.tgz","fileCount":96,"integrity":"sha512-3y4NVxieDhvfWbuqiU733Jed7vGRiRd/SbT4gBj2b7+H/2eXFMfckWYc7aBWOd2pHbv+irmCtKpFKtwwivxOVw==","signatures":[{"sig":"MEUCIHXyhEcFWkIn43/MIhV83t4jn3zMK5nj2fZBLJtJzyauAiEAicIJQHRHUlLXruooMWCQhfXuHVTSijXdPcNgNwGn+RI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":658996},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"858009ed35b5ee0cc0472de3da2199723759005c","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.27.0_1779920480644_0.3031806957057306","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.27.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.27.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"a8866d061bcfcdb3896cad72a3548105ffbbfc89","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.27.1.tgz","fileCount":96,"integrity":"sha512-zddhNGFZvhoUNpsXaWL8YQ9Q9qdaJnC+Ii0lBAYqAp/cpV2EG9R6+mdR6CJS2Q/IS1h8249h5QdcLNjlzWAwpA==","signatures":[{"sig":"MEUCIQDv5EKGj91xf9eYTSiAwciUZJlprJbnbOqRA1D98Bh8aAIgCsgK6Fnbv6JBc1ljA+ZAfFtOECmNs/WdXqF6eH/boWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":661181},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"bc1d58b5adb944d535316518b470834f3ceeceac","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.27.1_1779920983366_0.7953088714397971","host":"s3://npm-registry-packages-npm-production"}},"0.27.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.27.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.27.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"b179236608ad7a45db8b6b38a33be02e8185609f","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.27.2.tgz","fileCount":96,"integrity":"sha512-mNmxo5CiYz5IEq5tqrSoUcMjGgQslQjxNdZoOz9OFfq7D+aPs7hqH+eBHdaPQ+WlKGWmEVKReVaZeYq59MZn1A==","signatures":[{"sig":"MEUCIGGyYzOGI1F4dcMgrZ6dqa6lMsYpllMouUX55j4C4lBUAiEAxMrFewrM/ecC5FHb53JYNCRSO0w0Q+mLL5+4fL37WMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663509},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7ac07af2e631f9f9837a4e8730d4ca69ac1010ea","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.27.2_1779921667740_0.18949033255173142","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"973647f26d08e64741818fd6c5997ebf88e046f0","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.0.tgz","fileCount":96,"integrity":"sha512-HVXa/dRQTHKVLMovy6FPU0XWd8x8DaYfceTDvRa/uqFMUA1uaM/7IzbDrg98YY1e8UK5q57sBsAQHWWTs3vRzA==","signatures":[{"sig":"MEUCIDZlXFQ+csAcjaicILZU+e1ZKEVC3frAxVjuzcoQ/dtPAiEAiocvL4BIUAayZzqLCeF81x/Ql62B0BXjTuTYQuBqd2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":670694},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9db08553d484b3a494d05f2f14519234717be210","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.0_1779922063637_0.613929061586495","host":"s3://npm-registry-packages-npm-production"}},"0.28.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"e887e96ac724700f58e08a7de30d474254ebabbf","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.1.tgz","fileCount":96,"integrity":"sha512-xpUXjZxeF/xd3bF7pNKkSNBZiNDCEYt25VoX5sbo9adi/JreikbEhY5lFxOFzj5Sc0juZsSjoe5/SNVt8gxr7w==","signatures":[{"sig":"MEQCIDEK2tgodaLtLtJoaki1aJkKgpdjhvZywPu+uujv/6jmAiAWJUoGwjxjSVuwLe6O4rRWOMXI+2IEM59P/RaPwco3bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":674590},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7b81c75e0be248367c2943e3dc589bdc90377d7d","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.1_1779925137667_0.6205310396974111","host":"s3://npm-registry-packages-npm-production"}},"0.28.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"fd9cdb19eaf6fbc25ab7dedfe8c7c765fbcd613c","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.2.tgz","fileCount":96,"integrity":"sha512-3fBuAFD4/ixoQhOrEuc3g7QpfUsx7S+HYFmMI9dOhP8eWHfonB+lyLi1KtaCP+Ujf1W2o1XBevQ16vMhbDDi/g==","signatures":[{"sig":"MEYCIQCX/t6Qo1B01ebQT/hhkCkhA/da28gFHtsmwhdP9MEYYAIhAMslJrUTKCk7+c/n/BNY1kSrkVKArP0HWA48Ha0YLbKD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":678663},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"929edabbc05193a738efbe304a93d5e8d7da7a33","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.2_1779927549157_0.704064016935285","host":"s3://npm-registry-packages-npm-production"}},"0.28.3":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.3","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.3","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"90ba93ac5016d5574a70b51b850ff4fadd118d49","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.3.tgz","fileCount":96,"integrity":"sha512-sDK6PFvBd7TgNLxktw6R8ZPyE1qDuh0+H75fX5yy9k+hyje5I84TJozRwJiOde32amKKaLYyigTr0XWOhy+U2Q==","signatures":[{"sig":"MEYCIQD5KFy1irPTTnoxZu+/wuyhi4wVlyraI4uvbeRNQtBwFwIhAKcT1852oWez/0evfS/RQRtuPfvlWl+G+9zCRYgb58LH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687259},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fa436114a95e4324d3e54d4fa0af10b555bdc90b","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.3_1779964755121_0.9022401551415358","host":"s3://npm-registry-packages-npm-production"}},"0.28.4":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.4","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.4","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"1c48a054e7740ede1c2c13f373d1efaba669880d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.4.tgz","fileCount":96,"integrity":"sha512-yLIihNarqWAmLDn9htyV7Gklxe5DQctTsTRL1Iwk1NA3JOL0kP9UjOx575cmcwabIEB3uCTJyNEuAHo5hKj4TA==","signatures":[{"sig":"MEYCIQCldsey28KUM4dS36/M8yCq5hyOaYzt/GUUhSI3pdV8IgIhAICqqqNOrV/eyZaPuzC148C87yJBUOx8ND67sAAQrq/x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688155},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8160cf29d5bc6164ebec0c2fc969a04bdf3c01bc","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.4_1779965071101_0.24524096049779898","host":"s3://npm-registry-packages-npm-production"}},"0.28.5":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.5","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.5","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"5bafdce0f4d7685f31fc01b148c017ce22dccf1d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.5.tgz","fileCount":96,"integrity":"sha512-+Gu1hCbrgex7Dft28pKQqymg77GKuaVzV42FqklbqQSbmxBSpO48B6KK6fv7WvGs+6qozg4xNyui75J6ZAwwVg==","signatures":[{"sig":"MEUCIQDnnPB/jrssqe7ipKWG6NsFtdwte8XtA0joiN+rPMC1AwIgENPNt3F4wOUmywu1bx7zDojNp98GcjZEpQBJ3OzzWiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":696824},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"859947ce2f21fff7ed716c94cb5ee317c2823249","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.5_1779967221711_0.14443763462394776","host":"s3://npm-registry-packages-npm-production"}},"0.28.6":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.6","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.6","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"5d11a8028a021cb300106c55ac9f037284bf6d39","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.6.tgz","fileCount":96,"integrity":"sha512-/nJf4s4fbA0E9bD8aWUCCOQERveOLzRE3yTELWn4OXal5Pb7EStP+IdTKomVgqkc5+2d5gIzXbhs6YXIJ6mBAA==","signatures":[{"sig":"MEYCIQCqrS9LjKEF/r2gKaL8YN6L+LZobHVe6105fRppeuQUWwIhAMLW6TGRu+rpdiDKzdzO11Mu1zt5Uu2rZolGTD59JnjS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":699302},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"6827b1f68bb7320895b205f5ade62782c8c09350","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.6_1779968580253_0.4701163812028988","host":"s3://npm-registry-packages-npm-production"}},"0.28.7":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.7","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.7","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"5f6ef05e0ca52213d1360ad7f1e3c964829c55bf","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.7.tgz","fileCount":96,"integrity":"sha512-4qnwuP8JDgic/TkH7Lct4m5EatUUDZnN+DXJn+WRTexxKOirdN63vJguv5l/OLl4cQlY4nkVVDQDGPjFSAGpWw==","signatures":[{"sig":"MEYCIQDYmEOUGPlGzyEuWvPs3cNINf0SenS6Q4RmxAFNWDCHxQIhAPwXf4nTKHt68O91c1YpVIckryOO06BYuoPjtu35u9s1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":701690},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"aec7f951c08bb40effd772422517fb91f1203db7","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.7_1779987028785_0.1006647685925115","host":"s3://npm-registry-packages-npm-production"}},"0.28.8":{"name":"@whitenoisenpm/testforge-mcp","version":"0.28.8","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.28.8","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"ffbe65ed2e4a0ea4ee8acd9b6a9ce05847b329ad","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.28.8.tgz","fileCount":96,"integrity":"sha512-7rAyKvoBo2TPDeBg2u2rwu8iDoR0g30fX6EHV6mGKWOqNJgmSZmR/haO2a4s3IkjLEbxtE8y0OUgxJLpqbF5zA==","signatures":[{"sig":"MEQCID0cUmSi62jOV8XgyO/D56bjxi8/kNCeJsjT0oFWX4eqAiBUsNwDa+3eGSxEZ9YXO81wAJBdm9S1CHiZVsJ2obgouQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703464},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7d5406937d30fc370c354fc7fba527e9f1ea71a1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.28.8_1779987833273_0.9951630914642318","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.29.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.29.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"e1b78d5e3456c7428d607d3f4908594f6556da52","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.29.0.tgz","fileCount":98,"integrity":"sha512-7h/5bmd4iBmPfJO3VvRgXh38ik3koPo48lEujba4jizrrtBTmDNzTgYWKKcn7xBDo82mlSPNx2zVQShoUwZW/Q==","signatures":[{"sig":"MEYCIQCth3hGjacTW5uA3eEco2aLUPynpTzz/xJD2HbZuEakYgIhAL/4Jsr7mjvHcTHKeg1YsUrvy9P5fxsTMH0dx2azWlb9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":710623},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"58d42499005edc0dfd4f616f8fd6c5a8b3a5a2ca","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.29.0_1779988889247_0.3499765513218911","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.29.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.29.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"0a7a5acf60bc38c0b665a0c0544cb126737d93e7","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.29.1.tgz","fileCount":98,"integrity":"sha512-nPJbKfbuMAL+c545I1C+ASuPZNVz0YPFidjHdL70Zgai0WThqh4tmYWmFKCtv1dkfwMjSTb174nYD5h8d6aFZQ==","signatures":[{"sig":"MEUCIBkfoDkCETBFYr76o1wS5rUpDyxM8kI+IoeqlfGrPh1kAiEA30+1pYsz3AjQswKMpFBlVEnSBdtCI6/Kf4s5JhMhU7M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711016},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"772b4f133be747fcbea10e097a3c6cdffa284837","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.29.1_1779989857395_0.06687333077934499","host":"s3://npm-registry-packages-npm-production"}},"0.29.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.29.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.29.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"045c0043ddc5c20a6f965989b7ea0d4ed015c602","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.29.2.tgz","fileCount":98,"integrity":"sha512-QRcidf7EoF8BT7+qMWr2iA+YrhMymt+nFxzZASW2zLkQarLazbsmiUeW4D+mLzTPMGXGcGyxjQfcHzr3pa7jsQ==","signatures":[{"sig":"MEQCIH5L61/B75tfYjFWQSM6N+PNRLze2IXbSIZqvIVbJeHrAiBLTft+jyn2UwbT968mEFgLxGmtdp3G8StRBaUH2V9wvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712619},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b29da1dd689d95fb3be41671bd94ef058ac0b679","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.29.2_1779990865426_0.6362528073608886","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.30.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.30.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"1bf8c1911aba38db08089b7ebd2c7f6372a2af86","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.30.0.tgz","fileCount":115,"integrity":"sha512-2T82wB3K8deRYwklfrdztNILPZpiRmUp3F2qNFgtp1BD0q6Myr1uFfUc5VAM/uxKxxUJvreX2XKb0w4CWn0SXQ==","signatures":[{"sig":"MEUCIQDDW2AeWCFVhI60KN242D/e0Da2ur4beqkpP/gFjD1puwIgBoj6PH1+2CrR+CC7aNMgzPpVeurmwDv57ZJRjoyr86s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":805762},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"dc2dcec11516235ece67b6c6541860104fa17ce9","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.30.0_1780004761411_0.8972916924960666","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.31.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.31.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"ba948f3c2eece0e5e80be06d40915e5f44a04681","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.31.0.tgz","fileCount":117,"integrity":"sha512-++y6njPVsUFRwYbcvk4IMD6kjvZKpUaMrXv5HXGGZrnZFbyXVZN54sDfCq5Pvaiayx+zPzfckWun/bBNLo0h1g==","signatures":[{"sig":"MEQCIHVhATmKEdaUHViZ5gU8r5fTQk/NXsP9DcTI+xwN/eRRAiBpFOPBBbq5/S8jQlbI286OSghAqwx2xDYNB01ZoP7keQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":817719},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2d56c0d8d43a0e6d98ee7d470c3a26e708175687","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.31.0_1780008790567_0.9483398186264764","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.32.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.32.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"e88fcbc331fdf105addb0bf64856e453db0b9e72","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.32.0.tgz","fileCount":129,"integrity":"sha512-jjjwvyK6s6cFFV/i7rQhRJEdp04NHzS26ZsTyB78MY660Dr0KpG2Zbh1IfIsXOMYecEbplr9dF93tXalMGoIoA==","signatures":[{"sig":"MEUCIDtrVIAVi/csnqbfYXMyJCZUd0iJjS7MOpKiPcOdP9fPAiEA/HJJHsjHhR0silCa8rLynjW2WpMDF/M15xWI0veEPOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":866748},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4c80f2c863c02ad2ee0848248360c97a8e62e3f4","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.32.0_1780015003688_0.4614452258205959","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.33.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.33.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"ad3baa2445625076679e777eac96423bb863da55","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.33.0.tgz","fileCount":129,"integrity":"sha512-LB0O8M4Dj+70/4MZ9XbU3Wu3V0WCjBCFKahvgYlUT8fXiH5gm0aXrJLUA/vA4eFHsm0JNUZOlePZWXmwlJ+RiA==","signatures":[{"sig":"MEQCIDDbUj+cI2GL7s5a1PDudvHnIDk1byRan8RrxZeTZdO9AiA1QoMTLBi1zuzExKroNFYNDFXKrccoS3p6Foeh5k0Arw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":870245},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"aa9f9f543dbf39547e1dcd950e44a96bead090aa","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.33.0_1780027866963_0.23731667089903152","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.34.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.34.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"fedbafd81059e73827f66e7e618c7e2d20337a23","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.34.0.tgz","fileCount":135,"integrity":"sha512-NTgj6O6wFnv0R5tZwHKd4V1jUGh8jTAlcBuwXS1ZCDg5MNLvwmzem/5m/K4zrqxg8nvoOgPCj9OEe3v2Dtq1xw==","signatures":[{"sig":"MEYCIQCli9fUYzu3BZELj+uE4ihagMdNh29UV/+NrW43cUh7XwIhAK24a4lWOFM9pHVoC5zyGsEx40glGKc6q43dawCbaSIf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":885838},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"dd8d047d6b5cb84f8e0584210c4ed2f72c893b31","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.34.0_1780029505299_0.29776947039225465","host":"s3://npm-registry-packages-npm-production"}},"0.34.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.34.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.34.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3030d7b771c0c68e4b84358d3f348d4fb29364ae","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.34.1.tgz","fileCount":135,"integrity":"sha512-mzLYR1woztq58xjcB+q/grSxGkySK5783dWoIX0LGwLVl8pHx8BRiSAwaB9A5kXeL1TVrtSABZPmxC7iUOY8DQ==","signatures":[{"sig":"MEYCIQCgEG4XEgAVZeWM4JA5tCsef3IxElCsKW+ut0tiiWnE5gIhAPTft9nHsL3H4gyZBVPoD/EHj3V+itelWNyeNieeAXsE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":888466},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"451d4418e4c504c159ab1039fd1ce8ca3098839b","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.34.1_1780143035484_0.21173188549179733","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.35.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.35.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"0183872b9cad41cce85002a1dff3356120b0e2ac","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.35.0.tgz","fileCount":135,"integrity":"sha512-Kf+bmAoZhVK7hARDZNgSIFjt0BvnhfoKJ0TKcZv0Q4BDxJosdKbmL1OQk93w8TEJjQJwTXv5BD9mq56OfD+9Zg==","signatures":[{"sig":"MEYCIQDwb1AyOaxaBY+2GmHoRlNIeFBIVDu3jWuiAPlvUp709AIhALPA02zepXAuJggX75anpqzUdK0iwyjk6asol/GQNQqA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":907954},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"42400ccf775754287361400ffce3efbd348ff699","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.35.0_1780144532976_0.04532718644018141","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.0","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.0","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"9a278701614c78b1fcfcb3eace7f6957c33b6a91","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.0.tgz","fileCount":135,"integrity":"sha512-vpswCLunSKgZbgxF0uXBdBIN4+/+t1PlzYgBO2KuiPyEb3IJYRts1huGL5NqvbrJOtqVZw7AKb3oZzWfSKa34A==","signatures":[{"sig":"MEUCIBTiZ7ZBjhllUSCkKOZeluxCXBLjrOBL+j59fH7SMjgXAiEAord8t1+JbNl2gZ5fLR2DSXrey5D+rGGKOlIGDf2LGbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":910735},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"93583bcabca7372d44a9a0cf31f6cf430d3f893d","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.0_1780145356903_0.3722956105056867","host":"s3://npm-registry-packages-npm-production"}},"0.36.1":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.1","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.1","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"897179eb48e8c76be7a48534889f8b1f001912a7","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.1.tgz","fileCount":135,"integrity":"sha512-Gxv2ljQmkbXn8xHsp3jedOjk9c/fVi2geTHLt/nkk5A/z5+Z6/WTsZjc0ugbkUv7VgB2KlvzyAnLRe8266cmZA==","signatures":[{"sig":"MEUCIFHisYXPDhDkkxGyv+a8x05uYdOKjLLfX4TyE4MUiNxsAiEA6ZEpulF40+A0vVDCdFXCRt9iUlG2+hbIlUcs6XZSadA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":912180},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"80ddfa0ac85ae915bae0e9c7ed469caba1c31625","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.1_1780147427726_0.9790885814977022","host":"s3://npm-registry-packages-npm-production"}},"0.36.2":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.2","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.2","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"3a1ef1af26105cd490e16d3766375c6c50d98ab5","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.2.tgz","fileCount":135,"integrity":"sha512-/0TtP4zXiwjVVcpPT8hCIyiJ23Ol5Ws5xjcP2uYC5Lf/48qjnqG/yE5xeYpuqjUIJODFS1vA23RlBLHwrPop1w==","signatures":[{"sig":"MEUCIQCUtvWadm/1aI3FA7yYuHGRnReAK4eKZOSOJwmn3Cxg1gIgaXnRqe9qv7lEu2mJGSCd4TNGy/+etu0B3dLYOgSHU7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":913637},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"56728b026915dc05402dfe9fdb6da795097cf652","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.2_1780148312242_0.7459516847319334","host":"s3://npm-registry-packages-npm-production"}},"0.36.3":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.3","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.3","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"b620220762f2b3915cf646295cb538c6b9d22afd","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.3.tgz","fileCount":135,"integrity":"sha512-MBwCw82pyZ41NH4pMzjRhH7zGNrpx3G7yptThWOHex16YYOvoVqriz26SglvEQpOlfRhVUoXmGiS53I6IE+bUQ==","signatures":[{"sig":"MEUCIQCcfvrVMLEcr62LLICZdUm2EeHIsYj/KZKxe6rBOn7KGQIgIj14Eg7i/rLY/LdDoC/tq7Hamm/Em62JD0Gpe/36Wps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":918284},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4f3f7fb167abd75a06310d24349e42cccb4d8ab5","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.3_1780158456881_0.4017019172608014","host":"s3://npm-registry-packages-npm-production"}},"0.36.4":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.4","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.4","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"61bb396c3e77b8cf1166a46fe1cacf4a4acb4c8d","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.4.tgz","fileCount":136,"integrity":"sha512-l/SDWvshdoGIOk3KTSQdN59VBDYrMMWgzO+U6Lg13AYyMeZoKnCIX8WSBJKcgcfC/wZONBTAPQiqu5Nj72+5nQ==","signatures":[{"sig":"MEUCIQC7q4vorPziGMOm1c+um3khsrAOV/fR5sujJ9wsJt6sfQIgUOzagbIE5yI02kIN8i11kIaxdueGnr7lTQmt3XKydhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":937972},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"861ac24dedcee7dcae74d09e5f212896c919d77e","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.4_1780169457260_0.7473314368511945","host":"s3://npm-registry-packages-npm-production"}},"0.36.5":{"name":"@whitenoisenpm/testforge-mcp","version":"0.36.5","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"license":"MIT","_id":"@whitenoisenpm/testforge-mcp@0.36.5","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"homepage":"https://testforge.run","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"bin":{"testforge-mcp":"bin.js"},"dist":{"shasum":"91a1da6f5e0bffaf019402e68e9d2d12e01aacee","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.36.5.tgz","fileCount":138,"integrity":"sha512-CK2wpc4rK3yb/1lzHGP77FwD/dHrcN1kekiqTjP61KEEDvvQtsScHUtaUuWFFKEufakf34hnwHWv1Mj6HZg7Sw==","signatures":[{"sig":"MEQCIDHbj8KZzYdHqjFgEfPM/Oq83WIV2JJ573l1VFF3yewJAiAES8NfaZTHxOeIo0MnerXRltTubuUmxExemIIEDcS4cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":942589},"main":"./bin.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"615ebd95db708d6d627dfc3e05dbf6701f84fbcb","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"repository":{"url":"git+https://github.com/t4tarzan/testforge.git","type":"git","directory":"mcp-server"},"_npmVersion":"11.11.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","directories":{},"_nodeVersion":"25.8.0","dependencies":{"ai":"^6.0.191","zod":"^4.4.3","glob":"^10.4.0","chalk":"^5.3.0","dotenv":"^16.4.0","fastify":"^4.28.0","js-yaml":"^4.1.1","@babel/types":"^7.29.7","@babel/parser":"^7.29.7","@fastify/cors":"^9.0.0","@ai-sdk/openai":"^3.0.65","better-sqlite3":"^12.10.0","@babel/traverse":"^7.29.7","@fastify/static":"^7.0.4","fast-json-stringify":"^5.16.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.15.0","vitest":"^4.1.7","typescript":"^5.4.0","@types/node":"^20.0.0","@types/js-yaml":"^4.0.9","@types/babel__traverse":"^7.28.0"},"_npmOperationalInternal":{"tmp":"tmp/testforge-mcp_0.36.5_1780251460455_0.8824670125788747","host":"s3://npm-registry-packages-npm-production"}},"0.37.0":{"name":"@whitenoisenpm/testforge-mcp","version":"0.37.0","description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","type":"module","bin":{"testforge-mcp":"bin.js"},"main":"./bin.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","test":"vitest run","test:watch":"vitest","prepublishOnly":"npm run build"},"keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"repository":{"type":"git","url":"git+https://github.com/t4tarzan/testforge.git","directory":"mcp-server"},"homepage":"https://testforge.run","license":"MIT","dependencies":{"@ai-sdk/openai":"^3.0.65","@babel/parser":"^7.29.7","@babel/traverse":"^7.29.7","@babel/types":"^7.29.7","@fastify/cors":"^9.0.0","@fastify/static":"^7.0.4","ai":"^6.0.191","better-sqlite3":"^12.10.0","chalk":"^5.3.0","dotenv":"^16.4.0","fast-json-stringify":"^5.16.1","fastify":"^4.28.0","glob":"^10.4.0","js-yaml":"^4.1.1","zod":"^4.4.3"},"devDependencies":{"@types/babel__traverse":"^7.28.0","@types/js-yaml":"^4.0.9","@types/node":"^20.0.0","tsx":"^4.15.0","typescript":"^5.4.0","vitest":"^4.1.7"},"engines":{"node":">=18"},"gitHead":"7dacaed9910ea2ae88e29267f9705e35b4cc2007","_id":"@whitenoisenpm/testforge-mcp@0.37.0","bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"_nodeVersion":"25.8.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-OE8Hzanr8Or2F3RKfF7mSQE0mz+NNujQEgF9ZZYx123SLmxqYc+cBncdD2PkTMSMffCrF4VMS5+DXxdHpX7ALA==","shasum":"b00a3fc2ab27ab9f348de22f8061ff31ef945b41","tarball":"https://registry.npmjs.org/@whitenoisenpm/testforge-mcp/-/testforge-mcp-0.37.0.tgz","fileCount":152,"unpackedSize":1004023,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOzAfuxYES+mbNNl8sfZ1XqE3UFbl17hLYWB+RkCbWKQIhAMYK4jQwNdl33KCaoQ6cqQfxOO7zDnI6kn+L4CqwlNEz"}]},"_npmUser":{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"},"directories":{},"maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/testforge-mcp_0.37.0_1780683308087_0.9272096603854587"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T20:30:48.744Z","modified":"2026-06-05T18:15:08.418Z","0.2.0":"2026-05-24T20:30:49.074Z","0.2.1":"2026-05-24T20:31:28.139Z","0.2.2":"2026-05-24T20:32:03.143Z","0.2.3":"2026-05-24T20:33:13.678Z","0.2.4":"2026-05-25T10:21:48.249Z","0.2.5":"2026-05-25T10:42:07.010Z","0.2.6":"2026-05-25T10:59:35.202Z","0.2.7":"2026-05-25T11:49:49.103Z","0.2.8":"2026-05-25T11:58:03.093Z","0.2.9":"2026-05-25T12:02:01.072Z","0.2.11":"2026-05-25T12:06:36.217Z","0.2.12":"2026-05-25T12:08:58.260Z","0.2.13":"2026-05-25T12:09:08.939Z","0.2.14":"2026-05-25T12:12:02.728Z","0.2.15":"2026-05-25T12:13:57.822Z","0.2.16":"2026-05-25T12:15:42.750Z","0.2.17":"2026-05-25T12:18:42.419Z","0.2.18":"2026-05-25T15:19:03.342Z","0.2.19":"2026-05-25T16:53:59.818Z","0.3.0":"2026-05-26T10:29:56.214Z","0.4.0":"2026-05-26T12:51:35.252Z","0.5.0":"2026-05-26T13:04:32.463Z","0.6.0":"2026-05-26T13:17:08.920Z","0.7.0":"2026-05-26T13:57:19.869Z","0.8.0":"2026-05-26T15:16:15.591Z","0.8.1":"2026-05-26T15:46:33.557Z","0.9.0":"2026-05-26T15:57:48.750Z","0.10.0":"2026-05-26T16:08:25.634Z","0.11.0":"2026-05-26T16:19:46.236Z","0.12.0":"2026-05-26T16:28:11.319Z","0.13.0":"2026-05-26T16:37:35.207Z","0.14.0":"2026-05-26T16:46:19.583Z","0.15.0":"2026-05-26T16:53:38.786Z","0.16.0":"2026-05-26T17:02:57.522Z","0.17.0":"2026-05-26T17:17:49.472Z","0.18.0":"2026-05-26T18:30:24.997Z","0.19.0":"2026-05-26T18:40:01.242Z","0.20.0":"2026-05-26T18:51:54.351Z","0.21.0":"2026-05-26T19:06:40.148Z","0.22.0":"2026-05-26T19:16:25.617Z","0.23.0":"2026-05-26T19:24:32.513Z","0.24.0":"2026-05-26T19:34:09.986Z","0.25.0":"2026-05-27T12:43:26.405Z","0.25.1":"2026-05-27T13:08:23.566Z","0.25.2":"2026-05-27T13:16:51.236Z","0.26.0":"2026-05-27T18:41:53.314Z","0.26.1":"2026-05-27T19:58:48.446Z","0.26.2":"2026-05-27T22:06:45.060Z","0.27.0":"2026-05-27T22:21:20.848Z","0.27.1":"2026-05-27T22:29:43.539Z","0.27.2":"2026-05-27T22:41:07.925Z","0.28.0":"2026-05-27T22:47:43.846Z","0.28.1":"2026-05-27T23:38:57.808Z","0.28.2":"2026-05-28T00:19:09.385Z","0.28.3":"2026-05-28T10:39:15.356Z","0.28.4":"2026-05-28T10:44:31.305Z","0.28.5":"2026-05-28T11:20:21.855Z","0.28.6":"2026-05-28T11:43:00.409Z","0.28.7":"2026-05-28T16:50:29.004Z","0.28.8":"2026-05-28T17:03:53.457Z","0.29.0":"2026-05-28T17:21:29.452Z","0.29.1":"2026-05-28T17:37:37.577Z","0.29.2":"2026-05-28T17:54:25.556Z","0.30.0":"2026-05-28T21:46:01.595Z","0.31.0":"2026-05-28T22:53:10.737Z","0.32.0":"2026-05-29T00:36:43.959Z","0.33.0":"2026-05-29T04:11:07.135Z","0.34.0":"2026-05-29T04:38:25.489Z","0.34.1":"2026-05-30T12:10:35.699Z","0.35.0":"2026-05-30T12:35:33.139Z","0.36.0":"2026-05-30T12:49:17.049Z","0.36.1":"2026-05-30T13:23:47.924Z","0.36.2":"2026-05-30T13:38:32.410Z","0.36.3":"2026-05-30T16:27:37.102Z","0.36.4":"2026-05-30T19:30:57.456Z","0.36.5":"2026-05-31T18:17:40.641Z","0.37.0":"2026-06-05T18:15:08.285Z"},"bugs":{"url":"https://github.com/t4tarzan/testforge/issues"},"license":"MIT","homepage":"https://testforge.run","keywords":["testing","mcp","model-context-protocol","security","code-analysis","ai","cursor","vscode","testforge","static-analysis","vision-alignment","scope-testing","stack-analysis"],"repository":{"type":"git","url":"git+https://github.com/t4tarzan/testforge.git","directory":"mcp-server"},"description":"TestForge MCP Server — AI-powered testing in your IDE. Analyzes code for security, unit tests, load, accessibility, vision alignment, scope coverage, and stack quality.","maintainers":[{"name":"whitenoisenpm","email":"rao.vinu@gmail.com"}],"readme":"# @whitenoisenpm/testforge-mcp\n\n**AI-powered testing in your IDE.** The TestForge MCP server integrates with Cursor, VS Code, Windsurf, Claude Code, and any MCP-compatible editor to provide real-time code analysis — entirely on your machine.\n\n```bash\nnpx -y @whitenoisenpm/testforge-mcp@latest        # start the server → http://localhost:33221\nnpx -y @whitenoisenpm/testforge-mcp setup         # interactive config wizard (AI provider, port, secret)\nnpx -y @whitenoisenpm/testforge-mcp --help        # full env-var reference\n```\n\n**Tier-1 (22 dimensions) needs no config.** For Tier-2 (LLM test generation + sims), run `setup` once — it configures an AI provider (OpenRouter cloud **or** a local model server like Ollama / LM Studio) and writes `~/.testforge/.env`. No database to install — run history is auto-stored in SQLite at `~/.testforge/history.db`.\n\n## What it does\n\n| Dimension category | Examples |\n|---|---|\n| **Security (SAST)** | SQL/NoSQL injection, eval, XSS, sensitive data in logs/responses, hardcoded secrets, CORS misconfig, OWASP coverage |\n| **Quality** | Unit-test coverage, mutation-score estimate, predictive risk, dead-code, license/supply-chain audit |\n| **Performance & resilience** | Load profile, rate limiting, caching, n+1 query patterns, chaos resilience |\n| **Product & ops** | Vision/goal alignment (observability, analytics, feature flags), scope coverage, stack quality, DORA estimate, agentic-scale prediction |\n| **UI** | Accessibility (WCAG-ish): alt text, form labels, visual-regression hints |\n\nAll Tier-1 analysis is regex/static — fast, no LLM calls, deterministic. Same input → same output. **Tier 2 (Generate & Run)** layers an LLM on top: it writes real tests (Vitest / pytest / Go) for the top findings — grounded in your actual source, and importing & executing your real code when it safely can — and runs them in a sandboxed Docker container. **Simulate** goes further: it boots your app and exercises the *running* system (load, chaos, real-code unit tests in the booted image, and a Playwright browser crawl + LLM-authored user journeys). See the Tier 2 and Simulate sections below.\n\n## Quick Start (Tier 1)\n\n```bash\n# Start the server (port 33221)\nnpx @whitenoisenpm/testforge-mcp@latest\n\n# Dashboard:\nopen http://localhost:33221\n```\n\nThe dashboard lets you paste a local project path **or** a public GitHub URL, runs the full 22-dimension analysis, and persists each run to SQLite at `~/.testforge/history.db` so `/reports` shows your history. Everything stays on your machine — no API keys required.\n\n## Tier 2 — Generate & Run (LLM tests + sandbox)\n\n> Added in **v0.25.0**. Tier 1 keeps working without any extra setup. Tier 2 needs an AI provider (cloud key **or** a local model server) and Docker running.\n\n**Easiest:** `npx @whitenoisenpm/testforge-mcp setup` — pick OpenRouter or a local server (Ollama/LM Studio), and it writes the config for you. Or set env vars manually:\n\n```bash\n# Option A — OpenRouter (cloud). Free key at https://openrouter.ai/keys\nexport OPENROUTER_API_KEY=sk-or-v1-...\n\n# Option B — local model server (Ollama/LM Studio/vLLM), free + private, no key:\n#   ollama pull qwen2.5-coder:14b\nexport TESTFORGE_LLM_BASE_URL=http://localhost:11434/v1\nexport TESTFORGE_PRIMARY_MODEL=qwen2.5-coder:14b\n#   (from Docker, use http://host.docker.internal:11434/v1)\n\n# 2. Make sure Docker is running (Docker Desktop on macOS / Windows;\n#    docker daemon on Linux). No image build step needed — the runner\n#    image is pulled from GHCR on first use.\n\n# 3. Start the server with the key in env\nOPENROUTER_API_KEY=$OPENROUTER_API_KEY \\\n  npx @whitenoisenpm/testforge-mcp@latest\n\n# 4. In the dashboard, click \"🤖 Generate Tests (Tier 2)\"\n#    under any analysis report. The first call pulls\n#    ghcr.io/t4tarzan/testforge-runner:latest (~92 MB, ~10s).\n#    Subsequent calls reuse the local image and run in ~1s.\n```\n\n**What it does**: takes the top-3 highest-severity findings from a Tier-1 run, sends each to the LLM with a Zod-enforced schema (filename, content, reasoning), then runs the generated tests in a `node:22-slim` / pytest / Go container (`--network=none`, `--rm`, caps dropped) with the framework's JSON reporter.\n\n**Tests are grounded in your real code, not a description of it:**\n- Each finding ships the **actual source** at the flagged line, so the generated test reproduces *your* logic — not a generic example.\n- When the finding's file is a **leaf module** (imports only Node built-ins), the test **imports and executes the real module** in the sandbox, so the pass/fail reflects your actual code.\n- For deeper coverage (modules with dependencies), the **Simulate `wired` lane** runs tests against the real code *inside the booted app image*, where its dependencies already resolve. See Simulate below.\n\nPolyglot since v0.29: `.ts/.js` → Vitest, `.py` → pytest, `.go` → `go test`, each in its matching sandbox image.\n\n**Provider stack** (default models via OpenRouter; override either, or point at a local server with `TESTFORGE_LLM_BASE_URL`):\n\n| Model | Role | Override |\n|---|---|---|\n| `deepseek/deepseek-v4-flash` | Primary — cheap, fast, capable coder | `TESTFORGE_PRIMARY_MODEL` |\n| `moonshotai/kimi-k2.6` | Fallback — different provider (hit when primary rate-limits/fails) | `TESTFORGE_FALLBACK_MODEL` |\n\n**Endpoint shape**:\n\n```bash\ncurl -X POST http://localhost:33221/generate-and-run \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"findings\": [{ \"title\": \"…\", \"description\": \"…\", \"filePath\": \"…\",\n                   \"lineNumber\": 42, \"severity\": \"high\", \"rule\": \"…\",\n                   \"fixSuggestion\": \"…\" }],\n    \"maxFindings\": 3,\n    \"cluster\": \"edge-case\"\n  }'\n# → { generationId, provider, generationMs, runMs,\n#     results: [{ finding, file: { filename, content, reasoning },\n#                 attempts: [{ model, ok, durationMs }] }],\n#     run: { numPassedTests, numFailedTests, files: [...] } }\n```\n\nHistory endpoints:\n\n| Endpoint | Returns |\n|---|---|\n| `GET /api/generations` | List of recent Tier-2 generations (id, cluster, provider, pass/fail counts) |\n| `GET /api/generations/:id` | One generation with the full payload (source files + run details) |\n\n**Cost** at OpenRouter list prices: roughly **$0.02 per Tier-2 invocation** (3 generations × ~1.5k output tokens at Qwen 3.7 Max pricing). Sandbox compute is free locally.\n\n**Self-host vs managed**: the local MCP runs Tier 2 with no quota — you BYOK OpenRouter and pay them directly. The managed SaaS at [testforge.run](https://testforge.run) gates Tier 2 to the **Forge plan** ($99/mo, 100 iterations/mo) and handles the keys for you.\n\n## Simulate — exercise the *running* app\n\n> Where Tier-2 runs sandboxed unit tests, **Simulate boots your app and drives the running system.** Needs a root `Dockerfile` (or `docker-compose`) it can build, plus Docker running. Async (real sims take minutes): you get a `jobId`, then poll.\n\n```bash\n# Kick off (opt into the lanes you want via \"dimensions\")\ncurl -X POST http://localhost:33221/simulate \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"repoUrl\":\"https://github.com/owner/repo\",\n       \"dimensions\":[\"load\",\"chaos\",\"wired\",\"e2e\"],\n       \"journeys\":2, \"maxPages\":8}'\n# → { jobId, statusUrl }\n\n# Poll for phased progress + the final result\ncurl http://localhost:33221/simulate/<jobId>\n```\n\nIt clones → detects how to boot (Dockerfile/compose) → builds + boots the app once on an isolated network → runs the requested **lanes** against it → tears down. If it can't be auto-booted, each lane returns an honest `ranReal:false` + reason (and a static fallback for load/chaos).\n\n| Lane (`dimensions`) | What it does |\n|---|---|\n| `load` *(default)* | autocannon ramp (10→500 concurrency) → p50/p90/p99, rps, error rate, breaking-point concurrency |\n| `chaos` | baseline load → inject a fault (restart/pause) → `errorRateDuringFault` + `recoverySeconds` |\n| `agent` | ramps a fleet of think-time agents → `maxHealthyAgents` |\n| `wired` | generates **node:test** files that import & run your **real code inside the booted image** (deps resolve from the image; Node apps, v1) |\n| `e2e` | **Playwright** crawls the running app → console errors, 4xx/5xx, axe a11y violations. Add `journeys:N` for **LLM-authored user journeys** (navigate/click/fill/assert) run as a deterministic step-DSL |\n\n`maxPages` bounds the e2e crawl (default 8); `journeys` (0 = smoke only) sets how many user journeys the model authors. `concurrencyLevels`, `durationPerLevelSec`, `faultType` tune load/chaos.\n\n## Manual MCP Setup\n\n### Cursor / Windsurf / Claude Desktop\n\nOpen IDE settings → MCP → add server:\n\n```json\n{\n  \"mcpServers\": {\n    \"testforge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@whitenoisenpm/testforge-mcp@latest\"],\n      \"env\": {\n        \"TESTFORGE_MCP_PORT\": \"33221\",\n        \"OPENROUTER_API_KEY\": \"sk-or-v1-…  (optional — only needed for Tier 2)\"\n      }\n    }\n  }\n}\n```\n\n### VS Code\n\nUse the Continue / Cline extension and add the same JSON to its MCP config block.\n\n## MCP Tools\n\n| Tool | What it does | Latency |\n|---|---|---|\n| `testforge_analyze` | Synchronous: scan codebase structure (files, endpoints, dependencies, tech stack) | seconds |\n| `testforge_quick_scan` | Async: security + unit dimensions only. Streams progress via SSE. | ~30s |\n| `testforge_test` | Async: full suite across all dimensions. Streams progress via SSE. Persists summary to SQLite on completion (since 0.2.19). | 1–5 min |\n| `testforge_report` | Get or generate a structured PRD report for a completed test run | seconds |\n\n## REST API (running standalone)\n\n```bash\n# Health\ncurl http://localhost:33221/health\n# → {\"status\":\"ok\",\"version\":\"0.36.5\"}\n\n# Public-status check (for badges/uptime)\ncurl http://localhost:33221/api/reports/latest\n# → 404 {\"error\":\"No reports yet\"} if SQLite is empty;\n#   the most recent report otherwise (no more seed/demo data fallback).\n\n# Synchronous full analysis of a public repo\ncurl -X POST http://localhost:33221/clone-and-analyze \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"repoUrl\":\"https://github.com/owner/repo\"}'\n\n# Async test run (background, streams via SSE)\ncurl -X POST http://localhost:33221/test \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"projectPath\":\"/path/to/local/project\"}'\n# → {\"testRunId\":\"...\",\"status\":\"running\",\"streamUrl\":\"/mcp/sse\"}\n\n# Progress for a specific run\ncurl http://localhost:33221/test/<testRunId>/progress\n\n# List recent persisted runs (from SQLite)\ncurl http://localhost:33221/reports\n\n# Single report by id\ncurl http://localhost:33221/report-view/<reportId>\n```\n\n## Local data\n\n| File | Contents |\n|---|---|\n| `~/.testforge/history.db` | SQLite with a `reports` table — one row per analyze / test run, including per-dimension scores and the full JSON blob in `full_data`. WAL mode. |\n| `~/.testforge/history.db-wal`, `.db-shm` | SQLite WAL sidecars. |\n| `/tmp/testforge-repos/` (or `$TMP_DIR`) | Temp clones of public repos for `/clone-and-analyze`. Deleted after each analysis. |\n\nYour source never leaves the machine — the dashboard is local, the analyzers are local, the DB is local. The only outbound calls are the `git clone` step (when you give it a public URL) and dependency lookups for license/supply-chain checks.\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `TESTFORGE_MCP_PORT` | `33221` | Server port. 33221 chosen to avoid common dev-server collisions (3000/3001/5173/8080). |\n| `TESTFORGE_MCP_HOST` | `0.0.0.0` | Bind address. Set `127.0.0.1` to listen loopback-only — e.g. when a reverse proxy / Tailscale Serve already fronts the port and a wildcard bind would collide. Docker/managed deploys keep the wildcard. |\n| `TMP_DIR` | `/tmp/testforge-repos` | Where `/clone-and-analyze` puts temp checkouts. |\n| `LOG_LEVEL` | `info` | Fastify logger level (`debug`, `info`, `warn`, `error`). |\n| `DATABASE_URL` | — | Optional. If set, the server can fall back to Neon for read-replica history. Not required for local-only use. |\n| `OPENROUTER_API_KEY` | — | **Tier 2 only.** OpenRouter key for LLM test generation. Without it, `POST /generate-and-run` returns 503. Get one at https://openrouter.ai/. |\n| `TESTFORGE_LLM_BASE_URL` | — | **Tier 2 (local model).** Point at an OpenAI-compatible local server (Ollama `http://localhost:11434/v1`, LM Studio, vLLM) for free, private, keyless generation. From Docker use `host.docker.internal`. |\n| `TESTFORGE_PRIMARY_MODEL` | `deepseek/deepseek-v4-flash` | Tier 2 primary model. Any OpenRouter (or local) model id works. |\n| `TESTFORGE_FALLBACK_MODEL` | `moonshotai/kimi-k2.6` | Tier 2 fallback when the primary errors or rejects the schema. |\n| `TESTFORGE_RUNNER_IMAGE` | `ghcr.io/t4tarzan/testforge-runner:latest` | Tier 2 unit-test sandbox image (+ `_PYTHON` / `_GO` variants). Auto-pulled from GHCR; builds locally from the bundled Dockerfile if the pull fails. |\n| `TESTFORGE_LOADGEN_IMAGE` | `ghcr.io/t4tarzan/testforge-loadgen:latest` | Simulate load/chaos driver (autocannon). Override to a local build if needed. |\n| `TESTFORGE_E2E_IMAGE` | `ghcr.io/t4tarzan/testforge-e2e:latest` | Simulate `e2e` crawler (Playwright + Chromium + axe). Override to a local build if needed. |\n| `TESTFORGE_RUNNER_TAG` | `v0.36.x` | Version tag for the runner images (`:latest` is cached and never re-pulled, so fixes ship on a fresh tag). |\n\n## Changelog highlights\n\n- **0.37.0** — **Tier-2 runs your real code, and Simulate exercises the running app.** Tier-2 test generation now ships the **actual source** at the flagged line (so tests reproduce your logic, not a generic example), **imports & executes the real module** for leaf findings (Node built-ins only), and the new Simulate **`wired`** lane runs `node:test` files against your **real code inside the booted app image** (dependencies and all). The Simulate engine also gains a **browser/E2E lane** — Playwright crawls the running app (console errors, 4xx/5xx, axe a11y) and, with `journeys:N`, runs **LLM-authored user journeys** as a deterministic step-DSL. New runner images `testforge-loadgen` + `testforge-e2e` (multi-arch GHCR, local-build fallback); `TESTFORGE_MCP_HOST` makes the bind address configurable. (Tier-1 stays at 22 dimensions — this work is all Tier-2 / Simulate.)\n- **0.29.0–0.36.x** — Simulate runtime engine (load/agent/chaos, then the Kubernetes runtime tier), polyglot Tier-2 (pytest + Go test), the analyzer flywheel, and precision passes. Per-release detail in git history and [[Evolution]] (`docs/knowledge/Evolution.md`).\n- **0.28.4** — **Accessibility analyzer skips test paths.** Same suppression the security analyzer got in 0.27.0: a11y per-file checks now skip `tests/`, `__tests__/`, `e2e/`, `*.spec.*`, etc. Test fixtures routinely contain *intentional* a11y violations (TestForge's own `a11y-jsx` fixture is deliberately broken to test the analyzer), so flagging them is noise. Removes 9 fixture findings from the TestForge self-audit + fixes it for any user with a11y component tests.\n- **0.28.3** — **Security + a11y precision pass (false-positive cleanup).** Caught by the Supabase + TestForge self-audit reports, which showed mostly false positives. Four targeted fixes:\n   - **SQL/NoSQL sink receiver-awareness:** `isDbQueryCall` matched generic method names (`get`, `find`, `all`, `run`, `count`) regardless of receiver — so `urlParams.get()`, `Promise.all()`, `map.get()`, and an HTTP `get()` helper all tripped the \"SQL injection\" critical. Now split into STRONG methods (`query`/`exec`/`execute`/`raw`/`findOne`/`findMany`/`findUnique`/`findFirst`/`aggregate` — fire always) vs WEAK methods (`find`/`get`/`all`/`run`/`count` — only when the receiver looks like a DB handle: `db`/`conn`/`client`/`pool`/`knex`/`prisma`/`sequelize`/`collection`/`mongoose`/etc.). Supabase criticals dropped 14 → 1.\n   - **Minified / vendored skip:** files under `vendor/`, `monaco-editor/`, `*.min.js`, or with minified content shape (single >5k-char line, or >500-char average line) are excluded from per-file security analysis. Killed the monaco-editor `workerMain.js` findings.\n   - **Placeholder secrets:** `checkHardcodedSecret` skips bracketed/templated values (`[YOUR-PASSWORD]`, `<password>`, `${…}`, `{{…}}`) and common placeholder words (your-/example/changeme/dummy/sample/…) + all-symbol masks. Killed the 4 Supabase connection-string-UI password findings.\n   - **Luminance-aware contrast:** `checkColorContrast` matched ANY hex (`#[a-fA-F0-9]{3,6}`), so near-black text like `#12101A` fired \"low contrast\" — 100 false positives on the TestForge self-audit alone. Now parses the hex, computes WCAG relative luminance, and only flags genuinely light text (luminance > 0.55). Tailwind pattern narrowed to gray-300/400 (gray-500 passes AA on white). TestForge a11y findings dropped 175 → 87.\n   - Tests: 211 → 221 (+10).\n- **0.28.2** — **Coverage + Mutation dimension-correctness fixes.** Both dimensions were producing 0% scores on perfectly testable repos for reasons that turned out to be bugs in their signals — caught by the LangChain in-the-wild report (4,849 test cases but coverage 0%) and the TestForge self-audit (mutation always 0).\n   - **Coverage** (`runUnitAnalysis`): function-name matching between test descriptions and source function names returns ~0 on library code where test names don't echo function names (`it('chain handles long context')` doesn't match `function formatDate()`). New rule: when the precise heuristic returns near-zero on a project with substantial tests (≥10 test files AND test:source ratio ≥ 0.1), fall back to the test-to-source-file ratio as an honest secondary signal. App code keeps its precise score (TestForge stayed at 72%); libraries get a real number (LangChain went 0% → 31%).\n   - **Mutation** (`runMutationAnalysis`): the `hasTestFramework` early-return checked the ROOT `package.json` devDeps only, ignoring workspace members. TestForge's vitest lives in `mcp-server/package.json`; root has none, so root devDeps:[] → \"no test framework\" → score 0, even though the unit-analyzer correctly detected 17 vitest files via AST. Replaced the misleading devDeps signal with the actual test-file count (which the function already iterates anyway). Also extended the test-file regex to recognize pytest (`test_*.py`, `*_test.py`) and Go (`*_test.go`) conventions so cross-language repos count their tests properly. TestForge mutation went 0 → 35; LangChain went 0 → 54.\n   - Tests: 208 → 211. Two synthetic-fixture tests prove the ratio-fallback engages on abstract-test-name projects + the mutation analyzer scores >0 when test files exist regardless of root devDeps.\n- **0.28.1** — **Vulnerable-dependency check is version-aware.** Caught by the TestForge self-audit: `express ^5.2.1` fired \"Potentially Vulnerable Dependency\" even though the CVE in our table is on `<4.17.3`. `checkInsecureDependencies` previously matched by package name alone, ignoring the declared spec. Now collects version specs from every `package.json` in `fileContents` and short-circuits the finding when the spec's major version is strictly greater than the vulnerable upper bound's major (e.g. `^5.2.1` vs `<4.17.3` → safe → no finding). When the spec is unknowable (git+URL, \"latest\", workspace alias), still fires conservatively — safer than hiding a real vuln. New finding `description` now embeds the declared spec for actionability (`\"declared as \\\"express@^4.16.0\\\"\"`). Tests: 205 → 208 (+3 covering the three branches: safe-major, vulnerable-major, unknowable-spec).\n- **0.28.0** — **Go native support.** `.go` files now count in totalFiles + lines. New endpoint regex covers Gin / Echo / Chi / Fiber / Gorilla Mux (`r.GET(\"/path\", h)`, `app.Get(...)`, `mux.HandleFunc(...)`) plus stdlib `http.HandleFunc`. New `parseGoMod()` parses `require` blocks (single-line + grouped form), skips `// indirect` deps, normalizes module paths to short package names (`github.com/gin-gonic/gin` → `gin`), and correctly handles semantic-import-versioning suffixes (`jackc/pgx/v5` → `pgx`, not `v5`). Tech-stack tagging covers Gin, Echo, Chi, Fiber, Gorilla Mux, GORM/sqlx, Cobra, Viper, gRPC, structured logging (Zap/Zerolog/Logrus), testify/ginkgo, PostgreSQL (pgx/pq). Function-name extraction handles both package-level `func Name(...)` and receiver methods `func (r *T) Name(...)`. `go` moved from `UNSUPPORTED_EXT_TO_LANG` to `NATIVE_EXTS`. Same conventional-monorepo recursion (`libs/*`, `packages/*`, `apps/*`, `services/*`) applies to `go.mod`. New fixture `tests/fixtures/polyglot-go/` (Gin server + GORM repo + go.mod with indirect deps + semver-path suffix) covers all paths. Tests: 197 → 205.\n- **0.27.2** — **Accessibility analyzer ignores non-UI files + reports `applicable: false` on non-UI repos.** Caught by the in-the-wild LangChain report: scored 10/100 on Accessibility because the per-file loop ran `checkLinkText` on `README.md` and emitted 44 false-positive \"Empty Link\" findings. The glob fallback was already filtered to `.{html,tsx,jsx,vue,svelte}` but when called with a pre-populated `fileContents` (the orchestrator path), the loop iterated every file. Now hard-filters to UI files at the loop level. New `applicable: boolean` on `A11yReport` is `true` when the repo has any UI files, `false` otherwise (Python lib, CLI, data-science repo). Surfaced in the dashboard JSON so non-UI repos can be rendered as N/A instead of a fake score. Three new test cases prove the LangChain regression won't recur. Tests: 194 → 197.\n- **0.27.1** — **\"Missing Rate Limiting\" check now only fires on web apps.** Caught by the [in-the-wild LangChain report](https://testforge.run/#/in-the-wild/langchain): a pure Python library with no web framework still got a medium \"Missing Rate Limiting\" finding because `checkMissingRateLimit` fired unconditionally on any project without a `rate-limit` package. 0.27.1 gates the check on a `WEB_FRAMEWORK_DEPS` set covering JS (Express, Fastify, Koa, Hono, NestJS, Next, Remix, Astro, Nuxt, SvelteKit, h3, Polka, etc.) and Python (FastAPI, Flask, Django, Starlette, Sanic, Tornado, Aiohttp, Litestar, etc.). Libraries, CLIs, data-science repos, and other non-web projects no longer get the finding. Three new test cases cover: (1) libs-monorepo fixture (no web framework) emits zero rate-limit findings, (2) polyglot-python fixture (FastAPI) still emits one, (3) vulnerable-app fixture (Express) still emits one. Tests: 191 → 194.\n- **0.27.0** — **Security findings in test paths are now suppressed.** Per-file security analysis (SQL/NoSQL injection, RCE sinks, path traversal, open redirect, reflected XSS, hardcoded secrets, etc.) is skipped on any path matching common test conventions: `tests/`, `test/`, `__tests__/`, `__mocks__/`, `__fixtures__/`, `e2e/`, `specs/`, `fixtures/`, `cypress/`, `playwright/` dir segments anywhere in the path; `*.test.{js,jsx,ts,tsx,mjs,cjs,mts,cts}` and `*.spec.*` suffixes; pytest `test_*.py` and `*_test.py` filenames; and `.d.ts` declaration files (which have no runtime). Triggered by the [in-the-wild Supabase report](https://testforge.run/#/in-the-wild/supabase): 125 \"critical\" findings were almost all SQL-string-concat in `e2e/studio/features/*.spec.ts` where building the string is exactly what the test is testing. Project-level checks (rate-limiting, vulnerable dependencies, missing security headers) are unaffected — those are real signals regardless of where test files live. New exported `isTestPath()` helper. New fixture `tests/fixtures/test-path-suppression/` proves a production file with a SQL-injection pattern still flags while four sibling test-path files (matching `.test.js` / `e2e/` / `__tests__/` / `tests/` conventions) carrying the identical pattern do not. Tests: 189 → 191.\n- **0.26.2** — **Conventional-monorepo recursion (`libs/`, `packages/`, `apps/`, `services/`).** A real-world test on `langchain-ai/langchain` (run via the In-the-Wild showcase pipeline) caught 0.26.1 returning `deps: 0` because LangChain ships every package under `libs/<name>/pyproject.toml` *without* declaring `[tool.uv.workspace]` at root. The workspace-recursion in 0.26.1 only followed declared workspaces. 0.26.2 also globs `libs/*/<manifest>`, `packages/*/<manifest>`, `apps/*/<manifest>`, `services/*/<manifest>` for `pyproject.toml`, `package.json`, and `requirements.txt`. New helper `discoverConventionalMembers(root, manifest)` in `code-scanner.ts`. Same input, very different output on the real LangChain clone: `deps: 0, techStack: []` → `deps: 27 + 66 dev-deps, techStack: 5` (Pydantic, SQLAlchemy, pytest, httpx/requests, Playwright). New fixture `tests/fixtures/libs-monorepo/` mirrors the LangChain shape. Tests: 184 → 189.\n- **0.26.1** — **Monorepo / workspace recursion for Python + Node.** A real-world test on `tiangolo/full-stack-fastapi-template` exposed that 0.26.0 detected endpoints + pytest files but returned `dependencies: 0, techStack: []` because the manifest-discovery code only read the root `pyproject.toml` / `package.json`. The actual deps lived in `backend/pyproject.toml` (uv workspace member) and `frontend/package.json` (bun workspace member). Fixes: (1) parse `[tool.uv.workspace] members = [...]` and recurse, (2) parse `package.json \"workspaces\": [...]` (handles globs like `packages/*`) and recurse, also reads `pnpm-workspace.yaml`, (3) parse PEP 735 `[dependency-groups]` (Astral's new standard for dev/test/docs groups), (4) `peerDependencies` rolled into runtime so framework targeting (React/Vue/Svelte) shows in techStack, (5) `@playwright/test` recognized as Playwright. **Critical bug fix**: the PEP 621 `dependencies = [...]` parser used a non-greedy regex that silently truncated arrays at the first `]` — which is inside `\"fastapi[standard]\"`. New `extractTomlArrayBody()` helper does string-aware bracket balancing. Same input → very different output: full-stack-fastapi-template went from `deps: 0, techStack: []` to `deps: 49 + 21 dev, techStack: 11` in 25ms. New fixture `tests/fixtures/uv-workspace/` mirrors the failing real-world layout. Tests: 179 → 184.\n- **0.26.0** — **Python support (FastAPI / Flask / Django / pytest).** Closes the polyglot blind spot that produced false-positive reports on Next.js+FastAPI repos like dclawstack/dclaw-monitor (analyzer was claiming \"0 endpoints / no test framework / 0 test files\" while the backend actually had 54 routes and 13 pytest files). Code-scanner now: (1) includes `.py` in the file glob, (2) parses `requirements.txt` / `requirements-dev.txt` / `pyproject.toml` (PEP 621 + Poetry tables) with version-spec / extras / env-marker / comment handling, (3) regex-detects FastAPI/Starlette/Flask/Django routes (`@router.get(...)`, `@app.route(...)`, `path(...)`), (4) emits a `languageCoverage` field (natively-analyzed % + counts of skipped languages like Go/Ruby/Rust/Java). Unit-analyzer counts `test_*.py` / `*_test.py` / `tests/**/*.py` pytest files via `def test_…` regex and adds `pytest` to the frameworks list. Tech-stack now includes FastAPI, Flask, Django, Starlette, SQLAlchemy, Pydantic, Alembic, Celery, pytest, Uvicorn/Gunicorn, APScheduler, OpenTelemetry, PostgreSQL (asyncpg/psycopg2). Dashboard shows an amber banner whenever `languageCoverage` < 100%, naming each unsupported language with its file count — no more pretending \"0 endpoints\" means \"no endpoints\" when really we just didn't read the files. New fixture `tests/fixtures/polyglot-python/` (FastAPI + requirements.txt + pyproject.toml + Next.js); tests: 166 → 179.\n- **0.25.2** — Runner image published to GHCR (`ghcr.io/t4tarzan/testforge-runner:0.25.2`). No more manual `docker build` step on first Tier-2 use — the MCP auto-pulls the image (~92 MB) on the first `/generate-and-run` call. Existing `testforge-runner:local` builds still work via `TESTFORGE_RUNNER_IMAGE` override.\n- **0.25.1** — `/health` now reports the correct version (was hardcoded to \"0.6.0\").\n- **0.25.0** — **Tier 2: Generate & Run.** New `POST /generate-and-run` endpoint takes findings from a Tier-1 report, generates one Vitest file per finding via OpenRouter (primary: Qwen 3.7 Max, fallback: DeepSeek V4 Flash), executes them inside a pre-baked Docker container (`node:22-slim` + vitest, `--network=none --rm`), and returns structured pass/fail JSON. Provider rotation is automatic on rate-limit or schema rejection; both attempts are recorded. New `~/.testforge/history.db.generations` table persists every iteration. New `GET /api/generations` + `GET /api/generations/:id` endpoints. Dashboard grows a \"🤖 Generate Tests (Tier 2)\" button under any report. Env overrides: `TESTFORGE_PRIMARY_MODEL`, `TESTFORGE_FALLBACK_MODEL`, `TESTFORGE_RUNNER_IMAGE`. Self-host has no quota (BYOK pays OpenRouter); managed SaaS gates Tier 2 to the Forge plan ($99/mo · 100 iterations/mo). Verified end-to-end against `tinyhttp/malibu`: 3 findings → 3 Vitest files → sandbox run in ~45s total. Demo video at https://testforge.run/malibu-tier2.mp4.\n- **0.24.0** — Dimension deepening, pass 16. **Stack analysis** polished — substring traps eliminated and new signals added. Old code: `dep.includes('vite')` matched `vitest`, `vitest-mock-extended`, `vite-something-else` (vitest is a test framework, NOT a bundler — false strength). Now uses strict Sets per category for: test frameworks (jest/vitest/mocha/ava/tap/node-tap/@japa/runner/uvu/tape), lint tools (eslint/prettier/@biomejs/biome/rome/standard/xo/oxlint), ORMs (Prisma/Drizzle/TypeORM/Sequelize/Mongoose/MikroORM/Kysely/Knex/Objection), caches (Redis/ioredis/@upstash/memcached/lru-cache/node-cache/cache-manager), monorepo (Turbo/Nx/Lerna/Rush/Changesets), modern bundlers (vite/esbuild/SWC/Turbopack/Parcel/Rspack/Rollup), and new categories: modern frameworks (Next/Remix/Astro/Nuxt/SvelteKit/SolidStart/Qwik/Hono/h3), runtime validation (Zod/Yup/Joi/ajv/Valibot/Arktype/Effect/io-ts/class-validator), tRPC, TS runtimes (tsx/ts-node/esno). **New tsconfig strict-mode detection**: parses `tsconfig.json` and emits a low-severity finding when TypeScript is present but `compilerOptions.strict` is not true. **New \"API server without validation library\"** finding: medium severity, fires only when a server framework is detected (Express/Fastify/Koa/Hono/NestJS) and no Zod/Yup/Joi/Valibot is in deps. Monorepo detection now also looks at `nx.json` and `pnpm-workspace.yaml` (not just turbo.json). Tests: 159 → 166. New fixtures `tests/fixtures/stack-modern/` (Next + Hono + Prisma + Zod + tRPC + Vitest + Vite + Biome + tsconfig strict) and `tests/fixtures/stack-legacy/` (Express + Mongo + no TS + `vite-something-else` and `vitest-mock-extended` traps that must NOT count).\n- **0.23.0** — Dimension deepening, pass 15. **Visual regression** and **property-based testing** both move from substring soup to AST-aware signals. **Visual regression**: new `lib/visual-regression.ts` walks JSXAttribute nodes for the `style` attribute, counts REAL `style={{…}}` props (not lines containing \"style=\"), and inspects each object property's string value for hardcoded pixel values (`/(\\d{2,4})px\\b/g`) and inline hex color literals (`#abc` / `#abcdef` / `#abcdef00`). Findings fire at proper thresholds (≥3 files with inline styles + no CSS Modules → medium; ≥10 hardcoded px / ≥5 inline colors → low). **Property-based testing**: new `lib/property-based.ts` removes the previous noisy \"function with this.* > 1 is impure\" heuristic (fired on every class method) and replaces substring checks with proper AST detection: imports of `fast-check` / `jsverify` / `@fast-check/vitest`; `fc.assert()` / `fc.property()` / `fc.check()` call sites; `typeof x === '…'` / `Array.isArray(x)` / `x instanceof Class` type guards; `assert(...)` / `invariant(...)` runtime invariants. New scope-aware findings: \"no framework\", \"framework but no `fc.assert` calls\" (catches `import` without usage), \"no runtime invariants\". Tests: 150 → 159. New fixtures: `tests/fixtures/visual-quality/` (Bad.tsx with 3 components heavy in inline styles + comment trap; Good.tsx using CSS Modules) and `tests/fixtures/property-quality/` (util.js with type guards + assert.ok; util.property.test.js with two `fc.property` invariants).\n- **0.22.0** — Dimension deepening, pass 14. **Edge-case detection** moves from broken line-level checks (the old code asked \"does the ENTIRE PROJECT contain `.length`?\" to decide if any array access was bounds-checked — false clean on every real project) to AST-aware footgun detection. New `lib/edge-cases.ts` catches six real bug shapes: (1) `parseInt(x)` without explicit radix (MDN best-practice); (2) `JSON.parse(x)` outside a try/catch (range-tracks try blocks via pre-pass); (3) `new Date(nonLiteralString)` (Invalid Date silently breaks downstream math); (4) loose equality `==`/`!=` (with the `== null` exception preserved as canonical nullish check); (5) `Number(x)` used inline in a binary expression / return / member access where guarding is structurally impossible (parent-aware Babel traverse to skip `const n = Number(x)` cases); (6) `switch` without `default:`. Public report grows a `byRule` field with hit counts per rule. Score: weighted cost per rule (JSON-parse 4pts, parseInt/Number 2pts, switch/loose 1pt). Tests: 141 → 150. New fixture `tests/fixtures/edge-cases/` with `src/bad.js` (every rule fires) and `src/good.js` (well-guarded variants; nothing fires, including `== null` and `const n = Number(x); if (isNaN(n))…`).\n- **0.21.0** — Dimension deepening, pass 13. **Vision** and **Scope** analyzers cleaned up from substring soup to precise matching. The old code had several broken cases the new module fixes: `analytics` substring matched `cache-analytics`, `crypto-analytics-lib` (false positive); `author` in a README matched the `auth` feature; the implementation check scanned the README itself so any feature documented there was automatically \"implemented.\" New `lib/strategic-signals.ts` consolidates: case-insensitive README discovery (`README.md`, `Readme.md`, `readme.md`, `docs/README.md`); explicit Features-section extraction via markdown parsing (capture content under `## Features` until the next `##` heading or EOF); strict dep-name sets for product analytics, feature flags, error tracking, APM — no more `.includes()` traps; word-boundary keyword matching (`\\b<word>\\b`) so `auth` no longer matches `author`. Vision dimension drops its CI/CD finding (now lives only in DORA, pass 12) to avoid double-surfacing. Code-scanner now loads `.md` files (was excluded, hence README invisible). Scope's implementation check explicitly excludes README/markdown/package.json from the haystack so docs can't satisfy their own claims. Tests: 133 → 141. New fixtures `tests/fixtures/strategic-strong/` (every documented feature actually implemented) and `tests/fixtures/strategic-weak/` (Payments + Notifications in README without implementation, plus `cache-analytics` / `crypto-analytics-lib` deps as substring traps).\n- **0.20.0** — Dimension deepening, pass 12. **DORA metrics** reframed from fabricated estimates (`\"Daily (estimated)\"`) to honest capability framing. Real DORA needs git/deploy history; a static analyzer can't see how often the team deploys. What it CAN see is the STATIC SIGNALS that map to each axis. New `lib/dora-signals.ts` extracts: CI workflow files (`.github/workflows/*.yml`, `.gitlab-ci.yml`, `.circleci/config.yml`, etc.) — parsed via js-yaml to count jobs, detect type-check steps, and identify deploy jobs by name pattern; deployment platform configs (Dockerfile, vercel.json, render.yaml, fly.toml, app.yaml, netlify.toml, serverless.yml, terraform/, kubernetes/, helm/); observability deps (Sentry, Datadog, NewRelic, OpenTelemetry, Honeycomb, Rollbar, Bugsnag — 20+ specific dep names); structured logging deps (pino, winston, bunyan, roarr); feature-flag deps (LaunchDarkly, Statsig, Unleash, Flagsmith, Posthog, GrowthBook, Split, ConfigCat); CODEOWNERS / branch-protection files. Each of the 4 DORA axes is now described as `Capability: Good | Partial | Weak` rather than a fake frequency string. Per-axis findings fire only when the matching capability is weak: missing CI, missing deploy automation, missing type-check in CI, missing observability, missing feature flags, missing CODEOWNERS. Code-scanner extended to load `.github/**`, `Dockerfile`, `Procfile`, `CODEOWNERS` (extensionless config files were silently excluded before). Tests: 125 → 133. New fixtures `tests/fixtures/dora-mature/` (full CI workflow + Dockerfile + CODEOWNERS + Sentry + pino + Posthog) and `tests/fixtures/dora-immature/` (nothing wired).\n- **0.19.0** — Dimension deepening, pass 11. **Mutation testing** moves from a single test-to-source ratio to AST-based **assertion-quality analysis**. True mutation testing requires running mutated code (out of scope for a static analyzer), but assertion shapes are a strong proxy for mutation-kill rate and statically observable. New `lib/mutation-quality.ts` walks each test file's AST, classifies every assertion call into **strong** (`toBe`, `toEqual`, `toThrow`, `toBeInstanceOf`, `toHaveLength`, `toMatchObject`, `toHaveBeenCalledWith`, `toBeCloseTo`, comparison matchers, …), **weak** (`toBeTruthy`, `toBeFalsy`, `toBeDefined`, `toBeNull`, `toBeNaN`, `toHaveBeenCalled` — a mutation `42 → 41` still satisfies `toBeTruthy()`), **snapshot** (`toMatchSnapshot`, `toMatchInlineSnapshot`), or **other**. Handles `.not` / `.resolves` / `.rejects` modifiers, ava `t.X` style, chai `should.X`. Public report grows `assertionStats` (per file) + `assertionTotals` (project rollup including `weakRatio`, `snapshotRatio`, `overallVariety` = count of distinct strong-matcher types). Score model: base from test-to-source ratio plus adjustments (+5 if variety ≥ 5, −10 if weakRatio > 0.3, −5 if snapshotRatio > 0.5, +10 if Stryker present). Bounded `[10, 90]`. New findings: medium \"test file(s) dominated by weak assertions\" (>50% weak); low \"snapshot-dominated test file(s)\" (≥90% snapshot); low \"low matcher variety\" (<4 distinct strong types across the project); existing \"Stryker not configured\" preserved. Tests: 118 → 125. New fixture `tests/fixtures/mutation-quality/` with three contrast test files (strong / weak / snapshot) plus a focused source under test.\n- **0.18.0** — Dimension deepening, pass 10. **Chaos / resilience analyzer** moves from substring matching (`allContent.includes('SIGTERM')` — any comment with the word fooled it) to AST-based detection of actual resilience patterns. New `lib/chaos-patterns.ts` walks parsed ASTs for: graceful shutdown handlers (`process.on('SIGTERM'|'SIGINT', ...)`); process-level safety nets (`process.on('unhandledRejection'|'uncaughtException', ...)`); retry library imports + call sites (p-retry / async-retry / axios-retry / exponential-backoff / cockatiel); manual retry loops (for/while + try/catch + setTimeout — heuristic); Express global error middleware (4-arg handler signature); Fastify setErrorHandler; new AbortController() instantiation; Idempotency-Key header reads. Public report grows `patterns` field with `ChaosPatternHit[]` per category. New findings: critical \"no try/catch anywhere\"; high \"no graceful shutdown\" / \"no global error handler\"; medium \"no retry/backoff\" / \"no unhandledRejection guard\"; medium \"payment code without Idempotency-Key\" (only fires when stripe/payment deps detected). Pass 6 covered circuit breakers + outbound timeouts; pass 10 doesn't duplicate those. Tests: 109 → 118. New fixtures `tests/fixtures/chaos-resilient/` (every pattern wired) and `tests/fixtures/chaos-fragile/` (nothing wired, plus comment-trap mentioning the keywords).\n- **0.17.0** — Dimension deepening, pass 9. **License compliance check** rewritten from broken to functional. The previous version had a `knownGPL` list containing `['react', 'vue', 'angular', 'moment', 'underscore']` — **all of which are MIT-licensed**. It also never populated the `copyleftDeps` array it promised in its return type. The new version: walks `node_modules/` (when present) and reads each package's `license` field; categorizes per SPDX into **permissive** (MIT/ISC/Apache-2.0/BSD-*/0BSD/CC0/Unlicense), **copyleftWeak** (LGPL/MPL/EPL — LGPL correctly classified as weak even though it contains \"GPL\"), **copyleftStrong** (GPL/AGPL/OSL/SSPL — incompatible with proprietary distribution), **proprietary** (UNLICENSED, \"SEE LICENSE IN …\"), or **unknown** (missing field). Emits per-category findings: strong copyleft = HIGH severity with the warning about source-disclosure obligations; weak copyleft = MEDIUM with the linking-exception caveat; UNLICENSED = MEDIUM; missing field = LOW. When `node_modules/` isn't present, emits an honest \"license audit could not run\" finding instead of silently returning a fake clean report. Public report shape grows: `inspected`, `byCategory` (counts per category), `strongCopyleft`/`weakCopyleft` (full package lists), plus the existing fields preserved. `runLicenseCheck(deps, projectPath?)` — back-compat, but you need projectPath for the audit to actually run. Both `index.ts` and `mcp-server.ts` call sites updated. Tests: 101 → 109. New fixture `tests/fixtures/license-mixed/` with a synthetic `node_modules/` containing MIT, GPL-3.0, LGPL-2.1, UNLICENSED, no-license, and a scoped `@scope/scoped-mit` package; 8 tests including a focused unit test for `categorizeLicense` covering 11 edge cases.\n- **0.16.0** — Dimension deepening, pass 8. **Supply-chain audit** becomes lockfile-aware. New `lib/supply-chain.ts` reads `package-lock.json` (lockfileVersion 2/3, npm v7+), surfaces the full transitive dependency graph, and adds detection for: (1) **non-registry sources** — packages installed via `git+`, `github:`, `file:`, `link:`, or `http://` (skip npm's tarball signing); (2) **missing integrity hashes** — registry-resolved entries with no `integrity` SRI; (3) **duplicate-version drift** — same package resolved to multiple versions; (4) **transitive CVE matches** — the existing hardcoded vuln list now scans EVERY entry in the lockfile, not just direct deps. New \"no lockfile\" finding when a project has no `package-lock.json` at all. CVE catalogue extended to include minimist, word-wrap, jsonwebtoken alongside the existing list. Public report shape grows fields: `totalTransitive`, `nonRegistrySources`, `missingIntegrity`, `duplicateVersions`. `runSupplyChainAudit(deps, devDeps, projectPath?)` is back-compat: old two-arg callers still work but only see direct-dep CVEs (with the new \"no lockfile\" finding emitted to flag the limitation). Both `index.ts` (HTTP server) and `mcp-server.ts` (test runner) call sites updated to pass projectPath. Tests: 93 → 101. New fixtures `tests/fixtures/supply-chain-dirty/` (lock with all four red flags) and `tests/fixtures/supply-chain-clean/` (negative).\n- **0.15.0** — Dimension deepening, pass 7. **OWASP Top 10 (2021) coverage** redesigned to be honest about what the analyzer can and can't detect. The previous version counted \"categories with any finding\" as \"covered\" — which inverted the meaning (more vulnerabilities = higher score). The new report distinguishes three orthogonal signals: **analyzer-coverage** (which categories the analyzer ships rules for, project-independent), **project-findings** (per-category severity breakdown from this project's findings), and **gaps** (categories the analyzer doesn't yet cover — currently A08 Software Integrity and A10 SSRF, explicitly flagged). Public report grows `byCategory: OwaspCategoryReport[]` with severity-bucketed counts per code and the detector categories that contributed to each. New rollup findings: any OWASP code with ≥1 critical or ≥3 high findings surfaces as a category-level finding (e.g. `A03:2021 — Injection: 4 finding(s)` with severity breakdown) so dashboards can show the OWASP framing. New `lib/owasp-map.ts` is the single source of truth for security-category → OWASP code mapping (a finding can map to multiple codes; CORS now correctly maps to A05, not A01). Tests: 86 → 93. New cases assert score-stability across finding count (analyzer-coverage doesn't change when project findings change), correct bucketing, rollup triggers, no-false-positive on sparse low-severity findings, plus an integration test mapping vulnerable-fixture findings into OWASP categories.\n- **0.14.0** — Dimension deepening, pass 6. **Load analyzer** moves from substring-matching to AST-based middleware + call-pattern detection. New `lib/load-patterns.ts` walks parsed ASTs for: `app.use(rateLimit(...))` / `fastify.register(fastifyRateLimit)` style middleware registration; `app.use(compression())`; cache calls (`redis.get/set`, `cache.get/set`, etc. — receiver-name discriminated); pool constructions (`new Pool({...})`, `mysql.createPool`); timeout configurations (`server.timeout = N`, `axios.create({ timeout })`, `fetch(url, { signal })`); health endpoints (actual route registration matching `/health`, `/ready`, `/live`, `/healthz`, `/status`); circuit breaker imports (opossum/brakes/cockatiel) and `breaker.fire()` calls; **sync I/O inside route handlers** (`readFileSync` / `writeFileSync` / `execSync` etc. — a new HIGH-severity finding for a real production performance bug). Public report shape grows a `patterns` object with file+line locations for every detected hit. **Bug fixes**: circuit-breaker rule had a precedence bug (`!hasCircuitBreaker && allContent.includes('fetch') || allContent.includes('axios')`) that fired on every codebase containing the word \"axios\"; now it correctly requires both external-call presence AND missing breaker. Boolean flags (`hasRateLimiting`, `hasCaching`, etc.) are now backed by AST hits OR explicit strong-evidence deps (not loose substring matches like `'cache'`). Tests: 79 → 86. New fixtures: `tests/fixtures/load-resilient/` (every pattern correctly wired) and `tests/fixtures/load-fragile/` (nothing wired, plus sync I/O in handlers, plus comments that mention the keywords as a regex trap).\n- **0.13.0** — Dimension deepening, pass 5. **Accessibility analyzer** for JSX/TSX moves from line-by-line regex to AST-based JSX attribute inspection. New `lib/a11y-jsx.ts` walks `JSXElement` nodes (parent of `JSXOpeningElement` so it can see children) and runs proper attribute-aware checks. **New rules**: `img-no-alt` (HIGH, WCAG 1.1.1); `button-no-accessible-name` (HIGH, WCAG 4.1.2) — icon-only buttons that have only a self-closing `<svg/>` child with no `aria-label` are now correctly flagged; `anchor-no-accessible-name` (HIGH, WCAG 2.4.4); `anchor-target-blank-no-noopener` (MEDIUM — tab-nabbing risk); `input-no-label` (MEDIUM, WCAG 3.3.2) — excludes `type=\"hidden\" | \"submit\" | \"button\"`; `clickable-non-interactive` (MEDIUM, WCAG 2.1.1) — `<div onClick>` without `role=\"button\" tabIndex={0}`; `aria-empty` (MEDIUM) — `aria-label=\"\"` is worse than no aria-label. **Children-aware accessible-name resolution**: text content, expression containers (string/template/identifier), and recursive child JSX elements all contribute. Same-content `<a target=\"_blank\" rel=\"noopener noreferrer\">` no longer fires the tab-nabbing rule (rel parses correctly). Findings carry the matching WCAG criterion in the public `wcagCriterion` field. HTML/Vue/Svelte files keep the prior regex path (Babel doesn't parse them). Tests: 69 → 79. New fixture `tests/fixtures/a11y-jsx/` with 11 JSX patterns covering 6 anti-patterns + their accessible counterparts; 10 tests assert each detection plus negative cases for the accessible variants and `<input type=\"hidden\">`.\n- **0.12.0** — Dimension deepening, pass 4. **Predictive failures** goes from 5 project-level heuristic counts to **cross-signal per-file risk aggregation**. New `lib/predictive.ts` ingests signals from other dimensions (security findings by severity, N+1 hits, dead exports) plus AST-derived **cyclomatic complexity** (new `lib/complexity.ts`) and TODO/FIXME density per file, and produces a ranked list of risk hotspots. Each hotspot carries a `reasons[]` breakdown so you know exactly why a file scored high (e.g. \"security: 2 critical · 1 N+1 hit · hot function (cc=23 in `processOrder`)\"). The aggregator runs in two modes: standalone (derives N+1, dead-code, complexity itself) or cross-signal (caller passes pre-computed findings — preferred when running the full pipeline). The dimension's public report grows a `topRiskyFiles: FileRisk[]` field; up to 5 hotspots also surface as findings with `category: 'Predictive'` and severity scaling with the per-file score. Deterministic by construction — same inputs → same scores; weights centralized in `lib/predictive.ts`. Replaces the previous brace-counting \"max nesting\" heuristic which over-fired on arrow functions and template literals. Tests: 64 → 69. New test cases cover hotspot surfacing, cross-signal aggregation, multi-reason scoring, the `Risk hotspot:` finding shape, and the Low-risk no-signal floor.\n- **0.11.0** — Dimension deepening, pass 3. **Contract analysis** goes from a substring check on filenames to real cross-referencing between OpenAPI/Swagger specs and AST-discovered routes. New `lib/openapi-parse.ts` loads `openapi.{yaml,yml,json}` / `swagger.*` / `api-spec.*` files (parses with js-yaml, validates the `openapi:` / `swagger:` root, extracts `paths` → method tuples + operationIds). New `lib/endpoint-discovery.ts` AST-walks source files for `app.get`/`router.post`/`fastify.put`/etc., recording the canonical `(method, path)` of each registration. `canonicalPath` normalizes `/users/{id}` (OpenAPI) and `/users/:id` (Express) to the same shape so they match. New findings emitted: undocumented endpoints (in code, missing from spec), orphan endpoints (in spec, no handler in code), invalid-but-named spec files (file looks like a spec but no `openapi:` root / parse error), and a smarter missing-versioning check (only fires when a spec exists to compare). `code-scanner.ts` now loads YAML/JSON files (with package-lock and yarn-lock explicitly excluded). Tests: 58 → 64. New fixtures: `tests/fixtures/contracts/` (spec + Express server with intentional mismatches: 2 matched, 2 undocumented, 1 orphan) and `tests/fixtures/contracts-missing/` (8 endpoints, no spec at all).\n- **0.10.0** — Dimension deepening, pass 2. Unit-analyzer goes from a regex test-counter to an AST-aware test-quality analyzer. New `lib/test-quality.ts` walks each parseable test file and produces a structured `TestFileQuality` per file. New report shape carries a `quality` block at the top level: `{ totalCases, skippedCases, focusedCases, assertionlessCases, emptyCases, isolatedTestFiles }`. **Detection of new anti-patterns**: `it.skip` / `xit` / `it.todo` (skipped — rot risk); `it.only` / `fit` (focused — silently kills sibling tests in CI); test bodies with NO recognized assertion call (`expect`/`assert`/`should`/`t.X`/snapshot matchers from Jest/Vitest/Mocha/Chai/AVA/tap/node:test/Testing Library); empty test bodies (only comments / trivial statements); test files that import nothing project-relative (testing only the framework). Recognized frameworks expanded: Jest, Vitest, Mocha, AVA, Node Tap, node:test, Testing Library, Chai. Tests: 51 → 58. New fixture `tests/fixtures/test-quality/` with healthy + 5 unhealthy patterns; 7 tests assert each detection.\n- **0.9.0** — Dimension deepening, pass 1. The keepers across the 21 dimensions stay at 21; the depth inside each one grows. This pass takes **N+1 detection** and **dead-code detection** from regex-and-substring heuristics to AST-aware analysis using the same Babel + visitor + cross-file infrastructure the security spine uses.<br><br>**N+1 detection** — new `lib/n-plus-one.ts`. Walks parsed ASTs for db sinks (`.query/.exec/.findOne/.findUnique`, `sql\\`\\``, `prisma.x`, `mongoose.x`, `sequelize.x`) nested inside `for` / `for-of` / `for-in` / `while` / `do-while`, plus the higher-order `arr.forEach`/`map`/`filter`/`reduce`/`some`/`every`/`find`/`flatMap` forms (callback body = loop body). Skips calls already wrapped in `Promise.all` / `Promise.allSettled` (parallelised, not N+1). Replaces the prior `{/}` line-counter that over-fired on inner closures and missed db calls in arrow-function loop bodies.<br><br>**Dead-code detection** — new `lib/dead-code.ts`. For each project file, the AST yields its declared/exported symbols + every referenced identifier + every imported module specifier. An exported symbol is \"dead\" iff no OTHER file references its name. Replaces the prior `allContent.includes(name)` heuristic that flagged nothing because every symbol's own declaration line contained its name. **Unused-deps** check now matches on the module ROOT (`lodash`) so `import { get } from 'lodash/get'` counts as a use — covers a common false-positive that wrongly flagged sub-path-only imports.<br><br>Tests: 41 → 51. New fixtures at `tests/fixtures/n-plus-one/` (3 positive cases: for-of, forEach, classic for; 2 negative cases: `Promise.all`-wrapped, no-loop) and `tests/fixtures/dead-code/` (used vs. unused exports, sub-path import, genuinely-unused dep). Limitations called out in the source: cross-file dead-code is name-based (global-scope collisions over-count as \"used\"), and N+1 doesn't follow function calls into closures (intentional — would explode FP rate).\n- **0.8.1** — Patch. Internal cleanup matching the repo-wide lint backlog clearance (127 → 0 errors). Type tightening across `mcp-server.ts`, `local-db.ts`, `types.d.ts`: replaced `any` / `as any` with `Awaited<ReturnType<…>>`, `unknown` with narrowing, and concrete shapes (e.g. new `ReportRow`). Dead-code purges (unused regex constants in `accessibility-analyzer.ts`, unused `findParamForExpression` in `function-summaries.ts`, dead imports in `mcp-server.ts` / `test-runner.ts`). `catch (err: any) → (err)` then `(err as Error).message`. No behavior changes; same analyzer outputs on the same fixtures (41/41 tests pass).\n- **0.8.0** — Spine, Phase 4c. User-authored rules DSL. Projects can drop a `.testforge/rules.yaml` (or `.yml` / `.json`) at the repo root to declare custom pattern detectors that ride on top of the built-in analyzer — no fork required. Each rule has `id`, `title`, `severity`, `category`, an optional `description`/`fixSuggestion`, and a `match` block. Match shapes in v1: `callee` (exact dotted match, string or array), `calleeRegex` (anchored as written), `taintedArg` (require the arg at this index to come back tainted via the Phase 2 engine), and `argRegex` (require the string-literal arg at this index to match). Taint-gated rules get HIGH confidence (real source-to-sink flow); shape-only rules get MEDIUM. Malformed rules log a one-shot warning and are skipped — one bad rule never aborts analysis. Up to 200 rules per project. Rules can also be supplied programmatically via the new `userRules?: UserRule[]` config field (overrides the on-disk file). Tests: 36 → 41; new `tests/fixtures/user-rules/` exercises all three match shapes plus the no-fire negative paths.\n- **0.7.0** — Spine, Phase 4b. Cross-file taint propagation. New `lib/cross-file-summaries.ts` walks every parseable file in a single pre-pass, computes the per-file function summary table (from Phase 4a), then publishes the ones that carry sinks under `<resolvedPath>::<exportName>` keys. A companion `lib/module-resolver.ts` resolves relative imports against the candidate file set (`.ts`, `.tsx`, `.mts`, `.cts`, `.js`, `.jsx`, `.mjs`, `.cjs`, plus `/index.*` directory-imports and explicit-extension swaps) without touching disk. Each file gets its own `collectFileImports` map of \"local-name → cross-file key\" — handles ESM (`import { x }`, `import x`, `import * as ns`) and CJS (`const { x } = require(...)`, `const x = require(...).y`, `const ns = require(...)`). The analyzer's `checkCrossFunctionSinkCall` now consults the cross-file index for both direct identifier calls and `ns.X` member calls, emitting findings at the call site of the importing file. Deferred: re-exports (`export { x } from './y'`), tsconfig path aliases, node_modules resolution, dynamic `require()`. Tests: 30 → 36; new `helpers/db-helper.js` (CJS) + `helpers/redirect-helper.js` (ESM) + `cross-file-cjs.js` + `cross-file-esm.js` fixture set.\n- **0.6.0** — Spine, Phase 4a. Cross-function taint propagation (intra-file). New `lib/function-summaries.ts` builds a per-file table summarizing each named/aliased function: which parameters land in a sink (and which category), which sanitizers wrap them, whether the return value propagates taint. The analyzer then emits findings *at the call site* when a helper with a sink summary is called with tainted arguments. Catches `function runQuery(q) { db.query(q); }` + `runQuery('...' + req.body.x)` as critical/high SQL injection. Handles named declarations, aliased function expressions (`const fn = function() {…}`), arrow functions (`const fn = (a, b) => …`). Per-helper intra-procedural taint runs to a small fixpoint so chains `param → const A = param + '…' → const B = A → sink(B)` resolve cleanly. Deferred: cross-file resolution (Phase 4b), higher-order references like `[].map(handler)`. Tests: 25 → 30, new `cross-function.js` fixture covering SQL inj / open redirect / path traversal / XSS via helpers.\n- **0.5.0** — Spine, Phase 3. Structured fix suggestions. Each finding can now carry `fix: { description, before, after, importsNeeded?, applicable }`. `applicable: true` means \"safe to apply mechanically\" — the dashboard / CLI can offer a one-click apply (still asking confirmation). `applicable: false` means \"directional advice, the rewrite needs human judgment.\" Categories that auto-rewrite: SQL injection (concat / template → parameterized form with `$N` placeholders + bind array), hardcoded named secrets (`const api_key = 'sk_…'` → `const api_key = process.env.API_KEY`), reflected XSS via `res.send` (wrap argument with `escape()`), innerHTML / dangerouslySetInnerHTML (wrap with `DOMPurify.sanitize(...)`). Description-only suggestions for `eval`/`Function`/`exec`, open redirect, path traversal, CORS wildcard, sensitive field in `res.json` (destructure-omit). Public response shape stays additive; old consumers unaffected.\n- **0.4.0** — Spine, Phase 2. Generalized intra-procedural taint tracking across **all** sinks (was only SQL injection in 0.3.0). New `lib/taint.ts` engine: per-file table of `Map<localName, {source, sanitizers[]}>`, expression-tree walker that traces taint through identifiers, member access, template literals, string concat, conditional/logical ops, and `JSON.parse`. Recognizes 20+ sanitizers (DOMPurify, sanitize-html, escape, path.normalize, parseInt/Number, encodeURIComponent, allowlist `.includes()`/`.has()`). New per-finding `flow` field — narrative like \"argument flows from request through DOMPurify.sanitize\". `confidence` semantics tightened: HIGH = source→sink no sanitizer, MEDIUM = sanitizer in path, LOW = pattern matched without taint. All 6 sink categories (SQL inj, RCE, path traversal, open redirect, reflected XSS, DOM XSS) now share the same engine — adding a new source or sanitizer extends all of them at once.\n- **0.3.0** — Spine, Phase 1. Security analyzer moved from line-level regex to a Babel AST traversal. New per-finding `confidence` field (`high` / `medium` / `low`). Inline suppression comments (`// testforge-disable-next-line <category>` and `// testforge-disable-file <category>`). Findings now carry a `column` number alongside the line. File-size cap (500 KB) and per-file 250 ms parse-and-traverse budget. Basic intra-procedural taint: SQL injection detection catches `const q = '…' + req.x; db.query(q);` shape, not just inline interpolation. False-positive corpus and true-positive corpus added under `tests/fixtures/` to lock in the new precision. `eval()` re-categorized from XSS to \"Dangerous Functions\" (more accurate — it's RCE, not script-injection). Old consumers unaffected: the public response shape is additive-only.\n- **0.2.19** — `/test` and `/quick-scan` now persist their summary to `~/.testforge/history.db` on completion (previously written to in-memory Maps only — runs evaporated on restart).\n- **0.2.18** — Default port changed from `3001` → `33221` to avoid local-dev collisions. `/api/reports/latest` returns 404 when the local DB is empty instead of fabricated seed data. `fast-json-stringify` listed as direct dep (defensive against npx cache quirks). `/health` now reports the actual package version.\n- **0.2.17** and earlier — see git history.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}