pi-lens 4.3.0 → 4.4.0
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/CHANGELOG.md +1064 -0
- package/README.md +115 -25
- package/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/dist/chunk-22AVIGXS.js +560 -0
- package/dist/chunk-27BBHSZC.js +106 -0
- package/dist/chunk-2BEMIWEW.js +51 -0
- package/dist/chunk-2EECBNC5.js +89 -0
- package/dist/chunk-34U7PLGE.js +23 -0
- package/dist/chunk-3I5QFT3N.js +181 -0
- package/dist/chunk-3MED75HT.js +37 -0
- package/dist/chunk-47D2BO4S.js +87 -0
- package/dist/chunk-4RERDEXR.js +348 -0
- package/dist/chunk-4W2PLC4J.js +27 -0
- package/dist/chunk-52H5B5TC.js +202 -0
- package/dist/chunk-54B42YRX.js +27 -0
- package/dist/chunk-5RXBNSW2.js +266 -0
- package/dist/chunk-5THXD6X5.js +201 -0
- package/dist/chunk-5W3R6LFT.js +24 -0
- package/dist/chunk-5ZEJHV35.js +341 -0
- package/dist/chunk-6P62QVEA.js +118 -0
- package/dist/chunk-6QIUX4EP.js +459 -0
- package/dist/chunk-6VCD4VKZ.js +78 -0
- package/dist/chunk-7F72PXY2.js +326 -0
- package/dist/chunk-7FBF7NPR.js +998 -0
- package/dist/chunk-7U2IDNXN.js +37 -0
- package/dist/chunk-ABBOA7UD.js +157 -0
- package/dist/chunk-AHDW3GPE.js +50 -0
- package/dist/chunk-AJ3QXTRQ.js +756 -0
- package/dist/chunk-AJVLWNFN.js +1610 -0
- package/dist/chunk-AJXODZY6.js +112 -0
- package/dist/chunk-ARFCXG7S.js +84 -0
- package/dist/chunk-AS44CFQ4.js +708 -0
- package/dist/chunk-AWE5TMPO.js +38 -0
- package/dist/chunk-B3I2UUT4.js +4692 -0
- package/dist/chunk-BRJKOBZP.js +331 -0
- package/dist/chunk-BW5KFIQC.js +59 -0
- package/dist/chunk-C2AUYXQH.js +149 -0
- package/dist/chunk-CGGAIP7J.js +29 -0
- package/dist/chunk-D6QS3U6M.js +30 -0
- package/dist/chunk-DFVMIKMQ.js +349 -0
- package/dist/chunk-DIULIWKU.js +169 -0
- package/dist/chunk-DQ2NZ7C4.js +2317 -0
- package/dist/chunk-E2WFBRHM.js +213 -0
- package/dist/chunk-E4MAEDPM.js +50 -0
- package/dist/chunk-EOKRQ3SA.js +30 -0
- package/dist/chunk-F3AU2TMM.js +2626 -0
- package/dist/chunk-F3P7VQ7H.js +170 -0
- package/dist/chunk-FC4RP4I2.js +12 -0
- package/dist/chunk-FJNKANOS.js +32 -0
- package/dist/chunk-GUOGVTCQ.js +146 -0
- package/dist/chunk-GVXA6CCE.js +18 -0
- package/dist/chunk-HHYAELLJ.js +2334 -0
- package/dist/chunk-HMFXILPV.js +83 -0
- package/dist/chunk-HVUZXSWK.js +421 -0
- package/dist/chunk-HWBZIGMJ.js +62 -0
- package/dist/chunk-I3R7GKDR.js +17 -0
- package/dist/chunk-I7SPGOWI.js +55 -0
- package/dist/chunk-IIXOAGHR.js +38 -0
- package/dist/chunk-IVP5KAB7.js +2250 -0
- package/dist/chunk-IXEBJSUE.js +22 -0
- package/dist/chunk-JOLITGCC.js +27 -0
- package/dist/chunk-K6VYLB2U.js +145 -0
- package/dist/chunk-LJDODBBZ.js +78 -0
- package/dist/chunk-LNAKEO63.js +78 -0
- package/dist/chunk-LSMJ6KBE.js +4139 -0
- package/dist/chunk-LW6XKDZQ.js +5565 -0
- package/dist/chunk-N3YQJI6O.js +899 -0
- package/dist/chunk-NABLC7W3.js +148 -0
- package/dist/chunk-NKOUFPQF.js +659 -0
- package/dist/chunk-NL5GLMFI.js +211 -0
- package/dist/chunk-NMABWBZN.js +327 -0
- package/dist/chunk-NTHH2J74.js +27 -0
- package/dist/chunk-NTUJEGDZ.js +59 -0
- package/dist/chunk-NXL4FFQQ.js +47 -0
- package/dist/chunk-NXPS2L6U.js +466 -0
- package/dist/chunk-O5WILGMI.js +42 -0
- package/dist/chunk-O6TQT6RI.js +48 -0
- package/dist/chunk-OAXNDZJ7.js +323 -0
- package/dist/chunk-ODEEOXPH.js +44 -0
- package/dist/chunk-OQGFCZJ4.js +4533 -0
- package/dist/chunk-ORTMY4Q4.js +282 -0
- package/dist/chunk-OS32RNR2.js +442 -0
- package/dist/chunk-PAK6IDME.js +189 -0
- package/dist/chunk-PWFHBTSF.js +406 -0
- package/dist/chunk-Q5U6FMDI.js +2352 -0
- package/dist/chunk-QOZXJ4NA.js +3364 -0
- package/dist/chunk-QYF5S6P6.js +45 -0
- package/dist/chunk-RIISMHKN.js +36 -0
- package/dist/chunk-RPD4ZSB7.js +25 -0
- package/dist/chunk-RPD5K5NC.js +79 -0
- package/dist/chunk-RUOG5D2C.js +262 -0
- package/dist/chunk-T4ERT73Y.js +599 -0
- package/dist/chunk-T6D4Q4AQ.js +54 -0
- package/dist/chunk-TGPXLY2J.js +391 -0
- package/dist/chunk-TLGFBM3F.js +12116 -0
- package/dist/chunk-TO6WL3GM.js +88 -0
- package/dist/chunk-TT22N74J.js +517 -0
- package/dist/chunk-TVN5N6GY.js +21216 -0
- package/dist/chunk-U3VGR4VU.js +308 -0
- package/dist/chunk-UK3CMEAL.js +1250 -0
- package/dist/chunk-UOPVJQ4N.js +103 -0
- package/dist/chunk-UXVNL3D7.js +23 -0
- package/dist/chunk-UY752QSN.js +45 -0
- package/dist/chunk-V5PXFSZK.js +188 -0
- package/dist/chunk-V7R425XG.js +398 -0
- package/dist/chunk-VCSRSYLF.js +81 -0
- package/dist/chunk-VD4JQCQC.js +162 -0
- package/dist/chunk-VDBPVIKD.js +62 -0
- package/dist/chunk-VHQLPIRJ.js +114 -0
- package/dist/chunk-VN2AXLEX.js +5414 -0
- package/dist/chunk-VNMT7C64.js +478 -0
- package/dist/chunk-WONERJTP.js +309 -0
- package/dist/chunk-XECLWQZN.js +85 -0
- package/dist/chunk-XIMYZ3JA.js +27 -0
- package/dist/chunk-XK4CIILI.js +144 -0
- package/dist/chunk-Y4T27COV.js +562 -0
- package/dist/chunk-YGVYKNSN.js +1860 -0
- package/dist/chunk-YLF3PPT5.js +308 -0
- package/dist/chunk-YSNFMJKN.js +14 -0
- package/dist/chunk-Z3CCVDUB.js +76 -0
- package/dist/chunk-Z54ZSOBZ.js +61 -0
- package/dist/chunk-ZAWW3AF6.js +97 -0
- package/dist/chunk-ZMOL6RQC.js +167 -0
- package/dist/index.js +16456 -8335
- package/dist/mcp/analyze-cli.js +186 -232
- package/dist/mcp/cli.js +137 -98
- package/dist/mcp/server.js +22589 -1573
- package/dist/mcp/worker.js +97 -38
- package/dist/probes/installer.js +135 -0
- package/dist/workers/project-snapshot-persist-worker.js +22 -0
- package/dist/workers/review-graph-persist-worker.js +15 -0
- package/docs/agent-guide.md +13 -4
- package/docs/agent-tools.md +42 -0
- package/docs/ast-grep_rules_catalog.md +3 -2
- package/docs/configuration.md +20 -1
- package/docs/environment-variables.md +52 -2
- package/docs/features.md +8 -4
- package/docs/globalconfig.md +1 -0
- package/docs/io-bridge-v2-migration.md +94 -0
- package/docs/lsp-capability-matrix.md +36 -4
- package/docs/lsp-idle-eviction.md +124 -0
- package/docs/mcp.md +21 -5
- package/docs/merge-queue-rollout.md +77 -0
- package/docs/pi-lens-fixer.md +156 -88
- package/docs/pi-lens-investigator.md +74 -26
- package/docs/pi-lens-merge-policy.md +694 -0
- package/docs/pi-lens-monitor.md +73 -7
- package/docs/pi-lens-retro.md +6 -4
- package/docs/pi-lens-reviewer.md +188 -48
- package/docs/pi-lens-subagent.md +246 -45
- package/docs/pi-lens-warden.md +18 -7
- package/docs/public-api-stability.md +55 -0
- package/docs/release-qa-baseline.md +84 -17
- package/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/docs/servercapabilities.md +53 -49
- package/docs/settings.md +1 -0
- package/docs/usage.md +5 -1
- package/grammars/tree-sitter-bash.wasm +0 -0
- package/grammars/tree-sitter-bash.wasm.json +3 -3
- package/package.json +19 -7
- package/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/scripts/analyze-pi-lens-logs.mjs +1275 -62
- package/scripts/download-grammars.js +5 -0
- package/scripts/grammars.lock.json +6 -1
- package/scripts/install-selftest.mjs +33 -34
- package/scripts/lib/host-provided-deps.mjs +13 -4
- package/scripts/lib/web-tree-sitter-dir.mjs +18 -0
- package/dist/clients/actionable-warnings-logger.js +0 -35
- package/dist/clients/actionable-warnings.js +0 -1610
- package/dist/clients/advisory-provenance.js +0 -593
- package/dist/clients/agent-behavior-client.js +0 -147
- package/dist/clients/agent-nudge.js +0 -325
- package/dist/clients/analysed-root.js +0 -1
- package/dist/clients/ast-grep-client.js +0 -731
- package/dist/clients/ast-grep-rule-manager.js +0 -146
- package/dist/clients/ast-grep-tool-logger.js +0 -118
- package/dist/clients/ast-grep-types.js +0 -10
- package/dist/clients/ast-grep-yaml-synth.js +0 -154
- package/dist/clients/atomic-write-staging.js +0 -75
- package/dist/clients/atomic-write.js +0 -189
- package/dist/clients/availability-probe-flight.js +0 -12
- package/dist/clients/bash-file-access.js +0 -1056
- package/dist/clients/biome-client.js +0 -357
- package/dist/clients/blocker-freshness.js +0 -837
- package/dist/clients/blocker-past-eof.js +0 -129
- package/dist/clients/bootstrap.js +0 -569
- package/dist/clients/bounded-cache.js +0 -190
- package/dist/clients/bounded-pid-file-lock.js +0 -202
- package/dist/clients/bounded-telemetry.js +0 -295
- package/dist/clients/build-identity.js +0 -95
- package/dist/clients/bundled-resource-health.js +0 -113
- package/dist/clients/bus-events-logger.js +0 -105
- package/dist/clients/bus-publish.js +0 -171
- package/dist/clients/cache/rule-cache.js +0 -190
- package/dist/clients/cache-manager.js +0 -524
- package/dist/clients/cache-observability.js +0 -1313
- package/dist/clients/call-graph.js +0 -852
- package/dist/clients/cargo-manifest.js +0 -422
- package/dist/clients/cascade-budget.js +0 -196
- package/dist/clients/cascade-format.js +0 -315
- package/dist/clients/cascade-logger.js +0 -31
- package/dist/clients/cascade-types.js +0 -9
- package/dist/clients/child-unref.js +0 -124
- package/dist/clients/code-quality-warnings.js +0 -286
- package/dist/clients/codebase-model.js +0 -173
- package/dist/clients/collateral-test-role.js +0 -40
- package/dist/clients/complexity-client.js +0 -462
- package/dist/clients/config-core/deny.js +0 -221
- package/dist/clients/config-core/index.js +0 -50
- package/dist/clients/config-core/merge.js +0 -357
- package/dist/clients/config-core/normalize.js +0 -340
- package/dist/clients/config-core/process-spec.js +0 -248
- package/dist/clients/config-core/provenance.js +0 -164
- package/dist/clients/config-core/records.js +0 -218
- package/dist/clients/config-core/resolve.js +0 -125
- package/dist/clients/config-core/safe-object.js +0 -78
- package/dist/clients/config-core/schema.js +0 -165
- package/dist/clients/config-diagnostic-codes.js +0 -285
- package/dist/clients/config-locations.js +0 -388
- package/dist/clients/config-resolve.js +0 -798
- package/dist/clients/config-schema.js +0 -251
- package/dist/clients/config-warn.js +0 -407
- package/dist/clients/console-guard-install.js +0 -26
- package/dist/clients/cooperative-budget.js +0 -42
- package/dist/clients/dead-code-client.js +0 -510
- package/dist/clients/dead-code-logger.js +0 -30
- package/dist/clients/deadline-utils.js +0 -280
- package/dist/clients/debug-handles.js +0 -211
- package/dist/clients/debug-heap.js +0 -174
- package/dist/clients/deferred-lsp-work.js +0 -106
- package/dist/clients/degradation-ledger.js +0 -426
- package/dist/clients/demoted-finding-render.js +0 -169
- package/dist/clients/dependency-checker.js +0 -885
- package/dist/clients/deps/ast-grep-napi.js +0 -22
- package/dist/clients/deps/js-yaml.js +0 -9
- package/dist/clients/deps/minimatch.js +0 -4
- package/dist/clients/deps/pi-tui.js +0 -14
- package/dist/clients/deps/typebox.js +0 -14
- package/dist/clients/deps/vscode-jsonrpc.js +0 -1
- package/dist/clients/deps/web-tree-sitter.js +0 -24
- package/dist/clients/diagnostic-dispositions.js +0 -630
- package/dist/clients/diagnostic-line-freshness.js +0 -305
- package/dist/clients/diagnostic-logger.js +0 -73
- package/dist/clients/diagnostic-tracker.js +0 -105
- package/dist/clients/diagnostics-publish.js +0 -230
- package/dist/clients/dispatch/ast-grep-catalog.js +0 -65
- package/dist/clients/dispatch/auxiliary-lsp.js +0 -343
- package/dist/clients/dispatch/collect-later-tier.js +0 -35
- package/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
- package/dist/clients/dispatch/dispatcher.js +0 -1269
- package/dist/clients/dispatch/fact-provider-types.js +0 -1
- package/dist/clients/dispatch/fact-rule-runner.js +0 -17
- package/dist/clients/dispatch/fact-runner.js +0 -30
- package/dist/clients/dispatch/fact-scheduler.js +0 -68
- package/dist/clients/dispatch/fact-store.js +0 -377
- package/dist/clients/dispatch/facts/comment-facts.js +0 -22
- package/dist/clients/dispatch/facts/file-content.js +0 -19
- package/dist/clients/dispatch/facts/function-facts.js +0 -348
- package/dist/clients/dispatch/facts/import-facts.js +0 -204
- package/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
- package/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
- package/dist/clients/dispatch/finding-policy.js +0 -339
- package/dist/clients/dispatch/indent-detect.js +0 -417
- package/dist/clients/dispatch/inline-suppressions.js +0 -89
- package/dist/clients/dispatch/integration.js +0 -2377
- package/dist/clients/dispatch/lazy.js +0 -11
- package/dist/clients/dispatch/pending-runner-findings.js +0 -87
- package/dist/clients/dispatch/plan.js +0 -278
- package/dist/clients/dispatch/priorities.js +0 -20
- package/dist/clients/dispatch/rule-id-normalize.js +0 -50
- package/dist/clients/dispatch/rule-ignores.js +0 -69
- package/dist/clients/dispatch/rule-policy.js +0 -135
- package/dist/clients/dispatch/rules/async-noise.js +0 -40
- package/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
- package/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
- package/dist/clients/dispatch/rules/error-obscuring.js +0 -32
- package/dist/clients/dispatch/rules/error-swallowing.js +0 -31
- package/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
- package/dist/clients/dispatch/rules/high-complexity.js +0 -72
- package/dist/clients/dispatch/rules/high-fan-out.js +0 -74
- package/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
- package/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
- package/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
- package/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
- package/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
- package/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
- package/dist/clients/dispatch/runner-context.js +0 -52
- package/dist/clients/dispatch/runners/actionlint.js +0 -111
- package/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/dist/clients/dispatch/runners/biome-check.js +0 -296
- package/dist/clients/dispatch/runners/cpp-check.js +0 -219
- package/dist/clients/dispatch/runners/credo.js +0 -82
- package/dist/clients/dispatch/runners/cue-vet.js +0 -416
- package/dist/clients/dispatch/runners/dart-analyze.js +0 -183
- package/dist/clients/dispatch/runners/detekt.js +0 -176
- package/dist/clients/dispatch/runners/dotnet-build.js +0 -164
- package/dist/clients/dispatch/runners/elixir-check.js +0 -195
- package/dist/clients/dispatch/runners/eslint.js +0 -137
- package/dist/clients/dispatch/runners/fact-rules.js +0 -29
- package/dist/clients/dispatch/runners/fish-indent.js +0 -69
- package/dist/clients/dispatch/runners/gleam-check.js +0 -167
- package/dist/clients/dispatch/runners/go-vet.js +0 -104
- package/dist/clients/dispatch/runners/golangci-lint.js +0 -135
- package/dist/clients/dispatch/runners/hadolint.js +0 -91
- package/dist/clients/dispatch/runners/helm-lint.js +0 -171
- package/dist/clients/dispatch/runners/helm-render.js +0 -940
- package/dist/clients/dispatch/runners/htmlhint.js +0 -117
- package/dist/clients/dispatch/runners/index.js +0 -108
- package/dist/clients/dispatch/runners/javac.js +0 -99
- package/dist/clients/dispatch/runners/ktlint.js +0 -110
- package/dist/clients/dispatch/runners/lsp.js +0 -379
- package/dist/clients/dispatch/runners/markdownlint.js +0 -167
- package/dist/clients/dispatch/runners/mypy.js +0 -102
- package/dist/clients/dispatch/runners/oxlint.js +0 -414
- package/dist/clients/dispatch/runners/php-lint.js +0 -85
- package/dist/clients/dispatch/runners/phpstan.js +0 -120
- package/dist/clients/dispatch/runners/prisma-validate.js +0 -62
- package/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
- package/dist/clients/dispatch/runners/pyright.js +0 -169
- package/dist/clients/dispatch/runners/rubocop.js +0 -99
- package/dist/clients/dispatch/runners/ruff.js +0 -88
- package/dist/clients/dispatch/runners/rust-clippy.js +0 -256
- package/dist/clients/dispatch/runners/shellcheck.js +0 -173
- package/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/dist/clients/dispatch/runners/spellcheck.js +0 -128
- package/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/dist/clients/dispatch/runners/sqlfluff.js +0 -183
- package/dist/clients/dispatch/runners/stylelint.js +0 -166
- package/dist/clients/dispatch/runners/swiftlint.js +0 -163
- package/dist/clients/dispatch/runners/taplo.js +0 -174
- package/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/dist/clients/dispatch/runners/tflint.js +0 -125
- package/dist/clients/dispatch/runners/tree-sitter.js +0 -643
- package/dist/clients/dispatch/runners/trivy-config.js +0 -253
- package/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
- package/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
- package/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
- package/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
- package/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
- package/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
- package/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
- package/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
- package/dist/clients/dispatch/runners/utils.js +0 -15
- package/dist/clients/dispatch/runners/vale.js +0 -128
- package/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/dist/clients/dispatch/runners/yamllint.js +0 -95
- package/dist/clients/dispatch/runners/zig-check.js +0 -79
- package/dist/clients/dispatch/suppress-writer.js +0 -79
- package/dist/clients/dispatch/tool-profile.js +0 -30
- package/dist/clients/dispatch/types.js +0 -21
- package/dist/clients/dispatch/utils/format-utils.js +0 -45
- package/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
- package/dist/clients/disposition-logger.js +0 -32
- package/dist/clients/disposition-publish.js +0 -124
- package/dist/clients/durable-store.js +0 -97
- package/dist/clients/effective-config.js +0 -415
- package/dist/clients/env-utils.js +0 -83
- package/dist/clients/error-class.js +0 -23
- package/dist/clients/eval-timestamp.js +0 -17
- package/dist/clients/event-loop-hold.js +0 -274
- package/dist/clients/event-loop-monitor.js +0 -250
- package/dist/clients/extension-log.js +0 -504
- package/dist/clients/extension-mode.js +0 -73
- package/dist/clients/feature-hints.js +0 -103
- package/dist/clients/file-kinds.js +0 -412
- package/dist/clients/file-role.js +0 -134
- package/dist/clients/file-time.js +0 -160
- package/dist/clients/file-utils.js +0 -1032
- package/dist/clients/finding-delivery-gate.js +0 -494
- package/dist/clients/finding-identity.js +0 -88
- package/dist/clients/fix-worklog.js +0 -103
- package/dist/clients/format-events-publish.js +0 -343
- package/dist/clients/format-service.js +0 -222
- package/dist/clients/formatters-lazy.js +0 -9
- package/dist/clients/formatters.js +0 -2032
- package/dist/clients/freshness-cadence.js +0 -17
- package/dist/clients/freshness.js +0 -38
- package/dist/clients/generated-artifacts.js +0 -394
- package/dist/clients/generation-guard.js +0 -215
- package/dist/clients/git-guard.js +0 -1136
- package/dist/clients/git-tracked-ignore.js +0 -243
- package/dist/clients/gitleaks-client.js +0 -509
- package/dist/clients/go-client.js +0 -104
- package/dist/clients/govulncheck-client.js +0 -605
- package/dist/clients/gradle-ktfmt-style.js +0 -348
- package/dist/clients/grammar-source.js +0 -465
- package/dist/clients/gzip-stage-write.js +0 -135
- package/dist/clients/hashline-anchor.js +0 -424
- package/dist/clients/hook-budgets.js +0 -76
- package/dist/clients/host-edit-normalize.js +0 -140
- package/dist/clients/host-ports.js +0 -39
- package/dist/clients/indent-retarget.js +0 -154
- package/dist/clients/inline-blocker-dispositions.js +0 -186
- package/dist/clients/install-diagnostics.js +0 -156
- package/dist/clients/installer/index.js +0 -5416
- package/dist/clients/installer/managed-tool-refresh-session.js +0 -58
- package/dist/clients/installer/managed-tool-refresh.js +0 -783
- package/dist/clients/instance-reaper-state.js +0 -7
- package/dist/clients/instance-reaper.js +0 -1137
- package/dist/clients/instance-registry-lock.js +0 -145
- package/dist/clients/instance-registry.js +0 -773
- package/dist/clients/jscpd-client.js +0 -378
- package/dist/clients/json-cache-read.js +0 -65
- package/dist/clients/knip-client.js +0 -788
- package/dist/clients/language-policy.js +0 -252
- package/dist/clients/language-profile.js +0 -361
- package/dist/clients/language-registry.js +0 -603
- package/dist/clients/latency-logger.js +0 -727
- package/dist/clients/lazy-import.js +0 -21
- package/dist/clients/ledger-bounds.js +0 -54
- package/dist/clients/lens-config.js +0 -404
- package/dist/clients/lens-engine.js +0 -358
- package/dist/clients/lens-events.js +0 -125
- package/dist/clients/lens-flag-registry.js +0 -467
- package/dist/clients/lens-map.js +0 -1156
- package/dist/clients/live-bus-emitter.js +0 -74
- package/dist/clients/log-cleanup.js +0 -222
- package/dist/clients/lsp/aggregation.js +0 -178
- package/dist/clients/lsp/cascade-tier.js +0 -421
- package/dist/clients/lsp/client.js +0 -4593
- package/dist/clients/lsp/config.js +0 -691
- package/dist/clients/lsp/content-limits.js +0 -41
- package/dist/clients/lsp/diagnostic-binding.js +0 -225
- package/dist/clients/lsp/document-drift.js +0 -467
- package/dist/clients/lsp/edits.js +0 -1219
- package/dist/clients/lsp/index.js +0 -8305
- package/dist/clients/lsp/inferred-project.js +0 -216
- package/dist/clients/lsp/jvm-runtime.js +0 -298
- package/dist/clients/lsp/language.js +0 -63
- package/dist/clients/lsp/launch.js +0 -746
- package/dist/clients/lsp/lombok.js +0 -158
- package/dist/clients/lsp/path-utils.js +0 -5
- package/dist/clients/lsp/pending-aux-coverage.js +0 -251
- package/dist/clients/lsp/position-encoding.js +0 -61
- package/dist/clients/lsp/ruby-drive-dirs.js +0 -83
- package/dist/clients/lsp/server.js +0 -3290
- package/dist/clients/lsp/session-roots.js +0 -192
- package/dist/clients/lsp/spawn-history.js +0 -17
- package/dist/clients/lsp/sync-kind.js +0 -56
- package/dist/clients/lsp/tsserver-sync.js +0 -332
- package/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
- package/dist/clients/lsp/wait-policy/classification.js +0 -85
- package/dist/clients/lsp/wait-policy/index.js +0 -10
- package/dist/clients/lsp/wait-policy/strategies.js +0 -392
- package/dist/clients/lsp/watch-queue.js +0 -61
- package/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
- package/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
- package/dist/clients/lsp/workspace-sweep-hold.js +0 -184
- package/dist/clients/lsp-budget.js +0 -186
- package/dist/clients/lsp-document-symbols.js +0 -110
- package/dist/clients/lsp-lazy.js +0 -9
- package/dist/clients/lsp-mutation.js +0 -396
- package/dist/clients/lsp-status.js +0 -59
- package/dist/clients/map-with-concurrency.js +0 -40
- package/dist/clients/mcp/analyze.js +0 -420
- package/dist/clients/mcp/host-shim.js +0 -31
- package/dist/clients/mcp/ipc.js +0 -523
- package/dist/clients/mcp/review.js +0 -197
- package/dist/clients/mcp/session.js +0 -412
- package/dist/clients/memory-sampler.js +0 -208
- package/dist/clients/message-end-attribution.js +0 -30
- package/dist/clients/metrics-client.js +0 -107
- package/dist/clients/metrics-history.js +0 -327
- package/dist/clients/middle-man-analysis.js +0 -263
- package/dist/clients/model-provider.js +0 -53
- package/dist/clients/module-report-lsp.js +0 -189
- package/dist/clients/module-report.js +0 -2150
- package/dist/clients/mutating-tool.js +0 -651
- package/dist/clients/mutation-attribution.js +0 -368
- package/dist/clients/mutation-bridge.js +0 -240
- package/dist/clients/ndjson-logger.js +0 -734
- package/dist/clients/observed-mutation-sources.js +0 -101
- package/dist/clients/observed-mutation.js +0 -1253
- package/dist/clients/oldtext-autopatch.js +0 -128
- package/dist/clients/opaque-mutation-scan.js +0 -496
- package/dist/clients/opengrep-client.js +0 -333
- package/dist/clients/opengrep-config.js +0 -76
- package/dist/clients/package-manager.js +0 -607
- package/dist/clients/package-root.js +0 -38
- package/dist/clients/partial-edit-apply.js +0 -439
- package/dist/clients/path-attribution-telemetry.js +0 -43
- package/dist/clients/path-keyed-map.js +0 -108
- package/dist/clients/path-utils.js +0 -1244
- package/dist/clients/performance-report.js +0 -331
- package/dist/clients/persist-debounce.js +0 -70
- package/dist/clients/persistent-reverify.js +0 -271
- package/dist/clients/php-cs-fixer-config.js +0 -119
- package/dist/clients/pipeline.js +0 -1480
- package/dist/clients/post-autofix-notice.js +0 -37
- package/dist/clients/print-mode.js +0 -21
- package/dist/clients/probe-home-state.js +0 -228
- package/dist/clients/process-bridge.js +0 -66
- package/dist/clients/process-singletons.js +0 -210
- package/dist/clients/process-snapshot.js +0 -68
- package/dist/clients/project-changes.js +0 -181
- package/dist/clients/project-conventions.js +0 -171
- package/dist/clients/project-diagnostics/cache.js +0 -137
- package/dist/clients/project-diagnostics/extractors.js +0 -109
- package/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
- package/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
- package/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
- package/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
- package/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
- package/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
- package/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
- package/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
- package/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
- package/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
- package/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
- package/dist/clients/project-diagnostics/scanner.js +0 -520
- package/dist/clients/project-diagnostics/types.js +0 -1
- package/dist/clients/project-lens-config.js +0 -807
- package/dist/clients/project-report.js +0 -701
- package/dist/clients/project-scale.js +0 -237
- package/dist/clients/project-scan-policy.js +0 -11
- package/dist/clients/project-snapshot-fingerprint.js +0 -48
- package/dist/clients/project-snapshot-persist-worker.js +0 -20
- package/dist/clients/project-snapshot.js +0 -1653
- package/dist/clients/project-trust.js +0 -181
- package/dist/clients/python-environment.js +0 -217
- package/dist/clients/python-provenance.js +0 -639
- package/dist/clients/quiet-window-config.js +0 -47
- package/dist/clients/quiet-window.js +0 -236
- package/dist/clients/read-bridge.js +0 -139
- package/dist/clients/read-expansion.js +0 -266
- package/dist/clients/read-guard-logger.js +0 -251
- package/dist/clients/read-guard-tool-lines.js +0 -1306
- package/dist/clients/read-guard.js +0 -1561
- package/dist/clients/recent-touches.js +0 -240
- package/dist/clients/redact/secrets.js +0 -449
- package/dist/clients/resource-sampler.js +0 -628
- package/dist/clients/reverse-deps.js +0 -270
- package/dist/clients/review-graph/builder.js +0 -5126
- package/dist/clients/review-graph/format.js +0 -33
- package/dist/clients/review-graph/git-identity.js +0 -163
- package/dist/clients/review-graph/import-resolvers.js +0 -481
- package/dist/clients/review-graph/persist-worker.js +0 -10
- package/dist/clients/review-graph/query.js +0 -244
- package/dist/clients/review-graph/revision-drift.js +0 -21
- package/dist/clients/review-graph/service.js +0 -96
- package/dist/clients/review-graph/shared-extraction-ir.js +0 -82
- package/dist/clients/review-graph/symbol-id.js +0 -103
- package/dist/clients/review-graph/tsconfig-paths.js +0 -299
- package/dist/clients/review-graph/types.js +0 -1
- package/dist/clients/review-graph/workspace-modules.js +0 -449
- package/dist/clients/review-graph-logger.js +0 -81
- package/dist/clients/ruff-client.js +0 -179
- package/dist/clients/rules-scanner.js +0 -131
- package/dist/clients/run-duration.js +0 -55
- package/dist/clients/runtime-agent-end.js +0 -746
- package/dist/clients/runtime-config.js +0 -77
- package/dist/clients/runtime-context.js +0 -211
- package/dist/clients/runtime-coordinator.js +0 -1324
- package/dist/clients/runtime-session.js +0 -2485
- package/dist/clients/runtime-tool-call.js +0 -1295
- package/dist/clients/runtime-tool-result.js +0 -2049
- package/dist/clients/runtime-turn.js +0 -3767
- package/dist/clients/rust-client.js +0 -97
- package/dist/clients/safe-spawn.js +0 -2357
- package/dist/clients/sanitize.js +0 -286
- package/dist/clients/scan-utils.js +0 -25
- package/dist/clients/scratch-tree-policy.js +0 -165
- package/dist/clients/search-read-registration.js +0 -94
- package/dist/clients/secret-findings.js +0 -114
- package/dist/clients/security-scan-client.js +0 -352
- package/dist/clients/session-event-guard.js +0 -297
- package/dist/clients/session-lifecycle.js +0 -484
- package/dist/clients/session-start-observability.js +0 -94
- package/dist/clients/session-state-store.js +0 -101
- package/dist/clients/session-summary.js +0 -15
- package/dist/clients/sessionstart-logger.js +0 -27
- package/dist/clients/sg-runner.js +0 -876
- package/dist/clients/sgconfig.js +0 -347
- package/dist/clients/shared-checkout-guard.js +0 -338
- package/dist/clients/single-flight.js +0 -158
- package/dist/clients/situational-tool-telemetry.js +0 -108
- package/dist/clients/skills-resolver.js +0 -141
- package/dist/clients/slow-fs.js +0 -138
- package/dist/clients/smells-rollup.js +0 -231
- package/dist/clients/source-filter.js +0 -596
- package/dist/clients/source-walker.js +0 -211
- package/dist/clients/spawn-output-cap.js +0 -120
- package/dist/clients/spawn-timeout-cooldown.js +0 -110
- package/dist/clients/stale-marker.js +0 -17
- package/dist/clients/startup-scan.js +0 -400
- package/dist/clients/startup-timing.js +0 -130
- package/dist/clients/string-utils.js +0 -33
- package/dist/clients/subagent-mode.js +0 -111
- package/dist/clients/symbol-containment.js +0 -24
- package/dist/clients/symbol-types.js +0 -5
- package/dist/clients/test-runner-client.js +0 -2507
- package/dist/clients/test-runner-delivery.js +0 -287
- package/dist/clients/todo-scanner.js +0 -229
- package/dist/clients/tool-agreement.js +0 -423
- package/dist/clients/tool-config.js +0 -249
- package/dist/clients/tool-cwd.js +0 -270
- package/dist/clients/tool-definition.js +0 -47
- package/dist/clients/tool-event.js +0 -105
- package/dist/clients/tool-policy.js +0 -2755
- package/dist/clients/tool-probe.js +0 -53
- package/dist/clients/tool-render.js +0 -156
- package/dist/clients/tool-set-policy.js +0 -118
- package/dist/clients/tree-sitter-cache.js +0 -364
- package/dist/clients/tree-sitter-client.js +0 -4195
- package/dist/clients/tree-sitter-logger.js +0 -100
- package/dist/clients/tree-sitter-navigator.js +0 -269
- package/dist/clients/tree-sitter-query-loader.js +0 -569
- package/dist/clients/tree-sitter-shared.js +0 -158
- package/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
- package/dist/clients/trivy-client.js +0 -467
- package/dist/clients/tui-fit.js +0 -50
- package/dist/clients/turn-context.js +0 -52
- package/dist/clients/turn-end/lane.js +0 -51
- package/dist/clients/turn-end/lanes/govulncheck.js +0 -112
- package/dist/clients/turn-end/lanes/secrets.js +0 -204
- package/dist/clients/turn-summary-render.js +0 -72
- package/dist/clients/turn-summary.js +0 -132
- package/dist/clients/typos-config.js +0 -29
- package/dist/clients/user-notify.js +0 -51
- package/dist/clients/vanished-instance-marker.js +0 -57
- package/dist/clients/warm-attach.js +0 -305
- package/dist/clients/widget-state.js +0 -1808
- package/dist/clients/word-index-logger.js +0 -49
- package/dist/clients/word-index-store.js +0 -459
- package/dist/clients/word-index.js +0 -2080
- package/dist/clients/workspace-topology.js +0 -443
- package/dist/clients/write-ordering-guard.js +0 -65
- package/dist/clients/zizmor-config.js +0 -340
- package/dist/i18n.js +0 -69
- package/dist/mcp/build-staleness.js +0 -124
- package/dist/scripts/lib/process-scan.mjs +0 -583
- package/dist/scripts/lib/skills-predicate.mjs +0 -129
- package/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
- package/dist/tools/activate-tools.js +0 -87
- package/dist/tools/ast-grep-outline.js +0 -137
- package/dist/tools/ast-grep-replace.js +0 -244
- package/dist/tools/ast-grep-search.js +0 -762
- package/dist/tools/effective-config.js +0 -90
- package/dist/tools/lens-diagnostic-mark.js +0 -375
- package/dist/tools/lens-diagnostics.js +0 -2571
- package/dist/tools/lsp-diagnostics.js +0 -1745
- package/dist/tools/lsp-navigation.js +0 -1367
- package/dist/tools/lsp-structured-output.js +0 -294
- package/dist/tools/module-report.js +0 -382
- package/dist/tools/project-report.js +0 -86
- package/dist/tools/render-compact.js +0 -374
- package/dist/tools/scan-progress.js +0 -53
- package/dist/tools/shared.js +0 -29
- package/dist/tools/symbol-search.js +0 -155
|
@@ -1,412 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File Kind Detection for pi-lens
|
|
3
|
-
*
|
|
4
|
-
* Centralized file type detection to avoid duplication across clients.
|
|
5
|
-
* Maps file extensions and paths to semantic file kinds.
|
|
6
|
-
*/
|
|
7
|
-
import { basename, extname, win32 } from "node:path";
|
|
8
|
-
import * as path from "node:path";
|
|
9
|
-
import { isWindowsPath } from "./path-utils.js";
|
|
10
|
-
import { findNearestDirWithMarker } from "./workspace-topology.js";
|
|
11
|
-
// --- Extension Maps ---
|
|
12
|
-
export const KIND_EXTENSIONS = {
|
|
13
|
-
clojure: [".clj", ".cljc", ".cljs", ".edn"],
|
|
14
|
-
cmake: [".cmake"],
|
|
15
|
-
csharp: [".cs"],
|
|
16
|
-
css: [".css", ".less", ".sass", ".scss"],
|
|
17
|
-
cue: [".cue"],
|
|
18
|
-
// From llvm-project/clang/lib/Driver/Types.cpp clang::driver::types::lookupTypeForExtension:
|
|
19
|
-
cxx: [
|
|
20
|
-
// C
|
|
21
|
-
".c",
|
|
22
|
-
".h",
|
|
23
|
-
// C++
|
|
24
|
-
".c++",
|
|
25
|
-
".cc",
|
|
26
|
-
".cp",
|
|
27
|
-
".cpp",
|
|
28
|
-
".cxx",
|
|
29
|
-
".hh",
|
|
30
|
-
".hpp",
|
|
31
|
-
".hxx",
|
|
32
|
-
// C++ include files
|
|
33
|
-
".inl",
|
|
34
|
-
".ipp",
|
|
35
|
-
".tpp",
|
|
36
|
-
".txx",
|
|
37
|
-
// C++20 module interface files
|
|
38
|
-
".c++m",
|
|
39
|
-
".cppm",
|
|
40
|
-
".cxxm",
|
|
41
|
-
".ixx",
|
|
42
|
-
// CUDA
|
|
43
|
-
".cu",
|
|
44
|
-
// HIP
|
|
45
|
-
".hip",
|
|
46
|
-
// CUDA/HIP header convention; clang's driver table omits `.cuh`, but
|
|
47
|
-
// projects use it for C++ headers that must remain in the cxx kind (#2986).
|
|
48
|
-
".cuh",
|
|
49
|
-
// Objective-C
|
|
50
|
-
".m",
|
|
51
|
-
".mm",
|
|
52
|
-
// OpenCL
|
|
53
|
-
".cl",
|
|
54
|
-
".clcpp",
|
|
55
|
-
],
|
|
56
|
-
dart: [".dart"],
|
|
57
|
-
docker: [".dockerfile"],
|
|
58
|
-
elixir: [".ex", ".exs"],
|
|
59
|
-
fish: [".fish"],
|
|
60
|
-
fsharp: [".fs", ".fsi", ".fsx"],
|
|
61
|
-
gleam: [".gleam"],
|
|
62
|
-
go: [".go"],
|
|
63
|
-
haskell: [".hs", ".lhs"],
|
|
64
|
-
"helm-template": [".tpl"],
|
|
65
|
-
html: [".htm", ".html"],
|
|
66
|
-
java: [".java"],
|
|
67
|
-
json: [".json", ".json5", ".jsonc"],
|
|
68
|
-
jsts: [
|
|
69
|
-
".cjs",
|
|
70
|
-
".cts",
|
|
71
|
-
".js",
|
|
72
|
-
".jsx",
|
|
73
|
-
".mjs",
|
|
74
|
-
".mts",
|
|
75
|
-
".svelte",
|
|
76
|
-
".ts",
|
|
77
|
-
".tsx",
|
|
78
|
-
".vue",
|
|
79
|
-
],
|
|
80
|
-
kotlin: [".kt", ".kts"],
|
|
81
|
-
lua: [".lua"],
|
|
82
|
-
markdown: [".md", ".mdx"],
|
|
83
|
-
nix: [".nix"],
|
|
84
|
-
ocaml: [".ml", ".mli"],
|
|
85
|
-
php: [".php"],
|
|
86
|
-
powershell: [".ps1", ".psm1", ".psd1"],
|
|
87
|
-
prisma: [".prisma"],
|
|
88
|
-
python: [".py", ".pyi"],
|
|
89
|
-
ruby: [".gemspec", ".rake", ".rb", ".ru"],
|
|
90
|
-
rust: [".rs"],
|
|
91
|
-
shell: [".bash", ".sh", ".zsh"],
|
|
92
|
-
sql: [".sql"],
|
|
93
|
-
swift: [".swift"],
|
|
94
|
-
terraform: [".tf", ".tfvars"],
|
|
95
|
-
terragrunt: [],
|
|
96
|
-
toml: [".toml"],
|
|
97
|
-
yaml: [".yaml", ".yml"],
|
|
98
|
-
zig: [".zig", ".zon"],
|
|
99
|
-
};
|
|
100
|
-
/** Return whether a path has an extension registered for the given file kind. */
|
|
101
|
-
function hasKindExtension(filePath, kind) {
|
|
102
|
-
const extension = extname(filePath).toLowerCase();
|
|
103
|
-
return KIND_EXTENSIONS[kind].some((candidate) => candidate === extension);
|
|
104
|
-
}
|
|
105
|
-
// Fact providers intentionally stay on the ordinary JS/TS source extensions.
|
|
106
|
-
// Vue/Svelte files are classified as jsts for project-wide discovery, but their
|
|
107
|
-
// embedded-language contents are not valid inputs for these tree-sitter facts.
|
|
108
|
-
// Keep that one policy decision here so the function and import providers agree.
|
|
109
|
-
const JSTS_FACT_EXTENSIONS = new Set(KIND_EXTENSIONS.jsts.filter((extension) => ![".vue", ".svelte"].includes(extension)));
|
|
110
|
-
/** Whether the JS/TS fact providers should parse this path. */
|
|
111
|
-
export function isJstsFactFile(filePath) {
|
|
112
|
-
return JSTS_FACT_EXTENSIONS.has(extname(filePath).toLowerCase());
|
|
113
|
-
}
|
|
114
|
-
// Bash access tracking also accepts common text/config files which do not have
|
|
115
|
-
// a semantic FileKind. Every source extension is derived from KIND_EXTENSIONS;
|
|
116
|
-
// only this explicit legacy text/config allowlist lives outside that registry.
|
|
117
|
-
const NON_KIND_READABLE_EXTENSIONS = new Set([
|
|
118
|
-
".txt",
|
|
119
|
-
".env",
|
|
120
|
-
".cfg",
|
|
121
|
-
".conf",
|
|
122
|
-
".ini",
|
|
123
|
-
".xml",
|
|
124
|
-
]);
|
|
125
|
-
/** Whether bash file-access parsing should treat a path as source-like. */
|
|
126
|
-
export function isReadableSourceFile(filePath) {
|
|
127
|
-
const extension = extname(filePath).toLowerCase();
|
|
128
|
-
return (Object.keys(KIND_EXTENSIONS).some((kind) => hasKindExtension(filePath, kind)) || NON_KIND_READABLE_EXTENSIONS.has(extension));
|
|
129
|
-
}
|
|
130
|
-
// --- Shared Project Root Markers ---
|
|
131
|
-
/**
|
|
132
|
-
* .NET project/solution root-marker globs (refs #895). Single source of truth
|
|
133
|
-
* consumed by BOTH root-resolution subsystems — language-profile.ts
|
|
134
|
-
* (PROJECT_MARKERS_BY_KIND / ROOT_MARKERS_BY_KIND) and lsp/server.ts
|
|
135
|
-
* (CSharpServer / OmniSharpServer / FSharpServer root detectors) — following
|
|
136
|
-
* the KIND_EXTENSIONS pattern: never hand-copy these lists at a call site.
|
|
137
|
-
* tests/clients/dotnet-root-markers.test.ts asserts both subsystems recognize
|
|
138
|
-
* every marker here, so a call site drifting from this list fails CI.
|
|
139
|
-
*/
|
|
140
|
-
export const DOTNET_CSHARP_ROOT_MARKERS = [
|
|
141
|
-
"*.csproj",
|
|
142
|
-
"*.sln",
|
|
143
|
-
"*.slnx",
|
|
144
|
-
];
|
|
145
|
-
export const DOTNET_FSHARP_ROOT_MARKERS = [
|
|
146
|
-
"*.fsproj",
|
|
147
|
-
"*.sln",
|
|
148
|
-
];
|
|
149
|
-
/**
|
|
150
|
-
* Terragrunt's unit/root entrypoint filenames, lowercase. Single source of truth
|
|
151
|
-
* for every subsystem that has to agree on what counts as a terragrunt file —
|
|
152
|
-
* SPECIAL_FILENAMES below, tool-policy.ts's linter and formatter policies,
|
|
153
|
-
* formatters.ts's terragruntHclFormatter, and language-profile.ts's project/root
|
|
154
|
-
* markers. Same rule as the .NET markers above: never hand-copy this list at a
|
|
155
|
-
* call site. tests/clients/terragrunt-filenames.test.ts asserts every consumer
|
|
156
|
-
* honors every name here, so a drifting call site fails CI.
|
|
157
|
-
*/
|
|
158
|
-
export const TERRAGRUNT_FILENAMES = [
|
|
159
|
-
"terragrunt.hcl",
|
|
160
|
-
"root.hcl",
|
|
161
|
-
];
|
|
162
|
-
// Reverse map: extension → file kind (for fast lookup)
|
|
163
|
-
const EXT_TO_KIND = new Map();
|
|
164
|
-
for (const [kind, exts] of Object.entries(KIND_EXTENSIONS)) {
|
|
165
|
-
for (const ext of exts) {
|
|
166
|
-
EXT_TO_KIND.set(ext.toLowerCase(), kind);
|
|
167
|
-
}
|
|
168
|
-
// Also register without leading dot
|
|
169
|
-
for (const ext of exts) {
|
|
170
|
-
if (ext.startsWith(".")) {
|
|
171
|
-
EXT_TO_KIND.set(ext.slice(1).toLowerCase(), kind);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// Special filenames that indicate a file kind. Exported so other seams that
|
|
176
|
-
// classify by basename (e.g. lsp/language.ts's language-id resolution) derive
|
|
177
|
-
// from this list instead of hand-keeping their own basename literals (#1594).
|
|
178
|
-
export const SPECIAL_FILENAMES = [
|
|
179
|
-
{ pattern: /^CMakeLists\.txt$/i, kind: "cmake" },
|
|
180
|
-
{ pattern: /^Makefile$/i, kind: "shell" },
|
|
181
|
-
{ pattern: /^Dockerfile(\.\w+)?$/i, kind: "docker" },
|
|
182
|
-
...TERRAGRUNT_FILENAMES.map((name) => ({
|
|
183
|
-
pattern: new RegExp(`^${name.replaceAll(".", "\\.")}$`, "i"),
|
|
184
|
-
kind: "terragrunt",
|
|
185
|
-
})),
|
|
186
|
-
];
|
|
187
|
-
// --- Detection Functions ---
|
|
188
|
-
/**
|
|
189
|
-
* Helm renders YAML-looking files as Go templates before they become YAML.
|
|
190
|
-
* Require the shared chart-root marker before promoting a YAML template, so
|
|
191
|
-
* ordinary repositories can use a `templates/` directory without entering
|
|
192
|
-
* Helm dispatch. `.tpl` remains extension-classified below.
|
|
193
|
-
*/
|
|
194
|
-
export function isHelmYamlTemplatePath(filePath) {
|
|
195
|
-
const templatesSegment = isWindowsPath(filePath)
|
|
196
|
-
? /[\\/]templates[\\/]/i
|
|
197
|
-
: /\/templates\//i;
|
|
198
|
-
if (!templatesSegment.test(filePath) || !/\.ya?ml$/i.test(filePath)) {
|
|
199
|
-
return false;
|
|
200
|
-
}
|
|
201
|
-
const pathApi = isWindowsPath(filePath) ? win32 : path;
|
|
202
|
-
return Boolean(findNearestDirWithMarker(pathApi.dirname(filePath), "chartYamlPath"));
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Detect the file kind from a file path.
|
|
206
|
-
* Returns the semantic file kind or undefined if unknown.
|
|
207
|
-
*/
|
|
208
|
-
export function detectFileKind(filePath) {
|
|
209
|
-
if (!filePath || typeof filePath !== "string") {
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
if (isHelmYamlTemplatePath(filePath)) {
|
|
213
|
-
return "helm-template";
|
|
214
|
-
}
|
|
215
|
-
// Check special filenames first
|
|
216
|
-
const base = basename(filePath);
|
|
217
|
-
for (const { pattern, kind } of SPECIAL_FILENAMES) {
|
|
218
|
-
if (pattern.test(base)) {
|
|
219
|
-
return kind;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
// Check by extension
|
|
223
|
-
const ext = extname(filePath).toLowerCase();
|
|
224
|
-
return EXT_TO_KIND.get(ext);
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Check if a file kind is supported by a specific tool or capability.
|
|
228
|
-
*
|
|
229
|
-
* @example
|
|
230
|
-
* // Check if TypeScript file
|
|
231
|
-
* if (isFileKind(filePath, "jsts")) { ... }
|
|
232
|
-
*
|
|
233
|
-
* // Check for multiple kinds
|
|
234
|
-
* if (isFileKind(filePath, ["jsts", "python"])) { ... }
|
|
235
|
-
*/
|
|
236
|
-
export function isFileKind(filePath, kind) {
|
|
237
|
-
const detected = detectFileKind(filePath);
|
|
238
|
-
if (!detected)
|
|
239
|
-
return false;
|
|
240
|
-
if (Array.isArray(kind)) {
|
|
241
|
-
return kind.includes(detected);
|
|
242
|
-
}
|
|
243
|
-
return detected === kind;
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Get all file kinds that match a given file extension.
|
|
247
|
-
* Useful for listing which tools might handle a file.
|
|
248
|
-
*/
|
|
249
|
-
export function getFileKindsForExtension(ext) {
|
|
250
|
-
const normalizedExt = ext.startsWith(".") ? ext : `.${ext}`;
|
|
251
|
-
const kind = EXT_TO_KIND.get(normalizedExt.toLowerCase());
|
|
252
|
-
return kind ? [kind] : [];
|
|
253
|
-
}
|
|
254
|
-
// --- Code vs non-code kind classification (#894 review) ---------------------
|
|
255
|
-
//
|
|
256
|
-
// Broadened enumeration made data/doc/markup kinds (json/yaml/markdown/…)
|
|
257
|
-
// visible to every project-wide walk. Those kinds must not outrank real
|
|
258
|
-
// program source wherever a capped budget or a "dominant language" ranking is
|
|
259
|
-
// involved: a TS repo with more .json/.yml than .ts files must still warm
|
|
260
|
-
// tsserver first (#203), and 2000 locale/fixture JSON files ahead of the code
|
|
261
|
-
// dirs must not exhaust a walk's file budget before any source file is seen.
|
|
262
|
-
// This partition is the single authority for that distinction — every FileKind
|
|
263
|
-
// MUST appear in exactly one of the two sets
|
|
264
|
-
// (tests/clients/scannable-extension-coverage.test.ts enforces it, so a newly
|
|
265
|
-
// registered kind cannot be silently unclassified).
|
|
266
|
-
/** Kinds that are hand-written program source — prioritized in capped walks
|
|
267
|
-
* and in the dominant-language LSP warm ranking. */
|
|
268
|
-
export const CODE_KINDS = new Set([
|
|
269
|
-
"clojure",
|
|
270
|
-
"cmake",
|
|
271
|
-
"csharp",
|
|
272
|
-
"cue",
|
|
273
|
-
"cxx",
|
|
274
|
-
"dart",
|
|
275
|
-
"docker",
|
|
276
|
-
"elixir",
|
|
277
|
-
"fish",
|
|
278
|
-
"fsharp",
|
|
279
|
-
"gleam",
|
|
280
|
-
"go",
|
|
281
|
-
"haskell",
|
|
282
|
-
"helm-template",
|
|
283
|
-
"java",
|
|
284
|
-
"jsts",
|
|
285
|
-
"kotlin",
|
|
286
|
-
"lua",
|
|
287
|
-
"nix",
|
|
288
|
-
"ocaml",
|
|
289
|
-
"php",
|
|
290
|
-
"powershell",
|
|
291
|
-
"prisma",
|
|
292
|
-
"python",
|
|
293
|
-
"ruby",
|
|
294
|
-
"rust",
|
|
295
|
-
"shell",
|
|
296
|
-
"sql",
|
|
297
|
-
"swift",
|
|
298
|
-
"terraform",
|
|
299
|
-
"terragrunt",
|
|
300
|
-
"zig",
|
|
301
|
-
]);
|
|
302
|
-
/** Data/doc/markup/config kinds — still enumerated (that's #894's point), but
|
|
303
|
-
* deprioritized against {@link CODE_KINDS} in budgeted walks and rankings. */
|
|
304
|
-
export const NON_CODE_KINDS = new Set([
|
|
305
|
-
"css",
|
|
306
|
-
"html",
|
|
307
|
-
"json",
|
|
308
|
-
"markdown",
|
|
309
|
-
"toml",
|
|
310
|
-
"yaml",
|
|
311
|
-
]);
|
|
312
|
-
/**
|
|
313
|
-
* Check if a file path resolves to a {@link CODE_KINDS} kind. Undetectable
|
|
314
|
-
* files (unknown extension, e.g. `.coffee` from SOURCE_PRECEDENCE) are
|
|
315
|
-
* non-code.
|
|
316
|
-
*/
|
|
317
|
-
export function isCodeKindFile(filePath) {
|
|
318
|
-
const kind = detectFileKind(filePath);
|
|
319
|
-
return kind !== undefined && CODE_KINDS.has(kind);
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Get human-readable description of a file kind.
|
|
323
|
-
*/
|
|
324
|
-
export function getFileKindLabel(kind) {
|
|
325
|
-
const labels = {
|
|
326
|
-
jsts: "JavaScript/TypeScript",
|
|
327
|
-
python: "Python",
|
|
328
|
-
go: "Go",
|
|
329
|
-
rust: "Rust",
|
|
330
|
-
cxx: "C/C++",
|
|
331
|
-
cmake: "CMake",
|
|
332
|
-
shell: "Shell",
|
|
333
|
-
json: "JSON",
|
|
334
|
-
markdown: "Markdown",
|
|
335
|
-
css: "CSS",
|
|
336
|
-
yaml: "YAML",
|
|
337
|
-
sql: "SQL",
|
|
338
|
-
ruby: "Ruby",
|
|
339
|
-
html: "HTML",
|
|
340
|
-
docker: "Dockerfile",
|
|
341
|
-
php: "PHP",
|
|
342
|
-
powershell: "PowerShell",
|
|
343
|
-
prisma: "Prisma",
|
|
344
|
-
csharp: "C#",
|
|
345
|
-
fish: "Fish shell",
|
|
346
|
-
fsharp: "F#",
|
|
347
|
-
java: "Java",
|
|
348
|
-
kotlin: "Kotlin",
|
|
349
|
-
swift: "Swift",
|
|
350
|
-
dart: "Dart",
|
|
351
|
-
lua: "Lua",
|
|
352
|
-
zig: "Zig",
|
|
353
|
-
haskell: "Haskell",
|
|
354
|
-
"helm-template": "Helm template",
|
|
355
|
-
elixir: "Elixir",
|
|
356
|
-
gleam: "Gleam",
|
|
357
|
-
ocaml: "OCaml",
|
|
358
|
-
clojure: "Clojure",
|
|
359
|
-
cue: "CUE",
|
|
360
|
-
terraform: "Terraform",
|
|
361
|
-
terragrunt: "Terragrunt",
|
|
362
|
-
nix: "Nix",
|
|
363
|
-
toml: "TOML",
|
|
364
|
-
};
|
|
365
|
-
return labels[kind] ?? kind;
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Get the language identifier for LSP/tools that use language IDs.
|
|
369
|
-
*/
|
|
370
|
-
export function getLanguageId(kind) {
|
|
371
|
-
const languageIds = {
|
|
372
|
-
jsts: "typescript",
|
|
373
|
-
python: "python",
|
|
374
|
-
go: "go",
|
|
375
|
-
rust: "rust",
|
|
376
|
-
cxx: "cpp",
|
|
377
|
-
cmake: "cmake",
|
|
378
|
-
shell: "shell",
|
|
379
|
-
json: "json",
|
|
380
|
-
markdown: "markdown",
|
|
381
|
-
css: "css",
|
|
382
|
-
yaml: "yaml",
|
|
383
|
-
sql: "sql",
|
|
384
|
-
ruby: "ruby",
|
|
385
|
-
html: "html",
|
|
386
|
-
docker: "dockerfile",
|
|
387
|
-
php: "php",
|
|
388
|
-
powershell: "powershell",
|
|
389
|
-
prisma: "prisma",
|
|
390
|
-
csharp: "csharp",
|
|
391
|
-
fish: "fish",
|
|
392
|
-
fsharp: "fsharp",
|
|
393
|
-
java: "java",
|
|
394
|
-
kotlin: "kotlin",
|
|
395
|
-
swift: "swift",
|
|
396
|
-
dart: "dart",
|
|
397
|
-
lua: "lua",
|
|
398
|
-
zig: "zig",
|
|
399
|
-
haskell: "haskell",
|
|
400
|
-
"helm-template": "helm",
|
|
401
|
-
elixir: "elixir",
|
|
402
|
-
gleam: "gleam",
|
|
403
|
-
ocaml: "ocaml",
|
|
404
|
-
clojure: "clojure",
|
|
405
|
-
cue: "cue",
|
|
406
|
-
terraform: "terraform",
|
|
407
|
-
terragrunt: "terragrunt",
|
|
408
|
-
nix: "nix",
|
|
409
|
-
toml: "toml",
|
|
410
|
-
};
|
|
411
|
-
return languageIds[kind] ?? "plaintext";
|
|
412
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File Role Classification for pi-lens
|
|
3
|
-
*
|
|
4
|
-
* Classifies files by their structural role in the project so runners
|
|
5
|
-
* can skip checks that don't apply (e.g. no complexity checks on generated
|
|
6
|
-
* files, no logic-density checks on re-export barrels).
|
|
7
|
-
*/
|
|
8
|
-
import { basename, dirname, win32 } from "node:path";
|
|
9
|
-
import { isGeneratedOrArtifact } from "./generated-artifacts.js";
|
|
10
|
-
import { isWindowsPath } from "./path-utils.js";
|
|
11
|
-
// --- Detection ---
|
|
12
|
-
const RE_EXPORT_LINE = /^export\s+(type\s+)?\*\s+from\s+|^export\s*\{[^}]*\}\s+from\s+/;
|
|
13
|
-
function isReExportBarrel(content) {
|
|
14
|
-
const lines = content
|
|
15
|
-
.split(/\r?\n/)
|
|
16
|
-
.map((l) => l.trim())
|
|
17
|
-
.filter((l) => l && !l.startsWith("//") && !l.startsWith("*") && !l.startsWith("/*"));
|
|
18
|
-
return lines.length > 0 && lines.every((l) => RE_EXPORT_LINE.test(l));
|
|
19
|
-
}
|
|
20
|
-
function isTypeStub(content) {
|
|
21
|
-
const lines = content
|
|
22
|
-
.split(/\r?\n/)
|
|
23
|
-
.map((l) => l.trim())
|
|
24
|
-
.filter((l) => l &&
|
|
25
|
-
!l.startsWith("//") &&
|
|
26
|
-
!l.startsWith("*") &&
|
|
27
|
-
!l.startsWith("/*") &&
|
|
28
|
-
l !== "{" &&
|
|
29
|
-
l !== "}");
|
|
30
|
-
if (lines.length < 4)
|
|
31
|
-
return false;
|
|
32
|
-
const typeOnlyLines = lines.filter((l) => /^(export\s+)?(interface|type|abstract\s+class|declare\s+(class|function|const|var|let|module|namespace|enum))\s+/.test(l) ||
|
|
33
|
-
/^(import\s+type\s+|import\s+\{)/.test(l) ||
|
|
34
|
-
/^export\s+type\s+\{/.test(l));
|
|
35
|
-
return typeOnlyLines.length / lines.length >= 0.75;
|
|
36
|
-
}
|
|
37
|
-
// Shared filename predicate (#2928). The parity test iterates the runner's
|
|
38
|
-
// discovery table; additional conventions are pinned in file-role.test.ts.
|
|
39
|
-
// Keep the case-preserved basename for CamelCase suffixes (contest.java is source).
|
|
40
|
-
function testFileNameMatches(rawBase, base) {
|
|
41
|
-
return (base.includes(".test.") ||
|
|
42
|
-
base.includes(".spec.") ||
|
|
43
|
-
base.includes("_test.") ||
|
|
44
|
-
base.includes("_spec.") ||
|
|
45
|
-
base.startsWith("test_") ||
|
|
46
|
-
base.startsWith("spec_") ||
|
|
47
|
-
/(Test|Tests|TestCase)\.(java|kt|kts|cs|fs|php)$/.test(rawBase));
|
|
48
|
-
}
|
|
49
|
-
/** Filename-only classification for consumers with their own directory policy. */
|
|
50
|
-
export function isTestFileName(filePath) {
|
|
51
|
-
const windowsShaped = isWindowsPath(filePath);
|
|
52
|
-
const rawBase = windowsShaped ? win32.basename(filePath) : basename(filePath);
|
|
53
|
-
return testFileNameMatches(rawBase, rawBase.toLowerCase());
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Classify the structural role of a file. Pass `content` for higher
|
|
57
|
-
* accuracy (enables generated-code detection, barrel detection, etc.).
|
|
58
|
-
*
|
|
59
|
-
* `detectFileRole` is platform-native by design — normal same-OS paths
|
|
60
|
-
* (POSIX on Linux, win32 on Windows) go through the module-default
|
|
61
|
-
* `basename`/`dirname`, unchanged from before. But a WINDOWS-SHAPED path
|
|
62
|
-
* (drive letter or UNC prefix, per `isWindowsPath`) is parsed with
|
|
63
|
-
* `path.win32.basename`/`dirname` regardless of the running OS (refs #1152,
|
|
64
|
-
* the #1150 class): on Linux the module-default `dirname` finds no `/` in a
|
|
65
|
-
* `C:\...` path, collapses to `"."`, and the dir-based branches below
|
|
66
|
-
* (`/tests/`, `/spec/`, …) silently misclassify. On win32 this branch is a
|
|
67
|
-
* no-op — `win32.basename`/`dirname` already equal the module default there
|
|
68
|
-
* — so native Windows classification is unchanged.
|
|
69
|
-
*/
|
|
70
|
-
export function detectFileRole(filePath, content) {
|
|
71
|
-
const windowsShaped = isWindowsPath(filePath);
|
|
72
|
-
const rawBase = windowsShaped ? win32.basename(filePath) : basename(filePath);
|
|
73
|
-
const base = rawBase.toLowerCase();
|
|
74
|
-
const dir = (windowsShaped ? win32.dirname(filePath) : dirname(filePath))
|
|
75
|
-
.replace(/\\/g, "/")
|
|
76
|
-
.toLowerCase();
|
|
77
|
-
// --- Test ---
|
|
78
|
-
// #2928: dirname has no trailing slash; match direct __tests__ children too.
|
|
79
|
-
if (testFileNameMatches(rawBase, base) ||
|
|
80
|
-
/(^|[\\/])__tests__([\\/]|$)/.test(dir) ||
|
|
81
|
-
dir.includes("/test/") ||
|
|
82
|
-
dir.includes("/tests/") ||
|
|
83
|
-
dir.includes("/spec/") ||
|
|
84
|
-
dir.includes("/specs/") ||
|
|
85
|
-
/[/_-]tests?\/?$/.test(dir) ||
|
|
86
|
-
/[/_-]specs?\/?$/.test(dir))
|
|
87
|
-
return "test";
|
|
88
|
-
// --- Generated/artifact markers (path/name/header-based) ---
|
|
89
|
-
if (isGeneratedOrArtifact(filePath, { content, includeDeclarations: false })) {
|
|
90
|
-
return "generated";
|
|
91
|
-
}
|
|
92
|
-
// --- Migrations ---
|
|
93
|
-
// Normalize separators before regex so the pattern works on Windows too
|
|
94
|
-
const forwardDir = dir.replace(/\\/g, "/");
|
|
95
|
-
if (forwardDir.includes("/migrations/") ||
|
|
96
|
-
forwardDir.includes("/migration/") ||
|
|
97
|
-
/\/\d{4,}_[a-z]/.test(forwardDir + "/" + base))
|
|
98
|
-
return "migration";
|
|
99
|
-
// --- Config ---
|
|
100
|
-
if (base.endsWith(".config.ts") ||
|
|
101
|
-
base.endsWith(".config.js") ||
|
|
102
|
-
base.endsWith(".config.mjs") ||
|
|
103
|
-
base.endsWith(".config.cjs") ||
|
|
104
|
-
base === "vite.config.ts" ||
|
|
105
|
-
base === "jest.config.ts" ||
|
|
106
|
-
base === "jest.config.js" ||
|
|
107
|
-
base === "webpack.config.js" ||
|
|
108
|
-
base === "rollup.config.js" ||
|
|
109
|
-
base === "tailwind.config.js" ||
|
|
110
|
-
base === "tailwind.config.ts" ||
|
|
111
|
-
base === "next.config.js" ||
|
|
112
|
-
base === "next.config.mjs")
|
|
113
|
-
return "config";
|
|
114
|
-
// --- Type stubs ---
|
|
115
|
-
if (base.endsWith(".d.ts"))
|
|
116
|
-
return "stub";
|
|
117
|
-
if (content && isTypeStub(content))
|
|
118
|
-
return "stub";
|
|
119
|
-
// --- Init / barrel ---
|
|
120
|
-
const isIndexFile = base === "index.ts" ||
|
|
121
|
-
base === "index.tsx" ||
|
|
122
|
-
base === "index.js" ||
|
|
123
|
-
base === "index.mjs" ||
|
|
124
|
-
base === "index.cjs" ||
|
|
125
|
-
base === "index.jsx" ||
|
|
126
|
-
base === "__init__.py" ||
|
|
127
|
-
base === "mod.rs";
|
|
128
|
-
if (isIndexFile) {
|
|
129
|
-
if (content && isReExportBarrel(content))
|
|
130
|
-
return "re-export";
|
|
131
|
-
return "init";
|
|
132
|
-
}
|
|
133
|
-
return "source";
|
|
134
|
-
}
|