@herbertgao/pi-extensions 2026.9.0 → 2026.9.1

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 (293) hide show
  1. package/node_modules/@czottmann/pi-automode/CHANGELOG.md +13 -1
  2. package/node_modules/@czottmann/pi-automode/README.md +20 -0
  3. package/node_modules/@czottmann/pi-automode/docs/GLOSSARY.md +1 -1
  4. package/node_modules/@czottmann/pi-automode/docs/automode-classifier-flow.md +2 -1
  5. package/node_modules/@czottmann/pi-automode/docs/defaults.md +3 -2
  6. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/classifier.ts +38 -2
  7. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/constants.ts +5 -3
  8. package/node_modules/@czottmann/pi-automode/extensions/auto-mode/extension.ts +11 -3
  9. package/node_modules/@czottmann/pi-automode/package.json +1 -1
  10. package/node_modules/@pi-plugins/fast-mode/README.md +5 -3
  11. package/node_modules/@pi-plugins/fast-mode/dist/index.d.mts.map +1 -1
  12. package/node_modules/@pi-plugins/fast-mode/dist/index.mjs +20 -55
  13. package/node_modules/@pi-plugins/fast-mode/dist/index.mjs.map +1 -1
  14. package/node_modules/@pi-plugins/fast-mode/package.json +1 -1
  15. package/node_modules/pi-lens/CHANGELOG.md +988 -0
  16. package/node_modules/pi-lens/README.md +3 -0
  17. package/node_modules/pi-lens/config/biome/core.jsonc +11 -2
  18. package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +13 -1
  19. package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +2 -2
  20. package/node_modules/pi-lens/dist/clients/actionable-warnings.js +927 -80
  21. package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +13 -4
  22. package/node_modules/pi-lens/dist/clients/ast-grep-client.js +123 -3
  23. package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +60 -5
  24. package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +2 -2
  25. package/node_modules/pi-lens/dist/clients/bash-file-access.js +1 -3
  26. package/node_modules/pi-lens/dist/clients/biome-client.js +9 -2
  27. package/node_modules/pi-lens/dist/clients/blocker-freshness.js +14 -0
  28. package/node_modules/pi-lens/dist/clients/bootstrap.js +509 -73
  29. package/node_modules/pi-lens/dist/clients/bounded-cache.js +152 -12
  30. package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +59 -4
  31. package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +113 -0
  32. package/node_modules/pi-lens/dist/clients/bus-events-logger.js +2 -2
  33. package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +31 -4
  34. package/node_modules/pi-lens/dist/clients/cache-manager.js +105 -6
  35. package/node_modules/pi-lens/dist/clients/cache-observability.js +44 -18
  36. package/node_modules/pi-lens/dist/clients/cargo-manifest.js +422 -0
  37. package/node_modules/pi-lens/dist/clients/cascade-logger.js +2 -2
  38. package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +13 -3
  39. package/node_modules/pi-lens/dist/clients/complexity-client.js +16 -5
  40. package/node_modules/pi-lens/dist/clients/config-core/deny.js +221 -0
  41. package/node_modules/pi-lens/dist/clients/config-core/index.js +47 -0
  42. package/node_modules/pi-lens/dist/clients/config-core/merge.js +357 -0
  43. package/node_modules/pi-lens/dist/clients/config-core/normalize.js +340 -0
  44. package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +248 -0
  45. package/node_modules/pi-lens/dist/clients/config-core/provenance.js +171 -0
  46. package/node_modules/pi-lens/dist/clients/config-core/records.js +218 -0
  47. package/node_modules/pi-lens/dist/clients/config-core/resolve.js +125 -0
  48. package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +78 -0
  49. package/node_modules/pi-lens/dist/clients/config-core/schema.js +167 -0
  50. package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +281 -0
  51. package/node_modules/pi-lens/dist/clients/config-locations.js +160 -0
  52. package/node_modules/pi-lens/dist/clients/config-resolve.js +789 -0
  53. package/node_modules/pi-lens/dist/clients/config-schema.js +197 -0
  54. package/node_modules/pi-lens/dist/clients/config-warn.js +407 -0
  55. package/node_modules/pi-lens/dist/clients/dead-code-client.js +19 -14
  56. package/node_modules/pi-lens/dist/clients/dead-code-logger.js +2 -2
  57. package/node_modules/pi-lens/dist/clients/deadline-utils.js +178 -0
  58. package/node_modules/pi-lens/dist/clients/debug-handles.js +2 -2
  59. package/node_modules/pi-lens/dist/clients/debug-heap.js +3 -3
  60. package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +106 -0
  61. package/node_modules/pi-lens/dist/clients/degradation-ledger.js +113 -7
  62. package/node_modules/pi-lens/dist/clients/dependency-checker.js +8 -19
  63. package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +12 -9
  64. package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +14 -4
  65. package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +162 -18
  66. package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +97 -0
  67. package/node_modules/pi-lens/dist/clients/dispatch/integration.js +9 -7
  68. package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -1
  69. package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +380 -26
  70. package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -1
  71. package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -1
  72. package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -1
  73. package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -1
  74. package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -1
  75. package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -1
  76. package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -1
  77. package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -1
  78. package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -1
  79. package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -1
  80. package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -1
  81. package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -1
  82. package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +1 -3
  83. package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -1
  84. package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -1
  85. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -1
  86. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -1
  87. package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -1
  88. package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -1
  89. package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -1
  90. package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -1
  91. package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -1
  92. package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -1
  93. package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +13 -18
  94. package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -1
  95. package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -1
  96. package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -1
  97. package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -1
  98. package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +7 -4
  99. package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -1
  100. package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -1
  101. package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +1 -3
  102. package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -1
  103. package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -1
  104. package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -1
  105. package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -1
  106. package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -1
  107. package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -1
  108. package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -1
  109. package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -1
  110. package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -1
  111. package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -1
  112. package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -1
  113. package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -1
  114. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +3 -0
  115. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +3 -4
  116. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +194 -80
  117. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +84 -15
  118. package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -1
  119. package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -1
  120. package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -1
  121. package/node_modules/pi-lens/dist/clients/disposition-logger.js +3 -3
  122. package/node_modules/pi-lens/dist/clients/effective-config.js +403 -0
  123. package/node_modules/pi-lens/dist/clients/error-class.js +23 -0
  124. package/node_modules/pi-lens/dist/clients/event-loop-hold.js +274 -0
  125. package/node_modules/pi-lens/dist/clients/extension-log.js +2 -2
  126. package/node_modules/pi-lens/dist/clients/feature-hints.js +2 -1
  127. package/node_modules/pi-lens/dist/clients/file-time.js +6 -1
  128. package/node_modules/pi-lens/dist/clients/file-utils.js +112 -9
  129. package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +50 -13
  130. package/node_modules/pi-lens/dist/clients/format-service.js +6 -1
  131. package/node_modules/pi-lens/dist/clients/formatters.js +276 -102
  132. package/node_modules/pi-lens/dist/clients/freshness-cadence.js +17 -0
  133. package/node_modules/pi-lens/dist/clients/generated-artifacts.js +114 -19
  134. package/node_modules/pi-lens/dist/clients/generation-guard.js +4 -9
  135. package/node_modules/pi-lens/dist/clients/git-guard.js +1 -1
  136. package/node_modules/pi-lens/dist/clients/go-client.js +39 -0
  137. package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +252 -0
  138. package/node_modules/pi-lens/dist/clients/hashline-anchor.js +424 -0
  139. package/node_modules/pi-lens/dist/clients/hook-budgets.js +76 -0
  140. package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +5 -2
  141. package/node_modules/pi-lens/dist/clients/host-ports.js +1 -1
  142. package/node_modules/pi-lens/dist/clients/installer/index.js +71 -52
  143. package/node_modules/pi-lens/dist/clients/instance-reaper.js +104 -230
  144. package/node_modules/pi-lens/dist/clients/instance-registry.js +6 -3
  145. package/node_modules/pi-lens/dist/clients/language-registry.js +595 -0
  146. package/node_modules/pi-lens/dist/clients/latency-logger.js +160 -2
  147. package/node_modules/pi-lens/dist/clients/ledger-bounds.js +13 -0
  148. package/node_modules/pi-lens/dist/clients/lens-config.js +141 -30
  149. package/node_modules/pi-lens/dist/clients/lens-engine.js +30 -37
  150. package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +59 -6
  151. package/node_modules/pi-lens/dist/clients/log-cleanup.js +2 -2
  152. package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +3 -1
  153. package/node_modules/pi-lens/dist/clients/lsp/client.js +168 -30
  154. package/node_modules/pi-lens/dist/clients/lsp/config.js +483 -158
  155. package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +1 -1
  156. package/node_modules/pi-lens/dist/clients/lsp/edits.js +15 -2
  157. package/node_modules/pi-lens/dist/clients/lsp/index.js +676 -71
  158. package/node_modules/pi-lens/dist/clients/lsp/language.js +18 -169
  159. package/node_modules/pi-lens/dist/clients/lsp/launch.js +2 -1
  160. package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +5 -16
  161. package/node_modules/pi-lens/dist/clients/lsp/server.js +284 -147
  162. package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +116 -23
  163. package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +2 -7
  164. package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +9 -2
  165. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +1 -1
  166. package/node_modules/pi-lens/dist/clients/lsp-mutation.js +163 -21
  167. package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +36 -0
  168. package/node_modules/pi-lens/dist/clients/mcp/analyze.js +33 -4
  169. package/node_modules/pi-lens/dist/clients/mcp/session.js +5 -16
  170. package/node_modules/pi-lens/dist/clients/memory-sampler.js +8 -3
  171. package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +2 -4
  172. package/node_modules/pi-lens/dist/clients/module-report.js +20 -45
  173. package/node_modules/pi-lens/dist/clients/mutating-tool.js +651 -0
  174. package/node_modules/pi-lens/dist/clients/mutation-attribution.js +368 -0
  175. package/node_modules/pi-lens/dist/clients/mutation-bridge.js +240 -0
  176. package/node_modules/pi-lens/dist/clients/ndjson-logger.js +247 -20
  177. package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +101 -0
  178. package/node_modules/pi-lens/dist/clients/observed-mutation.js +1215 -0
  179. package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +68 -22
  180. package/node_modules/pi-lens/dist/clients/opengrep-config.js +4 -0
  181. package/node_modules/pi-lens/dist/clients/package-manager.js +195 -26
  182. package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +359 -80
  183. package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +23 -7
  184. package/node_modules/pi-lens/dist/clients/path-keyed-map.js +21 -2
  185. package/node_modules/pi-lens/dist/clients/path-utils.js +428 -13
  186. package/node_modules/pi-lens/dist/clients/persist-debounce.js +8 -1
  187. package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +114 -0
  188. package/node_modules/pi-lens/dist/clients/pipeline.js +77 -16
  189. package/node_modules/pi-lens/dist/clients/probe-home-state.js +228 -0
  190. package/node_modules/pi-lens/dist/clients/process-bridge.js +66 -0
  191. package/node_modules/pi-lens/dist/clients/process-snapshot.js +68 -0
  192. package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +4 -3
  193. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +27 -3
  194. package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +51 -20
  195. package/node_modules/pi-lens/dist/clients/project-lens-config.js +393 -122
  196. package/node_modules/pi-lens/dist/clients/project-snapshot.js +52 -24
  197. package/node_modules/pi-lens/dist/clients/python-environment.js +217 -0
  198. package/node_modules/pi-lens/dist/clients/python-provenance.js +639 -0
  199. package/node_modules/pi-lens/dist/clients/quiet-window.js +6 -1
  200. package/node_modules/pi-lens/dist/clients/read-bridge.js +13 -21
  201. package/node_modules/pi-lens/dist/clients/read-expansion.js +9 -46
  202. package/node_modules/pi-lens/dist/clients/read-guard-logger.js +15 -4
  203. package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +364 -212
  204. package/node_modules/pi-lens/dist/clients/read-guard.js +21 -0
  205. package/node_modules/pi-lens/dist/clients/resource-sampler.js +195 -96
  206. package/node_modules/pi-lens/dist/clients/review-graph/builder.js +152 -109
  207. package/node_modules/pi-lens/dist/clients/review-graph/service.js +55 -3
  208. package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +7 -15
  209. package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +10 -74
  210. package/node_modules/pi-lens/dist/clients/review-graph-logger.js +9 -3
  211. package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +18 -2
  212. package/node_modules/pi-lens/dist/clients/runtime-context.js +49 -16
  213. package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +25 -6
  214. package/node_modules/pi-lens/dist/clients/runtime-session.js +139 -22
  215. package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +168 -35
  216. package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +797 -243
  217. package/node_modules/pi-lens/dist/clients/runtime-turn.js +1028 -53
  218. package/node_modules/pi-lens/dist/clients/rust-client.js +31 -0
  219. package/node_modules/pi-lens/dist/clients/safe-spawn.js +33 -10
  220. package/node_modules/pi-lens/dist/clients/sanitize.js +7 -1
  221. package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +1 -3
  222. package/node_modules/pi-lens/dist/clients/security-scan-client.js +3 -0
  223. package/node_modules/pi-lens/dist/clients/session-lifecycle.js +1 -1
  224. package/node_modules/pi-lens/dist/clients/session-start-observability.js +79 -0
  225. package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +12 -3
  226. package/node_modules/pi-lens/dist/clients/sgconfig.js +6 -1
  227. package/node_modules/pi-lens/dist/clients/skills-resolver.js +105 -0
  228. package/node_modules/pi-lens/dist/clients/smells-rollup.js +2 -2
  229. package/node_modules/pi-lens/dist/clients/string-utils.js +13 -0
  230. package/node_modules/pi-lens/dist/clients/subagent-mode.js +17 -4
  231. package/node_modules/pi-lens/dist/clients/test-runner-client.js +176 -39
  232. package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +239 -0
  233. package/node_modules/pi-lens/dist/clients/tool-definition.js +41 -1
  234. package/node_modules/pi-lens/dist/clients/tool-policy.js +91 -21
  235. package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +40 -40
  236. package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +86 -48
  237. package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +2 -2
  238. package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +81 -1
  239. package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +51 -46
  240. package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +28 -0
  241. package/node_modules/pi-lens/dist/clients/typos-config.js +5 -0
  242. package/node_modules/pi-lens/dist/clients/user-notify.js +6 -2
  243. package/node_modules/pi-lens/dist/clients/widget-state.js +191 -26
  244. package/node_modules/pi-lens/dist/clients/word-index-logger.js +2 -2
  245. package/node_modules/pi-lens/dist/clients/word-index-store.js +20 -5
  246. package/node_modules/pi-lens/dist/clients/word-index.js +243 -31
  247. package/node_modules/pi-lens/dist/clients/workspace-topology.js +8 -1
  248. package/node_modules/pi-lens/dist/clients/zizmor-config.js +3 -0
  249. package/node_modules/pi-lens/dist/index.js +64335 -54300
  250. package/node_modules/pi-lens/dist/mcp/analyze-cli.js +3 -1
  251. package/node_modules/pi-lens/dist/mcp/server.js +127 -5
  252. package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +583 -0
  253. package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +129 -0
  254. package/node_modules/pi-lens/dist/tools/effective-config.js +89 -0
  255. package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +95 -24
  256. package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +67 -80
  257. package/node_modules/pi-lens/dist/tools/lsp-navigation.js +37 -16
  258. package/node_modules/pi-lens/dist/tools/shared.js +0 -1
  259. package/node_modules/pi-lens/docs/agent-guide.md +64 -1
  260. package/node_modules/pi-lens/docs/configuration.md +222 -0
  261. package/node_modules/pi-lens/docs/dependencies.md +3 -3
  262. package/node_modules/pi-lens/docs/features.md +44 -5
  263. package/node_modules/pi-lens/docs/language-coverage.md +2 -2
  264. package/node_modules/pi-lens/docs/pi-lens-fixer.md +25 -0
  265. package/node_modules/pi-lens/docs/pi-lens-investigator.md +25 -0
  266. package/node_modules/pi-lens/docs/pi-lens-reviewer.md +27 -0
  267. package/node_modules/pi-lens/docs/pi-lens-subagent.md +38 -0
  268. package/node_modules/pi-lens/docs/pi-lens-warden.md +55 -0
  269. package/node_modules/pi-lens/docs/public-api-stability.md +359 -0
  270. package/node_modules/pi-lens/docs/release-qa-baseline.md +182 -0
  271. package/node_modules/pi-lens/docs/subagent-compat.md +110 -30
  272. package/node_modules/pi-lens/docs/tree-sitter_rules_catalog.md +2 -2
  273. package/node_modules/pi-lens/package.json +15 -23
  274. package/node_modules/pi-lens/rules/tree-sitter-queries/python/python-cross-language-method.yml +3 -3
  275. package/node_modules/pi-lens/rules/tree-sitter-queries/python/python-hallucinated-import.yml +2 -2
  276. package/node_modules/pi-lens/rules/tree-sitter-queries/python/python-sql-injection.yml +12 -2
  277. package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +192 -1
  278. package/node_modules/pi-lens/scripts/install-selftest.mjs +58 -2
  279. package/node_modules/pi-lens/scripts/lib/skills-predicate.mjs +129 -0
  280. package/node_modules/pi-lens/scripts/rpc-load-check.mjs +3 -1
  281. package/node_modules/pi-web-access/CHANGELOG.md +28 -0
  282. package/node_modules/pi-web-access/README.md +62 -15
  283. package/node_modules/pi-web-access/curator-page.ts +3 -1
  284. package/node_modules/pi-web-access/curator-server.ts +5 -1
  285. package/node_modules/pi-web-access/gemini-search.ts +8 -4
  286. package/node_modules/pi-web-access/github-extract.ts +242 -1
  287. package/node_modules/pi-web-access/index.ts +118 -64
  288. package/node_modules/pi-web-access/mistral-search.ts +281 -0
  289. package/node_modules/pi-web-access/package.json +2 -2
  290. package/node_modules/pi-web-access/perplexity.ts +14 -1
  291. package/node_modules/pi-web-access/utils.ts +23 -6
  292. package/node_modules/pi-web-access/xai-search.ts +96 -33
  293. package/package.json +5 -5
@@ -893,7 +893,6 @@ const helmRenderRunner = {
893
893
  id: "helm-render",
894
894
  appliesTo: ["yaml", "helm-template"],
895
895
  priority: PRIORITY.GENERAL_ANALYSIS,
896
- enabledByDefault: true,
897
896
  skipTestFiles: false,
898
897
  timeoutMs: RENDER_TIMEOUT_MS + TRIVY_TIMEOUT_MS + 10_000,
899
898
  async run(ctx) {
@@ -47,7 +47,6 @@ const htmlhintRunner = {
47
47
  id: "htmlhint",
48
48
  appliesTo: ["html"],
49
49
  priority: PRIORITY.GENERAL_ANALYSIS,
50
- enabledByDefault: true,
51
50
  skipTestFiles: false,
52
51
  async run(ctx) {
53
52
  const cwd = ctx.cwd || process.cwd();
@@ -39,7 +39,6 @@ const javacRunner = {
39
39
  id: "javac",
40
40
  appliesTo: ["java"],
41
41
  priority: PRIORITY.GENERAL_ANALYSIS,
42
- enabledByDefault: true,
43
42
  skipTestFiles: false,
44
43
  async run(ctx) {
45
44
  const cwd = ctx.cwd || process.cwd();
@@ -56,7 +56,6 @@ const ktlintRunner = {
56
56
  id: "ktlint",
57
57
  appliesTo: ["kotlin"],
58
58
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
59
- enabledByDefault: true,
60
59
  skipTestFiles: false,
61
60
  async run(ctx) {
62
61
  const cwd = ctx.cwd || process.cwd();
@@ -93,7 +93,6 @@ const lspRunner = {
93
93
  // is now the only step this seam needs (#1545).
94
94
  appliesTo: getLspCapableKinds(),
95
95
  priority: PRIORITY.LSP_PRIMARY,
96
- enabledByDefault: true,
97
96
  timeoutMs: LSP_RUNNER_TIMEOUT_MS,
98
97
  async run(ctx) {
99
98
  const diagnosticPath = resolveRunnerPath(ctx.cwd, ctx.filePath);
@@ -94,7 +94,6 @@ const markdownlintRunner = {
94
94
  id: "markdownlint",
95
95
  appliesTo: ["markdown"],
96
96
  priority: PRIORITY.DOC_QUALITY,
97
- enabledByDefault: true,
98
97
  skipTestFiles: false,
99
98
  async run(ctx) {
100
99
  const cwd = ctx.cwd || process.cwd();
@@ -59,7 +59,6 @@ const mypyRunner = {
59
59
  id: "mypy",
60
60
  appliesTo: ["python"],
61
61
  priority: PRIORITY.GENERAL_ANALYSIS,
62
- enabledByDefault: true,
63
62
  skipTestFiles: false,
64
63
  async run(ctx) {
65
64
  const cwd = ctx.cwd || process.cwd();
@@ -6,9 +6,7 @@
6
6
  *
7
7
  * Requires: oxlint (npm install -g oxlint)
8
8
  */
9
- import * as fs from "node:fs";
10
- import * as path from "node:path";
11
- import { walkUpDirs } from "../../path-utils.js";
9
+ import { findLocalBinUpwards } from "../../package-manager.js";
12
10
  import { safeSpawnAsync } from "../../safe-spawn.js";
13
11
  import { truncatedByOutputCap } from "../../spawn-output-cap.js";
14
12
  import { getJstsLintPolicyForCwd, hasVitePlusConfig, } from "../../tool-policy.js";
@@ -30,21 +28,19 @@ const OXLINT_NO_FILES_REPORT_KEYS = new Set([
30
28
  "threads_count",
31
29
  "start_time",
32
30
  ]);
31
+ /**
32
+ * Vite+'s `vp` from the project's own `node_modules/.bin`.
33
+ *
34
+ * Delegates to THE shared bin walker (#2544 review F1). This was a private,
35
+ * UNCEILINGED copy of that walk, while `formatters.ts`'s `oxfmtFormatter`
36
+ * resolved the SAME binary — `vp` — through the ceilinged `findInNodeModules`:
37
+ * one `vp` resolver stopped at `$HOME` and the other climbed past it to the
38
+ * filesystem root, so which policy applied depended on whether the format path
39
+ * or the lint path asked. A `node_modules/.bin/vp` at or above `$HOME` can
40
+ * never be this project's own Vite+ install (#2514).
41
+ */
33
42
  function resolveLocalVp(cwd) {
34
- const isWin = process.platform === "win32";
35
- for (const dir of walkUpDirs(cwd)) {
36
- const candidates = isWin
37
- ? [
38
- path.join(dir, "node_modules", ".bin", "vp.cmd"),
39
- path.join(dir, "node_modules", ".bin", "vp"),
40
- ]
41
- : [path.join(dir, "node_modules", ".bin", "vp")];
42
- for (const candidate of candidates) {
43
- if (fs.existsSync(candidate))
44
- return candidate;
45
- }
46
- }
47
- return null;
43
+ return findLocalBinUpwards("vp", cwd) ?? null;
48
44
  }
49
45
  async function resolveVitePlusCommand(cwd) {
50
46
  const local = resolveLocalVp(cwd);
@@ -60,7 +56,6 @@ const oxlintRunner = {
60
56
  id: "oxlint",
61
57
  appliesTo: ["jsts"],
62
58
  priority: PRIORITY.LINT_SECONDARY,
63
- enabledByDefault: true,
64
59
  skipTestFiles: false,
65
60
  async run(ctx) {
66
61
  const cwd = ctx.cwd || process.cwd();
@@ -29,7 +29,6 @@ const phpLintRunner = {
29
29
  id: "php-lint",
30
30
  appliesTo: ["php"],
31
31
  priority: PRIORITY.GENERAL_ANALYSIS,
32
- enabledByDefault: true,
33
32
  skipTestFiles: false,
34
33
  async run(ctx) {
35
34
  const cwd = ctx.cwd || process.cwd();
@@ -82,7 +82,6 @@ const phpstanRunner = {
82
82
  id: "phpstan",
83
83
  appliesTo: ["php"],
84
84
  priority: PRIORITY.GENERAL_ANALYSIS,
85
- enabledByDefault: true,
86
85
  skipTestFiles: false,
87
86
  async run(ctx) {
88
87
  const cwd = ctx.cwd || process.cwd();
@@ -35,7 +35,6 @@ const prismaValidateRunner = {
35
35
  id: "prisma-validate",
36
36
  appliesTo: ["prisma"],
37
37
  priority: PRIORITY.GENERAL_ANALYSIS,
38
- enabledByDefault: true,
39
38
  skipTestFiles: false,
40
39
  async run(ctx) {
41
40
  const cwd = ctx.cwd || process.cwd();
@@ -269,7 +269,6 @@ const psScriptAnalyzerRunner = {
269
269
  id: "psscriptanalyzer",
270
270
  appliesTo: ["powershell"],
271
271
  priority: PRIORITY.GENERAL_ANALYSIS,
272
- enabledByDefault: true,
273
272
  skipTestFiles: false,
274
273
  async run(ctx) {
275
274
  const cmd = await resolvePowerShellCmd();
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { logExtension } from "../../extension-log.js";
10
10
  import { getLSPService } from "../../lsp/index.js";
11
+ import { augmentPythonEnvironment, detectPythonEnvironment, } from "../../python-environment.js";
11
12
  import { safeSpawnAsync } from "../../safe-spawn.js";
12
13
  import { PRIORITY } from "../priorities.js";
13
14
  import { createAvailabilityChecker, resolveAvailableOrInstall, } from "./utils/runner-helpers.js";
@@ -17,7 +18,6 @@ const pyrightRunner = {
17
18
  id: "pyright",
18
19
  appliesTo: ["python"],
19
20
  priority: PRIORITY.LSP_FALLBACK,
20
- enabledByDefault: true,
21
21
  timeoutMs: 75_000,
22
22
  async run(ctx) {
23
23
  // Always allow pyright CLI fallback even when LSP is enabled.
@@ -52,12 +52,15 @@ const pyrightRunner = {
52
52
  if (!cmd) {
53
53
  return { status: "skipped", diagnostics: [], semantic: "none" };
54
54
  }
55
- // Run pyright with JSON output. Pass cwd so pyright resolves
56
- // pyrightconfig.json / the project venv from the project root rather than
57
- // falling back to process.cwd() (which mis-resolves in multi-root setups).
55
+ // Pyright's Node CLI falls back to `python` on PATH when the project has no
56
+ // explicit Pyright config. Apply the same environment the Python LSP uses so
57
+ // a conventional project .venv resolves without shell activation.
58
+ const pythonEnvironment = await detectPythonEnvironment(cwd);
59
+ const env = augmentPythonEnvironment(process.env, pythonEnvironment);
58
60
  const result = await safeSpawnAsync(cmd, ["--outputjson", ctx.filePath], {
59
61
  timeout: 60000,
60
62
  cwd,
63
+ env,
61
64
  });
62
65
  // Pyright returns non-zero when errors found, that's OK
63
66
  if (result.error) {
@@ -54,7 +54,6 @@ const rubocopRunner = {
54
54
  id: "rubocop",
55
55
  appliesTo: ["ruby"],
56
56
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
57
- enabledByDefault: true,
58
57
  async run(ctx) {
59
58
  const cwd = ctx.cwd || process.cwd();
60
59
  const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
@@ -49,7 +49,6 @@ const ruffRunner = {
49
49
  id: "ruff-lint",
50
50
  appliesTo: ["python"],
51
51
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
52
- enabledByDefault: true,
53
52
  async run(ctx) {
54
53
  const cwd = ctx.cwd || process.cwd();
55
54
  const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
@@ -5,14 +5,13 @@
5
5
  */
6
6
  import { dirname, isAbsolute, join, resolve } from "node:path";
7
7
  import { findNearestContaining } from "../../path-utils.js";
8
- import { RustClient } from "../../rust-client.js";
8
+ import { rustClient } from "../../rust-client.js";
9
9
  import { safeSpawnAsync } from "../../safe-spawn.js";
10
10
  import { stripAnsi } from "../../sanitize.js";
11
11
  import { getLazyInstallAttempt, tryLazyInstall, } from "./utils/lazy-installer.js";
12
12
  import { describeInstallAttempt, logAvailabilityDecision, } from "./utils/availability-policy.js";
13
13
  import { PRIORITY } from "../priorities.js";
14
14
  import { createCwdCachedProbe } from "./utils/runner-helpers.js";
15
- const rustClient = new RustClient();
16
15
  // Cached per-cwd `cargo clippy --version` probe (#120). Before this, the
17
16
  // probe fired on every Rust file save in a project where clippy was already
18
17
  // installed.
@@ -49,7 +48,6 @@ const rustClippyRunner = {
49
48
  id: "rust-clippy",
50
49
  appliesTo: ["rust"],
51
50
  priority: PRIORITY.SPECIALIZED_ANALYSIS,
52
- enabledByDefault: true,
53
51
  timeoutMs: 90_000,
54
52
  async run(ctx) {
55
53
  // Resolve cargo path using platform-aware lookup (handles ~/.cargo/bin on Windows)
@@ -108,7 +108,6 @@ const shellcheckRunner = {
108
108
  id: "shellcheck",
109
109
  appliesTo: ["shell"],
110
110
  priority: PRIORITY.GENERAL_ANALYSIS,
111
- enabledByDefault: true,
112
111
  skipTestFiles: false, // Shell scripts in test directories should still be checked
113
112
  async run(ctx) {
114
113
  const cwd = ctx.cwd || process.cwd();
@@ -29,7 +29,6 @@ const shfmtRunner = {
29
29
  id: "shfmt",
30
30
  appliesTo: ["shell"],
31
31
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
32
- enabledByDefault: true,
33
32
  skipTestFiles: false,
34
33
  async run(ctx) {
35
34
  const cwd = ctx.cwd || process.cwd();
@@ -80,7 +80,6 @@ const spellcheckRunner = {
80
80
  id: "spellcheck",
81
81
  appliesTo: ["markdown"],
82
82
  priority: PRIORITY.DOC_QUALITY,
83
- enabledByDefault: true,
84
83
  skipTestFiles: false, // Check docs in test files too
85
84
  async run(ctx) {
86
85
  // Skip if typos-cli is not installed
@@ -190,7 +190,6 @@ const spotbugsRunner = {
190
190
  id: "spotbugs",
191
191
  appliesTo: ["java", "kotlin"],
192
192
  priority: PRIORITY.DEEP_LANGUAGE_ANALYSIS,
193
- enabledByDefault: false,
194
193
  async run(ctx) {
195
194
  const cwd = ctx.cwd || process.cwd();
196
195
  const classesDir = findCompiledClassesDir(cwd);
@@ -115,7 +115,6 @@ const sqlfluffRunner = {
115
115
  id: "sqlfluff",
116
116
  appliesTo: ["sql"],
117
117
  priority: PRIORITY.SQL_LINT,
118
- enabledByDefault: true,
119
118
  skipTestFiles: false,
120
119
  async run(ctx) {
121
120
  const cwd = ctx.cwd || process.cwd();
@@ -114,7 +114,6 @@ const stylelintRunner = {
114
114
  id: "stylelint",
115
115
  appliesTo: ["css"],
116
116
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
117
- enabledByDefault: true,
118
117
  skipTestFiles: false,
119
118
  async run(ctx) {
120
119
  const cwd = ctx.cwd || process.cwd();
@@ -113,7 +113,6 @@ const swiftlintRunner = {
113
113
  id: "swiftlint",
114
114
  appliesTo: ["swift"],
115
115
  priority: PRIORITY.GENERAL_ANALYSIS,
116
- enabledByDefault: true,
117
116
  skipTestFiles: false,
118
117
  async run(ctx) {
119
118
  const cwd = ctx.cwd || process.cwd();
@@ -104,7 +104,6 @@ const taploRunner = {
104
104
  id: "taplo",
105
105
  appliesTo: ["toml"],
106
106
  priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
107
- enabledByDefault: true,
108
107
  skipTestFiles: false,
109
108
  async run(ctx) {
110
109
  const cwd = ctx.cwd || process.cwd();
@@ -126,7 +126,6 @@ const terragruntRunner = {
126
126
  id: "terragrunt",
127
127
  appliesTo: ["terragrunt"],
128
128
  priority: PRIORITY.GENERAL_ANALYSIS,
129
- enabledByDefault: true,
130
129
  skipTestFiles: false,
131
130
  async run(ctx) {
132
131
  const cwd = ctx.cwd || process.cwd();
@@ -50,7 +50,6 @@ const tflintRunner = {
50
50
  id: "tflint",
51
51
  appliesTo: ["terraform"],
52
52
  priority: PRIORITY.GENERAL_ANALYSIS,
53
- enabledByDefault: true,
54
53
  skipTestFiles: false,
55
54
  async run(ctx) {
56
55
  const cwd = ctx.cwd || process.cwd();
@@ -325,7 +325,6 @@ const treeSitterRunner = {
325
325
  "css",
326
326
  ],
327
327
  priority: PRIORITY.STRUCTURAL_ANALYSIS,
328
- enabledByDefault: true,
329
328
  skipTestFiles: false, // Run on test files too (structural issues matter there)
330
329
  async run(ctx) {
331
330
  // Use singleton client — WASM must never be re-initialized after first call
@@ -146,7 +146,6 @@ const trivyConfigRunner = {
146
146
  id: "trivy-config",
147
147
  appliesTo: ["docker", "yaml", "terraform", "json"],
148
148
  priority: PRIORITY.GENERAL_ANALYSIS,
149
- enabledByDefault: true,
150
149
  skipTestFiles: false,
151
150
  async run(ctx) {
152
151
  const cwd = ctx.cwd || process.cwd();
@@ -460,6 +460,9 @@ export function logAvailabilityDecision(decision, filePath = "<pi-lens>") {
460
460
  durationMs: Math.round(decision.elapsedMs),
461
461
  metadata: {
462
462
  tool: decision.tool,
463
+ ...(decision.producer !== undefined && {
464
+ producer: decision.producer,
465
+ }),
463
466
  verdict: decision.verdict,
464
467
  outcome: decision.outcome,
465
468
  cause: decision.cause,
@@ -4,6 +4,8 @@
4
4
  * Common patterns for parsing tool output into standardized diagnostics.
5
5
  * Supports the common `file:line:col: message` format used by most linters.
6
6
  */
7
+ import { stripAnsi } from "../../../sanitize.js";
8
+ import { escapeRegExp } from "../../../string-utils.js";
7
9
  import { getAutofixCapability } from "../../../tool-policy.js";
8
10
  /**
9
11
  * Create a parser for line-based tool output.
@@ -13,7 +15,7 @@ export function createLineParser(config) {
13
15
  return (raw, filePath) => {
14
16
  const diagnostics = [];
15
17
  // Optionally strip ANSI codes (for tools that output colored text)
16
- const clean = config.stripAnsi !== false ? raw.replace(/\x1b\[[0-9;]*m/g, "") : raw;
18
+ const clean = config.stripAnsi !== false ? stripAnsi(raw) : raw;
17
19
  const lines = clean.split("\n").filter((l) => l.trim());
18
20
  for (const line of lines) {
19
21
  const match = line.match(config.regex);
@@ -144,6 +146,3 @@ export function createSimpleParser(tool, options = {}) {
144
146
  return diagnostics;
145
147
  };
146
148
  }
147
- function escapeRegExp(string) {
148
- return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
149
- }