@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,242 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* YAML Rule Parser for ast-grep
|
|
3
|
-
*
|
|
4
|
-
* Parses simplified YAML rule files for structural code analysis.
|
|
5
|
-
* Supports pattern matching, kind matching, and structured conditions
|
|
6
|
-
* (has/any/all/not/regex).
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Mtime caching for bundled rules; content/path caching for project rules
|
|
10
|
-
* - Severity filtering (error-only for blocking mode)
|
|
11
|
-
* - Complexity scoring for performance optimization
|
|
12
|
-
* - Overly broad pattern detection
|
|
13
|
-
*/
|
|
14
|
-
import { createHash } from "node:crypto";
|
|
15
|
-
import * as fs from "node:fs";
|
|
16
|
-
import * as path from "node:path";
|
|
17
|
-
import yaml from "../../deps/js-yaml.js";
|
|
18
|
-
import { BoundedLruCache } from "../../bounded-cache.js";
|
|
19
|
-
import { compareOrdinal } from "../../string-utils.js";
|
|
20
|
-
// --- Constants ---
|
|
21
|
-
/** Overly broad patterns that match everything (cause false positive explosions) */
|
|
22
|
-
const OVERLY_BROAD_PATTERNS = ["$NAME", "$FIELD", "$_", "$X", "$VAR", "$EXPR"];
|
|
23
|
-
/** Maximum complexity score for rules in blockingOnly mode */
|
|
24
|
-
export const MAX_BLOCKING_RULE_COMPLEXITY = 8;
|
|
25
|
-
/**
|
|
26
|
-
* `getCachedRules` re-stats a rule directory's files at most once per this
|
|
27
|
-
* window (#2262 round 2). `scanner.ts:235` calls `loadYamlRules` per file
|
|
28
|
-
* scanned; a full metadata sweep (readdir + stat every rule file) on every
|
|
29
|
-
* warmed call measured 250x master's per-call cost on a mid-size catalog.
|
|
30
|
-
* Same value and same shape as `file-utils.ts`'s
|
|
31
|
-
* `PROJECT_IGNORE_FRESHNESS_CADENCE_MS` (#2159/#2071): 2s is the accepted
|
|
32
|
-
* staleness bound for a rule tree pi-lens itself did not just write.
|
|
33
|
-
*/
|
|
34
|
-
export const RULES_CACHE_FRESHNESS_CADENCE_MS = 2_000;
|
|
35
|
-
// --- Caches ---
|
|
36
|
-
const rulesCache = new BoundedLruCache(64);
|
|
37
|
-
const blockingRulesCache = new BoundedLruCache(64);
|
|
38
|
-
const contentRulesCache = new BoundedLruCache(64);
|
|
39
|
-
const contentBlockingRulesCache = new BoundedLruCache(64);
|
|
40
|
-
// --- Public API ---
|
|
41
|
-
export function loadYamlRules(ruleDir, severityFilter) {
|
|
42
|
-
return getCachedRules(ruleDir, severityFilter);
|
|
43
|
-
}
|
|
44
|
-
function findYamlRuleFiles(ruleDir) {
|
|
45
|
-
let entries;
|
|
46
|
-
try {
|
|
47
|
-
entries = fs
|
|
48
|
-
.readdirSync(ruleDir, { withFileTypes: true })
|
|
49
|
-
// Ordinal (code-unit), not locale, comparison: this order feeds the
|
|
50
|
-
// index-aligned file-stamp identity compared in `getCachedRules` and
|
|
51
|
-
// the hash input order in `loadYamlRulesFresh`. `localeCompare` can
|
|
52
|
-
// order the same file set differently across locales/processes,
|
|
53
|
-
// which would desync the two and mint spurious cache misses or
|
|
54
|
-
// (worse) content-hash collisions across differently-ordered runs.
|
|
55
|
-
// Same reasoning as `rule-cache.ts`'s `computeRuleHash` (#2155/#2165).
|
|
56
|
-
.sort((a, b) => compareOrdinal(a.name, b.name));
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
const files = [];
|
|
62
|
-
for (const entry of entries) {
|
|
63
|
-
const full = path.join(ruleDir, entry.name);
|
|
64
|
-
if (entry.isDirectory()) {
|
|
65
|
-
files.push(...findYamlRuleFiles(full));
|
|
66
|
-
}
|
|
67
|
-
else if (entry.isFile() && /\.ya?ml$/i.test(entry.name)) {
|
|
68
|
-
files.push(full);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return files;
|
|
72
|
-
}
|
|
73
|
-
function loadYamlRuleFiles(files, severityFilter) {
|
|
74
|
-
const rules = [];
|
|
75
|
-
for (const file of files) {
|
|
76
|
-
let content;
|
|
77
|
-
try {
|
|
78
|
-
content = fs.readFileSync(file, "utf-8");
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
const documents = content.split(/^---\s*$/m).filter((doc) => doc.trim());
|
|
84
|
-
for (const document of documents) {
|
|
85
|
-
const rule = parseSimpleYaml(document.trim());
|
|
86
|
-
if (!rule?.id)
|
|
87
|
-
continue;
|
|
88
|
-
if (severityFilter && rule.severity !== severityFilter)
|
|
89
|
-
continue;
|
|
90
|
-
rules.push(rule);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return rules;
|
|
94
|
-
}
|
|
95
|
-
export function loadYamlRulesUncached(ruleDir, severityFilter) {
|
|
96
|
-
return loadYamlRuleFiles(findYamlRuleFiles(ruleDir), severityFilter);
|
|
97
|
-
}
|
|
98
|
-
/** Content/path-aware cache used for mutable project-owned rule trees. */
|
|
99
|
-
export function loadYamlRulesFresh(ruleDir, severityFilter) {
|
|
100
|
-
const files = findYamlRuleFiles(ruleDir);
|
|
101
|
-
const hash = createHash("sha256");
|
|
102
|
-
for (const file of files) {
|
|
103
|
-
hash.update(path.relative(ruleDir, file));
|
|
104
|
-
hash.update("\0");
|
|
105
|
-
try {
|
|
106
|
-
hash.update(fs.readFileSync(file));
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
hash.update("missing");
|
|
110
|
-
}
|
|
111
|
-
hash.update("\0");
|
|
112
|
-
}
|
|
113
|
-
const signature = hash.digest("hex");
|
|
114
|
-
const cache = severityFilter === "error" ? contentBlockingRulesCache : contentRulesCache;
|
|
115
|
-
const cached = cache.get(ruleDir);
|
|
116
|
-
if (cached?.signature === signature)
|
|
117
|
-
return cached.rules;
|
|
118
|
-
const rules = loadYamlRuleFiles(files, severityFilter);
|
|
119
|
-
cache.set(ruleDir, { rules, signature });
|
|
120
|
-
return rules;
|
|
121
|
-
}
|
|
122
|
-
function getCachedRules(ruleDir, severityFilter) {
|
|
123
|
-
if (!fs.existsSync(ruleDir)) {
|
|
124
|
-
return [];
|
|
125
|
-
}
|
|
126
|
-
const cache = severityFilter === "error" ? blockingRulesCache : rulesCache;
|
|
127
|
-
const cached = cache.get(ruleDir);
|
|
128
|
-
const now = Date.now();
|
|
129
|
-
if (cached && now - cached.checkedAtMs < RULES_CACHE_FRESHNESS_CADENCE_MS) {
|
|
130
|
-
// Inside the cadence window: no stat sweep at all. `getCachedRules` is
|
|
131
|
-
// the bundled-catalog path only (project rules route through
|
|
132
|
-
// `loadYamlRulesFresh` â see `ast-grep-napi.ts`'s route split), and
|
|
133
|
-
// `scanner.ts:235` calls it once per scanned file, so a per-call
|
|
134
|
-
// `readdirSync`+`statSync*N` sweep is the hot-path cost this window
|
|
135
|
-
// exists to remove.
|
|
136
|
-
return cached.rules;
|
|
137
|
-
}
|
|
138
|
-
const files = findYamlRuleFiles(ruleDir);
|
|
139
|
-
const fileStamps = files.flatMap((file) => {
|
|
140
|
-
try {
|
|
141
|
-
const stat = fs.statSync(file);
|
|
142
|
-
return [{ path: file, mtimeMs: stat.mtimeMs, size: stat.size }];
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
return [];
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
const metadataMatches = cached?.files.length === fileStamps.length &&
|
|
149
|
-
cached.files.every((file, index) => file.path === fileStamps[index].path &&
|
|
150
|
-
file.mtimeMs === fileStamps[index].mtimeMs &&
|
|
151
|
-
file.size === fileStamps[index].size);
|
|
152
|
-
if (cached && metadataMatches) {
|
|
153
|
-
// Nothing drifted. Re-arm the window from *now* regardless â otherwise
|
|
154
|
-
// the next call re-stats immediately instead of waiting a full cadence
|
|
155
|
-
// (the #2260/#2071 "checkedAtMs must re-arm on every check, not only on
|
|
156
|
-
// a miss" lesson).
|
|
157
|
-
cached.checkedAtMs = now;
|
|
158
|
-
return cached.rules;
|
|
159
|
-
}
|
|
160
|
-
const rules = loadYamlRuleFiles(files, severityFilter);
|
|
161
|
-
cache.set(ruleDir, { rules, files: fileStamps, checkedAtMs: now });
|
|
162
|
-
return rules;
|
|
163
|
-
}
|
|
164
|
-
export function isOverlyBroadPattern(pattern) {
|
|
165
|
-
// The rich pattern form ({context, selector, ...}) is structured and never a
|
|
166
|
-
// single-metavar trap; only string patterns can be overly-broad literals.
|
|
167
|
-
if (!pattern)
|
|
168
|
-
return false;
|
|
169
|
-
if (typeof pattern !== "string")
|
|
170
|
-
return false;
|
|
171
|
-
if (OVERLY_BROAD_PATTERNS.includes(pattern.trim()))
|
|
172
|
-
return true;
|
|
173
|
-
return /^\$[A-Z_]+$/i.test(pattern.trim());
|
|
174
|
-
}
|
|
175
|
-
export function isStructuredRule(rule) {
|
|
176
|
-
if (!rule.rule)
|
|
177
|
-
return false;
|
|
178
|
-
// The rich pattern form ({context, selector, âĻ}) is itself a structured
|
|
179
|
-
// match â it specifies a context snippet plus the AST node to pick out.
|
|
180
|
-
// Without recognizing it as structure, an otherwise-rich rule with only
|
|
181
|
-
// `pattern: {context, selector}` and no other combinators would be wrongly
|
|
182
|
-
// classified as "unstructured single-metavar" and dropped by the runner.
|
|
183
|
-
const hasRichPattern = typeof rule.rule.pattern === "object" && rule.rule.pattern !== null;
|
|
184
|
-
return !!(hasRichPattern ||
|
|
185
|
-
rule.rule.has ||
|
|
186
|
-
rule.rule.any ||
|
|
187
|
-
rule.rule.all ||
|
|
188
|
-
rule.rule.not ||
|
|
189
|
-
rule.rule.regex);
|
|
190
|
-
}
|
|
191
|
-
export function calculateRuleComplexity(condition) {
|
|
192
|
-
if (!condition)
|
|
193
|
-
return 0;
|
|
194
|
-
let score = 0;
|
|
195
|
-
if (condition.has)
|
|
196
|
-
score += 3;
|
|
197
|
-
if (condition.not)
|
|
198
|
-
score += 2;
|
|
199
|
-
if (condition.regex)
|
|
200
|
-
score += 2;
|
|
201
|
-
if (condition.any)
|
|
202
|
-
score += condition.any.length * 2;
|
|
203
|
-
if (condition.all)
|
|
204
|
-
score += condition.all.length * 3;
|
|
205
|
-
if (condition.has)
|
|
206
|
-
score += calculateRuleComplexity(condition.has);
|
|
207
|
-
if (condition.not)
|
|
208
|
-
score += calculateRuleComplexity(condition.not);
|
|
209
|
-
if (condition.any) {
|
|
210
|
-
for (const sub of condition.any)
|
|
211
|
-
score += calculateRuleComplexity(sub);
|
|
212
|
-
}
|
|
213
|
-
if (condition.all) {
|
|
214
|
-
for (const sub of condition.all)
|
|
215
|
-
score += calculateRuleComplexity(sub);
|
|
216
|
-
}
|
|
217
|
-
return score;
|
|
218
|
-
}
|
|
219
|
-
// --- YAML Parser ---
|
|
220
|
-
/**
|
|
221
|
-
* Parse a single YAML rule document into a {@link YamlRule}.
|
|
222
|
-
*
|
|
223
|
-
* Uses `js-yaml` so the full ast-grep rule grammar â nested `any`/`all`/`has`,
|
|
224
|
-
* `field`/`inside`/`stopBy`, and metavariable `constraints` â survives intact and
|
|
225
|
-
* can be handed straight to napi's native engine. (The former hand-rolled parser
|
|
226
|
-
* flattened nested structures and dropped constraints, which is why those rules
|
|
227
|
-
* had to be skipped; see #206.) A malformed document returns `null` rather than
|
|
228
|
-
* throwing, so callers skip just that rule.
|
|
229
|
-
*/
|
|
230
|
-
export function parseSimpleYaml(content) {
|
|
231
|
-
let parsed;
|
|
232
|
-
try {
|
|
233
|
-
parsed = yaml.load(content);
|
|
234
|
-
}
|
|
235
|
-
catch {
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
238
|
-
if (!parsed || typeof parsed !== "object")
|
|
239
|
-
return null;
|
|
240
|
-
const rule = parsed;
|
|
241
|
-
return rule.id ? rule : null;
|
|
242
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
3
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
4
|
-
import { logRunnerAdvisoryOnce } from "../../tool-cwd.js";
|
|
5
|
-
import { getLinterPolicyForCwd, hasYamllintConfig } from "../../tool-policy.js";
|
|
6
|
-
import { PRIORITY } from "../priorities.js";
|
|
7
|
-
import { createAvailabilityChecker, resolveRunnerCwd, resolveToolCommandWithInstallFallback, } from "./utils/runner-helpers.js";
|
|
8
|
-
import { parseToolRun } from "./utils/tool-failure.js";
|
|
9
|
-
import { finishParsedRun } from "./utils/tool-failure.js";
|
|
10
|
-
const yamllint = createAvailabilityChecker("yamllint", ".exe");
|
|
11
|
-
export { hasYamllintConfig };
|
|
12
|
-
function parseYamllintParsable(raw, filePath, cwd) {
|
|
13
|
-
const diagnostics = [];
|
|
14
|
-
const absTarget = path.resolve(cwd, filePath);
|
|
15
|
-
for (const line of raw.split(/\r?\n/)) {
|
|
16
|
-
if (!line.trim())
|
|
17
|
-
continue;
|
|
18
|
-
const match = line.match(/^(.*?):(\d+):(\d+):\s*\[(error|warning)\]\s*(.*?)\s*\(([^)]+)\)\s*$/i);
|
|
19
|
-
if (!match)
|
|
20
|
-
continue;
|
|
21
|
-
if (!pathsEqual(path.resolve(cwd, match[1]), absTarget))
|
|
22
|
-
continue;
|
|
23
|
-
const severity = match[4].toLowerCase() === "error" ? "error" : "warning";
|
|
24
|
-
diagnostics.push({
|
|
25
|
-
id: `yamllint-${match[2]}-${match[3]}-${match[6]}`,
|
|
26
|
-
message: `[${match[6]}] ${match[5]}`,
|
|
27
|
-
filePath,
|
|
28
|
-
line: Number(match[2]),
|
|
29
|
-
column: Number(match[3]),
|
|
30
|
-
severity,
|
|
31
|
-
semantic: severity === "error" ? "blocking" : "warning",
|
|
32
|
-
tool: "yamllint",
|
|
33
|
-
rule: match[6],
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return diagnostics;
|
|
37
|
-
}
|
|
38
|
-
const yamllintRunner = {
|
|
39
|
-
id: "yamllint",
|
|
40
|
-
appliesTo: ["yaml"],
|
|
41
|
-
priority: PRIORITY.YAML_LINT,
|
|
42
|
-
skipTestFiles: false,
|
|
43
|
-
async run(ctx) {
|
|
44
|
-
const cwd = resolveRunnerCwd(ctx, "yamllint");
|
|
45
|
-
const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
|
|
46
|
-
if (policy && !policy.preferredRunners.includes("yamllint")) {
|
|
47
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
48
|
-
}
|
|
49
|
-
const hasConfig = hasYamllintConfig(cwd);
|
|
50
|
-
if (!hasConfig) {
|
|
51
|
-
logRunnerAdvisoryOnce(ctx, "yamllint", cwd, "yamllint: no config detected, running with default rules");
|
|
52
|
-
}
|
|
53
|
-
let cmd = null;
|
|
54
|
-
if (await yamllint.isAvailableAsync(cwd)) {
|
|
55
|
-
cmd = yamllint.getCommand(cwd);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
cmd = await resolveToolCommandWithInstallFallback(cwd, "yamllint");
|
|
59
|
-
}
|
|
60
|
-
if (!cmd)
|
|
61
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
62
|
-
const result = await safeSpawnAsync(cmd, ["-f", "parsable", ctx.filePath], {
|
|
63
|
-
cwd,
|
|
64
|
-
timeout: 15000,
|
|
65
|
-
});
|
|
66
|
-
// #1816: this runner read `result.status` zero times, so a yamllint
|
|
67
|
-
// that rejected its config reported a clean YAML file.
|
|
68
|
-
//
|
|
69
|
-
// No exit-code table: yamllint returns 2 both for "warnings only" and
|
|
70
|
-
// for an argparse usage error, so declaring 2 a rejection would discard
|
|
71
|
-
// real warnings. The discriminator is the STREAM instead. `-f parsable`
|
|
72
|
-
// writes findings to stdout and nothing else; stderr carries usage text
|
|
73
|
-
// and tracebacks. So the gate judges "nothing to parse" on stdout alone,
|
|
74
|
-
// while the parser still reads both streams.
|
|
75
|
-
const raw = `${result.stdout ?? ""}${result.stderr ?? ""}`;
|
|
76
|
-
// #1948: classify on stdout as before, parse both streams as before, and
|
|
77
|
-
// record when a failing run yields nothing.
|
|
78
|
-
const run = parseToolRun("yamllint", {
|
|
79
|
-
result,
|
|
80
|
-
output: result.stdout,
|
|
81
|
-
// EXIT TABLE (yamllint 1.35 docs https://yamllint.readthedocs.io/en/stable/): 0 clean; 1 findings; 2 error; other nonzero rejected.
|
|
82
|
-
exitCodes: { ran: [1, 2] },
|
|
83
|
-
}, (out) => parseYamllintParsable(out, ctx.filePath, cwd), { parseOutput: raw });
|
|
84
|
-
if (run.skipped)
|
|
85
|
-
return run.skipped;
|
|
86
|
-
const diagnostics = run.diagnostics;
|
|
87
|
-
return finishParsedRun({
|
|
88
|
-
tool: "yamllint",
|
|
89
|
-
ctx,
|
|
90
|
-
result,
|
|
91
|
-
diagnostics,
|
|
92
|
-
});
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
export default yamllintRunner;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
3
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
4
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
5
|
-
import { createAvailabilityChecker } from "./utils/runner-helpers.js";
|
|
6
|
-
import { PRIORITY } from "../priorities.js";
|
|
7
|
-
import { finishParsedRun, parseToolRun } from "./utils/tool-failure.js";
|
|
8
|
-
// zig rejects `--version`; the version subcommand is `zig version`. Using the
|
|
9
|
-
// default probe would make this runner skip on every machine.
|
|
10
|
-
const zig = createAvailabilityChecker("zig", ".exe", ["version"]);
|
|
11
|
-
function parseZigOutput(raw, filePath, cwd) {
|
|
12
|
-
const diagnostics = [];
|
|
13
|
-
const absTarget = path.resolve(cwd, filePath);
|
|
14
|
-
for (const line of raw.split(/\r?\n/)) {
|
|
15
|
-
const match = line.match(/^(.*?):(\d+):(\d+):\s*(error|warning|note):\s*(.+)$/);
|
|
16
|
-
if (!match)
|
|
17
|
-
continue;
|
|
18
|
-
const [, rawFile, lineStr, colStr, level, message] = match;
|
|
19
|
-
// #3278: one seam for reported-path attribution â see javac.ts.
|
|
20
|
-
if (!pathsEqual(path.resolve(cwd, rawFile.trim()), absTarget))
|
|
21
|
-
continue;
|
|
22
|
-
const severity = level === "error" ? "error" : "warning";
|
|
23
|
-
diagnostics.push({
|
|
24
|
-
id: `zig-${level}-${lineStr}-${colStr}`,
|
|
25
|
-
message,
|
|
26
|
-
filePath,
|
|
27
|
-
line: Number.parseInt(lineStr, 10) || 1,
|
|
28
|
-
column: Number.parseInt(colStr, 10) || 1,
|
|
29
|
-
severity,
|
|
30
|
-
// `zig build-exe <file>` does not load build.zig module/import context.
|
|
31
|
-
// Its findings are useful evidence, but cannot prove a project blocker.
|
|
32
|
-
semantic: "warning",
|
|
33
|
-
tool: "zig",
|
|
34
|
-
rule: `zig-${level}`,
|
|
35
|
-
fixable: false,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return diagnostics;
|
|
39
|
-
}
|
|
40
|
-
const zigCheckRunner = {
|
|
41
|
-
id: "zig-check",
|
|
42
|
-
appliesTo: ["zig"],
|
|
43
|
-
priority: PRIORITY.GENERAL_ANALYSIS,
|
|
44
|
-
skipTestFiles: false,
|
|
45
|
-
async run(ctx) {
|
|
46
|
-
const cwd = resolveRunnerCwd(ctx, "zig-check");
|
|
47
|
-
if (!(await zig.isAvailableAsync(cwd))) {
|
|
48
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
49
|
-
}
|
|
50
|
-
const cmd = zig.getCommand(cwd);
|
|
51
|
-
const absPath = path.resolve(cwd, ctx.filePath);
|
|
52
|
-
const result = await safeSpawnAsync(cmd, ["build-exe", absPath, "-fno-emit-bin"], { cwd, timeout: 30000 });
|
|
53
|
-
if (result.error && !result.stdout && !result.stderr) {
|
|
54
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
55
|
-
}
|
|
56
|
-
const raw = `${result.stdout || ""}\n${result.stderr || ""}`;
|
|
57
|
-
const parsed = parseToolRun("zig-check", {
|
|
58
|
-
result,
|
|
59
|
-
output: raw,
|
|
60
|
-
// EXIT TABLE (Zig 0.13 measured fixture): 0 clean; 1 findings; 2 error; other nonzero rejected.
|
|
61
|
-
exitCodes: { ran: [1, 2] },
|
|
62
|
-
}, (output) => parseZigOutput(output, ctx.filePath, cwd));
|
|
63
|
-
if (parsed.skipped)
|
|
64
|
-
return parsed.skipped;
|
|
65
|
-
return finishParsedRun({
|
|
66
|
-
tool: "zig-check",
|
|
67
|
-
ctx,
|
|
68
|
-
result,
|
|
69
|
-
diagnostics: parsed.diagnostics,
|
|
70
|
-
classify: (diagnostics) => ({
|
|
71
|
-
status: diagnostics.some((d) => d.severity === "error")
|
|
72
|
-
? "failed"
|
|
73
|
-
: "succeeded",
|
|
74
|
-
semantic: "warning",
|
|
75
|
-
}),
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
export default zigCheckRunner;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Writes the `pi-lens-ignore` suppression comment that inline-suppressions.ts
|
|
3
|
-
* already knows how to read (#690's `suppress` disposition). The reader
|
|
4
|
-
* accepts either `//` or `#` on any line regardless of language, but the
|
|
5
|
-
* WRITER must pick the syntactically valid comment character for the target
|
|
6
|
-
* file â an errant `#` line breaks parsing in a `//`-comment language and
|
|
7
|
-
* vice versa.
|
|
8
|
-
*/
|
|
9
|
-
import * as path from "node:path";
|
|
10
|
-
import { parseInlineSuppressionRuleIds, splitInlineSuppressionPayload, } from "./inline-suppressions.js";
|
|
11
|
-
const HASH_COMMENT_EXTENSIONS = new Set([
|
|
12
|
-
".py",
|
|
13
|
-
".rb",
|
|
14
|
-
".sh",
|
|
15
|
-
".bash",
|
|
16
|
-
".zsh",
|
|
17
|
-
".yml",
|
|
18
|
-
".yaml",
|
|
19
|
-
".toml",
|
|
20
|
-
".r",
|
|
21
|
-
".pl",
|
|
22
|
-
".pm",
|
|
23
|
-
".ex",
|
|
24
|
-
".exs",
|
|
25
|
-
".elixir",
|
|
26
|
-
".dockerfile",
|
|
27
|
-
".gitignore",
|
|
28
|
-
".conf",
|
|
29
|
-
".cfg",
|
|
30
|
-
".ini",
|
|
31
|
-
]);
|
|
32
|
-
function commentPrefixFor(filePath) {
|
|
33
|
-
const ext = path.extname(filePath).toLowerCase();
|
|
34
|
-
return HASH_COMMENT_EXTENSIONS.has(ext) ? "#" : "//";
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Insert a `pi-lens-ignore: <rule>` comment on the line immediately above
|
|
38
|
-
* `line` (1-based), matching inline-suppressions.ts's "same line or line
|
|
39
|
-
* above" read semantics. If the line above already carries a pi-lens-ignore
|
|
40
|
-
* comment, the rule is appended to its list instead of adding a duplicate
|
|
41
|
-
* comment line. Returns the updated content; throws if `line` is out of range.
|
|
42
|
-
*/
|
|
43
|
-
export function insertSuppressComment(content, filePath, line, rule) {
|
|
44
|
-
const lines = content.split(/\r?\n/);
|
|
45
|
-
if (line < 1 || line > lines.length) {
|
|
46
|
-
throw new Error(`line ${line} is out of range (file has ${lines.length} lines)`);
|
|
47
|
-
}
|
|
48
|
-
const prefix = commentPrefixFor(filePath);
|
|
49
|
-
const aboveIdx = line - 2; // 0-based index of the line immediately above
|
|
50
|
-
const existingAbove = aboveIdx >= 0 ? lines[aboveIdx] : undefined;
|
|
51
|
-
const suppressRe = /((?:\/\/|#)\s*pi-lens-ignore:\s*)(.+)$/;
|
|
52
|
-
const match = existingAbove !== undefined ? suppressRe.exec(existingAbove) : null;
|
|
53
|
-
if (match && existingAbove !== undefined) {
|
|
54
|
-
const prefix = match[1];
|
|
55
|
-
const payload = match[2];
|
|
56
|
-
if (prefix === undefined || payload === undefined)
|
|
57
|
-
return content;
|
|
58
|
-
const { ruleList, trailingReason } = splitInlineSuppressionPayload(payload);
|
|
59
|
-
const rules = ruleList
|
|
60
|
-
.split(",")
|
|
61
|
-
.map((r) => r.trim())
|
|
62
|
-
.filter(Boolean);
|
|
63
|
-
const ruleIds = parseInlineSuppressionRuleIds(ruleList);
|
|
64
|
-
if (!ruleIds.includes(rule))
|
|
65
|
-
rules.push(rule);
|
|
66
|
-
lines[aboveIdx] =
|
|
67
|
-
existingAbove.slice(0, match.index) +
|
|
68
|
-
prefix +
|
|
69
|
-
rules.join(", ") +
|
|
70
|
-
trailingReason;
|
|
71
|
-
return lines.join("\n");
|
|
72
|
-
}
|
|
73
|
-
// Match the indentation of the flagged line so the inserted comment lines
|
|
74
|
-
// up rather than sitting at column 0.
|
|
75
|
-
const targetLine = lines[line - 1] ?? "";
|
|
76
|
-
const indent = /^\s*/.exec(targetLine)?.[0] ?? "";
|
|
77
|
-
lines.splice(line - 1, 0, `${indent}${prefix} pi-lens-ignore: ${rule}`);
|
|
78
|
-
return lines.join("\n");
|
|
79
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
const DEFAULT_TOOL_PROFILE = {
|
|
2
|
-
dedupPriority: 50,
|
|
3
|
-
lintLike: false,
|
|
4
|
-
};
|
|
5
|
-
const TOOL_PROFILE_MAP = {
|
|
6
|
-
"tree-sitter:silent-error": { dedupPriority: 200, lintLike: false },
|
|
7
|
-
lsp: { dedupPriority: 120, lintLike: false },
|
|
8
|
-
eslint: { dedupPriority: 110, lintLike: true },
|
|
9
|
-
biome: { dedupPriority: 100, lintLike: true },
|
|
10
|
-
"biome-check-json": { dedupPriority: 100, lintLike: true },
|
|
11
|
-
"tree-sitter": { dedupPriority: 90, lintLike: false },
|
|
12
|
-
"ast-grep-napi": { dedupPriority: 80, lintLike: false },
|
|
13
|
-
"ast-grep": { dedupPriority: 80, lintLike: false },
|
|
14
|
-
"ruff-lint": { dedupPriority: 95, lintLike: true },
|
|
15
|
-
oxlint: { dedupPriority: 95, lintLike: true },
|
|
16
|
-
rubocop: { dedupPriority: 95, lintLike: true },
|
|
17
|
-
"go-vet": { dedupPriority: 95, lintLike: true },
|
|
18
|
-
"golangci-lint": { dedupPriority: 95, lintLike: true },
|
|
19
|
-
"rust-clippy": { dedupPriority: 95, lintLike: true },
|
|
20
|
-
shellcheck: { dedupPriority: 95, lintLike: true },
|
|
21
|
-
opengrep: { dedupPriority: 105, lintLike: false },
|
|
22
|
-
"trivy-config": { dedupPriority: 105, lintLike: false },
|
|
23
|
-
};
|
|
24
|
-
export function getToolProfile(tool, defectClass) {
|
|
25
|
-
const t = tool.toLowerCase();
|
|
26
|
-
if (defectClass === "silent-error" && t === "tree-sitter") {
|
|
27
|
-
return TOOL_PROFILE_MAP["tree-sitter:silent-error"];
|
|
28
|
-
}
|
|
29
|
-
return TOOL_PROFILE_MAP[t] ?? DEFAULT_TOOL_PROFILE;
|
|
30
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Redesigned Dispatch Types for pi-lens
|
|
3
|
-
*
|
|
4
|
-
* Key insight: Different clients have different OUTPUT SEMANTICS:
|
|
5
|
-
* - BLOCKING: Errors that stop the agent (architect, lsp errors)
|
|
6
|
-
* - WARNING: Non-blocking issues (biome warnings, type-safety)
|
|
7
|
-
* - FIXABLE: Issues with auto-fix available
|
|
8
|
-
* - SILENT: Metrics tracked but not shown (complexity)
|
|
9
|
-
* - INFORMATIONAL: Shown in session summary only
|
|
10
|
-
*
|
|
11
|
-
* The dispatcher must handle these semantics consistently.
|
|
12
|
-
*/
|
|
13
|
-
/** Closed telemetry taxonomy for expected runner skips. */
|
|
14
|
-
export const RUNNER_SKIP_REASONS = [
|
|
15
|
-
"no-files-matched",
|
|
16
|
-
"configured-non-biome-linter",
|
|
17
|
-
];
|
|
18
|
-
/** Runtime guard for untyped/plugin-provided runner results. */
|
|
19
|
-
export function isRunnerSkipReason(value) {
|
|
20
|
-
return RUNNER_SKIP_REASONS.some((reason) => reason === value);
|
|
21
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared formatting utilities for the dispatch system.
|
|
3
|
-
*/
|
|
4
|
-
const EMOJI = {
|
|
5
|
-
blocking: "đ´",
|
|
6
|
-
warning: "đĄ",
|
|
7
|
-
fixed: "â
",
|
|
8
|
-
info: "âšī¸",
|
|
9
|
-
silent: "đ",
|
|
10
|
-
none: "",
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Format a single diagnostic for display
|
|
14
|
-
*/
|
|
15
|
-
function formatDiagnostic(d) {
|
|
16
|
-
const line = d.line ? `L${d.line}: ` : "";
|
|
17
|
-
const indented = d.message.split("\n").join("\n ");
|
|
18
|
-
const fix = d.fixSuggestion ? `\n đĄ Fix: ${d.fixSuggestion}` : "";
|
|
19
|
-
return ` ${line}${indented}${fix}`;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Format a group of diagnostics with semantic header
|
|
23
|
-
*/
|
|
24
|
-
export function formatDiagnostics(diagnostics, semantic, maxDisplay = 10) {
|
|
25
|
-
if (diagnostics.length === 0)
|
|
26
|
-
return "";
|
|
27
|
-
const emoji = EMOJI[semantic] ?? EMOJI.warning;
|
|
28
|
-
let output = "";
|
|
29
|
-
if (semantic === "blocking") {
|
|
30
|
-
output += `\n${emoji} STOP â ${diagnostics.length} issue(s) must be fixed:\n`;
|
|
31
|
-
}
|
|
32
|
-
else if (semantic === "warning") {
|
|
33
|
-
output += `\n${emoji} ${diagnostics.length} warning(s):\n`;
|
|
34
|
-
}
|
|
35
|
-
else if (semantic === "fixed") {
|
|
36
|
-
output += `\n${emoji} Auto-fixed ${diagnostics.length} issue(s):\n`;
|
|
37
|
-
}
|
|
38
|
-
for (const d of diagnostics.slice(0, maxDisplay)) {
|
|
39
|
-
output += `${formatDiagnostic(d)}\n`;
|
|
40
|
-
}
|
|
41
|
-
if (diagnostics.length > maxDisplay) {
|
|
42
|
-
output += ` ... and ${diagnostics.length - maxDisplay} more\n`;
|
|
43
|
-
}
|
|
44
|
-
return output;
|
|
45
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export function convertLspDiagnostics(diags, filePath, options = {}) {
|
|
2
|
-
const tool = options.tool ?? "lsp";
|
|
3
|
-
return diags
|
|
4
|
-
.filter((d) => d.range?.start?.line !== undefined)
|
|
5
|
-
.map((d, idx) => {
|
|
6
|
-
const severityMap = {
|
|
7
|
-
1: "error",
|
|
8
|
-
2: "warning",
|
|
9
|
-
4: "hint",
|
|
10
|
-
};
|
|
11
|
-
const severity = severityMap[d.severity] ?? "info";
|
|
12
|
-
const semantic = d.severity === 1 ? "blocking" : d.severity === 2 ? "warning" : "none";
|
|
13
|
-
const code = String(d.code ?? "unknown");
|
|
14
|
-
// #692: identity ALWAYS derives from the diagnostic's own source â never
|
|
15
|
-
// from a caller-supplied scan label (see `scanOrigin`'s doc comment above).
|
|
16
|
-
const source = d.source ?? tool;
|
|
17
|
-
const hasSuggestion = options.fixSuggestionByIndex?.has(idx) ?? false;
|
|
18
|
-
return {
|
|
19
|
-
id: `${tool}:${code}:${d.range.start.line}`,
|
|
20
|
-
message: d.message,
|
|
21
|
-
filePath,
|
|
22
|
-
line: d.range.start.line + 1,
|
|
23
|
-
column: d.range.start.character + 1,
|
|
24
|
-
severity,
|
|
25
|
-
semantic,
|
|
26
|
-
tool,
|
|
27
|
-
rule: `${source}:${code}`,
|
|
28
|
-
fixable: hasSuggestion,
|
|
29
|
-
autoFixAvailable: false,
|
|
30
|
-
fixKind: hasSuggestion ? "suggestion" : undefined,
|
|
31
|
-
fixSuggestion: options.fixSuggestionByIndex?.get(idx),
|
|
32
|
-
scanOrigin: options.scanOrigin,
|
|
33
|
-
};
|
|
34
|
-
});
|
|
35
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NDJSON telemetry log for diagnostic disposition marks (#690). Same shape as
|
|
3
|
-
* clients/actionable-warnings-logger.ts: machine-global (getGlobalPiLensLogDir),
|
|
4
|
-
* size-capped with a single `.log.1` backup, isTestMode no-op.
|
|
5
|
-
*
|
|
6
|
-
* Why a log at all: #181 identified false-positive marks flowing to telemetry
|
|
7
|
-
* as THE highest-value rule-tuning signal â which shipped rules misfire, on
|
|
8
|
-
* what tools, how often â and this is that hookup. The disposition store
|
|
9
|
-
* itself is not enough: it keeps only the LATEST entry per anchor (a re-mark
|
|
10
|
-
* overwrites), and `defer` marks never touch the store at all (in-memory by
|
|
11
|
-
* design), so this log is the only durable trace of both re-mark history and
|
|
12
|
-
* defer activity.
|
|
13
|
-
*/
|
|
14
|
-
import * as path from "node:path";
|
|
15
|
-
import { isTestMode } from "./env-utils.js";
|
|
16
|
-
import { getGlobalPiLensLogDir } from "./probe-home-state.js";
|
|
17
|
-
import { createNdjsonLogger } from "./ndjson-logger.js";
|
|
18
|
-
const DISPOSITION_LOG_DIR = getGlobalPiLensLogDir();
|
|
19
|
-
const DISPOSITION_LOG_FILE = path.join(DISPOSITION_LOG_DIR, "dispositions.log");
|
|
20
|
-
const DISPOSITION_LOG_BACKUP_FILE = path.join(DISPOSITION_LOG_DIR, "dispositions.log.1");
|
|
21
|
-
const MAX_LOG_BYTES = Math.max(128 * 1024, Number.parseInt(process.env.PI_LENS_DISPOSITION_LOG_MAX_BYTES ?? "1048576", 10) || 1048576);
|
|
22
|
-
const writer = createNdjsonLogger({
|
|
23
|
-
filePath: DISPOSITION_LOG_FILE,
|
|
24
|
-
maxBytes: MAX_LOG_BYTES,
|
|
25
|
-
backupPath: DISPOSITION_LOG_BACKUP_FILE,
|
|
26
|
-
});
|
|
27
|
-
export function logDispositionEvent(entry) {
|
|
28
|
-
if (isTestMode()) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
writer.log({ ts: new Date().toISOString(), ...entry });
|
|
32
|
-
}
|