{"_id":"@alexcvzz/guardrail","_rev":"13-6673220b7344534075cbda8e0a1fd2b0","name":"@alexcvzz/guardrail","dist-tags":{"latest":"0.6.3"},"versions":{"0.0.1":{"name":"@alexcvzz/guardrail","version":"0.0.1","license":"MIT","_id":"@alexcvzz/guardrail@0.0.1","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"66dcac8ea654f8f4f2875d03f12b98a4e44723d6","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.0.1.tgz","fileCount":57,"integrity":"sha512-birxUDWkgKwgTKXRkcu12ow5rM8Gez1m3mQffznAOMX2VjPd53e6dOmMJZvN5FV6vXlpaUHPy7w44Q3IfjVq2g==","signatures":[{"sig":"MEQCIHfkIsQ8ew3d44yKLwSXpPic64904FKyA5nhlufuoTn4AiAPRL7e8iz/QML9SlmQbfzJ5H9IGmvmETh/INWGIVrtYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89212},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"e5d626bf69d565845f32bb5f0545ce145d70148b","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","env-paths":"4.0.0","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.0.1_1776016957547_0.30568384415694894","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@alexcvzz/guardrail","version":"0.0.2","license":"MIT","_id":"@alexcvzz/guardrail@0.0.2","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"41763be13e5ca484ea7a0772bc32dfbda6d5c3cd","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.0.2.tgz","fileCount":57,"integrity":"sha512-zNsx7sov362kznWF8Za5T07J5NnSTyy6woIC7Bo/PbMY8RGMUGjtEZGWzEoANQmf3w5DQfGAE0dS59tAeGmSzg==","signatures":[{"sig":"MEQCIDOHekSgFT/X6v8nHXHKZ7+T6ZZcJDhFoXIIMubF8elAAiAeDwqNAfcPUqNa4r/fuBn515odp/dDhpFsUlNgdYqIeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93533},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"327459a2a47620d7441465a65b1d4a431bb2c1fc","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","env-paths":"4.0.0","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.0.2_1776022961128_0.13157268431869973","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@alexcvzz/guardrail","version":"0.0.3","license":"MIT","_id":"@alexcvzz/guardrail@0.0.3","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"21197808c1fe956ddb6f7d8fb0e2d6efc870ecb0","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.0.3.tgz","fileCount":69,"integrity":"sha512-GaXFUZ7y8n4vrvWWoyZROe5rpm1OTChUwS5PzhIrjQUdlYBZZoUFrVNe4VanB8K8r0Ks1Lz0g4Rt2KjRF0hg1w==","signatures":[{"sig":"MEUCIQCPuA5yXD6GA0QtijFftYWZ45xjW86t4EGvRknMNatxWwIgd2UwPWF++vf4OLhs+7UDguLOMCLJLk8eC+qQbixyBbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99286},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"d491dac0c5983749d1db538a166eac2b9fb0354e","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.0.3_1776077077808_0.2055199766392115","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@alexcvzz/guardrail","version":"0.0.4","license":"MIT","_id":"@alexcvzz/guardrail@0.0.4","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"d1f8a5bb727fe36a8205acb79e50d2d051e14de4","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.0.4.tgz","fileCount":69,"integrity":"sha512-r4BcEcDI0rzbT92ipKQII7naJN2dxoa76tJu5gAr3Xn9wL4NGO0LjaHEaWzsCap58TFUESg7H8gDOfh18vzdSA==","signatures":[{"sig":"MEYCIQCNY3obUH/sBjDRA/aQdZL96vmOMDWP7iqz/J1KjRWy/AIhAInWeuaowEvmwwfGLLinmt7aJ7ChExBBsRvzkYqMjwyx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100086},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"d95c5299c93ca6e2abbfcba9292a100df1e2ddc0","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.0.4_1776079774638_0.7947621201748305","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@alexcvzz/guardrail","version":"0.1.0","license":"MIT","_id":"@alexcvzz/guardrail@0.1.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"98254978947fc8c5c3331c35985c7973ae2c80c9","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.1.0.tgz","fileCount":105,"integrity":"sha512-P7vbGJu5iaH4jpZVKddrGQDHiSukz7QlhqVRUxwEljroxZDmp4ucZ6Iu4yYLbCHNoFRWPMUv8EC8n2SwkaPiEw==","signatures":[{"sig":"MEQCICQ3G1KTpr+HT09PmMj+Rs/9MV40HxSTIhKi8QScy/APAiAEd7vvRM/A7YMjKkynph1g3o4++95RfW5IjKCBsT734Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145233},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"99bd2c691fd71ee1ae84d5ae1e54eafa75bff20e","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.1.0_1776173090046_0.21468784243504602","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alexcvzz/guardrail","version":"0.2.0","license":"MIT","_id":"@alexcvzz/guardrail@0.2.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"d04aae4e1ee182d0be495bc3cbaa05b620326e1e","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.2.0.tgz","fileCount":159,"integrity":"sha512-k7Hfa6HIybYjh58xzwF2645lWi3VnHv/rdJYZWFSl2maXqvBvglzM19pZ3JY6vIhsorWqKqGzDtKlsKxuh3O0Q==","signatures":[{"sig":"MEUCIEULs1rU0PXQnLvI3WGOc89J6ZAExSV3sSpOMnsiCBjsAiEAyvbS26oE2Q39KNoXV+cORq1d4WPclseG2msUUoniICo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243061},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"e8644802fc47e9e535f805542a15a83b9f1bff30","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.2.0_1776290130579_0.5895266697652164","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alexcvzz/guardrail","version":"0.3.0","license":"MIT","_id":"@alexcvzz/guardrail@0.3.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"fe084dfb4afbd94a442020a246d2aa1f9bdee78a","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.3.0.tgz","fileCount":168,"integrity":"sha512-h2xES7diGdglm2tQ9TNcLwdxqQ+ZPw1AuUGETT1kH9I2gdQY1tzfYVMr9inyUZMM4f4vZTBkQw/OZGDWw6RnLQ==","signatures":[{"sig":"MEUCIA+3vHNS8VSZ1UUGnf81MhL/31n1JHWQx25qIts3MQ+QAiEAx1dT8qDJHIIheqFSr6ulBhnpNVdKJNtbgBK1mKFk5ug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254508},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"837efcb4c9c1e400cb88d60b90d52d72140ec167","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.3.0_1776366532553_0.43884637870004584","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alexcvzz/guardrail","version":"0.4.0","license":"MIT","_id":"@alexcvzz/guardrail@0.4.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"bbc5b0dfee14194f90be8fea644bc660d27d8cba","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.4.0.tgz","fileCount":174,"integrity":"sha512-BlZTPMJRRHjbgGfgOhl0mPH2bzQZe2CexEZc8JYlaVhJU4wh6TPgpEnjayCOij8q0icAb5h2xNHQmhWVeOSokg==","signatures":[{"sig":"MEUCIQD3bOMbv0Q8sbD5Qyi6XNVGSGmRPmbcKZIqw9tjfcqxiAIgThuyymlp9ul8GZwGiHMxJhSZoDpihiegFokuNQiiHac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287882},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"9298d2128a2bcd621a647a01de08c9b0ab8f5e42","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.4.0_1776458235653_0.9602045335177196","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alexcvzz/guardrail","version":"0.5.0","license":"MIT","_id":"@alexcvzz/guardrail@0.5.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"37a36c0c881a0814f893c11567246e07e68616bf","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.5.0.tgz","fileCount":213,"integrity":"sha512-veKb1BLp1sZy9beDmZa5IAWqBm7IHWJ3itzzlwmJ7AtnwS2m54fRFd9TUkg542U+1Mgop2vpvcyU+VizGQsbaw==","signatures":[{"sig":"MEQCIBnOfi513Y4954kWb45VWmlRFfRjN0bXTLlzmGJB8lgyAiBMmUsrKvhO57kZbDaJCofg6z9eK3zMT0/Z7HUFcMR22g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355897},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"dd14abb9b6110a44e603825cddcf8d7a72e4ca54","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.5.0_1776887344634_0.9120146984893658","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alexcvzz/guardrail","version":"0.6.0","license":"MIT","_id":"@alexcvzz/guardrail@0.6.0","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"aae68beca74e7f814cc336cbddf4fd9b518957a7","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.6.0.tgz","fileCount":216,"integrity":"sha512-kJVQsXnGA2W4zmsblwcscXdBI5a4P++/tEGEF5BjYrAswdzgcpK3tgqlDL8cYCGiib7Hz3p163PkEeOs9+cbMA==","signatures":[{"sig":"MEQCIDLvbZgU3Ho4hrUzy+itzlrimbw/HAdvrOrIbrbN58T6AiBbcsGjhsrec4y1neYlFAifIsPeAYrcTDBU5YH8XIR8oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361149},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"cee0a9b5fa36fd7b48c6cd2ddb4de27bc8434c9c","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.6.0_1776955053665_0.3181284083889877","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alexcvzz/guardrail","version":"0.6.1","license":"MIT","_id":"@alexcvzz/guardrail@0.6.1","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"66ed8cba9c3515626ecc1bb424dad76e6bfe05df","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.6.1.tgz","fileCount":222,"integrity":"sha512-eHxz06y66CUUArMbEWA3z2+HPxb2F+s16HoQlVTdDp8CCsL3D77j6Ltg16+qT3ew2iWEwoEJzxpoSHsDAmbdfg==","signatures":[{"sig":"MEYCIQDcL6jUopU0ThBA7GTugNibcM8C71C77o+6+uggUxG9YQIhAPAdLlU79sp+okJcD4ZrKWyzMuafB2PP41YSbyc/T3gX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375647},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"f0ec5b953c85493f552b8d7b7ced47b0bde67959","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.6.1_1776982618835_0.9679626416137503","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@alexcvzz/guardrail","version":"0.6.2","license":"MIT","_id":"@alexcvzz/guardrail@0.6.2","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"bin":{"guardrail":"dist/cli/index.js"},"dist":{"shasum":"ec599a8ec7a162419b9e6bcc34194c4940dc1bee","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.6.2.tgz","fileCount":222,"integrity":"sha512-LoClXRk0FI/1bACYc8k9iRWklciSQNSlRySi0LoXgWfFuEdXoO0XMUomzEeohrc3BY9W/bc9MoMJz2aboQCyrg==","signatures":[{"sig":"MEUCIQD79heV3eOD9WDLfXjEHClUdDZlUn7R/d7JhmGYD5Cz/wIgQki5efVJv8rdDajbVRKOa2lLxv2c6IfkNPWqf6I/vTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372327},"main":"./dist/cli/index.js","type":"module","types":"./dist/cli/index.d.ts","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"gitHead":"b1ef0c7317390f546e34064daa86101eaf6390ae","scripts":{"dev":"tsc --watch","fix":"biome check --write .","lint":"biome lint .","test":"vitest","build":"tsc && chmod +x dist/cli/index.js","check":"biome check . && tsc --noEmit","format":"biome format . --write","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"_npmVersion":"11.9.0","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"jiti":"2.6.1","commander":"14.0.3","picomatch":"4.0.4","tinyglobby":"0.2.16","cosmiconfig":"9.0.1","web-tree-sitter":"0.26.8","tree-sitter-java":"0.23.5","tree-sitter-python":"0.25.0","tree-sitter-javascript":"0.25.0","tree-sitter-typescript":"0.23.2","cosmiconfig-typescript-loader":"6.3.0","@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.4","typescript":"6.0.2","@types/node":"25.5.2","@biomejs/biome":"2.4.10","@types/picomatch":"4.0.3"},"_npmOperationalInternal":{"tmp":"tmp/guardrail_0.6.2_1777035963919_0.2966323840392133","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@alexcvzz/guardrail","version":"0.6.3","license":"MIT","type":"module","main":"./dist/cli/index.js","exports":{".":{"types":"./dist/api.d.ts","import":"./dist/api.js"}},"bin":{"guardrail":"dist/cli/index.js"},"scripts":{"build":"tsc && chmod +x dist/cli/index.js","dev":"tsc --watch","check":"biome check . && tsc --noEmit","lint":"biome lint .","format":"biome format . --write","fix":"biome check --write .","typecheck":"tsc --noEmit","test":"vitest","prepublishOnly":"npm run build"},"dependencies":{"@tree-sitter-grammars/tree-sitter-kotlin":"1.1.0","commander":"14.0.3","cosmiconfig":"9.0.1","cosmiconfig-typescript-loader":"6.3.0","jiti":"2.6.1","picomatch":"4.0.4","tinyglobby":"0.2.16","tree-sitter-java":"0.23.5","tree-sitter-javascript":"0.25.0","tree-sitter-python":"0.25.0","tree-sitter-typescript":"0.23.2","web-tree-sitter":"0.26.8"},"devDependencies":{"@biomejs/biome":"2.4.10","@types/node":"25.5.2","@types/picomatch":"4.0.3","typescript":"6.0.2","vitest":"4.1.4"},"gitHead":"8e001924d308bd7e437e62b25259dbb2705e0a25","types":"./dist/cli/index.d.ts","_id":"@alexcvzz/guardrail@0.6.3","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-EaO85ssk9uqiOfb1B+eWY2wLf0/Ri/pcWRXF1vgN6zov1+s+9s6OXvMau6WbygAwmhbACcneWNJMblhIdQmSkA==","shasum":"f12865411672150f9f0d9dd990693e5aa570d064","tarball":"https://registry.npmjs.org/@alexcvzz/guardrail/-/guardrail-0.6.3.tgz","fileCount":171,"unpackedSize":271354,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGE3JbUHqFg3qfxqNUSg5piG3t1xF/2CxyaQeh8Wi3s2AiA0w3JuBm4Sjf+LY3QSFgV1JnawravUjPOKIKnoDDuYSQ=="}]},"_npmUser":{"name":"alexcvzz","email":"alexcovizzi@gmail.com"},"directories":{},"maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/guardrail_0.6.3_1778014243812_0.23237588796865727"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-12T18:02:37.421Z","modified":"2026-05-05T20:50:44.071Z","0.0.1":"2026-04-12T18:02:37.663Z","0.0.2":"2026-04-12T19:42:41.270Z","0.0.3":"2026-04-13T10:44:38.010Z","0.0.4":"2026-04-13T11:29:34.799Z","0.1.0":"2026-04-14T13:24:50.170Z","0.2.0":"2026-04-15T21:55:30.727Z","0.3.0":"2026-04-16T19:08:52.705Z","0.4.0":"2026-04-17T20:37:15.801Z","0.5.0":"2026-04-22T19:49:04.780Z","0.6.0":"2026-04-23T14:37:33.797Z","0.6.1":"2026-04-23T22:16:58.989Z","0.6.2":"2026-04-24T13:06:04.094Z","0.6.3":"2026-05-05T20:50:43.958Z"},"license":"MIT","description":"[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)","maintainers":[{"name":"alexcvzz","email":"alexcovizzi@gmail.com"}],"readme":"# guardrail\n\n[![npm version](https://img.shields.io/npm/v/@alexcvzz/guardrail.svg)](https://www.npmjs.com/package/@alexcvzz/guardrail)\n[![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nA static analysis tool that catches the patterns LLMs consistently produce: oversized functions, excessive complexity, too many parameters, bloated classes. Run it as a post-generation hook or CI gate to keep AI-written code honest.\n\n## Install\n\n```bash\nnpm install --save-dev @alexcvzz/guardrail\n```\n\nOr run directly:\n\n```bash\nnpx @alexcvzz/guardrail check src/**/*.ts\n```\n\n## Usage\n\n```bash\nguardrail check src/**/*.ts\n```\n\nGlob patterns are expanded by guardrail — no shell dependency.\n\n### CLI flags\n\n| Flag | Description |\n|---|---|\n| `--json` | Machine-readable JSON output |\n| `--quiet` | Only show files with violations |\n| `--timing` | Print timing/performance breakdown to stderr |\n\n## Supported languages\n\nJavaScript, TypeScript, JSX, TSX, Python, Java, Kotlin\n\n## Configuration\n\nCreate a `.guardrail.yaml` (or `.guardrail.yml`, `.guardrail.json`, `.guardrail.js`, `.guardrail.ts`) at the project root via [cosmiconfig](https://github.com/cosmiconfig/cosmiconfig):\n\n```yaml\nextends: recommended\n\nrules:\n  function-max-lines:\n    max: 40\n  function-max-complexity:\n    max: 5\n  function-max-params:\n    max: 4\n\noverrides:\n  python:\n    rules:\n      function-max-lines:\n        max: 60\n  java:\n    rules:\n      function-max-complexity:\n        disabled: true\n```\n\n### Extends\n\nThe `extends` field inherits rules and ignore patterns from a named preset:\n\n```yaml\nextends: recommended\n```\n\nAvailable presets:\n\n| Preset | Description |\n|---|---|\n| `recommended` | Enables all built-in rules with default thresholds and a broad set of ignore patterns for common directories |\n\nOn first run, guardrail creates a global config at `~/.guardrail/config.yaml` with `extends: recommended`. You can override any preset value in your local `.guardrail.yaml` — local rules replace preset rules by key, and local ignore patterns are appended.\n\nTo remove a pattern inherited from a preset, prefix it with `!`:\n\n```yaml\nextends: recommended\nignore:\n  - !build        # un-ignore build/ from recommended\n  - generated     # add a new pattern\n```\n\n### Rule options\n\n| Option | Type | Description |\n|---|---|---|\n| `max` | number | Upper threshold for the rule |\n| `severity` | `'error'` \\| `'warning'` | Errors cause a non-zero exit code; warnings are reported but don't fail the run |\n| `enabled` | boolean | Enable or disable a rule |\n| `disabled` | boolean | Alias for `enabled: false` |\n\n### Language overrides\n\nThe `overrides` key accepts a language name and a `rules` block that is merged over the base rules. Supported language names: `javascript`, `jsx`, `typescript`, `tsx`, `python`, `java`, `kotlin`.\n\n## Built-in rules\n\n| Rule ID | Description | Default |\n|---|---|---|\n| `function-max-lines` | Function body must not exceed N lines | 60 |\n| `function-max-complexity` | Cyclomatic complexity must not exceed N | 10 |\n| `function-max-params` | Function parameter count must not exceed N | 4 |\n| `function-max-nesting` | Function nesting depth must not exceed N | 4 |\n| `function-max-returns` | Number of return statements must not exceed N | 4 |\n| `function-max-locals` | Number of local variables must not exceed N | 15 |\n| `class-max-lines` | Class body must not exceed N lines | 500 |\n| `class-max-methods` | Class method count must not exceed N | 20 |\n| `class-max-fields` | Class field/property count must not exceed N | 20 |\n| `max-file-lines` | File line count must not exceed N (warning) | 300 |\n| `max-import-lines` | Import section must not exceed N lines (warning) | 20 |\n| `no-duplicate-imports` | Disallow multiple imports from the same source | — |\n| `no-magic-numbers` | Disallow unnamed numeric literals (warning) | — |\n| `no-short-names` | Disallow overly short names; common single-letter names allowed (warning) | minLength: 2 |\n| `class-member-ordering` | Enforce class member ordering | — |\n\nCyclomatic complexity starts at 1 and increments for each branch point: `if`, `else if`, loops, `switch` cases, `catch` blocks, ternary expressions.\n\n## Exit codes\n\n| Code | Meaning |\n|---|---|\n| 0 | No errors (warnings may be present) |\n| 1 | At least one error-level violation |\n| 2 | `guardrail claude check`: error-level violation detected |\n\n## Claude Code integration\n\nSet up Guardrail to run automatically after every file edit/write in Claude Code:\n\n```bash\nguardrail claude init              # global setup (default)\nguardrail claude init --scope local  # project-local setup\n```\n\nThis command will:\n\n1. Add a `PostToolUse` hook to `.claude/settings.json` that runs `guardrail check` after every `Edit` or `Write`\n2. Append a guardrail prompt line to `CLAUDE.md` so Claude understands why edits are blocked\n3. Write `~/.guardrail/RULES.md` with instructions on how to add custom rules\n\nYou'll see a summary of changes and be asked to confirm before anything is written.\n\nWhen a violation is detected, Claude Code sees the error and is blocked from proceeding.\n\n### Manual setup\n\nIf you prefer to set things up manually:\n\n1. Build and link the binary:\n\n```bash\nnpm run build && npm link\n```\n\n2. Add the hook to `.claude/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"PostToolUse\": [\n      {\n        \"matcher\": \"Edit|Write\",\n        \"hooks\": [\n          {\n            \"type\": \"command\",\n            \"command\": \"guardrail claude check\",\n            \"timeout\": 30\n          }\n        ]\n      }\n    ]\n  }\n}\n```\n\n## Custom rules\n\nGuardrail supports custom rules in TypeScript or JavaScript. See [CUSTOM_RULES.md](CUSTOM_RULES.md) for the full guide.\n\nScaffold a new rule:\n\n```bash\n# Local rule (project-specific)\nguardrail rule add no-console\n\n# Global rule (applies to all projects)\nguardrail rule add no-console --scope global\n```\n\nList all available rules (builtin + custom):\n\n```bash\nguardrail rule list\n```\n\nThis creates a `.ts` file in `.guardrail/rules/` (local) or `~/.guardrail/rules/` (global) with the boilerplate filled in.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}