pi-lens 4.1.3 → 4.1.4

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.
Files changed (266) hide show
  1. package/CHANGELOG.md +988 -0
  2. package/README.md +3 -0
  3. package/config/biome/core.jsonc +11 -2
  4. package/config/dependency-cruiser-eager-allowlist.json +13 -1
  5. package/dist/clients/actionable-warnings-logger.js +2 -2
  6. package/dist/clients/actionable-warnings.js +927 -80
  7. package/dist/clients/agent-behavior-client.js +13 -4
  8. package/dist/clients/ast-grep-client.js +123 -3
  9. package/dist/clients/ast-grep-rule-manager.js +60 -5
  10. package/dist/clients/ast-grep-tool-logger.js +2 -2
  11. package/dist/clients/bash-file-access.js +1 -3
  12. package/dist/clients/biome-client.js +9 -2
  13. package/dist/clients/blocker-freshness.js +14 -0
  14. package/dist/clients/bootstrap.js +509 -73
  15. package/dist/clients/bounded-cache.js +152 -12
  16. package/dist/clients/bounded-telemetry.js +59 -4
  17. package/dist/clients/bundled-resource-health.js +113 -0
  18. package/dist/clients/bus-events-logger.js +2 -2
  19. package/dist/clients/cache/rule-cache.js +31 -4
  20. package/dist/clients/cache-manager.js +105 -6
  21. package/dist/clients/cache-observability.js +44 -18
  22. package/dist/clients/cargo-manifest.js +422 -0
  23. package/dist/clients/cascade-logger.js +2 -2
  24. package/dist/clients/code-quality-warnings.js +13 -3
  25. package/dist/clients/complexity-client.js +16 -5
  26. package/dist/clients/config-core/deny.js +221 -0
  27. package/dist/clients/config-core/index.js +47 -0
  28. package/dist/clients/config-core/merge.js +357 -0
  29. package/dist/clients/config-core/normalize.js +340 -0
  30. package/dist/clients/config-core/process-spec.js +248 -0
  31. package/dist/clients/config-core/provenance.js +171 -0
  32. package/dist/clients/config-core/records.js +218 -0
  33. package/dist/clients/config-core/resolve.js +125 -0
  34. package/dist/clients/config-core/safe-object.js +78 -0
  35. package/dist/clients/config-core/schema.js +167 -0
  36. package/dist/clients/config-diagnostic-codes.js +281 -0
  37. package/dist/clients/config-locations.js +160 -0
  38. package/dist/clients/config-resolve.js +789 -0
  39. package/dist/clients/config-schema.js +197 -0
  40. package/dist/clients/config-warn.js +407 -0
  41. package/dist/clients/dead-code-client.js +19 -14
  42. package/dist/clients/dead-code-logger.js +2 -2
  43. package/dist/clients/deadline-utils.js +178 -0
  44. package/dist/clients/debug-handles.js +2 -2
  45. package/dist/clients/debug-heap.js +3 -3
  46. package/dist/clients/deferred-lsp-work.js +106 -0
  47. package/dist/clients/degradation-ledger.js +113 -7
  48. package/dist/clients/dependency-checker.js +8 -19
  49. package/dist/clients/diagnostic-line-freshness.js +12 -9
  50. package/dist/clients/diagnostic-logger.js +14 -4
  51. package/dist/clients/dispatch/dispatcher.js +162 -18
  52. package/dist/clients/dispatch/fact-store.js +97 -0
  53. package/dist/clients/dispatch/integration.js +9 -7
  54. package/dist/clients/dispatch/runners/actionlint.js +0 -1
  55. package/dist/clients/dispatch/runners/ast-grep-napi.js +380 -26
  56. package/dist/clients/dispatch/runners/biome-check.js +0 -1
  57. package/dist/clients/dispatch/runners/cpp-check.js +0 -1
  58. package/dist/clients/dispatch/runners/credo.js +0 -1
  59. package/dist/clients/dispatch/runners/cue-vet.js +0 -1
  60. package/dist/clients/dispatch/runners/dart-analyze.js +0 -1
  61. package/dist/clients/dispatch/runners/detekt.js +0 -1
  62. package/dist/clients/dispatch/runners/dotnet-build.js +0 -1
  63. package/dist/clients/dispatch/runners/elixir-check.js +0 -1
  64. package/dist/clients/dispatch/runners/eslint.js +0 -1
  65. package/dist/clients/dispatch/runners/fact-rules.js +0 -1
  66. package/dist/clients/dispatch/runners/fish-indent.js +0 -1
  67. package/dist/clients/dispatch/runners/gleam-check.js +0 -1
  68. package/dist/clients/dispatch/runners/go-vet.js +1 -3
  69. package/dist/clients/dispatch/runners/golangci-lint.js +0 -1
  70. package/dist/clients/dispatch/runners/hadolint.js +0 -1
  71. package/dist/clients/dispatch/runners/helm-lint.js +0 -1
  72. package/dist/clients/dispatch/runners/helm-render.js +0 -1
  73. package/dist/clients/dispatch/runners/htmlhint.js +0 -1
  74. package/dist/clients/dispatch/runners/javac.js +0 -1
  75. package/dist/clients/dispatch/runners/ktlint.js +0 -1
  76. package/dist/clients/dispatch/runners/lsp.js +0 -1
  77. package/dist/clients/dispatch/runners/markdownlint.js +0 -1
  78. package/dist/clients/dispatch/runners/mypy.js +0 -1
  79. package/dist/clients/dispatch/runners/oxlint.js +13 -18
  80. package/dist/clients/dispatch/runners/php-lint.js +0 -1
  81. package/dist/clients/dispatch/runners/phpstan.js +0 -1
  82. package/dist/clients/dispatch/runners/prisma-validate.js +0 -1
  83. package/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -1
  84. package/dist/clients/dispatch/runners/pyright.js +7 -4
  85. package/dist/clients/dispatch/runners/rubocop.js +0 -1
  86. package/dist/clients/dispatch/runners/ruff.js +0 -1
  87. package/dist/clients/dispatch/runners/rust-clippy.js +1 -3
  88. package/dist/clients/dispatch/runners/shellcheck.js +0 -1
  89. package/dist/clients/dispatch/runners/shfmt.js +0 -1
  90. package/dist/clients/dispatch/runners/spellcheck.js +0 -1
  91. package/dist/clients/dispatch/runners/spotbugs.js +0 -1
  92. package/dist/clients/dispatch/runners/sqlfluff.js +0 -1
  93. package/dist/clients/dispatch/runners/stylelint.js +0 -1
  94. package/dist/clients/dispatch/runners/swiftlint.js +0 -1
  95. package/dist/clients/dispatch/runners/taplo.js +0 -1
  96. package/dist/clients/dispatch/runners/terragrunt.js +0 -1
  97. package/dist/clients/dispatch/runners/tflint.js +0 -1
  98. package/dist/clients/dispatch/runners/tree-sitter.js +0 -1
  99. package/dist/clients/dispatch/runners/trivy-config.js +0 -1
  100. package/dist/clients/dispatch/runners/utils/availability-policy.js +3 -0
  101. package/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +3 -4
  102. package/dist/clients/dispatch/runners/utils/runner-helpers.js +194 -80
  103. package/dist/clients/dispatch/runners/utils/toolchain-availability.js +84 -15
  104. package/dist/clients/dispatch/runners/vale.js +0 -1
  105. package/dist/clients/dispatch/runners/yamllint.js +0 -1
  106. package/dist/clients/dispatch/runners/zig-check.js +0 -1
  107. package/dist/clients/disposition-logger.js +3 -3
  108. package/dist/clients/effective-config.js +403 -0
  109. package/dist/clients/error-class.js +23 -0
  110. package/dist/clients/event-loop-hold.js +274 -0
  111. package/dist/clients/extension-log.js +2 -2
  112. package/dist/clients/feature-hints.js +2 -1
  113. package/dist/clients/file-time.js +6 -1
  114. package/dist/clients/file-utils.js +112 -9
  115. package/dist/clients/finding-delivery-gate.js +50 -13
  116. package/dist/clients/format-service.js +6 -1
  117. package/dist/clients/formatters.js +276 -102
  118. package/dist/clients/freshness-cadence.js +17 -0
  119. package/dist/clients/generated-artifacts.js +114 -19
  120. package/dist/clients/generation-guard.js +4 -9
  121. package/dist/clients/git-guard.js +1 -1
  122. package/dist/clients/go-client.js +39 -0
  123. package/dist/clients/gradle-ktfmt-style.js +252 -0
  124. package/dist/clients/hashline-anchor.js +424 -0
  125. package/dist/clients/hook-budgets.js +76 -0
  126. package/dist/clients/host-edit-normalize.js +5 -2
  127. package/dist/clients/host-ports.js +1 -1
  128. package/dist/clients/installer/index.js +71 -52
  129. package/dist/clients/instance-reaper.js +104 -230
  130. package/dist/clients/instance-registry.js +6 -3
  131. package/dist/clients/language-registry.js +595 -0
  132. package/dist/clients/latency-logger.js +160 -2
  133. package/dist/clients/ledger-bounds.js +13 -0
  134. package/dist/clients/lens-config.js +141 -30
  135. package/dist/clients/lens-engine.js +30 -37
  136. package/dist/clients/lens-flag-registry.js +59 -6
  137. package/dist/clients/log-cleanup.js +2 -2
  138. package/dist/clients/lsp/aggregation.js +3 -1
  139. package/dist/clients/lsp/client.js +168 -30
  140. package/dist/clients/lsp/config.js +483 -158
  141. package/dist/clients/lsp/diagnostic-binding.js +1 -1
  142. package/dist/clients/lsp/edits.js +15 -2
  143. package/dist/clients/lsp/index.js +676 -71
  144. package/dist/clients/lsp/language.js +18 -169
  145. package/dist/clients/lsp/launch.js +2 -1
  146. package/dist/clients/lsp/pending-aux-coverage.js +5 -16
  147. package/dist/clients/lsp/server.js +284 -147
  148. package/dist/clients/lsp/session-roots.js +116 -23
  149. package/dist/clients/lsp/spawn-history.js +2 -7
  150. package/dist/clients/lsp/tsserver-sync.js +9 -2
  151. package/dist/clients/lsp/workspace-diagnostics-cache.js +1 -1
  152. package/dist/clients/lsp-mutation.js +163 -21
  153. package/dist/clients/map-with-concurrency.js +36 -0
  154. package/dist/clients/mcp/analyze.js +33 -4
  155. package/dist/clients/mcp/session.js +5 -16
  156. package/dist/clients/memory-sampler.js +8 -3
  157. package/dist/clients/middle-man-analysis.js +2 -4
  158. package/dist/clients/module-report.js +20 -45
  159. package/dist/clients/mutating-tool.js +651 -0
  160. package/dist/clients/mutation-attribution.js +368 -0
  161. package/dist/clients/mutation-bridge.js +240 -0
  162. package/dist/clients/ndjson-logger.js +247 -20
  163. package/dist/clients/observed-mutation-sources.js +101 -0
  164. package/dist/clients/observed-mutation.js +1215 -0
  165. package/dist/clients/opaque-mutation-scan.js +68 -22
  166. package/dist/clients/opengrep-config.js +4 -0
  167. package/dist/clients/package-manager.js +195 -26
  168. package/dist/clients/partial-edit-apply.js +359 -80
  169. package/dist/clients/path-attribution-telemetry.js +23 -7
  170. package/dist/clients/path-keyed-map.js +21 -2
  171. package/dist/clients/path-utils.js +428 -13
  172. package/dist/clients/persist-debounce.js +8 -1
  173. package/dist/clients/php-cs-fixer-config.js +114 -0
  174. package/dist/clients/pipeline.js +77 -16
  175. package/dist/clients/probe-home-state.js +228 -0
  176. package/dist/clients/process-bridge.js +66 -0
  177. package/dist/clients/process-snapshot.js +68 -0
  178. package/dist/clients/project-diagnostics/fresh-fetch.js +4 -3
  179. package/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +27 -3
  180. package/dist/clients/project-diagnostics/scanner.js +51 -20
  181. package/dist/clients/project-lens-config.js +393 -122
  182. package/dist/clients/project-snapshot.js +52 -24
  183. package/dist/clients/python-environment.js +217 -0
  184. package/dist/clients/python-provenance.js +639 -0
  185. package/dist/clients/quiet-window.js +6 -1
  186. package/dist/clients/read-bridge.js +13 -21
  187. package/dist/clients/read-expansion.js +9 -46
  188. package/dist/clients/read-guard-logger.js +15 -4
  189. package/dist/clients/read-guard-tool-lines.js +364 -212
  190. package/dist/clients/read-guard.js +21 -0
  191. package/dist/clients/resource-sampler.js +195 -96
  192. package/dist/clients/review-graph/builder.js +152 -109
  193. package/dist/clients/review-graph/service.js +55 -3
  194. package/dist/clients/review-graph/shared-extraction-ir.js +7 -15
  195. package/dist/clients/review-graph/workspace-modules.js +10 -74
  196. package/dist/clients/review-graph-logger.js +9 -3
  197. package/dist/clients/runtime-agent-end.js +18 -2
  198. package/dist/clients/runtime-context.js +49 -16
  199. package/dist/clients/runtime-coordinator.js +25 -6
  200. package/dist/clients/runtime-session.js +139 -22
  201. package/dist/clients/runtime-tool-call.js +168 -35
  202. package/dist/clients/runtime-tool-result.js +797 -243
  203. package/dist/clients/runtime-turn.js +1028 -53
  204. package/dist/clients/rust-client.js +31 -0
  205. package/dist/clients/safe-spawn.js +33 -10
  206. package/dist/clients/sanitize.js +7 -1
  207. package/dist/clients/scratch-tree-policy.js +1 -3
  208. package/dist/clients/security-scan-client.js +3 -0
  209. package/dist/clients/session-lifecycle.js +1 -1
  210. package/dist/clients/session-start-observability.js +79 -0
  211. package/dist/clients/sessionstart-logger.js +12 -3
  212. package/dist/clients/sgconfig.js +6 -1
  213. package/dist/clients/skills-resolver.js +105 -0
  214. package/dist/clients/smells-rollup.js +2 -2
  215. package/dist/clients/string-utils.js +13 -0
  216. package/dist/clients/subagent-mode.js +17 -4
  217. package/dist/clients/test-runner-client.js +176 -39
  218. package/dist/clients/test-runner-delivery.js +239 -0
  219. package/dist/clients/tool-definition.js +41 -1
  220. package/dist/clients/tool-policy.js +91 -21
  221. package/dist/clients/tree-sitter-cache.js +40 -40
  222. package/dist/clients/tree-sitter-client.js +86 -48
  223. package/dist/clients/tree-sitter-logger.js +2 -2
  224. package/dist/clients/tree-sitter-query-loader.js +81 -1
  225. package/dist/clients/tree-sitter-shared.js +51 -46
  226. package/dist/clients/tree-sitter-symbol-extractor.js +28 -0
  227. package/dist/clients/typos-config.js +5 -0
  228. package/dist/clients/user-notify.js +6 -2
  229. package/dist/clients/widget-state.js +191 -26
  230. package/dist/clients/word-index-logger.js +2 -2
  231. package/dist/clients/word-index-store.js +20 -5
  232. package/dist/clients/word-index.js +243 -31
  233. package/dist/clients/workspace-topology.js +8 -1
  234. package/dist/clients/zizmor-config.js +3 -0
  235. package/dist/index.js +64335 -54300
  236. package/dist/mcp/analyze-cli.js +3 -1
  237. package/dist/mcp/server.js +127 -5
  238. package/dist/scripts/lib/process-scan.mjs +583 -0
  239. package/dist/scripts/lib/skills-predicate.mjs +129 -0
  240. package/dist/tools/effective-config.js +89 -0
  241. package/dist/tools/lens-diagnostics.js +95 -24
  242. package/dist/tools/lsp-diagnostics.js +67 -80
  243. package/dist/tools/lsp-navigation.js +37 -16
  244. package/dist/tools/shared.js +0 -1
  245. package/docs/agent-guide.md +64 -1
  246. package/docs/configuration.md +222 -0
  247. package/docs/dependencies.md +3 -3
  248. package/docs/features.md +44 -5
  249. package/docs/language-coverage.md +2 -2
  250. package/docs/pi-lens-fixer.md +25 -0
  251. package/docs/pi-lens-investigator.md +25 -0
  252. package/docs/pi-lens-reviewer.md +27 -0
  253. package/docs/pi-lens-subagent.md +38 -0
  254. package/docs/pi-lens-warden.md +55 -0
  255. package/docs/public-api-stability.md +359 -0
  256. package/docs/release-qa-baseline.md +182 -0
  257. package/docs/subagent-compat.md +110 -30
  258. package/docs/tree-sitter_rules_catalog.md +2 -2
  259. package/package.json +15 -23
  260. package/rules/tree-sitter-queries/python/python-cross-language-method.yml +3 -3
  261. package/rules/tree-sitter-queries/python/python-hallucinated-import.yml +2 -2
  262. package/rules/tree-sitter-queries/python/python-sql-injection.yml +12 -2
  263. package/scripts/analyze-pi-lens-logs.mjs +192 -1
  264. package/scripts/install-selftest.mjs +58 -2
  265. package/scripts/lib/skills-predicate.mjs +129 -0
  266. package/scripts/rpc-load-check.mjs +3 -1
package/README.md CHANGED
@@ -152,6 +152,9 @@ Or from git:
152
152
  pi install git:github.com/apmantza/pi-lens
153
153
  ```
154
154
 
155
+ Requires Node.js >=22.19.0 (matches the pi host's own floor — see `engines`
156
+ in `package.json`).
157
+
155
158
  > **npm v12 users:** dependency lifecycle scripts (e.g. `@ast-grep/cli`'s
156
159
  > `postinstall`) now require explicit approval — if `npm install` warns about
157
160
  > unreviewed install scripts, review and allow them with
@@ -12,8 +12,17 @@
12
12
  "noUnusedImports": "error",
13
13
  "noUndeclaredVariables": "warn"
14
14
  },
15
- "style": {
16
- "useConst": "error",
15
+ "style": {
16
+ // Off (refs #2385): its "safe" fix rewrites value imports to
17
+ // `import type` for imports used only in type positions, which
18
+ // erases the runtime binding that experimental decorator metadata
19
+ // (`emitDecoratorMetadata` -> design:type) still needs — verified
20
+ // against real biome 2.5.9 + tsc: the emitted design:type identity
21
+ // changes from the imported class to `Function`. Biome's own rule
22
+ // docs recommend disabling this rule for such repos. Explicit
23
+ // project biome.json(c) configs remain authoritative and unaffected.
24
+ "useImportType": "off",
25
+ "useConst": "error",
17
26
  "useTemplate": "error",
18
27
  "noNegationElse": "error",
19
28
  "noNestedTernary": "error",
@@ -2,6 +2,7 @@
2
2
  "./clients/agent-nudge.js",
3
3
  "./clients/ast-grep-client.js",
4
4
  "./clients/bootstrap.js",
5
+ "./clients/bounded-cache.js",
5
6
  "./clients/bounded-telemetry.js",
6
7
  "./clients/build-identity.js",
7
8
  "./clients/bus-events-logger.js",
@@ -30,6 +31,7 @@
30
31
  "./clients/installer/index.js",
31
32
  "./clients/instance-reaper.js",
32
33
  "./clients/instance-registry.js",
34
+ "./clients/language-profile.js",
33
35
  "./clients/latency-logger.js",
34
36
  "./clients/lens-config.js",
35
37
  "./clients/lens-events.js",
@@ -40,15 +42,23 @@
40
42
  "./clients/lsp/cascade-tier.js",
41
43
  "./clients/lsp/config.js",
42
44
  "./clients/lsp/index.js",
45
+ "./clients/lsp/session-roots.js",
43
46
  "./clients/memory-sampler.js",
44
47
  "./clients/message-end-attribution.js",
45
- "./clients/package-root.js",
48
+ "./clients/mutating-tool.js",
49
+ "./clients/mutation-bridge.js",
50
+ // #2430: the agent_settled sweep and its post-drain re-baseline. Eager
51
+ // because they run inside the settle handler, on the same path as the
52
+ // deferred drain they bracket.
53
+ "./clients/observed-mutation-sources.js",
54
+ "./clients/observed-mutation.js",
46
55
  "./clients/path-attribution-telemetry.js",
47
56
  "./clients/path-utils.js",
48
57
  "./clients/project-lens-config.js",
49
58
  "./clients/project-trust.js",
50
59
  "./clients/quiet-window.js",
51
60
  "./clients/read-bridge.js",
61
+ "./clients/read-guard-tool-lines.js",
52
62
  // index.ts:56 is type-only, but dependency-cruiser parses it as an edge.
53
63
  "./clients/read-guard.js",
54
64
  "./clients/recent-touches.js",
@@ -65,8 +75,10 @@
65
75
  "./clients/session-start-observability.js",
66
76
  "./clients/session-state-store.js",
67
77
  "./clients/sessionstart-logger.js",
78
+ "./clients/skills-resolver.js",
68
79
  "./clients/smells-rollup.js",
69
80
  "./clients/startup-timing.js",
81
+ "./clients/test-runner-delivery.js",
70
82
  "./clients/tool-definition.js",
71
83
  "./clients/tool-render.js",
72
84
  "./clients/tool-set-policy.js",
@@ -1,9 +1,9 @@
1
1
  import * as path from "node:path";
2
2
  import { isTestMode } from "./env-utils.js";
3
- import { getGlobalPiLensDir } from "./file-utils.js";
3
+ import { getGlobalPiLensLogDir } from "./probe-home-state.js";
4
4
  import { createNdjsonLogger } from "./ndjson-logger.js";
5
5
  import { normalizeFilePath } from "./path-utils.js";
6
- const AW_LOG_DIR = getGlobalPiLensDir();
6
+ const AW_LOG_DIR = getGlobalPiLensLogDir();
7
7
  const AW_LOG_FILE = path.join(AW_LOG_DIR, "actionable-warnings.log");
8
8
  const AW_LOG_BACKUP_FILE = path.join(AW_LOG_DIR, "actionable-warnings.log.1");
9
9
  const MAX_LOG_BYTES = Math.max(128 * 1024, Number.parseInt(process.env.PI_LENS_AW_LOG_MAX_BYTES ?? "1048576", 10) ||