@herbertgao/pi-extensions 2026.10.0 → 2026.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (769) hide show
  1. package/README.md +16 -12
  2. package/THIRD_PARTY_NOTICES.md +3 -3
  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/.opencode/plugins/index.js +4 -0
  10. package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail-frontmatter.cjs +43 -3
  11. package/node_modules/@dietrichgebert/ponytail/.opencode/plugins/ponytail.mjs +142 -59
  12. package/node_modules/@dietrichgebert/ponytail/.qoder/rules/ponytail.md +21 -21
  13. package/node_modules/@dietrichgebert/ponytail/.qoder-plugin/plugin.json +1 -1
  14. package/node_modules/@dietrichgebert/ponytail/AGENTS.md +21 -21
  15. package/node_modules/@dietrichgebert/ponytail/README.md +52 -242
  16. package/node_modules/@dietrichgebert/ponytail/hooks/claude-codex-hooks.json +3 -3
  17. package/node_modules/@dietrichgebert/ponytail/hooks/copilot-hooks.json +4 -4
  18. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-activate.js +70 -16
  19. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-config.js +8 -7
  20. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-instructions.js +30 -30
  21. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-map.js +103 -0
  22. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-mode-tracker.js +46 -23
  23. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-runtime.js +39 -7
  24. package/node_modules/@dietrichgebert/ponytail/hooks/ponytail-subagent.js +20 -3
  25. package/node_modules/@dietrichgebert/ponytail/hooks/qoder-hooks.json +3 -3
  26. package/node_modules/@dietrichgebert/ponytail/package.json +3 -3
  27. package/node_modules/@dietrichgebert/ponytail/pi-extension/index.js +47 -17
  28. package/node_modules/@dietrichgebert/ponytail/scripts/uninstall.js +21 -7
  29. package/node_modules/@dietrichgebert/ponytail/skills/plugin.json +5 -0
  30. package/node_modules/@dietrichgebert/ponytail/skills/ponytail/SKILL.md +33 -101
  31. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-audit/SKILL.md +89 -27
  32. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-debt/SKILL.md +13 -12
  33. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-gain/SKILL.md +21 -18
  34. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-help/SKILL.md +12 -13
  35. package/node_modules/@dietrichgebert/ponytail/skills/ponytail-review/SKILL.md +96 -52
  36. package/node_modules/@herbertgao/pi-agency/LICENSE +21 -0
  37. package/node_modules/@herbertgao/pi-agency/README.md +40 -0
  38. package/node_modules/@herbertgao/pi-agency/package.json +53 -0
  39. package/node_modules/@herbertgao/pi-agency/src/index.ts +441 -0
  40. package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +12 -12
  41. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +30 -6
  42. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/default-mode.ts +15 -9
  43. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +27 -9
  44. package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/codemode.ts +4 -1
  45. package/node_modules/@herbertgao/pi-cc-extensions/package.json +2 -2
  46. package/node_modules/@narumitw/pi-caffeinate/package.json +4 -4
  47. package/node_modules/@tifan/pi-mermaid-open/package.json +5 -1
  48. package/node_modules/@tifan/pi-mermaid-open/src/index.ts +26 -9
  49. package/node_modules/@tifan/pi-recap/package.json +1 -1
  50. package/node_modules/@tifan/pi-recap/src/index.ts +104 -20
  51. package/node_modules/@tifan/pi-recap/src/models.ts +46 -4
  52. package/node_modules/pi-antigravity/README.md +23 -2
  53. package/node_modules/pi-antigravity/package.json +5 -3
  54. package/node_modules/pi-antigravity/src/diagnostics/diagnostics.ts +3 -2
  55. package/node_modules/pi-antigravity/src/features/generate-image.ts +72 -0
  56. package/node_modules/pi-antigravity/src/features/google-search.ts +71 -0
  57. package/node_modules/pi-antigravity/src/image/image.ts +86 -47
  58. package/node_modules/pi-antigravity/src/image/native.ts +69 -0
  59. package/node_modules/pi-antigravity/src/index.ts +52 -137
  60. package/node_modules/pi-antigravity/src/search/search.ts +130 -31
  61. package/node_modules/pi-antigravity/src/stream/stream.ts +162 -113
  62. package/node_modules/pi-antigravity/src/types/enums.ts +1 -0
  63. package/node_modules/pi-antigravity/src/types/types.ts +1 -1
  64. package/node_modules/pi-antigravity/src/utils/security.ts +47 -1
  65. package/node_modules/pi-antigravity/src/utils/util.ts +38 -6
  66. package/node_modules/pi-lens/CHANGELOG.md +1064 -0
  67. package/node_modules/pi-lens/README.md +115 -25
  68. package/node_modules/pi-lens/config/dependency-cruiser-eager-allowlist.json +6 -2
  69. package/node_modules/pi-lens/dist/chunk-22AVIGXS.js +560 -0
  70. package/node_modules/pi-lens/dist/chunk-27BBHSZC.js +106 -0
  71. package/node_modules/pi-lens/dist/chunk-2BEMIWEW.js +51 -0
  72. package/node_modules/pi-lens/dist/chunk-2EECBNC5.js +89 -0
  73. package/node_modules/pi-lens/dist/chunk-34U7PLGE.js +23 -0
  74. package/node_modules/pi-lens/dist/chunk-3I5QFT3N.js +181 -0
  75. package/node_modules/pi-lens/dist/chunk-3MED75HT.js +37 -0
  76. package/node_modules/pi-lens/dist/chunk-47D2BO4S.js +87 -0
  77. package/node_modules/pi-lens/dist/chunk-4RERDEXR.js +348 -0
  78. package/node_modules/pi-lens/dist/chunk-4W2PLC4J.js +27 -0
  79. package/node_modules/pi-lens/dist/chunk-52H5B5TC.js +202 -0
  80. package/node_modules/pi-lens/dist/chunk-54B42YRX.js +27 -0
  81. package/node_modules/pi-lens/dist/chunk-5RXBNSW2.js +266 -0
  82. package/node_modules/pi-lens/dist/chunk-5THXD6X5.js +201 -0
  83. package/node_modules/pi-lens/dist/chunk-5W3R6LFT.js +24 -0
  84. package/node_modules/pi-lens/dist/chunk-5ZEJHV35.js +341 -0
  85. package/node_modules/pi-lens/dist/chunk-6P62QVEA.js +118 -0
  86. package/node_modules/pi-lens/dist/chunk-6QIUX4EP.js +459 -0
  87. package/node_modules/pi-lens/dist/chunk-6VCD4VKZ.js +78 -0
  88. package/node_modules/pi-lens/dist/chunk-7F72PXY2.js +326 -0
  89. package/node_modules/pi-lens/dist/chunk-7FBF7NPR.js +998 -0
  90. package/node_modules/pi-lens/dist/chunk-7U2IDNXN.js +37 -0
  91. package/node_modules/pi-lens/dist/chunk-ABBOA7UD.js +157 -0
  92. package/node_modules/pi-lens/dist/chunk-AHDW3GPE.js +50 -0
  93. package/node_modules/pi-lens/dist/chunk-AJ3QXTRQ.js +756 -0
  94. package/node_modules/pi-lens/dist/chunk-AJVLWNFN.js +1610 -0
  95. package/node_modules/pi-lens/dist/chunk-AJXODZY6.js +112 -0
  96. package/node_modules/pi-lens/dist/chunk-ARFCXG7S.js +84 -0
  97. package/node_modules/pi-lens/dist/chunk-AS44CFQ4.js +708 -0
  98. package/node_modules/pi-lens/dist/chunk-AWE5TMPO.js +38 -0
  99. package/node_modules/pi-lens/dist/chunk-B3I2UUT4.js +4692 -0
  100. package/node_modules/pi-lens/dist/chunk-BRJKOBZP.js +331 -0
  101. package/node_modules/pi-lens/dist/chunk-BW5KFIQC.js +59 -0
  102. package/node_modules/pi-lens/dist/chunk-C2AUYXQH.js +149 -0
  103. package/node_modules/pi-lens/dist/chunk-CGGAIP7J.js +29 -0
  104. package/node_modules/pi-lens/dist/chunk-D6QS3U6M.js +30 -0
  105. package/node_modules/pi-lens/dist/chunk-DFVMIKMQ.js +349 -0
  106. package/node_modules/pi-lens/dist/chunk-DIULIWKU.js +169 -0
  107. package/node_modules/pi-lens/dist/chunk-DQ2NZ7C4.js +2317 -0
  108. package/node_modules/pi-lens/dist/chunk-E2WFBRHM.js +213 -0
  109. package/node_modules/pi-lens/dist/chunk-E4MAEDPM.js +50 -0
  110. package/node_modules/pi-lens/dist/chunk-EOKRQ3SA.js +30 -0
  111. package/node_modules/pi-lens/dist/chunk-F3AU2TMM.js +2626 -0
  112. package/node_modules/pi-lens/dist/chunk-F3P7VQ7H.js +170 -0
  113. package/node_modules/pi-lens/dist/chunk-FC4RP4I2.js +12 -0
  114. package/node_modules/pi-lens/dist/chunk-FJNKANOS.js +32 -0
  115. package/node_modules/pi-lens/dist/chunk-GUOGVTCQ.js +146 -0
  116. package/node_modules/pi-lens/dist/chunk-GVXA6CCE.js +18 -0
  117. package/node_modules/pi-lens/dist/chunk-HHYAELLJ.js +2334 -0
  118. package/node_modules/pi-lens/dist/chunk-HMFXILPV.js +83 -0
  119. package/node_modules/pi-lens/dist/chunk-HVUZXSWK.js +421 -0
  120. package/node_modules/pi-lens/dist/chunk-HWBZIGMJ.js +62 -0
  121. package/node_modules/pi-lens/dist/chunk-I3R7GKDR.js +17 -0
  122. package/node_modules/pi-lens/dist/chunk-I7SPGOWI.js +55 -0
  123. package/node_modules/pi-lens/dist/chunk-IIXOAGHR.js +38 -0
  124. package/node_modules/pi-lens/dist/chunk-IVP5KAB7.js +2250 -0
  125. package/node_modules/pi-lens/dist/chunk-IXEBJSUE.js +22 -0
  126. package/node_modules/pi-lens/dist/chunk-JOLITGCC.js +27 -0
  127. package/node_modules/pi-lens/dist/chunk-K6VYLB2U.js +145 -0
  128. package/node_modules/pi-lens/dist/chunk-LJDODBBZ.js +78 -0
  129. package/node_modules/pi-lens/dist/chunk-LNAKEO63.js +78 -0
  130. package/node_modules/pi-lens/dist/chunk-LSMJ6KBE.js +4139 -0
  131. package/node_modules/pi-lens/dist/chunk-LW6XKDZQ.js +5565 -0
  132. package/node_modules/pi-lens/dist/chunk-N3YQJI6O.js +899 -0
  133. package/node_modules/pi-lens/dist/chunk-NABLC7W3.js +148 -0
  134. package/node_modules/pi-lens/dist/chunk-NKOUFPQF.js +659 -0
  135. package/node_modules/pi-lens/dist/chunk-NL5GLMFI.js +211 -0
  136. package/node_modules/pi-lens/dist/chunk-NMABWBZN.js +327 -0
  137. package/node_modules/pi-lens/dist/chunk-NTHH2J74.js +27 -0
  138. package/node_modules/pi-lens/dist/chunk-NTUJEGDZ.js +59 -0
  139. package/node_modules/pi-lens/dist/chunk-NXL4FFQQ.js +47 -0
  140. package/node_modules/pi-lens/dist/chunk-NXPS2L6U.js +466 -0
  141. package/node_modules/pi-lens/dist/chunk-O5WILGMI.js +42 -0
  142. package/node_modules/pi-lens/dist/chunk-O6TQT6RI.js +48 -0
  143. package/node_modules/pi-lens/dist/chunk-OAXNDZJ7.js +323 -0
  144. package/node_modules/pi-lens/dist/chunk-ODEEOXPH.js +44 -0
  145. package/node_modules/pi-lens/dist/chunk-OQGFCZJ4.js +4533 -0
  146. package/node_modules/pi-lens/dist/chunk-ORTMY4Q4.js +282 -0
  147. package/node_modules/pi-lens/dist/chunk-OS32RNR2.js +442 -0
  148. package/node_modules/pi-lens/dist/chunk-PAK6IDME.js +189 -0
  149. package/node_modules/pi-lens/dist/chunk-PWFHBTSF.js +406 -0
  150. package/node_modules/pi-lens/dist/chunk-Q5U6FMDI.js +2352 -0
  151. package/node_modules/pi-lens/dist/chunk-QOZXJ4NA.js +3364 -0
  152. package/node_modules/pi-lens/dist/chunk-QYF5S6P6.js +45 -0
  153. package/node_modules/pi-lens/dist/chunk-RIISMHKN.js +36 -0
  154. package/node_modules/pi-lens/dist/chunk-RPD4ZSB7.js +25 -0
  155. package/node_modules/pi-lens/dist/chunk-RPD5K5NC.js +79 -0
  156. package/node_modules/pi-lens/dist/chunk-RUOG5D2C.js +262 -0
  157. package/node_modules/pi-lens/dist/chunk-T4ERT73Y.js +599 -0
  158. package/node_modules/pi-lens/dist/chunk-T6D4Q4AQ.js +54 -0
  159. package/node_modules/pi-lens/dist/chunk-TGPXLY2J.js +391 -0
  160. package/node_modules/pi-lens/dist/chunk-TLGFBM3F.js +12116 -0
  161. package/node_modules/pi-lens/dist/chunk-TO6WL3GM.js +88 -0
  162. package/node_modules/pi-lens/dist/chunk-TT22N74J.js +517 -0
  163. package/node_modules/pi-lens/dist/chunk-TVN5N6GY.js +21216 -0
  164. package/node_modules/pi-lens/dist/chunk-U3VGR4VU.js +308 -0
  165. package/node_modules/pi-lens/dist/chunk-UK3CMEAL.js +1250 -0
  166. package/node_modules/pi-lens/dist/chunk-UOPVJQ4N.js +103 -0
  167. package/node_modules/pi-lens/dist/chunk-UXVNL3D7.js +23 -0
  168. package/node_modules/pi-lens/dist/chunk-UY752QSN.js +45 -0
  169. package/node_modules/pi-lens/dist/chunk-V5PXFSZK.js +188 -0
  170. package/node_modules/pi-lens/dist/chunk-V7R425XG.js +398 -0
  171. package/node_modules/pi-lens/dist/chunk-VCSRSYLF.js +81 -0
  172. package/node_modules/pi-lens/dist/chunk-VD4JQCQC.js +162 -0
  173. package/node_modules/pi-lens/dist/chunk-VDBPVIKD.js +62 -0
  174. package/node_modules/pi-lens/dist/chunk-VHQLPIRJ.js +114 -0
  175. package/node_modules/pi-lens/dist/chunk-VN2AXLEX.js +5414 -0
  176. package/node_modules/pi-lens/dist/chunk-VNMT7C64.js +478 -0
  177. package/node_modules/pi-lens/dist/chunk-WONERJTP.js +309 -0
  178. package/node_modules/pi-lens/dist/chunk-XECLWQZN.js +85 -0
  179. package/node_modules/pi-lens/dist/chunk-XIMYZ3JA.js +27 -0
  180. package/node_modules/pi-lens/dist/chunk-XK4CIILI.js +144 -0
  181. package/node_modules/pi-lens/dist/chunk-Y4T27COV.js +562 -0
  182. package/node_modules/pi-lens/dist/chunk-YGVYKNSN.js +1860 -0
  183. package/node_modules/pi-lens/dist/chunk-YLF3PPT5.js +308 -0
  184. package/node_modules/pi-lens/dist/chunk-YSNFMJKN.js +14 -0
  185. package/node_modules/pi-lens/dist/chunk-Z3CCVDUB.js +76 -0
  186. package/node_modules/pi-lens/dist/chunk-Z54ZSOBZ.js +61 -0
  187. package/node_modules/pi-lens/dist/chunk-ZAWW3AF6.js +97 -0
  188. package/node_modules/pi-lens/dist/chunk-ZMOL6RQC.js +167 -0
  189. package/node_modules/pi-lens/dist/index.js +16456 -8335
  190. package/node_modules/pi-lens/dist/mcp/analyze-cli.js +186 -232
  191. package/node_modules/pi-lens/dist/mcp/cli.js +137 -98
  192. package/node_modules/pi-lens/dist/mcp/server.js +22589 -1573
  193. package/node_modules/pi-lens/dist/mcp/worker.js +97 -38
  194. package/node_modules/pi-lens/dist/probes/installer.js +135 -0
  195. package/node_modules/pi-lens/dist/workers/project-snapshot-persist-worker.js +22 -0
  196. package/node_modules/pi-lens/dist/workers/review-graph-persist-worker.js +15 -0
  197. package/node_modules/pi-lens/docs/agent-guide.md +13 -4
  198. package/node_modules/pi-lens/docs/agent-tools.md +42 -0
  199. package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +3 -2
  200. package/node_modules/pi-lens/docs/configuration.md +20 -1
  201. package/node_modules/pi-lens/docs/environment-variables.md +52 -2
  202. package/node_modules/pi-lens/docs/features.md +8 -4
  203. package/node_modules/pi-lens/docs/globalconfig.md +1 -0
  204. package/node_modules/pi-lens/docs/io-bridge-v2-migration.md +94 -0
  205. package/node_modules/pi-lens/docs/lsp-capability-matrix.md +36 -4
  206. package/node_modules/pi-lens/docs/lsp-idle-eviction.md +124 -0
  207. package/node_modules/pi-lens/docs/mcp.md +21 -5
  208. package/node_modules/pi-lens/docs/merge-queue-rollout.md +77 -0
  209. package/node_modules/pi-lens/docs/pi-lens-fixer.md +156 -88
  210. package/node_modules/pi-lens/docs/pi-lens-investigator.md +74 -26
  211. package/node_modules/pi-lens/docs/pi-lens-merge-policy.md +694 -0
  212. package/node_modules/pi-lens/docs/pi-lens-monitor.md +73 -7
  213. package/node_modules/pi-lens/docs/pi-lens-retro.md +6 -4
  214. package/node_modules/pi-lens/docs/pi-lens-reviewer.md +188 -48
  215. package/node_modules/pi-lens/docs/pi-lens-subagent.md +246 -45
  216. package/node_modules/pi-lens/docs/pi-lens-warden.md +18 -7
  217. package/node_modules/pi-lens/docs/public-api-stability.md +55 -0
  218. package/node_modules/pi-lens/docs/release-qa-baseline.md +84 -17
  219. package/node_modules/pi-lens/docs/rfcs/3654-unified-io-bridge-v2.md +316 -0
  220. package/node_modules/pi-lens/docs/servercapabilities.md +53 -49
  221. package/node_modules/pi-lens/docs/settings.md +1 -0
  222. package/node_modules/pi-lens/docs/usage.md +5 -1
  223. package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm +0 -0
  224. package/node_modules/pi-lens/grammars/tree-sitter-bash.wasm.json +3 -3
  225. package/node_modules/pi-lens/package.json +18 -6
  226. package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/advisory-registry-subset-test.yml +41 -0
  227. package/node_modules/pi-lens/rules/ast-grep-rules/rules/advisory-registry-subset.yml +50 -0
  228. package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +1275 -62
  229. package/node_modules/pi-lens/scripts/download-grammars.js +5 -0
  230. package/node_modules/pi-lens/scripts/grammars.lock.json +6 -1
  231. package/node_modules/pi-lens/scripts/install-selftest.mjs +33 -34
  232. package/node_modules/pi-lens/scripts/lib/host-provided-deps.mjs +13 -4
  233. package/node_modules/pi-lens/scripts/lib/web-tree-sitter-dir.mjs +18 -0
  234. package/node_modules/pi-typesafe/README.md +1 -1
  235. package/node_modules/pi-typesafe/dist/backends.d.ts +15 -5
  236. package/node_modules/pi-typesafe/dist/backends.js +18 -0
  237. package/node_modules/pi-typesafe/dist/client.d.ts +4 -3
  238. package/node_modules/pi-typesafe/dist/client.js +22 -7
  239. package/node_modules/pi-typesafe/dist/index.d.ts +2 -2
  240. package/node_modules/pi-typesafe/dist/index.js +1 -1
  241. package/node_modules/pi-typesafe/dist/usage.d.ts +14 -4
  242. package/node_modules/pi-typesafe/dist/usage.js +147 -42
  243. package/node_modules/pi-typesafe/package.json +1 -1
  244. package/node_modules/pi-web-access/CHANGELOG.md +48 -0
  245. package/node_modules/pi-web-access/README.md +57 -11
  246. package/node_modules/pi-web-access/brave-rate-limit.ts +8 -2
  247. package/node_modules/pi-web-access/curator-page.ts +5 -1
  248. package/node_modules/pi-web-access/curator-server.ts +2 -0
  249. package/node_modules/pi-web-access/declared-web-links.ts +2 -2
  250. package/node_modules/pi-web-access/degoog.ts +323 -0
  251. package/node_modules/pi-web-access/dist/index.js +3483 -2745
  252. package/node_modules/pi-web-access/dist/mcp-cli.js +27443 -0
  253. package/node_modules/pi-web-access/exa.ts +5 -1
  254. package/node_modules/pi-web-access/extract.ts +41 -3
  255. package/node_modules/pi-web-access/firecrawl.ts +35 -4
  256. package/node_modules/pi-web-access/gemini-search.ts +34 -11
  257. package/node_modules/pi-web-access/gemini-web.ts +14 -9
  258. package/node_modules/pi-web-access/index.ts +153 -1202
  259. package/node_modules/pi-web-access/keenable.ts +221 -0
  260. package/node_modules/pi-web-access/mcp-cli.ts +40 -0
  261. package/node_modules/pi-web-access/mcp-server.ts +81 -0
  262. package/node_modules/pi-web-access/mcp-tool-definitions.ts +117 -0
  263. package/node_modules/pi-web-access/openai-search.ts +34 -1
  264. package/node_modules/pi-web-access/package.json +23 -5
  265. package/node_modules/pi-web-access/perplexity.ts +64 -56
  266. package/node_modules/pi-web-access/tool-arguments.ts +20 -0
  267. package/node_modules/pi-web-access/video-extract.ts +1 -1
  268. package/node_modules/pi-web-access/web-tool-contract.ts +86 -0
  269. package/node_modules/pi-web-access/web-tool-core.ts +1502 -0
  270. package/node_modules/pi-web-access/youtube-extract.ts +2 -5
  271. package/package.json +17 -12
  272. package/node_modules/@dietrichgebert/ponytail/README.es.md +0 -329
  273. package/node_modules/@dietrichgebert/ponytail/README.ko.md +0 -346
  274. package/node_modules/@dietrichgebert/ponytail/assets/benchmark-3model.svg +0 -21
  275. package/node_modules/@dietrichgebert/ponytail/assets/benchmark-agentic.svg +0 -62
  276. package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.png +0 -0
  277. package/node_modules/@dietrichgebert/ponytail/assets/logo-dark.svg +0 -115
  278. package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt-dark.svg +0 -27
  279. package/node_modules/@dietrichgebert/ponytail/assets/logo-greenpt.svg +0 -27
  280. package/node_modules/@dietrichgebert/ponytail/assets/logo.png +0 -0
  281. package/node_modules/@dietrichgebert/ponytail/assets/retriever-icon.png +0 -0
  282. package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-dark.svg +0 -4
  283. package/node_modules/@dietrichgebert/ponytail/assets/retriever-logo-light.svg +0 -4
  284. package/node_modules/@dietrichgebert/ponytail/assets/social-preview.png +0 -0
  285. package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-es.png +0 -0
  286. package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner-ko.png +0 -0
  287. package/node_modules/@dietrichgebert/ponytail/assets/waitlist-banner.png +0 -0
  288. package/node_modules/pi-lens/dist/clients/actionable-warnings-logger.js +0 -35
  289. package/node_modules/pi-lens/dist/clients/actionable-warnings.js +0 -1610
  290. package/node_modules/pi-lens/dist/clients/advisory-provenance.js +0 -593
  291. package/node_modules/pi-lens/dist/clients/agent-behavior-client.js +0 -147
  292. package/node_modules/pi-lens/dist/clients/agent-nudge.js +0 -325
  293. package/node_modules/pi-lens/dist/clients/analysed-root.js +0 -1
  294. package/node_modules/pi-lens/dist/clients/ast-grep-client.js +0 -731
  295. package/node_modules/pi-lens/dist/clients/ast-grep-rule-manager.js +0 -146
  296. package/node_modules/pi-lens/dist/clients/ast-grep-tool-logger.js +0 -118
  297. package/node_modules/pi-lens/dist/clients/ast-grep-types.js +0 -10
  298. package/node_modules/pi-lens/dist/clients/ast-grep-yaml-synth.js +0 -154
  299. package/node_modules/pi-lens/dist/clients/atomic-write-staging.js +0 -75
  300. package/node_modules/pi-lens/dist/clients/atomic-write.js +0 -189
  301. package/node_modules/pi-lens/dist/clients/availability-probe-flight.js +0 -12
  302. package/node_modules/pi-lens/dist/clients/bash-file-access.js +0 -1056
  303. package/node_modules/pi-lens/dist/clients/biome-client.js +0 -357
  304. package/node_modules/pi-lens/dist/clients/blocker-freshness.js +0 -837
  305. package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +0 -129
  306. package/node_modules/pi-lens/dist/clients/bootstrap.js +0 -569
  307. package/node_modules/pi-lens/dist/clients/bounded-cache.js +0 -190
  308. package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +0 -202
  309. package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +0 -295
  310. package/node_modules/pi-lens/dist/clients/build-identity.js +0 -95
  311. package/node_modules/pi-lens/dist/clients/bundled-resource-health.js +0 -113
  312. package/node_modules/pi-lens/dist/clients/bus-events-logger.js +0 -105
  313. package/node_modules/pi-lens/dist/clients/bus-publish.js +0 -171
  314. package/node_modules/pi-lens/dist/clients/cache/rule-cache.js +0 -190
  315. package/node_modules/pi-lens/dist/clients/cache-manager.js +0 -524
  316. package/node_modules/pi-lens/dist/clients/cache-observability.js +0 -1313
  317. package/node_modules/pi-lens/dist/clients/call-graph.js +0 -852
  318. package/node_modules/pi-lens/dist/clients/cargo-manifest.js +0 -422
  319. package/node_modules/pi-lens/dist/clients/cascade-budget.js +0 -196
  320. package/node_modules/pi-lens/dist/clients/cascade-format.js +0 -315
  321. package/node_modules/pi-lens/dist/clients/cascade-logger.js +0 -31
  322. package/node_modules/pi-lens/dist/clients/cascade-types.js +0 -9
  323. package/node_modules/pi-lens/dist/clients/child-unref.js +0 -124
  324. package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +0 -286
  325. package/node_modules/pi-lens/dist/clients/codebase-model.js +0 -173
  326. package/node_modules/pi-lens/dist/clients/collateral-test-role.js +0 -40
  327. package/node_modules/pi-lens/dist/clients/complexity-client.js +0 -462
  328. package/node_modules/pi-lens/dist/clients/config-core/deny.js +0 -221
  329. package/node_modules/pi-lens/dist/clients/config-core/index.js +0 -50
  330. package/node_modules/pi-lens/dist/clients/config-core/merge.js +0 -357
  331. package/node_modules/pi-lens/dist/clients/config-core/normalize.js +0 -340
  332. package/node_modules/pi-lens/dist/clients/config-core/process-spec.js +0 -248
  333. package/node_modules/pi-lens/dist/clients/config-core/provenance.js +0 -164
  334. package/node_modules/pi-lens/dist/clients/config-core/records.js +0 -218
  335. package/node_modules/pi-lens/dist/clients/config-core/resolve.js +0 -125
  336. package/node_modules/pi-lens/dist/clients/config-core/safe-object.js +0 -78
  337. package/node_modules/pi-lens/dist/clients/config-core/schema.js +0 -165
  338. package/node_modules/pi-lens/dist/clients/config-diagnostic-codes.js +0 -285
  339. package/node_modules/pi-lens/dist/clients/config-locations.js +0 -388
  340. package/node_modules/pi-lens/dist/clients/config-resolve.js +0 -798
  341. package/node_modules/pi-lens/dist/clients/config-schema.js +0 -251
  342. package/node_modules/pi-lens/dist/clients/config-warn.js +0 -407
  343. package/node_modules/pi-lens/dist/clients/console-guard-install.js +0 -26
  344. package/node_modules/pi-lens/dist/clients/cooperative-budget.js +0 -42
  345. package/node_modules/pi-lens/dist/clients/dead-code-client.js +0 -510
  346. package/node_modules/pi-lens/dist/clients/dead-code-logger.js +0 -30
  347. package/node_modules/pi-lens/dist/clients/deadline-utils.js +0 -280
  348. package/node_modules/pi-lens/dist/clients/debug-handles.js +0 -211
  349. package/node_modules/pi-lens/dist/clients/debug-heap.js +0 -174
  350. package/node_modules/pi-lens/dist/clients/deferred-lsp-work.js +0 -106
  351. package/node_modules/pi-lens/dist/clients/degradation-ledger.js +0 -426
  352. package/node_modules/pi-lens/dist/clients/demoted-finding-render.js +0 -169
  353. package/node_modules/pi-lens/dist/clients/dependency-checker.js +0 -885
  354. package/node_modules/pi-lens/dist/clients/deps/ast-grep-napi.js +0 -22
  355. package/node_modules/pi-lens/dist/clients/deps/js-yaml.js +0 -9
  356. package/node_modules/pi-lens/dist/clients/deps/minimatch.js +0 -4
  357. package/node_modules/pi-lens/dist/clients/deps/pi-tui.js +0 -14
  358. package/node_modules/pi-lens/dist/clients/deps/typebox.js +0 -14
  359. package/node_modules/pi-lens/dist/clients/deps/vscode-jsonrpc.js +0 -1
  360. package/node_modules/pi-lens/dist/clients/deps/web-tree-sitter.js +0 -24
  361. package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +0 -630
  362. package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +0 -305
  363. package/node_modules/pi-lens/dist/clients/diagnostic-logger.js +0 -73
  364. package/node_modules/pi-lens/dist/clients/diagnostic-tracker.js +0 -105
  365. package/node_modules/pi-lens/dist/clients/diagnostics-publish.js +0 -230
  366. package/node_modules/pi-lens/dist/clients/dispatch/ast-grep-catalog.js +0 -65
  367. package/node_modules/pi-lens/dist/clients/dispatch/auxiliary-lsp.js +0 -343
  368. package/node_modules/pi-lens/dist/clients/dispatch/collect-later-tier.js +0 -35
  369. package/node_modules/pi-lens/dist/clients/dispatch/diagnostic-taxonomy.js +0 -66
  370. package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +0 -1269
  371. package/node_modules/pi-lens/dist/clients/dispatch/fact-provider-types.js +0 -1
  372. package/node_modules/pi-lens/dist/clients/dispatch/fact-rule-runner.js +0 -17
  373. package/node_modules/pi-lens/dist/clients/dispatch/fact-runner.js +0 -30
  374. package/node_modules/pi-lens/dist/clients/dispatch/fact-scheduler.js +0 -68
  375. package/node_modules/pi-lens/dist/clients/dispatch/fact-store.js +0 -377
  376. package/node_modules/pi-lens/dist/clients/dispatch/facts/comment-facts.js +0 -22
  377. package/node_modules/pi-lens/dist/clients/dispatch/facts/file-content.js +0 -19
  378. package/node_modules/pi-lens/dist/clients/dispatch/facts/function-facts.js +0 -348
  379. package/node_modules/pi-lens/dist/clients/dispatch/facts/import-facts.js +0 -204
  380. package/node_modules/pi-lens/dist/clients/dispatch/facts/tree-sitter-facts.js +0 -34
  381. package/node_modules/pi-lens/dist/clients/dispatch/facts/try-catch-facts.js +0 -119
  382. package/node_modules/pi-lens/dist/clients/dispatch/finding-policy.js +0 -339
  383. package/node_modules/pi-lens/dist/clients/dispatch/indent-detect.js +0 -417
  384. package/node_modules/pi-lens/dist/clients/dispatch/inline-suppressions.js +0 -89
  385. package/node_modules/pi-lens/dist/clients/dispatch/integration.js +0 -2377
  386. package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +0 -11
  387. package/node_modules/pi-lens/dist/clients/dispatch/pending-runner-findings.js +0 -87
  388. package/node_modules/pi-lens/dist/clients/dispatch/plan.js +0 -278
  389. package/node_modules/pi-lens/dist/clients/dispatch/priorities.js +0 -20
  390. package/node_modules/pi-lens/dist/clients/dispatch/rule-id-normalize.js +0 -50
  391. package/node_modules/pi-lens/dist/clients/dispatch/rule-ignores.js +0 -69
  392. package/node_modules/pi-lens/dist/clients/dispatch/rule-policy.js +0 -135
  393. package/node_modules/pi-lens/dist/clients/dispatch/rules/async-noise.js +0 -40
  394. package/node_modules/pi-lens/dist/clients/dispatch/rules/async-unnecessary-wrapper.js +0 -27
  395. package/node_modules/pi-lens/dist/clients/dispatch/rules/cors-wildcard.js +0 -54
  396. package/node_modules/pi-lens/dist/clients/dispatch/rules/error-obscuring.js +0 -32
  397. package/node_modules/pi-lens/dist/clients/dispatch/rules/error-swallowing.js +0 -31
  398. package/node_modules/pi-lens/dist/clients/dispatch/rules/framework-call-noise.js +0 -67
  399. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-complexity.js +0 -72
  400. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-fan-out.js +0 -74
  401. package/node_modules/pi-lens/dist/clients/dispatch/rules/high-import-coupling.js +0 -37
  402. package/node_modules/pi-lens/dist/clients/dispatch/rules/missing-error-propagation.js +0 -62
  403. package/node_modules/pi-lens/dist/clients/dispatch/rules/no-commented-credentials.js +0 -52
  404. package/node_modules/pi-lens/dist/clients/dispatch/rules/pass-through-wrappers.js +0 -42
  405. package/node_modules/pi-lens/dist/clients/dispatch/rules/placeholder-comments.js +0 -40
  406. package/node_modules/pi-lens/dist/clients/dispatch/rules/unsafe-boundary.js +0 -126
  407. package/node_modules/pi-lens/dist/clients/dispatch/runner-context.js +0 -52
  408. package/node_modules/pi-lens/dist/clients/dispatch/runners/actionlint.js +0 -111
  409. package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +0 -1196
  410. package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +0 -296
  411. package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +0 -219
  412. package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +0 -82
  413. package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +0 -416
  414. package/node_modules/pi-lens/dist/clients/dispatch/runners/dart-analyze.js +0 -183
  415. package/node_modules/pi-lens/dist/clients/dispatch/runners/detekt.js +0 -176
  416. package/node_modules/pi-lens/dist/clients/dispatch/runners/dotnet-build.js +0 -164
  417. package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +0 -195
  418. package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +0 -137
  419. package/node_modules/pi-lens/dist/clients/dispatch/runners/fact-rules.js +0 -29
  420. package/node_modules/pi-lens/dist/clients/dispatch/runners/fish-indent.js +0 -69
  421. package/node_modules/pi-lens/dist/clients/dispatch/runners/gleam-check.js +0 -167
  422. package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +0 -104
  423. package/node_modules/pi-lens/dist/clients/dispatch/runners/golangci-lint.js +0 -135
  424. package/node_modules/pi-lens/dist/clients/dispatch/runners/hadolint.js +0 -91
  425. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-lint.js +0 -171
  426. package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +0 -940
  427. package/node_modules/pi-lens/dist/clients/dispatch/runners/htmlhint.js +0 -117
  428. package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +0 -108
  429. package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +0 -99
  430. package/node_modules/pi-lens/dist/clients/dispatch/runners/ktlint.js +0 -110
  431. package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +0 -379
  432. package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +0 -167
  433. package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +0 -102
  434. package/node_modules/pi-lens/dist/clients/dispatch/runners/oxlint.js +0 -414
  435. package/node_modules/pi-lens/dist/clients/dispatch/runners/php-lint.js +0 -85
  436. package/node_modules/pi-lens/dist/clients/dispatch/runners/phpstan.js +0 -120
  437. package/node_modules/pi-lens/dist/clients/dispatch/runners/prisma-validate.js +0 -62
  438. package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +0 -445
  439. package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +0 -169
  440. package/node_modules/pi-lens/dist/clients/dispatch/runners/rubocop.js +0 -99
  441. package/node_modules/pi-lens/dist/clients/dispatch/runners/ruff.js +0 -88
  442. package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +0 -256
  443. package/node_modules/pi-lens/dist/clients/dispatch/runners/shellcheck.js +0 -173
  444. package/node_modules/pi-lens/dist/clients/dispatch/runners/shfmt.js +0 -102
  445. package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +0 -128
  446. package/node_modules/pi-lens/dist/clients/dispatch/runners/spotbugs.js +0 -259
  447. package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +0 -183
  448. package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +0 -166
  449. package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +0 -163
  450. package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +0 -174
  451. package/node_modules/pi-lens/dist/clients/dispatch/runners/terragrunt.js +0 -168
  452. package/node_modules/pi-lens/dist/clients/dispatch/runners/tflint.js +0 -125
  453. package/node_modules/pi-lens/dist/clients/dispatch/runners/tree-sitter.js +0 -643
  454. package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +0 -253
  455. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +0 -496
  456. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +0 -90
  457. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/diagnostic-parsers.js +0 -95
  458. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +0 -274
  459. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +0 -1701
  460. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +0 -101
  461. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +0 -235
  462. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +0 -169
  463. package/node_modules/pi-lens/dist/clients/dispatch/runners/utils.js +0 -15
  464. package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +0 -128
  465. package/node_modules/pi-lens/dist/clients/dispatch/runners/yaml-rule-parser.js +0 -242
  466. package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +0 -95
  467. package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +0 -79
  468. package/node_modules/pi-lens/dist/clients/dispatch/suppress-writer.js +0 -79
  469. package/node_modules/pi-lens/dist/clients/dispatch/tool-profile.js +0 -30
  470. package/node_modules/pi-lens/dist/clients/dispatch/types.js +0 -21
  471. package/node_modules/pi-lens/dist/clients/dispatch/utils/format-utils.js +0 -45
  472. package/node_modules/pi-lens/dist/clients/dispatch/utils/lsp-diagnostics.js +0 -35
  473. package/node_modules/pi-lens/dist/clients/disposition-logger.js +0 -32
  474. package/node_modules/pi-lens/dist/clients/disposition-publish.js +0 -124
  475. package/node_modules/pi-lens/dist/clients/durable-store.js +0 -97
  476. package/node_modules/pi-lens/dist/clients/effective-config.js +0 -415
  477. package/node_modules/pi-lens/dist/clients/env-utils.js +0 -83
  478. package/node_modules/pi-lens/dist/clients/error-class.js +0 -23
  479. package/node_modules/pi-lens/dist/clients/eval-timestamp.js +0 -17
  480. package/node_modules/pi-lens/dist/clients/event-loop-hold.js +0 -274
  481. package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +0 -250
  482. package/node_modules/pi-lens/dist/clients/extension-log.js +0 -504
  483. package/node_modules/pi-lens/dist/clients/extension-mode.js +0 -73
  484. package/node_modules/pi-lens/dist/clients/feature-hints.js +0 -103
  485. package/node_modules/pi-lens/dist/clients/file-kinds.js +0 -412
  486. package/node_modules/pi-lens/dist/clients/file-role.js +0 -134
  487. package/node_modules/pi-lens/dist/clients/file-time.js +0 -160
  488. package/node_modules/pi-lens/dist/clients/file-utils.js +0 -1032
  489. package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +0 -494
  490. package/node_modules/pi-lens/dist/clients/finding-identity.js +0 -88
  491. package/node_modules/pi-lens/dist/clients/fix-worklog.js +0 -103
  492. package/node_modules/pi-lens/dist/clients/format-events-publish.js +0 -343
  493. package/node_modules/pi-lens/dist/clients/format-service.js +0 -222
  494. package/node_modules/pi-lens/dist/clients/formatters-lazy.js +0 -9
  495. package/node_modules/pi-lens/dist/clients/formatters.js +0 -2032
  496. package/node_modules/pi-lens/dist/clients/freshness-cadence.js +0 -17
  497. package/node_modules/pi-lens/dist/clients/freshness.js +0 -38
  498. package/node_modules/pi-lens/dist/clients/generated-artifacts.js +0 -394
  499. package/node_modules/pi-lens/dist/clients/generation-guard.js +0 -215
  500. package/node_modules/pi-lens/dist/clients/git-guard.js +0 -1136
  501. package/node_modules/pi-lens/dist/clients/git-tracked-ignore.js +0 -243
  502. package/node_modules/pi-lens/dist/clients/gitleaks-client.js +0 -509
  503. package/node_modules/pi-lens/dist/clients/go-client.js +0 -104
  504. package/node_modules/pi-lens/dist/clients/govulncheck-client.js +0 -605
  505. package/node_modules/pi-lens/dist/clients/gradle-ktfmt-style.js +0 -348
  506. package/node_modules/pi-lens/dist/clients/grammar-source.js +0 -465
  507. package/node_modules/pi-lens/dist/clients/gzip-stage-write.js +0 -135
  508. package/node_modules/pi-lens/dist/clients/hashline-anchor.js +0 -424
  509. package/node_modules/pi-lens/dist/clients/hook-budgets.js +0 -76
  510. package/node_modules/pi-lens/dist/clients/host-edit-normalize.js +0 -140
  511. package/node_modules/pi-lens/dist/clients/host-ports.js +0 -39
  512. package/node_modules/pi-lens/dist/clients/indent-retarget.js +0 -154
  513. package/node_modules/pi-lens/dist/clients/inline-blocker-dispositions.js +0 -186
  514. package/node_modules/pi-lens/dist/clients/install-diagnostics.js +0 -156
  515. package/node_modules/pi-lens/dist/clients/installer/index.js +0 -5416
  516. package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +0 -58
  517. package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +0 -783
  518. package/node_modules/pi-lens/dist/clients/instance-reaper-state.js +0 -7
  519. package/node_modules/pi-lens/dist/clients/instance-reaper.js +0 -1137
  520. package/node_modules/pi-lens/dist/clients/instance-registry-lock.js +0 -145
  521. package/node_modules/pi-lens/dist/clients/instance-registry.js +0 -773
  522. package/node_modules/pi-lens/dist/clients/jscpd-client.js +0 -378
  523. package/node_modules/pi-lens/dist/clients/json-cache-read.js +0 -65
  524. package/node_modules/pi-lens/dist/clients/knip-client.js +0 -788
  525. package/node_modules/pi-lens/dist/clients/language-policy.js +0 -252
  526. package/node_modules/pi-lens/dist/clients/language-profile.js +0 -361
  527. package/node_modules/pi-lens/dist/clients/language-registry.js +0 -603
  528. package/node_modules/pi-lens/dist/clients/latency-logger.js +0 -727
  529. package/node_modules/pi-lens/dist/clients/lazy-import.js +0 -21
  530. package/node_modules/pi-lens/dist/clients/ledger-bounds.js +0 -54
  531. package/node_modules/pi-lens/dist/clients/lens-config.js +0 -404
  532. package/node_modules/pi-lens/dist/clients/lens-engine.js +0 -358
  533. package/node_modules/pi-lens/dist/clients/lens-events.js +0 -125
  534. package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +0 -467
  535. package/node_modules/pi-lens/dist/clients/lens-map.js +0 -1156
  536. package/node_modules/pi-lens/dist/clients/live-bus-emitter.js +0 -74
  537. package/node_modules/pi-lens/dist/clients/log-cleanup.js +0 -222
  538. package/node_modules/pi-lens/dist/clients/lsp/aggregation.js +0 -178
  539. package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +0 -421
  540. package/node_modules/pi-lens/dist/clients/lsp/client.js +0 -4593
  541. package/node_modules/pi-lens/dist/clients/lsp/config.js +0 -691
  542. package/node_modules/pi-lens/dist/clients/lsp/content-limits.js +0 -41
  543. package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +0 -225
  544. package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +0 -467
  545. package/node_modules/pi-lens/dist/clients/lsp/edits.js +0 -1219
  546. package/node_modules/pi-lens/dist/clients/lsp/index.js +0 -8305
  547. package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +0 -216
  548. package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +0 -298
  549. package/node_modules/pi-lens/dist/clients/lsp/language.js +0 -63
  550. package/node_modules/pi-lens/dist/clients/lsp/launch.js +0 -746
  551. package/node_modules/pi-lens/dist/clients/lsp/lombok.js +0 -158
  552. package/node_modules/pi-lens/dist/clients/lsp/path-utils.js +0 -5
  553. package/node_modules/pi-lens/dist/clients/lsp/pending-aux-coverage.js +0 -251
  554. package/node_modules/pi-lens/dist/clients/lsp/position-encoding.js +0 -61
  555. package/node_modules/pi-lens/dist/clients/lsp/ruby-drive-dirs.js +0 -83
  556. package/node_modules/pi-lens/dist/clients/lsp/server.js +0 -3290
  557. package/node_modules/pi-lens/dist/clients/lsp/session-roots.js +0 -192
  558. package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +0 -17
  559. package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +0 -56
  560. package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +0 -332
  561. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/capability-snapshot.js +0 -1
  562. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/classification.js +0 -85
  563. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/index.js +0 -10
  564. package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +0 -392
  565. package/node_modules/pi-lens/dist/clients/lsp/watch-queue.js +0 -61
  566. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +0 -639
  567. package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +0 -30
  568. package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +0 -184
  569. package/node_modules/pi-lens/dist/clients/lsp-budget.js +0 -186
  570. package/node_modules/pi-lens/dist/clients/lsp-document-symbols.js +0 -110
  571. package/node_modules/pi-lens/dist/clients/lsp-lazy.js +0 -9
  572. package/node_modules/pi-lens/dist/clients/lsp-mutation.js +0 -396
  573. package/node_modules/pi-lens/dist/clients/lsp-status.js +0 -59
  574. package/node_modules/pi-lens/dist/clients/map-with-concurrency.js +0 -40
  575. package/node_modules/pi-lens/dist/clients/mcp/analyze.js +0 -420
  576. package/node_modules/pi-lens/dist/clients/mcp/host-shim.js +0 -31
  577. package/node_modules/pi-lens/dist/clients/mcp/ipc.js +0 -523
  578. package/node_modules/pi-lens/dist/clients/mcp/review.js +0 -197
  579. package/node_modules/pi-lens/dist/clients/mcp/session.js +0 -412
  580. package/node_modules/pi-lens/dist/clients/memory-sampler.js +0 -208
  581. package/node_modules/pi-lens/dist/clients/message-end-attribution.js +0 -30
  582. package/node_modules/pi-lens/dist/clients/metrics-client.js +0 -107
  583. package/node_modules/pi-lens/dist/clients/metrics-history.js +0 -327
  584. package/node_modules/pi-lens/dist/clients/middle-man-analysis.js +0 -263
  585. package/node_modules/pi-lens/dist/clients/model-provider.js +0 -53
  586. package/node_modules/pi-lens/dist/clients/module-report-lsp.js +0 -189
  587. package/node_modules/pi-lens/dist/clients/module-report.js +0 -2150
  588. package/node_modules/pi-lens/dist/clients/mutating-tool.js +0 -651
  589. package/node_modules/pi-lens/dist/clients/mutation-attribution.js +0 -368
  590. package/node_modules/pi-lens/dist/clients/mutation-bridge.js +0 -240
  591. package/node_modules/pi-lens/dist/clients/ndjson-logger.js +0 -734
  592. package/node_modules/pi-lens/dist/clients/observed-mutation-sources.js +0 -101
  593. package/node_modules/pi-lens/dist/clients/observed-mutation.js +0 -1253
  594. package/node_modules/pi-lens/dist/clients/oldtext-autopatch.js +0 -128
  595. package/node_modules/pi-lens/dist/clients/opaque-mutation-scan.js +0 -496
  596. package/node_modules/pi-lens/dist/clients/opengrep-client.js +0 -333
  597. package/node_modules/pi-lens/dist/clients/opengrep-config.js +0 -76
  598. package/node_modules/pi-lens/dist/clients/package-manager.js +0 -607
  599. package/node_modules/pi-lens/dist/clients/package-root.js +0 -38
  600. package/node_modules/pi-lens/dist/clients/partial-edit-apply.js +0 -439
  601. package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +0 -43
  602. package/node_modules/pi-lens/dist/clients/path-keyed-map.js +0 -108
  603. package/node_modules/pi-lens/dist/clients/path-utils.js +0 -1244
  604. package/node_modules/pi-lens/dist/clients/performance-report.js +0 -331
  605. package/node_modules/pi-lens/dist/clients/persist-debounce.js +0 -70
  606. package/node_modules/pi-lens/dist/clients/persistent-reverify.js +0 -271
  607. package/node_modules/pi-lens/dist/clients/php-cs-fixer-config.js +0 -119
  608. package/node_modules/pi-lens/dist/clients/pipeline.js +0 -1480
  609. package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +0 -37
  610. package/node_modules/pi-lens/dist/clients/print-mode.js +0 -21
  611. package/node_modules/pi-lens/dist/clients/probe-home-state.js +0 -228
  612. package/node_modules/pi-lens/dist/clients/process-bridge.js +0 -66
  613. package/node_modules/pi-lens/dist/clients/process-singletons.js +0 -210
  614. package/node_modules/pi-lens/dist/clients/process-snapshot.js +0 -68
  615. package/node_modules/pi-lens/dist/clients/project-changes.js +0 -181
  616. package/node_modules/pi-lens/dist/clients/project-conventions.js +0 -171
  617. package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +0 -137
  618. package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +0 -109
  619. package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +0 -668
  620. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/call-graph-impact.js +0 -118
  621. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/dead-code.js +0 -47
  622. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +0 -40
  623. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/govulncheck.js +0 -34
  624. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/jscpd.js +0 -38
  625. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/knip.js +0 -47
  626. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/madge.js +0 -48
  627. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/opengrep.js +0 -40
  628. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/runner-findings.js +0 -127
  629. package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +0 -81
  630. package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +0 -520
  631. package/node_modules/pi-lens/dist/clients/project-diagnostics/types.js +0 -1
  632. package/node_modules/pi-lens/dist/clients/project-lens-config.js +0 -807
  633. package/node_modules/pi-lens/dist/clients/project-report.js +0 -701
  634. package/node_modules/pi-lens/dist/clients/project-scale.js +0 -237
  635. package/node_modules/pi-lens/dist/clients/project-scan-policy.js +0 -11
  636. package/node_modules/pi-lens/dist/clients/project-snapshot-fingerprint.js +0 -48
  637. package/node_modules/pi-lens/dist/clients/project-snapshot-persist-worker.js +0 -20
  638. package/node_modules/pi-lens/dist/clients/project-snapshot.js +0 -1653
  639. package/node_modules/pi-lens/dist/clients/project-trust.js +0 -181
  640. package/node_modules/pi-lens/dist/clients/python-environment.js +0 -217
  641. package/node_modules/pi-lens/dist/clients/python-provenance.js +0 -639
  642. package/node_modules/pi-lens/dist/clients/quiet-window-config.js +0 -47
  643. package/node_modules/pi-lens/dist/clients/quiet-window.js +0 -236
  644. package/node_modules/pi-lens/dist/clients/read-bridge.js +0 -139
  645. package/node_modules/pi-lens/dist/clients/read-expansion.js +0 -266
  646. package/node_modules/pi-lens/dist/clients/read-guard-logger.js +0 -251
  647. package/node_modules/pi-lens/dist/clients/read-guard-tool-lines.js +0 -1306
  648. package/node_modules/pi-lens/dist/clients/read-guard.js +0 -1561
  649. package/node_modules/pi-lens/dist/clients/recent-touches.js +0 -240
  650. package/node_modules/pi-lens/dist/clients/redact/secrets.js +0 -449
  651. package/node_modules/pi-lens/dist/clients/resource-sampler.js +0 -628
  652. package/node_modules/pi-lens/dist/clients/reverse-deps.js +0 -270
  653. package/node_modules/pi-lens/dist/clients/review-graph/builder.js +0 -5126
  654. package/node_modules/pi-lens/dist/clients/review-graph/format.js +0 -33
  655. package/node_modules/pi-lens/dist/clients/review-graph/git-identity.js +0 -163
  656. package/node_modules/pi-lens/dist/clients/review-graph/import-resolvers.js +0 -481
  657. package/node_modules/pi-lens/dist/clients/review-graph/persist-worker.js +0 -10
  658. package/node_modules/pi-lens/dist/clients/review-graph/query.js +0 -244
  659. package/node_modules/pi-lens/dist/clients/review-graph/revision-drift.js +0 -21
  660. package/node_modules/pi-lens/dist/clients/review-graph/service.js +0 -96
  661. package/node_modules/pi-lens/dist/clients/review-graph/shared-extraction-ir.js +0 -82
  662. package/node_modules/pi-lens/dist/clients/review-graph/symbol-id.js +0 -103
  663. package/node_modules/pi-lens/dist/clients/review-graph/tsconfig-paths.js +0 -299
  664. package/node_modules/pi-lens/dist/clients/review-graph/types.js +0 -1
  665. package/node_modules/pi-lens/dist/clients/review-graph/workspace-modules.js +0 -449
  666. package/node_modules/pi-lens/dist/clients/review-graph-logger.js +0 -81
  667. package/node_modules/pi-lens/dist/clients/ruff-client.js +0 -179
  668. package/node_modules/pi-lens/dist/clients/rules-scanner.js +0 -131
  669. package/node_modules/pi-lens/dist/clients/run-duration.js +0 -55
  670. package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +0 -746
  671. package/node_modules/pi-lens/dist/clients/runtime-config.js +0 -77
  672. package/node_modules/pi-lens/dist/clients/runtime-context.js +0 -211
  673. package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +0 -1324
  674. package/node_modules/pi-lens/dist/clients/runtime-session.js +0 -2485
  675. package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +0 -1295
  676. package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +0 -2049
  677. package/node_modules/pi-lens/dist/clients/runtime-turn.js +0 -3767
  678. package/node_modules/pi-lens/dist/clients/rust-client.js +0 -97
  679. package/node_modules/pi-lens/dist/clients/safe-spawn.js +0 -2357
  680. package/node_modules/pi-lens/dist/clients/sanitize.js +0 -286
  681. package/node_modules/pi-lens/dist/clients/scan-utils.js +0 -25
  682. package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +0 -165
  683. package/node_modules/pi-lens/dist/clients/search-read-registration.js +0 -94
  684. package/node_modules/pi-lens/dist/clients/secret-findings.js +0 -114
  685. package/node_modules/pi-lens/dist/clients/security-scan-client.js +0 -352
  686. package/node_modules/pi-lens/dist/clients/session-event-guard.js +0 -297
  687. package/node_modules/pi-lens/dist/clients/session-lifecycle.js +0 -484
  688. package/node_modules/pi-lens/dist/clients/session-start-observability.js +0 -94
  689. package/node_modules/pi-lens/dist/clients/session-state-store.js +0 -101
  690. package/node_modules/pi-lens/dist/clients/session-summary.js +0 -15
  691. package/node_modules/pi-lens/dist/clients/sessionstart-logger.js +0 -27
  692. package/node_modules/pi-lens/dist/clients/sg-runner.js +0 -876
  693. package/node_modules/pi-lens/dist/clients/sgconfig.js +0 -347
  694. package/node_modules/pi-lens/dist/clients/shared-checkout-guard.js +0 -338
  695. package/node_modules/pi-lens/dist/clients/single-flight.js +0 -158
  696. package/node_modules/pi-lens/dist/clients/situational-tool-telemetry.js +0 -108
  697. package/node_modules/pi-lens/dist/clients/skills-resolver.js +0 -141
  698. package/node_modules/pi-lens/dist/clients/slow-fs.js +0 -138
  699. package/node_modules/pi-lens/dist/clients/smells-rollup.js +0 -231
  700. package/node_modules/pi-lens/dist/clients/source-filter.js +0 -596
  701. package/node_modules/pi-lens/dist/clients/source-walker.js +0 -211
  702. package/node_modules/pi-lens/dist/clients/spawn-output-cap.js +0 -120
  703. package/node_modules/pi-lens/dist/clients/spawn-timeout-cooldown.js +0 -110
  704. package/node_modules/pi-lens/dist/clients/stale-marker.js +0 -17
  705. package/node_modules/pi-lens/dist/clients/startup-scan.js +0 -400
  706. package/node_modules/pi-lens/dist/clients/startup-timing.js +0 -130
  707. package/node_modules/pi-lens/dist/clients/string-utils.js +0 -33
  708. package/node_modules/pi-lens/dist/clients/subagent-mode.js +0 -111
  709. package/node_modules/pi-lens/dist/clients/symbol-containment.js +0 -24
  710. package/node_modules/pi-lens/dist/clients/symbol-types.js +0 -5
  711. package/node_modules/pi-lens/dist/clients/test-runner-client.js +0 -2507
  712. package/node_modules/pi-lens/dist/clients/test-runner-delivery.js +0 -287
  713. package/node_modules/pi-lens/dist/clients/todo-scanner.js +0 -229
  714. package/node_modules/pi-lens/dist/clients/tool-agreement.js +0 -423
  715. package/node_modules/pi-lens/dist/clients/tool-config.js +0 -249
  716. package/node_modules/pi-lens/dist/clients/tool-cwd.js +0 -270
  717. package/node_modules/pi-lens/dist/clients/tool-definition.js +0 -47
  718. package/node_modules/pi-lens/dist/clients/tool-event.js +0 -105
  719. package/node_modules/pi-lens/dist/clients/tool-policy.js +0 -2755
  720. package/node_modules/pi-lens/dist/clients/tool-probe.js +0 -53
  721. package/node_modules/pi-lens/dist/clients/tool-render.js +0 -156
  722. package/node_modules/pi-lens/dist/clients/tool-set-policy.js +0 -118
  723. package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +0 -364
  724. package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +0 -4195
  725. package/node_modules/pi-lens/dist/clients/tree-sitter-logger.js +0 -100
  726. package/node_modules/pi-lens/dist/clients/tree-sitter-navigator.js +0 -269
  727. package/node_modules/pi-lens/dist/clients/tree-sitter-query-loader.js +0 -569
  728. package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +0 -158
  729. package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +0 -1265
  730. package/node_modules/pi-lens/dist/clients/trivy-client.js +0 -467
  731. package/node_modules/pi-lens/dist/clients/tui-fit.js +0 -50
  732. package/node_modules/pi-lens/dist/clients/turn-context.js +0 -52
  733. package/node_modules/pi-lens/dist/clients/turn-end/lane.js +0 -51
  734. package/node_modules/pi-lens/dist/clients/turn-end/lanes/govulncheck.js +0 -112
  735. package/node_modules/pi-lens/dist/clients/turn-end/lanes/secrets.js +0 -204
  736. package/node_modules/pi-lens/dist/clients/turn-summary-render.js +0 -72
  737. package/node_modules/pi-lens/dist/clients/turn-summary.js +0 -132
  738. package/node_modules/pi-lens/dist/clients/typos-config.js +0 -29
  739. package/node_modules/pi-lens/dist/clients/user-notify.js +0 -51
  740. package/node_modules/pi-lens/dist/clients/vanished-instance-marker.js +0 -57
  741. package/node_modules/pi-lens/dist/clients/warm-attach.js +0 -305
  742. package/node_modules/pi-lens/dist/clients/widget-state.js +0 -1808
  743. package/node_modules/pi-lens/dist/clients/word-index-logger.js +0 -49
  744. package/node_modules/pi-lens/dist/clients/word-index-store.js +0 -459
  745. package/node_modules/pi-lens/dist/clients/word-index.js +0 -2080
  746. package/node_modules/pi-lens/dist/clients/workspace-topology.js +0 -443
  747. package/node_modules/pi-lens/dist/clients/write-ordering-guard.js +0 -65
  748. package/node_modules/pi-lens/dist/clients/zizmor-config.js +0 -340
  749. package/node_modules/pi-lens/dist/i18n.js +0 -69
  750. package/node_modules/pi-lens/dist/mcp/build-staleness.js +0 -124
  751. package/node_modules/pi-lens/dist/scripts/lib/process-scan.mjs +0 -583
  752. package/node_modules/pi-lens/dist/scripts/lib/skills-predicate.mjs +0 -129
  753. package/node_modules/pi-lens/dist/scripts/lib/web-tree-sitter-dir.mjs +0 -123
  754. package/node_modules/pi-lens/dist/tools/activate-tools.js +0 -87
  755. package/node_modules/pi-lens/dist/tools/ast-grep-outline.js +0 -137
  756. package/node_modules/pi-lens/dist/tools/ast-grep-replace.js +0 -244
  757. package/node_modules/pi-lens/dist/tools/ast-grep-search.js +0 -762
  758. package/node_modules/pi-lens/dist/tools/effective-config.js +0 -90
  759. package/node_modules/pi-lens/dist/tools/lens-diagnostic-mark.js +0 -375
  760. package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +0 -2571
  761. package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +0 -1745
  762. package/node_modules/pi-lens/dist/tools/lsp-navigation.js +0 -1367
  763. package/node_modules/pi-lens/dist/tools/lsp-structured-output.js +0 -294
  764. package/node_modules/pi-lens/dist/tools/module-report.js +0 -382
  765. package/node_modules/pi-lens/dist/tools/project-report.js +0 -86
  766. package/node_modules/pi-lens/dist/tools/render-compact.js +0 -374
  767. package/node_modules/pi-lens/dist/tools/scan-progress.js +0 -53
  768. package/node_modules/pi-lens/dist/tools/shared.js +0 -29
  769. 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
- }