@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,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared directory-walk primitives (refs #191, "unify the three divergent
|
|
3
|
-
* source walkers").
|
|
4
|
-
*
|
|
5
|
-
* `source-filter.ts` (`collectSourceFiles`/`collectSourceFilesAsync`),
|
|
6
|
-
* `language-profile.ts` (`collectSourceFilesForWarmup`), and
|
|
7
|
-
* `startup-scan.ts` (`countSourceFilesWithinLimit`/`countSourceFilesWithinLimitAsync`)
|
|
8
|
-
* each re-implement a `readdirSync` + ignore-matcher + exclude-dir walk. The
|
|
9
|
-
* SonarCloud duplication flagged on PR #188's async variants is a symptom of
|
|
10
|
-
* this repeated boilerplate.
|
|
11
|
-
*
|
|
12
|
-
* This module intentionally does NOT own the full traversal loop for any
|
|
13
|
-
* caller. Each walker's loop shape (sync-recursive vs. stack-based, yield
|
|
14
|
-
* cadence, file-classification rules — extensions vs. regex vs. build-artifact
|
|
15
|
-
* detection, hard caps vs. count-and-early-exit) is caller-specific and
|
|
16
|
-
* preserved exactly where it already lived; unifying those would silently
|
|
17
|
-
* change observable behavior (e.g. which files survive a `maxFiles` cap on an
|
|
18
|
-
* over-large tree), which issue #191 explicitly calls out as NOT to do
|
|
19
|
-
* silently.
|
|
20
|
-
*
|
|
21
|
-
* What genuinely was duplicated five times across those files is:
|
|
22
|
-
* 1. The "should I recurse into this directory" decision — ignore-matcher +
|
|
23
|
-
* exclude-dir-name, plus two checks only `source-filter.ts` needs
|
|
24
|
-
* (generated-artifact directories, symlink-following).
|
|
25
|
-
* 2. The `readdirSync(..., { withFileTypes: true })` + try/catch-swallow
|
|
26
|
-
* boilerplate (a missing/unreadable directory is silently skipped).
|
|
27
|
-
* Both are centralized here so there is exactly one place that encodes "what
|
|
28
|
-
* counts as an excluded directory."
|
|
29
|
-
*/
|
|
30
|
-
import * as fs from "node:fs";
|
|
31
|
-
import * as path from "node:path";
|
|
32
|
-
import { isExcludedDirName } from "./file-utils.js";
|
|
33
|
-
import { isGeneratedArtifactDirectoryName } from "./generated-artifacts.js";
|
|
34
|
-
import { createDeadline, yieldIfOverBudget } from "./cooperative-budget.js";
|
|
35
|
-
/**
|
|
36
|
-
* Read a directory's entries, returning `[]` for a permission-denied or
|
|
37
|
-
* missing directory instead of throwing. Shared by every walker below — a
|
|
38
|
-
* directory can legitimately disappear or become unreadable mid-walk (race
|
|
39
|
-
* with another process, a broken symlink target, etc.) and every existing
|
|
40
|
-
* caller already treated that as "yields no entries," not a hard failure.
|
|
41
|
-
*/
|
|
42
|
-
export function readDirEntriesSafe(dirPath) {
|
|
43
|
-
try {
|
|
44
|
-
return fs.readdirSync(dirPath, { withFileTypes: true });
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return [];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Async twin of {@link readDirEntriesSafe} (refs #1137) — the identical
|
|
52
|
-
* "unreadable directory yields no entries" contract, but the read itself
|
|
53
|
-
* happens off the event loop via `fs.promises.readdir`.
|
|
54
|
-
*
|
|
55
|
-
* Why this exists: chunked yielding is NOT sufficient to keep the loop free.
|
|
56
|
-
* `walkTreeStackAsync` already `setImmediate`-yielded every N entries, yet each
|
|
57
|
-
* per-directory read was still `readdirSync` — so on a cloud-backed tree
|
|
58
|
-
* (OneDrive, network drive) one stalled directory read blocked the Node loop,
|
|
59
|
-
* and pi's TUI, for the *entire* stall regardless of yield cadence. That is the
|
|
60
|
-
* exact shape #1170 already fixed in `pipeline.ts`'s autofix snapshot walk
|
|
61
|
-
* ("the walk was already async + chunk-yielding, but each synchronous per-dir
|
|
62
|
-
* read still blocked on a cloud stall"); #1170 deferred the SHARED engine, and
|
|
63
|
-
* this is that same fix applied here — so every async walker gets it at once.
|
|
64
|
-
*/
|
|
65
|
-
export async function readDirEntriesSafeAsync(dirPath) {
|
|
66
|
-
try {
|
|
67
|
-
return await fs.promises.readdir(dirPath, { withFileTypes: true });
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* The one shared "should this directory be walked into" decision. Every
|
|
75
|
-
* caller's own loop still owns *when* to call this (inline recursion vs. a
|
|
76
|
-
* stack) and what to do with the answer.
|
|
77
|
-
*
|
|
78
|
-
* `onGeneratedDirSkip` (#1107 phase 2) fires exactly once when — and only
|
|
79
|
-
* when — the `isGeneratedArtifactDirectoryName` branch is the reason this
|
|
80
|
-
* directory is pruned, so a caller can count PRUNED DIRECTORIES (one event
|
|
81
|
-
* per directory, regardless of how many files it contains) without
|
|
82
|
-
* enumerating the directory's contents — doing that would defeat the whole
|
|
83
|
-
* point of pruning it. Optional and unused by every caller except
|
|
84
|
-
* `source-filter.ts`'s `classifyEntry`: the other two `shouldRecurseIntoDir`
|
|
85
|
-
* callers (`language-profile.ts`, `startup-scan.ts`) always pass
|
|
86
|
-
* `skipGeneratedArtifactDirs: false`, so this branch — and therefore the
|
|
87
|
-
* callback — never fires for them.
|
|
88
|
-
*/
|
|
89
|
-
export function shouldRecurseIntoDir(entry, fullPath, policy, onGeneratedDirSkip) {
|
|
90
|
-
if (isExcludedDirName(entry.name, policy.extraExcludeDirs ?? [])) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
if (policy.ignoreMatcher.isIgnored(fullPath, true))
|
|
94
|
-
return false;
|
|
95
|
-
if (policy.skipGeneratedArtifactDirs === true &&
|
|
96
|
-
isGeneratedArtifactDirectoryName(entry.name)) {
|
|
97
|
-
onGeneratedDirSkip?.();
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
if (policy.followSymlinks !== true && entry.isSymbolicLink())
|
|
101
|
-
return false;
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* The one depth-first stack loop, written once as a generator so the sync and
|
|
106
|
-
* async drivers below can't drift: it yields after every visited entry (the
|
|
107
|
-
* async driver's chance to `setImmediate` between steps; the sync driver just
|
|
108
|
-
* drains it), and its return value is true iff the visitor stopped the walk
|
|
109
|
-
* via `"stop"` (vs. exhausting the tree or tripping `shouldStop`). Within each
|
|
110
|
-
* directory, entries are visited left-to-right; entries the visitor marks
|
|
111
|
-
* `"recurse"` are gathered and pushed in reverse after the entry loop, so the
|
|
112
|
-
* pop order descends left-to-right.
|
|
113
|
-
*/
|
|
114
|
-
function* walkTreeStackSteps(rootDir, visit, shouldStop) {
|
|
115
|
-
const stack = [rootDir];
|
|
116
|
-
while (stack.length > 0) {
|
|
117
|
-
if (shouldStop?.())
|
|
118
|
-
return false;
|
|
119
|
-
const dir = stack.pop();
|
|
120
|
-
if (dir === undefined)
|
|
121
|
-
continue;
|
|
122
|
-
// Directory-read REQUEST (#1137): the generator never reads the
|
|
123
|
-
// filesystem itself — it yields the directory path and the driver
|
|
124
|
-
// supplies the entries. That is what lets the sync driver stay
|
|
125
|
-
// `readdirSync` while the async driver reads via `fs.promises.readdir`
|
|
126
|
-
// WITHOUT forking the traversal into two implementations that can
|
|
127
|
-
// drift (the invariant this generator exists to protect).
|
|
128
|
-
const entries = (yield dir) ?? [];
|
|
129
|
-
const subDirs = [];
|
|
130
|
-
for (const entry of entries) {
|
|
131
|
-
const fullPath = path.join(dir, entry.name);
|
|
132
|
-
const disposition = visit(entry, fullPath);
|
|
133
|
-
if (disposition === "stop")
|
|
134
|
-
return true;
|
|
135
|
-
if (disposition === "recurse")
|
|
136
|
-
subDirs.push(fullPath);
|
|
137
|
-
// Per-entry yield point: `undefined` distinguishes it from a
|
|
138
|
-
// directory-read request above.
|
|
139
|
-
yield undefined;
|
|
140
|
-
}
|
|
141
|
-
for (let i = subDirs.length - 1; i >= 0; i--)
|
|
142
|
-
stack.push(subDirs[i]);
|
|
143
|
-
}
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Depth-first, stack-based synchronous driver — drains
|
|
148
|
-
* {@link walkTreeStackSteps} with no pause between steps. Returns true iff the
|
|
149
|
-
* visitor stopped the walk via `"stop"`.
|
|
150
|
-
*/
|
|
151
|
-
export function walkTreeStackSync(rootDir, visit, opts = {}) {
|
|
152
|
-
const steps = walkTreeStackSteps(rootDir, visit, opts.shouldStop);
|
|
153
|
-
let step = steps.next();
|
|
154
|
-
while (!step.done) {
|
|
155
|
-
step = steps.next(step.value === undefined ? undefined : readDirEntriesSafe(step.value));
|
|
156
|
-
}
|
|
157
|
-
return step.value;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Async, chunked-yield twin of {@link walkTreeStackSync} — the identical
|
|
161
|
-
* {@link walkTreeStackSteps} traversal, plus a `setImmediate` yield every
|
|
162
|
-
* its monotonic budget so a large tree never holds the event loop in
|
|
163
|
-
* one synchronous burst. Returns true iff the visitor stopped the walk via
|
|
164
|
-
* `"stop"`.
|
|
165
|
-
*
|
|
166
|
-
* #1137: every per-directory read goes through {@link readDirEntriesSafeAsync},
|
|
167
|
-
* so the walk is non-blocking on BOTH axes — CPU (the `setImmediate` cadence)
|
|
168
|
-
* and I/O (the directory read itself). The yield cadence alone never covered
|
|
169
|
-
* the I/O axis: a stalled cloud-backed `readdirSync` held the loop for the full
|
|
170
|
-
* stall no matter how often the walk yielded around it.
|
|
171
|
-
*/
|
|
172
|
-
export async function walkTreeStackAsync(rootDir, visit, opts) {
|
|
173
|
-
await opts.beforeWalk?.();
|
|
174
|
-
const steps = walkTreeStackSteps(rootDir, visit, opts.shouldStop);
|
|
175
|
-
const deadline = createDeadline(opts.budgetMs ?? 8);
|
|
176
|
-
let step = steps.next();
|
|
177
|
-
while (!step.done) {
|
|
178
|
-
if (step.value !== undefined) {
|
|
179
|
-
// Directory-read request — satisfy it off the loop. No
|
|
180
|
-
step = steps.next(await readDirEntriesSafeAsync(step.value));
|
|
181
|
-
deadline.reset();
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
if (deadline.expired())
|
|
185
|
-
await yieldIfOverBudget(deadline);
|
|
186
|
-
step = steps.next();
|
|
187
|
-
}
|
|
188
|
-
return step.value;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Depth-first synchronous driver that descends into a `"recurse"` directory
|
|
192
|
-
* IMMEDIATELY, before visiting the remaining sibling entries — the recursion
|
|
193
|
-
* shape (and therefore the result-array order) of `source-filter.ts`'s sync
|
|
194
|
-
* collector, which its stack-based async twin deliberately does NOT share.
|
|
195
|
-
* Returns true iff the visitor stopped the walk via `"stop"`; the stop
|
|
196
|
-
* propagates up through every recursion frame so the walk halts at once.
|
|
197
|
-
*/
|
|
198
|
-
export function walkTreeRecursiveSync(rootDir, visit) {
|
|
199
|
-
function scan(currentDir) {
|
|
200
|
-
for (const entry of readDirEntriesSafe(currentDir)) {
|
|
201
|
-
const fullPath = path.join(currentDir, entry.name);
|
|
202
|
-
const disposition = visit(entry, fullPath);
|
|
203
|
-
if (disposition === "stop")
|
|
204
|
-
return true;
|
|
205
|
-
if (disposition === "recurse" && scan(fullPath))
|
|
206
|
-
return true;
|
|
207
|
-
}
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
return scan(rootDir);
|
|
211
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The one reading of `SpawnResult.outputTruncated` (#2100), the one output-cap
|
|
3
|
-
* number (#3375), and the bounded accumulator the `data` handlers that never
|
|
4
|
-
* reach `safeSpawnAsync` use instead of `+=` (#3383).
|
|
5
|
-
*
|
|
6
|
-
* Its own module for the same reason `ledger-bounds.ts` is: `spawn-outcome.ts`
|
|
7
|
-
* is on the shared runner path that dozens of test files reach with a bare
|
|
8
|
-
* `vi.mock("safe-spawn.js")`, and importing a VALUE from safe-spawn there makes
|
|
9
|
-
* every one of those mocks have to re-export it. This module has no imports, so
|
|
10
|
-
* nobody has to mock it.
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* The cap `safeSpawnAsync` applies when a caller passes no `maxOutputBytes`
|
|
14
|
-
* (#3375).
|
|
15
|
-
*
|
|
16
|
-
* Before this existed, an omitted cap meant NO cap: `appendOutput` fell
|
|
17
|
-
* through to `current + text` and grew one JS string until V8 refused the next
|
|
18
|
-
* concatenation with `RangeError: Invalid string length`. That throw is raised
|
|
19
|
-
* inside a stdout/stderr `data` handler, where the awaiting caller's
|
|
20
|
-
* `try`/`catch` cannot reach it, so it left the Pi host as an uncaught
|
|
21
|
-
* exception (field report: Pi 0.86.1, 2026-09-22).
|
|
22
|
-
*
|
|
23
|
-
* 32 MiB is chosen against the tree's own deliberate ceilings, not invented:
|
|
24
|
-
* the most generous explicit cap any caller asks for is 16 MiB
|
|
25
|
-
* (`MAX_GIT_STATUS_OUTPUT_BYTES` in `clients/shared-checkout-guard.ts` and
|
|
26
|
-
* `clients/opaque-mutation-scan.ts`, `MAX_LS_FILES_OUTPUT_BYTES` in
|
|
27
|
-
* `clients/git-tracked-ignore.ts` — a monorepo's whole tracked-file list), and
|
|
28
|
-
* the rest sit at 8 MiB or 64 KiB. Doubling that ceiling means no consumer
|
|
29
|
-
* whose legitimate volume is within the most generous allowance a maintainer
|
|
30
|
-
* has ever justified can be truncated by the DEFAULT, while the retained
|
|
31
|
-
* string stays 16x below V8's max string length (2^29-24 bytes of ASCII), so
|
|
32
|
-
* the concatenation that crashed the host is now unreachable rather than
|
|
33
|
-
* merely less likely. A caller that genuinely needs more passes its own
|
|
34
|
-
* `maxOutputBytes`; it always wins.
|
|
35
|
-
*/
|
|
36
|
-
export const DEFAULT_MAX_OUTPUT_BYTES = 32 * 1024 * 1024;
|
|
37
|
-
/**
|
|
38
|
-
* The bound for a stream `data` handler that accumulates a string OUTSIDE
|
|
39
|
-
* `safeSpawnAsync` (#3383).
|
|
40
|
-
*
|
|
41
|
-
* #3375 capped the shared spawn seam, which covered 98 of 110 call sites; the
|
|
42
|
-
* class sweep for it found five accumulators that never reach that seam — a
|
|
43
|
-
* forked analyze worker (`clients/mcp/review.ts`), the unref'd one-shot
|
|
44
|
-
* collector (`clients/child-unref.ts`, which cannot import the seam at all: it
|
|
45
|
-
* is what `safe-spawn.ts` itself depends on) and two installer interpreter
|
|
46
|
-
* probes. Each grew one JS string per chunk with no ceiling, so each could
|
|
47
|
-
* reach the identical ending: V8 refusing the next concatenation with
|
|
48
|
-
* `RangeError: Invalid string length` INSIDE a `data` handler, which is an
|
|
49
|
-
* uncaught exception that terminated the Pi host on 2026-09-22.
|
|
50
|
-
*
|
|
51
|
-
* Retention is HEAD-ONLY and whole-chunk: the first chunk that would cross the
|
|
52
|
-
* bound is dropped entire, not byte-prefixed. `safeSpawnAsync`'s own
|
|
53
|
-
* `appendOutput` keeps a head, a marker and a tail because its callers parse
|
|
54
|
-
* tool output where the tail carries the summary; every caller here wants a
|
|
55
|
-
* prefix (a JSON document, a `ps` table, one path line) and a whole-chunk drop
|
|
56
|
-
* cannot split a multi-byte character.
|
|
57
|
-
*
|
|
58
|
-
* `maxBytes` defaults to {@link DEFAULT_MAX_OUTPUT_BYTES} so every bounded
|
|
59
|
-
* accumulator in the tree answers to ONE reviewed number. NO production caller
|
|
60
|
-
* passes it; it is a parameter so the retention arithmetic can be pinned at a
|
|
61
|
-
* readable size (`createBoundedOutputSink(10)`) instead of only at 32 MiB.
|
|
62
|
-
* There is deliberately no sanitizing of it either: nothing passes a value that
|
|
63
|
-
* would need it, so a `Number.isFinite` arm would be mutation-inert.
|
|
64
|
-
*/
|
|
65
|
-
export function createBoundedOutputSink(maxBytes = DEFAULT_MAX_OUTPUT_BYTES) {
|
|
66
|
-
let text = "";
|
|
67
|
-
let retained = 0;
|
|
68
|
-
let truncated = false;
|
|
69
|
-
let observed = 0;
|
|
70
|
-
return {
|
|
71
|
-
append(chunk) {
|
|
72
|
-
const part = typeof chunk === "string" ? chunk : chunk.toString();
|
|
73
|
-
const bytes = Buffer.byteLength(part);
|
|
74
|
-
observed += bytes;
|
|
75
|
-
if (retained + bytes <= maxBytes) {
|
|
76
|
-
retained += bytes;
|
|
77
|
-
text += part;
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
truncated = true;
|
|
81
|
-
},
|
|
82
|
-
get text() {
|
|
83
|
-
return text;
|
|
84
|
-
},
|
|
85
|
-
get truncated() {
|
|
86
|
-
return truncated;
|
|
87
|
-
},
|
|
88
|
-
get observedBytes() {
|
|
89
|
-
return observed;
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* True when `outputTruncated` is the OUTPUT CAP's own verdict about this run,
|
|
95
|
-
* and not a detail of some other ending.
|
|
96
|
-
*
|
|
97
|
-
* A timeout or an abort can carry `outputTruncated` too. Those endings own
|
|
98
|
-
* their own classification, so they are excluded here rather than reported as
|
|
99
|
-
* truncation.
|
|
100
|
-
*
|
|
101
|
-
* Typed structurally so `SpawnResult` and runner-level result shapes that
|
|
102
|
-
* re-spell `failure` can both use it.
|
|
103
|
-
*/
|
|
104
|
-
export function truncatedByOutputCap(result) {
|
|
105
|
-
return (result.outputTruncated === true &&
|
|
106
|
-
result.failure !== "timeout" &&
|
|
107
|
-
result.failure !== "aborted");
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* True when `stopForOutputLimit` started terminating the child.
|
|
111
|
-
*
|
|
112
|
-
* Windows reports that termination as status 1 without a signal or failure,
|
|
113
|
-
* while POSIX commonly reports SIGTERM. This field avoids reconstructing our
|
|
114
|
-
* action from either platform's exit shape.
|
|
115
|
-
*/
|
|
116
|
-
export function killedForOutputCap(result) {
|
|
117
|
-
return (result.killedForOutputCap === true &&
|
|
118
|
-
result.failure !== "timeout" &&
|
|
119
|
-
result.failure !== "aborted");
|
|
120
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session-scoped cooldown for commands whose spawn TIMED OUT (#1995).
|
|
3
|
-
*
|
|
4
|
-
* Live evidence: one wedged `markdownlint-cli2.cmd` on Windows charged its
|
|
5
|
-
* failure budget three times for a single edit — availability verification
|
|
6
|
-
* (30s, SIGTERM), autofix `--fix` (30s), and the lint runner (15s) each paid
|
|
7
|
-
* separately, because a positive probe/cache verdict said nothing about the
|
|
8
|
-
* command's ability to COMPLETE. Total post-edit cost: 52-60 seconds.
|
|
9
|
-
*
|
|
10
|
-
* This seam is the shared negative evidence:
|
|
11
|
-
* - `noteSpawnTimeout` records that a resolved command timed out, in which
|
|
12
|
-
* phase, and what wrapper kind it had; every record emits one bounded
|
|
13
|
-
* latency row so the session stays auditable.
|
|
14
|
-
* - `isInSpawnTimeoutCooldown` is consulted by every invocation path for that
|
|
15
|
-
* command — verification, autofix, and lint — so ONE wedged executable
|
|
16
|
-
* consumes at most ONE bounded failure budget per edit (invariant 1) and a
|
|
17
|
-
* timeout/skipped result is never re-reported as clean (invariant 4).
|
|
18
|
-
*
|
|
19
|
-
* Durability contract: SESSION. A hot loop of edits must not retry (a wedged
|
|
20
|
-
* `.cmd` shim does not heal between edits), but a new session may — the
|
|
21
|
-
* executable or its environment may have changed. Reset is registered in the
|
|
22
|
-
* session-state registry (`spawn-timeout-cooldown:latches`) and wired into
|
|
23
|
-
* `handleSessionStart`.
|
|
24
|
-
*/
|
|
25
|
-
import path from "node:path";
|
|
26
|
-
import { logLatency } from "./latency-logger.js";
|
|
27
|
-
import { normalizeLoggedPath } from "./path-utils.js";
|
|
28
|
-
const COOLDOWN_STATE_KEY = Symbol.for("pi-lens:spawn-timeout-cooldown");
|
|
29
|
-
const _global = globalThis;
|
|
30
|
-
if (!_global[COOLDOWN_STATE_KEY]) {
|
|
31
|
-
_global[COOLDOWN_STATE_KEY] = { timedOutByCommand: new Map() };
|
|
32
|
-
}
|
|
33
|
-
const timedOutByCommand = _global[COOLDOWN_STATE_KEY].timedOutByCommand;
|
|
34
|
-
/** Wrapper kind for the telemetry record: how the command will be launched. */
|
|
35
|
-
function wrapperKindOf(command) {
|
|
36
|
-
const ext = path.extname(command);
|
|
37
|
-
return ext ? ext.slice(1) : "bare";
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Cooldown key: the command's basename minus extension, lowercased.
|
|
41
|
-
*
|
|
42
|
-
* Deliberately NOT the full resolved path: the three lanes resolve the same
|
|
43
|
-
* physical binary through different helpers (PATH-resolved absolute,
|
|
44
|
-
* `<cwd>/node_modules/.bin/...`, bare name), and cross-lane sharing is the
|
|
45
|
-
* entire point (#1995 - otherwise each lane pays its own first budget).
|
|
46
|
-
*/
|
|
47
|
-
function cooldownKey(command) {
|
|
48
|
-
return path
|
|
49
|
-
.basename(command)
|
|
50
|
-
.replace(/\.[^.]+$/, "")
|
|
51
|
-
.toLowerCase();
|
|
52
|
-
}
|
|
53
|
-
export function noteSpawnTimeout(input) {
|
|
54
|
-
const key = cooldownKey(input.command);
|
|
55
|
-
timedOutByCommand.set(key, {
|
|
56
|
-
tool: input.tool,
|
|
57
|
-
command: input.command,
|
|
58
|
-
phase: input.phase,
|
|
59
|
-
atMs: Date.now(),
|
|
60
|
-
});
|
|
61
|
-
// #2229 review round 1, F3, reverted in round 3 (R2-F2): normalizing
|
|
62
|
-
// `filePath` here is fine (it is `logLatency`'s emit-seam field, a
|
|
63
|
-
// display value with no reader). `metadata.command` is NOT a display
|
|
64
|
-
// value — `safe-spawn-timeout-teardown.test.ts` reads it back to match
|
|
65
|
-
// the cooldown row against the RAW command, and `cooldownKey` above
|
|
66
|
-
// deliberately keys on basename because the same binary arrives in
|
|
67
|
-
// multiple spellings across call sites. Normalizing it changed a
|
|
68
|
-
// correlation key's contents, which is a behavior change other code
|
|
69
|
-
// reads, not just a display fix — narrower than what F3 asked for.
|
|
70
|
-
// `filePath` and `metadata.command` can legitimately show two spellings
|
|
71
|
-
// of the same command in one record; if that turns out to matter, the
|
|
72
|
-
// fix belongs in a follow-up that stops `filePath` from carrying
|
|
73
|
-
// commands at all, not in widening this field's normalization.
|
|
74
|
-
logLatency({
|
|
75
|
-
type: "phase",
|
|
76
|
-
toolName: input.tool,
|
|
77
|
-
phase: "spawn_timeout_cooldown",
|
|
78
|
-
filePath: normalizeLoggedPath(input.command),
|
|
79
|
-
durationMs: input.durationMs ?? 0,
|
|
80
|
-
status: "cooldown_armed",
|
|
81
|
-
metadata: {
|
|
82
|
-
command: input.command,
|
|
83
|
-
wrapperKind: wrapperKindOf(input.command),
|
|
84
|
-
timeoutPhase: input.phase,
|
|
85
|
-
...(input.durationMs !== undefined && {
|
|
86
|
-
timeoutBudgetMs: input.durationMs,
|
|
87
|
-
}),
|
|
88
|
-
...(input.teardown && {
|
|
89
|
-
teardownMs: input.teardown.ms,
|
|
90
|
-
teardownOutcome: input.teardown.outcome,
|
|
91
|
-
}),
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* True while `command` is cooling down after a spawn timeout. Every
|
|
97
|
-
* invocation path for this command should skip WITHOUT spawning and report
|
|
98
|
-
* an honest "not checked" outcome (skipped / 0-fixes), never clean.
|
|
99
|
-
*/
|
|
100
|
-
export function isInSpawnTimeoutCooldown(command) {
|
|
101
|
-
return timedOutByCommand.has(cooldownKey(command));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Session-start re-arm seam (registered in the session-state registry):
|
|
105
|
-
* a new session may retry a command the previous session cooled down -
|
|
106
|
-
* the executable or its environment may have changed.
|
|
107
|
-
*/
|
|
108
|
-
export function resetSpawnTimeoutCooldowns() {
|
|
109
|
-
timedOutByCommand.clear();
|
|
110
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #1622 / #1419 precedent: what a demoted finding shows where its cached line
|
|
3
|
-
* number used to be. The finding survives, the untrustworthy coordinate does
|
|
4
|
-
* not. Shared base marker so every freshness gate (dependency-drift blockers,
|
|
5
|
-
* cached-scanner staleness, #1641's past-EOF gate) renders the same "this
|
|
6
|
-
* coordinate is no longer trustworthy" vocabulary — a caller with a more
|
|
7
|
-
* specific reason appends its own suffix rather than inventing a parallel
|
|
8
|
-
* marker string.
|
|
9
|
-
*
|
|
10
|
-
* #1631 review V2: lives in its own leaf module rather than `runtime-turn.ts`
|
|
11
|
-
* (the turn orchestrator) so a low-level store like `widget-state.ts` can use
|
|
12
|
-
* the marker without importing a high-level orchestration module — `madge
|
|
13
|
-
* --circular` went from 0 to 45 cycles when `widget-state.ts` imported this
|
|
14
|
-
* constant from `runtime-turn.ts`, and this repo ships that circular-import
|
|
15
|
-
* check as a product feature.
|
|
16
|
-
*/
|
|
17
|
-
export const STALE_LINE_MARKER = "[stale — re-run to confirm]";
|