@herbertgao/pi-extensions 2026.10.0 → 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 +16 -12
- package/THIRD_PARTY_NOTICES.md +3 -3
- 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/.opencode/plugins/index.js +4 -0
- package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail-frontmatter.cjs +43 -3
- package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail.mjs +142 -59
- 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 +52 -242
- package/node_modules/@dietrichgebert/ponytail/hooks/claude-codex-hooks.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/hooks/copilot-hooks.json +4 -4
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +70 -16
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-config.js +8 -7
- 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/hooks/ponytail-mode-tracker.js +46 -23
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-runtime.js +39 -7
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-subagent.js +20 -3
- package/node_modules/@dietrichgebert/ponytail/hooks/qoder-hooks.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/package.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/pi-extension/index.js +47 -17
- package/node_modules/@dietrichgebert/ponytail/scripts/uninstall.js +21 -7
- package/node_modules/@dietrichgebert/ponytail/skills/plugin.json +5 -0
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -27
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +21 -18
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +12 -13
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -52
- 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 +4 -4
- 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/node_modules/pi-typesafe/README.md +1 -1
- package/node_modules/pi-typesafe/dist/backends.d.ts +15 -5
- package/node_modules/pi-typesafe/dist/backends.js +18 -0
- package/node_modules/pi-typesafe/dist/client.d.ts +4 -3
- package/node_modules/pi-typesafe/dist/client.js +22 -7
- package/node_modules/pi-typesafe/dist/index.d.ts +2 -2
- package/node_modules/pi-typesafe/dist/index.js +1 -1
- package/node_modules/pi-typesafe/dist/usage.d.ts +14 -4
- package/node_modules/pi-typesafe/dist/usage.js +147 -42
- package/node_modules/pi-typesafe/package.json +1 -1
- package/node_modules/pi-web-access/CHANGELOG.md +48 -0
- package/node_modules/pi-web-access/README.md +57 -11
- package/node_modules/pi-web-access/brave-rate-limit.ts +8 -2
- package/node_modules/pi-web-access/curator-page.ts +5 -1
- package/node_modules/pi-web-access/curator-server.ts +2 -0
- package/node_modules/pi-web-access/declared-web-links.ts +2 -2
- package/node_modules/pi-web-access/degoog.ts +323 -0
- package/node_modules/pi-web-access/dist/index.js +3483 -2745
- package/node_modules/pi-web-access/dist/mcp-cli.js +27443 -0
- package/node_modules/pi-web-access/exa.ts +5 -1
- package/node_modules/pi-web-access/extract.ts +41 -3
- package/node_modules/pi-web-access/firecrawl.ts +35 -4
- package/node_modules/pi-web-access/gemini-search.ts +34 -11
- package/node_modules/pi-web-access/gemini-web.ts +14 -9
- package/node_modules/pi-web-access/index.ts +153 -1202
- package/node_modules/pi-web-access/keenable.ts +221 -0
- package/node_modules/pi-web-access/mcp-cli.ts +40 -0
- package/node_modules/pi-web-access/mcp-server.ts +81 -0
- package/node_modules/pi-web-access/mcp-tool-definitions.ts +117 -0
- package/node_modules/pi-web-access/openai-search.ts +34 -1
- package/node_modules/pi-web-access/package.json +23 -5
- package/node_modules/pi-web-access/perplexity.ts +64 -56
- package/node_modules/pi-web-access/tool-arguments.ts +20 -0
- package/node_modules/pi-web-access/video-extract.ts +1 -1
- package/node_modules/pi-web-access/web-tool-contract.ts +86 -0
- package/node_modules/pi-web-access/web-tool-core.ts +1502 -0
- package/node_modules/pi-web-access/youtube-extract.ts +2 -5
- package/package.json +17 -12
- package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -329
- package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -346
- package/node_modules/@dietrichgebert/ponytail/assets/benchmark-3model.svg +0 -21
- package/node_modules/@dietrichgebert/ponytail/assets/benchmark-agentic.svg +0 -62
- package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.svg +0 -115
- package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt-dark.svg +0 -27
- package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt.svg +0 -27
- package/node_modules/@dietrichgebert/ponytail/assets/logo.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-icon.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-dark.svg +0 -4
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-light.svg +0 -4
- package/node_modules/@dietrichgebert/ponytail/assets/social-preview.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-es.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-ko.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner.png +0 -0
- 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,569 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tree-sitter Query Loader
|
|
3
|
-
*
|
|
4
|
-
* Loads tree-sitter queries from YAML files in rules/tree-sitter-queries/
|
|
5
|
-
* and provides them to the TreeSitterClient.
|
|
6
|
-
*/
|
|
7
|
-
import { logTreeSitterDiagnostic } from "./tree-sitter-logger.js";
|
|
8
|
-
import * as fs from "node:fs";
|
|
9
|
-
import * as path from "node:path";
|
|
10
|
-
import { classifyBundledResourceDir, reportBundledResourceDirHealth, } from "./bundled-resource-health.js";
|
|
11
|
-
import { getDegradationLedgerGeneration, recordDegradationOnce, } from "./degradation-ledger.js";
|
|
12
|
-
import yaml from "./deps/js-yaml.js";
|
|
13
|
-
import { resolvePackagePath } from "./package-root.js";
|
|
14
|
-
/**
|
|
15
|
-
* The bundled `rules/tree-sitter-queries` root — the ONE spelling of this
|
|
16
|
-
* path, imported by `clients/cache/rule-cache.ts` (re-exported there as
|
|
17
|
-
* `BUNDLED_RULES_ROOT`, #2636 review F4) rather than computed a second time,
|
|
18
|
-
* so the "one ledger row, not two" claim for `tree-sitter-queries-dir-missing`
|
|
19
|
-
* rests on reference equality, not merely two independently-resolved strings
|
|
20
|
-
* that happen to match.
|
|
21
|
-
*/
|
|
22
|
-
export const BUNDLED_QUERIES_ROOT = resolvePackagePath(import.meta.url, "rules", "tree-sitter-queries");
|
|
23
|
-
let cachedBundledQueriesRootHealth;
|
|
24
|
-
let cachedBundledQueriesRootHealthGeneration;
|
|
25
|
-
/**
|
|
26
|
-
* #2636 review F6/round-2 F3: memoized, but keyed on the degradation
|
|
27
|
-
* ledger's OWN generation counter (bumped by `resetDegradationLedger`, wired
|
|
28
|
-
* into `handleSessionStart`) rather than "compute once, forever" — round 1's
|
|
29
|
-
* version overclaimed that the underlying fact "cannot change mid-process
|
|
30
|
-
* any more than the package's own install location can", but a managed
|
|
31
|
-
* extension cache RELOCATING a live install mid-process is exactly the
|
|
32
|
-
* failure #2587/#2626 investigated: a permanently-cached "absent" verdict
|
|
33
|
-
* from the FIRST probe would never notice the directory coming back (or
|
|
34
|
-
* disappearing later), the same silent-zero shape this issue exists to end.
|
|
35
|
-
* Re-probing once per SESSION (not once per call) is the right middle
|
|
36
|
-
* ground: a real, measured `readdirSync` cost (4.2 µs) is paid once per
|
|
37
|
-
* session rather than on every dispatched file — same generation-keyed
|
|
38
|
-
* pattern `clients/ast-grep-client.ts`'s `ensureRulesHealthReported` uses
|
|
39
|
-
* for its own per-instance re-check.
|
|
40
|
-
*/
|
|
41
|
-
export function getBundledQueriesRootHealth() {
|
|
42
|
-
const generation = getDegradationLedgerGeneration();
|
|
43
|
-
if (cachedBundledQueriesRootHealth === undefined ||
|
|
44
|
-
cachedBundledQueriesRootHealthGeneration !== generation) {
|
|
45
|
-
cachedBundledQueriesRootHealthGeneration = generation;
|
|
46
|
-
cachedBundledQueriesRootHealth =
|
|
47
|
-
classifyBundledResourceDir(BUNDLED_QUERIES_ROOT);
|
|
48
|
-
}
|
|
49
|
-
return cachedBundledQueriesRootHealth;
|
|
50
|
-
}
|
|
51
|
-
/** Test-only: clear the memo so a scenario can simulate a different install layout. */
|
|
52
|
-
export function _resetBundledQueriesRootHealthForTests() {
|
|
53
|
-
cachedBundledQueriesRootHealth = undefined;
|
|
54
|
-
cachedBundledQueriesRootHealthGeneration = undefined;
|
|
55
|
-
}
|
|
56
|
-
export function isDisabledQueryDirectoryName(name) {
|
|
57
|
-
return name.endsWith("-disabled");
|
|
58
|
-
}
|
|
59
|
-
export function getQueryLanguageKey(directoryName) {
|
|
60
|
-
return isDisabledQueryDirectoryName(directoryName)
|
|
61
|
-
? directoryName.slice(0, -"-disabled".length)
|
|
62
|
-
: directoryName;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Languages that inherit the typescript rule set on top of their own.
|
|
66
|
-
*
|
|
67
|
-
* ONLY `tsx`: verified rule-for-rule identical on the same source parsed under
|
|
68
|
-
* both grammars (console-statement 16/16, ts-path-traversal 277/277, …), which
|
|
69
|
-
* makes sense — tsx IS typescript plus JSX. `javascript` is deliberately NOT
|
|
70
|
-
* here. It looks like it should be, and the merge existed for years, but the
|
|
71
|
-
* queries were compiled against the typescript grammar and run against
|
|
72
|
-
* javascript trees, so they matched nothing and nobody noticed. Compiled
|
|
73
|
-
* correctly they misfire: JS parameters are bare `(identifier)` where
|
|
74
|
-
* typescript has `required_parameter`, so `duplicate-function-arg` alone
|
|
75
|
-
* reports 59 phantom duplicates across 60 files. Re-enabling it needs the
|
|
76
|
-
* typescript rules validated against the javascript grammar first.
|
|
77
|
-
*/
|
|
78
|
-
const TYPESCRIPT_RULE_HEIRS = new Set(["tsx"]);
|
|
79
|
-
/**
|
|
80
|
-
* The rule-source languages whose directories make up the effective rule set
|
|
81
|
-
* for a file parsed as `languageId`. This is the SINGLE SOURCE OF TRUTH for
|
|
82
|
-
* rule-set composition: `queriesForLanguage` (selection) and
|
|
83
|
-
* `ruleFilesForLanguage` (the RuleCache fingerprint, #878) both derive from
|
|
84
|
-
* it, so the cache key can never drift from the rules the runner actually runs.
|
|
85
|
-
*/
|
|
86
|
-
export function ruleSourceLanguages(languageId) {
|
|
87
|
-
return TYPESCRIPT_RULE_HEIRS.has(languageId)
|
|
88
|
-
? [languageId, "typescript"]
|
|
89
|
-
: [languageId];
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Every rule file contributing to the effective rule set for `languageId`,
|
|
93
|
-
* from BOTH the project's own `rules/tree-sitter-queries/` tree and the
|
|
94
|
-
* bundled built-ins, across every rule-source language.
|
|
95
|
-
*
|
|
96
|
-
* The dispatch runner hashes this list into the RuleCache key. Fingerprinting
|
|
97
|
-
* only the language's OWN directory missed inherited rule sets — tsx runs the
|
|
98
|
-
* typescript rules too, so editing a typescript rule never invalidated the tsx
|
|
99
|
-
* cache and stale compiled rules kept firing until the process restarted or a
|
|
100
|
-
* tsx rule happened to change (#878).
|
|
101
|
-
*/
|
|
102
|
-
export function ruleFilesForLanguage(languageId, rootDir = process.cwd()) {
|
|
103
|
-
const resolvedRoot = path.resolve(rootDir);
|
|
104
|
-
const files = new Set();
|
|
105
|
-
for (const lang of ruleSourceLanguages(languageId)) {
|
|
106
|
-
for (const dir of [
|
|
107
|
-
path.join(resolvedRoot, "rules", "tree-sitter-queries", lang),
|
|
108
|
-
path.join(BUNDLED_QUERIES_ROOT, lang),
|
|
109
|
-
]) {
|
|
110
|
-
if (!fs.existsSync(dir))
|
|
111
|
-
continue;
|
|
112
|
-
for (const f of fs.readdirSync(dir)) {
|
|
113
|
-
if (f.endsWith(".yml"))
|
|
114
|
-
files.add(path.join(dir, f));
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// #2636 (review F2): a language resolving zero files here is NORMAL when
|
|
119
|
-
// nobody has authored bundled/project queries for it — seven REACHABLE
|
|
120
|
-
// grammars have none by design: bash, dart, elixir, lua, ocaml, swift, zig
|
|
121
|
-
// (`.sh`/`.bash`, `.dart`, `.ex`/`.exs`, `.lua`, `.ml`/`.mli`, `.swift`,
|
|
122
|
-
// `.zig` — see `language-registry.ts`'s `EXTENSION_TO_GRAMMAR`). cobol and
|
|
123
|
-
// plsql are NOT in that registry at all — only their `-disabled` query
|
|
124
|
-
// directories exist — so `ruleFilesForLanguage` never actually resolves
|
|
125
|
-
// those two languageIds in production; they are not examples of this
|
|
126
|
-
// case. A BUG looks identical from an empty `files` set alone: the
|
|
127
|
-
// bundled root itself relocated out from under the package (same
|
|
128
|
-
// managed-cache-relocation shape #2626 fixed for skills/). Only pay for
|
|
129
|
-
// the extra classification in this COLD branch (never on the common,
|
|
130
|
-
// non-empty path), key it on the shared ROOT rather than this call's
|
|
131
|
-
// `languageId` (every language hitting an actually-missing root collapses
|
|
132
|
-
// into the SAME ledger row instead of one per language), and only RECORD
|
|
133
|
-
// when the root is actually unhealthy — one of the seven by-design-empty
|
|
134
|
-
// languages is touched routinely (any `.sh`/`.lua` edit).
|
|
135
|
-
//
|
|
136
|
-
// #2636 review round 2, F2: NO separate phase/latency row here (unlike
|
|
137
|
-
// the ast-grep/skills sibling sites, which log one PER CONSTRUCTION or
|
|
138
|
-
// PER REQUEST — a bounded cardinality). This branch runs on EVERY
|
|
139
|
-
// dispatched file while the root stays broken (AGENTS.md's "no raw
|
|
140
|
-
// per-occurrence log for repeats"): 200 touches of a by-design-empty
|
|
141
|
-
// language against a broken root would otherwise write 200 raw
|
|
142
|
-
// `latency.log` rows. `reportBundledResourceDirHealth`'s
|
|
143
|
-
// `incrementDegradationCount` already answers "did this run" AND "how
|
|
144
|
-
// many times" in a BOUNDED way — one row per session at count 1, then
|
|
145
|
-
// only at power-of-two milestones (1, 2, 4, 8, … so 200 occurrences write
|
|
146
|
-
// exactly 8 durable rows) — so a second, unbounded record here would add
|
|
147
|
-
// nothing the ledger row lacks.
|
|
148
|
-
if (files.size === 0) {
|
|
149
|
-
const health = getBundledQueriesRootHealth();
|
|
150
|
-
if (health.status !== "healthy") {
|
|
151
|
-
reportBundledResourceDirHealth("tree-sitter-queries-dir-missing", BUNDLED_QUERIES_ROOT, health, "bundled tree-sitter query rules");
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return [...files];
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* The rule set that applies to a file parsed as `languageId`, in a stable order.
|
|
158
|
-
*
|
|
159
|
-
* Excludes `<language>-disabled/` rules. `getQueriesForLanguage` filtered these
|
|
160
|
-
* for the per-edit runner, but the project scanner read the raw loader map and
|
|
161
|
-
* ran them anyway — 1,936 of a scan's 2,590 tree-sitter findings came from
|
|
162
|
-
* rules somebody had explicitly switched off.
|
|
163
|
-
*/
|
|
164
|
-
export function queriesForLanguage(queries, languageId) {
|
|
165
|
-
const enabled = (langId) => (queries.get(langId) ?? []).filter((q) => !isDisabledQueryFilePath(q.filePath));
|
|
166
|
-
return ruleSourceLanguages(languageId).flatMap((langId) => enabled(langId));
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Coerce a parsed YAML scalar to a string, refusing a mapping or array.
|
|
170
|
-
* `String({})`/`String([])` silently produce the literal text
|
|
171
|
-
* `"[object Object]"`/`"a,b"` — SonarCloud typescript:S6551 flagged this at
|
|
172
|
-
* every scalar field in `parseQueryFile` once `parseYaml` widened to
|
|
173
|
-
* `Record<string, unknown>` (#3054 review F2). Returns `undefined` for
|
|
174
|
-
* `null`/`undefined`/a non-scalar so call sites keep using `||`/`??` for
|
|
175
|
-
* defaults exactly as the old `String(x || fallback)` calls did.
|
|
176
|
-
*/
|
|
177
|
-
function str(value) {
|
|
178
|
-
return typeof value === "string" ||
|
|
179
|
-
typeof value === "number" ||
|
|
180
|
-
typeof value === "boolean"
|
|
181
|
-
? String(value)
|
|
182
|
-
: undefined;
|
|
183
|
-
}
|
|
184
|
-
export function isDisabledQueryFilePath(filePath) {
|
|
185
|
-
const normalized = filePath.replaceAll("\\", "/");
|
|
186
|
-
const parts = normalized.split("/").filter(Boolean);
|
|
187
|
-
const parent = parts.length >= 2 ? parts[parts.length - 2] : "";
|
|
188
|
-
return isDisabledQueryDirectoryName(parent);
|
|
189
|
-
}
|
|
190
|
-
export class TreeSitterQueryLoader {
|
|
191
|
-
queries = new Map();
|
|
192
|
-
loaded = false;
|
|
193
|
-
loadedRoot = null;
|
|
194
|
-
verbose;
|
|
195
|
-
/**
|
|
196
|
-
* This root's per-file parse failures, remembered across the memoized
|
|
197
|
-
* (no-`force`) `loadQueries` path so a later session's ledger can carry
|
|
198
|
-
* the same row without re-parsing every file (#3070 N1).
|
|
199
|
-
*/
|
|
200
|
-
parseFailures = new Map();
|
|
201
|
-
/**
|
|
202
|
-
* Generation (`getDegradationLedgerGeneration()`) at which `parseFailures`
|
|
203
|
-
* was last replayed into the ledger — the same generation-keyed memo
|
|
204
|
-
* idiom `getBundledQueriesRootHealth` above uses, applied here so a
|
|
205
|
-
* memoized `loadQueries` return still re-arms `recordDegradationOnce` once
|
|
206
|
-
* per session rather than only in the session that actually parsed.
|
|
207
|
-
*/
|
|
208
|
-
parseFailuresReplayedGeneration;
|
|
209
|
-
constructor(verbose = false) {
|
|
210
|
-
this.verbose = verbose;
|
|
211
|
-
}
|
|
212
|
-
/** Debug logging helper */
|
|
213
|
-
dbg(msg) {
|
|
214
|
-
if (this.verbose) {
|
|
215
|
-
// #1333: verbose gate preserved, sink moved to tree-sitter.log.
|
|
216
|
-
logTreeSitterDiagnostic({
|
|
217
|
-
subsystem: "query-loader",
|
|
218
|
-
level: "debug",
|
|
219
|
-
message: msg,
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* One degradation-ledger record per malformed rule file per session
|
|
225
|
-
* (#3054 review F1). The old hand-rolled scanner tolerated almost any
|
|
226
|
-
* line-level mistake and still produced SOME parsed shape; `yaml.load`
|
|
227
|
-
* correctly throws on realistic authoring mistakes the scanner shrugged
|
|
228
|
-
* off (a colon in an unquoted scalar, a tab in list indentation, a
|
|
229
|
-
* duplicate key, an unclosed quote, a bare `@` value — fuzzed over 800
|
|
230
|
-
* corruptions of one shipped query: 139 that loaded before now skip, 0
|
|
231
|
-
* the other way). Before this, the only sink on that skip path was
|
|
232
|
-
* `dbg()`, gated behind `verbose` — both production instantiations
|
|
233
|
-
* (this file's `queryLoader` singleton and `tree-sitter-client.ts`'s
|
|
234
|
-
* `new TreeSitterQueryLoader()`) construct with the `verbose = false`
|
|
235
|
-
* default — so a silently-dropped custom rule had no surviving signal.
|
|
236
|
-
*/
|
|
237
|
-
recordQueryParseFailure(filePath, reason) {
|
|
238
|
-
this.parseFailures.set(filePath, reason);
|
|
239
|
-
recordDegradationOnce({
|
|
240
|
-
kind: "tree-sitter-query-parse-failed",
|
|
241
|
-
subject: filePath,
|
|
242
|
-
reason,
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Replay every remembered per-file parse failure into the CURRENT
|
|
247
|
-
* session's ledger, at most once per ledger generation (#3070 N1). A
|
|
248
|
-
* memoized `loadQueries` return skips `parseQueryFile` entirely, so
|
|
249
|
-
* without this replay the `tree-sitter-query-parse-failed` record only
|
|
250
|
-
* ever reached the FIRST session that actually parsed — `resetDegradationLedger`
|
|
251
|
-
* (wired into `handleSessionStart`) clears the once-keys every session,
|
|
252
|
-
* but the loader instance and its `parseFailures` memo are kept across
|
|
253
|
-
* sessions (`clients/tree-sitter-shared.ts:39`), the same shape
|
|
254
|
-
* `getBundledQueriesRootHealth` above already re-probes per generation.
|
|
255
|
-
*/
|
|
256
|
-
replayQueryParseFailures() {
|
|
257
|
-
const generation = getDegradationLedgerGeneration();
|
|
258
|
-
if (this.parseFailuresReplayedGeneration === generation)
|
|
259
|
-
return;
|
|
260
|
-
this.parseFailuresReplayedGeneration = generation;
|
|
261
|
-
for (const [filePath, reason] of this.parseFailures) {
|
|
262
|
-
recordDegradationOnce({
|
|
263
|
-
kind: "tree-sitter-query-parse-failed",
|
|
264
|
-
subject: filePath,
|
|
265
|
-
reason,
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Load all queries from the rules/tree-sitter-queries directory.
|
|
271
|
-
*
|
|
272
|
-
* Returns the in-memory memo when the same root was already loaded.
|
|
273
|
-
* `force: true` re-reads from disk even then — the memo has no notion of
|
|
274
|
-
* rule-file mtimes, so a caller that KNOWS the files changed (the dispatch
|
|
275
|
-
* runner's RuleCache-miss path: a miss means the rule-file fingerprint
|
|
276
|
-
* moved) must force, or it gets the pre-edit rules back and persists them
|
|
277
|
-
* under the fresh fingerprint (#878).
|
|
278
|
-
*/
|
|
279
|
-
async loadQueries(rootDir = process.cwd(), options = {}) {
|
|
280
|
-
const resolvedRoot = path.resolve(rootDir);
|
|
281
|
-
if (!options.force && this.loaded && this.loadedRoot === resolvedRoot) {
|
|
282
|
-
this.replayQueryParseFailures();
|
|
283
|
-
return this.queries;
|
|
284
|
-
}
|
|
285
|
-
this.queries.clear();
|
|
286
|
-
this.parseFailures.clear();
|
|
287
|
-
this.loaded = false;
|
|
288
|
-
// Load from user's project rules AND package built-in rules (coexist)
|
|
289
|
-
const queryDirs = [
|
|
290
|
-
...new Set([
|
|
291
|
-
path.join(resolvedRoot, "rules", "tree-sitter-queries"),
|
|
292
|
-
resolvePackagePath(import.meta.url, "rules", "tree-sitter-queries"),
|
|
293
|
-
]),
|
|
294
|
-
];
|
|
295
|
-
for (const queriesDir of queryDirs) {
|
|
296
|
-
if (!fs.existsSync(queriesDir)) {
|
|
297
|
-
this.dbg(`Queries directory not found: ${queriesDir}`);
|
|
298
|
-
continue;
|
|
299
|
-
}
|
|
300
|
-
const languageDirs = fs
|
|
301
|
-
.readdirSync(queriesDir, { withFileTypes: true })
|
|
302
|
-
.filter((d) => d.isDirectory())
|
|
303
|
-
.map((d) => d.name);
|
|
304
|
-
for (const lang of languageDirs) {
|
|
305
|
-
const langDir = path.join(queriesDir, lang);
|
|
306
|
-
const languageKey = getQueryLanguageKey(lang);
|
|
307
|
-
const queryFiles = fs
|
|
308
|
-
.readdirSync(langDir)
|
|
309
|
-
.filter((f) => f.endsWith(".yml"));
|
|
310
|
-
const langQueries = this.queries.get(languageKey) ?? [];
|
|
311
|
-
for (const file of queryFiles) {
|
|
312
|
-
const filePath = path.join(langDir, file);
|
|
313
|
-
const query = this.parseQueryFile(filePath, languageKey);
|
|
314
|
-
if (query) {
|
|
315
|
-
langQueries.push(query);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
if (langQueries.length > 0) {
|
|
319
|
-
this.queries.set(languageKey, langQueries);
|
|
320
|
-
this.dbg(`Loaded ${langQueries.length} queries for ${languageKey}`);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
this.loaded = true;
|
|
325
|
-
this.loadedRoot = resolvedRoot;
|
|
326
|
-
// Every failure hit above was recorded into THIS generation's ledger
|
|
327
|
-
// directly (via recordQueryParseFailure); mark it replayed so a
|
|
328
|
-
// same-generation memoized call right after this one doesn't redo the
|
|
329
|
-
// (harmless but pointless) replay loop.
|
|
330
|
-
this.parseFailuresReplayedGeneration = getDegradationLedgerGeneration();
|
|
331
|
-
return this.queries;
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Parse a single YAML query file
|
|
335
|
-
*/
|
|
336
|
-
parseQueryFile(filePath, language) {
|
|
337
|
-
try {
|
|
338
|
-
const content = fs.readFileSync(filePath, "utf-8");
|
|
339
|
-
const parsed = this.parseYaml(content);
|
|
340
|
-
// #3054 review F2: type-checked, not just truthy. `yaml.load` widened
|
|
341
|
-
// `parsed` to `Record<string, unknown>`, so a mapping- or
|
|
342
|
-
// array-valued `id`/`query` (a plausible authoring slip: forgetting
|
|
343
|
-
// the `|` on `query:` turns the block into a nested mapping) is
|
|
344
|
-
// truthy and used to sail through the old `!parsed.id || !parsed.query`
|
|
345
|
-
// check, then `String(...)` turned it into the literal text
|
|
346
|
-
// `"[object Object]"` — which for `query` reached the Query
|
|
347
|
-
// constructor (SonarCloud typescript:S6551 flagged every such
|
|
348
|
-
// stringification in this function; fixed below via `str()`).
|
|
349
|
-
const id = str(parsed.id);
|
|
350
|
-
const query = typeof parsed.query === "string" ? parsed.query : undefined;
|
|
351
|
-
if (!id || !query) {
|
|
352
|
-
this.dbg(`Invalid query file: ${filePath}`);
|
|
353
|
-
this.recordQueryParseFailure(filePath, !id
|
|
354
|
-
? `'id' is missing or not a scalar (got ${typeof parsed.id})`
|
|
355
|
-
: `'query' is missing or not a string (got ${typeof parsed.query})`);
|
|
356
|
-
return null;
|
|
357
|
-
}
|
|
358
|
-
return {
|
|
359
|
-
id,
|
|
360
|
-
name: str(parsed.name) || id,
|
|
361
|
-
severity: this.parseSeverity(parsed.severity),
|
|
362
|
-
category: str(parsed.category) || "general",
|
|
363
|
-
language: str(parsed.language) || language,
|
|
364
|
-
message: str(parsed.message) || `Pattern: ${id}`,
|
|
365
|
-
description: str(parsed.description) || undefined,
|
|
366
|
-
query,
|
|
367
|
-
metavars: Array.isArray(parsed.metavars)
|
|
368
|
-
? parsed.metavars.map(String)
|
|
369
|
-
: this.extractMetavars(query),
|
|
370
|
-
post_filter: str(parsed.post_filter) || undefined,
|
|
371
|
-
// biome-ignore lint/suspicious/noExplicitAny: Post filter params
|
|
372
|
-
post_filter_params: parsed.post_filter_params,
|
|
373
|
-
defect_class: str(parsed.defect_class) || undefined,
|
|
374
|
-
inline_tier: (str(parsed.inline_tier) || undefined),
|
|
375
|
-
skip_test_files: parsed.skip_test_files === true,
|
|
376
|
-
ignore_paths: Array.isArray(parsed.ignore_paths)
|
|
377
|
-
? parsed.ignore_paths.map(String)
|
|
378
|
-
: undefined,
|
|
379
|
-
// Parse predicates if present
|
|
380
|
-
predicates: Array.isArray(parsed.predicates)
|
|
381
|
-
? parsed.predicates.map((p) => ({
|
|
382
|
-
type: p.type,
|
|
383
|
-
var: p.var,
|
|
384
|
-
value: p.value,
|
|
385
|
-
}))
|
|
386
|
-
: undefined,
|
|
387
|
-
tags: Array.isArray(parsed.tags) ? parsed.tags.map(String) : undefined,
|
|
388
|
-
cwe: Array.isArray(parsed.cwe) ? parsed.cwe.map(String) : undefined,
|
|
389
|
-
owasp: Array.isArray(parsed.owasp)
|
|
390
|
-
? parsed.owasp.map(String)
|
|
391
|
-
: undefined,
|
|
392
|
-
confidence: (str(parsed.confidence) || undefined),
|
|
393
|
-
has_fix: parsed.has_fix === true || parsed.has_fix === "true",
|
|
394
|
-
fix_action: str(parsed.fix_action) || undefined,
|
|
395
|
-
filePath,
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
catch (err) {
|
|
399
|
-
this.dbg(`Failed to parse ${filePath}: ${err}`);
|
|
400
|
-
this.recordQueryParseFailure(filePath, err instanceof Error ? err.message : String(err));
|
|
401
|
-
return null;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Parse a query file's YAML with `js-yaml` — the same real parser
|
|
406
|
-
* `clients/dispatch/runners/yaml-rule-parser.ts` uses for ast-grep rules
|
|
407
|
-
* (#206: a hand-rolled line scanner flattened nested structures there; the
|
|
408
|
-
* hand-rolled scanner this loader carried made the identical mistake,
|
|
409
|
-
* twice over — its inline `[a, b]` array branch unquoted list items but
|
|
410
|
-
* its multi-line `- item` branch did not, so `console-statement.yml`'s
|
|
411
|
-
* quoted `ignore_paths` glob parsed with the quote marks attached and the
|
|
412
|
-
* #965 carve-out never matched a path, #3041/#3046). A genuine syntax
|
|
413
|
-
* error throws, caught by `parseQueryFile`'s `try`/`catch`; a
|
|
414
|
-
* syntactically valid but wrong-shaped document (a bare scalar, a list,
|
|
415
|
-
* `null`) is cast here and skipped by `parseQueryFile`'s `id`/`query`
|
|
416
|
-
* type check below — property access on a non-object primitive never
|
|
417
|
-
* throws in JS, so no separate `typeof parsed !== "object"` guard is
|
|
418
|
-
* needed here (#3054 review F3: that guard was vacuous — deleting it
|
|
419
|
-
* reds nothing, every case it caught was already caught one frame up).
|
|
420
|
-
*/
|
|
421
|
-
parseYaml(content) {
|
|
422
|
-
return yaml.load(content);
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Parse severity string to valid type
|
|
426
|
-
*/
|
|
427
|
-
parseSeverity(value) {
|
|
428
|
-
if (value === "error")
|
|
429
|
-
return "error";
|
|
430
|
-
if (value === "warning")
|
|
431
|
-
return "warning";
|
|
432
|
-
if (value === "info")
|
|
433
|
-
return "info";
|
|
434
|
-
return "warning"; // default
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Extract @VAR patterns from query string
|
|
438
|
-
*/
|
|
439
|
-
extractMetavars(query) {
|
|
440
|
-
const matches = query.match(/@([A-Z_][A-Z0-9_]*)/g);
|
|
441
|
-
if (!matches)
|
|
442
|
-
return [];
|
|
443
|
-
return [...new Set(matches.map((m) => m.slice(1)))];
|
|
444
|
-
}
|
|
445
|
-
/**
|
|
446
|
-
* Get queries for a specific language
|
|
447
|
-
*/
|
|
448
|
-
getQueriesForLanguage(language) {
|
|
449
|
-
const all = this.queries.get(language) || [];
|
|
450
|
-
// Exclude queries from <language>-disabled/ directories.
|
|
451
|
-
// Disabled rules are loaded (needed by tests via getAllQueries)
|
|
452
|
-
// but excluded from production dispatch.
|
|
453
|
-
return all.filter((q) => !isDisabledQueryFilePath(q.filePath));
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Get a specific query by ID
|
|
457
|
-
*/
|
|
458
|
-
getQueryById(id) {
|
|
459
|
-
for (const langQueries of this.queries.values()) {
|
|
460
|
-
const query = langQueries.find((q) => q.id === id);
|
|
461
|
-
if (query)
|
|
462
|
-
return query;
|
|
463
|
-
}
|
|
464
|
-
return undefined;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Find matching query for a pattern string
|
|
468
|
-
*/
|
|
469
|
-
findMatchingQuery(pattern, language) {
|
|
470
|
-
const langQueries = this.getQueriesForLanguage(language);
|
|
471
|
-
// Check for pattern keywords
|
|
472
|
-
for (const query of langQueries) {
|
|
473
|
-
// Match by ID
|
|
474
|
-
if (pattern.includes(query.id))
|
|
475
|
-
return query;
|
|
476
|
-
// Match by keywords in pattern
|
|
477
|
-
switch (query.id) {
|
|
478
|
-
case "empty-catch":
|
|
479
|
-
if (pattern.includes("empty-catch") || pattern.includes("catch {}"))
|
|
480
|
-
return query;
|
|
481
|
-
break;
|
|
482
|
-
case "debugger-statement":
|
|
483
|
-
if (pattern.includes("debugger"))
|
|
484
|
-
return query;
|
|
485
|
-
break;
|
|
486
|
-
case "await-in-loop":
|
|
487
|
-
if (pattern.includes("await-in-loop") || pattern.includes("await"))
|
|
488
|
-
return query;
|
|
489
|
-
break;
|
|
490
|
-
case "hardcoded-secrets":
|
|
491
|
-
if (pattern.includes("hardcoded") ||
|
|
492
|
-
pattern.includes("api_key") ||
|
|
493
|
-
pattern.includes("password"))
|
|
494
|
-
return query;
|
|
495
|
-
break;
|
|
496
|
-
case "dangerously-set-inner-html":
|
|
497
|
-
if (pattern.includes("dangerously") || pattern.includes("innerHTML"))
|
|
498
|
-
return query;
|
|
499
|
-
break;
|
|
500
|
-
case "nested-ternary":
|
|
501
|
-
if (pattern.includes("ternary") || pattern.includes("? :"))
|
|
502
|
-
return query;
|
|
503
|
-
break;
|
|
504
|
-
case "no-eval":
|
|
505
|
-
if (pattern.includes("eval") && !pattern.includes("console"))
|
|
506
|
-
return query;
|
|
507
|
-
break;
|
|
508
|
-
case "deep-promise-chain":
|
|
509
|
-
if (pattern.includes(".then") && pattern.includes(".catch"))
|
|
510
|
-
return query;
|
|
511
|
-
break;
|
|
512
|
-
case "console-statement":
|
|
513
|
-
if (pattern.includes("console") && !pattern.includes("test"))
|
|
514
|
-
return query;
|
|
515
|
-
break;
|
|
516
|
-
case "long-parameter-list":
|
|
517
|
-
if (pattern.includes("PARAMS"))
|
|
518
|
-
return query;
|
|
519
|
-
break;
|
|
520
|
-
// Python queries
|
|
521
|
-
case "bare-except":
|
|
522
|
-
if (pattern.includes("bare-except") || pattern.includes("except:"))
|
|
523
|
-
return query;
|
|
524
|
-
break;
|
|
525
|
-
case "mutable-default-arg":
|
|
526
|
-
if (pattern.includes("mutable") || pattern.includes("default"))
|
|
527
|
-
return query;
|
|
528
|
-
break;
|
|
529
|
-
case "wildcard-import":
|
|
530
|
-
if (pattern.includes("wildcard") || pattern.includes("import *"))
|
|
531
|
-
return query;
|
|
532
|
-
break;
|
|
533
|
-
case "eval-exec":
|
|
534
|
-
if (pattern.includes("eval") || pattern.includes("exec"))
|
|
535
|
-
return query;
|
|
536
|
-
break;
|
|
537
|
-
case "is-vs-equals":
|
|
538
|
-
if (pattern.includes("is") || pattern.includes("equals"))
|
|
539
|
-
return query;
|
|
540
|
-
break;
|
|
541
|
-
case "unreachable-except":
|
|
542
|
-
if (pattern.includes("unreachable") || pattern.includes("except"))
|
|
543
|
-
return query;
|
|
544
|
-
break;
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
return undefined;
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* Get all loaded queries
|
|
551
|
-
*/
|
|
552
|
-
getAllQueries() {
|
|
553
|
-
const all = [];
|
|
554
|
-
for (const queries of this.queries.values()) {
|
|
555
|
-
all.push(...queries);
|
|
556
|
-
}
|
|
557
|
-
return all;
|
|
558
|
-
}
|
|
559
|
-
/**
|
|
560
|
-
* Reload queries from disk
|
|
561
|
-
*/
|
|
562
|
-
async reload() {
|
|
563
|
-
this.queries.clear();
|
|
564
|
-
this.loaded = false;
|
|
565
|
-
await this.loadQueries();
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
// Singleton instance
|
|
569
|
-
export const queryLoader = new TreeSitterQueryLoader();
|