{"_id":"@asyncinnovator/hallint-cli","_rev":"9-227cb4c75850517eb377ce9269300da4","name":"@asyncinnovator/hallint-cli","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@asyncinnovator/hallint-cli","version":"0.1.0","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.0","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"212346f1299dc205f427e250051f3c99a2991038","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.0.tgz","fileCount":5,"integrity":"sha512-vn1txMQxcYhQVhuooX6BbqTPnF5zE7jpL2VkdrbFyR5esS0FO4IouemguttyloQbhubnoPXUkoB0MpWY1RtxFg==","signatures":[{"sig":"MEUCIQCBgXv+OxYgp/L7H/KyRjC6bzkZs5ruNtgTbyDSZjSo/QIgeAJLc+jDOStTIBcQvWTIq0cOGdp286GBeUDCFNYCk6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8368},"main":"./dist/index.js","gitHead":"01103ebcf1045f02591b38c67d8ded2c36116e16","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.0_1783412850825_0.8339946024538056","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@asyncinnovator/hallint-cli","version":"0.1.1","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.1","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"bb2fd14034dff63541a7f14e688d5b2aa58b305e","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.1.tgz","fileCount":2,"integrity":"sha512-NKvk28j4SFIPSJarl9QF37z2a6cZIvwQZFqBMiiZEUJHuc+P6PpWoFp6AJadOODJQuhicEmH/QNEcF1t6FAQMw==","signatures":[{"sig":"MEYCIQCU4xWXzkNgNckjk7dk84HAUiDJrde2uelUwwjDiwQ47AIhAJ3WUFaupcjTeziHMrwM4U1fjxvH78TxttM5WtCBgVfL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4155},"main":"./dist/index.js","gitHead":"63c4c26e892635fbf367fece2592fc39a64f3ee0","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.1_1783491804508_0.31608759217889926","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@asyncinnovator/hallint-cli","version":"0.1.2","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.2","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"93f286df0d8950658be7852615d20fa12aedf067","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.2.tgz","fileCount":2,"integrity":"sha512-gDFKOLLqDPZ/hxL8wDuSM/IMtwCdQRKplFSiqDZM7B9ylBKgPXMuq2eMTF9ofdFLvlkY0jk/Ipb+AnkZ4Uu8SA==","signatures":[{"sig":"MEYCIQDRII2/hlEZb03kBtL0LP8leWfIjnbFPRUx/cEwflpK+QIhAOZrDufOUXPuq/Idl7kJerpOyv6raQnHHQndw5/iNPT+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4143},"main":"./dist/index.js","gitHead":"a2ff45b65c6ac9b6f0c56d05d21ef24ae8520da5","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.2_1783492144904_0.1740451586890439","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@asyncinnovator/hallint-cli","version":"0.1.3","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.3","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"219f69970c3767612d2dc7ac66c68df750102618","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.3.tgz","fileCount":3,"integrity":"sha512-7S5ebYI1x3X+raBgTmbCMT6S0h1nHaNe/F7d7a/j9C82TXMitle4bciHd9lXT92lq3OCahMwXdbfnSw5zCQ7Mg==","signatures":[{"sig":"MEQCIBynPm+5FpPWmtGrr1tdRMPsIlpDDmLf+f8p1EqJQNK2AiAsps8q/p7iAyF/i3I1YKV7xh30yn/fwWwJo08MK+3LRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7377},"main":"./dist/index.js","gitHead":"f5b6f4ad3cf9f3f6557439c6f676e300d58f48e0","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.3_1783580379805_0.1298090396706406","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@asyncinnovator/hallint-cli","version":"0.1.4","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.4","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"9bff95dee8f1f7374e3cb31e4f2659cc1b1acc2e","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.4.tgz","fileCount":3,"integrity":"sha512-SpEphJ09ELvNoNSZ6cYGZLLK/PvOd4uIToC6Rz70fje1SNgI2VaiUzhzbH1aYFtJJ8yWSjXZHsAkO1HibWNx7A==","signatures":[{"sig":"MEYCIQClUu3sud8eJyNSv17v4tO5w84rKkVVHQ7AUkcOSgmcGAIhAM7qTCv4KJAVejR/OgjxZk8QjagOxwZo0FhPpXCnqHvN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7587},"main":"./dist/index.js","gitHead":"95312f1361fe3203714ed59b6e4e9d62ec4154dc","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.4_1783667188305_0.23980155366082823","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@asyncinnovator/hallint-cli","version":"0.1.5","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.5","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"7b0c97e2f6ef828989cd069984ed33b6c5b187b6","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.5.tgz","fileCount":3,"integrity":"sha512-880PBB+o2zX4psH7esQT0zp4WRCvWRkIqbSJkIRiOzjnc3J+h/Z6sEaHWZ8iAka+oDq0XGmevZw+P4urO29CNw==","signatures":[{"sig":"MEUCIQDBA+5oBGBZ9BglPWF5iSEi8xodEQthYbuPa4jg7Dvs1AIgTjZmb7up2e4H+pQB7QYYR3ayRW21ihIP89Rpqt3eomA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7672},"main":"./dist/index.js","gitHead":"1b83c6bd1c2d875d114a65432d172809fc0179f3","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.5_1784020440933_0.6158465319640092","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@asyncinnovator/hallint-cli","version":"0.1.6","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.6","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"f1f44d499dac82482b4f6bbc54ffee7b058dfcce","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.6.tgz","fileCount":3,"integrity":"sha512-OseaL4YpfLrHlq7TPwc2HxD6OKg0wQy7gmwG6hF0pNBT3AGnEWKJHBo0eaQTWOaVFbG4J9h4WdTCY3GyGozUCQ==","signatures":[{"sig":"MEQCIDLhqKwHgoSaAKAvCjkSGpjhAYtk634x0umkpOccK5zXAiBp+oKBRQknVtvElmONKOplC+xEoq7C9qN8GFYy2cseyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7731},"main":"./dist/index.js","exports":{"./package.json":"./package.json"},"gitHead":"7cc23783e4b2fc968421a20b882c6cb81c36fcc1","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.6_1784021705654_0.4014709103909677","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@asyncinnovator/hallint-cli","version":"0.1.7","license":"MIT","_id":"@asyncinnovator/hallint-cli@0.1.7","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"bin":{"hallint":"dist/index.js"},"dist":{"shasum":"8c806da750bf4e4996ad03bec969dc6f81c40bf5","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.1.7.tgz","fileCount":3,"integrity":"sha512-9kH7MH60YTsLsk0zIVKEEnTSFhqzX+yAPgLux86xSMfcjwE+lDTnuUBnPqUlJ5lbAup2kFqEmB3bT5rlV1fqgg==","signatures":[{"sig":"MEQCIE4gT3Eh66K8wtiRf8A1OytCaw9Z6IiQoVCwqTsreu09AiAe84W0vSPWPt+hakxay/Rbcff7/Buwb9GRJzOS7YYfEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8038},"main":"./dist/index.js","exports":{"./package.json":"./package.json"},"gitHead":"0ac59bea7cc22220ab49681dac8ccc926bb30a6c","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"_npmVersion":"11.11.0","description":"CLI for hallint","directories":{},"_nodeVersion":"22.16.0","dependencies":{"@asyncinnovator/hallint":"*"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hallint-cli_0.1.7_1784028393085_0.7940070061824427","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@asyncinnovator/hallint-cli","version":"0.2.0","description":"CLI for hallint","bin":{"hallint":"dist/index.js"},"exports":{"./package.json":"./package.json"},"main":"./dist/index.js","scripts":{"build":"tsup src/index.ts --format cjs --clean"},"dependencies":{"@asyncinnovator/hallint":"*"},"license":"MIT","gitHead":"f7c9890a21c471f02fc25d1c82e892696475c7fe","_id":"@asyncinnovator/hallint-cli@0.2.0","_nodeVersion":"22.16.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-yLjz3ay8yxVTqiO1uGz+ptvRoFrzODI2qvepsuZFEpseI/f//W6XjSoiiPqR14NU1V1LXsYLX8KMV6fCyeeneg==","shasum":"7c13437ed442a6ab47cfff683932677fc91b33f2","tarball":"https://registry.npmjs.org/@asyncinnovator/hallint-cli/-/hallint-cli-0.2.0.tgz","fileCount":3,"unpackedSize":8847,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD3tbeAXz/QTFOaOV/g2jX/FtcOovhFAS2Uc6unszTITAIhAI5L7/kE1JBLfJRyf/v9k7jx13XaRWxdSYU5j/ZgHLV0"}]},"_npmUser":{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"},"directories":{},"maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hallint-cli_0.2.0_1784618562286_0.2778375780527287"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-07T08:27:30.660Z","modified":"2026-07-21T07:22:42.569Z","0.1.0":"2026-07-07T08:27:30.995Z","0.1.1":"2026-07-08T06:23:24.626Z","0.1.2":"2026-07-08T06:29:05.038Z","0.1.3":"2026-07-09T06:59:39.944Z","0.1.4":"2026-07-10T07:06:28.435Z","0.1.5":"2026-07-14T09:14:01.102Z","0.1.6":"2026-07-14T09:35:05.788Z","0.1.7":"2026-07-14T11:26:33.267Z","0.2.0":"2026-07-21T07:22:42.434Z"},"license":"MIT","description":"CLI for hallint","maintainers":[{"name":"asyncinnovator","email":"sheth.rishu50@gmail.com"}],"readme":"# @asyncinnovator/hallint-cli\r\n\r\n> CLI for hallint — detect security and quality issues in AI-generated code.\r\n\r\n[![npm](https://img.shields.io/npm/v/@asyncinnovator/hallint-cli?color=crimson)](https://www.npmjs.com/package/@asyncinnovator/hallint-cli)\r\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Asyncinnovator/hallint/blob/main/LICENSE)\r\n[![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)\r\n\r\n---\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install -g @asyncinnovator/hallint-cli\r\n```\r\n\r\nOr run without installing:\r\n\r\n```bash\r\nnpx @asyncinnovator/hallint-cli ./src\r\n```\r\n\r\n**Requirements:** Node.js >= 18\r\n\r\n---\r\n\r\n## Usage\r\n\r\n```bash\r\nnpx @asyncinnovator/hallint-cli [files] [options]\r\n```\r\n\r\n`files` accepts directories, file paths, and glob patterns:\r\n\r\n```bash\r\nnpx @asyncinnovator/hallint-cli ./src\r\nnpx @asyncinnovator/hallint-cli \"./src/**/*.ts\"\r\nnpx @asyncinnovator/hallint-cli ./src/api.ts ./src/auth.ts\r\n```\r\n\r\n---\r\n\r\n## Options\r\n\r\n| Flag | Description | Default |\r\n|---|---|---|\r\n| `--rules` | Rule set: `recommended` or `all` | `recommended` |\r\n| `--min-severity` | Minimum severity: `critical` `high` `medium` `low` `info` | `info` |\r\n| `--no-color` | Disable colored output | off |\r\n| `--help` | Show help | |\r\n| `--version` | Show version | |\r\n\r\n---\r\n\r\n## Examples\r\n\r\n```bash\r\n# Scan a directory\r\nnpx @asyncinnovator/hallint-cli ./src\r\n\r\n# Only critical and high findings\r\nnpx @asyncinnovator/hallint-cli ./src --min-severity high\r\n\r\n# Run all available rules\r\nnpx @asyncinnovator/hallint-cli ./src --rules all\r\n\r\n# Disable color (for CI logs)\r\nnpx @asyncinnovator/hallint-cli ./src --no-color\r\n\r\n# Glob pattern\r\nnpx @asyncinnovator/hallint-cli \"./src/**/*.ts\" --min-severity high\r\n```\r\n\r\n---\r\n\r\n## Output\r\n\r\n```\r\nhallint scanning ./src...\r\n\r\n/path/to/src/api/users.ts\r\n  users.ts:14  CRITICAL  [hardcoded-secret]\r\n  Hardcoded secret detected — API key, token, or password in source code\r\n  > const API_KEY = \"sk-abc123defgh456789xyz\"\r\n  fix: Move to environment variables: process.env.YOUR_SECRET_NAME\r\n\r\n  users.ts:31  HIGH  [missing-auth-check]\r\n  Route handler may be missing authentication middleware\r\n  > router.get(\"/users\", async (req, res) => {\r\n  fix: Add auth middleware: router.get('/route', authenticate, handler), or declare the path in publicRoutes config\r\n\r\n  users.ts:45  HIGH  [jwt-in-localstorage]\r\n  JWT or auth token stored in localStorage — vulnerable to XSS token theft\r\n  > localStorage.setItem('token', jwtToken)\r\n  fix: Use httpOnly cookies instead\r\n\r\n  users.ts:52  HIGH  [swallowed-error]\r\n  Empty or near-empty catch block — exception is silently discarded\r\n  > } catch (e) {\r\n  fix: Log the error or rethrow it: catch (e) { logger.error(e); throw e }\r\n\r\nSummary: 4 issue(s) in 1 file(s) — 18ms\r\n  2 critical\r\n  2 high\r\n```\r\n\r\n---\r\n\r\n## Inline Suppression\r\n\r\nSuppress specific findings without removing code:\r\n\r\n```ts\r\n// Suppress all rules on this line\r\nconst key = \"sk-abc123abc123abc123abc\"  // hallint-disable\r\n\r\n// Suppress a specific rule\r\nconst key = \"sk-abc123abc123abc123abc\"  // hallint-disable hardcoded-secret\r\n\r\n// Suppress next line\r\n// hallint-disable-next-line sql-injection\r\nconst q = db.query(\"SELECT * FROM users WHERE id = \" + id)\r\n\r\n// Suppress a block\r\n// hallint-disable-block\r\neval(userInput)\r\n// hallint-enable-block\r\n```\r\n\r\n---\r\n\r\n## Exit codes\r\n\r\n| Code | Meaning |\r\n|---|---|\r\n| `0` | No issues found |\r\n| `1` | One or more critical or high findings |\r\n| `2` | Unexpected error |\r\n\r\nExit code `1` on critical/high makes hallint suitable as a hard CI gate.\r\n\r\n---\r\n\r\n## CI — GitHub Actions\r\n\r\n```yaml\r\nname: hallint\r\n\r\non:\r\n  push:\r\n    branches: [main]\r\n  pull_request:\r\n    branches: [main]\r\n\r\njobs:\r\n  hallint:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - uses: actions/checkout@v4\r\n      - uses: actions/setup-node@v4\r\n        with:\r\n          node-version: 20\r\n      - run: npx @asyncinnovator/hallint-cli ./src --min-severity high\r\n```\r\n\r\n---\r\n\r\n## Links\r\n\r\n- [GitHub](https://github.com/Asyncinnovator/hallint)\r\n- [Library package — @asyncinnovator/hallint](https://www.npmjs.com/package/@asyncinnovator/hallint)\r\n- [MIT License](https://github.com/Asyncinnovator/hallint/blob/main/LICENSE)","readmeFilename":"README.md"}