@herbertgao/pi-extensions 2026.10.1 → 2026.10.2
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/README.md +13 -9
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-audit.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-debt.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-gain.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-help.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-review.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
- package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/README.md +68 -72
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +7 -0
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
- package/node_modules/@dietrichgebert/ponytail/package.json +2 -2
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -32
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +17 -16
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +9 -10
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -57
- package/node_modules/@herbertgao/pi-agency/LICENSE +21 -0
- package/node_modules/@herbertgao/pi-agency/README.md +40 -0
- package/node_modules/@herbertgao/pi-agency/package.json +53 -0
- package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
- package/node_modules/@narumitw/pi-caffeinate/package.json +3 -3
- package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
- package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
- package/node_modules/@tifan/pi-recap/package.json +1 -1
- package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
- package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
- package/node_modules/pi-antigravity/README.md +23 -2
- package/node_modules/pi-antigravity/package.json +5 -3
- package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
- package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
- package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
- package/node_modules/pi-antigravity/src/image/image.ts +86 -47
- package/node_modules/pi-antigravity/src/image/native.ts +69 -0
- package/node_modules/pi-antigravity/src/index.ts +52 -137
- package/node_modules/pi-antigravity/src/search/search.ts +130 -31
- package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
- package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
- package/node_modules/pi-antigravity/src/types/types.ts +1 -1
- package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
- package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
- package/node_modules/pi-lens/CHANGELOG.md +1064 -0
- package/node_modules/pi-lens/README.md +115 -25
- package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
- package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
- package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
- package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
- package/node_modules/pi-lens/dist/chunk-34U7PLGE.js +23 -0
- package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
- package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
- package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
- package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
- package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
- package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
- package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
- package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
- package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
- package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
- package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
- package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
- package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
- package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
- package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -0
- package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
- package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
- package/node_modules/pi-lens/dist/chunk-AHDW3GPE.js +50 -0
- package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
- package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
- package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
- package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
- package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
- package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
- package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
- package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
- package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
- package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
- package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
- package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
- package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
- package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
- package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
- package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
- package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
- package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
- package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
- package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
- package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
- package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
- package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
- package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
- package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
- package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
- package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
- package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
- package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
- package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
- package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
- package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
- package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
- package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
- package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
- package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
- package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
- package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
- package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
- package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
- package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
- package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
- package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
- package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
- package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
- package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
- package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
- package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
- package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
- package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
- package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
- package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
- package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
- package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
- package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
- package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -0
- package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
- package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
- package/node_modules/pi-lens/dist/chunk-RIISMHKN.js +36 -0
- package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
- package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
- package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
- package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
- package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
- package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
- package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
- package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
- package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
- package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
- package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
- package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
- package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
- package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
- package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
- package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
- package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
- package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
- package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
- package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
- package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
- package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
- package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
- package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
- package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
- package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
- package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
- package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
- package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
- package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
- package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -0
- package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
- package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
- package/node_modules/pi-lens/dist/chunk-ZAWW3AF6.js +97 -0
- package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
- package/node_modules/pi-lens/dist/index.js +16456 -8335
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
- package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
- package/node_modules/pi-lens/dist/mcp/server.js +22589 -1573
- package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
- package/node_modules/pi-lens/dist/probes/installer.js +135 -0
- package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
- package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
- package/node_modules/pi-lens/docs/agent-guide.md +13 -4
- package/node_modules/pi-lens/docs/agent-tools.md +42 -0
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +3 -2
- package/node_modules/pi-lens/docs/configuration.md +20 -1
- package/node_modules/pi-lens/docs/environment-variables.md +52 -2
- package/node_modules/pi-lens/docs/features.md +8 -4
- package/node_modules/pi-lens/docs/globalconfig.md +1 -0
- package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -4
- package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
- package/node_modules/pi-lens/docs/mcp.md +21 -5
- package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
- package/node_modules/pi-lens/docs/pi-lens-fixer.md +156 -88
- package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
- package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -48
- package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
- package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
- package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
- package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
- package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/node_modules/pi-lens/docs/servercapabilities.md +53 -49
- package/node_modules/pi-lens/docs/settings.md +1 -0
- package/node_modules/pi-lens/docs/usage.md +5 -1
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
- package/node_modules/pi-lens/package.json +18 -6
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
- package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
- package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
- package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
- package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
- package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
- package/package.json +15 -10
- package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ja.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.zh-CN.md +0 -212
- package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
- package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
- package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
- package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
- package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
- package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
- package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
- package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
- package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
- package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
- package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
- package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
- package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
- package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
- package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
- package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
- package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
- package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
- package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
- package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
- package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
- package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
- package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
- package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
- package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
- package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
- package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
- package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
- package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
- package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
- package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
- package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
- package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
- package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
- package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
- package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
- package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
- package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
- package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
- package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
- package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
- package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
- package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
- package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
- package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
- package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
- package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
- package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
- package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
- package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
- package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
- package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
- package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
- package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
- package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
- package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
- package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
- package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
- package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
- package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
- package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
- package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
- package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
- package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
- package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
- package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
- package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
- package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
- package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
- package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
- package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
- package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
- package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
- package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
- package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
- package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
- package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
- package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
- package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
- package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
- package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
- package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
- package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
- package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
- package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
- package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
- package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
- package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
- package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
- package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
- package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
- package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
- package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
- package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
- package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
- package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
- package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
- package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
- package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
- package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
- package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
- package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
- package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
- package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
- package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
- package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
- package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
- package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
- package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
- package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
- package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
- package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
- package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
- package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
- package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
- package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
- package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
- package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
- package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
- package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
- package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
- package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
- package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
- package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
- package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
- package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
- package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
- package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
- package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
- package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
- package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
- package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
- package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
- package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
- package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
- package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
- package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
- package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
- package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
- package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
- package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
- package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
- package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
- package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
- package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
- package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
- package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
- package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
- package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
- package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
- package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
- package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
- package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
- package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
- package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
- package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
- package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
- package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
- package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
- package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
- package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
- package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
- package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
- package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
- package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
- package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
- package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
- package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
- package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
- package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
- package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
- package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
- package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
- package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
- package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
- package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
- package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
- package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
- package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
- package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
- package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
- package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
- package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
- package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
- package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
- package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
- package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
- package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
- package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
- package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
- package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
- package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
- package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
- package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
- package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
- package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
- package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
- package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
- package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
- package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
- package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
- package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
- package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
- package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
- package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
- package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
- package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
- package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
- package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
- package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
- package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
- package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
- package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
- package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
- package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
- package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
- package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
- package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
- package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
- package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
- package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
- package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
- package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
- package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
- package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
- package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
- package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
- package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
- package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
- package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
- package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
- package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
- package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
- package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
- package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
- package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
- package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
- package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
- package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
- package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
- package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
- package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
- package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
- package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
- package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
- package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
- package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
- package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
- package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
- package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
- package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
- package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
- package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
- package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
- package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
- package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
- package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
- package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
- package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
- package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
- package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
- package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
- package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
- package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
- package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
- package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
- package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
- package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
- package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
- package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
- package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
- package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
- package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
- package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
- package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
- package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
- package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
- package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
- package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
- package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
- package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
- package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
- package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
- package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
- package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
- package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
- package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
- package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
- package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
- package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
- package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
- package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
- package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
- package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
- package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
- package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
- package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
- package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
- package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
- package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
- package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
- package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
- package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
- package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
- package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
- package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
- package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
- package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
- package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
- package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
- package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
- package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
- package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
- package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
- package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
- package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
- package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
- package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
- package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
- package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
- package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
- package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
- package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
- package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
- package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
- package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
- package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
- package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
- package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
- package/node_modules/pi-lens/dist/i18n.js +0 -69
- package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
- package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
- package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
- package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
- package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
- package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
- package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
- package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
- package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
- package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
- package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
- package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
- package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
- package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
- package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
- package/node_modules/pi-lens/dist/tools/shared.js +0 -29
- package/node_modules/pi-lens/dist/tools/symbol-search.js +0 -155
|
@@ -1,520 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
|
-
import { createDispatchContext } from "../dispatch/dispatcher.js";
|
|
4
|
-
import { evaluateRules } from "../dispatch/fact-rule-runner.js";
|
|
5
|
-
import { runProviders } from "../dispatch/fact-runner.js";
|
|
6
|
-
import { FactStore } from "../dispatch/fact-store.js";
|
|
7
|
-
import { canHandle as astGrepCanHandle, getLang as astGrepGetLang, evaluateAstGrepRules, loadSg, } from "../dispatch/runners/ast-grep-napi.js";
|
|
8
|
-
import { detectFileKind } from "../file-kinds.js";
|
|
9
|
-
import { isTestFile } from "../file-utils.js";
|
|
10
|
-
import { isAtOrAboveHomeDir } from "../path-utils.js";
|
|
11
|
-
import { getProjectDiagnosticsScannerMaxFiles } from "../project-scale.js";
|
|
12
|
-
import { captureReviewGraphStructuralIr } from "../review-graph/builder.js";
|
|
13
|
-
import { publishReviewGraphFileIr, reviewGraphIrContentHash, } from "../review-graph/shared-extraction-ir.js";
|
|
14
|
-
import { collectSourceFilesWithBudgetAsync, } from "../source-filter.js";
|
|
15
|
-
import { logTreeSitter, logTreeSitterCacheStats, } from "../tree-sitter-logger.js";
|
|
16
|
-
import { queriesForLanguage, queryLoader, } from "../tree-sitter-query-loader.js";
|
|
17
|
-
import { EXT_TO_LANG, getSharedTreeSitterClient, isTreeSitterWasmAborted, } from "../tree-sitter-shared.js";
|
|
18
|
-
import { PROJECT_DIAGNOSTICS_CACHE_VERSION, saveProjectDiagnosticsSnapshot, } from "./cache.js";
|
|
19
|
-
import { hashDiagnosticContent } from "../lsp/diagnostic-binding.js";
|
|
20
|
-
// Side-effect import: registers fact providers and fact rules.
|
|
21
|
-
import "../dispatch/integration.js";
|
|
22
|
-
// Skip files this large: matches the per-edit ast-grep runner's guard so a single
|
|
23
|
-
// generated megafile can't dominate a project scan.
|
|
24
|
-
const AST_GREP_MAX_FILE_BYTES = 1024 * 1024;
|
|
25
|
-
// Project-audit budgets — looser than the per-edit runner's 10/50 (which exist to
|
|
26
|
-
// keep inline output bounded), since a project scan is an explicit, expensive call.
|
|
27
|
-
const AST_GREP_SCAN_MAX_MATCHES_PER_RULE = 25;
|
|
28
|
-
const AST_GREP_SCAN_MAX_DIAGNOSTICS_PER_FILE = 100;
|
|
29
|
-
const FACT_RULE_EXTENSIONS = new Set([
|
|
30
|
-
".ts",
|
|
31
|
-
".tsx",
|
|
32
|
-
".js",
|
|
33
|
-
".jsx",
|
|
34
|
-
".mjs",
|
|
35
|
-
".cjs",
|
|
36
|
-
]);
|
|
37
|
-
// Which languages the scan runs tree-sitter rules for. Identical to the shared
|
|
38
|
-
// per-edit resolver (EXT_TO_LANG), which since #2424 is itself a projection of
|
|
39
|
-
// the canonical language registry — so the scan and the per-edit path cannot
|
|
40
|
-
// disagree about `.tsx`→tsx / `.jsx`→javascript / the c-vs-cpp header split.
|
|
41
|
-
// (`.tsx` resolves to the tsx grammar, not typescript: the typescript grammar
|
|
42
|
-
// ERRORs on JSX; typescript RULES still apply because `queriesForLanguage(...)`
|
|
43
|
-
// below merges the typescript rule set onto tsx.)
|
|
44
|
-
//
|
|
45
|
-
// java + kotlin used to be layered on here because EXT_TO_LANG lacked them:
|
|
46
|
-
// they have loadable grammars and rule dirs (java: 24 rules, kotlin: 1) but no
|
|
47
|
-
// per-edit runner `appliesTo` entry, so only this broad project scan runs them.
|
|
48
|
-
// The registry now owns their extensions, so the spread is gone and this is a
|
|
49
|
-
// plain alias. scanner.test.ts asserts this map covers every non-disabled rule
|
|
50
|
-
// dir whose grammar is loadable, so adding a language dir fails a test until
|
|
51
|
-
// its extension is registered in the registry.
|
|
52
|
-
//
|
|
53
|
-
// This map is the scan's language RESOLVER, not its eligibility gate: it now
|
|
54
|
-
// answers for grammars with no rule dir too (bash/dart/elixir/lua/ocaml/swift/
|
|
55
|
-
// zig), and the pass gates each file on `hasTreeSitterRules` so a grammar
|
|
56
|
-
// without rules costs no read (#2424 review, F2).
|
|
57
|
-
// `Readonly` because the projection is `Object.freeze`d at the source (#2424
|
|
58
|
-
// review, S4) — the mutable `Record` type is what let the pre-#2424 spread
|
|
59
|
-
// layer java/kotlin on by hand in the first place.
|
|
60
|
-
export const TREE_SITTER_EXT_TO_LANG = EXT_TO_LANG;
|
|
61
|
-
function normalizeSeverity(severity) {
|
|
62
|
-
if (severity === "error" || severity === "warning" || severity === "hint") {
|
|
63
|
-
return severity;
|
|
64
|
-
}
|
|
65
|
-
return severity === "info" ? "info" : "warning";
|
|
66
|
-
}
|
|
67
|
-
function normalizeSemantic(diagnostic) {
|
|
68
|
-
if (diagnostic.semantic === "blocking")
|
|
69
|
-
return "blocking";
|
|
70
|
-
if (diagnostic.semantic === "warning")
|
|
71
|
-
return "warning";
|
|
72
|
-
return "none";
|
|
73
|
-
}
|
|
74
|
-
function fromDispatchDiagnostic(diagnostic, runner) {
|
|
75
|
-
return {
|
|
76
|
-
filePath: path.resolve(diagnostic.filePath),
|
|
77
|
-
line: diagnostic.line,
|
|
78
|
-
column: diagnostic.column,
|
|
79
|
-
severity: normalizeSeverity(diagnostic.severity),
|
|
80
|
-
semantic: normalizeSemantic(diagnostic),
|
|
81
|
-
tool: diagnostic.tool,
|
|
82
|
-
runner,
|
|
83
|
-
rule: diagnostic.rule,
|
|
84
|
-
code: diagnostic.code,
|
|
85
|
-
message: diagnostic.message,
|
|
86
|
-
source: "project-scan",
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* One FILE-major pass for every in-process syntax consumer (#675/#896).
|
|
91
|
-
* Per-consumer gates preserve their distinct language and size eligibility,
|
|
92
|
-
* while separate result lists preserve the historical phase-major diagnostic
|
|
93
|
-
* ordering.
|
|
94
|
-
*/
|
|
95
|
-
async function scanFileMajorRules(cwd, files, signal) {
|
|
96
|
-
const client = getSharedTreeSitterClient();
|
|
97
|
-
// #1715: grow the tree cache to span this scan's working set BEFORE
|
|
98
|
-
// parsing starts, so a project bigger than the interactive default (50
|
|
99
|
-
// entries) still gets cross-scan reuse instead of every file re-parsing
|
|
100
|
-
// on every scan.
|
|
101
|
-
client?.ensureTreeCacheCapacity(files.length);
|
|
102
|
-
const treeSitterReady = !!client && client.isAvailable() && (await client.init());
|
|
103
|
-
// Same singleton the dispatch runner uses (tree-sitter.ts:444) — memoized
|
|
104
|
-
// per root, so repeated scans stop re-reading the ~180 query YAMLs.
|
|
105
|
-
const queryMap = treeSitterReady
|
|
106
|
-
? await queryLoader.loadQueries(cwd)
|
|
107
|
-
: undefined;
|
|
108
|
-
// Subject labels this store's capacity-eviction telemetry distinctly from
|
|
109
|
-
// the other five production FactStore instances (#2243 review round 3, F1).
|
|
110
|
-
const facts = new FactStore("project-diagnostics-scanner");
|
|
111
|
-
const pi = { getFlag: () => undefined };
|
|
112
|
-
const treeSitter = [];
|
|
113
|
-
const factRules = [];
|
|
114
|
-
const astGrep = [];
|
|
115
|
-
const fingerprints = {};
|
|
116
|
-
const sgModule = await loadSg();
|
|
117
|
-
let phaseOneFilesScanned = 0;
|
|
118
|
-
let astGrepFilesScanned = 0;
|
|
119
|
-
let astGrepDurationMs = 0;
|
|
120
|
-
// #891: only fully completed files count — a wasm abort mid-file leaves that
|
|
121
|
-
// file out, so the caller can report a truncated filesScanned honestly.
|
|
122
|
-
let filesScanned = 0;
|
|
123
|
-
let wasmAborted = isTreeSitterWasmAborted();
|
|
124
|
-
/**
|
|
125
|
-
* Does this project actually have ENABLED tree-sitter rules for `langId`?
|
|
126
|
-
*
|
|
127
|
-
* The gate below used to read "does the extension have a grammar", which was
|
|
128
|
-
* the same question only because the ext -> grammar map hand-listed exactly
|
|
129
|
-
* the twelve grammars that also ship a `rules/tree-sitter-queries/<lang>/`
|
|
130
|
-
* dir. #2424 projected that map from the registry's full grammar column, so
|
|
131
|
-
* bash/dart/elixir/lua/ocaml/swift/zig arrived WITHOUT rules and every such
|
|
132
|
-
* file started being read, walked and counted for a rule set that is empty
|
|
133
|
-
* (#2424 review, F2). Memoized per language: `queriesForLanguage` rebuilds
|
|
134
|
-
* and filters its array on every call, and the scan asks once per file.
|
|
135
|
-
*/
|
|
136
|
-
const ruleCoverage = new Map();
|
|
137
|
-
const hasTreeSitterRules = (langId) => {
|
|
138
|
-
if (!queryMap || !client)
|
|
139
|
-
return false;
|
|
140
|
-
const memo = ruleCoverage.get(langId);
|
|
141
|
-
if (memo !== undefined)
|
|
142
|
-
return memo;
|
|
143
|
-
const covered = queriesForLanguage(queryMap, langId).length > 0;
|
|
144
|
-
ruleCoverage.set(langId, covered);
|
|
145
|
-
return covered;
|
|
146
|
-
};
|
|
147
|
-
const scanTreeSitterFile = async (filePath, langId, content) => {
|
|
148
|
-
if (!queryMap || !langId || !client || content === null)
|
|
149
|
-
return;
|
|
150
|
-
const queries = queriesForLanguage(queryMap, langId);
|
|
151
|
-
try {
|
|
152
|
-
const found = await client.runQueriesOnFile(queries, filePath, langId, { maxResults: 50 }, content);
|
|
153
|
-
for (const { queryDef: query, match } of found) {
|
|
154
|
-
treeSitter.push({
|
|
155
|
-
filePath,
|
|
156
|
-
line: match.line ?? 1,
|
|
157
|
-
column: match.column,
|
|
158
|
-
severity: query.severity === "error" ? "error" : query.severity,
|
|
159
|
-
semantic: query.inline_tier === "blocking" || query.severity === "error"
|
|
160
|
-
? "blocking"
|
|
161
|
-
: "warning",
|
|
162
|
-
tool: "tree-sitter",
|
|
163
|
-
runner: "tree-sitter",
|
|
164
|
-
rule: query.id,
|
|
165
|
-
message: query.message,
|
|
166
|
-
source: "project-scan",
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
// Continue scanning other rules/files.
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
const scanFactRulesFile = async (filePath, content) => {
|
|
175
|
-
facts.dropFileFacts(filePath);
|
|
176
|
-
// Seed the exact bytes already supplied to tree-sitter so the file-content
|
|
177
|
-
// provider is skipped by runProviders.
|
|
178
|
-
facts.setFileFact(filePath, "file.content", content);
|
|
179
|
-
const ctx = createDispatchContext(filePath, cwd, pi, facts, false);
|
|
180
|
-
try {
|
|
181
|
-
await runProviders(ctx);
|
|
182
|
-
for (const diagnostic of evaluateRules(ctx)) {
|
|
183
|
-
factRules.push(fromDispatchDiagnostic(diagnostic, "fact-rules"));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
// Project scans are best-effort; one unparsable file should not abort the tool.
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
const scanAstGrepFile = (filePath, content, lang) => {
|
|
191
|
-
const startedAt = Date.now();
|
|
192
|
-
try {
|
|
193
|
-
const rootNode = lang.parse(content).root();
|
|
194
|
-
const fileDiagnostics = evaluateAstGrepRules(filePath, rootNode, cwd, detectFileKind(filePath), {
|
|
195
|
-
maxMatchesPerRule: AST_GREP_SCAN_MAX_MATCHES_PER_RULE,
|
|
196
|
-
maxTotalDiagnostics: AST_GREP_SCAN_MAX_DIAGNOSTICS_PER_FILE,
|
|
197
|
-
content,
|
|
198
|
-
sgModule,
|
|
199
|
-
});
|
|
200
|
-
for (const diagnostic of fileDiagnostics) {
|
|
201
|
-
astGrep.push(fromDispatchDiagnostic(diagnostic, "ast-grep-napi"));
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
catch {
|
|
205
|
-
// Project scans are best-effort; one unparsable file must not abort the tool.
|
|
206
|
-
}
|
|
207
|
-
finally {
|
|
208
|
-
astGrepFilesScanned++;
|
|
209
|
-
astGrepDurationMs += Date.now() - startedAt;
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
const scan = async () => {
|
|
213
|
-
for (const filePath of files) {
|
|
214
|
-
// #891: a wasm-level abort poisons the shared parser for the rest of the
|
|
215
|
-
// process — stop the whole pass, don't keep feeding it files.
|
|
216
|
-
if (signal?.aborted || isTreeSitterWasmAborted()) {
|
|
217
|
-
wasmAborted ||= isTreeSitterWasmAborted();
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
if (isTestFile(filePath))
|
|
221
|
-
continue;
|
|
222
|
-
const ext = path.extname(filePath);
|
|
223
|
-
// A grammar is not a consumer: only a language this project has
|
|
224
|
-
// ENABLED rules for can turn this file's bytes into a finding.
|
|
225
|
-
const grammarId = TREE_SITTER_EXT_TO_LANG[ext];
|
|
226
|
-
const langId = grammarId && hasTreeSitterRules(grammarId) ? grammarId : undefined;
|
|
227
|
-
const factEligible = FACT_RULE_EXTENSIONS.has(ext);
|
|
228
|
-
let astGrepLang;
|
|
229
|
-
if (sgModule && astGrepCanHandle(filePath)) {
|
|
230
|
-
try {
|
|
231
|
-
if (fs.statSync(filePath).size <= AST_GREP_MAX_FILE_BYTES) {
|
|
232
|
-
astGrepLang = astGrepGetLang(filePath, sgModule);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
catch {
|
|
236
|
-
// A missing file is ineligible for every content consumer below.
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (!langId && !factEligible && !astGrepLang)
|
|
240
|
-
continue;
|
|
241
|
-
if (langId || factEligible)
|
|
242
|
-
phaseOneFilesScanned++;
|
|
243
|
-
// #2154 (#3060 round 2 F1): read the BYTES once, then decode. The
|
|
244
|
-
// fingerprint below must record the file's ON-DISK length, because
|
|
245
|
-
// that is what the reader compares against `statSync().size`. A
|
|
246
|
-
// length taken from the decoded STRING disagrees for every file
|
|
247
|
-
// holding a byte that is not valid UTF-8 — one such byte decodes to
|
|
248
|
-
// a 3-byte U+FFFD — so the size check could never match and every
|
|
249
|
-
// row from that file was retired on every cached read, for a file
|
|
250
|
-
// nobody touched. That is the DROP direction this store's own
|
|
251
|
-
// reconcile doc calls the worse one. `buf.length` equals
|
|
252
|
-
// `stat.size` for every file; both sides then hash the same lossy
|
|
253
|
-
// decode, so an unchanged file still matches exactly.
|
|
254
|
-
let content;
|
|
255
|
-
let contentBytes;
|
|
256
|
-
try {
|
|
257
|
-
const buf = fs.readFileSync(filePath);
|
|
258
|
-
contentBytes = buf.length;
|
|
259
|
-
content = buf.toString("utf-8");
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
content = null;
|
|
263
|
-
contentBytes = undefined;
|
|
264
|
-
}
|
|
265
|
-
// #2154: how many rows existed BEFORE this file was scanned, so the
|
|
266
|
-
// fingerprint below is written only for files that actually produced
|
|
267
|
-
// one — the snapshot keeps no row for any other file, and an entry
|
|
268
|
-
// for a file with no row is dead weight in a record that is read on
|
|
269
|
-
// every `refreshRunners=cached` call.
|
|
270
|
-
const rowsBeforeFile = treeSitter.length + factRules.length + astGrep.length;
|
|
271
|
-
try {
|
|
272
|
-
await scanTreeSitterFile(filePath, langId, content);
|
|
273
|
-
if (isTreeSitterWasmAborted()) {
|
|
274
|
-
wasmAborted = true;
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
if (factEligible) {
|
|
278
|
-
await scanFactRulesFile(filePath, content);
|
|
279
|
-
if (isTreeSitterWasmAborted()) {
|
|
280
|
-
wasmAborted = true;
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
let graphIr;
|
|
285
|
-
if (content !== null) {
|
|
286
|
-
try {
|
|
287
|
-
graphIr = await captureReviewGraphStructuralIr(filePath, cwd, content, facts);
|
|
288
|
-
}
|
|
289
|
-
catch {
|
|
290
|
-
graphIr = { complete: false };
|
|
291
|
-
}
|
|
292
|
-
if (isTreeSitterWasmAborted()) {
|
|
293
|
-
wasmAborted = true;
|
|
294
|
-
break;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
if (signal?.aborted) {
|
|
298
|
-
// The former phase-major scan never started ast-grep after a
|
|
299
|
-
// phase-one abort. Discard earlier ast-grep work from this merged
|
|
300
|
-
// pass to preserve that partial-result contract.
|
|
301
|
-
astGrep.length = 0;
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
304
|
-
if (astGrepLang && content !== null) {
|
|
305
|
-
scanAstGrepFile(filePath, content, astGrepLang);
|
|
306
|
-
}
|
|
307
|
-
if (signal?.aborted)
|
|
308
|
-
break;
|
|
309
|
-
if (content !== null && graphIr?.complete && graphIr.structural) {
|
|
310
|
-
// Publish only consumable entries (the registry also enforces
|
|
311
|
-
// this) — and hash via the shared contract so producer and
|
|
312
|
-
// consumer can never diverge (#955 review).
|
|
313
|
-
publishReviewGraphFileIr(cwd, {
|
|
314
|
-
filePath,
|
|
315
|
-
contentHash: reviewGraphIrContentHash(content),
|
|
316
|
-
...graphIr,
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
// #2154: bind this file's rows to the bytes they were computed
|
|
320
|
-
// from. Only reachable with `content` in hand, which is the point
|
|
321
|
-
// — the fingerprint must describe what the rules READ, never what
|
|
322
|
-
// disk holds by the time the scan ends.
|
|
323
|
-
if (content !== null &&
|
|
324
|
-
contentBytes !== undefined &&
|
|
325
|
-
treeSitter.length + factRules.length + astGrep.length > rowsBeforeFile) {
|
|
326
|
-
fingerprints[filePath] = {
|
|
327
|
-
sizeBytes: contentBytes,
|
|
328
|
-
contentHash: hashDiagnosticContent(content),
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
filesScanned++;
|
|
332
|
-
}
|
|
333
|
-
finally {
|
|
334
|
-
// This store belongs to the scan, and every consumer of this file's
|
|
335
|
-
// content and derived facts has completed by the end of the iteration.
|
|
336
|
-
// Drop without pinning: the scan is sequential and owns this store, so
|
|
337
|
-
// there is no concurrent walk to guard against, and pinning every
|
|
338
|
-
// scanned file would exempt it from the capacity cap (#2243).
|
|
339
|
-
facts.dropFileFacts(filePath);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
if (wasmAborted) {
|
|
343
|
-
// Mirror the phase-major #891 contract: the ast-grep phase never ran
|
|
344
|
-
// after a wasm abort, so this merged pass discards its buffer too.
|
|
345
|
-
astGrep.length = 0;
|
|
346
|
-
}
|
|
347
|
-
};
|
|
348
|
-
if (!client) {
|
|
349
|
-
await scan();
|
|
350
|
-
return {
|
|
351
|
-
treeSitter,
|
|
352
|
-
factRules,
|
|
353
|
-
astGrep,
|
|
354
|
-
filesScanned,
|
|
355
|
-
wasmAborted,
|
|
356
|
-
fingerprints,
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
const startedAt = Date.now();
|
|
360
|
-
await client.withParseCacheMeasurement(scan, (stats) => {
|
|
361
|
-
logTreeSitterCacheStats({
|
|
362
|
-
scope: "project_diagnostics_scan",
|
|
363
|
-
filePath: cwd,
|
|
364
|
-
fileCount: phaseOneFilesScanned,
|
|
365
|
-
// The merged pass interleaves ast-grep with the phase-one consumers;
|
|
366
|
-
// subtract its share so this metric stays comparable to the historical
|
|
367
|
-
// phase-major scans.
|
|
368
|
-
durationMs: Date.now() - startedAt - astGrepDurationMs,
|
|
369
|
-
stats,
|
|
370
|
-
// #1935 review: ast-grep's own cost is often a scan's most expensive
|
|
371
|
-
// phase (production evidence: 13168ms over 86 files, the single
|
|
372
|
-
// biggest contributor). Its duration is subtracted above so it stays
|
|
373
|
-
// comparable to the historical phase-major scans; carry it here too
|
|
374
|
-
// so it stays visible SOMEWHERE instead of disappearing when the
|
|
375
|
-
// vacuous `project_diagnostics_ast_grep_scan` cache_stats record
|
|
376
|
-
// (below) was removed.
|
|
377
|
-
astGrep: {
|
|
378
|
-
durationMs: astGrepDurationMs,
|
|
379
|
-
fileCount: astGrepFilesScanned,
|
|
380
|
-
},
|
|
381
|
-
});
|
|
382
|
-
});
|
|
383
|
-
// #1935: no `project_diagnostics_ast_grep_scan` cache_stats record here.
|
|
384
|
-
// `scanAstGrepFile` parses through ast-grep-napi's own `lang.parse()` — a
|
|
385
|
-
// separate native engine, not `TreeSitterClient`'s WASM `TreeCache` — so a
|
|
386
|
-
// cache_stats record for this scope would always read all-zero (0
|
|
387
|
-
// lookups, 0 hits, every counter 0) no matter how the scan behaves. That
|
|
388
|
-
// was a vacuous observability record, not a real one: it looked like a
|
|
389
|
-
// signal but could never carry information. `astGrepDurationMs` and
|
|
390
|
-
// `astGrepFilesScanned` still feed the `project_diagnostics_scan` record
|
|
391
|
-
// above (`astGrep` sub-field), so this cost stays observable without a
|
|
392
|
-
// second, always-zero record to carry it.
|
|
393
|
-
return {
|
|
394
|
-
treeSitter,
|
|
395
|
-
factRules,
|
|
396
|
-
astGrep,
|
|
397
|
-
filesScanned,
|
|
398
|
-
wasmAborted,
|
|
399
|
-
fingerprints,
|
|
400
|
-
};
|
|
401
|
-
}
|
|
402
|
-
export async function scanProjectDiagnostics(options) {
|
|
403
|
-
const cwd = path.resolve(options.cwd);
|
|
404
|
-
const { signal } = options;
|
|
405
|
-
// #747/#250: refuse to WALK from a cwd at — or above — the home directory.
|
|
406
|
-
// The cheap tier is bounded by DEFAULT_MAX_FILES, but from $HOME it still
|
|
407
|
-
// traverses a huge unrelated tree until it happens to keep that many source
|
|
408
|
-
// files. An explicit `files` list (#461) is a caller-chosen subset, not a
|
|
409
|
-
// walk, so it is never refused here. Same ceiling as fresh-fetch.ts.
|
|
410
|
-
if (!options.files && isAtOrAboveHomeDir(cwd, options.homeDir)) {
|
|
411
|
-
return {
|
|
412
|
-
version: PROJECT_DIAGNOSTICS_CACHE_VERSION,
|
|
413
|
-
cwd,
|
|
414
|
-
tier: options.tier,
|
|
415
|
-
scannedAt: new Date().toISOString(),
|
|
416
|
-
diagnostics: [],
|
|
417
|
-
filesScanned: 0,
|
|
418
|
-
runners: [],
|
|
419
|
-
unsafeRoot: true,
|
|
420
|
-
};
|
|
421
|
-
}
|
|
422
|
-
const maxFiles = Math.max(1, options.maxFiles ?? getProjectDiagnosticsScannerMaxFiles(cwd));
|
|
423
|
-
// #760: bound the walk by entries VISITED, not just files kept — a mixed
|
|
424
|
-
// tree with few source files among a huge pile of non-source files never
|
|
425
|
-
// trips `maxFiles`. Unlike `unsafeRoot` this is not a refusal: when the
|
|
426
|
-
// budget trips we scan the truncated best-effort list and flag the snapshot
|
|
427
|
-
// so callers don't read the partial result as a complete sweep.
|
|
428
|
-
// #1107 phase 2: typed as the full `SourceCollectionResult` (not just its
|
|
429
|
-
// `{files, entryBudgetExceeded}` shape) so the generated-skip counters
|
|
430
|
-
// below are readable through the ternary — the `options.files` branch
|
|
431
|
-
// legitimately never walked, so it leaves them `undefined`, same
|
|
432
|
-
// convention as `entryBudgetExceeded: false` above it.
|
|
433
|
-
const collected = options.files
|
|
434
|
-
? { files: options.files.slice(0, maxFiles), entryBudgetExceeded: false }
|
|
435
|
-
: await collectSourceFilesWithBudgetAsync(cwd, {
|
|
436
|
-
maxFiles,
|
|
437
|
-
maxScanEntries: options.maxScanEntries,
|
|
438
|
-
// #1107 phase 2 review: the actionable opt-out generatedSkipNotice
|
|
439
|
-
// points a user at.
|
|
440
|
-
includeGenerated: options.includeGenerated === true,
|
|
441
|
-
});
|
|
442
|
-
const files = collected.files;
|
|
443
|
-
// Check cancellation before and during the file-major pass so a full-mode
|
|
444
|
-
// scan stops promptly when the agent/user aborts (#341).
|
|
445
|
-
const runners = [];
|
|
446
|
-
const diagnostics = [];
|
|
447
|
-
let fileFingerprints = {};
|
|
448
|
-
let wasmAborted = false;
|
|
449
|
-
let filesScanned = files.length;
|
|
450
|
-
if (!signal?.aborted) {
|
|
451
|
-
// All in-process syntax consumers share one file-major pass (#675/#896).
|
|
452
|
-
const scanned = await scanFileMajorRules(cwd, files, signal);
|
|
453
|
-
diagnostics.push(...scanned.treeSitter, ...scanned.factRules);
|
|
454
|
-
runners.push("tree-sitter", "fact-rules");
|
|
455
|
-
wasmAborted = scanned.wasmAborted;
|
|
456
|
-
if (wasmAborted)
|
|
457
|
-
filesScanned = scanned.filesScanned;
|
|
458
|
-
if (!signal?.aborted && !wasmAborted) {
|
|
459
|
-
diagnostics.push(...scanned.astGrep);
|
|
460
|
-
runners.push("ast-grep-napi");
|
|
461
|
-
}
|
|
462
|
-
// #2154: keep a fingerprint only for a file that still has a row after
|
|
463
|
-
// the ast-grep discard above, so the record cannot claim to describe a
|
|
464
|
-
// file whose only rows were dropped.
|
|
465
|
-
const rowFiles = new Set(diagnostics.map((d) => d.filePath));
|
|
466
|
-
fileFingerprints = Object.fromEntries(Object.entries(scanned.fingerprints).filter(([file]) => rowFiles.has(file)));
|
|
467
|
-
}
|
|
468
|
-
const snapshot = {
|
|
469
|
-
version: PROJECT_DIAGNOSTICS_CACHE_VERSION,
|
|
470
|
-
cwd,
|
|
471
|
-
tier: options.tier,
|
|
472
|
-
scannedAt: new Date().toISOString(),
|
|
473
|
-
diagnostics,
|
|
474
|
-
filesScanned,
|
|
475
|
-
runners,
|
|
476
|
-
fileFingerprints,
|
|
477
|
-
};
|
|
478
|
-
// #760: only present when true — keeps existing snapshots/serializations
|
|
479
|
-
// byte-identical for the untruncated (normal) case.
|
|
480
|
-
if (collected.entryBudgetExceeded)
|
|
481
|
-
snapshot.scanTruncated = true;
|
|
482
|
-
// #1107 phase 2: only present when nonzero, same convention as the
|
|
483
|
-
// truncation flag above — a healthy scan with no generated-name skips
|
|
484
|
-
// produces a byte-identical snapshot to before this change.
|
|
485
|
-
if (collected.generatedOrArtifactSkips) {
|
|
486
|
-
snapshot.generatedFileSkips = collected.generatedOrArtifactSkips;
|
|
487
|
-
}
|
|
488
|
-
if (collected.generatedNameOnlySkips) {
|
|
489
|
-
snapshot.generatedNameOnlySkips = collected.generatedNameOnlySkips;
|
|
490
|
-
}
|
|
491
|
-
if (collected.generatedDirSkips) {
|
|
492
|
-
snapshot.generatedDirSkips = collected.generatedDirSkips;
|
|
493
|
-
}
|
|
494
|
-
if (wasmAborted) {
|
|
495
|
-
snapshot.scanTruncated = true;
|
|
496
|
-
snapshot.treeSitterStatus = "wasm_aborted_restart_required";
|
|
497
|
-
logTreeSitter({
|
|
498
|
-
phase: "runner_skip",
|
|
499
|
-
filePath: cwd,
|
|
500
|
-
status: "aborted",
|
|
501
|
-
reason: "wasm_aborted_mid_scan",
|
|
502
|
-
metadata: {
|
|
503
|
-
scope: "project_diagnostics_scan",
|
|
504
|
-
filesScanned,
|
|
505
|
-
totalFiles: files.length,
|
|
506
|
-
abortPoint: filesScanned + 1,
|
|
507
|
-
},
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
// A cancelled scan yields a partial snapshot; don't persist it as the
|
|
511
|
-
// authoritative cross-session cache — only a complete run is cacheable.
|
|
512
|
-
// Likewise, an explicit `files` scan (#461) only covers a caller-chosen
|
|
513
|
-
// subset (e.g. git-staged files), not the whole project — persisting it
|
|
514
|
-
// would poison the cross-session cache with a partial view that a later
|
|
515
|
-
// unscoped `refreshRunners=cached` read would wrongly trust as complete.
|
|
516
|
-
if (signal?.aborted || options.files || wasmAborted)
|
|
517
|
-
return snapshot;
|
|
518
|
-
saveProjectDiagnosticsSnapshot(cwd, snapshot);
|
|
519
|
-
return snapshot;
|
|
520
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|