{"_id":"@konvert7/klint","_rev":"40-3176301b2e1daa7d13e5f24f95181ff9","name":"@konvert7/klint","dist-tags":{"latest":"0.34.0"},"versions":{"0.1.0":{"name":"@konvert7/klint","version":"0.1.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.1.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"bdd4d75c9ae8503118d2bdd080794f119d45f2eb","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.1.0.tgz","fileCount":31,"integrity":"sha512-RkZULsNbOqHsWa00fhzeXb+cDmS+gvwLiP3L4gy7N+ugNjO4tc30z6RUOSoYaTklJBnYcP1DoNuDshkoZlGeDg==","signatures":[{"sig":"MEUCIQCcJrSG1dOE7u1v+BvSt2s5GCHaBhpLn/PYN1MnFfQLeQIgdjBxKY/ugyacsyspNRFQEaEwOsWwF+57YiGsNbTgyjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89054},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"3747166bd1ca1a7b215cd409d7d6f83ebe84a43c","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","klint":"bun cli.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"10.9.3","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.1.0_1779008124611_0.0333304273631434","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@konvert7/klint","version":"0.2.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.2.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"c4afa0f56080c9cbd895722b136cb4d8e0d0f57e","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.2.0.tgz","fileCount":31,"integrity":"sha512-0Z91xJs3ky7HC7+UZAZQrpj+9J0yrRM3kYDD4wHY+FtH2JNdhlpU+nQ9skh+fEwAgA0yBPnWYkMprBBZydyccw==","signatures":[{"sig":"MEUCIQDcHuKuEIMJE+28s1Q4uTVgyGaJu4EjxrUyrvb7PT7muQIgMgDYzmcb8RoBMwFs14UN3Swq9iWCHc7KWwADFgVisCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89164},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"4ff50eccbd3fcb8eaf61b9c1f5da0731d96bffdc","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","klint":"bun cli.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.2.0_1779010273667_0.8970498079828628","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@konvert7/klint","version":"0.3.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.3.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"4f3c18ed88e8514cb686fc38375c9416fb5e51c0","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.3.0.tgz","fileCount":31,"integrity":"sha512-u4hEjiHhSuTFLQD3ECkAVh93P4uFI8sDscLc6PrCMtq9w72xajbpsgYziuWkNOi6ey5FUihZQGyd2osbuDrcQQ==","signatures":[{"sig":"MEUCIEeSmKTE+GNGu5MnEUaIcAyoJfOAKdMkukgHHS1cAiLrAiEApOjHujnTH7Jr+Qj4yvOV6sHIYrjW+Oym27DTj5bohd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89502},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"a22e5352806a57d3917d02342a9846adede27732","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","klint":"bun cli.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.3.0_1779013799778_0.9083604005794388","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@konvert7/klint","version":"0.4.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.4.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"fe68e5e8b27f2832d787d5f0490102ea61c69393","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.4.0.tgz","fileCount":31,"integrity":"sha512-9W1Yp5/Ck/vyRSbVWxCexuvp7Q1xa8mos2sDLZsg9KgPg+IxgO0B8v76np2Vhe7sXAoPaK3Ym+2gHszdam6Xpw==","signatures":[{"sig":"MEQCIEPVhGudSvT+l6xGKlGWcdtxMFkXNDari8oTvLNjaeTxAiALRLNdCywCokam0y4G0GNjd+FTW5qTOVp6JiXyeM5zOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89542},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"dbb789ac7fe6cf7a12133d7bc1eb2f709920e5fa","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.4.0_1779118148856_0.27927494250337515","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@konvert7/klint","version":"0.5.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.5.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"b3501390503a245b2c4733178b4d59da4dcc4ddf","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.5.0.tgz","fileCount":31,"integrity":"sha512-KyswPdDB3pywjVV3T6LBqE+5Xx2GhjaOYkXh6VWd8PPtEnITk5FT//60IuzQ9/vPHYX7lX1JNSfgCKZDoII5ug==","signatures":[{"sig":"MEQCIGMEck4Q4cStb2gUBcIO+Z3C5kZEfb1o9fiM+CZ5OjHrAiBFd7mTRr9wt0E/5EUTTHBhdUPSnBwxhLurBLxMvgyeDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":98816},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"be48931ed38e7a17d5e7559d06e3dc46eb9cb080","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.5.0_1779218881252_0.10294544450695864","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@konvert7/klint","version":"0.6.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.6.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"6717ed6557d44a5adeb8ae06a4551bfcdd8904da","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.6.0.tgz","fileCount":32,"integrity":"sha512-f+aQAf6nuo5ns/xUSY1pqvyRpACZo9oTHHa7WcowFgwYpnwkx1IBHk55M2ILwCYELn2DaJZL9345O4BZojdHYA==","signatures":[{"sig":"MEUCIDkpRxsujxIeKlqHRDfF/yXCKsy2hZLtQEWywDA1T8vrAiEA5lG7gQnDZMi2AGdZwzvHvLqdZt1X2qmv8CbfTsoSgwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93433},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"029ca1da3b66fbe16170888e90ec055362f0caee","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips --silent","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","jscpd:report":"jscpd --noTips"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.6.0_1779220418117_0.433406351092817","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@konvert7/klint","version":"0.7.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.7.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"0e8c729f85db97ab624c21afffa9999e2428cf58","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.7.0.tgz","fileCount":32,"integrity":"sha512-xNH1fcMDcTe1JorofbEzkoAAKEefnb0l2S1HjGyCTuUusH92GBHGVAGGGK2JJxk2rwMoT44cARRHeBtJpGmtmw==","signatures":[{"sig":"MEUCIQCh9HCaYu9xmgtS7zhr23O2G31W2JtVj3VjOAAuxG3+gwIgOkCn/Dc4kYp1Zy9WT+6GlaGQ9q1lCOM/iBsrVKWnsP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93273},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"86b47e6a7d6f639073374dff8514f4d2a5e97b50","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.7.0_1779261389625_0.8623007941175647","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@konvert7/klint","version":"0.7.1","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.7.1","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"d54a24581f0802da83e51e716659810efcab003e","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.7.1.tgz","fileCount":32,"integrity":"sha512-gDdp5PP5ibkM/TNUo0j38b2vKctP18uRM49LItQNGbjMZ4xSUOjSNtuMyhypi7/DTRIJcSyeOjxLGZOmsRzf0A==","signatures":[{"sig":"MEQCIHNzxMzE0ngarJEzpsoYDFLFXJOn+xN+L/yXXqqyT9C8AiAcRPnpd5JkkL/WSsfz5vMijlEQlIkaatAxbA54bWbn1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93328},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"b55948ea4b2bf9b4c9c8d1a9ec59cd39ae5613b2","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.7.1_1779263744701_0.981884481601359","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@konvert7/klint","version":"0.8.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.8.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"8c0c2bc6fcc7f21f89ed53a0de1535b33b01115b","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.8.0.tgz","fileCount":32,"integrity":"sha512-DKeXefcE4Eg/y0xbkIZ2nCmGZrdH+ai8DbB+tOt6NZJmnfV+FhEWd3RWZxgDJkk/U68Uz9DtRayE2he4MZMiLQ==","signatures":[{"sig":"MEQCIAdX80uk73vY6ZVynNuz93ld1R0nJtBdjUbptJanQCy2AiA8l/KoxT8jjrG/axHYREvKGTOYb4PK12Y2eXWauT8hoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":97621},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"e2950739125665fedb6cb25f00cfd5db9d675023","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.8.0_1779344576650_0.8228814051546458","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@konvert7/klint","version":"0.9.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.9.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"c6b70a2b8463e116f65de2dd04c51744677882f5","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.9.0.tgz","fileCount":32,"integrity":"sha512-MW4Il2hPfxzequEPYKVtou+QhZyzlbTlQviDrpPEFA5GY1NJhCTkXvzYzIEcLAODGOmCx3ZwiEBqaIwJvgSihQ==","signatures":[{"sig":"MEUCIDKqNFgGTlPTSUIggsSF8zlwNlyp+kKD4nu9mtkgM46OAiEAmCOI50cpGugTqgQ1SbhAdE2CtuJRDAjpmogZ+cfRsxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99235},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"f4ba4e82e7b22c09abfae194761b7210fa5a542f","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.9.0_1779723900244_0.444830690586955","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@konvert7/klint","version":"0.10.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.10.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"013eb88a79abbb8c3571d82a762b165375f7f716","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.10.0.tgz","fileCount":33,"integrity":"sha512-tFBZxuWEpXQYDJvuil7B2QzgjRLKQV+8Q26qRLzpQkcEeJZOGVViiaVZBrLCsIzBgfEErSIOrueUHfB8AMLTMg==","signatures":[{"sig":"MEYCIQDD/jv9fkG7y5pZ9BbKskm/xtoK8JQk4jqwkHA9hT49eAIhAPYmxJcOutC6tVi402v6nWlP8pkwRiuqaBYjLXeAlxzO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104572},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"e3d86457773c6eaef310b78e042f14aeaa696a7f","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.10.0_1779734208300_0.7296601821033983","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@konvert7/klint","version":"0.11.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.11.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"a51614154916542375e6d6d6526aef1860107d21","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.11.0.tgz","fileCount":35,"integrity":"sha512-po0nvL7Op8xtTGNY+KlQ6Tui4g/Emz4HhuSiOrPKSsrFOKE8CL3A34q6RMZlVN7pmPw6TfdDLAjPPAGjXgx0PA==","signatures":[{"sig":"MEQCIG0a3a/Ayfmhd0efFAmUNuEahlciKaW0JOSyhCErmfcWAiB6GO6OSQNRqict8+SHl7R8evSkBIytKvMgrA7Oh10GzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":111169},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"fd2d1c33f6e9e474fc051e9487aaf867cdc92aa2","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.11.0_1779738629587_0.726448234864143","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@konvert7/klint","version":"0.12.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.12.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"eb202bb191f1c6bf0665053060acaeb2f22687cf","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.12.0.tgz","fileCount":35,"integrity":"sha512-UC/EvqZuHjAYGYvbBJCXYnzNoy9zyrH81DCuv3rG/CqiDFk8Edg3LRqWK+hYzzC6z+U23XDQobXyhwisG+z6TQ==","signatures":[{"sig":"MEYCIQCOAobfJgRK9BTOWjbSV+kvz5H7Sq0F7enPyEIzpymN7AIhAObEqDOgP5H15gmMgxfGPETJdAZG3pTEEzg6E2aYO4Q8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114681},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"4cc6db04d6a227d833eb637c48034162115e4260","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.12.0_1779739628519_0.7445361542896791","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@konvert7/klint","version":"0.12.1","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.12.1","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"a58736919969a0f13cf0f5fc6ad84446e0856551","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.12.1.tgz","fileCount":35,"integrity":"sha512-WCavSu3Uc1QFPAsdms4aECBqS+KCsufQPBFldliVt+ejrdQQkvN0impFQdwIn2UkJ6+RqB7mPGAKFSp3KZLOvQ==","signatures":[{"sig":"MEYCIQCuvvAMeRpAYbJEE1rzpMfN95EZRn/7QoWhY6Nmcw+P9AIhAInVTOEjekaemCmUS6wZL4wtJ4KOOSWC6XXvvsF1GN2h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115028},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"757f45be9fcfb9b04f2076df4f0e3a1e1aa43619","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.12.1_1779740191989_0.7309725100307771","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@konvert7/klint","version":"0.13.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.13.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"4f8e9de3af56f76710a33f6866fd04d20778df70","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.13.0.tgz","fileCount":35,"integrity":"sha512-H+kwmyOCzPyOWZi3yXLFJV7WjeYeXi/8TcN3kL6IHCo4rGeD3NIB0VBIt+lYqKgzboGomn+hhFLAmwB9+5u2uw==","signatures":[{"sig":"MEYCIQDpsCxvK14kYOicmMqFY3LhHaQcgbeTanJwtL1sUlhf7wIhAPd76q5IFLau+c5eqwbumTJDPW0wQi/02XKR0aLlif7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115493},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"091603d92cf194b181a8c962b829d0f16716a365","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.13.0_1779741062556_0.053000180013182296","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@konvert7/klint","version":"0.15.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.15.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"2adfb06cab6d824659d2163150c86c85f7a0bc75","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.15.0.tgz","fileCount":36,"integrity":"sha512-8lhxBI2U12xdp2l7a6ITrkBzcTswuwgf6WioCv74NSEJiNFEps1atO0sKRFAE+9YWVJdzIL+WVQZozQRvjTKTA==","signatures":[{"sig":"MEUCIQCdJ9Aph0pxwZAjR1flUW1ZkgtFd4VSKTHG26Wwy8eniQIgSsGgtL248UL3Des7GL9GJMbepgl2zFHQCSPaH7/B0pg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118565},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"7d4b3fc9a56b4a43f9ce6225bad94f28aa0c2c4d","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.15.0_1779771879637_0.7080499117766614","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"@konvert7/klint","version":"0.15.2","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.15.2","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"8e25b1eb14d6de535a848352850f608857b6b76d","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.15.2.tgz","fileCount":36,"integrity":"sha512-Y4GOxja93Wqb+AJgtRSvL4kPluhGHQE20S6//ihxjl2ZbdpfHsGOJt3jNg/pBuCM4HkaB9wASntSvuuSv9tbaQ==","signatures":[{"sig":"MEQCIED/XNQWvbtbJ1n9Q+/olyUfQ+bwv1t4rYBEh3fqRgyWAiBqfE8pOwYQawJ1wXtFfGXoc7B7D7daKF5UyBNaUZ82qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118643},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"97050d1c41c85cbd5e2b9ff0ef8b4845f8588d71","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.15.2_1779774585069_0.87184717622054","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@konvert7/klint","version":"0.16.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.16.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"3d1fc32d4a257244fa4cf906e0b283729ca98f3d","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.16.0.tgz","fileCount":36,"integrity":"sha512-0LiKrXRHdjesXusYPjcXEng6SFk+7aw2ux1NZsIPO2af7MMKjQymvnJsDkjW98VpD63Ecsso7PcNZpQmp4upDw==","signatures":[{"sig":"MEQCIFuqSiCtZzjS7EgI8GTALKJD+qRhkHhKD1fKMol9irwVAiAJ/3PqvVtCwQbqwy0VZWxCTiUXXhyMBbqAqG7C2P4b7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118831},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"763a4b818c5ab6762d848738110560d67492a161","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.16.0_1779775214978_0.9513678510988399","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@konvert7/klint","version":"0.17.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.17.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"d94ff88eeeaae3110da1141fb383a9ab8847779c","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.17.0.tgz","fileCount":36,"integrity":"sha512-FF9JmpdPVaX5RSv9PEvgvdTdRE/hT/+Mcd0YzSxTNp0/KDPVeV0kBD+i9MLyo1HfwJD1TBH0N9IdAVvpjW3N7Q==","signatures":[{"sig":"MEUCIFpNoru+9+1HNuQZgp1IwLi1mXKf/C6lp7snSb1Ivj8nAiEAzBYGaNwaVkqeMFLU70IqO+xR3dXfmG7PHxD8uu/jtaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122735},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"0ca5d02edb0c0bb3e3d24d795213941e2c0ae187","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.17.0_1779778370942_0.9336406620413595","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@konvert7/klint","version":"0.18.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.18.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"0231fcc03e65e996a27d70cfb3c4fff5e6017ad9","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.18.0.tgz","fileCount":36,"integrity":"sha512-VqZENc8nOv9AX0KEyulBG2FijsIec2DNX0WA92WR0qtc19JiFiWTAQW5SMGShoQK2gVIuRk/2YuIOjjJpz0Nig==","signatures":[{"sig":"MEQCIBg5xpVXFsEyTMyhIewyh9iMznZY+wAZcWEoPfenAJnoAiApMeRP9ozYKTegAPjv7UNMNTst/TON4pC0LOCgkS2z9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122899},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"d4715d80b87d4a371227aea2f73c1355dfdb58cb","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.18.0_1779780379539_0.5410104939238327","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@konvert7/klint","version":"0.19.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.19.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"2fa0e8c400440d1203ebdf22b99638beb82580e7","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.19.0.tgz","fileCount":36,"integrity":"sha512-GL3MPvz8nIfmKgzXoQNeevfiz9py9g3BZSAmDF2jf0iWGthkD9CITE1cF3WUuBKvaj3fPGKtD3dCRP3uhhB6rQ==","signatures":[{"sig":"MEYCIQDV+F01MatQQWOEsDjdX7tZ/osWDUX7yz+zSYnoE24tcgIhAMMCviTCb85p/HwTFRGuNwo+/2+jHUyts1j+Yg2/WJRa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":128146},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"59ca18e69bd9c7e9065f343e2e14076d32b1ead8","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.19.0_1779782016027_0.7921807593253432","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@konvert7/klint","version":"0.19.1","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.19.1","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"25f21508342a3a2133ebedf2cae238fa90decb34","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.19.1.tgz","fileCount":36,"integrity":"sha512-+TKFt1lAfj2aIXIuZGgPAJZJRnWgX81xatB3DZIlnEkTWFoOj5FjJRcK2CzHVZ+zscc1zQ7XjvqrjnZkUZDnbw==","signatures":[{"sig":"MEUCIBwqvoBKfpROPhPqLTIpuJZ2WtVei5AaXeGCuR5/SObSAiEA8peogy0/sfRT0Q6f3eevIE+7/v4GPpuqAdymq5BzIEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":129825},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"2b8ac0dd4f281362f5845e1b6e248aa6efe3378d","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"*","@konvert7/klint-win32-x64":"*","@konvert7/klint-darwin-x64":"*","@konvert7/klint-darwin-arm64":"*"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.19.1_1779783731228_0.4252261403104809","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"@konvert7/klint","version":"0.19.2","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.19.2","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"c55ff97a90f0a10d5e25f1dfc4eb7439eb687ba2","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.19.2.tgz","fileCount":36,"integrity":"sha512-57SdkCVtzq4HZfc3onanAeGgokotA1AwFiVXLG3rEnOKb96ye/DRVRIbmmciwc2lS5UvyjEutax/keXxdVuEPg==","signatures":[{"sig":"MEQCICj7kzOpbD3TXCyLpPl48uIO2r7eqbLUnyDTdHisHyNdAiBa1Hn9h/0HRPu2RoNm/djysNxlcr7PYcKvaBq+g/LTag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131157},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"aaf6338de9ea3d4af6eda3b5826f0357dd265029","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.19.2","@konvert7/klint-win32-x64":"0.19.2","@konvert7/klint-darwin-x64":"0.19.2","@konvert7/klint-darwin-arm64":"0.19.2"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.19.2_1779785068660_0.7057085794803619","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@konvert7/klint","version":"0.20.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.20.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"fc28d20b4e03ee8fcfd984391775ba9959a38d69","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.20.0.tgz","fileCount":37,"integrity":"sha512-ASRtYum5DLl6dssGs1Eyrx8nhhTXKVhXhaIr7zFRjJPN1dIDhIbNZh681ivOa4xLpBOSrP6DXk9ZInZviUAW4g==","signatures":[{"sig":"MEUCIQCnq3E0fc1vHAH1vKyQMfBoLbxYGXTH2hn5GoBO96RWJAIgGpH8sURC/LF6MnBhT5SHlzC0CUvAGVhNzqrsqrTZfBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":131888},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"d104845145d5170a4fdaa72a92123e26e48aadc0","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.20.0","@konvert7/klint-win32-x64":"0.20.0","@konvert7/klint-darwin-x64":"0.20.0","@konvert7/klint-darwin-arm64":"0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.20.0_1779788755983_0.052825276055951775","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@konvert7/klint","version":"0.21.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.21.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"d1123197aa26340e1414804079a23ceb177e4c46","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.21.0.tgz","fileCount":37,"integrity":"sha512-E7/QPJ6k+uE27OdwxxEk/a5ZV6tauoDD5K7nR7AmXU2niypWR2UvqcGE2E8p4QSifqI4dxnedVNWsU4OtUg5ew==","signatures":[{"sig":"MEUCIAmkscwk5Qww+IAj3mswRw5GAOR+jOUuCiysw5xpD7lZAiEAk+GSQoZDZBWvWVNW2UBUAVSALGLWkUoP0ETl1KluCA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135565},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"98b85f6cf7f2995f8015df64f28975d394067eab","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.21.0","@konvert7/klint-win32-x64":"0.21.0","@konvert7/klint-darwin-x64":"0.21.0","@konvert7/klint-darwin-arm64":"0.21.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.21.0_1779803745778_0.573543818266397","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@konvert7/klint","version":"0.22.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.22.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"9f2f3ed3e323dc0b3cfff0126a35ae74ec9fe409","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.22.0.tgz","fileCount":38,"integrity":"sha512-33RzeR1aMFnHXYvzn8hSuSNxGxrYEjOLYahzm4cHQ4L4VyNLhM8YEU/8Dswu8HDI4nRE0k5AwiDkFSvSByXEUg==","signatures":[{"sig":"MEUCIDxXC1uURdRcirswQxoWRXgEymkMsqCQr9wpRcjUEDYvAiEAiEeFnm27fMJDXRmVtDgNA6QPP6cAjb08euTRL4c5glI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":137609},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"1a7fbdf8d05e9e58f82be23ef0a09d9d7002e4cb","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.22.0","@konvert7/klint-win32-x64":"0.22.0","@konvert7/klint-darwin-x64":"0.22.0","@konvert7/klint-darwin-arm64":"0.22.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.22.0_1779857185320_0.8426668150766228","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@konvert7/klint","version":"0.23.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.23.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"03a5ce7f7c83e0da479a7245fc3cf856b2b613f2","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.23.0.tgz","fileCount":38,"integrity":"sha512-MsYNHWL1T2IO4CjoJ55W3Hkl6ZbIUWduOAc6gQAz7FTdyECwm7bY9NjDOs17Rna/E69uiFUTrO6rTWW4ol/X5g==","signatures":[{"sig":"MEYCIQCr9QxpZbwtqSRc8sne3s8BMNHyZ+IpNd/NrMW/pJUKtAIhAJRxsU5z8mQyt7i0q2K4g1tQvpnLCVCv79UoNROkdq+P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139637},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"51a1d15c082cecfa274bb6b37e10cb24a69cc18c","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.23.0","@konvert7/klint-win32-x64":"0.23.0","@konvert7/klint-darwin-x64":"0.23.0","@konvert7/klint-darwin-arm64":"0.23.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.23.0_1779862038707_0.6927828468178947","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@konvert7/klint","version":"0.24.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.24.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"17d814f8a681e98e6eab1a43f46e25272930602c","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.24.0.tgz","fileCount":39,"integrity":"sha512-qX/UDIbQsE3bohStgGqh+nEEMSbSKQgllbVQdOZ4XA7JLWFvuSwUBJwK1djx4PigwxDpWFTbJPgcJoTF+7x8uw==","signatures":[{"sig":"MEUCIQCD2xejxCo9Cd0nneZeJjT5LneBhy1ZJlT/Et5aHXDdmgIgFGH/+u2BG4AtebuFmDmjpzBt9CTX1foYic6LsxdEtcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141618},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"6b066ece2b711f6b9c80b502d534acdab284ec66","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.24.0","@konvert7/klint-win32-x64":"0.24.0","@konvert7/klint-darwin-x64":"0.24.0","@konvert7/klint-darwin-arm64":"0.24.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.24.0_1779866914131_0.8953009866898638","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"@konvert7/klint","version":"0.24.1","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.24.1","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"90b73cc934d92e02b21a3200de3712fcd154a134","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.24.1.tgz","fileCount":39,"integrity":"sha512-UsRdQThYV/08T+ewukSJef5LCC8WGvJfr62KQaiqvQYsHc+RzfXTDIEGu6fSvKwItE6TTv0PsZ1ZUJ5ZLi+Lqg==","signatures":[{"sig":"MEUCIHJCCG82EsaRNAukYxTll0gYLhP6NYxHPJ8CY0aJujlcAiEA0xGYQ1S1GUD7QjFvg+jEEVf9YmORy3Yqei0WAsHVO+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145164},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"36403667e51dc6dc004be30498d32d6b5d0e9b0c","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.24.1","@konvert7/klint-win32-x64":"0.24.1","@konvert7/klint-darwin-x64":"0.24.1","@konvert7/klint-darwin-arm64":"0.24.1"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.24.1_1780861305570_0.31055646527279035","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@konvert7/klint","version":"0.25.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.25.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"0640d312cf9a498ec1a9127948e4c57f79be79d3","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.25.0.tgz","fileCount":45,"integrity":"sha512-D2RZ6Bbw7MG3FgjkbYOGp6j3QXzBufVplSLiEj3g+O0/tUWTwjAsoluOL2IULV74EtgOBXwzRAO9SljuuPMtxA==","signatures":[{"sig":"MEUCIQC9fi/Apoge48xpBclUpe+wE0EodbFKtvirdcAS5xPi6wIgd885pmUcSrM7hkfpI4aZVoXKgxxpg5Kba/D5grhBDSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153533},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"6b18423997de0c04792fa553940f4583ffebdf76","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.25.0","@konvert7/klint-win32-x64":"0.25.0","@konvert7/klint-darwin-x64":"0.25.0","@konvert7/klint-darwin-arm64":"0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.25.0_1781708671904_0.1391762111150181","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@konvert7/klint","version":"0.26.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.26.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"e0ddac101db49f7849635698919bd6329a0bb36f","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.26.0.tgz","fileCount":45,"integrity":"sha512-DQcVyYFK0sNJgs4hEtcklUt/ezzmHNdkI50Lt0pETtNLRVaqJQOSf+7ZvUAg98WAlfJqWuQUxsknfBePCDJ0Fw==","signatures":[{"sig":"MEUCIQDCuK4DL91gLPQdUb6FlDMlenYo/Dku6Ok2JZgLftCu/gIgEI/CRaXR2NAY2xG7Us4xVKDXaMX7uPjGcpT6QMe/pZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":153533},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"469a213a50761fb611d2910f8fe0f0666eae029d","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.26.0","@konvert7/klint-win32-x64":"0.26.0","@konvert7/klint-darwin-x64":"0.26.0","@konvert7/klint-darwin-arm64":"0.26.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.26.0_1783105511822_0.6270713995625146","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@konvert7/klint","version":"0.27.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.27.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"1a832dfe805da537645fcb1e739b103bc8413521","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.27.0.tgz","fileCount":46,"integrity":"sha512-LOswYJVooHROsM+GQ8WijiTTkPZ3K21zpsoid0eJ93V/1OLvsTySsevKNuSkBasVTorDfa6Ga73Slr8GZd/+lQ==","signatures":[{"sig":"MEUCIAaZM7HXz2CG26wNBgZK+7knLhSyZlDidE6ktI03HJw2AiEA7IT+lSdZ7Er2YazuzWcMK4rQ/2pcJbODwXF+5FjYSpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163672},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"4de513b1e9563383b85d463b2aacc0ee04e749b0","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.27.0","@konvert7/klint-win32-x64":"0.27.0","@konvert7/klint-darwin-x64":"0.27.0","@konvert7/klint-darwin-arm64":"0.27.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.27.0_1784993729834_0.8209558759288922","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"@konvert7/klint","version":"0.28.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.28.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"df3f87625337add4b0a55fd83420b8052983cb80","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.28.0.tgz","fileCount":46,"integrity":"sha512-EvDwjpJwRwNEktvs+QnFTvO3sys8JEVt+AmkGGt7yuv5mAD4YpkMTMxNVYbrW8Sn4nqIrtytci7sCWObJj66BA==","signatures":[{"sig":"MEQCIFwsU2Tj/yI8S4Ia22je2+o9dABWy1dr3piJ0NDnbSkuAiBQabU8xARt3pXpKMGmvRaCneMMgHF1SMPvbsF96Zj/7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":173930},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"ee84e67c50cc4f405bc50e93577564be6f4ae034","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.28.0","@konvert7/klint-win32-x64":"0.28.0","@konvert7/klint-darwin-x64":"0.28.0","@konvert7/klint-darwin-arm64":"0.28.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.28.0_1785431071790_0.8680093698021407","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"@konvert7/klint","version":"0.29.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.29.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"98fb518b44400f885f94cc85f9de3c74ca92961b","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.29.0.tgz","fileCount":46,"integrity":"sha512-eE7UY1qoZNWzy7ffZz/kL+F47OH0Y7IRQTaQERgfR6aE2lgamzTf42S6dkQLqSpXqv2DH/sxZTWpYgsPkEbfbw==","signatures":[{"sig":"MEQCIEoARUabwMZjoVmlQYiSWDXMh3wWfxZw5O26R8zwVqNeAiB/O2QxRIqpITyZehRWuy0ra7O6aU3STxfSx0044od9cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":179921},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"6b2b0bb80903d93aca559f9e29ed1c9a33d3eaac","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.29.0","@konvert7/klint-win32-x64":"0.29.0","@konvert7/klint-darwin-x64":"0.29.0","@konvert7/klint-darwin-arm64":"0.29.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.29.0_1785434471687_0.041633523231285885","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"@konvert7/klint","version":"0.30.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.30.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"6ab1bbba04b13fb8f716671c0f12fb3f4a1f941e","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.30.0.tgz","fileCount":47,"integrity":"sha512-SBGBMK1zn7Y2N3czT+cGP8755byBqiBdZy7SaoSxYSu9jqW4GO6koyjgrHyZtgXoRDZSXc/7xw/iktkhh+Xgvg==","signatures":[{"sig":"MEUCIFUe0Z9YXzysi30rzwh5kHzUFlQC73VPpU0SBHX4KHQUAiEAvTR/fCZlH53aO1SEMGTK3DjYp42uLe1/ceZSzCwLlak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":185041},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"06d09c7c7313bb1fa6a7ee46b54c3878cd942c69","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.30.0","@konvert7/klint-win32-x64":"0.30.0","@konvert7/klint-darwin-x64":"0.30.0","@konvert7/klint-darwin-arm64":"0.30.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.30.0_1785437641875_0.8012220865667439","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"@konvert7/klint","version":"0.31.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.31.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"e1acfae4bda2a97379b45c11d355f7fef5601cb8","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.31.0.tgz","fileCount":49,"integrity":"sha512-9PH2f0zPq6r2+DgTUSdnfTyD+rnt/qIQr5BZo2wa8ZzknD5PCu1LAVdVR68oSQLNZFuLax2eM99a7sG8Wicwqw==","signatures":[{"sig":"MEUCIQD5Lannaq4P5cw3AKWa4apPJ+y9daVtMu81lg/vqDNknAIgVq+kHmBaHiZeaKu9kIwvnyRtinyBiqeLj0vnLSskJLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286247},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"a15005601e17ccce2290b070a23b29db97116beb","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.31.0","@konvert7/klint-win32-x64":"0.31.0","@konvert7/klint-darwin-x64":"0.31.0","@konvert7/klint-darwin-arm64":"0.31.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.31.0_1785440642137_0.9020678541866032","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"@konvert7/klint","version":"0.32.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.32.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"2ff86392efc5091378cb885bc3ad601462b38387","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.32.0.tgz","fileCount":49,"integrity":"sha512-Qqm9x+MXQN0WhqDU+REzgAJ7iaSjgktDKZE0jl72PxBQcBc4qMVkgjtoiHcW39MhPlx4wGJcuh7raK1+XZVYKw==","signatures":[{"sig":"MEQCIH05ohfz97ccKJPsGnxmeJQ3em3pLWEnDBYmBPyuEZBnAiABQ2GGlZlUwB7vMJzTt0P+QKNGDqxYCqIFgVrMtApSPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":288401},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"4b3e8aa2e4e2aa02614a8eb1d79d104b18c04992","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.32.0","@konvert7/klint-win32-x64":"0.32.0","@konvert7/klint-darwin-x64":"0.32.0","@konvert7/klint-darwin-arm64":"0.32.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.32.0_1785487854866_0.6435565865271744","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"@konvert7/klint","version":"0.33.0","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.33.0","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"a75442c9eff2bba7b3247b0fe30a8c636eab8623","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.33.0.tgz","fileCount":50,"integrity":"sha512-YKAfGDD84BBFnszMzk2EQagc05k7FjCVAsccT2Mulb0mXAjE0mLsgrzIn2alTo6GxVIWUSRgGkzzK8giBfNJaw==","signatures":[{"sig":"MEUCIH6iHtq1fZLPHia9xq20AkHmdTPiGg7u0xTWPW9UHchOAiEAy7xe4597MuIwovBFEZ16kkA8K9zU590nuXfhBi+4/do=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":290150},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"baca4a0b5271eb1011a77be918b2ee8392d573d7","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","nuget:smoke":"bun tests/smoke-nuget-tool.ts","nuget:stage":"bun tests/stage-nuget-binary.ts","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","nuget:release:dry-run":"bun tools/prepare-nuget-release.ts --version 0.0.0-dry-run","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.33.0","@konvert7/klint-win32-x64":"0.33.0","@konvert7/klint-darwin-x64":"0.33.0","@konvert7/klint-darwin-arm64":"0.33.0"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.33.0_1785491918441_0.39539001551300124","host":"s3://npm-registry-packages-npm-production"}},"0.33.1":{"name":"@konvert7/klint","version":"0.33.1","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"author":{"name":"Konvert7"},"license":"MIT","_id":"@konvert7/klint@0.33.1","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"homepage":"https://github.com/konvert7/klint#readme","bugs":{"url":"https://github.com/konvert7/klint/issues"},"bin":{"klint":"cli.ts"},"dist":{"shasum":"445135d259c53c80679dd3218d3733b02311b6f4","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.33.1.tgz","fileCount":51,"integrity":"sha512-5UX6RUeMLcHeFM2CCykPdiu6uLo68kRJYGs6SAMijTV2Hd8fI228dRCRd8YFUHFQXhEhkFDy5vmtHSYA6Xo5fA==","signatures":[{"sig":"MEUCIF9adQz2WrfhkCckAKUwROzv0zoByGz2WO7JURLXAza2AiEA0/xckkbBZA9LlKe8hWScg17r4yOVg7aC+aV1+ZKUePM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.33.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":301893},"type":"module","engines":{"bun":">=1.3.0"},"gitHead":"c3df690416ed4a453a65d85211d125913979ae0e","scripts":{"knip":"knip-bun","test":"bun test","check":"biome check","jscpd":"jscpd --noTips","klint":"bun cli.ts --engine auto","schema":"bun tools/generate-schema.ts","prepare":"bun .husky/install.mjs","pack:check":"bun tests/pack-check.ts","type-check":"tsc --noEmit","check-write":"biome check --write","lint-staged":"lint-staged","nuget:smoke":"bun tests/smoke-nuget-tool.ts","nuget:stage":"bun tests/stage-nuget-binary.ts","native:smoke":"bun tests/smoke-native-binary.ts","native:stage":"bun tests/stage-native-binary.ts","python:smoke":"bun tests/smoke-python-wheel.ts","python:stage":"bun tests/stage-python-wheel.ts","test:auto-engine":"bun cli.ts --engine auto","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","nuget:release:dry-run":"bun tools/prepare-nuget-release.ts --version 0.0.0-dry-run","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"repository":{"url":"git+https://github.com/konvert7/klint.git","type":"git"},"_npmVersion":"11.14.1","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","directories":{"test":"tests"},"lint-staged":{"*.ts":["bun run check"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","typescript":"^5.9.3","@clack/prompts":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.9.0","husky":"^9.1.7","jscpd":"4.2.3","@types/bun":"latest","@types/node":"latest","lint-staged":"^15.5.2","@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^20.5.3"},"optionalDependencies":{"@konvert7/klint-linux-x64":"0.33.1","@konvert7/klint-win32-x64":"0.33.1","@konvert7/klint-darwin-x64":"0.33.1","@konvert7/klint-darwin-arm64":"0.33.1"},"_npmOperationalInternal":{"tmp":"tmp/klint_0.33.1_1786619335105_0.92490320230377","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"@konvert7/klint","version":"0.34.0","description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","type":"module","bin":{"klint":"cli.ts"},"engines":{"bun":">=1.3.0"},"keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/konvert7/klint.git"},"scripts":{"type-check":"tsc --noEmit","test":"bun test","test:rust-engine":"bun test tests/rust-engine-cli.test.ts","test:auto-engine":"bun cli.ts --engine auto","pack:check":"bun tests/pack-check.ts","native:stage":"bun tests/stage-native-binary.ts","native:smoke":"bun tests/smoke-native-binary.ts","python:stage":"bun tests/stage-python-wheel.ts","python:smoke":"bun tests/smoke-python-wheel.ts","nuget:stage":"bun tests/stage-nuget-binary.ts","nuget:smoke":"bun tests/smoke-nuget-tool.ts","native:release:dry-run":"bun tools/prepare-native-release.ts --version 0.0.0-dry-run","nuget:release:dry-run":"bun tools/prepare-nuget-release.ts --version 0.0.0-dry-run","check":"biome check","check-write":"biome check --write","knip":"knip-bun","klint":"bun cli.ts --engine auto","jscpd":"jscpd --noTips","schema":"bun tools/generate-schema.ts","lint-staged":"lint-staged","prepare":"bun .husky/install.mjs"},"lint-staged":{"*.ts":["bun run check"]},"dependencies":{"@clack/prompts":"^1.3.0","typescript":"^5.9.3","yaml":"^2.9.0","zod":"^4.4.3"},"optionalDependencies":{"@konvert7/klint-darwin-arm64":"0.34.0","@konvert7/klint-darwin-x64":"0.34.0","@konvert7/klint-linux-x64":"0.34.0","@konvert7/klint-win32-x64":"0.34.0"},"devDependencies":{"@biomejs/biome":"2.4.7","@commitlint/cli":"^20.5.3","@commitlint/config-conventional":"^20.5.3","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.6","@types/bun":"latest","@types/node":"latest","husky":"^9.1.7","jscpd":"4.2.3","knip":"^6.9.0","lint-staged":"^15.5.2","semantic-release":"^25.0.3"},"directories":{"test":"tests"},"author":{"name":"Konvert7"},"bugs":{"url":"https://github.com/konvert7/klint/issues"},"homepage":"https://github.com/konvert7/klint#readme","gitHead":"cc21372665523fccc72fa069a752db3d52711482","_id":"@konvert7/klint@0.34.0","_nodeVersion":"24.18.0","_npmVersion":"11.14.1","dist":{"integrity":"sha512-Faef5gItUi2YKoB9RSzwz/lfIlnfYsCcp75XtAhCHz6kpETOLZDZh3rYtUqvjxuQrKhJ9jhkZfetJY7XxOfThg==","shasum":"454887d94547c85518e7783bb3d16332bfe14f33","tarball":"https://registry.npmjs.org/@konvert7/klint/-/klint-0.34.0.tgz","fileCount":51,"unpackedSize":302441,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@konvert7%2fklint@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCdRmoDM6aqaU/pTkiPX77QLy872MWWRIscvtUTacOupQIhAI3tifN6RtsqH3lyROpQ5cKDz3210OQuUtQKtazbGFHb"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dedcb0fd-dfed-4be8-9c48-6983a0533c36"}},"maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/klint_0.34.0_1786626520531_0.23465180939575236"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T08:55:24.515Z","modified":"2026-08-13T13:08:41.082Z","0.1.0":"2026-05-17T08:55:24.771Z","0.2.0":"2026-05-17T09:31:13.825Z","0.3.0":"2026-05-17T10:29:59.961Z","0.4.0":"2026-05-18T15:29:08.997Z","0.5.0":"2026-05-19T19:28:01.395Z","0.6.0":"2026-05-19T19:53:38.306Z","0.7.0":"2026-05-20T07:16:29.764Z","0.7.1":"2026-05-20T07:55:44.832Z","0.8.0":"2026-05-21T06:22:56.806Z","0.9.0":"2026-05-25T15:45:00.391Z","0.10.0":"2026-05-25T18:36:48.442Z","0.11.0":"2026-05-25T19:50:29.727Z","0.12.0":"2026-05-25T20:07:08.674Z","0.12.1":"2026-05-25T20:16:32.144Z","0.13.0":"2026-05-25T20:31:02.713Z","0.15.0":"2026-05-26T05:04:39.781Z","0.15.2":"2026-05-26T05:49:45.204Z","0.16.0":"2026-05-26T06:00:15.167Z","0.17.0":"2026-05-26T06:52:51.076Z","0.18.0":"2026-05-26T07:26:19.658Z","0.19.0":"2026-05-26T07:53:36.194Z","0.19.1":"2026-05-26T08:22:11.357Z","0.19.2":"2026-05-26T08:44:28.805Z","0.20.0":"2026-05-26T09:45:56.113Z","0.21.0":"2026-05-26T13:55:45.946Z","0.22.0":"2026-05-27T04:46:25.498Z","0.23.0":"2026-05-27T06:07:18.907Z","0.24.0":"2026-05-27T07:28:34.289Z","0.24.1":"2026-06-07T19:41:45.727Z","0.25.0":"2026-06-17T15:04:32.059Z","0.26.0":"2026-07-03T19:05:11.989Z","0.27.0":"2026-07-25T15:35:29.985Z","0.28.0":"2026-07-30T17:04:31.958Z","0.29.0":"2026-07-30T18:01:11.895Z","0.30.0":"2026-07-30T18:54:02.040Z","0.31.0":"2026-07-30T19:44:02.348Z","0.32.0":"2026-07-31T08:50:55.005Z","0.33.0":"2026-07-31T09:58:38.565Z","0.33.1":"2026-08-13T11:08:55.273Z","0.34.0":"2026-08-13T13:08:40.716Z"},"bugs":{"url":"https://github.com/konvert7/klint/issues"},"author":{"name":"Konvert7"},"license":"MIT","homepage":"https://github.com/konvert7/klint#readme","keywords":["architecture","linter","typescript","bun","agent","agentic","arch-as-code"],"repository":{"type":"git","url":"git+https://github.com/konvert7/klint.git"},"description":"Architecture-as-Code linter for TypeScript. Enforce layer boundaries, import rules, and singleton patterns in YAML.","maintainers":[{"name":"richardkovacs","email":"richardkovacs.it@gmail.com"}],"readme":"# klint\n\nArchitecture-as-Code linting for TypeScript, Python, and Swift projects.\n\nBiome, oxlint, Ruff, and SwiftLint are excellent at syntax, style, and fast local correctness. klint handles the rules that need project context: layer boundaries, singleton ownership, forbidden patterns, custom repository policies, and type-aware TypeScript checks that should block an AI agent or CI run before code lands.\n\nUse klint when \"please follow AGENTS.md\" is not strong enough. Put the rule in `klint.yaml`, run `klint`, and make the constraint executable.\n\n## Install\n\nFor macOS native CLI usage:\n\n```sh\nbrew tap konvert7/tap\nbrew install klint\n```\n\nFor TypeScript projects using Bun:\n\n```sh\nbun add -d @konvert7/klint\n```\n\nAdd a script:\n\n```json\n{\n  \"scripts\": {\n    \"klint\": \"klint\"\n  }\n}\n```\n\nThen create `klint.yaml` in your project root.\n\n## Quickstart\n\n```yaml\n# klint.yaml\ninclude: [\"src\", \"!**/node_modules/**\"]\n\nrules:\n  no-floating-promise: error\n  no-unguarded-json-parse: error\n  no-sync-in-async:\n    severity: error\n    include: [\"src/hooks/**\"]\n\narch:\n  layers:\n    app: [\"src/app/**\"]\n    data: [\"src/data/**\"]\n    ui: [\"src/components/**\"]\n\n  imports:\n    - from: ui\n      deny: data\n      message: \"UI components must go through app services, not data modules\"\n```\n\nRun it:\n\n```sh\nbun run klint\n```\n\nFor machines and hooks:\n\n```sh\nbun run klint -- --json\n```\n\n`--json` emits structured violations and exits `2` when errors are present.\n\n```json\n{\n  \"violations\": [\n    {\n      \"rule\": \"arch/imports\",\n      \"file\": \"src/components/Profile.tsx\",\n      \"line\": 3,\n      \"severity\": \"error\",\n      \"message\": \"UI components must go through app services, not data modules\",\n      \"fix\": null\n    }\n  ],\n  \"summary\": { \"errors\": 1, \"warnings\": 0 }\n}\n```\n\n## What Klint Catches\n\nklint is for rules that are too project-specific or context-heavy for a formatter.\n\n| Problem | Example |\n|---------|---------|\n| Layer boundaries | `src/components/**` must not import from `src/data/**` |\n| Singleton ownership | `process.env.API_KEY` may only appear in `src/lib/auth.ts` |\n| Forbidden patterns | `console.log(` is blocked inside hook libraries |\n| Raw JSX elements | `<button>` is blocked outside `src/components/ui/**` |\n| File length | No file in `src/**` may exceed 300 lines |\n| Type-aware mistakes | Promise-returning calls cannot be silently discarded |\n| Repository policy | Custom `klint.rules.ts` rules run with the same severity/config system |\n\nRules give agents room to move quickly because the unsafe moves are blocked structurally.\n\n## CLI\n\n```sh\nklint [--config <dir>] [--rules <file>] [--engine ts|rust|compare|auto] [--fix] [--json]\nklint install-skill [--agents <list>] [--symlink | --copy] [--force]\n```\n\n| Flag | Description |\n|------|-------------|\n| `--config <dir>` | Directory containing `klint.yaml` or `klint.config.json` (default: cwd) |\n| `--rules <file>` | Path to custom rules file (default: `<configDir>/klint.rules.ts` when present) |\n| `--engine <name>` | Engine mode: `ts` (default), `rust`, `compare`, or `auto` |\n| `--fix` | Apply auto-fixes for fixable violations in-place |\n| `--json` | Emit structured JSON to stdout for agents and CI |\n\n`klint install-skill` installs the bundled rule-authoring skill for agent environments:\n\n```sh\nklint install-skill\n```\n\nThe skill is embedded in the native engine, so this works from every distribution — the npm package, the PyPI wheel, the NuGet tool, and the standalone binary — not just Node projects.\n\nRun on a terminal without `--agents`, `--symlink`, or `--copy`, it asks which agents to install for and how to store the skill. That is true of every distribution: the npm CLI prompts through `@clack/prompts`, and the native engine — which the wheel, the NuGet tool, and the standalone binary all wrap — prompts through `inquire`. Passing any of those flags, or piping stdin (CI, scripts, hooks), skips the questions and uses the defaults.\n\n### Shared layout (default)\n\nBy default the skill lives in exactly one place and every other agent directory points at it:\n\n```\n.agents/skills/klint-rules/         real skill + .klint-skill.json receipt\n.claude/skills/klint-rules  ->      ../../.agents/skills/klint-rules\n.cursor/skills/klint-rules  ->      ../../.agents/skills/klint-rules\n```\n\n`.agents/skills` is where opencode, Codex, and GitHub Copilot already read from, so it doubles as the hub. One source of truth means one file to diff, one receipt, and one warning when it drifts. The links are relative and stay inside the repo — nothing points into `node_modules`, so reinstalling dependencies can never break them.\n\nPass `--copy` instead to give every agent directory its own independent copy and receipt.\n\n### Staleness and legacy links\n\nEach installed skill carries a `.klint-skill.json` receipt recording the klint version and the SHA-256 of the skill it came from. Every later run compares that hash against the skill the installed klint ships:\n\n```\n.agents/skills/klint-rules/SKILL.md:1  warn  klint/skill-stale\n  this klint-rules skill was installed from klint 0.32.0 and no longer matches klint 0.33.0 — reinstall it with: klint install-skill\n```\n\nIn the shared layout this fires once, not once per symlink. Hand-copied or edited skills have no receipt, so they are never flagged — and `install-skill` refuses to overwrite them unless you pass `--force`.\n\nEarlier versions symlinked into `node_modules/@konvert7/klint`, which breaks the moment dependencies are reinstalled. klint now reports those:\n\n```\n.claude/skills/klint-rules:1  warn  klint/skill-legacy-link\n  this skill is a symlink into node_modules (../../node_modules/@konvert7/klint/skill/klint-rules), which breaks as soon as dependencies are reinstalled — run: klint install-skill\n```\n\nRunning `klint install-skill` replaces those links with the shared layout, including links whose target is already gone. No `--force` needed — a symlink holds no content to lose.\n\n## Engines\n\nklint currently ships a TypeScript engine and an experimental Rust engine. The Rust path is built for portable architecture checks and syntax-local rules; type-aware checks stay in TypeScript for now.\n\nMaintainer migration notes live in [`docs/rust-engine.md`](docs/rust-engine.md).\n\n| Engine | What it does | When to use it |\n|--------|--------------|----------------|\n| `ts` | Runs the full TypeScript implementation. This is the default. | Maximum compatibility |\n| `rust` | Runs only rules supported by the Rust engine. Unsupported TS-only rules are rejected. | Strict Rust smoke tests and native-engine debugging |\n| `compare` | Runs TS and Rust on the same supported config and fails if JSON output differs. Requires `--json`. | Parity verification while porting rules |\n| `auto` | Runs Rust-supported rules in Rust, TS-only rules and unsupported plugin defaults in TypeScript, then merges output. | Recommended experimental migration path |\n\nExamples:\n\n```sh\nklint --engine auto\nklint --engine rust --json     # strict Rust-only run; rejects unsupported rules\nklint --engine compare --json  # parity check; rejects unsupported rules\n```\n\nRust currently supports:\n\n- `arch` rules: imports, forbidden patterns (literal + `re:` regex), singleton locations, `maxLines` file limits, comment budgets (`maxCommentDensity`, `maxCommentBlock`)\n- `no-unguarded-json-parse`\n- `no-sync-in-async`\n- `no-nested-template-literals`\n- `no-consecutive-array-push`\n- `no-string-match`\n- `sonar/no-single-char-class`\n- `sonar/prefer-at`\n- `sonar/prefer-nullish-coalescing-assign`\n- `sonar/prefer-string-replaceall`\n- `sonar/prefer-string-raw`\n- `sonar/prefer-string-raw-regexp`\n\nThese rules remain TypeScript-owned because they need TypeScript semantic information:\n\n- `no-floating-promise`\n- `no-misused-promises`\n- `no-date-equality`\n- `no-optional-chain-on-non-nullable`\n- `no-object-in-template`\n\n## Configuration\n\n`klint.yaml` lives at your project root alongside tools like `biome.json`, `tsconfig.json`, and `knip.json`.\n\n```yaml\n# yaml-language-server: $schema=./klint.schema.yaml\n\ninclude: [\"src\", \"!**/node_modules/**\"]\nplugins: [sonar]\n\nrules:\n  no-unguarded-json-parse: error\n  no-floating-promise: error\n  no-misused-promises: error\n  sonar/prefer-string-replaceall: warn\n  my-custom-rule:\n    severity: error\n    include: [\"src/server/**\"]\n\narch:\n  layers:\n    server: [\"src/server/**\"]\n    client: [\"src/client/**\"]\n\n  imports:\n    - from: client\n      deny: server\n      message: \"Client code must not import server-only modules\"\n```\n\n`include` selects source files to lint. Patterns support `**` globs and `!` negation.\n\n`plugins` enables bundled rule groups. Today, `sonar` provides focused code-quality rules.\n\n`rules` maps rule names to `\"error\"`, `\"warn\"`, `\"off\"`, or an options object with `severity` and/or `include`.\n\n`arch` declares architecture constraints without writing a custom rule.\n\n`klint.config.json` is still supported for backwards compatibility.\n\n### Editor support\n\nThe package ships `klint.schema.json` and `klint.schema.yaml`, so the recommended\nsetup points at the installed copy:\n\n```yaml\n$schema: ./node_modules/@konvert7/klint/klint.schema.json\n```\n\nThat file is installed alongside klint itself, so it cannot drift — upgrading klint\nupgrades the schema with it. Both the inline `$schema` key above and the\n`# yaml-language-server: $schema=…` modeline work; when both are present the modeline\nwins. `klint.config.json` files are handled by the editor's built-in JSON support.\n\n### Pinning the schema version\n\nTo pin a specific published schema instead, set `$schema` to a version-tagged URL:\n\n```yaml\n$schema: https://raw.githubusercontent.com/konvert7/klint/refs/tags/v0.29.0/klint.schema.json\n```\n\nWhen the tagged version differs from the installed klint, the run reports a\n`klint/schema-version` warning naming both versions and the URL to move to. It is a\nwarning, not an error — the exit code is unaffected. Local paths carry no version and\nare never checked, which is why the installed copy above never warns.\n\nThis check runs when klint runs. Editors validate the config's *shape* against the\nschema, but have no way to compare it against the installed klint, so the warning\nappears in klint's output rather than as an editor diagnostic.\n\n`klint --version` prints the installed version.\n\n## Architecture as Code\n\nThe `arch:` section turns project boundaries into executable policy.\n\n### Layers\n\nDefine named file groups once, then reference them from import rules:\n\n```yaml\narch:\n  layers:\n    core: [\"src/core/**\", \"src/lib/**\"]\n    features: [\"src/features/**\"]\n    adapters: [\"src/adapters/**\"]\n```\n\n### Import Boundaries\n\nUse `deny` to block one layer from importing another:\n\n```yaml\narch:\n  imports:\n    - from: features\n      deny: adapters\n      message: \"Features must use core ports, not adapter implementations\"\n      severity: error\n```\n\nUse `allow` for whitelist mode. Anything not listed is denied:\n\n```yaml\narch:\n  imports:\n    - from: [\"src/data/**\"]\n      allow: [\"src/data/**\", \"src/db/**\", \"src/types/**\"]\n      message: \"Data modules may only depend on data, db, and types\"\n```\n\nEvery rule reads the module specifier off the AST, so `import`, dynamic\n`import()`, and re-exports all count as dependencies — `export { x } from \"…\"`\nand `export * from \"…\"` cross a boundary exactly like an import does.\n\nAllow type-only imports when runtime imports are forbidden:\n\n```yaml\narch:\n  imports:\n    - from: core\n      deny: adapters\n      type-only: allow\n      message: \"Core may reference adapter types, but not adapter values\"\n```\n\nThis covers `import type`, `export type … from`, and — in Python — every import\ninside an `if TYPE_CHECKING:` block. The `else` and `elif` branches of such a\nguard stay runtime imports and are still reported.\n\nBlock npm packages and `node:` builtins with `deny-packages`. `deny` and `allow` work on layers of\nproject files, so they can never reach a specifier that doesn't resolve to one — that is what\n`deny-packages` is for:\n\n```yaml\narch:\n  imports:\n    - from: [\"src/dao/**\"]\n      deny-packages: [\"next/headers\", \"node:fs\"]\n      message: \"Data access must not read request state or touch the filesystem\"\n```\n\nMatching is per segment, so `next` also covers `next/headers` while leaving `nextra` alone,\nand `next/headers` does not match `next/navigation`. Python splits on dots instead, so the same\nrule blocks pip packages and stdlib modules — `os` covers `os.path` and leaves `oscrypto` alone:\n\n```yaml\narch:\n  imports:\n    - from: [\"src/app/jobs/**\"]\n      deny-packages: [\"requests\", \"os\"]\n      message: \"Jobs must go through the http client and config\"\n```\n\nSwift splits on dots as well and matches at module granularity, which makes system frameworks —\nexactly the imports that never resolve to a project file — the natural target:\n\n```yaml\narch:\n  imports:\n    - from: [\"Sources/App/Core/**\"]\n      deny-packages: [\"UIKit\", \"Foundation\"]\n      message: \"Core must stay free of UI and platform frameworks\"\n```\n\nThe specifier comes off the AST rather than a\ntext scan, so static imports and dynamic `import()` are both caught while a mention inside a comment\nor string is not. `type-only: allow` exempts `import type` here too. `deny-packages` composes with\n`deny` in the same rule — one covers packages, the other project paths.\n\n### Forbidden Patterns\n\nBlock literal string patterns inside a scoped layer:\n\n```yaml\narch:\n  forbidden:\n    - pattern: \"console.log(\"\n      in: [\"src/hooks/**\"]\n      message: \"Hook output must go through the structured output API\"\n\n    - pattern: \"process.exit(\"\n      in: [\"src/lib/**\"]\n      message: \"Libraries should return or throw, not terminate the process\"\n```\n\nMatch a **regular expression** instead of a literal by prefixing the pattern with `re:` — useful for value-shaped policies such as off-system utility classes. Regexes use the common JS/RE2 subset (no lookaround or backreferences) so the TS and Rust engines agree:\n\n```yaml\narch:\n  forbidden:\n    - pattern: 're:\\b(?:p|gap)-\\[' # reject Tailwind arbitrary values like p-[18px]\n      in: [\"src/**/*.tsx\"]\n      message: \"Use the spacing scale, not arbitrary bracket values\"\n```\n\nA literal pattern that itself begins with `re:` cannot be expressed — such a value is always read as a regex.\n\nBlock raw JSX/HTML elements with `jsx-element` to push consumers onto design-system primitives. It is AST-matched on intrinsic (lowercase) tag names, so it is robust to whitespace, attributes, and lookalikes like `<buttonGroup>`:\n\n```yaml\narch:\n  forbidden:\n    - jsx-element: [\"button\", \"input\", \"label\"]\n      in: [\"src/app/**/*.tsx\", \"src/components/**/*.tsx\", \"!src/components/ui/**\"]\n      message: \"Use the design-system primitives in @/components/ui/* instead of raw HTML elements\"\n```\n\n`jsx-element` matches intrinsic HTML elements only — not custom components like `<Button>`. Use `arch.imports` to restrict those.\n\n### Singleton Locations\n\nEnforce that a pattern appears only in one designated file:\n\n```yaml\narch:\n  singleton:\n    - pattern: \"process.env.API_KEY\"\n      only: \"src/lib/auth.ts\"\n      in: [\"src/**\"]\n      message: \"Use the auth module\"\n```\n\nLike `forbidden`, a singleton `pattern` may use the `re:` regex prefix for value-shaped matches.\n\n`singleton` accepts `jsx-element` too — pin a raw element to the one primitive file that is allowed to render it:\n\n```yaml\narch:\n  singleton:\n    - jsx-element: \"button\"\n      only: \"src/components/ui/button.tsx\"\n      in: [\"src/**/*.tsx\"]\n      message: \"Raw <button> belongs only to the Button primitive\"\n```\n\n### Max File Length\n\nCap how long any file in a layer may grow. The limit counts every physical line — blanks and comments included — and a file over it is flagged at the first line past the limit:\n\n```yaml\narch:\n  maxLines:\n    - limit: 300\n      in: [\"src/**\"]\n      message: \"Split this module\"   # optional — defaults to a message naming the limit\n\n    - limit: 600                      # different ceilings per scope\n      in: [\"tests/**\"]\n```\n\n`maxLines` is enforced in both the TS and Rust engines and applies to every language klint scans, with no formatter dependency.\n\n### Comment Budgets\n\nPush intent into names and code rather than prose — and keep token cost down — by capping how much of a file may be comments. Two independent limits, both counting only ordinary `//`, `/* */`, and `#` comments; doc-comments (`/** */` JSDoc and Python docstrings) are exempt by default so documentation stays free.\n\n`maxCommentDensity` caps the share of a file's physical lines that are comment lines. The denominator is total physical lines (the same count `maxLines` uses), so blank lines dilute the ratio:\n\n```yaml\narch:\n  maxCommentDensity:\n    - limit: 5                # percent — no more than 5% of the file may be comments\n      in: [\"src/**\"]\n      message: \"Encode intent in names, not comments\"   # optional\n```\n\n`maxCommentBlock` caps how many consecutive comment lines may stack into one block, flagged at the first line past the limit. A tall explanation should become a well-named function instead:\n\n```yaml\narch:\n  maxCommentBlock:\n    - limit: 2                # at most 2 comment lines in a row\n      in: [\"src/**\"]\n```\n\nSet `countDocComments: true` on either rule to count doc-comments toward the limit as well. Both rules run in the TS and Rust engines; Python (`#`), Swift (`//`, `/* */`), and C# (`//`, `/* */`) files are enforced by the Rust engine.\n\nSome comments are machinery rather than prose — markers a build or codegen step reads, region pragmas — and counting them makes both limits measure the wrong thing. `ignore` exempts them, on either rule:\n\n```yaml\narch:\n  maxCommentDensity:\n    - limit: 5\n      in: [\"src/**\"]\n      ignore: [\"@codegen:\"]     # literal substring, or \"re:\" for a regex\n```\n\nAn ignored line still counts in the density denominator — it is a physical line like code — and still holds a comment block together, so a marker cannot be sprinkled between comment lines to split an over-tall block. Matching tests the physical source line and therefore only ever applies to lines already lexed as comments.\n\n### Language Support\n\nklint scans TypeScript/JavaScript, Python, Swift, Rust, and C#. Every architecture rule is enforced from the same `klint.yaml`, but what a rule can *see* depends on what the language actually has.\n\n| | TypeScript / JavaScript | Python | Swift | Rust | C# |\n|---|---|---|---|---|---|\n| **Engines** | `ts`, `rust` | `rust` | `rust` | `rust` | `rust` |\n| **Parser** | TypeScript compiler API (TS engine), tree-sitter (Rust engine) | tree-sitter | tree-sitter | tree-sitter | tree-sitter |\n| `arch.imports` — static | ✅ | ✅ | ✅ | ✅ `use` | ✅ `using` |\n| `arch.imports` — dynamic | ✅ `import()` | ✅ `importlib.import_module`, `__import__` | — | — | — |\n| `arch.imports` — re-exports | ✅ `export … from` | — | ✅ `@_exported import` | ✅ `pub use` | — |\n| `arch.imports` — multi-target | — | ✅ `import a, b` | — | ✅ `use a::{b, c}` | — |\n| `type-only: allow` | ✅ `import type` | ✅ `if TYPE_CHECKING:` | — | — | — |\n| Path aliases | ✅ `tsconfig.json` `paths` | — | — | — | — |\n| Module resolution | relative paths + alias chains | relative, absolute, and PEP 420 namespace packages | module name against project dirs and file stems | `crate::`/`self::`/`super::` against the directory tree | `using` namespace against project namespace declarations |\n| `deny-packages` | ✅ `/` segments | ✅ `.` segments | ✅ `.` segments, module granularity | ✅ `::` segments | ✅ `.` segments |\n| `arch.forbidden` / `singleton` — `pattern` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `arch.forbidden` / `singleton` — `jsx-element` | ✅ | — | — | — | — |\n| `arch.maxLines` | ✅ | ✅ | ✅ | ✅ | ✅ |\n| `arch.maxCommentDensity` / `maxCommentBlock` | ✅ `//`, `/* */`, `/** */` docs | ✅ `#` | ✅ `//`, `/* */`, `///` and `/** */` docs | ✅ `//`, `/* */`, `///` and `//!` docs | ✅ `//`, `/* */`, `///` and `/** */` docs |\n| Built-in rules and plugins | ✅ | ✗ | ✗ | ✗ | ✗ |\n| Custom rules (`klint.rules.ts`) | ✅ | ✗ | ✗ | ✗ | ✗ |\n| Type-aware rules | ✅ | ✗ | ✗ | ✗ | ✗ |\n\n**✅** supported · **—** the language has no equivalent construct · **✗** not supported yet\n\nA dash is not a gap. Swift has no dynamic import expression, no `import type`, and one module per declaration; Rust has no dynamic import and no type-only import; C# has no dynamic `using`, no type-only import, and one namespace per `using`. Those rows can never be filled. The `✗` rows are real limits: the rule set and custom rules are written against the TypeScript AST, and type-aware rules need a type checker that only the TS engine has.\n\nImports are read off the AST in every language, so a specifier written inside a comment or a string is never an import — including nested Swift block comments. Only file discovery differs: the TS engine walks `.ts`/`.tsx`/`.js`/`.jsx`/`.mts`/`.cts`, so Python, Swift, Rust, and C# files reach klint through the Rust engine, which `auto` mode selects for them automatically.\n\n### Python Architecture Checks\n\nThe Rust engine can apply architecture rules to Python projects:\n\n```yaml\ninclude: [\"src\"]\n\nrules: {}\n\narch:\n  layers:\n    jobs: [\"src/app/jobs/**\"]\n    lib: [\"src/app/lib/**\"]\n    config: [\"src/app/config.py\"]\n\n  imports:\n    - from: jobs\n      deny: lib\n      message: \"Jobs must use service APIs, not import lib directly\"\n\n  forbidden:\n    - pattern: \"print(\"\n      in: jobs\n      message: \"Use the logger\"\n\n  singleton:\n    - pattern: \"os.environ[\\\"API_KEY\\\"]\"\n      only: \"src/app/config.py\"\n      in: [\"src/**\"]\n      message: \"Use app config\"\n```\n\nPython import checks support relative imports such as\n`from ..lib.auth import load_key` and project-resolvable absolute imports such\nas `from app.lib.auth import load_key`. Every target of a multi-target statement\nis checked, so `import json, app.lib.auth` and `from . import helper, sibling`\nreport per target rather than only the first one. Dynamic imports count too:\n`importlib.import_module(\"app.lib.auth\")` and `__import__(\"app.lib.auth\")` are\nread off the AST, including a renamed `from importlib import import_module as\nload`. A same-named call that is not bound to `importlib` — `self.import_module(…)` —\nis not an import and is left alone. A package import resolves through\n`<module>.py`, `<module>/__init__.py`, or a `<module>/` directory holding\nscanned `.py` files, so PEP 420 namespace packages with no `__init__.py` are\ncovered. External packages that do not resolve to project files, such as\n`requests`, are ignored by `deny`/`allow` and are the target of `deny-packages`\ninstead. This is architecture enforcement, not full packaging or\nvirtual-environment analysis.\n\n### Swift Architecture Checks\n\nThe Rust engine can apply architecture rules to Swift projects:\n\n```yaml\ninclude: [\"Sources\"]\n\nrules: {}\n\narch:\n  layers:\n    ui: [\"Sources/App/UI/**\"]\n    core: [\"Sources/App/Core/**\"]\n    config: [\"Sources/App/Config/**\"]\n\n  imports:\n    - from: ui\n      deny: core\n      message: \"UI must use app services, not import Core directly\"\n\n  forbidden:\n    - pattern: \"URLSession.shared\"\n      in: ui\n      message: \"Use the networking client\"\n\n  singleton:\n    - pattern: \"ProcessInfo.processInfo.environment[\\\"API_KEY\\\"]\"\n      only: \"Sources/App/Config/AppConfig.swift\"\n      in: [\"Sources/**\"]\n      message: \"Use AppConfig\"\n```\n\nSwift import checks read declarations off the AST, covering `import Core`,\n`@_exported import Core`, `@testable import Core`, `import struct Models.User`,\nand submodule paths such as `import Core.Session`. Because the specifier comes\nfrom the parse tree, an `import` written inside a `//` or `/* */` comment is not\nan import — including nested block comments. Imported modules resolve against\ndiscovered project Swift directories and file stems. System or package modules\nthat are not present in the project, such as `Foundation`, are ignored. This is\narchitecture enforcement, not full SwiftPM or Xcode build graph analysis.\n\nComment budget rules apply to Swift too, where `///` counts as a doc-comment\nalongside `/** */`.\n\n### Rust Architecture Checks\n\nThe Rust engine can apply architecture rules to Rust crates:\n\n```yaml\ninclude: [\"crates/**/*.rs\", \"!target/**\"]\n\nrules: {}\n\narch:\n  layers:\n    cli: [\"crates/app/src/cli/**\"]\n    domain: [\"crates/app/src/domain/**\"]\n    storage: [\"crates/app/src/storage/**\"]\n\n  imports:\n    - from: domain\n      deny: storage\n      message: \"Domain logic must not reach into the storage layer\"\n    - from: domain\n      deny-packages: [\"reqwest\", \"tokio\"]\n      message: \"Keep I/O crates out of the domain layer\"\n\n  maxLines:\n    - limit: 500\n      in: [cli, domain, storage]\n```\n\nRust import checks read `use` declarations off the AST, and every target of a\nbraced list becomes its own record — `use a::{b::{c, d}, e as f}` is checked as\n`a::b::c`, `a::b::d`, and `a::e`. Aliases contribute their path, `*` wildcards\ncontribute the path they glob, and a bare `self` in a list names its own prefix.\n`pub use` re-exports are checked the same way as plain `use`.\n\nPaths starting with `crate::`, `self::`, or `super::` resolve against the\ndirectory tree by convention: klint walks down from the crate's `src` directory\n(the one holding `lib.rs` or `main.rs`), probing `foo.rs` then `foo/mod.rs` at\neach step and keeping the longest prefix that lands on a real file. Everything\nafter that prefix is treated as an item inside the module. External crates have\nno file to resolve to and are ignored by `deny`/`allow`, which is what\n`deny-packages` is for — it matches on `::` segments, so `tokio` denies\n`tokio::sync::Mutex` but never `tokio_util`. This is architecture enforcement,\nnot a Cargo build graph or `#[path]` attribute resolver.\n\nComment budget rules apply to Rust too, where both `///` and `//!` count as\ndoc-comments.\n\n### C# Architecture Checks\n\nThe Rust engine can apply architecture rules to C# projects:\n\n```yaml\ninclude: [\"src\"]\n\nrules: {}\n\narch:\n  layers:\n    web: [\"src/Web/**\"]\n    data: [\"src/Data/**\"]\n    config: [\"src/Config/**\"]\n\n  imports:\n    - from: web\n      deny: data\n      message: \"Web must use app services, not import the data layer directly\"\n    - from: web\n      deny-packages: [\"Newtonsoft\"]\n      message: \"Use System.Text.Json instead of Newtonsoft\"\n\n  forbidden:\n    - pattern: \"Console.WriteLine(\"\n      in: web\n      message: \"Use the logger\"\n```\n\nC# import checks read `using` declarations off the AST, covering `using System;`,\nqualified namespaces such as `using System.Collections.Generic;`, `using static\nSystem.Math;`, `global using System.Linq;`, and aliases such as `using Json =\nNewtonsoft.Json;` — an alias resolves to its target namespace, not the alias\nname. Because the specifier comes from the parse tree, a `using` written inside a\n`//` or `/* */` comment is not an import.\n\nC# namespaces are decoupled from disk layout, so klint indexes the `namespace`\ndeclarations across the project — block and file-scoped alike — and resolves a\n`using` against that index. Namespaces that no project file declares, such as\n`System`, are ignored by `deny`/`allow` and are the target of `deny-packages`\ninstead, which matches on `.` segments so `Newtonsoft` denies `Newtonsoft.Json`\nbut never `NewtonsoftShim`. This is architecture enforcement, not a full MSBuild\nor NuGet restore graph.\n\nComment budget rules apply to C# too, where `///` XML doc comments count as\ndoc-comments alongside `/** */`.\n\n## Built-in Rules\n\n| Rule | Type-aware | Description |\n|------|------------|-------------|\n| `no-unguarded-json-parse` | No | `JSON.parse()` called outside a try/catch |\n| `no-sync-in-async` | No | Sync filesystem calls inside async functions |\n| `no-floating-promise` | Yes | Promise-returning call whose result is discarded |\n| `no-misused-promises` | Yes | Async function passed where a sync callback is expected |\n| `no-async-predicate` | Yes | Async predicate passed to array filtering/search methods |\n| `no-date-equality` | Yes | Date values compared by object identity |\n| `no-optional-chain-on-non-nullable` | Yes | Optional chaining on values TypeScript knows are non-nullable |\n| `no-object-in-template` | Yes | Object values interpolated into template strings |\n| `no-nested-template-literals` | No | Template literals nested inside template literals |\n| `no-consecutive-array-push` | No | Multiple consecutive `push()` calls that should be grouped |\n| `no-string-match` | No | `String#match()` usage better expressed with clearer APIs |\n\n## Plugins\n\nEnable plugin rules with `plugins: [sonar]`, then override individual severities in `rules` when needed.\n\n| Rule | Description |\n|------|-------------|\n| `sonar/prefer-string-replaceall` | Prefer `replaceAll()` when replacing every string occurrence |\n| `sonar/prefer-string-raw-regexp` | Prefer `String.raw` for regex strings where escaping is easy to misread |\n| `sonar/prefer-string-raw` | Prefer `String.raw` for escape-heavy strings |\n| `sonar/prefer-nullish-coalescing-assign` | Prefer `??=` for nullish assignment patterns |\n| `sonar/no-single-char-class` | Avoid regex character classes with a single character |\n| `sonar/prefer-at` | Prefer `.at()` for relative index access |\n\n## Agent and CI Integration\n\nAgent hooks should run klint with `--json` so violations are machine-readable.\n\n```ts\n// .agents/hooks/klint.ts\nimport { runHook } from \"./run-hook\";\n\nconst exitCode = runHook([\"bun\", \"run\", \"klint\", \"--\", \"--json\"]);\nprocess.exit(exitCode);\n```\n\nIn CI, run the same command you use locally:\n\n```sh\nbun install\nbun run klint\n```\n\nThe important contract is simple: klint exits `0` when the project is clean, `2` when blocking errors exist, and can emit JSON for agents that need structured feedback.\n\n## Custom Rules\n\nCreate `klint.rules.ts` next to `klint.yaml` and export a `Record<string, KlintRule>` as default. Each key is the rule name.\n\n```ts\nimport { relative } from \"node:path\";\nimport type { KlintRule } from \"@konvert7/klint/core/types\";\n\nconst noForbiddenPattern: KlintRule = {\n  check({ files, root, fileContents }, violations) {\n    for (const file of files) {\n      const lines = (fileContents.get(file) ?? \"\").split(\"\\n\");\n      for (let i = 0; i < lines.length; i++) {\n        if (/forbidden-pattern/.test(lines[i])) {\n          violations.push({\n            file: relative(root, file),\n            line: i + 1,\n            message: \"Explain what is wrong and how to fix it.\",\n          });\n        }\n      }\n    }\n  },\n};\n\nexport default {\n  \"no-forbidden-pattern\": noForbiddenPattern,\n};\n```\n\nAll exported custom rules run at `\"error\"` severity by default. Override severity or scope through `rules`:\n\n```yaml\nrules:\n  no-forbidden-pattern:\n    severity: warn\n    include: [\"src/server/**\"]\n```\n\nNo separate registration step is required.\n\n### Auto-fix Support\n\nAdd a `fix` field to a violation to make it auto-fixable with `--fix`. Fixes replace a line range with new text:\n\n```ts\nviolations.push({\n  file: relative(root, file),\n  line: i + 1,\n  message: \"Use foo() instead of bar().\",\n  fix: {\n    startLine: i + 1,\n    endLine: i + 1,\n    replacement: lines[i].replace(\"bar()\", \"foo()\"),\n  },\n});\n```\n\n### Type-aware Rules\n\nFor rules that need the TypeScript AST, use `walkAst`:\n\n```ts\nimport ts from \"typescript\";\nimport { walkAst } from \"@konvert7/klint/core/ast\";\nimport type { KlintRule } from \"@konvert7/klint/core/types\";\n\nconst noSpecificCall: KlintRule = {\n  check({ files, fileContents }, violations) {\n    for (const file of files) {\n      const content = fileContents.get(file) ?? \"\";\n      walkAst(file, content, (node) => {\n        if (ts.isCallExpression(node)) {\n          // Inspect node with the TypeScript AST.\n        }\n      });\n    }\n  },\n};\n```\n\n## How It Fits\n\nklint is not a replacement for Biome, oxlint, ESLint, knip, or TypeScript itself.\n\n- Use TypeScript for type correctness.\n- Use Biome or oxlint for fast syntax and style checks.\n- Use knip for unused files and exports.\n- Use klint for architecture, agent constraints, project policy, and custom type-aware checks.\n\nThe goal is a small, sharp gate: the rules your project cannot afford to leave as prose.\n","readmeFilename":"README.md"}