{"_id":"mcp-thorns","_rev":"30-9ecf48d99b122cfb2f45a570dcfaf6c0","name":"mcp-thorns","dist-tags":{"latest":"5.1.9"},"versions":{"1.0.0":{"name":"mcp-thorns","version":"1.0.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@1.0.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"00f502a3a7c8c46dfe64f22451208aac9926e22f","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-1.0.0.tgz","fileCount":7,"integrity":"sha512-XgGW5gg87iYVfgKtNgNK9ouC6P/BaImCsfhrqU/fmZUsX1pyg/zVeU1qmyWj37NGBPpk7F8y7mYuLfA0/IRiCg==","signatures":[{"sig":"MEUCIGcjtr1myoklmxTSnJ5kjEM+y/yi9IuQ4dyYLwVSEagEAiEA0d4P0RqC6Rg5CqRdNgMoqbOD45G/U4fZ+OMqCIwpbeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20589},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"5df182af85f789370b3f23ca9742d1956e3aa3f5","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_1.0.0_1759239491079_0.09144585222537271","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"mcp-thorns","version":"1.0.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@1.0.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"021a56a8372f3dad13b88f5ccb060807719b883b","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-1.0.1.tgz","fileCount":7,"integrity":"sha512-DFkFQPCMhMwB9ZTeLB2kglu94RPfaCFBiFpAl4Ns5fWhMB0u6B+DeXsknYgNYXjQ0IKMVuPYdonSUkd56I43zQ==","signatures":[{"sig":"MEYCIQCfc1E5uXbFvqvlU8Ry6y4dMwkZnJjFi2z4jKT1wMAT7QIhAKVjZIJQja6/6N7imREZVxIpFYsGna34bbGyIlKqngf/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20298},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"a77794387a5c5ee9bd69b14eddd0c9c4513b1c79","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_1.0.1_1759239660734_0.8427716690975045","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"mcp-thorns","version":"2.0.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.0.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"77fbb245ef98c9dab6d34f2bdd63976fac97024a","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.0.0.tgz","fileCount":9,"integrity":"sha512-Eb79juIt8r39Dx3VcvPSYYB8yYxVFiWt3HDJDZ1VJpzi0RMn44py6jBB+BDYP2g2n0RtuL647/OnMSW7X3A/gg==","signatures":[{"sig":"MEQCIEZsp+nbVdna/ZQEK99gFU7z+X9y1ImNLtpusAiXAVHOAiAwSoxRY+95eOqrR4p/s3gY+ywQbbjWTHv98xIWbVNJng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35352},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"bdc76f0f03c1db2f9205cc2c76ce459153220153","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.0.0_1759240093948_0.08796219685467643","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"mcp-thorns","version":"2.1.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.1.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"0abc0a2f5153b2c6e4ef70b6b2d5c59a93b933cf","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.1.0.tgz","fileCount":11,"integrity":"sha512-goBChruv3h1BQ1R9+h8TPWM3iC0QMBqyvIt9Ie5+gsSOsr+1Or5kVmU9zyA53hIe31J/AKRDsdslY6RAkEu80Q==","signatures":[{"sig":"MEQCIBh2EzsgEwCQvNlfgKU4rk4Mw6buQP/Sl59snxyjHN+wAiAQZWvveq1onUTzOeW3yqclxleRXf1S48tmEccY4gbSig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43058},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"d82bc3acea5931e0d56dc50f8de822948b3e9430","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.1.0_1759240348489_0.20762748183292157","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"mcp-thorns","version":"2.1.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.1.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"69f1454433b99a7063e9c0e73270d13756b8ab82","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.1.1.tgz","fileCount":11,"integrity":"sha512-TxKFTK9Ki9mIyWG4ORrR4JCB+pe9ZdignpBrDy6KYsXPkQMO4wxHgo7+6C7qeAvrmNYEKl3d5Afvx6SMMG5zsA==","signatures":[{"sig":"MEUCIQCjnvnVoOo1CAQjB6zXKwx/8cqj996QOQnh/dPxL4VS3QIgX818pbFYdQvLqOis5U8e4q2qUX4uOdhattIE/tMvatU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43495},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"b79726391e58bcf47106313775034413a7ce634f","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.1.1_1759241324502_0.7973377298335886","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"mcp-thorns","version":"2.1.2","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.1.2","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"076f67b1ca6839c2656e6a1db57f1f27f54c3d09","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.1.2.tgz","fileCount":11,"integrity":"sha512-740cUxzTvnr3pFmZqGET1vKvV0EozWC1NMm/dUkR33ZtSZtBJT3dCoEzMnWlzXQ0Y3CzdE05a6rStziTSR38eA==","signatures":[{"sig":"MEYCIQCuucl51YD+tGtVjhKyXKIz7szwPlEa5Bx7ouAE39MXHwIhAOy/qogPA/wIjXadgY3CVs8rLIlgxDdtaNdURPIUxQib","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44097},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9e7075bd275bc7f5e1ed0de3aa81d113811d94c4","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.1.2_1759241390154_0.3687204359681959","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"mcp-thorns","version":"2.1.3","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.1.3","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"ec457246828b80c7f3eeb8cc1f8686e1bb72a6f8","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.1.3.tgz","fileCount":11,"integrity":"sha512-osGIRUzD0x597Jdzs0CWDVDxYUeSjvZQ6GwkXpjDdisZlocpvEojU9JkVsrGjXMokPDtcMGIDLhsGsS1qo/p+w==","signatures":[{"sig":"MEYCIQDIIBSe9hOCvwe8RFBfaMcBleRrNU58e+si+lErRmio1wIhALqEuQu6xPUhbAGoRBDqf07iJYEqElno0YE6BXLbEkEX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44164},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"27ad7da74e1ed2d9e43e162b348f153dad725c19","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.1.3_1759241542610_0.40514053533015115","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"mcp-thorns","version":"2.2.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.2.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"bc0be689017ebc4ffc850cedfbcb5ec1c829740b","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.2.0.tgz","fileCount":11,"integrity":"sha512-52Rx3/oGfMMe/iWWF6usCtOWYIlxLi5HvapKzft5QtuZKtMTLdiYtbbuSKC44/I/nC73tu8sZpVQ7tiqWnW2mw==","signatures":[{"sig":"MEUCIQC5mDZuBkoFp+nWC/amc+nfvUZSmYxxkFG3QDBaVQufkwIgB5HewSJDv6/uvHRnOs5nkRKUAV11RKbGr/7PZXKwcJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44165},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"20.19.4","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.2.0_1759241623860_0.2393427556087111","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"mcp-thorns","version":"2.3.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.3.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"145555d992a94b4e8338c12d8f4cdc2106a81827","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.3.0.tgz","fileCount":11,"integrity":"sha512-+++O/opqsHP/TGle3KlfcEXH6ZDYRzKKL1kw21dZHeMy9vQY0+vlDDYJOJiM41IrhZqqhYcQzWoKf5cPoOGRLQ==","signatures":[{"sig":"MEUCIFPFpIAS9t4EX23XrQQgBhNNGp7mhd4BNAW42c6BHT3TAiEAsT52P02P3Z6eXkLwEG+SX3XLaUZtAR8Hb+LN04JjbJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46967},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.3.0_1760806609840_0.9888437239235566","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"mcp-thorns","version":"2.3.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.3.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"361ed9f9257eadf794b69b4a568af85f2c29a659","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.3.1.tgz","fileCount":11,"integrity":"sha512-n+HyzN6qy7NEGhWydTBWdOr2vlQJ9/xGKUwF+nyNbWipqJPimbYA1iLwRTay6D+KGbjWioHKrcvG36FUn/Rhag==","signatures":[{"sig":"MEQCIBv2LibptMiP/cj4f/KPdw6tPzyKLhKHhRHpac++y/q0AiB/Q/xRismMgOZbGC/vgqlHkpYUsfKvIXlgOEfW9+m4DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46969},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.3.1_1760806642501_0.2951344440432544","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"mcp-thorns","version":"2.3.2","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.3.2","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"7b817e3f56b83a5a8df2abc1cc928c59d173285c","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.3.2.tgz","fileCount":11,"integrity":"sha512-LotLx7/cOxy8DTVIvwK/qg4/uJHQwBKOPMLrbj1VzF502a7sQtnAco4wcrtk+NAZHMR7lZkoLTATT2tksfH9Rg==","signatures":[{"sig":"MEYCIQCc6TcFfxfqFSyrzBAm+sQFrIg1qg88PPvu1GVuYxmSuQIhANsmxx4nrwPyYL4eIjJDqfA4zwJ9IgiSIQT4pIZn5hkj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46971},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.3.2_1760806666621_0.5334217481855579","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"mcp-thorns","version":"2.4.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.4.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"5e854677febc090e8e570217b5e3b700a6a81d1d","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.4.0.tgz","fileCount":11,"integrity":"sha512-XJ7uu3eXe+MSCbS8PpRqsbeQsuyhdW7M+NsC/E3/Mk5bFuW9rbmf46AXBEFlXvX+sGZj24OjuM4VAojLURjw1g==","signatures":[{"sig":"MEYCIQD2dQIfiBasmUXXmyX6NxdEzgw5C4YkkaIf1MTezD/xWgIhAO0oQ8yoKiufdCcaW57zvXN0fKYoLtNFpTub8+7yx+pC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48302},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.4.0_1760807002306_0.690049222610364","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"mcp-thorns","version":"2.5.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.5.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"25de56f12b1c1bd6b2a22c06922e920c74cdabbb","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.5.0.tgz","fileCount":11,"integrity":"sha512-BUR6Vc9hssZai1jqiBzT0hXX8NcOk3pF48sBud9xV4g/5ACm0xEgm9EF7Q/oXX1EGSC4u8uGQYudyhwFGi905g==","signatures":[{"sig":"MEYCIQDtVEAVChy4XXqrpR24Tro8HhAqhE7bZVm67N32FLRaDAIhAPdPVlMbR9ZMfh/PzAvjPzzJTPqZRFfXJMSY8SF8CVIe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47567},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.5.0_1760807338074_0.3831794441392484","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"mcp-thorns","version":"2.6.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@2.6.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"00714894862631ba031781bfe2d3c93c603a1fda","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-2.6.0.tgz","fileCount":11,"integrity":"sha512-QPXoQ7t4T1LfyjUCERoLbpdgzffBwi37oBYLHEeLsCG4AlePNiWIIHer7luaVVApHt5xYfgbLKyHl+ZI4rGk6A==","signatures":[{"sig":"MEQCIDfvy6MC7wPkQKGjw/Os+0HAiP50uvl5fAA2emcWZzxoAiBN30aQkOOK8Kp1LwxdnoWWBVS2C33KySi0BZYn+/IiKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49858},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"9452e8ed24a18d11a28ea6f7cc9bbf8f25cfd2a7","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Ultra-compact tree-sitter codebase analysis tool - maximum insight, minimal output","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_2.6.0_1760808137834_0.7395964214109743","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"mcp-thorns","version":"3.0.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@3.0.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"019a3df2b3ca93b0f7c791fffe1dc3f9eca516c2","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-3.0.0.tgz","fileCount":11,"integrity":"sha512-A+48DVNDfex+p73k58eTrE2vj/AVydGeTmklG5FQYLEILamgfMZB8mIWxgNbJNdsprKs+EtR3FViiWxnN6IBzA==","signatures":[{"sig":"MEUCIEpWnkgp2RDckWJnjC3Tjbi1ym0Gl1d5fkVNE9CT5mR/AiEAkO8eF5ZTbomVRjfUvQXpk3vtR351TigZRByDoiI4Yow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62705},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"1ec80b3a1f9722afd1ae364a3e44e29bb5e75b29","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Location-based codebase analysis - find everything by file:line:name, complete import/export flow, zero stats","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_3.0.0_1761148757862_0.34328769288796246","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"mcp-thorns","version":"3.1.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@3.1.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"84029575a766dff98d5922b75fc84bb6ba97320e","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-3.1.0.tgz","fileCount":11,"integrity":"sha512-OLhAGscTUwrI21VbHAZfcEOWu1FbSQIZ0m4zJIZ3j71gEgehhirqQmZuUOMUhgv66toqf4fAzqEk4IQBNVF1oA==","signatures":[{"sig":"MEUCIQDEo9/tBw6BFabNdCUnnKI4je4iy+NIKxDks9wVgSp/XQIgT4Da1zl9Q6LxJlcEMhSMXHbZqQNawVn33j5z3MXFRjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62985},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"8315e27db31dd6f93fed70d308e0fe34ba60b287","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Location-based codebase analysis - find everything by file:line:name, complete import/export flow, zero stats","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_3.1.0_1761154229944_0.2801993540291743","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"mcp-thorns","version":"4.0.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@4.0.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"a217115de823c906417050780d56d42be9ffed91","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-4.0.0.tgz","fileCount":11,"integrity":"sha512-vS9DS9iVdVYSIxs+vMP77e6uoc/6ZacFv7Hs+chbjzCm6US2xlOqwnxaL3n7bk3fPnsRr0JuYUioIOledRqCBA==","signatures":[{"sig":"MEQCIHt8ee4+crjXP7ozfBxKStEn1e+EY374rhutsX8grcUJAiBxQJpIqArB6sK0wuV+nijLRjWUFGxQIg7ZKbAhhD+6pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69161},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"d6789c8be89a73b6b57901377cc1ae2e0ddc26b8","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"AI-ready codebase context: project type, dead code, test files, complete flow, all locations","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_4.0.0_1761290830542_0.5292160391514484","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"mcp-thorns","version":"4.1.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@4.1.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"dd4b5bb4f44512eca7790d01e5762fbc0489b1a2","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-4.1.0.tgz","fileCount":11,"integrity":"sha512-RID3O/YWNVw8mnYA4TiMIUGJWApx++keU+WU/y9Xl8KwrSYOPYJYLYIWQv5KcKLbYlU3RQb6qFX2T+dUjUxtXA==","signatures":[{"sig":"MEUCIQDT2TYYJexwuiIOgzAK6ZtLPAE5gZUj98TwEc4UH37pKQIgNNtK6RflkLxkkKQ54+fpzmsTL4C+8JaN5m7CNWeH78I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71818},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"e0167286ecaccc6242ea95bb3b5c82514d2be1db","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"AI-ready codebase context: project type, dead code, test files, complete flow, all locations","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_4.1.0_1762604235177_0.11247438390571429","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"mcp-thorns","version":"4.2.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@4.2.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"4530e6a4f772e575a8eec57cb153ee4c073234da","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-4.2.0.tgz","fileCount":11,"integrity":"sha512-C9IpySDv5+a9vc3ZW1U7SEOHiRJm/9iCg2mKTkd/JFNknl9q3opIXtLvAHkEizCcM1M05DsqESiTLrk3NlWiMQ==","signatures":[{"sig":"MEUCIHiWWQggckeW6cr1T7kjFOttrSzF5N6r/DdqXM0bYfV/AiEArtwoHw3wI9cPy6Fb4kX5BZAmJsO0m2Nd1ylnKU1ZHIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71877},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"ddc190734bd86d053fc5e2f3418cc638fb7fe693","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"AI-ready codebase context: project type, dead code, test files, complete flow, all locations","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_4.2.0_1764614472242_0.6136345099795792","host":"s3://npm-registry-packages-npm-production"}},"4.2.1":{"name":"mcp-thorns","version":"4.2.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@4.2.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"7db06ffef7a5fb5c3e0b1c9e18a27f42091d1590","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-4.2.1.tgz","fileCount":11,"integrity":"sha512-c4/ta0/6kPs5yNJ4uJqr6mSd3HE5kT4WaoEs4xaz1s8U54BNmZucx2jf/1s2T/rSA0rtu7NGqmbcyDt5SsKkcw==","signatures":[{"sig":"MEUCIBM3WLwvsgwBlIPnEG+TUFpEqlHYlucyz3zJ5gXtmXr+AiEAkeoifbObrrl4Ez6N6wV1u3xHgVtt0f5rx7Zh3yttztA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72153},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"2cc1805c518bb6eb9b5aa423e38e67fc0df9dda9","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"AI-ready codebase context: project type, dead code, test files, complete flow, all locations","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_4.2.1_1764614672941_0.5250075912325662","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"mcp-thorns","version":"5.1.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js"},"dist":{"shasum":"d455cdeea98ceeba3a2487db2200a0307f4480f4","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.0.tgz","fileCount":11,"integrity":"sha512-XyJP1Qw7ZIUPsTEugwPpFafZmuRnwsMbrZs892LXqtl3BOCh+AaJQw/L2ZvFumPl6IsYOi6Vx5A6F7Gdb6YG8g==","signatures":[{"sig":"MEUCICQiifG363aNwr+c60nWMNH4Mhcvmj7K2FOyOcG4apgPAiEAwTqMEz0w13jVfvUQDphujUv+iZAodF6l1TxHJCCjOx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91086},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"3eca1fe112308c3568f0fd1aeb493fbec72dad73","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.0_1764616949935_0.82243447140448","host":"s3://npm-registry-packages-npm-production"}},"5.1.1":{"name":"mcp-thorns","version":"5.1.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"dist":{"shasum":"a59cc031ac5f6bd491a57dbc1af5479f6786e792","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.1.tgz","fileCount":11,"integrity":"sha512-CyeyK4MfDSFq8fC51KT8IQABsuB/sMxw7Ucwm+6lV/FzPVfzztJ1mnyEsnL44tHCmmbvDwu3Sv4LeB1o3dBCcw==","signatures":[{"sig":"MEYCIQC2vhCXU0iyzlEDn7FWUOK1vPOJi8KyXkyFwEe35TwMEgIhANjNo7cwHmSLioFa7zx6bwlcWLrU8R4QroUtQ/sfU4Ui","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91118},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"3eca1fe112308c3568f0fd1aeb493fbec72dad73","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.1_1764617523051_0.823275837243802","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"mcp-thorns","version":"5.2.0","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.2.0","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"dist":{"shasum":"36a7f67e054b12b699e3b5d1f7e9297d10d32716","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.2.0.tgz","fileCount":14,"integrity":"sha512-ADD/MCdy/ZTxFzstXOzEnujqRynT/aFXr9Xgo8w5ht25ZlX+PRX8HqihH5YWHwYNsO/Scj0aXJjSV3FQlCwp0A==","signatures":[{"sig":"MEYCIQCTCTWS4X4TcF/LDHuOi7LE0/BSd8QCxgI0OPUfiAW9TgIhAJ8rW3X2PuEmtzUromlXh3pbTysbJnX4jE3A/dAe7Kvm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108136},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"412285f9e98aff222bc9a0e0353a3fb5dcef7066","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.2.0_1766219772727_0.06404918386618008","host":"s3://npm-registry-packages-npm-production"}},"5.2.1":{"name":"mcp-thorns","version":"5.2.1","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.2.1","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"dist":{"shasum":"eefdc42ffe41749e7d3e08e11ec60b1d441bf0f8","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.2.1.tgz","fileCount":14,"integrity":"sha512-U4NdVAqEARBcjsDeRmTpFoFEl3ROn8SJpbg2MM6CSpDHlbGd90zJEEBi8pmkCdgD90/u/FmesjijKYE4b4WXwQ==","signatures":[{"sig":"MEUCIGnP/b4O9Ha6/TECYZI/V9AStOiq+n9puztwTttXFB6nAiEAzbk7zSkWUu0Uez3b3hna3HBIb3yIx50lEUCbOtJgW8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109049},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"eab918bdd533ce4a64785593c50f171da2f80438","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.9.0","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"22.11.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.2.1_1766221304076_0.2242263906389128","host":"s3://npm-registry-packages-npm-production"}},"5.1.4":{"name":"mcp-thorns","version":"5.1.4","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.4","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"bun":{"bin":{"thorns":"./index.js","mcp-thorns":"./index.js"}},"dist":{"shasum":"58962f1c8a49eb5beb7fb41c0548d1e997b03766","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.4.tgz","fileCount":13,"integrity":"sha512-ShHnrt7tKMl5ZUeQGzcpx4ZdpwU6a29pW2uPm5UCs6QDAVjEntXSZgYmHdCwjRFHDqYuKnfReiaLdQq5nokDyA==","signatures":[{"sig":"MEQCICblnT/VTBMECc+JL80pUAplQ/0U4kF1RENWYnP8ka0EAiBroAS+ls07/Om0vBHl4A0YzC5LVAy1bTlJ0zUGzEo1mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98875},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"d32d79d2c6536a05758501f12cf89644a5f48f11","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.4_1772796596513_0.0379315549587631","host":"s3://npm-registry-packages-npm-production"}},"5.1.5":{"name":"mcp-thorns","version":"5.1.5","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.5","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"bun":{"bin":{"thorns":"./index.js","mcp-thorns":"./index.js"}},"dist":{"shasum":"e81f02dd0133e1b6925bea96f460dd850cf4f938","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.5.tgz","fileCount":13,"integrity":"sha512-uMr1G330ZjhRDlK03ISvBPf7lJnUuINXEbcJvNllbUXEU2ep+G4iXYVcqm+4XAmRaXBE6MHmrqAE3o+HDW3Jpg==","signatures":[{"sig":"MEUCIE/d/6r4aVkfdF7no3W/XSEuzoaop0Do4viRxYQ9J0SZAiEAsBH8pkQLpvRUcnuFgLZGpVbE3tHUj/1dilbtxHmlnvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99404},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"4f82bb7d398eb6f3e4aa53742a1eb74abbd86f23","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.5_1773344930553_0.7217048708933052","host":"s3://npm-registry-packages-npm-production"}},"5.1.6":{"name":"mcp-thorns","version":"5.1.6","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.6","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"bun":{"bin":{"thorns":"./index.js","mcp-thorns":"./index.js"}},"dist":{"shasum":"700f4cdf76c790eb6722d6342f5d206545e9a86d","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.6.tgz","fileCount":13,"integrity":"sha512-lGNrelrJ2sqShB65TJ8xlPyl/AoqlLsOTjMKirtFFEVPhwco72RpaFzNZdgBi0CbbC+A2BVTQn5ppmlrRI2LvA==","signatures":[{"sig":"MEUCIQCb8E6/P5SEgwQf2am8GIHjLFnU++bQ8rxKWlpbyeVz5AIgA0RU3Iij9Z0jU+yTFhh1DeBEuspTE4Q8ElJpbBpMdLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99404},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"c31e5f042ff0f9c5d55733e637ba4eb31bdbf33a","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"20.20.1","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.6_1773345718926_0.24707281182823349","host":"s3://npm-registry-packages-npm-production"}},"5.1.7":{"name":"mcp-thorns","version":"5.1.7","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.7","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"bun":{"bin":{"thorns":"./index.js","mcp-thorns":"./index.js"}},"dist":{"shasum":"8e7605d0eb0bd51d890548b40c28cd5539513625","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.7.tgz","fileCount":13,"integrity":"sha512-wnkm0hiH2ES0zKtQUKC6peyWsaniTF2HXN6CKzcuOkGU0hOO/0TeP5ezqQPSzsUkNG5lZtI2fixL2EOmI1Arog==","signatures":[{"sig":"MEUCIQDj3xBVuZa+SJ9ccVhFPfcU+cBVH97Q3Nu9vDRuB51YfwIgE1xFtmN7egBje5UA3fwqRwIkgNBZd3ezwAdpMwseL/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99404},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"aa70982d38a141543185c7afb1626a435005cae9","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.7_1776332594735_0.5401551767953285","host":"s3://npm-registry-packages-npm-production"}},"5.1.8":{"name":"mcp-thorns","version":"5.1.8","keywords":["tree-sitter","analysis","ast","codebase"],"author":{"name":"AnEntrypoint"},"license":"MIT","_id":"mcp-thorns@5.1.8","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"bin":{"thorns":"index.js","mcp-thorns":"index.js"},"bun":{"bin":{"thorns":"./index.js","mcp-thorns":"./index.js"}},"dist":{"shasum":"4e05ae010bcfe64148b80834cefe98822efb4be8","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.8.tgz","fileCount":13,"integrity":"sha512-MbfZCkBEInB1EUNduobgoX7IFldba74o76gbwhCcY+Upeo1xMvb5AeyPSgeMB0gw5Gz6YygPOkRsj8fwIFZIjg==","signatures":[{"sig":"MEQCID7ICdxbnjWelvmqhHk8CPJKTAK58m2j4ZANSpLW+O8bAiBlDKxb5IHt6BiNqyVHLgtAkI6Ph3ziBUH0YC6AgtLe7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99404},"main":"./lib.js","type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./lib.js"},"gitHead":"43f69ebe0f9c8d608192b72b1314ae3f4da9dad9","scripts":{"analyze":"node index.js"},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"repository":{"url":"git+https://github.com/AnEntrypoint/mcp-thorns.git","type":"git"},"_npmVersion":"10.8.2","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tree-sitter":"^0.21.1","tree-sitter-c":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-php":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-json":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-thorns_5.1.8_1776335176559_0.5128831143645549","host":"s3://npm-registry-packages-npm-production"}},"5.1.9":{"name":"mcp-thorns","version":"5.1.9","description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","type":"module","main":"./lib.js","exports":{".":"./lib.js"},"bin":{"mcp-thorns":"index.js","thorns":"index.js"},"scripts":{"analyze":"node index.js"},"bun":{"bin":{"mcp-thorns":"./index.js","thorns":"./index.js"}},"repository":{"type":"git","url":"git+https://github.com/AnEntrypoint/mcp-thorns.git"},"author":{"name":"AnEntrypoint"},"license":"MIT","homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"dependencies":{"tree-sitter":"^0.21.1","tree-sitter-javascript":"^0.21.0","tree-sitter-typescript":"^0.21.0","tree-sitter-python":"^0.21.0","tree-sitter-rust":"^0.21.0","tree-sitter-go":"^0.21.0","tree-sitter-c":"^0.21.0","tree-sitter-cpp":"^0.22.0","tree-sitter-java":"^0.21.0","tree-sitter-c-sharp":"^0.21.0","tree-sitter-ruby":"^0.21.0","tree-sitter-php":"^0.22.0","tree-sitter-json":"^0.21.0"},"engines":{"node":">=18.0.0"},"keywords":["tree-sitter","analysis","ast","codebase"],"_id":"mcp-thorns@5.1.9","gitHead":"484f5a6cf0091cd1e3b34242b9f07694e4a01b65","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-0WUx+KKWJpF6DmBRuTPptXSFbtNXUoLgPpWck8a1QAeqrupMqitcaAcoFAFYh/zZpyUGTHSBZMZDH8ABVLSMJA==","shasum":"7965c9bcc3a567fbbe702ab58ccda721208f5a6f","tarball":"https://registry.npmjs.org/mcp-thorns/-/mcp-thorns-5.1.9.tgz","fileCount":13,"unpackedSize":99404,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAqDl5rC11aJ4dp+xGRdA1XOXoqO1GFj68lR50+VYD5qAiEAzfCZyi0eVwG4GmSfWs0vfEHdG53un/cin+lG1erBPNk="}]},"_npmUser":{"name":"lanmower","email":"almagestfraternite@gmail.com"},"directories":{},"maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-thorns_5.1.9_1776336995450_0.8320895637027161"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-30T13:38:10.977Z","modified":"2026-04-16T10:56:35.750Z","1.0.0":"2025-09-30T13:38:11.259Z","1.0.1":"2025-09-30T13:41:00.913Z","2.0.0":"2025-09-30T13:48:14.129Z","2.1.0":"2025-09-30T13:52:28.699Z","2.1.1":"2025-09-30T14:08:44.691Z","2.1.2":"2025-09-30T14:09:50.337Z","2.1.3":"2025-09-30T14:12:22.798Z","2.2.0":"2025-09-30T14:13:44.062Z","2.3.0":"2025-10-18T16:56:50.026Z","2.3.1":"2025-10-18T16:57:22.719Z","2.3.2":"2025-10-18T16:57:46.847Z","2.4.0":"2025-10-18T17:03:22.515Z","2.5.0":"2025-10-18T17:08:58.283Z","2.6.0":"2025-10-18T17:22:18.028Z","3.0.0":"2025-10-22T15:59:18.065Z","3.1.0":"2025-10-22T17:30:30.153Z","4.0.0":"2025-10-24T07:27:10.728Z","4.1.0":"2025-11-08T12:17:15.407Z","4.2.0":"2025-12-01T18:41:12.485Z","4.2.1":"2025-12-01T18:44:33.117Z","5.1.0":"2025-12-01T19:22:30.142Z","5.1.1":"2025-12-01T19:32:03.246Z","5.2.0":"2025-12-20T08:36:12.882Z","5.2.1":"2025-12-20T09:01:44.235Z","5.1.4":"2026-03-06T11:29:56.665Z","5.1.5":"2026-03-12T19:48:50.786Z","5.1.6":"2026-03-12T20:01:59.093Z","5.1.7":"2026-04-16T09:43:14.865Z","5.1.8":"2026-04-16T10:26:16.731Z","5.1.9":"2026-04-16T10:56:35.638Z"},"bugs":{"url":"https://github.com/AnEntrypoint/mcp-thorns/issues"},"author":{"name":"AnEntrypoint"},"license":"MIT","homepage":"https://github.com/AnEntrypoint/mcp-thorns#readme","keywords":["tree-sitter","analysis","ast","codebase"],"repository":{"type":"git","url":"git+https://github.com/AnEntrypoint/mcp-thorns.git"},"description":"Perfect one-shot codebase overview: project context, architecture flow, async/error patterns, dead code, internal call graph","maintainers":[{"name":"lanmower","email":"almagestfraternite@gmail.com"}],"readme":"# Thorns - Ultra-Compact Codebase Intelligence\n\nCross-platform codebase analysis using tree-sitter for maximum insight with minimal output.\n\n## Features\n\n- **Cross-platform**: WSL, Linux, Windows, macOS (arm64/x64)\n- **12 languages**: JavaScript, TypeScript, Python, Rust, Go, C/C++, Java, C#, Ruby, PHP, JSON\n- **Dependency graph**: File-level imports, orphans, circular deps\n- **Code duplication**: AST-based clone detection\n- **Coupling metrics**: Most connected files\n- **File sizes**: Distribution and largest files\n- **Identifier usage**: Most common variables/functions\n- **Complexity hotspots**: High cx/depth files\n- **Ultra-comprehensive ignoring**: Auto-loads .gitignore, .dockerignore, .npmignore + 200+ built-in patterns\n- **Smart filtering**: Ignores node_modules, target, vendor, dist, build, .cache, etc. across all languages\n- **Ultra-compact**: Zero unnecessary tokens\n- **Fast**: Native parsers, ~1000 files/sec, skips 96%+ of irrelevant files\n\n## Usage\n\n### Quick Start\n\nAnalyze current directory:\n```bash\nbunx mcp-thorns\n```\n\nAnalyze specific directory:\n```bash\nbunx mcp-thorns /path/to/codebase\n```\n\n### Install Globally with Bun\n\n```bash\nbun add -g mcp-thorns\n```\n\nThen use:\n```bash\nthorns /path/to/codebase\n```\n\n### Programmatic API\n\n```javascript\nimport { analyze } from 'mcp-thorns';\n\n// Get ultra-compact analysis as a string\nconst output = analyze('./path/to/codebase');\nconsole.log(output);\n\n// Or use the raw functions for custom formatting\nimport { analyzeCodebase, formatUltraCompact } from 'mcp-thorns';\n\nconst data = analyzeCodebase('./path/to/codebase');\nconst formatted = formatUltraCompact(data);\n```\n\n## Output Format\n\nUltra-compact cheat sheet with maximum information density:\n\n```\n━━━ 47f 8.5kL 44fn 5cls cx:7.9 d:21.7 ━━━\nJA 97% 40f 8.3kL 44fn 5c 575i 96e cx:7.9\nJS 3% 7f 214L 0fn 0c 0i 0e cx:0\n━━━ fn ━━━\n7× Ja:main(1)\n6× Ja:uuid(1)\n5× Ja:createApp(1)\n4× Ja:verifyApps(1)\n3× Ja:processNextApp(1)\n━━━ cls ━━━\n2× Ja:StatelessMCPTools\n2× Ja:ValidationSystem\n━━━ imports ━━━\n2× import { CallToolRequestSchema...\n1× import WebSocket from 'ws';\n━━━ calls ━━━\n504× console.log\n63× ws.on\n51× setTimeout\n━━━ ⚠ hotspots ━━━\ncx:57 d:19 src/validation-system.js\ncx:20 d:28 src/stateless-mcp-tools-basic.js\n```\n\n**Legend:**\n- Abbreviations: `f`=files `L`=lines `fn`=functions `cls`=classes `i`=imports `e`=exports `cx`=complexity `d`=AST-depth `(N)`=param-count\n- Issues: `orph`=orphaned-files `dup`=duplicate-code `circ`=circular-deps `in/out`=dependency-coupling\n- `TOTALS`: Total files, lines, functions, classes, avg complexity, avg depth | Issues counts\n- Language rows: % of codebase, file/line/function/class/import/export counts, avg complexity\n- `TOP-FUNCTIONS(most-defined)`: Most common function signatures (count × lang : signature)\n- `TOP-CLASSES(most-defined)`: Most common classes\n- `TOP-IMPORTS(common-deps)`: Most frequent imports\n- `TOP-CALLS(frequent-invocations)`: Most called functions/APIs\n- `HOTSPOTS(complex-files)`: Complexity hotspots - refactor candidates (cx=complexity, d=depth)\n- `ORPHANS(unused-or-entries)`: Files not imported anywhere - potential dead code or entry points\n- `COUPLING(central-files)`: Files with most dependencies - central hubs, refactor candidates (in←imports, out→uses)\n- `DUPLICATES(code-clones)`: AST-based structural clones - consolidation candidates (count × hash : files)\n- `CIRCULAR-DEPS(import-cycles)`: Import cycles - architecture issues\n- `LARGEST-FILES(split-candidates)`: Largest files - maintainability risk\n- `FILE-SIZE-DISTRIBUTION`: File size distribution by line count\n- `TOP-IDENTIFIERS(common-names)`: Most used variable names in codebase\n\n## Supported Languages\n\n- JavaScript (.js, .mjs, .cjs, .jsx)\n- TypeScript (.ts, .tsx)\n- Python (.py)\n- Rust (.rs)\n- Go (.go)\n- C (.c, .h)\n- C++ (.cpp, .cc, .cxx, .hpp)\n- Java (.java)\n- C# (.cs)\n- Ruby (.rb)\n- PHP (.php)\n- JSON (.json)\n\n## Ignored Directories & Files\n\nAutomatically skips 200+ patterns including:\n- **VCS**: `.git`, `.svn`, `.hg`, `CVS`\n- **Build artifacts**: `dist`, `build`, `out`, `target`, `vendor`\n- **Language-specific**: `node_modules`, `__pycache__`, `.gradle`, `Pods`, etc.\n- **Caches**: `.cache`, `.next`, `.nuxt`, `.parcel-cache`, `.vite`, `.turbo`\n- **IDEs**: `.vscode`, `.idea`, `.vs`, `.sublime-*`\n- **Test & coverage**: `.pytest_cache`, `.nyc_output`, `coverage`, `htmlcov`\n- **Home directories**: `~/.cache`, `~/.config`, `~/.local`, `~/.npm`, `~/.cargo`, etc. (when analyzing subdirs)\n- **Lock files**: `bun.lockb`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`\n- **Custom patterns**: Loads and merges `.gitignore`, `.dockerignore`, `.npmignore`, `.thornsignore`\n\nThorns prioritizes speed by ignoring 96%+ of non-code files.\n\n## Requirements\n\n- **Runtime**: Bun >= 1.0\n- **Platform**: Linux, macOS, Windows (WSL2), Docker\n- Prebuilt binaries download automatically for supported platforms\n\n## Compatibility\n\n✅ **Linux**: Ubuntu, Debian, Alpine, Fedora, Arch\n✅ **macOS**: Intel & Apple Silicon (arm64)\n✅ **Windows**: WSL2, Git Bash, PowerShell\n✅ **Docker**: All Linux images (Alpine, Debian, Ubuntu)\n✅ **CI/CD**: GitHub Actions, GitLab CI, Jenkins, CircleCI\n✅ **Cloud**: AWS Lambda (with Node/Bun layer), GCP Cloud Functions\n\n## Execution Methods\n\n| Method | Best For | Requirements |\n|--------|----------|--------------|\n| bunx | Quick analysis | `bun` |\n| Bun global | Repeated use | `bun` |\n| Programmatic | Integration | Bun |\n\n## How It Works\n\n1. Walks directory tree, filtering by extension\n2. Parses each file with tree-sitter\n3. Analyzes AST for functions, classes, imports, exports, complexity\n4. Aggregates statistics by language\n5. Outputs compact summary\n\n## Performance\n\n- Skips files > 1MB\n- Uses native parsers (not WASM)\n- Minimal memory footprint\n- Processes ~1000 files/second on modern hardware\n# Triggered npm publishing\n","readmeFilename":"README.md"}