{
	"name": "pi-lens",
	"version": "4.4.0",
	"type": "module",
	"description": "Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo",
	"repository": {
		"type": "git",
		"url": "git+https://github.com/apmantza/pi-lens.git"
	},
	"main": "./dist/index.js",
	"bin": {
		"pi-lens": "dist/mcp/cli.js",
		"pi-lens-mcp": "dist/mcp/server.js",
		"pi-lens-analyze": "dist/mcp/analyze-cli.js"
	},
	"scripts": {
		"build": "tsc --project tsconfig.build.json",
		"build:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && node scripts/build-dist-tsc.mjs tsconfig.dist.json && npm run bundle:dist",
		"bundle:dist": "node scripts/bundle-dist.mjs",
		"prepare": "npm run build:dist && node scripts/download-grammars.js --core --dest grammars && node scripts/setup-git-hooks.mjs && node scripts/stamp-package-lock.mjs && node scripts/warm-loader-cache.mjs",
		"prepack": "node scripts/strip-dev-deps-for-pack.mjs --strip",
		"postpack": "node scripts/strip-dev-deps-for-pack.mjs --restore",
		"lint": "tsc --project tsconfig.json && npm run lint:js && npm run lint:js:tests",
		"lint:js": "oxlint --deny-warnings --import-plugin --promise-plugin -D block-scoped-var -D import/default -D import/namespace -D import/no-absolute-path -D import/no-empty-named-blocks -D import/no-named-as-default -D import/no-self-import -D no-extend-native -D no-extra-bind -D no-implied-eval -D no-new -D no-unexpected-multiline -D no-useless-constructor -D oxc/approx-constant -D oxc/misrefactored-assign-op -D oxc/no-accumulating-spread -D oxc/no-async-endpoint-handlers -D oxc/no-this-in-exported-function -D promise/no-callback-in-promise -D promise/no-multiple-resolved -D promise/no-new-statics -D promise/valid-params -D typescript/no-confusing-non-null-assertion -D typescript/no-extraneous-class -D typescript/no-unnecessary-type-constraint -D typescript/no-unsafe-enum-comparison -D unicorn/no-accessor-recursion -D unicorn/no-array-fill-with-reference-type -D unicorn/no-confusing-array-with -D unicorn/no-instanceof-builtins -D unicorn/prefer-array-flat-map -D unicorn/require-module-specifiers --ignore-pattern \"tests/**/*.ts\" --ignore-pattern \"tests/**/*.tsx\" --ignore-pattern \"**/*.d.mts\" --ignore-pattern \"tests/fixtures/autofix-smoke/**\" --ignore-pattern \"tests/fixtures/format-smoke/**\" --ignore-pattern \"tests/fixtures/tool-smoke/**\" --ignore-pattern \"tests/fixtures/call-graph/javascript/**\" --ignore-pattern \"tests/fixtures/function-facts/javascript-parameter.js\" .",
		"lint:js:advisory": "node scripts/lint-js-advisory.mjs --deny-warnings --format unix -D correctness -D suspicious -D perf --import-plugin --promise-plugin --type-aware -A no-underscore-dangle -A no-await-in-loop -A unicorn/no-array-sort -A unicorn/consistent-function-scoping -A promise/no-promise-in-callback -A no-useless-call -A import/no-unassigned-import -A no-unmodified-loop-condition --ignore-pattern \"**/*.d.mts\" --ignore-pattern \"tests/fixtures/autofix-smoke/**\" --ignore-pattern \"tests/fixtures/format-smoke/**\" --ignore-pattern \"tests/fixtures/tool-smoke/**\" --ignore-pattern \"tests/fixtures/call-graph/javascript/**\" --ignore-pattern \"tests/fixtures/function-facts/javascript-parameter.js\" .",
		"lint:js:tests": "node scripts/lint-js-advisory.mjs --deny-warnings --format unix --type-aware -A correctness -A suspicious -A perf --ignore-pattern \"tests/fixtures/**\" tests",
		"depcruise:check": "depcruise --validate --config .dependency-cruiser.cjs --ignore-known .dependency-cruiser-known-violations.json --output-type err index.ts \"clients/**/*.ts\"",
		"fmt": "oxfmt",
		"fmt:check": "oxfmt --check",
		"taplo": "taplo check $(git ls-files '*.toml' ':!tests/fixtures/**') && taplo fmt --check $(git ls-files '*.toml' ':!tests/fixtures/**' ':!config/ruff/core.toml') # taplo 0.7.0 panics on this file's comments; lint it above",
		"watch": "tsc --watch",
		"test": "node scripts/with-test-lock.mjs -- vitest run",
		"test:unit": "node scripts/with-test-lock.mjs -- vitest run",
		"test:integration": "node scripts/with-test-lock.mjs -- vitest run tests/index-integration.test.ts tests/clients/lsp/integration.test.ts",
		"test:targeted": "node scripts/with-test-lock.mjs --shared -- vitest run",
		"test:watch": "vitest",
		"test:real-harness": "node scripts/with-test-lock.mjs --shared -- vitest run",
		"mutation:diff": "node scripts/stryker-diff.mjs --base origin/master --max-files 6",
		"hygiene": "node scripts/prune-agent-worktrees.mjs",
		"check": "node scripts/check-extensions.mjs",
		"selftest:install": "node scripts/install-selftest.mjs",
		"check:lockfile": "node scripts/check-lockfile-sync.mjs",
		"check:allow-scripts": "node scripts/check-allow-scripts.mjs",
		"preflight": "node scripts/pr-preflight.mjs",
		"knip": "node scripts/run-knip.mjs",
		"check:grammars": "node scripts/check-grammar-provenance.mjs",
		"check:grammar-load": "node scripts/check-grammar-load.mjs",
		"audit:tree-sitter": "node scripts/audit-tree-sitter-rules.mjs",
		"audit:rule-catalog": "node scripts/validate-rule-catalog.mjs",
		"audit:astgrep-rule-pairs": "node scripts/audit-astgrep-rule-pairs.mjs",
		"astgrep:self-scan": "node scripts/run-astgrep-pi-lens.mjs",
		"lane:check": "node scripts/lane-check.mjs",
		"astgrep:self-scan:update-baseline": "node scripts/run-astgrep-pi-lens.mjs --update-baseline",
		"audit:playground": "node scripts/playground-verify-rule.mjs",
		"bench:cascade-budget": "node scripts/bench-cascade-budget.mjs",
		"bench:word-index-replacement": "node scripts/bench-word-index-replacement.mjs",
		"logs:smells": "node scripts/analyze-pi-lens-logs.mjs",
		"complexity": "node scripts/complexity-report.mjs",
		"changelog:check": "node scripts/rollup-changelog.mjs --check",
		"contributors:update": "node scripts/update-contributors.mjs",
		"test:regen": "node scripts/regen-test-baseline.mjs",
		"changelog:release": "node scripts/changelog-release.mjs",
		"changelog:extract": "node scripts/changelog-extract.mjs",
		"release:backfill-notes": "node scripts/backfill-github-releases.mjs",
		"release:backfill-thanks": "node scripts/backfill-release-thanks.mjs",
		"docs:rule-catalogs": "node scripts/gen-rule-catalogs.mjs",
		"banner": "npx -y sharp-cli --input banner.svg --output banner.png resize 2200 620",
		"download-grammars": "node scripts/download-grammars.js",
		"harness:poc": "node scripts/run-harness.mjs cases/ts/pipeline-dispatch-poc",
		"harness:python-poc": "node scripts/run-harness.mjs cases/python/pipeline-dispatch-poc",
		"harness:ts-format-poc": "node scripts/run-harness.mjs cases/ts/format-default-poc",
		"harness:python-autofix-poc": "node scripts/run-harness.mjs cases/python/autofix-default-poc",
		"harness:go-poc": "node scripts/run-harness.mjs cases/go/pipeline-dispatch-poc"
	},
	"keywords": [
		"pi",
		"pi-extension",
		"pi-package",
		"linter",
		"biome",
		"ast-grep",
		"ruff",
		"typescript",
		"code-quality",
		"feedback",
		"type-coverage",
		"jscpd",
		"knip"
	],
	"author": "Apostolos Mantzaris",
	"license": "MIT",
	"engines": {
		"node": ">=22.19.0"
	},
	"packageManager": "npm@11.18.0",
	"files": [
		"dist/index.js",
		"dist/chunk-*.js",
		"dist/mcp/cli.js",
		"dist/mcp/server.js",
		"dist/mcp/analyze-cli.js",
		"dist/mcp/worker.js",
		"dist/workers/",
		"dist/probes/",
		"docs/",
		"grammars/",
		"vendor/grammars/",
		"config/",
		"rules/",
		"skills/",
		"scripts/download-grammars.js",
		"scripts/grammars.lock.json",
		"scripts/analyze-pi-lens-logs.mjs",
		"scripts/install-selftest.mjs",
		"scripts/lib/host-provided-deps.mjs",
		"scripts/lib/skills-predicate.mjs",
		"scripts/lib/web-tree-sitter-dir.mjs",
		"scripts/lib/warm-loader-cache.mjs",
		"scripts/warm-loader-cache.mjs",
		"scripts/rpc-load-check.mjs",
		"README.md",
		"CHANGELOG.md",
		"banner.svg",
		"banner.png"
	],
	"dependencies": {
		"@ast-grep/cli": "0.45.3",
		"@ast-grep/napi": "^0.45.0",
		"js-yaml": "^5.2.2",
		"minimatch": "^10.2.6",
		"pidusage": "^4.0.1",
		"vscode-jsonrpc": "^9.0.0"
	},
	"peerDependencies": {
		"@earendil-works/pi-coding-agent": "*",
		"@earendil-works/pi-tui": "*",
		"typebox": "^1.0.0"
	},
	"peerDependenciesMeta": {
		"@earendil-works/pi-coding-agent": {
			"optional": true
		},
		"@earendil-works/pi-tui": {
			"optional": true
		},
		"typebox": {
			"optional": true
		}
	},
	"optionalDependencies": {
		"jiti": "^2.7.0",
		"web-tree-sitter": "0.25.10"
	},
	"pi": {
		"extensions": [
			"./dist/index.js"
		],
		"skills": [
			"./skills"
		]
	},
	"allowScripts": {
		"@ast-grep/cli@0.45.3": true,
		"@google/genai@2.21.0": true,
		"esbuild@0.28.2": true,
		"fsevents@2.3.3": false,
		"protobufjs@7.6.6": true
	},
	"overrides": {
		"qs": "^6.15.4"
	}
}
