@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
|
-
/**
|
|
2
|
-
* `singleFlight` — at most one execution per key, clear owned by the primitive.
|
|
3
|
-
*
|
|
4
|
-
* Ten sites hand-roll the same five lines: look up a key in a promise map,
|
|
5
|
-
* return the existing promise if there is one, otherwise start the work and
|
|
6
|
-
* delete the key in a `finally`. The class has a measured bug yield, and every
|
|
7
|
-
* bug is in the part the call site wrote rather than the part it meant:
|
|
8
|
-
*
|
|
9
|
-
* - #1690: the `finally`-clear was never exercised, so its regression test
|
|
10
|
-
* passed with the clear deleted. A memo short-circuit above the in-flight
|
|
11
|
-
* check meant the second call never reached it.
|
|
12
|
-
* - #1674: the `finally` deleted the key unconditionally, so a probe settling
|
|
13
|
-
* after a session reset evicted the REPLACEMENT probe a new session had
|
|
14
|
-
* already started for the same key.
|
|
15
|
-
* - #1687: the trailing-rerun bit shipped unpinned — the test asserted "at most
|
|
16
|
-
* two passes" one-sidedly, which a coalescer that dropped the rerun entirely
|
|
17
|
-
* also satisfies.
|
|
18
|
-
* - #1722: an inner latch was vacuous and its own mutation matrix deleted it.
|
|
19
|
-
*
|
|
20
|
-
* This module owns those four guards once. The API is the INTERSECTION of the
|
|
21
|
-
* ten sites, not a superset: share, clear-in-finally, optional trailing-rerun
|
|
22
|
-
* coalescing, optional generation check. Anything a single site needs stays at
|
|
23
|
-
* that site.
|
|
24
|
-
*
|
|
25
|
-
* LIFECYCLE: the primitive owns no module state. `createSingleFlight` returns
|
|
26
|
-
* a closure, so each registry's lifetime is its OWNER's — an instance field
|
|
27
|
-
* lives as long as the instance, a module-level const as long as the process.
|
|
28
|
-
* That keeps the session-state question where it belongs, at the owner, and
|
|
29
|
-
* `clear()` is the seam an owner's reset calls. The two converted sites hold
|
|
30
|
-
* instance fields, exactly as their `ensureInFlight` fields did, so neither
|
|
31
|
-
* one's session-state answer changes.
|
|
32
|
-
*
|
|
33
|
-
* Teardown of a flight that never settles is the owner's question, and neither
|
|
34
|
-
* converted site answers it today: a wedged probe holds its key until the
|
|
35
|
-
* process ends, exactly as its `ensureInFlight` field did on master. This
|
|
36
|
-
* primitive does not make that worse and does not fix it; an owner that needs a
|
|
37
|
-
* deadline wraps `fn` in one before handing it over.
|
|
38
|
-
*
|
|
39
|
-
* The generation hook is deliberately thin — a `() => number` the primitive
|
|
40
|
-
* reads at start and again at completion. The standalone generation-guard
|
|
41
|
-
* primitive is #1754's; when it lands, this stays a callback and composes with
|
|
42
|
-
* it rather than absorbing it.
|
|
43
|
-
*/
|
|
44
|
-
/**
|
|
45
|
-
* Create a keyed single-flight registry.
|
|
46
|
-
*
|
|
47
|
-
* Sites with only one thing to dedupe pass a constant key; the map costs one
|
|
48
|
-
* entry and buys the same four guards a single slot would have to re-derive.
|
|
49
|
-
*/
|
|
50
|
-
export function createSingleFlight(options = {}) {
|
|
51
|
-
const { generation: readGeneration, coalesceTrailing = false } = options;
|
|
52
|
-
const flights = new Map();
|
|
53
|
-
const currentGeneration = () => readGeneration?.() ?? 0;
|
|
54
|
-
/**
|
|
55
|
-
* Release `key`, but ONLY if this exact flight still owns it.
|
|
56
|
-
*
|
|
57
|
-
* This is the #1674 eviction direction: a flight that settles late must not
|
|
58
|
-
* delete the entry a SUCCESSOR already installed under the same key. The
|
|
59
|
-
* successor may exist because a reset cleared the map and a new caller
|
|
60
|
-
* arrived, or because the generation moved and `run` superseded the stale
|
|
61
|
-
* flight. Identity answers both, so identity is the only check here.
|
|
62
|
-
*
|
|
63
|
-
* `runner-helpers.ts:1058` writes this as a generation check AND an identity
|
|
64
|
-
* check. The mutation matrix says the generation half of that pair kills no
|
|
65
|
-
* test: whenever it would fire, identity has already returned. The pair is
|
|
66
|
-
* harmless there and not worth churning; it is not worth copying either.
|
|
67
|
-
*/
|
|
68
|
-
const release = (key, flight) => {
|
|
69
|
-
if (flights.get(key) !== flight)
|
|
70
|
-
return;
|
|
71
|
-
flights.delete(key);
|
|
72
|
-
};
|
|
73
|
-
const run = (key, fn) => {
|
|
74
|
-
const existing = flights.get(key);
|
|
75
|
-
// Sharing requires BOTH a running flight and a matching generation. A
|
|
76
|
-
// flight from an earlier generation answers a question a session reset
|
|
77
|
-
// already invalidated, so this caller falls through and starts a fresh
|
|
78
|
-
// one; the `flights.set` below replaces the stale entry outright, and the
|
|
79
|
-
// stale flight's own `release` then finds a foreign entry and leaves it
|
|
80
|
-
// alone. There is deliberately no explicit delete for the superseded
|
|
81
|
-
// entry: nothing reads the map between here and that `set`, so a delete
|
|
82
|
-
// would be a dead statement dressed as a guard.
|
|
83
|
-
if (existing && existing.generation === currentGeneration()) {
|
|
84
|
-
// A mid-flight request in the SAME generation. With coalescing it earns
|
|
85
|
-
// exactly one trailing pass no matter how many such requests arrive;
|
|
86
|
-
// without it, it shares the running pass. Either way it never starts a
|
|
87
|
-
// second flight.
|
|
88
|
-
if (coalesceTrailing)
|
|
89
|
-
existing.rerunRequested = true;
|
|
90
|
-
return existing.promise;
|
|
91
|
-
}
|
|
92
|
-
// The shared handle is built BEFORE `fn` runs and BEFORE the map entry is
|
|
93
|
-
// published, so the entry a reentrant caller finds always carries a real
|
|
94
|
-
// pending promise. The hand-rolled sites all publish the entry after
|
|
95
|
-
// starting the work, which leaves a synchronous window where a reentrant
|
|
96
|
-
// call starts a second flight for the same key.
|
|
97
|
-
let settle;
|
|
98
|
-
let fail;
|
|
99
|
-
const promise = new Promise((resolve, reject) => {
|
|
100
|
-
settle = resolve;
|
|
101
|
-
fail = reject;
|
|
102
|
-
});
|
|
103
|
-
const flight = {
|
|
104
|
-
promise,
|
|
105
|
-
generation: currentGeneration(),
|
|
106
|
-
rerunRequested: false,
|
|
107
|
-
};
|
|
108
|
-
const chain = async () => {
|
|
109
|
-
let result = await fn();
|
|
110
|
-
// KNOWN INTERACTION, `coalesceTrailing` + `generation`: a flight that
|
|
111
|
-
// gets superseded mid-pass with its rerun bit already set still runs
|
|
112
|
-
// that one trailing pass, because the bit lives on the flight and no
|
|
113
|
-
// caller can reach in to clear it. So a reset can cost ONE extra pass
|
|
114
|
-
// of pre-reset work, whose result nothing reads — the superseded
|
|
115
|
-
// promise has no callers left that a live caller depends on.
|
|
116
|
-
//
|
|
117
|
-
// Left as-is rather than fixed blind: no site uses both options today,
|
|
118
|
-
// so any fix would be untested guesswork about which behavior a real
|
|
119
|
-
// caller wants. A reset arguably SHOULD abandon the pending rerun; it
|
|
120
|
-
// arguably should also let a pass that is already half-done finish.
|
|
121
|
-
// The third site to turn this combination on decides, and adds the
|
|
122
|
-
// test that pins whichever answer it picks.
|
|
123
|
-
//
|
|
124
|
-
// Only reruns requested WHILE a pass was running count. Clearing the bit
|
|
125
|
-
// before each pass — never after — is what pins the coalescing to "at
|
|
126
|
-
// most one trailing rerun": a request that arrives during pass 2 sets
|
|
127
|
-
// the bit again and gets pass 3, which is still one trailing pass per
|
|
128
|
-
// burst-that-overlaps-a-pass, not one per request.
|
|
129
|
-
while (flight.rerunRequested) {
|
|
130
|
-
flight.rerunRequested = false;
|
|
131
|
-
result = await fn();
|
|
132
|
-
}
|
|
133
|
-
return result;
|
|
134
|
-
};
|
|
135
|
-
flights.set(key, flight);
|
|
136
|
-
// Release runs on BOTH settlements — a rejected `fn` must not wedge the
|
|
137
|
-
// key, which is #1690's leak. Release and settle happen in the same
|
|
138
|
-
// synchronous step, so their order relative to each other is not
|
|
139
|
-
// observable; what matters is that both run before any awaiting caller's
|
|
140
|
-
// continuation. A rejection also abandons a pending rerun: re-running
|
|
141
|
-
// work that just threw is a retry policy, and a retry policy belongs to
|
|
142
|
-
// the caller that knows what the work was.
|
|
143
|
-
chain().then((value) => {
|
|
144
|
-
release(key, flight);
|
|
145
|
-
settle(value);
|
|
146
|
-
}, (error) => {
|
|
147
|
-
release(key, flight);
|
|
148
|
-
fail(error);
|
|
149
|
-
});
|
|
150
|
-
return flight.promise;
|
|
151
|
-
};
|
|
152
|
-
return {
|
|
153
|
-
run,
|
|
154
|
-
has: (key) => flights.has(key),
|
|
155
|
-
size: () => flights.size,
|
|
156
|
-
clear: () => flights.clear(),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { logExtension } from "./extension-log.js";
|
|
2
|
-
import { TOOL_REGISTRY } from "./tool-config.js";
|
|
3
|
-
const situationalTools = TOOL_REGISTRY.filter((tool) => "situational" in tool && tool.situational === true).map((tool) => tool.name);
|
|
4
|
-
const situationalToolSet = new Set(situationalTools);
|
|
5
|
-
const activated = new Set();
|
|
6
|
-
const called = new Set();
|
|
7
|
-
let sessionStarted = false;
|
|
8
|
-
let emitted = false;
|
|
9
|
-
// MCP-only connection-terminal latch: once the connection's row is recorded,
|
|
10
|
-
// repeated initialize/tool-call starts must not reopen the session.
|
|
11
|
-
let connectionEnded = false;
|
|
12
|
-
// Which host owns the open session; only MCP may arm connectionEnded. Pi state
|
|
13
|
-
// belongs to the conversation and survives in-process session rebuilds.
|
|
14
|
-
let sessionHost = "mcp";
|
|
15
|
-
function observe(set, name) {
|
|
16
|
-
if (situationalToolSet.has(name)) {
|
|
17
|
-
set.add(name);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function clearObservations() {
|
|
21
|
-
activated.clear();
|
|
22
|
-
called.clear();
|
|
23
|
-
}
|
|
24
|
-
export function observeSituationalToolActivation(names) {
|
|
25
|
-
for (const name of names)
|
|
26
|
-
observe(activated, name);
|
|
27
|
-
}
|
|
28
|
-
export function observeSituationalToolCall(name) {
|
|
29
|
-
observe(called, name);
|
|
30
|
-
}
|
|
31
|
-
export function resetSituationalToolTelemetry() {
|
|
32
|
-
// A live telemetry session owns its observation sets: both hosts open the
|
|
33
|
-
// session (which resets the sets) BEFORE handleSessionStart runs, and a
|
|
34
|
-
// repeated MCP session_start refresh legitimately re-runs that handler —
|
|
35
|
-
// clearing here would wipe the calls recorded before the refresh. This
|
|
36
|
-
// registered reset therefore only acts when no session is open.
|
|
37
|
-
if (sessionStarted)
|
|
38
|
-
return;
|
|
39
|
-
clearObservations();
|
|
40
|
-
emitted = false;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Open the telemetry session for one host.
|
|
44
|
-
*
|
|
45
|
-
* Pi owns one observation set per session file. A shutdown with a
|
|
46
|
-
* `targetSessionFile` emits the conversation that is ending before the host
|
|
47
|
-
* opens the replacement. Reload keeps the same file, so its factory rebuild
|
|
48
|
-
* does not split the row. A process restart opens an empty set and recovers nothing:
|
|
49
|
-
* pi-lens's own activation memory (`rememberedLazyTools` in `index.ts`) is
|
|
50
|
-
* empty in a new process, so the restore deactivates every situational tool,
|
|
51
|
-
* and the host's restored active set is evidence of REGISTRATION, not of
|
|
52
|
-
* model activation (#2866 review F1). MCP remains connection-scoped.
|
|
53
|
-
*/
|
|
54
|
-
export function startSituationalToolTelemetrySession(host) {
|
|
55
|
-
if (host === "mcp") {
|
|
56
|
-
if (connectionEnded)
|
|
57
|
-
return;
|
|
58
|
-
if (sessionStarted)
|
|
59
|
-
return;
|
|
60
|
-
sessionHost = "mcp";
|
|
61
|
-
clearObservations();
|
|
62
|
-
emitted = false;
|
|
63
|
-
sessionStarted = true;
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
if (sessionStarted) {
|
|
67
|
-
sessionHost = "pi";
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
sessionHost = "pi";
|
|
71
|
-
clearObservations();
|
|
72
|
-
emitted = false;
|
|
73
|
-
sessionStarted = true;
|
|
74
|
-
}
|
|
75
|
-
/** Emit the one session-end row and make repeated shutdown calls harmless. */
|
|
76
|
-
export function endSituationalToolTelemetry() {
|
|
77
|
-
if (!sessionStarted)
|
|
78
|
-
return;
|
|
79
|
-
emitSituationalDeadWeight();
|
|
80
|
-
if (sessionHost === "mcp")
|
|
81
|
-
connectionEnded = true;
|
|
82
|
-
clearObservations();
|
|
83
|
-
emitted = false;
|
|
84
|
-
sessionStarted = false;
|
|
85
|
-
}
|
|
86
|
-
export function emitSituationalDeadWeight() {
|
|
87
|
-
if (emitted)
|
|
88
|
-
return;
|
|
89
|
-
emitted = true;
|
|
90
|
-
const used = new Set([...activated, ...called]);
|
|
91
|
-
logExtension({
|
|
92
|
-
subsystem: "tools",
|
|
93
|
-
level: "debug",
|
|
94
|
-
message: "situational tool dead weight",
|
|
95
|
-
metadata: {
|
|
96
|
-
tools: situationalTools.filter((name) => !used.has(name)),
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
/** Test-only view of the module's state, for the #1635 session-state registry probe. */
|
|
101
|
-
export function _getSituationalToolTelemetryStateForTests() {
|
|
102
|
-
return {
|
|
103
|
-
activated: activated.size,
|
|
104
|
-
called: called.size,
|
|
105
|
-
emitted,
|
|
106
|
-
sessionStarted,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves the skills directory the `resources_discover` handler (#205)
|
|
3
|
-
* registers, and reports the one condition that pi previously loaded with NO
|
|
4
|
-
* visible signal: `<packageRoot>/skills` is absent, unreadable, or holds no
|
|
5
|
-
* skill pi's own loader would find (#2626).
|
|
6
|
-
*
|
|
7
|
-
* `resolvePackagePath(import.meta.url, "skills")`-equivalent resolution
|
|
8
|
-
* (`clients/package-root.ts`'s `getPackageRoot`) is correct for both the
|
|
9
|
-
* source and compiled `dist/` layouts — it walks up from the loaded entry
|
|
10
|
-
* file to the nearest `package.json`. It goes wrong silently, not loudly,
|
|
11
|
-
* when that walk lands somewhere with no `skills/` beside it: `skills/`
|
|
12
|
-
* missing from an installed package, or the entry file copied out of the
|
|
13
|
-
* package tree by a managed extension cache so the nearest `package.json`
|
|
14
|
-
* is the cache's own. Either way `resources_discover` used to hand pi a
|
|
15
|
-
* path that does not exist, `pi` registered zero skills, and nothing — no
|
|
16
|
-
* extension error, no stderr line — said so (investigated on #2587).
|
|
17
|
-
*
|
|
18
|
-
* #2626 review round 2, F1: the FIRST version of this fix inverted the
|
|
19
|
-
* acceptance criterion — it returned `[]` (no skills registered) whenever
|
|
20
|
-
* its own predicate disagreed with pi's real loader, which is worse than
|
|
21
|
-
* the bug it fixed on every layout the predicate got wrong (dropping skills
|
|
22
|
-
* pi WOULD have loaded, a regression vs. pre-fix `master`). The acceptance
|
|
23
|
-
* criteria ask for a RECORD, never a changed return value: this module
|
|
24
|
-
* returns `[skillsDir]` UNCONDITIONALLY, exactly like the pre-fix handler —
|
|
25
|
-
* pi's own `loadSkills`/`collectSkillEntries` already treat a nonexistent
|
|
26
|
-
* path as zero skills from that entry, gracefully, so handing it a path
|
|
27
|
-
* that turns out to be empty is exactly as safe as `master`'s behavior
|
|
28
|
-
* always was. The health check below is PURELY observational.
|
|
29
|
-
*
|
|
30
|
-
* #2636 review F4: the ENOENT/EACCES classification shell below used to be
|
|
31
|
-
* hand-rolled here, character-identical to the ast-grep/tree-sitter sites
|
|
32
|
-
* #2636 fixed for the same silent-zero shape — now shared via
|
|
33
|
-
* `bundled-resource-health.ts`, with `scanEntriesForSkills` supplied as this
|
|
34
|
-
* module's own "what counts as found" predicate.
|
|
35
|
-
*/
|
|
36
|
-
import * as path from "node:path";
|
|
37
|
-
import { fileURLToPath } from "node:url";
|
|
38
|
-
import * as fs from "node:fs";
|
|
39
|
-
import { scanEntriesForSkills } from "../scripts/lib/skills-predicate.mjs";
|
|
40
|
-
import { classifyBundledResourceDir, describeBundledResourceHealth, reportBundledResourceDirHealth, } from "./bundled-resource-health.js";
|
|
41
|
-
import { logLatency } from "./latency-logger.js";
|
|
42
|
-
import { getPackageRoot } from "./package-root.js";
|
|
43
|
-
/** The ledger kind this module records under (`clients/degradation-ledger.ts`). */
|
|
44
|
-
const SKILLS_DIR_MISSING_KIND = "skills-dir-missing";
|
|
45
|
-
/**
|
|
46
|
-
* Read `skillsDir` and classify it, sharing `classifyBundledResourceDir`'s
|
|
47
|
-
* ENOENT/EACCES/empty shell but counting pi-LOADABLE skill entry points
|
|
48
|
-
* (`scanEntriesForSkills`), not a bare directory listing — a `skills/`
|
|
49
|
-
* holding only a stray `.gitkeep` must read "empty", not "healthy".
|
|
50
|
-
*/
|
|
51
|
-
function checkSkillsHealth(skillsDir) {
|
|
52
|
-
return classifyBundledResourceDir(skillsDir, (dir) => {
|
|
53
|
-
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
54
|
-
return scanEntriesForSkills(dir, entries, true).length;
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Resolve the skill path for `resources_discover`. ALWAYS returns
|
|
59
|
-
* `[skillsDir]` (see the module doc for why — F1). When `skillsDir` is
|
|
60
|
-
* absent, unreadable, or holds no skill pi's loader would find, records ONE
|
|
61
|
-
* bounded `skills-dir-missing` degradation and a single `notifyUserDegradation`
|
|
62
|
-
* warning, both naming the resolved path and the entry file's directory.
|
|
63
|
-
*
|
|
64
|
-
* Either way, one `skills_resolved` phase/latency record is written so an
|
|
65
|
-
* empty ledger (no `skills-dir-missing` row) is distinguishable from
|
|
66
|
-
* "`resources_discover` never ran at all" (#2626 review F5) — the SAME
|
|
67
|
-
* silent-zero shape one level up the call stack.
|
|
68
|
-
*/
|
|
69
|
-
export function resolveSkillPaths(importMetaUrl) {
|
|
70
|
-
const packageRoot = getPackageRoot(importMetaUrl);
|
|
71
|
-
const skillsDir = path.join(packageRoot, "skills");
|
|
72
|
-
const health = checkSkillsHealth(skillsDir);
|
|
73
|
-
logLatency({
|
|
74
|
-
type: "phase",
|
|
75
|
-
phase: "skills_resolved",
|
|
76
|
-
filePath: skillsDir,
|
|
77
|
-
durationMs: 0,
|
|
78
|
-
metadata: {
|
|
79
|
-
status: health.status,
|
|
80
|
-
entryCount: health.status === "healthy" ? health.entryCount : 0,
|
|
81
|
-
},
|
|
82
|
-
});
|
|
83
|
-
if (health.status !== "healthy") {
|
|
84
|
-
const entryDir = path.dirname(fileURLToPath(importMetaUrl));
|
|
85
|
-
const healthDescription = describeBundledResourceHealth(health, skillsDir, `no SKILL.md (or loadable .md) found under ${skillsDir}`);
|
|
86
|
-
// #3175: two DIFFERENT strings, not one `reason` reused for both sinks
|
|
87
|
-
// as this used to be.
|
|
88
|
-
//
|
|
89
|
-
// `notifyReason` (uncapped — `notifyUserDegradation` never truncates)
|
|
90
|
-
// keeps the full, natural description: classification first, then
|
|
91
|
-
// where the entry file that triggered this lookup was loaded from.
|
|
92
|
-
const notifyReason = `${healthDescription} (entry loaded from ${entryDir})`;
|
|
93
|
-
// `ledgerReason` is built from a SHORT, path-free classification tag
|
|
94
|
-
// instead of `healthDescription`, because the LEDGER's `reason` field
|
|
95
|
-
// IS capped (`truncateForLedger`, `LEDGER_FIELD_MAX` = 200 chars,
|
|
96
|
-
// head-preserving — see `ledger-bounds.ts`) and `healthDescription`
|
|
97
|
-
// repeats `skillsDir` in full — already recorded, untruncated, in
|
|
98
|
-
// `subject` below whenever it's under the cap on its own. A
|
|
99
|
-
// managed-cache `skillsDir` plus this entry's `entryDir` sharing one
|
|
100
|
-
// long root routinely sums past 200 chars (#3175: TMPDIR ~60+ chars is
|
|
101
|
-
// a real dry-roll and CI-lane shape, not a pathological one); a
|
|
102
|
-
// head-preserving cap over the OLD concatenation (dir-bearing text
|
|
103
|
-
// first, `entryDir` last) then kept the redundant path and dropped the
|
|
104
|
-
// one fact nothing else records — which entry file's directory
|
|
105
|
-
// triggered this lookup (#2587's "entry file copied out of the
|
|
106
|
-
// package tree" case is exactly this). Simply swapping that order is
|
|
107
|
-
// NOT enough: `healthDescription`'s own `unreadable` branch reads
|
|
108
|
-
// `cannot read ${dir} (${fsErrorCode})`, so `dir` sitting in the
|
|
109
|
-
// MIDDLE of the classification text can still push `fsErrorCode`
|
|
110
|
-
// itself off the cap once `entryDir` leads. Dropping the redundant
|
|
111
|
-
// path from the ledger's copy entirely — keeping only the
|
|
112
|
-
// classification word/code — removes that squeeze instead of moving
|
|
113
|
-
// it, and leaves comfortable room (entry directories under roughly
|
|
114
|
-
// 150 chars fit whole) for every managed-cache/npm-install layout
|
|
115
|
-
// observed so far.
|
|
116
|
-
const classification = health.status === "unreadable"
|
|
117
|
-
? `cannot read (${health.fsErrorCode})`
|
|
118
|
-
: health.status === "empty"
|
|
119
|
-
? "no SKILL.md found"
|
|
120
|
-
: "no such directory";
|
|
121
|
-
const ledgerReason = `${classification} (entry loaded from ${entryDir})`;
|
|
122
|
-
// #2626 review F3: the notify-once gate previously re-derived "have we
|
|
123
|
-
// already recorded this" by scanning `getDegradationSummary()` and
|
|
124
|
-
// comparing the RAW `skillsDir` against subjects the ledger stores
|
|
125
|
-
// `truncateForLedger`-ed — a mismatch on any subject over
|
|
126
|
-
// `LEDGER_FIELD_MAX` (200 chars, an ordinary length for a managed-cache
|
|
127
|
-
// path) renotified on every call. `reportBundledResourceDirHealth`
|
|
128
|
-
// reads `incrementDegradationCount`'s own return value for the rising
|
|
129
|
-
// edge, computed after the SAME truncation the ledger stores by, so
|
|
130
|
-
// there is no separate key to keep in sync.
|
|
131
|
-
// #2636 review round 2, F1: the shipped notify sentence ("registers
|
|
132
|
-
// zero skills") is user-visible product text #2626 chose deliberately
|
|
133
|
-
// — it names the exact SYMPTOM this whole issue exists to surface, so
|
|
134
|
-
// the shared helper's generic "<label> unavailable" template must
|
|
135
|
-
// never silently replace it. Passed explicitly rather than inferred
|
|
136
|
-
// from `label` so this stays a per-caller decision, not a convention
|
|
137
|
-
// the next caller has to remember.
|
|
138
|
-
reportBundledResourceDirHealth(SKILLS_DIR_MISSING_KIND, skillsDir, health, "skills", ledgerReason, `pi-lens: registers zero skills — ${notifyReason}.`);
|
|
139
|
-
}
|
|
140
|
-
return [skillsDir];
|
|
141
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Slow-filesystem detection (#462).
|
|
3
|
-
*
|
|
4
|
-
* On WSL 9p mounts (`/mnt/c/...`), synchronous file-tree walks freeze the pi
|
|
5
|
-
* TUI: each `stat`/`readdir` costs ~1.3ms over 9p vs ~17µs native (measured
|
|
6
|
-
* anchor on a Windows host running WSL2 — a 75x slowdown). A 5,000-file sync
|
|
7
|
-
* walk on 9p costs ~6.5s of stat time alone, all on the event loop.
|
|
8
|
-
*
|
|
9
|
-
* This module classifies the workspace by MEASUREMENT, not path shape (no
|
|
10
|
-
* `/mnt/` string-sniffing — that misses drvfs/NFS/SMB and false-positives on
|
|
11
|
-
* fast 9p configurations). A cheap latency probe times a handful of
|
|
12
|
-
* `fs.statSync` calls under the project root at session start; if the median
|
|
13
|
-
* exceeds a threshold, the workspace is flagged "slow FS" for the rest of the
|
|
14
|
-
* process, and callers route sync tree walks to reduced caps / async
|
|
15
|
-
* collectors instead.
|
|
16
|
-
*
|
|
17
|
-
* Escape hatches:
|
|
18
|
-
* - `PI_LENS_ALLOW_SLOW_FS_SCAN=1` — disable slow-FS mode entirely (full
|
|
19
|
-
* normal behavior even when the probe would flag the FS as slow).
|
|
20
|
-
* - `PI_LENS_FORCE_SLOW_FS=1` — force slow-FS mode on regardless of the
|
|
21
|
-
* probe (testing/CI, or a user who knows their FS is slow but the probe
|
|
22
|
-
* under-fires).
|
|
23
|
-
* - `PI_LENS_SLOW_FS_THRESHOLD_US` — override the median-microseconds
|
|
24
|
-
* threshold (default 500).
|
|
25
|
-
*
|
|
26
|
-
* Follows the lazy-memoized-config house style (see `runtime-config.ts`): env
|
|
27
|
-
* values are read lazily at call time, not module load, and `Number(...)` is
|
|
28
|
-
* gated through `Number.isFinite` before use.
|
|
29
|
-
*/
|
|
30
|
-
import { BoundedLruCache } from "./bounded-cache.js";
|
|
31
|
-
import * as fs from "node:fs";
|
|
32
|
-
import * as path from "node:path";
|
|
33
|
-
import { toPositiveFinite } from "./env-utils.js";
|
|
34
|
-
import { normalizeFilePath } from "./path-utils.js";
|
|
35
|
-
/** Default median-stat threshold (microseconds) above which a workspace is
|
|
36
|
-
* classified as slow FS. Measured anchor: 9p ≈ 1300µs/stat, native NTFS/ext4
|
|
37
|
-
* < 200µs/stat — 500µs sits well between the two. */
|
|
38
|
-
export const DEFAULT_SLOW_FS_THRESHOLD_US = 500;
|
|
39
|
-
/** Cap on how many entries the probe stats — keeps the probe itself cheap
|
|
40
|
-
* (15 stats x ~1.3ms worst case is still well under 50ms). */
|
|
41
|
-
const PROBE_SAMPLE_CAP = 15;
|
|
42
|
-
function resolveThresholdMicros() {
|
|
43
|
-
const envValue = toPositiveFinite(process.env.PI_LENS_SLOW_FS_THRESHOLD_US);
|
|
44
|
-
return envValue > 0 ? envValue : DEFAULT_SLOW_FS_THRESHOLD_US;
|
|
45
|
-
}
|
|
46
|
-
function median(values) {
|
|
47
|
-
if (values.length === 0)
|
|
48
|
-
return 0;
|
|
49
|
-
const sorted = [...values].sort((a, b) => a - b);
|
|
50
|
-
const mid = Math.floor(sorted.length / 2);
|
|
51
|
-
return sorted.length % 2 === 0
|
|
52
|
-
? (sorted[mid - 1] + sorted[mid]) / 2
|
|
53
|
-
: sorted[mid];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Time up to `PROBE_SAMPLE_CAP` `fs.statSync` calls on entries directly under
|
|
57
|
-
* `rootDir` and return the median per-stat cost in microseconds. Wrapped
|
|
58
|
-
* entirely in try/catch: any failure (missing dir, permission error, empty
|
|
59
|
-
* dir) yields `slow: false` — a probe failure must never itself degrade
|
|
60
|
-
* behavior.
|
|
61
|
-
*/
|
|
62
|
-
export function probeSlowFs(rootDir) {
|
|
63
|
-
try {
|
|
64
|
-
const resolvedRoot = path.resolve(rootDir);
|
|
65
|
-
const entries = fs.readdirSync(resolvedRoot).slice(0, PROBE_SAMPLE_CAP);
|
|
66
|
-
if (entries.length === 0) {
|
|
67
|
-
return { slow: false, medianStatMicros: 0, samples: 0 };
|
|
68
|
-
}
|
|
69
|
-
const samplesMicros = [];
|
|
70
|
-
for (const entry of entries) {
|
|
71
|
-
const fullPath = path.join(resolvedRoot, entry);
|
|
72
|
-
const startedAt = process.hrtime.bigint();
|
|
73
|
-
try {
|
|
74
|
-
fs.statSync(fullPath);
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
continue; // vanished / permission-denied entry — skip, don't count
|
|
78
|
-
}
|
|
79
|
-
const elapsedNs = process.hrtime.bigint() - startedAt;
|
|
80
|
-
samplesMicros.push(Number(elapsedNs) / 1000);
|
|
81
|
-
}
|
|
82
|
-
if (samplesMicros.length === 0) {
|
|
83
|
-
return { slow: false, medianStatMicros: 0, samples: 0 };
|
|
84
|
-
}
|
|
85
|
-
const medianStatMicros = median(samplesMicros);
|
|
86
|
-
const threshold = resolveThresholdMicros();
|
|
87
|
-
return {
|
|
88
|
-
slow: medianStatMicros > threshold,
|
|
89
|
-
medianStatMicros,
|
|
90
|
-
samples: samplesMicros.length,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
return { slow: false, medianStatMicros: 0, samples: 0 };
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/** Process-lifetime memo of the slow-FS verdict, keyed by normalized cwd so
|
|
98
|
-
* `/` vs `\` inputs share one entry (see path-key invariant tests). */
|
|
99
|
-
const slowFsVerdictCache = new BoundedLruCache(32);
|
|
100
|
-
/**
|
|
101
|
-
* Resolve (and memoize) the slow-FS verdict for `cwd`. Resolution order:
|
|
102
|
-
* 1. `PI_LENS_ALLOW_SLOW_FS_SCAN=1` — kill switch, always false.
|
|
103
|
-
* 2. `PI_LENS_FORCE_SLOW_FS=1` — always true, probe skipped entirely.
|
|
104
|
-
* 3. Measured probe (memoized per cwd for the process lifetime).
|
|
105
|
-
*/
|
|
106
|
-
export function getSlowFsVerdict(cwd) {
|
|
107
|
-
if (process.env.PI_LENS_ALLOW_SLOW_FS_SCAN === "1") {
|
|
108
|
-
return { slow: false, medianStatMicros: 0, samples: 0 };
|
|
109
|
-
}
|
|
110
|
-
if (process.env.PI_LENS_FORCE_SLOW_FS === "1") {
|
|
111
|
-
return { slow: true, medianStatMicros: 0, samples: 0 };
|
|
112
|
-
}
|
|
113
|
-
const key = normalizeFilePath(path.resolve(cwd));
|
|
114
|
-
const cached = slowFsVerdictCache.get(key);
|
|
115
|
-
if (cached)
|
|
116
|
-
return cached;
|
|
117
|
-
const result = probeSlowFs(cwd);
|
|
118
|
-
slowFsVerdictCache.set(key, result);
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
/** Convenience predicate for call sites that only need the boolean verdict. */
|
|
122
|
-
export function isSlowFs(cwd) {
|
|
123
|
-
return getSlowFsVerdict(cwd).slow;
|
|
124
|
-
}
|
|
125
|
-
/** Test-only: clear the memoized verdict cache so a subsequent call re-probes
|
|
126
|
-
* (or re-reads the env kill switches). */
|
|
127
|
-
export function _resetSlowFsForTests() {
|
|
128
|
-
slowFsVerdictCache.clear();
|
|
129
|
-
}
|
|
130
|
-
/** Reduced sync `maxFiles` cap applied in slow-FS mode (env override is
|
|
131
|
-
* deliberately NOT supported per #462's design — this is a safety clamp, not
|
|
132
|
-
* a tuning knob). */
|
|
133
|
-
export const SLOW_FS_REDUCED_MAX_FILES = 500;
|
|
134
|
-
/** Human-readable degradation notice surfaced once per session when slow-FS
|
|
135
|
-
* mode engages, so a user never sees a silently-empty scan result. */
|
|
136
|
-
export function slowFsDegradationNotice() {
|
|
137
|
-
return "slow filesystem detected (set PI_LENS_ALLOW_SLOW_FS_SCAN=1 to override)";
|
|
138
|
-
}
|