pi-lens 4.2.1 → 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 +1562 -0
- package/README.md +157 -24
- 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 +19039 -8956
- package/dist/mcp/analyze-cli.js +186 -228
- package/dist/mcp/cli.js +137 -98
- package/dist/mcp/server.js +22592 -1564
- 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/adr/0001-stale-advisory-live-arm.md +29 -0
- package/docs/adr/0002-workspace-hash-rendezvous.md +30 -0
- package/docs/adr/0003-git-guard-latch-writer.md +203 -0
- package/docs/adr/0004-disposition-policy-seam.md +38 -0
- package/docs/adr/0005-tool-availability-enforcement-seam.md +29 -0
- package/docs/adr/0006-derived-state-benchmark-first.md +31 -0
- package/docs/adr/0007-end-to-end-witness-per-seam-slice.md +38 -0
- package/docs/adr/0008-turn-end-lane-interface.md +165 -0
- package/docs/adr/0009-reported-path-attribution.md +114 -0
- package/docs/adr/README.md +26 -0
- package/docs/agent-guide.md +13 -4
- package/docs/agent-tools.md +60 -1
- package/docs/ast-grep_rules_catalog.md +6 -4
- package/docs/configuration.md +75 -2
- package/docs/engineering-principles.md +202 -0
- package/docs/environment-variables.md +113 -6
- package/docs/features.md +10 -6
- package/docs/globalconfig.md +7 -1
- package/docs/io-bridge-v2-migration.md +94 -0
- package/docs/language-coverage.md +17 -0
- package/docs/lsp-capability-matrix.md +131 -32
- 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 +161 -39
- package/docs/pi-lens-investigator.md +77 -20
- 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 +190 -34
- package/docs/pi-lens-subagent.md +247 -37
- package/docs/pi-lens-warden.md +18 -7
- package/docs/public-api-stability.md +56 -0
- package/docs/release-qa-baseline.md +86 -17
- package/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/docs/servercapabilities.md +66 -52
- package/docs/settings.md +13 -3
- package/docs/subagent-compat.md +1 -1
- 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 +23 -9
- package/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/rules/ast-grep-rules/rule-tests/no-assert-tuple-test.yml +13 -0
- package/rules/ast-grep-rules/rule-tests/no-boolean-in-except-test.yml +26 -0
- package/rules/ast-grep-rules/rule-tests/no-http-headers-bracket-access-test.yml +10 -0
- package/rules/ast-grep-rules/rule-tests/unchecked-numeric-parse-python-test.yml +18 -0
- package/rules/ast-grep-rules/rule-tests/unchecked-throwing-call-python-test.yml +4 -3
- package/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/rules/ast-grep-rules/rules/go-no-fmt-println.yml +2 -2
- package/rules/ast-grep-rules/rules/no-assert-tuple.yml +23 -13
- package/rules/ast-grep-rules/rules/no-boolean-in-except.yml +7 -3
- package/rules/ast-grep-rules/rules/no-console-except-error-js.yml +2 -2
- package/rules/ast-grep-rules/rules/no-console-except-error.yml +2 -2
- package/rules/ast-grep-rules/rules/no-http-headers-bracket-access.yml +12 -7
- package/rules/ast-grep-rules/rules/unchecked-numeric-parse-python.yml +44 -0
- package/rules/ast-grep-rules/rules/unchecked-throwing-call-python.yml +5 -3
- package/rules/tree-sitter-queries/typescript/console-statement.yml +2 -2
- 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 +38 -35
- package/scripts/lib/host-provided-deps.mjs +13 -4
- package/scripts/lib/web-tree-sitter-dir.mjs +141 -0
- package/dist/clients/actionable-warnings-logger.js +0 -35
- package/dist/clients/actionable-warnings.js +0 -1594
- package/dist/clients/advisory-provenance.js +0 -457
- 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 -465
- 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 -115
- 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 -283
- package/dist/clients/config-locations.js +0 -160
- package/dist/clients/config-resolve.js +0 -792
- 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 -396
- package/dist/clients/demoted-finding-render.js +0 -169
- package/dist/clients/dependency-checker.js +0 -862
- 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 -594
- 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 -222
- package/dist/clients/dispatch/indent-detect.js +0 -411
- package/dist/clients/dispatch/inline-suppressions.js +0 -70
- 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 -62
- 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 -113
- package/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/dist/clients/dispatch/runners/biome-check.js +0 -283
- package/dist/clients/dispatch/runners/cpp-check.js +0 -236
- package/dist/clients/dispatch/runners/credo.js +0 -80
- package/dist/clients/dispatch/runners/cue-vet.js +0 -398
- package/dist/clients/dispatch/runners/dart-analyze.js +0 -202
- package/dist/clients/dispatch/runners/detekt.js +0 -169
- package/dist/clients/dispatch/runners/dotnet-build.js +0 -159
- package/dist/clients/dispatch/runners/elixir-check.js +0 -210
- package/dist/clients/dispatch/runners/eslint.js +0 -154
- 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 -87
- package/dist/clients/dispatch/runners/go-vet.js +0 -90
- package/dist/clients/dispatch/runners/golangci-lint.js +0 -120
- package/dist/clients/dispatch/runners/hadolint.js +0 -79
- 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 -108
- package/dist/clients/dispatch/runners/index.js +0 -108
- package/dist/clients/dispatch/runners/javac.js +0 -89
- package/dist/clients/dispatch/runners/ktlint.js +0 -136
- package/dist/clients/dispatch/runners/lsp.js +0 -378
- package/dist/clients/dispatch/runners/markdownlint.js +0 -160
- package/dist/clients/dispatch/runners/mypy.js +0 -101
- package/dist/clients/dispatch/runners/oxlint.js +0 -398
- package/dist/clients/dispatch/runners/php-lint.js +0 -62
- 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 -90
- package/dist/clients/dispatch/runners/ruff.js +0 -89
- package/dist/clients/dispatch/runners/rust-clippy.js +0 -251
- package/dist/clients/dispatch/runners/shellcheck.js +0 -169
- package/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/dist/clients/dispatch/runners/spellcheck.js +0 -121
- package/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/dist/clients/dispatch/runners/sqlfluff.js +0 -174
- package/dist/clients/dispatch/runners/stylelint.js +0 -158
- package/dist/clients/dispatch/runners/swiftlint.js +0 -154
- package/dist/clients/dispatch/runners/taplo.js +0 -168
- package/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/dist/clients/dispatch/runners/tflint.js +0 -110
- package/dist/clients/dispatch/runners/tree-sitter.js +0 -620
- package/dist/clients/dispatch/runners/trivy-config.js +0 -247
- 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 -85
- 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 -116
- package/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/dist/clients/dispatch/runners/yamllint.js +0 -85
- package/dist/clients/dispatch/runners/zig-check.js +0 -91
- package/dist/clients/dispatch/suppress-writer.js +0 -69
- 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 -413
- 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 -463
- 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 -1994
- 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 -923
- 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 -252
- 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/install-diagnostics.js +0 -143
- package/dist/clients/installer/index.js +0 -5167
- 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 -370
- 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 -719
- package/dist/clients/lazy-import.js +0 -21
- package/dist/clients/ledger-bounds.js +0 -54
- package/dist/clients/lens-config.js +0 -346
- 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 -4465
- package/dist/clients/lsp/config.js +0 -689
- 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 -725
- 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 -3209
- 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 -42
- 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 -303
- 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 -335
- package/dist/clients/mcp/review.js +0 -151
- 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 -328
- 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 -1425
- 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 -650
- 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 -799
- 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 -5118
- package/dist/clients/review-graph/format.js +0 -33
- package/dist/clients/review-graph/git-identity.js +0 -157
- 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 -152
- 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 -1290
- package/dist/clients/runtime-session.js +0 -2485
- package/dist/clients/runtime-tool-call.js +0 -1284
- package/dist/clients/runtime-tool-result.js +0 -2034
- package/dist/clients/runtime-turn.js +0 -3600
- package/dist/clients/rust-client.js +0 -97
- package/dist/clients/safe-spawn.js +0 -2166
- 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 -37
- 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 -4134
- 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-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 -246
- package/dist/clients/widget-state.js +0 -1677
- 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 -389
- package/dist/clients/write-ordering-guard.js +0 -65
- package/dist/clients/zizmor-config.js +0 -327
- 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/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 -2544
- package/dist/tools/lsp-diagnostics.js +0 -1634
- 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
package/dist/clients/tool-cwd.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import * as os from "node:os";
|
|
2
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
3
|
-
import * as path from "node:path";
|
|
4
|
-
import { logExtension } from "./extension-log.js";
|
|
5
|
-
import { isRealGitMarker, isAtOrAboveHomeDir, isUnderDir, isWindowsPath, nameMatchesMarkerGlob, normalizeEphemeralMapKey, } from "./path-utils.js";
|
|
6
|
-
import { getDegradationLedgerGeneration, recordDegradationOnce, } from "./degradation-ledger.js";
|
|
7
|
-
import { createGenerationMap, createGenerationSource, } from "./generation-guard.js";
|
|
8
|
-
import { rootMarkersForFile } from "./language-profile.js";
|
|
9
|
-
export const FORMATTER_MARKERS = {
|
|
10
|
-
biome: ["biome.json", "biome.jsonc", "package.json", ".gitignore"],
|
|
11
|
-
prettier: [
|
|
12
|
-
".prettierrc",
|
|
13
|
-
".prettierrc.json",
|
|
14
|
-
".prettierrc.yaml",
|
|
15
|
-
".prettierrc.yml",
|
|
16
|
-
".prettierrc.js",
|
|
17
|
-
".prettierrc.cjs",
|
|
18
|
-
".prettierrc.mjs",
|
|
19
|
-
"prettier.config.js",
|
|
20
|
-
"prettier.config.cjs",
|
|
21
|
-
"prettier.config.mjs",
|
|
22
|
-
".prettierignore",
|
|
23
|
-
"package.json",
|
|
24
|
-
".gitignore",
|
|
25
|
-
],
|
|
26
|
-
ruff: ["pyproject.toml", "ruff.toml", ".ruff.toml", ".gitignore"],
|
|
27
|
-
black: ["pyproject.toml", "black.toml", ".black", ".gitignore"],
|
|
28
|
-
"php-cs-fixer": [".php-cs-fixer.php", ".php-cs-fixer.dist.php", ".gitignore"],
|
|
29
|
-
sqlfluff: [".sqlfluff", "pyproject.toml", "setup.cfg", ".gitignore"],
|
|
30
|
-
oxfmt: [
|
|
31
|
-
"oxfmt.toml",
|
|
32
|
-
".oxfmtrc.json",
|
|
33
|
-
"vite-plus.json",
|
|
34
|
-
"package.json",
|
|
35
|
-
".gitignore",
|
|
36
|
-
],
|
|
37
|
-
rustfmt: ["rustfmt.toml", ".rustfmt.toml", "Cargo.toml", ".gitignore"],
|
|
38
|
-
rubocop: [".rubocop.yml", ".rubocop.yaml", ".gitignore"],
|
|
39
|
-
standardrb: [".standard.yml", ".standard.yaml", ".gitignore"],
|
|
40
|
-
"clang-format": [".clang-format", "_clang-format", ".gitignore"],
|
|
41
|
-
stylua: ["stylua.toml", ".stylua.toml", ".gitignore"],
|
|
42
|
-
ocamlformat: [".ocamlformat", ".gitignore"],
|
|
43
|
-
"google-java-format": [".google-java-format", ".editorconfig", ".gitignore"],
|
|
44
|
-
cljfmt: [".cljfmt.edn", "cljfmt.edn", ".cljfmt", ".gitignore"],
|
|
45
|
-
"cmake-format": [
|
|
46
|
-
".cmake-format",
|
|
47
|
-
".cmake-format.yaml",
|
|
48
|
-
".cmake-format.yml",
|
|
49
|
-
".cmake-format.json",
|
|
50
|
-
".cmake-format.py",
|
|
51
|
-
"cmake-format.yaml",
|
|
52
|
-
"cmake-format.yml",
|
|
53
|
-
".editorconfig",
|
|
54
|
-
".gitignore",
|
|
55
|
-
],
|
|
56
|
-
"psscriptanalyzer-format": [
|
|
57
|
-
"PSScriptAnalyzerSettings.psd1",
|
|
58
|
-
"ScriptAnalyzerSettings.psd1",
|
|
59
|
-
".gitignore",
|
|
60
|
-
],
|
|
61
|
-
csharpier: [
|
|
62
|
-
".csharpierrc",
|
|
63
|
-
".csharpierrc.json",
|
|
64
|
-
".csharpierrc.yaml",
|
|
65
|
-
".csharpierrc.yml",
|
|
66
|
-
".gitignore",
|
|
67
|
-
],
|
|
68
|
-
ormolu: [".ormolu", ".gitignore"],
|
|
69
|
-
taplo: ["taplo.toml", ".taplo.toml", ".gitignore"],
|
|
70
|
-
terraform: [".terraform.lock.hcl", ".gitignore"],
|
|
71
|
-
swiftformat: [".swiftformat", ".gitignore"],
|
|
72
|
-
fantomas: [".fantomasignore", ".editorconfig", ".gitignore"],
|
|
73
|
-
mix: [".formatter.exs", ".gitignore"],
|
|
74
|
-
shfmt: [".editorconfig", ".gitignore"],
|
|
75
|
-
ktlint: [".editorconfig", ".gitignore"],
|
|
76
|
-
ktfmt: [
|
|
77
|
-
".editorconfig",
|
|
78
|
-
".ktfmt",
|
|
79
|
-
".ktfmt.kts",
|
|
80
|
-
"build.gradle",
|
|
81
|
-
"build.gradle.kts",
|
|
82
|
-
"settings.gradle",
|
|
83
|
-
"settings.gradle.kts",
|
|
84
|
-
".gitignore",
|
|
85
|
-
],
|
|
86
|
-
typstyle: [".gitignore"],
|
|
87
|
-
};
|
|
88
|
-
const toolCwdGeneration = createGenerationSource("tool-cwd");
|
|
89
|
-
const logged = createGenerationMap("tool-cwd-resolution-log");
|
|
90
|
-
/** Pure key seam for resolution-log and runner-advisory identity. */
|
|
91
|
-
export function _toolCwdEphemeralKey(parts) {
|
|
92
|
-
return parts.map(normalizeEphemeralMapKey).join("\0");
|
|
93
|
-
}
|
|
94
|
-
function syncGeneration() {
|
|
95
|
-
if (toolCwdGeneration.current() === getDegradationLedgerGeneration())
|
|
96
|
-
return;
|
|
97
|
-
logged.clear();
|
|
98
|
-
while (toolCwdGeneration.current() < getDegradationLedgerGeneration()) {
|
|
99
|
-
toolCwdGeneration.bump();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function walkMarkerRoot(startDir, markers, homeDir) {
|
|
103
|
-
let current = path.resolve(startDir);
|
|
104
|
-
for (let depth = 0; depth < 64; depth++) {
|
|
105
|
-
if (isAtOrAboveHomeDir(current, homeDir))
|
|
106
|
-
break;
|
|
107
|
-
for (const marker of markers) {
|
|
108
|
-
const slash = marker.replace(/\\/g, "/").lastIndexOf("/");
|
|
109
|
-
const parent = slash >= 0 ? marker.slice(0, slash) : "";
|
|
110
|
-
const basename = slash >= 0 ? marker.slice(slash + 1) : marker;
|
|
111
|
-
const target = parent
|
|
112
|
-
? path.join(current, ...parent.split("/").filter(Boolean))
|
|
113
|
-
: current;
|
|
114
|
-
let found = false;
|
|
115
|
-
if (basename.includes("*")) {
|
|
116
|
-
try {
|
|
117
|
-
found = readdirSync(target, { withFileTypes: true }).some((entry) => (entry.isFile() || entry.isSymbolicLink()) &&
|
|
118
|
-
nameMatchesMarkerGlob(entry.name, basename));
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
found = false;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
found = existsSync(path.join(target, basename));
|
|
126
|
-
}
|
|
127
|
-
if (found)
|
|
128
|
-
return { root: current, marker };
|
|
129
|
-
}
|
|
130
|
-
const parentDir = path.dirname(current);
|
|
131
|
-
if (parentDir === current)
|
|
132
|
-
break;
|
|
133
|
-
current = parentDir;
|
|
134
|
-
}
|
|
135
|
-
return { root: null };
|
|
136
|
-
}
|
|
137
|
-
function findMarkerRoot(startDir, markers, homeDir) {
|
|
138
|
-
syncGeneration();
|
|
139
|
-
return walkMarkerRoot(startDir, markers, homeDir);
|
|
140
|
-
}
|
|
141
|
-
function markersFor(kind, tool, file, ctx) {
|
|
142
|
-
if (kind === "lsp")
|
|
143
|
-
return ctx.rootMarkers ?? [];
|
|
144
|
-
// #2965: runner fallback uses the language table that also anchors the
|
|
145
|
-
// dispatch context. A caller-owned table remains an explicit override.
|
|
146
|
-
if (kind === "runner")
|
|
147
|
-
return ctx.rootMarkers ?? rootMarkersForFile(file, tool);
|
|
148
|
-
return FORMATTER_MARKERS[tool] ?? [".gitignore"];
|
|
149
|
-
}
|
|
150
|
-
function emitResolution(kind, tool, cwd, reason) {
|
|
151
|
-
syncGeneration();
|
|
152
|
-
const key = _toolCwdEphemeralKey([kind, tool, cwd, reason]);
|
|
153
|
-
if (logged.current(key) !== 0)
|
|
154
|
-
return;
|
|
155
|
-
logged.bump(key);
|
|
156
|
-
logExtension({
|
|
157
|
-
subsystem: "tool-cwd",
|
|
158
|
-
level: "debug",
|
|
159
|
-
message: `cwd ${kind} ${tool} cwd=${cwd} reason=${reason}`,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Emit a constant runner advisory once per (tool, resolved root) per session
|
|
164
|
-
* (#2811): the yamllint/stylelint/sqlfluff "no config detected" lines and
|
|
165
|
-
* markdownlint's spawn-timeout cooldown notice logged once PER FILE at error
|
|
166
|
-
* level — 17 lines in one session for one tool. The throttle shares the
|
|
167
|
-
* resolution-log map and its ledger-generation reset, so `session_start`
|
|
168
|
-
* re-arms it like every once-latch in this module. The message rides
|
|
169
|
-
* `ctx.log` at debug level so the dispatch seam stays the one sink for
|
|
170
|
-
* runner lines, with its own filePath/kind metadata.
|
|
171
|
-
*/
|
|
172
|
-
export function logRunnerAdvisoryOnce(ctx, tool, root, message) {
|
|
173
|
-
syncGeneration();
|
|
174
|
-
const key = _toolCwdEphemeralKey(["runner-advisory", tool, root]);
|
|
175
|
-
if (logged.current(key) !== 0)
|
|
176
|
-
return;
|
|
177
|
-
logged.bump(key);
|
|
178
|
-
ctx.log(message, "debug");
|
|
179
|
-
}
|
|
180
|
-
/** Resolve every child process cwd/root through one bounded, synchronous seam. */
|
|
181
|
-
export function resolveToolCwd(kind, tool, file, ctx) {
|
|
182
|
-
const dispatchRoot = path.resolve(ctx.cwd ?? process.cwd());
|
|
183
|
-
const absoluteFile = path.resolve(file);
|
|
184
|
-
const fileDir = path.dirname(absoluteFile);
|
|
185
|
-
const homeDir = ctx.homeDir ?? os.homedir();
|
|
186
|
-
const insideDispatch = isUnderDir(absoluteFile, dispatchRoot);
|
|
187
|
-
if (ctx.serverRoot) {
|
|
188
|
-
const rootPath = isWindowsPath(ctx.serverRoot) ? path.win32 : path;
|
|
189
|
-
const serverRoot = rootPath.resolve(ctx.serverRoot);
|
|
190
|
-
if (!ctx.suppressTelemetry)
|
|
191
|
-
emitResolution(kind, tool, serverRoot, "server-root");
|
|
192
|
-
return { cwd: serverRoot };
|
|
193
|
-
}
|
|
194
|
-
const markers = markersFor(kind, tool, absoluteFile, ctx);
|
|
195
|
-
const markerResult = markers.length
|
|
196
|
-
? findMarkerRoot(fileDir, markers, ctx.allowHomeMarker ? path.parse(homeDir).root : homeDir)
|
|
197
|
-
: { root: null };
|
|
198
|
-
const markerRoot = markerResult.root;
|
|
199
|
-
if (markerRoot &&
|
|
200
|
-
(insideDispatch ? isUnderDir(markerRoot, dispatchRoot) : true)) {
|
|
201
|
-
const finalReason = `marker:${markerResult.marker ?? markers[0]}`;
|
|
202
|
-
if (!ctx.suppressTelemetry)
|
|
203
|
-
emitResolution(kind, tool, markerRoot, finalReason);
|
|
204
|
-
return {
|
|
205
|
-
cwd: markerRoot,
|
|
206
|
-
...(markerResult.marker !== undefined
|
|
207
|
-
? { marker: markerResult.marker }
|
|
208
|
-
: {}),
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
const memo = ctx.toolCwdMemo;
|
|
212
|
-
if (memo && memo.gitRoot === undefined) {
|
|
213
|
-
const gitResult = findMarkerRoot(fileDir, [".git"], homeDir);
|
|
214
|
-
memo.gitRoot =
|
|
215
|
-
gitResult.root && isRealGitMarker(path.join(gitResult.root, ".git"))
|
|
216
|
-
? gitResult.root
|
|
217
|
-
: null;
|
|
218
|
-
}
|
|
219
|
-
const gitRoot = memo && memo.gitRoot !== undefined
|
|
220
|
-
? memo.gitRoot
|
|
221
|
-
: (() => {
|
|
222
|
-
const gitResult = findMarkerRoot(fileDir, [".git"], homeDir);
|
|
223
|
-
return gitResult.root &&
|
|
224
|
-
isRealGitMarker(path.join(gitResult.root, ".git"))
|
|
225
|
-
? gitResult.root
|
|
226
|
-
: null;
|
|
227
|
-
})();
|
|
228
|
-
if (gitRoot && (insideDispatch ? isUnderDir(gitRoot, dispatchRoot) : true)) {
|
|
229
|
-
if (!ctx.suppressTelemetry)
|
|
230
|
-
emitResolution(kind, tool, gitRoot, "git-root");
|
|
231
|
-
return { cwd: gitRoot, marker: ".git" };
|
|
232
|
-
}
|
|
233
|
-
if (insideDispatch) {
|
|
234
|
-
if (kind === "formatter") {
|
|
235
|
-
if (!ctx.suppressTelemetry)
|
|
236
|
-
emitResolution(kind, tool, fileDir, "file-dir-fallback");
|
|
237
|
-
if (!ctx.suppressTelemetry && !isUnderDir(fileDir, homeDir)) {
|
|
238
|
-
recordDegradationOnce({
|
|
239
|
-
kind: "tool-cwd-resolution",
|
|
240
|
-
subject: tool,
|
|
241
|
-
reason: `${kind}:home-cap:${absoluteFile}`,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
return { cwd: fileDir };
|
|
245
|
-
}
|
|
246
|
-
if (!ctx.suppressTelemetry)
|
|
247
|
-
emitResolution(kind, tool, dispatchRoot, "dispatch-root");
|
|
248
|
-
return { cwd: dispatchRoot };
|
|
249
|
-
}
|
|
250
|
-
const reason = isUnderDir(fileDir, homeDir)
|
|
251
|
-
? "file-dir-fallback"
|
|
252
|
-
: "home-cap";
|
|
253
|
-
const fallback = isUnderDir(fileDir, homeDir) ? fileDir : homeDir;
|
|
254
|
-
if (!ctx.suppressTelemetry)
|
|
255
|
-
recordDegradationOnce({
|
|
256
|
-
kind: "tool-cwd-resolution",
|
|
257
|
-
subject: tool,
|
|
258
|
-
reason: `${kind}:${reason}:${absoluteFile}`,
|
|
259
|
-
});
|
|
260
|
-
if (!ctx.suppressTelemetry)
|
|
261
|
-
emitResolution(kind, tool, fallback, reason);
|
|
262
|
-
return { cwd: fallback };
|
|
263
|
-
}
|
|
264
|
-
/** Runner-shaped adapter kept at the same seam for every runner consumer. */
|
|
265
|
-
export function resolveRunnerCwd(ctx, tool) {
|
|
266
|
-
return resolveToolCwd("runner", tool, ctx.filePath, ctx).cwd;
|
|
267
|
-
}
|
|
268
|
-
export function resolveRunnerCwdWithReason(ctx, tool) {
|
|
269
|
-
return resolveToolCwd("runner", tool, ctx.filePath, ctx);
|
|
270
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE final registration boundary for a host-facing tool: everything that
|
|
3
|
-
* must be true of a tool definition the instant before `pi.registerTool`
|
|
4
|
-
* sees it. `index.ts` runs every tool it registers — always-active,
|
|
5
|
-
* situational, and the compact-line-wrapped variants — through this one
|
|
6
|
-
* function, so a property added here reaches every tool without a second
|
|
7
|
-
* call site to keep in sync.
|
|
8
|
-
*
|
|
9
|
-
* Two jobs today:
|
|
10
|
-
* 1. metadata the host requires is present (a non-empty description);
|
|
11
|
-
* 2. an in-flight tool call HOLDS the event loop (#2507). pi-lens unrefs the
|
|
12
|
-
* LSP child, its stdio pipes and several waiting timers so an idle
|
|
13
|
-
* one-shot process can exit; in a headless child with no other referenced
|
|
14
|
-
* handle that let Node exit 0 in the middle of `lsp_diagnostics`. Every
|
|
15
|
-
* tool call therefore takes a counted hold for its own duration — see
|
|
16
|
-
* `clients/event-loop-hold.ts` for why the hold lives there and not in
|
|
17
|
-
* the unref itself.
|
|
18
|
-
*/
|
|
19
|
-
import { acquireEventLoopHold } from "./event-loop-hold.js";
|
|
20
|
-
export function normalizeToolDefinition(tool) {
|
|
21
|
-
const name = typeof tool.name === "string" ? tool.name.trim() : "tool";
|
|
22
|
-
const description = typeof tool.description === "string" && tool.description.trim().length > 0
|
|
23
|
-
? tool.description
|
|
24
|
-
: `Use the ${name} tool.`;
|
|
25
|
-
const execute = tool.execute;
|
|
26
|
-
if (typeof execute !== "function") {
|
|
27
|
-
return { ...tool, description };
|
|
28
|
-
}
|
|
29
|
-
const inner = execute;
|
|
30
|
-
return {
|
|
31
|
-
...tool,
|
|
32
|
-
description,
|
|
33
|
-
// A plain function, not an arrow: `this` stays whatever the host called
|
|
34
|
-
// the tool with, so a definition whose `execute` reads `this` keeps
|
|
35
|
-
// working. The hold is released in `finally`, so a rejected or aborted
|
|
36
|
-
// call releases exactly like a resolved one.
|
|
37
|
-
execute: async function (...args) {
|
|
38
|
-
const release = acquireEventLoopHold(name);
|
|
39
|
-
try {
|
|
40
|
-
return await inner.apply(this, args);
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
release();
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local re-implementation of the host SDK's `isToolCallEventType`.
|
|
3
|
-
*
|
|
4
|
-
* Why this exists instead of importing from `@earendil-works/pi-coding-agent`:
|
|
5
|
-
* pi installs extension dependencies with `npm install --omit=dev`, so the host
|
|
6
|
-
* coding-agent package is NOT present in the extension's `node_modules` at
|
|
7
|
-
* runtime. Importing a *runtime value* from it therefore fails to resolve on a
|
|
8
|
-
* clean install. Pulling it in as a real dependency is worse — it drags a huge
|
|
9
|
-
* transitive tree (LLM provider SDKs) whose deeply nested paths exceed Windows'
|
|
10
|
-
* MAX_PATH, which breaks `git clean -fdx` during `pi update`.
|
|
11
|
-
*
|
|
12
|
-
* The SDK function is a one-line discriminant check, so we inline it and keep
|
|
13
|
-
* every `@earendil-works/pi-coding-agent` import type-only (types compile away).
|
|
14
|
-
* `tests/host-sdk-type-only.test.ts` pins that invariant.
|
|
15
|
-
*
|
|
16
|
-
* ## S6 audit: the per-tool `is*ToolResult` discriminators (#1334)
|
|
17
|
-
*
|
|
18
|
-
* The SDK also exports seven `tool_result` discriminators — `isBashToolResult`,
|
|
19
|
-
* `isReadToolResult`, `isEditToolResult`, `isWriteToolResult`,
|
|
20
|
-
* `isGrepToolResult`, `isFindToolResult`, `isLsToolResult`. pi-lens does NOT
|
|
21
|
-
* consolidate onto them, and the reasons are worth recording so the question
|
|
22
|
-
* isn't relitigated:
|
|
23
|
-
*
|
|
24
|
-
* 1. **They are runtime values, not types.** Same `--omit=dev` constraint as
|
|
25
|
-
* above — importing them would break on a clean user install. Inlining them
|
|
26
|
-
* is the only option, and each one's entire body is verbatim
|
|
27
|
-
* `e.toolName === "<name>"` (checked against the pinned SDK's `types.js`).
|
|
28
|
-
* 2. **`isToolCallEventType` already subsumes all seven.** It is the SDK's own
|
|
29
|
-
* generic form of the same check, and it is already inlined below and used
|
|
30
|
-
* at pi-lens's `tool_call` sites. Adding seven fixed-name aliases of a
|
|
31
|
-
* generic we already have would be indirection, not consolidation.
|
|
32
|
-
* 3. **The seven cover strictly fewer tools than pi-lens intercepts.** They
|
|
33
|
-
* enumerate the built-ins only; pi-lens's `tool_call`/`tool_result` paths
|
|
34
|
-
* also key off `lsp_navigation` and pi-lens's own registered tools, which no
|
|
35
|
-
* host discriminator names.
|
|
36
|
-
* 4. **The host union is narrower than the events pi-lens handles.** The host
|
|
37
|
-
* `ToolResultEvent` declares `toolCallId`/`input`/`content`/`isError`/
|
|
38
|
-
* `details`/`usage`; pi-lens's local `ToolResultEvent`
|
|
39
|
-
* (`clients/runtime-tool-result.ts`) declares the subset it reads. It used
|
|
40
|
-
* to additionally carry `id`/`callId`/`requestId`/`provider`/`model`/
|
|
41
|
-
* `sessionId`/`session` "for the telemetry-identity path" — #1655 item 2
|
|
42
|
-
* deleted all seven, because pi's `afterToolCall` builds the event with
|
|
43
|
-
* exactly `type`/`toolName`/`toolCallId`/`input`/`content`/`details`/
|
|
44
|
-
* `isError`/`usage` (`dist/core/agent-session.js:243-256`, source
|
|
45
|
-
* `src/core/agent-session.ts:502-516`), so the branch reading them was dead
|
|
46
|
-
* code. The standing reason not to narrow is point 3: pi-lens also
|
|
47
|
-
* synthesizes its OWN `tool_result` payloads (bash-derived writes,
|
|
48
|
-
* partial-apply) that no host discriminator would admit.
|
|
49
|
-
*
|
|
50
|
-
* What IS consolidated is the part that costs nothing: the host's `details`
|
|
51
|
-
* SHAPES are type-only exports, so `EditToolDetails` & co. are imported as
|
|
52
|
-
* types rather than re-declared ad hoc. Genuinely pi-lens-specific `details`
|
|
53
|
-
* payloads (`searchReads`, `piLensPartialApply`) stay hand-declared — no host
|
|
54
|
-
* type describes them.
|
|
55
|
-
*/
|
|
56
|
-
import { sanitizeCorrelationId } from "./read-guard-logger.js";
|
|
57
|
-
export function isToolCallEventType(toolName, event) {
|
|
58
|
-
return (!!event &&
|
|
59
|
-
typeof event === "object" &&
|
|
60
|
-
event.toolName === toolName);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Resolve a STABLE correlation id shared between a `tool_call` and its
|
|
64
|
-
* paired `tool_result`, checking every field name a host is known to use
|
|
65
|
-
* (#1642 F4) — the SDK declares `toolCallId` (see the file header above for
|
|
66
|
-
* why pi-lens can't import the SDK's own type at runtime), but
|
|
67
|
-
* `read-guard-logger.ts`'s `getReadGuardCorrelationId` already had to widen
|
|
68
|
-
* to `callId`/`requestId`/`id` for hosts that populate one of those instead.
|
|
69
|
-
* Single source of truth for that field list — do not hand-roll a narrower
|
|
70
|
-
* `event.toolCallId` read at a new call site.
|
|
71
|
-
*
|
|
72
|
-
* Deliberately does NOT fall back to a generated id the way
|
|
73
|
-
* `getReadGuardCorrelationId` does: that fallback is minted fresh on EVERY
|
|
74
|
-
* call (a bare per-invocation counter), which is exactly right for grouping
|
|
75
|
-
* one call's own log lines but useless — actively misleading — for
|
|
76
|
-
* correlating two SEPARATE events (a `tool_call` and its `tool_result`)
|
|
77
|
-
* against each other. `undefined` means the host supplies no stable
|
|
78
|
-
* identity at all under any known field; callers decide their own safe
|
|
79
|
-
* default for that case rather than treat a generated id as a match.
|
|
80
|
-
*/
|
|
81
|
-
export function resolveToolCallCorrelationId(event) {
|
|
82
|
-
const value = (event ?? {});
|
|
83
|
-
for (const candidate of [
|
|
84
|
-
value.toolCallId,
|
|
85
|
-
value.callId,
|
|
86
|
-
value.requestId,
|
|
87
|
-
// Widest rung, only reached when toolCallId/callId/requestId are all
|
|
88
|
-
// absent (#1678 item 2): this assumes a host's `id` field identifies
|
|
89
|
-
// one TOOL CALL. A host that instead populates `id` per MESSAGE (one
|
|
90
|
-
// id shared by every tool call in that message) would cross two
|
|
91
|
-
// parallel calls in the same turn under the same id. Stated plainly:
|
|
92
|
-
// real pi builds `tool_call`/`tool_result` events with exactly
|
|
93
|
-
// `toolCallId` and no bare `id` field at all (see the file header
|
|
94
|
-
// above, #1655 item 2, `src/core/agent-session.ts:502-516`), so this
|
|
95
|
-
// rung is dead code against today's host — kept only in case a
|
|
96
|
-
// different host shape needs it; drop it once #1655's audit confirms
|
|
97
|
-
// none does.
|
|
98
|
-
value.id,
|
|
99
|
-
]) {
|
|
100
|
-
const sanitized = sanitizeCorrelationId(candidate);
|
|
101
|
-
if (sanitized)
|
|
102
|
-
return sanitized;
|
|
103
|
-
}
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|