@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,305 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Past-EOF validity gate for cited diagnostic line numbers (#1641).
|
|
3
|
-
*
|
|
4
|
-
* A live session served diagnostics at lines 407-410 of a file that was 402
|
|
5
|
-
* lines on disk and UNMODIFIED — the LSP's in-memory document had drifted
|
|
6
|
-
* longer than disk without any file write happening (no didChange lost, just
|
|
7
|
-
* an in-memory buffer that grew past what the file actually contains). That
|
|
8
|
-
* makes this a DIFFERENT invariant than #1622/#1627's freshness gate: those
|
|
9
|
-
* compare a cited file's MTIME against a scan timestamp, which says nothing
|
|
10
|
-
* when the file was never touched on disk at all. The cheap, orthogonal check
|
|
11
|
-
* available here is structural: a diagnostic whose start line exceeds the
|
|
12
|
-
* file's CURRENT line count cannot possibly be describing current content,
|
|
13
|
-
* regardless of what any timestamp says.
|
|
14
|
-
*
|
|
15
|
-
* CONTRACT:
|
|
16
|
-
* - A diagnostic citing a line beyond the file's current line count is
|
|
17
|
-
* DEMOTED (`stale: true`), never dropped — the underlying issue may well
|
|
18
|
-
* still be real, just at a coordinate this gate can no longer vouch for.
|
|
19
|
-
* - RE-ARMS, never latches: the verdict is recomputed from the gate's own
|
|
20
|
-
* inputs (current mtime, current line count) on every call, so a
|
|
21
|
-
* TRANSIENT shrink (truncate-then-write, a formatter pass, a checkout)
|
|
22
|
-
* that later restores the line un-demotes on its own next read. A
|
|
23
|
-
* persisted `stale: true` a caller stores between calls is a cache of the
|
|
24
|
-
* last-derived verdict, never an independent source of truth that
|
|
25
|
-
* overrides the next derivation — the #1633-V1 lesson: derive, don't latch.
|
|
26
|
-
* - Fail open: a file that cannot be stat'ed/read, or exceeds the size gate,
|
|
27
|
-
* yields no verdict at all (every diagnostic passes through unchanged).
|
|
28
|
-
* An unreadable/oversized file is not evidence of anything; demoting on
|
|
29
|
-
* it would manufacture false staleness.
|
|
30
|
-
* - The line count matches the LSP's own addressing, not `wc -l`: a
|
|
31
|
-
* document with N newline characters has N+1 ADDRESSABLE lines (the
|
|
32
|
-
* line after the final `\n`, or the single line of an empty document,
|
|
33
|
-
* is a real position a server can anchor a diagnostic to — e.g. TS1005
|
|
34
|
-
* "'}' expected" at EOF). `WidgetDiagnostic.line` is always
|
|
35
|
-
* `range.start.line + 1` from that same addressing, so the gate must
|
|
36
|
-
* use it too or every trailing-newline file demotes its own valid EOF
|
|
37
|
-
* diagnostics.
|
|
38
|
-
* - Cost discipline: one `statSync` per served file; the file's newlines
|
|
39
|
-
* are counted in bounded chunks via a raw fd read (never a full
|
|
40
|
-
* `readFileSync` — no whole-file string materialization, no per-render
|
|
41
|
-
* re-read of unchanged content), gated by a byte-size cap matching
|
|
42
|
-
* `captureReadContentBinding`'s precedent (`read-guard.ts`). The count is
|
|
43
|
-
* memoized in a small SHARED cache (module-scoped, bounded, evicted FIFO
|
|
44
|
-
* past a cap), keyed on BOTH mtime AND size (review round V1) — mtime
|
|
45
|
-
* ALONE is not a reliable cache key on hosts where its resolution is
|
|
46
|
-
* coarser than back-to-back writes: a truncate-then-write, a formatter
|
|
47
|
-
* write-back, or pi-lens's own auto-format immediately followed by the
|
|
48
|
-
* agent's write can land two DIFFERENT contents on the identical
|
|
49
|
-
* `mtimeMs`, and a mtime-only cache serves the first content's count for
|
|
50
|
-
* the second — measured live at 207/300 shrink/restore cycles. Requiring
|
|
51
|
-
* both to match narrows a same-tick collision to same-mtime-AND-same-size
|
|
52
|
-
* (which a shrink/restore cycle never produces, since the whole point is
|
|
53
|
-
* the size changed). A changed file is always recounted. Tests can still
|
|
54
|
-
* inject an isolated {@link LineCountCache} via {@link createLineCountCache}
|
|
55
|
-
* to avoid cross-test bleed.
|
|
56
|
-
* - On a demotion EDGE (a diagnostic that was not already flagged past-EOF
|
|
57
|
-
* and now is), best-effort trigger a document resync (didClose/didOpen or
|
|
58
|
-
* a full-sync didChange) so the desync HEALS instead of re-serving the
|
|
59
|
-
* same stale verdict next time (#1631's resync-before-revalidate rule).
|
|
60
|
-
* Resync is fire-and-forget: a failure here must never block or fail the
|
|
61
|
-
* render path that discovered the drift. Already-demoted entries and the
|
|
62
|
-
* healing direction never re-trigger a resync — only the rising edge does.
|
|
63
|
-
*/
|
|
64
|
-
import * as fs from "node:fs";
|
|
65
|
-
import { BoundedFifoMap } from "./bounded-cache.js";
|
|
66
|
-
import { logLatency } from "./latency-logger.js";
|
|
67
|
-
import { toProjectRelativePath } from "./path-utils.js";
|
|
68
|
-
import { STALE_LINE_MARKER } from "./stale-marker.js";
|
|
69
|
-
/** Marker rendered in place of a demoted diagnostic's now-untrustworthy line.
|
|
70
|
-
* Shares the base `STALE_LINE_MARKER` vocabulary with sibling freshness
|
|
71
|
-
* gates (#1622/#1633) and adds this gate's own specific reason as a suffix. */
|
|
72
|
-
export const PAST_EOF_STALE_MARKER = `${STALE_LINE_MARKER} — line past EOF`;
|
|
73
|
-
/** How many demoted cited lines a single record names before it stops. */
|
|
74
|
-
const MAX_LOGGED_PAST_EOF_LINES = 3;
|
|
75
|
-
/** Byte-size gate matching `captureReadContentBinding`'s precedent
|
|
76
|
-
* (`clients/read-guard.ts`'s `READ_BINDING_MAX_BYTES`) — a hot render/serve
|
|
77
|
-
* path must never pay to scan an unbounded file. */
|
|
78
|
-
const MAX_GATE_BYTES = 4 * 1024 * 1024;
|
|
79
|
-
/** Chunk size for the bounded newline scan — small enough to keep one read's
|
|
80
|
-
* memory footprint negligible, large enough that a multi-MB file finishes in
|
|
81
|
-
* single-digit reads rather than thousands. */
|
|
82
|
-
const NEWLINE_SCAN_CHUNK_BYTES = 64 * 1024;
|
|
83
|
-
const NEWLINE_BYTE = 0x0a;
|
|
84
|
-
/** Test-only isolation seam. Production code uses the shared default cache. */
|
|
85
|
-
export function createLineCountCache() {
|
|
86
|
-
return new Map();
|
|
87
|
-
}
|
|
88
|
-
// Shared across calls/render passes so N files touched once per session cost
|
|
89
|
-
// N recounts total, not N per render — the actual fix for the cost this gate
|
|
90
|
-
// exists to control. Still cannot go stale: every read re-stats first and a
|
|
91
|
-
// mismatched mtime always recomputes (see the module doc comment). Bounded
|
|
92
|
-
// via FIFO eviction (mirrors `READ_GUARD_MAX_FILES`'s precedent) so a long
|
|
93
|
-
// session's file count cannot grow this without limit.
|
|
94
|
-
export const MAX_SHARED_CACHE_ENTRIES = 512;
|
|
95
|
-
const sharedLineCountCache = new BoundedFifoMap(MAX_SHARED_CACHE_ENTRIES);
|
|
96
|
-
function rememberInSharedCache(cache, filePath, entry) {
|
|
97
|
-
// `cache` is either the shared BoundedFifoMap (bounds itself on `set`) or a
|
|
98
|
-
// test-isolated plain `Map` (unbounded by design) — either way, this is
|
|
99
|
-
// just a write.
|
|
100
|
-
cache.set(filePath, entry);
|
|
101
|
-
}
|
|
102
|
-
/** Test-only: drop the shared memo between test files/cases. */
|
|
103
|
-
export function _resetSharedLineCountCacheForTests() {
|
|
104
|
-
sharedLineCountCache.clear();
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Test-only: seed the shared memo with a fabricated entry, deterministically
|
|
108
|
-
* proving a cache HIT (and that the default cache used by callers with no
|
|
109
|
-
* explicit `lineCountCache` is genuinely shared across calls) without relying
|
|
110
|
-
* on a real write's mtime round-tripping through `fs.utimesSync` at full
|
|
111
|
-
* precision — a platform-specific hazard on its own, unrelated to what such a
|
|
112
|
-
* test is actually verifying.
|
|
113
|
-
*/
|
|
114
|
-
export function _seedSharedLineCountCacheForTests(filePath, entry) {
|
|
115
|
-
sharedLineCountCache.set(filePath, entry);
|
|
116
|
-
}
|
|
117
|
-
/** #2442 test-only: membership check that bypasses the real-stat requirement
|
|
118
|
-
* `getCachedLineCount` imposes on every call — proves capacity eviction
|
|
119
|
-
* directly, without needing 513 real files on disk. */
|
|
120
|
-
export function _sharedLineCountCacheHasForTests(filePath) {
|
|
121
|
-
return sharedLineCountCache.has(filePath);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Count newline bytes in `filePath` via bounded raw reads — never a full
|
|
125
|
-
* `readFileSync`/UTF-8 decode of the whole file. `0x0A` (LF) never appears as
|
|
126
|
-
* a continuation byte in UTF-8, so counting it at the byte level is exact
|
|
127
|
-
* regardless of encoding, and multi-byte characters spanning a chunk boundary
|
|
128
|
-
* cannot produce a false match (a continuation byte's high bits can never
|
|
129
|
-
* equal `0x0A`).
|
|
130
|
-
*/
|
|
131
|
-
function countNewlinesChunked(filePath, sizeBytes) {
|
|
132
|
-
const fd = fs.openSync(filePath, "r");
|
|
133
|
-
try {
|
|
134
|
-
const buffer = Buffer.allocUnsafe(Math.min(NEWLINE_SCAN_CHUNK_BYTES, sizeBytes) || 1);
|
|
135
|
-
let newlineCount = 0;
|
|
136
|
-
let position = 0;
|
|
137
|
-
while (position < sizeBytes) {
|
|
138
|
-
const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, position);
|
|
139
|
-
if (bytesRead <= 0)
|
|
140
|
-
break;
|
|
141
|
-
for (let i = 0; i < bytesRead; i++) {
|
|
142
|
-
if (buffer[i] === NEWLINE_BYTE)
|
|
143
|
-
newlineCount++;
|
|
144
|
-
}
|
|
145
|
-
position += bytesRead;
|
|
146
|
-
}
|
|
147
|
-
return newlineCount;
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
fs.closeSync(fd);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* LSP-addressable line count for `filePath`: newline count + 1, matching
|
|
155
|
-
* `range.start.line + 1` (a document with zero newlines still has one
|
|
156
|
-
* addressable line — position 0,0 — and a trailing `\n` adds one more,
|
|
157
|
-
* empty, addressable line after it). Memoized in `cache` (the shared default
|
|
158
|
-
* unless a caller injects its own) and invalidated by mtime AND size (V1 —
|
|
159
|
-
* mtime alone is not a reliable cache key on hosts where its resolution is
|
|
160
|
-
* coarser than back-to-back writes). Returns `undefined` when the file
|
|
161
|
-
* cannot be stat'ed, is zero bytes, exceeds the byte-size gate, or
|
|
162
|
-
* cannot be read (deleted, unreadable, permissions, oversized) — callers MUST
|
|
163
|
-
* treat `undefined` as "no verdict", not as "zero lines" (the empty-result-
|
|
164
|
-
* must-distinguish-clean-from-errored screen).
|
|
165
|
-
*/
|
|
166
|
-
export function getCachedLineCount(filePath, cache = sharedLineCountCache) {
|
|
167
|
-
let stat;
|
|
168
|
-
try {
|
|
169
|
-
stat = fs.statSync(filePath);
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
return undefined;
|
|
173
|
-
}
|
|
174
|
-
// A zero-byte stat can be a truncate-then-write window. It is not evidence
|
|
175
|
-
// that the file has one addressable line, so fail open like an unreadable
|
|
176
|
-
// file rather than manufacturing a verdict from the empty read.
|
|
177
|
-
if (stat.size === 0)
|
|
178
|
-
return undefined;
|
|
179
|
-
const cached = cache.get(filePath);
|
|
180
|
-
if (cached && cached.mtimeMs === stat.mtimeMs && cached.size === stat.size) {
|
|
181
|
-
return cached.lineCount;
|
|
182
|
-
}
|
|
183
|
-
if (stat.size > MAX_GATE_BYTES)
|
|
184
|
-
return undefined;
|
|
185
|
-
let newlineCount;
|
|
186
|
-
try {
|
|
187
|
-
newlineCount = countNewlinesChunked(filePath, stat.size);
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return undefined;
|
|
191
|
-
}
|
|
192
|
-
const lineCount = newlineCount + 1;
|
|
193
|
-
rememberInSharedCache(cache, filePath, {
|
|
194
|
-
mtimeMs: stat.mtimeMs,
|
|
195
|
-
size: stat.size,
|
|
196
|
-
lineCount,
|
|
197
|
-
});
|
|
198
|
-
return lineCount;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Recompute the past-EOF verdict for every diagnostic in `diagnostics`
|
|
202
|
-
* against `filePath`'s CURRENT line count. Sets `stale: true` on a match and
|
|
203
|
-
* `stale: false` when a previously-past-EOF line is back in bounds (a
|
|
204
|
-
* transient shrink healed) — the verdict is always derived fresh, never
|
|
205
|
-
* latched. Pure apart from the cached stat/read in {@link getCachedLineCount}
|
|
206
|
-
* and the bounded `logLatency`/`resync` calls, which fire only on a RISING
|
|
207
|
-
* edge (a diagnostic that was not already flagged and now is) so an
|
|
208
|
-
* unchanged persistent demotion doesn't re-log or re-resync on every render.
|
|
209
|
-
* Never throws, never mutates the input array.
|
|
210
|
-
*/
|
|
211
|
-
export function demotePastEofDiagnostics(args) {
|
|
212
|
-
const { diagnostics } = args;
|
|
213
|
-
if (diagnostics.length === 0) {
|
|
214
|
-
return { diagnostics: [], demotedCount: 0 };
|
|
215
|
-
}
|
|
216
|
-
const lineCount = getCachedLineCount(args.filePath, args.lineCountCache ?? sharedLineCountCache);
|
|
217
|
-
if (lineCount === undefined) {
|
|
218
|
-
// Fail open: no verdict available for this file right now. Leave
|
|
219
|
-
// whatever `stale` value each entry already carries untouched — this
|
|
220
|
-
// gate has nothing to say either direction.
|
|
221
|
-
return { diagnostics: [...diagnostics], demotedCount: 0 };
|
|
222
|
-
}
|
|
223
|
-
const risingEdgeLines = [];
|
|
224
|
-
const out = diagnostics.map((d) => {
|
|
225
|
-
// Another gate's demotion is not this gate's to heal (#1631 drift
|
|
226
|
-
// entries have in-bounds lines; re-deriving here would clear them).
|
|
227
|
-
if (d.stale && d.staleReason !== undefined && d.staleReason !== "past-eof")
|
|
228
|
-
return d;
|
|
229
|
-
const isPastEof = typeof d.line === "number" && d.line > lineCount;
|
|
230
|
-
if (isPastEof === !!d.stale)
|
|
231
|
-
return d; // no transition either direction
|
|
232
|
-
if (isPastEof)
|
|
233
|
-
risingEdgeLines.push(d.line);
|
|
234
|
-
return {
|
|
235
|
-
...d,
|
|
236
|
-
stale: isPastEof,
|
|
237
|
-
staleReason: isPastEof ? "past-eof" : undefined,
|
|
238
|
-
};
|
|
239
|
-
});
|
|
240
|
-
if (risingEdgeLines.length === 0) {
|
|
241
|
-
return { diagnostics: out, demotedCount: 0 };
|
|
242
|
-
}
|
|
243
|
-
let sizeBytes;
|
|
244
|
-
try {
|
|
245
|
-
sizeBytes = fs.statSync(args.filePath).size;
|
|
246
|
-
}
|
|
247
|
-
catch {
|
|
248
|
-
sizeBytes = 0;
|
|
249
|
-
}
|
|
250
|
-
logLatency({
|
|
251
|
-
type: "phase",
|
|
252
|
-
phase: "diagnostic_past_eof",
|
|
253
|
-
filePath: args.cwd,
|
|
254
|
-
durationMs: 0,
|
|
255
|
-
metadata: {
|
|
256
|
-
store: args.store,
|
|
257
|
-
file: toProjectRelativePath(args.filePath, args.cwd),
|
|
258
|
-
sizeBytes,
|
|
259
|
-
actualLineCount: lineCount,
|
|
260
|
-
demotedCount: risingEdgeLines.length,
|
|
261
|
-
sampleCitedLines: risingEdgeLines.slice(0, MAX_LOGGED_PAST_EOF_LINES),
|
|
262
|
-
},
|
|
263
|
-
});
|
|
264
|
-
if (args.resync) {
|
|
265
|
-
try {
|
|
266
|
-
args.resync(args.filePath);
|
|
267
|
-
}
|
|
268
|
-
catch {
|
|
269
|
-
// Best-effort — a resync failure must never fail the render path.
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return { diagnostics: out, demotedCount: risingEdgeLines.length };
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Default resync trigger (#1641 criterion 2): re-open the file with its
|
|
276
|
-
* CURRENT disk content so the LSP's in-memory document is replaced rather
|
|
277
|
-
* than left to re-publish the same divergent diagnostics next time
|
|
278
|
-
* (`LSPService.openFile` sends a full-sync didChange, or a didClose/didOpen
|
|
279
|
-
* pair for servers that only re-scan on a fresh open — see
|
|
280
|
-
* `handleNotifyOpen`'s `reopenOnResync` branch). Dynamic import (mirrors
|
|
281
|
-
* `clients/module-report-lsp.ts`) so this module — used from widget-state.ts
|
|
282
|
-
* and tools/lens-diagnostics.ts — never statically depends on `clients/lsp`,
|
|
283
|
-
* which itself imports widget-state.ts.
|
|
284
|
-
*
|
|
285
|
-
* Fire-and-forget by design: the caller is a synchronous render path and must
|
|
286
|
-
* not block on (or fail because of) a resync. No LSP service, no client for
|
|
287
|
-
* this file's language, or a transient read/spawn failure all degrade to a
|
|
288
|
-
* silent no-op — the next successful touch/dispatch resyncs anyway.
|
|
289
|
-
*/
|
|
290
|
-
export function resyncDocumentOnPastEof(filePath) {
|
|
291
|
-
void (async () => {
|
|
292
|
-
try {
|
|
293
|
-
const [{ getLSPService }, content] = await Promise.all([
|
|
294
|
-
import("./lsp/index.js"),
|
|
295
|
-
fs.promises.readFile(filePath, "utf-8"),
|
|
296
|
-
]);
|
|
297
|
-
await getLSPService().openFile(filePath, content, {
|
|
298
|
-
preserveDiagnostics: false,
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
catch {
|
|
302
|
-
// Best-effort heal only.
|
|
303
|
-
}
|
|
304
|
-
})();
|
|
305
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Diagnostic Logger — append-only JSONL log for cross-session analytics
|
|
3
|
-
*
|
|
4
|
-
* Log file: ~/.pi-lens/logs/{date}.jsonl
|
|
5
|
-
*/
|
|
6
|
-
import * as path from "node:path";
|
|
7
|
-
import { isTestMode } from "./env-utils.js";
|
|
8
|
-
import { getGlobalPiLensLogDir } from "./probe-home-state.js";
|
|
9
|
-
import { getMaxLogSizeMB } from "./log-cleanup.js";
|
|
10
|
-
import { createNdjsonLogger } from "./ndjson-logger.js";
|
|
11
|
-
function getLogDir() {
|
|
12
|
-
return path.join(getGlobalPiLensLogDir(), "logs");
|
|
13
|
-
}
|
|
14
|
-
function getLogFile() {
|
|
15
|
-
const date = new Date().toISOString().split("T")[0];
|
|
16
|
-
return path.join(getLogDir(), `${date}.jsonl`);
|
|
17
|
-
}
|
|
18
|
-
// Module-level singleton — persists across all writes
|
|
19
|
-
let _logger = null;
|
|
20
|
-
export function getDiagnosticLogger() {
|
|
21
|
-
if (!_logger) {
|
|
22
|
-
_logger = createDiagnosticLogger();
|
|
23
|
-
}
|
|
24
|
-
return _logger;
|
|
25
|
-
}
|
|
26
|
-
function createDiagnosticLogger() {
|
|
27
|
-
// Lazy filePath: the log file is keyed on the current date, resolved per
|
|
28
|
-
// drain so a long-lived logger rolls over at midnight. A daily rollover
|
|
29
|
-
// is NOT a size bound (#2505): one very busy day, or a long-lived
|
|
30
|
-
// process that never re-runs the session-start sweep, grows a single
|
|
31
|
-
// day file without limit. The backup keeps the .jsonl extension so the
|
|
32
|
-
// retention sweep in log-cleanup.ts (which matches /\.jsonl$/ under
|
|
33
|
-
// logs/) reaps it like any other daily file.
|
|
34
|
-
const writer = createNdjsonLogger({
|
|
35
|
-
filePath: () => getLogFile(),
|
|
36
|
-
maxBytes: getMaxLogSizeMB() * 1024 * 1024,
|
|
37
|
-
backupPath: () => getLogFile().replace(/\.jsonl$/, ".rotated.jsonl"),
|
|
38
|
-
});
|
|
39
|
-
return {
|
|
40
|
-
log(entry) {
|
|
41
|
-
if (isTestMode()) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
writer.log(entry); // async, non-blocking
|
|
45
|
-
},
|
|
46
|
-
logCaught(d, context, shownInline = false) {
|
|
47
|
-
this.log({
|
|
48
|
-
timestamp: new Date().toISOString(),
|
|
49
|
-
tool: d.tool || "unknown",
|
|
50
|
-
ruleId: d.rule || d.id || "unknown",
|
|
51
|
-
severity: d.severity || "warning",
|
|
52
|
-
language: d.language || "unknown",
|
|
53
|
-
filePath: d.filePath,
|
|
54
|
-
line: d.line || 1,
|
|
55
|
-
column: d.column || 1,
|
|
56
|
-
message: d.message || "",
|
|
57
|
-
caughtByPipeline: true,
|
|
58
|
-
shownInline,
|
|
59
|
-
autoFixed: false,
|
|
60
|
-
shownToAgent: shownInline,
|
|
61
|
-
agentFixed: false,
|
|
62
|
-
unresolved: true,
|
|
63
|
-
model: context.model,
|
|
64
|
-
sessionId: context.sessionId,
|
|
65
|
-
turnIndex: context.turnIndex,
|
|
66
|
-
writeIndex: context.writeIndex,
|
|
67
|
-
});
|
|
68
|
-
},
|
|
69
|
-
async flush() {
|
|
70
|
-
await writer.flush();
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Diagnostic Tracker — in-memory tracking for session-level feedback
|
|
3
|
-
*
|
|
4
|
-
* Links diagnostics to resolutions, tracks violation patterns.
|
|
5
|
-
*/
|
|
6
|
-
// Module-level singleton — persists across all writes
|
|
7
|
-
let _tracker = null;
|
|
8
|
-
export function getDiagnosticTracker() {
|
|
9
|
-
if (!_tracker) {
|
|
10
|
-
_tracker = createDiagnosticTracker();
|
|
11
|
-
}
|
|
12
|
-
return _tracker;
|
|
13
|
-
}
|
|
14
|
-
export function createDiagnosticTracker() {
|
|
15
|
-
const shown = new Map();
|
|
16
|
-
const occurrenceCounts = new Map();
|
|
17
|
-
let totalShown = 0;
|
|
18
|
-
let totalAutoFixed = 0;
|
|
19
|
-
let totalAgentFixed = 0;
|
|
20
|
-
const key = (filePath, ruleId, line) => `${filePath}:${ruleId}:${line}`;
|
|
21
|
-
return {
|
|
22
|
-
trackShown(diagnostics) {
|
|
23
|
-
for (const d of diagnostics) {
|
|
24
|
-
const ruleId = d.rule || d.id || "unknown";
|
|
25
|
-
const line = d.line || 1;
|
|
26
|
-
const k = key(d.filePath, ruleId, line);
|
|
27
|
-
occurrenceCounts.set(k, (occurrenceCounts.get(k) ?? 0) + 1);
|
|
28
|
-
// Don't double-count if already tracked
|
|
29
|
-
if (!shown.has(k)) {
|
|
30
|
-
shown.set(k, {
|
|
31
|
-
ruleId,
|
|
32
|
-
filePath: d.filePath,
|
|
33
|
-
line,
|
|
34
|
-
shownAt: new Date(),
|
|
35
|
-
autoFixed: false,
|
|
36
|
-
agentFixed: false,
|
|
37
|
-
});
|
|
38
|
-
totalShown++;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
trackAutoFixed(count) {
|
|
43
|
-
if (count > 0) {
|
|
44
|
-
totalAutoFixed += count;
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
trackAgentFixed(count) {
|
|
48
|
-
if (count > 0) {
|
|
49
|
-
totalAgentFixed += count;
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
getStats() {
|
|
53
|
-
const ruleCounts = new Map();
|
|
54
|
-
const rulePaths = new Map();
|
|
55
|
-
for (const entry of shown.values()) {
|
|
56
|
-
ruleCounts.set(entry.ruleId, (ruleCounts.get(entry.ruleId) || 0) + 1);
|
|
57
|
-
if (!rulePaths.has(entry.ruleId))
|
|
58
|
-
rulePaths.set(entry.ruleId, new Set());
|
|
59
|
-
rulePaths.get(entry.ruleId)?.add(entry.filePath);
|
|
60
|
-
}
|
|
61
|
-
const topViolations = [...ruleCounts.entries()]
|
|
62
|
-
.sort((a, b) => b[1] - a[1])
|
|
63
|
-
.slice(0, 10)
|
|
64
|
-
.map(([ruleId, count]) => ({
|
|
65
|
-
ruleId,
|
|
66
|
-
count,
|
|
67
|
-
samplePaths: [...(rulePaths.get(ruleId) ?? new Set())]
|
|
68
|
-
.sort((a, b) => a.localeCompare(b))
|
|
69
|
-
.slice(0, 3),
|
|
70
|
-
}));
|
|
71
|
-
const repeatOffenders = [...occurrenceCounts.entries()]
|
|
72
|
-
.filter(([, count]) => count >= 2)
|
|
73
|
-
.sort((a, b) => b[1] - a[1])
|
|
74
|
-
.slice(0, 10)
|
|
75
|
-
.map(([k, count]) => {
|
|
76
|
-
const parts = k.split(":");
|
|
77
|
-
const lineStr = parts.pop() ?? "1";
|
|
78
|
-
const ruleId = parts.pop() ?? "unknown";
|
|
79
|
-
const filePath = parts.join(":");
|
|
80
|
-
return {
|
|
81
|
-
key: k,
|
|
82
|
-
ruleId,
|
|
83
|
-
filePath,
|
|
84
|
-
line: Number.parseInt(lineStr, 10) || 1,
|
|
85
|
-
count,
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
return {
|
|
89
|
-
totalShown,
|
|
90
|
-
totalAutoFixed,
|
|
91
|
-
totalAgentFixed,
|
|
92
|
-
totalUnresolved: totalShown - totalAutoFixed - totalAgentFixed,
|
|
93
|
-
topViolations,
|
|
94
|
-
repeatOffenders,
|
|
95
|
-
};
|
|
96
|
-
},
|
|
97
|
-
reset() {
|
|
98
|
-
shown.clear();
|
|
99
|
-
occurrenceCounts.clear();
|
|
100
|
-
totalShown = 0;
|
|
101
|
-
totalAutoFixed = 0;
|
|
102
|
-
totalAgentFixed = 0;
|
|
103
|
-
},
|
|
104
|
-
};
|
|
105
|
-
}
|