@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,504 +0,0 @@
1
- /**
2
- * Terminal-safe diagnostic sink for the in-pi extension path (#1333).
3
- *
4
- * pi owns the terminal: it runs the TTY in raw mode and repaints with
5
- * cursor-addressed diffs, so ANY byte an extension writes to stdout/stderr
6
- * lands mid-frame and desyncs pi's model of the screen — the layout stays
7
- * broken until a full repaint. `clients/`, `tools/`, `index.ts` and `i18n.ts`
8
- * are all reachable from the extension entry, so none of them may call
9
- * `console.*` or `process.std*.write`. (`mcp/`, `scripts/` and `bin/` DO own
10
- * their stdout contract and keep their writes.)
11
- *
12
- * This module is the general-purpose replacement sink: one `createNdjsonLogger`
13
- * instance over `<global pi-lens dir>/extension.log`, per the single-writer
14
- * invariant in AGENTS.md. Subsystems that already own a log (tree-sitter,
15
- * review-graph, cascade, latency, sessionstart) route to THAT log instead —
16
- * this file is for the areas that had no sink at all.
17
- *
18
- * Three-channels rule (#482/#484/#485): everything written here is
19
- * LOG-audience. A genuinely user-facing degradation must ALSO reach the human
20
- * through the host's own render path (`ctx.ui.notify` / a display-only session
21
- * entry) — never a raw write.
22
- */
23
- import { AsyncLocalStorage } from "node:async_hooks";
24
- import * as path from "node:path";
25
- import { isTestMode } from "./env-utils.js";
26
- import { getGlobalPiLensLogDir } from "./probe-home-state.js";
27
- import { getMaxLogSizeMB } from "./log-cleanup.js";
28
- import { createNdjsonLogger } from "./ndjson-logger.js";
29
- import { getTurnId } from "./turn-context.js";
30
- export const EXTENSION_LOG_FILE = path.join(getGlobalPiLensLogDir(), "extension.log");
31
- const writer = createNdjsonLogger({
32
- filePath: EXTENSION_LOG_FILE,
33
- maxBytes: getMaxLogSizeMB() * 1024 * 1024,
34
- });
35
- export function logExtension(entry) {
36
- if (isTestMode())
37
- return;
38
- writer.log({
39
- ts: new Date().toISOString(),
40
- pid: process.pid,
41
- turnId: getTurnId(),
42
- level: entry.level ?? "error",
43
- subsystem: entry.subsystem,
44
- message: entry.message,
45
- ...(entry.metadata ? { metadata: entry.metadata } : {}),
46
- });
47
- }
48
- export function createSubsystemLogger(subsystem, defaultLevel = "debug") {
49
- const at = (level) => (message, metadata) => {
50
- logExtension({ subsystem, message, level, metadata });
51
- };
52
- const logger = at(defaultLevel);
53
- logger.error = at("error");
54
- logger.warn = at("warn");
55
- logger.debug = at("debug");
56
- return logger;
57
- }
58
- /** No-op with the `SubsystemLogger` shape, for the verbose-off branch. */
59
- export function noopSubsystemLogger() {
60
- // SAFETY: `SubsystemLogger` is a callable with `error`/`warn`/`debug`
61
- // properties. TypeScript cannot type a function literal that gains its
62
- // properties on the following lines, so the cast runs ahead of the three
63
- // assignments that complete the shape. Every member of the interface is
64
- // assigned before `noop` escapes this function.
65
- const noop = (() => { });
66
- noop.error = () => { };
67
- noop.warn = () => { };
68
- noop.debug = () => { };
69
- return noop;
70
- }
71
- export function getExtensionLogPath() {
72
- return EXTENSION_LOG_FILE;
73
- }
74
- /** Resolve once all enqueued extension-log writes are on disk (tests/shutdown). */
75
- export function flushExtensionLog() {
76
- return writer.flush();
77
- }
78
- /** Teardown-only: force queued entries to disk before the process exits. */
79
- export function flushExtensionLogSync() {
80
- writer.flushSync();
81
- }
82
- // --- Defense in depth: the console reroute -----------------------------------
83
- const CONSOLE_METHODS = [
84
- "log",
85
- "info",
86
- "warn",
87
- "error",
88
- "debug",
89
- "trace",
90
- "dir",
91
- ];
92
- let consoleGuardInstalled = false;
93
- /** The console methods captured before the patch, for an exact restore. */
94
- const originalConsoleMethods = new Map();
95
- /** The replacements this module installed, so uninstall never clobbers a later patch. */
96
- const installedConsoleMethods = new Map();
97
- /**
98
- * The async capture window (#1434).
99
- *
100
- * The guard must catch pi-lens's own writes without swallowing the host's. pi's
101
- * one-shot CLI commands print through `console.log`, so a permanent global
102
- * reroute makes `pi list` print nothing in any project whose cwd loads the
103
- * extension first. The store answers "is pi-lens executing right now?" and
104
- * `AsyncLocalStorage` carries that answer into every promise, timer and
105
- * callback created inside the window — so an async handler still captures after
106
- * an `await`, while host code outside the window keeps its real sink.
107
- *
108
- * Built LAZILY (S1b, #1434 review): an active `AsyncLocalStorage` enables an
109
- * async_hooks init hook for every promise in the process on Node 22 — the same
110
- * hazard `tree-sitter-client.ts`'s `parseCacheMeasurement.disable()` comment
111
- * documents — so constructing one at module scope taxes every `await` in the
112
- * host even when the kill switch (`PI_LENS_CONSOLE_GUARD=0`) or test mode means
113
- * the guard never installs and nothing ever reads the store. Construction is
114
- * deferred to the first `runInConsoleCaptureWindow` call, and only happens once
115
- * `installConsoleGuard()` has actually installed (never under the kill switch
116
- * or test mode, since `consoleGuardInstalled` stays false in both).
117
- */
118
- let consoleCaptureStorage;
119
- function getConsoleCaptureStorage() {
120
- if (!consoleGuardInstalled)
121
- return undefined;
122
- if (consoleCaptureStorage === undefined) {
123
- consoleCaptureStorage = new AsyncLocalStorage();
124
- }
125
- return consoleCaptureStorage;
126
- }
127
- /**
128
- * Module evaluation is the one window `AsyncLocalStorage` cannot wrap: the
129
- * module graph is evaluated by the loader, not by a pi-lens call. It is
130
- * synchronous, so a plain flag is enough (#1333's original concern — a
131
- * transitively loaded dependency writing during its own init).
132
- */
133
- let moduleLoadWindowOpen = false;
134
- /**
135
- * True while pi-lens owns execution, so console writes belong in the log.
136
- *
137
- * `consoleCaptureStorage` may not have been constructed yet (S1b) — that state
138
- * means "no window was ever opened through `runInConsoleCaptureWindow`", i.e.
139
- * the same as an empty store, so it reads as "no window" rather than throwing.
140
- */
141
- export function isConsoleCaptureActive() {
142
- return moduleLoadWindowOpen || consoleCaptureStorage?.getStore() === true;
143
- }
144
- /**
145
- * Open the module-evaluation window. Called by `clients/console-guard-install.ts`
146
- * before any other pi-lens module evaluates.
147
- *
148
- * The window closes explicitly at the end of `index.ts`. The backstop below
149
- * closes it anyway if that never runs (an import throws, or the entry changes
150
- * shape), because a leaked window would capture the host's output — the very
151
- * bug this design fixes. Module evaluation is synchronous, so the end of the
152
- * current macrotask is always past it. The timer is unref'd, so it can never
153
- * hold a one-shot CLI process open (defect shape 4).
154
- */
155
- export function openModuleLoadConsoleWindow() {
156
- if (moduleLoadWindowOpen)
157
- return;
158
- moduleLoadWindowOpen = true;
159
- const backstop = setImmediate(() => {
160
- moduleLoadWindowOpen = false;
161
- });
162
- backstop.unref?.();
163
- }
164
- /** Close the module-evaluation window. Idempotent. */
165
- export function closeModuleLoadConsoleWindow() {
166
- moduleLoadWindowOpen = false;
167
- }
168
- /**
169
- * Run `fn` inside a capture window. Console writes from `fn`, and from anything
170
- * `fn` schedules, go to the extension log instead of the terminal.
171
- *
172
- * When the guard was never installed (kill switch or test mode), there is
173
- * nothing for a window to gate — `installConsoleGuard`'s own dispatcher is the
174
- * only reader of `isConsoleCaptureActive()`, and it short-circuits before that
175
- * call in both cases. Skip constructing the `AsyncLocalStorage` (S1b) and run
176
- * `fn` directly.
177
- */
178
- export function runInConsoleCaptureWindow(fn) {
179
- const storage = getConsoleCaptureStorage();
180
- if (!storage)
181
- return fn();
182
- return storage.run(true, fn);
183
- }
184
- function inCaptureWindow(fn) {
185
- // SAFETY: the wrapper forwards `this` and every argument to `fn` unchanged
186
- // and returns its result unchanged, so it is call-compatible with `T` at
187
- // runtime. TypeScript cannot prove that for a generic `T` it did not
188
- // construct, because a variadic `(...args: unknown[]) => unknown` is not
189
- // assignable to an arbitrary function type. The invariant is the
190
- // pass-through itself: change the body to alter arguments or the return
191
- // value and this cast stops being true.
192
- return function (...args) {
193
- return runInConsoleCaptureWindow(() => fn.apply(this, args));
194
- };
195
- }
196
- /**
197
- * True for every host API member that can hand pi-lens's own functions back to
198
- * the host to be called later: `on(event, handler)` and any `register*`
199
- * method (`registerTool`, `registerCommand`, `registerMessageRenderer`,
200
- * `registerShortcut`, `registerFlag`, `registerMarkdownTransformer`,
201
- * `registerEntryRenderer`, `registerProvider`, and any the host adds later).
202
- *
203
- * This is a DENY-LIST, not an allow-list (#1434 S1a review): every member
204
- * matching this predicate gets its function arguments wrapped, with no
205
- * per-method exemption. The earlier allow-list form (only `on` and
206
- * `registerTool`) let the 9 `registerCommand` call sites and
207
- * `registerMessageRenderer` bypass the window, regressing #1333 for those
208
- * paths — a host callback fired for one of them would still write straight to
209
- * the terminal.
210
- */
211
- function isCaptureSeam(prop) {
212
- return (prop === "on" || (typeof prop === "string" && prop.startsWith("register")));
213
- }
214
- /**
215
- * True for a host SCHEMA value that happens to be callable.
216
- *
217
- * A tool definition's `parameters` is DATA the host reads, not a pi-lens
218
- * callback — but the schema builder pi-lens imports is host-provided
219
- * (`clients/deps/typebox.ts`: the host resolves the bare `typebox`
220
- * specifier), and on a host whose builders are ArkType-style the schema is a
221
- * FUNCTION. `@oh-my-pi/pi-coding-agent` rewrites an extension's `typebox`
222
- * import to its own `src/extensibility/legacy-typebox.ts`, which re-exports
223
- * `@oh-my-pi/omptype`'s builders; those return a callable whose prototype
224
- * carries `toJsonSchema`/`assert`. `inCaptureWindow` returns a plain rest
225
- * wrapper with neither, so the host falls off its ark branch, the wire schema
226
- * degrades to `undefined`, and every xd:// device renders `type Args =
227
- * unknown` and rejects every call with `root: schema must be an object or
228
- * boolean` (#3195).
229
- *
230
- * The predicate IS the host's own, copied from `@oh-my-pi/pi-ai@18.2.4`
231
- * `src/utils/schema/wire.ts:21-27` (`isArkSchema`) — the same test the host's
232
- * `applyToolProxy` (`@oh-my-pi/pi-coding-agent@18.2.4`
233
- * `src/extensibility/tool-proxy.ts:26`) uses to leave a callable schema
234
- * unbound for exactly this hazard ("`bind()` … drops the schema surface …
235
- * so a bound schema later stringifies to `undefined`"). Matching it means
236
- * pi-lens declines to wrap precisely the values the host reads as schemas,
237
- * and still wraps everything else.
238
- * `tests/clients/pi-host-callable-schema-contract.test.ts` asserts against
239
- * that upstream predicate (and against a fixture measured from a real
240
- * `@oh-my-pi/omptype@18.2.4` schema), not against this copy of it.
241
- *
242
- * Deliberately NOT an allow-list of handler keys (`execute`, `renderResult`,
243
- * `handler` — the measured set today): that is `isCaptureSeam`'s #1434 S1a
244
- * mistake one level down (defect shape 34, spelling enumerator). The host's
245
- * own `ToolDefinition` already declares `onSession`, `renderCall` and
246
- * `shellEnv`, and `registerCommand` takes `getArgumentCompletions`; the day
247
- * pi-lens adopts one of those, an allow-list drops its console capture
248
- * SILENTLY — the #1333 regression this seam exists to prevent — while this
249
- * predicate keeps wrapping it.
250
- */
251
- function isCallableSchema(value) {
252
- return (typeof value === "function" &&
253
- typeof value.toJsonSchema === "function" &&
254
- typeof value.assert === "function");
255
- }
256
- /**
257
- * Wrap every function value found in `value`, in place. Handles the two
258
- * shapes a `register*`/`on` call takes today: a function passed directly
259
- * (`on(event, handler)`, `registerMessageRenderer(type, fn)`), and a
260
- * function ONE level inside a plain options/definition object
261
- * (`options.handler`, `tool.execute`).
262
- *
263
- * Only the property walk screens for a callable schema (#3195): every
264
- * function pi-lens passes as a register argument DIRECTLY is a handler
265
- * (`on`, `registerMessageRenderer`), measured across the whole activation,
266
- * so a schema can only ever arrive as a property of a definition object.
267
- *
268
- * Deliberately NOT recursive past that one level (#1434 perf review): a tool
269
- * definition's `parameters`/`schema` is a large, deeply nested TypeBox object
270
- * that holds no functions, but walking its full tree on every `registerTool`
271
- * call — across every tool, on every extension activation, across the many
272
- * test files that re-activate the extension per case — measurably slowed
273
- * activation (a wiring test tripped its 5s budget under transform load; see
274
- * the commit body for the measured before/after). Checking only the
275
- * argument's own top-level keys is O(keys), independent of how deep an
276
- * unrelated nested value's own structure goes, and covers every shape
277
- * PI-LENS actually registers (`options.handler`, `tool.execute` — never two
278
- * levels deep). It does NOT cover every shape the host's `ExtensionAPI` type
279
- * permits: `registerProvider`'s `config.oauth.*` callbacks sit two levels
280
- * deep and `config.models[]` sits behind a skipped array. pi-lens never
281
- * calls `registerProvider`; extend the descent if that changes (same known-
282
- * gap convention as the `pi.events` note in AGENTS.md).
283
- *
284
- * Mutates the object in place rather than copying — a spread copy would drop
285
- * non-enumerable or prototype-carried members of a definition object (defect
286
- * shape 5), and these definitions are pi-lens's own, built just above the
287
- * register call.
288
- */
289
- function wrapFunctionsInPlace(value) {
290
- if (typeof value === "function") {
291
- return inCaptureWindow(value);
292
- }
293
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
294
- return value;
295
- }
296
- const obj = value;
297
- for (const key of Object.keys(obj)) {
298
- const propValue = obj[key];
299
- if (typeof propValue === "function" && !isCallableSchema(propValue)) {
300
- assignWrapped(obj, key, propValue);
301
- }
302
- }
303
- return value;
304
- }
305
- /**
306
- * Assign a wrapped function back onto `obj[key]`, degrading instead of
307
- * throwing or dropping the registration when the property resists (S2b).
308
- * ESM is always strict mode, so assigning into a non-writable data property
309
- * throws a `TypeError`; `Object.defineProperty` is tried next (it can
310
- * redefine a configurable-but-non-writable property); if both fail the
311
- * property is frozen solid, so the ORIGINAL unwrapped function is left in
312
- * place — the registration still succeeds, just without the console-capture
313
- * net for that one callback, which is strictly better than the tool/command
314
- * never registering at all.
315
- */
316
- function assignWrapped(obj, key, fn) {
317
- const wrapped = inCaptureWindow(fn);
318
- try {
319
- obj[key] = wrapped;
320
- return;
321
- }
322
- catch {
323
- // Non-writable data property — fall through to defineProperty.
324
- }
325
- try {
326
- Object.defineProperty(obj, key, {
327
- value: wrapped,
328
- writable: true,
329
- configurable: true,
330
- enumerable: true,
331
- });
332
- }
333
- catch {
334
- // Frozen solid: leave the original unwrapped function in place rather
335
- // than throwing (which would abort the whole register call) or silently
336
- // dropping it.
337
- }
338
- }
339
- /**
340
- * Wrap the host extension API so every pi-lens entry point runs in a capture
341
- * window.
342
- *
343
- * pi calls our event handlers and tool bodies from its own async context, so a
344
- * window opened during registration does not reach them. Wrapping every
345
- * `register*`/`on` seam (see `isCaptureSeam`) covers every current and future
346
- * handler from one place, instead of a hand-maintained list of call sites.
347
- * Everything else forwards untouched, except it is bound to `target` (S3a) so
348
- * a destructured reference (`const { getFlag } = pi`) keeps working, and
349
- * wrapper functions are memoized per-proxy in `wrapperCache` (S3b) so
350
- * `proxy.on === proxy.on` — code that compares handler identity, or a test
351
- * asserting a mock was called with a specific function reference across two
352
- * reads of the same property, sees a stable value.
353
- */
354
- export function withConsoleCaptureWindows(api) {
355
- const wrapperCache = new Map();
356
- const proxy = new Proxy(api, {
357
- get(target, prop) {
358
- // A non-configurable, non-writable OWN data property is a proxy
359
- // invariant: the get trap MUST return the exact value the target
360
- // holds, or the engine throws a TypeError on read. Degrade to the raw
361
- // value instead of tripping that invariant (S2a) — a frozen host API
362
- // loses the capture window for that member, but keeps working.
363
- const descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
364
- if (descriptor &&
365
- descriptor.writable === false &&
366
- descriptor.configurable === false) {
367
- return descriptor.value;
368
- }
369
- const cached = wrapperCache.get(prop);
370
- if (cached !== undefined)
371
- return cached;
372
- const value = Reflect.get(target, prop, target);
373
- if (typeof value !== "function")
374
- return value;
375
- const method = value;
376
- // A host that returns `this` for chaining would hand back the raw API,
377
- // so a chained `on(...).on(...)` would register an unwrapped handler.
378
- // Keep the proxy on the chain.
379
- const keepProxy = (result) => Object.is(result, target) ? proxy : result;
380
- // Pass-through members are cached too (S3a/S3b: `proxy.getFlag ===
381
- // proxy.getFlag`), but the cached wrapper re-reads `target[prop]` on
382
- // EVERY call rather than closing over `method` -- a plain
383
- // `method.bind(target)` pins the function reference captured at first
384
- // access, so a host (or a test simulating one) that reassigns its own
385
- // method after registration would silently keep calling the stale one.
386
- // Re-reading keeps the cached wrapper's identity stable while staying
387
- // live to whatever `target[prop]` currently is.
388
- const wrapper = isCaptureSeam(prop)
389
- ? (...args) => {
390
- const wrapped = args.map((arg) => wrapFunctionsInPlace(arg));
391
- return keepProxy(method.apply(target, wrapped));
392
- }
393
- : (...args) => {
394
- const current = Reflect.get(target, prop, target);
395
- return current.apply(target, args);
396
- };
397
- wrapperCache.set(prop, wrapper);
398
- return wrapper;
399
- },
400
- });
401
- return proxy;
402
- }
403
- function formatConsoleArgs(args) {
404
- return args
405
- .map((arg) => {
406
- if (typeof arg === "string")
407
- return arg;
408
- if (arg instanceof Error)
409
- return arg.stack ?? arg.message;
410
- try {
411
- return JSON.stringify(arg) ?? String(arg);
412
- }
413
- catch {
414
- return String(arg);
415
- }
416
- })
417
- .join(" ");
418
- }
419
- /**
420
- * Patch every console method on the extension entry path so a transitively
421
- * loaded dependency cannot write raw bytes into pi's frame — the pi-side
422
- * mirror of `mcp/server.ts`'s `console.log = console.error` guard, which
423
- * protects the JSON-RPC stdout channel for the same structural reason.
424
- *
425
- * The patch is a DISPATCHER, not a permanent reroute (#1434). It sends a write
426
- * to the extension log only while pi-lens owns execution; every other write
427
- * goes to the original console method. pi's own one-shot CLI commands print
428
- * through `console.log`, so an unconditional reroute silenced them: `pi list`
429
- * exited 0 with no output in any project whose cwd loaded the extension first.
430
- *
431
- * This is a NET, not the fix: pi-lens's own sites are migrated to real sinks
432
- * with real schemas. Idempotent, and inert under test mode (vitest owns the
433
- * console) and under `PI_LENS_CONSOLE_GUARD=0`.
434
- *
435
- * Returns true when the patch was applied by this call.
436
- */
437
- export function installConsoleGuard() {
438
- if (consoleGuardInstalled)
439
- return false;
440
- if (isTestMode())
441
- return false;
442
- if (process.env.PI_LENS_CONSOLE_GUARD === "0")
443
- return false;
444
- consoleGuardInstalled = true;
445
- // SAFETY: re-views `console` as a string-keyed record so the loop below can
446
- // read and replace methods by name. `ConsoleMethod` is the union of keys
447
- // that exist on `Console`, and each read is guarded by `typeof original ===
448
- // "function"` before use, so a host whose console lacks a method is skipped
449
- // rather than patched with undefined.
450
- const target = console;
451
- for (const method of CONSOLE_METHODS) {
452
- const original = target[method];
453
- if (typeof original !== "function")
454
- continue;
455
- const originalFn = original;
456
- originalConsoleMethods.set(method, originalFn);
457
- const replacement = (...args) => {
458
- if (!isConsoleCaptureActive()) {
459
- originalFn.apply(console, args);
460
- return;
461
- }
462
- logExtension({
463
- subsystem: "console",
464
- level: method === "warn" ? "warn" : method === "error" ? "error" : "debug",
465
- message: formatConsoleArgs(args),
466
- metadata: { method },
467
- });
468
- };
469
- installedConsoleMethods.set(method, replacement);
470
- target[method] = replacement;
471
- }
472
- return true;
473
- }
474
- /**
475
- * Restore the exact console methods captured at install time.
476
- *
477
- * A method someone else patched after us is left alone — restoring it would
478
- * clobber their replacement. Returns true when this call uninstalled.
479
- */
480
- export function uninstallConsoleGuard() {
481
- if (!consoleGuardInstalled)
482
- return false;
483
- consoleGuardInstalled = false;
484
- // SAFETY: same re-view as `installConsoleGuard`. Only keys this module
485
- // recorded in `originalConsoleMethods` at install time are written back,
486
- // and only when the current value is still the replacement this module
487
- // installed, so a method someone else patched afterwards is left alone.
488
- const target = console;
489
- for (const [method, original] of originalConsoleMethods) {
490
- if (target[method] === installedConsoleMethods.get(method)) {
491
- target[method] = original;
492
- }
493
- }
494
- originalConsoleMethods.clear();
495
- installedConsoleMethods.clear();
496
- return true;
497
- }
498
- /** Test-only: uninstall the guard and close every open capture window. */
499
- export function _resetConsoleGuardForTests() {
500
- uninstallConsoleGuard();
501
- consoleGuardInstalled = false;
502
- consoleCaptureStorage = undefined;
503
- moduleLoadWindowOpen = false;
504
- }
@@ -1,73 +0,0 @@
1
- /**
2
- * Host run-mode awareness (#1334 S2).
3
- *
4
- * pi tells every extension which mode it is running in — verified against the
5
- * pinned host types (`@earendil-works/pi-coding-agent/dist/core/extensions/
6
- * types.d.ts`):
7
- *
8
- * export type ExtensionMode = "tui" | "rpc" | "json" | "print"; // line 208
9
- * interface ExtensionContext { mode: ExtensionMode; hasUI: boolean; … }
10
- * // lines 212-215
11
- *
12
- * The host's own comment on `mode` is the contract this module encodes:
13
- * *"Use `"tui"` to guard terminal-only UI such as custom components."*
14
- *
15
- * pi-lens previously derived terminal ownership from nothing at all — it
16
- * mounted its widget and chattered through `ui.notify` in every mode, including
17
- * `print` and `json`, where the process is a one-shot producing machine- or
18
- * pipe-consumed output and there is no live TUI to render into.
19
- *
20
- * Two independent questions, deliberately NOT the same predicate:
21
- *
22
- * - *Is there a TUI to mount a custom component into?* Only `"tui"`. `rpc`
23
- * has `hasUI: true` (dialogs work over the protocol) but no terminal
24
- * component surface, so the widget must not mount there either.
25
- * - *Should proactive chatter reach the human?* No in `print` and `json` —
26
- * one-shot/machine output. Yes in `tui` and `rpc`.
27
- *
28
- * This is complementary to, and independent of, the #1338/#1333 console guard:
29
- * that establishes "never write raw to the terminal"; this decides whether the
30
- * HOST's own render path should be used at all in a given mode.
31
- *
32
- * Stateless by design: `mode` lives on the ctx pi hands to every event and
33
- * command handler, so each call site reads it from the ctx it already has —
34
- * no latched global to go stale across a session replacement.
35
- */
36
- const KNOWN_MODES = new Set(["tui", "rpc", "json", "print"]);
37
- /**
38
- * Feature-detected read of `ctx.mode`.
39
- *
40
- * Returns `"unknown"` for a host that predates the field, or for any value
41
- * outside the four documented modes (a future pi may add one; treating an
42
- * unrecognized mode as "unknown" keeps current behavior rather than guessing
43
- * a suppression that could hide output).
44
- */
45
- export function readExtensionMode(ctx) {
46
- try {
47
- const mode = ctx?.mode;
48
- if (typeof mode !== "string" || !KNOWN_MODES.has(mode))
49
- return "unknown";
50
- return mode;
51
- }
52
- catch {
53
- return "unknown";
54
- }
55
- }
56
- /**
57
- * Whether a terminal-only custom component (the pi-lens diagnostics widget) can
58
- * be mounted. `"unknown"` mounts — older hosts must behave exactly as before.
59
- */
60
- export function supportsTuiWidget(mode) {
61
- return mode === "tui" || mode === "unknown";
62
- }
63
- /**
64
- * Whether proactive `ui.notify` chatter should be suppressed (logged only).
65
- * True only for the two non-interactive one-shot modes.
66
- */
67
- export function suppressesUserNotify(mode) {
68
- return mode === "print" || mode === "json";
69
- }
70
- /** Short human-readable reason for a suppression, for the ndjson/debug log. */
71
- export function modeSuppressionNote(mode) {
72
- return `suppressed in "${mode}" mode (no interactive TUI)`;
73
- }
@@ -1,103 +0,0 @@
1
- import { escapeRegExp } from "./string-utils.js";
2
- function normalizeHintInput(value) {
3
- return value.replace(/\\/g, "/");
4
- }
5
- function hasHintToken(value, tokens) {
6
- const escaped = tokens.map((token) => escapeRegExp(token));
7
- const alternatives = escaped.join("|");
8
- // Path/word boundaries are deliberately explicit: a token must occupy a
9
- // segment (or a dot/dash/underscore-separated word), never an arbitrary
10
- // substring. The second expression preserves camelCase names such as
11
- // authStore and DatabaseClient without making `adb` match `db`.
12
- return (new RegExp(`(?:^|[/_.\\-\\s])(?:${alternatives})(?=[/_.\\-\\s]|$)`, "i").test(value) ||
13
- new RegExp(`(?:^|(?<=[a-z0-9]))(?:${tokens
14
- .flatMap((token) => [
15
- token[0].toUpperCase() + token.slice(1),
16
- ...(token === "openai" ? ["OpenAI"] : []),
17
- ...(token === "github" ? ["GitHub"] : []),
18
- ...(token === "gitlab" ? ["GitLab"] : []),
19
- ])
20
- .join("|")})(?=[A-Z]|[/_.\\-\\s]|$)`).test(value));
21
- }
22
- /**
23
- * Deterministic feature-kind hint derived from package/entity/file names.
24
- * Inspired by clawpatch's packageKind() heuristic.
25
- */
26
- export function inferFeatureKind(nameOrPath) {
27
- const normalized = normalizeHintInput(nameOrPath);
28
- if (hasHintToken(normalized, [
29
- "config",
30
- "store",
31
- "db",
32
- "database",
33
- "github",
34
- "openai",
35
- "sync",
36
- "service",
37
- ])) {
38
- return "service";
39
- }
40
- if (/(^|[/_.\-\s])(cli|command|bin)([/_.\-\s]|$)/i.test(normalized)) {
41
- return "cli-command";
42
- }
43
- return "library";
44
- }
45
- /**
46
- * Deterministic trust-boundary hints derived from package/entity/file names.
47
- * These are advisory metadata for context injection, not security findings.
48
- */
49
- export function inferTrustBoundaries(nameOrPath) {
50
- const normalized = normalizeHintInput(nameOrPath);
51
- const boundaries = new Set();
52
- if (hasHintToken(normalized, [
53
- "config",
54
- "store",
55
- "db",
56
- "database",
57
- "repo",
58
- "repository",
59
- "model",
60
- "migration",
61
- ])) {
62
- boundaries.add("filesystem");
63
- boundaries.add("database");
64
- }
65
- if (hasHintToken(normalized, [
66
- "github",
67
- "gitlab",
68
- "openai",
69
- "anthropic",
70
- "stripe",
71
- "slack",
72
- "sync",
73
- "webhook",
74
- "api",
75
- "client",
76
- ])) {
77
- boundaries.add("network");
78
- boundaries.add("external-api");
79
- boundaries.add("serialization");
80
- }
81
- if (/(^|[/_.\-\s])(cli|command|bin|exec|spawn|process|shell)([/_.\-\s]|$)/i.test(normalized)) {
82
- boundaries.add("user-input");
83
- boundaries.add("process-exec");
84
- }
85
- if (hasHintToken(normalized, [
86
- "auth",
87
- "login",
88
- "token",
89
- "session",
90
- "oauth",
91
- "jwt",
92
- ])) {
93
- boundaries.add("auth");
94
- boundaries.add("user-input");
95
- }
96
- return [...boundaries];
97
- }
98
- export function featureHintMetadata(nameOrPath) {
99
- return {
100
- featureKind: inferFeatureKind(nameOrPath),
101
- trustBoundaries: inferTrustBoundaries(nameOrPath),
102
- };
103
- }