@herbertgao/pi-extensions 2026.10.0 → 2026.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -12
- package/THIRD_PARTY_NOTICES.md +3 -3
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-audit.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-debt.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-gain.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-help.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-review.md +2 -2
- package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail.md +1 -1
- package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/index.js +4 -0
- package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail-frontmatter.cjs +43 -3
- package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail.mjs +142 -59
- package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
- package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
- package/node_modules/@dietrichgebert/ponytail/README.md +52 -242
- package/node_modules/@dietrichgebert/ponytail/hooks/claude-codex-hooks.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/hooks/copilot-hooks.json +4 -4
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +70 -16
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-config.js +8 -7
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-mode-tracker.js +46 -23
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-runtime.js +39 -7
- package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-subagent.js +20 -3
- package/node_modules/@dietrichgebert/ponytail/hooks/qoder-hooks.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/package.json +3 -3
- package/node_modules/@dietrichgebert/ponytail/pi-extension/index.js +47 -17
- package/node_modules/@dietrichgebert/ponytail/scripts/uninstall.js +21 -7
- package/node_modules/@dietrichgebert/ponytail/skills/plugin.json +5 -0
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -27
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +21 -18
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +12 -13
- package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -52
- package/node_modules/@herbertgao/pi-agency/LICENSE +21 -0
- package/node_modules/@herbertgao/pi-agency/README.md +40 -0
- package/node_modules/@herbertgao/pi-agency/package.json +53 -0
- package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
- package/node_modules/@narumitw/pi-caffeinate/package.json +4 -4
- package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
- package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
- package/node_modules/@tifan/pi-recap/package.json +1 -1
- package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
- package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
- package/node_modules/pi-antigravity/README.md +23 -2
- package/node_modules/pi-antigravity/package.json +5 -3
- package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
- package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
- package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
- package/node_modules/pi-antigravity/src/image/image.ts +86 -47
- package/node_modules/pi-antigravity/src/image/native.ts +69 -0
- package/node_modules/pi-antigravity/src/index.ts +52 -137
- package/node_modules/pi-antigravity/src/search/search.ts +130 -31
- package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
- package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
- package/node_modules/pi-antigravity/src/types/types.ts +1 -1
- package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
- package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
- package/node_modules/pi-lens/CHANGELOG.md +1064 -0
- package/node_modules/pi-lens/README.md +115 -25
- package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
- package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
- package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
- package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
- package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
- package/node_modules/pi-lens/dist/chunk-34U7PLGE.js +23 -0
- package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
- package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
- package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
- package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
- package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
- package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
- package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
- package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
- package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
- package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
- package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
- package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
- package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
- package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
- package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -0
- package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
- package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
- package/node_modules/pi-lens/dist/chunk-AHDW3GPE.js +50 -0
- package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
- package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
- package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
- package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
- package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
- package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
- package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
- package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
- package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
- package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
- package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
- package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
- package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
- package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
- package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
- package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
- package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
- package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
- package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
- package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
- package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
- package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
- package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
- package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
- package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
- package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
- package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
- package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
- package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
- package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
- package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
- package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
- package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
- package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
- package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
- package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
- package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
- package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
- package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
- package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
- package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
- package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
- package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
- package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
- package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
- package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
- package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
- package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
- package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
- package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
- package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
- package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
- package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
- package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
- package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
- package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
- package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -0
- package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
- package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
- package/node_modules/pi-lens/dist/chunk-RIISMHKN.js +36 -0
- package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
- package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
- package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
- package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
- package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
- package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
- package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
- package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
- package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
- package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
- package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
- package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
- package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
- package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
- package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
- package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
- package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
- package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
- package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
- package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
- package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
- package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
- package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
- package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
- package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
- package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
- package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
- package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
- package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
- package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
- package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -0
- package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
- package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
- package/node_modules/pi-lens/dist/chunk-ZAWW3AF6.js +97 -0
- package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
- package/node_modules/pi-lens/dist/index.js +16456 -8335
- package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
- package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
- package/node_modules/pi-lens/dist/mcp/server.js +22589 -1573
- package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
- package/node_modules/pi-lens/dist/probes/installer.js +135 -0
- package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
- package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
- package/node_modules/pi-lens/docs/agent-guide.md +13 -4
- package/node_modules/pi-lens/docs/agent-tools.md +42 -0
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +3 -2
- package/node_modules/pi-lens/docs/configuration.md +20 -1
- package/node_modules/pi-lens/docs/environment-variables.md +52 -2
- package/node_modules/pi-lens/docs/features.md +8 -4
- package/node_modules/pi-lens/docs/globalconfig.md +1 -0
- package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
- package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -4
- package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
- package/node_modules/pi-lens/docs/mcp.md +21 -5
- package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
- package/node_modules/pi-lens/docs/pi-lens-fixer.md +156 -88
- package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
- package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
- package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
- package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
- package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -48
- package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
- package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
- package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
- package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
- package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
- package/node_modules/pi-lens/docs/servercapabilities.md +53 -49
- package/node_modules/pi-lens/docs/settings.md +1 -0
- package/node_modules/pi-lens/docs/usage.md +5 -1
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
- package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
- package/node_modules/pi-lens/package.json +18 -6
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
- package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
- package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
- package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
- package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
- package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
- package/node_modules/pi-typesafe/README.md +1 -1
- package/node_modules/pi-typesafe/dist/backends.d.ts +15 -5
- package/node_modules/pi-typesafe/dist/backends.js +18 -0
- package/node_modules/pi-typesafe/dist/client.d.ts +4 -3
- package/node_modules/pi-typesafe/dist/client.js +22 -7
- package/node_modules/pi-typesafe/dist/index.d.ts +2 -2
- package/node_modules/pi-typesafe/dist/index.js +1 -1
- package/node_modules/pi-typesafe/dist/usage.d.ts +14 -4
- package/node_modules/pi-typesafe/dist/usage.js +147 -42
- package/node_modules/pi-typesafe/package.json +1 -1
- package/node_modules/pi-web-access/CHANGELOG.md +48 -0
- package/node_modules/pi-web-access/README.md +57 -11
- package/node_modules/pi-web-access/brave-rate-limit.ts +8 -2
- package/node_modules/pi-web-access/curator-page.ts +5 -1
- package/node_modules/pi-web-access/curator-server.ts +2 -0
- package/node_modules/pi-web-access/declared-web-links.ts +2 -2
- package/node_modules/pi-web-access/degoog.ts +323 -0
- package/node_modules/pi-web-access/dist/index.js +3483 -2745
- package/node_modules/pi-web-access/dist/mcp-cli.js +27443 -0
- package/node_modules/pi-web-access/exa.ts +5 -1
- package/node_modules/pi-web-access/extract.ts +41 -3
- package/node_modules/pi-web-access/firecrawl.ts +35 -4
- package/node_modules/pi-web-access/gemini-search.ts +34 -11
- package/node_modules/pi-web-access/gemini-web.ts +14 -9
- package/node_modules/pi-web-access/index.ts +153 -1202
- package/node_modules/pi-web-access/keenable.ts +221 -0
- package/node_modules/pi-web-access/mcp-cli.ts +40 -0
- package/node_modules/pi-web-access/mcp-server.ts +81 -0
- package/node_modules/pi-web-access/mcp-tool-definitions.ts +117 -0
- package/node_modules/pi-web-access/openai-search.ts +34 -1
- package/node_modules/pi-web-access/package.json +23 -5
- package/node_modules/pi-web-access/perplexity.ts +64 -56
- package/node_modules/pi-web-access/tool-arguments.ts +20 -0
- package/node_modules/pi-web-access/video-extract.ts +1 -1
- package/node_modules/pi-web-access/web-tool-contract.ts +86 -0
- package/node_modules/pi-web-access/web-tool-core.ts +1502 -0
- package/node_modules/pi-web-access/youtube-extract.ts +2 -5
- package/package.json +17 -12
- package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -329
- package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -346
- package/node_modules/@dietrichgebert/ponytail/assets/benchmark-3model.svg +0 -21
- package/node_modules/@dietrichgebert/ponytail/assets/benchmark-agentic.svg +0 -62
- package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.svg +0 -115
- package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt-dark.svg +0 -27
- package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt.svg +0 -27
- package/node_modules/@dietrichgebert/ponytail/assets/logo.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-icon.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-dark.svg +0 -4
- package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-light.svg +0 -4
- package/node_modules/@dietrichgebert/ponytail/assets/social-preview.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-es.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-ko.png +0 -0
- package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner.png +0 -0
- package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
- package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
- package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
- package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
- package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
- package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
- package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
- package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
- package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
- package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
- package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
- package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
- package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
- package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
- package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
- package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
- package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
- package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
- package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
- package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
- package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
- package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
- package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
- package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
- package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
- package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
- package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
- package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
- package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
- package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
- package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
- package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
- package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
- package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
- package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
- package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
- package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
- package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
- package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
- package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
- package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
- package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
- package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
- package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
- package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
- package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
- package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
- package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
- package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
- package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
- package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
- package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
- package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
- package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
- package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
- package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
- package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
- package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
- package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
- package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
- package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
- package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
- package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
- package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
- package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
- package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
- package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
- package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
- package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
- package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
- package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
- package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
- package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
- package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
- package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
- package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
- package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
- package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
- package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
- package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
- package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
- package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
- package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
- package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
- package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
- package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
- package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
- package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
- package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
- package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
- package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
- package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
- package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
- package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
- package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
- package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
- package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
- package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
- package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
- package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
- package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
- package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
- package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
- package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
- package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
- package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
- package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
- package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
- package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
- package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
- package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
- package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
- package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
- package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
- package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
- package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
- package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
- package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
- package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
- package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
- package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
- package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
- package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
- package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
- package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
- package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
- package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
- package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
- package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
- package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
- package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
- package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
- package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
- package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
- package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
- package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
- package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
- package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
- package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
- package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
- package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
- package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
- package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
- package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
- package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
- package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
- package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
- package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
- package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
- package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
- package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
- package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
- package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
- package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
- package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
- package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
- package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
- package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
- package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
- package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
- package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
- package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
- package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
- package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
- package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
- package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
- package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
- package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
- package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
- package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
- package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
- package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
- package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
- package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
- package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
- package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
- package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
- package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
- package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
- package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
- package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
- package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
- package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
- package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
- package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
- package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
- package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
- package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
- package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
- package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
- package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
- package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
- package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
- package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
- package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
- package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
- package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
- package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
- package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
- package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
- package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
- package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
- package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
- package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
- package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
- package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
- package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
- package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
- package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
- package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
- package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
- package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
- package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
- package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
- package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
- package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
- package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
- package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
- package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
- package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
- package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
- package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
- package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
- package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
- package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
- package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
- package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
- package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
- package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
- package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
- package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
- package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
- package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
- package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
- package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
- package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
- package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
- package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
- package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
- package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
- package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
- package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
- package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
- package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
- package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
- package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
- package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
- package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
- package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
- package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
- package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
- package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
- package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
- package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
- package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
- package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
- package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
- package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
- package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
- package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
- package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
- package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
- package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
- package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
- package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
- package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
- package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
- package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
- package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
- package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
- package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
- package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
- package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
- package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
- package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
- package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
- package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
- package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
- package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
- package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
- package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
- package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
- package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
- package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
- package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
- package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
- package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
- package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
- package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
- package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
- package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
- package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
- package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
- package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
- package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
- package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
- package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
- package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
- package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
- package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
- package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
- package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
- package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
- package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
- package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
- package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
- package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
- package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
- package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
- package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
- package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
- package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
- package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
- package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
- package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
- package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
- package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
- package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
- package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
- package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
- package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
- package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
- package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
- package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
- package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
- package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
- package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
- package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
- package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
- package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
- package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
- package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
- package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
- package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
- package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
- package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
- package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
- package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
- package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
- package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
- package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
- package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
- package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
- package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
- package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
- package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
- package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
- package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
- package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
- package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
- package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
- package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
- package/node_modules/pi-lens/dist/i18n.js +0 -69
- package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
- package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
- package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
- package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
- package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
- package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
- package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
- package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
- package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
- package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
- package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
- package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
- package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
- package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
- package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
- package/node_modules/pi-lens/dist/tools/shared.js +0 -29
- package/node_modules/pi-lens/dist/tools/symbol-search.js +0 -155
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Incumbent LSP wait-tier policy for attached sessions (#822).
|
|
3
|
-
*
|
|
4
|
-
* This policy is applied by the incumbent process on behalf of attached
|
|
5
|
-
* sessions. Keep it free of session-local state: no imports from
|
|
6
|
-
* runtime-session, runtime-turn, or warm-attach.
|
|
7
|
-
*/
|
|
8
|
-
import { getServersForFileWithConfig } from "../config.js";
|
|
9
|
-
import { getStrategy } from "./strategies.js";
|
|
10
|
-
/**
|
|
11
|
-
* Classify a SINGLE server (by id, given its live capability snapshot — or
|
|
12
|
-
* `undefined` when none exists yet) as cascade-lane Tier-3 (push-only,
|
|
13
|
-
* silent-on-clean) or not. This is the per-server primitive both
|
|
14
|
-
* `classifyCascadeWaitTier` (file's PRIMARY server only, the cascade lane's
|
|
15
|
-
* original use) and #814's capability-aware AGGREGATE wait (`touchFile`'s
|
|
16
|
-
* `clientScope: "all"` path, `clients/lsp/index.ts`) share — one
|
|
17
|
-
* classification rule, not two copies that could drift. Ambiguous or missing
|
|
18
|
-
* capability data is always `"waits"` (today's behavior) — this function must
|
|
19
|
-
* never be the reason a real answer gets missed.
|
|
20
|
-
*/
|
|
21
|
-
export function classifyServerWaitTier(serverId, snapshot) {
|
|
22
|
-
if (!snapshot)
|
|
23
|
-
return "waits"; // no live snapshot yet — fail-safe
|
|
24
|
-
const mode = snapshot.workspaceDiagnosticsSupport?.mode;
|
|
25
|
-
if (mode === "pull")
|
|
26
|
-
return "pull-capable";
|
|
27
|
-
if (snapshot.customServer === true &&
|
|
28
|
-
mode === "push-only" &&
|
|
29
|
-
snapshot.diagnosticsUnsupported === true &&
|
|
30
|
-
snapshot.diagnosticsPublished !== true) {
|
|
31
|
-
return "diagnostics-unsupported";
|
|
32
|
-
}
|
|
33
|
-
if (mode !== "push-only")
|
|
34
|
-
return "waits";
|
|
35
|
-
const strategy = getStrategy(serverId, snapshot.launchVariant);
|
|
36
|
-
if (strategy.silentOnClean !== true)
|
|
37
|
-
return "waits"; // 2*/unknown push-only
|
|
38
|
-
// #524/#529/#541/#558: `silentOnClean` on a server-id-keyed strategy is
|
|
39
|
-
// only proven against the variant it was actually measured against.
|
|
40
|
-
// "typescript" today means either classic typescript-language-server
|
|
41
|
-
// (confirmed silent-on-clean, 2026-07-12 dual-environment re-measurement)
|
|
42
|
-
// or TS7's native `tsc --lsp --stdio` (the SAME re-measurement found it
|
|
43
|
-
// publishes 2 version-less diagnostic sets on clean — NOT silent, a
|
|
44
|
-
// drift from the earlier #541 measurement). A native-ts7 snapshot must
|
|
45
|
-
// NOT inherit the classic verdict: fall through to "waits", the same
|
|
46
|
-
// ambiguous/fail-safe path an unmarked or non-push-only server already
|
|
47
|
-
// takes. `launchVariant === "classic"` or absent (older snapshots that
|
|
48
|
-
// predate the marker) keeps today's tier-3 behavior exactly.
|
|
49
|
-
if (snapshot.launchVariant === "native-ts7")
|
|
50
|
-
return "waits";
|
|
51
|
-
return "tier3-silent";
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve `filePath`'s PRIMARY (non-auxiliary) server id and its live
|
|
55
|
-
* capability snapshot, or `undefined` when the file has no primary server
|
|
56
|
-
* configured. The single place that decides what "this file's server" means
|
|
57
|
-
* for wait-policy purposes — shared by {@link classifyCascadeWaitTier} and the
|
|
58
|
-
* cascade-lane wrapper in `clients/lsp/cascade-tier.ts`, which needs the same
|
|
59
|
-
* id/snapshot pair to apply its one cascade-only override.
|
|
60
|
-
*/
|
|
61
|
-
export function resolvePrimaryServerForWaitPolicy(filePath, snapshots) {
|
|
62
|
-
const servers = getServersForFileWithConfig(filePath).filter((s) => s.role !== "auxiliary");
|
|
63
|
-
const primary = servers[0];
|
|
64
|
-
if (!primary)
|
|
65
|
-
return undefined;
|
|
66
|
-
return {
|
|
67
|
-
serverId: primary.id,
|
|
68
|
-
snapshot: snapshots.find((s) => s.serverId === primary.id),
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Classify whether `filePath`'s PRIMARY language server is a cascade-lane
|
|
73
|
-
* Tier-3 (push-only, silent-on-clean) server. Ambiguous or missing capability
|
|
74
|
-
* data is always `"waits"` (today's behavior) — this function must never be
|
|
75
|
-
* the reason a real answer gets missed. Thin wrapper over
|
|
76
|
-
* `classifyServerWaitTier` — resolves the file's primary server id/snapshot,
|
|
77
|
-
* then defers to the shared per-server rule.
|
|
78
|
-
*/
|
|
79
|
-
export function classifyCascadeWaitTier(lspService, filePath, snapshots) {
|
|
80
|
-
void lspService; // kept in the signature for call-site clarity/typing only
|
|
81
|
-
const primary = resolvePrimaryServerForWaitPolicy(filePath, snapshots);
|
|
82
|
-
if (!primary)
|
|
83
|
-
return "waits";
|
|
84
|
-
return classifyServerWaitTier(primary.serverId, primary.snapshot);
|
|
85
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Incumbent-owned LSP wait policy and capability inventory boundary (#822).
|
|
3
|
-
*
|
|
4
|
-
* The incumbent applies this policy when it serves attached sessions. Keep
|
|
5
|
-
* this boundary process-neutral and free of session-local state: do not import
|
|
6
|
-
* runtime-session, runtime-turn, or warm-attach here.
|
|
7
|
-
*/
|
|
8
|
-
export * from "./capability-snapshot.js";
|
|
9
|
-
export * from "./classification.js";
|
|
10
|
-
export * from "./strategies.js";
|
|
@@ -1,392 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Incumbent LSP wait policy for attached sessions (#822).
|
|
3
|
-
*
|
|
4
|
-
* The incumbent process applies this policy on behalf of every attached
|
|
5
|
-
* session. Keep this module free of session-local state: it must not import
|
|
6
|
-
* runtime-session, runtime-turn, or warm-attach.
|
|
7
|
-
*
|
|
8
|
-
* Per-Server Diagnostic Strategies for pi-lens LSP
|
|
9
|
-
*
|
|
10
|
-
* Codifies known server behavior so timing decisions (debounce, retry budget,
|
|
11
|
-
* first-push seeding) are automatic rather than one-size-fits-all.
|
|
12
|
-
*
|
|
13
|
-
* Env var overrides (PI_LENS_LSP_*) always take precedence over strategy values.
|
|
14
|
-
*/
|
|
15
|
-
import { createRequire } from "node:module";
|
|
16
|
-
const _require = createRequire(import.meta.url);
|
|
17
|
-
/**
|
|
18
|
-
* Platform/arch → `@ast-grep/cli-<platform>-<arch>[-msvc|-gnu]` native
|
|
19
|
-
* package name, mirroring @ast-grep/cli's own `optionalDependencies` matrix
|
|
20
|
-
* (checked directly against node_modules/@ast-grep/cli/package.json). Each
|
|
21
|
-
* package ships the native `ast-grep`/`ast-grep.exe` binary at its package
|
|
22
|
-
* root (no `bin/` subdir) — see node_modules/@ast-grep/cli-win32-x64-msvc/.
|
|
23
|
-
*/
|
|
24
|
-
function astGrepNativePackageName(platform, arch) {
|
|
25
|
-
switch (platform) {
|
|
26
|
-
case "win32":
|
|
27
|
-
if (arch === "x64")
|
|
28
|
-
return "@ast-grep/cli-win32-x64-msvc";
|
|
29
|
-
if (arch === "arm64")
|
|
30
|
-
return "@ast-grep/cli-win32-arm64-msvc";
|
|
31
|
-
if (arch === "ia32")
|
|
32
|
-
return "@ast-grep/cli-win32-ia32-msvc";
|
|
33
|
-
return undefined;
|
|
34
|
-
case "darwin":
|
|
35
|
-
if (arch === "arm64")
|
|
36
|
-
return "@ast-grep/cli-darwin-arm64";
|
|
37
|
-
if (arch === "x64")
|
|
38
|
-
return "@ast-grep/cli-darwin-x64";
|
|
39
|
-
return undefined;
|
|
40
|
-
case "linux":
|
|
41
|
-
if (arch === "x64")
|
|
42
|
-
return "@ast-grep/cli-linux-x64-gnu";
|
|
43
|
-
if (arch === "arm64")
|
|
44
|
-
return "@ast-grep/cli-linux-arm64-gnu";
|
|
45
|
-
return undefined;
|
|
46
|
-
default:
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Resolve ast-grep's platform-native exe DIRECTLY, skipping the node-bin
|
|
52
|
-
* wrapper (`ast-grep.cmd`/shim → node → cli.js → spawn native exe). One less
|
|
53
|
-
* orphanable process layer (#472): a wrapper's direct child is the node/cmd
|
|
54
|
-
* process, so on abnormal exit the actual ast-grep binary is a grandchild the
|
|
55
|
-
* #234 teardown path never reaches — resolving straight to the native exe
|
|
56
|
-
* means the LSP's direct child IS the real server.
|
|
57
|
-
*
|
|
58
|
-
* `require.resolve` is wrapped in try/catch (ESM-safe via createRequire, same
|
|
59
|
-
* pattern as clients/deps/ast-grep-napi.ts) — returns undefined so the caller
|
|
60
|
-
* falls back to the existing wrapper-based resolution when the platform
|
|
61
|
-
* package isn't installed (it's an optionalDependency; native builds can be
|
|
62
|
-
* absent on unsupported platforms/arches or a partial install).
|
|
63
|
-
*/
|
|
64
|
-
export function resolveAstGrepNativeExe(platform = process.platform, arch = process.arch) {
|
|
65
|
-
const pkgName = astGrepNativePackageName(platform, arch);
|
|
66
|
-
if (!pkgName)
|
|
67
|
-
return undefined;
|
|
68
|
-
const binaryName = platform === "win32" ? "ast-grep.exe" : "ast-grep";
|
|
69
|
-
try {
|
|
70
|
-
return _require.resolve(`${pkgName}/${binaryName}`);
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/** @public — loaded by scripts/probe-clean-signal.mjs through a dynamic import wrapper knip cannot see. */
|
|
77
|
-
export const SERVER_DIAGNOSTIC_STRATEGIES = {
|
|
78
|
-
typescript: {
|
|
79
|
-
seedFirstPush: true,
|
|
80
|
-
pullRetryBudgetMs: 0,
|
|
81
|
-
debounceMs: 50,
|
|
82
|
-
aggregateWaitMs: 1000,
|
|
83
|
-
expectSemanticSecondPush: false,
|
|
84
|
-
// Tier 3 (#458): typescript-language-server publishes nothing on a
|
|
85
|
-
// clean→clean edit (docs/lsp-capability-matrix.md, re-confirmed
|
|
86
|
-
// 2026-07-12). It's the lone core-set tier-3 server, which is exactly
|
|
87
|
-
// why the cascade lane's in-lane wait is worth skipping for it
|
|
88
|
-
// specifically. Applies to the CLASSIC server only (#524/#529/#558)
|
|
89
|
-
// — TS7's native `tsc --lsp --stdio` variant shares this
|
|
90
|
-
// "typescript" server id but the 2026-07-12 dual-environment
|
|
91
|
-
// re-measurement found it now publishes on clean (a drift from the
|
|
92
|
-
// #541 measurement); wait-policy/classification.ts's classifier checks the live
|
|
93
|
-
// snapshot's launchVariant and never applies this flag to a
|
|
94
|
-
// native-ts7 instance.
|
|
95
|
-
silentOnClean: true,
|
|
96
|
-
},
|
|
97
|
-
"rust-analyzer": {
|
|
98
|
-
seedFirstPush: false,
|
|
99
|
-
pullRetryBudgetMs: 500,
|
|
100
|
-
debounceMs: 150,
|
|
101
|
-
aggregateWaitMs: 3000,
|
|
102
|
-
expectSemanticSecondPush: true,
|
|
103
|
-
},
|
|
104
|
-
// PythonServer (pyright / basedpyright) — openFilesOnly mode: lazy per-file
|
|
105
|
-
// analysis, startup similar to jedi. seedFirstPush: true because pyright's
|
|
106
|
-
// first publishDiagnostics after didOpen is the complete result for that file.
|
|
107
|
-
python: {
|
|
108
|
-
seedFirstPush: true,
|
|
109
|
-
pullRetryBudgetMs: 0,
|
|
110
|
-
debounceMs: 100,
|
|
111
|
-
aggregateWaitMs: 1500,
|
|
112
|
-
expectSemanticSecondPush: false,
|
|
113
|
-
},
|
|
114
|
-
// jedi-language-server is push-only (no pull diagnostics) and its FIRST
|
|
115
|
-
// publishDiagnostics is the complete result (seedFirstPush). But that first
|
|
116
|
-
// push lands just after didOpen+~1s on cold start (Python/parso import) —
|
|
117
|
-
// measured ~1011ms — so a 1000ms aggregate budget misses it by a hair and
|
|
118
|
-
// returns zero. 3000ms gives cold-start headroom without stalling the warm path.
|
|
119
|
-
"python-jedi": {
|
|
120
|
-
seedFirstPush: true,
|
|
121
|
-
pullRetryBudgetMs: 0,
|
|
122
|
-
debounceMs: 100,
|
|
123
|
-
aggregateWaitMs: 3000,
|
|
124
|
-
expectSemanticSecondPush: false,
|
|
125
|
-
},
|
|
126
|
-
eslint: {
|
|
127
|
-
seedFirstPush: true,
|
|
128
|
-
pullRetryBudgetMs: 0,
|
|
129
|
-
debounceMs: 200,
|
|
130
|
-
aggregateWaitMs: 2000,
|
|
131
|
-
expectSemanticSecondPush: false,
|
|
132
|
-
},
|
|
133
|
-
// Opengrep security scanner (cross-language LSP). It pushes an EMPTY result
|
|
134
|
-
// during the one-time rule-load window at startup, then the real scan after
|
|
135
|
-
// `semgrep/rulesRefreshed` — so never seed the first push. Push-only (no pull
|
|
136
|
-
// diagnostics). Warm per-file scan ~1.3s; the first touch in a session may
|
|
137
|
-
// also pay rule-load (~3.5s cold). aggregateWaitMs is 3500: it's this
|
|
138
|
-
// server's OWN deadline, bounded by the per-edit caller cap as a ceiling
|
|
139
|
-
// (#242), so on a 2500ms-capped edit opengrep waits min(2500, 3500)=2500
|
|
140
|
-
// and on uncapped paths it gets its full 3500. 3500 covers warm and most
|
|
141
|
-
// cold; a cold scan that overruns isn't lost — late diagnostics are cached
|
|
142
|
-
// and surface on the next unchanged-content read through the content-bound
|
|
143
|
-
// auxiliary carry-over path.
|
|
144
|
-
opengrep: {
|
|
145
|
-
seedFirstPush: false,
|
|
146
|
-
pullRetryBudgetMs: 0,
|
|
147
|
-
debounceMs: 250,
|
|
148
|
-
aggregateWaitMs: 3500,
|
|
149
|
-
expectSemanticSecondPush: false,
|
|
150
|
-
// Opengrep re-scans only on a fresh didOpen — didChange is a no-op for it.
|
|
151
|
-
reopenOnResync: true,
|
|
152
|
-
},
|
|
153
|
-
// ast-grep structural linter (sgconfig-gated auxiliary LSP). Push-only,
|
|
154
|
-
// compiles the project rules on the first scan of a session, and — like
|
|
155
|
-
// Opengrep — is re-synced via didClose+didOpen so edits trigger a re-scan.
|
|
156
|
-
// Conservative budget until measured against real projects (#239).
|
|
157
|
-
// ast-grep re-scans on didChange (verified: toggling the violation count
|
|
158
|
-
// 3→1→4→2 returns the correct fresh count each touch, with matching doc
|
|
159
|
-
// versions), so reopen isn't needed and didChange is the lighter path.
|
|
160
|
-
// aggregateWaitMs is 1800: its warm scan is ~1.3s, so 1000 was under-budgeted
|
|
161
|
-
// (only masked before because the old with-auxiliary deadline was a global
|
|
162
|
-
// max() floor; now each server has its own caller-cap-bounded deadline, #242,
|
|
163
|
-
// so the budget must actually cover the scan).
|
|
164
|
-
"ast-grep": {
|
|
165
|
-
seedFirstPush: false,
|
|
166
|
-
pullRetryBudgetMs: 0,
|
|
167
|
-
debounceMs: 150,
|
|
168
|
-
aggregateWaitMs: 1800,
|
|
169
|
-
expectSemanticSecondPush: false,
|
|
170
|
-
reopenOnResync: false,
|
|
171
|
-
},
|
|
172
|
-
// zizmor (GitHub Actions security scanner, auxiliary LSP #272). Push-only
|
|
173
|
-
// (no pull diagnostics). Its audit set is compiled-in — there's no rule-load
|
|
174
|
-
// window like Opengrep — so the FIRST publishDiagnostics after didOpen IS the
|
|
175
|
-
// complete result: seedFirstPush. It re-scans on didChange (FULL sync), so no
|
|
176
|
-
// reopen-on-resync. A native single-workflow audit is sub-second offline;
|
|
177
|
-
// online mode may add a GitHub-API round-trip, so 2000ms gives headroom
|
|
178
|
-
// (bounded by the per-edit caller cap as a ceiling, #242), and any late online
|
|
179
|
-
// finding can surface on the next unchanged-content read through the
|
|
180
|
-
// content-bound auxiliary carry-over path.
|
|
181
|
-
zizmor: {
|
|
182
|
-
seedFirstPush: true,
|
|
183
|
-
pullRetryBudgetMs: 0,
|
|
184
|
-
debounceMs: 150,
|
|
185
|
-
aggregateWaitMs: 2000,
|
|
186
|
-
expectSemanticSecondPush: false,
|
|
187
|
-
reopenOnResync: false,
|
|
188
|
-
},
|
|
189
|
-
// typos (source-code spell checker, auxiliary LSP #283). Push-only (no pull
|
|
190
|
-
// diagnostics). Its dictionary is compiled in — there's NO rule-load window
|
|
191
|
-
// like Opengrep — so the FIRST publishDiagnostics after didOpen IS the
|
|
192
|
-
// complete result: seedFirstPush. It re-scans on didChange (FULL sync), so no
|
|
193
|
-
// reopen-on-resync. A native single-file spell scan is sub-100ms, so the seed
|
|
194
|
-
// arrives near-instantly; aggregateWaitMs is a generous ceiling (bounded by
|
|
195
|
-
// the per-edit caller cap, #242) that the early seed resolves well under.
|
|
196
|
-
typos: {
|
|
197
|
-
seedFirstPush: true,
|
|
198
|
-
pullRetryBudgetMs: 0,
|
|
199
|
-
debounceMs: 150,
|
|
200
|
-
aggregateWaitMs: 1500,
|
|
201
|
-
expectSemanticSecondPush: false,
|
|
202
|
-
reopenOnResync: false,
|
|
203
|
-
},
|
|
204
|
-
// marksman (Markdown LSP, #274). Push-based; native binary so the per-file
|
|
205
|
-
// parse is fast, but its value is CROSS-file (broken intra-repo links,
|
|
206
|
-
// missing anchors/heading refs) which needs the workspace index — so the
|
|
207
|
-
// first push after didOpen can be empty before indexing completes. Don't
|
|
208
|
-
// seed it (like opengrep/rust-analyzer); a modest 1500ms aggregate covers
|
|
209
|
-
// warm edits, and any late cross-file finding surfaces on the next touch.
|
|
210
|
-
marksman: {
|
|
211
|
-
seedFirstPush: false,
|
|
212
|
-
pullRetryBudgetMs: 0,
|
|
213
|
-
debounceMs: 150,
|
|
214
|
-
aggregateWaitMs: 1500,
|
|
215
|
-
expectSemanticSecondPush: false,
|
|
216
|
-
// #645: a full-tree sweep opens every markdown file, all racing the
|
|
217
|
-
// SAME one-time workspace index build — pay the 1500ms budget once
|
|
218
|
-
// per sweep (the first markdown file touched), not once per file.
|
|
219
|
-
// 250ms covers a warm per-file publish (native binary, fast parse)
|
|
220
|
-
// once the index has already had a full aggregateWaitMs window.
|
|
221
|
-
workspaceIndexing: true,
|
|
222
|
-
workspaceIndexingWarmWaitMs: 250,
|
|
223
|
-
// #799 / run 35914033696: marksman is push-only and publishes NOTHING on
|
|
224
|
-
// a clean transition — there is no pull fallback and no sync-confirm protocol (unlike
|
|
225
|
-
// typescript's tsserver commands), so a clean markdown file's touch
|
|
226
|
-
// waits its full budget with zero signal either way. Marking it
|
|
227
|
-
// `silentOnClean` lets the generic push-only clean-confirm gate
|
|
228
|
-
// (`touchFile`, the `classifyCascadeWaitTier`-driven fallback next to
|
|
229
|
-
// the tsserver sync-confirm block) treat "no publish within budget,
|
|
230
|
-
// notify succeeded" as CONFIRMED clean instead of inconclusive/timed
|
|
231
|
-
// out — closing the observed 2x20s-per-sweep burn on clean markdown
|
|
232
|
-
// (evidence: agents.md timed out at 20009ms/20014ms on both the
|
|
233
|
-
// warm-up attempt and its retry, with zero diagnostics either time).
|
|
234
|
-
silentOnClean: true,
|
|
235
|
-
},
|
|
236
|
-
// cue lsp serve (#1522, #1519, #1520). Measured directly against the real
|
|
237
|
-
// v0.17.1 binary (`getWorkspaceDiagnosticsSupport` reports
|
|
238
|
-
// `mode: "push-only"`; no pull support advertised).
|
|
239
|
-
//
|
|
240
|
-
// It reports load/parse (syntax) errors as you type, but leaves
|
|
241
|
-
// conflicting-value/constraint-failure (evaluation) errors to `cue vet`
|
|
242
|
-
// — the #1522 cue-vet auxiliary runner covers that gap. So the syntax
|
|
243
|
-
// diagnostics this strategy governs are a REAL but PARTIAL signal, not
|
|
244
|
-
// full CUE validation.
|
|
245
|
-
//
|
|
246
|
-
// The repaired clean-signal probe measured cue as publishing a versioned
|
|
247
|
-
// clean-transition set (run 35914033696), so this marker stays absent:
|
|
248
|
-
// the cascade must retain its normal early-publish path.
|
|
249
|
-
//
|
|
250
|
-
// seedFirstPush: true — the one cold-open case that DOES publish (a
|
|
251
|
-
// file that is already broken) sends the complete single diagnostic on
|
|
252
|
-
// its first push; there is no observed partial-then-complete sequence to
|
|
253
|
-
// wait out.
|
|
254
|
-
//
|
|
255
|
-
// aggregateWaitMs: 2000 covers the measured warm edit-to-publish latency
|
|
256
|
-
// (~930ms, syntax reparse) with margin; a cold spawn's first push (~2.1s
|
|
257
|
-
// end-to-end including process start) is bounded separately by
|
|
258
|
-
// maxClientWaitMs, not this per-diagnostics budget.
|
|
259
|
-
// intelephense (php, #3310). Measured directly against the real v1.18.5
|
|
260
|
-
// binary over a raw JSON-RPC session answering `workspace/configuration`
|
|
261
|
-
// the way pi-lens does (2026-09-23, linux):
|
|
262
|
-
//
|
|
263
|
-
// +284ms initialize response — NO diagnosticProvider (push-only)
|
|
264
|
-
// +295ms publishDiagnostics diags=0 version=undefined <- pre-index
|
|
265
|
-
// +301ms indexingStarted
|
|
266
|
-
// +689ms indexingEnded
|
|
267
|
-
// +696ms publishDiagnostics diags=2 version=undefined <- the answer
|
|
268
|
-
//
|
|
269
|
-
// so `emptyFirstPublish: "indexing"`: the first publish is an artifact of
|
|
270
|
-
// the cold index, not an answer. The same session on a genuinely CLEAN
|
|
271
|
-
// file publishes `[]` at +304ms and `[]` AGAIN at +663ms (right after
|
|
272
|
-
// `indexingEnded`), which is what lets the held publish be released by
|
|
273
|
-
// the server's own second publish instead of by a timer — and a WARM
|
|
274
|
-
// touch (a second file, index already built) publishes the real set
|
|
275
|
-
// FIRST at +5ms, so the hold costs nothing once the session is warm.
|
|
276
|
-
//
|
|
277
|
-
// seedFirstPush: false — the measurement above is the direct refutation
|
|
278
|
-
// of "the first push is complete" for this server.
|
|
279
|
-
// pullRetryBudgetMs: 0 — no pull provider is advertised at all.
|
|
280
|
-
// aggregateWaitMs: 8000 — the budget must cover the cold index window,
|
|
281
|
-
// which is what the second (real) publish waits on: ~0.4s for a 139-file
|
|
282
|
-
// index on the dev box, ~5s on the nightly ubuntu runner (#3217's
|
|
283
|
-
// transcript). Per-edit callers cap this as a CEILING (#242), so an
|
|
284
|
-
// interactive edit still waits only its own cap; the uncapped paths (the
|
|
285
|
-
// tool-smoke LSP gate, which itself caps at 8000ms) get the full budget,
|
|
286
|
-
// and the cold index is paid once per session, not once per touch.
|
|
287
|
-
php: {
|
|
288
|
-
seedFirstPush: false,
|
|
289
|
-
pullRetryBudgetMs: 0,
|
|
290
|
-
debounceMs: 150,
|
|
291
|
-
aggregateWaitMs: 8000,
|
|
292
|
-
expectSemanticSecondPush: false,
|
|
293
|
-
emptyFirstPublish: "indexing",
|
|
294
|
-
},
|
|
295
|
-
// Svelte's pull diagnostics settle after the default 1500ms budget on a
|
|
296
|
-
// cold server. The tool-smoke gate caps waits at 8000ms, so give this
|
|
297
|
-
// server enough aggregate budget to return its seeded findings (#3311).
|
|
298
|
-
svelte: {
|
|
299
|
-
seedFirstPush: false,
|
|
300
|
-
pullRetryBudgetMs: 0,
|
|
301
|
-
debounceMs: 150,
|
|
302
|
-
aggregateWaitMs: 4000,
|
|
303
|
-
expectSemanticSecondPush: false,
|
|
304
|
-
},
|
|
305
|
-
// csharp-ls loads (design-time-builds) the restored project AFTER
|
|
306
|
-
// `initialize` returns, so the publish for a seeded CS0029 lands inside
|
|
307
|
-
// `waitForDiagnostics`, not inside the client wait. MEASURED A/B over two
|
|
308
|
-
// nightly Tool-smoke runs of the same fixture with `dotnet restore` already
|
|
309
|
-
// done — the ONLY difference between them was this budget:
|
|
310
|
-
// * `aggregateWaitMs` 1500 (the default): run 36054901266 →
|
|
311
|
-
// `[csharp] touched=0`, 4.05s after `Restored …/toolsmoke.csproj`.
|
|
312
|
-
// A real compiler error read as clean.
|
|
313
|
-
// * 8000: run 36058292424 → `[csharp] touched=1`, 6.49s after the same
|
|
314
|
-
// line; gate run 36059988117 → `lsp_diagnostics returned 1 primary
|
|
315
|
-
// finding`, 4.86s after it.
|
|
316
|
-
// Both windows INCLUDE workspace bootstrap + spawn + initialize, so they
|
|
317
|
-
// bound the wait from above: the required budget is in (1500, 4860] ms.
|
|
318
|
-
// 6000 covers the measured gate window with margin and stays under the
|
|
319
|
-
// tool-smoke gate's own 8000ms ceiling (that relation is pinned by
|
|
320
|
-
// tests/config/lsp-gate-population.test.ts), so the gate can still witness
|
|
321
|
-
// this budget. CONFIRMED at 6000 by run 36064829436: `✓ csharp csharp-ls 1
|
|
322
|
-
// lsp_diagnostics returned 1 primary finding`, 4.78s after `Restored
|
|
323
|
-
// …csproj`, census unchanged at gated 31 / handshake-only 8 / unavailable 6
|
|
324
|
-
// — so 6000 is measured as sufficient, not merely inferred from the 8000
|
|
325
|
-
// runs above. It is deliberately NOT the ceiling: an `lsp_diagnostics` call
|
|
326
|
-
// that passes no `waitMs` pays this budget in full on a file the server never
|
|
327
|
-
// publishes for (`tools/lsp-diagnostics.ts` leaves `maxClientWaitMs`
|
|
328
|
-
// undefined → `perServerTimeout` has no caller cap), so every 1000ms here
|
|
329
|
-
// is 1000ms of turn latency on the no-publication path (#3402 review r2).
|
|
330
|
-
// Every other field is DEFAULT_STRATEGY's value on purpose: csharp-ls is
|
|
331
|
-
// `mode=pull`/tier-1 authoritative-clean (#3311 investigator table), and
|
|
332
|
-
// nothing has measured its pull retry, so this entry moves the one field
|
|
333
|
-
// that was measured and no other (pinned in
|
|
334
|
-
// tests/clients/lsp/server-strategies.test.ts).
|
|
335
|
-
// fsharp/expert/vue deliberately have NO entry: the same two runs show
|
|
336
|
-
// `touched=0` at BOTH 1500 and 8000, so the budget is not what stops them
|
|
337
|
-
// publishing and an 8000 entry would buy nothing while costing every
|
|
338
|
-
// uncapped production call 6.5 extra seconds. Their fixture rows carry the
|
|
339
|
-
// observed-behavior exemption instead (`scripts/smoke-tools.mjs`), and a
|
|
340
|
-
// probe that wants a long window sets `PI_LENS_LSP_DIAGNOSTICS_MAX_WAIT_MS`
|
|
341
|
-
// — a flat harness override that needs no production budget.
|
|
342
|
-
csharp: {
|
|
343
|
-
seedFirstPush: false,
|
|
344
|
-
pullRetryBudgetMs: 250,
|
|
345
|
-
debounceMs: 150,
|
|
346
|
-
aggregateWaitMs: 6000,
|
|
347
|
-
expectSemanticSecondPush: false,
|
|
348
|
-
},
|
|
349
|
-
cue: {
|
|
350
|
-
seedFirstPush: true,
|
|
351
|
-
pullRetryBudgetMs: 0,
|
|
352
|
-
debounceMs: 150,
|
|
353
|
-
aggregateWaitMs: 2000,
|
|
354
|
-
expectSemanticSecondPush: false,
|
|
355
|
-
reopenOnResync: false,
|
|
356
|
-
},
|
|
357
|
-
// lua-language-server is push-only and was silent on clean transitions in
|
|
358
|
-
// the repaired probe (run 35914033696). Keep the marker on the measured
|
|
359
|
-
// server id so the cascade can skip its in-lane wait safely.
|
|
360
|
-
lua: {
|
|
361
|
-
seedFirstPush: true,
|
|
362
|
-
pullRetryBudgetMs: 0,
|
|
363
|
-
debounceMs: 150,
|
|
364
|
-
aggregateWaitMs: 2000,
|
|
365
|
-
expectSemanticSecondPush: false,
|
|
366
|
-
silentOnClean: true,
|
|
367
|
-
},
|
|
368
|
-
};
|
|
369
|
-
/** Native TS7 can publish multiple versionless partial-program snapshots for a
|
|
370
|
-
* single open. Its first push is therefore provisional; a quiet window, rather
|
|
371
|
-
* than a protocol-unstable publication count, establishes the settled push. */
|
|
372
|
-
const NATIVE_TS7_DIAGNOSTIC_STRATEGY = {
|
|
373
|
-
...SERVER_DIAGNOSTIC_STRATEGIES.typescript,
|
|
374
|
-
seedFirstPush: false,
|
|
375
|
-
// Native TS7 demonstrably publishes on clean, so the classic-only marker
|
|
376
|
-
// must not leak through the shared server id.
|
|
377
|
-
silentOnClean: false,
|
|
378
|
-
};
|
|
379
|
-
/** Fallback for unknown servers. Conservative defaults. */
|
|
380
|
-
const DEFAULT_STRATEGY = {
|
|
381
|
-
seedFirstPush: false,
|
|
382
|
-
pullRetryBudgetMs: 250,
|
|
383
|
-
debounceMs: 150,
|
|
384
|
-
aggregateWaitMs: 1500,
|
|
385
|
-
expectSemanticSecondPush: false,
|
|
386
|
-
};
|
|
387
|
-
export function getStrategy(serverId, launchVariant) {
|
|
388
|
-
if (serverId === "typescript" && launchVariant === "native-ts7") {
|
|
389
|
-
return NATIVE_TS7_DIAGNOSTIC_STRATEGY;
|
|
390
|
-
}
|
|
391
|
-
return SERVER_DIAGNOSTIC_STRATEGIES[serverId] ?? DEFAULT_STRATEGY;
|
|
392
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debounced `workspace/didChangeWatchedFiles` batching (#271).
|
|
3
|
-
*
|
|
4
|
-
* `handleNotifyOpen` previously sent one `workspace/didChangeWatchedFiles` per
|
|
5
|
-
* file as each was opened. Many servers (TypeScript, …) kick off a project-wide
|
|
6
|
-
* re-analysis on every such notification, so a turn that edits N files in one
|
|
7
|
-
* project triggered ~N full re-analyses. This per-client queue coalesces the
|
|
8
|
-
* changes within a short window and flushes them as a SINGLE notification, so the
|
|
9
|
-
* server re-indexes once per burst instead of once per file.
|
|
10
|
-
*
|
|
11
|
-
* One queue lives per LSP client (= per serverId+root), so batching is naturally
|
|
12
|
-
* scoped to a single server/project. Worst-case added latency before the server
|
|
13
|
-
* learns of a change is the debounce window — negligible against the multi-second
|
|
14
|
-
* re-analysis it gates.
|
|
15
|
-
*/
|
|
16
|
-
export const WATCH_DEBOUNCE_MS = 100;
|
|
17
|
-
export class WatchedFilesQueue {
|
|
18
|
-
flushFn;
|
|
19
|
-
debounceMs;
|
|
20
|
-
// uri → latest FileChangeType. A Map collapses repeated events for the same
|
|
21
|
-
// URI (last-type-wins) while preserving first-seen insertion order.
|
|
22
|
-
pending = new Map();
|
|
23
|
-
timer = null;
|
|
24
|
-
constructor(flushFn, debounceMs = WATCH_DEBOUNCE_MS) {
|
|
25
|
-
this.flushFn = flushFn;
|
|
26
|
-
this.debounceMs = debounceMs;
|
|
27
|
-
}
|
|
28
|
-
/** Queue a change; arms the debounce timer if not already pending. */
|
|
29
|
-
enqueue(uri, type) {
|
|
30
|
-
this.pending.set(uri, type);
|
|
31
|
-
if (this.timer)
|
|
32
|
-
return;
|
|
33
|
-
this.timer = setTimeout(() => this.flush(), this.debounceMs);
|
|
34
|
-
// Never hold the event loop open for a pending watched-files flush.
|
|
35
|
-
this.timer.unref?.();
|
|
36
|
-
}
|
|
37
|
-
/** Emit all queued changes as one notification (no-op when empty). */
|
|
38
|
-
flush() {
|
|
39
|
-
if (this.timer) {
|
|
40
|
-
clearTimeout(this.timer);
|
|
41
|
-
this.timer = null;
|
|
42
|
-
}
|
|
43
|
-
if (this.pending.size === 0)
|
|
44
|
-
return;
|
|
45
|
-
const changes = [...this.pending.entries()].map(([uri, type]) => ({ uri, type }));
|
|
46
|
-
this.pending.clear();
|
|
47
|
-
this.flushFn(changes);
|
|
48
|
-
}
|
|
49
|
-
/** Drop the timer + any queued changes without emitting (client teardown). */
|
|
50
|
-
cancel() {
|
|
51
|
-
if (this.timer) {
|
|
52
|
-
clearTimeout(this.timer);
|
|
53
|
-
this.timer = null;
|
|
54
|
-
}
|
|
55
|
-
this.pending.clear();
|
|
56
|
-
}
|
|
57
|
-
/** Number of distinct URIs currently queued (for tests/introspection). */
|
|
58
|
-
get size() {
|
|
59
|
-
return this.pending.size;
|
|
60
|
-
}
|
|
61
|
-
}
|