@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,421 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tier-aware cascade-lane wait policy (#458, re-scope №2).
|
|
3
|
-
*
|
|
4
|
-
* The cascade/deferred lane (`computeCascadeForFile`'s neighbor-touch fan-out
|
|
5
|
-
* in `clients/dispatch/integration.ts`) actively opens neighbor files against
|
|
6
|
-
* their LSP client and waits up to a per-touch budget (~1000ms cold-snapshot /
|
|
7
|
-
* 2000ms warm) for `textDocument/publishDiagnostics` before deciding the
|
|
8
|
-
* neighbor is clean. For a Tier-3 server — one that is `push-only` AND known
|
|
9
|
-
* to publish NOTHING on a clean→clean transition (see
|
|
10
|
-
* docs/lsp-capability-matrix.md; today that's typescript-language-server, the
|
|
11
|
-
* lone core-set instance) — that wait can never distinguish "clean" from
|
|
12
|
-
* "still analyzing"; it always burns its full budget. Dogfooding measured
|
|
13
|
-
* ~221 such `lsp_diagnostics_timeout` events/day.
|
|
14
|
-
*
|
|
15
|
-
* pi 0.80.6's `agent_settled` quiet window (#483, `clients/quiet-window.ts`)
|
|
16
|
-
* gives the cascade lane a place to resolve that ambiguity OUT of the
|
|
17
|
-
* per-touch budget: fire the touch (didOpen/didChange still happens, so the
|
|
18
|
-
* server starts real work), record it as outstanding, and reconcile against
|
|
19
|
-
* whatever landed in the client's diagnostics cache by the time the agent run
|
|
20
|
-
* goes idle. A touch nothing arrived for by then is recorded `unresolved` —
|
|
21
|
-
* never silently treated as `clean` (the #240 doctrine: a missing answer is
|
|
22
|
-
* not an affirmative answer).
|
|
23
|
-
*
|
|
24
|
-
* This module is deliberately NOT hardcoded to server names for the "should
|
|
25
|
-
* this file skip its in-lane wait" question: it reads the live capability
|
|
26
|
-
* snapshot's `workspaceDiagnosticsSupport.mode` (from
|
|
27
|
-
* `detectWorkspaceDiagnosticsSupport`, cached at `initialize`) and combines it
|
|
28
|
-
* with the `silentOnClean` marker on that server's `DiagnosticStrategy`
|
|
29
|
-
* (`wait-policy/strategies.ts`) — the same per-server behavioral-knowledge table
|
|
30
|
-
* the rest of the LSP layer already uses. A server with no live snapshot yet,
|
|
31
|
-
* or whose mode isn't `push-only`, or that isn't marked `silentOnClean`, is
|
|
32
|
-
* NOT tier-3 — the caller keeps today's full in-lane wait. Fail-safe is
|
|
33
|
-
* always "wait like before".
|
|
34
|
-
*
|
|
35
|
-
* Native TS7 is the cascade-only exception. It is not silent on clean, but
|
|
36
|
-
* its publication does not settle inside the cold-snapshot budget. Cascade
|
|
37
|
-
* classifies it as `collect-later`, sends the same no-wait touch, and
|
|
38
|
-
* reconciles its later per-file push or pull publication. The shared server
|
|
39
|
-
* policy remains `waits`, so main-lane behavior does not change.
|
|
40
|
-
*
|
|
41
|
-
* #524/#529/#541/#558: a server id can now be backed by more than one actual
|
|
42
|
-
* binary — "typescript" is classic typescript-language-server OR TS7's
|
|
43
|
-
* native `tsc --lsp --stdio` (PR #526). PR #526 originally routed the
|
|
44
|
-
* native-ts7 variant through the fail-safe "waits" path because
|
|
45
|
-
* `silentOnClean` had only been measured against the classic server; #541
|
|
46
|
-
* (2026-07-11) briefly lifted that exclusion after a clean-signal probe run
|
|
47
|
-
* appeared to show native-ts7 silent too. A follow-up dual-environment
|
|
48
|
-
* re-measurement (2026-07-12, nightly CI on Linux AND a live local run on
|
|
49
|
-
* Windows dev, same `typescript@7.0.2` both times) found native-ts7 now
|
|
50
|
-
* publishes 2 version-less diagnostic sets on the clean transition
|
|
51
|
-
* (`cleanPubs=2(v:0)`) — it is NOT silent. Classic is unaffected and
|
|
52
|
-
* confirmed still silent (`cleanPubs=0(v:0)`) in the same run. This is
|
|
53
|
-
* therefore an EVIDENCE-BASED revert, not the original unverified caution:
|
|
54
|
-
* native-ts7's clean-signal behavior IS known, and it is "publishes, not
|
|
55
|
-
* silent". The shared classifier still routes a native-ts7 snapshot through
|
|
56
|
-
* `waits`. The cascade-only wrapper routes it through `collect-later` because
|
|
57
|
-
* the measured publication arrives after the in-lane budget. The shared
|
|
58
|
-
* `silentOnClean` flag stays `true` for classic.
|
|
59
|
-
* `scripts/probe-clean-signal.mjs`'s drift check no
|
|
60
|
-
* longer compares native-ts7 rows against the shared marker (it now expects
|
|
61
|
-
* `false` for them explicitly) — see that file's header for the regression
|
|
62
|
-
* watch this sets up for a future TS7 build that becomes silent again.
|
|
63
|
-
*/
|
|
64
|
-
import { logCascade } from "../cascade-logger.js";
|
|
65
|
-
import { incrementDegradationCount } from "../degradation-ledger.js";
|
|
66
|
-
import { logLatency } from "../latency-logger.js";
|
|
67
|
-
import { normalizeMapKey } from "../path-utils.js";
|
|
68
|
-
import { registerQuietWindowTask } from "../quiet-window.js";
|
|
69
|
-
import { classifyCascadeWaitTier as classifySharedCascadeWaitTier, classifyServerWaitTier, resolvePrimaryServerForWaitPolicy, } from "./wait-policy/classification.js";
|
|
70
|
-
export { classifyServerWaitTier };
|
|
71
|
-
// The observed-latency half of the collect-later policy is shared with CLI
|
|
72
|
-
// runners. Keep this module as the LSP-facing export seam without duplicating
|
|
73
|
-
// the state machine in the cascade classifier.
|
|
74
|
-
export { classifyObservedRunner, observeRunnerLatency, resetObservedRunnerLatency, } from "../dispatch/collect-later-tier.js";
|
|
75
|
-
/**
|
|
76
|
-
* The cascade lane's wait tier for `filePath`. DELEGATES to the shared
|
|
77
|
-
* `wait-policy/classification.ts` rule — this wrapper adds exactly one
|
|
78
|
-
* cascade-only override on top of it (native TS7's push-only snapshot →
|
|
79
|
-
* `collect-later`) and never re-implements the classification itself.
|
|
80
|
-
*
|
|
81
|
-
* #1444 coverage tradeoff: the no-wait touch this tier selects is
|
|
82
|
-
* `clientScope: "primary"`, and the tier itself is decided from the PRIMARY
|
|
83
|
-
* (non-auxiliary) server alone. That tradeoff already existed for
|
|
84
|
-
* `tier3-silent`; the override enlarges the population it applies to — every
|
|
85
|
-
* native-TS7 TypeScript neighbour now takes the no-wait path too, so an
|
|
86
|
-
* auxiliary server configured for those files no longer gets touched in-lane
|
|
87
|
-
* for them (its findings arrive via the next per-edit dispatch, as they
|
|
88
|
-
* already did for classic tier-3 files).
|
|
89
|
-
*/
|
|
90
|
-
export function classifyCascadeWaitTier(lspService, filePath, snapshots) {
|
|
91
|
-
const primary = resolvePrimaryServerForWaitPolicy(filePath, snapshots);
|
|
92
|
-
if (primary?.serverId === "typescript" &&
|
|
93
|
-
primary.snapshot?.launchVariant === "native-ts7" &&
|
|
94
|
-
primary.snapshot.workspaceDiagnosticsSupport?.mode === "push-only") {
|
|
95
|
-
return "collect-later";
|
|
96
|
-
}
|
|
97
|
-
return classifySharedCascadeWaitTier(lspService, filePath, snapshots);
|
|
98
|
-
}
|
|
99
|
-
// --- Kill switch (lazy, memoized — house style per clients/runtime-config.ts /
|
|
100
|
-
// clients/quiet-window.ts's isQuietWindowEnabled) ---
|
|
101
|
-
let _enabledCache;
|
|
102
|
-
/** `PI_LENS_TIER_AWARE_CASCADE=0` disables the whole feature: every cascade
|
|
103
|
-
* touch waits in-lane exactly as it did before #458, no outstanding-touch
|
|
104
|
-
* bookkeeping, no reconcile task registered. */
|
|
105
|
-
export function isTierAwareCascadeEnabled() {
|
|
106
|
-
if (_enabledCache !== undefined)
|
|
107
|
-
return _enabledCache;
|
|
108
|
-
_enabledCache = process.env.PI_LENS_TIER_AWARE_CASCADE !== "0";
|
|
109
|
-
return _enabledCache;
|
|
110
|
-
}
|
|
111
|
-
/** Test-only: clear the memoized kill-switch read. */
|
|
112
|
-
export function _resetTierAwareCascadeEnabledForTests() {
|
|
113
|
-
_enabledCache = undefined;
|
|
114
|
-
}
|
|
115
|
-
// Keyed by normalized file path. A later touch for the same file simply
|
|
116
|
-
// replaces the earlier entry (only the most recent touch matters — an
|
|
117
|
-
// older touch's diagnostics, if they ever arrive, are still a strict superset
|
|
118
|
-
// concern the newer touch already re-supersedes via didOpen/didChange).
|
|
119
|
-
//
|
|
120
|
-
// #1899: the registry is drained in full by every reconcile sweep, but nothing
|
|
121
|
-
// bounded it BETWEEN sweeps. The sweep runs on pi's `agent_settled` quiet
|
|
122
|
-
// window, and a session can go a long time without one — dogfood logs show
|
|
123
|
-
// sweeps up to 52 minutes apart. So the two bounds below are the registry's
|
|
124
|
-
// own, independent of when a sweep arrives:
|
|
125
|
-
//
|
|
126
|
-
// - `MAX_OUTSTANDING_TOUCHES` caps the entry count. Entries are held in
|
|
127
|
-
// touch order (see `recordOutstandingCascadeTouch`), so eviction takes the
|
|
128
|
-
// oldest touch at O(1).
|
|
129
|
-
// - `OUTSTANDING_TOUCH_MAX_AGE_MS` caps how long a touch stays reconcilable.
|
|
130
|
-
// Past it, the touch is discarded rather than answered: re-injecting a
|
|
131
|
-
// neighbour error, or clearing a footer entry, from a touch fired that
|
|
132
|
-
// long ago reports a state the agent has already moved past.
|
|
133
|
-
//
|
|
134
|
-
// Both constants are sized from the 2026-08-09..20 dogfood window (cascade.log,
|
|
135
|
-
// 67 sweeps / 756 entries): the largest single sweep held 53 entries, and a
|
|
136
|
-
// 15-minute age bound retains 72 of the 80 outcomes that ever resolved (90%)
|
|
137
|
-
// while discarding the tail that resolved after ~26-52 minutes.
|
|
138
|
-
const MAX_OUTSTANDING_TOUCHES = 256;
|
|
139
|
-
const OUTSTANDING_TOUCH_MAX_AGE_MS = 15 * 60_000;
|
|
140
|
-
const _outstandingTouches = new Map();
|
|
141
|
-
/** Entries dropped by the age bound since the last sweep reported. */
|
|
142
|
-
let _expiredSinceLastSweep = 0;
|
|
143
|
-
/** Entries dropped by the size cap since the last sweep reported. */
|
|
144
|
-
let _evictedSinceLastSweep = 0;
|
|
145
|
-
/**
|
|
146
|
-
* Drop every entry older than `OUTSTANDING_TOUCH_MAX_AGE_MS`. The map is held
|
|
147
|
-
* in touch order, so the expired entries are a prefix and the walk stops at
|
|
148
|
-
* the first live one.
|
|
149
|
-
*/
|
|
150
|
-
function pruneExpiredOutstandingTouches(now) {
|
|
151
|
-
for (const [key, touch] of _outstandingTouches) {
|
|
152
|
-
if (now - touch.touchedAt <= OUTSTANDING_TOUCH_MAX_AGE_MS)
|
|
153
|
-
break;
|
|
154
|
-
_outstandingTouches.delete(key);
|
|
155
|
-
_expiredSinceLastSweep++;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Record a Tier-3 cascade touch that skipped its in-lane wait. Called right
|
|
160
|
-
* after the (still-performed) didOpen/didChange notify, before returning
|
|
161
|
-
* without waiting. `touchedAt` must be sampled BEFORE the notify (see the
|
|
162
|
-
* field doc) so the reconcile comparison can never misread a publish that
|
|
163
|
-
* raced the record as pre-touch.
|
|
164
|
-
*
|
|
165
|
-
* #1899: also enforces the registry's two bounds. The `delete` before the
|
|
166
|
-
* `set` is load-bearing — `Map.set` on an existing key keeps the key's
|
|
167
|
-
* ORIGINAL insertion position, so without it a re-touched file would keep a
|
|
168
|
-
* stale position and both the age prefix walk and the oldest-first eviction
|
|
169
|
-
* would pick the wrong entry.
|
|
170
|
-
*/
|
|
171
|
-
export function recordOutstandingCascadeTouch(entry) {
|
|
172
|
-
const key = normalizeMapKey(entry.filePath);
|
|
173
|
-
_outstandingTouches.delete(key);
|
|
174
|
-
// `Date.now()`, not `entry.touchedAt`: the caller samples `touchedAt` before
|
|
175
|
-
// its notify, so it trails real time, and the age bound is a statement about
|
|
176
|
-
// the clock rather than about the newest touch's own stamp.
|
|
177
|
-
pruneExpiredOutstandingTouches(Date.now());
|
|
178
|
-
_outstandingTouches.set(key, entry);
|
|
179
|
-
while (_outstandingTouches.size > MAX_OUTSTANDING_TOUCHES) {
|
|
180
|
-
const oldest = _outstandingTouches.keys().next();
|
|
181
|
-
if (oldest.done)
|
|
182
|
-
break;
|
|
183
|
-
_outstandingTouches.delete(oldest.value);
|
|
184
|
-
_evictedSinceLastSweep++;
|
|
185
|
-
// Bounded by construction: one ledger tally per session, not per
|
|
186
|
-
// eviction event. The subject is the cap itself rather than the evicted
|
|
187
|
-
// path — the discriminating fact is "this session overflowed the tier-3
|
|
188
|
-
// backlog", and per-path subjects would unbound the ledger group.
|
|
189
|
-
incrementDegradationCount({
|
|
190
|
-
kind: "cascade-tier3-backlog-evicted",
|
|
191
|
-
subject: `cap=${MAX_OUTSTANDING_TOUCHES}`,
|
|
192
|
-
reason: "tier-3 outstanding-touch registry hit its cap before a quiet-window reconcile drained it; the oldest touch was dropped unanswered",
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* #1910: session-boundary reset for the outstanding-touch registry and its
|
|
198
|
-
* sweep-scoped `_expiredSinceLastSweep`/`_evictedSinceLastSweep` counters.
|
|
199
|
-
* Both predate #1899 and were never wired into `handleSessionStart` — a
|
|
200
|
-
* session replacement inherited the prior session's outstanding touches, and
|
|
201
|
-
* a stray eviction/expiry landing between a sweep and the boundary attributed
|
|
202
|
-
* its count to the NEXT session's first reconcile gauge. Wired primary-only,
|
|
203
|
-
* same as every other entry in that reset block: a concurrently-live
|
|
204
|
-
* secondary never reaches `handleSessionStart` at all (the #473 guard in
|
|
205
|
-
* index.ts), so it can never race this reset against the still-live
|
|
206
|
-
* primary's outstanding touches.
|
|
207
|
-
*/
|
|
208
|
-
export function resetCascadeTierSessionState() {
|
|
209
|
-
_outstandingTouches.clear();
|
|
210
|
-
_expiredSinceLastSweep = 0;
|
|
211
|
-
_evictedSinceLastSweep = 0;
|
|
212
|
-
}
|
|
213
|
-
/** Test-only: clear the outstanding-touch registry between test cases. */
|
|
214
|
-
export function _resetOutstandingCascadeTouchesForTests() {
|
|
215
|
-
resetCascadeTierSessionState();
|
|
216
|
-
}
|
|
217
|
-
/** Test-only: peek at the registry without mutating it. */
|
|
218
|
-
export function _getOutstandingCascadeTouchesForTests() {
|
|
219
|
-
return [..._outstandingTouches.values()];
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Test-only: peek at the sweep-scoped expired/evicted counters without
|
|
223
|
-
* mutating them. Exists so a probe of `resetCascadeTierSessionState` can
|
|
224
|
-
* assert on THESE counters directly, rather than only on the registry map —
|
|
225
|
-
* a future counter added here and left out of the reset would otherwise
|
|
226
|
-
* stay invisible to any probe that only checks the map went empty.
|
|
227
|
-
*/
|
|
228
|
-
export function _getCascadeTierSweepCountersForTests() {
|
|
229
|
-
return { expired: _expiredSinceLastSweep, evicted: _evictedSinceLastSweep };
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Reconcile every outstanding Tier-3 touch against the LSP client's current
|
|
233
|
-
* diagnostics cache. For each:
|
|
234
|
-
* - If the client holds a PER-FILE diagnostics entry for the touched file
|
|
235
|
-
* whose publish timestamp (`getAllDiagnostics()`'s `ts` — the max of the
|
|
236
|
-
* push/pull timestamps for that file, client.ts) is newer than the
|
|
237
|
-
* touch's pre-notify `touchedAt`, something published for THAT FILE since
|
|
238
|
-
* the touch — record `resolved-found` (diagnostics present) or
|
|
239
|
-
* `resolved-clean` (empty, but PROVEN empty by an actual publish for that
|
|
240
|
-
* file after the touch). A client-WIDE signal is deliberately not used:
|
|
241
|
-
* it advances on any file's publish, so it could falsely "prove" a silent
|
|
242
|
-
* neighbor clean when a sibling neighbor published (#240).
|
|
243
|
-
* - If nothing published for the file by settle time, record `unresolved` —
|
|
244
|
-
* per the #240 doctrine this is NEVER treated as clean.
|
|
245
|
-
*
|
|
246
|
-
* Client lookup is WARM-ONLY (`getWarmClientForFile`): the quiet window must
|
|
247
|
-
* never resurrect an idle-reaped server (a full tsserver spawn + cold index)
|
|
248
|
-
* just to write a log line. A warm-miss ⇒ `unresolved`.
|
|
249
|
-
*
|
|
250
|
-
* Always drains the whole registry (each entry is independently resolved;
|
|
251
|
-
* one entry's client lookup failing doesn't block the rest) and never
|
|
252
|
-
* throws — callers (the quiet-window task) must be fail-safe.
|
|
253
|
-
*/
|
|
254
|
-
export async function reconcileOutstandingCascadeTouches(lspService) {
|
|
255
|
-
const outcomes = [];
|
|
256
|
-
// #1899: the age bound applies at sweep time too, not only at record time —
|
|
257
|
-
// a registry that received no further touches would otherwise hand the sweep
|
|
258
|
-
// entries of unbounded age.
|
|
259
|
-
pruneExpiredOutstandingTouches(Date.now());
|
|
260
|
-
const entries = [..._outstandingTouches.entries()];
|
|
261
|
-
_outstandingTouches.clear();
|
|
262
|
-
for (const [key, touch] of entries) {
|
|
263
|
-
const ageMs = Date.now() - touch.touchedAt;
|
|
264
|
-
try {
|
|
265
|
-
const spawned = await lspService.getWarmClientForFile(touch.filePath);
|
|
266
|
-
if (!spawned || spawned.client.serverId !== touch.serverId) {
|
|
267
|
-
outcomes.push({
|
|
268
|
-
filePath: touch.filePath,
|
|
269
|
-
serverId: touch.serverId,
|
|
270
|
-
outcome: "unresolved",
|
|
271
|
-
unresolvedReason: spawned ? "server-mismatch" : "warm-miss",
|
|
272
|
-
ageMs,
|
|
273
|
-
});
|
|
274
|
-
continue;
|
|
275
|
-
}
|
|
276
|
-
const entry = spawned.client
|
|
277
|
-
.getAllDiagnostics()
|
|
278
|
-
.get(normalizeMapKey(touch.filePath));
|
|
279
|
-
if (!entry || entry.ts <= touch.touchedAt) {
|
|
280
|
-
// No per-file publish since the touch (or ever) — a missing answer
|
|
281
|
-
// is not a clean answer.
|
|
282
|
-
outcomes.push({
|
|
283
|
-
filePath: touch.filePath,
|
|
284
|
-
serverId: touch.serverId,
|
|
285
|
-
outcome: "unresolved",
|
|
286
|
-
unresolvedReason: entry ? "no-publish-since-touch" : "no-publish",
|
|
287
|
-
ageMs,
|
|
288
|
-
});
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
const found = entry.diags.length > 0;
|
|
292
|
-
outcomes.push({
|
|
293
|
-
filePath: touch.filePath,
|
|
294
|
-
serverId: touch.serverId,
|
|
295
|
-
outcome: found ? "resolved-found" : "resolved-clean",
|
|
296
|
-
ageMs,
|
|
297
|
-
diagnosticCount: entry.diags.length,
|
|
298
|
-
publishedAt: entry.ts,
|
|
299
|
-
// #1023: carry the diagnostics so the task can re-surface them.
|
|
300
|
-
...(found && { diagnostics: entry.diags }),
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
catch (err) {
|
|
304
|
-
outcomes.push({
|
|
305
|
-
filePath: touch.filePath,
|
|
306
|
-
serverId: touch.serverId,
|
|
307
|
-
outcome: "unresolved",
|
|
308
|
-
unresolvedReason: "error",
|
|
309
|
-
ageMs,
|
|
310
|
-
});
|
|
311
|
-
logLatency({
|
|
312
|
-
type: "phase",
|
|
313
|
-
phase: "cascade_tier3_reconcile_error",
|
|
314
|
-
filePath: key,
|
|
315
|
-
durationMs: 0,
|
|
316
|
-
metadata: { error: String(err) },
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
return outcomes;
|
|
321
|
-
}
|
|
322
|
-
let _reconcileTaskRegistered = false;
|
|
323
|
-
/**
|
|
324
|
-
* Register the Tier-3 reconcile task with the quiet-window scheduler
|
|
325
|
-
* (`clients/quiet-window.ts`). Idempotent — safe to call more than once
|
|
326
|
-
* (e.g. multiple extension activations in tests).
|
|
327
|
-
*/
|
|
328
|
-
export function registerCascadeTierReconcileTask(getLspService, options = {}) {
|
|
329
|
-
if (_reconcileTaskRegistered)
|
|
330
|
-
return;
|
|
331
|
-
_reconcileTaskRegistered = true;
|
|
332
|
-
registerQuietWindowTask("cascade_tier3_reconcile", async () => {
|
|
333
|
-
if (!isTierAwareCascadeEnabled())
|
|
334
|
-
return;
|
|
335
|
-
const outcomes = await reconcileOutstandingCascadeTouches(getLspService());
|
|
336
|
-
// #1023: re-inject each resolved-found neighbor error so it reaches the
|
|
337
|
-
// agent (previously logs-only). #1444: hand each resolved-CLEAN outcome to
|
|
338
|
-
// the footer reconcile for the mirror-image case. Isolated per-outcome — a
|
|
339
|
-
// throwing callback must not drop the log line or the sibling deliveries.
|
|
340
|
-
for (const o of outcomes) {
|
|
341
|
-
try {
|
|
342
|
-
if (o.outcome === "resolved-found" && o.diagnostics?.length) {
|
|
343
|
-
options.onResolvedFound?.({
|
|
344
|
-
filePath: o.filePath,
|
|
345
|
-
serverId: o.serverId,
|
|
346
|
-
diagnostics: o.diagnostics,
|
|
347
|
-
...(o.publishedAt !== undefined
|
|
348
|
-
? { publishedAt: o.publishedAt }
|
|
349
|
-
: {}),
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
else if (o.outcome === "resolved-clean" && o.publishedAt != null) {
|
|
353
|
-
// #1444: the stale-footer half of the same honesty problem — the
|
|
354
|
-
// neighbour proved clean, but only after the in-lane wait was
|
|
355
|
-
// skipped, so nothing has cleared its earlier error entries.
|
|
356
|
-
options.onResolvedClean?.({
|
|
357
|
-
filePath: o.filePath,
|
|
358
|
-
serverId: o.serverId,
|
|
359
|
-
publishedAt: o.publishedAt,
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
catch {
|
|
364
|
-
// best-effort surfacing; the log below is the durable record.
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
let resolvedFound = 0;
|
|
368
|
-
let resolvedClean = 0;
|
|
369
|
-
let unresolved = 0;
|
|
370
|
-
let ageSumMs = 0;
|
|
371
|
-
let maxAgeMs = 0;
|
|
372
|
-
const unresolvedByReason = {};
|
|
373
|
-
for (const o of outcomes) {
|
|
374
|
-
if (o.outcome === "resolved-found")
|
|
375
|
-
resolvedFound++;
|
|
376
|
-
else if (o.outcome === "resolved-clean")
|
|
377
|
-
resolvedClean++;
|
|
378
|
-
else {
|
|
379
|
-
unresolved++;
|
|
380
|
-
const reason = o.unresolvedReason ?? "no-publish";
|
|
381
|
-
unresolvedByReason[reason] = (unresolvedByReason[reason] ?? 0) + 1;
|
|
382
|
-
}
|
|
383
|
-
ageSumMs += o.ageMs;
|
|
384
|
-
if (o.ageMs > maxAgeMs)
|
|
385
|
-
maxAgeMs = o.ageMs;
|
|
386
|
-
}
|
|
387
|
-
const avgAgeMs = outcomes.length
|
|
388
|
-
? Math.round(ageSumMs / outcomes.length)
|
|
389
|
-
: 0;
|
|
390
|
-
// #1899: emitted on EVERY sweep, including the empty one. The backlog's
|
|
391
|
-
// size was previously observable only when it was non-empty, so "the
|
|
392
|
-
// queue is drained" and "the sweep never ran" read identically in
|
|
393
|
-
// cascade.log. This record is the backlog gauge: what the sweep drained,
|
|
394
|
-
// what the two bounds dropped since the last sweep, and what the bounds
|
|
395
|
-
// are, so a reader never has to know the constants to judge the numbers.
|
|
396
|
-
logCascade({
|
|
397
|
-
phase: "cascade_tier3_reconcile",
|
|
398
|
-
filePath: "<quiet-window>",
|
|
399
|
-
metadata: {
|
|
400
|
-
count: outcomes.length,
|
|
401
|
-
resolvedFound,
|
|
402
|
-
resolvedClean,
|
|
403
|
-
unresolved,
|
|
404
|
-
unresolvedByReason,
|
|
405
|
-
avgAgeMs,
|
|
406
|
-
maxAgeMs,
|
|
407
|
-
expired: _expiredSinceLastSweep,
|
|
408
|
-
evicted: _evictedSinceLastSweep,
|
|
409
|
-
capacity: MAX_OUTSTANDING_TOUCHES,
|
|
410
|
-
maxAgeCapMs: OUTSTANDING_TOUCH_MAX_AGE_MS,
|
|
411
|
-
outcomes,
|
|
412
|
-
},
|
|
413
|
-
});
|
|
414
|
-
_expiredSinceLastSweep = 0;
|
|
415
|
-
_evictedSinceLastSweep = 0;
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
/** Test-only: undo registerCascadeTierReconcileTask's idempotency guard. */
|
|
419
|
-
export function _resetCascadeTierReconcileRegistrationForTests() {
|
|
420
|
-
_reconcileTaskRegistered = false;
|
|
421
|
-
}
|