@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
package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { parseSymbolKey, } from "../../call-graph.js";
|
|
3
|
-
import { isTestRoleCollateral } from "../../collateral-test-role.js";
|
|
4
|
-
function resolveImpactFile(cwd, filePath) {
|
|
5
|
-
return path.isAbsolute(filePath) ? filePath : path.resolve(cwd, filePath);
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* #883 single-source-of-truth: reuses `parseSymbolKey` (`call-graph.ts`)
|
|
9
|
-
* rather than re-implementing symbol-key parsing here. Note this is stricter
|
|
10
|
-
* than `formatImpact`'s inline `.split(":").pop()`: `parseSymbolKey` splits at
|
|
11
|
-
* the LAST colon (drive-letter-safe on Windows) and understands the `file:`
|
|
12
|
-
* module-level fallback shape, neither of which the `formatImpact` shortcut
|
|
13
|
-
* handles — so this is the canonical parser, not merely a shared copy of it.
|
|
14
|
-
*/
|
|
15
|
-
function displayName(key) {
|
|
16
|
-
return parseSymbolKey(key).symbolName ?? key;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Severity mapping (#533 honesty): `impact()`'s BFS depth is a *heuristic*
|
|
20
|
-
* name-resolution signal, not a verified break — it has no type information,
|
|
21
|
-
* so an edited symbol's direct caller ("WillBreak") is NOT guaranteed to
|
|
22
|
-
* actually break; the edit could be behavior-preserving (a doc fix, an
|
|
23
|
-
* internal-only change). Escalating that to `semantic:"blocking"` (this
|
|
24
|
-
* codebase's hard-stop tier — see `widget-state.ts`'s `isBlocking`) would be
|
|
25
|
-
* exactly the over-confident false-block #533 exists to prevent, so NEITHER
|
|
26
|
-
* tier reaches "blocking" here — both are advisory, differentiated only by
|
|
27
|
-
* how strongly the agent should double-check:
|
|
28
|
-
* - WillBreak (depth 1, direct caller) → severity "warning" — a real,
|
|
29
|
-
* resolved cross-file call site into code that just changed; worth an
|
|
30
|
-
* active nudge to verify the call site still matches.
|
|
31
|
-
* - MayBreak (depth 2, one hop removed) → severity "info" — indirect,
|
|
32
|
-
* softer signal, purely a "you might want to check this" note.
|
|
33
|
-
* `Review` (depth 3+, `impact()`'s own catch-all transitive tier) is
|
|
34
|
-
* deliberately NOT emitted as individual diagnostics: `formatImpact` itself
|
|
35
|
-
* only ever surfaces it as a bare count ("3 Review callers"), never
|
|
36
|
-
* itemized, because at that BFS depth the fan-out is large and the signal is
|
|
37
|
-
* too diluted to attribute to specific callers without drowning the more
|
|
38
|
-
* actionable WillBreak/MayBreak findings.
|
|
39
|
-
*/
|
|
40
|
-
function severityFor(severity) {
|
|
41
|
-
if (severity === "WillBreak") {
|
|
42
|
-
return {
|
|
43
|
-
severity: "warning",
|
|
44
|
-
message: "Direct caller of a symbol edited this turn — verify this call site still matches its new signature/behavior.",
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
if (severity === "MayBreak") {
|
|
48
|
-
return {
|
|
49
|
-
severity: "info",
|
|
50
|
-
message: "Indirect caller (one hop) of a symbol edited this turn — worth a quick check.",
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Maps call-graph impact findings — WillBreak/MayBreak callers of symbols
|
|
57
|
-
* edited this turn (`impact()`, `clients/call-graph.ts`) — into structured
|
|
58
|
-
* `ProjectDiagnostic`s, attributed to the CALLER's file (the thing that might
|
|
59
|
-
* need updating), one per affected caller symbol.
|
|
60
|
-
*
|
|
61
|
-
* No line number is set: `impact()`'s `ImpactResult` carries only a
|
|
62
|
-
* `symbolKey` (file + symbol name), never a line — the underlying call-graph
|
|
63
|
-
* symbol table itself only ever has a placeholder `line: 1` for graph-derived
|
|
64
|
-
* symbols (`review-graph/builder.ts`'s `extractSymbolsAndRefsFromGraph`), so
|
|
65
|
-
* inventing a line here would be a fake `L1`, not a real one. `line` is
|
|
66
|
-
* left `undefined` (honest omission) rather than reporting a location that
|
|
67
|
-
* doesn't correspond to anything real (#533).
|
|
68
|
-
*/
|
|
69
|
-
/** Higher rank = surfaced preferentially when the same caller is deduped. */
|
|
70
|
-
const SEVERITY_RANK = {
|
|
71
|
-
error: 3,
|
|
72
|
-
warning: 2,
|
|
73
|
-
info: 1,
|
|
74
|
-
hint: 0,
|
|
75
|
-
};
|
|
76
|
-
export function callGraphImpactToProjectDiagnostics(cwd, findings) {
|
|
77
|
-
// Dedupe: the same caller can be reached via more than one edited symbol
|
|
78
|
-
// in a turn (multiple callees in the same edited file). Keyed by
|
|
79
|
-
// resolved-file + caller symbolKey, keeping the highest-severity hit.
|
|
80
|
-
const byKey = new Map();
|
|
81
|
-
for (const { calleeKey, results } of findings) {
|
|
82
|
-
const calleeName = displayName(calleeKey);
|
|
83
|
-
for (const result of results) {
|
|
84
|
-
const mapped = severityFor(result.severity);
|
|
85
|
-
if (!mapped)
|
|
86
|
-
continue; // Review tier — see severityFor's doc comment.
|
|
87
|
-
const { filePath } = parseSymbolKey(result.symbolKey);
|
|
88
|
-
if (!filePath)
|
|
89
|
-
continue; // Nothing real to attribute this to.
|
|
90
|
-
const resolvedFile = resolveImpactFile(cwd, filePath);
|
|
91
|
-
// #1080: the call graph is derived from the tests-free review graph and is
|
|
92
|
-
// normally tests-free, but this adapter accepts arbitrary caller
|
|
93
|
-
// symbol keys — an old/fixture/expanded graph could supply a test-file
|
|
94
|
-
// caller. A KNOWN test-role caller must not be persisted as collateral
|
|
95
|
-
// call-graph impact. Fail-open: a classifier error retains the finding.
|
|
96
|
-
if (isTestRoleCollateral(resolvedFile))
|
|
97
|
-
continue;
|
|
98
|
-
const dedupeKey = `${resolvedFile}:${result.symbolKey}`;
|
|
99
|
-
const existing = byKey.get(dedupeKey);
|
|
100
|
-
if (existing &&
|
|
101
|
-
SEVERITY_RANK[existing.severity] >= SEVERITY_RANK[mapped.severity]) {
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
const callerName = displayName(result.symbolKey);
|
|
105
|
-
byKey.set(dedupeKey, {
|
|
106
|
-
filePath: resolvedFile,
|
|
107
|
-
severity: mapped.severity,
|
|
108
|
-
semantic: "warning",
|
|
109
|
-
tool: "call-graph",
|
|
110
|
-
runner: "call-graph",
|
|
111
|
-
rule: `call-graph:${result.severity.toLowerCase()}`,
|
|
112
|
-
message: `${mapped.message} (${callerName} calls edited symbol '${calleeName}')`,
|
|
113
|
-
source: "project-scan",
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return [...byKey.values()];
|
|
118
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
function deadCodeRunnerId(language) {
|
|
3
|
-
return `dead-code-${language}`;
|
|
4
|
-
}
|
|
5
|
-
function deadCodeMessage(issue) {
|
|
6
|
-
if (issue.category === "unlisted")
|
|
7
|
-
return `Unlisted dependency ${issue.name}`;
|
|
8
|
-
if (issue.category === "dependency")
|
|
9
|
-
return `Unused dependency ${issue.name}`;
|
|
10
|
-
if (issue.category === "file")
|
|
11
|
-
return `Unused file ${issue.name}`;
|
|
12
|
-
return `Unused ${issue.kind} ${issue.name}`;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* A dead-code issue (the non-JS/TS analogue of knip — e.g. Python via vulture)
|
|
16
|
-
* at a concrete `file:line`. An *unlisted* dependency is blocking (a real
|
|
17
|
-
* import gap), matching knip; everything else is an advisory warning.
|
|
18
|
-
*/
|
|
19
|
-
export function deadCodeIssueToProjectDiagnostic(cwd, issue, language) {
|
|
20
|
-
const blocking = issue.category === "unlisted";
|
|
21
|
-
return {
|
|
22
|
-
filePath: issue.file
|
|
23
|
-
? path.isAbsolute(issue.file)
|
|
24
|
-
? issue.file
|
|
25
|
-
: path.resolve(cwd, issue.file)
|
|
26
|
-
: cwd,
|
|
27
|
-
line: issue.line,
|
|
28
|
-
severity: blocking ? "error" : "warning",
|
|
29
|
-
semantic: blocking ? "blocking" : "warning",
|
|
30
|
-
tool: "dead-code",
|
|
31
|
-
runner: deadCodeRunnerId(language),
|
|
32
|
-
rule: `dead-code:${issue.category}`,
|
|
33
|
-
message: deadCodeMessage(issue),
|
|
34
|
-
source: "project-scan",
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export function deadCodeResultToProjectDiagnostics(cwd, result) {
|
|
38
|
-
if (!result.success)
|
|
39
|
-
return [];
|
|
40
|
-
const issues = [
|
|
41
|
-
...result.unusedExports,
|
|
42
|
-
...result.unusedFiles,
|
|
43
|
-
...result.unusedDeps,
|
|
44
|
-
...result.unlistedDeps,
|
|
45
|
-
];
|
|
46
|
-
return issues.map((issue) => deadCodeIssueToProjectDiagnostic(cwd, issue, result.language));
|
|
47
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
/**
|
|
3
|
-
* A gitleaks finding is a leaked secret at a concrete `file:startLine`. Secrets
|
|
4
|
-
* are treated as **blocking** — a committed credential is not a style nit.
|
|
5
|
-
*
|
|
6
|
-
* Findings in scratch trees, gitignored files, and nested repositories are
|
|
7
|
-
* retained for explicit audit but demoted to `severity: "info"` / `semantic:
|
|
8
|
-
* "none"`. They are outside the current repository's shippable source, so they
|
|
9
|
-
* must never read as blocking leaked-secret alarms. Tracked files and ordinary
|
|
10
|
-
* untracked files remain blocking.
|
|
11
|
-
*/
|
|
12
|
-
export function gitleaksFindingToProjectDiagnostic(cwd, finding) {
|
|
13
|
-
// #1562 observability criterion: surface the git status right in the
|
|
14
|
-
// finding's message so a triage is a read, not a re-derivation. Omitted
|
|
15
|
-
// when git itself degraded (`pathStatus` undefined) rather than guessed.
|
|
16
|
-
const statusSuffix = finding.pathStatus
|
|
17
|
-
? ` [git: ${finding.pathStatus}]`
|
|
18
|
-
: "";
|
|
19
|
-
const isBlocking = finding.pathStatus !== "scratch" &&
|
|
20
|
-
finding.pathStatus !== "ignored" &&
|
|
21
|
-
finding.pathStatus !== "nested-repository";
|
|
22
|
-
return {
|
|
23
|
-
filePath: path.isAbsolute(finding.file)
|
|
24
|
-
? finding.file
|
|
25
|
-
: path.resolve(cwd, finding.file),
|
|
26
|
-
line: finding.startLine,
|
|
27
|
-
severity: isBlocking ? "error" : "info",
|
|
28
|
-
semantic: isBlocking ? "blocking" : "none",
|
|
29
|
-
tool: "gitleaks",
|
|
30
|
-
runner: "gitleaks",
|
|
31
|
-
rule: `gitleaks:${finding.ruleId}`,
|
|
32
|
-
message: `Potential secret: ${finding.description || finding.ruleId}${statusSuffix}`,
|
|
33
|
-
source: "project-scan",
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export function gitleaksResultToProjectDiagnostics(cwd, result) {
|
|
37
|
-
if (!result.success || result.findings.length === 0)
|
|
38
|
-
return [];
|
|
39
|
-
return result.findings.map((finding) => gitleaksFindingToProjectDiagnostic(cwd, finding));
|
|
40
|
-
}
|
package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
/**
|
|
3
|
-
* A govulncheck finding is a vulnerable dependency *reachable* from the code via
|
|
4
|
-
* a call trace. Anchor the diagnostic at the first trace frame that has a source
|
|
5
|
-
* position (the reachable call site in the project), falling back to the project
|
|
6
|
-
* root when the trace carries no file. Advisory (warning) — a reachable CVE is
|
|
7
|
-
* worth surfacing but is not a code-blocking error.
|
|
8
|
-
*/
|
|
9
|
-
export function govulncheckFindingToProjectDiagnostic(cwd, finding) {
|
|
10
|
-
const frame = finding.trace?.find((f) => f.filename);
|
|
11
|
-
const filePath = frame?.filename
|
|
12
|
-
? path.isAbsolute(frame.filename)
|
|
13
|
-
? frame.filename
|
|
14
|
-
: path.resolve(cwd, frame.filename)
|
|
15
|
-
: cwd;
|
|
16
|
-
const fix = finding.fixedVersion ? ` (fixed in ${finding.fixedVersion})` : "";
|
|
17
|
-
return {
|
|
18
|
-
filePath,
|
|
19
|
-
line: frame?.line,
|
|
20
|
-
severity: "warning",
|
|
21
|
-
semantic: "warning",
|
|
22
|
-
tool: "govulncheck",
|
|
23
|
-
runner: "govulncheck",
|
|
24
|
-
rule: `govulncheck:${finding.osv}`,
|
|
25
|
-
code: finding.packageName ?? finding.module,
|
|
26
|
-
message: `Vulnerability ${finding.osv}: ${finding.summary ?? "reachable vulnerable dependency"}${fix}`,
|
|
27
|
-
source: "project-scan",
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export function govulncheckResultToProjectDiagnostics(cwd, result) {
|
|
31
|
-
if (!result.success || result.findings.length === 0)
|
|
32
|
-
return [];
|
|
33
|
-
return result.findings.map((finding) => govulncheckFindingToProjectDiagnostic(cwd, finding));
|
|
34
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
function resolveClonePath(cwd, file) {
|
|
3
|
-
return path.isAbsolute(file) ? file : path.resolve(cwd, file);
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* A jscpd clone is a *relationship* between two spans (`fileA:startA` ↔
|
|
7
|
-
* `fileB:startB`), unlike a single-point knip finding. Emit a diagnostic on
|
|
8
|
-
* BOTH ends so the duplication surfaces on whichever file the agent is looking
|
|
9
|
-
* at, each one naming the other end.
|
|
10
|
-
*/
|
|
11
|
-
function jscpdCloneToProjectDiagnostics(cwd, clone) {
|
|
12
|
-
const a = resolveClonePath(cwd, clone.fileA);
|
|
13
|
-
const b = resolveClonePath(cwd, clone.fileB);
|
|
14
|
-
const make = (filePath, line, otherFile, otherLine) => ({
|
|
15
|
-
filePath,
|
|
16
|
-
line,
|
|
17
|
-
severity: "warning",
|
|
18
|
-
semantic: "warning",
|
|
19
|
-
tool: "jscpd",
|
|
20
|
-
runner: "jscpd",
|
|
21
|
-
rule: "jscpd:duplicate",
|
|
22
|
-
message: `Duplicate code (${clone.lines} lines) — also at ${path.relative(cwd, otherFile)}:${otherLine}`,
|
|
23
|
-
source: "project-scan",
|
|
24
|
-
});
|
|
25
|
-
return [
|
|
26
|
-
make(a, clone.startA, b, clone.startB),
|
|
27
|
-
make(b, clone.startB, a, clone.startA),
|
|
28
|
-
];
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Map a whole jscpd scan into per-file `ProjectDiagnostic`s (two per clone).
|
|
32
|
-
* Empty when the scan failed or found no duplication.
|
|
33
|
-
*/
|
|
34
|
-
export function jscpdResultToProjectDiagnostics(cwd, result) {
|
|
35
|
-
if (!result.success || result.clones.length === 0)
|
|
36
|
-
return [];
|
|
37
|
-
return result.clones.flatMap((clone) => jscpdCloneToProjectDiagnostics(cwd, clone));
|
|
38
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
function knipIssueFile(cwd, issue) {
|
|
3
|
-
if (!issue.file)
|
|
4
|
-
return cwd;
|
|
5
|
-
return path.isAbsolute(issue.file)
|
|
6
|
-
? issue.file
|
|
7
|
-
: path.resolve(cwd, issue.file);
|
|
8
|
-
}
|
|
9
|
-
function knipIssueMessage(issue) {
|
|
10
|
-
if (issue.type === "unlisted") {
|
|
11
|
-
return `Unlisted dependency ${issue.name}`;
|
|
12
|
-
}
|
|
13
|
-
if (issue.type === "bin") {
|
|
14
|
-
return `Unlisted binary ${issue.name}`;
|
|
15
|
-
}
|
|
16
|
-
if (issue.type === "export") {
|
|
17
|
-
return `Unused export ${issue.name}`;
|
|
18
|
-
}
|
|
19
|
-
if (issue.type === "enumMember") {
|
|
20
|
-
return `Unused enum member ${issue.name}`;
|
|
21
|
-
}
|
|
22
|
-
if (issue.type === "file") {
|
|
23
|
-
return `Unused file ${issue.name}`;
|
|
24
|
-
}
|
|
25
|
-
if (issue.type === "dependency" || issue.type === "devDependency") {
|
|
26
|
-
return `Unused ${issue.type} ${issue.name}`;
|
|
27
|
-
}
|
|
28
|
-
return `${issue.type}: ${issue.name}`;
|
|
29
|
-
}
|
|
30
|
-
function knipIssueToProjectDiagnostic(cwd, issue) {
|
|
31
|
-
const blocking = issue.type === "unlisted" || issue.type === "bin";
|
|
32
|
-
return {
|
|
33
|
-
filePath: knipIssueFile(cwd, issue),
|
|
34
|
-
line: issue.line,
|
|
35
|
-
severity: blocking ? "error" : "warning",
|
|
36
|
-
semantic: blocking ? "blocking" : "warning",
|
|
37
|
-
tool: "knip",
|
|
38
|
-
runner: "knip",
|
|
39
|
-
rule: `knip:${issue.type}`,
|
|
40
|
-
code: issue.package,
|
|
41
|
-
message: knipIssueMessage(issue),
|
|
42
|
-
source: "project-scan",
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export function knipIssuesToProjectDiagnostics(cwd, issues) {
|
|
46
|
-
return issues.map((issue) => knipIssueToProjectDiagnostic(cwd, issue));
|
|
47
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { compareOrdinal } from "../../string-utils.js";
|
|
3
|
-
function resolveCyclePath(cwd, file) {
|
|
4
|
-
return path.isAbsolute(file) ? file : path.resolve(cwd, file);
|
|
5
|
-
}
|
|
6
|
-
/** The files making up a cycle: prefer the full `path`, fall back to `file`. */
|
|
7
|
-
function cycleMembers(dep) {
|
|
8
|
-
return dep.path.length > 0 ? dep.path : [dep.file];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A madge circular dependency is a *set* of files (`a → b → c → a`), unlike a
|
|
12
|
-
* single-point knip finding. Emit a diagnostic on EACH file in the cycle so it
|
|
13
|
-
* surfaces wherever the agent is looking, each one rendering the whole cycle.
|
|
14
|
-
*/
|
|
15
|
-
function circularDepToProjectDiagnostics(cwd, dep) {
|
|
16
|
-
const members = cycleMembers(dep);
|
|
17
|
-
const rendered = `${members.map((f) => path.basename(f)).join(" → ")} → ${path.basename(members[0] ?? "")}`;
|
|
18
|
-
return members.map((file) => ({
|
|
19
|
-
filePath: resolveCyclePath(cwd, file),
|
|
20
|
-
severity: "warning",
|
|
21
|
-
semantic: "warning",
|
|
22
|
-
tool: "madge",
|
|
23
|
-
runner: "madge",
|
|
24
|
-
rule: "madge:circular",
|
|
25
|
-
message: `Part of circular dependency: ${rendered}`,
|
|
26
|
-
source: "project-scan",
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Map madge's circular-dependency findings into per-file `ProjectDiagnostic`s.
|
|
31
|
-
* Deduplicates cycles reported from different anchor files (same member set), so
|
|
32
|
-
* a cycle is emitted once per participating file, not once per anchor.
|
|
33
|
-
*/
|
|
34
|
-
export function circularDepsToProjectDiagnostics(cwd, circular) {
|
|
35
|
-
const seen = new Set();
|
|
36
|
-
const out = [];
|
|
37
|
-
for (const dep of circular) {
|
|
38
|
-
const key = cycleMembers(dep)
|
|
39
|
-
.map((f) => resolveCyclePath(cwd, f))
|
|
40
|
-
.sort(compareOrdinal)
|
|
41
|
-
.join("|");
|
|
42
|
-
if (seen.has(key))
|
|
43
|
-
continue;
|
|
44
|
-
seen.add(key);
|
|
45
|
-
out.push(...circularDepToProjectDiagnostics(cwd, dep));
|
|
46
|
-
}
|
|
47
|
-
return out;
|
|
48
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
/**
|
|
3
|
-
* opengrep's `extra.severity` is semgrep-compatible: `ERROR` / `WARNING` /
|
|
4
|
-
* `INFO` (verified against the real installed 1.25.0 binary's `--json`
|
|
5
|
-
* output). `ERROR` is treated as blocking — the same convention gitleaks
|
|
6
|
-
* secrets and knip's "unlisted dependency" findings use.
|
|
7
|
-
*/
|
|
8
|
-
function severityFor(raw) {
|
|
9
|
-
switch (raw.toUpperCase()) {
|
|
10
|
-
case "ERROR":
|
|
11
|
-
return { severity: "error", blocking: true };
|
|
12
|
-
case "INFO":
|
|
13
|
-
return { severity: "info", blocking: false };
|
|
14
|
-
default:
|
|
15
|
-
return { severity: "warning", blocking: false };
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function opengrepFindingToProjectDiagnostic(cwd, finding) {
|
|
19
|
-
const { severity, blocking } = severityFor(finding.severity);
|
|
20
|
-
const cweSuffix = finding.cwe?.length ? ` (${finding.cwe[0]})` : "";
|
|
21
|
-
return {
|
|
22
|
-
filePath: path.isAbsolute(finding.path)
|
|
23
|
-
? finding.path
|
|
24
|
-
: path.resolve(cwd, finding.path),
|
|
25
|
-
line: finding.startLine,
|
|
26
|
-
column: finding.startCol,
|
|
27
|
-
severity,
|
|
28
|
-
semantic: blocking ? "blocking" : "warning",
|
|
29
|
-
tool: "opengrep",
|
|
30
|
-
runner: "opengrep",
|
|
31
|
-
rule: `opengrep:${finding.checkId}`,
|
|
32
|
-
message: `${finding.message}${cweSuffix}`,
|
|
33
|
-
source: "project-scan",
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export function opengrepResultToProjectDiagnostics(cwd, result) {
|
|
37
|
-
if (!result.success || result.findings.length === 0)
|
|
38
|
-
return [];
|
|
39
|
-
return result.findings.map((finding) => opengrepFindingToProjectDiagnostic(cwd, finding));
|
|
40
|
-
}
|
package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { isRunnerErrorResult, } from "../../test-runner-client.js";
|
|
2
|
-
import * as fs from "node:fs";
|
|
3
|
-
import * as path from "node:path";
|
|
4
|
-
import { advisoryPathKey, validateAdvisoryProvenance, } from "../../advisory-provenance.js";
|
|
5
|
-
function failureMessage(failure) {
|
|
6
|
-
const firstLine = failure.message.split("\n")[0]?.slice(0, 300) ?? "";
|
|
7
|
-
return firstLine ? `${failure.name}: ${firstLine}` : failure.name;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* `TestFailure.location` (`test-runner-client.ts`) is a free-form string that
|
|
11
|
-
* varies by parser: the vitest/jest JSON parser emits a real `"relPath:line"`
|
|
12
|
-
* (line only — its own `test.location.column` is dropped before it reaches
|
|
13
|
-
* this string, so column is never available from that source either), while
|
|
14
|
-
* the pytest text parser abuses the same field for `"file:testName"` (no
|
|
15
|
-
* digits) and the mix/ExUnit parser puts a bare module name in it (no colon
|
|
16
|
-
* at all). Only pull a `line`/`column` out when the trailing segment(s) are
|
|
17
|
-
* actually numeric, so pytest/mix locations are left alone (no line, same as
|
|
18
|
-
* before this change) instead of misparsing part of a name as a line number.
|
|
19
|
-
*/
|
|
20
|
-
const LOCATION_LINE_COL_RE = /:(\d+)(?::(\d+))?$/;
|
|
21
|
-
function parseLocation(location) {
|
|
22
|
-
if (!location)
|
|
23
|
-
return {};
|
|
24
|
-
const match = LOCATION_LINE_COL_RE.exec(location);
|
|
25
|
-
if (!match)
|
|
26
|
-
return {};
|
|
27
|
-
return {
|
|
28
|
-
line: Number.parseInt(match[1], 10),
|
|
29
|
-
...(match[2] ? { column: Number.parseInt(match[2], 10) } : {}),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* One diagnostic per test failure, attributed to the test file that reported
|
|
34
|
-
* it (not the source file the agent edited — that's `sourceFile` on
|
|
35
|
-
* `TestResult`, but the failure itself lives in the test file). A result with
|
|
36
|
-
* no individual failures listed (a parser that couldn't extract them, or a
|
|
37
|
-
* runner error) still gets one diagnostic so the file isn't silently blank.
|
|
38
|
-
*
|
|
39
|
-
* `stale` (from the cache's own `stale` flag, set at turn_end when the turn
|
|
40
|
-
* advanced before the test run finished — `runtime-turn.ts`) is surfaced as a
|
|
41
|
-
* message prefix, mirroring the one-shot turn-context-injection message's own
|
|
42
|
-
* stale wording (`consumeTestFindings`'s cached `content`) — a mode=full
|
|
43
|
-
* caller deserves the same "this may already be superseded" honesty the
|
|
44
|
-
* per-edit path already gives.
|
|
45
|
-
*/
|
|
46
|
-
function testResultToProjectDiagnostics(result, stale = false) {
|
|
47
|
-
if (result.failed === 0 && !result.error)
|
|
48
|
-
return [];
|
|
49
|
-
const stalePrefix = stale ? "[stale — from a prior turn] " : "";
|
|
50
|
-
if (result.failures.length > 0) {
|
|
51
|
-
return result.failures.map((failure) => ({
|
|
52
|
-
filePath: result.file,
|
|
53
|
-
...parseLocation(failure.location),
|
|
54
|
-
severity: "error",
|
|
55
|
-
semantic: "blocking",
|
|
56
|
-
tool: "test-runner",
|
|
57
|
-
runner: result.runner,
|
|
58
|
-
rule: `test:${result.runner}`,
|
|
59
|
-
message: `${stalePrefix}${failureMessage(failure)}`,
|
|
60
|
-
source: "project-scan",
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
// #2532: a RUNNER error (timeout, missing provider/binary, a config
|
|
64
|
-
// failure — the suite itself never produced a verdict) is not a finding
|
|
65
|
-
// the agent introduced, exactly like the turn-end delivery framing
|
|
66
|
-
// (#2522) already treats it. `isRunnerErrorResult` is the single seam
|
|
67
|
-
// both surfaces read so the identical `TestResult` cannot classify
|
|
68
|
-
// differently here than it does in the turn-end message.
|
|
69
|
-
if (isRunnerErrorResult(result)) {
|
|
70
|
-
return [
|
|
71
|
-
{
|
|
72
|
-
filePath: result.file,
|
|
73
|
-
severity: "info",
|
|
74
|
-
semantic: "none",
|
|
75
|
-
tool: "test-runner",
|
|
76
|
-
runner: result.runner,
|
|
77
|
-
rule: `test:${result.runner}`,
|
|
78
|
-
message: `${stalePrefix}Test run error: ${result.error}`,
|
|
79
|
-
source: "project-scan",
|
|
80
|
-
},
|
|
81
|
-
];
|
|
82
|
-
}
|
|
83
|
-
// #2532 review S3: a counted failure stays blocking even when `error` is
|
|
84
|
-
// ALSO set (pytest exit 2 "Interrupted" after `2 failed, 1 passed` — see
|
|
85
|
-
// `isRunnerErrorResult`'s doc). The pre-fix message mentioned `error`
|
|
86
|
-
// here via a ternary this PR's first version dropped; restored so the
|
|
87
|
-
// interruption is not silently lost from a still-blocking finding.
|
|
88
|
-
return [
|
|
89
|
-
{
|
|
90
|
-
filePath: result.file,
|
|
91
|
-
severity: "error",
|
|
92
|
-
semantic: "blocking",
|
|
93
|
-
tool: "test-runner",
|
|
94
|
-
runner: result.runner,
|
|
95
|
-
rule: `test:${result.runner}`,
|
|
96
|
-
message: `${stalePrefix}${result.failed} test(s) failed${result.error ? ` (runner also reported: ${result.error})` : ""}`,
|
|
97
|
-
source: "project-scan",
|
|
98
|
-
},
|
|
99
|
-
];
|
|
100
|
-
}
|
|
101
|
-
export function testRunnerFindingsToProjectDiagnostics(cache, cwd, runtime) {
|
|
102
|
-
if (!cache.results || cache.results.length === 0)
|
|
103
|
-
return [];
|
|
104
|
-
const validation = cwd
|
|
105
|
-
? validateAdvisoryProvenance(cache, cwd, runtime)
|
|
106
|
-
: { status: "unknown", reasons: ["validation-context-missing"] };
|
|
107
|
-
const root = cwd ?? process.cwd();
|
|
108
|
-
const missingKeys = new Set((cache.provenance?.files ?? [])
|
|
109
|
-
.filter((file) => !fs.existsSync(path.resolve(root, file.path)))
|
|
110
|
-
.map((file) => advisoryPathKey(file.path, root)));
|
|
111
|
-
const historical = cache.superseded === true ||
|
|
112
|
-
cache.stale === true ||
|
|
113
|
-
validation.status !== "current";
|
|
114
|
-
return cache.results
|
|
115
|
-
.filter((result) => !missingKeys.has(advisoryPathKey(result.file, root)))
|
|
116
|
-
.flatMap((result) => testResultToProjectDiagnostics(result, historical))
|
|
117
|
-
.map((diagnostic) => historical
|
|
118
|
-
? {
|
|
119
|
-
...diagnostic,
|
|
120
|
-
severity: "info",
|
|
121
|
-
semantic: "none",
|
|
122
|
-
message: diagnostic.message.startsWith("[stale")
|
|
123
|
-
? diagnostic.message
|
|
124
|
-
: `[historical — re-run to confirm] ${diagnostic.message}`,
|
|
125
|
-
}
|
|
126
|
-
: diagnostic);
|
|
127
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
/**
|
|
3
|
-
* A trivy finding is a CVE in a dependency — a *dependency-level* finding, not a
|
|
4
|
-
* source location. Anchor it at the manifest/lockfile it was found in (`target`),
|
|
5
|
-
* with no line. Advisory (warning); the CVE severity is carried in the message.
|
|
6
|
-
*/
|
|
7
|
-
export function trivyFindingToProjectDiagnostic(cwd, finding) {
|
|
8
|
-
const filePath = finding.target
|
|
9
|
-
? path.isAbsolute(finding.target)
|
|
10
|
-
? finding.target
|
|
11
|
-
: path.resolve(cwd, finding.target)
|
|
12
|
-
: cwd;
|
|
13
|
-
const version = finding.installedVersion
|
|
14
|
-
? `@${finding.installedVersion}`
|
|
15
|
-
: "";
|
|
16
|
-
const fix = finding.fixedVersion ? ` (fixed in ${finding.fixedVersion})` : "";
|
|
17
|
-
return {
|
|
18
|
-
filePath,
|
|
19
|
-
severity: "warning",
|
|
20
|
-
semantic: "warning",
|
|
21
|
-
tool: "trivy",
|
|
22
|
-
runner: "trivy",
|
|
23
|
-
rule: `trivy:${finding.vulnerabilityId}`,
|
|
24
|
-
code: finding.pkgName,
|
|
25
|
-
message: `${finding.severity} vulnerability ${finding.vulnerabilityId} in ${finding.pkgName}${version}${fix}`,
|
|
26
|
-
source: "project-scan",
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* A trivy *secret* finding (`TrivyResult.secrets`) is a leaked credential at a
|
|
31
|
-
* concrete `file:line` — the trivy-scanned sibling of
|
|
32
|
-
* `gitleaksFindingToProjectDiagnostic`, and treated the same way: **blocking**,
|
|
33
|
-
* since a committed credential is not a style nit.
|
|
34
|
-
*
|
|
35
|
-
* Rule id is namespaced `trivy-secret:<ruleId>`, deliberately distinct from the
|
|
36
|
-
* CVE lane's `trivy:<vulnerabilityId>` (#1628) — trivy's own rule-id spaces for
|
|
37
|
-
* secrets and CVEs are independent, so without this prefix a secret rule id
|
|
38
|
-
* could collide with a vulnerability id and silently share (or steal) that
|
|
39
|
-
* finding's disposition anchor.
|
|
40
|
-
*/
|
|
41
|
-
export function trivySecretFindingToProjectDiagnostic(cwd, finding) {
|
|
42
|
-
return {
|
|
43
|
-
filePath: path.isAbsolute(finding.file)
|
|
44
|
-
? finding.file
|
|
45
|
-
: path.resolve(cwd, finding.file),
|
|
46
|
-
line: finding.line,
|
|
47
|
-
severity: "error",
|
|
48
|
-
semantic: "blocking",
|
|
49
|
-
tool: "trivy",
|
|
50
|
-
runner: "trivy",
|
|
51
|
-
rule: `trivy-secret:${finding.ruleId}`,
|
|
52
|
-
message: `Potential secret: ${finding.title || finding.ruleId}`,
|
|
53
|
-
source: "project-scan",
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function trivySecretsToProjectDiagnostics(cwd, secrets) {
|
|
57
|
-
return secrets.map((finding) => trivySecretFindingToProjectDiagnostic(cwd, finding));
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Adapts BOTH of trivy's finding kinds from one scan pass — CVEs (`findings`)
|
|
61
|
-
* and secrets (`secrets`, #1628) — into the single `ProjectDiagnostic[]`
|
|
62
|
-
* `lens_diagnostics mode=full` surfaces. Before #1628, `secrets` was silently
|
|
63
|
-
* unread here: a trivy-only secret (no gitleaks/ast-grep corroboration) had no
|
|
64
|
-
* `lens_diagnostics`-visible identity at all for an agent to anchor a mark
|
|
65
|
-
* against, even though `runtime-turn.ts`'s turn_end gate already blocked on it.
|
|
66
|
-
*/
|
|
67
|
-
export function trivyResultToProjectDiagnostics(cwd, result) {
|
|
68
|
-
if (!result.success)
|
|
69
|
-
return [];
|
|
70
|
-
return [
|
|
71
|
-
...(result.findings ?? []).map((finding) => trivyFindingToProjectDiagnostic(cwd, finding)),
|
|
72
|
-
// `secrets` defaults to `[]` here rather than assuming the field is
|
|
73
|
-
// always present: `fetchFreshProjectDiagnostics` swallows a task
|
|
74
|
-
// rejection into a silent "completed" outcome (its
|
|
75
|
-
// `.catch(() => "completed")`), so an unguarded `.map` on a missing
|
|
76
|
-
// field here would drop this lane's CVE diagnostics too, not just the
|
|
77
|
-
// secrets — a caller-visible regression for a field this adapter
|
|
78
|
-
// doesn't itself require.
|
|
79
|
-
...trivySecretsToProjectDiagnostics(cwd, result.secrets ?? []),
|
|
80
|
-
];
|
|
81
|
-
}
|