@herbertgao/pi-extensions 2026.10.1 → 2026.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (707) hide show
  1. package/README.md +13 -9
  2. package/THIRD_PARTY_NOTICES.md +2 -2
  3. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-audit.md +2 -2
  4. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-debt.md +2 -2
  5. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-gain.md +1 -1
  6. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-help.md +1 -1
  7. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail-review.md +2 -2
  8. package/node_modules/@dietrichgebert/ponytail/.opencode/command/ponytail.md +1 -1
  9. package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
  10. package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
  11. package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
  12. package/node_modules/@dietrichgebert/ponytail/README.md +68 -72
  13. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +7 -0
  14. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
  15. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
  16. package/node_modules/@dietrichgebert/ponytail/package.json +2 -2
  17. package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
  18. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -32
  19. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
  20. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +17 -16
  21. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +9 -10
  22. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -57
  23. package/node_modules/@herbertgao/pi-agency/LICENSE +21 -0
  24. package/node_modules/@herbertgao/pi-agency/README.md +40 -0
  25. package/node_modules/@herbertgao/pi-agency/package.json +53 -0
  26. package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
  27. package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
  28. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
  29. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
  30. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
  31. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
  32. package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
  33. package/node_modules/@narumitw/pi-caffeinate/package.json +3 -3
  34. package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
  35. package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
  36. package/node_modules/@tifan/pi-recap/package.json +1 -1
  37. package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
  38. package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
  39. package/node_modules/pi-antigravity/README.md +23 -2
  40. package/node_modules/pi-antigravity/package.json +5 -3
  41. package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
  42. package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
  43. package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
  44. package/node_modules/pi-antigravity/src/image/image.ts +86 -47
  45. package/node_modules/pi-antigravity/src/image/native.ts +69 -0
  46. package/node_modules/pi-antigravity/src/index.ts +52 -137
  47. package/node_modules/pi-antigravity/src/search/search.ts +130 -31
  48. package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
  49. package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
  50. package/node_modules/pi-antigravity/src/types/types.ts +1 -1
  51. package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
  52. package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
  53. package/node_modules/pi-lens/CHANGELOG.md +1064 -0
  54. package/node_modules/pi-lens/README.md +115 -25
  55. package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
  56. package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
  57. package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
  58. package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
  59. package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
  60. package/node_modules/pi-lens/dist/chunk-34U7PLGE.js +23 -0
  61. package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
  62. package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
  63. package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
  64. package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
  65. package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
  66. package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
  67. package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
  68. package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
  69. package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
  70. package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
  71. package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
  72. package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
  73. package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
  74. package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
  75. package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
  76. package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -0
  77. package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
  78. package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
  79. package/node_modules/pi-lens/dist/chunk-AHDW3GPE.js +50 -0
  80. package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
  81. package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
  82. package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
  83. package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
  84. package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
  85. package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
  86. package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
  87. package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
  88. package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
  89. package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
  90. package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
  91. package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
  92. package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
  93. package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
  94. package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
  95. package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
  96. package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
  97. package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
  98. package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
  99. package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
  100. package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
  101. package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
  102. package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
  103. package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
  104. package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
  105. package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
  106. package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
  107. package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
  108. package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
  109. package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
  110. package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
  111. package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
  112. package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
  113. package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
  114. package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
  115. package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
  116. package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
  117. package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
  118. package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
  119. package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
  120. package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
  121. package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
  122. package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
  123. package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
  124. package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
  125. package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
  126. package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
  127. package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
  128. package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
  129. package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
  130. package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
  131. package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
  132. package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
  133. package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
  134. package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
  135. package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
  136. package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
  137. package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -0
  138. package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
  139. package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
  140. package/node_modules/pi-lens/dist/chunk-RIISMHKN.js +36 -0
  141. package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
  142. package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
  143. package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
  144. package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
  145. package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
  146. package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
  147. package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
  148. package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
  149. package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
  150. package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
  151. package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
  152. package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
  153. package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
  154. package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
  155. package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
  156. package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
  157. package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
  158. package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
  159. package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
  160. package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
  161. package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
  162. package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
  163. package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
  164. package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
  165. package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
  166. package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
  167. package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
  168. package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
  169. package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
  170. package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
  171. package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -0
  172. package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
  173. package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
  174. package/node_modules/pi-lens/dist/chunk-ZAWW3AF6.js +97 -0
  175. package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
  176. package/node_modules/pi-lens/dist/index.js +16456 -8335
  177. package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
  178. package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
  179. package/node_modules/pi-lens/dist/mcp/server.js +22589 -1573
  180. package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
  181. package/node_modules/pi-lens/dist/probes/installer.js +135 -0
  182. package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
  183. package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
  184. package/node_modules/pi-lens/docs/agent-guide.md +13 -4
  185. package/node_modules/pi-lens/docs/agent-tools.md +42 -0
  186. package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +3 -2
  187. package/node_modules/pi-lens/docs/configuration.md +20 -1
  188. package/node_modules/pi-lens/docs/environment-variables.md +52 -2
  189. package/node_modules/pi-lens/docs/features.md +8 -4
  190. package/node_modules/pi-lens/docs/globalconfig.md +1 -0
  191. package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
  192. package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -4
  193. package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
  194. package/node_modules/pi-lens/docs/mcp.md +21 -5
  195. package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
  196. package/node_modules/pi-lens/docs/pi-lens-fixer.md +156 -88
  197. package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
  198. package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
  199. package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
  200. package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
  201. package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -48
  202. package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
  203. package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
  204. package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
  205. package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
  206. package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
  207. package/node_modules/pi-lens/docs/servercapabilities.md +53 -49
  208. package/node_modules/pi-lens/docs/settings.md +1 -0
  209. package/node_modules/pi-lens/docs/usage.md +5 -1
  210. package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
  211. package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
  212. package/node_modules/pi-lens/package.json +18 -6
  213. package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
  214. package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
  215. package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
  216. package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
  217. package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
  218. package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
  219. package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
  220. package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
  221. package/package.json +15 -10
  222. package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -212
  223. package/node_modules/@dietrichgebert/ponytail/README.ja.md +0 -212
  224. package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -212
  225. package/node_modules/@dietrichgebert/ponytail/README.zh-CN.md +0 -212
  226. package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
  227. package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
  228. package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
  229. package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
  230. package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
  231. package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
  232. package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
  233. package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
  234. package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
  235. package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
  236. package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
  237. package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
  238. package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
  239. package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
  240. package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
  241. package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
  242. package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
  243. package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
  244. package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
  245. package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
  246. package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
  247. package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
  248. package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
  249. package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
  250. package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
  251. package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
  252. package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
  253. package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
  254. package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
  255. package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
  256. package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
  257. package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
  258. package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
  259. package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
  260. package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
  261. package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
  262. package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
  263. package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
  264. package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
  265. package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
  266. package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
  267. package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
  268. package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
  269. package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
  270. package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
  271. package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
  272. package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
  273. package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
  274. package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
  275. package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
  276. package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
  277. package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
  278. package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
  279. package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
  280. package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
  281. package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
  282. package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
  283. package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
  284. package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
  285. package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
  286. package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
  287. package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
  288. package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
  289. package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
  290. package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
  291. package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
  292. package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
  293. package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
  294. package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
  295. package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
  296. package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
  297. package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
  298. package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
  299. package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
  300. package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
  301. package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
  302. package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
  303. package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
  304. package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
  305. package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
  306. package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
  307. package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
  308. package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
  309. package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
  310. package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
  311. package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
  312. package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
  313. package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
  314. package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
  315. package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
  316. package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
  317. package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
  318. package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
  319. package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
  320. package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
  321. package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
  322. package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
  323. package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
  324. package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
  325. package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
  326. package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
  327. package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
  328. package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
  329. package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
  330. package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
  331. package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
  332. package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
  333. package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
  334. package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
  335. package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
  336. package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
  337. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
  338. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
  339. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
  340. package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
  341. package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
  342. package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
  343. package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
  344. package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
  345. package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
  346. package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
  347. package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
  348. package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
  349. package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
  350. package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
  351. package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
  352. package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
  353. package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
  354. package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
  355. package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
  356. package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
  357. package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
  358. package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
  359. package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
  360. package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
  361. package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
  362. package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
  363. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
  364. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
  365. package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
  366. package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
  367. package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
  368. package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
  369. package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
  370. package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
  371. package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
  372. package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
  373. package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
  374. package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
  375. package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
  376. package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
  377. package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
  378. package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
  379. package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
  380. package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
  381. package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
  382. package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
  383. package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
  384. package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
  385. package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
  386. package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
  387. package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
  388. package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
  389. package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
  390. package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
  391. package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
  392. package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
  393. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
  394. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
  395. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
  396. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
  397. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
  398. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
  399. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
  400. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
  401. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
  402. package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
  403. package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
  404. package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
  405. package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
  406. package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
  407. package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
  408. package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
  409. package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
  410. package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
  411. package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
  412. package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
  413. package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
  414. package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
  415. package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
  416. package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
  417. package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
  418. package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
  419. package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
  420. package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
  421. package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
  422. package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
  423. package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
  424. package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
  425. package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
  426. package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
  427. package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
  428. package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
  429. package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
  430. package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
  431. package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
  432. package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
  433. package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
  434. package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
  435. package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
  436. package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
  437. package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
  438. package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
  439. package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
  440. package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
  441. package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
  442. package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
  443. package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
  444. package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
  445. package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
  446. package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
  447. package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
  448. package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
  449. package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
  450. package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
  451. package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
  452. package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
  453. package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
  454. package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
  455. package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
  456. package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
  457. package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
  458. package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
  459. package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
  460. package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
  461. package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
  462. package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
  463. package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
  464. package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
  465. package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
  466. package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
  467. package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
  468. package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
  469. package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
  470. package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
  471. package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
  472. package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
  473. package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
  474. package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
  475. package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
  476. package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
  477. package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
  478. package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
  479. package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
  480. package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
  481. package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
  482. package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
  483. package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
  484. package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
  485. package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
  486. package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
  487. package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
  488. package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
  489. package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
  490. package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
  491. package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
  492. package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
  493. package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
  494. package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
  495. package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
  496. package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
  497. package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
  498. package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
  499. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
  500. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
  501. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
  502. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
  503. package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
  504. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
  505. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
  506. package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
  507. package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
  508. package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
  509. package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
  510. package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
  511. package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
  512. package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
  513. package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
  514. package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
  515. package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
  516. package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
  517. package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
  518. package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
  519. package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
  520. package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
  521. package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
  522. package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
  523. package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
  524. package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
  525. package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
  526. package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
  527. package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
  528. package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
  529. package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
  530. package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
  531. package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
  532. package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
  533. package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
  534. package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
  535. package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
  536. package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
  537. package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
  538. package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
  539. package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
  540. package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
  541. package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
  542. package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
  543. package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
  544. package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
  545. package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
  546. package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
  547. package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
  548. package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
  549. package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
  550. package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
  551. package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
  552. package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
  553. package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
  554. package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
  555. package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
  556. package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
  557. package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
  558. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
  559. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
  560. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
  561. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
  562. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
  563. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
  564. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
  565. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
  566. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
  567. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
  568. package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
  569. package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
  570. package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
  571. package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
  572. package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
  573. package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
  574. package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
  575. package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
  576. package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
  577. package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
  578. package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
  579. package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
  580. package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
  581. package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
  582. package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
  583. package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
  584. package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
  585. package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
  586. package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
  587. package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
  588. package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
  589. package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
  590. package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
  591. package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
  592. package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
  593. package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
  594. package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
  595. package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
  596. package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
  597. package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
  598. package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
  599. package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
  600. package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
  601. package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
  602. package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
  603. package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
  604. package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
  605. package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
  606. package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
  607. package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
  608. package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
  609. package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
  610. package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
  611. package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
  612. package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
  613. package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
  614. package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
  615. package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
  616. package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
  617. package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
  618. package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
  619. package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
  620. package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
  621. package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
  622. package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
  623. package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
  624. package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
  625. package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
  626. package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
  627. package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
  628. package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
  629. package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
  630. package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
  631. package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
  632. package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
  633. package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
  634. package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
  635. package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
  636. package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
  637. package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
  638. package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
  639. package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
  640. package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
  641. package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
  642. package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
  643. package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
  644. package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
  645. package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
  646. package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
  647. package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
  648. package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
  649. package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
  650. package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
  651. package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
  652. package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
  653. package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
  654. package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
  655. package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
  656. package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
  657. package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
  658. package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
  659. package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
  660. package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
  661. package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
  662. package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
  663. package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
  664. package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
  665. package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
  666. package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
  667. package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
  668. package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
  669. package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
  670. package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
  671. package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
  672. package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
  673. package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
  674. package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
  675. package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
  676. package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
  677. package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
  678. package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
  679. package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
  680. package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
  681. package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
  682. package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
  683. package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
  684. package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
  685. package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
  686. package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
  687. package/node_modules/pi-lens/dist/i18n.js +0 -69
  688. package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
  689. package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
  690. package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
  691. package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
  692. package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
  693. package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
  694. package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
  695. package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
  696. package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
  697. package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
  698. package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
  699. package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
  700. package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
  701. package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
  702. package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
  703. package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
  704. package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
  705. package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
  706. package/node_modules/pi-lens/dist/tools/shared.js +0 -29
  707. package/node_modules/pi-lens/dist/tools/symbol-search.js +0 -155
@@ -1,379 +0,0 @@
1
- /**
2
- * Unified LSP Runner for pi-lens
3
- *
4
- * Handles type checking for ALL LSP-supported languages:
5
- * - TypeScript/JavaScript (typescript-language-server)
6
- * - Python (pyright/pylsp)
7
- * - Go (gopls)
8
- * - Rust (rust-analyzer)
9
- * - Ruby, PHP, C#, Java, Kotlin, Swift, Dart, etc.
10
- *
11
- * Replaces language-specific runners (pyright, etc.) with a single
12
- * unified runner that delegates to the LSP service.
13
- */
14
- import { logExtension } from "../../extension-log.js";
15
- import { getLspCapableKinds } from "../../language-policy.js";
16
- import { exceedsLspSyncLimits } from "../../lsp/content-limits.js";
17
- import { touchCoverageGap } from "../../lsp/diagnostic-binding.js";
18
- import { getLSPService } from "../../lsp/index.js";
19
- import { LSP_SERVERS } from "../../lsp/server.js";
20
- import { RUNTIME_CONFIG } from "../../runtime-config.js";
21
- import { PRIORITY } from "../priorities.js";
22
- import { resolveRunnerPath } from "../runner-context.js";
23
- import { convertLspDiagnostics } from "../utils/lsp-diagnostics.js";
24
- import { demoteInferredProjectDiagnostics } from "../../lsp/inferred-project.js";
25
- import { enabledAuxiliaryLspServerIds, retagAuxiliaryDiagnostics, } from "../auxiliary-lsp.js";
26
- import { readFileContent } from "./utils.js";
27
- import { tryWarmAttachedCodeActions, tryWarmAttachedDiagnostics, } from "../../warm-attach.js";
28
- import { contentHash, WARM_CODE_ACTION_LOOKUP_LIMIT } from "../../mcp/ipc.js";
29
- const LSP_SPAWN_BUDGET_MS = RUNTIME_CONFIG.pipeline.lspSpawnBudgetMs;
30
- // Diagnostics-wait cap for the dispatch lsp-runner. Bounded so a slow LSP
31
- // (typescript-language-server on large monorepos has been observed >7 s)
32
- // can't dominate the per-edit pipeline budget. Diagnostics that arrive
33
- // after the cap still land in the client's cache and surface on the
34
- // next edit. Overridable via PI_LENS_LSP_DIAGNOSTICS_MAX_WAIT_MS.
35
- export const LSP_DIAGNOSTICS_WAIT_MS = 2500;
36
- const MAX_CODE_ACTION_TITLES = 3;
37
- /**
38
- * Fixed margin above the worst-case cold-spawn-plus-diagnostics wait, so
39
- * scheduling jitter alone can't reopen the F2 race below.
40
- */
41
- const LSP_COLD_SPAWN_MARGIN_MS = 5_000;
42
- /**
43
- * This runner's own dispatch wall-clock budget. `runRunner` in
44
- * `dispatcher.ts` races `runner.timeoutMs ?? RUNNER_TIMEOUT_MS` (30s)
45
- * against `runner.run()` for the WHOLE call — reading the file, waiting for
46
- * a client (bounded by `LSP_SPAWN_BUDGET_MS`, raised per-server via
47
- * `LSPServerInfo.clientWaitTimeoutMs`), then waiting for diagnostics
48
- * (`LSP_DIAGNOSTICS_WAIT_MS`).
49
- *
50
- * Left undeclared, this runner inherited the shared 30s default. A server
51
- * whose `clientWaitTimeoutMs` exceeds that — Prisma's 40s, Vue's 30s
52
- * (#2169, #2176) — could never actually use its own raised wait: the outer
53
- * race always fired first, at 30s, so raising a server's floor without also
54
- * raising this ceiling was a no-op on the real dispatch path (fix-round F2,
55
- * #2233). Derive the ceiling from the registry instead of a second
56
- * hand-picked literal, so the next slow server's `clientWaitTimeoutMs` keeps
57
- * this budget correct automatically: the highest declared
58
- * `clientWaitTimeoutMs` (or the shared 5s default, whichever is larger),
59
- * plus the diagnostics wait that still runs after a cold spawn succeeds,
60
- * plus a fixed margin.
61
- *
62
- * This raises the failure-detection latency for every OTHER language's
63
- * hung-server case too (30s -> the value below), not just the five servers
64
- * that need the headroom — the tradeoff is stated in PR #2233's body. It
65
- * remains well inside the spread other dispatch runners already use
66
- * (pyright 75s, golangci-lint/dotnet-build/rust-clippy 90s).
67
- */
68
- export const LSP_RUNNER_TIMEOUT_MS = Math.max(LSP_SPAWN_BUDGET_MS, ...LSP_SERVERS.map((server) => server.clientWaitTimeoutMs ?? 0)) +
69
- LSP_DIAGNOSTICS_WAIT_MS +
70
- LSP_COLD_SPAWN_MARGIN_MS;
71
- function normalizeActionTitle(title) {
72
- return title.replace(/\s+/g, " ").trim();
73
- }
74
- function buildCodeActionSuggestion(actions) {
75
- if (!actions.length)
76
- return undefined;
77
- const quickFixes = actions.filter((action) => action.kind?.startsWith("quickfix"));
78
- if (!quickFixes.length)
79
- return undefined;
80
- const titles = Array.from(new Set(quickFixes
81
- .map((action) => normalizeActionTitle(action.title))
82
- .filter((title) => title.length > 0))).slice(0, MAX_CODE_ACTION_TITLES);
83
- if (!titles.length)
84
- return undefined;
85
- return `LSP quick fixes: ${titles.join("; ")}`;
86
- }
87
- const lspRunner = {
88
- id: "lsp",
89
- // Derived from LANGUAGE_POLICY, never hand-maintained: the copy this
90
- // replaced had drifted (fish was lspCapable but absent, so getForKind
91
- // answered that no LSP runs on fish). Registering a language as lspCapable
92
- // is now the only step this seam needs (#1545).
93
- appliesTo: getLspCapableKinds(),
94
- priority: PRIORITY.LSP_PRIMARY,
95
- timeoutMs: LSP_RUNNER_TIMEOUT_MS,
96
- async run(ctx) {
97
- const diagnosticPath = resolveRunnerPath(ctx.cwd, ctx.filePath);
98
- // Only run if LSP is not disabled via --no-lsp
99
- if (ctx.pi.getFlag("no-lsp")) {
100
- return { status: "skipped", diagnostics: [], semantic: "none" };
101
- }
102
- const lspService = getLSPService();
103
- // Fast capability check only — actual client creation happens when we
104
- // open the file below.
105
- if (!lspService.supportsLSP(ctx.filePath)) {
106
- return { status: "skipped", diagnostics: [], semantic: "none" };
107
- }
108
- // Always sync current file content before reading diagnostics so dispatch
109
- // does not operate on stale LSP snapshots.
110
- let lspDiags = [];
111
- let serverFailed = false;
112
- // touchFile resolves to `undefined` when no LSP client was ready (a cold
113
- // spawn that didn't complete in the budget, or LSP unavailable for this
114
- // file) — distinct from `[]`, which means the server replied with zero.
115
- let lspClientReady = true;
116
- // True when touchFile ran but couldn't confirm its result within
117
- // budget (notify write and/or diagnostics wait timed out on at least
118
- // one spawned server) — an empty `lspDiags` in that case is NOT a
119
- // confirmed clean result and must not be reported as one (#570).
120
- let diagnosticsInconclusive = false;
121
- // #1470/#1493: server ids the touch carries no evidence for — an auxiliary
122
- // whose push wait our aux grace timer cut off (#1470), or one that stayed
123
- // silent with no stored publication for this content (#1493). The touch is
124
- // NOT inconclusive (the primary answered, and its findings below are real),
125
- // so this is tracked separately: the only claim it invalidates is "0
126
- // diagnostics means clean".
127
- let unconfirmedServerIds = [];
128
- let deferredServerIds = [];
129
- let usedWarmAttach = false;
130
- let failureReason = "";
131
- const content = readFileContent(ctx.filePath);
132
- if (!content) {
133
- return { status: "skipped", diagnostics: [], semantic: "none" };
134
- }
135
- // #3405 r2: was an inline second copy of the pipeline's byte/line
136
- // predicate. One module owns the bound now (M3406-1's root cause was that
137
- // a third writer could be added with neither copy); the SKIP is still this
138
- // runner's own policy.
139
- if (exceedsLspSyncLimits(content).tooLarge) {
140
- return { status: "skipped", diagnostics: [], semantic: "none" };
141
- }
142
- // Cross-cutting auxiliary scanners (opengrep, …) attach alongside the
143
- // primary language server when enabled — collected on the with-auxiliary
144
- // path so their warm diagnostics merge into this same result.
145
- const auxiliaryServerIds = enabledAuxiliaryLspServerIds((f) => ctx.pi.getFlag(f));
146
- try {
147
- const attached = await tryWarmAttachedDiagnostics(ctx.filePath, content, Math.max(LSP_SPAWN_BUDGET_MS, LSP_DIAGNOSTICS_WAIT_MS));
148
- usedWarmAttach = attached?.available === true;
149
- // #1179 (shape-5 structural fix): both branches normalize to the
150
- // `touchFile` wrapper shape. The warm-attach IPC branch resolves a plain
151
- // diagnostics array — `available` no longer implies a fully confirmed
152
- // answer: a `partial` confirmation (an auxiliary that never
153
- // reported — cut off by the grace timer, or silent) is served as
154
- // `available: true` too (the IPC gate at
155
- // `clients/mcp/ipc.ts:248` rejects only `inconclusive`). Carry the
156
- // incumbent's `unconfirmedServerIds` onto the wrapper so
157
- // `touchCoverageGap` below sees it — dropping it here is the same
158
- // false-clean defect already fixed at `clients/lsp/index.ts` (the
159
- // workspace sweep wrapper) and `tools/lsp-diagnostics.ts` (the tool
160
- // consumer); wrap it as `{ diags }`; the incumbent branch already
161
- // returns the wrapper.
162
- const touched = attached?.available
163
- ? {
164
- diags: attached.response.diagnostics,
165
- ...(attached.response.unconfirmedServerIds !== undefined && {
166
- unconfirmedServerIds: attached.response.unconfirmedServerIds,
167
- }),
168
- }
169
- : await lspService.touchFile(ctx.filePath, content, {
170
- diagnostics: "document",
171
- collectDiagnostics: true,
172
- clientScope: auxiliaryServerIds.length > 0 ? "with-auxiliary" : "primary",
173
- auxiliaryServerIds,
174
- maxClientWaitMs: LSP_SPAWN_BUDGET_MS,
175
- maxDiagnosticsWaitMs: LSP_DIAGNOSTICS_WAIT_MS,
176
- source: "dispatch-lsp-runner",
177
- });
178
- if (touched === undefined) {
179
- lspClientReady = false;
180
- }
181
- else {
182
- lspDiags = touched.diags;
183
- diagnosticsInconclusive = touched.inconclusive === true;
184
- unconfirmedServerIds = touchCoverageGap(touched);
185
- deferredServerIds = touched.deferredServerIds ?? [];
186
- }
187
- }
188
- catch (err) {
189
- serverFailed = true;
190
- failureReason = err instanceof Error ? err.message : String(err);
191
- if (failureReason.includes("spawn") ||
192
- failureReason.includes("exited") ||
193
- failureReason.includes("connection") ||
194
- failureReason.includes("JSON RPC")) {
195
- logExtension({
196
- subsystem: "lsp-runner",
197
- message: `LSP server failed for ${diagnosticPath}: ${failureReason}`,
198
- metadata: { filePath: diagnosticPath },
199
- });
200
- }
201
- }
202
- if (serverFailed) {
203
- return {
204
- status: "failed",
205
- failureKind: "server_error",
206
- failureMessage: failureReason.slice(0, 200),
207
- diagnostics: [
208
- {
209
- id: `lsp:server-error:0`,
210
- message: `LSP server failed: ${failureReason}`,
211
- filePath: diagnosticPath,
212
- line: 1,
213
- column: 1,
214
- severity: "error",
215
- semantic: "warning", // Don't block - fallback to other runners
216
- tool: "lsp",
217
- },
218
- ],
219
- semantic: "warning",
220
- };
221
- }
222
- if (!lspClientReady) {
223
- // No answer from the LSP — reporting "succeeded with 0 diagnostics"
224
- // would read as a clean bill of health when we simply didn't get a
225
- // reply. Report "skipped" so the coverage notice can flag the gap and
226
- // the next edit re-checks once the server has warmed; any diagnostics
227
- // published late still land in the client cache and surface then.
228
- return { status: "skipped", diagnostics: [], semantic: "none" };
229
- }
230
- if (diagnosticsInconclusive) {
231
- // The touch ran and a client was ready, but the notify write and/or
232
- // diagnostics wait hit their deadline before the server confirmed
233
- // completion — `lspDiags` (even if non-empty) is not a trustworthy
234
- // merged result. Same treatment as `!lspClientReady`: report
235
- // "skipped" rather than "succeeded" with a possibly-incomplete
236
- // diagnostics list, so the coverage notice flags the gap instead of
237
- // the footer reading this as a confirmed clean/partial result (#570).
238
- // Diagnostics that do arrive late still land in the client cache and
239
- // surface on the next edit.
240
- return { status: "skipped", diagnostics: [], semantic: "none" };
241
- }
242
- if (lspDiags.length === 0) {
243
- if (deferredServerIds.length > 0) {
244
- return {
245
- status: "deferred",
246
- diagnostics: [],
247
- semantic: "none",
248
- unconfirmedServerIds: [...unconfirmedServerIds],
249
- deferredServerIds: [...deferredServerIds],
250
- };
251
- }
252
- if (unconfirmedServerIds.length > 0) {
253
- // #1470/#1493: an auxiliary never reported — cut off by the aux grace
254
- // timer, or silent with nothing published for this content — so this
255
- // empty merged result is missing whatever that scanner would have said.
256
- // A hung OR silent opengrep must not read as a clean bill of health on
257
- // the security lane. The empty result remains skipped, while the correlated
258
- // server ids let the coverage notice name the missing scanners once. Nothing
259
- // is thrown away: the primary answered with zero findings, so there is nothing to
260
- // report; when it DOES have findings the branches below still report
261
- // them (see the non-empty path), which is how a trustworthy primary
262
- // stays trustworthy under an auxiliary that never reported.
263
- return {
264
- status: "skipped",
265
- diagnostics: [],
266
- semantic: "none",
267
- unconfirmedServerIds: [...unconfirmedServerIds],
268
- };
269
- }
270
- return {
271
- status: "succeeded",
272
- diagnostics: [],
273
- semantic: "none",
274
- rawOutput: "no-diagnostics",
275
- };
276
- }
277
- // Convert LSP diagnostics to our format
278
- // Defensive: filter out malformed diagnostics that may lack range
279
- const rawValidLspDiags = lspDiags.filter((d) => d.range?.start?.line !== undefined);
280
- // #1640: the per-edit path renders the same authority as the mode=full
281
- // sweep, so it applies the same demotion. Costs one bounded `projectInfo`
282
- // request, and only when the file already has a TypeScript ERROR — an edit
283
- // that type-checks clean pays nothing.
284
- //
285
- // #1645 review F2: NOT under warm attach. There, diagnostics came from an
286
- // already-running remote session over IPC and no local client exists — so
287
- // the probe would have to spawn a whole tsserver fleet to answer, breaking
288
- // this branch's spawn-free contract (see the comment below), and the
289
- // answer it spawned for would be the NEW server's project resolution, not
290
- // the warm session's. A meaningless answer bought with a process is worse
291
- // than no answer, so the warm-attach path keeps pre-#1640 rendering. This
292
- // is a known gap, recorded on the issue rather than papered over with an
293
- // "unverified" label that would fire on every warm-attach file including
294
- // the properly configured majority.
295
- const validLspDiags = usedWarmAttach
296
- ? rawValidLspDiags
297
- : await demoteInferredProjectDiagnostics(rawValidLspDiags, {
298
- filePath: diagnosticPath,
299
- cwd: ctx.cwd,
300
- service: lspService,
301
- });
302
- const fixSuggestionByIndex = new Map();
303
- // #1640: read severity off the RAW list. A demoted diagnostic is still
304
- // worth a quick-fix suggestion — the demotion changes its authority, not
305
- // whether tsserver can offer a fix. Indexes align 1:1 with `validLspDiags`.
306
- const blockingDiagIndexes = rawValidLspDiags
307
- .map((d, idx) => ({ d, idx }))
308
- .filter(({ d }) => d.severity === 1)
309
- .slice(0, WARM_CODE_ACTION_LOOKUP_LIMIT);
310
- if (usedWarmAttach) {
311
- // Diagnostics have already succeeded. Code actions are optional
312
- // enrichment, so ANY IPC failure degrades to today's skip without
313
- // promoting the attached session to a local LSP fleet.
314
- const ranges = blockingDiagIndexes.map(({ d }) => ({
315
- start: d.range.start,
316
- end: d.range.end ?? d.range.start,
317
- }));
318
- const result = await tryWarmAttachedCodeActions(ctx.filePath, contentHash(content), ranges, LSP_DIAGNOSTICS_WAIT_MS);
319
- if (result?.available) {
320
- result.response.actions.forEach((actions, responseIndex) => {
321
- const diagnosticIndex = blockingDiagIndexes[responseIndex]?.idx;
322
- const suggestion = buildCodeActionSuggestion(actions);
323
- if (diagnosticIndex !== undefined && suggestion) {
324
- fixSuggestionByIndex.set(diagnosticIndex, suggestion);
325
- }
326
- });
327
- }
328
- }
329
- else {
330
- await Promise.all(blockingDiagIndexes.map(async ({ d, idx }) => {
331
- try {
332
- const start = d.range.start;
333
- const end = d.range.end ?? d.range.start;
334
- const actions = await lspService.codeAction(ctx.filePath, start.line, start.character, end.line, end.character);
335
- const suggestion = buildCodeActionSuggestion(actions);
336
- if (suggestion) {
337
- fixSuggestionByIndex.set(idx, suggestion);
338
- }
339
- }
340
- catch {
341
- // Best-effort enrichment only; base diagnostics remain authoritative.
342
- }
343
- }));
344
- }
345
- const diagnostics = convertLspDiagnostics(validLspDiags, diagnosticPath, { fixSuggestionByIndex });
346
- // convertLspDiagnostics maps validLspDiags 1:1, so re-tag any
347
- // auxiliary-sourced diagnostics (opengrep emits source "Semgrep", …) with
348
- // their tool id + semantic policy — language-server diagnostics keep "lsp".
349
- // #692: shared with the scan/sweep reconcile paths (`retagAuxiliaryDiagnostics`
350
- // in `../auxiliary-lsp.js`) so a scan-reconciled aux finding gets identical
351
- // tool/semantic/defectClass tagging instead of keeping tool "lsp".
352
- const keptDiagnostics = retagAuxiliaryDiagnostics(diagnostics, validLspDiags, content, { cwd: ctx.cwd, fileRole: ctx.fileRole });
353
- const hasErrors = keptDiagnostics.some((d) => d.semantic === "blocking");
354
- const resultSemantic = hasErrors
355
- ? "blocking"
356
- : keptDiagnostics.length > 0
357
- ? "warning"
358
- : "none";
359
- return {
360
- status: hasErrors
361
- ? "failed"
362
- : deferredServerIds.length > 0
363
- ? "deferred"
364
- : "succeeded",
365
- // "failed" here means the file has blocking type errors — the check ran
366
- // fine. Tag it so the smell analyzer doesn't read it as a runner crash.
367
- failureKind: hasErrors ? "blocking_diagnostics" : undefined,
368
- diagnostics: keptDiagnostics,
369
- semantic: resultSemantic,
370
- ...(unconfirmedServerIds.length > 0 && {
371
- unconfirmedServerIds: [...unconfirmedServerIds],
372
- }),
373
- ...(deferredServerIds.length > 0 && {
374
- deferredServerIds: [...deferredServerIds],
375
- }),
376
- };
377
- },
378
- };
379
- export default lspRunner;
@@ -1,167 +0,0 @@
1
- import * as path from "node:path";
2
- import { pathsEqual } from "../../path-utils.js";
3
- import { safeSpawnAsync } from "../../safe-spawn.js";
4
- import { logRunnerAdvisoryOnce, resolveRunnerCwd } from "../../tool-cwd.js";
5
- import { getLinterPolicyForCwd, markdownlintConfigArgs, } from "../../tool-policy.js";
6
- import { PRIORITY } from "../priorities.js";
7
- import { createAvailabilityChecker, resolveToolCommandWithInstallFallback, } from "./utils/runner-helpers.js";
8
- import { parseToolRun } from "./utils/tool-failure.js";
9
- import { isInSpawnTimeoutCooldown, noteSpawnTimeout, } from "../../spawn-timeout-cooldown.js";
10
- import { finishParsedRun } from "./utils/tool-failure.js";
11
- const markdownlint = createAvailabilityChecker("markdownlint-cli2", ".cmd", [
12
- "--no-globs",
13
- "-",
14
- ]);
15
- // EXIT TABLE (markdownlint-cli2 0.17 README https://github.com/DavidAnson/markdownlint-cli2#exit-codes): 0 = no
16
- // findings, 1 = lint findings, 2 = unexpected error (unreadable config, bad
17
- // glob, crash). Only 2 is a rejected invocation.
18
- const MARKDOWNLINT_EXIT_CODES = { ran: [1] };
19
- // markdownlint-cli2 text output does not include per-violation fixability,
20
- // so we keep a static allowlist of MD### rules whose --fix is deterministic.
21
- // Sourced from the rule pages in
22
- // https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md — every
23
- // entry below is documented as "Fixable: yes" (or equivalent). Update when
24
- // markdownlint adds or changes auto-fix support.
25
- const MARKDOWNLINT_FIXABLE_RULES = new Set([
26
- "MD001",
27
- "MD004",
28
- "MD005",
29
- "MD007",
30
- "MD009",
31
- "MD010",
32
- "MD011",
33
- "MD012",
34
- "MD014",
35
- "MD018",
36
- "MD019",
37
- "MD020",
38
- "MD021",
39
- "MD022",
40
- "MD023",
41
- "MD026",
42
- "MD027",
43
- "MD030",
44
- "MD031",
45
- "MD032",
46
- "MD034",
47
- "MD037",
48
- "MD038",
49
- "MD039",
50
- "MD044",
51
- "MD047",
52
- "MD049",
53
- "MD050",
54
- "MD053",
55
- "MD058",
56
- ]);
57
- // markdownlint-cli2 output: `path:line[:col] [error|warning] MD###/name[/name…] message`
58
- // Two things the original parser missed (→ silent 0 diagnostics, #212):
59
- // 1. cli2 emits a severity token (`error`/`warning`) between the col and the
60
- // rule code — older markdownlint-cli did not.
61
- // 2. some rules carry MULTIPLE slash-separated names (e.g.
62
- // `MD041/first-line-heading/first-line-h1`).
63
- // The severity token is optional so older/relative-path output still parses.
64
- function parseMarkdownlintOutput(raw, filePath, cwd) {
65
- const diagnostics = [];
66
- const absTarget = path.resolve(cwd, filePath);
67
- for (const line of raw.split(/\r?\n/)) {
68
- if (!line.trim())
69
- continue;
70
- // Rule code is MD### followed by one or more slash-joined names. Use a
71
- // single char class (`[\w/-]+`) rather than a nested quantifier
72
- // (`(?:/[\w-]+)+`) so there's no super-linear backtracking (S5852).
73
- const match = line.match(/^(.*?):(\d+)(?::(\d+))?\s+(?:error|warning)?\s*(MD\d+\/[\w/-]+)\s+(.+)$/);
74
- if (!match)
75
- continue;
76
- const [, reported, lineNum, col, ruleCode, message] = match;
77
- // #3295: the leading `.*?` this parser discarded IS markdownlint-cli2's
78
- // reported path, and its config globs can widen the run past the argv.
79
- if (reported && !pathsEqual(path.resolve(cwd, reported), absTarget))
80
- continue;
81
- const ruleName = ruleCode.split("/")[0];
82
- const fixable = MARKDOWNLINT_FIXABLE_RULES.has(ruleName);
83
- diagnostics.push({
84
- id: `markdownlint-${lineNum}-${ruleName}`,
85
- message: `[${ruleCode}] ${message}`,
86
- filePath,
87
- line: Number(lineNum),
88
- column: col ? Number(col) : 1,
89
- severity: "warning",
90
- semantic: "warning",
91
- tool: "markdownlint",
92
- rule: ruleName,
93
- fixable,
94
- fixSuggestion: fixable
95
- ? "Run `markdownlint-cli2 --fix` to apply the deterministic auto-correction for this rule."
96
- : undefined,
97
- });
98
- }
99
- return diagnostics;
100
- }
101
- const markdownlintRunner = {
102
- id: "markdownlint",
103
- appliesTo: ["markdown"],
104
- priority: PRIORITY.DOC_QUALITY,
105
- skipTestFiles: false,
106
- async run(ctx) {
107
- const cwd = resolveRunnerCwd(ctx, "markdownlint");
108
- const policy = getLinterPolicyForCwd(ctx.filePath, cwd);
109
- if (policy && !policy.preferredRunners.includes("markdownlint")) {
110
- return { status: "skipped", diagnostics: [], semantic: "none" };
111
- }
112
- let cmd = null;
113
- if (await markdownlint.isAvailableAsync(cwd)) {
114
- cmd = markdownlint.getCommand(cwd);
115
- }
116
- else {
117
- cmd = await resolveToolCommandWithInstallFallback(cwd, "markdownlint");
118
- }
119
- if (!cmd)
120
- return { status: "skipped", diagnostics: [], semantic: "none" };
121
- // #1995: a command cooling down after a spawn timeout already consumed
122
- // its budget in another lane (availability verify, autofix --fix). Skip
123
- // without spawning — "not checked", never re-reported as clean.
124
- if (isInSpawnTimeoutCooldown(cmd)) {
125
- logRunnerAdvisoryOnce(ctx, "markdownlint", cwd, `markdownlint: ${cmd} is cooling down after a spawn timeout — skipping (one bounded failure budget per edit)`);
126
- return { status: "skipped", diagnostics: [], semantic: "none" };
127
- }
128
- // Shared config-args seam (#1247): the autofix path consumes the same
129
- // builder, so the package-owned fallback config can never drift.
130
- const configArgs = markdownlintConfigArgs(cwd);
131
- const result = await safeSpawnAsync(cmd, [...configArgs, ctx.filePath], {
132
- timeout: 15000,
133
- cwd,
134
- });
135
- // #1995: a timeout is negative runtime evidence. Arm the cooldown so
136
- // the autofix and availability lanes cannot hand this command a second
137
- // budget within the same session.
138
- if (result.failure === "timeout") {
139
- noteSpawnTimeout({
140
- tool: "markdownlint",
141
- command: cmd,
142
- phase: "lint",
143
- durationMs: 15000,
144
- teardown: result.timeoutTeardown,
145
- });
146
- }
147
- // #1816: this runner read `result.status` zero times, so an exit-2
148
- // config error with an empty stdout parsed to zero diagnostics and was
149
- // reported as a clean Markdown file. An empty result must distinguish
150
- // clean from errored.
151
- const raw = `${result.stdout ?? ""}${result.stderr ?? ""}`;
152
- // #1948: one seam for both gates — the tool produced nothing, and the
153
- // tool produced something the parser could not read.
154
- const run = parseToolRun("markdownlint", { result, output: raw, exitCodes: MARKDOWNLINT_EXIT_CODES }, (out) => parseMarkdownlintOutput(out, ctx.filePath, cwd));
155
- if (run.skipped)
156
- return run.skipped;
157
- const diagnostics = run.diagnostics;
158
- return finishParsedRun({
159
- tool: "markdownlint",
160
- ctx,
161
- result,
162
- diagnostics,
163
- classify: () => ({ status: "succeeded", semantic: "warning" }),
164
- });
165
- },
166
- };
167
- export default markdownlintRunner;
@@ -1,102 +0,0 @@
1
- import * as path from "node:path";
2
- import { safeSpawnAsync } from "../../safe-spawn.js";
3
- import { resolveRunnerCwd } from "../../tool-cwd.js";
4
- import { hasMypyConfig } from "../../tool-policy.js";
5
- import { PRIORITY } from "../priorities.js";
6
- import { createAvailabilityChecker, resolveToolCommandWithInstallFallback, } from "./utils/runner-helpers.js";
7
- import { parseToolRun } from "./utils/tool-failure.js";
8
- import { finishParsedRun } from "./utils/tool-failure.js";
9
- const mypy = createAvailabilityChecker("mypy", "");
10
- // mypy exit codes: 0 = no type errors, 1 = type errors found, 2 = a blocking
11
- // error. 2 is NOT a rejected invocation on its own — mypy reports a source
12
- // SYNTAX error under 2 and still writes a normal parsable diagnostic to stdout
13
- // (verified live against mypy 2.3.1: `syn.py:1: error: Invalid syntax
14
- // [syntax]`). A bad flag or unreadable config also exits 2, but writes its
15
- // message to STDERR and leaves stdout empty.
16
- //
17
- // EXIT TABLE (mypy 1.11 docs https://mypy.readthedocs.io/en/stable/command_line.html): 0 clean; 1 findings; 2 findings/error; other
18
- // nonzero rejected. The exit code cannot separate the two, and the STREAM does:
19
- // judges "nothing to parse" on stdout alone, while the parser still reads both.
20
- // The table's remaining job is to reject any OTHER nonzero status.
21
- const MYPY_EXIT_CODES = { ran: [1, 2] };
22
- // mypy output: file.py:10: error: Incompatible types [assignment]
23
- //
24
- // mypy follows imports and reports errors in OTHER modules, not just the file
25
- // it was invoked on. Attribute each diagnostic to the file mypy names (group 1,
26
- // resolved against cwd) rather than blanket-stamping ctx.filePath — otherwise a
27
- // cross-file regression is mis-located onto the edited file (#265 A2). We do NOT
28
- // filter to the edited file: surfacing the cross-file impact is the point.
29
- export function parseMypyOutput(raw, fallbackPath, cwd) {
30
- const diagnostics = [];
31
- const linePattern = /^(.+?):(\d+)(?::(\d+))?:\s*(error|warning|note):\s*(.+?)(?:\s+\[([^\]]+)\])?$/gm;
32
- for (const match of raw.matchAll(linePattern)) {
33
- const [, file, lineNum, col, level, message, errorCode] = match;
34
- if (!lineNum || !level || !message)
35
- continue;
36
- if (level === "note")
37
- continue; // skip contextual notes
38
- const severity = level === "error" ? "error" : "warning";
39
- const rule = errorCode ?? "mypy";
40
- const filePath = file && file.trim()
41
- ? path.isAbsolute(file)
42
- ? file
43
- : path.resolve(cwd, file)
44
- : fallbackPath;
45
- diagnostics.push({
46
- id: `mypy-${lineNum}-${rule}`,
47
- message: errorCode ? `[${errorCode}] ${message}` : message,
48
- filePath,
49
- line: Number(lineNum),
50
- column: col ? Number(col) : 1,
51
- severity,
52
- semantic: severity === "error" ? "blocking" : "warning",
53
- tool: "mypy",
54
- rule,
55
- defectClass: "correctness",
56
- });
57
- }
58
- return diagnostics;
59
- }
60
- const mypyRunner = {
61
- id: "mypy",
62
- appliesTo: ["python"],
63
- priority: PRIORITY.GENERAL_ANALYSIS,
64
- skipTestFiles: false,
65
- async run(ctx) {
66
- const cwd = resolveRunnerCwd(ctx, "mypy");
67
- // Only run if mypy config exists — avoids false positives in untyped projects
68
- if (!hasMypyConfig(cwd)) {
69
- return { status: "skipped", diagnostics: [], semantic: "none" };
70
- }
71
- let cmd = null;
72
- if (await mypy.isAvailableAsync(cwd)) {
73
- cmd = mypy.getCommand(cwd);
74
- }
75
- else {
76
- cmd = await resolveToolCommandWithInstallFallback(cwd, "mypy");
77
- }
78
- if (!cmd)
79
- return { status: "skipped", diagnostics: [], semantic: "none" };
80
- const result = await safeSpawnAsync(cmd, ["--no-error-summary", "--show-column-numbers", ctx.filePath], { timeout: 30000, cwd });
81
- // #1816: this runner read `result.status` zero times, so an exit-2
82
- // config error reported the file as cleanly type-checked. The gate reads
83
- // stdout only (see MYPY_EXIT_CODES) so an exit-2 SYNTAX error, which
84
- // does write a diagnostic there, still reaches the parser.
85
- const raw = `${result.stdout ?? ""}${result.stderr ?? ""}`;
86
- // #1948: `parseOutput` keeps the split this runner already had — the gate
87
- // judges "did it run" on stdout alone, the parser still reads both
88
- // streams — so adding the parsed-nothing record does not widen the
89
- // did-it-run verdict.
90
- const run = parseToolRun("mypy", { result, output: result.stdout, exitCodes: MYPY_EXIT_CODES }, (out) => parseMypyOutput(out, ctx.filePath, cwd), { parseOutput: raw });
91
- if (run.skipped)
92
- return run.skipped;
93
- const diagnostics = run.diagnostics;
94
- return finishParsedRun({
95
- tool: "mypy",
96
- ctx,
97
- result,
98
- diagnostics,
99
- });
100
- },
101
- };
102
- export default mypyRunner;