@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,158 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as os from "node:os";
|
|
3
|
-
import * as path from "node:path";
|
|
4
|
-
const LOMBOK_ENV_KEYS = ["PI_LENS_LOMBOK_JAR", "LOMBOK_JAR"];
|
|
5
|
-
const LOMBOK_PROJECT_FILES = [
|
|
6
|
-
"lombok.config",
|
|
7
|
-
"pom.xml",
|
|
8
|
-
"build.gradle",
|
|
9
|
-
"build.gradle.kts",
|
|
10
|
-
path.join("gradle", "libs.versions.toml"),
|
|
11
|
-
];
|
|
12
|
-
function fileExists(filePath) {
|
|
13
|
-
if (!filePath)
|
|
14
|
-
return false;
|
|
15
|
-
try {
|
|
16
|
-
return fs.statSync(filePath).isFile();
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function readTextIfSmall(filePath, maxBytes = 512 * 1024) {
|
|
23
|
-
try {
|
|
24
|
-
const stat = fs.statSync(filePath);
|
|
25
|
-
if (!stat.isFile() || stat.size > maxBytes)
|
|
26
|
-
return "";
|
|
27
|
-
return fs.readFileSync(filePath, "utf-8");
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return "";
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function containsLombokDependency(text) {
|
|
34
|
-
return (/\borg\.projectlombok\b/i.test(text) ||
|
|
35
|
-
/<artifactId>\s*lombok\s*<\/artifactId>/i.test(text) ||
|
|
36
|
-
/\b(annotationProcessor|compileOnly|testCompileOnly|testAnnotationProcessor)\b[^\n]*\blombok\b/i.test(text));
|
|
37
|
-
}
|
|
38
|
-
export function hasLombokProject(root) {
|
|
39
|
-
const lombokConfig = path.join(root, "lombok.config");
|
|
40
|
-
if (fileExists(lombokConfig))
|
|
41
|
-
return true;
|
|
42
|
-
for (const name of LOMBOK_PROJECT_FILES) {
|
|
43
|
-
if (name === "lombok.config")
|
|
44
|
-
continue;
|
|
45
|
-
const text = readTextIfSmall(path.join(root, name));
|
|
46
|
-
if (text && containsLombokDependency(text))
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
function envJarCandidate(env) {
|
|
52
|
-
for (const key of LOMBOK_ENV_KEYS) {
|
|
53
|
-
const value = env[key]?.trim();
|
|
54
|
-
if (fileExists(value))
|
|
55
|
-
return path.resolve(value);
|
|
56
|
-
}
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
function localJarCandidates(root) {
|
|
60
|
-
return [
|
|
61
|
-
path.join(root, "lombok.jar"),
|
|
62
|
-
path.join(root, ".lombok", "lombok.jar"),
|
|
63
|
-
path.join(root, "lib", "lombok.jar"),
|
|
64
|
-
path.join(root, "libs", "lombok.jar"),
|
|
65
|
-
];
|
|
66
|
-
}
|
|
67
|
-
function newestExistingJar(candidates) {
|
|
68
|
-
let best;
|
|
69
|
-
for (const candidate of candidates) {
|
|
70
|
-
try {
|
|
71
|
-
const stat = fs.statSync(candidate);
|
|
72
|
-
if (!stat.isFile())
|
|
73
|
-
continue;
|
|
74
|
-
if (!best || stat.mtimeMs > best.mtimeMs) {
|
|
75
|
-
best = { filePath: candidate, mtimeMs: stat.mtimeMs };
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
// missing candidate
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return best?.filePath;
|
|
83
|
-
}
|
|
84
|
-
function mavenLocalLombokJar(home = os.homedir()) {
|
|
85
|
-
const base = path.join(home, ".m2", "repository", "org", "projectlombok", "lombok");
|
|
86
|
-
let versions = [];
|
|
87
|
-
try {
|
|
88
|
-
versions = fs.readdirSync(base);
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
return newestExistingJar(versions.map((version) => path.join(base, version, `lombok-${version}.jar`)));
|
|
94
|
-
}
|
|
95
|
-
function gradleCacheLombokJar(home = os.homedir()) {
|
|
96
|
-
const base = path.join(home, ".gradle", "caches", "modules-2", "files-2.1", "org.projectlombok", "lombok");
|
|
97
|
-
const candidates = [];
|
|
98
|
-
let versions = [];
|
|
99
|
-
try {
|
|
100
|
-
versions = fs.readdirSync(base);
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
return undefined;
|
|
104
|
-
}
|
|
105
|
-
for (const version of versions) {
|
|
106
|
-
const versionDir = path.join(base, version);
|
|
107
|
-
let hashes = [];
|
|
108
|
-
try {
|
|
109
|
-
hashes = fs.readdirSync(versionDir);
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
for (const hash of hashes) {
|
|
115
|
-
candidates.push(path.join(versionDir, hash, `lombok-${version}.jar`));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return newestExistingJar(candidates);
|
|
119
|
-
}
|
|
120
|
-
export function resolveLombokJar(root, env = process.env) {
|
|
121
|
-
const explicit = envJarCandidate(env);
|
|
122
|
-
if (explicit)
|
|
123
|
-
return explicit;
|
|
124
|
-
return (newestExistingJar(localJarCandidates(root)) ??
|
|
125
|
-
mavenLocalLombokJar() ??
|
|
126
|
-
gradleCacheLombokJar());
|
|
127
|
-
}
|
|
128
|
-
export function hasLombokJavaAgent(jvmArgs) {
|
|
129
|
-
return /(^|\s)-javaagent:(?:"[^"]*lombok[^"]*\.jar"|\S*lombok\S*\.jar)/i.test(jvmArgs ?? "");
|
|
130
|
-
}
|
|
131
|
-
function appendJvmArg(existing, next) {
|
|
132
|
-
const trimmed = existing?.trim();
|
|
133
|
-
return trimmed ? `${trimmed} ${next}` : next;
|
|
134
|
-
}
|
|
135
|
-
function resolveLombokJavaAgentArg(root, baseEnv = process.env) {
|
|
136
|
-
if (baseEnv.PI_LENS_JAVA_LOMBOK === "0")
|
|
137
|
-
return undefined;
|
|
138
|
-
if (hasLombokJavaAgent(baseEnv.JDTLS_JVM_ARGS))
|
|
139
|
-
return undefined;
|
|
140
|
-
const explicitJar = envJarCandidate(baseEnv);
|
|
141
|
-
if (!explicitJar && !hasLombokProject(root))
|
|
142
|
-
return undefined;
|
|
143
|
-
const jar = explicitJar ?? resolveLombokJar(root, baseEnv);
|
|
144
|
-
return jar ? `-javaagent:${jar}` : undefined;
|
|
145
|
-
}
|
|
146
|
-
export function createLombokJdtlsArgs(root, baseEnv = process.env) {
|
|
147
|
-
const javaAgent = resolveLombokJavaAgentArg(root, baseEnv);
|
|
148
|
-
return javaAgent ? [`--jvm-arg=${javaAgent}`] : [];
|
|
149
|
-
}
|
|
150
|
-
export function createLombokJdtlsEnv(root, baseEnv = process.env) {
|
|
151
|
-
const javaAgent = resolveLombokJavaAgentArg(root, baseEnv);
|
|
152
|
-
if (!javaAgent)
|
|
153
|
-
return undefined;
|
|
154
|
-
return {
|
|
155
|
-
...baseEnv,
|
|
156
|
-
JDTLS_JVM_ARGS: appendJvmArg(baseEnv.JDTLS_JVM_ARGS, javaAgent),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #2001/#2002 — collect-later coverage store for slow auxiliary LSP servers.
|
|
3
|
-
*
|
|
4
|
-
* When a `with-auxiliary` touch's aux-grace window expires without a
|
|
5
|
-
* publication from an auxiliary scanner (opengrep on Windows measures ~8s per
|
|
6
|
-
* scan against a 2s grace), that scanner's eventual findings were silently
|
|
7
|
-
* cached inside its LSP client and never surfaced to the agent: the auxiliary
|
|
8
|
-
* contributed ZERO agent-visible coverage on most edits.
|
|
9
|
-
*
|
|
10
|
-
* This module is the bounded hand-off between the two halves of the fix:
|
|
11
|
-
*
|
|
12
|
-
* - PRODUCER (`clients/lsp/index.ts`'s aux-grace wait): after the outcomes
|
|
13
|
-
* are decided, every auxiliary with no publication evidence for this
|
|
14
|
-
* content (`cut_off` or `silent`, minus #1493's published-this-content
|
|
15
|
-
* exemption) marks its (filePath, serverId) pair here. DEFERRED servers
|
|
16
|
-
* are never marked — they never received the content, so their cache
|
|
17
|
-
* still describes the PREVIOUS revision (#1459).
|
|
18
|
-
* - CONSUMER (`clients/runtime-turn.ts` at turn_end): drains the store,
|
|
19
|
-
* probes each pair through the read-only
|
|
20
|
-
* `LSPService.readCachedDiagnosticsForServers` seam, freshness-gates the
|
|
21
|
-
* result against `markedAtMs`, and delivers survivors as the registered
|
|
22
|
-
* `runtime-turn:late-auxiliary-findings` gated surface. A pair whose
|
|
23
|
-
* client is alive but has STILL published nothing is re-armed until
|
|
24
|
-
* readLateAuxRearmTtlMs() (env-overridable via
|
|
25
|
-
* `PI_LENS_LATE_AUX_REARM_TTL_MS`) after the LAST re-arm, so a scan
|
|
26
|
-
* finishing between two turn ends is not lost and a demonstrably alive
|
|
27
|
-
* but slow scanner keeps its window open; `markedAtMs` itself never
|
|
28
|
-
* moves — it stays the immutable freshness baseline the delivery gate
|
|
29
|
-
* stats against. Past the TTL, or when the client is gone, the entry is
|
|
30
|
-
* dropped silently (best-effort by design).
|
|
31
|
-
*
|
|
32
|
-
* Bounds: at most MAX_PENDING_ENTRIES (file, server) pairs, insertion-order
|
|
33
|
-
* eviction of the OLDEST pair when the cap is exceeded (shape 9 discipline —
|
|
34
|
-
* the axis that grows is the pair count, so that is the axis that is capped).
|
|
35
|
-
* Keys fold through `normalizeEphemeralMapKey`: this is a hot single-process
|
|
36
|
-
* index whose keys are produced by this same process's touch path, so the
|
|
37
|
-
* cheap ephemeral normalizer is the lifetime-appropriate choice per the
|
|
38
|
-
* PathKeyedMap guidance — no realpath walk on the per-edit path.
|
|
39
|
-
*
|
|
40
|
-
* #2324 F3/R2-A: this module ALSO hands off in the other direction, for
|
|
41
|
-
* ast-grep specifically. Gate B's napi runner is a second producer of
|
|
42
|
-
* coverage for the same (file, "ast-grep") pair — when it runs as the
|
|
43
|
-
* fallback and actually evaluates rules, it calls
|
|
44
|
-
* {@link recordNapiFallbackCoverage}. The PRODUCER above reads that record
|
|
45
|
-
* (via {@link napiFallbackCoveredSince}) before deciding whether to mark a
|
|
46
|
-
* pair, because napi's Gate-B check settles synchronously while the aux-grace
|
|
47
|
-
* wait's own decision takes up to its full grace budget — by the time the
|
|
48
|
-
* wait is ready to mark, THIS touch's napi run (if any) has already finished,
|
|
49
|
-
* so the wait can reliably see it; a clear issued from napi's side cannot,
|
|
50
|
-
* because the mark it would be racing has not been written yet.
|
|
51
|
-
* {@link clearPendingAuxiliaryCoverage} is still used, but only to drop a
|
|
52
|
-
* LEFTOVER pair from an EARLIER touch once napi has fresh evaluated findings
|
|
53
|
-
* to supersede it.
|
|
54
|
-
*/
|
|
55
|
-
import { BoundedFifoMap } from "../bounded-cache.js";
|
|
56
|
-
import { normalizeEphemeralMapKey } from "../path-utils.js";
|
|
57
|
-
/** Maximum pending (filePath, serverId) pairs; oldest evicted beyond this. */
|
|
58
|
-
export const MAX_PENDING_AUX_ENTRIES = 50;
|
|
59
|
-
/**
|
|
60
|
-
* Default for how long a marked pair keeps being re-probed at successive
|
|
61
|
-
* turn ends when the client is alive but has published nothing yet. Covers
|
|
62
|
-
* opengrep's measured ~8s worst case many times over without pinning state
|
|
63
|
-
* forever. Overridable via `PI_LENS_LATE_AUX_REARM_TTL_MS`.
|
|
64
|
-
*/
|
|
65
|
-
export const DEFAULT_LATE_AUX_REARM_TTL_MS = 5 * 60_000;
|
|
66
|
-
export const MAX_LATE_AUX_REARMS = 8;
|
|
67
|
-
/**
|
|
68
|
-
* Read the `PI_LENS_LATE_AUX_REARM_TTL_MS` env override at call time (not
|
|
69
|
-
* module load time) so tests and users can tune without a rebuild — same
|
|
70
|
-
* shape as `readEnvAuxGraceMs` in clients/lsp/index.ts. Absent, non-numeric,
|
|
71
|
-
* or negative values fall back to {@link DEFAULT_LATE_AUX_REARM_TTL_MS}.
|
|
72
|
-
*/
|
|
73
|
-
export function readLateAuxRearmTtlMs() {
|
|
74
|
-
const raw = process.env.PI_LENS_LATE_AUX_REARM_TTL_MS;
|
|
75
|
-
if (raw === undefined)
|
|
76
|
-
return DEFAULT_LATE_AUX_REARM_TTL_MS;
|
|
77
|
-
const parsed = Number.parseInt(raw, 10);
|
|
78
|
-
if (!Number.isFinite(parsed) || parsed < 0)
|
|
79
|
-
return DEFAULT_LATE_AUX_REARM_TTL_MS;
|
|
80
|
-
return parsed;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Whether a pending pair is past its re-arm TTL and should be retired at the
|
|
84
|
-
* next drain. The TTL anchors on {@link PendingAuxCoverageEntry.lastRearmedAtMs}
|
|
85
|
-
* when present (each successful probe extends the window), else on
|
|
86
|
-
* `markedAtMs`. `nowMs` is injectable so tests are deterministic.
|
|
87
|
-
*/
|
|
88
|
-
export function isPendingAuxiliaryPastRearmTtl(pair, nowMs = Date.now()) {
|
|
89
|
-
const anchor = pair.lastRearmedAtMs ?? pair.markedAtMs;
|
|
90
|
-
return nowMs - anchor >= readLateAuxRearmTtlMs();
|
|
91
|
-
}
|
|
92
|
-
const pending = new BoundedFifoMap(MAX_PENDING_AUX_ENTRIES);
|
|
93
|
-
/**
|
|
94
|
-
* #2168: pairs evicted at the cap have no other retirement record — the
|
|
95
|
-
* drain-time reconciliation in `runtime-turn.ts` never sees them because
|
|
96
|
-
* they are gone before a drain can observe them. Counted here so the
|
|
97
|
-
* consumer can fold them into its per-turn `pairCreated`/retirement sum
|
|
98
|
-
* instead of the pair vanishing uncounted.
|
|
99
|
-
*/
|
|
100
|
-
let capEvictedCount = 0;
|
|
101
|
-
function pairKey(filePath, serverId) {
|
|
102
|
-
return `${normalizeEphemeralMapKey(filePath)}\u0000${serverId}`;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Mark (or re-arm) one file's pending auxiliary coverage for `serverIds`.
|
|
106
|
-
* An existing pair keeps its ORIGINAL `markedAtMs`; only genuinely new pairs
|
|
107
|
-
* stamp the current time. Insertion order updates on re-mark so a re-armed
|
|
108
|
-
* pair is not the next one evicted at the cap.
|
|
109
|
-
*
|
|
110
|
-
* `rearmedAtMs` is the turn-end consumer's re-arm form: it stamps
|
|
111
|
-
* `lastRearmedAtMs` (the TTL anchor) WITHOUT moving the freshness baseline,
|
|
112
|
-
* so each successful probe extends the wait window while the delivery gate
|
|
113
|
-
* keeps comparing mtimes against the original mark. The producer form (no
|
|
114
|
-
* `rearmedAtMs`) marks a NEWER revision, so it resets any prior re-arm stamp
|
|
115
|
-
* along with the baseline — the new pair's TTL starts from its own mark.
|
|
116
|
-
*/
|
|
117
|
-
export function markPendingAuxiliaryCoverage(filePath, serverIds, markedAtMs = Date.now(), rearmedAtMs, rearmCount) {
|
|
118
|
-
for (const serverId of serverIds) {
|
|
119
|
-
const key = pairKey(filePath, serverId);
|
|
120
|
-
const existing = pending.get(key);
|
|
121
|
-
if (existing) {
|
|
122
|
-
// #2027 review: bump the freshness baseline on producer re-mark. A
|
|
123
|
-
// newer touch means the auxiliary is scanning a NEWER revision;
|
|
124
|
-
// keeping the original baseline would make every post-baseline mtime
|
|
125
|
-
// read as stale, permanently dropping current-revision findings.
|
|
126
|
-
// A re-arm form never moves the baseline — only the TTL anchor.
|
|
127
|
-
pending.delete(key);
|
|
128
|
-
pending.set(key, rearmedAtMs === undefined
|
|
129
|
-
? { filePath, serverId, markedAtMs }
|
|
130
|
-
: {
|
|
131
|
-
filePath,
|
|
132
|
-
serverId,
|
|
133
|
-
markedAtMs: existing.markedAtMs,
|
|
134
|
-
lastRearmedAtMs: rearmedAtMs,
|
|
135
|
-
rearmCount: rearmCount ?? (existing.rearmCount ?? 0) + 1,
|
|
136
|
-
});
|
|
137
|
-
continue;
|
|
138
|
-
}
|
|
139
|
-
const evicted = pending.set(key, rearmedAtMs === undefined
|
|
140
|
-
? { filePath, serverId, markedAtMs }
|
|
141
|
-
: {
|
|
142
|
-
filePath,
|
|
143
|
-
serverId,
|
|
144
|
-
markedAtMs,
|
|
145
|
-
lastRearmedAtMs: rearmedAtMs,
|
|
146
|
-
rearmCount: rearmCount ?? 1,
|
|
147
|
-
});
|
|
148
|
-
capEvictedCount += evicted.length;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/** Re-arm a drained pair while carrying its ceiling count across the drain. */
|
|
152
|
-
export function rearmPendingAuxiliaryCoverage(pair, rearmedAtMs = Date.now(), refreshBaseline = false) {
|
|
153
|
-
const nextCount = (pair.rearmCount ?? 0) + 1;
|
|
154
|
-
markPendingAuxiliaryCoverage(pair.filePath, [pair.serverId], refreshBaseline ? rearmedAtMs : pair.markedAtMs, rearmedAtMs, nextCount);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Read-only check: is this (file, server) pair currently pending late
|
|
158
|
-
* delivery? #2324 F2: Gate B's "has this server EVER published for this
|
|
159
|
-
* file" answer goes stale the moment a later touch's aux-grace wait finds
|
|
160
|
-
* the server silent for the CURRENT content — a pending pair is exactly
|
|
161
|
-
* that signal, so a caller deciding whether to skip a fallback runner can
|
|
162
|
-
* tell "published, still current" from "published once, silent now" without
|
|
163
|
-
* draining or mutating the store.
|
|
164
|
-
*/
|
|
165
|
-
export function hasPendingAuxiliaryCoverage(filePath, serverId) {
|
|
166
|
-
return pending.has(pairKey(filePath, serverId));
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Remove one pair after its findings were delivered, or whenever the caller
|
|
170
|
-
* knows it is resolved. Unknown pairs are a no-op.
|
|
171
|
-
*/
|
|
172
|
-
export function clearPendingAuxiliaryCoverage(filePath, serverId) {
|
|
173
|
-
pending.delete(pairKey(filePath, serverId));
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Drain ALL pending pairs (removing them from the store) and return them in
|
|
177
|
-
* insertion order. The consumer re-arms the still-waiting subset via
|
|
178
|
-
* {@link markPendingAuxiliaryCoverage}'s `rearmedAtMs` form, which preserves
|
|
179
|
-
* each entry's original `markedAtMs` and stamps `lastRearmedAtMs`.
|
|
180
|
-
*/
|
|
181
|
-
export function drainPendingAuxiliaryCoverage() {
|
|
182
|
-
const drained = [...pending.values()];
|
|
183
|
-
pending.clear();
|
|
184
|
-
return drained;
|
|
185
|
-
}
|
|
186
|
-
/** Current pending pair count for bounded reconciliation telemetry. */
|
|
187
|
-
export function pendingAuxiliaryCoverageSize() {
|
|
188
|
-
return pending.size;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Drain (read and reset) the cap-eviction count accumulated since the last
|
|
192
|
-
* drain. Mirrors {@link drainPendingAuxiliaryCoverage}'s consume-once shape
|
|
193
|
-
* so the turn-end consumer can fold evictions that happened between two
|
|
194
|
-
* turn ends into its reconciliation sum exactly once, never accumulating
|
|
195
|
-
* across turns.
|
|
196
|
-
*/
|
|
197
|
-
export function drainPendingAuxCapEvictedCount() {
|
|
198
|
-
const count = capEvictedCount;
|
|
199
|
-
capEvictedCount = 0;
|
|
200
|
-
return count;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* #2324 R2-A: (file) -> the timestamp of the LAST time the ast-grep napi
|
|
204
|
-
* fallback actually evaluated rules for it, as Gate B's runner
|
|
205
|
-
* (`clients/dispatch/runners/ast-grep-napi.ts`). This is the cross-module
|
|
206
|
-
* hand-off the aux-grace wait (`clients/lsp/index.ts`) needs to avoid
|
|
207
|
-
* marking a pending late-auxiliary pair for a file napi ALREADY delivered
|
|
208
|
-
* for on THIS touch.
|
|
209
|
-
*
|
|
210
|
-
* Ordering is why a synchronous clear-on-napi-run cannot do this job: the
|
|
211
|
-
* wait that decides whether to mark a pair runs for up to ~1800ms (its own
|
|
212
|
-
* grace budget) AFTER napi's Gate-B check, which is a single map lookup.
|
|
213
|
-
* Clearing at napi's run start (or end) races the mark and reliably loses —
|
|
214
|
-
* the mark, if any, has not been written yet. The wait itself is the only
|
|
215
|
-
* place that knows the outcome, so it is the one that must consult this
|
|
216
|
-
* store and skip marking, not the runner that must guess at the wait's
|
|
217
|
-
* future decision.
|
|
218
|
-
*
|
|
219
|
-
* Bounded like the pending-pair store itself; oldest evicted first.
|
|
220
|
-
*/
|
|
221
|
-
export const MAX_NAPI_COVERAGE_ENTRIES = 50;
|
|
222
|
-
const napiFallbackCoverage = new BoundedFifoMap(MAX_NAPI_COVERAGE_ENTRIES);
|
|
223
|
-
/** Record that napi actually evaluated rules for `filePath` at `atMs`. */
|
|
224
|
-
export function recordNapiFallbackCoverage(filePath, atMs = Date.now()) {
|
|
225
|
-
const key = normalizeEphemeralMapKey(filePath);
|
|
226
|
-
napiFallbackCoverage.delete(key);
|
|
227
|
-
napiFallbackCoverage.set(key, atMs);
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Did napi cover `filePath` at or after `sinceMs`? The aux-grace wait passes
|
|
231
|
-
* its own `waitStartedAt` baseline so a STALE coverage record from an
|
|
232
|
-
* earlier touch (napi ran for a PREVIOUS revision) cannot suppress marking a
|
|
233
|
-
* pair this touch's silent server genuinely needs delivered later.
|
|
234
|
-
*/
|
|
235
|
-
export function napiFallbackCoveredSince(filePath, sinceMs) {
|
|
236
|
-
const ts = napiFallbackCoverage.get(normalizeEphemeralMapKey(filePath));
|
|
237
|
-
return ts !== undefined && ts >= sinceMs;
|
|
238
|
-
}
|
|
239
|
-
/** Test-only reset for the napi-coverage hand-off. */
|
|
240
|
-
export function resetNapiFallbackCoverageForTests() {
|
|
241
|
-
napiFallbackCoverage.clear();
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Session-boundary clear (#1635): pending baselines are unreachable after
|
|
245
|
-
* reset (the generation-stamped keys no longer match any active session).
|
|
246
|
-
*/
|
|
247
|
-
export function resetPendingAuxiliaryCoverage() {
|
|
248
|
-
pending.clear();
|
|
249
|
-
capEvictedCount = 0;
|
|
250
|
-
napiFallbackCoverage.clear();
|
|
251
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP position-encoding negotiation (#269).
|
|
3
|
-
*
|
|
4
|
-
* LSP positions are `(line, character)` where `character` is an offset into the
|
|
5
|
-
* line measured in code units of the negotiated `positionEncoding`. The pre-3.17
|
|
6
|
-
* default — and what callers hand us — is UTF-16. LSP 3.17 lets a server pick a
|
|
7
|
-
* different encoding via `ServerCapabilities.positionEncoding`; some servers
|
|
8
|
-
* (rust-analyzer ≥ 2024, recent gopls) prefer UTF-8. If we keep sending UTF-16
|
|
9
|
-
* offsets to a UTF-8 server, every `character` past a multibyte glyph on the
|
|
10
|
-
* line is wrong, and navigation silently lands on the wrong column.
|
|
11
|
-
*
|
|
12
|
-
* This module is the pure core: pick the encoding from the server's reply, and
|
|
13
|
-
* translate a UTF-16 character offset to the negotiated encoding using the
|
|
14
|
-
* line's text. UTF-16 is the identity (and the hot path — no work, no I/O).
|
|
15
|
-
*/
|
|
16
|
-
/** Encodings we advertise to servers, in preference order (UTF-16 first to keep
|
|
17
|
-
* the historical default unless a server explicitly wants otherwise). */
|
|
18
|
-
export const ADVERTISED_POSITION_ENCODINGS = [
|
|
19
|
-
"utf-16",
|
|
20
|
-
"utf-8",
|
|
21
|
-
];
|
|
22
|
-
/**
|
|
23
|
-
* The encoding the server will use, read from its initialize reply. Defaults to
|
|
24
|
-
* UTF-16 when the server doesn't advertise one (pre-3.17 behaviour). An
|
|
25
|
-
* unrecognised value also falls back to UTF-16 — safer than guessing.
|
|
26
|
-
*/
|
|
27
|
-
export function negotiatePositionEncoding(serverCapabilities) {
|
|
28
|
-
const raw = serverCapabilities?.positionEncoding;
|
|
29
|
-
if (raw === "utf-8" || raw === "utf-16" || raw === "utf-32")
|
|
30
|
-
return raw;
|
|
31
|
-
return "utf-16";
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Convert a UTF-16 character offset within `lineText` to the negotiated
|
|
35
|
-
* encoding's offset. UTF-16 is the identity. UTF-8 counts bytes; UTF-32 counts
|
|
36
|
-
* Unicode code points. An offset past the end of the line is clamped to the
|
|
37
|
-
* line length (in the source UTF-16 units) before conversion.
|
|
38
|
-
*/
|
|
39
|
-
export function convertCharacterOffset(encoding, lineText, utf16Character) {
|
|
40
|
-
if (encoding === "utf-16")
|
|
41
|
-
return utf16Character;
|
|
42
|
-
if (utf16Character <= 0)
|
|
43
|
-
return 0;
|
|
44
|
-
// Slice in UTF-16 units (JS string semantics), then re-measure the prefix in
|
|
45
|
-
// the target encoding's units.
|
|
46
|
-
const clamped = Math.min(utf16Character, lineText.length);
|
|
47
|
-
const prefix = lineText.slice(0, clamped);
|
|
48
|
-
if (encoding === "utf-8")
|
|
49
|
-
return Buffer.byteLength(prefix, "utf8");
|
|
50
|
-
// utf-32: number of Unicode code points (spread iterates by code point).
|
|
51
|
-
return [...prefix].length;
|
|
52
|
-
}
|
|
53
|
-
/** Extract the text of a single 0-based line from full file content. */
|
|
54
|
-
export function lineTextAt(content, line) {
|
|
55
|
-
if (line < 0)
|
|
56
|
-
return "";
|
|
57
|
-
// Split on \n; trailing \r is irrelevant to offset math (it's after the
|
|
58
|
-
// character columns the caller cares about, and never multibyte).
|
|
59
|
-
const lines = content.split("\n");
|
|
60
|
-
return lines[line] ?? "";
|
|
61
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Windows Ruby-installer drive-root version-dir discovery (refs #1137).
|
|
3
|
-
*
|
|
4
|
-
* The Ruby installer drops versioned directories (e.g. `Ruby34-x64`) directly
|
|
5
|
-
* at a drive root, and the drive and version suffix vary — so both the LSP
|
|
6
|
-
* candidate builder (`rubyBinCandidates`) and the spawn PATH augmenter
|
|
7
|
-
* (`buildAugmentedPath`) scan the drive root for `ruby<N>...` directories.
|
|
8
|
-
*
|
|
9
|
-
* Enumerating a drive root **synchronously on every LSP spawn** was a genuine
|
|
10
|
-
* #1137 event-loop offender: a stalled cloud/network-backed drive-root
|
|
11
|
-
* `readdirSync` blocks the Node loop (and pi's TUI) for the entire stall. This
|
|
12
|
-
* module makes that enumeration:
|
|
13
|
-
* 1. **O(1) amortized** — the matching directory names are memoized for the
|
|
14
|
-
* process (the set is static for a session; the previous inline code
|
|
15
|
-
* equally required a restart to notice a new Ruby install on PATH), and
|
|
16
|
-
* 2. **non-blocking on the hot path** — `buildAugmentedPath` (called on every
|
|
17
|
-
* spawn) reads the drive root via `fs.promises.readdir` off the loop.
|
|
18
|
-
*
|
|
19
|
-
* Both readers share ONE cache keyed by `driveRoot`, so at most one drive-root
|
|
20
|
-
* read happens per drive per process regardless of which reader runs first.
|
|
21
|
-
* Callers derive their own paths from the returned directory NAMES (the two
|
|
22
|
-
* readers build different suffixes: `bin/<tool>` vs `bin`), so only the raw
|
|
23
|
-
* `ruby<N>` names are cached.
|
|
24
|
-
*/
|
|
25
|
-
import { BoundedLruCache } from "../bounded-cache.js";
|
|
26
|
-
import { normalizeMapKey } from "../path-utils.js";
|
|
27
|
-
import * as fs from "node:fs";
|
|
28
|
-
/** Matches the Ruby installer's `Ruby34-x64`, `ruby3.3`, … drive-root dirs. */
|
|
29
|
-
const RUBY_VERSION_DIR = /^ruby\d/i;
|
|
30
|
-
/** Process-lifetime memo of matching dir names, keyed by drive root (e.g. `C:\`). */
|
|
31
|
-
const rubyDirNamesCache = new BoundedLruCache(16);
|
|
32
|
-
function rubyDriveKey(driveRoot) {
|
|
33
|
-
return normalizeMapKey(driveRoot);
|
|
34
|
-
}
|
|
35
|
-
function filterRubyDirNames(entries) {
|
|
36
|
-
return entries.filter((name) => RUBY_VERSION_DIR.test(name));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Memoized **synchronous** enumeration for sync callers (`rubyBinCandidates`).
|
|
40
|
-
* First call reads the drive root once (fail-open to `[]` on an unreadable
|
|
41
|
-
* root); every later call is a cache hit. If an async caller populated the
|
|
42
|
-
* cache first, this returns that result with no drive-root read at all.
|
|
43
|
-
*/
|
|
44
|
-
export function getRubyVersionDirNamesSync(driveRoot) {
|
|
45
|
-
const key = rubyDriveKey(driveRoot);
|
|
46
|
-
const cached = rubyDirNamesCache.get(key);
|
|
47
|
-
if (cached !== undefined)
|
|
48
|
-
return cached;
|
|
49
|
-
let names;
|
|
50
|
-
try {
|
|
51
|
-
names = filterRubyDirNames(fs.readdirSync(driveRoot));
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
names = [];
|
|
55
|
-
}
|
|
56
|
-
rubyDirNamesCache.set(key, names);
|
|
57
|
-
return names;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Memoized **async** twin for the hot spawn path (`buildAugmentedPath`) — reads
|
|
61
|
-
* the drive root via `fs.promises.readdir` so a slow/stalled cloud-backed drive
|
|
62
|
-
* root never blocks the event loop. Shares the same process cache as the sync
|
|
63
|
-
* reader (identical content, so a benign sync/async populate race is fine).
|
|
64
|
-
*/
|
|
65
|
-
export async function getRubyVersionDirNamesAsync(driveRoot) {
|
|
66
|
-
const key = rubyDriveKey(driveRoot);
|
|
67
|
-
const cached = rubyDirNamesCache.get(key);
|
|
68
|
-
if (cached !== undefined)
|
|
69
|
-
return cached;
|
|
70
|
-
let names;
|
|
71
|
-
try {
|
|
72
|
-
names = filterRubyDirNames(await fs.promises.readdir(driveRoot));
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
names = [];
|
|
76
|
-
}
|
|
77
|
-
rubyDirNamesCache.set(key, names);
|
|
78
|
-
return names;
|
|
79
|
-
}
|
|
80
|
-
/** Test-only: clear the process memo so each case starts cold. */
|
|
81
|
-
export function __resetRubyDriveDirsCacheForTest() {
|
|
82
|
-
rubyDirNamesCache.clear();
|
|
83
|
-
}
|