@herbertgao/pi-extensions 2026.10.1 → 2026.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -9
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-audit.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-debt.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-gain.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-help.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-review.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
- package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/README.md +68 -72
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +7 -0
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
- package/node_modules/@dietrichgebert/ponytail/package.json +2 -2
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -32
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +17 -16
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +9 -10
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -57
- package/node_modules/@herbertgao/pi-agency/LICENSE +21 -0
- package/node_modules/@herbertgao/pi-agency/README.md +40 -0
- package/node_modules/@herbertgao/pi-agency/package.json +53 -0
- package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
- package/node_modules/@narumitw/pi-caffeinate/package.json +3 -3
- package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
- package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
- package/node_modules/@tifan/pi-recap/package.json +1 -1
- package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
- package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
- package/node_modules/pi-antigravity/README.md +23 -2
- package/node_modules/pi-antigravity/package.json +5 -3
- package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
- package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
- package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
- package/node_modules/pi-antigravity/src/image/image.ts +86 -47
- package/node_modules/pi-antigravity/src/image/native.ts +69 -0
- package/node_modules/pi-antigravity/src/index.ts +52 -137
- package/node_modules/pi-antigravity/src/search/search.ts +130 -31
- package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
- package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
- package/node_modules/pi-antigravity/src/types/types.ts +1 -1
- package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
- package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
- package/node_modules/pi-lens/CHANGELOG.md +1064 -0
- package/node_modules/pi-lens/README.md +115 -25
- package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
- package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
- package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
- package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
- package/node_modules/pi-lens/dist/chunk-34U7PLGE.js +23 -0
- package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
- package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
- package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
- package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
- package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
- package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
- package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
- package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
- package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
- package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
- package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
- package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
- package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
- package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
- package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -0
- package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
- package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
- package/node_modules/pi-lens/dist/chunk-AHDW3GPE.js +50 -0
- package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
- package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
- package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
- package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
- package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
- package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
- package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
- package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
- package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
- package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
- package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
- package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
- package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
- package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
- package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
- package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
- package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
- package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
- package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
- package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
- package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
- package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
- package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
- package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
- package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
- package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
- package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
- package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
- package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
- package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
- package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
- package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
- package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
- package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
- package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
- package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
- package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
- package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
- package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
- package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
- package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
- package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
- package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
- package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
- package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
- package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
- package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
- package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
- package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
- package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
- package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
- package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
- package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
- package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
- package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
- package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -0
- package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
- package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
- package/node_modules/pi-lens/dist/chunk-RIISMHKN.js +36 -0
- package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
- package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
- package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
- package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
- package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
- package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
- package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
- package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
- package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
- package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
- package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
- package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
- package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
- package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
- package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
- package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
- package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
- package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
- package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
- package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
- package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
- package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
- package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
- package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
- package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
- package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
- package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
- package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
- package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
- package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
- package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -0
- package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
- package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
- package/node_modules/pi-lens/dist/chunk-ZAWW3AF6.js +97 -0
- package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
- package/node_modules/pi-lens/dist/index.js +16456 -8335
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
- package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
- package/node_modules/pi-lens/dist/mcp/server.js +22589 -1573
- package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
- package/node_modules/pi-lens/dist/probes/installer.js +135 -0
- package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
- package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
- package/node_modules/pi-lens/docs/agent-guide.md +13 -4
- package/node_modules/pi-lens/docs/agent-tools.md +42 -0
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +3 -2
- package/node_modules/pi-lens/docs/configuration.md +20 -1
- package/node_modules/pi-lens/docs/environment-variables.md +52 -2
- package/node_modules/pi-lens/docs/features.md +8 -4
- package/node_modules/pi-lens/docs/globalconfig.md +1 -0
- package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -4
- package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
- package/node_modules/pi-lens/docs/mcp.md +21 -5
- package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
- package/node_modules/pi-lens/docs/pi-lens-fixer.md +156 -88
- package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
- package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -48
- package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
- package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
- package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
- package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
- package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/node_modules/pi-lens/docs/servercapabilities.md +53 -49
- package/node_modules/pi-lens/docs/settings.md +1 -0
- package/node_modules/pi-lens/docs/usage.md +5 -1
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
- package/node_modules/pi-lens/package.json +18 -6
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
- package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
- package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
- package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
- package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
- package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
- package/package.json +15 -10
- package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ja.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -212
- package/node_modules/@dietrichgebert/ponytail/README.zh-CN.md +0 -212
- package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
- package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
- package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
- package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
- package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
- package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
- package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
- package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
- package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
- package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
- package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
- package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
- package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
- package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
- package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
- package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
- package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
- package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
- package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
- package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
- package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
- package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
- package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
- package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
- package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
- package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
- package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
- package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
- package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
- package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
- package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
- package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
- package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
- package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
- package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
- package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
- package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
- package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
- package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
- package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
- package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
- package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
- package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
- package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
- package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
- package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
- package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
- package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
- package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
- package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
- package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
- package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
- package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
- package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
- package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
- package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
- package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
- package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
- package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
- package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
- package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
- package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
- package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
- package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
- package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
- package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
- package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
- package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
- package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
- package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
- package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
- package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
- package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
- package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
- package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
- package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
- package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
- package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
- package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
- package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
- package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
- package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
- package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
- package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
- package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
- package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
- package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
- package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
- package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
- package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
- package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
- package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
- package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
- package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
- package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
- package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
- package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
- package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
- package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
- package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
- package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
- package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
- package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
- package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
- package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
- package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
- package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
- package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
- package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
- package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
- package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
- package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
- package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
- package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
- package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
- package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
- package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
- package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
- package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
- package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
- package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
- package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
- package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
- package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
- package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
- package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
- package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
- package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
- package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
- package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
- package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
- package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
- package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
- package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
- package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
- package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
- package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
- package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
- package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
- package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
- package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
- package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
- package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
- package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
- package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
- package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
- package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
- package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
- package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
- package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
- package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
- package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
- package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
- package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
- package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
- package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
- package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
- package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
- package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
- package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
- package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
- package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
- package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
- package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
- package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
- package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
- package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
- package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
- package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
- package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
- package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
- package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
- package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
- package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
- package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
- package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
- package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
- package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
- package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
- package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
- package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
- package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
- package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
- package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
- package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
- package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
- package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
- package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
- package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
- package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
- package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
- package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
- package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
- package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
- package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
- package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
- package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
- package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
- package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
- package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
- package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
- package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
- package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
- package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
- package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
- package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
- package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
- package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
- package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
- package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
- package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
- package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
- package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
- package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
- package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
- package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
- package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
- package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
- package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
- package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
- package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
- package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
- package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
- package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
- package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
- package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
- package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
- package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
- package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
- package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
- package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
- package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
- package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
- package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
- package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
- package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
- package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
- package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
- package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
- package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
- package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
- package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
- package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
- package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
- package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
- package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
- package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
- package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
- package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
- package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
- package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
- package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
- package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
- package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
- package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
- package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
- package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
- package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
- package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
- package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
- package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
- package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
- package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
- package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
- package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
- package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
- package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
- package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
- package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
- package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
- package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
- package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
- package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
- package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
- package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
- package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
- package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
- package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
- package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
- package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
- package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
- package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
- package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
- package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
- package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
- package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
- package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
- package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
- package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
- package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
- package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
- package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
- package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
- package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
- package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
- package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
- package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
- package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
- package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
- package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
- package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
- package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
- package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
- package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
- package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
- package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
- package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
- package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
- package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
- package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
- package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
- package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
- package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
- package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
- package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
- package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
- package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
- package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
- package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
- package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
- package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
- package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
- package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
- package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
- package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
- package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
- package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
- package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
- package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
- package/node_modules/pi-lens/dist/i18n.js +0 -69
- package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
- package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
- package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
- package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
- package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
- package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
- package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
- package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
- package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
- package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
- package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
- package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
- package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
- package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
- package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
- package/node_modules/pi-lens/dist/tools/shared.js +0 -29
- package/node_modules/pi-lens/dist/tools/symbol-search.js +0 -155
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fact-rules runner — executes all registered FactRule instances against
|
|
3
|
-
* the populated fact store. Each FactRule has its own appliesTo() guard
|
|
4
|
-
* so this runner can be registered broadly; rules self-select.
|
|
5
|
-
*
|
|
6
|
-
* Severity semantics follow each rule's own diagnostic output.
|
|
7
|
-
* Blocking rules surface on every write; warning-tier rules surface
|
|
8
|
-
* only during full scans (blockingOnly === false).
|
|
9
|
-
*/
|
|
10
|
-
import { PRIORITY } from "../priorities.js";
|
|
11
|
-
import { evaluateRules } from "../fact-rule-runner.js";
|
|
12
|
-
const factRulesRunner = {
|
|
13
|
-
id: "fact-rules",
|
|
14
|
-
appliesTo: ["jsts", "python", "go", "rust", "ruby", "shell", "cmake"],
|
|
15
|
-
priority: PRIORITY.GENERAL_ANALYSIS + 1,
|
|
16
|
-
async run(ctx) {
|
|
17
|
-
const diagnostics = evaluateRules(ctx);
|
|
18
|
-
if (diagnostics.length === 0) {
|
|
19
|
-
return { status: "succeeded", diagnostics: [], semantic: "none" };
|
|
20
|
-
}
|
|
21
|
-
const hasBlocking = diagnostics.some((d) => d.semantic === "blocking" || d.severity === "error");
|
|
22
|
-
return {
|
|
23
|
-
status: hasBlocking ? "failed" : "succeeded",
|
|
24
|
-
diagnostics,
|
|
25
|
-
semantic: hasBlocking ? "blocking" : "warning",
|
|
26
|
-
};
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
export default factRulesRunner;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
2
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
3
|
-
import { PRIORITY } from "../priorities.js";
|
|
4
|
-
import { createAvailabilityChecker } from "./utils/runner-helpers.js";
|
|
5
|
-
// fish_indent ships with fish — not separately installable, no managed fallback
|
|
6
|
-
const fishIndent = createAvailabilityChecker("fish_indent");
|
|
7
|
-
const fishIndentRunner = {
|
|
8
|
-
id: "fish-indent",
|
|
9
|
-
appliesTo: ["fish"],
|
|
10
|
-
priority: PRIORITY.FORMAT_AND_LINT_PRIMARY,
|
|
11
|
-
skipTestFiles: false,
|
|
12
|
-
async run(ctx) {
|
|
13
|
-
const cwd = resolveRunnerCwd(ctx, "fish-indent");
|
|
14
|
-
const available = await fishIndent.isAvailableAsync(cwd);
|
|
15
|
-
if (!available)
|
|
16
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
17
|
-
const cmd = fishIndent.getCommand(cwd);
|
|
18
|
-
if (!cmd)
|
|
19
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
20
|
-
// --check: exits 0 if already formatted, 1 if reformatting would change the file
|
|
21
|
-
const result = await safeSpawnAsync(cmd, ["--check", ctx.filePath], {
|
|
22
|
-
timeout: 10000,
|
|
23
|
-
cwd,
|
|
24
|
-
});
|
|
25
|
-
if (result.status === 0) {
|
|
26
|
-
return { status: "succeeded", diagnostics: [], semantic: "none" };
|
|
27
|
-
}
|
|
28
|
-
// Non-zero exit: either needs formatting or a parse error was reported on stderr
|
|
29
|
-
const stderrLine = (result.stderr ?? "").split("\n").find((l) => l.trim());
|
|
30
|
-
if (stderrLine) {
|
|
31
|
-
// Parse/syntax error — extract line number from "filename (line N): message" if present
|
|
32
|
-
const lineMatch = stderrLine.match(/\(line\s+(\d+)\)/);
|
|
33
|
-
const line = lineMatch ? Number(lineMatch[1]) : 1;
|
|
34
|
-
const diagnostics = [
|
|
35
|
-
{
|
|
36
|
-
id: `fish-indent-parse-${ctx.filePath}`,
|
|
37
|
-
message: `fish_indent: ${stderrLine.trim()}`,
|
|
38
|
-
filePath: ctx.filePath,
|
|
39
|
-
line,
|
|
40
|
-
column: 1,
|
|
41
|
-
severity: "error",
|
|
42
|
-
semantic: "blocking",
|
|
43
|
-
tool: "fish-indent",
|
|
44
|
-
rule: "fish-indent-parse-error",
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
return { status: "failed", diagnostics, semantic: "blocking" };
|
|
48
|
-
}
|
|
49
|
-
// Clean stderr — file just needs formatting
|
|
50
|
-
const diagnostics = [
|
|
51
|
-
{
|
|
52
|
-
id: `fish-indent-format-${ctx.filePath}`,
|
|
53
|
-
message: "Fish script is not formatted — run `fish_indent -w` to fix",
|
|
54
|
-
filePath: ctx.filePath,
|
|
55
|
-
line: 1,
|
|
56
|
-
column: 1,
|
|
57
|
-
severity: "warning",
|
|
58
|
-
semantic: "warning",
|
|
59
|
-
tool: "fish-indent",
|
|
60
|
-
rule: "fish-indent-unformatted",
|
|
61
|
-
fixable: true,
|
|
62
|
-
autoFixAvailable: false,
|
|
63
|
-
fixKind: "manual",
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
return { status: "succeeded", diagnostics, semantic: "warning" };
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
export default fishIndentRunner;
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
3
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
4
|
-
import { stripAnsi } from "../../sanitize.js";
|
|
5
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
6
|
-
import { createAvailabilityChecker } from "./utils/runner-helpers.js";
|
|
7
|
-
import { PRIORITY } from "../priorities.js";
|
|
8
|
-
const gleam = createAvailabilityChecker("gleam", ".exe");
|
|
9
|
-
/**
|
|
10
|
-
* gleam renders every located diagnostic through
|
|
11
|
-
* `codespan_reporting::term::emit` (v1.18.1
|
|
12
|
-
* `compiler-core/src/diagnostic.rs:92-133`, unchanged since v1.6.3), so its
|
|
13
|
-
* location line is codespan's LOCUS line, not a bare `path:line:col`:
|
|
14
|
-
*
|
|
15
|
-
* ```text
|
|
16
|
-
* error: Type mismatch
|
|
17
|
-
* ┌─ /abs/proj/src/app.gleam:1:8
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* `<outer gutter spaces> ┌─ <name>:<line>:<column>` —
|
|
21
|
-
* codespan-reporting 0.13.1 `src/term/renderer.rs:379-396` (the gutter, then
|
|
22
|
-
* `chars().snippet_start`, then one space, then the locus) and `:869-878`
|
|
23
|
-
* (`{name}:{line_number}:{column_number}`), with `snippet_start` = `┌─` in the
|
|
24
|
-
* default box-drawing set (`src/term/config.rs:419-429`, reached because gleam
|
|
25
|
-
* passes `Config::default()`, whose display style is Rich).
|
|
26
|
-
*
|
|
27
|
-
* `name` is `location.path` verbatim (`diagnostic.rs:92-94`,
|
|
28
|
-
* `files.add(main_location_path, …)`), and the CLI builds that path by walking
|
|
29
|
-
* UP from the absolute `std::env::current_dir()` to the nearest `gleam.toml`
|
|
30
|
-
* (`compiler-cli/src/fs.rs:32-62`) and joining `src`/`test`
|
|
31
|
-
* (`compiler-core/src/paths.rs:42-48`) before enumerating the directory — so it
|
|
32
|
-
* is ABSOLUTE, with host-native separators. Resolving it against the cwd the
|
|
33
|
-
* tool ran in is therefore a no-op today and the ADR 0009 shape for the
|
|
34
|
-
* hypothetical relative spelling.
|
|
35
|
-
*
|
|
36
|
-
* Capturing the path REQUIRES matching the gutter: the pre-#3285 regex
|
|
37
|
-
* `/^(.+?):(\d+):(\d+)$/` captured ` ┌─ /abs/proj/src/app.gleam`, gutter
|
|
38
|
-
* included, and only an `endsWith` compare tolerated that. An equality
|
|
39
|
-
* predicate (the seam every other runner now uses) drops every gleam diagnostic
|
|
40
|
-
* unless the gutter is out of the capture — which is why PR #3284 reverted its
|
|
41
|
-
* own fold here and filed #3285.
|
|
42
|
-
*/
|
|
43
|
-
const GLEAM_LOCUS = /^\s*┌─\s+(.+?):(\d+):(\d+)$/;
|
|
44
|
-
const GLEAM_HEADER = /^\s*(error|warning):\s*(.+?)\s*$/;
|
|
45
|
-
const GLEAM_LABEL = /^\s*│\s*\^+\s*(.*?)\s*$/;
|
|
46
|
-
/**
|
|
47
|
-
* codespan writes ONE title line per diagnostic and then everything that
|
|
48
|
-
* belongs to it — locus, borders, snippet, labels, notes — before the next
|
|
49
|
-
* title (`codespan-reporting` 0.13.1 `src/term/renderer.rs:141-210`). Splitting
|
|
50
|
-
* on the title is therefore the diagnostic boundary, and it is what keeps an
|
|
51
|
-
* adjacent diagnostic's label out of its predecessor's message. Lines before
|
|
52
|
-
* the first title are gleam's own progress output (`Compiling demo`), which
|
|
53
|
-
* belongs to no diagnostic.
|
|
54
|
-
*/
|
|
55
|
-
function gleamBlocks(lines) {
|
|
56
|
-
const blocks = [];
|
|
57
|
-
for (const line of lines) {
|
|
58
|
-
const header = line.match(GLEAM_HEADER);
|
|
59
|
-
if (header)
|
|
60
|
-
blocks.push({ header, body: [] });
|
|
61
|
-
else
|
|
62
|
-
blocks.at(-1)?.body.push(line);
|
|
63
|
-
}
|
|
64
|
-
return blocks;
|
|
65
|
-
}
|
|
66
|
-
function gleamMessage(title, body) {
|
|
67
|
-
const labels = body.flatMap((line) => line.match(GLEAM_LABEL)?.[1]?.trim() || []);
|
|
68
|
-
return labels.length > 0 ? `${title} — ${labels.join(" ")}` : title;
|
|
69
|
-
}
|
|
70
|
-
function parseGleamOutput(raw, filePath, cwd) {
|
|
71
|
-
const diagnostics = [];
|
|
72
|
-
const absTarget = path.resolve(cwd, filePath);
|
|
73
|
-
// `stripAnsi` (the seam `ruff.ts`, `go-vet.ts` and `rust-clippy.ts` already
|
|
74
|
-
// use): gleam colours the gutter whenever `FORCE_COLOR` is set non-empty,
|
|
75
|
-
// whatever stderr is (`compiler-cli/src/cli.rs:194-207` — `ColorChoice::Never`
|
|
76
|
-
// only when it is neither forced nor a terminal), and the SGR bytes sit
|
|
77
|
-
// between the line start and `┌─`. The old suffix compare never saw the
|
|
78
|
-
// prefix; an anchored capture would drop every diagnostic in that
|
|
79
|
-
// environment.
|
|
80
|
-
const lines = stripAnsi(raw).split(/\r?\n/);
|
|
81
|
-
for (const { header, body } of gleamBlocks(lines)) {
|
|
82
|
-
const severity = header[1] === "warning" ? "warning" : "error";
|
|
83
|
-
const title = `${header[1]}: ${header[2]}`;
|
|
84
|
-
// A Gleam diagnostic with NO locus describes the whole project: `check`
|
|
85
|
-
// receives no file argument (`Diagnostic::write_title`, no codespan emit).
|
|
86
|
-
// Leave it for the nonzero-without-diagnostics fallback instead of
|
|
87
|
-
// charging it to whichever file happened to trigger dispatch — ADR 0009:
|
|
88
|
-
// without a reported path there is no evidence it is about this file.
|
|
89
|
-
const location = body
|
|
90
|
-
.find((line) => GLEAM_LOCUS.test(line))
|
|
91
|
-
?.match(GLEAM_LOCUS);
|
|
92
|
-
if (!location)
|
|
93
|
-
continue;
|
|
94
|
-
const [, sourcePath, lineStr, colStr] = location;
|
|
95
|
-
// #3278: one seam for reported-path attribution — see javac.ts.
|
|
96
|
-
if (!pathsEqual(path.resolve(cwd, sourcePath.trim()), absTarget))
|
|
97
|
-
continue;
|
|
98
|
-
diagnostics.push({
|
|
99
|
-
id: `gleam-check-${lineStr}-${colStr}`,
|
|
100
|
-
message: gleamMessage(title, body),
|
|
101
|
-
filePath,
|
|
102
|
-
line: Number.parseInt(lineStr, 10) || 1,
|
|
103
|
-
column: Number.parseInt(colStr, 10) || 1,
|
|
104
|
-
severity,
|
|
105
|
-
semantic: severity === "error" ? "blocking" : "warning",
|
|
106
|
-
tool: "gleam",
|
|
107
|
-
rule: "gleam-check",
|
|
108
|
-
fixable: false,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
return diagnostics;
|
|
112
|
-
}
|
|
113
|
-
function firstOutputLine(result) {
|
|
114
|
-
return `${result.stderr || ""}\n${result.stdout || ""}`
|
|
115
|
-
.trim()
|
|
116
|
-
.split(/\r?\n/, 1)[0]
|
|
117
|
-
.slice(0, 200);
|
|
118
|
-
}
|
|
119
|
-
const gleamCheckRunner = {
|
|
120
|
-
id: "gleam-check",
|
|
121
|
-
appliesTo: ["gleam"],
|
|
122
|
-
priority: PRIORITY.GENERAL_ANALYSIS,
|
|
123
|
-
skipTestFiles: false,
|
|
124
|
-
async run(ctx) {
|
|
125
|
-
const cwd = resolveRunnerCwd(ctx, "gleam-check");
|
|
126
|
-
if (!(await gleam.isAvailableAsync(cwd))) {
|
|
127
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
128
|
-
}
|
|
129
|
-
const cmd = gleam.getCommand(cwd);
|
|
130
|
-
const result = await safeSpawnAsync(cmd, ["check"], {
|
|
131
|
-
cwd,
|
|
132
|
-
timeout: 30000,
|
|
133
|
-
});
|
|
134
|
-
if (result.error && !result.stdout && !result.stderr) {
|
|
135
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
136
|
-
}
|
|
137
|
-
const diagnostics = parseGleamOutput(`${result.stderr || ""}\n${result.stdout || ""}`, ctx.filePath, cwd);
|
|
138
|
-
if (diagnostics.length === 0) {
|
|
139
|
-
if (result.status && result.status !== 0) {
|
|
140
|
-
return {
|
|
141
|
-
status: "failed",
|
|
142
|
-
diagnostics: [
|
|
143
|
-
{
|
|
144
|
-
id: "gleam-check-nonzero-no-diagnostics",
|
|
145
|
-
message: firstOutputLine(result) ||
|
|
146
|
-
"gleam check exited non-zero without structured diagnostics",
|
|
147
|
-
filePath: ctx.filePath,
|
|
148
|
-
severity: "error",
|
|
149
|
-
semantic: "blocking",
|
|
150
|
-
tool: "gleam",
|
|
151
|
-
rule: "gleam-check",
|
|
152
|
-
fixable: false,
|
|
153
|
-
},
|
|
154
|
-
],
|
|
155
|
-
semantic: "blocking",
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
return { status: "succeeded", diagnostics: [], semantic: "none" };
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
status: "failed",
|
|
162
|
-
diagnostics,
|
|
163
|
-
semantic: "blocking",
|
|
164
|
-
};
|
|
165
|
-
},
|
|
166
|
-
};
|
|
167
|
-
export default gleamCheckRunner;
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Go vet runner for dispatch system
|
|
3
|
-
*
|
|
4
|
-
* Runs `go vet` for Go files to catch common mistakes.
|
|
5
|
-
*/
|
|
6
|
-
import { relative, resolve, sep, posix } from "node:path";
|
|
7
|
-
import { goClient } from "../../go-client.js";
|
|
8
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
9
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
10
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
11
|
-
import { stripAnsi } from "../../sanitize.js";
|
|
12
|
-
import { skipUnlessToolRan } from "./utils/tool-failure.js";
|
|
13
|
-
import { parseGoVetOutput } from "./utils/diagnostic-parsers.js";
|
|
14
|
-
import { PRIORITY } from "../priorities.js";
|
|
15
|
-
const goVetRunner = {
|
|
16
|
-
id: "go-vet",
|
|
17
|
-
appliesTo: ["go"],
|
|
18
|
-
priority: PRIORITY.SPECIALIZED_ANALYSIS,
|
|
19
|
-
timeoutMs: 40_000,
|
|
20
|
-
async run(ctx) {
|
|
21
|
-
// Resolve go path using platform-aware lookup (handles system install paths on Windows)
|
|
22
|
-
const goExe = await goClient.findGoPathAsync();
|
|
23
|
-
if (!goExe) {
|
|
24
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
25
|
-
}
|
|
26
|
-
// Vet the package containing the file from the module root.
|
|
27
|
-
//
|
|
28
|
-
// `go vet <one-file.go>` compiles that file in isolation, so same-package
|
|
29
|
-
// symbols defined in sibling files read as false `undefined: X`, and when
|
|
30
|
-
// the spawn cwd is outside the module the run also reports
|
|
31
|
-
// `go.mod file not found` (#263). ctx.cwd is the go.mod module root
|
|
32
|
-
// (resolveLanguageRootForFile, markers ["go.mod"]), so vet the file's
|
|
33
|
-
// package from there.
|
|
34
|
-
const cwd = resolveRunnerCwd(ctx, "go-vet");
|
|
35
|
-
const fileRel = relative(cwd, ctx.filePath).split(sep).join(posix.sep);
|
|
36
|
-
const pkgPath = fileRel.startsWith("../")
|
|
37
|
-
? // File isn't under ctx.cwd (unexpected — ctx.cwd is the go.mod root).
|
|
38
|
-
// Vet the root package as a safe fallback rather than emit `./../x`;
|
|
39
|
-
// the filename filter below still prevents mis-attribution.
|
|
40
|
-
"."
|
|
41
|
-
: fileRel.includes("/")
|
|
42
|
-
? "./" + fileRel.slice(0, fileRel.lastIndexOf("/"))
|
|
43
|
-
: ".";
|
|
44
|
-
const result = await safeSpawnAsync(goExe, ["vet", pkgPath], {
|
|
45
|
-
timeout: 30000,
|
|
46
|
-
cwd,
|
|
47
|
-
});
|
|
48
|
-
const raw = stripAnsi(result.stdout + result.stderr);
|
|
49
|
-
// #1816: `go vet` exits nonzero both for "found problems" and for a
|
|
50
|
-
// toolchain failure it never got past — `go.mod file not found in
|
|
51
|
-
// current directory or any parent directory` is the one that bit us
|
|
52
|
-
// (#263). That prose carries no `file:line:col:` prefix, so it parsed to
|
|
53
|
-
// zero diagnostics and the file was reported CLEAN by a vet that never
|
|
54
|
-
// ran. The exit code cannot separate the two cases; the presence of a
|
|
55
|
-
// parsable diagnostic line can, so that is what the gate is handed.
|
|
56
|
-
const parsableLines = raw
|
|
57
|
-
.split("\n")
|
|
58
|
-
.filter((line) => /^.+?:\d+:\d+:/.test(line))
|
|
59
|
-
.join("\n");
|
|
60
|
-
const skipped = skipUnlessToolRan("go-vet", {
|
|
61
|
-
result,
|
|
62
|
-
output: parsableLines,
|
|
63
|
-
});
|
|
64
|
-
if (skipped)
|
|
65
|
-
return skipped;
|
|
66
|
-
if (result.status === 0 && !raw.trim()) {
|
|
67
|
-
return { status: "succeeded", diagnostics: [], semantic: "none" };
|
|
68
|
-
}
|
|
69
|
-
// createLineParser ignores the output filename and attributes every
|
|
70
|
-
// diagnostic to ctx.filePath, so keep only this file's lines — package
|
|
71
|
-
// vetting reports siblings too. Resolve each output path against the vet
|
|
72
|
-
// cwd before comparing, so go's path FORM (a leading `./` for the
|
|
73
|
-
// module-root package, an absolute path, `.` segments) can't cause the
|
|
74
|
-
// edited file's OWN diagnostics to be silently dropped.
|
|
75
|
-
//
|
|
76
|
-
// #3277: resolving is not enough — the two sides are SPELLED by
|
|
77
|
-
// different actors. `ctx.filePath` is `normalizeMapKey`-canonical
|
|
78
|
-
// (#2016) while go prints its own spelling: `cmd/go` rewrites the
|
|
79
|
-
// package-dir prefix to a cwd-relative one only when the rewrite
|
|
80
|
-
// matches byte-for-byte (`replacePrefix`), even though the check that
|
|
81
|
-
// authorized it (`filepath.Rel`) compares case-insensitively on
|
|
82
|
-
// Windows, so a differently-cased ABSOLUTE path reaches this filter.
|
|
83
|
-
// A bare `===` then drops every line for the edited file and the run
|
|
84
|
-
// is reported clean — the #209 defect. `pathsEqual` asks the
|
|
85
|
-
// filesystem instead of a platform list, so it is also right on a
|
|
86
|
-
// case-folding POSIX mount. It does NOT resolve symlinks on POSIX
|
|
87
|
-
// (`clients/path-utils.ts:181`); nothing here relies on that.
|
|
88
|
-
const absTarget = resolve(ctx.filePath);
|
|
89
|
-
const relevant = raw
|
|
90
|
-
.split("\n")
|
|
91
|
-
.filter((line) => {
|
|
92
|
-
const m = line.match(/^(.+?):(\d+):(\d+):\s*(.+)/);
|
|
93
|
-
return m != null && pathsEqual(resolve(cwd, m[1].trim()), absTarget);
|
|
94
|
-
})
|
|
95
|
-
.join("\n");
|
|
96
|
-
const diagnostics = parseGoVetOutput(relevant, ctx.filePath, cwd);
|
|
97
|
-
// Edited file clean → succeeded: a sibling-file error no longer flags
|
|
98
|
-
// the edited file's turn (it surfaces when that file is itself edited).
|
|
99
|
-
return diagnostics.length > 0
|
|
100
|
-
? { status: "failed", diagnostics, semantic: "warning" }
|
|
101
|
-
: { status: "succeeded", diagnostics: [], semantic: "none" };
|
|
102
|
-
},
|
|
103
|
-
};
|
|
104
|
-
export default goVetRunner;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* golangci-lint runner for dispatch system
|
|
3
|
-
*
|
|
4
|
-
* Runs golangci-lint when a .golangci.yml config is present.
|
|
5
|
-
* golangci-lint is the standard meta-linter for Go projects — it runs
|
|
6
|
-
* staticcheck, errcheck, gosimple, and many others in one pass.
|
|
7
|
-
*
|
|
8
|
-
* Gate: skips when no .golangci.yml/.golangci.yaml config is found (project
|
|
9
|
-
* relies on go-vet only). This avoids noisy default-rule runs on projects
|
|
10
|
-
* that haven't opted in.
|
|
11
|
-
*/
|
|
12
|
-
import * as path from "node:path";
|
|
13
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
14
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
15
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
16
|
-
import { getLinterPolicyForCwd, hasGolangciConfig } from "../../tool-policy.js";
|
|
17
|
-
import { PRIORITY } from "../priorities.js";
|
|
18
|
-
import { createAvailabilityChecker, resolveAvailableOrInstall, } from "./utils/runner-helpers.js";
|
|
19
|
-
import { finishParsedRun, parseToolRun } from "./utils/tool-failure.js";
|
|
20
|
-
const golangci = createAvailabilityChecker("golangci-lint", ".exe");
|
|
21
|
-
/**
|
|
22
|
-
* Summarize a golangci-lint Replacement into a single-line fixSuggestion.
|
|
23
|
-
* Prefers the Inline rewrite (precise + short) over multi-line block
|
|
24
|
-
* replacements, and reports a delete-only fix when there's no new content.
|
|
25
|
-
* Returns undefined when there is no Replacement attached.
|
|
26
|
-
*/
|
|
27
|
-
function describeReplacement(replacement) {
|
|
28
|
-
if (!replacement)
|
|
29
|
-
return undefined;
|
|
30
|
-
if (replacement.Inline?.NewString !== undefined) {
|
|
31
|
-
return `Replace with: ${replacement.Inline.NewString}`;
|
|
32
|
-
}
|
|
33
|
-
if (replacement.NeedOnlyDelete)
|
|
34
|
-
return "Delete this code";
|
|
35
|
-
if (replacement.NewLines && replacement.NewLines.length > 0) {
|
|
36
|
-
const preview = replacement.NewLines[0].trim();
|
|
37
|
-
const hint = replacement.NewLines.length > 1
|
|
38
|
-
? ` (+${replacement.NewLines.length - 1} more lines)`
|
|
39
|
-
: "";
|
|
40
|
-
return `Replace with: ${preview}${hint}`;
|
|
41
|
-
}
|
|
42
|
-
return "Apply golangci-lint suggested fix";
|
|
43
|
-
}
|
|
44
|
-
function parseGolangciJson(raw, filePath, cwd) {
|
|
45
|
-
try {
|
|
46
|
-
const output = JSON.parse(raw);
|
|
47
|
-
if (!output.Issues)
|
|
48
|
-
return [];
|
|
49
|
-
const absFile = path.resolve(cwd, filePath);
|
|
50
|
-
// #3278: one seam for reported-path attribution — see javac.ts. The base
|
|
51
|
-
// matters here more than anywhere else in the family: golangci-lint's
|
|
52
|
-
// `PathPrettifier` OVERWRITES `Pos.Filename` with `filepath.Rel(basePath,
|
|
53
|
-
// …)` before the JSON printer sees it (v1.64.8,
|
|
54
|
-
// `pkg/result/processors/path_prettifier.go:31` +
|
|
55
|
-
// `path_relativity.go:43`), so the spelling is relative to the child's
|
|
56
|
-
// base path — the `cwd` we spawned it in — and `path.resolve` with no
|
|
57
|
-
// base resolved it against the EXTENSION's cwd instead.
|
|
58
|
-
return output.Issues.filter((issue) => pathsEqual(path.resolve(cwd, issue.Pos.Filename), absFile)).map((issue) => {
|
|
59
|
-
const severity = issue.Severity === "error" ? "error" : "warning";
|
|
60
|
-
// golangci-lint's --out-format=json emits a Replacement object per
|
|
61
|
-
// issue when `golangci-lint run --fix` would deterministically
|
|
62
|
-
// rewrite the code. Mirror the rust-clippy structured-output path
|
|
63
|
-
// (commit 221b34d): propagate the field to fixable / fixSuggestion
|
|
64
|
-
// so the diagnostic routes through actionable-warnings.
|
|
65
|
-
const fixSuggestion = describeReplacement(issue.Replacement);
|
|
66
|
-
return {
|
|
67
|
-
id: `golangci:${issue.FromLinter}:${issue.Pos.Line}`,
|
|
68
|
-
message: `${issue.FromLinter}: ${issue.Text}`,
|
|
69
|
-
filePath,
|
|
70
|
-
line: issue.Pos.Line,
|
|
71
|
-
column: issue.Pos.Column,
|
|
72
|
-
severity,
|
|
73
|
-
semantic: severity === "error" ? "blocking" : "warning",
|
|
74
|
-
tool: "golangci-lint",
|
|
75
|
-
rule: issue.FromLinter,
|
|
76
|
-
defectClass: "correctness",
|
|
77
|
-
fixable: Boolean(issue.Replacement),
|
|
78
|
-
fixSuggestion,
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return [];
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// Exported for the parser unit tests (#112 golangci-lint slice).
|
|
87
|
-
export { parseGolangciJson };
|
|
88
|
-
const golangciRunner = {
|
|
89
|
-
id: "golangci-lint",
|
|
90
|
-
appliesTo: ["go"],
|
|
91
|
-
priority: PRIORITY.GENERAL_ANALYSIS,
|
|
92
|
-
timeoutMs: 90_000,
|
|
93
|
-
async run(ctx) {
|
|
94
|
-
const cwd = resolveRunnerCwd(ctx, "golangci-lint");
|
|
95
|
-
const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
|
|
96
|
-
if (policy && !policy.preferredRunners.includes("golangci-lint")) {
|
|
97
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
98
|
-
}
|
|
99
|
-
// Only run if project has opted in via config file
|
|
100
|
-
if (!hasGolangciConfig(cwd)) {
|
|
101
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
102
|
-
}
|
|
103
|
-
const cmd = await resolveAvailableOrInstall(golangci, "golangci-lint", cwd);
|
|
104
|
-
if (!cmd)
|
|
105
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
106
|
-
// Run on the specific file. golangci-lint accepts file paths directly.
|
|
107
|
-
const result = await safeSpawnAsync(cmd, ["run", "--out-format=json", ctx.filePath], { timeout: 60000, cwd });
|
|
108
|
-
// Exit table: 0 is clean-or-findings; 1 means issues, 3 failure,
|
|
109
|
-
// 4 timeout, and 5 missing config. Every nonzero code is a ran outcome
|
|
110
|
-
// whose parser decides: JSON issues remain findings, while emitted
|
|
111
|
-
// non-JSON text becomes a parse-error diagnostic and no output stays
|
|
112
|
-
// skipped. Keep stderr as the parse input when stdout is absent so tool
|
|
113
|
-
// errors cannot be mistaken for a clean file.
|
|
114
|
-
const raw = (result.stdout ?? "").length > 0
|
|
115
|
-
? (result.stdout ?? "")
|
|
116
|
-
: result.status !== 0
|
|
117
|
-
? result.stderr || ""
|
|
118
|
-
: "";
|
|
119
|
-
const parsed = parseToolRun("golangci-lint", {
|
|
120
|
-
result,
|
|
121
|
-
output: raw,
|
|
122
|
-
// EXIT TABLE (golangci-lint 1.60 docs https://golangci-lint.run/docs/welcome/quick-start/): 0 clean; 1 findings; 2 error; 3 error; 4 error; 5 error; other nonzero rejected.
|
|
123
|
-
exitCodes: { ran: [1, 2, 3, 4, 5] },
|
|
124
|
-
}, (raw) => parseGolangciJson(raw, ctx.filePath, cwd));
|
|
125
|
-
if (parsed.skipped)
|
|
126
|
-
return parsed.skipped;
|
|
127
|
-
return finishParsedRun({
|
|
128
|
-
tool: "golangci-lint",
|
|
129
|
-
ctx,
|
|
130
|
-
result,
|
|
131
|
-
diagnostics: parsed.diagnostics,
|
|
132
|
-
});
|
|
133
|
-
},
|
|
134
|
-
};
|
|
135
|
-
export default golangciRunner;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { pathsEqual } from "../../path-utils.js";
|
|
3
|
-
import { safeSpawnAsync } from "../../safe-spawn.js";
|
|
4
|
-
import { resolveRunnerCwd } from "../../tool-cwd.js";
|
|
5
|
-
import { getLinterPolicyForCwd } from "../../tool-policy.js";
|
|
6
|
-
import { PRIORITY } from "../priorities.js";
|
|
7
|
-
import { createAvailabilityChecker, resolveToolCommandWithInstallFallback, } from "./utils/runner-helpers.js";
|
|
8
|
-
import { parseToolRun } from "./utils/tool-failure.js";
|
|
9
|
-
import { finishParsedRun } from "./utils/tool-failure.js";
|
|
10
|
-
const hadolint = createAvailabilityChecker("hadolint", ".exe");
|
|
11
|
-
function parseHadolintOutput(raw, filePath, cwd) {
|
|
12
|
-
try {
|
|
13
|
-
const parsed = JSON.parse(raw);
|
|
14
|
-
if (!Array.isArray(parsed))
|
|
15
|
-
return [];
|
|
16
|
-
const absTarget = path.resolve(cwd, filePath);
|
|
17
|
-
return parsed.flatMap((item) => {
|
|
18
|
-
// #3295: hadolint takes a LIST of Dockerfiles and names each finding's
|
|
19
|
-
// own `file`.
|
|
20
|
-
if (item.file && !pathsEqual(path.resolve(cwd, item.file), absTarget))
|
|
21
|
-
return [];
|
|
22
|
-
const severity = item.level === "error" ? "error" : "warning";
|
|
23
|
-
return [
|
|
24
|
-
{
|
|
25
|
-
id: `hadolint-${item.code}-${item.line}`,
|
|
26
|
-
message: `[${item.code}] ${item.message}`,
|
|
27
|
-
filePath,
|
|
28
|
-
line: item.line,
|
|
29
|
-
column: item.column ?? 1,
|
|
30
|
-
severity,
|
|
31
|
-
semantic: severity === "error" ? "blocking" : "warning",
|
|
32
|
-
tool: "hadolint",
|
|
33
|
-
rule: item.code,
|
|
34
|
-
fixable: false,
|
|
35
|
-
},
|
|
36
|
-
];
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
return [];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const hadolintRunner = {
|
|
44
|
-
id: "hadolint",
|
|
45
|
-
appliesTo: ["docker"],
|
|
46
|
-
priority: PRIORITY.GENERAL_ANALYSIS,
|
|
47
|
-
skipTestFiles: false,
|
|
48
|
-
async run(ctx) {
|
|
49
|
-
const cwd = resolveRunnerCwd(ctx, "hadolint");
|
|
50
|
-
const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
|
|
51
|
-
if (policy && !policy.preferredRunners.includes("hadolint")) {
|
|
52
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
53
|
-
}
|
|
54
|
-
let cmd = null;
|
|
55
|
-
if (await hadolint.isAvailableAsync(cwd)) {
|
|
56
|
-
cmd = hadolint.getCommand(cwd);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
cmd = await resolveToolCommandWithInstallFallback(cwd, "hadolint");
|
|
60
|
-
}
|
|
61
|
-
if (!cmd) {
|
|
62
|
-
return { status: "skipped", diagnostics: [], semantic: "none" };
|
|
63
|
-
}
|
|
64
|
-
const result = await safeSpawnAsync(cmd, ["--format", "json", "--no-fail", path.resolve(cwd, ctx.filePath)], { cwd });
|
|
65
|
-
// #1948: hadolint runs with `--no-fail`, so it exits 0 even when it finds
|
|
66
|
-
// something. A nonzero exit therefore means hadolint itself failed, and
|
|
67
|
-
// zero parsed diagnostics out of whatever it printed is a parser break.
|
|
68
|
-
const run = parseToolRun("hadolint", {
|
|
69
|
-
result,
|
|
70
|
-
// EXIT TABLE (Hadolint 2.12 measured fixture): 0 clean; 1 findings; 2 error; other nonzero rejected.
|
|
71
|
-
exitCodes: { ran: [1, 2] },
|
|
72
|
-
}, (out) => parseHadolintOutput(out, ctx.filePath, cwd));
|
|
73
|
-
if (run.skipped)
|
|
74
|
-
return run.skipped;
|
|
75
|
-
const diagnostics = run.diagnostics;
|
|
76
|
-
return finishParsedRun({
|
|
77
|
-
tool: "hadolint",
|
|
78
|
-
ctx,
|
|
79
|
-
result,
|
|
80
|
-
diagnostics,
|
|
81
|
-
classify: (diagnostics) => {
|
|
82
|
-
const hasErrors = diagnostics.some((d) => d.severity === "error");
|
|
83
|
-
return {
|
|
84
|
-
status: "failed",
|
|
85
|
-
semantic: hasErrors ? "blocking" : "warning",
|
|
86
|
-
};
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
export default hadolintRunner;
|