@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,286 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
|
-
import { toRunnerDisplayPath } from "./dispatch/runner-context.js";
|
|
4
|
-
import { displayProjectDataPath, getProjectDataDir } from "./file-utils.js";
|
|
5
|
-
import { normalizeMessage, stableFindingId } from "./finding-identity.js";
|
|
6
|
-
import { normalizeMapKey } from "./path-utils.js";
|
|
7
|
-
import { resolveLensToolName } from "./tool-config.js";
|
|
8
|
-
/**
|
|
9
|
-
* Report-budget precedence (#1777). A hint is an opinion; a warning is a
|
|
10
|
-
* finding. When the report is capped, warnings must be spent first, or an
|
|
11
|
-
* alphabetically-early file's hints can push every real warning out of the
|
|
12
|
-
* agent's view — the exact "hints dominate the stream" failure the hint tier
|
|
13
|
-
* exists to prevent.
|
|
14
|
-
*/
|
|
15
|
-
const TIER_BUDGET_ORDER = [
|
|
16
|
-
"warning",
|
|
17
|
-
"info",
|
|
18
|
-
"hint",
|
|
19
|
-
];
|
|
20
|
-
/** #1816: was a local `relativeFile|tool|rule|code|normalizedMessage|line`
|
|
21
|
-
* hash (raw, non-canonicalized `relativeFile`, 10-char hash), independently
|
|
22
|
-
* hand-rolled from `actionable-warnings.ts`'s twin and
|
|
23
|
-
* `diagnostic-dispositions.ts`'s canonicalizing original. Now the shared
|
|
24
|
-
* `finding-identity.js` builder (canonicalizes `cwd`/`filePath` through
|
|
25
|
-
* `normalizeMapKey`, hashes to 12 chars). No back-compat migration needed
|
|
26
|
-
* here: `cq:` ids are never a keyed lookup — `buildCodeQualityWarningsReport`
|
|
27
|
-
* regenerates the whole report fresh every turn, callers only ever cache and
|
|
28
|
-
* replay the report wholesale (`tools/lens-diagnostics.ts` reads it via
|
|
29
|
-
* `cacheManager.readCache<CodeQualityWarningsReport>`, never by `id`), and
|
|
30
|
-
* `appendCodeQualityWarningsHistory` just append-only-logs the id for
|
|
31
|
-
* observability, never look it back up. Contrast `actionable-warnings.ts`,
|
|
32
|
-
* whose `actionable-warning-state.json` DOES key a persisted suppression
|
|
33
|
-
* store on `aw:` — that one migrates. */
|
|
34
|
-
function createCodeQualityWarningId(args) {
|
|
35
|
-
return stableFindingId("cq:", {
|
|
36
|
-
cwd: args.cwd,
|
|
37
|
-
filePath: args.filePath,
|
|
38
|
-
parts: [
|
|
39
|
-
args.tool,
|
|
40
|
-
args.rule,
|
|
41
|
-
args.code,
|
|
42
|
-
normalizeMessage(args.message),
|
|
43
|
-
args.line,
|
|
44
|
-
],
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function categorize(diagnostic) {
|
|
48
|
-
const haystack = `${diagnostic.tool} ${diagnostic.rule ?? ""} ${diagnostic.code ?? ""} ${diagnostic.message}`.toLowerCase();
|
|
49
|
-
if (haystack.includes("type") || haystack.includes("any"))
|
|
50
|
-
return "type-safety";
|
|
51
|
-
if (haystack.includes("complex") ||
|
|
52
|
-
haystack.includes("fan-out") ||
|
|
53
|
-
haystack.includes("fanout"))
|
|
54
|
-
return "maintainability";
|
|
55
|
-
if (haystack.includes("duplicate") || haystack.includes("similar"))
|
|
56
|
-
return "duplication";
|
|
57
|
-
if (haystack.includes("style") || haystack.includes("format"))
|
|
58
|
-
return "style";
|
|
59
|
-
return "other";
|
|
60
|
-
}
|
|
61
|
-
function lineInModifiedRanges(line, ranges) {
|
|
62
|
-
if (line === undefined)
|
|
63
|
-
return true;
|
|
64
|
-
if (ranges.length === 0)
|
|
65
|
-
return true;
|
|
66
|
-
return ranges.some((range) => line >= range.start - 2 && line <= range.end + 2);
|
|
67
|
-
}
|
|
68
|
-
export function recordFromCodeQualityDiagnostic(diagnostic, cwd) {
|
|
69
|
-
if (diagnostic.semantic !== "warning" && diagnostic.semantic !== "none")
|
|
70
|
-
return undefined;
|
|
71
|
-
if (diagnostic.severity === "error")
|
|
72
|
-
return undefined;
|
|
73
|
-
if (diagnostic.fixable ||
|
|
74
|
-
diagnostic.fixSuggestion ||
|
|
75
|
-
diagnostic.autoFixAvailable)
|
|
76
|
-
return undefined;
|
|
77
|
-
const filePath = path.resolve(cwd, diagnostic.filePath);
|
|
78
|
-
return {
|
|
79
|
-
id: createCodeQualityWarningId({
|
|
80
|
-
cwd,
|
|
81
|
-
filePath,
|
|
82
|
-
tool: diagnostic.tool,
|
|
83
|
-
rule: diagnostic.rule,
|
|
84
|
-
code: diagnostic.code,
|
|
85
|
-
message: diagnostic.message,
|
|
86
|
-
line: diagnostic.line,
|
|
87
|
-
}),
|
|
88
|
-
filePath,
|
|
89
|
-
displayPath: toRunnerDisplayPath(cwd, filePath),
|
|
90
|
-
line: diagnostic.line,
|
|
91
|
-
column: diagnostic.column,
|
|
92
|
-
severity: diagnostic.severity === "hint"
|
|
93
|
-
? "hint"
|
|
94
|
-
: diagnostic.severity === "info"
|
|
95
|
-
? "info"
|
|
96
|
-
: "warning",
|
|
97
|
-
tool: diagnostic.tool,
|
|
98
|
-
rule: diagnostic.rule,
|
|
99
|
-
code: diagnostic.code,
|
|
100
|
-
message: diagnostic.message,
|
|
101
|
-
category: categorize(diagnostic),
|
|
102
|
-
origin: "dispatch",
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
export function buildCodeQualityWarningsReport(args) {
|
|
106
|
-
const cwd = path.resolve(args.cwd);
|
|
107
|
-
const maxWarnings = Math.max(1, args.maxWarnings ?? 50);
|
|
108
|
-
const byId = new Map();
|
|
109
|
-
for (const warning of args.warnings) {
|
|
110
|
-
const ranges = args.modifiedRangesByFile.get(normalizeMapKey(warning.filePath)) ?? [];
|
|
111
|
-
if (!lineInModifiedRanges(warning.line, ranges))
|
|
112
|
-
continue;
|
|
113
|
-
byId.set(warning.id, warning);
|
|
114
|
-
}
|
|
115
|
-
const byDisplayOrder = (a, b) => a.displayPath.localeCompare(b.displayPath) ||
|
|
116
|
-
(a.line ?? 0) - (b.line ?? 0) ||
|
|
117
|
-
a.message.localeCompare(b.message);
|
|
118
|
-
// Spend the budget tier by tier (see TIER_BUDGET_ORDER), then restore
|
|
119
|
-
// display order so the report still reads file by file, line by line.
|
|
120
|
-
const candidates = [...byId.values()].sort(byDisplayOrder);
|
|
121
|
-
const merged = [];
|
|
122
|
-
for (const tier of TIER_BUDGET_ORDER) {
|
|
123
|
-
for (const warning of candidates) {
|
|
124
|
-
if (merged.length >= maxWarnings)
|
|
125
|
-
break;
|
|
126
|
-
if (warning.severity === tier)
|
|
127
|
-
merged.push(warning);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
merged.sort(byDisplayOrder);
|
|
131
|
-
const byFile = new Map();
|
|
132
|
-
for (const warning of merged) {
|
|
133
|
-
const arr = byFile.get(warning.filePath) ?? [];
|
|
134
|
-
arr.push(warning);
|
|
135
|
-
byFile.set(warning.filePath, arr);
|
|
136
|
-
}
|
|
137
|
-
const files = [...byFile.entries()].map(([filePath, warnings]) => ({
|
|
138
|
-
filePath,
|
|
139
|
-
displayPath: toRunnerDisplayPath(cwd, filePath),
|
|
140
|
-
fileSeq: args.fileSeqByPath?.get(normalizeMapKey(filePath)),
|
|
141
|
-
warnings,
|
|
142
|
-
}));
|
|
143
|
-
const ruleCounts = new Map();
|
|
144
|
-
for (const warning of merged) {
|
|
145
|
-
const rule = warning.rule ?? warning.tool;
|
|
146
|
-
ruleCounts.set(rule, (ruleCounts.get(rule) ?? 0) + 1);
|
|
147
|
-
}
|
|
148
|
-
const topRules = [...ruleCounts.entries()]
|
|
149
|
-
.map(([rule, count]) => ({ rule, count }))
|
|
150
|
-
.sort((a, b) => b.count - a.count || a.rule.localeCompare(b.rule))
|
|
151
|
-
.slice(0, 8);
|
|
152
|
-
return {
|
|
153
|
-
generatedAt: new Date().toISOString(),
|
|
154
|
-
scope: "turn_delta",
|
|
155
|
-
sessionId: args.sessionId,
|
|
156
|
-
turnIndex: args.turnIndex,
|
|
157
|
-
projectSeqStart: args.projectSeqStart,
|
|
158
|
-
projectSeqEnd: args.projectSeqEnd,
|
|
159
|
-
deltaOnly: true,
|
|
160
|
-
files,
|
|
161
|
-
summary: {
|
|
162
|
-
warnings: merged.length,
|
|
163
|
-
files: files.length,
|
|
164
|
-
byTier: {
|
|
165
|
-
warning: merged.filter((w) => w.severity === "warning").length,
|
|
166
|
-
info: merged.filter((w) => w.severity === "info").length,
|
|
167
|
-
hint: merged.filter((w) => w.severity === "hint").length,
|
|
168
|
-
},
|
|
169
|
-
topRules,
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* #557 audit (same race class as #555's LSP client fix and #560's
|
|
175
|
-
* `widget-state.ts` `recordDiagnostics` fix): pi-lens deliberately allows
|
|
176
|
-
* concurrent pipeline runs for the SAME file across DIFFERENT same-turn
|
|
177
|
-
* edits (dedupe key is `filePath + contentHash`, not just `filePath` — see
|
|
178
|
-
* `clients/runtime-tool-result.ts`), so a per-key cache fed directly from
|
|
179
|
-
* those concurrent pipeline runs needs an ordering guard (`WriteOrderingGuard`
|
|
180
|
-
* from `clients/write-ordering-guard.ts`) or an older edit's slower pipeline
|
|
181
|
-
* can silently overwrite a newer edit's fresher write.
|
|
182
|
-
*
|
|
183
|
-
* This call site is NOT exposed to that race. Unlike `widget-state.ts`'s
|
|
184
|
-
* `recordDiagnostics` (called directly from `clients/pipeline.ts`, once per
|
|
185
|
-
* pipeline run — i.e. potentially several times per turn, out of completion
|
|
186
|
-
* order), `writeCodeQualityWarningsReport` has exactly one caller:
|
|
187
|
-
* `handleTurnEnd` in `clients/runtime-turn.ts`, which per-edit pipeline runs
|
|
188
|
-
* never call directly — they only feed `runtime.recordCodeQualityWarnings`
|
|
189
|
-
* (an accumulating, order-independent Map). `handleTurnEnd` itself reads that
|
|
190
|
-
* accumulator once via `runtime.peekCodeQualityWarnings()` and writes the
|
|
191
|
-
* aggregate report exactly once per turn-end invocation — the same single
|
|
192
|
-
* sequential turn-end-only shape already confirmed safe for
|
|
193
|
-
* `writeActionableWarningsReport` in `clients/actionable-warnings.ts`, right
|
|
194
|
-
* next to this call site in `handleTurnEnd`. No second writer, so no
|
|
195
|
-
* ordering token to guard against — see
|
|
196
|
-
* `tests/clients/code-quality-warnings.test.ts`'s
|
|
197
|
-
* "single sequential caller" test, which pins this invariant so a future
|
|
198
|
-
* change that adds a second call site has a better chance of being caught.
|
|
199
|
-
*/
|
|
200
|
-
export function writeCodeQualityWarningsReport(cacheManager, cwd, report) {
|
|
201
|
-
cacheManager.writeCache("code-quality-warnings", report, cwd);
|
|
202
|
-
}
|
|
203
|
-
export function getCodeQualityWarningsHistoryPath(cwd) {
|
|
204
|
-
return path.join(getProjectDataDir(cwd), "code-quality-warnings.jsonl");
|
|
205
|
-
}
|
|
206
|
-
export function appendCodeQualityWarningsHistory(cwd, report) {
|
|
207
|
-
const warnings = report.files.flatMap((file) => file.warnings.map((warning) => ({
|
|
208
|
-
timestamp: report.generatedAt,
|
|
209
|
-
sessionId: report.sessionId,
|
|
210
|
-
turnIndex: report.turnIndex,
|
|
211
|
-
projectSeq: report.projectSeqEnd,
|
|
212
|
-
filePath: warning.filePath,
|
|
213
|
-
displayPath: warning.displayPath,
|
|
214
|
-
fileSeq: file.fileSeq,
|
|
215
|
-
line: warning.line,
|
|
216
|
-
column: warning.column,
|
|
217
|
-
severity: warning.severity,
|
|
218
|
-
tool: warning.tool,
|
|
219
|
-
rule: warning.rule,
|
|
220
|
-
code: warning.code,
|
|
221
|
-
message: warning.message,
|
|
222
|
-
category: warning.category,
|
|
223
|
-
warningId: warning.id,
|
|
224
|
-
})));
|
|
225
|
-
if (warnings.length === 0)
|
|
226
|
-
return;
|
|
227
|
-
const historyPath = getCodeQualityWarningsHistoryPath(cwd);
|
|
228
|
-
try {
|
|
229
|
-
fs.mkdirSync(path.dirname(historyPath), { recursive: true });
|
|
230
|
-
fs.appendFileSync(historyPath, `${warnings.map((entry) => JSON.stringify(entry)).join("\n")}\n`, "utf8");
|
|
231
|
-
}
|
|
232
|
-
catch {
|
|
233
|
-
// Non-fatal — history write failure should never surface to the agent.
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* The turn-end advisory for this report.
|
|
238
|
-
*
|
|
239
|
-
* `cwd` is REQUIRED for the same reason as
|
|
240
|
-
* {@link formatActionableWarningsAdvisory} (#2521): this advisory carried the
|
|
241
|
-
* identical hardcoded-legacy-path defect, one cache key over.
|
|
242
|
-
*/
|
|
243
|
-
export function formatCodeQualityWarningsAdvisory(report, cwd, host = "pi") {
|
|
244
|
-
if (report.summary.warnings === 0)
|
|
245
|
-
return undefined;
|
|
246
|
-
const topRules = report.summary.topRules
|
|
247
|
-
.slice(0, 3)
|
|
248
|
-
.map((entry) => `${entry.rule}×${entry.count}`)
|
|
249
|
-
.join(", ");
|
|
250
|
-
// #1777: name the tiers, in the same descending-loudness order the on-demand
|
|
251
|
-
// ast-grep surface uses (`formatDiagnostics`, clients/ast-grep-client.ts).
|
|
252
|
-
// A tier with no findings is omitted rather than printed as zero.
|
|
253
|
-
const byTier = report.summary.byTier ?? { warning: 0, info: 0, hint: 0 };
|
|
254
|
-
// The line is worth its space only when a quiet tier is present; an
|
|
255
|
-
// all-warning turn already says everything in the count above.
|
|
256
|
-
const tiers = byTier.hint || byTier.info
|
|
257
|
-
? [
|
|
258
|
-
byTier.warning ? `${byTier.warning} warning` : undefined,
|
|
259
|
-
byTier.info ? `${byTier.info} info` : undefined,
|
|
260
|
-
byTier.hint ? `${byTier.hint} hint` : undefined,
|
|
261
|
-
]
|
|
262
|
-
.filter(Boolean)
|
|
263
|
-
.join(", ")
|
|
264
|
-
: "";
|
|
265
|
-
// #2535 F3: a known tool with no mapping on this host resolves to
|
|
266
|
-
// undefined — omit the instruction rather than naming a dead tool.
|
|
267
|
-
const diagnosticsTool = resolveLensToolName("lens_diagnostics", host);
|
|
268
|
-
return [
|
|
269
|
-
`Code-quality warnings introduced/touched this turn: ${report.summary.warnings} across ${report.summary.files} file(s).`,
|
|
270
|
-
tiers
|
|
271
|
-
? `By tier: ${tiers}. Hint and info are style opinions, not defects.`
|
|
272
|
-
: undefined,
|
|
273
|
-
topRules ? `Top rules: ${topRules}` : undefined,
|
|
274
|
-
// #2521: tool route first (`mode=delta` covers the code-quality cache
|
|
275
|
-
// as well as the actionable one), resolved path second.
|
|
276
|
-
// #2535 F3: omit when unmapped on this host, never name a dead tool
|
|
277
|
-
// (pinned available on both hosts; defensive only).
|
|
278
|
-
diagnosticsTool
|
|
279
|
-
? `Use ${diagnosticsTool} with mode=delta to inspect these warnings.`
|
|
280
|
-
: undefined,
|
|
281
|
-
"No action required unless you are already refactoring these areas.",
|
|
282
|
-
`Raw report (only if you need the JSON): ${displayProjectDataPath(cwd, "cache", "code-quality-warnings.json")}`,
|
|
283
|
-
]
|
|
284
|
-
.filter(Boolean)
|
|
285
|
-
.join("\n");
|
|
286
|
-
}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codebase mental model — issue #155.
|
|
3
|
-
*
|
|
4
|
-
* Builds a compact structural summary of the codebase from the call graph:
|
|
5
|
-
* top-N symbols by in-degree centrality, each with signature, calls, and
|
|
6
|
-
* calledBy lists. Persisted to cache; never injected into agent context
|
|
7
|
-
* until validated across several real sessions.
|
|
8
|
-
*
|
|
9
|
-
* This is intentionally internal-only. The one agent-facing surface is a
|
|
10
|
-
* single dbg log line at session-start so quality can be assessed via
|
|
11
|
-
* ~/.pi-lens/sessionstart.log before any agent exposure.
|
|
12
|
-
*/
|
|
13
|
-
import * as fs from "node:fs";
|
|
14
|
-
import * as path from "node:path";
|
|
15
|
-
import { getProjectDataDir } from "./file-utils.js";
|
|
16
|
-
import { writeFileAtomic } from "./atomic-write.js";
|
|
17
|
-
import { parseSymbolKey } from "./call-graph.js";
|
|
18
|
-
import { detectFileRole } from "./file-role.js";
|
|
19
|
-
import { isExternalOrVendorFile } from "./path-utils.js";
|
|
20
|
-
import { isBuildArtifact } from "./source-filter.js";
|
|
21
|
-
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
22
|
-
export const DEFAULT_CODEBASE_MODEL_TOKEN_BUDGET = 1500;
|
|
23
|
-
const MAX_CALLS_PER_SYMBOL = 10;
|
|
24
|
-
const MIN_IN_DEGREE = 0.5; // skip symbols with low centrality (avoids noise)
|
|
25
|
-
/** Persisted model schema version. Bump when the persisted shape changes. */
|
|
26
|
-
export const CODEBASE_MODEL_VERSION = 1;
|
|
27
|
-
// ── Builder ───────────────────────────────────────────────────────────────────
|
|
28
|
-
function inferKind(symbolKey) {
|
|
29
|
-
const parsed = parseSymbolKey(symbolKey);
|
|
30
|
-
if (parsed.kind === "class")
|
|
31
|
-
return "class";
|
|
32
|
-
if (parsed.kind === "method" || parsed.symbolName?.includes("."))
|
|
33
|
-
return "method";
|
|
34
|
-
return /^[A-Z]/.test(parsed.symbolName ?? "") ? "class" : "function";
|
|
35
|
-
}
|
|
36
|
-
function estimateTokens(entry) {
|
|
37
|
-
const text = [
|
|
38
|
-
entry.name,
|
|
39
|
-
entry.file,
|
|
40
|
-
entry.calls.join(","),
|
|
41
|
-
entry.calledBy.join(","),
|
|
42
|
-
].join(" ");
|
|
43
|
-
return Math.ceil(text.length / 4) + 5; // +5 for structural overhead
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Build a codebase mental model from a function-level call graph.
|
|
47
|
-
*
|
|
48
|
-
* Selection: rank all symbols by weighted in-degree, then fill a token budget
|
|
49
|
-
* from the top. Symbols below MIN_IN_DEGREE are skipped to avoid noise.
|
|
50
|
-
*
|
|
51
|
-
* @param graph The session's FunctionCallGraph (must have inDegree populated).
|
|
52
|
-
* @param cwd Project root — used to compute relative file paths.
|
|
53
|
-
* @param budget Maximum total token budget (default 1500).
|
|
54
|
-
*/
|
|
55
|
-
export function buildCodebaseModel(graph, cwd, budget = DEFAULT_CODEBASE_MODEL_TOKEN_BUDGET, identity) {
|
|
56
|
-
// Standalone callers may build an unpersisted projection without the
|
|
57
|
-
// review-graph coordinator. Persisted/session models pass the canonical
|
|
58
|
-
// review-graph identity explicitly; this fallback is only a local call-graph
|
|
59
|
-
// identity for builder-only use.
|
|
60
|
-
const modelIdentity = identity ?? {
|
|
61
|
-
reviewGraphVersion: graph.builtAt || "call-graph-unknown",
|
|
62
|
-
reviewGraphSignature: graph.builtAt || "call-graph-unknown",
|
|
63
|
-
};
|
|
64
|
-
// Sort all callee keys by in-degree descending
|
|
65
|
-
const ranked = [...graph.inDegree.entries()]
|
|
66
|
-
.filter(([, score]) => score >= MIN_IN_DEGREE)
|
|
67
|
-
.sort(([, a], [, b]) => b - a);
|
|
68
|
-
const entries = [];
|
|
69
|
-
let totalTokens = 0;
|
|
70
|
-
const seenNames = new Set();
|
|
71
|
-
for (const [calleeKey, inDegree] of ranked) {
|
|
72
|
-
if (totalTokens >= budget)
|
|
73
|
-
break;
|
|
74
|
-
const parsedCallee = parseSymbolKey(calleeKey);
|
|
75
|
-
const name = parsedCallee.symbolName ?? calleeKey;
|
|
76
|
-
const filePath = parsedCallee.filePath;
|
|
77
|
-
// Keep this projection aligned with the shared file-role policy. The
|
|
78
|
-
// call graph is derived from the canonical review graph, so the model
|
|
79
|
-
// carries that graph's identity rather than inventing a second freshness
|
|
80
|
-
// policy.
|
|
81
|
-
const fileRole = detectFileRole(filePath);
|
|
82
|
-
if (fileRole === "test" ||
|
|
83
|
-
fileRole === "generated" ||
|
|
84
|
-
isExternalOrVendorFile(filePath, cwd) ||
|
|
85
|
-
isBuildArtifact(filePath)) {
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
// Deduplicate by name when the same function appears in multiple files
|
|
89
|
-
if (seenNames.has(name))
|
|
90
|
-
continue;
|
|
91
|
-
seenNames.add(name);
|
|
92
|
-
const calls = [...(graph.callees.get(calleeKey) ?? new Set())]
|
|
93
|
-
.map((k) => parseSymbolKey(k).symbolName ?? k)
|
|
94
|
-
.filter(Boolean)
|
|
95
|
-
.slice(0, MAX_CALLS_PER_SYMBOL);
|
|
96
|
-
const calledBy = [...(graph.callers.get(calleeKey) ?? new Set())]
|
|
97
|
-
.map((k) => parseSymbolKey(k).symbolName ?? k)
|
|
98
|
-
.filter((n) => !n.startsWith("file:"))
|
|
99
|
-
.slice(0, MAX_CALLS_PER_SYMBOL);
|
|
100
|
-
const file = filePath
|
|
101
|
-
? path.relative(cwd, filePath).replace(/\\/g, "/")
|
|
102
|
-
: "unknown";
|
|
103
|
-
const draft = {
|
|
104
|
-
file,
|
|
105
|
-
name,
|
|
106
|
-
kind: inferKind(calleeKey),
|
|
107
|
-
calls,
|
|
108
|
-
calledBy,
|
|
109
|
-
inDegree,
|
|
110
|
-
};
|
|
111
|
-
const tokens = estimateTokens(draft);
|
|
112
|
-
if (totalTokens + tokens > budget)
|
|
113
|
-
continue;
|
|
114
|
-
entries.push({ ...draft, tokens });
|
|
115
|
-
totalTokens += tokens;
|
|
116
|
-
}
|
|
117
|
-
const allFiles = new Set([...graph.callers.keys(), ...graph.callees.keys()]
|
|
118
|
-
.map((k) => parseSymbolKey(k).filePath)
|
|
119
|
-
.filter(Boolean));
|
|
120
|
-
return {
|
|
121
|
-
version: CODEBASE_MODEL_VERSION,
|
|
122
|
-
reviewGraphVersion: modelIdentity.reviewGraphVersion,
|
|
123
|
-
reviewGraphSignature: modelIdentity.reviewGraphSignature,
|
|
124
|
-
generatedAt: new Date().toISOString(),
|
|
125
|
-
totalSymbols: graph.inDegree.size,
|
|
126
|
-
totalFiles: allFiles.size,
|
|
127
|
-
entries,
|
|
128
|
-
totalTokens,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
// ── Persistence ───────────────────────────────────────────────────────────────
|
|
132
|
-
function cacheFilePath(cwd) {
|
|
133
|
-
return path.join(getProjectDataDir(cwd), "cache", "codebase-model.json");
|
|
134
|
-
}
|
|
135
|
-
function metaFilePath(cwd) {
|
|
136
|
-
return path.join(getProjectDataDir(cwd), "cache", "codebase-model.meta.json");
|
|
137
|
-
}
|
|
138
|
-
export function saveCodebaseModel(cwd, model) {
|
|
139
|
-
const cacheFile = cacheFilePath(cwd);
|
|
140
|
-
try {
|
|
141
|
-
fs.mkdirSync(path.dirname(cacheFile), { recursive: true });
|
|
142
|
-
writeFileAtomic(cacheFile, JSON.stringify(model));
|
|
143
|
-
writeFileAtomic(metaFilePath(cwd), JSON.stringify({
|
|
144
|
-
savedAt: new Date().toISOString(),
|
|
145
|
-
entryCount: model.entries.length,
|
|
146
|
-
totalTokens: model.totalTokens,
|
|
147
|
-
}));
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
// Non-fatal — next session rebuilds.
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/** Load only a model matching the canonical identity it was derived from. */
|
|
154
|
-
export function loadCodebaseModel(cwd, expectedIdentity) {
|
|
155
|
-
try {
|
|
156
|
-
const raw = JSON.parse(fs.readFileSync(cacheFilePath(cwd), "utf-8"));
|
|
157
|
-
if (raw.version !== CODEBASE_MODEL_VERSION ||
|
|
158
|
-
typeof raw.reviewGraphVersion !== "string" ||
|
|
159
|
-
raw.reviewGraphVersion.length === 0 ||
|
|
160
|
-
typeof raw.reviewGraphSignature !== "string" ||
|
|
161
|
-
raw.reviewGraphSignature.length === 0 ||
|
|
162
|
-
typeof raw.generatedAt !== "string" ||
|
|
163
|
-
!Array.isArray(raw.entries))
|
|
164
|
-
return undefined;
|
|
165
|
-
if (raw.reviewGraphVersion !== expectedIdentity.reviewGraphVersion ||
|
|
166
|
-
raw.reviewGraphSignature !== expectedIdentity.reviewGraphSignature)
|
|
167
|
-
return undefined;
|
|
168
|
-
return raw;
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
return undefined;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared test-role predicate for COLLATERAL cascade/impact surfaces (#1080).
|
|
3
|
-
*
|
|
4
|
-
* The review graph is already tests-free (`review-graph/builder.ts` applies
|
|
5
|
-
* `detectFileRole(file) !== "test"` at its walk/incremental chokepoints), but
|
|
6
|
-
* several collateral surfaces re-derive neighbors from OTHER sources that never
|
|
7
|
-
* saw that filter — LSP reference expansion, module-level downstream expansion,
|
|
8
|
-
* the reverse-dependency index, and the passive-diagnostics fallback — so an
|
|
9
|
-
* unignored `*.test.*` / `tests/` file can still leak into cascade neighbor
|
|
10
|
-
* output, the formatted impact header/counts, the turn-end call-graph advisory,
|
|
11
|
-
* and the persisted call-graph-impact diagnostics.
|
|
12
|
-
*
|
|
13
|
-
* This composes the SINGLE existing structural classifier (`detectFileRole`) —
|
|
14
|
-
* no second matcher, no private test-filename list, no duplicated patterns. The
|
|
15
|
-
* project ignore matcher (`getProjectIgnoreMatcher`) is applied separately and
|
|
16
|
-
* unchanged at each surface; this predicate only adds the test-ROLE half of the
|
|
17
|
-
* display policy the review graph already enforces.
|
|
18
|
-
*
|
|
19
|
-
* Honesty (#1080 acceptance criteria):
|
|
20
|
-
* - A KNOWN `"test"` role is filtered from the collateral surface.
|
|
21
|
-
* - If role classification cannot be obtained (an unexpected throw), the
|
|
22
|
-
* candidate is RETAINED (`false`) rather than dropped — filtering must never
|
|
23
|
-
* invent a heuristic or silently drop a potentially actionable file, and must
|
|
24
|
-
* never convert an incomplete/indeterminate computation into a clean result.
|
|
25
|
-
*/
|
|
26
|
-
import { detectFileRole } from "./file-role.js";
|
|
27
|
-
/**
|
|
28
|
-
* True when `filePath` is a KNOWN test-role file that must not surface as a
|
|
29
|
-
* collateral cascade/impact neighbor. Path-based only (no content needed for
|
|
30
|
-
* the test-role branch of `detectFileRole`). Fail-open: any classifier error
|
|
31
|
-
* returns `false` (retain the candidate).
|
|
32
|
-
*/
|
|
33
|
-
export function isTestRoleCollateral(filePath) {
|
|
34
|
-
try {
|
|
35
|
-
return detectFileRole(filePath) === "test";
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|