@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,746 +0,0 @@
1
- /**
2
- * LSP Process Launch Utilities
3
- *
4
- * Handles spawning LSP servers via various methods:
5
- * - Direct binary execution (using absolute paths on Windows)
6
- * - Node.js scripts (npx/bun)
7
- * - Package manager execution
8
- */
9
- import { execFileSync, spawn as nodeSpawn, } from "node:child_process";
10
- import fs from "node:fs";
11
- import os from "node:os";
12
- import path from "node:path";
13
- import { isTestMode } from "../env-utils.js";
14
- import { getGlobalPiLensDir } from "../file-utils.js";
15
- import { getGlobalPiLensLogDir } from "../probe-home-state.js";
16
- import { isFullyQualified } from "../path-utils.js";
17
- import { findGlobalBinary } from "../package-manager.js";
18
- import { redactSecrets } from "../redact/secrets.js";
19
- import { classifySpawnFailure, holdOwnChildPid, isOwnLiveChild, SpawnFailureError, } from "../safe-spawn.js";
20
- import { getRubyVersionDirNamesAsync } from "./ruby-drive-dirs.js";
21
- const isWindows = process.platform === "win32";
22
- /**
23
- * Whether a resolved command must be spawned through a shell on Windows.
24
- * `.cmd`/`.bat` are scripts cmd.exe must interpret; extensionless or spaced-path
25
- * commands also go through the shell so cmd resolves/quotes them.
26
- */
27
- function computeNeedsShell(resolvedCommand) {
28
- return (isWindows &&
29
- (resolvedCommand.includes(" ") ||
30
- /\.(cmd|bat)$/i.test(resolvedCommand) ||
31
- !/\.(exe|cmd|bat)$/i.test(resolvedCommand)));
32
- }
33
- const DEFAULT_STARTUP_FAILURE_WINDOW_MS = 50;
34
- const WINDOWS_NAV_STARTUP_FAILURE_WINDOW_MS = 500;
35
- const SESSIONSTART_LOG_DIR = getGlobalPiLensLogDir();
36
- const SESSIONSTART_LOG = path.join(SESSIONSTART_LOG_DIR, "sessionstart.log");
37
- const PI_LENS_BIN_DIR = path.join(getGlobalPiLensDir(), "bin");
38
- const PI_LENS_TOOLS_BIN_DIR = path.join(getGlobalPiLensDir(), "tools", "node_modules", ".bin");
39
- function logSessionStart(msg) {
40
- if (isTestMode()) {
41
- return;
42
- }
43
- // Crash-adjacent: keep this write synchronous so a hard launch failure
44
- // cannot discard the final diagnostic from an async logger queue.
45
- const line = redactSecrets(`[${new Date().toISOString()}] ${msg}\n`);
46
- try {
47
- fs.mkdirSync(SESSIONSTART_LOG_DIR, { recursive: true });
48
- fs.appendFileSync(SESSIONSTART_LOG, line);
49
- }
50
- catch { }
51
- }
52
- function compactLogValue(value, max = 280) {
53
- const normalized = value.replace(/\s+/g, " ").trim();
54
- if (!normalized)
55
- return "";
56
- return normalized.length > max
57
- ? `${normalized.slice(0, max)}...`
58
- : normalized;
59
- }
60
- function delimiterForPlatform(platform) {
61
- return platform === "win32" ? ";" : ":";
62
- }
63
- function splitPathEntries(value, delimiter) {
64
- if (!value)
65
- return [];
66
- return value
67
- .split(delimiter)
68
- .map((entry) => entry.trim())
69
- .filter((entry) => entry.length > 0);
70
- }
71
- /**
72
- * Dedupe key for one PATH entry, under `platform`'s rules.
73
- *
74
- * #1193 P3: the body used the HOST-DEFAULT `path.normalize` inside a branch
75
- * already committed to `platform` (AGENTS.md defect shape 2), so on the ubuntu
76
- * lane the win32 arm lowercased without folding separators or dot segments and
77
- * `C:\Tools` / `C:/Tools` / `C:\x\..\Tools` were three keys for one directory.
78
- * Each arm now parses with its own `path` flavor. That is the whole fix: a
79
- * `toPosix` call on the win32 arm would be INERT — `win32.normalize` already
80
- * answers backslashes for either input separator (measured: adding it left
81
- * every case green) — and the POSIX arm must NOT fold separators at all,
82
- * because a backslash is a legal POSIX filename character and `/opt/a\b` and
83
- * `/opt/a/b` are two directories there.
84
- *
85
- * Ephemeral by construction: the key exists only inside one
86
- * `combinePathValuesForPlatform` call's `seen` set — the ORIGINAL entry string
87
- * is what survives into the joined PATH — so it never reaches a persisted or
88
- * cross-process record and `normalizeEphemeralMapKey`'s `process.platform` read
89
- * would defeat the explicit-`platform` seam these arms exist for.
90
- */
91
- function normalizePathEntry(entry, platform) {
92
- if (platform !== "win32")
93
- return path.posix.normalize(entry);
94
- return path.win32.normalize(entry).toLowerCase();
95
- }
96
- export function combinePathValuesForPlatform(values, platform = process.platform) {
97
- const unique = [];
98
- const seen = new Set();
99
- const delimiter = delimiterForPlatform(platform);
100
- for (const value of values) {
101
- for (const entry of splitPathEntries(value, delimiter)) {
102
- const key = normalizePathEntry(entry, platform);
103
- if (seen.has(key))
104
- continue;
105
- seen.add(key);
106
- unique.push(entry);
107
- }
108
- }
109
- return unique.join(delimiter);
110
- }
111
- function resolvePathValue(env) {
112
- return combinePathValuesForPlatform([env.PATH, env.Path, env.path]);
113
- }
114
- /**
115
- * Run an `execFileSync` probe with the #2095 stderr guard applied, returning
116
- * `""` on any failure. Exported as a small test seam: production always calls
117
- * it with the fixed `powershell.exe` command/args below, but a test can pass
118
- * a command guaranteed to fail with real stderr output (no real Windows or
119
- * powershell.exe required) to prove the guard is actually reached and not
120
- * vacuous.
121
- */
122
- export function runStderrGuardedProbe(command, args) {
123
- try {
124
- const { execFileSync } = require("node:child_process");
125
- const out = execFileSync(command, args, {
126
- timeout: 3000,
127
- encoding: "utf8",
128
- // #2095 sibling: execFileSync inherits stderr to the parent by
129
- // default (only stdout is captured into `out`), so a failed
130
- // powershell.exe launch would print raw diagnostics into the pi
131
- // TUI even though the surrounding catch already returns "" (read as
132
- // "unknown" PATH by every caller). Pipe stderr instead of inheriting it.
133
- stdio: ["ignore", "pipe", "ignore"],
134
- });
135
- return out.trim();
136
- }
137
- catch {
138
- return "";
139
- }
140
- }
141
- /** Read live system+user PATH from Windows registry (bypasses stale process.env.PATH). */
142
- function readWindowsRegistryPath() {
143
- return runStderrGuardedProbe("powershell.exe", [
144
- "-NoProfile",
145
- "-NonInteractive",
146
- "-Command",
147
- "[System.Environment]::GetEnvironmentVariable('Path','Machine') + ';' + [System.Environment]::GetEnvironmentVariable('Path','User')",
148
- ]);
149
- }
150
- let _liveWindowsPath = null;
151
- function getLiveWindowsPath() {
152
- if (_liveWindowsPath === null) {
153
- _liveWindowsPath = readWindowsRegistryPath();
154
- }
155
- return _liveWindowsPath;
156
- }
157
- async function buildAugmentedPath(basePath) {
158
- const candidates = [];
159
- const nodeDir = path.dirname(process.execPath);
160
- if (nodeDir) {
161
- candidates.push(nodeDir);
162
- }
163
- if (isWindows) {
164
- const home = os.homedir();
165
- const driveRoot = path.parse(home).root; // e.g. "C:\"
166
- candidates.push(path.join(home, ".cargo", "bin"));
167
- candidates.push(path.join(home, "go", "bin"));
168
- candidates.push(path.join(home, ".dotnet", "tools"));
169
- candidates.push(PI_LENS_BIN_DIR);
170
- candidates.push(PI_LENS_TOOLS_BIN_DIR);
171
- candidates.push(path.join(driveRoot, "Program Files", "Go", "bin"));
172
- candidates.push(path.join(driveRoot, "Go", "bin"));
173
- // Ruby installer drops versioned dirs (e.g. Ruby34-x64) on the drive root.
174
- // Read off the event loop and memoized once per process (#1137): a
175
- // synchronous drive-root enumeration on every LSP spawn blocked the loop
176
- // for the whole stall on a slow cloud/network-backed drive root.
177
- for (const entry of await getRubyVersionDirNamesAsync(driveRoot)) {
178
- candidates.push(path.join(driveRoot, entry, "bin"));
179
- }
180
- }
181
- // On Windows, merge the live registry PATH so newly installed tools are visible
182
- // even if the pi agent process started before they were installed.
183
- const effectiveBase = isWindows
184
- ? combinePathValuesForPlatform([basePath, getLiveWindowsPath()])
185
- : basePath;
186
- const existing = new Set();
187
- for (const entry of splitPathEntries(effectiveBase, path.delimiter)) {
188
- if (!entry)
189
- continue;
190
- existing.add(normalizePathEntry(entry, process.platform));
191
- }
192
- const toAppend = [];
193
- for (const candidate of candidates) {
194
- if (!candidate || !fs.existsSync(candidate))
195
- continue;
196
- const normalized = normalizePathEntry(candidate, process.platform);
197
- if (existing.has(normalized))
198
- continue;
199
- toAppend.push(candidate);
200
- existing.add(normalized);
201
- }
202
- if (toAppend.length === 0)
203
- return basePath ?? "";
204
- if (!basePath)
205
- return toAppend.join(path.delimiter);
206
- return `${basePath}${path.delimiter}${toAppend.join(path.delimiter)}`;
207
- }
208
- /**
209
- * Validate that a .cmd shim's target JS/script exists before attempting to
210
- * spawn it. npm-generated .cmd files reference the actual script via a path
211
- * like `"%~dp0\..\yaml-language-server\bin\yaml-language-server"`. If that
212
- * target is missing the shim will exit immediately with code 1 after a 500ms
213
- * startup window — pre-checking avoids the delay.
214
- * Returns true if the shim is valid (or we can't determine), false if the
215
- * target is definitively missing.
216
- */
217
- export function isCmdShimValid(cmdPath) {
218
- try {
219
- const content = fs.readFileSync(cmdPath, "utf-8");
220
- // npm cmd shim pattern: "%~dp0\..\<relpath>" or "%~dp0/<relpath>"
221
- // The `-` ends the char class, where it is a literal and needs no escape.
222
- // oxfmt formats this repository (#1844) and rewrites no regex literal, so
223
- // this line needs no suppression; the directive oxfmt honors, if one is
224
- // ever needed here, is `// prettier-ignore`.
225
- const match = content.match(/"%~dp0[/\\]\.\.[/\\]((?:[\w./@-]|\\)+\.(?:mjs|cjs|js))"/i);
226
- if (!match)
227
- return true; // non-npm shim — let it through
228
- const relPath = match[1].replace(/[/\\]/g, path.sep);
229
- const target = path.resolve(path.dirname(cmdPath), "..", relPath);
230
- return fs.existsSync(target);
231
- }
232
- catch {
233
- return true; // can't read — be permissive
234
- }
235
- }
236
- /**
237
- * On Windows, npm creates .ps1 wrappers that hang indefinitely when PowerShell
238
- * execution policy is Restricted or AllSigned. Bypass by preferring the .cmd
239
- * sibling (runs under cmd.exe, no execution policy) or falling back to direct
240
- * Node.js execution of the JS entry point extracted from the PS1 script.
241
- * Returns undefined if no safe bypass is found.
242
- */
243
- function bypassPs1OnWindows(ps1Path, args) {
244
- // 1. Prefer the .cmd sibling — cmd.exe handles it without execution policy issues
245
- const cmdPath = `${ps1Path.slice(0, -4)}.cmd`;
246
- if (fs.existsSync(cmdPath)) {
247
- return { command: cmdPath, args, needsShell: true };
248
- }
249
- // 2. Parse the .ps1 to find the JS entry point and invoke via node directly.
250
- // npm-generated PS1 pattern: "$basedir/../<package>/bin/cli.js"
251
- try {
252
- const content = fs.readFileSync(ps1Path, "utf-8");
253
- // Same char class as isCmdShimValid above, and the same note: the trailing
254
- // `-` is a literal, and oxfmt leaves regex literals alone.
255
- const match = content.match(/"\$basedir[/\\]\.\.[/\\]((?:[\w./@-]|\\)+\.(?:mjs|cjs|js))"/i);
256
- if (match) {
257
- const relPath = match[1].replace(/[/\\]/g, path.sep);
258
- const jsPath = path.resolve(path.dirname(ps1Path), "..", relPath);
259
- if (fs.existsSync(jsPath)) {
260
- return {
261
- command: process.execPath,
262
- args: [jsPath, ...args],
263
- needsShell: false,
264
- };
265
- }
266
- }
267
- }
268
- catch {
269
- // Can't read PS1 — no bypass available
270
- }
271
- return undefined;
272
- }
273
- function findBinaryOnPath(command, env) {
274
- try {
275
- const result = execFileSync(isWindows ? "where" : "which", [command], {
276
- encoding: "utf-8",
277
- stdio: ["ignore", "pipe", "ignore"],
278
- env,
279
- // #1980 population sweep: this was the one synchronous
280
- // child-process site in the repo with no bound at all. It runs on
281
- // the LSP server spawn path, so an unresponsive `where`/`which` — a
282
- // stale network PATH entry is the classic cause — parked the event
283
- // loop with no ceiling, and read as ordinary compute in
284
- // `loop_block`. 5s matches `isCommandAvailable`/`findCommand` in
285
- // clients/safe-spawn.ts, which run these same two binaries.
286
- timeout: 5000,
287
- })
288
- .split(/\r?\n/)
289
- .map((line) => line.trim())
290
- .filter(Boolean);
291
- for (const candidate of result) {
292
- if (fs.existsSync(candidate)) {
293
- return candidate;
294
- }
295
- }
296
- }
297
- catch {
298
- // ignore lookup failures
299
- }
300
- return undefined;
301
- }
302
- /**
303
- * Try to spawn a process, throwing immediately if it fails
304
- */
305
- function trySpawn(command, args, cwd, env, needsShell) {
306
- let proc;
307
- if (needsShell) {
308
- // Build a cmd.exe-safe command string: wrap in double quotes, escape internal
309
- // quotes by doubling them, and escape cmd metacharacters (& | < > ^ ( ) !) with ^
310
- const escapeCmdArg = (s) => {
311
- // Escape cmd.exe metacharacters first, then wrap in quotes if needed
312
- const escaped = s.replace(/([&|<>^()!])/g, "^$1");
313
- return /[\s"]/.test(escaped)
314
- ? `"${escaped.replace(/"/g, '""')}"`
315
- : escaped;
316
- };
317
- // shell:true justified: Windows .cmd/.bat LSP binaries (e.g. typescript-language-server.cmd)
318
- // cannot be spawned via execFile — cmd.exe must interpret the script wrapper.
319
- const shellCommand = `"${command}" ${args.map(escapeCmdArg).join(" ")}`;
320
- // #2015 class-sweep exemption: this is a LONG-LIVED language-server launch,
321
- // not a bounded probe - killing it on a timeout would be wrong, and its
322
- // lifetime is owned by the LSP lifecycle, not the spawner. Exempt from the
323
- // verifyToolBinary/probe tree-kill migration.
324
- proc = nodeSpawn(shellCommand, [], {
325
- cwd,
326
- env,
327
- stdio: ["pipe", "pipe", "pipe"],
328
- detached: !isWindows,
329
- windowsHide: true,
330
- shell: true,
331
- });
332
- }
333
- else {
334
- // Use normal spawn without shell
335
- proc = nodeSpawn(command, args, {
336
- cwd,
337
- env,
338
- stdio: ["pipe", "pipe", "pipe"],
339
- detached: !isWindows,
340
- windowsHide: isWindows,
341
- });
342
- }
343
- if (!proc.stdin || !proc.stdout || !proc.stderr) {
344
- throw new Error(`Failed to spawn LSP server: ${command}`);
345
- }
346
- // Check if process exited immediately (spawn failure - synchronous check)
347
- if (proc.exitCode !== null || proc.killed) {
348
- throw new Error(`LSP server ${command} exited immediately (code: ${proc.exitCode}). ` +
349
- `The binary may be missing or corrupted.`);
350
- }
351
- // #3091 F1-r2: take ownership HERE, while the child is provably alive. LSP
352
- // servers are the one long-lived child pi-lens spawns outside
353
- // `safeSpawnAsync`, so without this their first offer of verification is
354
- // `stopLSP`'s group kill — by which time, on the `processExiting` path, the
355
- // leader can already be dead, `/proc` is gone, and the group signal that
356
- // reaps surviving grandchildren (#2026) is refused. The verdict is released
357
- // by `killProcessTree` when the shutdown ladder is done with the pid.
358
- holdOwnChildPid(proc.pid, "lsp-spawn");
359
- return proc;
360
- }
361
- /**
362
- * Attach error handler to a spawned process to prevent ENOENT crashes
363
- * This catches "command not found" errors and other spawn failures
364
- * Returns a promise that rejects if an immediate error occurs
365
- */
366
- function unrefLspProcessHandles(proc) {
367
- try {
368
- proc.unref();
369
- }
370
- catch {
371
- // best-effort
372
- }
373
- for (const stream of [proc.stdin, proc.stdout, proc.stderr]) {
374
- try {
375
- stream?.unref?.();
376
- }
377
- catch {
378
- // best-effort
379
- }
380
- }
381
- }
382
- function _attachErrorHandler(proc, context, logContext, rejectOnImmediateError) {
383
- let stderrPreview = "";
384
- let closeLogged = false;
385
- const onStderr = (chunk) => {
386
- if (stderrPreview.length >= 4000)
387
- return;
388
- stderrPreview += chunk.toString();
389
- };
390
- proc.stderr?.on("data", onStderr);
391
- proc.on("error", (err) => {
392
- if (logContext) {
393
- logSessionStart("lsp process " +
394
- context +
395
- ": spawn-error command=" +
396
- logContext.command +
397
- " args=" +
398
- JSON.stringify(logContext.args) +
399
- " cwd=" +
400
- logContext.cwd +
401
- " pid=" +
402
- (logContext.pid ?? 0) +
403
- " error=" +
404
- err.message +
405
- (stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
406
- }
407
- // Preserve intent at the boundary instead of leaking a raw errno check.
408
- if (rejectOnImmediateError && logContext) {
409
- void classifySpawnFailure(err, {
410
- command: logContext.command,
411
- cwd: logContext.cwd,
412
- }).then(rejectOnImmediateError);
413
- }
414
- });
415
- proc.on("close", (code, signal) => {
416
- if (closeLogged)
417
- return;
418
- closeLogged = true;
419
- proc.stderr?.off("data", onStderr);
420
- if (code !== 0 && code !== null) {
421
- if (logContext) {
422
- logSessionStart("lsp process " +
423
- context +
424
- ": closed code=" +
425
- code +
426
- (signal ? " signal=" + signal : "") +
427
- " command=" +
428
- logContext.command +
429
- " args=" +
430
- JSON.stringify(logContext.args) +
431
- " cwd=" +
432
- logContext.cwd +
433
- " pid=" +
434
- (logContext.pid ?? 0) +
435
- (stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
436
- }
437
- }
438
- else if (signal && logContext) {
439
- logSessionStart("lsp process " +
440
- context +
441
- ": closed signal=" +
442
- signal +
443
- " command=" +
444
- logContext.command +
445
- " args=" +
446
- JSON.stringify(logContext.args) +
447
- " cwd=" +
448
- logContext.cwd +
449
- " pid=" +
450
- (logContext.pid ?? 0) +
451
- (stderrPreview ? " stderr=" + compactLogValue(stderrPreview) : ""));
452
- }
453
- });
454
- }
455
- /**
456
- * Spawn an LSP server process
457
- *
458
- * Key fixes for Windows:
459
- * - Uses absolute paths (relative paths fail in shell mode)
460
- * - Uses shell: true for .cmd files
461
- * - Uses windowsHide to prevent console window popup
462
- * - Detects immediate spawn failures (ENOENT) before returning
463
- *
464
- * @param command - Command to run (e.g., "typescript-language-server")
465
- * @param args - Arguments (e.g., ["--stdio"])
466
- * @param options - Spawn options including cwd, env
467
- * @returns LSPProcess handle
468
- */
469
- export async function launchLSP(command, args = [], options = {}) {
470
- const cwd = String(options.cwd ?? process.cwd());
471
- const mergedEnv = { ...process.env, ...options.env };
472
- const augmentedPath = await buildAugmentedPath(resolvePathValue(mergedEnv));
473
- const env = {
474
- ...mergedEnv,
475
- PATH: augmentedPath,
476
- ...(isWindows ? { Path: augmentedPath } : {}),
477
- };
478
- // Resolve command path
479
- // - If already absolute, use as-is
480
- // - If it's a simple command (no path separators), let system find it via PATH
481
- // - Otherwise, resolve relative to cwd
482
- const isRelativePath = !isFullyQualified(command) &&
483
- (command.includes(path.sep) || command.includes("/"));
484
- const explicitCommand = isRelativePath ? path.resolve(cwd, command) : command;
485
- const resolvedCommand = !isFullyQualified(command) &&
486
- !command.includes(path.sep) &&
487
- !command.includes("/")
488
- ? (findBinaryOnPath(command, env) ?? explicitCommand)
489
- : explicitCommand;
490
- // Compute needsShell based on command
491
- // On Windows, shell: true is needed for .cmd/.bat files and extensionless binaries
492
- // .exe files can be spawned directly, but .cmd/.bat require shell interpretation
493
- let needsShell = computeNeedsShell(resolvedCommand);
494
- // Try to spawn the process
495
- // If command not found, try npm global as fallback (handles PATH caching after install)
496
- let spawnCommand = resolvedCommand;
497
- // First, try to find in npm global if it's a simple command name
498
- if (!isFullyQualified(command) &&
499
- !command.includes(path.sep) &&
500
- !command.includes("/")) {
501
- const globalBinPath = await findGlobalBinary(command);
502
- if (globalBinPath) {
503
- spawnCommand = globalBinPath;
504
- // Recompute needsShell for the resolved global path
505
- needsShell = computeNeedsShell(spawnCommand);
506
- }
507
- }
508
- // Pre-validate .cmd shims: if the underlying script is missing the shim will
509
- // exit with code 1 after a 500ms wait. Catching this early avoids the delay.
510
- if (isWindows &&
511
- /\.(cmd|bat)$/i.test(spawnCommand) &&
512
- !isCmdShimValid(spawnCommand)) {
513
- logSessionStart(`lsp cmd-shim-invalid: ${spawnCommand} target missing — skipping candidate`);
514
- const cause = Object.assign(new Error(`LSP .cmd shim target not found: ${spawnCommand}`), { code: "ENOENT" });
515
- throw await classifySpawnFailure(cause, { command, cwd });
516
- }
517
- // P0 FIX: Never spawn .ps1 wrappers on Windows — they hang when PowerShell
518
- // execution policy is Restricted/AllSigned. Prefer .cmd or direct node.
519
- if (isWindows && /\.ps1$/i.test(spawnCommand)) {
520
- const bypass = bypassPs1OnWindows(spawnCommand, args);
521
- if (bypass) {
522
- logSessionStart(`lsp ps1-bypass: ${spawnCommand} → ${bypass.command} shell=${bypass.needsShell}`);
523
- spawnCommand = bypass.command;
524
- args = bypass.args;
525
- needsShell = bypass.needsShell;
526
- }
527
- else {
528
- logSessionStart(`lsp ps1-bypass: no .cmd or JS entry found for ${spawnCommand}, spawn may hang`);
529
- }
530
- }
531
- let proc;
532
- try {
533
- proc = trySpawn(spawnCommand, args, cwd, env, needsShell);
534
- }
535
- catch (err) {
536
- // If spawn failed with simple command, try npm global
537
- if (!isFullyQualified(command) &&
538
- !command.includes(path.sep) &&
539
- !command.includes("/")) {
540
- const globalBinPath = await findGlobalBinary(command);
541
- if (globalBinPath && globalBinPath !== spawnCommand) {
542
- // Recompute needsShell for the resolved global path
543
- const needsShellGlobal = computeNeedsShell(globalBinPath);
544
- proc = trySpawn(globalBinPath, args, cwd, env, needsShellGlobal);
545
- }
546
- else {
547
- throw await classifySpawnFailure(err, { command, cwd });
548
- }
549
- }
550
- else {
551
- throw await classifySpawnFailure(err, { command, cwd });
552
- }
553
- }
554
- if (!proc.stdin || !proc.stdout || !proc.stderr) {
555
- throw new Error(`Failed to spawn LSP server: ${command}`);
556
- }
557
- // Check if process exited immediately (spawn failure - synchronous check)
558
- if (proc.exitCode !== null || proc.killed) {
559
- throw new Error(`LSP server ${command} exited immediately (code: ${proc.exitCode}). ` +
560
- `The binary may be missing or corrupted.`);
561
- }
562
- logSessionStart(`lsp launch: command=${command} resolved=${spawnCommand} args=${JSON.stringify(args)} cwd=${cwd} shell=${needsShell ? "true" : "false"} pid=${proc.pid ?? 0}`);
563
- const formatStartupStderr = (stderr) => {
564
- const normalized = compactLogValue(stderr);
565
- if (!normalized)
566
- return "";
567
- return ` stderr=${normalized}`;
568
- };
569
- let startupStderr = "";
570
- const onStartupStderr = (chunk) => {
571
- if (startupStderr.length >= 4000)
572
- return;
573
- startupStderr += chunk.toString();
574
- };
575
- proc.stderr?.on("data", onStartupStderr);
576
- // For Windows and certain spawn failures, the error is async (ENOENT)
577
- // We need to wait a small tick to catch immediate spawn failures
578
- try {
579
- await new Promise((resolve, reject) => {
580
- let settled = false;
581
- // Attach error handler that can reject for immediate errors
582
- proc.on("error", (err) => {
583
- if (!settled) {
584
- settled = true;
585
- void classifySpawnFailure(err, { command, cwd }).then((failure) => {
586
- const detail = formatStartupStderr(startupStderr);
587
- reject(detail
588
- ? new SpawnFailureError(failure.kind, `${failure.message}${detail}`, failure.cause)
589
- : failure);
590
- });
591
- }
592
- });
593
- // Also listen for immediate exit
594
- proc.on("exit", (code) => {
595
- if (!settled && code !== null) {
596
- settled = true;
597
- // On Windows, .cmd shims fail with code 1 when the underlying binary isn't installed
598
- // This is different from ENOENT - the shim exists but can't find the binary
599
- const isWindowsCmd = isWindows && command.endsWith(".cmd");
600
- const errorMsg = isWindowsCmd && code === 1
601
- ? `npm .cmd shim failed (underlying binary not installed). Run 'npm install' in this project or use a global installation.`
602
- : `The binary may be missing or corrupted.`;
603
- reject(new Error(`LSP server ${command} exited immediately with code ${code}. ${errorMsg}${formatStartupStderr(startupStderr)}`));
604
- }
605
- });
606
- const startupFailureWindowMs = (() => {
607
- if (options?.startupFailureWindowMs) {
608
- return options.startupFailureWindowMs;
609
- }
610
- if (isWindows && needsShell) {
611
- return WINDOWS_NAV_STARTUP_FAILURE_WINDOW_MS;
612
- }
613
- return DEFAULT_STARTUP_FAILURE_WINDOW_MS;
614
- })();
615
- // Give shell-backed Windows launches a slightly longer window because
616
- // npm/cmd shims can fail asynchronously after the initial spawn succeeds.
617
- setTimeout(() => {
618
- if (!settled) {
619
- settled = true;
620
- resolve();
621
- }
622
- }, startupFailureWindowMs);
623
- });
624
- }
625
- finally {
626
- proc.stderr?.off("data", onStartupStderr);
627
- }
628
- // Re-attach the permanent error handler now that we've passed the danger zone
629
- _attachErrorHandler(proc, command, {
630
- command: spawnCommand,
631
- args,
632
- cwd,
633
- pid: proc.pid ?? 0,
634
- });
635
- unrefLspProcessHandles(proc);
636
- return {
637
- process: proc,
638
- stdin: proc.stdin,
639
- stdout: proc.stdout,
640
- stderr: proc.stderr,
641
- pid: proc.pid ?? 0,
642
- command: spawnCommand,
643
- args,
644
- };
645
- }
646
- /**
647
- * Spawn via Node.js directly
648
- */
649
- export async function launchViaNode(scriptPath, args = [], options = {}) {
650
- return launchLSP(process.execPath, [scriptPath, ...args], options);
651
- }
652
- /**
653
- * Spawn via Python module
654
- */
655
- export async function launchViaPython(moduleName, args = [], options = {}) {
656
- // On Windows, prefer 'py' launcher, fall back to 'python'
657
- const pythonCmd = process.platform === "win32" ? "py" : "python3";
658
- return launchLSP(pythonCmd, ["-m", moduleName, ...args], options);
659
- }
660
- /**
661
- * Stop an LSP process gracefully
662
- */
663
- export async function stopLSP(handle) {
664
- if (handle.process.exitCode !== null || handle.process.signalCode !== null) {
665
- return;
666
- }
667
- return new Promise((resolve) => {
668
- let settled = false;
669
- let forceTimeout;
670
- let giveUpTimeout;
671
- const done = () => {
672
- if (settled)
673
- return;
674
- settled = true;
675
- if (forceTimeout)
676
- clearTimeout(forceTimeout);
677
- if (giveUpTimeout)
678
- clearTimeout(giveUpTimeout);
679
- handle.process.off("exit", done);
680
- handle.process.off("error", done);
681
- resolve();
682
- };
683
- handle.process.once("exit", done);
684
- handle.process.once("error", done);
685
- const killWindowsTree = () => {
686
- if (!isWindows)
687
- return false;
688
- // If our child has already exited, its PID is dead and the OS may have
689
- // RECYCLED it to an unrelated process. `taskkill /F /T` on a recycled PID
690
- // force-kills that process AND its whole tree — in the test suite this
691
- // occasionally nuked a vitest worker fork ("Worker exited unexpectedly",
692
- // no fatal dump, e.g. via the "stopLSP after the process already exited"
693
- // path); in production it could kill an unrelated user process. Never
694
- // tree-kill a PID we no longer own — fall back to handle.process.kill(),
695
- // which on Windows signals via the retained process HANDLE (not the raw
696
- // PID), so it's a safe no-op on an already-exited child.
697
- //
698
- // #2042 folded the sign check and this exited check into the one
699
- // ownership predicate every kill-by-raw-pid now shares; the handle
700
- // arm below IS this paragraph, and on Windows it is the only
701
- // ownership evidence available (there is no /proc to read).
702
- if (!isOwnLiveChild(handle.pid, "lsp-stop-windows-tree", handle.process))
703
- return false;
704
- try {
705
- // Absolute path avoids PATH-resolution substitution on Windows.
706
- const taskkill = `${process.env.SystemRoot ?? "C:\\Windows"}\\System32\\taskkill.exe`;
707
- const killer = nodeSpawn(taskkill, ["/F", "/T", "/PID", String(handle.pid)], {
708
- shell: false,
709
- windowsHide: true,
710
- });
711
- killer.once("error", done);
712
- return true;
713
- }
714
- catch {
715
- return false;
716
- }
717
- };
718
- try {
719
- // On Windows, kill the tree first; killing the direct child can orphan
720
- // grandchildren (e.g. tsserver.js behind a cmd/npm shim).
721
- if (!killWindowsTree()) {
722
- handle.process.kill("SIGTERM");
723
- }
724
- }
725
- catch {
726
- done();
727
- return;
728
- }
729
- forceTimeout = setTimeout(() => {
730
- if (settled)
731
- return;
732
- try {
733
- if (!killWindowsTree()) {
734
- handle.process.kill("SIGKILL");
735
- }
736
- }
737
- catch {
738
- done();
739
- return;
740
- }
741
- // If the process had already exited before listeners were attached, no
742
- // exit event will arrive. Resolve rather than hanging test cleanup forever.
743
- giveUpTimeout = setTimeout(done, 500);
744
- }, 5000);
745
- });
746
- }