@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,37 +0,0 @@
1
- /**
2
- * The single post-autofix instruction about a written file (#1590).
3
- *
4
- * Two layers used to phrase this. `clients/pipeline.ts` claimed "the attached
5
- * full content is authoritative" from changed-file membership alone, and
6
- * `clients/runtime-tool-result.ts` — the only layer that sees the per-file
7
- * attachment cap and the per-command aggregate budget — appended "too large to
8
- * attach" for the same file. On a size-capped write the agent got both.
9
- *
10
- * The wording now lives here, and `handleToolResult` is the only caller: the
11
- * pipeline supplies the data (display paths it already resolved) and the layer
12
- * that made the attachment decision picks the sentence. Keeping the renderer
13
- * out of `pipeline.ts` also keeps it real in tests that mock the pipeline away.
14
- */
15
- /** Render the ONE post-autofix instruction for `decision`. */
16
- export function renderPostAutofixNotice(notice, decision) {
17
- const topFiles = notice.changedFiles
18
- .slice(0, 8)
19
- .map((f) => " - " + f)
20
- .join("\n");
21
- const overflow = notice.changedFiles.length > 8
22
- ? "\n - ... and " + (notice.changedFiles.length - 8) + " more"
23
- : "";
24
- const fileList = notice.changedFiles.length
25
- ? "\nModified files:\n" + topFiles + overflow
26
- : "";
27
- switch (decision) {
28
- case "attached":
29
- return `⚠️ **The attached full content for ${notice.targetPath} is authoritative after autofix. You MUST re-read any other modified side-effect files before editing them.**${fileList}`;
30
- case "size-capped":
31
- return `⚠️ **File was modified by auto-format/fix. You MUST re-read ${notice.targetPath} before making any further edits — the authoritative content is too large to attach.**${fileList}`;
32
- case "aggregate-budget-degraded":
33
- return `⚠️ **File was modified by auto-format/fix. You MUST re-read ${notice.targetPath} before making any further edits — the aggregate authoritative content for this command is too large to attach.**${fileList}`;
34
- default:
35
- return `⚠️ **File was modified by auto-format/fix. You MUST re-read modified file(s) before making any further edits — the content on disk has changed (whitespace, indentation, quotes, or code). Editing from memory will produce mismatches.**${fileList}`;
36
- }
37
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * One-shot invocation detection, shared across the session_start-scheduled
3
- * background work that must NOT run — or retain the process — in print mode
4
- * (#1154 quick-mode warmup, #1153 orphan-reaper).
5
- *
6
- * `pi -p` / `pi --print` is a one-shot: the host computes a single turn and
7
- * exits. Work scheduled to warm caches / clean up state for a *future* session
8
- * in the same process is pure waste in this mode AND — when it arms a
9
- * referenced libuv handle (a non-`unref`'d timer, an LSP child, an fs walk)
10
- * with no session_shutdown teardown — keeps the already-settled one-shot
11
- * process alive. That is the referenced-handle retention class of
12
- * #1097/#1110/#1148/#1149 and the located #1122 hypothesis-A concern.
13
- *
14
- * argv is read live (not captured at module load) so tests can drive it; the
15
- * flag never changes within a real process, and there is no hot-path caller,
16
- * so recomputing is free. This mirrors the print detection in
17
- * `runtime-session.ts`'s `resolveStartupMode` — keep them a single source.
18
- */
19
- export function isPrintMode(argv = process.argv) {
20
- return argv.includes("--print") || argv.includes("-p");
21
- }
@@ -1,228 +0,0 @@
1
- /**
2
- * The #2506 probe-home redirect, whole: the decision, the per-process memo it
3
- * is cached in, and the degradation event that decision produced.
4
- *
5
- * WHAT IT DECIDES. An ad-hoc probe against the BUILT `clients/*.js` — a bare
6
- * `node -e`, a throwaway `.mjs`, a harness script — has no `PI_LENS_HOME` pin,
7
- * so every logger and ledger it touches used to write into the maintainer's
8
- * REAL `~/.pi-lens`. Confirmed live on 2026-09-02: two review probes left 42
9
- * rows of `/p/.pi-lens.json` fixture garbage in real telemetry. When
10
- * `PI_LENS_HOME` is unset and the process looks like a probe — `PILENS_PROBE=1`,
11
- * a `cwd` inside a specific agent worktree, or a `cwd` under `os.tmpdir()` —
12
- * `resolveProbeHomeDir()` answers with a per-probe directory instead.
13
- *
14
- * WHY IT ALL LIVES HERE and not beside its `getGlobalPiLensDir()` sibling in
15
- * `file-utils.ts`, where round 2 of #2516 left it. `file-utils.ts` sits on an
16
- * import cycle (it still does, via `safe-spawn.js` -> `resource-sampler.js` ->
17
- * `instance-reaper.js` -> `file-utils.js`; the shorter route through
18
- * `degradation-ledger.js` -> `extension-log.js` was this move's doing —
19
- * `extension-log.ts` imported `file-utils.ts` for THIS function and nothing
20
- * else, so the edge went with it, and the known-violations baseline dropped
21
- * from 33 pinned cycles to 12 with none added). Fifteen log-family modules
22
- * call `getGlobalPiLensLogDir()` at their OWN module
23
- * top level. Under vitest's vite-SSR transform each import becomes a
24
- * `__vite_ssr_import_N__` variable assigned in source order, so one of those
25
- * top-level calls re-enters `file-utils.ts` while its body is only PARTWAY
26
- * through those assignments — and a resolver sitting there then dereferences a
27
- * binding that has not been assigned yet, throwing `ReferenceError: Cannot
28
- * access '__vite_ssr_import_N__' before initialization`. Measured live: the
29
- * re-entry arrives through `file-utils.ts`'s FIFTH import,
30
- * `spawn-timeout-cooldown.js`, so every binding declared from the sixth import
31
- * onward is unsafe on that path — which is most of the file.
32
- *
33
- * Round 2 of #2516 papered over that with an `isTestMode()` early return placed
34
- * ahead of the first unsafe dereference. That was load-order luck, not a
35
- * design: moving `file-utils.ts`'s own `isTestMode` import from fifth to last
36
- * makes the GUARD LINE ITSELF throw the same error. It also DEFEATED the
37
- * redirect for every process that has `VITEST` set but no `PI_LENS_HOME` pin —
38
- * vitest's own globalSetup/child processes — sending their logs to the real
39
- * home: the exact hermeticity hole the redirect exists to close.
40
- *
41
- * THIS module is off that cycle. It imports only node builtins and
42
- * `path-utils.js`, itself a leaf (node builtins plus the vendored, zero-import
43
- * `deps/minimatch.js`). A module off every cycle is fully evaluated before any
44
- * importer's body runs — in plain ESM and under the vite-SSR transform alike —
45
- * so none of its own bindings can ever be observed uninitialized, wherever an
46
- * importer chooses to place the import. That is what makes the guard
47
- * unnecessary rather than merely well-placed, and it is why module-scope
48
- * `const`s (including the `Symbol.for` below) are ordinary here where they were
49
- * a hazard in `file-utils.ts`.
50
- *
51
- * `tests/config/global-dir-probe-redirect.test.ts` pins the behaviour through
52
- * real spawned `node` children, including the VITEST-set-but-unpinned case.
53
- */
54
- import * as fs from "node:fs";
55
- import * as os from "node:os";
56
- import * as path from "node:path";
57
- import { isUnderDir, normalizeFilePath } from "./path-utils.js";
58
- /**
59
- * The memo lives in a process-wide `globalThis` slot rather than a plain
60
- * module-scope `let` so that a bundled `dist/index.js` and the loose
61
- * `clients/*.js` loaded into the same process — the shape #335 ships — share
62
- * ONE decision instead of memoizing two. A `Symbol.for` key is interned by
63
- * string, so both copies of this module resolve to the same slot.
64
- */
65
- const RESOLUTION_SLOT = Symbol.for("pi-lens.probe-home-state.resolution");
66
- /** The memoized resolution for this process, or `undefined` before first use. */
67
- export function getProbeHomeResolution() {
68
- return globalThis[RESOLUTION_SLOT];
69
- }
70
- /**
71
- * The degradation row for a redirect that actually happened, or `undefined`
72
- * when this process was not redirected (or has not resolved yet).
73
- * `degradation-ledger.ts`'s `getDegradationSummary()` is the only caller — it
74
- * folds this at READ time rather than having the resolver push a row, because a
75
- * direct import between `file-utils.ts` and `degradation-ledger.ts` in EITHER
76
- * direction (a dynamic `import()` included) adds unpinned `no-client-cycles`
77
- * violations to the cycle named in this module's doc comment.
78
- */
79
- export function getProbeHomeRedirectEvent() {
80
- return getProbeHomeResolution()?.event;
81
- }
82
- /**
83
- * Where pi-lens writes its LOGS, ledger rows and debug dumps: `~/.pi-lens/` by
84
- * default, exactly like `getGlobalPiLensDir()` in `file-utils.ts` — but
85
- * redirected to a per-probe directory when this process looks like an ad-hoc
86
- * probe rather than a real pi session (#2506).
87
- *
88
- * Every log-family writer routes here: `latency.log`, `extension.log`,
89
- * `sessionstart.log`, `cascade.log`, `read-guard.log`, `tree-sitter.log`,
90
- * `word-index.log`, `bus-events.log`, `dispositions.log`, `dead-code.log`,
91
- * `ast-grep-tools.log`, `actionable-warnings.log`, `review-graph.log`, the
92
- * `logs/*.jsonl` diagnostic dir, the debug handle/heap dumps,
93
- * `log-cleanup.ts`'s sweep over all of the above, and `smells-rollup.ts`'s
94
- * read-side tail of `latency.log`/`bus-events.log` (a reader, but it must
95
- * follow the same root or it tails a file nobody is writing).
96
- *
97
- * WHY IT LIVES IN THIS MODULE and not next to its `getGlobalPiLensDir()`
98
- * sibling in `file-utils.ts` — see this file's header. Fifteen of the writers
99
- * listed above call this function at their OWN module top level, and
100
- * `file-utils.ts` is on an import cycle, so resolving from there could observe
101
- * `file-utils.ts` mid-initialization. Resolving from a module off every cycle
102
- * cannot.
103
- *
104
- * `PI_LENS_HOME` wins over any redirect, which is how
105
- * `tests/support/vitest-setup.ts` keeps test workers hermetic. Note the
106
- * redirect still applies under vitest for processes that setup does not cover
107
- * (globalSetup, and children spawned without the pin): #2516 round 2's
108
- * `isTestMode()` guard sent exactly those to the developer's real home.
109
- *
110
- * Deliberately does NOT write a line to the terminal when it fires. #1333 gives
111
- * pi sole ownership of the TTY, and
112
- * `tests/clients/extension-terminal-silence.test.ts` enforces that nothing
113
- * under `clients/` calls `process.std*.write` or `console.*` (round 2 of
114
- * #2506 shipped a `process.stderr.write` here and was red in CI for exactly
115
- * that). Nor can it log through `extension-log.ts`'s
116
- * `createSubsystemLogger`: that module imports THIS one, so an import back
117
- * the other way would close a new, unpinned `no-client-cycles` cycle — and
118
- * `extension.log` is itself redirected by this very function, so the line
119
- * would land in the probe home nobody reads. The durable signal is the
120
- * `global-dir-probe-redirect` degradation row instead, folded into
121
- * `getDegradationSummary()` at read time via
122
- * `getProbeHomeRedirectEvent()` above.
123
- */
124
- export function getGlobalPiLensLogDir() {
125
- const override = process.env.PI_LENS_HOME?.trim();
126
- if (override)
127
- return path.resolve(override);
128
- return resolveProbeHomeDir() ?? path.join(os.homedir(), ".pi-lens");
129
- }
130
- /**
131
- * Resolve the probe-home redirect at most ONCE per process, caching both the
132
- * "yes, here" and the "no redirect" answers (#2506 round 3, F5). Round 2 read
133
- * `process.cwd()` live on every call, which gave a single process up to three
134
- * different global dirs as it chdir'd, and re-ran the whole decision on the hot
135
- * logging path.
136
- *
137
- * `undefined` means "no redirect applies"; `getGlobalPiLensLogDir()` above
138
- * falls back to the real home. This function never consults `PI_LENS_HOME` —
139
- * that pin is handled by its caller, ahead of this decision, so a pinned
140
- * process never memoizes a probe answer it would then keep after the pin
141
- * changed.
142
- */
143
- function resolveProbeHomeDir() {
144
- const slot = globalThis;
145
- const cached = slot[RESOLUTION_SLOT];
146
- if (cached)
147
- return cached.probeHome;
148
- const cwd = process.cwd();
149
- const probeHome = computeProbeHomeDir(cwd);
150
- slot[RESOLUTION_SLOT] = {
151
- probeHome,
152
- event: probeHome ? { probeHome, cwd } : undefined,
153
- };
154
- return probeHome;
155
- }
156
- /**
157
- * Clears the memoized decision AND the event it produced, so the next
158
- * `getGlobalPiLensLogDir()` call re-resolves from scratch. Exercised by
159
- * `tests/config/global-dir-probe-redirect.test.ts`, which drives the resolver
160
- * repeatedly under different in-process conditions; without it the first call
161
- * in a worker would pin the answer for every later case in the same file.
162
- */
163
- export function _resetProbeHomeRedirectStateForTests() {
164
- globalThis[RESOLUTION_SLOT] = undefined;
165
- }
166
- /** The redirect decision itself. */
167
- function computeProbeHomeDir(cwd) {
168
- // The explicit force wins first: it is how a probe run from an ordinary
169
- // project checkout opts in, and it must work even under a harness that has
170
- // set a test-mode marker but no PI_LENS_HOME.
171
- if (process.env.PILENS_PROBE === "1") {
172
- return path.join(cwd, ".pi-lens-probe-home");
173
- }
174
- const worktreeRoot = findAgentWorktreeRoot(cwd);
175
- if (worktreeRoot)
176
- return path.join(worktreeRoot, ".pi-lens-probe-home");
177
- if (isUnderRealDir(cwd, os.tmpdir())) {
178
- return path.join(cwd, ".pi-lens-probe-home");
179
- }
180
- return undefined;
181
- }
182
- /**
183
- * The directory of the SPECIFIC agent worktree containing `cwd`, or
184
- * `undefined` when `cwd` is not inside one.
185
- *
186
- * Requires at least one path segment AFTER `worktrees/`, and anchors the
187
- * probe home at that segment rather than at the live `cwd` (#2506 round 3,
188
- * F5). Round 2's trailing `(\/|$)` alternative also matched a `cwd` of
189
- * `.claude/worktrees` ITSELF, which would have put the probe home in the
190
- * SHARED worktrees parent — every concurrent agent on the box writing into
191
- * one directory, the cross-agent collision this redirect is supposed to
192
- * prevent. Anchoring at the worktree also means a probe run from a
193
- * subdirectory (`<worktree>/clients`) and one run from the worktree root
194
- * agree on a single probe home instead of scattering one per cwd.
195
- */
196
- function findAgentWorktreeRoot(cwd) {
197
- const normalized = normalizeFilePath(path.resolve(cwd));
198
- const match = /(?:^|\/)\.claude\/worktrees\/[^/]+(?:\/|$)/.exec(normalized);
199
- if (!match)
200
- return undefined;
201
- return normalized.slice(0, match.index + match[0].length).replace(/\/$/, "");
202
- }
203
- /**
204
- * `isUnderDir`, but with both sides resolved through `realpath` first
205
- * (#2506 round 3, F7).
206
- *
207
- * On macOS `os.tmpdir()` reports `/var/folders/...` while a `cwd` created
208
- * under it resolves to `/private/var/folders/...` (`/var` is a symlink to
209
- * `/private/var`), so the two NEVER prefix-match unresolved and the tmpdir
210
- * branch would be dead on every Mac. Windows has the same shape with 8.3
211
- * short names and substituted drives. Both sides go through the same
212
- * function, so `realpathSync.native`'s canonical Windows casing applies
213
- * consistently; the result is used only for this containment test, never to
214
- * build the returned path, so no casing change can leak into a log path.
215
- * Best-effort by design: a path that does not exist yet (or an EPERM) falls
216
- * back to its literal form rather than throwing on the logging hot path.
217
- */
218
- function isUnderRealDir(child, parent) {
219
- return isUnderDir(toRealPath(child), toRealPath(parent));
220
- }
221
- function toRealPath(target) {
222
- try {
223
- return fs.realpathSync.native(target);
224
- }
225
- catch {
226
- return target;
227
- }
228
- }
@@ -1,66 +0,0 @@
1
- /**
2
- * Shared process-bridge registration helper (#2437).
3
- *
4
- * `clients/read-bridge.ts` (#1265) and `clients/mutation-bridge.ts` (#2423)
5
- * each mount a versioned, frozen method-table object at a well-known
6
- * `globalThis[Symbol.for("pi-lens:...")]` key so a same-process producer can
7
- * reach pi-lens's bookkeeping without importing its internals. Both bridges
8
- * carried an identical mount body — a first-wins existence check,
9
- * `Object.freeze`, and a non-writable/non-configurable `Object.defineProperty`
10
- * — differing only in their key and method table (named by the #2432 review,
11
- * refs #2423). This module owns that body once.
12
- *
13
- * NOT `clients/process-singletons.ts` (#2146): that module keeps a single
14
- * MUTABLE, adopt-if-version-compatible value per "family" inside ONE shared
15
- * container (a different, single key mounts the container itself, and a
16
- * version mismatch there means "discard and rebuild"). A bridge's contract is
17
- * the opposite: the documented producer protocol reads
18
- * `globalThis[Symbol.for("pi-lens:mutation-bridge")]` directly as a frozen,
19
- * first-wins, unreplaceable property, and a version mismatch is the
20
- * PRODUCER's problem — an unsupported bridge it should not call — never a
21
- * signal for pi-lens to silently reset its own mount. Reusing the singleton
22
- * container would change that documented external contract, so this stays a
23
- * separate, deliberately smaller leaf built for the bridge shape only.
24
- *
25
- * STATIC IMPORTS: none, deliberately. Both `read-bridge.ts` and
26
- * `mutation-bridge.ts` import this module; it must stay a dependency leaf so
27
- * neither gains an edge onto anything else in `clients/` (`no-client-cycles`).
28
- */
29
- /**
30
- * Mount `build()`'s result at `globalThis[key]`, once per process.
31
- *
32
- * First-wins: if `key` already exists on `globalThis` — from an earlier call
33
- * in this process, whether this bridge's own prior registration or a
34
- * redundant re-activation — `build()` is never invoked and the existing
35
- * mount is left untouched. The mounted value is frozen and installed
36
- * non-writable/non-configurable so no later code can silently replace or
37
- * extend it; the `in` check above is what keeps a redundant call from
38
- * throwing on that now-frozen property.
39
- */
40
- export function registerProcessBridge(key, build) {
41
- if (key in globalThis)
42
- return;
43
- const bridge = Object.freeze(build());
44
- Object.defineProperty(globalThis, key, {
45
- value: bridge,
46
- writable: false,
47
- configurable: false,
48
- enumerable: false,
49
- });
50
- }
51
- /**
52
- * The bridge mounted at `key`, or `undefined` when nothing is mounted, the
53
- * mounted value is not an object, or its `version` does not equal `version`.
54
- * A version mismatch means "not a bridge this caller recognizes" — never
55
- * adopted and never reset; the reset-on-mismatch behavior belongs to
56
- * `process-singletons.ts`'s different contract, not this one.
57
- */
58
- export function getProcessBridge(key, version) {
59
- const bridge = globalThis[key];
60
- if (!bridge || typeof bridge !== "object")
61
- return undefined;
62
- const candidate = bridge;
63
- if (candidate.version !== version)
64
- return undefined;
65
- return candidate;
66
- }
@@ -1,210 +0,0 @@
1
- /**
2
- * Process singletons — state that must exist ONCE PER PROCESS, not once per
3
- * module evaluation (#2146).
4
- *
5
- * WHY THIS MODULE EXISTS. pi evaluates the pi-lens module graph more than once
6
- * in a single process: dogfood pass 3 measured one pid emitting `host_boot`
7
- * nine times, another four times. Source and compiled entries load through
8
- * separate module graphs, in-process subagent sessions re-enter the extension
9
- * loader, and vitest re-evaluates modules on `vi.resetModules()`. Every
10
- * module-scope `let` therefore exists N times, and any state whose CORRECTNESS
11
- * depends on being the process's only copy silently breaks:
12
- *
13
- * - `session-lifecycle.ts`'s registered primary: evaluation 2 starts with an
14
- * empty registration, classifies a subagent temp root as `primary`, and runs
15
- * the full session_start battery the #473/#2129/#2133 guard exists to
16
- * decline. Measured cost: three identical word-index full rebuilds in one
17
- * 90s burst, 240.8s of CPU for one index.
18
- * - `instance-registry.ts`'s mutation tail: N tails are N concurrent
19
- * read-modify-write cycles over one `instances.json`. Measured: three
20
- * `instance-registry-corrupt` records in a 9s window, with two project roots
21
- * and one live instance lost from the file.
22
- *
23
- * PRECEDENT, both in-repo and both cited rather than invented:
24
- * - `clients/runtime-session.ts:1826` hangs `__piLensFirstSessionDone` /
25
- * `__piLensWarmupScheduled` on `globalThis` for exactly this reason.
26
- * - `clients/ndjson-logger.ts:125` does the versioned form: a
27
- * `Symbol.for()` key, a schema string, a version number, and an explicit
28
- * adopt-or-decline decision for a state written by a different build.
29
- *
30
- * This module generalizes the second one so each state family gets the same
31
- * treatment without re-deriving the protocol per site.
32
- *
33
- * WHAT BELONGS HERE. Only state that is WRONG when duplicated: process-wide
34
- * registrations, serialization points, and once-per-process latches. A memo or
35
- * cache that re-derives the same answer from a stable source (an env read, a
36
- * host probe) is merely wasteful when duplicated, not wrong, and stays at
37
- * module scope — see the class-sweep table in the #2146 PR body for the
38
- * per-family verdicts.
39
- *
40
- * VERSIONING AND THE OLDER-SHAPE FALLBACK. Two builds can meet in one process:
41
- * a stale `dist/` graph and a fresh source graph, or an extension reload after
42
- * an upgrade. Each family carries its own `version`. The rule is
43
- * adopt-if-compatible, reset otherwise:
44
- *
45
- * - Same schema and same version -> ADOPT the existing value. This is the
46
- * common case and the whole point of the module.
47
- * - Anything else (missing schema, different schema, older version, NEWER
48
- * version) -> do NOT adopt. A shape this build cannot read is not safely
49
- * readable in either direction, so guessing is worse than starting clean.
50
- * The cell is replaced with a fresh value from `create()` and ONE bounded
51
- * `process-singleton-reset` entry is logged per family, so a nine-evaluation
52
- * process still reports at most one row per family. Behavior after a reset is
53
- * exactly today's module-scope behavior for that family, which is the
54
- * fail-safe direction.
55
- *
56
- * The container key itself is versioned (`SINGLETON_HOST_KEY`). A future change
57
- * to the CONTAINER shape bumps the key, so an old container is simply not
58
- * found rather than mis-read.
59
- */
60
- /**
61
- * STATIC IMPORTS: none, deliberately. This module is a dependency leaf.
62
- *
63
- * It cannot import the degradation ledger. `instance-registry.ts` imports this
64
- * module, and the ledger reaches `instance-reaper.ts` (through `extension-log`
65
- * -> `file-utils` -> `git-tracked-ignore` -> `safe-spawn` -> `resource-sampler`),
66
- * and `instance-reaper` imports the registry back. Any edge from here to the
67
- * ledger closes a `no-client-cycles` cycle, which CI's dependency-boundaries
68
- * lane rejects. A dynamic import does not help: the rule excludes
69
- * `dynamic-import` only on the edge it evaluates, not on the intermediate edges
70
- * of the cycle it walks.
71
- *
72
- * So the direction is inverted, exactly as `ndjson-logger.ts` already does for
73
- * its own sink-write failures: this module keeps a bounded reset log, and
74
- * `degradation-ledger.ts` PULLS it at read time through
75
- * {@link getProcessSingletonResets} and folds it into `getDegradationSummary()`.
76
- * The record still reaches `pilens_health`, with no import from here.
77
- */
78
- /** Bump only when the CONTAINER shape changes, never for a family's shape. */
79
- const SINGLETON_HOST_KEY = Symbol.for("pi-lens.process-singletons.v1");
80
- const SINGLETON_SCHEMA = "pi-lens.process-singletons";
81
- /** Degradation kind emitted when an incompatible cell is discarded. */
82
- export const PROCESS_SINGLETON_RESET_KIND = "process-singleton-reset";
83
- const singletonHost = globalThis;
84
- /**
85
- * The process's one container. Deliberately created on first read rather than
86
- * at module scope of a single graph: whichever evaluation runs first wins, and
87
- * every later evaluation adopts it.
88
- */
89
- function container() {
90
- const existing = singletonHost[SINGLETON_HOST_KEY];
91
- if (existing instanceof Map)
92
- return existing;
93
- const fresh = new Map();
94
- singletonHost[SINGLETON_HOST_KEY] = fresh;
95
- return fresh;
96
- }
97
- function isAdoptable(cell, version) {
98
- if (!cell || typeof cell !== "object")
99
- return false;
100
- const candidate = cell;
101
- return (candidate.schema === SINGLETON_SCHEMA &&
102
- candidate.version === version &&
103
- candidate.value !== undefined);
104
- }
105
- /** One bounded reset log per process, capped so a pathological build pair
106
- * cannot grow it without limit. */
107
- export const PROCESS_SINGLETON_RESET_LOG_FAMILY = "process-singleton-reset-log";
108
- const RESET_LOG_FAMILY = PROCESS_SINGLETON_RESET_LOG_FAMILY;
109
- const RESET_LOG_VERSION = 1;
110
- const RESET_LOG_CAP = 16;
111
- function resetLog() {
112
- return getProcessSingleton(RESET_LOG_FAMILY, RESET_LOG_VERSION, () => ({
113
- entries: [],
114
- }));
115
- }
116
- /**
117
- * Record that an incompatible cell was discarded. Bounded twice: once per
118
- * family (a nine-evaluation process logs at most one entry per family) and once
119
- * overall by {@link RESET_LOG_CAP}.
120
- */
121
- function recordIncompatibleCell(family, wantedVersion, found) {
122
- // The reset log is itself a family, so recording ITS reset would recurse.
123
- // Dropping that one record is correct: the log it would be written to is the
124
- // thing being discarded.
125
- if (family === RESET_LOG_FAMILY)
126
- return;
127
- const log = resetLog();
128
- if (log.entries.some((entry) => entry.family === family))
129
- return;
130
- if (log.entries.length >= RESET_LOG_CAP)
131
- return;
132
- log.entries.push({
133
- family,
134
- reason: `incompatible process singleton discarded (found schema=${String(found.schema)} ` +
135
- `version=${String(found.version)}, this build wants schema=${SINGLETON_SCHEMA} ` +
136
- `version=${wantedVersion})`,
137
- });
138
- }
139
- /**
140
- * Read-time view for `degradation-ledger.ts` (see the header). Never performs
141
- * I/O and never throws, so folding it into a health summary is free.
142
- */
143
- export function getProcessSingletonResets() {
144
- return resetLog().entries.map((entry) => ({ ...entry }));
145
- }
146
- /**
147
- * Return the process-wide value for `family`, creating it on the first
148
- * evaluation that asks and adopting it on every later one.
149
- *
150
- * `version` describes the SHAPE of the value `create()` builds. Bump it when a
151
- * build changes that shape, so a graph carrying the old shape is discarded
152
- * instead of mis-read (see the module docstring's fallback rules).
153
- *
154
- * `create()` runs at most once per process per family, unless an incompatible
155
- * cell forced a reset.
156
- *
157
- * `onIncompatible` is for values that own external resources. It runs before
158
- * the cell is replaced, so the owner can tear those resources down safely.
159
- */
160
- export function getProcessSingleton(family, version, create, onIncompatible) {
161
- const cells = container();
162
- const existing = cells.get(family);
163
- if (isAdoptable(existing, version))
164
- return existing.value;
165
- if (existing !== undefined) {
166
- // An incompatible cell from another build. One bounded row per family:
167
- // nine evaluations must not write nine records (AGENTS.md's bounded-record
168
- // rule; `recordDegradationOnce` keys on kind + subject).
169
- recordIncompatibleCell(family, version, existing);
170
- onIncompatible?.(existing.value);
171
- }
172
- const value = create();
173
- cells.set(family, { schema: SINGLETON_SCHEMA, version, value });
174
- return value;
175
- }
176
- /**
177
- * Test-only: drop the process-wide container so the next
178
- * {@link getProcessSingleton} call rebuilds every family from `create()`.
179
- *
180
- * This clears the GLOBAL state, not a module-local copy — a reset that only
181
- * cleared module scope would be the very defect this module fixes, and would
182
- * make every suite that relies on isolation pass vacuously (catalog shape 7).
183
- */
184
- export function _resetProcessSingletonsForTests() {
185
- singletonHost[SINGLETON_HOST_KEY] = new Map();
186
- }
187
- /**
188
- * Test-only: install a raw cell so a suite can exercise the older/newer-shape
189
- * fallback without needing two real builds in one process.
190
- */
191
- export function _seedProcessSingletonCellForTests(family, cell) {
192
- container().set(family, cell);
193
- }
194
- // --- Module-evaluation ordinal (#2146 observability) ---
195
- const EVALUATION_ORDINAL_FAMILY = "module-evaluation-ordinal";
196
- const EVALUATION_ORDINAL_VERSION = 1;
197
- /**
198
- * How many times this process has evaluated the pi-lens module graph, 1-based.
199
- *
200
- * Called once, at module scope of `clients/startup-timing.ts`, so the number it
201
- * returns is the evaluation count of the graph that contains the extension
202
- * entry. It is carried on `host_boot.metadata.evaluationOrdinal` so a multi-eval
203
- * process is greppable from `latency.log` instead of having to be inferred by
204
- * counting `host_boot` lines per pid — the observability gap #2146 names.
205
- */
206
- export function nextModuleEvaluationOrdinal() {
207
- const state = getProcessSingleton(EVALUATION_ORDINAL_FAMILY, EVALUATION_ORDINAL_VERSION, () => ({ evaluations: 0 }));
208
- state.evaluations += 1;
209
- return state.evaluations;
210
- }
@@ -1,68 +0,0 @@
1
- /**
2
- * The extension runtime's door onto the ONE process-table seam (#2443).
3
- *
4
- * `scripts/lib/process-scan.mjs` owns what a process listing IS: the field →
5
- * platform-column table, the Windows CIM/WQL and POSIX `ps` command
6
- * composition, the WQL escaping, and the row parser. This module owns how
7
- * clients/ RUNS one, which is genuinely different from how a script runs one
8
- * and stays different on purpose:
9
- *
10
- * - the child and its stdout pipe are `unref`'d (#1155) so a one-shot
11
- * `pi --print` can settle without waiting on a CIM query;
12
- * - a child that blows its timeout is terminated through the caller's own
13
- * tree-kill-and-verify machinery (#1864 F3), injected as `onTimeout` — a
14
- * sweep that leaks its own scanner is the defect the sweep exists to fix;
15
- * - the outcome carries a `SpawnCollectStatus`, so "the table is empty" and
16
- * "the query never ran" stay distinguishable and the caller can record the
17
- * degradation (#1857).
18
- *
19
- * WHY THE SEAM IS IMPORTED FROM scripts/ RATHER THAN LIVING HERE: the .mjs
20
- * header argues it in full. Short version — `scripts/prune-agent-worktrees.mjs`
21
- * is a SessionStart/SubagentStop hook that runs inside freshly created agent
22
- * worktrees, where `clients/*.js` (gitignored build output) does not exist
23
- * yet, so the shared half has to be the side that needs no build. This file
24
- * is the single crossing point; nothing else in clients/ imports scripts/.
25
- */
26
- import { spawnCollectStdoutResult, } from "./child-unref.js";
27
- import { buildProcessQuery, parseProcessTable, } from "../scripts/lib/process-scan.mjs";
28
- /**
29
- * Re-exported, not redefined. `windowsExe` resolves an absolute System32
30
- * interpreter path for a spawn this process is about to make (a bare
31
- * `powershell.exe`/`taskkill.exe` is resolvable through a PATH a caller can
32
- * shadow, and these spawns decide what gets killed) — one definition of that
33
- * rule is the whole point of the seam.
34
- */
35
- export { windowsExe } from "../scripts/lib/process-scan.mjs";
36
- /**
37
- * Run one process-table query on the extension's spawn rails.
38
- *
39
- * Never throws and never rejects: an unbuildable query (a Windows-only column
40
- * asked for on POSIX, an empty filter) resolves as `spawn-error` with no rows,
41
- * the same shape every other failure takes, because every caller here is
42
- * best-effort instrumentation or a best-effort sweep.
43
- */
44
- export async function queryProcessTable(request, options) {
45
- let query;
46
- try {
47
- query = buildProcessQuery(request.fields, {
48
- filter: request.filter,
49
- excludeSelfPid: request.excludeSelfPid,
50
- });
51
- }
52
- catch {
53
- return { rows: [], status: "spawn-error", serverSideFiltered: false };
54
- }
55
- const result = await spawnCollectStdoutResult(query.command, query.args, { shell: false, windowsHide: true, stdio: ["ignore", "pipe", "ignore"] }, { timeoutMs: options.timeoutMs, onTimeout: options.onTimeout });
56
- return {
57
- // Whatever the collector kept is parsed rather than discarded here: it
58
- // drops stdout on a non-zero exit (that output is not evidence of what
59
- // is NOT running) but KEEPS the partial table from a timed-out child,
60
- // and the caller decides what a partial table is worth by reading
61
- // `status`. Re-deciding that here would be a second policy.
62
- rows: parseProcessTable(result.stdout, query.tabSeparated, query.fields),
63
- status: result.status,
64
- exitCode: result.exitCode,
65
- timeoutKill: result.timeoutKill,
66
- serverSideFiltered: query.serverSideFiltered,
67
- };
68
- }