pi-lens 2.2.10 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +198 -0
- package/README.md +709 -519
- package/clients/__tests__/file-time.test.js +216 -0
- package/clients/__tests__/file-time.test.ts +276 -0
- package/clients/__tests__/format-service.test.js +245 -0
- package/clients/__tests__/format-service.test.ts +339 -0
- package/clients/__tests__/formatters.test.js +271 -0
- package/clients/__tests__/formatters.test.ts +401 -0
- package/clients/amain-types.js +164 -0
- package/clients/amain-types.ts +165 -0
- package/clients/architect-client.js +56 -12
- package/clients/architect-client.ts +81 -16
- package/clients/ast-grep-client.js +2 -2
- package/clients/ast-grep-client.ts +14 -39
- package/clients/ast-grep-parser.ts +1 -1
- package/clients/ast-grep-rule-manager.js +8 -0
- package/clients/ast-grep-rule-manager.ts +10 -1
- package/clients/ast-grep-types.js +9 -0
- package/clients/ast-grep-types.ts +106 -0
- package/clients/auto-loop.js +10 -0
- package/clients/auto-loop.ts +14 -1
- package/clients/biome-client.js +81 -19
- package/clients/biome-client.ts +103 -22
- package/clients/bus/bus.js +191 -0
- package/clients/bus/bus.ts +251 -0
- package/clients/bus/events.js +214 -0
- package/clients/bus/events.ts +279 -0
- package/clients/bus/index.js +8 -0
- package/clients/bus/index.ts +9 -0
- package/clients/bus/integration.js +158 -0
- package/clients/bus/integration.ts +214 -0
- package/clients/complexity-client.js +13 -7
- package/clients/complexity-client.ts +13 -7
- package/clients/config-validator.js +465 -0
- package/clients/config-validator.ts +558 -0
- package/clients/dependency-checker.js +4 -10
- package/clients/dependency-checker.ts +4 -10
- package/clients/dispatch/__tests__/autofix-integration.test.js +245 -0
- package/clients/dispatch/__tests__/autofix-integration.test.ts +300 -0
- package/clients/dispatch/__tests__/runner-registration.test.js +236 -0
- package/clients/dispatch/__tests__/runner-registration.test.ts +282 -0
- package/clients/dispatch/bus-dispatcher.js +177 -0
- package/clients/dispatch/bus-dispatcher.ts +251 -0
- package/clients/dispatch/dispatcher.edge.test.js +82 -0
- package/clients/dispatch/dispatcher.edge.test.ts +100 -0
- package/clients/dispatch/dispatcher.format.test.js +46 -0
- package/clients/dispatch/dispatcher.format.test.ts +58 -0
- package/clients/dispatch/dispatcher.inline.test.js +74 -0
- package/clients/dispatch/dispatcher.inline.test.ts +93 -0
- package/clients/dispatch/dispatcher.js +19 -53
- package/clients/dispatch/dispatcher.ts +20 -67
- package/clients/dispatch/plan.js +9 -4
- package/clients/dispatch/plan.ts +9 -4
- package/clients/dispatch/runners/architect.js +21 -7
- package/clients/dispatch/runners/architect.test.js +138 -0
- package/clients/dispatch/runners/architect.test.ts +162 -0
- package/clients/dispatch/runners/architect.ts +22 -7
- package/clients/dispatch/runners/ast-grep-napi.js +462 -0
- package/clients/dispatch/runners/ast-grep-napi.test.js +111 -0
- package/clients/dispatch/runners/ast-grep-napi.test.ts +133 -0
- package/clients/dispatch/runners/ast-grep-napi.ts +506 -0
- package/clients/dispatch/runners/ast-grep.js +62 -19
- package/clients/dispatch/runners/ast-grep.ts +70 -18
- package/clients/dispatch/runners/biome.js +29 -53
- package/clients/dispatch/runners/biome.ts +29 -63
- package/clients/dispatch/runners/config-validation.js +67 -0
- package/clients/dispatch/runners/config-validation.ts +82 -0
- package/clients/dispatch/runners/go-vet.js +4 -28
- package/clients/dispatch/runners/go-vet.ts +4 -32
- package/clients/dispatch/runners/index.js +30 -10
- package/clients/dispatch/runners/index.ts +30 -10
- package/clients/dispatch/runners/oxlint.js +141 -0
- package/clients/dispatch/runners/oxlint.test.js +230 -0
- package/clients/dispatch/runners/oxlint.test.ts +303 -0
- package/clients/dispatch/runners/oxlint.ts +175 -0
- package/clients/dispatch/runners/pyright.js +40 -70
- package/clients/dispatch/runners/pyright.test.js +16 -2
- package/clients/dispatch/runners/pyright.test.ts +14 -2
- package/clients/dispatch/runners/pyright.ts +48 -91
- package/clients/dispatch/runners/python-slop.js +97 -0
- package/clients/dispatch/runners/python-slop.test.js +203 -0
- package/clients/dispatch/runners/python-slop.test.ts +298 -0
- package/clients/dispatch/runners/python-slop.ts +124 -0
- package/clients/dispatch/runners/ruff.js +18 -71
- package/clients/dispatch/runners/ruff.ts +19 -79
- package/clients/dispatch/runners/rust-clippy.js +28 -32
- package/clients/dispatch/runners/rust-clippy.ts +29 -31
- package/clients/dispatch/runners/scan_codebase.test.js +89 -0
- package/clients/dispatch/runners/scan_codebase.test.ts +105 -0
- package/clients/dispatch/runners/shellcheck.js +147 -0
- package/clients/dispatch/runners/shellcheck.test.js +98 -0
- package/clients/dispatch/runners/shellcheck.test.ts +129 -0
- package/clients/dispatch/runners/shellcheck.ts +188 -0
- package/clients/dispatch/runners/similarity.js +230 -0
- package/clients/dispatch/runners/similarity.ts +339 -0
- package/clients/dispatch/runners/spellcheck.js +106 -0
- package/clients/dispatch/runners/spellcheck.test.js +158 -0
- package/clients/dispatch/runners/spellcheck.test.ts +214 -0
- package/clients/dispatch/runners/spellcheck.ts +136 -0
- package/clients/dispatch/runners/tree-sitter.js +107 -0
- package/clients/dispatch/runners/tree-sitter.ts +135 -0
- package/clients/dispatch/runners/ts-lsp.js +104 -33
- package/clients/dispatch/runners/ts-lsp.ts +120 -38
- package/clients/dispatch/runners/ts-slop.js +113 -0
- package/clients/dispatch/runners/ts-slop.test.js +180 -0
- package/clients/dispatch/runners/ts-slop.test.ts +230 -0
- package/clients/dispatch/runners/ts-slop.ts +142 -0
- package/clients/dispatch/runners/utils/diagnostic-parsers.js +134 -0
- package/clients/dispatch/runners/utils/diagnostic-parsers.ts +186 -0
- package/clients/dispatch/runners/utils/runner-helpers.js +115 -0
- package/clients/dispatch/runners/utils/runner-helpers.ts +167 -0
- package/clients/dispatch/runners/utils.js +2 -4
- package/clients/dispatch/runners/utils.ts +2 -4
- package/clients/dispatch/types.ts +1 -1
- package/clients/dispatch/utils/format-utils.js +49 -0
- package/clients/dispatch/utils/format-utils.ts +60 -0
- package/clients/dogfood.test.js +201 -0
- package/clients/dogfood.test.ts +269 -0
- package/clients/file-time.js +152 -0
- package/clients/file-time.ts +208 -0
- package/clients/file-utils.js +40 -0
- package/clients/file-utils.ts +44 -0
- package/clients/fix-scanners.js +10 -20
- package/clients/fix-scanners.ts +10 -22
- package/clients/format-service.js +172 -0
- package/clients/format-service.ts +254 -0
- package/clients/formatters.js +435 -0
- package/clients/formatters.ts +508 -0
- package/clients/go-client.js +5 -14
- package/clients/go-client.ts +5 -13
- package/clients/installer/index.js +356 -0
- package/clients/installer/index.ts +426 -0
- package/clients/jscpd-client.js +11 -9
- package/clients/jscpd-client.ts +12 -8
- package/clients/knip-client.js +3 -7
- package/clients/knip-client.ts +3 -6
- package/clients/lsp/__tests__/client.test.js +325 -0
- package/clients/lsp/__tests__/client.test.ts +434 -0
- package/clients/lsp/__tests__/config.test.js +166 -0
- package/clients/lsp/__tests__/config.test.ts +209 -0
- package/clients/lsp/__tests__/error-recovery.test.js +213 -0
- package/clients/lsp/__tests__/error-recovery.test.ts +279 -0
- package/clients/lsp/__tests__/integration.test.js +127 -0
- package/clients/lsp/__tests__/integration.test.ts +160 -0
- package/clients/lsp/__tests__/launch.test.js +260 -0
- package/clients/lsp/__tests__/launch.test.ts +329 -0
- package/clients/lsp/__tests__/server.test.js +259 -0
- package/clients/lsp/__tests__/server.test.ts +332 -0
- package/clients/lsp/__tests__/service.test.js +417 -0
- package/clients/lsp/__tests__/service.test.ts +499 -0
- package/clients/lsp/client.js +235 -0
- package/clients/lsp/client.ts +328 -0
- package/clients/lsp/config.js +115 -0
- package/clients/lsp/config.ts +149 -0
- package/clients/lsp/index.js +222 -0
- package/clients/lsp/index.ts +280 -0
- package/clients/lsp/installer/index.js +391 -0
- package/clients/lsp/interactive-install.js +210 -0
- package/clients/lsp/interactive-install.ts +251 -0
- package/clients/lsp/language.js +170 -0
- package/clients/lsp/language.ts +216 -0
- package/clients/lsp/launch.js +174 -0
- package/clients/lsp/launch.ts +240 -0
- package/clients/lsp/lsp/launch.js +116 -0
- package/clients/lsp/lsp/server.js +532 -0
- package/clients/lsp/lsp-index.js +10 -0
- package/clients/lsp/lsp-index.ts +11 -0
- package/clients/lsp/path-utils.js +48 -0
- package/clients/lsp/path-utils.ts +52 -0
- package/clients/lsp/server.js +615 -0
- package/clients/lsp/server.ts +800 -0
- package/clients/lsp/test-py-spawn/requirements.txt +1 -0
- package/clients/lsp/test-py-spawn/test.py +3 -0
- package/clients/lsp/test-py-svc/requirements.txt +1 -0
- package/clients/lsp/test-py-svc/test.py +3 -0
- package/clients/lsp/test-python-project/requirements.txt +1 -0
- package/clients/lsp/test-python-project/test.py +5 -0
- package/clients/metrics-history.js +2 -2
- package/clients/metrics-history.ts +2 -2
- package/clients/production-readiness.js +522 -0
- package/clients/production-readiness.ts +556 -0
- package/clients/project-index.js +255 -0
- package/clients/project-index.ts +383 -0
- package/clients/project-metadata.js +531 -0
- package/clients/project-metadata.ts +624 -0
- package/clients/ruff-client.js +56 -16
- package/clients/ruff-client.ts +72 -15
- package/clients/runner-tracker.js +152 -0
- package/clients/runner-tracker.ts +213 -0
- package/clients/rust-client.js +4 -11
- package/clients/rust-client.ts +5 -11
- package/clients/safe-spawn.js +96 -0
- package/clients/safe-spawn.ts +128 -0
- package/clients/scan-architectural-debt.js +3 -6
- package/clients/scan-architectural-debt.ts +3 -6
- package/clients/scan-utils.js +5 -20
- package/clients/scan-utils.ts +5 -29
- package/clients/secrets-scanner.js +3 -17
- package/clients/secrets-scanner.ts +4 -20
- package/clients/services/__tests__/effect-integration.test.js +86 -0
- package/clients/services/__tests__/effect-integration.test.ts +111 -0
- package/clients/services/effect-integration.js +194 -0
- package/clients/services/effect-integration.ts +268 -0
- package/clients/services/index.js +7 -0
- package/clients/services/index.ts +8 -0
- package/clients/services/runner-service.js +105 -0
- package/clients/services/runner-service.ts +179 -0
- package/clients/sg-runner.js +87 -13
- package/clients/sg-runner.ts +97 -13
- package/clients/state-matrix.js +160 -0
- package/clients/state-matrix.ts +202 -0
- package/clients/subprocess-client.js +10 -9
- package/clients/subprocess-client.ts +10 -8
- package/clients/test-runner-client.js +3 -7
- package/clients/test-runner-client.ts +3 -6
- package/clients/tool-availability.js +4 -10
- package/clients/tool-availability.ts +4 -9
- package/clients/tree-sitter-client.js +564 -0
- package/clients/tree-sitter-client.ts +797 -0
- package/clients/tree-sitter-query-loader.js +355 -0
- package/clients/tree-sitter-query-loader.ts +425 -0
- package/clients/type-coverage-client.js +3 -7
- package/clients/type-coverage-client.ts +3 -6
- package/clients/typescript-client.codefix.test.js +157 -0
- package/clients/typescript-client.codefix.test.ts +186 -0
- package/clients/typescript-client.js +43 -0
- package/clients/typescript-client.ts +98 -0
- package/commands/booboo.js +799 -219
- package/commands/booboo.ts +1004 -225
- package/commands/clients/ast-grep-client.js +250 -0
- package/commands/clients/ast-grep-parser.js +86 -0
- package/commands/clients/ast-grep-rule-manager.js +91 -0
- package/commands/clients/ast-grep-types.js +9 -0
- package/commands/clients/biome-client.js +380 -0
- package/commands/clients/complexity-client.js +667 -0
- package/commands/clients/file-kinds.js +177 -0
- package/commands/clients/file-utils.js +40 -0
- package/commands/clients/jscpd-client.js +169 -0
- package/commands/clients/knip-client.js +211 -0
- package/commands/clients/ruff-client.js +297 -0
- package/commands/clients/safe-spawn.js +88 -0
- package/commands/clients/scan-utils.js +83 -0
- package/commands/clients/sg-runner.js +190 -0
- package/commands/clients/types.js +11 -0
- package/commands/clients/typescript-client.js +505 -0
- package/commands/fix-from-booboo.js +398 -0
- package/commands/fix-from-booboo.ts +485 -0
- package/commands/fix-simplified.js +618 -0
- package/commands/fix-simplified.ts +768 -0
- package/commands/rate.js +6 -25
- package/commands/rate.ts +6 -30
- package/default-architect.yaml +59 -15
- package/index.ts +342 -429
- package/package.json +16 -3
- package/rules/ast-grep-rules/rules/empty-catch.yml +38 -13
- package/rules/ast-grep-rules/rules/no-array-constructor.yml +1 -0
- package/rules/ast-grep-rules/rules/no-debugger.yml +2 -0
- package/rules/python-slop-rules/.sgconfig.yml +4 -0
- package/rules/python-slop-rules/rules/slop-rules.yml +647 -0
- package/rules/tree-sitter-queries/python/bare-except.yml +54 -0
- package/rules/tree-sitter-queries/python/eval-exec.yml +50 -0
- package/rules/tree-sitter-queries/python/is-vs-equals.yml +60 -0
- package/rules/tree-sitter-queries/python/mutable-default-arg.yml +57 -0
- package/rules/tree-sitter-queries/python/unreachable-except.yml +60 -0
- package/rules/tree-sitter-queries/python/wildcard-import.yml +46 -0
- package/rules/tree-sitter-queries/tsx/dangerously-set-inner-html.yml +63 -0
- package/rules/tree-sitter-queries/typescript/await-in-loop.yml +56 -0
- package/rules/tree-sitter-queries/typescript/console-statement.yml +47 -0
- package/rules/tree-sitter-queries/typescript/debugger.yml +47 -0
- package/rules/tree-sitter-queries/typescript/deep-nesting.yml +117 -0
- package/rules/tree-sitter-queries/typescript/deep-promise-chain.yml +73 -0
- package/rules/tree-sitter-queries/typescript/empty-catch.yml +64 -0
- package/rules/tree-sitter-queries/typescript/eval.yml +48 -0
- package/rules/tree-sitter-queries/typescript/hardcoded-secrets.yml +78 -0
- package/rules/tree-sitter-queries/typescript/long-parameter-list.yml +62 -0
- package/rules/tree-sitter-queries/typescript/mixed-async-styles.yml +49 -0
- package/rules/tree-sitter-queries/typescript/nested-ternary.yml +45 -0
- package/rules/ts-slop-rules/.sgconfig.yml +4 -0
- package/rules/ts-slop-rules/rules/in-correct-optional-input-type.yml +10 -0
- package/rules/ts-slop-rules/rules/jwt-no-verify.yml +13 -0
- package/rules/ts-slop-rules/rules/no-architecture-violation.yml +10 -0
- package/rules/ts-slop-rules/rules/no-case-declarations.yml +10 -0
- package/rules/ts-slop-rules/rules/no-dangerously-set-inner-html.yml +10 -0
- package/rules/ts-slop-rules/rules/no-debugger.yml +10 -0
- package/rules/ts-slop-rules/rules/no-dupe-args.yml +10 -0
- package/rules/ts-slop-rules/rules/no-dupe-class-members.yml +10 -0
- package/rules/ts-slop-rules/rules/no-dupe-keys.yml +10 -0
- package/rules/ts-slop-rules/rules/no-eval.yml +13 -0
- package/rules/ts-slop-rules/rules/no-hardcoded-secrets.yml +12 -0
- package/rules/ts-slop-rules/rules/no-implied-eval.yml +12 -0
- package/rules/ts-slop-rules/rules/no-inner-html.yml +13 -0
- package/rules/ts-slop-rules/rules/no-javascript-url.yml +10 -0
- package/rules/ts-slop-rules/rules/no-mutable-default.yml +10 -0
- package/rules/ts-slop-rules/rules/no-nested-links.yml +12 -0
- package/rules/ts-slop-rules/rules/no-new-symbol.yml +10 -0
- package/rules/ts-slop-rules/rules/no-new-wrappers.yml +13 -0
- package/rules/ts-slop-rules/rules/no-open-redirect.yml +16 -0
- package/rules/ts-slop-rules/rules/slop-rules.yml +455 -0
- package/rules/ts-slop-rules/rules/weak-rsa-key.yml +12 -0
- package/skills/ast-grep/SKILL.md +182 -0
- package/clients/dispatch/runners/secrets.js +0 -109
- package/commands/fix.js +0 -244
- package/commands/fix.ts +0 -373
- package/rules/ast-grep-rules/rules/no-lonely-if.yml +0 -13
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,204 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to pi-lens will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.7.0] - 2026-03-31
|
|
6
|
+
|
|
7
|
+
### Added - New Lint Runners
|
|
8
|
+
|
|
9
|
+
Three new lint runners with full test coverage:
|
|
10
|
+
|
|
11
|
+
- **Spellcheck runner** (`clients/dispatch/runners/spellcheck.ts`): Markdown spellchecking
|
|
12
|
+
- Uses `typos-cli` (Rust-based, fast, low false positives)
|
|
13
|
+
- Checks `.md` and `.mdx` files
|
|
14
|
+
- Priority 30, runs after code quality checks
|
|
15
|
+
- Zero-config by default
|
|
16
|
+
- Install: `cargo install typos-cli`
|
|
17
|
+
|
|
18
|
+
- **Oxlint runner** (`clients/dispatch/runners/oxlint.ts`): Fast JS/TS linting
|
|
19
|
+
- Uses `oxlint` from Oxc project (Rust-based, ~100x faster than ESLint)
|
|
20
|
+
- Zero-config by default
|
|
21
|
+
- JSON output with fix suggestions
|
|
22
|
+
- Priority 12 (between biome=10 and slop=25)
|
|
23
|
+
- Fallback mode after biome
|
|
24
|
+
- Install: `npm install -D oxlint` or `cargo install oxlint`
|
|
25
|
+
- Flag: `--no-oxlint` to disable
|
|
26
|
+
|
|
27
|
+
- **Shellcheck runner** (`clients/dispatch/runners/shellcheck.ts`): Shell script linting
|
|
28
|
+
- Industry-standard linter for bash/sh/zsh/fish
|
|
29
|
+
- Detects syntax errors, undefined variables, quoting issues
|
|
30
|
+
- Priority 20 (same as type-safety)
|
|
31
|
+
- JSON output parsing
|
|
32
|
+
- Install: `apt install shellcheck`, `brew install shellcheck`, or `cargo install shellcheck`
|
|
33
|
+
- Flag: `--no-shellcheck` to disable
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- Updated README.md with new runners in dispatcher diagram and available runners table
|
|
37
|
+
- Added installation instructions for new tools in Dependent Tools section
|
|
38
|
+
- Added new flags to Flag Reference
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## [2.6.0] - 2026-03-30
|
|
43
|
+
|
|
44
|
+
### Added - Phase 1: Event Bus Architecture
|
|
45
|
+
- **Event Bus System** (`clients/bus/`): Decoupled pub/sub for diagnostic events
|
|
46
|
+
- `bus.ts` — Core publish/subscribe with `once()`, `waitFor()`, middleware support
|
|
47
|
+
- `events.ts` — 12 typed event definitions (DiagnosticFound, RunnerStarted, LspDiagnostic, etc.)
|
|
48
|
+
- `integration.ts` — Integration hooks for pi-lens index.ts with aggregator state
|
|
49
|
+
- **Bus-integrated dispatcher** (`clients/dispatch/bus-dispatcher.ts`): Concurrent runner execution with event publishing
|
|
50
|
+
- **New flags**: `--lens-bus`, `--lens-bus-debug` for event system control
|
|
51
|
+
|
|
52
|
+
### Added - Phase 2: Effect-TS Service Layer
|
|
53
|
+
- **Effect-TS infrastructure** (`clients/services/`): Composable async operations
|
|
54
|
+
- `runner-service.ts` — Concurrent runner execution with timeout handling
|
|
55
|
+
- `effect-integration.ts` — Bus-integrated Effect dispatch
|
|
56
|
+
- **Structured concurrency**: `Effect.all()` with `{ concurrency: "unbounded" }`
|
|
57
|
+
- **Graceful error recovery**: Individual runner failures don't stop other runners
|
|
58
|
+
- **New flag**: `--lens-effect` for concurrent execution
|
|
59
|
+
|
|
60
|
+
### Added - Phase 3: Multi-LSP Client (31 Language Servers)
|
|
61
|
+
- **LSP Core** (`clients/lsp/`): Full Language Server Protocol support
|
|
62
|
+
- `client.ts` — JSON-RPC client with debounced diagnostics (150ms)
|
|
63
|
+
- `server.ts` — 31 LSP server definitions with root detection
|
|
64
|
+
- `language.ts` — File extension to LSP language ID mappings
|
|
65
|
+
- `launch.ts` — LSP process spawning utilities
|
|
66
|
+
- `index.ts` — Service layer with Effect integration
|
|
67
|
+
- `config.ts` — Custom LSP configuration support (`.pi-lens/lsp.json`)
|
|
68
|
+
- **Built-in servers** (31 total):
|
|
69
|
+
- Core: TypeScript, Python, Go, Rust, Ruby, PHP, C#, F#, Java, Kotlin
|
|
70
|
+
- Native: C/C++, Zig, Swift, Dart, Haskell, OCaml, Lua
|
|
71
|
+
- Functional: Elixir, Gleam, Clojure
|
|
72
|
+
- DevOps: Terraform, Nix, Docker, Bash
|
|
73
|
+
- Config: YAML, JSON, Prisma
|
|
74
|
+
- Web (NEW): Vue, Svelte, ESLint, CSS/SCSS/Sass/Less
|
|
75
|
+
- **Smart root detection**: `createRootDetector()` walks up tree looking for lockfiles/config
|
|
76
|
+
- **Multi-server support**: Multiple LSP servers can handle same file type
|
|
77
|
+
- **Debounced diagnostics**: 150ms debounce for cascading diagnostics (syntax → semantic)
|
|
78
|
+
- **New flag**: `--lens-lsp` to enable LSP system
|
|
79
|
+
- **Deprecated**: Old `ts-lsp` runner falls back to built-in TypeScriptClient when `--lens-lsp` not set
|
|
80
|
+
|
|
81
|
+
### Added - Phase 4: Auto-Installation System
|
|
82
|
+
- **Auto-installer** (`clients/installer/`): Automatic tool installation
|
|
83
|
+
- `index.ts` — Core installation logic for npm/pip packages
|
|
84
|
+
- `isToolInstalled()` — Check global PATH or local `.pi-lens/tools/`
|
|
85
|
+
- `installTool()` — Auto-install via npm or pip
|
|
86
|
+
- `ensureTool()` — Check first, install if missing
|
|
87
|
+
- **Auto-installation for**: typescript-language-server, pyright, ruff, biome, ast-grep
|
|
88
|
+
- **Local tools directory**: `.pi-lens/tools/node_modules/.bin/`
|
|
89
|
+
- **PATH integration**: Local tools automatically added to PATH
|
|
90
|
+
- **LSP integration**: TypeScript and Python servers now use `ensureTool()` before spawning
|
|
91
|
+
|
|
92
|
+
### Changed - Commands
|
|
93
|
+
- **Disabled**: `/lens-booboo-fix` — Now shows warning "currently disabled. Use /lens-booboo"
|
|
94
|
+
- **Disabled**: `/lens-booboo-delta` — Now shows warning "currently disabled. Use /lens-booboo"
|
|
95
|
+
- **Disabled**: `/lens-booboo-refactor` — Now shows warning "currently disabled. Use /lens-booboo"
|
|
96
|
+
- **Active**: `/lens-booboo` — Full codebase review (only booboo command now)
|
|
97
|
+
|
|
98
|
+
### Changed - Architecture
|
|
99
|
+
- **Three-phase system**: Bus → Effect → LSP can be enabled independently
|
|
100
|
+
- **Dispatcher priority**: `lens-effect` > `lens-bus` > default (sequential)
|
|
101
|
+
- **LSP deprecation**: Old built-in TypeScriptClient deprecated, LSP client preferred
|
|
102
|
+
|
|
103
|
+
### Documentation
|
|
104
|
+
- **LSP configuration guide**: `docs/LSP_CONFIG.md` — How to add custom LSP servers
|
|
105
|
+
- **README updated**: Added LSP section, three-phase architecture, 31 language matrix
|
|
106
|
+
- **CHANGELOG restructured**: Now organized by Phase 1/2/3/4
|
|
107
|
+
|
|
108
|
+
### Technical Details
|
|
109
|
+
- **New dependencies**: `effect` (Phase 2), `vscode-jsonrpc` (Phase 3)
|
|
110
|
+
- **Lines added**: ~6,000 across 4 phases
|
|
111
|
+
- **Test status**: 617 passing (3 flaky unrelated tests)
|
|
112
|
+
- **Backward compatibility**: All new features opt-in via flags
|
|
113
|
+
|
|
114
|
+
## [2.5.0] - 2026-03-30
|
|
115
|
+
|
|
116
|
+
### Added
|
|
117
|
+
- **Python tree-sitter support**: 6 structural patterns for Python code analysis
|
|
118
|
+
- `bare-except` — Detects `except:` that catches SystemExit/KeyboardInterrupt
|
|
119
|
+
- `mutable-default-arg` — Detects mutable defaults like `def f(x=[])`
|
|
120
|
+
- `wildcard-import` — Detects `from module import *`
|
|
121
|
+
- `eval-exec` — Detects `eval()` and `exec()` security risks
|
|
122
|
+
- `is-vs-equals` — Detects `is "literal"` that should use `==`
|
|
123
|
+
- `unreachable-except` — Detects unreachable exception handlers
|
|
124
|
+
- **Multi-language tree-sitter architecture**: Query files in `rules/tree-sitter-queries/{language}/`
|
|
125
|
+
- TypeScript/TSX: 10 patterns
|
|
126
|
+
- Python: 6 patterns
|
|
127
|
+
- **Tree-sitter query loader**: YAML-based query definitions with multi-line array support
|
|
128
|
+
- **Query file extraction**: Moved TypeScript patterns from embedded code to `rules/tree-sitter-queries/typescript/*.yml`
|
|
129
|
+
|
|
130
|
+
### Changed
|
|
131
|
+
- **README updated**: Added Python patterns to structural analysis section
|
|
132
|
+
- **Architect client**: Fixed TypeScript errors (`configPath` property declaration)
|
|
133
|
+
|
|
134
|
+
### Technical Details
|
|
135
|
+
- Downloaded `tree-sitter-python.wasm` (458KB) for Python AST parsing
|
|
136
|
+
- Post-filters for semantic validation (e.g., distinguishing bare except from specific handlers)
|
|
137
|
+
- ~50ms analysis time per file for Python
|
|
138
|
+
|
|
139
|
+
## [2.4.0] - 2026-03-30
|
|
140
|
+
|
|
141
|
+
### Added
|
|
142
|
+
- **`safeSpawn` utility**: Cross-platform spawn wrapper that eliminates `DEP0190` deprecation warnings on Windows. Uses command string construction instead of shell+args array.
|
|
143
|
+
- **Runner tracking for `/lens-booboo`**: Each runner now reports execution time and findings count. Summary shows `[1/10] runner name...` progress and final table with `| Runner | Status | Findings | Time |`.
|
|
144
|
+
- **Shared runner utilities**: Extracted `runner-helpers.ts` with:
|
|
145
|
+
- `createAvailabilityChecker()` - cached tool availability checks
|
|
146
|
+
- `createConfigFinder()` - rule directory resolution
|
|
147
|
+
- `createVenvFinder()` - venv-aware command lookup
|
|
148
|
+
- Shared `isSgAvailable()` for ast-grep
|
|
149
|
+
- **Shared diagnostic parsers**: Extracted `diagnostic-parsers.ts` with:
|
|
150
|
+
- `createLineParser()` - factory for line-based tool output
|
|
151
|
+
- `parseRuffOutput`, `parseGoVetOutput`, `createBiomeParser()` - pre-built parsers
|
|
152
|
+
- `createSimpleParser()` - simplified factory for standard formats
|
|
153
|
+
- **Architect test coverage**: 5 new tests for the architect runner (config loading, size limits, pattern detection, test file exclusion).
|
|
154
|
+
- **Type extraction**: Created `clients/ast-grep-types.ts` to break circular dependencies between `ast-grep-client`, `ast-grep-parser`, and `ast-grep-rule-manager`.
|
|
155
|
+
|
|
156
|
+
### Changed
|
|
157
|
+
- **26 files refactored to use `safeSpawn`**: Eliminated `shell: process.platform === "win32"` deprecation pattern across all clients and runners.
|
|
158
|
+
- **Updated runners to use shared utilities**:
|
|
159
|
+
- `ruff.ts`, `pyright.ts` → use `createAvailabilityChecker()`
|
|
160
|
+
- `python-slop.ts`, `ts-slop.ts` → use `createConfigFinder()` and shared `isSgAvailable()`
|
|
161
|
+
- `ruff.ts`, `go-vet.ts`, `biome.ts` → use shared diagnostic parsers
|
|
162
|
+
- **Architect runner improvements**:
|
|
163
|
+
- Added `skipTestFiles: true` to reduce noise from test files
|
|
164
|
+
- Updated `default-architect.yaml` with per-file-type limits (500 services, 1000 clients, 5000 tests)
|
|
165
|
+
- Removed `no process.env` rule (too strict for CLI tools)
|
|
166
|
+
- Relaxed `console.log` rule to only apply to `src/` and `lib/` directories
|
|
167
|
+
- **Test cleanup safety**: Fixed all test files to use `fs.existsSync()` before `fs.unlinkSync()` to prevent ENOENT errors.
|
|
168
|
+
|
|
169
|
+
### Fixed
|
|
170
|
+
- **Circular dependencies**: Eliminated 2 cycles (`ast-grep-client` ↔ `ast-grep-parser`, `ast-grep-client` ↔ `ast-grep-rule-manager`) by extracting shared types.
|
|
171
|
+
- **Test flakiness**: All 70 test files now pass consistently (666 tests total).
|
|
172
|
+
|
|
173
|
+
### Code Quality
|
|
174
|
+
- **Lines saved**: ~350 lines of duplicated code removed across utilities and parsers.
|
|
175
|
+
- **Architect violations**: Reduced from 404 to ~50-80 (after test file exclusion + relaxed rules).
|
|
176
|
+
|
|
177
|
+
## [2.3.0] - 2026-03-30
|
|
178
|
+
|
|
179
|
+
### Added
|
|
180
|
+
- **NAPI-based runner (`ast-grep-napi`)**: 100x faster TypeScript/JavaScript analysis (~9ms vs ~1200ms). Uses `@ast-grep/napi` for native-speed structural pattern matching. Priority 15, applies to TS/JS files only.
|
|
181
|
+
- **Python slop detection (`python-slop`)**: New CLI runner with ~40 AI slop patterns from slop-code-bench research. Detects chained comparisons, manual min/max, redundant if/else, list comprehension opportunities, etc.
|
|
182
|
+
- **TypeScript slop detection (`ts-slop-rules`)**: ~30 patterns for TS/JS slop detection including `for-index-length`, `empty-array-check`, `redundant-filter-map`, `double-negation`, `unnecessary-array-from`.
|
|
183
|
+
- **`fix-simplified.ts` command**: New streamlined `/lens-booboo-fix` implementation with file-level exclusions (test files, excluded dirs) and anti-slop guidance. Uses `pi.sendUserMessage()` for actionable AI prompts.
|
|
184
|
+
- **Comprehensive test coverage**: 25+ tests added across all runners (NAPI, Python slop, TS slop, YAML loading).
|
|
185
|
+
- **Codebase self-scan**: `scan_codebase.test.ts` for testing the NAPI runner against the pi-lens codebase itself.
|
|
186
|
+
|
|
187
|
+
### Changed
|
|
188
|
+
- **Architecture documentation**: Updated README with complete architecture overview, runner system diagram, and language support matrix.
|
|
189
|
+
- **Disabled problematic slop rules**: `ts-for-index-length` and `ts-unnecessary-array-isarray` disabled due to false positives on legitimate index-based operations.
|
|
190
|
+
- **Runner registration**: Updated `clients/dispatch/runners/index.ts` with new runner priorities (ts-lsp/pyright at 5, ast-grep-napi at 15, python-slop at 25).
|
|
191
|
+
- **TS slop runner disabled**: CLI runner `ts-slop.ts` disabled in favor of NAPI-based detection (faster, same rules).
|
|
192
|
+
|
|
193
|
+
### Deprecated
|
|
194
|
+
- **`/lens-rate` command**: Now shows deprecation warning. Needs re-structuring. Users should use `/lens-booboo` instead.
|
|
195
|
+
- **`/lens-metrics` command**: Now shows deprecation warning. Temporarily disabled, will be restructured. Users should use `/lens-booboo` instead.
|
|
196
|
+
|
|
197
|
+
### Removed
|
|
198
|
+
- **Old implementations removed**: 259 lines of deprecated command code removed from `index.ts`.
|
|
199
|
+
|
|
200
|
+
### Repository Cleanup
|
|
201
|
+
- **Local-only files removed from GitHub**: `.pisessionsummaries/` and `refactor.md` removed from repo (still in local `.gitignore`).
|
|
202
|
+
|
|
5
203
|
## [2.1.1] - 2026-03-29
|
|
6
204
|
|
|
7
205
|
### Added
|